mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Merge branch 'topic/xilinx' into fixes
Conflicts: Documentation/driver-api/dmaengine/provider.rst include/linux/dmaengine.h
This commit is contained in:
commit
00043a2689
9 changed files with 1708 additions and 1 deletions
|
@ -63,6 +63,8 @@ enum dma_transaction_type {
|
|||
DMA_CYCLIC,
|
||||
DMA_INTERLEAVE,
|
||||
DMA_COMPLETION_NO_ORDER,
|
||||
DMA_REPEAT,
|
||||
DMA_LOAD_EOT,
|
||||
/* last transaction type for creation of the capabilities mask */
|
||||
DMA_TX_TYPE_END,
|
||||
};
|
||||
|
@ -178,6 +180,16 @@ struct dma_interleaved_template {
|
|||
* @DMA_PREP_CMD: tell the driver that the data passed to DMA API is command
|
||||
* data and the descriptor should be in different format from normal
|
||||
* data descriptors.
|
||||
* @DMA_PREP_REPEAT: tell the driver that the transaction shall be automatically
|
||||
* repeated when it ends until a transaction is issued on the same channel
|
||||
* with the DMA_PREP_LOAD_EOT flag set. This flag is only applicable to
|
||||
* interleaved transactions and is ignored for all other transaction types.
|
||||
* @DMA_PREP_LOAD_EOT: tell the driver that the transaction shall replace any
|
||||
* active repeated (as indicated by DMA_PREP_REPEAT) transaction when the
|
||||
* repeated transaction ends. Not setting this flag when the previously queued
|
||||
* transaction is marked with DMA_PREP_REPEAT will cause the new transaction
|
||||
* to never be processed and stay in the issued queue forever. The flag is
|
||||
* ignored if the previous transaction is not a repeated transaction.
|
||||
*/
|
||||
enum dma_ctrl_flags {
|
||||
DMA_PREP_INTERRUPT = (1 << 0),
|
||||
|
@ -188,6 +200,8 @@ enum dma_ctrl_flags {
|
|||
DMA_PREP_FENCE = (1 << 5),
|
||||
DMA_CTRL_REUSE = (1 << 6),
|
||||
DMA_PREP_CMD = (1 << 7),
|
||||
DMA_PREP_REPEAT = (1 << 8),
|
||||
DMA_PREP_LOAD_EOT = (1 << 9),
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -998,6 +1012,9 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_interleaved_dma(
|
|||
{
|
||||
if (!chan || !chan->device || !chan->device->device_prep_interleaved_dma)
|
||||
return NULL;
|
||||
if (flags & DMA_PREP_REPEAT &&
|
||||
!test_bit(DMA_REPEAT, chan->device->cap_mask.bits))
|
||||
return NULL;
|
||||
|
||||
return chan->device->device_prep_interleaved_dma(chan, xt, flags);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue