Raul Rangel has uploaded this change for review. ( https://review.coreboot.org/27476
Change subject: libpayload: Add UNKNOWN_SPEED to usb_speed enum ......................................................................
libpayload: Add UNKNOWN_SPEED to usb_speed enum
xhci_rh_port_speed return -1 if the port is disabled. The usb_speed enum is unsigned so this results in a positive value which implies success.
Adding a -1 to the enum will make it signed so the >= 0 check will work correctly.
BUG=b:76831439 TEST=verified on grunt that -1 is returned when port is disabled.
Change-Id: I98a373717d52dfb6ca4dcc53a00dc1b4c240a919 Signed-off-by: Raul E Rangel rrangel@chromium.org --- M payloads/libpayload/drivers/usb/generic_hub.c M payloads/libpayload/drivers/usb/xhci_rh.c M payloads/libpayload/include/usb/usb.h 3 files changed, 8 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/76/27476/1
diff --git a/payloads/libpayload/drivers/usb/generic_hub.c b/payloads/libpayload/drivers/usb/generic_hub.c index 9f86705..89da934 100644 --- a/payloads/libpayload/drivers/usb/generic_hub.c +++ b/payloads/libpayload/drivers/usb/generic_hub.c @@ -170,7 +170,8 @@
const usb_speed speed = hub->ops->port_speed(dev, port); if (speed >= 0) { - usb_debug("generic_hub: Success at port %d\n", port); + usb_debug("generic_hub: Success at port %d, speed: %d\n", port, + speed); if (hub->ops->reset_port) mdelay(10); /* Reset recovery time (usb20 spec 7.1.7.5) */ diff --git a/payloads/libpayload/drivers/usb/xhci_rh.c b/payloads/libpayload/drivers/usb/xhci_rh.c index d7ba82c..ddf6ce8 100644 --- a/payloads/libpayload/drivers/usb/xhci_rh.c +++ b/payloads/libpayload/drivers/usb/xhci_rh.c @@ -95,7 +95,7 @@ >> PORTSC_PORT_SPEED_START) - 1; } else { - return -1; + return UNKNOWN_SPEED; } }
diff --git a/payloads/libpayload/include/usb/usb.h b/payloads/libpayload/include/usb/usb.h index ef18926..79c4586 100644 --- a/payloads/libpayload/include/usb/usb.h +++ b/payloads/libpayload/include/usb/usb.h @@ -187,7 +187,11 @@ } endpoint_t;
typedef enum { - FULL_SPEED = 0, LOW_SPEED = 1, HIGH_SPEED = 2, SUPER_SPEED = 3, + UNKNOWN_SPEED = -1, + FULL_SPEED = 0, + LOW_SPEED = 1, + HIGH_SPEED = 2, + SUPER_SPEED = 3, } usb_speed;
struct usbdev {