Hi, On Fri, 26 Aug 2022 at 13:37, Janne Grunau <j...@jannau.net> wrote: > > Hej, > > On 2022-08-25 23:35:33 -0600, Ashok Reddy Soma wrote: > > We are seeing timing issues with transcend usb sticks. These devices > > seems to require more time than regular devices for the control messages > > to reach device. Add 1ms delay before sending control message to fix > > trancend device detection issue. > > I suspect I see something similar with the DWC3 controller on Apple > M1/M2 devices. It seems to be related to USB full speed devices with > bMaxPacketSize0 of 8. Failing devices are so only keyboards since that > is a device everyone will connect when using a Mac Mini as desktop. > I can reproduce the issue with older Logitech Unifying Receiver wireless > keyboard/mouse dongles (bcdDevice 12.03 or 12.10). I could also resolve > the issue with random 'mdelay(1);'. I chased the cause of the issue down > to the initial USB descriptor read to parse 'bMaxPacketSize0' in > usb_setup_descriptor(). Please test if adding the delay after the > get_descriptor_len() call in usb_setup_descriptor() is enough. > On the Apple silicon devices reducing the read size from 64 byte to 8 > resolves the issue as well. Please try attached work-in-progress patch > (comment and commit message are not finalized). > > HTH Janne > > > Signed-off-by: Ashok Reddy Soma <ashok.reddy.s...@amd.com> > > --- > > > > common/usb.c | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/common/usb.c b/common/usb.c > > index 6fcf1e8428..3fae32b048 100644 > > --- a/common/usb.c > > +++ b/common/usb.c > > @@ -241,6 +241,12 @@ int usb_control_msg(struct usb_device *dev, unsigned > > int pipe, > > request, requesttype, value, index, size); > > dev->status = USB_ST_NOT_PROC; /*not yet processed */ > > > > + /* Timing issues are observed with transcend usb sticks such as > > + * “Transcend Jetflash 350 USB2.0". Add 1ms delay for the usb > > + * device to get detected. > > + */ > > + mdelay(1); > > Please let's try to avoid this. I noticed a slowdown of USB probing with > an hub with 4 devices connected. Since Apple silicon devices are desktop > style machines I expect it's not uncommon to see systems with many USB > devices.
Can we add a CONFIG for this, or put a setting in the device tree? Or is there a way to detect the problem and retry? > > > + > > err = submit_control_msg(dev, pipe, data, size, setup_packet); > > if (err < 0) > > return err; > > -- > > 2.17.1 > > Regards, Simon