]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
spi: aspeed-smc: fix controller deregistration
authorJohan Hovold <johan@kernel.org>
Thu, 9 Apr 2026 12:04:01 +0000 (14:04 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 9 Apr 2026 19:08:00 +0000 (20:08 +0100)
Make sure to deregister the controller before disabling it to allow
SPI device drivers to do I/O during deregistration.

Fixes: e3228ed92893 ("spi: spi-mem: Convert Aspeed SMC driver to spi-mem")
Cc: stable@vger.kernel.org # 5.19
Cc: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260409120419.388546-3-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-aspeed-smc.c

index 9c286e534bf0e362cefb23072cee919e9f1285c8..c21323e07d3cad5d0e1997022311e9d7408ab10b 100644 (file)
@@ -972,7 +972,7 @@ static int aspeed_spi_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        aspi = spi_controller_get_devdata(ctlr);
-       platform_set_drvdata(pdev, aspi);
+       platform_set_drvdata(pdev, ctlr);
        aspi->data = data;
        aspi->dev = dev;
 
@@ -1021,7 +1021,7 @@ static int aspeed_spi_probe(struct platform_device *pdev)
                return ret;
        }
 
-       ret = devm_spi_register_controller(dev, ctlr);
+       ret = spi_register_controller(ctlr);
        if (ret)
                dev_err(&pdev->dev, "spi_register_controller failed\n");
 
@@ -1030,7 +1030,10 @@ static int aspeed_spi_probe(struct platform_device *pdev)
 
 static void aspeed_spi_remove(struct platform_device *pdev)
 {
-       struct aspeed_spi *aspi = platform_get_drvdata(pdev);
+       struct spi_controller *ctlr = platform_get_drvdata(pdev);
+       struct aspeed_spi *aspi = spi_controller_get_devdata(ctlr);
+
+       spi_unregister_controller(ctlr);
 
        aspeed_spi_enable(aspi, false);
 }