5fae829410
We have found a non-compliant USB hub (RealTek RTS 5413) that does not set a port's Connect Status Change bit on its USB 3.0 half if the port had already been connected while the hub was being reset. To work around this bug, this patch adds code to initially request the status of every port after a hub was enumerated, clear the Connect Status Change bit if set, and then enumerate the port iff it is currently connected, regardless of whether the change bit was set. A similar behavior can also be found in the Linux kernel. BRANCH=oak BUG=b:35929438 TEST=Booted Elm with this change, my USB 3.0 sticks enumerate now even if they had been plugged in since boot. Change-Id: I8a28252eb94f005f04866d06e4fc61ea265cee89 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://review.coreboot.org/18729 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com> |
||
---|---|---|
.. | ||
Kconfig | ||
TODO | ||
dwc2.c | ||
dwc2.h | ||
dwc2_private.h | ||
dwc2_rh.c | ||
ehci.c | ||
ehci.h | ||
ehci_private.h | ||
ehci_rh.c | ||
generic_hub.c | ||
generic_hub.h | ||
ohci.c | ||
ohci.h | ||
ohci_private.h | ||
ohci_rh.c | ||
quirks.c | ||
uhci.c | ||
uhci.h | ||
uhci_private.h | ||
uhci_rh.c | ||
usb.c | ||
usb_dev.c | ||
usbhid.c | ||
usbhub.c | ||
usbinit.c | ||
usbmsc.c | ||
xhci.c | ||
xhci.h | ||
xhci_commands.c | ||
xhci_debug.c | ||
xhci_devconf.c | ||
xhci_events.c | ||
xhci_private.h | ||
xhci_rh.c |