diff mbox series

[1/3] spi: atmel-quadspi: Don't leak clk enable count in pm resume

Message ID 20230317084232.142257-2-u.kleine-koenig@pengutronix.de (mailing list archive)
State Accepted
Commit c18bbac353ffed50be134b0a2a059a2bd540c503
Headers show
Series spi: atmel-quadspi: Convert to platform remove callback returning void | expand

Commit Message

Uwe Kleine-König March 17, 2023, 8:42 a.m. UTC
The pm resume call is supposed to enable two clocks. If the second enable
fails the callback reports failure but doesn't undo the first enable.

So call clk_disable() for the first clock when clk_enable() for the second
one fails.

Fixes: 4a2f83b7f780 ("spi: atmel-quadspi: add runtime pm support")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
---
 drivers/spi/atmel-quadspi.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Tudor Ambarus March 17, 2023, 10:01 a.m. UTC | #1
On 3/17/23 08:42, Uwe Kleine-König wrote:
> The pm resume call is supposed to enable two clocks. If the second enable
> fails the callback reports failure but doesn't undo the first enable.
> 
> So call clk_disable() for the first clock when clk_enable() for the second
> one fails.
> 
> Fixes: 4a2f83b7f780 ("spi: atmel-quadspi: add runtime pm support")
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>

Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>

> ---
>  drivers/spi/atmel-quadspi.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
> index f4632cb07495..0c6f80ddea57 100644
> --- a/drivers/spi/atmel-quadspi.c
> +++ b/drivers/spi/atmel-quadspi.c
> @@ -786,7 +786,11 @@ static int __maybe_unused atmel_qspi_runtime_resume(struct device *dev)
>  	if (ret)
>  		return ret;
>  
> -	return clk_enable(aq->qspick);
> +	ret = clk_enable(aq->qspick);
> +	if (ret)
> +		clk_disable(aq->pclk);
> +
> +	return ret;
>  }
>  
>  static const struct dev_pm_ops __maybe_unused atmel_qspi_pm_ops = {
diff mbox series

Patch

diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
index f4632cb07495..0c6f80ddea57 100644
--- a/drivers/spi/atmel-quadspi.c
+++ b/drivers/spi/atmel-quadspi.c
@@ -786,7 +786,11 @@  static int __maybe_unused atmel_qspi_runtime_resume(struct device *dev)
 	if (ret)
 		return ret;
 
-	return clk_enable(aq->qspick);
+	ret = clk_enable(aq->qspick);
+	if (ret)
+		clk_disable(aq->pclk);
+
+	return ret;
 }
 
 static const struct dev_pm_ops __maybe_unused atmel_qspi_pm_ops = {