On Fri, 1 Jun 2012, Mieshkov, Volodymyr wrote: > Its observed with some PHY, the 60Mhz clock gets > cut too soon for OMAP EHCI, leaving OMAP-EHCI in a bad state. > > So on starting port suspend, make sure the 60Mhz clock to EHCI > is kept alive using an internal clock, so that EHCi can cleanly > transition its hw state machine on a port suspend. > > Its not proven if this is the issue hit on USB3333, > but the symptoms look very similar. ... > + /* > + * If a transaction is in progress, there may be a delay in > + * suspending the port. Poll until the port is suspended. > + */ > + if (handshake(ehci, status_reg, PORT_SUSPEND, > + PORT_SUSPEND, 5000)) > + ehci_err(ehci, "%s: timeout waiting for SUSPEND\n", __func__); > + > + set_bit((wIndex & 0xff) - 1, &ehci->suspended_ports); The handshake() call should be moved to after the spinlock is released. It is not acceptable to wait for up to 5 ms with interrupts disabled. I have been working hard to remove other instances of such calls to handshake() in the driver; let's not introduce any new ones. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html