diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-20 16:20:24 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-20 16:20:24 -0500 |
commit | e6d69a60b77a6ea8d5f9d41765c7571bb8d45531 (patch) | |
tree | 4ea3fe7c49a864da2ce7ffb51a703661826dc15d /arch/arm | |
parent | 5a1efc6e68a095917277459091fafba6a6baef17 (diff) | |
parent | df12a3178d340319b1955be6b973a4eb84aff754 (diff) |
Merge branch 'next' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine changes from Vinod Koul:
"This brings for slave dmaengine:
- Change dma notification flag to DMA_COMPLETE from DMA_SUCCESS as
dmaengine can only transfer and not verify validaty of dma
transfers
- Bunch of fixes across drivers:
- cppi41 driver fixes from Daniel
- 8 channel freescale dma engine support and updated bindings from
Hongbo
- msx-dma fixes and cleanup by Markus
- DMAengine updates from Dan:
- Bartlomiej and Dan finalized a rework of the dma address unmap
implementation.
- In the course of testing 1/ a collection of enhancements to
dmatest fell out. Notably basic performance statistics, and
fixed / enhanced test control through new module parameters
'run', 'wait', 'noverify', and 'verbose'. Thanks to Andriy and
Linus [Walleij] for their review.
- Testing the raid related corner cases of 1/ triggered bugs in
the recently added 16-source operation support in the ioatdma
driver.
- Some minor fixes / cleanups to mv_xor and ioatdma"
* 'next' of git://git.infradead.org/users/vkoul/slave-dma: (99 commits)
dma: mv_xor: Fix mis-usage of mmio 'base' and 'high_base' registers
dma: mv_xor: Remove unneeded NULL address check
ioat: fix ioat3_irq_reinit
ioat: kill msix_single_vector support
raid6test: add new corner case for ioatdma driver
ioatdma: clean up sed pool kmem_cache
ioatdma: fix selection of 16 vs 8 source path
ioatdma: fix sed pool selection
ioatdma: Fix bug in selftest after removal of DMA_MEMSET.
dmatest: verbose mode
dmatest: convert to dmaengine_unmap_data
dmatest: add a 'wait' parameter
dmatest: add basic performance metrics
dmatest: add support for skipping verification and random data setup
dmatest: use pseudo random numbers
dmatest: support xor-only, or pq-only channels in tests
dmatest: restore ability to start test at module load and init
dmatest: cleanup redundant "dmatest: " prefixes
dmatest: replace stored results mechanism, with uniform messages
Revert "dmatest: append verify result to results"
...
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/common/edma.c | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/iop3xx-adma.h | 30 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/iop_adma.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-iop13xx/include/mach/adma.h | 26 |
4 files changed, 2 insertions, 62 deletions
diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c index 8e1a0245907f..41bca32409fc 100644 --- a/arch/arm/common/edma.c +++ b/arch/arm/common/edma.c | |||
@@ -404,7 +404,7 @@ static irqreturn_t dma_irq_handler(int irq, void *data) | |||
404 | BIT(slot)); | 404 | BIT(slot)); |
405 | if (edma_cc[ctlr]->intr_data[channel].callback) | 405 | if (edma_cc[ctlr]->intr_data[channel].callback) |
406 | edma_cc[ctlr]->intr_data[channel].callback( | 406 | edma_cc[ctlr]->intr_data[channel].callback( |
407 | channel, DMA_COMPLETE, | 407 | channel, EDMA_DMA_COMPLETE, |
408 | edma_cc[ctlr]->intr_data[channel].data); | 408 | edma_cc[ctlr]->intr_data[channel].data); |
409 | } | 409 | } |
410 | } while (sh_ipr); | 410 | } while (sh_ipr); |
@@ -459,7 +459,7 @@ static irqreturn_t dma_ccerr_handler(int irq, void *data) | |||
459 | callback) { | 459 | callback) { |
460 | edma_cc[ctlr]->intr_data[k]. | 460 | edma_cc[ctlr]->intr_data[k]. |
461 | callback(k, | 461 | callback(k, |
462 | DMA_CC_ERROR, | 462 | EDMA_DMA_CC_ERROR, |
463 | edma_cc[ctlr]->intr_data | 463 | edma_cc[ctlr]->intr_data |
464 | [k].data); | 464 | [k].data); |
465 | } | 465 | } |
diff --git a/arch/arm/include/asm/hardware/iop3xx-adma.h b/arch/arm/include/asm/hardware/iop3xx-adma.h index 9b28f1243bdc..240b29ef17db 100644 --- a/arch/arm/include/asm/hardware/iop3xx-adma.h +++ b/arch/arm/include/asm/hardware/iop3xx-adma.h | |||
@@ -393,36 +393,6 @@ static inline int iop_chan_zero_sum_slot_count(size_t len, int src_cnt, | |||
393 | return slot_cnt; | 393 | return slot_cnt; |
394 | } | 394 | } |
395 | 395 | ||
396 | static inline int iop_desc_is_pq(struct iop_adma_desc_slot *desc) | ||
397 | { | ||
398 | return 0; | ||
399 | } | ||
400 | |||
401 | static inline u32 iop_desc_get_dest_addr(struct iop_adma_desc_slot *desc, | ||
402 | struct iop_adma_chan *chan) | ||
403 | { | ||
404 | union iop3xx_desc hw_desc = { .ptr = desc->hw_desc, }; | ||
405 | |||
406 | switch (chan->device->id) { | ||
407 | case DMA0_ID: | ||
408 | case DMA1_ID: | ||
409 | return hw_desc.dma->dest_addr; | ||
410 | case AAU_ID: | ||
411 | return hw_desc.aau->dest_addr; | ||
412 | default: | ||
413 | BUG(); | ||
414 | } | ||
415 | return 0; | ||
416 | } | ||
417 | |||
418 | |||
419 | static inline u32 iop_desc_get_qdest_addr(struct iop_adma_desc_slot *desc, | ||
420 | struct iop_adma_chan *chan) | ||
421 | { | ||
422 | BUG(); | ||
423 | return 0; | ||
424 | } | ||
425 | |||
426 | static inline u32 iop_desc_get_byte_count(struct iop_adma_desc_slot *desc, | 396 | static inline u32 iop_desc_get_byte_count(struct iop_adma_desc_slot *desc, |
427 | struct iop_adma_chan *chan) | 397 | struct iop_adma_chan *chan) |
428 | { | 398 | { |
diff --git a/arch/arm/include/asm/hardware/iop_adma.h b/arch/arm/include/asm/hardware/iop_adma.h index 122f86d8c991..250760e08103 100644 --- a/arch/arm/include/asm/hardware/iop_adma.h +++ b/arch/arm/include/asm/hardware/iop_adma.h | |||
@@ -82,8 +82,6 @@ struct iop_adma_chan { | |||
82 | * @slot_cnt: total slots used in an transaction (group of operations) | 82 | * @slot_cnt: total slots used in an transaction (group of operations) |
83 | * @slots_per_op: number of slots per operation | 83 | * @slots_per_op: number of slots per operation |
84 | * @idx: pool index | 84 | * @idx: pool index |
85 | * @unmap_src_cnt: number of xor sources | ||
86 | * @unmap_len: transaction bytecount | ||
87 | * @tx_list: list of descriptors that are associated with one operation | 85 | * @tx_list: list of descriptors that are associated with one operation |
88 | * @async_tx: support for the async_tx api | 86 | * @async_tx: support for the async_tx api |
89 | * @group_list: list of slots that make up a multi-descriptor transaction | 87 | * @group_list: list of slots that make up a multi-descriptor transaction |
@@ -99,8 +97,6 @@ struct iop_adma_desc_slot { | |||
99 | u16 slot_cnt; | 97 | u16 slot_cnt; |
100 | u16 slots_per_op; | 98 | u16 slots_per_op; |
101 | u16 idx; | 99 | u16 idx; |
102 | u16 unmap_src_cnt; | ||
103 | size_t unmap_len; | ||
104 | struct list_head tx_list; | 100 | struct list_head tx_list; |
105 | struct dma_async_tx_descriptor async_tx; | 101 | struct dma_async_tx_descriptor async_tx; |
106 | union { | 102 | union { |
diff --git a/arch/arm/mach-iop13xx/include/mach/adma.h b/arch/arm/mach-iop13xx/include/mach/adma.h index 6d3782d85a9f..a86fd0ed7757 100644 --- a/arch/arm/mach-iop13xx/include/mach/adma.h +++ b/arch/arm/mach-iop13xx/include/mach/adma.h | |||
@@ -218,20 +218,6 @@ iop_chan_xor_slot_count(size_t len, int src_cnt, int *slots_per_op) | |||
218 | #define iop_chan_pq_slot_count iop_chan_xor_slot_count | 218 | #define iop_chan_pq_slot_count iop_chan_xor_slot_count |
219 | #define iop_chan_pq_zero_sum_slot_count iop_chan_xor_slot_count | 219 | #define iop_chan_pq_zero_sum_slot_count iop_chan_xor_slot_count |
220 | 220 | ||
221 | static inline u32 iop_desc_get_dest_addr(struct iop_adma_desc_slot *desc, | ||
222 | struct iop_adma_chan *chan) | ||
223 | { | ||
224 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; | ||
225 | return hw_desc->dest_addr; | ||
226 | } | ||
227 | |||
228 | static inline u32 iop_desc_get_qdest_addr(struct iop_adma_desc_slot *desc, | ||
229 | struct iop_adma_chan *chan) | ||
230 | { | ||
231 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; | ||
232 | return hw_desc->q_dest_addr; | ||
233 | } | ||
234 | |||
235 | static inline u32 iop_desc_get_byte_count(struct iop_adma_desc_slot *desc, | 221 | static inline u32 iop_desc_get_byte_count(struct iop_adma_desc_slot *desc, |
236 | struct iop_adma_chan *chan) | 222 | struct iop_adma_chan *chan) |
237 | { | 223 | { |
@@ -350,18 +336,6 @@ iop_desc_init_pq(struct iop_adma_desc_slot *desc, int src_cnt, | |||
350 | hw_desc->desc_ctrl = u_desc_ctrl.value; | 336 | hw_desc->desc_ctrl = u_desc_ctrl.value; |
351 | } | 337 | } |
352 | 338 | ||
353 | static inline int iop_desc_is_pq(struct iop_adma_desc_slot *desc) | ||
354 | { | ||
355 | struct iop13xx_adma_desc_hw *hw_desc = desc->hw_desc; | ||
356 | union { | ||
357 | u32 value; | ||
358 | struct iop13xx_adma_desc_ctrl field; | ||
359 | } u_desc_ctrl; | ||
360 | |||
361 | u_desc_ctrl.value = hw_desc->desc_ctrl; | ||
362 | return u_desc_ctrl.field.pq_xfer_en; | ||
363 | } | ||
364 | |||
365 | static inline void | 339 | static inline void |
366 | iop_desc_init_pq_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, | 340 | iop_desc_init_pq_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, |
367 | unsigned long flags) | 341 | unsigned long flags) |