aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/drivers/usb/xhci.c5
-rw-r--r--src/drivers/usb/xhci.h3
2 files changed, 8 insertions, 0 deletions
diff --git a/src/drivers/usb/xhci.c b/src/drivers/usb/xhci.c
index bf8cf1c8..396d943d 100644
--- a/src/drivers/usb/xhci.c
+++ b/src/drivers/usb/xhci.c
@@ -2774,6 +2774,11 @@ static int xhci_hub_open ( struct usb_hub *hub ) {
}
}
+ /* Some xHCI cards seem to require an additional delay after
+ * setting the link state to RxDetect.
+ */
+ mdelay ( XHCI_LINK_STATE_DELAY_MS );
+
/* Record hub driver private data */
usb_hub_set_drvdata ( hub, xhci );
diff --git a/src/drivers/usb/xhci.h b/src/drivers/usb/xhci.h
index 186ff27d..ec951bd6 100644
--- a/src/drivers/usb/xhci.h
+++ b/src/drivers/usb/xhci.h
@@ -236,6 +236,9 @@ enum xhci_default_psi_value {
/** Port link state write strobe */
#define XHCI_PORTSC_LWS 0x00010000UL
+/** Time to delay after writing the port link state */
+#define XHCI_LINK_STATE_DELAY_MS 20
+
/** Connect status change */
#define XHCI_PORTSC_CSC 0x00020000UL