[PATCH 4/5] usb: separate descriptor and config requests
Ahmad Fatoum <[email protected]> Fri, 26 Jun 2026 19:31:40 +0200
| Newsgroups | org.infradead.lists.barebox |
|---|---|
| Message-ID | <[email protected]> |
Port over U-Boot commit ef71290be9b70d8cfa63b506c7d93c5069f63c42: | 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 <[email protected]> | Cc: Chin Liang See <[email protected]> | Cc: Dinh Nguyen <[email protected]> | Cc: Hans de Goede <[email protected]> | Cc: Stefan Roese <[email protected]> | Cc: Stephen Warren <[email protected]> Assisted-by: Codex:gpt-5.5 Signed-off-by: Ahmad Fatoum <[email protected]> --- drivers/usb/core/usb.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index 145b85a28fab..3f379197dc0c 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -522,6 +522,15 @@ int usb_new_device(struct usb_device *dev) le16_to_cpus(&dev->descriptor->idVendor); 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 */ length = usb_get_configuration_no(dev, buf, 0); if (length < 0) { -- 2.47.3