@@ -77,27 +77,40 @@ extern "C" {
77
77
#define EDMA_TCD_CITER_ELINKNO_MASK 0x7fff
78
78
#define EDMA_TCD_CITER_ELINKNO (x ) ((x) & EDMA_TCD_CITER_ELINKNO_MASK)
79
79
80
- #define EDMA_TCD_BITER_ELINKNO_MASK 0x7fff
80
+ #define EDMA_TCD_BITER_ELINKNO_MASK 0xf
81
81
#define EDMA_TCD_BITER_ELINKNO (x ) ((x) & EDMA_TCD_BITER_ELINKNO_MASK)
82
82
83
83
#define EDMA_TCD_NBYTES_MLOFFNO_MASK 0x3fffffff
84
84
#define EDMA_TCD_NBYTES_MLOFFNO (x ) ((x) & EDMA_TCD_NBYTES_MLOFFNO_MASK)
85
85
86
+ #define EDMA_TCD_CSR_MAJORELINK_MASk EDMA_BIT(5)
86
87
#define EDMA_TCD_CSR_INTHALF_MASK EDMA_BIT(2)
87
88
#define EDMA_TCD_CSR_INTMAJOR_MASK EDMA_BIT(1)
89
+ #define EDMA_TCD_CSR_START_MASK EDMA_BIT(0)
88
90
89
91
#define EDMA_TCD_CH_CSR_ACTIVE_MASK EDMA_BIT(31)
90
92
#define EDMA_TCD_CH_CSR_DONE_MASK EDMA_BIT(30)
91
93
#define EDMA_TCD_CH_CSR_ERQ_MASK EDMA_BIT(0)
92
94
93
95
#define EDMA_TCD_CH_INT_MASK BIT(1)
94
96
97
+ #define EDMA_CSR_MAJORELINK_MASK EDMA_BIT(5)
98
+ #define EDMA_CITER_ELINKYES_LINKCH_MASK (0x3E00U)
99
+ #define EDMA_BITER_ELINKYES_LINKCH_MASK (0x3E00U)
100
+ #define EDMA_BITER_ELINKYES_LINKCH (x ) (((uint16_t)(((uint16_t)(x)) << (9U))) & (0x3E00U))
101
+ #define EDMA_CITER_ELINKYES_LINKCH (x ) (((uint16_t)(((uint16_t)(x)) << (9U))) & (0x3E00U))
102
+ #define EDMA_BITER_ELINKYES_ELINK_MASK EDMA_BIT(15)
103
+ #define EDMA_CITER_ELINKYES_ELINK_MASK EDMA_BIT(15)
104
+ #define EDMA_CSR_MAJORLINKCH_MASK (0x1F00U)
105
+ #define EDMA_CSR_MAJORLINKCH (x ) (((uint16_t)(((uint16_t)(x)) << (8U))) & (0x1F00U))
106
+
95
107
/* EDMA registers */
96
108
/* common MP-related registers */
97
109
#define EDMA_MP_CS EDMA_REGISTER_MAKE(EDMA_MP_CS_INDEX, kEDMA_RegAccess32)
98
110
#define EDMA_MP_ES EDMA_REGISTER_MAKE(EDMA_MP_ES_INDEX, kEDMA_RegAccess32)
99
111
#define EDMA_MP_INT EDMA_REGISTER_MAKE(EDMA_MP_INT_INDEX, kEDMA_RegAccess32)
100
112
#define EDMA_MP_HRS EDMA_REGISTER_MAKE(EDMA_MP_HRS_INDEX, kEDMA_RegAccess32)
113
+ #define EDMA_MP_CS_GCLC_MASK EDMA_BIT(6)
101
114
/* TODO: access requires validation */
102
115
#define EDMA_MP_CH_GRPRI EDMA_REGISTER_MAKE(EDMA_MP_CH_GRPRI_INDEX, kEDMA_RegAccess32)
103
116
/* common TCD-related registers */
@@ -159,6 +172,14 @@ enum _edma_transfer_type {
159
172
kEDMA_TransferTypeP2M , /* Peripheral to memory transfer */
160
173
};
161
174
175
+ /*! @brief Channel link type */
176
+ typedef enum _edma_channel_link_type
177
+ {
178
+ kEDMA_LinkNone = 0x0U , /*!< No channel link */
179
+ kEDMA_MinorLink , /*!< Channel link after each minor loop */
180
+ kEDMA_MajorLink , /*!< Channel link while major loop count exhausted */
181
+ }edma_channel_link_type_t ;
182
+
162
183
typedef struct _edma_config {
163
184
/* EDMA base address. Should be overwritten by user if working with virtual
164
185
* addresses.
@@ -328,3 +349,4 @@ status_t EDMA_ConfigureTransfer(edma_config_t *cfg, int channel,
328
349
}
329
350
#endif
330
351
#endif /* _FSL_EDMA_REV2_H_ */
352
+
0 commit comments