libpayload/usb: add USB 3.1 GEN2 support
USB 3.1 GEN2 report speed type 4, add into speed enum. BUG=b:139787920 BRANCH=N/A TEST=Build libpayload and depthcharge on sarien and boot with USB GEN2 HUB with USB disk. Check ultra speed device in cbmem log. Signed-off-by: Eric Lai <ericr_lai@compal.corp-partner.google.com> Change-Id: Ia0ef12b2f0d91bf0d0db766bbc9019de1614a4f4 Reviewed-on: https://review.coreboot.org/c/coreboot/+/35023 Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
@@ -265,6 +265,8 @@ usb_decode_mps0(usb_speed speed, u8 bMaxPacketSize0)
|
||||
}
|
||||
return bMaxPacketSize0;
|
||||
case SUPER_SPEED:
|
||||
/* Intentional fallthrough */
|
||||
case SUPER_SPEED_PLUS:
|
||||
if (bMaxPacketSize0 != 9) {
|
||||
usb_debug("Invalid MPS0: 0x%02x\n", bMaxPacketSize0);
|
||||
bMaxPacketSize0 = 9;
|
||||
@@ -284,6 +286,8 @@ int speed_to_default_mps(usb_speed speed)
|
||||
case HIGH_SPEED:
|
||||
return 64;
|
||||
case SUPER_SPEED:
|
||||
/* Intentional fallthrough */
|
||||
case SUPER_SPEED_PLUS:
|
||||
default:
|
||||
return 512;
|
||||
}
|
||||
@@ -319,6 +323,8 @@ usb_decode_interval(usb_speed speed, const endpoint_type type, const unsigned ch
|
||||
return LOG2(bInterval);
|
||||
}
|
||||
case SUPER_SPEED:
|
||||
/* Intentional fallthrough */
|
||||
case SUPER_SPEED_PLUS:
|
||||
switch (type) {
|
||||
case ISOCHRONOUS: case INTERRUPT:
|
||||
return bInterval - 1;
|
||||
@@ -657,7 +663,7 @@ usb_detach_device(hci_t *controller, int devno)
|
||||
int
|
||||
usb_attach_device(hci_t *controller, int hubaddress, int port, usb_speed speed)
|
||||
{
|
||||
static const char* speeds[] = { "full", "low", "high", "super" };
|
||||
static const char *speeds[] = { "full", "low", "high", "super", "ultra" };
|
||||
usb_debug ("%sspeed device\n", (speed < sizeof(speeds) / sizeof(char*))
|
||||
? speeds[speed] : "invalid value - no");
|
||||
int newdev = set_address (controller, speed, port, hubaddress);
|
||||
@@ -692,6 +698,14 @@ usb_generic_init (usbdev_t *dev)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* returns the speed is above SUPER_SPEED or not
|
||||
*/
|
||||
_Bool is_usb_speed_ss(usb_speed speed)
|
||||
{
|
||||
return (speed == SUPER_SPEED || speed == SUPER_SPEED_PLUS);
|
||||
}
|
||||
|
||||
/*
|
||||
* returns the address of the closest USB2.0 hub, which is responsible for
|
||||
* split transactions, along with the number of the used downstream port
|
||||
|
Reference in New Issue
Block a user