aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ohci-omap.c
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2008-04-03 18:03:17 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2008-04-25 00:16:48 -0400
commit43bbb7e015c4380064796c5868b536437b165615 (patch)
tree6f4b8e184904917677ce00f600ebf3c8839f47f0 /drivers/usb/host/ohci-omap.c
parent7be7d7418776a41badce7ca00246e270d408e4b9 (diff)
USB: OHCI: host-controller resumes leave root hub suspended
Drivers in the ohci-hcd family should perform certain tasks whenever their controller device is resumed. These include checking for loss of power during suspend, turning on port power, and enabling interrupt requests. Until now these jobs have been carried out when the root hub is resumed, not when the controller is. Many drivers work around the resulting awkwardness by automatically resuming their root hub whenever the controller is resumed. But this is wasteful and unnecessary. To simplify the situation, this patch (as1066) adds a new core routine, ohci_finish_controller_resume(), which can be used by all the OHCI-variant drivers. They can call the new routine instead of resuming their root hubs. And ohci-pci.c can call it instead of using its own special-purpose handler. 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-omap.c')
-rw-r--r--drivers/usb/host/ohci-omap.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
index 2aafa7b6c81f..3a7c24c03671 100644
--- a/drivers/usb/host/ohci-omap.c
+++ b/drivers/usb/host/ohci-omap.c
@@ -510,14 +510,15 @@ static int ohci_omap_suspend(struct platform_device *dev, pm_message_t message)
510 510
511static int ohci_omap_resume(struct platform_device *dev) 511static int ohci_omap_resume(struct platform_device *dev)
512{ 512{
513 struct ohci_hcd *ohci = hcd_to_ohci(platform_get_drvdata(dev)); 513 struct usb_hcd *hcd = platform_get_drvdata(dev);
514 struct ohci_hcd *ohci = hcd_to_ohci(hcd);
514 515
515 if (time_before(jiffies, ohci->next_statechange)) 516 if (time_before(jiffies, ohci->next_statechange))
516 msleep(5); 517 msleep(5);
517 ohci->next_statechange = jiffies; 518 ohci->next_statechange = jiffies;
518 519
519 omap_ohci_clock_power(1); 520 omap_ohci_clock_power(1);
520 usb_hcd_resume_root_hub(platform_get_drvdata(dev)); 521 ohci_finish_controller_resume(hcd);
521 return 0; 522 return 0;
522} 523}
523 524