diff options
Diffstat (limited to 'drivers/dma/iop-adma.c')
| -rw-r--r-- | drivers/dma/iop-adma.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c index 71fba82462c..c7a9306d951 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) | |||
| 411 | int slot_cnt; | 411 | int slot_cnt; |
| 412 | int slots_per_op; | 412 | int slots_per_op; |
| 413 | dma_cookie_t cookie; | 413 | dma_cookie_t cookie; |
| 414 | dma_addr_t next_dma; | ||
| 414 | 415 | ||
| 415 | grp_start = sw_desc->group_head; | 416 | grp_start = sw_desc->group_head; |
| 416 | slot_cnt = grp_start->slot_cnt; | 417 | slot_cnt = grp_start->slot_cnt; |
| @@ -425,12 +426,12 @@ iop_adma_tx_submit(struct dma_async_tx_descriptor *tx) | |||
| 425 | &old_chain_tail->chain_node); | 426 | &old_chain_tail->chain_node); |
| 426 | 427 | ||
| 427 | /* fix up the hardware chain */ | 428 | /* fix up the hardware chain */ |
| 428 | iop_desc_set_next_desc(old_chain_tail, grp_start->async_tx.phys); | 429 | next_dma = grp_start->async_tx.phys; |
| 430 | iop_desc_set_next_desc(old_chain_tail, next_dma); | ||
| 431 | BUG_ON(iop_desc_get_next_desc(old_chain_tail) != next_dma); /* flush */ | ||
| 429 | 432 | ||
| 430 | /* 1/ don't add pre-chained descriptors | 433 | /* check for pre-chained descriptors */ |
| 431 | * 2/ dummy read to flush next_desc write | 434 | iop_paranoia(iop_desc_get_next_desc(sw_desc)); |
| 432 | */ | ||
| 433 | BUG_ON(iop_desc_get_next_desc(sw_desc)); | ||
| 434 | 435 | ||
| 435 | /* increment the pending count by the number of slots | 436 | /* increment the pending count by the number of slots |
| 436 | * memcpy operations have a 1:1 (slot:operation) relation | 437 | * memcpy operations have a 1:1 (slot:operation) relation |
