diff options
author | Russell King - ARM Linux <linux@arm.linux.org.uk> | 2012-03-06 17:35:07 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@linux.intel.com> | 2012-03-13 02:07:01 -0400 |
commit | f7fbce07c6ce26a25b4e0cb5f241c361fde87901 (patch) | |
tree | 66e6321b5ef49e18479ffeb1ed4fd5169e120f97 /drivers/dma/ioat | |
parent | 884485e1f12dcd39390f042e772cdbefc9ebb750 (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.c | 3 | ||||
-rw-r--r-- | drivers/dma/ioat/dma_v2.c | 3 | ||||
-rw-r--r-- | drivers/dma/ioat/dma_v3.c | 3 |
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; |