aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorMatthew Garrett <mjg@redhat.com>2011-10-06 15:35:43 -0400
committerHerton Ronaldo Krzesinski <herton.krzesinski@canonical.com>2011-11-21 12:54:54 -0500
commitbef06df5a3e7ed8d89f11ed2bf4ec3a5fcabe437 (patch)
treeaf8bf92ba57a1ada64c5f22dd551d2a7f5825cd0 /drivers/usb
parent2cf0095ddd31bf57efb10687dee577607c5771c5 (diff)
USB: Fix runtime wakeup on OHCI
BugLink: http://bugs.launchpad.net/bugs/890952 commit a8b43c00ef06aec49b9fe0a5bad8a6a320e4d27b upstream. At least some OHCI hardware (such as the MCP89) fails to flag any change in the host status register or the port status registers when receiving a remote wakeup while in D3 state. This results in the controller being resumed but no device state change being noticed, at which point the controller is put back to sleep again. Since there doesn't seem to be any reliable way to identify the state change, just unconditionally resume the hub. It'll be put back to sleep in the near future anyway if there are no active devices attached to it. Signed-off-by: Matthew Garrett <mjg@redhat.com> Cc: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/ohci-hub.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/usb/host/ohci-hub.c b/drivers/usb/host/ohci-hub.c
index 9154615292d..2f00040fc40 100644
--- a/drivers/usb/host/ohci-hub.c
+++ b/drivers/usb/host/ohci-hub.c
@@ -356,10 +356,7 @@ static void ohci_finish_controller_resume(struct usb_hcd *hcd)
356 msleep(20); 356 msleep(20);
357 } 357 }
358 358
359 /* Does the root hub have a port wakeup pending? */ 359 usb_hcd_resume_root_hub(hcd);
360 if (ohci_readl(ohci, &ohci->regs->intrstatus) &
361 (OHCI_INTR_RD | OHCI_INTR_RHSC))
362 usb_hcd_resume_root_hub(hcd);
363} 360}
364 361
365/* Carry out polling-, autostop-, and autoresume-related state changes */ 362/* Carry out polling-, autostop-, and autoresume-related state changes */