Add the missing complete operations for dma_completion to fix the
problem of blocking at the wait_for_completion_interruptible()
function when use spi_slave_abort().

Signed-off-by: Clark Wang <xiaoning.w...@nxp.com>
---
 drivers/spi/spi-fsl-lpspi.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c
index 0252cae0b35b..33b6a8affd55 100644
--- a/drivers/spi/spi-fsl-lpspi.c
+++ b/drivers/spi/spi-fsl-lpspi.c
@@ -482,7 +482,13 @@ static int fsl_lpspi_slave_abort(struct spi_controller 
*controller)
                                spi_controller_get_devdata(controller);
 
        fsl_lpspi->slave_aborted = true;
-       complete(&fsl_lpspi->xfer_done);
+       if (!fsl_lpspi->usedma)
+               complete(&fsl_lpspi->xfer_done);
+       else {
+               complete(&fsl_lpspi->dma_tx_completion);
+               complete(&fsl_lpspi->dma_rx_completion);
+       }
+
        return 0;
 }
 
-- 
2.17.1

Reply via email to