]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: spi-fsl-lpspi: Fix transmissions when using CONT
authorLarisa Grigore <larisa.grigore@nxp.com>
Thu, 28 Aug 2025 10:14:40 +0000 (11:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 9 Sep 2025 16:56:32 +0000 (18:56 +0200)
[ Upstream commit 782a7c73078e1301c0c427f21c06377d77dfa541 ]

Commit 6a130448498c ("spi: lpspi: Fix wrong transmission when don't use
CONT") breaks transmissions when CONT is used. The TDIE interrupt should
not be disabled in all cases. If CONT is used and the TX transfer is not
yet completed yet, but the interrupt handler is called because there are
characters to be received, TDIE is replaced with FCIE. When the transfer
is finally completed, SR_TDF is set but the interrupt handler isn't
called again.

Fixes: 6a130448498c ("spi: lpspi: Fix wrong transmission when don't use CONT")
Signed-off-by: Larisa Grigore <larisa.grigore@nxp.com>
Signed-off-by: James Clark <james.clark@linaro.org>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20250828-james-nxp-lpspi-v2-1-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 fa899ab2014c6a0fa55cb89fd9a8b3ba27ec5dd4..06c4fccf2f16d2cf568c17c0e4b94bda1cb7b352 100644 (file)
@@ -3,7 +3,7 @@
 // Freescale i.MX7ULP LPSPI driver
 //
 // Copyright 2016 Freescale Semiconductor, Inc.
-// Copyright 2018 NXP Semiconductors
+// Copyright 2018, 2023, 2025 NXP
 
 #include <linux/clk.h>
 #include <linux/completion.h>
@@ -780,7 +780,7 @@ static irqreturn_t fsl_lpspi_isr(int irq, void *dev_id)
        if (temp_SR & SR_MBF ||
            readl(fsl_lpspi->base + IMX7ULP_FSR) & FSR_TXCOUNT) {
                writel(SR_FCF, fsl_lpspi->base + IMX7ULP_SR);
-               fsl_lpspi_intctrl(fsl_lpspi, IER_FCIE);
+               fsl_lpspi_intctrl(fsl_lpspi, IER_FCIE | (temp_IER & IER_TDIE));
                return IRQ_HANDLED;
        }