2 * The contents of this file are private to DMA engine drivers, and is not
3 * part of the API to be used by DMA engine users.
9 #include <linux/dmaengine.h>
12 * dma_cookie_assign - assign a DMA engine cookie to the descriptor
13 * @tx: descriptor needing cookie
15 * Assign a unique non-zero per-channel cookie to the descriptor.
16 * Note: caller is expected to hold a lock to prevent concurrency.
18 static inline dma_cookie_t dma_cookie_assign(struct dma_async_tx_descriptor *tx)
20 struct dma_chan *chan = tx->chan;
23 cookie = chan->cookie + 1;
24 if (cookie < DMA_MIN_COOKIE)
25 cookie = DMA_MIN_COOKIE;
26 tx->cookie = chan->cookie = cookie;
32 * dma_cookie_complete - complete a descriptor
33 * @tx: descriptor to complete
35 * Mark this descriptor complete by updating the channels completed
36 * cookie marker. Zero the descriptors cookie to prevent accidental
37 * repeated completions.
39 * Note: caller is expected to hold a lock to prevent concurrency.
41 static inline void dma_cookie_complete(struct dma_async_tx_descriptor *tx)
43 BUG_ON(tx->cookie < DMA_MIN_COOKIE);
44 tx->chan->completed_cookie = tx->cookie;