[PATCH 1/1] usb: request only 8 bytes for USB_SPEED_FULL bMaxPacketSize0 discovery
Marek Vasut
marex at denx.de
Mon Sep 26 01:52:37 CEST 2022
On 8/29/22 08:31, Janne Grunau wrote:
> Fixes probing of various keyboards with DWC3 as integrated into Apple
> silicon SoCs. The problem appears to be requesting more data than the
> devices's bMaxPacketSize0 of 8. Older Logitech unifying receivers
> (bcdDevice 12.03 or 12.10) are for eaxample affected.
>
> Signed-off-by: Janne Grunau <j at jannau.net>
> Tested-by: Thomas Glanzmann <thomas at glanzmann.de>
> ---
> common/usb.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/common/usb.c b/common/usb.c
> index 6fcf1e8428e9..48a310e8599d 100644
> --- a/common/usb.c
> +++ b/common/usb.c
> @@ -993,10 +993,12 @@ static int usb_setup_descriptor(struct usb_device *dev, bool do_read)
> *
> * At least the DWC2 controller needs to be programmed with
> * the number of packets in addition to the number of bytes.
> - * A request for 64 bytes of data with the maxpacket guessed
> - * as 64 (above) yields a request for 1 packet.
> + * Requesting more than 8 bytes causes probing errors on the
> + * DWC3 controller integrated into Apple silicon SoCs with
> + * devices with bMaxPacketSize0 of 8. So limit the read request
> + * to the used size of 8 bytes.
> */
> - err = get_descriptor_len(dev, 64, 8);
> + err = get_descriptor_len(dev, 8, 8);
> if (err)
> return err;
> }
Sorry for the delay.
Can you be more specific about those logitech receivers ? I might have
one of those devices, and I have DWC3 in i.MX8MP and i.MX8MQ, as well as
ZynqMP, so I should be able to try and trigger the problem. Can you
share the reproducer test case for this problem ?
If the problem is specific to the Apple instance of the controller,
maybe we need some sort of quirk instead ?
Thanks
More information about the U-Boot
mailing list