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
