diff options
-rw-r--r-- | drivers/dma/mv_xor.c | 7 | ||||
-rw-r--r-- | drivers/dma/mv_xor.h | 4 |
2 files changed, 6 insertions, 5 deletions
diff --git a/drivers/dma/mv_xor.c b/drivers/dma/mv_xor.c index 3f23eabe09f2..466ab10c1ff1 100644 --- a/drivers/dma/mv_xor.c +++ b/drivers/dma/mv_xor.c | |||
@@ -517,7 +517,7 @@ retry: | |||
517 | } | 517 | } |
518 | alloc_tail->group_head = alloc_start; | 518 | alloc_tail->group_head = alloc_start; |
519 | alloc_tail->async_tx.cookie = -EBUSY; | 519 | alloc_tail->async_tx.cookie = -EBUSY; |
520 | list_splice(&chain, &alloc_tail->async_tx.tx_list); | 520 | list_splice(&chain, &alloc_tail->tx_list); |
521 | mv_chan->last_used = last_used; | 521 | mv_chan->last_used = last_used; |
522 | mv_desc_clear_next_desc(alloc_start); | 522 | mv_desc_clear_next_desc(alloc_start); |
523 | mv_desc_clear_next_desc(alloc_tail); | 523 | mv_desc_clear_next_desc(alloc_tail); |
@@ -565,14 +565,14 @@ mv_xor_tx_submit(struct dma_async_tx_descriptor *tx) | |||
565 | cookie = mv_desc_assign_cookie(mv_chan, sw_desc); | 565 | cookie = mv_desc_assign_cookie(mv_chan, sw_desc); |
566 | 566 | ||
567 | if (list_empty(&mv_chan->chain)) | 567 | if (list_empty(&mv_chan->chain)) |
568 | list_splice_init(&sw_desc->async_tx.tx_list, &mv_chan->chain); | 568 | list_splice_init(&sw_desc->tx_list, &mv_chan->chain); |
569 | else { | 569 | else { |
570 | new_hw_chain = 0; | 570 | new_hw_chain = 0; |
571 | 571 | ||
572 | old_chain_tail = list_entry(mv_chan->chain.prev, | 572 | old_chain_tail = list_entry(mv_chan->chain.prev, |
573 | struct mv_xor_desc_slot, | 573 | struct mv_xor_desc_slot, |
574 | chain_node); | 574 | chain_node); |
575 | list_splice_init(&grp_start->async_tx.tx_list, | 575 | list_splice_init(&grp_start->tx_list, |
576 | &old_chain_tail->chain_node); | 576 | &old_chain_tail->chain_node); |
577 | 577 | ||
578 | if (!mv_can_chain(grp_start)) | 578 | if (!mv_can_chain(grp_start)) |
@@ -632,6 +632,7 @@ static int mv_xor_alloc_chan_resources(struct dma_chan *chan) | |||
632 | slot->async_tx.tx_submit = mv_xor_tx_submit; | 632 | slot->async_tx.tx_submit = mv_xor_tx_submit; |
633 | INIT_LIST_HEAD(&slot->chain_node); | 633 | INIT_LIST_HEAD(&slot->chain_node); |
634 | INIT_LIST_HEAD(&slot->slot_node); | 634 | INIT_LIST_HEAD(&slot->slot_node); |
635 | INIT_LIST_HEAD(&slot->tx_list); | ||
635 | hw_desc = (char *) mv_chan->device->dma_desc_pool; | 636 | hw_desc = (char *) mv_chan->device->dma_desc_pool; |
636 | slot->async_tx.phys = | 637 | slot->async_tx.phys = |
637 | (dma_addr_t) &hw_desc[idx * MV_XOR_SLOT_SIZE]; | 638 | (dma_addr_t) &hw_desc[idx * MV_XOR_SLOT_SIZE]; |
diff --git a/drivers/dma/mv_xor.h b/drivers/dma/mv_xor.h index 06cafe1ef521..977b592e976b 100644 --- a/drivers/dma/mv_xor.h +++ b/drivers/dma/mv_xor.h | |||
@@ -126,9 +126,8 @@ struct mv_xor_chan { | |||
126 | * @idx: pool index | 126 | * @idx: pool index |
127 | * @unmap_src_cnt: number of xor sources | 127 | * @unmap_src_cnt: number of xor sources |
128 | * @unmap_len: transaction bytecount | 128 | * @unmap_len: transaction bytecount |
129 | * @tx_list: list of slots that make up a multi-descriptor transaction | ||
129 | * @async_tx: support for the async_tx api | 130 | * @async_tx: support for the async_tx api |
130 | * @group_list: list of slots that make up a multi-descriptor transaction | ||
131 | * for example transfer lengths larger than the supported hw max | ||
132 | * @xor_check_result: result of zero sum | 131 | * @xor_check_result: result of zero sum |
133 | * @crc32_result: result crc calculation | 132 | * @crc32_result: result crc calculation |
134 | */ | 133 | */ |
@@ -145,6 +144,7 @@ struct mv_xor_desc_slot { | |||
145 | u16 unmap_src_cnt; | 144 | u16 unmap_src_cnt; |
146 | u32 value; | 145 | u32 value; |
147 | size_t unmap_len; | 146 | size_t unmap_len; |
147 | struct list_head tx_list; | ||
148 | struct dma_async_tx_descriptor async_tx; | 148 | struct dma_async_tx_descriptor async_tx; |
149 | union { | 149 | union { |
150 | u32 *xor_check_result; | 150 | u32 *xor_check_result; |