summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2017-09-18 06:40:46 -0700
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>2017-10-02 11:20:56 +0200
commit1f72d7c067eeff380fb247e337adf54a596a626c (patch)
tree0bf295183e4aa9bfbe111ee2647c47f4f18310a0
parentd6400804ef5e846e0692587987fe387777ef8f9d (diff)
usb: hub: Clear BH reset status change for a 3.0 hub
USB 3.0 hubs report bit[5] in the port status change response as BH reset. The hub shall set the C_BH_PORT_RESET field for this port. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Stefan Roese <sr@denx.de> Tested-by: Stefan Roese <sr@denx.de>
-rw-r--r--common/usb_hub.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/common/usb_hub.c b/common/usb_hub.c
index a9d21bca5e..325d16dfc8 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -494,6 +494,12 @@ static int usb_scan_port(struct usb_device_scan *usb_scan)
usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_RESET);
}
+ if ((portchange & USB_SS_PORT_STAT_C_BH_RESET) &&
+ usb_hub_is_superspeed(dev)) {
+ debug("port %d BH reset change\n", i + 1);
+ usb_clear_port_feature(dev, i + 1, USB_SS_PORT_FEAT_C_BH_RESET);
+ }
+
/* A new USB device is ready at this point */
debug("devnum=%d port=%d: USB dev found\n", dev->devnum, i + 1);