diff options
author | Gao Pan <pandy.gao@nxp.com> | 2016-11-27 22:02:59 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-11-30 12:45:51 -0500 |
commit | d2ad0a62d4ee235fbfcf7816a0bee5d09da8ddbe (patch) | |
tree | 7dc66050493e02652c311809a184c846880da36b /drivers/spi/spi-fsl-lpspi.c | |
parent | 14de3918eacfc624023775c319e85e6597514195 (diff) |
spi: fsl-lpspi: use wait_for_completion_timeout() while waiting transfer done
It's a potential problem to use wait_for_completion() because the
completion condition may never come. Thus, it's better to repalce
wait_for_completion() with wait_for_completion_timeout().
Signed-off-by: Gao Pan <pandy.gao@nxp.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi/spi-fsl-lpspi.c')
-rw-r--r-- | drivers/spi/spi-fsl-lpspi.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c index 539c971b9f05..47a97add0639 100644 --- a/drivers/spi/spi-fsl-lpspi.c +++ b/drivers/spi/spi-fsl-lpspi.c | |||
@@ -348,7 +348,12 @@ static int fsl_lpspi_transfer_one(struct spi_master *master, | |||
348 | 348 | ||
349 | reinit_completion(&fsl_lpspi->xfer_done); | 349 | reinit_completion(&fsl_lpspi->xfer_done); |
350 | fsl_lpspi_write_tx_fifo(fsl_lpspi); | 350 | fsl_lpspi_write_tx_fifo(fsl_lpspi); |
351 | wait_for_completion(&fsl_lpspi->xfer_done); | 351 | |
352 | ret = wait_for_completion_timeout(&fsl_lpspi->xfer_done, HZ); | ||
353 | if (!ret) { | ||
354 | dev_dbg(fsl_lpspi->dev, "wait for completion timeout\n"); | ||
355 | return -ETIMEDOUT; | ||
356 | } | ||
352 | 357 | ||
353 | ret = fsl_lpspi_txfifo_empty(fsl_lpspi); | 358 | ret = fsl_lpspi_txfifo_empty(fsl_lpspi); |
354 | fsl_lpspi_read_rx_fifo(fsl_lpspi); | 359 | fsl_lpspi_read_rx_fifo(fsl_lpspi); |