libpayload: usb: Add support for SuperSpeed hubs

This patch adds support for the SuperSpeed half of USB 3.0 hubs, which
previously prevented SuperSpeed devices behind those hubs from working.

BRANCH=None
BUG=chrome-os-partner:39877
TEST=Played around with multiple hubs and devices on Oak and Falco, can
no longer find a combination that doesn't work.

Change-Id: I20815be95769e33d399b7ad91c3020687234e059
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 3db96ece20d2304e7f6f6aa333cf114037c48a3e
Original-Change-Id: I2dd6c9c3607a24a7d78c308911e3d254d5f8d91d
Original-Signed-off-by: Julius Werner <jwerner@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/284577
Original-Reviewed-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Tested-by: chunfeng yun <chunfeng.yun@mediatek.com>
Reviewed-on: http://review.coreboot.org/10958
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
Julius Werner
2015-07-09 16:29:10 -07:00
committed by Patrick Georgi
parent e44a4e8787
commit 752fba7846
4 changed files with 46 additions and 18 deletions

View File

@@ -556,17 +556,13 @@ set_address (hci_t *controller, usb_speed speed, int hubport, int hubaddr)
#endif
break;
case hub_device:
if (speed < SUPER_SPEED) {
usb_debug ("hub (2.0)\n");
usb_debug ("hub\n");
#if IS_ENABLED(CONFIG_LP_USB_HUB)
dev->init = usb_hub_init;
return dev->address;
dev->init = usb_hub_init;
return dev->address;
#else
usb_debug ("NOTICE: USB hub support not compiled in\n");
usb_debug ("NOTICE: USB hub support not compiled in\n");
#endif
} else {
usb_debug ("hub (3.0) - not yet supported!\n");
}
break;
case cdc_device:
usb_debug("CDC\n");