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@chromium.org>
Original-Commit-Id: 1db43f53973d2124e41186777caa829aa346ace3
Original-Change-Id: I943d19a3a7d785bd075073b57ba6388662d7df90
Original-Signed-off-by: Varadarajan Narayanan <varada@codeaurora.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/333311
Original-Commit-Ready: David Hendricks <dhendrix@chromium.org>
Original-Reviewed-by: Patrick Georgi <pgeorgi@chromium.org>
Reviewed-on: https://review.coreboot.org/14659
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
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 @@
 	}
 }
 
+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)