linux-stable/include/linux/amba
Russell King c8ebae3703 ARM: mmci: add dmaengine-based DMA support
Based on a patch from Linus Walleij.

Add dmaengine based support for DMA to the MMCI driver, using the
Primecell DMA engine interface.  The changes over Linus' driver are:

- rename txsize_threshold to dmasize_threshold, as this reflects the
  purpose more.
- use 'mmci_dma_' as the function prefix rather than 'dma_mmci_'.
- clean up requesting of dma channels.
- don't release a single channel twice when it's shared between tx and rx.
- get rid of 'dma_enable' bool - instead check whether the channel is NULL.
- detect incomplete DMA at the end of a transfer.  Some DMA controllers
  (eg, PL08x) are unable to be configured for scatter DMA and also listen
  to all four DMA request signals [BREQ,SREQ,LBREQ,LSREQ] from the MMCI.
  They can do one or other but not both.  As MMCI uses LBREQ/LSREQ for the
  final burst/words, PL08x does not transfer the last few words.
- map and unmap DMA buffers using the DMA engine struct device, not the
  MMCI struct device - the DMA engine is doing the DMA transfer, not us.
- avoid double-unmapping of the DMA buffers on MMCI data errors.
- don't check for negative values from the dmaengine tx submission
  function - Dan says this must never fail.
- use new dmaengine helper functions rather than using the ugly function
  pointers directly.
- allow DMA code to be fully optimized away using dma_inprogress() which
  is defined to constant 0 if DMA engine support is disabled.
- request maximum segment size from the DMA engine struct device and
  set this appropriately.
- removed checking of buffer alignment - the DMA engine should deal with
  its own restrictions on buffer alignment, not the individual DMA engine
  users.
- removed setting DMAREQCTL - this confuses some DMA controllers as it
  causes LBREQ to be asserted for the last seven transfers, rather than
  six SREQ and one LSREQ.
- removed burst setting - the DMA controller should not burst past the
  transfer size required to complete the DMA operation.

Tested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2011-02-04 13:25:49 +00:00
..
bus.h ARM: 6467/1: amba: optional PrimeCell core voltage switch 2010-11-26 10:59:12 +00:00
clcd.h VIDEO: amba clcd: don't disable an already disabled clock 2010-08-17 22:15:09 +01:00
kmi.h
mmci.h ARM: mmci: add dmaengine-based DMA support 2011-02-04 13:25:49 +00:00
pl08x.h ARM: PL08x: cleanup comments 2011-01-16 16:55:43 -08:00
pl022.h spi/pl022: get rid of chipinfo dev pointer 2010-10-12 21:37:37 -06:00
pl061.h ARM: 6003/1: removing compilation warning from pl061.h 2010-03-29 17:33:33 +01:00
pl093.h ARM: PL093: Header file for PL093 SSMC PrimeCell 2009-07-30 23:22:54 +01:00
pl330.h DMA: PL330: Add dma api driver 2010-05-23 20:28:19 -07:00
serial.h ARM: PL011: add DMA burst threshold support for ST variants 2011-01-05 16:58:53 +00:00