[PATCH 4/5] usb: separate descriptor and config requests

Ahmad Fatoum a.fatoum at barebox.org
Fri Jun 26 10:31:40 PDT 2026


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 <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>

Assisted-by: Codex:gpt-5.5
Signed-off-by: Ahmad Fatoum <a.fatoum at barebox.org>
---
 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




More information about the barebox mailing list