linux/Documentation/devicetree/bindings/dma
Peter Ujfalusi 1be5336bc7 dmaengine: edma: New device tree binding
With the old binding and driver architecture we had many issues:
No way to assign eDMA channels to event queues, thus not able to tune the
system by moving specific DMA channels to low/high priority servicing. We
moved the cyclic channels to high priority within the code, but that was
just a workaround to this issue.
Memcopy was fundamentally broken: even if the driver scanned the DT/devices
in the booted system for direct DMA users (which is not effective when the
events are going through a crossbar) and created a map of 'used' channels,
this information was not really usable. Since via dmaengien API the eDMA
driver will be called with _some_ channel number, we would try to request
this channel when any channel is requested for memcpy. By luck we got
channel which is not used by any device most of the time so things worked,
but if a device would have been using the given channel, but not requested
it, the memcpy channel would have been waiting for HW event.
The old code had the am33xx/am43xx DMA event router handling embedded. This
should have been done in a separate driver since it is not part of the
actual eDMA IP.
There were no way to 'lock' PaRAM slots to be used by the DSP for example
when booting with DT.
In DT boot the edma node used more than one hwmod which is not a good
practice and the kernel prints warning because of this.

With the new bindings and the changes in the driver we can:
- No regression with Legacy binding and non DT boot
- DMA channels can be assigned to any TC (to set priority)
- PaRAM slots can be reserved for other cores to use
- Dynamic power management for CC and TCs, if only TC0 is used all other TC
  can be powered down for example

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2015-10-27 10:22:45 +09:00
..
xilinx Documentation: devicetree: Fix Xilinx VDMA specification 2014-12-05 22:23:36 +05:30
adi,axi-dmac.txt devicetree: Add bindings documentation for Analog Devices AXI-DMAC 2015-08-23 18:55:10 +05:30
apm-xgene-dma.txt dmaengine: xgene-dma: Fix the resource map to handle overlapping 2015-07-31 20:33:43 +05:30
arm-pl08x.txt doc: dt: dma: add binding doc for pl08x 2015-08-18 22:12:14 +05:30
arm-pl330.txt ARM: dts: pl330: Add #dma-cells for generic dma binding support 2013-02-14 20:04:27 +05:30
atmel-dma.txt dma: atmel-dma: correct typo in the device tree bindings documentation 2013-10-20 18:47:43 +05:30
atmel-xdma.txt ARM: dts: at_xdmac: fix bad value of dma-cells in documentation 2014-11-17 14:07:20 +05:30
brcm,bcm2835-dma.txt dt-bindings: brcm: rationalize Broadcom documentation naming 2015-03-26 12:14:11 -05:00
dma.txt dmaengine: of_dma: Support for DMA routers 2015-05-09 17:11:25 +05:30
fsl-edma.txt dma: Add Freescale eDMA engine driver support 2014-02-18 16:52:35 +05:30
fsl-imx-dma.txt doc: devicetree: bindings: Fix typo in bindings 2013-07-25 12:32:07 +02:00
fsl-imx-sdma.txt dmaengine: imx-sdma: Add a new DMATYPE for SAI 2014-11-17 13:50:43 +05:30
fsl-mxs-dma.txt ARM: dts: imx28: Fix AUART4 TX-DMA interrupt name 2015-04-27 22:44:27 +08:00
img-mdc-dma.txt dmaengine: Add binding document for IMG MDC 2015-02-04 18:13:32 -08:00
jz4780-dma.txt dt-bindings: dma: Add binding for jz4780-dma 2015-04-01 08:43:33 +05:30
k3dma.txt dmaengine: Add hisilicon k3 DMA engine driver 2013-08-28 11:23:40 +05:30
lpc1850-dmamux.txt doc: dt: dma: add bindings for lpc1850-dmamux 2015-08-18 22:12:14 +05:30
mmp-dma.txt dma: mmp_pdma: Fix the #dma-channels DT property documentation 2014-05-02 21:19:07 +05:30
moxa,moxart-dma.txt dmaengine: Add MOXA ART DMA engine driver 2014-01-20 12:32:46 +05:30
mpc512x-dma.txt dmaengine: mpc512x: add device tree binding document 2014-07-26 00:21:41 +05:30
mv-xor.txt dmaengine: mv_xor: remove support for dmacap,* DT properties 2015-08-19 22:31:53 +05:30
nbpfaxi.txt dmaengine: add device tree binding documentation for the nbpfaxi driver 2014-08-04 13:27:35 +05:30
qcom_adm.txt dmaengine: qcom_adm: Add device tree binding 2014-09-23 16:03:48 +05:30
qcom_bam_dma.txt dmaengine: qcom_bam_dma: Add support for BAM v1.7.0 2015-03-16 22:21:47 +05:30
renesas,rcar-dmac.txt Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-02-18 08:49:20 -08:00
renesas,usb-dmac.txt dmaengine: renesas,usb-dmac: Add device tree bindings documentation 2015-04-02 12:57:31 +05:30
shdma.txt DMA: shdma: switch DT mode to use configuration data from a match table 2013-08-27 14:25:09 +05:30
sirfsoc-dma.txt dmaengine: sirf: add CSRatlas7 SoC support 2015-06-08 10:26:58 +05:30
snps-dma.txt dmaengine: dw: define DW_DMA_MAX_NR_MASTERS 2015-02-04 22:39:44 -08:00
ste-coh901318.txt dma: coh901318: add devicetree support 2013-06-17 13:54:27 +02:00
ste-dma40.txt dmaengine: dma40: add signal documentation to the device tree bindings 2014-07-15 22:14:15 +05:30
sun4i-dma.txt dmaengine: sun4i: Add support for the DMA engine on sun[457]i SoCs 2015-08-20 10:45:19 +05:30
sun6i-dma.txt dmaengine: sun6i: Add support for Allwinner H3 (sun8i) variant 2015-05-08 14:55:31 +05:30
tegra20-apbdma.txt ARM: tegra: document use of standard DMA DT bindings 2013-12-11 16:42:23 -07:00
ti-dma-crossbar.txt dmaengine: ti-dma-crossbar: Add support for crossbar on AM33xx/AM43xx 2015-10-27 10:22:45 +09:00
ti-edma.txt dmaengine: edma: New device tree binding 2015-10-27 10:22:45 +09:00
zxdma.txt Documentation: dma: Add documentation for ZTE DMA 2015-07-16 18:58:50 +05:30