fsldma: Add a completed cookie updated action in DMA finish interrupt.

The patch 'fsldma: do not cleanup descriptors in hardirq context'
(commit 222ccf9ab838a1ca7163969fabd2cddc10403fb5) removed descriptors
cleanup function to tasklet but the completed cookie do not updated.
Thus, the DMA controller will get lots of duplicated transfer
interrupts. Just make a completed cookie update in interrupt handler.
And keep other cleanup jobs in tasklet function.

Tested-by: Sebastian Siewior <bigeasy@linutronix.de>
Signed-off-by: Zhang Wei <wei.zhang@freescale.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>

authored by Zhang Wei and committed by Dan Williams 9c98718e 2187c269

+1 -1
+1 -1
drivers/dma/fsldma.c
··· 539 539 540 540 spin_lock_irqsave(&fsl_chan->desc_lock, flags); 541 541 542 - fsl_dma_update_completed_cookie(fsl_chan); 543 542 dev_dbg(fsl_chan->dev, "chan completed_cookie = %d\n", 544 543 fsl_chan->completed_cookie); 545 544 list_for_each_entry_safe(desc, _desc, &fsl_chan->ld_queue, node) { ··· 709 710 dev_dbg(fsl_chan->dev, "event: clndar %p, nlndar %p\n", 710 711 (void *)get_cdar(fsl_chan), (void *)get_ndar(fsl_chan)); 711 712 stat &= ~FSL_DMA_SR_EOSI; 713 + fsl_dma_update_completed_cookie(fsl_chan); 712 714 } 713 715 714 716 /* If it current transfer is the end-of-transfer,