Skip to content

Commit f1eb4e7

Browse files
Anurag Duttabroonie
authored andcommitted
spi: spi-cadence-quadspi: Enable pm runtime earlier to avoid imbalance
The "probe_setup_failed" label calls pm_runtime_disable(), but pm_runtime_enable() was placed after a possible jump to this label. When cqspi_setup_flash() fails, control jumps to the label without pm_runtime_enable() being called, leading to unbalanced PM runtime reference counting. Move pm_runtime_enable() and associated calls above the first possible branch to "probe_setup_failed" to ensure balanced enable/disable calls across all error paths. Fixes: 30dbc1c ("spi: cadence-qspi: defer runtime support on socfpga if reset bit is enabled") Signed-off-by: Anurag Dutta <a-dutta@ti.com> Link: https://patch.msgid.link/20251105161146.2019090-2-a-dutta@ti.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 66e9feb commit f1eb4e7

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

drivers/spi/spi-cadence-quadspi.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1981,6 +1981,13 @@ static int cqspi_probe(struct platform_device *pdev)
19811981
cqspi->current_cs = -1;
19821982
cqspi->sclk = 0;
19831983

1984+
if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) {
1985+
pm_runtime_enable(dev);
1986+
pm_runtime_set_autosuspend_delay(dev, CQSPI_AUTOSUSPEND_TIMEOUT);
1987+
pm_runtime_use_autosuspend(dev);
1988+
pm_runtime_get_noresume(dev);
1989+
}
1990+
19841991
ret = cqspi_setup_flash(cqspi);
19851992
if (ret) {
19861993
dev_err(dev, "failed to setup flash parameters %d\n", ret);
@@ -1998,13 +2005,6 @@ static int cqspi_probe(struct platform_device *pdev)
19982005
goto probe_dma_failed;
19992006
}
20002007

2001-
if (!(ddata && (ddata->quirks & CQSPI_DISABLE_RUNTIME_PM))) {
2002-
pm_runtime_enable(dev);
2003-
pm_runtime_set_autosuspend_delay(dev, CQSPI_AUTOSUSPEND_TIMEOUT);
2004-
pm_runtime_use_autosuspend(dev);
2005-
pm_runtime_get_noresume(dev);
2006-
}
2007-
20082008
ret = spi_register_controller(host);
20092009
if (ret) {
20102010
dev_err(&pdev->dev, "failed to register SPI ctlr %d\n", ret);

0 commit comments

Comments
 (0)