[U-Boot] usb: Fail to get descriptor for USB 2.0 device

DATACOM - Paulo.Zaneti paulo.zaneti at datacom.com.br
Wed May 23 17:37:50 UTC 2018



On 23/05/2018 14:03, Marek Vasut wrote:
> On 05/23/2018 07:00 PM, DATACOM - Paulo.Zaneti wrote:
>> Hi,
> 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.
> Does it still happen in u-boot/master ?
Yes, it still happens.

I just tested it with the following commit:
dca268a .travis.yml: Further optimizations
>
>> 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.
>>
>



More information about the U-Boot mailing list