[U-Boot] "usb storage" command issues

Stefan Roese sr at denx.de
Tue Nov 28 09:40:02 UTC 2017


Hi Bin, Hi Simon,

On 20.11.2017 16:38, Simon Glass wrote:
> On 20 November 2017 at 00:07, Bin Meng <bmeng.cn at gmail.com> wrote:
>>
>> Hi Stefan,
>>
>> On Wed, Sep 27, 2017 at 1:03 AM, Stefan Roese <sr at denx.de> wrote:
>>> Hi,
>>>
>>> I'm currently testing USB on my x86 platform. And noticed, that
>>> the "usb storage" command does not work as expected:
>>>
>>> => usb reset
>>> resetting USB...
>>> USB0:   Register 7000820 NbrPorts 7
>>> Starting the controller
>>> USB XHCI 1.00
>>> scanning bus 0 for devices... 5 USB Device(s) found
>>>         scanning usb for storage devices... 1 Storage Device(s) found
>>> => usb tree
>>> USB device tree:
>>>    1  Hub (5 Gb/s, 0mA)
>>>    |  U-Boot XHCI Host Controller
>>>    |
>>>    +-2  Mass Storage (480 Mb/s, 224mA)
>>>    |    SanDisk Ultra 4C530001010620110505
>>>    |
>>>    +-3  Hub (480 Mb/s, 0mA)
>>>      |
>>>      +-4  Hub (480 Mb/s, 100mA)
>>>        |
>>>        +-5  Hub (12 Mb/s, 100mA)
>>>
>>> => usb storage
>>> Card did not respond to voltage select!
>>> mmc_init: -95, time 28
>>> No storage devices, perhaps not 'usb start'ed..?
>>>
>>>
>>> While debugging I found, that usb_stor_info() calls blk_first_device(IF_TYPE_USB, &dev)
>>> which calls uclass_first_device(UCLASS_BLK, devp). With my current DM tree:
>>>
>>> => dm tree
>>>   Class       Probed   Name
>>> ----------------------------------------
>>>   root        [ + ]    root_driver
>>> ...
>>>   mmc         [ + ]    |   |-- pci_mmc
>>>   blk         [   ]    |   |   `-- pci_mmc.blk
>>>   mmc         [ + ]    |   |-- pci_mmc
>>>   blk         [   ]    |   |   `-- pci_mmc.blk
>>>
>>>
>>> the first BLK device is a MMC device. With uclass_first_device() its
>>> probe function is called here, which fails in this case. Resulting in
>>> an abort for the loop over all BLK devices.
>>>
>>> How should this be handled for the "usb storage" command. Probing
>>> all BLK devices while running this command seems a bit too much.
>>>
>>> Any suggestions on how to fix this?
>>>
>>
>> Sorry I missed this before. Is it still broken in current mainline?

Finally I'm getting back to this issue. And yes, its still broken in
mainline.

> Me too.
> 
> Probing the block device should call mmc_blk_probe() which should call
> mmc_init(), etc. I'm not sure what is going wrong there?

The problem is, that *all* block devices are probed with the "usb
storage" command, including MMC devices, which come first in my DM tree.
As the first MMC device is not available, this command stops here with
the error listed above.

IMHO, "usb storage" should only list the USB block devices. Not sure,
if this ever worked with DM USB enabled.

Thanks,
Stefan


More information about the U-Boot mailing list