diff options
author | Zeng Zhaoming <b32542@freescale.com> | 2011-08-09 02:27:05 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-09 20:21:56 +0800 |
commit | 4632e0c72df1a0cc2a4af630781b813144f55bf0 (patch) | |
tree | fb922c7fc4c45f853b91bc369c54a9cc465a1ab0 /drivers/dma | |
parent | ab11e98c15ecb29eaf93114cb928478c98d637e9 (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.c | 12 |
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); |