diff options
author | Vinod Koul <vinod.koul@intel.com> | 2016-07-16 16:40:03 +0200 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2016-07-16 16:40:03 +0200 |
commit | 5debef8a4543663881692588449df46c94e7343c (patch) | |
tree | 3fd541f26aed2c0db998b20b4bee91799f7f829f /drivers/dma/edma.c | |
parent | Merge branch 'topic/bcm' into for-linus (diff) | |
parent | dmaengine: edma: Use early completion for intermediate paRAM set in slave_sg (diff) | |
download | linux-5debef8a4543663881692588449df46c94e7343c.tar.xz linux-5debef8a4543663881692588449df46c94e7343c.zip |
Merge branch 'topic/edma' into for-linus
Diffstat (limited to 'drivers/dma/edma.c')
-rw-r--r-- | drivers/dma/edma.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index 3c84cd8215f7..b95ef7482c52 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c @@ -1112,14 +1112,17 @@ static struct dma_async_tx_descriptor *edma_prep_slave_sg( edesc->absync = ret; edesc->residue += sg_dma_len(sg); - /* If this is the last in a current SG set of transactions, - enable interrupts so that next set is processed */ - if (!((i+1) % MAX_NR_SG)) - edesc->pset[i].param.opt |= TCINTEN; - - /* If this is the last set, enable completion interrupt flag */ if (i == sg_len - 1) + /* Enable completion interrupt */ edesc->pset[i].param.opt |= TCINTEN; + else if (!((i+1) % MAX_NR_SG)) + /* + * Enable early completion interrupt for the + * intermediateset. In this case the driver will be + * notified when the paRAM set is submitted to TC. This + * will allow more time to set up the next set of slots. + */ + edesc->pset[i].param.opt |= (TCINTEN | TCCMODE); } edesc->residue_stat = edesc->residue; |