aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ohci-hub.c
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2008-04-14 12:17:10 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2008-04-25 00:16:53 -0400
commit58a97ffeb2297f154659f339d77eb3f32c4d8b3e (patch)
tree2ca171b7f720769007f9c9624b74ca4ad3442f02 /drivers/usb/host/ohci-hub.c
parentb950bdbc67041412cb042e404938667204c7902c (diff)
USB: HCDs use the do_remote_wakeup flag
When a USB device is suspended, whether or not it is enabled for remote wakeup depends on the device_may_wakeup() setting. The setting is then saved in the do_remote_wakeup flag. Later on, however, the device_may_wakeup() value can change because of user activity. So when testing whether a suspended device is or should be enabled for remote wakeup, we should always test do_remote_wakeup instead of device_may_wakeup(). This patch (as1076) makes that change for root hubs in several places. The patch also adjusts uhci-hcd so that when an autostopped controller is suspended, the remote wakeup setting agrees with the value recorded in the root hub's do_remote_wakeup flag. And the patch adjusts ehci-hcd so that wakeup events on selectively suspended ports (i.e., the bus itself isn't suspended) don't turn on the PME# wakeup signal. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ohci-hub.c')
-rw-r--r--drivers/usb/host/ohci-hub.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
index 28d6d775eb5f..cf3e1d255639 100644
--- a/drivers/usb/host/ohci-hub.c
+++ b/drivers/usb/host/ohci-hub.c
@@ -103,10 +103,9 @@ __acquires(ohci->lock)
103 finish_unlinks (ohci, ohci_frame_no(ohci)); 103 finish_unlinks (ohci, ohci_frame_no(ohci));
104 104
105 /* maybe resume can wake root hub */ 105 /* maybe resume can wake root hub */
106 if (device_may_wakeup(&ohci_to_hcd(ohci)->self.root_hub->dev) || 106 if (ohci_to_hcd(ohci)->self.root_hub->do_remote_wakeup || autostop) {
107 autostop)
108 ohci->hc_control |= OHCI_CTRL_RWE; 107 ohci->hc_control |= OHCI_CTRL_RWE;
109 else { 108 } else {
110 ohci_writel (ohci, OHCI_INTR_RHSC, &ohci->regs->intrdisable); 109 ohci_writel (ohci, OHCI_INTR_RHSC, &ohci->regs->intrdisable);
111 ohci->hc_control &= ~OHCI_CTRL_RWE; 110 ohci->hc_control &= ~OHCI_CTRL_RWE;
112 } 111 }