diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:53:02 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:53:02 -0400 |
commit | 308136d1abcb2d759bac40ed4f5d42ac4af59d8b (patch) | |
tree | c0cf21c5144929332a5f99d1aff8393e6cddcbbb | |
parent | eda34234578fd822c950fd06b5c5ff7ac08b3001 (diff) |
iop-adma: implement a private tx_list
Drop iop-adma's use of tx_list from struct dma_async_tx_descriptor in
preparation for removal of this field.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | arch/arm/include/asm/hardware/iop_adma.h | 2 | ||||
-rw-r--r-- | drivers/dma/iop-adma.c | 9 |
2 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm/include/asm/hardware/iop_adma.h b/arch/arm/include/asm/hardware/iop_adma.h index 385c6e8cbbd2..95dc133d0a7f 100644 --- a/arch/arm/include/asm/hardware/iop_adma.h +++ b/arch/arm/include/asm/hardware/iop_adma.h | |||
@@ -86,6 +86,7 @@ struct iop_adma_chan { | |||
86 | * @idx: pool index | 86 | * @idx: pool index |
87 | * @unmap_src_cnt: number of xor sources | 87 | * @unmap_src_cnt: number of xor sources |
88 | * @unmap_len: transaction bytecount | 88 | * @unmap_len: transaction bytecount |
89 | * @tx_list: list of descriptors that are associated with one operation | ||
89 | * @async_tx: support for the async_tx api | 90 | * @async_tx: support for the async_tx api |
90 | * @group_list: list of slots that make up a multi-descriptor transaction | 91 | * @group_list: list of slots that make up a multi-descriptor transaction |
91 | * for example transfer lengths larger than the supported hw max | 92 | * for example transfer lengths larger than the supported hw max |
@@ -102,6 +103,7 @@ struct iop_adma_desc_slot { | |||
102 | u16 idx; | 103 | u16 idx; |
103 | u16 unmap_src_cnt; | 104 | u16 unmap_src_cnt; |
104 | size_t unmap_len; | 105 | size_t unmap_len; |
106 | struct list_head tx_list; | ||
105 | struct dma_async_tx_descriptor async_tx; | 107 | struct dma_async_tx_descriptor async_tx; |
106 | union { | 108 | union { |
107 | u32 *xor_check_result; | 109 | u32 *xor_check_result; |
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c index 2f052265122f..9f6c16f8e2be 100644 --- a/drivers/dma/iop-adma.c +++ b/drivers/dma/iop-adma.c | |||
@@ -370,7 +370,7 @@ retry: | |||
370 | } | 370 | } |
371 | alloc_tail->group_head = alloc_start; | 371 | alloc_tail->group_head = alloc_start; |
372 | alloc_tail->async_tx.cookie = -EBUSY; | 372 | alloc_tail->async_tx.cookie = -EBUSY; |
373 | list_splice(&chain, &alloc_tail->async_tx.tx_list); | 373 | list_splice(&chain, &alloc_tail->tx_list); |
374 | iop_chan->last_used = last_used; | 374 | iop_chan->last_used = last_used; |
375 | iop_desc_clear_next_desc(alloc_start); | 375 | iop_desc_clear_next_desc(alloc_start); |
376 | iop_desc_clear_next_desc(alloc_tail); | 376 | iop_desc_clear_next_desc(alloc_tail); |
@@ -429,7 +429,7 @@ iop_adma_tx_submit(struct dma_async_tx_descriptor *tx) | |||
429 | 429 | ||
430 | old_chain_tail = list_entry(iop_chan->chain.prev, | 430 | old_chain_tail = list_entry(iop_chan->chain.prev, |
431 | struct iop_adma_desc_slot, chain_node); | 431 | struct iop_adma_desc_slot, chain_node); |
432 | list_splice_init(&sw_desc->async_tx.tx_list, | 432 | list_splice_init(&sw_desc->tx_list, |
433 | &old_chain_tail->chain_node); | 433 | &old_chain_tail->chain_node); |
434 | 434 | ||
435 | /* fix up the hardware chain */ | 435 | /* fix up the hardware chain */ |
@@ -496,6 +496,7 @@ static int iop_adma_alloc_chan_resources(struct dma_chan *chan) | |||
496 | 496 | ||
497 | dma_async_tx_descriptor_init(&slot->async_tx, chan); | 497 | dma_async_tx_descriptor_init(&slot->async_tx, chan); |
498 | slot->async_tx.tx_submit = iop_adma_tx_submit; | 498 | slot->async_tx.tx_submit = iop_adma_tx_submit; |
499 | INIT_LIST_HEAD(&slot->tx_list); | ||
499 | INIT_LIST_HEAD(&slot->chain_node); | 500 | INIT_LIST_HEAD(&slot->chain_node); |
500 | INIT_LIST_HEAD(&slot->slot_node); | 501 | INIT_LIST_HEAD(&slot->slot_node); |
501 | hw_desc = (char *) iop_chan->device->dma_desc_pool; | 502 | hw_desc = (char *) iop_chan->device->dma_desc_pool; |
@@ -1296,7 +1297,7 @@ static void iop_chan_start_null_memcpy(struct iop_adma_chan *iop_chan) | |||
1296 | if (sw_desc) { | 1297 | if (sw_desc) { |
1297 | grp_start = sw_desc->group_head; | 1298 | grp_start = sw_desc->group_head; |
1298 | 1299 | ||
1299 | list_splice_init(&sw_desc->async_tx.tx_list, &iop_chan->chain); | 1300 | list_splice_init(&sw_desc->tx_list, &iop_chan->chain); |
1300 | async_tx_ack(&sw_desc->async_tx); | 1301 | async_tx_ack(&sw_desc->async_tx); |
1301 | iop_desc_init_memcpy(grp_start, 0); | 1302 | iop_desc_init_memcpy(grp_start, 0); |
1302 | iop_desc_set_byte_count(grp_start, iop_chan, 0); | 1303 | iop_desc_set_byte_count(grp_start, iop_chan, 0); |
@@ -1352,7 +1353,7 @@ static void iop_chan_start_null_xor(struct iop_adma_chan *iop_chan) | |||
1352 | sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); | 1353 | sw_desc = iop_adma_alloc_slots(iop_chan, slot_cnt, slots_per_op); |
1353 | if (sw_desc) { | 1354 | if (sw_desc) { |
1354 | grp_start = sw_desc->group_head; | 1355 | grp_start = sw_desc->group_head; |
1355 | list_splice_init(&sw_desc->async_tx.tx_list, &iop_chan->chain); | 1356 | list_splice_init(&sw_desc->tx_list, &iop_chan->chain); |
1356 | async_tx_ack(&sw_desc->async_tx); | 1357 | async_tx_ack(&sw_desc->async_tx); |
1357 | iop_desc_init_null_xor(grp_start, 2, 0); | 1358 | iop_desc_init_null_xor(grp_start, 2, 0); |
1358 | iop_desc_set_byte_count(grp_start, iop_chan, 0); | 1359 | iop_desc_set_byte_count(grp_start, iop_chan, 0); |