Increase the query delay, otherwise some sticks are not detected.
The problem shows up on the USB bus analyzer such that the stick
takes longer time to switch from FS mode to HS mode than the code
allows when the controller starts from completely off state.

Signed-off-by: Marek Vasut <ma...@denx.de>
Cc: Chin Liang See <cl...@altera.com>
Cc: Dinh Nguyen <dingu...@opensource.altera.com>
Cc: Hans de Goede <hdego...@redhat.com>
Cc: Stefan Roese <s...@denx.de>
Cc: Stephen Warren <swar...@nvidia.com>
---
V2: Special-case this only for DWC2
---
 common/usb_hub.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/common/usb_hub.c b/common/usb_hub.c
index 0f39c9f..4795ea1 100644
--- a/common/usb_hub.c
+++ b/common/usb_hub.c
@@ -144,8 +144,14 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
        /*
         * Do a minimum delay of the larger value of 100ms or pgood_delay
         * so that the power can stablize before the devices are queried
+        * DWC2 (and possibly others?) needs longer time to stabilize when
+        * coming out of cold start. 1 second seems to work reliably.
         */
+#ifdef CONFIG_USB_DWC2
+       hub->query_delay = get_timer(0) + max(1000, (int)pgood_delay);
+#else
        hub->query_delay = get_timer(0) + max(100, (int)pgood_delay);
+#endif
 
        /*
         * Record the power-on timeout here. The max. delay (timeout)
-- 
2.7.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to