On Mon, 9 Nov 2020 10:34:14 +0000 Russell King - ARM Linux admin wrote: > > > On Mon, Nov 09, 2020 at 09:59:53AM +0800, Jisheng Zhang wrote: > > diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c b/drivers/usb/dwc3/dwc3-meson-g12a.c > > index 417e05381b5d..83015bb7b926 100644 > > --- a/drivers/usb/dwc3/dwc3-meson-g12a.c > > +++ b/drivers/usb/dwc3/dwc3-meson-g12a.c > > @@ -702,7 +702,6 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) > > { > > struct dwc3_meson_g12a *priv; > > struct device *dev = &pdev->dev; > > - struct device_node *np = dev->of_node; > > void __iomem *base; > > int ret, i; > > > > @@ -794,7 +793,7 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) > > goto err_phys_power; > > } > > > > - ret = of_platform_populate(np, NULL, NULL, dev); > > + ret = devm_of_platform_populate(dev); > > if (ret) > > goto err_phys_power; > > > > @@ -832,8 +831,6 @@ static int dwc3_meson_g12a_remove(struct platform_device *pdev) > > if (priv->drvdata->otg_switch_supported) > > usb_role_switch_unregister(priv->role_switch); > > > > - of_platform_depopulate(dev); > > - > > for (i = 0 ; i < PHY_COUNT ; ++i) { > > phy_power_off(priv->phys[i]); > > phy_exit(priv->phys[i]); > > Does it matter that the order that things happen in > dwc3_meson_g12a_remove() is changed as a result of your patch? Was > the code relying on the platform devices being depopulated before > powering off the PHYs? ... > > Same here... and for anywhere else in this patch that you're deleting > a of_platform_depopulate(). oops, good question! I believe it's not safe to move the depopulate after the phy_* APIs. So please ignore this patch. > > You effectively are moving the call to of_platform_depopulate() *after* > the driver's .remove function has been called. > > -- >