diff options
author | Sylvain Lesne <lesne@alse-fr.com> | 2017-09-18 13:08:00 +0200 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2017-09-28 09:41:46 +0200 |
commit | d9ec46416de5ef83220f1c7010ee0f5d1be1d753 (patch) | |
tree | 3b0287ab57ed014e2eb4386dc653377578f8189a /drivers/dma/altera-msgdma.c | |
parent | dmaengine: ti-dma-crossbar: Fix possible race condition with dma_inuse (diff) | |
download | linux-d9ec46416de5ef83220f1c7010ee0f5d1be1d753.tar.xz linux-d9ec46416de5ef83220f1c7010ee0f5d1be1d753.zip |
dmaengine: altera: fix response FIFO emptying
Commit 6084fc2ec478 ("dmaengine: altera: Use macros instead of structs
to describe the registers") introduced a minus sign before a register
offset.
This leads to soft-locks of the DMA controller, since reading the last
status byte is required to pop the response from the FIFO. Failing to
do so will lead to a full FIFO, which means that the DMA controller
will stop processing descriptors.
Signed-off-by: Sylvain Lesne <lesne@alse-fr.com>
Reviewed-by: Stefan Roese <sr@denx.de>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/altera-msgdma.c')
-rw-r--r-- | drivers/dma/altera-msgdma.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/dma/altera-msgdma.c b/drivers/dma/altera-msgdma.c index 32905d5606ac..35cbf2365f68 100644 --- a/drivers/dma/altera-msgdma.c +++ b/drivers/dma/altera-msgdma.c @@ -698,7 +698,7 @@ static void msgdma_tasklet(unsigned long data) * bits. So we need to just drop these values. */ size = ioread32(mdev->resp + MSGDMA_RESP_BYTES_TRANSFERRED); - status = ioread32(mdev->resp - MSGDMA_RESP_STATUS); + status = ioread32(mdev->resp + MSGDMA_RESP_STATUS); msgdma_complete_descriptor(mdev); msgdma_chan_desc_cleanup(mdev); |