[PATCH 3/3] usb: use ep-specific pwrgood delay

Eric Bénard eric at eukrea.com
Thu Aug 30 09:03:50 EDT 2012


Hi Steffen,

Le Thu, 30 Aug 2012 14:30:50 +0200,
Steffen Trumtrar <s.trumtrar at pengutronix.de> a écrit :

> 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 at pengutronix.de>
> Signed-off-by: Michael Grzeschik <m.grzeschik at pengutronix.de>
> ---
>  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

I tested you patch on my MX35 board and it doesn't work (the hub
requires 50 ms, the mdelay is thus 100 ms and in the end that's not
enough to see the USB mass storage connected to the hub) but
mdelay(hub->desc.bPwrOn2PwrGood*3) works fine.
Is it possible to increase this delay (*3 instead of *2) ?

Thanks
Eric



More information about the barebox mailing list