[1/1] i.MX SDMA: Fix burstsize settings

Submitted by Philippe Rétornaz on Jan. 23, 2012, 10:49 a.m.

Details

Message ID 1327315765-20679-1-git-send-email-philippe.retornaz@epfl.ch
State New
Headers show

Commit Message

Philippe Rétornaz Jan. 23, 2012, 10:49 a.m.
Commit 6584cb88 fixed the mxcmmc driver but forgot to fix the
SDMA driver to handle the correct burtsize.
This make the SD card access works again with DMA on i.MX31 boards.

Signed-off-by: Philippe Rétornaz <philippe.retornaz@epfl.ch>
Tested-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/dma/imx-sdma.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

Comments

Sergei Shtylyov Jan. 23, 2012, 12:31 p.m.
Hello.

On 23-01-2012 14:49, Philippe Rétornaz wrote:

> Commit 6584cb88 fixed the mxcmmc driver but forgot to fix the

    Please also specify that commit's summary in parens. Russell has recently 
again explained why it's needed.

> SDMA driver to handle the correct burtsize.
> This make the SD card access works again with DMA on i.MX31 boards.

> Signed-off-by: Philippe Rétornaz<philippe.retornaz@epfl.ch>
> Tested-by: Sascha Hauer<s.hauer@pengutronix.de>
> Acked-by: Sascha Hauer<s.hauer@pengutronix.de>

WBR, Sergei

Patch hide | download patch | download mbox

diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index f993955..c193dac 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -1095,11 +1095,13 @@  static int sdma_control(struct dma_chan *chan, enum dma_ctrl_cmd cmd,
 	case DMA_SLAVE_CONFIG:
 		if (dmaengine_cfg->direction == DMA_FROM_DEVICE) {
 			sdmac->per_address = dmaengine_cfg->src_addr;
-			sdmac->watermark_level = dmaengine_cfg->src_maxburst;
+			sdmac->watermark_level = dmaengine_cfg->src_maxburst *
+						dmaengine_cfg->src_addr_width;
 			sdmac->word_size = dmaengine_cfg->src_addr_width;
 		} else {
 			sdmac->per_address = dmaengine_cfg->dst_addr;
-			sdmac->watermark_level = dmaengine_cfg->dst_maxburst;
+			sdmac->watermark_level = dmaengine_cfg->dst_maxburst *
+						dmaengine_cfg->dst_addr_width;
 			sdmac->word_size = dmaengine_cfg->dst_addr_width;
 		}
 		return sdma_config_channel(sdmac);