diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-06 14:16:11 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-06 14:16:11 -0500 |
| commit | 3d4d4582e5b3f67a68f2cf32fd5b70d8d80f119d (patch) | |
| tree | 18d270847537d1a9d1a396d03e585654130630db /include/linux | |
| parent | 8f1bfa4c5c093e97154be4ec969bdf7190aeff6a (diff) | |
| parent | 47437b2c9a64315efeb3d84e97ffefd6c3c67ef1 (diff) | |
Merge branch 'async-tx-for-linus' of git://lost.foo-projects.org/~dwillia2/git/iop into fix
* 'async-tx-for-linus' of git://lost.foo-projects.org/~dwillia2/git/iop:
async_tx: allow architecture specific async_tx_find_channel implementations
async_tx: replace 'int_en' with operation preparation flags
async_tx: kill tx_set_src and tx_set_dest methods
async_tx: kill ASYNC_TX_ASSUME_COHERENT
iop-adma: use LIST_HEAD instead of LIST_HEAD_INIT
async_tx: use LIST_HEAD instead of LIST_HEAD_INIT
async_tx: fix compile breakage, mark do_async_xor __always_inline
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/async_tx.h | 13 | ||||
| -rw-r--r-- | include/linux/dmaengine.h | 29 |
2 files changed, 26 insertions, 16 deletions
diff --git a/include/linux/async_tx.h b/include/linux/async_tx.h index bdca3f1b3213..eb640f0acfac 100644 --- a/include/linux/async_tx.h +++ b/include/linux/async_tx.h | |||
| @@ -47,7 +47,6 @@ struct dma_chan_ref { | |||
| 47 | * address is an implied source, whereas the asynchronous case it must be listed | 47 | * address is an implied source, whereas the asynchronous case it must be listed |
| 48 | * as a source. The destination address must be the first address in the source | 48 | * as a source. The destination address must be the first address in the source |
| 49 | * array. | 49 | * array. |
| 50 | * @ASYNC_TX_ASSUME_COHERENT: skip cache maintenance operations | ||
| 51 | * @ASYNC_TX_ACK: immediately ack the descriptor, precludes setting up a | 50 | * @ASYNC_TX_ACK: immediately ack the descriptor, precludes setting up a |
| 52 | * dependency chain | 51 | * dependency chain |
| 53 | * @ASYNC_TX_DEP_ACK: ack the dependency descriptor. Useful for chaining. | 52 | * @ASYNC_TX_DEP_ACK: ack the dependency descriptor. Useful for chaining. |
| @@ -55,7 +54,6 @@ struct dma_chan_ref { | |||
| 55 | enum async_tx_flags { | 54 | enum async_tx_flags { |
| 56 | ASYNC_TX_XOR_ZERO_DST = (1 << 0), | 55 | ASYNC_TX_XOR_ZERO_DST = (1 << 0), |
| 57 | ASYNC_TX_XOR_DROP_DST = (1 << 1), | 56 | ASYNC_TX_XOR_DROP_DST = (1 << 1), |
| 58 | ASYNC_TX_ASSUME_COHERENT = (1 << 2), | ||
| 59 | ASYNC_TX_ACK = (1 << 3), | 57 | ASYNC_TX_ACK = (1 << 3), |
| 60 | ASYNC_TX_DEP_ACK = (1 << 4), | 58 | ASYNC_TX_DEP_ACK = (1 << 4), |
| 61 | }; | 59 | }; |
| @@ -64,9 +62,15 @@ enum async_tx_flags { | |||
| 64 | void async_tx_issue_pending_all(void); | 62 | void async_tx_issue_pending_all(void); |
| 65 | enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx); | 63 | enum dma_status dma_wait_for_async_tx(struct dma_async_tx_descriptor *tx); |
| 66 | void async_tx_run_dependencies(struct dma_async_tx_descriptor *tx); | 64 | void async_tx_run_dependencies(struct dma_async_tx_descriptor *tx); |
| 65 | #ifdef CONFIG_ARCH_HAS_ASYNC_TX_FIND_CHANNEL | ||
| 66 | #include <asm/async_tx.h> | ||
| 67 | #else | ||
| 68 | #define async_tx_find_channel(dep, type, dst, dst_count, src, src_count, len) \ | ||
| 69 | __async_tx_find_channel(dep, type) | ||
| 67 | struct dma_chan * | 70 | struct dma_chan * |
| 68 | async_tx_find_channel(struct dma_async_tx_descriptor *depend_tx, | 71 | __async_tx_find_channel(struct dma_async_tx_descriptor *depend_tx, |
| 69 | enum dma_transaction_type tx_type); | 72 | enum dma_transaction_type tx_type); |
| 73 | #endif /* CONFIG_ARCH_HAS_ASYNC_TX_FIND_CHANNEL */ | ||
| 70 | #else | 74 | #else |
| 71 | static inline void async_tx_issue_pending_all(void) | 75 | static inline void async_tx_issue_pending_all(void) |
| 72 | { | 76 | { |
| @@ -88,7 +92,8 @@ async_tx_run_dependencies(struct dma_async_tx_descriptor *tx, | |||
| 88 | 92 | ||
| 89 | static inline struct dma_chan * | 93 | static inline struct dma_chan * |
| 90 | async_tx_find_channel(struct dma_async_tx_descriptor *depend_tx, | 94 | async_tx_find_channel(struct dma_async_tx_descriptor *depend_tx, |
| 91 | enum dma_transaction_type tx_type) | 95 | enum dma_transaction_type tx_type, struct page **dst, int dst_count, |
| 96 | struct page **src, int src_count, size_t len) | ||
| 92 | { | 97 | { |
| 93 | return NULL; | 98 | return NULL; |
| 94 | } | 99 | } |
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 5c84bf897593..acbb364674ff 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
| @@ -95,6 +95,15 @@ enum dma_transaction_type { | |||
| 95 | #define DMA_TX_TYPE_END (DMA_INTERRUPT + 1) | 95 | #define DMA_TX_TYPE_END (DMA_INTERRUPT + 1) |
| 96 | 96 | ||
| 97 | /** | 97 | /** |
| 98 | * enum dma_prep_flags - DMA flags to augment operation preparation | ||
| 99 | * @DMA_PREP_INTERRUPT - trigger an interrupt (callback) upon completion of | ||
| 100 | * this transaction | ||
| 101 | */ | ||
| 102 | enum dma_prep_flags { | ||
| 103 | DMA_PREP_INTERRUPT = (1 << 0), | ||
| 104 | }; | ||
| 105 | |||
| 106 | /** | ||
| 98 | * dma_cap_mask_t - capabilities bitmap modeled after cpumask_t. | 107 | * dma_cap_mask_t - capabilities bitmap modeled after cpumask_t. |
| 99 | * See linux/cpumask.h | 108 | * See linux/cpumask.h |
| 100 | */ | 109 | */ |
| @@ -209,8 +218,6 @@ typedef void (*dma_async_tx_callback)(void *dma_async_param); | |||
| 209 | * descriptors | 218 | * descriptors |
| 210 | * @chan: target channel for this operation | 219 | * @chan: target channel for this operation |
| 211 | * @tx_submit: set the prepared descriptor(s) to be executed by the engine | 220 | * @tx_submit: set the prepared descriptor(s) to be executed by the engine |
| 212 | * @tx_set_dest: set a destination address in a hardware descriptor | ||
| 213 | * @tx_set_src: set a source address in a hardware descriptor | ||
| 214 | * @callback: routine to call after this operation is complete | 221 | * @callback: routine to call after this operation is complete |
| 215 | * @callback_param: general parameter to pass to the callback routine | 222 | * @callback_param: general parameter to pass to the callback routine |
| 216 | * ---async_tx api specific fields--- | 223 | * ---async_tx api specific fields--- |
| @@ -227,10 +234,6 @@ struct dma_async_tx_descriptor { | |||
| 227 | struct list_head tx_list; | 234 | struct list_head tx_list; |
| 228 | struct dma_chan *chan; | 235 | struct dma_chan *chan; |
| 229 | dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx); | 236 | dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx); |
| 230 | void (*tx_set_dest)(dma_addr_t addr, | ||
| 231 | struct dma_async_tx_descriptor *tx, int index); | ||
| 232 | void (*tx_set_src)(dma_addr_t addr, | ||
| 233 | struct dma_async_tx_descriptor *tx, int index); | ||
| 234 | dma_async_tx_callback callback; | 237 | dma_async_tx_callback callback; |
| 235 | void *callback_param; | 238 | void *callback_param; |
| 236 | struct list_head depend_list; | 239 | struct list_head depend_list; |
| @@ -279,15 +282,17 @@ struct dma_device { | |||
| 279 | void (*device_free_chan_resources)(struct dma_chan *chan); | 282 | void (*device_free_chan_resources)(struct dma_chan *chan); |
| 280 | 283 | ||
| 281 | struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)( | 284 | struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)( |
| 282 | struct dma_chan *chan, size_t len, int int_en); | 285 | struct dma_chan *chan, dma_addr_t dest, dma_addr_t src, |
| 286 | size_t len, unsigned long flags); | ||
| 283 | struct dma_async_tx_descriptor *(*device_prep_dma_xor)( | 287 | struct dma_async_tx_descriptor *(*device_prep_dma_xor)( |
| 284 | struct dma_chan *chan, unsigned int src_cnt, size_t len, | 288 | struct dma_chan *chan, dma_addr_t dest, dma_addr_t *src, |
| 285 | int int_en); | 289 | unsigned int src_cnt, size_t len, unsigned long flags); |
| 286 | struct dma_async_tx_descriptor *(*device_prep_dma_zero_sum)( | 290 | struct dma_async_tx_descriptor *(*device_prep_dma_zero_sum)( |
| 287 | struct dma_chan *chan, unsigned int src_cnt, size_t len, | 291 | struct dma_chan *chan, dma_addr_t *src, unsigned int src_cnt, |
| 288 | u32 *result, int int_en); | 292 | size_t len, u32 *result, unsigned long flags); |
| 289 | struct dma_async_tx_descriptor *(*device_prep_dma_memset)( | 293 | struct dma_async_tx_descriptor *(*device_prep_dma_memset)( |
| 290 | struct dma_chan *chan, int value, size_t len, int int_en); | 294 | struct dma_chan *chan, dma_addr_t dest, int value, size_t len, |
| 295 | unsigned long flags); | ||
| 291 | struct dma_async_tx_descriptor *(*device_prep_dma_interrupt)( | 296 | struct dma_async_tx_descriptor *(*device_prep_dma_interrupt)( |
| 292 | struct dma_chan *chan); | 297 | struct dma_chan *chan); |
| 293 | 298 | ||
