From 90bffa1e45147c23496c1ec00fbd1c1913999069 Mon Sep 17 00:00:00 2001 From: Johan Hovold Date: Wed, 13 May 2026 14:20:50 -0400 Subject: [PATCH] spi: sun4i: fix controller deregistration [ Upstream commit 42108a2f03e0fdeabe9d02d085bdb058baa1189f ] Make sure to deregister the controller before disabling underlying resources like clocks during driver unbind. Fixes: b5f6517948cc ("spi: sunxi: Add Allwinner A10 SPI controller driver") Cc: stable@vger.kernel.org # 3.15 Cc: Maxime Ripard Signed-off-by: Johan Hovold Link: https://patch.msgid.link/20260410081757.503099-19-johan@kernel.org Signed-off-by: Mark Brown [ renamed `host`/`spi_controller` to `master`/`spi_master` and kept `int` return type with `return 0` in remove ] Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- drivers/spi/spi-sun4i.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c index a8fba310d700..ab99cc743865 100644 --- a/drivers/spi/spi-sun4i.c +++ b/drivers/spi/spi-sun4i.c @@ -503,7 +503,7 @@ static int sun4i_spi_probe(struct platform_device *pdev) pm_runtime_enable(&pdev->dev); pm_runtime_idle(&pdev->dev); - ret = devm_spi_register_master(&pdev->dev, master); + ret = spi_register_master(master); if (ret) { dev_err(&pdev->dev, "cannot register SPI master\n"); goto err_pm_disable; @@ -521,8 +521,16 @@ static int sun4i_spi_probe(struct platform_device *pdev) static int sun4i_spi_remove(struct platform_device *pdev) { + struct spi_master *master = platform_get_drvdata(pdev); + + spi_master_get(master); + + spi_unregister_master(master); + pm_runtime_force_suspend(&pdev->dev); + spi_master_put(master); + return 0; }