| From foo@baz Wed Aug 22 09:42:09 CEST 2018 |
| From: Ajay Gupta <ajaykuee@gmail.com> |
| Date: Thu, 21 Jun 2018 16:19:45 +0300 |
| Subject: usb: xhci: increase CRS timeout value |
| |
| From: Ajay Gupta <ajaykuee@gmail.com> |
| |
| [ Upstream commit 305886ca87be480ae159908c2affd135c04215cf ] |
| |
| Some controllers take almost 55ms to complete controller |
| restore state (CRS). |
| There is no timeout limit mentioned in xhci specification so |
| fixing the issue by increasing the timeout limit to 100ms |
| |
| [reformat code comment -Mathias] |
| Signed-off-by: Ajay Gupta <ajaykuee@gmail.com> |
| Signed-off-by: Nagaraj Annaiah <naga.annaiah@gmail.com> |
| Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/usb/host/xhci.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/usb/host/xhci.c |
| +++ b/drivers/usb/host/xhci.c |
| @@ -1056,8 +1056,13 @@ int xhci_resume(struct xhci_hcd *xhci, b |
| command = readl(&xhci->op_regs->command); |
| command |= CMD_CRS; |
| writel(command, &xhci->op_regs->command); |
| + /* |
| + * Some controllers take up to 55+ ms to complete the controller |
| + * restore so setting the timeout to 100ms. Xhci specification |
| + * doesn't mention any timeout value. |
| + */ |
| if (xhci_handshake(&xhci->op_regs->status, |
| - STS_RESTORE, 0, 10 * 1000)) { |
| + STS_RESTORE, 0, 100 * 1000)) { |
| xhci_warn(xhci, "WARN: xHC restore state timeout\n"); |
| spin_unlock_irq(&xhci->lock); |
| return -ETIMEDOUT; |