summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--payloads/libpayload/drivers/usb/ehci_rh.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/payloads/libpayload/drivers/usb/ehci_rh.c b/payloads/libpayload/drivers/usb/ehci_rh.c
index 5c4daeda8a..67f63cc481 100644
--- a/payloads/libpayload/drivers/usb/ehci_rh.c
+++ b/payloads/libpayload/drivers/usb/ehci_rh.c
@@ -98,8 +98,8 @@ ehci_rh_scanport (usbdev_t *dev, int port)
*/
RH_INST(dev)->ports[port] = (RH_INST(dev)->ports[port] & ~P_PORT_ENABLE) | P_PORT_RESET;
- /* Wait a bit while reset is active. */
- mdelay(50); // usb20 spec 7.1.7.5 (TDRSTR)
+ /* Wait a bit while reset is active (+1 to avoid Tegra race). */
+ mdelay(50 + 1); // usb20 spec 7.1.7.5 (TDRSTR)
/* Deassert reset. */
RH_INST(dev)->ports[port] &= ~P_PORT_RESET;
@@ -113,6 +113,8 @@ ehci_rh_scanport (usbdev_t *dev, int port)
return;
}
+ mdelay(10); /* TRSTRCY (USB 2.0 spec 7.1.7.5) */
+
/* If the host controller enabled the port, it's a high-speed
* device, otherwise it's full-speed.
*/