In a system with a complex USB infrastrcture (many USB hubs), the power-on delay of mininimum 1 second for each USB hub results in a quite big USB scanning time. Many USB devices can deal with much lower power-on delays. In my test system, even 10ms seems to be enough for the USB device to get detected correctly. This patch now reduces the minimum 1 second delay to a minumum of 100ms instead. This results in a big USB scan time reduction:
Here the numbers for my current board: Without this patch: starting USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 9 USB Device(s) found time: 10.822 seconds With this patch: starting USB... USB0: USB EHCI 1.00 scanning bus 0 for devices... 9 USB Device(s) found time: 6.319 seconds So ~4.5 seconds of USB scanning time reduction. I'm not really sure if this patch can be accepted in general as is. In patch 0d437bca [usb: hub: fix power good delay timing] by Stephen Warren, this delay was changes according to "Connect Timing ECN.pdf" to a total of 1 second plus the hub port's power good time. Now its changes back to 100ms which is a violation of this spec. But still, for most USB devices this 100ms is more than enough. So its a valid use-case to lower this time in special (perhaps static) USB environments. Signed-off-by: Stefan Roese <s...@denx.de> Cc: Simon Glass <s...@chromium.org> Cc: Hans de Goede <hdego...@redhat.com> Cc: Stephen Warren <swar...@nvidia.com> Cc: Marek Vasut <ma...@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 780291f..d5fcd27 100644 --- a/common/usb_hub.c +++ b/common/usb_hub.c @@ -120,7 +120,11 @@ static void usb_hub_power_on(struct usb_hub_device *hub) pgood_delay = max(pgood_delay, (unsigned)simple_strtol(env, NULL, 0)); debug("pgood_delay=%dms\n", pgood_delay); +#if defined(CONFIG_USB_FAST_SCAN) + mdelay(pgood_delay + 100); +#else mdelay(pgood_delay + 1000); +#endif } void usb_hub_reset(void) -- 2.7.2 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot