Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <realmz6@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>

authored by

Steven Miao and committed by
Mike Frysinger
f9691bb9 7a7a430f

+5
+5
arch/blackfin/kernel/bfin_dma_5xx.c
··· 36 36 37 37 printk(KERN_INFO "Blackfin DMA Controller\n"); 38 38 39 + 40 + #if ANOMALY_05000480 41 + bfin_write_DMAC_TC_PER(0x0111); 42 + #endif 43 + 39 44 for (i = 0; i < MAX_DMA_CHANNELS; i++) { 40 45 atomic_set(&dma_ch[i].chan_status, 0); 41 46 dma_ch[i].regs = dma_io_base_addr[i];