linux/drivers/dma
Ludovic Desroches c7d4bd1d97 dmaengine: at_xdmac: fix residue computation
[ Upstream commit 25c5e9626c ]

When computing the residue we need two pieces of information: the current
descriptor and the remaining data of the current descriptor. To get
that information, we need to read consecutively two registers but we
can't do it in an atomic way. For that reason, we have to check manually
that current descriptor has not changed.

Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Suggested-by: Cyrille Pitchen <cyrille.pitchen@atmel.com>
Reported-by: David Engraf <david.engraf@sysgo.com>
Tested-by: David Engraf <david.engraf@sysgo.com>
Fixes: e1f7c9eee7 ("dmaengine: at_xdmac: creation of the atmel
eXtended DMA Controller driver")
Cc: stable@vger.kernel.org #4.1 and later
Signed-off-by: Vinod Koul <vinod.koul@intel.com>

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2016-03-22 11:10:35 -04:00
..
bestcomm dmaengine: constify of_device_id array 2015-03-18 22:13:14 +05:30
dw dmaengine: dw: disable BLOCK IRQs for non-cyclic xfer 2016-03-04 10:25:43 -05:00
hsu dmaengine: hsu: Fix memory leak when stopping a running transfer 2015-06-02 18:33:08 +05:30
ioat Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
ipu dmaengine: ipu-idmac: Split device_control 2014-12-22 12:28:59 +05:30
ppc4xx dmaengine: Remove FSF mailing addresses 2015-03-16 22:28:15 +05:30
sh dmaengine: usb-dmac: Protect PM-only functions to kill warning 2015-04-27 08:36:02 +05:30
xilinx dmaengine: xilinx-dma: move header file to common location 2015-03-17 16:23:21 +05:30
acpi-dma.c resources: Move struct resource_list_entry from ACPI into resource core 2015-02-05 15:09:25 +01:00
amba-pl08x.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
at_hdmac.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
at_hdmac_regs.h dmaengine: at_hdmac: Fix calculation of the residual bytes 2015-03-13 14:58:31 +05:30
at_xdmac.c dmaengine: at_xdmac: fix residue computation 2016-03-22 11:10:35 -04:00
bcm2835-dma.c dmaengine: bcm2835-dma: Fix memory leak when stopping a running transfer 2015-03-30 23:17:08 +05:30
coh901318.c dmaengine: coh901318: fix function return types build warnings 2015-01-18 20:01:36 +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 dmaengine: cppi41: add missing bitfields 2015-04-11 21:12:58 +05:30
dma-jz4740.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
dma-jz4780.c dmaengine: jz4780: add driver for the Ingenic JZ4780 DMA controller 2015-04-01 08:43:49 +05:30
dmaengine.c dmaengine: Fix choppy sound because of unimplemented resume 2015-06-12 15:22:26 +05:30
dmaengine.h dmaengine: consolidate initialization of cookies 2012-03-13 11:37:22 +05:30
dmatest.c dmatest: move src_off, dst_off, len inside loop 2015-02-04 18:17:21 -08:00
edma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
ep93xx_dma.c dmaengine: ep93xx: update the driver comments 2014-12-22 20:27:25 +05:30
fsl-edma.c dmaengine: fsl-edma: Declare slave capabilities for the generic code 2014-12-22 12:33:23 +05:30
fsl_raid.c dmaengine: fsl_raid: statify fsl_re_chan_probe 2015-04-02 16:11:35 +05:30
fsl_raid.h dmaengine: Driver support for FSL RaidEngine device. 2015-04-02 16:10:27 +05:30
fsldma.c dmaengine: fsldma: remove the unused variable 2015-01-13 23:58:08 +05:30
fsldma.h dmaengine: fsldma: declare slave capabilities for the generic code 2015-01-13 23:58:08 +05:30
img-mdc-dma.c dmaengine: img-mdc: remove device_alloc_chan_resources handler 2015-03-18 22:44:58 +05:30
imx-dma.c Merge branch 'topic/slave_caps_device_control_fix_rebased' into for-linus 2015-02-02 16:55:35 -08:00
imx-sdma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
iop-adma.c dmaengine: Remove FSF mailing addresses 2015-03-16 22:28:15 +05:30
k3dma.c Merge branch 'topic/alloc_removal' into for-linus 2015-03-18 22:46:19 +05:30
Kconfig dmaengine: xgene: Set hardware dependency 2015-04-27 08:36:02 +05:30
Makefile Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
mic_x100_dma.c dma: MIC X100 DMA Driver 2014-07-12 09:57:42 -07:00
mic_x100_dma.h dma: MIC X100 DMA Driver 2014-07-12 09:57:42 -07:00
mmp_pdma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
mmp_tdma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
moxart-dma.c dmaengine: moxart-dma: Fix memory leak when stopping a running transfer 2015-03-30 23:17:08 +05:30
mpc512x_dma.c dmaengine: constify of_device_id array 2015-03-18 22:13:14 +05:30
mv_xor.c dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup 2015-08-03 09:29:12 -07:00
mv_xor.h dmaengine: mv_xor: bug fix for racing condition in descriptors cleanup 2015-08-03 09:29:12 -07:00
mxs-dma.c dmaengine: mxs-dma: Declare slave capabilities for the generic code 2015-01-13 23:48:40 +05:30
nbpfaxi.c dmaengine: nbpfaxi: update the driver comments 2014-12-22 20:28:04 +05:30
of-dma.c dmaengine: export symbol of of_dma_request_slave_channel() 2015-03-07 15:03:13 +00:00
omap-dma.c dmaengine: omap-dma: Fix memory leak when terminating running transfer 2015-03-30 23:17:08 +05:30
pch_dma.c dmaengine: pch_dma: fix memory leak on failure path in pch_dma_probe() 2015-04-17 23:41:46 +05:30
pl330.c dmaengine: pl330: Really fix choppy sound because of wrong residue calculation 2015-08-16 20:52:11 -07:00
qcom_bam_dma.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
s3c24xx-dma.c dmaengine: s3c24xx: remove device_alloc_chan_resources handler 2015-03-18 22:45:36 +05:30
sa11x0-dma.c dmaengine: sa11x0: report slave capabilities to upper layers 2015-04-17 23:24:35 +05:30
sirf-dma.c dmaengine: constify of_device_id array 2015-03-18 22:13:14 +05:30
ste_dma40.c Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-04-24 09:49:37 -07:00
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
sun6i-dma.c Merge branch 'topic/alloc_removal' into for-linus 2015-03-18 22:46:19 +05:30
tegra20-apb-dma.c dmaengine: tegra: add slave capabilities reporting 2015-01-14 00:00:30 +05:30
timb_dma.c dmaengine: td: Rename device_control 2014-12-22 12:33:22 +05:30
TODO dmaengine: dw: don't perform DMA when dmaengine_submit is called 2014-07-15 22:14:30 +05:30
txx9dmac.c dmaengine: txx9: Rename device_control 2014-12-22 12:33:22 +05:30
txx9dmac.h MIPS: Replace MIPS-specific 64BIT_PHYS_ADDR with generic PHYS_ADDR_T_64BIT 2014-11-24 22:46:44 +01:00
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
xgene-dma.c dmaengine: fix platform_no_drv_owner.cocci warnings 2015-04-17 23:43:18 +05:30