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, 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; -- Orjan Friberg FlatFrog Laboratories AB _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot