[U-Boot] davinci, dm365, usb: timeoutvalue

Hello Thomas,
I just debugging some usb issues on an dm365 based board. I noticed that if no usb device is connected to the board, the "usb start" command does have a long timeout (also have access to an dm365evm board, same behaviour). Found the reason for this big timeout here:
./drivers/usb/musb/musb_hcd.c usb_lowlevel_init(): timeout = musb_cfg.timeout; while (timeout--) if (readb(&musbr->devctl) & MUSB_DEVCTL_HM) break;
with ./drivers/usb/musb/davinci.: /* MUSB platform configuration */ struct musb_config musb_cfg = { .regs = (struct musb_regs *)MENTOR_USB0_BASE, .timeout = DAVINCI_USB_TIMEOUT, .musb_speed = 0, };
and ./drivers/usb/musb/davinci.h:
#define DAVINCI_USB_TIMEOUT 0x3FFFFFF
Why is this DAVINCI_USB_TIMEOUT value so high? This could be shorter, or are there some reasons for such a long timeout?
Thanks!
bye, Heiko

Dear Heiko Schocher,
In message 4E144710.7020807@denx.de you wrote:
Hello Thomas,
I just debugging some usb issues on an dm365 based board. I noticed that if no usb device is connected to the board, the "usb start" command does have a long timeout (also have access to an dm365evm board, same behaviour). Found the reason for this big timeout here:
./drivers/usb/musb/musb_hcd.c usb_lowlevel_init(): timeout = musb_cfg.timeout; while (timeout--) if (readb(&musbr->devctl) & MUSB_DEVCTL_HM) break;
Argh...
#define DAVINCI_USB_TIMEOUT 0x3FFFFFF
Why is this DAVINCI_USB_TIMEOUT value so high? This could be shorter, or are there some reasons for such a long timeout?
Actually this means that the actual amount of time spent in this loop is not defined, and depends on the actual speed of the CPU, RAM, etc.
The timeout value should be changed into a time value (instead of cycle count), and the poll loop should be changed accordingly, for example like this:
#define DAVINCI_USB_TIMEOUT 250 /* 250 milliseconds */
... while (timeout--) { if (readb(&musbr->devctl) & MUSB_DEVCTL_HM) break; udelay (1000); }
Best regards,
Wolfgang Denk
participants (2)
-
Heiko Schocher
-
Wolfgang Denk