usb: hub: allow pgood_delay to be specified via env
Some USB devices break the spec and require longer warm-up times. Allow the usb_pgood_delay env variable to override the calculated time. Signed-off-by: Tim Harvey <tharvey@gateworks.com>
This commit is contained in:
parent
25c0673635
commit
319418c01c
|
|
@ -86,6 +86,7 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
|
||||||
int i;
|
int i;
|
||||||
struct usb_device *dev;
|
struct usb_device *dev;
|
||||||
unsigned pgood_delay = hub->desc.bPwrOn2PwrGood * 2;
|
unsigned pgood_delay = hub->desc.bPwrOn2PwrGood * 2;
|
||||||
|
const char *env;
|
||||||
|
|
||||||
dev = hub->pusb_dev;
|
dev = hub->pusb_dev;
|
||||||
|
|
||||||
|
|
@ -98,7 +99,14 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
|
||||||
/*
|
/*
|
||||||
* Wait for power to become stable,
|
* Wait for power to become stable,
|
||||||
* plus spec-defined max time for device to connect
|
* plus spec-defined max time for device to connect
|
||||||
|
* but allow this time to be increased via env variable as some
|
||||||
|
* devices break the spec and require longer warm-up times
|
||||||
*/
|
*/
|
||||||
|
env = getenv("usb_pgood_delay");
|
||||||
|
if (env)
|
||||||
|
pgood_delay = max(pgood_delay,
|
||||||
|
(unsigned)simple_strtol(env, NULL, 0));
|
||||||
|
debug("pgood_delay=%dms\n", pgood_delay);
|
||||||
mdelay(pgood_delay + 1000);
|
mdelay(pgood_delay + 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue