From 990e1751da1ec2b466df71aa891bc4e909550287 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Wed, 12 Jan 2011 13:02:28 +0100 Subject: [PATCH] --- yaml --- r: 233291 b: refs/heads/master c: 1fa81c270da4d8dffa84fcca448654a10ed0a5dc h: refs/heads/master i: 233289: 7cb488702777b518044b9b095b6bc448ca90311a 233287: b8b62f2831f1393556814b7939eb317b3546b7f1 v: v3 --- [refs] | 2 +- trunk/drivers/dma/imx-sdma.c | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 83d01216ef3b..b3dfbdb7ea63 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b9b3f82f94b52ebb0bbdf6cd77ccc5e8ee3f53b5 +refs/heads/master: 1fa81c270da4d8dffa84fcca448654a10ed0a5dc diff --git a/trunk/drivers/dma/imx-sdma.c b/trunk/drivers/dma/imx-sdma.c index c50305043f15..8707723e36da 100644 --- a/trunk/drivers/dma/imx-sdma.c +++ b/trunk/drivers/dma/imx-sdma.c @@ -925,10 +925,24 @@ static struct dma_async_tx_descriptor *sdma_prep_slave_sg( ret = -EINVAL; goto err_out; } - if (sdmac->word_size == DMA_SLAVE_BUSWIDTH_4_BYTES) + + switch (sdmac->word_size) { + case DMA_SLAVE_BUSWIDTH_4_BYTES: bd->mode.command = 0; - else - bd->mode.command = sdmac->word_size; + if (count & 3 || sg->dma_address & 3) + return NULL; + break; + case DMA_SLAVE_BUSWIDTH_2_BYTES: + bd->mode.command = 2; + if (count & 1 || sg->dma_address & 1) + return NULL; + break; + case DMA_SLAVE_BUSWIDTH_1_BYTE: + bd->mode.command = 1; + break; + default: + return NULL; + } param = BD_DONE | BD_EXTD | BD_CONT;