[PATCH] spin longer for ehci port reset completion

This makes the EHCI driver spin a bit longer before concluding that the
port reset failed. "Obviously safe."

It allows some devices to enumerate that previously didn't. We've seen
a bunch of these problem reports recently, this will make some go away.

As reported by Michael Zapf <Michael.Zapf@uni-kassel.de>, some EHCI
controllers seem to take forever to finish port resets and produce
"port N reset error -110" type errors. Spinning a bit longer helps.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by David Brownell and committed by Linus Torvalds c22fa3ac c0105338

+4 -1
+4 -1
drivers/usb/host/ehci-hub.c
··· 439 /* force reset to complete */ 440 writel (temp & ~PORT_RESET, 441 &ehci->regs->port_status [wIndex]); 442 retval = handshake ( 443 &ehci->regs->port_status [wIndex], 444 - PORT_RESET, 0, 500); 445 if (retval != 0) { 446 ehci_err (ehci, "port %d reset error %d\n", 447 wIndex + 1, retval);
··· 439 /* force reset to complete */ 440 writel (temp & ~PORT_RESET, 441 &ehci->regs->port_status [wIndex]); 442 + /* REVISIT: some hardware needs 550+ usec to clear 443 + * this bit; seems too long to spin routinely... 444 + */ 445 retval = handshake ( 446 &ehci->regs->port_status [wIndex], 447 + PORT_RESET, 0, 750); 448 if (retval != 0) { 449 ehci_err (ehci, "port %d reset error %d\n", 450 wIndex + 1, retval);