davinci: edma: clear events in edma_start()
authorBrian Niebuhr <bniebuhr3@gmail.com>
Tue, 9 Mar 2010 22:48:03 +0000 (16:48 -0600)
committerKevin Hilman <khilman@deeprootsystems.com>
Mon, 5 Apr 2010 22:25:11 +0000 (15:25 -0700)
commitbb17ef102b72e38557bfa829511e06c4bd3bb972
treee35ff2208685fdd619afbb4eba8b9e5fe1a34885
parent5eb2e891f038c8e04757f4536b9693faf35978a3
davinci: edma: clear events in edma_start()

This patch fixes an issue where a DMA channel can erroneously process an
event generated by a previous transfer.  A failure case is where DMA is
being used for SPI transmit and receive channels on OMAP L138.  In this
case there is a single bit that controls all event generation from the
SPI peripheral.  Therefore it is possible that between when edma_stop()
has been called for the transmit channel on a previous transfer and
edma_start() is called for the transmit channel on a subsequent transfer,
that a transmit event has been generated.

The fix is to clear events in edma_start().  This prevents false events
from being processed when events are enabled for that channel.

Signed-off-by: Brian Niebuhr <bniebuhr@efjohnson.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
arch/arm/mach-davinci/dma.c