mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
spi: img-spfi: fix controller deregistration
Make sure to deregister the controller before disabling and releasing
underlying resources like clocks and DMA during driver unbind.
Fixes: deba25800a ("spi: Add driver for IMG SPFI controller")
Cc: stable@vger.kernel.org # 3.19
Cc: Andrew Bresticker <abrestic@chromium.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260409120419.388546-16-johan@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -643,7 +643,7 @@ static int img_spfi_probe(struct platform_device *pdev)
|
||||
pm_runtime_set_active(spfi->dev);
|
||||
pm_runtime_enable(spfi->dev);
|
||||
|
||||
ret = devm_spi_register_controller(spfi->dev, host);
|
||||
ret = spi_register_controller(host);
|
||||
if (ret)
|
||||
goto disable_pm;
|
||||
|
||||
@@ -669,6 +669,10 @@ static void img_spfi_remove(struct platform_device *pdev)
|
||||
struct spi_controller *host = platform_get_drvdata(pdev);
|
||||
struct img_spfi *spfi = spi_controller_get_devdata(host);
|
||||
|
||||
spi_controller_get(host);
|
||||
|
||||
spi_unregister_controller(host);
|
||||
|
||||
if (spfi->tx_ch)
|
||||
dma_release_channel(spfi->tx_ch);
|
||||
if (spfi->rx_ch)
|
||||
@@ -679,6 +683,8 @@ static void img_spfi_remove(struct platform_device *pdev)
|
||||
clk_disable_unprepare(spfi->spfi_clk);
|
||||
clk_disable_unprepare(spfi->sys_clk);
|
||||
}
|
||||
|
||||
spi_controller_put(host);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
Reference in New Issue
Block a user