Hi,

When trying to migrate a board from u-boot version 2016.09 to version 2018.03, I found a problem with a USB 2.0 device which used to work on version 2016.09.

In u-boot version 2016.09 the device appears like this:

2: Mass Storage,  USB Revision 2.0
 - SanDisk Cruzer Blade 200443243002FB509E64
 - Class: (from Interface) Mass Storage
 - PacketSize: 64  Configurations: 1
 - Vendor: 0x0781  Product 0x5567 Version 1.38
   Configuration: 1
   - Interfaces: 1 Bus Powered 200mA
     Interface: 0
     - Alternate Setting 0, Endpoints: 2
     - Class Mass Storage, Transp. SCSI, Bulk only
     - Endpoint 1 In Bulk MaxPacket 512
     - Endpoint 2 Out Bulk MaxPacket 512


But in version 2018.03 I just can't start usb. It fails with following error:

=> usb start
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... EHCI timed out on TD - token=0x80008c80
unable to get device descriptor (error=-1)
1 USB Device(s) found
USB1:   USB EHCI 1.00
scanning bus 1 for devices... 1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found


I did a "git bisect" and found that this problem is related to the following commit:

c008faa usb: Only get 64 bytes device descriptor for full speed devices

I am not an expert on USB, so I would like to ask for help on this issue.

In u-boot v2018.03, file common/usb.c, line 973, shouldn't the comparison be like this:

        if (do_read && dev->speed >= USB_SPEED_FULL) {

or, at list:

        if (do_read && (dev->speed == USB_SPEED_FULL || dev->speed == USB_SPEED_HIGH)) {


I would submit a patch for this, but I lack on USB knowledge for explaining the patch.

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to