summaryrefslogtreecommitdiffstats
path: root/drivers/dma/iop-adma.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-11-12 11:48:54 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2008-11-12 11:48:54 -0800
commit4416662ece4e88aca687b28d7c059336b47478ba (patch)
tree6059210bf94c052f0450044fe48ddce017d3660d /drivers/dma/iop-adma.c
parent3edac25f2e8ac8c2a84904c140e1aeb434e73e75 (diff)
parent06190d8415219d9eef7d8f04b52a109e34575a76 (diff)
downloadblackbird-op-linux-4416662ece4e88aca687b28d7c059336b47478ba.tar.gz
blackbird-op-linux-4416662ece4e88aca687b28d7c059336b47478ba.zip
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx: dmaengine: struct device - replace bus_id with dev_name(), dev_set_name() iop-adma: use iop_paranoia() for debug BUG_ONs iop-adma: add a dummy read to flush next descriptor update
Diffstat (limited to 'drivers/dma/iop-adma.c')
-rw-r--r--drivers/dma/iop-adma.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c
index 71fba82462cb..c7a9306d951d 100644
--- a/drivers/dma/iop-adma.c
+++ b/drivers/dma/iop-adma.c
@@ -411,6 +411,7 @@ iop_adma_tx_submit(struct dma_async_tx_descriptor *tx)
int slot_cnt;
int slots_per_op;
dma_cookie_t cookie;
+ dma_addr_t next_dma;
grp_start = sw_desc->group_head;
slot_cnt = grp_start->slot_cnt;
@@ -425,12 +426,12 @@ iop_adma_tx_submit(struct dma_async_tx_descriptor *tx)
&old_chain_tail->chain_node);
/* fix up the hardware chain */
- iop_desc_set_next_desc(old_chain_tail, grp_start->async_tx.phys);
+ next_dma = grp_start->async_tx.phys;
+ iop_desc_set_next_desc(old_chain_tail, next_dma);
+ BUG_ON(iop_desc_get_next_desc(old_chain_tail) != next_dma); /* flush */
- /* 1/ don't add pre-chained descriptors
- * 2/ dummy read to flush next_desc write
- */
- BUG_ON(iop_desc_get_next_desc(sw_desc));
+ /* check for pre-chained descriptors */
+ iop_paranoia(iop_desc_get_next_desc(sw_desc));
/* increment the pending count by the number of slots
* memcpy operations have a 1:1 (slot:operation) relation
OpenPOWER on IntegriCloud