|
@@ -1078,8 +1078,13 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
|
|
|
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;
|