summaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
authorPatrice Vilchez <patrice.vilchez@atmel.com>2010-04-28 13:45:40 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2010-04-30 18:25:12 +0200
commit869aa98c1d6a03dd2078f8f8257a0bcc343cb8b9 (patch)
tree38bf46e1fac89285410cf782ca34546fb4dc22cf /drivers/usb
parentUSB: rename usb_buffer_alloc() and usb_buffer_free() (diff)
downloadlinux-869aa98c1d6a03dd2078f8f8257a0bcc343cb8b9.tar.xz
linux-869aa98c1d6a03dd2078f8f8257a0bcc343cb8b9.zip
USB: ohci-at91: fix power management hanging
A hanging has been detected in ohci-at91 while going in suspend to ram. This is due to asynchronous operations between ohci reset and ohci clocks shutdown. This patch adds the reading of the control register between the reset of the ohci and clocks stop. This "flush the writes" idea was taken from ohci-hcd.c file (ohci_shutdown() function). Signed-off-by: Patrice Vilchez <patrice.vilchez@atmel.com> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/host/ohci-at91.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/usb/host/ohci-at91.c b/drivers/usb/host/ohci-at91.c
index 68b83ab70719..944291e10f97 100644
--- a/drivers/usb/host/ohci-at91.c
+++ b/drivers/usb/host/ohci-at91.c
@@ -331,6 +331,8 @@ ohci_hcd_at91_drv_suspend(struct platform_device *pdev, pm_message_t mesg)
*/
if (at91_suspend_entering_slow_clock()) {
ohci_usb_reset (ohci);
+ /* flush the writes */
+ (void) ohci_readl (ohci, &ohci->regs->control);
at91_stop_clock();
}