Dear Orjan Friberg, In message <4e11d02e.7030...@flatfrog.com> you wrote: > The following construct (musb_hcd.c, usb_lowlevel_init) > > timeout = musb_cfg.timeout; > while (timeout--) > if (readb(&musbr->devctl) & MUSB_DEVCTL_HM) > break; > > will leave timeout == -1 when the timeout is reached, hence the timeout > detecting code that follows will not trigger: > > /* if musb core is not in host mode, then return */ > if (!timeout) > return -1; > > > Without the patch below, doing a 'usb reset' without a device connected > makes it impossible to discover connected devices later. I have not > investigated why this happens since the timeout logic was broken (and > correcting that fixed the issue at hand). > > Changed to pre-decrement since I assume the timeout value is not *that* > exact.
Thanks for spotting and reporting. > Thanks, > Orjan > > diff --git a/drivers/usb/musb/musb_hcd.c b/drivers/usb/musb/musb_hcd.c > index 974bb31..adcf7f7 100644 > --- a/drivers/usb/musb/musb_hcd.c > +++ b/drivers/usb/musb/musb_hcd.c > @@ -1114,7 +1114,7 @@ int usb_lowlevel_init(void) > * should be a usb device connected. > */ > timeout = musb_cfg.timeout; > - while (timeout--) > + while (--timeout) > if (readb(&musbr->devctl) & MUSB_DEVCTL_HM) > break; Unfortunately, your patch is white space corrupted, and missing a proper Signed-off-by: line. Please fix and repost. Thanks. Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de Q: How many DEC repairman does it take to fix a flat ? A: Five; four to hold the car up and one to swap tires. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot