diff options
author | Andy Shevchenko <andriy.shevchenko@linux.intel.com> | 2016-01-26 13:43:13 +0200 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2016-02-15 22:06:45 +0530 |
commit | a2826e662eb13a041078260692b4e023ed5cbf62 (patch) | |
tree | 796ddeaa581305e4fe769a7d7a3e59525dd28981 /drivers/dma/idma64.c | |
parent | 92e963f50fc74041b5e9e744c330dca48e04f08d (diff) | |
download | linux-stable-a2826e662eb13a041078260692b4e023ed5cbf62.tar.gz linux-stable-a2826e662eb13a041078260692b4e023ed5cbf62.tar.bz2 linux-stable-a2826e662eb13a041078260692b4e023ed5cbf62.zip |
dmaengine: idma64: clear LLP_[SD]_EN bits in last descriptor
The datasheet requires that the user must clear LLP_[SD]_EN bits whenever
LLP.LOC is zero, i.e. in the last descriptor of a multi-block chain.
Make the driver do this.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'drivers/dma/idma64.c')
-rw-r--r-- | drivers/dma/idma64.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/dma/idma64.c b/drivers/dma/idma64.c index 3cb7b2c78197..1953e57505f4 100644 --- a/drivers/dma/idma64.c +++ b/drivers/dma/idma64.c @@ -289,6 +289,9 @@ static void idma64_desc_fill(struct idma64_chan *idma64c, /* Trigger an interrupt after the last block is transfered */ lli->ctllo |= IDMA64C_CTLL_INT_EN; + + /* Disable LLP transfer in the last block */ + lli->ctllo &= ~(IDMA64C_CTLL_LLP_S_EN | IDMA64C_CTLL_LLP_D_EN); } static struct dma_async_tx_descriptor *idma64_prep_slave_sg( |