In usb_hub_configure the hub is asked for its descriptor and among other things its bPwrOn2PwrGood time. In the actual hub_power_on function this information was not used and a hardcoded value was used instead. For some hubs this delay is to short. So, use the delay the hub wants. Signed-off-by: Steffen Trumtrar <s.trumtrar@xxxxxxxxxxxxxx> Signed-off-by: Michael Grzeschik <m.grzeschik@xxxxxxxxxxxxxx> --- drivers/usb/core/usb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index 81ae9f1..48bc121 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -948,7 +948,8 @@ static void usb_hub_power_on(struct usb_hub_device *hub) usb_set_port_feature(dev, i + 1, USB_PORT_FEAT_POWER); USB_HUB_PRINTF("port %d returns %lX\n", i + 1, dev->status); } - mdelay(20); + /* power on is encoded in 2ms increments -> times 2 for the actual delay */ + mdelay(hub->desc.bPwrOn2PwrGood*2); } #define MAX_TRIES 5 -- 1.7.10.4 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox