Unverified Commit 8735696a authored by Mattijs Korpershoek's avatar Mattijs Korpershoek Committed by Mark Brown
Browse files

spi: cadence-quadspi: Fix pm_runtime unbalance on dma EPROBE_DEFER



In csqspi_probe(), when cqspi_request_mmap_dma() returns -EPROBE_DEFER,
we handle the error by jumping to probe_setup_failed.
In that label, we call pm_runtime_disable(), even if we never called
pm_runtime_enable() before.

Because of this, the driver cannot probe:

[    2.690018] cadence-qspi 47040000.spi: No Rx DMA available
[    2.699735] spi-nor spi0.0: resume failed with -13
[    2.699741] spi-nor: probe of spi0.0 failed with error -13

Only call pm_runtime_disable() if it was enabled by adding a new
label to handle cqspi_request_mmap_dma() failures.

Fixes: b07f349d ("spi: spi-cadence-quadspi: Fix pm runtime unbalance")
Signed-off-by: default avatarMattijs Korpershoek <mkorpershoek@kernel.org>
Reviewed-by: default avatarDan Carpenter <dan.carpenter@linaro.org>
Link: https://patch.msgid.link/20251009-cadence-quadspi-fix-pm-runtime-v2-1-8bdfefc43902@kernel.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 4f38da1f
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1995,7 +1995,7 @@ static int cqspi_probe(struct platform_device *pdev)
	if (cqspi->use_direct_mode) {
		ret = cqspi_request_mmap_dma(cqspi);
		if (ret == -EPROBE_DEFER)
			goto probe_setup_failed;
			goto probe_dma_failed;
	}

	if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) {
@@ -2019,9 +2019,10 @@ static int cqspi_probe(struct platform_device *pdev)

	return 0;
probe_setup_failed:
	cqspi_controller_enable(cqspi, 0);
	if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM)))
		pm_runtime_disable(dev);
probe_dma_failed:
	cqspi_controller_enable(cqspi, 0);
probe_reset_failed:
	if (cqspi->is_jh7110)
		cqspi_jh7110_disable_clk(pdev, cqspi);