FAILED: patch "[PATCH] spi: spi-fsl-dspi: Fix lockup if device is removed during SPI" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 7684580d45bd3d84ed9b453a4cadf7a9a5605a3f Mon Sep 17 00:00:00 2001
From: Krzysztof Kozlowski <[email protected]>
Date: Mon, 22 Jun 2020 13:05:40 +0200
Subject: [PATCH] spi: spi-fsl-dspi: Fix lockup if device is removed during SPI
transfer
During device removal, the driver should unregister the SPI controller and stop the hardware. Otherwise the dspi_transfer_one_message() could wait on completion infinitely.
Additionally, calling spi_unregister_controller() first in device removal reverse-matches the probe function, where SPI controller is registered at the end.
drivers/spi/spi-fsl-dspi.c +10 -1
@@ -1434,9 +1434,18 @@ static int dspi_remove(struct platform_device *pdev)struct fsl_dspi *dspi =spi_controller_get_devdata (ctlr);/* Disconnect from the SPI framework */ +spi_unregister_controller (dspi->ctlr); + +/* Disable RX and TX */ +regmap_update_bits (dspi->regmap,SPI_MCR , +SPI_MCR_DIS_TXF |SPI_MCR_DIS_RXF , +SPI_MCR_DIS_TXF |SPI_MCR_DIS_RXF ); + +/* Stop Running */ +regmap_update_bits (dspi->regmap,SPI_MCR ,SPI_MCR_HALT ,SPI_MCR_HALT ); +dspi_release_dma (dspi);clk_disable_unprepare (dspi->clk); -spi_unregister_controller (dspi->ctlr);return 0 ; }