[PATCH v1] T1024RDB: USB: Add a 10808 us delay in usb_scan_port

Bin Meng bmeng.cn at gmail.com
Mon Dec 16 04:17:28 CET 2019


+Marek,

On Mon, Dec 16, 2019 at 11:13 AM Yinbo Zhu <yinbo.zhu at nxp.com> wrote:
>
> T1024RDB usb controller doesn't detect usb device at first usb start
> Add a delay that is greater than 10808 us can fix that issue, which
> delay if is less than 10808 us, issue is probabilistic occurrence
>
> => usb start
> starting USB...
> USB0:   USB EHCI 1.00
> USB1:   USB EHCI 1.00
> scanning bus 0 for devices... 1 USB Device(s) found
> scanning bus 1 for devices... 1 USB Device(s) found
>        scanning usb for storage devices... 0 Storage Device(s) found
> => usb stop
> stopping USB..
> => usb start
> starting USB...
> USB0:   USB EHCI 1.00
> USB1:   USB EHCI 1.00
> scanning bus 0 for devices... 2 USB Device(s) found
> scanning bus 1 for devices... 1 USB Device(s) found
>        scanning usb for storage devices... 1 Storage Device(s) found
> =>
>
> Signed-off-by: Yinbo Zhu <yinbo.zhu at nxp.com>
> ---
>  common/usb_hub.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/common/usb_hub.c b/common/usb_hub.c
> index 33aaeb8e44..6dd06696b2 100644
> --- a/common/usb_hub.c
> +++ b/common/usb_hub.c
> @@ -486,6 +486,9 @@ static int usb_scan_port(struct usb_device_scan *usb_scan)
>                 return 0;
>         }
>
> +#ifdef CONFIG_TARGET_T1024RDB
> +       udelay(10808);
> +#endif

This looks like a workaround. Is this a silicon errata?

>         if (portchange & USB_PORT_STAT_C_RESET) {
>                 debug("port %d reset change\n", i + 1);
>                 usb_clear_port_feature(dev, i + 1, USB_PORT_FEAT_C_RESET);
> --

Regards,
Bin


More information about the U-Boot mailing list