[U-Boot] am335x: musb: mass storage device issue

Yegor Yefremov yegorslists at googlemail.com
Tue Feb 28 08:24:30 UTC 2017


On Tue, Feb 14, 2017 at 11:46 AM, Yegor Yefremov
<yegorslists at googlemail.com> wrote:
> On Tue, Feb 14, 2017 at 7:57 AM, Stefan Roese <sr at denx.de> wrote:
>> Hi Yegor,
>>
>>
>> On 13.02.2017 16:02, Yegor Yefremov wrote:
>>>
>>> On Mon, Feb 13, 2017 at 3:17 PM, Belisko Marek <marek.belisko at gmail.com>
>>> wrote:
>>>>
>>>> Hi Yegor,
>>>>
>>>> On Mon, Feb 13, 2017 at 12:57 PM, Yegor Yefremov
>>>> <yegorslists at googlemail.com> wrote:
>>>>>
>>>>>
>>>>> My am335x based board doesn't detect USB sticks:
>>>>>
>>>>> U-Boot 2017.03-rc1 (Feb 13 2017 - 12:46:54 +0100)
>>>>>
>>>>> CPU  : AM335X-GP rev 2.1
>>>>> I2C:   ready
>>>>> DRAM:  256 MiB
>>>>> NAND:  256 MiB
>>>>> MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
>>>>> Using default environment
>>>>>
>>>>> Net:   <ethaddr> not set. Validating first E-fuse MAC
>>>>> cpsw
>>>>> Hit any key to stop autoboot:  0
>>>>> => usb reset
>>>>> resetting USB...
>>>>> USB0:   scanning bus 0 for devices... 2 USB Device(s) found
>>>>>        scanning usb for storage devices... 0 Storage Device(s) found
>>>>>
>>>>>
>>>>> => usb tree
>>>>> USB device tree:
>>>>>   1  Hub (480 Mb/s, 100mA)
>>>>>   |   USB2.0 Hub
>>>>>   |
>>>>>   +-2  Vendor specific (480 Mb/s, 500mA)
>>>>>        Quectel, Incorporated UMTS/HSPA Module
>>>>>
>>>>> U-Boot finds a hub and a 3g modem attached to it, but the USB drive,
>>>>> that is also attached to this hub won't be detected.
>>>>
>>>>
>>>>  maybe stupid reply but did you test on other board or with other usb
>>>> device? I can check on BBB in the evening
>>>> and post findings.
>>>
>>>
>>> And please provide your u-boot version.
>>>
>>>>> So far I haven't tried to bisect the issue (have to find a working
>>>>> commit including my board), but the same setup is working for 2014.07
>>>>> u-boot. Am I the only one or are other am335x based also affected?
>>>
>>>
>>> Bisect result:
>>>
>>> 2ef117fe4fce4e1af282ac2bbb0be36c41d15e2b is the first bad commit
>>> commit 2ef117fe4fce4e1af282ac2bbb0be36c41d15e2b
>>> Author: Stefan Roese <sr at denx.de>
>>> Date:   Tue Mar 15 13:59:13 2016 +0100
>>>
>>>     usb: Remove 200 ms delay in usb_hub_port_connect_change()
>>>
>>>     This patch removes 2 mdelay(200) calls from
>>> usb_hub_port_connect_change().
>>>     These delays don't seem to be necessary. At least not in my tests.
>>> Here
>>>     the number for a custom x86 Bay Trail board (not in mainline yet) with
>>>     a quite large and complex USB hub infrastructure.
>>>
>>>     Without this patch:
>>>     starting USB...
>>>     USB0:   USB EHCI 1.00
>>>     scanning bus 0 for devices... 9 USB Device(s) found
>>>
>>>     time: 28.415 seconds
>>>
>>>     With this patch:
>>>     starting USB...
>>>     USB0:   USB EHCI 1.00
>>>     scanning bus 0 for devices... 9 USB Device(s) found
>>>
>>>     time: 24.003 seconds
>>>
>>>     So ~4.5 seconds of USB scanning time reduction.
>>>
>>>     Signed-off-by: Stefan Roese <sr at denx.de>
>>>     Cc: Simon Glass <sjg at chromium.org>
>>>     Acked-by: Hans de Goede <hdegoede at redhat.com>
>>>     Tested-by: Stephen Warren <swarren at nvidia.com>
>>>     Cc: Marek Vasut <marex at denx.de>
>>
>>
>> Might be that an initial delay is missing for your specific host
>> controller. IIRC, we had a similar issue with the SoCPFGA also
>> not detecting all USB sticks with my USB scanning patches applied.
>> Please take a look at this patch:
>>
>> 2bf352f0 [usb: dwc2: Add delay to fix the USB detection problem
>> on SoCFPGA]
>>
>> Perhaps you can do some tests with some initial delays as well?
>
> I have tried to increase delays in drivers/usb/musb-new/musb_uboot.c
> and add delay in drivers/usb/musb-new/musb_dsps.c->dsps_musb_init(),
> but no luck.
>
> @Felipe, @Mugunthan any idea?

I made some more tests with various USB drives. All in all I have
tried 4 devices:

with delays:

* Transcend 4GB: not detected
* Transcend 16GB (USB 3.0): detected
* Super Talent Express DUO USB 3.0: detected
* DataTraveler 2GB: detected

without delays:

* Transcend 4GB: not detected
* Transcend 16GB (USB 3.0): detected
* Super Talent Express DUO USB 3.0: not detected
* DataTraveler 2GB: detected

So removing these delays reduces the number of working USB drives.

Yegor


More information about the U-Boot mailing list