On Thu, Dec 04, 2025 at 03:11:26PM +0000, Mark Brown wrote:
On Thu, Dec 04, 2025 at 08:05:30AM -0600, Nishanth Menon wrote:
The clock is already turned off by the runtime-PM suspend callback, so an extra clk_disable*_unprepare() is only correct when runtime-PM support is not in use.
Right, I'm pretty sure that's where the extra disable is coming from. The pm_runtime_set_active() further up the function is looking rather suspect here.
qspi_setup_flash() is just reading DT data, it's not actually interacting with the hardware at all, so I think we can sidestep the immediate issue by just moving it to where we parse the DT for the controller. It's not fixing the actual issue with the missing/extra clock reference but it does get us back to where we were:
diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c index af6d050da1c8..bdbeef05cd72 100644 --- a/drivers/spi/spi-cadence-quadspi.c +++ b/drivers/spi/spi-cadence-quadspi.c @@ -1845,6 +1845,12 @@ static int cqspi_probe(struct platform_device *pdev) return -ENODEV; }
+ ret = cqspi_setup_flash(cqspi); + if (ret) { + dev_err(dev, "failed to setup flash parameters %d\n", ret); + return ret; + } + /* Obtain QSPI clock. */ cqspi->clk = devm_clk_get(dev, NULL); if (IS_ERR(cqspi->clk)) { @@ -1988,12 +1994,6 @@ static int cqspi_probe(struct platform_device *pdev) pm_runtime_get_noresume(dev); }
- ret = cqspi_setup_flash(cqspi); - if (ret) { - dev_err(dev, "failed to setup flash parameters %d\n", ret); - goto probe_setup_failed; - } - host->num_chipselect = cqspi->num_chipselect;
if (ddata && (ddata->quirks & CQSPI_SUPPORT_DEVICE_RESET))
I'll send this out later assuming nothing blows up in my CI and nobody else notices an issue.