Unverified Commit b9920671 authored by Johan Hovold's avatar Johan Hovold Committed by Mark Brown
Browse files

spi: lantiq-ssc: fix controller deregistration



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

Fixes: 17f84b79 ("spi: lantiq-ssc: add support for Lantiq SSC SPI controller")
Cc: stable@vger.kernel.org	# 4.11
Cc: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Link: https://patch.msgid.link/20260409120419.388546-17-johan@kernel.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent fc3a83b0
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -994,7 +994,7 @@ static int lantiq_ssc_probe(struct platform_device *pdev)
		"Lantiq SSC SPI controller (Rev %i, TXFS %u, RXFS %u, DMA %u)\n",
		revision, spi->tx_fifo_size, spi->rx_fifo_size, supports_dma);

	err = devm_spi_register_controller(dev, host);
	err = spi_register_controller(host);
	if (err) {
		dev_err(dev, "failed to register spi host\n");
		goto err_wq_destroy;
@@ -1016,6 +1016,10 @@ static void lantiq_ssc_remove(struct platform_device *pdev)
{
	struct lantiq_ssc_spi *spi = platform_get_drvdata(pdev);

	spi_controller_get(spi->host);

	spi_unregister_controller(spi->host);

	lantiq_ssc_writel(spi, 0, LTQ_SPI_IRNEN);
	lantiq_ssc_writel(spi, 0, LTQ_SPI_CLC);
	rx_fifo_flush(spi);
@@ -1024,6 +1028,8 @@ static void lantiq_ssc_remove(struct platform_device *pdev)

	destroy_workqueue(spi->wq);
	clk_put(spi->fpi_clk);

	spi_controller_put(spi->host);
}

static struct platform_driver lantiq_ssc_driver = {