[U-Boot] [PATCH 5/7] usb: Assure Get Descriptor request is in separate microframe

Stefan Roese sr at denx.de
Wed May 4 10:03:45 CEST 2016


On 03.05.2016 22:51, Marek Vasut wrote:
> The Kingston DT Ultimate USB 3.0 stick is sensitive to this first
> Get Descriptor request and if the request is not in a separate
> microframe, the stick refuses to operate. Add slight delay, which
> is enough for one microframe to pass on any USB spec revision.
>
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Chin Liang See <clsee at altera.com>
> Cc: Dinh Nguyen <dinguyen at opensource.altera.com>
> Cc: Hans de Goede <hdegoede at redhat.com>
> Cc: Stefan Roese <sr at denx.de>
> Cc: Stephen Warren <swarren at nvidia.com>
> ---
>   common/usb.c | 8 ++++++++
>   1 file changed, 8 insertions(+)
>
> diff --git a/common/usb.c b/common/usb.c
> index 205041b..8d9efe5 100644
> --- a/common/usb.c
> +++ b/common/usb.c
> @@ -1077,6 +1077,14 @@ int usb_select_config(struct usb_device *dev)
>   	le16_to_cpus(&dev->descriptor.idProduct);
>   	le16_to_cpus(&dev->descriptor.bcdDevice);
>
> +	/*
> +	 * Kingston DT Ultimate 32GB USB 3.0 seems to be extremely sensitive
> +	 * about this first Get Descriptor request. If there are any other
> +	 * requests in the first microframe, the stick crashes. Wait about
> +	 * one microframe duration here (1mS for USB 1.x , 125uS for USB 2.0).
> +	 */
> +	mdelay(1);
> +
>   	/* only support for one config for now */
>   	err = usb_get_configuration_len(dev, 0);
>   	if (err >= 0) {
>

Again my question, if this problem also occurs on other platforms
with this USB key. A 1ms delay is not really a big deal, but its
my general feeling that we should manifest such changes by testing
on different platforms.

Thanks,
Stefan


More information about the U-Boot mailing list