Commit ef71290be9b70d8cfa63b506c7d93c5069f63c42
1 parent
f647bf0ba3
Exists in
v2017.01-smarct4x
and in
29 other branches
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>
Showing 1 changed file with 8 additions and 0 deletions Side-by-side Diff
common/usb.c
... | ... | @@ -1077,6 +1077,14 @@ |
1077 | 1077 | le16_to_cpus(&dev->descriptor.idProduct); |
1078 | 1078 | le16_to_cpus(&dev->descriptor.bcdDevice); |
1079 | 1079 | |
1080 | + /* | |
1081 | + * Kingston DT Ultimate 32GB USB 3.0 seems to be extremely sensitive | |
1082 | + * about this first Get Descriptor request. If there are any other | |
1083 | + * requests in the first microframe, the stick crashes. Wait about | |
1084 | + * one microframe duration here (1mS for USB 1.x , 125uS for USB 2.0). | |
1085 | + */ | |
1086 | + mdelay(1); | |
1087 | + | |
1080 | 1088 | /* only support for one config for now */ |
1081 | 1089 | err = usb_get_configuration_len(dev, 0); |
1082 | 1090 | if (err >= 0) { |