[U-Boot] [PATCH 2/6] usb: Remove 200 ms delay in usb_hub_port_connect_change()

Stefan Roese sr at denx.de
Thu Mar 10 16:50:08 CET 2016


This patch removes 2 mdelay(200) calls from usb_hub_port_connect_change().
These delays don't seem to be necessary. At least not in my tests. Here
the number for a custom x86 Bay Trail board (not in mainline yet) with
a quite large and complex USB hub infrastructure.

Without this patch:
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 9 USB Device(s) found

time: 28.415 seconds

With this patch:
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 9 USB Device(s) found

time: 24.811 seconds

So ~3.5 seconds of USB scanning time reduction.

These mdelay calls are removed if CONFIG_USB_FAST_SCAN is defined. They
are not removed per default yet. It would be good to test with this
option enabled on many other boards. And once we have a good testing
base we can decide to remove these delays completely, including this
macro.

Signed-off-by: Stefan Roese <sr at denx.de>
Cc: Simon Glass <sjg at chromium.org>
Cc: Hans de Goede <hdegoede at redhat.com>
Cc: Stephen Warren <swarren at nvidia.com>
Cc: Marek Vasut <marex at denx.de>
---

 common/usb_hub.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/common/usb_hub.c b/common/usb_hub.c
index 10fdd3c..660f4f4 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -275,7 +275,9 @@ int usb_hub_port_connect_change(struct usb_device *dev, int port)
 		if (!(portstatus & USB_PORT_STAT_CONNECTION))
 			return -ENOTCONN;
 	}
+#if !defined(CONFIG_USB_FAST_SCAN)
 	mdelay(200);
+#endif
 
 	/* Reset the port */
 	ret = legacy_hub_port_reset(dev, port, &portstatus);
@@ -285,7 +287,9 @@ int usb_hub_port_connect_change(struct usb_device *dev, int port)
 		return ret;
 	}
 
+#if !defined(CONFIG_USB_FAST_SCAN)
 	mdelay(200);
+#endif
 
 	switch (portstatus & USB_PORT_STAT_SPEED_MASK) {
 	case USB_PORT_STAT_SUPER_SPEED:
-- 
2.7.2



More information about the U-Boot mailing list