12#include "fsl_common.h"
28#define FSL_EDMA_DRIVER_VERSION (MAKE_VERSION(2, 4, 3))
32#define DMA_DCHPRI_INDEX(channel) (((channel) & ~0x03U) | (3U - ((channel)&0x03U)))
35typedef enum _edma_transfer_size
37 kEDMA_TransferSize1Bytes = 0x0U,
38 kEDMA_TransferSize2Bytes = 0x1U,
39 kEDMA_TransferSize4Bytes = 0x2U,
40 kEDMA_TransferSize8Bytes = 0x3U,
41 kEDMA_TransferSize16Bytes = 0x4U,
42 kEDMA_TransferSize32Bytes = 0x5U,
43} edma_transfer_size_t;
46typedef enum _edma_modulo
48 kEDMA_ModuloDisable = 0x0U,
65 kEDMA_Modulo128Kbytes,
66 kEDMA_Modulo256Kbytes,
67 kEDMA_Modulo512Kbytes,
75 kEDMA_Modulo128Mbytes,
76 kEDMA_Modulo256Mbytes,
77 kEDMA_Modulo512Mbytes,
83typedef enum _edma_bandwidth
85 kEDMA_BandwidthStallNone = 0x0U,
86 kEDMA_BandwidthStall4Cycle = 0x2U,
87 kEDMA_BandwidthStall8Cycle = 0x3U,
91typedef enum _edma_channel_link_type
93 kEDMA_LinkNone = 0x0U,
96} edma_channel_link_type_t;
101 kEDMA_DoneFlag = 0x1U,
102 kEDMA_ErrorFlag = 0x2U,
103 kEDMA_InterruptFlag = 0x4U,
109 kEDMA_DestinationBusErrorFlag = DMA_ES_DBE_MASK,
110 kEDMA_SourceBusErrorFlag = DMA_ES_SBE_MASK,
111 kEDMA_ScatterGatherErrorFlag = DMA_ES_SGE_MASK,
112 kEDMA_NbytesErrorFlag = DMA_ES_NCE_MASK,
113 kEDMA_DestinationOffsetErrorFlag = DMA_ES_DOE_MASK,
114 kEDMA_DestinationAddressErrorFlag = DMA_ES_DAE_MASK,
115 kEDMA_SourceOffsetErrorFlag = DMA_ES_SOE_MASK,
116 kEDMA_SourceAddressErrorFlag = DMA_ES_SAE_MASK,
117 kEDMA_ErrorChannelFlag = DMA_ES_ERRCHN_MASK,
118 kEDMA_ChannelPriorityErrorFlag = DMA_ES_CPE_MASK,
119 kEDMA_TransferCanceledFlag = DMA_ES_ECX_MASK,
120#if defined(FSL_FEATURE_EDMA_CHANNEL_GROUP_COUNT) && (FSL_FEATURE_EDMA_CHANNEL_GROUP_COUNT > 1)
121 kEDMA_GroupPriorityErrorFlag = DMA_ES_GPE_MASK,
123 kEDMA_ValidFlag = (int)DMA_ES_VLD_MASK,
127typedef enum _edma_interrupt_enable
129 kEDMA_ErrorInterruptEnable = 0x1U,
130 kEDMA_MajorInterruptEnable = DMA_CSR_INTMAJOR_MASK,
131 kEDMA_HalfInterruptEnable = DMA_CSR_INTHALF_MASK,
132} edma_interrupt_enable_t;
135typedef enum _edma_transfer_type
137 kEDMA_MemoryToMemory = 0x0U,
138 kEDMA_PeripheralToMemory,
139 kEDMA_MemoryToPeripheral,
140 kEDMA_PeripheralToPeripheral,
141} edma_transfer_type_t;
146 kStatus_EDMA_QueueFull = MAKE_STATUS(kStatusGroup_EDMA, 0),
147 kStatus_EDMA_Busy = MAKE_STATUS(kStatusGroup_EDMA, 1),
242typedef void (*edma_callback)(
struct _edma_handle *handle,
void *
userData,
bool transferDone, uint32_t tcds);
eDMA channel priority configuration
Definition fsl_edma.h:186
uint8_t channelPriority
Definition fsl_edma.h:189
bool enablePreemptAbility
Definition fsl_edma.h:188
bool enableChannelPreemption
Definition fsl_edma.h:187
eDMA global configuration structure.
Definition fsl_edma.h:153
bool enableContinuousLinkMode
Definition fsl_edma.h:154
bool enableDebugMode
Definition fsl_edma.h:161
bool enableHaltOnError
Definition fsl_edma.h:157
bool enableRoundRobinArbitration
Definition fsl_edma.h:159
eDMA transfer handle structure
Definition fsl_edma.h:246
DMA_Type * base
Definition fsl_edma.h:249
volatile int8_t header
Definition fsl_edma.h:252
edma_callback callback
Definition fsl_edma.h:247
volatile int8_t tcdUsed
Definition fsl_edma.h:254
volatile int8_t tcdSize
Definition fsl_edma.h:256
edma_tcd_t * tcdPool
Definition fsl_edma.h:250
uint8_t channel
Definition fsl_edma.h:251
volatile int8_t tail
Definition fsl_edma.h:253
uint8_t flags
Definition fsl_edma.h:257
void * userData
Definition fsl_edma.h:248
eDMA minor offset configuration
Definition fsl_edma.h:194
uint32_t minorOffset
Definition fsl_edma.h:197
bool enableDestMinorOffset
Definition fsl_edma.h:196
bool enableSrcMinorOffset
Definition fsl_edma.h:195
eDMA TCD.
Definition fsl_edma.h:207
__IO uint32_t DADDR
Definition fsl_edma.h:213
__IO uint16_t CSR
Definition fsl_edma.h:217
__IO uint16_t BITER
Definition fsl_edma.h:218
__IO uint32_t SLAST
Definition fsl_edma.h:212
__IO uint32_t DLAST_SGA
Definition fsl_edma.h:216
__IO uint16_t CITER
Definition fsl_edma.h:215
__IO uint32_t SADDR
Definition fsl_edma.h:208
__IO uint16_t DOFF
Definition fsl_edma.h:214
__IO uint16_t SOFF
Definition fsl_edma.h:209
__IO uint32_t NBYTES
Definition fsl_edma.h:211
__IO uint16_t ATTR
Definition fsl_edma.h:210
eDMA transfer configuration
Definition fsl_edma.h:171
edma_transfer_size_t destTransferSize
Definition fsl_edma.h:175
int16_t destOffset
Definition fsl_edma.h:178
uint32_t majorLoopCounts
Definition fsl_edma.h:181
int16_t srcOffset
Definition fsl_edma.h:176
uint32_t destAddr
Definition fsl_edma.h:173
edma_transfer_size_t srcTransferSize
Definition fsl_edma.h:174
uint32_t minorLoopBytes
Definition fsl_edma.h:180
uint32_t srcAddr
Definition fsl_edma.h:172