linux/drivers/dma
Zhangfei Gao c8acd6aa6b dmaengine: mmp-pdma support
1. virtual channel vs. physical channel
Virtual channel is managed by dmaengine
Physical channel handling resource, such as irq
Physical channel is alloced dynamically as descending priority,
freed immediately when irq done.
The availble highest priority physically channel will alwayes be alloced

Issue pending list -> alloc highest dma physically channel available -> dma done -> free physically channel

2. list: running list & pending list
submit: desc list -> pending list
issue_pending_list: if (IDLE) pending list -> running list; free pending list (RUN)
irq: free running list (IDLE)
     check pendlist -> pending list -> running list; free pending list (RUN)

3. irq:
Each list generate one irq, calling callback
One list may contain several desc chain, in such case, make sure only the last desc list generate irq.

4. async
Submit will add desc chain to pending list, which can be multi-called
If multi desc chain is submitted, only the last desc would generate irq -> call back
If IDLE, issue_pending_list start pending_list, transforming pendlist to running list
If RUN, irq will start pending list

5. test
5.1 pxa3xx_nand on pxa910
5.2 insmod dmatest.ko (threads_per_chan=y)
By default drivers/dma/dmatest.c test every channel and test memcpy with 1 threads per channel

Signed-off-by: Zhangfei Gao <zhangfei.gao@marvell.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
2012-09-14 08:14:07 +05:30
..
ioat ioat: Adding Ivy Bridge IOATDMA PCI device IDs 2012-08-31 21:19:51 +05:30
ipu dma: ipu: remove the use of ipu_platform_data 2012-07-01 21:57:43 +08:00
ppc4xx dmaengine: ensure all DMA engine drivers initialize their cookies 2012-03-13 11:37:42 +05:30
sh dmaengine: shdma: restore partial transfer calculation 2012-08-01 13:48:52 +09:00
amba-pl08x.c drivers/dma/amba-pl08x.c: fix error return code 2012-08-22 09:51:04 +05:30
at_hdmac_regs.h dmaengine: at_hdmac: take maxburst from slave configuration 2012-05-15 08:47:18 +05:30
at_hdmac.c dmaengine: at_hdmac: add a few const qualifiers 2012-07-16 12:05:45 +05:30
coh901318_lli.c dmaengine: Use sg_dma_address instead of sg_phys 2012-05-11 12:04:38 +05:30
coh901318_lli.h
coh901318.c dma: coh901318: use devm allocation 2012-06-14 08:42:26 +05:30
dmaengine.c dmaengine: Cleanup logging messages 2012-07-20 11:44:19 +05:30
dmaengine.h dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
dmatest.c dmaengine: fix missing 'cnt' in ?: in dmatest 2012-01-23 11:43:18 -08:00
dw_dmac_regs.h dw_dmac: use devm_* functions to simplify code 2012-07-26 11:40:07 +05:30
dw_dmac.c Merge branch 'for-3.7' into next 2012-08-05 13:04:33 +05:30
edma.c dmaengine: add TI EDMA DMA engine driver 2012-09-01 06:14:02 +05:30
ep93xx_dma.c arm-soc: driver specific updates 2012-05-26 12:22:27 -07:00
fsldma.c dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic 2012-03-21 19:20:23 +05:30
fsldma.h dmaengine: move last completed cookie into generic dma_chan structure 2012-03-13 11:36:06 +05:30
imx-dma.c dma: imx-dma: Fix kernel crash due to missing clock conversion 2012-07-27 08:49:53 +05:30
imx-sdma.c dma: imx-sdma: buf_tail should be initialize in prepare function 2012-06-07 13:48:42 +05:30
intel_mid_dma_regs.h dmaengine: move last completed cookie into generic dma_chan structure 2012-03-13 11:36:06 +05:30
intel_mid_dma.c dmaengine: Use dma_sg_len(sg) instead of sg->length 2012-05-11 12:04:38 +05:30
iop-adma.c dmaengine-fixes for 3.4-rc3 2012-04-10 15:30:16 -07:00
iovlock.c
Kconfig dmaengine: mmp-pdma support 2012-09-14 08:14:07 +05:30
Makefile dmaengine: mmp-pdma support 2012-09-14 08:14:07 +05:30
mmp_pdma.c dmaengine: mmp-pdma support 2012-09-14 08:14:07 +05:30
mmp_tdma.c dmaengine: mmp_tdma: add mmp tdma support 2012-06-20 16:28:41 +05:30
mpc512x_dma.c dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
mv_xor.c ARM: Orion: XOR: Add support for clk 2012-05-08 16:34:02 -07:00
mv_xor.h ARM: Orion: XOR: Add support for clk 2012-05-08 16:34:02 -07:00
mxs-dma.c dma: mxs-dma: Export missing symbols from mxs-dma.c 2012-07-16 11:59:22 +05:30
omap-dma.c dmaengine: omap: add support for cyclic DMA 2012-07-31 12:06:22 +01:00
pch_dma.c dmaengine: Use sg_dma_address instead of sg_phys 2012-05-11 12:04:38 +05:30
pl330.c DMA: PL330: Fix racy mutex unlock 2012-06-14 08:39:52 +05:30
sa11x0-dma.c dmaengine: sa11x0-dma: add cyclic DMA support 2012-07-01 14:16:26 +01:00
sirf-dma.c drivers/dma/sirf-dma.c: fix usage of devm functions 2012-08-22 09:17:34 +05:30
ste_dma40_ll.c
ste_dma40_ll.h dma40: Improve the logic of stopping logical chan 2012-04-23 17:56:17 +05:30
ste_dma40.c dma/ste_dma40: Fixup clock usage during probe 2012-08-31 06:01:55 +05:30
tegra20-apb-dma.c dma: tegra: enable/disable dma clock 2012-07-31 16:15:05 +05:30
timb_dma.c dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic 2012-03-21 19:20:23 +05:30
TODO
txx9dmac.c dmaengine: add context parameter to prep_slave_sg and prep_dma_cyclic 2012-03-21 19:20:23 +05:30
txx9dmac.h dmaengine: move last completed cookie into generic dma_chan structure 2012-03-13 11:36:06 +05:30
virt-dma.c dmaengine: virt-dma: add support for cyclic DMA periodic callbacks 2012-07-01 14:15:23 +01:00
virt-dma.h dmaengine: virt-dma: add support for cyclic DMA periodic callbacks 2012-07-01 14:15:23 +01:00