diff options
author | Marek Vasut <marex@denx.de> | 2016-04-27 03:32:56 +0200 |
---|---|---|
committer | Marek Vasut <marex@denx.de> | 2016-05-06 20:06:56 +0200 |
commit | ef71290be9b70d8cfa63b506c7d93c5069f63c42 (patch) | |
tree | fe02836531de65bae903564c6b5b658bd7439639 /common | |
parent | f647bf0ba36a5236d4bc7f93d39bfacfb1cfe6c7 (diff) | |
download | u-boot-ef71290be9b70d8cfa63b506c7d93c5069f63c42.tar.gz u-boot-ef71290be9b70d8cfa63b506c7d93c5069f63c42.tar.bz2 u-boot-ef71290be9b70d8cfa63b506c7d93c5069f63c42.zip |
usb: Assure Get Descriptor request is in separate microframe
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@denx.de>
Cc: Chin Liang See <clsee@altera.com>
Cc: Dinh Nguyen <dinguyen@opensource.altera.com>
Cc: Hans de Goede <hdegoede@redhat.com>
Cc: Stefan Roese <sr@denx.de>
Cc: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'common')
-rw-r--r-- | common/usb.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/common/usb.c b/common/usb.c index 205041b6a6..8d9efe516b 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) { |