Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * fsl_esai.h - ALSA ESAI interface for the Freescale i.MX SoC
0004  *
0005  * Copyright (C) 2014 Freescale Semiconductor, Inc.
0006  *
0007  * Author: Nicolin Chen <Guangyu.Chen@freescale.com>
0008  */
0009 
0010 #ifndef _FSL_ESAI_DAI_H
0011 #define _FSL_ESAI_DAI_H
0012 
0013 /* ESAI Register Map */
0014 #define REG_ESAI_ETDR       0x00
0015 #define REG_ESAI_ERDR       0x04
0016 #define REG_ESAI_ECR        0x08
0017 #define REG_ESAI_ESR        0x0C
0018 #define REG_ESAI_TFCR       0x10
0019 #define REG_ESAI_TFSR       0x14
0020 #define REG_ESAI_RFCR       0x18
0021 #define REG_ESAI_RFSR       0x1C
0022 #define REG_ESAI_xFCR(tx)   (tx ? REG_ESAI_TFCR : REG_ESAI_RFCR)
0023 #define REG_ESAI_xFSR(tx)   (tx ? REG_ESAI_TFSR : REG_ESAI_RFSR)
0024 #define REG_ESAI_TX0        0x80
0025 #define REG_ESAI_TX1        0x84
0026 #define REG_ESAI_TX2        0x88
0027 #define REG_ESAI_TX3        0x8C
0028 #define REG_ESAI_TX4        0x90
0029 #define REG_ESAI_TX5        0x94
0030 #define REG_ESAI_TSR        0x98
0031 #define REG_ESAI_RX0        0xA0
0032 #define REG_ESAI_RX1        0xA4
0033 #define REG_ESAI_RX2        0xA8
0034 #define REG_ESAI_RX3        0xAC
0035 #define REG_ESAI_SAISR      0xCC
0036 #define REG_ESAI_SAICR      0xD0
0037 #define REG_ESAI_TCR        0xD4
0038 #define REG_ESAI_TCCR       0xD8
0039 #define REG_ESAI_RCR        0xDC
0040 #define REG_ESAI_RCCR       0xE0
0041 #define REG_ESAI_xCR(tx)    (tx ? REG_ESAI_TCR : REG_ESAI_RCR)
0042 #define REG_ESAI_xCCR(tx)   (tx ? REG_ESAI_TCCR : REG_ESAI_RCCR)
0043 #define REG_ESAI_TSMA       0xE4
0044 #define REG_ESAI_TSMB       0xE8
0045 #define REG_ESAI_RSMA       0xEC
0046 #define REG_ESAI_RSMB       0xF0
0047 #define REG_ESAI_xSMA(tx)   (tx ? REG_ESAI_TSMA : REG_ESAI_RSMA)
0048 #define REG_ESAI_xSMB(tx)   (tx ? REG_ESAI_TSMB : REG_ESAI_RSMB)
0049 #define REG_ESAI_PRRC       0xF8
0050 #define REG_ESAI_PCRC       0xFC
0051 
0052 /* ESAI Control Register -- REG_ESAI_ECR 0x8 */
0053 #define ESAI_ECR_ETI_SHIFT  19
0054 #define ESAI_ECR_ETI_MASK   (1 << ESAI_ECR_ETI_SHIFT)
0055 #define ESAI_ECR_ETI        (1 << ESAI_ECR_ETI_SHIFT)
0056 #define ESAI_ECR_ETO_SHIFT  18
0057 #define ESAI_ECR_ETO_MASK   (1 << ESAI_ECR_ETO_SHIFT)
0058 #define ESAI_ECR_ETO        (1 << ESAI_ECR_ETO_SHIFT)
0059 #define ESAI_ECR_ERI_SHIFT  17
0060 #define ESAI_ECR_ERI_MASK   (1 << ESAI_ECR_ERI_SHIFT)
0061 #define ESAI_ECR_ERI        (1 << ESAI_ECR_ERI_SHIFT)
0062 #define ESAI_ECR_ERO_SHIFT  16
0063 #define ESAI_ECR_ERO_MASK   (1 << ESAI_ECR_ERO_SHIFT)
0064 #define ESAI_ECR_ERO        (1 << ESAI_ECR_ERO_SHIFT)
0065 #define ESAI_ECR_ERST_SHIFT 1
0066 #define ESAI_ECR_ERST_MASK  (1 << ESAI_ECR_ERST_SHIFT)
0067 #define ESAI_ECR_ERST       (1 << ESAI_ECR_ERST_SHIFT)
0068 #define ESAI_ECR_ESAIEN_SHIFT   0
0069 #define ESAI_ECR_ESAIEN_MASK    (1 << ESAI_ECR_ESAIEN_SHIFT)
0070 #define ESAI_ECR_ESAIEN     (1 << ESAI_ECR_ESAIEN_SHIFT)
0071 
0072 /* ESAI Status Register -- REG_ESAI_ESR 0xC */
0073 #define ESAI_ESR_TINIT_SHIFT    10
0074 #define ESAI_ESR_TINIT_MASK (1 << ESAI_ESR_TINIT_SHIFT)
0075 #define ESAI_ESR_TINIT      (1 << ESAI_ESR_TINIT_SHIFT)
0076 #define ESAI_ESR_RFF_SHIFT  9
0077 #define ESAI_ESR_RFF_MASK   (1 << ESAI_ESR_RFF_SHIFT)
0078 #define ESAI_ESR_RFF        (1 << ESAI_ESR_RFF_SHIFT)
0079 #define ESAI_ESR_TFE_SHIFT  8
0080 #define ESAI_ESR_TFE_MASK   (1 << ESAI_ESR_TFE_SHIFT)
0081 #define ESAI_ESR_TFE        (1 << ESAI_ESR_TFE_SHIFT)
0082 #define ESAI_ESR_TLS_SHIFT  7
0083 #define ESAI_ESR_TLS_MASK   (1 << ESAI_ESR_TLS_SHIFT)
0084 #define ESAI_ESR_TLS        (1 << ESAI_ESR_TLS_SHIFT)
0085 #define ESAI_ESR_TDE_SHIFT  6
0086 #define ESAI_ESR_TDE_MASK   (1 << ESAI_ESR_TDE_SHIFT)
0087 #define ESAI_ESR_TDE        (1 << ESAI_ESR_TDE_SHIFT)
0088 #define ESAI_ESR_TED_SHIFT  5
0089 #define ESAI_ESR_TED_MASK   (1 << ESAI_ESR_TED_SHIFT)
0090 #define ESAI_ESR_TED        (1 << ESAI_ESR_TED_SHIFT)
0091 #define ESAI_ESR_TD_SHIFT   4
0092 #define ESAI_ESR_TD_MASK    (1 << ESAI_ESR_TD_SHIFT)
0093 #define ESAI_ESR_TD     (1 << ESAI_ESR_TD_SHIFT)
0094 #define ESAI_ESR_RLS_SHIFT  3
0095 #define ESAI_ESR_RLS_MASK   (1 << ESAI_ESR_RLS_SHIFT)
0096 #define ESAI_ESR_RLS        (1 << ESAI_ESR_RLS_SHIFT)
0097 #define ESAI_ESR_RDE_SHIFT  2
0098 #define ESAI_ESR_RDE_MASK   (1 << ESAI_ESR_RDE_SHIFT)
0099 #define ESAI_ESR_RDE        (1 << ESAI_ESR_RDE_SHIFT)
0100 #define ESAI_ESR_RED_SHIFT  1
0101 #define ESAI_ESR_RED_MASK   (1 << ESAI_ESR_RED_SHIFT)
0102 #define ESAI_ESR_RED        (1 << ESAI_ESR_RED_SHIFT)
0103 #define ESAI_ESR_RD_SHIFT   0
0104 #define ESAI_ESR_RD_MASK    (1 << ESAI_ESR_RD_SHIFT)
0105 #define ESAI_ESR_RD     (1 << ESAI_ESR_RD_SHIFT)
0106 
0107 /*
0108  * Transmit FIFO Configuration Register -- REG_ESAI_TFCR 0x10
0109  * Receive FIFO Configuration Register -- REG_ESAI_RFCR 0x18
0110  */
0111 #define ESAI_xFCR_TIEN_SHIFT    19
0112 #define ESAI_xFCR_TIEN_MASK (1 << ESAI_xFCR_TIEN_SHIFT)
0113 #define ESAI_xFCR_TIEN      (1 << ESAI_xFCR_TIEN_SHIFT)
0114 #define ESAI_xFCR_REXT_SHIFT    19
0115 #define ESAI_xFCR_REXT_MASK (1 << ESAI_xFCR_REXT_SHIFT)
0116 #define ESAI_xFCR_REXT      (1 << ESAI_xFCR_REXT_SHIFT)
0117 #define ESAI_xFCR_xWA_SHIFT 16
0118 #define ESAI_xFCR_xWA_WIDTH 3
0119 #define ESAI_xFCR_xWA_MASK  (((1 << ESAI_xFCR_xWA_WIDTH) - 1) << ESAI_xFCR_xWA_SHIFT)
0120 #define ESAI_xFCR_xWA(v)    (((8 - ((v) >> 2)) << ESAI_xFCR_xWA_SHIFT) & ESAI_xFCR_xWA_MASK)
0121 #define ESAI_xFCR_xFWM_SHIFT    8
0122 #define ESAI_xFCR_xFWM_WIDTH    8
0123 #define ESAI_xFCR_xFWM_MASK (((1 << ESAI_xFCR_xFWM_WIDTH) - 1) << ESAI_xFCR_xFWM_SHIFT)
0124 #define ESAI_xFCR_xFWM(v)   ((((v) - 1) << ESAI_xFCR_xFWM_SHIFT) & ESAI_xFCR_xFWM_MASK)
0125 #define ESAI_xFCR_xE_SHIFT  2
0126 #define ESAI_xFCR_TE_WIDTH  6
0127 #define ESAI_xFCR_RE_WIDTH  4
0128 #define ESAI_xFCR_TE_MASK   (((1 << ESAI_xFCR_TE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT)
0129 #define ESAI_xFCR_RE_MASK   (((1 << ESAI_xFCR_RE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT)
0130 #define ESAI_xFCR_TE(x)     ((ESAI_xFCR_TE_MASK >> (ESAI_xFCR_TE_WIDTH - x)) & ESAI_xFCR_TE_MASK)
0131 #define ESAI_xFCR_RE(x)     ((ESAI_xFCR_RE_MASK >> (ESAI_xFCR_RE_WIDTH - x)) & ESAI_xFCR_RE_MASK)
0132 #define ESAI_xFCR_xFR_SHIFT 1
0133 #define ESAI_xFCR_xFR_MASK  (1 << ESAI_xFCR_xFR_SHIFT)
0134 #define ESAI_xFCR_xFR       (1 << ESAI_xFCR_xFR_SHIFT)
0135 #define ESAI_xFCR_xFEN_SHIFT    0
0136 #define ESAI_xFCR_xFEN_MASK (1 << ESAI_xFCR_xFEN_SHIFT)
0137 #define ESAI_xFCR_xFEN      (1 << ESAI_xFCR_xFEN_SHIFT)
0138 
0139 /*
0140  * Transmit FIFO Status Register -- REG_ESAI_TFSR 0x14
0141  * Receive FIFO Status Register --REG_ESAI_RFSR 0x1C
0142  */
0143 #define ESAI_xFSR_NTFO_SHIFT    12
0144 #define ESAI_xFSR_NRFI_SHIFT    12
0145 #define ESAI_xFSR_NTFI_SHIFT    8
0146 #define ESAI_xFSR_NRFO_SHIFT    8
0147 #define ESAI_xFSR_NTFx_WIDTH    3
0148 #define ESAI_xFSR_NRFx_WIDTH    2
0149 #define ESAI_xFSR_NTFO_MASK (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFO_SHIFT)
0150 #define ESAI_xFSR_NTFI_MASK (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFI_SHIFT)
0151 #define ESAI_xFSR_NRFO_MASK (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFO_SHIFT)
0152 #define ESAI_xFSR_NRFI_MASK (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFI_SHIFT)
0153 #define ESAI_xFSR_xFCNT_SHIFT   0
0154 #define ESAI_xFSR_xFCNT_WIDTH   8
0155 #define ESAI_xFSR_xFCNT_MASK    (((1 << ESAI_xFSR_xFCNT_WIDTH) - 1) << ESAI_xFSR_xFCNT_SHIFT)
0156 
0157 /* ESAI Transmit Slot Register -- REG_ESAI_TSR 0x98 */
0158 #define ESAI_TSR_SHIFT      0
0159 #define ESAI_TSR_WIDTH      24
0160 #define ESAI_TSR_MASK       (((1 << ESAI_TSR_WIDTH) - 1) << ESAI_TSR_SHIFT)
0161 
0162 /* Serial Audio Interface Status Register -- REG_ESAI_SAISR 0xCC */
0163 #define ESAI_SAISR_TODFE_SHIFT  17
0164 #define ESAI_SAISR_TODFE_MASK   (1 << ESAI_SAISR_TODFE_SHIFT)
0165 #define ESAI_SAISR_TODFE    (1 << ESAI_SAISR_TODFE_SHIFT)
0166 #define ESAI_SAISR_TEDE_SHIFT   16
0167 #define ESAI_SAISR_TEDE_MASK    (1 << ESAI_SAISR_TEDE_SHIFT)
0168 #define ESAI_SAISR_TEDE     (1 << ESAI_SAISR_TEDE_SHIFT)
0169 #define ESAI_SAISR_TDE_SHIFT    15
0170 #define ESAI_SAISR_TDE_MASK (1 << ESAI_SAISR_TDE_SHIFT)
0171 #define ESAI_SAISR_TDE      (1 << ESAI_SAISR_TDE_SHIFT)
0172 #define ESAI_SAISR_TUE_SHIFT    14
0173 #define ESAI_SAISR_TUE_MASK (1 << ESAI_SAISR_TUE_SHIFT)
0174 #define ESAI_SAISR_TUE      (1 << ESAI_SAISR_TUE_SHIFT)
0175 #define ESAI_SAISR_TFS_SHIFT    13
0176 #define ESAI_SAISR_TFS_MASK (1 << ESAI_SAISR_TFS_SHIFT)
0177 #define ESAI_SAISR_TFS      (1 << ESAI_SAISR_TFS_SHIFT)
0178 #define ESAI_SAISR_RODF_SHIFT   10
0179 #define ESAI_SAISR_RODF_MASK    (1 << ESAI_SAISR_RODF_SHIFT)
0180 #define ESAI_SAISR_RODF     (1 << ESAI_SAISR_RODF_SHIFT)
0181 #define ESAI_SAISR_REDF_SHIFT   9
0182 #define ESAI_SAISR_REDF_MASK    (1 << ESAI_SAISR_REDF_SHIFT)
0183 #define ESAI_SAISR_REDF     (1 << ESAI_SAISR_REDF_SHIFT)
0184 #define ESAI_SAISR_RDF_SHIFT    8
0185 #define ESAI_SAISR_RDF_MASK (1 << ESAI_SAISR_RDF_SHIFT)
0186 #define ESAI_SAISR_RDF      (1 << ESAI_SAISR_RDF_SHIFT)
0187 #define ESAI_SAISR_ROE_SHIFT    7
0188 #define ESAI_SAISR_ROE_MASK (1 << ESAI_SAISR_ROE_SHIFT)
0189 #define ESAI_SAISR_ROE      (1 << ESAI_SAISR_ROE_SHIFT)
0190 #define ESAI_SAISR_RFS_SHIFT    6
0191 #define ESAI_SAISR_RFS_MASK (1 << ESAI_SAISR_RFS_SHIFT)
0192 #define ESAI_SAISR_RFS      (1 << ESAI_SAISR_RFS_SHIFT)
0193 #define ESAI_SAISR_IF2_SHIFT    2
0194 #define ESAI_SAISR_IF2_MASK (1 << ESAI_SAISR_IF2_SHIFT)
0195 #define ESAI_SAISR_IF2      (1 << ESAI_SAISR_IF2_SHIFT)
0196 #define ESAI_SAISR_IF1_SHIFT    1
0197 #define ESAI_SAISR_IF1_MASK (1 << ESAI_SAISR_IF1_SHIFT)
0198 #define ESAI_SAISR_IF1      (1 << ESAI_SAISR_IF1_SHIFT)
0199 #define ESAI_SAISR_IF0_SHIFT    0
0200 #define ESAI_SAISR_IF0_MASK (1 << ESAI_SAISR_IF0_SHIFT)
0201 #define ESAI_SAISR_IF0      (1 << ESAI_SAISR_IF0_SHIFT)
0202 
0203 /* Serial Audio Interface Control Register -- REG_ESAI_SAICR 0xD0 */
0204 #define ESAI_SAICR_ALC_SHIFT    8
0205 #define ESAI_SAICR_ALC_MASK (1 << ESAI_SAICR_ALC_SHIFT)
0206 #define ESAI_SAICR_ALC      (1 << ESAI_SAICR_ALC_SHIFT)
0207 #define ESAI_SAICR_TEBE_SHIFT   7
0208 #define ESAI_SAICR_TEBE_MASK    (1 << ESAI_SAICR_TEBE_SHIFT)
0209 #define ESAI_SAICR_TEBE     (1 << ESAI_SAICR_TEBE_SHIFT)
0210 #define ESAI_SAICR_SYNC_SHIFT   6
0211 #define ESAI_SAICR_SYNC_MASK    (1 << ESAI_SAICR_SYNC_SHIFT)
0212 #define ESAI_SAICR_SYNC     (1 << ESAI_SAICR_SYNC_SHIFT)
0213 #define ESAI_SAICR_OF2_SHIFT    2
0214 #define ESAI_SAICR_OF2_MASK (1 << ESAI_SAICR_OF2_SHIFT)
0215 #define ESAI_SAICR_OF2      (1 << ESAI_SAICR_OF2_SHIFT)
0216 #define ESAI_SAICR_OF1_SHIFT    1
0217 #define ESAI_SAICR_OF1_MASK (1 << ESAI_SAICR_OF1_SHIFT)
0218 #define ESAI_SAICR_OF1      (1 << ESAI_SAICR_OF1_SHIFT)
0219 #define ESAI_SAICR_OF0_SHIFT    0
0220 #define ESAI_SAICR_OF0_MASK (1 << ESAI_SAICR_OF0_SHIFT)
0221 #define ESAI_SAICR_OF0      (1 << ESAI_SAICR_OF0_SHIFT)
0222 
0223 /*
0224  * Transmit Control Register -- REG_ESAI_TCR 0xD4
0225  * Receive Control Register -- REG_ESAI_RCR 0xDC
0226  */
0227 #define ESAI_xCR_xLIE_SHIFT 23
0228 #define ESAI_xCR_xLIE_MASK  (1 << ESAI_xCR_xLIE_SHIFT)
0229 #define ESAI_xCR_xLIE       (1 << ESAI_xCR_xLIE_SHIFT)
0230 #define ESAI_xCR_xIE_SHIFT  22
0231 #define ESAI_xCR_xIE_MASK   (1 << ESAI_xCR_xIE_SHIFT)
0232 #define ESAI_xCR_xIE        (1 << ESAI_xCR_xIE_SHIFT)
0233 #define ESAI_xCR_xEDIE_SHIFT    21
0234 #define ESAI_xCR_xEDIE_MASK (1 << ESAI_xCR_xEDIE_SHIFT)
0235 #define ESAI_xCR_xEDIE      (1 << ESAI_xCR_xEDIE_SHIFT)
0236 #define ESAI_xCR_xEIE_SHIFT 20
0237 #define ESAI_xCR_xEIE_MASK  (1 << ESAI_xCR_xEIE_SHIFT)
0238 #define ESAI_xCR_xEIE       (1 << ESAI_xCR_xEIE_SHIFT)
0239 #define ESAI_xCR_xPR_SHIFT  19
0240 #define ESAI_xCR_xPR_MASK   (1 << ESAI_xCR_xPR_SHIFT)
0241 #define ESAI_xCR_xPR        (1 << ESAI_xCR_xPR_SHIFT)
0242 #define ESAI_xCR_PADC_SHIFT 17
0243 #define ESAI_xCR_PADC_MASK  (1 << ESAI_xCR_PADC_SHIFT)
0244 #define ESAI_xCR_PADC       (1 << ESAI_xCR_PADC_SHIFT)
0245 #define ESAI_xCR_xFSR_SHIFT 16
0246 #define ESAI_xCR_xFSR_MASK  (1 << ESAI_xCR_xFSR_SHIFT)
0247 #define ESAI_xCR_xFSR       (1 << ESAI_xCR_xFSR_SHIFT)
0248 #define ESAI_xCR_xFSL_SHIFT 15
0249 #define ESAI_xCR_xFSL_MASK  (1 << ESAI_xCR_xFSL_SHIFT)
0250 #define ESAI_xCR_xFSL       (1 << ESAI_xCR_xFSL_SHIFT)
0251 #define ESAI_xCR_xSWS_SHIFT 10
0252 #define ESAI_xCR_xSWS_WIDTH 5
0253 #define ESAI_xCR_xSWS_MASK  (((1 << ESAI_xCR_xSWS_WIDTH) - 1) << ESAI_xCR_xSWS_SHIFT)
0254 #define ESAI_xCR_xSWS(s, w) ((w < 24 ? (s - w + ((w - 8) >> 2)) : (s < 32 ? 0x1e : 0x1f)) << ESAI_xCR_xSWS_SHIFT)
0255 #define ESAI_xCR_xMOD_SHIFT 8
0256 #define ESAI_xCR_xMOD_WIDTH 2
0257 #define ESAI_xCR_xMOD_MASK  (((1 << ESAI_xCR_xMOD_WIDTH) - 1) << ESAI_xCR_xMOD_SHIFT)
0258 #define ESAI_xCR_xMOD_ONDEMAND  (0x1 << ESAI_xCR_xMOD_SHIFT)
0259 #define ESAI_xCR_xMOD_NETWORK   (0x1 << ESAI_xCR_xMOD_SHIFT)
0260 #define ESAI_xCR_xMOD_AC97  (0x3 << ESAI_xCR_xMOD_SHIFT)
0261 #define ESAI_xCR_xWA_SHIFT  7
0262 #define ESAI_xCR_xWA_MASK   (1 << ESAI_xCR_xWA_SHIFT)
0263 #define ESAI_xCR_xWA        (1 << ESAI_xCR_xWA_SHIFT)
0264 #define ESAI_xCR_xSHFD_SHIFT    6
0265 #define ESAI_xCR_xSHFD_MASK (1 << ESAI_xCR_xSHFD_SHIFT)
0266 #define ESAI_xCR_xSHFD      (1 << ESAI_xCR_xSHFD_SHIFT)
0267 #define ESAI_xCR_xE_SHIFT   0
0268 #define ESAI_xCR_TE_WIDTH   6
0269 #define ESAI_xCR_RE_WIDTH   4
0270 #define ESAI_xCR_TE_MASK    (((1 << ESAI_xCR_TE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT)
0271 #define ESAI_xCR_RE_MASK    (((1 << ESAI_xCR_RE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT)
0272 #define ESAI_xCR_TE(x)      ((ESAI_xCR_TE_MASK >> (ESAI_xCR_TE_WIDTH - x)) & ESAI_xCR_TE_MASK)
0273 #define ESAI_xCR_RE(x)      ((ESAI_xCR_RE_MASK >> (ESAI_xCR_RE_WIDTH - x)) & ESAI_xCR_RE_MASK)
0274 
0275 /*
0276  * Transmit Clock Control Register -- REG_ESAI_TCCR 0xD8
0277  * Receive Clock Control Register -- REG_ESAI_RCCR 0xE0
0278  */
0279 #define ESAI_xCCR_xHCKD_SHIFT   23
0280 #define ESAI_xCCR_xHCKD_MASK    (1 << ESAI_xCCR_xHCKD_SHIFT)
0281 #define ESAI_xCCR_xHCKD     (1 << ESAI_xCCR_xHCKD_SHIFT)
0282 #define ESAI_xCCR_xFSD_SHIFT    22
0283 #define ESAI_xCCR_xFSD_MASK (1 << ESAI_xCCR_xFSD_SHIFT)
0284 #define ESAI_xCCR_xFSD      (1 << ESAI_xCCR_xFSD_SHIFT)
0285 #define ESAI_xCCR_xCKD_SHIFT    21
0286 #define ESAI_xCCR_xCKD_MASK (1 << ESAI_xCCR_xCKD_SHIFT)
0287 #define ESAI_xCCR_xCKD      (1 << ESAI_xCCR_xCKD_SHIFT)
0288 #define ESAI_xCCR_xHCKP_SHIFT   20
0289 #define ESAI_xCCR_xHCKP_MASK    (1 << ESAI_xCCR_xHCKP_SHIFT)
0290 #define ESAI_xCCR_xHCKP     (1 << ESAI_xCCR_xHCKP_SHIFT)
0291 #define ESAI_xCCR_xFSP_SHIFT    19
0292 #define ESAI_xCCR_xFSP_MASK (1 << ESAI_xCCR_xFSP_SHIFT)
0293 #define ESAI_xCCR_xFSP      (1 << ESAI_xCCR_xFSP_SHIFT)
0294 #define ESAI_xCCR_xCKP_SHIFT    18
0295 #define ESAI_xCCR_xCKP_MASK (1 << ESAI_xCCR_xCKP_SHIFT)
0296 #define ESAI_xCCR_xCKP      (1 << ESAI_xCCR_xCKP_SHIFT)
0297 #define ESAI_xCCR_xFP_SHIFT 14
0298 #define ESAI_xCCR_xFP_WIDTH 4
0299 #define ESAI_xCCR_xFP_MASK  (((1 << ESAI_xCCR_xFP_WIDTH) - 1) << ESAI_xCCR_xFP_SHIFT)
0300 #define ESAI_xCCR_xFP(v)    ((((v) - 1) << ESAI_xCCR_xFP_SHIFT) & ESAI_xCCR_xFP_MASK)
0301 #define ESAI_xCCR_xDC_SHIFT     9
0302 #define ESAI_xCCR_xDC_WIDTH 5
0303 #define ESAI_xCCR_xDC_MASK  (((1 << ESAI_xCCR_xDC_WIDTH) - 1) << ESAI_xCCR_xDC_SHIFT)
0304 #define ESAI_xCCR_xDC(v)    ((((v) - 1) << ESAI_xCCR_xDC_SHIFT) & ESAI_xCCR_xDC_MASK)
0305 #define ESAI_xCCR_xPSR_SHIFT    8
0306 #define ESAI_xCCR_xPSR_MASK (1 << ESAI_xCCR_xPSR_SHIFT)
0307 #define ESAI_xCCR_xPSR_BYPASS   (1 << ESAI_xCCR_xPSR_SHIFT)
0308 #define ESAI_xCCR_xPSR_DIV8 (0 << ESAI_xCCR_xPSR_SHIFT)
0309 #define ESAI_xCCR_xPM_SHIFT     0
0310 #define ESAI_xCCR_xPM_WIDTH     8
0311 #define ESAI_xCCR_xPM_MASK  (((1 << ESAI_xCCR_xPM_WIDTH) - 1) << ESAI_xCCR_xPM_SHIFT)
0312 #define ESAI_xCCR_xPM(v)    ((((v) - 1) << ESAI_xCCR_xPM_SHIFT) & ESAI_xCCR_xPM_MASK)
0313 
0314 /* Transmit Slot Mask Register A/B -- REG_ESAI_TSMA/B 0xE4 ~ 0xF0 */
0315 #define ESAI_xSMA_xS_SHIFT  0
0316 #define ESAI_xSMA_xS_WIDTH  16
0317 #define ESAI_xSMA_xS_MASK   (((1 << ESAI_xSMA_xS_WIDTH) - 1) << ESAI_xSMA_xS_SHIFT)
0318 #define ESAI_xSMA_xS(v)     ((v) & ESAI_xSMA_xS_MASK)
0319 #define ESAI_xSMB_xS_SHIFT  0
0320 #define ESAI_xSMB_xS_WIDTH  16
0321 #define ESAI_xSMB_xS_MASK   (((1 << ESAI_xSMB_xS_WIDTH) - 1) << ESAI_xSMB_xS_SHIFT)
0322 #define ESAI_xSMB_xS(v)     (((v) >> ESAI_xSMA_xS_WIDTH) & ESAI_xSMB_xS_MASK)
0323 
0324 /* Port C Direction Register -- REG_ESAI_PRRC 0xF8 */
0325 #define ESAI_PRRC_PDC_SHIFT 0
0326 #define ESAI_PRRC_PDC_WIDTH 12
0327 #define ESAI_PRRC_PDC_MASK  (((1 << ESAI_PRRC_PDC_WIDTH) - 1) << ESAI_PRRC_PDC_SHIFT)
0328 #define ESAI_PRRC_PDC(v)    ((v) & ESAI_PRRC_PDC_MASK)
0329 
0330 /* Port C Control Register -- REG_ESAI_PCRC 0xFC */
0331 #define ESAI_PCRC_PC_SHIFT  0
0332 #define ESAI_PCRC_PC_WIDTH  12
0333 #define ESAI_PCRC_PC_MASK   (((1 << ESAI_PCRC_PC_WIDTH) - 1) << ESAI_PCRC_PC_SHIFT)
0334 #define ESAI_PCRC_PC(v)     ((v) & ESAI_PCRC_PC_MASK)
0335 
0336 #define ESAI_GPIO       0xfff
0337 
0338 /* ESAI clock source */
0339 #define ESAI_HCKT_FSYS      0
0340 #define ESAI_HCKT_EXTAL     1
0341 #define ESAI_HCKR_FSYS      2
0342 #define ESAI_HCKR_EXTAL     3
0343 
0344 /* ESAI clock divider */
0345 #define ESAI_TX_DIV_PSR     0
0346 #define ESAI_TX_DIV_PM      1
0347 #define ESAI_TX_DIV_FP      2
0348 #define ESAI_RX_DIV_PSR     3
0349 #define ESAI_RX_DIV_PM      4
0350 #define ESAI_RX_DIV_FP      5
0351 #endif /* _FSL_ESAI_DAI_H */