summaryrefslogtreecommitdiff
path: root/drivers/dma
diff options
context:
space:
mode:
authorZeng Zhaoming <b32542@freescale.com>2011-08-09 02:27:05 +0800
committerJason Liu <r64343@freescale.com>2012-01-09 20:21:56 +0800
commit4632e0c72df1a0cc2a4af630781b813144f55bf0 (patch)
treefb922c7fc4c45f853b91bc369c54a9cc465a1ab0 /drivers/dma
parentab11e98c15ecb29eaf93114cb928478c98d637e9 (diff)
ENGR00154525 SDMA: SDMA not works when event number bigger than 32
New sdma driver in 2.6.38 kernel not map event to channel correctly by ignore events bigger than 32. Fix it by remove this restriction Signed-off-by: Zeng Zhaoming <b32542@freescale.com>
Diffstat (limited to 'drivers/dma')
-rw-r--r--drivers/dma/imx-sdma.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/dma/imx-sdma.c b/drivers/dma/imx-sdma.c
index 27c42d1d96de..34dd96a2f371 100644
--- a/drivers/dma/imx-sdma.c
+++ b/drivers/dma/imx-sdma.c
@@ -673,11 +673,11 @@ static int sdma_config_channel(struct sdma_channel *sdmac)
sdmac->shp_addr = 0;
sdmac->per_addr = 0;
- if (sdmac->event_id0) {
- if (sdmac->event_id0 > 32)
- return -EINVAL;
+ if (sdmac->event_id0)
sdma_event_enable(sdmac, sdmac->event_id0);
- }
+
+ if (sdmac->event_id1)
+ sdma_event_enable(sdmac, sdmac->event_id1);
switch (sdmac->peripheral_type) {
case IMX_DMATYPE_DSP:
@@ -699,10 +699,10 @@ static int sdma_config_channel(struct sdma_channel *sdmac)
if (sdmac->event_id1) {
sdmac->event_mask1 = 1 << (sdmac->event_id1 % 32);
if (sdmac->event_id1 > 31)
- sdmac->watermark_level |= 1 << 31;
+ sdmac->watermark_level |= 1 << 29;
sdmac->event_mask0 = 1 << (sdmac->event_id0 % 32);
if (sdmac->event_id0 > 31)
- sdmac->watermark_level |= 1 << 30;
+ sdmac->watermark_level |= 1 << 28;
} else {
sdmac->event_mask0 = 1 << sdmac->event_id0;
sdmac->event_mask1 = 1 << (sdmac->event_id0 - 32);