diff mbox series

[-next,2/3] spi: geni-qcom: Undo runtime PM changes at driver exit time

Message ID 20240904021943.2076343-3-ruanjinjie@huawei.com (mailing list archive)
State Superseded
Headers show
Series spi: geni-qcom: Undo runtime PM changes at driver exit time | expand

Commit Message

Jinjie Ruan Sept. 4, 2024, 2:19 a.m. UTC
It's important to undo pm_runtime_use_autosuspend() with
pm_runtime_dont_use_autosuspend() at driver exit time unless driver
initially enabled pm_runtime with devm_pm_runtime_enable()
(which handles it for you).

Hence, switch to devm_pm_runtime_enable() to fix it.

Fixes: cfdab2cd85ec ("spi: spi-geni-qcom: Set an autosuspend delay of 250 ms")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 drivers/spi/spi-geni-qcom.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

Comments

Doug Anderson Sept. 4, 2024, 6:12 p.m. UTC | #1
Hi,

On Tue, Sep 3, 2024 at 7:11 PM Jinjie Ruan <ruanjinjie@huawei.com> wrote:
>
> It's important to undo pm_runtime_use_autosuspend() with
> pm_runtime_dont_use_autosuspend() at driver exit time unless driver
> initially enabled pm_runtime with devm_pm_runtime_enable()
> (which handles it for you).
>
> Hence, switch to devm_pm_runtime_enable() to fix it.
>
> Fixes: cfdab2cd85ec ("spi: spi-geni-qcom: Set an autosuspend delay of 250 ms")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>  drivers/spi/spi-geni-qcom.c | 13 +++++--------
>  1 file changed, 5 insertions(+), 8 deletions(-)

Given that this is a "Fix" it should be the first patch in the series.
Your ${SUBJECT} should also not contain "-next". Not only is that not
a convention for the SPI tree (that I'm aware of) it also is probably
wrong since fixes should usually get queued to an earlier tree...

As per my response to patch #1 in your series, the pm_runtime fix also
needs to be first in your series for correctness.


> @@ -1153,10 +1153,9 @@ static int spi_geni_probe(struct platform_device *pdev)
>                 goto spi_geni_release_dma;
>
>         return 0;
> +

Unrelated whitespace change?


-Doug
diff mbox series

Patch

diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c
index 77eb874e4f54..e5bece7be892 100644
--- a/drivers/spi/spi-geni-qcom.c
+++ b/drivers/spi/spi-geni-qcom.c
@@ -1110,25 +1110,25 @@  static int spi_geni_probe(struct platform_device *pdev)
 	spin_lock_init(&mas->lock);
 	pm_runtime_use_autosuspend(&pdev->dev);
 	pm_runtime_set_autosuspend_delay(&pdev->dev, 250);
-	pm_runtime_enable(dev);
+	devm_pm_runtime_enable(dev);
 
 	if (device_property_read_bool(&pdev->dev, "spi-slave"))
 		spi->target = true;
 
 	ret = geni_icc_get(&mas->se, NULL);
 	if (ret)
-		goto spi_geni_probe_runtime_disable;
+		return ret;
 	/* Set the bus quota to a reasonable value for register access */
 	mas->se.icc_paths[GENI_TO_CORE].avg_bw = Bps_to_icc(CORE_2X_50_MHZ);
 	mas->se.icc_paths[CPU_TO_GENI].avg_bw = GENI_DEFAULT_BW;
 
 	ret = geni_icc_set_bw(&mas->se);
 	if (ret)
-		goto spi_geni_probe_runtime_disable;
+		return ret;
 
 	ret = spi_geni_init(mas);
 	if (ret)
-		goto spi_geni_probe_runtime_disable;
+		return ret;
 
 	/*
 	 * check the mode supported and set_cs for fifo mode only
@@ -1153,10 +1153,9 @@  static int spi_geni_probe(struct platform_device *pdev)
 		goto spi_geni_release_dma;
 
 	return 0;
+
 spi_geni_release_dma:
 	spi_geni_release_dma_chan(mas);
-spi_geni_probe_runtime_disable:
-	pm_runtime_disable(dev);
 	return ret;
 }
 
@@ -1169,8 +1168,6 @@  static void spi_geni_remove(struct platform_device *pdev)
 	spi_unregister_controller(spi);
 
 	spi_geni_release_dma_chan(mas);
-
-	pm_runtime_disable(&pdev->dev);
 }
 
 static int __maybe_unused spi_geni_runtime_suspend(struct device *dev)