Hi Neil, On Tue, Mar 24, 2020 at 11:20 AM Neil Armstrong wrote: [...] > @@ -195,23 +239,9 @@ static int dwc3_meson_g12a_usb2_init(struct dwc3_meson_g12a *priv) > if (!strstr(priv->drvdata->phy_names[i], "usb2")) > continue; > > - regmap_update_bits(priv->u2p_regmap[i], U2P_R0, > - U2P_R0_POWER_ON_RESET, > - U2P_R0_POWER_ON_RESET); > - > - if (priv->drvdata->otg_switch_supported && i == USB2_OTG_PHY) { > - regmap_update_bits(priv->u2p_regmap[i], U2P_R0, > - U2P_R0_ID_PULLUP | U2P_R0_DRV_VBUS, > - U2P_R0_ID_PULLUP | U2P_R0_DRV_VBUS); > - > - dwc3_meson_g12a_usb2_set_mode(priv, i, > - priv->otg_phy_mode); > - } else > - dwc3_meson_g12a_usb2_set_mode(priv, i, > - PHY_MODE_USB_HOST); > - > - regmap_update_bits(priv->u2p_regmap[i], U2P_R0, > - U2P_R0_POWER_ON_RESET, 0); > + ret = priv->drvdata->usb2_init_phy(priv, i, mode); > + if (ret) > + return ret; > } this doesn't compile for me, it complains that mode is undefined I believe we need something like the attached patch on top. [...] > @@ -580,7 +612,9 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) > /* Get dr_mode */ > priv->otg_mode = usb_get_dr_mode(dev); > > - dwc3_meson_g12a_usb_init(priv); > + ret = dwc3_meson_g12a_usb_init(priv); > + if (ret) > + goto err_disable_clks; this looks like an unrelated fix, dwc3_meson_g12a_usb_init has always returned int (as potential error) also the same check is missing in dwc3_meson_g12a_resume can you please move this to a separate patch with the appropriate tag: Fixes: c99993376f72ca ("usb: dwc3: Add Amlogic G12A DWC3 glue") Martin