dma: mmp_pdma: add support for residue reporting
authorDaniel Mack <zonque@gmail.com>
Mon, 17 Feb 2014 11:29:06 +0000 (12:29 +0100)
committerVinod Koul <vinod.koul@intel.com>
Wed, 7 May 2014 07:03:40 +0000 (12:33 +0530)
commit1b38da264674d6a0fe26a63996b8f88b88c3da48
treefaf02404cae3dbd64740fdb1998e17e4ce3518d1
parentc906a3ec458742c95850c0c1cde9e8b68df25c01
dma: mmp_pdma: add support for residue reporting

A channel can accommodate more than one transaction, each consisting of
multiple descriptors, the last of which has the DCMD_ENDIRQEN bit set.

In order to report the channel's residue, we hence have to walk the
list of running descriptors, look for those which match the cookie,
and then try to find the descriptor which defines upper and lower
boundaries that embrace the current transport pointer. Once it is found,
walk forward until we find the descriptor that tells us about the end of
a transaction via a set DCMD_ENDIRQEN bit.

Signed-off-by: Daniel Mack <zonque@gmail.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
drivers/dma/mmp_pdma.c