NetBurner 3.5.6
PDF Version
fsl_edma.h
1/*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * Copyright 2016-2022 NXP
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#ifndef _FSL_EDMA_H_
10#define _FSL_EDMA_H_
11
12#include "fsl_common.h"
13
16/*
17 * @addtogroup edma
18 * @{
19 */
20
21/*******************************************************************************
22 * Definitions
23 ******************************************************************************/
24
28#define FSL_EDMA_DRIVER_VERSION (MAKE_VERSION(2, 4, 3))
30
32#define DMA_DCHPRI_INDEX(channel) (((channel) & ~0x03U) | (3U - ((channel)&0x03U)))
33
35typedef enum _edma_transfer_size
36{
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;
44
46typedef enum _edma_modulo
47{
48 kEDMA_ModuloDisable = 0x0U,
49 kEDMA_Modulo2bytes,
50 kEDMA_Modulo4bytes,
51 kEDMA_Modulo8bytes,
52 kEDMA_Modulo16bytes,
53 kEDMA_Modulo32bytes,
54 kEDMA_Modulo64bytes,
55 kEDMA_Modulo128bytes,
56 kEDMA_Modulo256bytes,
57 kEDMA_Modulo512bytes,
58 kEDMA_Modulo1Kbytes,
59 kEDMA_Modulo2Kbytes,
60 kEDMA_Modulo4Kbytes,
61 kEDMA_Modulo8Kbytes,
62 kEDMA_Modulo16Kbytes,
63 kEDMA_Modulo32Kbytes,
64 kEDMA_Modulo64Kbytes,
65 kEDMA_Modulo128Kbytes,
66 kEDMA_Modulo256Kbytes,
67 kEDMA_Modulo512Kbytes,
68 kEDMA_Modulo1Mbytes,
69 kEDMA_Modulo2Mbytes,
70 kEDMA_Modulo4Mbytes,
71 kEDMA_Modulo8Mbytes,
72 kEDMA_Modulo16Mbytes,
73 kEDMA_Modulo32Mbytes,
74 kEDMA_Modulo64Mbytes,
75 kEDMA_Modulo128Mbytes,
76 kEDMA_Modulo256Mbytes,
77 kEDMA_Modulo512Mbytes,
78 kEDMA_Modulo1Gbytes,
79 kEDMA_Modulo2Gbytes,
80} edma_modulo_t;
81
83typedef enum _edma_bandwidth
84{
85 kEDMA_BandwidthStallNone = 0x0U,
86 kEDMA_BandwidthStall4Cycle = 0x2U,
87 kEDMA_BandwidthStall8Cycle = 0x3U,
88} edma_bandwidth_t;
89
91typedef enum _edma_channel_link_type
92{
93 kEDMA_LinkNone = 0x0U,
94 kEDMA_MinorLink,
95 kEDMA_MajorLink,
96} edma_channel_link_type_t;
97
99enum
100{
101 kEDMA_DoneFlag = 0x1U,
102 kEDMA_ErrorFlag = 0x2U,
103 kEDMA_InterruptFlag = 0x4U,
104};
105
107enum
108{
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,
122#endif
123 kEDMA_ValidFlag = (int)DMA_ES_VLD_MASK,
124};
125
127typedef enum _edma_interrupt_enable
128{
129 kEDMA_ErrorInterruptEnable = 0x1U,
130 kEDMA_MajorInterruptEnable = DMA_CSR_INTMAJOR_MASK,
131 kEDMA_HalfInterruptEnable = DMA_CSR_INTHALF_MASK,
132} edma_interrupt_enable_t;
133
135typedef enum _edma_transfer_type
136{
137 kEDMA_MemoryToMemory = 0x0U,
138 kEDMA_PeripheralToMemory,
139 kEDMA_MemoryToPeripheral,
140 kEDMA_PeripheralToPeripheral,
141} edma_transfer_type_t;
142
144enum
145{
146 kStatus_EDMA_QueueFull = MAKE_STATUS(kStatusGroup_EDMA, 0),
147 kStatus_EDMA_Busy = MAKE_STATUS(kStatusGroup_EDMA, 1),
149};
150
164
171{
172 uint32_t srcAddr;
173 uint32_t destAddr;
174 edma_transfer_size_t srcTransferSize;
175 edma_transfer_size_t destTransferSize;
176 int16_t srcOffset;
178 int16_t destOffset;
180 uint32_t minorLoopBytes;
183
191
199
206typedef struct _edma_tcd
207{
208 __IO uint32_t SADDR;
209 __IO uint16_t SOFF;
210 __IO uint16_t ATTR;
211 __IO uint32_t NBYTES;
212 __IO uint32_t SLAST;
213 __IO uint32_t DADDR;
214 __IO uint16_t DOFF;
215 __IO uint16_t CITER;
216 __IO uint32_t DLAST_SGA;
217 __IO uint16_t CSR;
218 __IO uint16_t BITER;
219} edma_tcd_t;
220
222struct _edma_handle;
223
242typedef void (*edma_callback)(struct _edma_handle *handle, void *userData, bool transferDone, uint32_t tcds);
243
245typedef struct _edma_handle
246{
247 edma_callback callback;
248 void *userData;
249 DMA_Type *base;
251 uint8_t channel;
252 volatile int8_t header;
253 volatile int8_t tail;
254 volatile int8_t tcdUsed;
256 volatile int8_t tcdSize;
257 uint8_t flags;
259
260
261#endif /*_FSL_EDMA_H_*/
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