From ea743c8b02c3ba74b732682b3b06d6568e1104f0 Mon Sep 17 00:00:00 2001 From: Vinod Koul Date: Fri, 11 May 2012 11:48:21 +0530 Subject: [PATCH] --- yaml --- r: 300313 b: refs/heads/master c: d41160524d8d8ee721296e5c7e15f1ed727df7eb h: refs/heads/master i: 300311: f89336f527f068f8457410ef2fbe5d738cf204e2 v: v3 --- [refs] | 2 +- trunk/drivers/dma/at_hdmac.c | 4 +++- trunk/drivers/dma/ep93xx_dma.c | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index ffd6dfe29059..535acfb197ce 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: eab21585580344c8533d5e7bc4edea27ad1e268f +refs/heads/master: d41160524d8d8ee721296e5c7e15f1ed727df7eb diff --git a/trunk/drivers/dma/at_hdmac.c b/trunk/drivers/dma/at_hdmac.c index 445fdf811695..bf0d7e4e345b 100644 --- a/trunk/drivers/dma/at_hdmac.c +++ b/trunk/drivers/dma/at_hdmac.c @@ -245,7 +245,9 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) dev_vdbg(chan2dev(&atchan->chan_common), "descriptor %u complete\n", txd->cookie); - dma_cookie_complete(txd); + /* mark the descriptor as complete for non cyclic cases only */ + if (!atc_chan_is_cyclic(atchan)) + dma_cookie_complete(txd); /* move children to free_list */ list_splice_init(&desc->tx_list, &atchan->free_list); diff --git a/trunk/drivers/dma/ep93xx_dma.c b/trunk/drivers/dma/ep93xx_dma.c index e6f133b78dc2..f6e9b572b998 100644 --- a/trunk/drivers/dma/ep93xx_dma.c +++ b/trunk/drivers/dma/ep93xx_dma.c @@ -703,7 +703,9 @@ static void ep93xx_dma_tasklet(unsigned long data) desc = ep93xx_dma_get_active(edmac); if (desc) { if (desc->complete) { - dma_cookie_complete(&desc->txd); + /* mark descriptor complete for non cyclic case only */ + if (!test_bit(EP93XX_DMA_IS_CYCLIC, &edmac->flags)) + dma_cookie_complete(&desc->txd); list_splice_init(&edmac->active, &list); } callback = desc->txd.callback;