From f9691bb9674b6822ace56370a08c6fc02addf6cb Mon Sep 17 00:00:00 2001 From: Steven Miao Date: Thu, 5 May 2011 14:14:48 +0800 Subject: Blackfin: work around anomaly 05000480 Anomaly 05000480 on BF537 rev 0.0, 0.1, 0.2: Multiple Simultaneous Urgent DMA Requests May Cause DMA System Instability Suggested Workaround: Program the DMA Traffic Control Period to a non-zero value. This forces the DMA block to group accesses together rather than allow arbitration for each piece of data placed on the internal DMA bus. Signed-off-by: Steven Miao Signed-off-by: Mike Frysinger --- arch/blackfin/kernel/bfin_dma_5xx.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'arch/blackfin') diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index 6ce8dce753c9..71dbaa4a48af 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c @@ -36,6 +36,11 @@ static int __init blackfin_dma_init(void) printk(KERN_INFO "Blackfin DMA Controller\n"); + +#if ANOMALY_05000480 + bfin_write_DMAC_TC_PER(0x0111); +#endif + for (i = 0; i < MAX_DMA_CHANNELS; i++) { atomic_set(&dma_ch[i].chan_status, 0); dma_ch[i].regs = dma_io_base_addr[i]; -- cgit v1.2.3