[PATCH] USB: dwc2: allow usb start even if usbphy is not found
Marius Dinu
m95d+git at psihoexpert.ro
Tue Mar 17 10:20:45 CET 2026
On Mon, 2026-03-16 22.41.08 ++0100, Jonas Karlman wrote:
> Hi Marius,
>
> On 3/16/2026 4:12 PM, Marius Dinu wrote:
> > On Mon, 2026-03-16 11.04.13 ++0100, Jonas Karlman wrote:
> >> Hi Marius,
> >>
> >> On 3/16/2026 10:26 AM, Marius Dinu wrote:
> >>> RK3288 uses rockchip_usb2_phy, but that driver doesn't register iself
> >>> as a usbphy driver and "usb start" fails with this error:
> >>>
> >>> drivers/usb/host/dwc2.c:1254- dwc2_setup_phy() dwc2_usb usb at ff580000:
> >>> Failed to get USB PHY: -19.
> >>>
> >>> Until a proper fix is made for rockchip_usb2_phy, this patch allows
> >>> usb start to continue even if usbphy is not found.
> >>>
> >>> Tested on Asus TinkerBoard.
> >>
> >> I am not seeing this issue on my TinkerBoard, what U-Boot version are
> >> you testing and have you made any config changes compared to
> >> tinker-rk3288_defconfig?
> >
> > I'm using the github master branch pulled today + lots and lots of changes
> > in config. I didn't make a diff, but I expect it to be very very far from
> > tinker-rk3288_defconfig.
> >
> >>
> >> => usb start
> >> starting USB...
> >> USB DWC2
> >> USB DWC2
> >> Bus usb at ff540000: 2 USB Device(s) found
> >> Bus usb at ff580000: 1 USB Device(s) found
> >> scanning usb for storage devices... 0 Storage Device(s) found
> >>
> >> => dm tree -e usb
> >> Class Seq Probed Driver Name
> >> -----------------------------------------------------------
> >> usb 0 [ + ] dwc2_usb usb at ff540000
> >> usb_hub 0 [ + ] usb_hub `-- usb_hub
> >> usb_hub 1 [ + ] usb_hub `-- usb_hub
> >> usb 1 [ + ] dwc2_usb usb at ff580000
> >> usb_hub 2 [ + ] usb_hub `-- usb_hub
> >>
> >> Have something changed recently that broke this?
> >
> > Yes! but not exactly recently...
> > It broke since commit e17a4bf198510693967644c331ab621fc41ea8b5.
> > Here's a log on my system without my proposed fix. This is a log that I
> > saved while I was investigating the failed USB, about a year ago, I think.
> > But I checked and it still fails with today's git master, I just don't have
> > the time to enable all the debug options again. It's still ret -19 error.
>
> I did a new runtime test on a Tinker Board R2.0 using master with
> tinker-rk3288_defconfig and I am not able to reproduce any issue. Maybe
> your config changes introduce a condition that causes an issue? Please
> share your savedefconfig.
>
>
>
> I have re-run some tests with different Kconfig options related to
> GADGET and DWC2 and are not able to reproduce your issue.
>
> As mentioned above, please share your config changes compared to tinker
> defconfig, maybe you have some Kconfig option enabled that make DWC2
> work differently?
>
>
> U-Boot SPL 2026.04-rc4-00007-g010855c5005e (Mar 16 2026 - 21:33:53 +0000)
> Trying to boot from RAM
> ## Checking hash(es) for config conf-1 ... OK
> ## Checking hash(es) for Image firmware-1 ... crc32+ OK
> ## Checking hash(es) for Image fdt-1 ... crc32+ OK
> spl_perform_arch_fixups: could not map BootROM boot device to ofpath
>
>
> U-Boot 2026.04-rc4-00007-g010855c5005e (Mar 16 2026 - 21:33:53 +0000)
>
> SoC: Rockchip rk3288
> Reset cause: POR
> Model: Rockchip RK3288 Asus Tinker Board
> DRAM: 2 GiB
> PMIC: RK808
> Core: 221 devices, 27 uclasses, devicetree: separate
> MMC: mmc at ff0c0000: 1, mmc at ff0d0000: 2
> Loading Environment from MMC... Card did not respond to voltage select! : -110
> *** Warning - No block device, using default environment
>
> In: serial,usbkbd
> Out: serial,vidconsole
> Err: serial,vidconsole
> Net: eth0: ethernet at ff290000
>
> Hit any key to stop autoboot: 0
> => usb start
> starting USB...
> USB DWC2
> USB DWC2
> Bus usb at ff540000: 2 USB Device(s) found
> Bus usb at ff580000: 1 USB Device(s) found
> scanning usb for storage devices... 0 Storage Device(s) found
> => usb tree
> USB device tree:
> 1 Hub (480 Mb/s, 0mA)
> | U-Boot Root Hub
> |
> +-2 Hub (480 Mb/s, 100mA)
> USB2.0 Hub
>
> 1 Hub (480 Mb/s, 0mA)
> U-Boot Root Hub
>
> => dm tree -e usb
> Class Seq Probed Driver Name
> -----------------------------------------------------------
> usb 0 [ + ] dwc2_usb usb at ff540000
> usb_hub 0 [ + ] usb_hub `-- usb_hub
> usb_hub 1 [ + ] usb_hub `-- usb_hub
> usb 1 [ + ] dwc2_usb usb at ff580000
> usb_hub 2 [ + ] usb_hub `-- usb_hub
> pinconfig 130 [ ] pinconfig usb
> pinconfig 131 [ ] pinconfig |-- host-vbus-drv
> pinconfig 132 [ ] pinconfig `-- pwr-3g
> =>
>
> Regards,
> Jonas
I tested the tinkerboard defconfig. It does work. As far as I can tell, it
doesn't try to load the phy driver at all. The only significant difference
is that I didn't enable OTG/gadget in my config - it's just the usb-host
driver.
So the bug is still there, it's just that the OTG driver doesn't search for
a phy driver.
Marius
>
> >
> > Marius
> >
> > PS: There is a duplicate of this email sent from the wrong address. Sorry.
> >
> >>
> >> Anyway if something needs fixing it is probably rockchip_usb2_phy.
> >>
> >> Regards,
> >> Jonas
> >>
> >>>
> >>> Signed-off-by: Marius Dinu <m95d+git at psihoexpert.ro>
> >>> ---
> >>> drivers/usb/host/dwc2.c | 5 ++---
> >>> 1 file changed, 2 insertions(+), 3 deletions(-)
> >>>
> >>> diff --git a/drivers/usb/host/dwc2.c b/drivers/usb/host/dwc2.c
> >>> index 16f21fa9083..74d71f23d88 100644
> >>> --- a/drivers/usb/host/dwc2.c
> >>> +++ b/drivers/usb/host/dwc2.c
> >>> @@ -1329,7 +1329,7 @@ static int dwc2_usb_probe(struct udevice *dev)
> >>>
> >>> ret = dwc2_setup_phy(dev);
> >>> if (ret)
> >>> - return ret;
> >>> + dev_dbg(dev, "Failed to setup PHY: %d. Continuing anyway...\n", ret);
> >>>
> >>> return dwc2_init_common(dev, priv);
> >>> }
> >>> @@ -1345,8 +1345,7 @@ static int dwc2_usb_remove(struct udevice *dev)
> >>>
> >>> ret = dwc2_shutdown_phy(dev);
> >>> if (ret) {
> >>> - dev_dbg(dev, "Failed to shutdown USB PHY: %d.\n", ret);
> >>> - return ret;
> >>> + dev_dbg(dev, "Failed to shutdown USB PHY: %d. Continuing anyway...\n", ret);
> >>> }
> >>>
> >>> dwc2_uninit_common(priv->regs);
> >>
> >
>
More information about the U-Boot
mailing list