[PATCH 2/5] usb: wait after initial device descriptor read
Ahmad Fatoum <[email protected]> Fri, 26 Jun 2026 19:31:38 +0200
| Newsgroups | org.infradead.lists.barebox |
|---|---|
| Message-ID | <[email protected]> |
Port over U-Boot commit 3406e9d8afcc8ade8cb3e697be2bcf9cc85c9d04: | usb: Add 1ms delay after first Get Descriptor request | | Logitech Unifying Receiver 046d:c52b bcdDevice 12.10 seems | sensitive about the first Get Descriptor request. If there | are any other requests in the same microframe, the device | reports bogus data, first of the descriptor parts is not | sent to the host. Wait over one microframe duration before | issuing subsequent requests to avoid probe failure with | this device, since it can be used to connect USB keyboards. | | Signed-off-by: Marek Vasut <[email protected]> | Tested-by: Janne Grunau <[email protected]> Assisted-by: Codex:gpt-5.5 Signed-off-by: Ahmad Fatoum <[email protected]> --- drivers/usb/core/usb.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c index ae87137447c7..c6b3187de17d 100644 --- a/drivers/usb/core/usb.c +++ b/drivers/usb/core/usb.c @@ -403,6 +403,17 @@ static int usb_setup_descriptor(struct usb_device *dev, bool do_read) if (err) return err; + /* + * Logitech Unifying Receiver 046d:c52b bcdDevice 12.10 seems + * sensitive about the first Get Descriptor request. If there + * are any other requests in the same microframe, the device + * reports bogus data, first of the descriptor parts is not + * sent to the host. Wait over one microframe duration here + * (1mS for USB 1.x , 125uS for USB 2.0) to avoid triggering + * the issue. + */ + mdelay(1); + dev->epmaxpacketin[0] = dev->descriptor->bMaxPacketSize0; dev->epmaxpacketout[0] = dev->descriptor->bMaxPacketSize0; } -- 2.47.3