提交 c22fa3ac 编写于 作者: D David Brownell 提交者: Linus Torvalds

[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: NDavid Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 c0105338
...@@ -439,9 +439,12 @@ static int ehci_hub_control ( ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册