Merge tag 'drm-xilinx-dpsub-20200718' of git://linuxtv.org/pinchartl/media into drm-next
Xilinx ZynqMP DisplayPort Subsystem driver Signed-off-by: Dave Airlie <airlied@redhat.com> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200718001755.GA5962@pendragon.ideasonboard.com
This commit is contained in:
@@ -61,6 +61,8 @@ enum dma_transaction_type {
|
||||
DMA_SLAVE,
|
||||
DMA_CYCLIC,
|
||||
DMA_INTERLEAVE,
|
||||
DMA_REPEAT,
|
||||
DMA_LOAD_EOT,
|
||||
/* last transaction type for creation of the capabilities mask */
|
||||
DMA_TX_TYPE_END,
|
||||
};
|
||||
@@ -176,6 +178,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),
|
||||
@@ -186,6 +198,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),
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -980,6 +994,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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user