Hi Neil, On Tue, Mar 24, 2020 at 11:20 AM Neil Armstrong <narmstrong@xxxxxxxxxxxx> 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
diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c b/drivers/usb/dwc3/dwc3-meson-g12a.c index 74d07ded8a7e..d2a60e40061d 100644 --- a/drivers/usb/dwc3/dwc3-meson-g12a.c +++ b/drivers/usb/dwc3/dwc3-meson-g12a.c @@ -233,12 +233,19 @@ static int dwc3_meson_g12a_usb2_init(struct dwc3_meson_g12a *priv) priv->otg_phy_mode = PHY_MODE_USB_HOST; for (i = 0; i < priv->drvdata->num_phys; ++i) { + enum phy_mode mode; + if (!priv->phys[i]) continue; if (!strstr(priv->drvdata->phy_names[i], "usb2")) continue; + if (priv->drvdata->otg_switch_supported && i == USB2_OTG_PHY) + mode = priv->otg_phy_mode; + else + mode = PHY_MODE_USB_HOST; + ret = priv->drvdata->usb2_init_phy(priv, i, mode); if (ret) return ret;