Skip to content

Commit 0c18a1b

Browse files
jhovoldbroonie
authored andcommitted
spi: ti-qspi: fix controller deregistration
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>
1 parent ad7310e commit 0c18a1b

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
@@ -888,7 +888,7 @@ static int ti_qspi_probe(struct platform_device *pdev)
888888
qspi->mmap_enabled = false;
889889
qspi->current_cs = -1;
890890

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

@@ -903,19 +903,17 @@ static int ti_qspi_probe(struct platform_device *pdev)
903903
static void ti_qspi_remove(struct platform_device *pdev)
904904
{
905905
struct ti_qspi *qspi = platform_get_drvdata(pdev);
906-
int rc;
907906

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

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

918914
ti_qspi_dma_cleanup(qspi);
915+
916+
spi_controller_put(qspi->host);
919917
}
920918

921919
static const struct dev_pm_ops ti_qspi_pm_ops = {

0 commit comments

Comments
 (0)