Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:42

0001 /**
0002  * @file
0003  *
0004  * @ingroup RTEMSBSPsSharedFslEDMA
0005  */
0006 
0007 /*
0008  * Copyright (C) 2011, 2020 embedded brains GmbH & Co. KG
0009  *
0010  * Redistribution and use in source and binary forms, with or without
0011  * modification, are permitted provided that the following conditions
0012  * are met:
0013  * 1. Redistributions of source code must retain the above copyright
0014  *    notice, this list of conditions and the following disclaimer.
0015  * 2. Redistributions in binary form must reproduce the above copyright
0016  *    notice, this list of conditions and the following disclaimer in the
0017  *    documentation and/or other materials provided with the distribution.
0018  *
0019  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0020  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0021  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0022  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0023  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0024  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0025  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0026  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0027  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0028  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0029  * POSSIBILITY OF SUCH DAMAGE.
0030  */
0031 
0032 /*********************************************************************
0033  *
0034  * Copyright:
0035  *  Freescale Semiconductor, INC. All Rights Reserved.
0036  *  You are hereby granted a copyright license to use, modify, and
0037  *  distribute the SOFTWARE so long as this entire notice is
0038  *  retained without alteration in any modified and/or redistributed
0039  *  versions, and that such modified versions are clearly identified
0040  *  as such. No licenses are granted by implication, estoppel or
0041  *  otherwise under any patents or trademarks of Freescale
0042  *  Semiconductor, Inc. This software is provided on an "AS IS"
0043  *  basis and without warranty.
0044  *
0045  *  To the maximum extent permitted by applicable law, Freescale
0046  *  Semiconductor DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
0047  *  INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
0048  *  PARTICULAR PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH
0049  *  REGARD TO THE SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF)
0050  *  AND ANY ACCOMPANYING WRITTEN MATERIALS.
0051  *
0052  *  To the maximum extent permitted by applicable law, IN NO EVENT
0053  *  SHALL Freescale Semiconductor BE LIABLE FOR ANY DAMAGES WHATSOEVER
0054  *  (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
0055  *  BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER
0056  *  PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
0057  *
0058  *  Freescale Semiconductor assumes no responsibility for the
0059  *  maintenance and support of this software
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)))       /* iMXRT only */
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 /* __cplusplus */
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 /* __cplusplus */
0418 
0419 #endif /* LIBBSP_SHARED_FSL_REGS_EDMA_H */