summaryrefslogtreecommitdiff
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 09:25:12 -0700
commit869aa98c1d6a03dd2078f8f8257a0bcc343cb8b9 (patch)
tree38bf46e1fac89285410cf782ca34546fb4dc22cf
parent073900a28d95c75a706bf40ebf092ea048c7b236 (diff)
downloadlinux-3.10-869aa98c1d6a03dd2078f8f8257a0bcc343cb8b9.tar.gz
linux-3.10-869aa98c1d6a03dd2078f8f8257a0bcc343cb8b9.tar.bz2
linux-3.10-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>
-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 68b83ab7071..944291e10f9 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();
}