USB: ohci-at91: fix power management hanging
authorPatrice Vilchez <[email protected]>
Wed, 28 Apr 2010 11:45:40 +0000 (13:45 +0200)
committerGreg Kroah-Hartman <[email protected]>
Fri, 30 Apr 2010 16:25:12 +0000 (09:25 -0700)
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 <[email protected]>
Signed-off-by: Nicolas Ferre <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
drivers/usb/host/ohci-at91.c

index 68b83ab70719aa8b76f79d7b766625cc991cbe4c..944291e10f972f23f218bd5dd23bc03ef776f54d 100644 (file)
@@ -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();
        }