]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
usb: Add 1ms delay after first Get Descriptor request
authorMarek Vasut <marex@denx.de>
Sun, 30 Oct 2022 22:38:35 +0000 (23:38 +0100)
committerMarek Vasut <marex@denx.de>
Thu, 3 Nov 2022 22:36:48 +0000 (23:36 +0100)
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 <marex@denx.de>
Tested-by: Janne Grunau <j@jannau.net>
common/usb.c

index 6fcf1e8428e95524979331d58d7ad3c718cea27a..ae9253dfc0edfb681776b986eb871b87993ebf1d 100644 (file)
@@ -999,6 +999,17 @@ static int usb_setup_descriptor(struct usb_device *dev, bool do_read)
                err = get_descriptor_len(dev, 64, 8);
                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;