]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: spi-fsl-lpspi: Reset FIFO and disable module on transfer abort
authorLarisa Grigore <larisa.grigore@nxp.com>
Thu, 28 Aug 2025 10:14:42 +0000 (11:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Sep 2025 16:58:24 +0000 (18:58 +0200)
[ Upstream commit e811b088a3641861fc9d2b2b840efc61a0f1907d ]

In DMA mode fsl_lpspi_reset() is always called at the end, even when the
transfer is aborted. In PIO mode aborts skip the reset leaving the FIFO
filled and the module enabled.

Fix it by always calling fsl_lpspi_reset().

Fixes: a15dc3d657fa ("spi: lpspi: Fix CLK pin becomes low before one transfer")
Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Signed-off-by: James Clark <james.clark@linaro.org>
Link: https://patch.msgid.link/20250828-james-nxp-lpspi-v2-3-6262b9aa9be4@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/spi/spi-fsl-lpspi.c

index 9d05d18451c6d79a72930ae8d98e897033f6560a..2843b559e94134bfbeaa9914a9befb9a6e6b5d3a 100644 (file)
@@ -730,12 +730,10 @@ static int fsl_lpspi_pio_transfer(struct spi_controller *controller,
        fsl_lpspi_write_tx_fifo(fsl_lpspi);
 
        ret = fsl_lpspi_wait_for_completion(controller);
-       if (ret)
-               return ret;
 
        fsl_lpspi_reset(fsl_lpspi);
 
-       return 0;
+       return ret;
 }
 
 static int fsl_lpspi_transfer_one(struct spi_controller *controller,