[PATCH] USB: dwc2: allow usb start even if usbphy is not found

Jonas Karlman jonas at kwiboo.se
Mon Mar 16 11:04:13 CET 2026


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?

  => 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?

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