Skip to content

Commit 9df7d25

Browse files
jhovoldgregkh
authored andcommitted
spi: ti-qspi: fix controller deregistration
commit 0c18a1b upstream. Make sure to deregister the controller before disabling underlying resources like clocks during driver unbind. Note that the controller is suspended before disabling and releasing resources since commit 3ac066e ("spi: spi-ti-qspi: Suspend the queue before removing the device") which avoids issues like unclocked accesses but prevents SPI device drivers from doing I/O during deregistration. Fixes: 3b3a800 ("spi: ti-qspi: one only one interrupt handler") Cc: stable@vger.kernel.org # 3.13 Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://patch.msgid.link/20260410081757.503099-24-johan@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 9aea3d4 commit 9df7d25

1 file changed

Lines changed: 6 additions & 8 deletions

File tree

drivers/spi/spi-ti-qspi.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ static int ti_qspi_probe(struct platform_device *pdev)
889889
qspi->mmap_enabled = false;
890890
qspi->current_cs = -1;
891891

892-
ret = devm_spi_register_controller(&pdev->dev, host);
892+
ret = spi_register_controller(host);
893893
if (!ret)
894894
return 0;
895895

@@ -904,19 +904,17 @@ static int ti_qspi_probe(struct platform_device *pdev)
904904
static void ti_qspi_remove(struct platform_device *pdev)
905905
{
906906
struct ti_qspi *qspi = platform_get_drvdata(pdev);
907-
int rc;
908907

909-
rc = spi_controller_suspend(qspi->host);
910-
if (rc) {
911-
dev_alert(&pdev->dev, "spi_controller_suspend() failed (%pe)\n",
912-
ERR_PTR(rc));
913-
return;
914-
}
908+
spi_controller_get(qspi->host);
909+
910+
spi_unregister_controller(qspi->host);
915911

916912
pm_runtime_put_sync(&pdev->dev);
917913
pm_runtime_disable(&pdev->dev);
918914

919915
ti_qspi_dma_cleanup(qspi);
916+
917+
spi_controller_put(qspi->host);
920918
}
921919

922920
static const struct dev_pm_ops ti_qspi_pm_ops = {

0 commit comments

Comments
 (0)