| From edd58cb8fb0caa6476c8d899e4b3a8124a1e7f8f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 22 Jan 2026 16:13:34 +0100 |
| Subject: spi: cadence-qspi: Try hard to disable the clocks |
| |
| From: Miquel Raynal (Schneider Electric) <miquel.raynal@bootlin.com> |
| |
| [ Upstream commit 612227b392eed94a3398dc03334a84a699a82276 ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/spi/spi-cadence-quadspi.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c |
| index ab74808debe98..51ed666a0fdd1 100644 |
| --- a/drivers/spi/spi-cadence-quadspi.c |
| +++ b/drivers/spi/spi-cadence-quadspi.c |
| @@ -2040,6 +2040,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); |
| |
| @@ -2059,8 +2060,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); |
| -- |
| 2.51.0 |
| |