Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

spi: sun6i: fix controller deregistration

Make sure to deregister the controller before disabling underlying
resources like clocks during driver unbind.

Fixes: 3558fe900e8a ("spi: sunxi: Add Allwinner A31 SPI controller driver")
Cc: stable@vger.kernel.org # 3.15
Cc: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260410081757.503099-20-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Johan Hovold and committed by
Mark Brown
d874a1c3 42108a2f

+7 -1
+7 -1
drivers/spi/spi-sun6i.c
··· 742 742 pm_runtime_set_active(&pdev->dev); 743 743 pm_runtime_enable(&pdev->dev); 744 744 745 - ret = devm_spi_register_controller(&pdev->dev, host); 745 + ret = spi_register_controller(host); 746 746 if (ret) { 747 747 dev_err(&pdev->dev, "cannot register SPI host\n"); 748 748 goto err_pm_disable; ··· 768 768 { 769 769 struct spi_controller *host = platform_get_drvdata(pdev); 770 770 771 + spi_controller_get(host); 772 + 773 + spi_unregister_controller(host); 774 + 771 775 pm_runtime_force_suspend(&pdev->dev); 772 776 773 777 if (host->dma_tx) 774 778 dma_release_channel(host->dma_tx); 775 779 if (host->dma_rx) 776 780 dma_release_channel(host->dma_rx); 781 + 782 + spi_controller_put(host); 777 783 } 778 784 779 785 static const struct sun6i_spi_cfg sun6i_a31_spi_cfg = {