File indexing completed on 2025-05-11 08:23:42
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063 #ifndef LIBBSP_SHARED_FSL_REGS_EDMA_H
0064 #define LIBBSP_SHARED_FSL_REGS_EDMA_H
0065
0066 #include <stdint.h>
0067 #include <bsp.h>
0068 #include <bspopts.h>
0069
0070 #ifdef __cplusplus
0071 extern "C" {
0072 #endif
0073
0074 #if (defined(MPC55XX_CHIP_FAMILY) && \
0075 (MPC55XX_CHIP_FAMILY == 566 || MPC55XX_CHIP_FAMILY == 567))
0076 #define EDMA_HAS_CR_EBW 1
0077 #define EDMA_HAS_CR_CX_ECX 1
0078 #define EDMA_HAS_CR_EMLM_CLM_HALT_HOE 1
0079 #define EDMA_HAS_ESR_ECX 1
0080 #define EDMA_HAS_HRS 1
0081 #define EDMA_HAS_CPR_DPA 1
0082 #endif
0083
0084 #if defined(LIBBSP_ARM_IMXRT_BSP_H)
0085 #define EDMA_HAS_CR_CX_ECX 1
0086 #define EDMA_HAS_CR_EMLM_CLM_HALT_HOE 1
0087 #define EDMA_HAS_CR_ACTIVE 1
0088 #define EDMA_HAS_CR_VERSION 1
0089 #define EDMA_HAS_ESR_ECX 1
0090 #define EDMA_HAS_HRS 1
0091 #define EDMA_HAS_EARS 1
0092 #define EDMA_HAS_CPR_DPA 1
0093 #endif
0094
0095 struct fsl_edma {
0096 uint32_t CR;
0097 #ifdef EDMA_HAS_CR_EBW
0098 #define EDMA_CR_EBW (1 << 0)
0099 #endif
0100 #define EDMA_CR_EDBG (1 << 1)
0101 #define EDMA_CR_ERCA (1 << 2)
0102 #define EDMA_CR_ERGA (1 << 3)
0103 #ifdef EDMA_HAS_CR_EMLM_CLM_HALT_HOE
0104 #define EDMA_CR_HOE (1 << 4)
0105 #define EDMA_CR_HALT (1 << 5)
0106 #define EDMA_CR_CLM (1 << 6)
0107 #define EDMA_CR_EMLM (1 << 7)
0108 #endif
0109 #define EDMA_CR_GRPxPRI_SHIFT(x) (8 + (x) * 2)
0110 #define EDMA_CR_GRPxPRI_MASK(x) (0x3 << EDMA_CR_GRPxPRI_SHIFT(x))
0111 #define EDMA_CR_GRPxPRI(x,val) (((val) << EDMA_CR_GRPxPRI_SHIFT(x)) & EDMA_CR_GRPxPRI_MASK(x))
0112 #define EDMA_CR_GRPxPRI_GET(x,reg) (((reg) & EDMA_CR_GRPxPRI_MASK(x)) >> EDMA_CR_GRPxPRI_SHIFT(x))
0113 #ifdef EDMA_HAS_CR_CX_ECX
0114 #define EDMA_CR_ECX (1 << 16)
0115 #define EDMA_CR_CX (1 << 17)
0116 #endif
0117 #ifdef EDMA_HAS_CR_VERSION
0118 #define EDMA_CR_VERSION_SHIFT (24)
0119 #define EDMA_CR_VERSION_MASK (0x7F << EDMA_CR_VERSION_SHIFT)
0120 #define EDMA_CR_VERSION(val) (((val) << EDMA_CR_VERSION_SHIFT) & EDMA_CR_VERSION_MASK)
0121 #define EDMA_CR_VERSION_GET(reg) (((reg) & EDMA_CR_VERSION_MASK) >> EDMA_CR_VERSION_SHIFT)
0122 #endif
0123 #ifdef EDMA_HAS_CR_ACTIVE
0124 #define EDMA_CR_ACTIVE (1 << 31)
0125 #endif
0126
0127 uint32_t ESR;
0128 #define EDMA_ESR_DBE (1 << 0)
0129 #define EDMA_ESR_SBE (1 << 1)
0130 #define EDMA_ESR_SGE (1 << 2)
0131 #define EDMA_ESR_NCE (1 << 3)
0132 #define EDMA_ESR_DOE (1 << 4)
0133 #define EDMA_ESR_DAE (1 << 5)
0134 #define EDMA_ESR_SOE (1 << 6)
0135 #define EDMA_ESR_SAE (1 << 7)
0136 #define EDMA_ESR_ERRCHN_SHIFT (8)
0137 #define EDMA_ESR_ERRCHN_MASK (0x3F << EDMA_ESR_ERRCHN_SHIFT)
0138 #define EDMA_ESR_ERRCHN(val) (((val) << EDMA_ESR_ERRCHN_SHIFT) & EDMA_ESR_ERRCHN_MASK)
0139 #define EDMA_ESR_ERRCHN_GET(reg) (((reg) & EDMA_ESR_ERRCHN_MASK) >> EDMA_ESR_ERRCHN_SHIFT)
0140 #define EDMA_ESR_CPE (1 << 14)
0141 #define EDMA_ESR_GPE (1 << 15)
0142 #ifdef EDMA_HAS_ESR_ECX
0143 #define EDMA_ESR_ECX (1 << 16)
0144 #endif
0145 #define EDMA_ESR_VLD (1 << 31)
0146
0147 uint32_t ERRQH;
0148 #define EDMA_ERRQH_ERRQ(x) (1 << ((x) - 32))
0149
0150 uint32_t ERRQL;
0151 #define EDMA_ERRQL_ERRQ(x) (1 << (x))
0152
0153 uint32_t EEIH;
0154 #define EDMA_EEIH_EEI(x) (1 << ((x) - 32))
0155
0156 uint32_t EEIL;
0157 #define EDMA_EEIL_EEI(x) (1 << (x))
0158
0159 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
0160 uint8_t SERQR;
0161 uint8_t CERQR;
0162 uint8_t SEEIR;
0163 uint8_t CEEIR;
0164 #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
0165 uint8_t CEEIR;
0166 uint8_t SEEIR;
0167 uint8_t CERQR;
0168 uint8_t SERQR;
0169 #endif
0170 #define EDMA_SERQR_NOP (1 << 7)
0171 #define EDMA_SERQR_SAER (1 << 6)
0172 #define EDMA_SERQR_SERQ_SHIFT (0)
0173 #define EDMA_SERQR_SERQ_MASK (0x1F << EDMA_CIRQR_SERQ_SHIFT)
0174 #define EDMA_SERQR_SERQ(val) (((val) << EDMA_CIRQR_SERQ_SHIFT) & EDMA_CIRQR_SERQ_MASK)
0175 #define EDMA_SERQR_SERQ_GET(reg) (((reg) & EDMA_CIRQR_SERQ_MASK) >> EDMA_CIRQR_SERQ_SHIFT)
0176 #define EDMA_CERQR_NOP (1 << 7)
0177 #define EDMA_CERQR_CAER (1 << 6)
0178 #define EDMA_CERQR_CERQ_SHIFT (0)
0179 #define EDMA_CERQR_CERQ_MASK (0x1F << EDMA_CIRQR_CERQ_SHIFT)
0180 #define EDMA_CERQR_CERQ(val) (((val) << EDMA_CIRQR_CERQ_SHIFT) & EDMA_CIRQR_CERQ_MASK)
0181 #define EDMA_CERQR_CERQ_GET(reg) (((reg) & EDMA_CIRQR_CERQ_MASK) >> EDMA_CIRQR_CERQ_SHIFT)
0182 #define EDMA_SEEIR_NOP (1 << 7)
0183 #define EDMA_SEEIR_SAEE (1 << 6)
0184 #define EDMA_SEEIR_SEEI_SHIFT (0)
0185 #define EDMA_SEEIR_SEEI_MASK (0x1F << EDMA_CIRQR_SEEI_SHIFT)
0186 #define EDMA_SEEIR_SEEI(val) (((val) << EDMA_CIRQR_SEEI_SHIFT) & EDMA_CIRQR_SEEI_MASK)
0187 #define EDMA_SEEIR_SEEI_GET(reg) (((reg) & EDMA_CIRQR_SEEI_MASK) >> EDMA_CIRQR_SEEI_SHIFT)
0188 #define EDMA_CEEIR_NOP (1 << 7)
0189 #define EDMA_CEEIR_CAEE (1 << 6)
0190 #define EDMA_CEEIR_CEEI_SHIFT (0)
0191 #define EDMA_CEEIR_CEEI_MASK (0x1F << EDMA_CIRQR_CEEI_SHIFT)
0192 #define EDMA_CEEIR_CEEI(val) (((val) << EDMA_CIRQR_CEEI_SHIFT) & EDMA_CIRQR_CEEI_MASK)
0193 #define EDMA_CEEIR_CEEI_GET(reg) (((reg) & EDMA_CIRQR_CEEI_MASK) >> EDMA_CIRQR_CEEI_SHIFT)
0194
0195 #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
0196 uint8_t CIRQR;
0197 uint8_t CER;
0198 uint8_t SSBR;
0199 uint8_t CDSBR;
0200 #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
0201 uint8_t CDSBR;
0202 uint8_t SSBR;
0203 uint8_t CER;
0204 uint8_t CIRQR;
0205 #endif
0206 #define EDMA_CIRQR_NOP (1 << 7)
0207 #define EDMA_CIRQR_CAIR (1 << 6)
0208 #define EDMA_CIRQR_CINT_SHIFT (0)
0209 #define EDMA_CIRQR_CINT_MASK (0x1F << EDMA_CIRQR_CINT_SHIFT)
0210 #define EDMA_CIRQR_CINT(val) (((val) << EDMA_CIRQR_CINT_SHIFT) & EDMA_CIRQR_CINT_MASK)
0211 #define EDMA_CIRQR_CINT_GET(reg) (((reg) & EDMA_CIRQR_CINT_MASK) >> EDMA_CIRQR_CINT_SHIFT)
0212 #define EDMA_CER_NOP (1 << 7)
0213 #define EDMA_CER_CAEI (1 << 6)
0214 #define EDMA_CER_CERR_SHIFT (0)
0215 #define EDMA_CER_CERR_MASK (0x1F << EDMA_CIRQR_CERR_SHIFT)
0216 #define EDMA_CER_CERR(val) (((val) << EDMA_CIRQR_CERR_SHIFT) & EDMA_CIRQR_CERR_MASK)
0217 #define EDMA_CER_CERR_GET(reg) (((reg) & EDMA_CIRQR_CERR_MASK) >> EDMA_CIRQR_CERR_SHIFT)
0218 #define EDMA_SSBR_NOP (1 << 7)
0219 #define EDMA_SSBR_SAST (1 << 6)
0220 #define EDMA_SSBR_SSB_SHIFT (0)
0221 #define EDMA_SSBR_SSB_MASK (0x1F << EDMA_CIRQR_SSB_SHIFT)
0222 #define EDMA_SSBR_SSB(val) (((val) << EDMA_CIRQR_SSB_SHIFT) & EDMA_CIRQR_SSB_MASK)
0223 #define EDMA_SSBR_SSB_GET(reg) (((reg) & EDMA_CIRQR_SSB_MASK) >> EDMA_CIRQR_SSB_SHIFT)
0224 #define EDMA_CDSBR_NOP (1 << 7)
0225 #define EDMA_CDSBR_CADN (1 << 6)
0226 #define EDMA_CDSBR_CDSB_SHIFT (0)
0227 #define EDMA_CDSBR_CDSB_MASK (0x1F << EDMA_CIRQR_CDSB_SHIFT)
0228 #define EDMA_CDSBR_CDSB(val) (((val) << EDMA_CIRQR_CDSB_SHIFT) & EDMA_CIRQR_CDSB_MASK)
0229 #define EDMA_CDSBR_CDSB_GET(reg) (((reg) & EDMA_CIRQR_CDSB_MASK) >> EDMA_CIRQR_CDSB_SHIFT)
0230
0231 uint32_t IRQH;
0232 #define EDMA_IRQH_INT(x) (1 << ((x) - 32))
0233
0234 uint32_t IRQL;
0235 #define EDMA_IRQL_INT(x) (1 << ((x)))
0236
0237 uint32_t ERH;
0238 #define EDMA_ERH_ERR(x) (1 << ((x) - 32))
0239
0240 uint32_t ERL;
0241 #define EDMA_ERL_ERR(x) (1 << ((x)))
0242
0243 #ifdef EDMA_HAS_HRS
0244 uint32_t HRS;
0245 #define EDMA_HRSH_HRS(x) (1 << ((x) - 32))
0246
0247 uint32_t HRSL;
0248 #define EDMA_HRSL_HRS(x) (1 << ((x)))
0249 #else
0250 uint32_t reserved0030[2];
0251 #endif
0252
0253 uint32_t reserved0038[(0x44-0x38)/4];
0254
0255 #ifdef EDMA_HAS_EARS
0256 uint32_t EARSL;
0257 #define EDMA_EARSL_EDREQ(x) (1 << ((x)))
0258 #else
0259 uint32_t reserved0044;
0260 #endif
0261
0262 uint32_t reserved0048[(0x100-0x48)/4];
0263
0264 uint8_t CPR[64];
0265 #define EDMA_CPR_CHPRI_SHIFT (0)
0266 #define EDMA_CPR_CHPRI_MASK (0xF << EDMA_CPR_CHPRI_SHIFT)
0267 #define EDMA_CPR_CHPRI(val) (((val) << EDMA_CPR_CHPRI_SHIFT) & EDMA_CPR_CHPRI_MASK)
0268 #define EDMA_CPR_CHPRI_GET(reg) (((reg) & EDMA_CPR_CHPRI_MASK) >> EDMA_CPR_CHPRI_SHIFT)
0269 #define EDMA_CPR_GRPPRI_SHIFT (0)
0270 #define EDMA_CPR_GRPPRI_MASK (0xF << EDMA_CPR_GRPPRI_SHIFT)
0271 #define EDMA_CPR_GRPPRI(val) (((val) << EDMA_CPR_GRPPRI_SHIFT) & EDMA_CPR_GRPPRI_MASK)
0272 #define EDMA_CPR_GRPPRI_GET(reg) (((reg) & EDMA_CPR_GRPPRI_MASK) >> EDMA_CPR_GRPPRI_SHIFT)
0273 #ifdef EDMA_HAS_CPR_DPA
0274 #define EDMA_CPR_DPA (1 << 6)
0275 #endif
0276 #define EDMA_CPR_ECP (1 << 7)
0277
0278 uint32_t reserved0140[(0x1000-0x140)/4];
0279
0280 struct fsl_edma_tcd {
0281 uint32_t SADDR;
0282 uint32_t SDF;
0283 #define EDMA_TCD_SDF_SMOD_SHIFT (27)
0284 #define EDMA_TCD_SDF_SMOD_MASK (0x1F << EDMA_TCD_SDF_SMOD_SHIFT)
0285 #define EDMA_TCD_SDF_SMOD(val) (((val) << EDMA_TCD_SDF_SMOD_SHIFT) & EDMA_TCD_SDF_SMOD_MASK)
0286 #define EDMA_TCD_SDF_SMOD_GET(reg) (((reg) & EDMA_TCD_SDF_SMOD_MASK) >> EDMA_TCD_SDF_SMOD_SHIFT)
0287 #define EDMA_TCD_SDF_SSIZE_SHIFT (24)
0288 #define EDMA_TCD_SDF_SSIZE_MASK (0x7 << EDMA_TCD_SDF_SSIZE_SHIFT)
0289 #define EDMA_TCD_SDF_SSIZE(val) (((val) << EDMA_TCD_SDF_SSIZE_SHIFT) & EDMA_TCD_SDF_SSIZE_MASK)
0290 #define EDMA_TCD_SDF_SSIZE_GET(reg) (((reg) & EDMA_TCD_SDF_SSIZE_MASK) >> EDMA_TCD_SDF_SSIZE_SHIFT)
0291 #define EDMA_TCD_SDF_SSIZE_8BIT EDMA_TCD_SDF_SSIZE(0)
0292 #define EDMA_TCD_SDF_SSIZE_16BIT EDMA_TCD_SDF_SSIZE(1)
0293 #define EDMA_TCD_SDF_SSIZE_32BIT EDMA_TCD_SDF_SSIZE(2)
0294 #define EDMA_TCD_SDF_SSIZE_64BIT EDMA_TCD_SDF_SSIZE(3)
0295 #define EDMA_TCD_SDF_SSIZE_32BYTE EDMA_TCD_SDF_SSIZE(5)
0296 #define EDMA_TCD_SDF_DMOD_SHIFT (19)
0297 #define EDMA_TCD_SDF_DMOD_MASK (0x1F << EDMA_TCD_SDF_DMOD_SHIFT)
0298 #define EDMA_TCD_SDF_DMOD(val) (((val) << EDMA_TCD_SDF_DMOD_SHIFT) & EDMA_TCD_SDF_DMOD_MASK)
0299 #define EDMA_TCD_SDF_DMOD_GET(reg) (((reg) & EDMA_TCD_SDF_DMOD_MASK) >> EDMA_TCD_SDF_DMOD_SHIFT)
0300 #define EDMA_TCD_SDF_DSIZE_SHIFT (16)
0301 #define EDMA_TCD_SDF_DSIZE_MASK (0x7 << EDMA_TCD_SDF_DSIZE_SHIFT)
0302 #define EDMA_TCD_SDF_DSIZE(val) (((val) << EDMA_TCD_SDF_DSIZE_SHIFT) & EDMA_TCD_SDF_DSIZE_MASK)
0303 #define EDMA_TCD_SDF_DSIZE_GET(reg) (((reg) & EDMA_TCD_SDF_DSIZE_MASK) >> EDMA_TCD_SDF_DSIZE_SHIFT)
0304 #define EDMA_TCD_SDF_DSIZE_8BIT EDMA_TCD_SDF_DSIZE(0)
0305 #define EDMA_TCD_SDF_DSIZE_16BIT EDMA_TCD_SDF_DSIZE(1)
0306 #define EDMA_TCD_SDF_DSIZE_32BIT EDMA_TCD_SDF_DSIZE(2)
0307 #define EDMA_TCD_SDF_DSIZE_64BIT EDMA_TCD_SDF_DSIZE(3)
0308 #define EDMA_TCD_SDF_DSIZE_32BYTE EDMA_TCD_SDF_DSIZE(5)
0309 #define EDMA_TCD_SDF_SOFF_SHIFT (0)
0310 #define EDMA_TCD_SDF_SOFF_MASK (0xFFFF << EDMA_TCD_SDF_SOFF_SHIFT)
0311 #define EDMA_TCD_SDF_SOFF(val) (((val) << EDMA_TCD_SDF_SOFF_SHIFT) & EDMA_TCD_SDF_SOFF_MASK)
0312 #define EDMA_TCD_SDF_SOFF_GET(reg) (((reg) & EDMA_TCD_SDF_SOFF_MASK) >> EDMA_TCD_SDF_SOFF_SHIFT)
0313
0314 uint32_t NBYTES;
0315 #define EDMA_TCD_NBYTES_ALT_NBYTES_SHIFT (0)
0316 #define EDMA_TCD_NBYTES_ALT_NBYTES_MASK (0x3FF << EDMA_TCD_NBYTES_ALT_NBYTES_SHIFT)
0317 #define EDMA_TCD_NBYTES_ALT_NBYTES(val) (((val) << EDMA_TCD_NBYTES_ALT_NBYTES_SHIFT) & EDMA_TCD_NBYTES_ALT_NBYTES_MASK)
0318 #define EDMA_TCD_NBYTES_ALT_MLOFF_SHIFT (10)
0319 #define EDMA_TCD_NBYTES_ALT_MLOFF_MASK (0xFFFFF << EDMA_TCD_NBYTES_ALT_MLOFF_SHIFT)
0320 #define EDMA_TCD_NBYTES_ALT_MLOFF(val) (((val) << EDMA_TCD_NBYTES_ALT_MLOFF_SHIFT) & EDMA_TCD_NBYTES_ALT_MLOFF_MASK)
0321 #define EDMA_TCD_NBYTES_ALT_DMLOE (1 << 30)
0322 #define EDMA_TCD_NBYTES_ALT_SMLOE (1 << 31)
0323 int32_t SLAST;
0324 uint32_t DADDR;
0325 uint32_t CDF;
0326 #define EDMA_TCD_CDF_CITERE_LINK (1 << 31)
0327 #define EDMA_TCD_CDF_CITER_SHIFT (16)
0328 #define EDMA_TCD_CDF_CITER_MASK (0x7FFF << EDMA_TCD_CDF_CITER_SHIFT)
0329 #define EDMA_TCD_CDF_CITER(val) (((val) << EDMA_TCD_CDF_CITER_SHIFT) & EDMA_TCD_CDF_CITER_MASK)
0330 #define EDMA_TCD_CDF_CITER_GET(reg) (((reg) & EDMA_TCD_CDF_CITER_MASK) >> EDMA_TCD_CDF_CITER_SHIFT)
0331 #define EDMA_TCD_CDF_DOFF_SHIFT (0)
0332 #define EDMA_TCD_CDF_DOFF_MASK (0xFFFF << EDMA_TCD_CDF_DOFF_SHIFT)
0333 #define EDMA_TCD_CDF_DOFF(val) (((val) << EDMA_TCD_CDF_DOFF_SHIFT) & EDMA_TCD_CDF_DOFF_MASK)
0334 #define EDMA_TCD_CDF_DOFF_GET(reg) (((reg) & EDMA_TCD_CDF_DOFF_MASK) >> EDMA_TCD_CDF_DOFF_SHIFT)
0335
0336 #define EDMA_TCD_CDF_ALT_CITERLINKCH_SHIFT (25)
0337 #define EDMA_TCD_CDF_ALT_CITERLINKCH_MASK (0x3F << EDMA_TCD_CDF_ALT_CITERLINKCH_SHIFT)
0338 #define EDMA_TCD_CDF_ALT_CITERLINKCH(val) (((val) << EDMA_TCD_CDF_ALT_CITERLINKCH_SHIFT) & EDMA_TCD_CDF_ALT_CITERLINKCH_MASK)
0339 #define EDMA_TCD_CDF_ALT_CITERLINKCH_GET(reg) (((reg) & EDMA_TCD_CDF_ALT_CITERLINKCH_MASK) >> EDMA_TCD_CDF_ALT_CITERLINKCH_SHIFT)
0340 #define EDMA_TCD_CDF_ALT_CITER_SHIFT (16)
0341 #define EDMA_TCD_CDF_ALT_CITER_MASK (0x1FF << EDMA_TCD_CDF_ALT_CITER_SHIFT)
0342 #define EDMA_TCD_CDF_ALT_CITER(val) (((val) << EDMA_TCD_CDF_ALT_CITER_SHIFT) & EDMA_TCD_CDF_ALT_CITER_MASK)
0343 #define EDMA_TCD_CDF_ALT_CITER_GET(reg) (((reg) & EDMA_TCD_CDF_ALT_CITER_MASK) >> EDMA_TCD_CDF_ALT_CITER_SHIFT)
0344
0345 #define EDMA_TCD_CDF_NOLINK_CITER_SHIFT (16)
0346 #define EDMA_TCD_CDF_NOLINK_CITER_MASK (0xFFFF << EDMA_TCD_CDF_NOLINK_CITER_SHIFT)
0347 #define EDMA_TCD_CDF_NOLINK_CITER(val) (((val) << EDMA_TCD_CDF_NOLINK_CITER_SHIFT) & EDMA_TCD_CDF_NOLINK_CITER_MASK)
0348 #define EDMA_TCD_CDF_NOLINK_CITER_GET(reg) (((reg) & EDMA_TCD_CDF_NOLINK_CITER_MASK) >> EDMA_TCD_CDF_NOLINK_CITER_SHIFT)
0349
0350 int32_t DLAST_SGA;
0351 uint32_t BMF;
0352 #define EDMA_TCD_BMF_BITERE_LINK (1 << 31)
0353 #define EDMA_TCD_BMF_BITER_SHIFT (16)
0354 #define EDMA_TCD_BMF_BITER_MASK (0x7FFF << EDMA_TCD_BMF_BITER_SHIFT)
0355 #define EDMA_TCD_BMF_BITER(val) (((val) << EDMA_TCD_BMF_BITER_SHIFT) & EDMA_TCD_BMF_BITER_MASK)
0356 #define EDMA_TCD_BMF_BITER_GET(reg) (((reg) & EDMA_TCD_BMF_BITER_MASK) >> EDMA_TCD_BMF_BITER_SHIFT)
0357 #define EDMA_TCD_BMF_BWC_SHIFT (14)
0358 #define EDMA_TCD_BMF_BWC_MASK (0x3 << EDMA_TCD_BMF_BWC_SHIFT)
0359 #define EDMA_TCD_BMF_BWC(val) (((val) << EDMA_TCD_BMF_BWC_SHIFT) & EDMA_TCD_BMF_BWC_MASK)
0360 #define EDMA_TCD_BMF_BWC_GET(reg) (((reg) & EDMA_TCD_BMF_BWC_MASK) >> EDMA_TCD_BMF_BWC_SHIFT)
0361 #define EDMA_TCD_BMF_MAJORLINKCH_SHIFT (8)
0362 #define EDMA_TCD_BMF_MAJORLINKCH_MASK (0x3F << EDMA_TCD_BMF_MAJORLINKCH_SHIFT)
0363 #define EDMA_TCD_BMF_MAJORLINKCH(val) (((val) << EDMA_TCD_BMF_MAJORLINKCH_SHIFT) & EDMA_TCD_BMF_MAJORLINKCH_MASK)
0364 #define EDMA_TCD_BMF_MAJORLINKCH_GET(reg) (((reg) & EDMA_TCD_BMF_MAJORLINKCH_MASK) >> EDMA_TCD_BMF_MAJORLINKCH_SHIFT)
0365 #define EDMA_TCD_BMF_DONE (1 << 7)
0366 #define EDMA_TCD_BMF_ACTIVE (1 << 6)
0367 #define EDMA_TCD_BMF_MAJORE_LINK (1 << 5)
0368 #define EDMA_TCD_BMF_E_SG (1 << 4)
0369 #define EDMA_TCD_BMF_D_REQ (1 << 3)
0370 #define EDMA_TCD_BMF_INT_HALF (1 << 2)
0371 #define EDMA_TCD_BMF_INT_MAJ (1 << 1)
0372 #define EDMA_TCD_BMF_START (1 << 0)
0373
0374 #define EDMA_TCD_BMF_ALT_BITERLINKCH_SHIFT (25)
0375 #define EDMA_TCD_BMF_ALT_BITERLINKCH_MASK (0x3F << EDMA_TCD_BMF_ALT_BITERLINKCH_SHIFT)
0376 #define EDMA_TCD_BMF_ALT_BITERLINKCH(val) (((val) << EDMA_TCD_BMF_ALT_BITERLINKCH_SHIFT) & EDMA_TCD_BMF_ALT_BITERLINKCH_MASK)
0377 #define EDMA_TCD_BMF_ALT_BITERLINKCH_GET(reg) (((reg) & EDMA_TCD_BMF_ALT_BITERLINKCH_MASK) >> EDMA_TCD_BMF_ALT_BITERLINKCH_SHIFT)
0378 #define EDMA_TCD_BMF_ALT_BITER_SHIFT (16)
0379 #define EDMA_TCD_BMF_ALT_BITER_MASK (0x1FF << EDMA_TCD_BMF_ALT_BITER_SHIFT)
0380 #define EDMA_TCD_BMF_ALT_BITER(val) (((val) << EDMA_TCD_BMF_ALT_BITER_SHIFT) & EDMA_TCD_BMF_ALT_BITER_MASK)
0381 #define EDMA_TCD_BMF_ALT_BITER_GET(reg) (((reg) & EDMA_TCD_BMF_ALT_BITER_MASK) >> EDMA_TCD_BMF_ALT_BITER_SHIFT)
0382
0383 #define EDMA_TCD_BMF_NOLINK_BITER_SHIFT (16)
0384 #define EDMA_TCD_BMF_NOLINK_BITER_MASK (0xFFFF << EDMA_TCD_BMF_NOLINK_BITER_SHIFT)
0385 #define EDMA_TCD_BMF_NOLINK_BITER(val) (((val) << EDMA_TCD_BMF_NOLINK_BITER_SHIFT) & EDMA_TCD_BMF_NOLINK_BITER_MASK)
0386 #define EDMA_TCD_BMF_NOLINK_BITER_GET(reg) (((reg) & EDMA_TCD_BMF_NOLINK_BITER_MASK) >> EDMA_TCD_BMF_NOLINK_BITER_SHIFT)
0387
0388 } TCD[64];
0389 };
0390
0391 #ifndef __cplusplus
0392 static const struct fsl_edma_tcd EDMA_TCD_DEFAULT = {
0393 .SADDR = 0,
0394 .SDF = 0,
0395 .NBYTES = 0,
0396 .SLAST = 0,
0397 .DADDR = 0,
0398 .CDF = 0,
0399 .DLAST_SGA = 0,
0400 .BMF = 0,
0401 };
0402 #endif
0403
0404 #define EDMA_TCD_BITER_MASK 0x7fff
0405
0406 #define EDMA_TCD_BITER_SIZE (EDMA_TCD_BITER_MASK + 1)
0407
0408 #define EDMA_TCD_BITER_LINKED_MASK 0x1ff
0409
0410 #define EDMA_TCD_BITER_LINKED_SIZE (EDMA_TCD_BITER_LINKED_MASK + 1)
0411
0412 #define EDMA_TCD_LINK_AND_BITER(link, biter) \
0413 (((link) << 9) + ((biter) & EDMA_TCD_BITER_LINKED_MASK))
0414
0415 #ifdef __cplusplus
0416 }
0417 #endif
0418
0419 #endif