Message ID | 20191118114135.25666-1-hslester96@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | usb: dwc3: meson-g12a: add missed regulator_disable | expand |
On 18/11/2019 12:41, Chuhong Yuan wrote: > The driver forgets to disable the regulator in probe failure and remove. > Add the missed calls to fix it. > > Signed-off-by: Chuhong Yuan <hslester96@gmail.com> Fixes: f90db10779ad ("usb: dwc3: meson-g12a: Add support for IRQ based OTG switching") > --- > drivers/usb/dwc3/dwc3-meson-g12a.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c b/drivers/usb/dwc3/dwc3-meson-g12a.c > index 8a3ec1a951fe..d9723d1ad8eb 100644 > --- a/drivers/usb/dwc3/dwc3-meson-g12a.c > +++ b/drivers/usb/dwc3/dwc3-meson-g12a.c > @@ -458,7 +458,7 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) > dwc3_meson_g12a_irq_thread, > IRQF_ONESHOT, pdev->name, priv); > if (ret) > - return ret; > + goto err_regulator_disable; > } > > dwc3_meson_g12a_usb_init(priv); > @@ -467,7 +467,7 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) > for (i = 0 ; i < PHY_COUNT ; ++i) { > ret = phy_init(priv->phys[i]); > if (ret) > - return ret; > + goto err_regulator_disable; > } > > /* Set PHY Power */ > @@ -517,7 +517,9 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) > err_phys_exit: > for (i = 0 ; i < PHY_COUNT ; ++i) > phy_exit(priv->phys[i]); > - > +err_regulator_disable: > + if (priv->vbus) > + regulator_disable(priv->vbus); > return ret; > } > > @@ -536,6 +538,9 @@ static int dwc3_meson_g12a_remove(struct platform_device *pdev) > phy_exit(priv->phys[i]); > } > > + if (priv->vbus) > + regulator_disable(priv->vbus); > + > pm_runtime_disable(dev); > pm_runtime_put_noidle(dev); > pm_runtime_set_suspended(dev); > Acked-by: Neil Armstrong <narmstrong@baylibre.com>
diff --git a/drivers/usb/dwc3/dwc3-meson-g12a.c b/drivers/usb/dwc3/dwc3-meson-g12a.c index 8a3ec1a951fe..d9723d1ad8eb 100644 --- a/drivers/usb/dwc3/dwc3-meson-g12a.c +++ b/drivers/usb/dwc3/dwc3-meson-g12a.c @@ -458,7 +458,7 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) dwc3_meson_g12a_irq_thread, IRQF_ONESHOT, pdev->name, priv); if (ret) - return ret; + goto err_regulator_disable; } dwc3_meson_g12a_usb_init(priv); @@ -467,7 +467,7 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) for (i = 0 ; i < PHY_COUNT ; ++i) { ret = phy_init(priv->phys[i]); if (ret) - return ret; + goto err_regulator_disable; } /* Set PHY Power */ @@ -517,7 +517,9 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev) err_phys_exit: for (i = 0 ; i < PHY_COUNT ; ++i) phy_exit(priv->phys[i]); - +err_regulator_disable: + if (priv->vbus) + regulator_disable(priv->vbus); return ret; } @@ -536,6 +538,9 @@ static int dwc3_meson_g12a_remove(struct platform_device *pdev) phy_exit(priv->phys[i]); } + if (priv->vbus) + regulator_disable(priv->vbus); + pm_runtime_disable(dev); pm_runtime_put_noidle(dev); pm_runtime_set_suspended(dev);
The driver forgets to disable the regulator in probe failure and remove. Add the missed calls to fix it. Signed-off-by: Chuhong Yuan <hslester96@gmail.com> --- drivers/usb/dwc3/dwc3-meson-g12a.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)