dmaengine: at_xdmac: fix residue computation
authorLudovic Desroches <ludovic.desroches@atmel.com>
Thu, 10 Mar 2016 09:17:55 +0000 (10:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 16 Mar 2016 15:42:58 +0000 (08:42 -0700)
commit782cfeb248a789e4ee9d9bcea1211e718df76f3b
treeb3db5df8a0e27db2f5a17aff1dbdc34abcd4b70d
parentf3c83858c6aee893f8a3555aab3b72ae72f0f39f
dmaengine: at_xdmac: fix residue computation

commit 25c5e9626ca4d40928dc9c44f009ce2ed0a739e7 upstream.

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: e1f7c9eee707 ("dmaengine: at_xdmac: creation of the atmel
eXtended DMA Controller driver")
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/at_xdmac.c