If frame_list is equal to periodic_dma, don't re-apply frame_list.

[It seems the bug of otg controller. The system will hang up by lsusb
when otg bus is in suspendded mode.]

Signed-off-by: Jekyll Lai <[email protected]>
---
 drivers/usb/host/ehci-hub.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 4d42194..52ac27c 100644
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -382,7 +382,8 @@ static int ehci_bus_resume (struct usb_hcd *hcd)
 
        /* re-init operational registers */
        ehci_writel(ehci, 0, &ehci->regs->segment);
-       ehci_writel(ehci, ehci->periodic_dma, &ehci->regs->frame_list);
+       if (ehci->periodic_dma != ehci_readl(ehci, &ehci->regs->frame_list))
+               ehci_writel(ehci, ehci->periodic_dma, &ehci->regs->frame_list);
        ehci_writel(ehci, (u32) ehci->async->qh_dma, &ehci->regs->async_next);
 
        /* restore CMD_RUN, framelist size, and irq threshold */
-- 
1.7.0.4

_______________________________________________
MeeGo-kernel mailing list
[email protected]
http://lists.meego.com/listinfo/meego-kernel

Reply via email to