]> xenbits.xensource.com Git - seabios.git/commitdiff
USB:Fix xHCI initail fail by using longer reset and CNR clear timeout value
authorweitaowang-oc@zhaoxin.com <weitaowang-oc@zhaoxin.com>
Sun, 9 Aug 2020 14:22:23 +0000 (14:22 +0000)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 30 Sep 2020 10:52:57 +0000 (12:52 +0200)
Some xHCI controller's reset time than 100ms,such as 120ms.
On the on hand, xHCI spec has not specified a timeout value.
Maybe setting xHCI HCRST and CNR bit clear timeout value larger
is a nice thing.As a compromise between compatibility and
latency,we can take 1000ms as a timeout value.

Signed-off-by: WeitaoWangoc <WeitaoWang-oc@zhaoxin.com>
Message-Id: <159698294308.14.13067234241650533818@b63950293ec5>

src/hw/usb-xhci.c

index 08d1e321c179b8022feff765788e10928a82df83..21d091f29606a63598eba0874063c9394050a830 100644 (file)
@@ -467,9 +467,9 @@ configure_xhci(void *data)
 
     dprintf(3, "%s: resetting\n", __func__);
     writel(&xhci->op->usbcmd, XHCI_CMD_HCRST);
-    if (wait_bit(&xhci->op->usbcmd, XHCI_CMD_HCRST, 0, 100) != 0)
+    if (wait_bit(&xhci->op->usbcmd, XHCI_CMD_HCRST, 0, 1000) != 0)
         goto fail;
-    if (wait_bit(&xhci->op->usbsts, XHCI_STS_CNR, 0, 100) != 0)
+    if (wait_bit(&xhci->op->usbsts, XHCI_STS_CNR, 0, 1000) != 0)
         goto fail;
 
     writel(&xhci->op->config, xhci->slots);