diff options
-rw-r--r-- | src/drivers/usb/xhci.c | 5 | ||||
-rw-r--r-- | src/drivers/usb/xhci.h | 3 |
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 |