Browse Source

[xhci] Always reset root hub ports

In theory USB3 ports do not require a reset to enable the port.
Experimentation shows that this is sometimes required, particularly
when rerouting ports from EHCI to xHCI and switching speeds.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 9 years ago
parent
commit
867e3ee475
1 changed files with 5 additions and 7 deletions
  1. 5
    7
      src/drivers/usb/xhci.c

+ 5
- 7
src/drivers/usb/xhci.c View File

2954
 	uint32_t portsc;
2954
 	uint32_t portsc;
2955
 	unsigned int i;
2955
 	unsigned int i;
2956
 
2956
 
2957
-	/* Reset port if applicable */
2958
-	if ( port->protocol < USB_PROTO_3_0 ) {
2959
-		portsc = readl ( xhci->op + XHCI_OP_PORTSC ( port->address ) );
2960
-		portsc &= XHCI_PORTSC_PRESERVE;
2961
-		portsc |= XHCI_PORTSC_PR;
2962
-		writel ( portsc, xhci->op + XHCI_OP_PORTSC ( port->address ) );
2963
-	}
2957
+	/* Reset port */
2958
+	portsc = readl ( xhci->op + XHCI_OP_PORTSC ( port->address ) );
2959
+	portsc &= XHCI_PORTSC_PRESERVE;
2960
+	portsc |= XHCI_PORTSC_PR;
2961
+	writel ( portsc, xhci->op + XHCI_OP_PORTSC ( port->address ) );
2964
 
2962
 
2965
 	/* Wait for port to become enabled */
2963
 	/* Wait for port to become enabled */
2966
 	for ( i = 0 ; i < XHCI_PORT_RESET_MAX_WAIT_MS ; i++ ) {
2964
 	for ( i = 0 ; i < XHCI_PORT_RESET_MAX_WAIT_MS ; i++ ) {

Loading…
Cancel
Save