linux-hardened/drivers/dma
Thomas Gleixner 740b41f788 dmaengine: edma: Provide granular accounting
The first slot in the ParamRAM of EDMA holds the current active
subtransfer. Depending on the direction we read either the source or
the destination address from there. In the internal psets we have the
address of the buffer(s).

In the cyclic case we only use the internal pset[0] which holds the
start address of the circular buffer and calculate the remaining room
to the end of the buffer.

In the SG case we read the current address and compare it to the
internal psets address and length.

- If the current address is outside of this range, the pset has been
  processed already and we mark it done, update the residue_stat value
  and process the next set. That avoids that we need to walk all
  processed psets for every invocation of tx_status.

- If its inside the range we know that we look at the current active
  set and stop the walk.

- In case of intermediate transfers we update the stats in the
  interrupt callback function before starting the next batch of
  transfers. The tx_status callback and the interrupt callback are
  serialized via vchan.lock.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
[joelf@ti.com: Hunk #2 in original patch manually applied]
Signed-off-by: Joel Fernandes <joelf@ti.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
2014-04-30 10:36:03 +05:30
..
bestcomm drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
dw dma: dw: Add suspend and resume handling for PCI mode DW_DMAC. 2014-03-26 11:52:03 +05:30
ioat ioat: fix tasklet tear down 2014-02-25 09:44:20 -08:00
ipu dmaengine: ipu: fix warnings from 64-bit dma_addr_t printouts 2013-11-13 14:10:48 +05:30
ppc4xx Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
sh shdma: add R-Car Audio DMAC peri peri driver 2014-03-29 19:38:09 +05:30
acpi-dma.c acpi-dma: convert to return error code when asked for channel 2014-02-11 23:30:50 +05:30
amba-pl08x.c dma: pl08x: Export pl08x_filter_id 2014-01-28 08:45:54 +05:30
at_hdmac.c dmaengine: at_hdmac: use tasklet_kill in teardown 2014-03-17 18:33:43 +05:30
at_hdmac_regs.h dmaengine: at_hdmac: remove unused function 2013-12-12 22:43:41 -08:00
bcm2835-dma.c dmaengine: Add DMA_PRIVATE to BCM2835 driver 2014-01-20 12:31:50 +05:30
coh901318.c dmaengine: coh901318: use DMA_COMPLETE for dma completion status 2013-10-25 11:15:56 +05:30
coh901318.h dma: coh901318: merge header files 2013-01-07 17:36:37 +01:00
coh901318_lli.c Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma 2013-02-26 09:24:48 -08:00
cppi41.c dma: cppi41: start tear down only if channel is busy 2014-03-11 16:22:43 +05:30
dma-jz4740.c dmaengine: jz4740: use DMA_COMPLETE for dma completion status 2013-10-25 11:15:58 +05:30
dmaengine.c acpi-dma: convert to return error code when asked for channel 2014-02-11 23:30:50 +05:30
dmaengine.h dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
dmatest.c Add new line to test result strings produced in verbose mode 2014-03-26 11:41:45 +05:30
edma.c dmaengine: edma: Provide granular accounting 2014-04-30 10:36:03 +05:30
ep93xx_dma.c dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
fsl-edma.c dma: fix eDMA driver as a subsys_initcall 2014-04-16 12:03:47 +05:30
fsldma.c dma: fix fsldma build warnings 2013-12-12 22:43:41 -08:00
fsldma.h DMA: Freescale: change BWC from 256 bytes to 1024 bytes 2014-01-20 13:13:22 +05:30
imx-dma.c dma: imx-dma: Add missing module owner field 2014-03-06 20:51:09 +05:30
imx-sdma.c dma: sdma: Add imx25 compatible 2014-02-18 17:10:49 +05:30
intel_mid_dma.c dmaengine: intel_mid_dma: use DMA_COMPLETE for dma completion status 2013-10-25 11:16:04 +05:30
intel_mid_dma_regs.h dma: fix comments 2012-09-01 08:57:12 -07:00
iop-adma.c Merge commit 'dmaengine-3.13-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/dmaengine 2013-11-16 12:02:36 +05:30
iovlock.c
k3dma.c dmaengine: k3dma: fix sparse warnings 2014-01-20 13:53:20 +05:30
Kconfig platform: Fix timberdale dependencies 2014-04-16 11:57:27 +05:30
Makefile dmaengine: add Qualcomm BAM dma driver 2014-04-05 20:44:26 +05:30
mmp_pdma.c dma: mmp_pdma: add IRQF_SHARED when request irq 2014-03-06 14:47:47 +05:30
mmp_tdma.c dma: mmp_tdma: move to generic device tree binding 2014-03-06 14:49:54 +05:30
moxart-dma.c dmaengine: Add MOXA ART DMA engine driver 2014-01-20 12:32:46 +05:30
mpc512x_dma.c drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
mv_xor.c dma: mv_xor: Silence a bunch of LPAE-related warnings 2014-02-12 16:21:17 -08:00
mv_xor.h dma: mv_xor: Fix mis-usage of mmio 'base' and 'high_base' registers 2013-11-14 11:04:42 -08:00
mxs-dma.c dma: mxs-dma: Use semaphores for cyclic DMA 2013-11-13 15:38:31 +05:30
of-dma.c dma: add channel request API that supports deferred probe 2013-12-10 17:46:48 +05:30
omap-dma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-04-10 08:55:08 -07:00
pch_dma.c dmaengine: pch_dma: use tasklet_kill in teardown 2014-03-17 18:34:11 +05:30
pl330.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
qcom_bam_dma.c dmaengine: add Qualcomm BAM dma driver 2014-04-05 20:44:26 +05:30
s3c24xx-dma.c dmaengine: s3c24xx-dma: make phy->irq signed for error handling 2014-03-11 14:23:18 +05:30
sa11x0-dma.c dmaengine: sa11x0: use DMA_COMPLETE for dma completion status 2013-10-25 11:16:13 +05:30
sirf-dma.c dmaengine: sirf: off by one in of_dma_sirfsoc_xlate() 2014-04-16 11:59:24 +05:30
ste_dma40.c dma: ste_dma40: don't dereference free:d descriptor 2014-02-17 14:06:58 +05:30
ste_dma40_ll.c dmaengine: ste_dma40_ll: Replace meaningless register set with comment 2013-06-04 11:12:10 +02:00
ste_dma40_ll.h dmaengine: ste_dma40: Remove unnecessary call to d40_phy_cfg() 2013-05-23 21:13:19 +02:00
tegra20-apb-dma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2014-01-29 20:27:23 -08:00
timb_dma.c dmaengine: remove DMA unmap from drivers 2013-11-14 11:04:38 -08:00
TODO dmaengine: remove ste_dma40 from issue_pending TODO 2011-07-14 04:02:08 +05:30
txx9dmac.c dma: fix build warnings in txx9 2013-12-12 22:43:41 -08:00
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 dma: fix vchan_cookie_complete() debug print 2014-01-26 17:33:45 +05:30