diff options
author | Michael Hennerich <michael.hennerich@analog.com> | 2008-05-17 15:57:01 +0800 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-05-17 15:57:01 +0800 |
commit | 5ce998cf6d1dbb28f14dea879a366ed5348f9681 (patch) | |
tree | 03f5b3bd3af3d5a48df42b3c5f50d02b98dcbd78 | |
parent | 9cd9c616f5890c9345546e03c99ba392b7a82cdf (diff) |
Blackfin arch: Check for Anomaly 05000182
IMDMA does not operate to full speed for 600MHz and higher devices
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
-rw-r--r-- | arch/blackfin/kernel/bfin_dma_5xx.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index fd5448d6107..d54f19085f3 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c @@ -90,6 +90,17 @@ int request_dma(unsigned int channel, char *device_id) { pr_debug("request_dma() : BEGIN \n"); + +#if defined(CONFIG_BF561) && ANOMALY_05000182 + if (channel >= CH_IMEM_STREAM0_DEST && channel <= CH_IMEM_STREAM1_DEST) { + if (get_cclk() > 500000000) { + printk(KERN_WARNING + "Request IMDMA failed due to ANOMALY 05000182\n"); + return -EFAULT; + } + } +#endif + mutex_lock(&(dma_ch[channel].dmalock)); if ((dma_ch[channel].chan_status == DMA_CHANNEL_REQUESTED) |