aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma/ioat
diff options
context:
space:
mode:
authorRussell King - ARM Linux <linux@arm.linux.org.uk>2012-03-06 17:35:07 -0500
committerVinod Koul <vinod.koul@linux.intel.com>2012-03-13 02:07:01 -0400
commitf7fbce07c6ce26a25b4e0cb5f241c361fde87901 (patch)
tree66e6321b5ef49e18479ffeb1ed4fd5169e120f97 /drivers/dma/ioat
parent884485e1f12dcd39390f042e772cdbefc9ebb750 (diff)
dmaengine: provide a common function for completing a dma descriptor
Provide a common function to do the cookie mechanics for completing a DMA descriptor. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Tested-by: Linus Walleij <linus.walleij@linaro.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Jassi Brar <jassisinghbrar@gmail.com> [imx-sdma.c & mxs-dma.c] Tested-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
Diffstat (limited to 'drivers/dma/ioat')
-rw-r--r--drivers/dma/ioat/dma.c3
-rw-r--r--drivers/dma/ioat/dma_v2.c3
-rw-r--r--drivers/dma/ioat/dma_v3.c3
3 files changed, 3 insertions, 6 deletions
diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c
index 5c06117ac682..b0517c86c1bb 100644
--- a/drivers/dma/ioat/dma.c
+++ b/drivers/dma/ioat/dma.c
@@ -600,8 +600,7 @@ static void __cleanup(struct ioat_dma_chan *ioat, unsigned long phys_complete)
600 */ 600 */
601 dump_desc_dbg(ioat, desc); 601 dump_desc_dbg(ioat, desc);
602 if (tx->cookie) { 602 if (tx->cookie) {
603 chan->common.completed_cookie = tx->cookie; 603 dma_cookie_complete(tx);
604 tx->cookie = 0;
605 ioat_dma_unmap(chan, tx->flags, desc->len, desc->hw); 604 ioat_dma_unmap(chan, tx->flags, desc->len, desc->hw);
606 ioat->active -= desc->hw->tx_cnt; 605 ioat->active -= desc->hw->tx_cnt;
607 if (tx->callback) { 606 if (tx->callback) {
diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c
index 17ecacb70d40..e8e110ff3d96 100644
--- a/drivers/dma/ioat/dma_v2.c
+++ b/drivers/dma/ioat/dma_v2.c
@@ -149,8 +149,7 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
149 dump_desc_dbg(ioat, desc); 149 dump_desc_dbg(ioat, desc);
150 if (tx->cookie) { 150 if (tx->cookie) {
151 ioat_dma_unmap(chan, tx->flags, desc->len, desc->hw); 151 ioat_dma_unmap(chan, tx->flags, desc->len, desc->hw);
152 chan->common.completed_cookie = tx->cookie; 152 dma_cookie_complete(tx);
153 tx->cookie = 0;
154 if (tx->callback) { 153 if (tx->callback) {
155 tx->callback(tx->callback_param); 154 tx->callback(tx->callback_param);
156 tx->callback = NULL; 155 tx->callback = NULL;
diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c
index d4afac741e8a..1bda46c43bd7 100644
--- a/drivers/dma/ioat/dma_v3.c
+++ b/drivers/dma/ioat/dma_v3.c
@@ -277,9 +277,8 @@ static void __cleanup(struct ioat2_dma_chan *ioat, unsigned long phys_complete)
277 dump_desc_dbg(ioat, desc); 277 dump_desc_dbg(ioat, desc);
278 tx = &desc->txd; 278 tx = &desc->txd;
279 if (tx->cookie) { 279 if (tx->cookie) {
280 chan->common.completed_cookie = tx->cookie; 280 dma_cookie_complete(tx);
281 ioat3_dma_unmap(ioat, desc, idx + i); 281 ioat3_dma_unmap(ioat, desc, idx + i);
282 tx->cookie = 0;
283 if (tx->callback) { 282 if (tx->callback) {
284 tx->callback(tx->callback_param); 283 tx->callback(tx->callback_param);
285 tx->callback = NULL; 284 tx->callback = NULL;