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

neil.armstrong at linaro.org neil.armstrong at linaro.org
Tue Oct 11 09:12:54 CEST 2022


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,

Neil



More information about the U-Boot mailing list