| From 22ceac191211cf6688b1bf6ecd93c8b6bf80ed9b Mon Sep 17 00:00:00 2001 |
| From: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| Date: Mon, 23 Jul 2012 16:06:08 -0700 |
| Subject: xhci: Increase reset timeout for Renesas 720201 host. |
| |
| From: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| |
| commit 22ceac191211cf6688b1bf6ecd93c8b6bf80ed9b upstream. |
| |
| The NEC/Renesas 720201 xHCI host controller does not complete its reset |
| within 250 milliseconds. In fact, it takes about 9 seconds to reset the |
| host controller, and 1 second for the host to be ready for doorbell |
| rings. Extend the reset and CNR polling timeout to 10 seconds each. |
| |
| This patch should be backported to kernels as old as 2.6.31, that |
| contain the commit 66d4eadd8d067269ea8fead1a50fe87c2979a80d "USB: xhci: |
| BIOS handoff and HW initialization." |
| |
| Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> |
| Reported-by: Edwin Klein Mentink <e.kleinmentink@zonnet.nl> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/host/xhci.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/usb/host/xhci.c |
| +++ b/drivers/usb/host/xhci.c |
| @@ -166,7 +166,7 @@ int xhci_reset(struct xhci_hcd *xhci) |
| xhci_writel(xhci, command, &xhci->op_regs->command); |
| |
| ret = handshake(xhci, &xhci->op_regs->command, |
| - CMD_RESET, 0, 250 * 1000); |
| + CMD_RESET, 0, 10 * 1000 * 1000); |
| if (ret) |
| return ret; |
| |
| @@ -175,7 +175,8 @@ int xhci_reset(struct xhci_hcd *xhci) |
| * xHCI cannot write to any doorbells or operational registers other |
| * than status until the "Controller Not Ready" flag is cleared. |
| */ |
| - ret = handshake(xhci, &xhci->op_regs->status, STS_CNR, 0, 250 * 1000); |
| + ret = handshake(xhci, &xhci->op_regs->status, |
| + STS_CNR, 0, 10 * 1000 * 1000); |
| |
| for (i = 0; i < 2; ++i) { |
| xhci->bus_state[i].port_c_suspend = 0; |