Message ID | 20201108113535.1819952-1-linus.walleij@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/mcde: Fix unbalanced regulator | expand |
On Sun, Nov 08, 2020 at 12:35:35PM +0100, Linus Walleij wrote: > Since we now turn off the EPOD regulator to reset the > hardware, we need to balance the regulators after that > point. If registering the master fails we only need > to disable one regulator. Fix this by open-coding > this leg of the error path. > > Cc: Stephan Gerhold <stephan@gerhold.net> > Fixes: c4842d4d0f74 ("drm/mcde: Fix display pipeline restart") > Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Looked for a devm variant of regulator_enable() but they do not seem to exist. So the way the patch does it seems the best way. Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Sam
diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_drv.c index c592957ed07f..92f8bd907193 100644 --- a/drivers/gpu/drm/mcde/mcde_drv.c +++ b/drivers/gpu/drm/mcde/mcde_drv.c @@ -413,7 +413,13 @@ static int mcde_probe(struct platform_device *pdev) match); if (ret) { dev_err(dev, "failed to add component master\n"); - goto clk_disable; + /* + * The EPOD regulator is already disabled at this point so some + * special errorpath code is needed + */ + clk_disable_unprepare(mcde->mcde_clk); + regulator_disable(mcde->vana); + return ret; } return 0;
Since we now turn off the EPOD regulator to reset the hardware, we need to balance the regulators after that point. If registering the master fails we only need to disable one regulator. Fix this by open-coding this leg of the error path. Cc: Stephan Gerhold <stephan@gerhold.net> Fixes: c4842d4d0f74 ("drm/mcde: Fix display pipeline restart") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> --- drivers/gpu/drm/mcde/mcde_drv.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)