[PATCH v2 2/2] mach-meson: g12a: reset usb controller in reset_misc()

Mattijs Korpershoek mkorpershoek at baylibre.com
Tue Oct 11 18:36:26 CEST 2022


On Tue, Oct 11, 2022 at 17:39, Marek Vasut <marex at denx.de> wrote:

> On 10/11/22 09:12, neil.armstrong at linaro.org wrote:
>> On 10/10/2022 19:16, Marek Vasut wrote:
>>> On 10/10/22 18:22, Neil Armstrong wrote:
>>>> Hi,
>>>
>>> Hi,
>>>
>>>> On 10/10/2022 18:09, Marek Vasut wrote:
>>>>> On 10/7/22 11:38, Mattijs Korpershoek wrote:
>>>>>> On some g12a boards like the VIM3L and the SEI610, with some
>>>>>> USB cables/hosts, there is a long (5s) delay before
>>>>>> between "fastboot reboot" and the host detecting a USB reset.
>>>>>>
>>>>>> This breaks tools relying on "fastboot reboot fastboot" which assume
>>>>>> that 1s after the command send, the board should disconnect on usb.
>>>>>>
>>>>>> To reproduce, enable fastboot in U-Boot console:
>>>>>> => fastboot usb 0
>>>>>>
>>>>>> Then, on the host, run:
>>>>>>    # echo "running fastboot reboot bootloader" > /dev/kmsg && 
>>>>>> fastboot reboot bootloader
>>>>>>    Rebooting into bootloader                          OKAY [  0.003s]
>>>>>>    Finished. Total time: 3.033s
>>>>>>
>>>>>>    [54074.251551] running fastboot reboot bootloader
>>>>>>    ... there is a delay of 5s before we detect a disconnection ...
>>>>>>    [54079.041238] usb 1-7.4: USB disconnect, device number 72
>>>>>>    [54079.239625] usb 1-7.4: new high-speed USB device number 73 
>>>>>> using xhci_hcd
>>>>>>    [54079.359103] usb 1-7.4: New USB device found, idVendor=1b8e, 
>>>>>> idProduct=fada, bcdDevice= 2.27
>>>>>>    [54079.359110] usb 1-7.4: New USB device strings: Mfr=1, 
>>>>>> Product=2, SerialNumber=3
>>>>>>    [54079.359112] usb 1-7.4: Product: USB download gadget
>>>>>>    [54079.359114] usb 1-7.4: Manufacturer: U-Boot
>>>>>>    [54079.359116] usb 1-7.4: SerialNumber: C8631470CC41
>>>>>>
>>>>>> Note: this does not happen when we use the RST button on the board.
>>>>>>
>>>>>> To fix this, re-implement a platform reset which calls
>>>>>> board_usb_cleanup() before resetting the board.
>>>>>
>>>>> Shouldn't that call happen somewhere in drivers/usb/ .remove() 
>>>>> callback instead ?
>>>>
>>>> No since dwc2 isn't DM yet, handling is done in arch/arm/mac-meson 
>>>> board_usb_*() for now
>>>
>>> Seems DWC2 is DM:
>>>
>>> $ git grep U_BOOT_DRIVER drivers/usb/ | grep dwc2
>>> drivers/usb/gadget/dwc2_udc_otg.c:U_BOOT_DRIVER(dwc2_udc_otg) = {
>>> drivers/usb/host/dwc2.c:U_BOOT_DRIVER(usb_dwc2) = {
>>>
>> 
>> My bad, seems I missed the dwc2 otg DM wagon...
>> 
>> We will need to switch to this now then, thanks,
>
> Thanks. I picked 1/2 at least, so you can only focus on 2/2 and send 
> just that.

Yes, thank you for picking 1/2

Neil, do you want me to look into converting the meson arch which uses
DWC2 to DM?
I'm not sure I'm confident to do these changes properly but I'm willing
to give it a try.
If you plan to do it yourself, fine by me. I'll respin 2/2 after that.


More information about the U-Boot mailing list