ARM: OMAP2+: DMA: Workaround for invalid source position
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Fri, 9 Dec 2011 21:38:00 +0000 (13:38 -0800)
committerGrazvydas Ignotas <notasas@gmail.com>
Fri, 13 Jan 2012 15:09:46 +0000 (17:09 +0200)
commite319a225aeae5baecca89a5559304410e397529a
treeec374b539ebd24e43d35380b2234ecee7d940df2
parent6aa6769c80f43e595ffe98ade591887a95160f7a
ARM: OMAP2+: DMA: Workaround for invalid source position

If the DMA source position has been asked before the
first actual data transfer has been done, the CSAC
register does not contain valid information.
We can identify this situation by checking the CDAC
register:
CDAC != 0 indicates that the DMA transfer on the channel has
been started already.
When CDAC == 0 we can not trust the CSAC value since it has
not been updated, and can contain random number.
Return the start address in case the DMA has not jet started.

Note: The CDAC register has been initialized to 0 at dma_start
time.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/plat-omap/dma.c