[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>
This commit is contained in:
committed by
Linus Torvalds
parent
c0105338eb
commit
c22fa3acbc
@@ -439,9 +439,12 @@ static int ehci_hub_control (
|
|||||||
/* force reset to complete */
|
/* force reset to complete */
|
||||||
writel (temp & ~PORT_RESET,
|
writel (temp & ~PORT_RESET,
|
||||||
&ehci->regs->port_status [wIndex]);
|
&ehci->regs->port_status [wIndex]);
|
||||||
|
/* REVISIT: some hardware needs 550+ usec to clear
|
||||||
|
* this bit; seems too long to spin routinely...
|
||||||
|
*/
|
||||||
retval = handshake (
|
retval = handshake (
|
||||||
&ehci->regs->port_status [wIndex],
|
&ehci->regs->port_status [wIndex],
|
||||||
PORT_RESET, 0, 500);
|
PORT_RESET, 0, 750);
|
||||||
if (retval != 0) {
|
if (retval != 0) {
|
||||||
ehci_err (ehci, "port %d reset error %d\n",
|
ehci_err (ehci, "port %d reset error %d\n",
|
||||||
wIndex + 1, retval);
|
wIndex + 1, retval);
|
||||||
|
|||||||
Reference in New Issue
Block a user