File indexing completed on 2025-05-11 08:22:58
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef _FSL_DMAMUX_H_
0010 #define _FSL_DMAMUX_H_
0011
0012 #include "fsl_common.h"
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #define FSL_DMAMUX_DRIVER_VERSION (MAKE_VERSION(2, 0, 5))
0027
0028
0029
0030
0031
0032
0033 #if defined(__cplusplus)
0034 extern "C" {
0035 #endif
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050 void DMAMUX_Init(DMAMUX_Type *base);
0051
0052
0053
0054
0055
0056
0057
0058
0059 void DMAMUX_Deinit(DMAMUX_Type *base);
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075 static inline void DMAMUX_EnableChannel(DMAMUX_Type *base, uint32_t channel)
0076 {
0077 assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
0078
0079 base->CHCFG[channel] |= DMAMUX_CHCFG_ENBL_MASK;
0080 }
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091 static inline void DMAMUX_DisableChannel(DMAMUX_Type *base, uint32_t channel)
0092 {
0093 assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
0094
0095 #if defined FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH && (FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH == 32U)
0096 base->CHCFG[channel] &= ~DMAMUX_CHCFG_ENBL_MASK;
0097 #else
0098 base->CHCFG[channel] &= ~(uint8_t)DMAMUX_CHCFG_ENBL_MASK;
0099 #endif
0100 }
0101
0102
0103
0104
0105
0106
0107
0108
0109 static inline void DMAMUX_SetSource(DMAMUX_Type *base, uint32_t channel, uint32_t source)
0110 {
0111 assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
0112
0113 #if defined FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH && (FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH == 32U)
0114 base->CHCFG[channel] = ((base->CHCFG[channel] & ~DMAMUX_CHCFG_SOURCE_MASK) | DMAMUX_CHCFG_SOURCE(source));
0115 #else
0116 base->CHCFG[channel] = (uint8_t)((base->CHCFG[channel] & ~DMAMUX_CHCFG_SOURCE_MASK) | DMAMUX_CHCFG_SOURCE(source));
0117 #endif
0118 }
0119
0120 #if defined(FSL_FEATURE_DMAMUX_HAS_TRIG) && FSL_FEATURE_DMAMUX_HAS_TRIG > 0U
0121
0122
0123
0124
0125
0126
0127
0128
0129 static inline void DMAMUX_EnablePeriodTrigger(DMAMUX_Type *base, uint32_t channel)
0130 {
0131 assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
0132
0133 base->CHCFG[channel] |= DMAMUX_CHCFG_TRIG_MASK;
0134 }
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144 static inline void DMAMUX_DisablePeriodTrigger(DMAMUX_Type *base, uint32_t channel)
0145 {
0146 assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
0147
0148 #if defined FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH && (FSL_FEATURE_DMAMUX_CHCFG_REGISTER_WIDTH == 32U)
0149 base->CHCFG[channel] &= ~DMAMUX_CHCFG_TRIG_MASK;
0150 #else
0151 base->CHCFG[channel] &= ~(uint8_t)DMAMUX_CHCFG_TRIG_MASK;
0152 #endif
0153 }
0154 #endif
0155
0156 #if (defined(FSL_FEATURE_DMAMUX_HAS_A_ON) && FSL_FEATURE_DMAMUX_HAS_A_ON)
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166 static inline void DMAMUX_EnableAlwaysOn(DMAMUX_Type *base, uint32_t channel, bool enable)
0167 {
0168 assert(channel < (uint32_t)FSL_FEATURE_DMAMUX_MODULE_CHANNEL);
0169
0170 if (enable)
0171 {
0172 base->CHCFG[channel] |= DMAMUX_CHCFG_A_ON_MASK;
0173 }
0174 else
0175 {
0176 base->CHCFG[channel] &= ~DMAMUX_CHCFG_A_ON_MASK;
0177 }
0178 }
0179 #endif
0180
0181
0182
0183 #if defined(__cplusplus)
0184 }
0185 #endif
0186
0187
0188
0189 #endif