diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-04-17 23:17:25 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2008-04-17 16:25:05 -0400 |
commit | 19242d7233df7d658405d4b7ee1758d21414cfaa (patch) | |
tree | 4bffa2700c30fdb454dfa150115a0607c6cf3d2a /include | |
parent | 1c62979ed29a8e2bf9fbe1db101c81a0089676f8 (diff) |
async_tx: fix multiple dependency submission
Shrink struct dma_async_tx_descriptor and introduce
async_tx_channel_switch to properly inject a channel switch interrupt in
the descriptor stream. This simplifies the locking model as drivers no
longer need to handle dma_async_tx_descriptor.lock.
Acked-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/dmaengine.h | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 34d440698293..91252a7e4d03 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -221,11 +221,9 @@ typedef void (*dma_async_tx_callback)(void *dma_async_param); | |||
221 | * @callback: routine to call after this operation is complete | 221 | * @callback: routine to call after this operation is complete |
222 | * @callback_param: general parameter to pass to the callback routine | 222 | * @callback_param: general parameter to pass to the callback routine |
223 | * ---async_tx api specific fields--- | 223 | * ---async_tx api specific fields--- |
224 | * @depend_list: at completion this list of transactions are submitted | 224 | * @next: at completion submit this descriptor |
225 | * @depend_node: allow this transaction to be executed after another | ||
226 | * transaction has completed, possibly on another channel | ||
227 | * @parent: pointer to the next level up in the dependency chain | 225 | * @parent: pointer to the next level up in the dependency chain |
228 | * @lock: protect the dependency list | 226 | * @lock: protect the parent and next pointers |
229 | */ | 227 | */ |
230 | struct dma_async_tx_descriptor { | 228 | struct dma_async_tx_descriptor { |
231 | dma_cookie_t cookie; | 229 | dma_cookie_t cookie; |
@@ -236,8 +234,7 @@ struct dma_async_tx_descriptor { | |||
236 | dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx); | 234 | dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx); |
237 | dma_async_tx_callback callback; | 235 | dma_async_tx_callback callback; |
238 | void *callback_param; | 236 | void *callback_param; |
239 | struct list_head depend_list; | 237 | struct dma_async_tx_descriptor *next; |
240 | struct list_head depend_node; | ||
241 | struct dma_async_tx_descriptor *parent; | 238 | struct dma_async_tx_descriptor *parent; |
242 | spinlock_t lock; | 239 | spinlock_t lock; |
243 | }; | 240 | }; |