DMAENGINE: generic slave control v2

Convert the device_terminate_all() operation on the
DMA engine to a generic device_control() operation
which can now optionally support also pausing and
resuming DMA on a certain channel. Implemented for the
COH 901 318 DMAC as an example.

[[email protected]: update for timberdale]
Signed-off-by: Linus Walleij <[email protected]>
Acked-by: Mark Brown <[email protected]>
Cc: Maciej Sosnowski <[email protected]>
Cc: Nicolas Ferre <[email protected]>
Cc: Pavel Machek <[email protected]>
Cc: Li Yang <[email protected]>
Cc: Guennadi Liakhovetski <[email protected]>
Cc: Paul Mundt <[email protected]>
Cc: Ralf Baechle <[email protected]>
Cc: Haavard Skinnemoen <[email protected]>
Cc: Magnus Damm <[email protected]>
Cc: Liam Girdwood <[email protected]>
Cc: Joe Perches <[email protected]>
Cc: Roland Dreier <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
This commit is contained in:
Linus Walleij 2010-03-26 16:44:01 -07:00 • committed by Dan Williams
commit c3635c78e5
15 changed files with 117 additions and 57 deletions

View file

@ -578,7 +578,7 @@ static void atmci_stop_dma(struct atmel_mci *host)
struct dma_chan *chan = host->data_chan;
if (chan) {
chan->device->device_terminate_all(chan);
chan->device->device_control(chan, DMA_TERMINATE_ALL);
atmci_dma_cleanup(host);
} else {
/* Data transfer was stopped by the interrupt handler */