[coreboot-gerrit] New patch to review for coreboot: libpayload: xhci: Set MPS based on speed
Patrick Georgi (pgeorgi@google.com)
gerrit at coreboot.org
Fri May 6 23:28:06 CEST 2016
Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/14659
-gerrit
commit 6607fa08908f3b6a3f8514aeac3c2cf81a78a274
Author: Varadarajan Narayanan <varada at codeaurora.org>
Date: Thu Mar 17 14:43:35 2016 +0530
libpayload: xhci: Set MPS based on speed
BUG=chrome-os-partner:49249
TEST=Compiles and Boots and detect USB storage
BRANCH=none
Change-Id: I9007399e1f785e6f1d2258225e3f7cc602053aed
Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
Original-Commit-Id: 1db43f53973d2124e41186777caa829aa346ace3
Original-Change-Id: I943d19a3a7d785bd075073b57ba6388662d7df90
Original-Signed-off-by: Varadarajan Narayanan <varada at codeaurora.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/333311
Original-Commit-Ready: David Hendricks <dhendrix at chromium.org>
Original-Reviewed-by: Patrick Georgi <pgeorgi at chromium.org>
---
payloads/libpayload/drivers/usb/usb.c | 14 ++++++++++++++
payloads/libpayload/drivers/usb/xhci_devconf.c | 2 +-
payloads/libpayload/include/usb/usb.h | 1 +
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/payloads/libpayload/drivers/usb/usb.c b/payloads/libpayload/drivers/usb/usb.c
index e87e397..bfb697d 100644
--- a/payloads/libpayload/drivers/usb/usb.c
+++ b/payloads/libpayload/drivers/usb/usb.c
@@ -275,6 +275,20 @@ usb_decode_mps0(usb_speed speed, u8 bMaxPacketSize0)
}
}
+int speed_to_default_mps(usb_speed speed)
+{
+ switch (speed) {
+ case LOW_SPEED:
+ return 8;
+ case FULL_SPEED:
+ case HIGH_SPEED:
+ return 64;
+ case SUPER_SPEED:
+ default:
+ return 512;
+ }
+}
+
/* Normalize bInterval to log2 of microframes */
static int
usb_decode_interval(usb_speed speed, const endpoint_type type, const unsigned char bInterval)
diff --git a/payloads/libpayload/drivers/usb/xhci_devconf.c b/payloads/libpayload/drivers/usb/xhci_devconf.c
index ead130e..48d928c 100644
--- a/payloads/libpayload/drivers/usb/xhci_devconf.c
+++ b/payloads/libpayload/drivers/usb/xhci_devconf.c
@@ -185,7 +185,7 @@ xhci_set_address (hci_t *controller, usb_speed speed, int hubport, int hubaddr)
ic->dev.ep0->tr_dq_high = 0;
EC_SET(TYPE, ic->dev.ep0, EP_CONTROL);
EC_SET(AVRTRB, ic->dev.ep0, 8);
- EC_SET(MPS, ic->dev.ep0, 8);
+ EC_SET(MPS, ic->dev.ep0, speed_to_default_mps(speed));
EC_SET(CERR, ic->dev.ep0, 3);
EC_SET(DCS, ic->dev.ep0, 1);
diff --git a/payloads/libpayload/include/usb/usb.h b/payloads/libpayload/include/usb/usb.h
index cf52a4a..e93a11e 100644
--- a/payloads/libpayload/include/usb/usb.h
+++ b/payloads/libpayload/include/usb/usb.h
@@ -263,6 +263,7 @@ void usb_poll (void);
usbdev_t *init_device_entry (hci_t *controller, int num);
int usb_decode_mps0 (usb_speed speed, u8 bMaxPacketSize0);
+int speed_to_default_mps(usb_speed speed);
int set_feature (usbdev_t *dev, int endp, int feature, int rtype);
int get_status (usbdev_t *dev, int endp, int rtype, int len, void *data);
int get_descriptor (usbdev_t *dev, int rtype, int descType, int descIdx,
More information about the coreboot-gerrit
mailing list