diff options
Diffstat (limited to 'drivers/spi/spi-atmel.c')
| -rw-r--r-- | drivers/spi/spi-atmel.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c index 23d8f5f56579..9af7841f2e8c 100644 --- a/drivers/spi/spi-atmel.c +++ b/drivers/spi/spi-atmel.c | |||
| @@ -1046,6 +1046,7 @@ static int atmel_spi_one_transfer(struct spi_master *master, | |||
| 1046 | struct atmel_spi_device *asd; | 1046 | struct atmel_spi_device *asd; |
| 1047 | int timeout; | 1047 | int timeout; |
| 1048 | int ret; | 1048 | int ret; |
| 1049 | unsigned long dma_timeout; | ||
| 1049 | 1050 | ||
| 1050 | as = spi_master_get_devdata(master); | 1051 | as = spi_master_get_devdata(master); |
| 1051 | 1052 | ||
| @@ -1103,15 +1104,12 @@ static int atmel_spi_one_transfer(struct spi_master *master, | |||
| 1103 | 1104 | ||
| 1104 | /* interrupts are disabled, so free the lock for schedule */ | 1105 | /* interrupts are disabled, so free the lock for schedule */ |
| 1105 | atmel_spi_unlock(as); | 1106 | atmel_spi_unlock(as); |
| 1106 | ret = wait_for_completion_timeout(&as->xfer_completion, | 1107 | dma_timeout = wait_for_completion_timeout(&as->xfer_completion, |
| 1107 | SPI_DMA_TIMEOUT); | 1108 | SPI_DMA_TIMEOUT); |
| 1108 | atmel_spi_lock(as); | 1109 | atmel_spi_lock(as); |
| 1109 | if (WARN_ON(ret == 0)) { | 1110 | if (WARN_ON(dma_timeout == 0)) { |
| 1110 | dev_err(&spi->dev, | 1111 | dev_err(&spi->dev, "spi transfer timeout\n"); |
| 1111 | "spi trasfer timeout, err %d\n", ret); | ||
| 1112 | as->done_status = -EIO; | 1112 | as->done_status = -EIO; |
| 1113 | } else { | ||
| 1114 | ret = 0; | ||
| 1115 | } | 1113 | } |
| 1116 | 1114 | ||
| 1117 | if (as->done_status) | 1115 | if (as->done_status) |
