| From b31ac294a91863306e6c203670d2f6f03c8ebc17 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 26 Mar 2019 16:05:20 +0200 |
| Subject: dmaengine: axi-dmac: Don't check the number of frames for alignment |
| |
| From: Alexandru Ardelean <alexandru.ardelean@analog.com> |
| |
| [ Upstream commit 648865a79d8ee3d1aa64aab5eb2a9d12eeed14f9 ] |
| |
| In 2D transfers (for the AXI DMAC), the number of frames (numf) represents |
| Y_LENGTH, and the length of a frame is X_LENGTH. 2D transfers are useful |
| for video transfers where screen resolutions ( X * Y ) are typically |
| aligned for X, but not for Y. |
| |
| There is no requirement for Y_LENGTH to be aligned to the bus-width (or |
| anything), and this is also true for AXI DMAC. |
| |
| Checking the Y_LENGTH for alignment causes false errors when initiating DMA |
| transfers. This change fixes this by checking only that the Y_LENGTH is |
| non-zero. |
| |
| Fixes: 0e3b67b348b8 ("dmaengine: Add support for the Analog Devices AXI-DMAC DMA controller") |
| Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com> |
| Signed-off-by: Vinod Koul <vkoul@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/dma/dma-axi-dmac.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/dma/dma-axi-dmac.c b/drivers/dma/dma-axi-dmac.c |
| index 7f0b9aa158679..9887f2a14aa98 100644 |
| --- a/drivers/dma/dma-axi-dmac.c |
| +++ b/drivers/dma/dma-axi-dmac.c |
| @@ -451,7 +451,7 @@ static struct dma_async_tx_descriptor *axi_dmac_prep_interleaved( |
| |
| if (chan->hw_2d) { |
| if (!axi_dmac_check_len(chan, xt->sgl[0].size) || |
| - !axi_dmac_check_len(chan, xt->numf)) |
| + xt->numf == 0) |
| return NULL; |
| if (xt->sgl[0].size + dst_icg > chan->max_length || |
| xt->sgl[0].size + src_icg > chan->max_length) |
| -- |
| 2.20.1 |
| |