svn commit: r358738 - in head/sys/dev/usb: . controller
Hans Petter Selasky
hselasky at FreeBSD.org
Sun Mar 8 13:24:36 UTC 2020
Author: hselasky
Date: Sun Mar 8 13:24:34 2020
New Revision: 358738
URL: https://svnweb.freebsd.org/changeset/base/358738
Log:
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 at dell.com
MFC after: 3 days
Sponsored by: Mellanox Technologies
Modified:
head/sys/dev/usb/controller/xhci.c
head/sys/dev/usb/usb_hub.c
Modified: head/sys/dev/usb/controller/xhci.c
==============================================================================
--- head/sys/dev/usb/controller/xhci.c Sun Mar 8 06:09:46 2020 (r358737)
+++ head/sys/dev/usb/controller/xhci.c Sun Mar 8 13:24:34 2020 (r358738)
@@ -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;
Modified: head/sys/dev/usb/usb_hub.c
==============================================================================
--- head/sys/dev/usb/usb_hub.c Sun Mar 8 06:09:46 2020 (r358737)
+++ head/sys/dev/usb/usb_hub.c Sun Mar 8 13:24:34 2020 (r358738)
@@ -660,7 +660,7 @@ repeat:
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 @@ repeat:
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);
}
More information about the svn-src-all
mailing list