Skip to content

Commit

Permalink
usb: dwc3: meson-g12a: Disable the regulator in the error handling pa…
Browse files Browse the repository at this point in the history
…th of the probe

commit 1d0d3d8 upstream.

If an error occurs after a successful 'regulator_enable()' call,
'regulator_disable()' must be called.

Fix the error handling path of the probe accordingly.

The remove function doesn't need to be fixed, because the
'regulator_disable()' call is already hidden in 'dwc3_meson_g12a_suspend()'
which is called via 'pm_runtime_set_suspended()' in the remove function.

Fixes: c999933 ("usb: dwc3: Add Amlogic G12A DWC3 glue")
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/79df054046224bbb0716a8c5c2082650290eec86.1621616013.git.christophe.jaillet@wanadoo.fr
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
tititiou36 authored and gregkh committed Jun 16, 2021
1 parent 750a0d7 commit 2af93b4
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/usb/dwc3/dwc3-meson-g12a.c
Expand Up @@ -775,13 +775,13 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev)

ret = priv->drvdata->usb_init(priv);
if (ret)
goto err_disable_clks;
goto err_disable_regulator;

/* Init PHYs */
for (i = 0 ; i < PHY_COUNT ; ++i) {
ret = phy_init(priv->phys[i]);
if (ret)
goto err_disable_clks;
goto err_disable_regulator;
}

/* Set PHY Power */
Expand Down Expand Up @@ -819,6 +819,10 @@ static int dwc3_meson_g12a_probe(struct platform_device *pdev)
for (i = 0 ; i < PHY_COUNT ; ++i)
phy_exit(priv->phys[i]);

err_disable_regulator:
if (priv->vbus)
regulator_disable(priv->vbus);

err_disable_clks:
clk_bulk_disable_unprepare(priv->drvdata->num_clks,
priv->drvdata->clks);
Expand Down

0 comments on commit 2af93b4

Please sign in to comment.