Remove the power bit from the super speed root hub port status register
because it clobbers the super speed link status when a device is in super speed mode. Currently the power bit is not needed for anything in the USB hub driver. This fixes USB warm reset for super speed devices. Tested by: Shichun.Ma@dell.com MFC after: 3 days Sponsored by: Mellanox Technologies
This commit is contained in:
parent
d2222aa0e9
commit
601ee53858
@ -3591,13 +3591,10 @@ xhci_roothub_exec(struct usb_device *udev,
|
||||
i |= UPS_OVERCURRENT_INDICATOR;
|
||||
if (v & XHCI_PS_PR)
|
||||
i |= UPS_RESET;
|
||||
if (v & XHCI_PS_PP) {
|
||||
/*
|
||||
* The USB 3.0 RH is using the
|
||||
* USB 2.0's power bit
|
||||
*/
|
||||
i |= UPS_PORT_POWER;
|
||||
}
|
||||
#if 0
|
||||
if (v & XHCI_PS_PP)
|
||||
/* XXX undefined */
|
||||
#endif
|
||||
USETW(sc->sc_hub_desc.ps.wPortStatus, i);
|
||||
|
||||
i = 0;
|
||||
|
@ -660,7 +660,7 @@ uhub_reattach_port(struct uhub_softc *sc, uint8_t portno)
|
||||
break;
|
||||
case USB_SPEED_SUPER:
|
||||
if (udev->parent_hub == NULL)
|
||||
power_mask = UPS_PORT_POWER;
|
||||
power_mask = 0; /* XXX undefined */
|
||||
else
|
||||
power_mask = UPS_PORT_POWER_SS;
|
||||
break;
|
||||
@ -668,7 +668,7 @@ uhub_reattach_port(struct uhub_softc *sc, uint8_t portno)
|
||||
power_mask = 0;
|
||||
break;
|
||||
}
|
||||
if (!(sc->sc_st.port_status & power_mask)) {
|
||||
if ((sc->sc_st.port_status & power_mask) != power_mask) {
|
||||
DPRINTF("WARNING: strange, connected port %d "
|
||||
"has no power\n", portno);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user