]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
spi: cadence-qspi: Try hard to disable the clocks
authorMiquel Raynal (Schneider Electric) <miquel.raynal@bootlin.com>
Thu, 22 Jan 2026 15:13:34 +0000 (16:13 +0100)
committerMark Brown <broonie@kernel.org>
Wed, 28 Jan 2026 20:41:25 +0000 (20:41 +0000)
In the remove path, we should try hard to perform all steps as we simply
cannot fail.

The "no runtime PM" quirk must only alter the state of the RPM core, but
the clocks should still be disabled if that is possible. Move the
disable call outside of the RPM quirk.

Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Miquel Raynal (Schneider Electric) <miquel.raynal@bootlin.com>
Tested-by: Santhosh Kumar K <s-k6@ti.com>
Link: https://patch.msgid.link/20260122-schneider-6-19-rc1-qspi-v4-9-f9c21419a3e6@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-cadence-quadspi.c

index 9c2b2b8649def2924fb3729fcf05bd1ebd40864d..075505f0abcf1bb4d80bcbac0e234c74e8b9ccba 100644 (file)
@@ -2038,6 +2038,7 @@ static void cqspi_remove(struct platform_device *pdev)
        const struct cqspi_driver_platdata *ddata;
        struct cqspi_st *cqspi = platform_get_drvdata(pdev);
        struct device *dev = &pdev->dev;
+       int ret = 0;
 
        ddata = of_device_get_match_data(dev);
 
@@ -2057,8 +2058,10 @@ static void cqspi_remove(struct platform_device *pdev)
                cqspi_jh7110_disable_clk(pdev, cqspi);
 
        if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM)))
-               if (pm_runtime_get_sync(&pdev->dev) >= 0)
-                       clk_disable(cqspi->clk);
+               ret = pm_runtime_get_sync(&pdev->dev);
+
+       if (ret >= 0)
+               clk_disable(cqspi->clk);
 
        if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) {
                pm_runtime_put_sync(&pdev->dev);