~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/sound/soc/fsl/fsl_esai.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * fsl_esai.h - ALSA ESAI interface for the Freescale i.MX SoC
  4  *
  5  * Copyright (C) 2014 Freescale Semiconductor, Inc.
  6  *
  7  * Author: Nicolin Chen <Guangyu.Chen@freescale.com>
  8  */
  9 
 10 #ifndef _FSL_ESAI_DAI_H
 11 #define _FSL_ESAI_DAI_H
 12 
 13 /* ESAI Register Map */
 14 #define REG_ESAI_ETDR           0x00
 15 #define REG_ESAI_ERDR           0x04
 16 #define REG_ESAI_ECR            0x08
 17 #define REG_ESAI_ESR            0x0C
 18 #define REG_ESAI_TFCR           0x10
 19 #define REG_ESAI_TFSR           0x14
 20 #define REG_ESAI_RFCR           0x18
 21 #define REG_ESAI_RFSR           0x1C
 22 #define REG_ESAI_xFCR(tx)       (tx ? REG_ESAI_TFCR : REG_ESAI_RFCR)
 23 #define REG_ESAI_xFSR(tx)       (tx ? REG_ESAI_TFSR : REG_ESAI_RFSR)
 24 #define REG_ESAI_TX0            0x80
 25 #define REG_ESAI_TX1            0x84
 26 #define REG_ESAI_TX2            0x88
 27 #define REG_ESAI_TX3            0x8C
 28 #define REG_ESAI_TX4            0x90
 29 #define REG_ESAI_TX5            0x94
 30 #define REG_ESAI_TSR            0x98
 31 #define REG_ESAI_RX0            0xA0
 32 #define REG_ESAI_RX1            0xA4
 33 #define REG_ESAI_RX2            0xA8
 34 #define REG_ESAI_RX3            0xAC
 35 #define REG_ESAI_SAISR          0xCC
 36 #define REG_ESAI_SAICR          0xD0
 37 #define REG_ESAI_TCR            0xD4
 38 #define REG_ESAI_TCCR           0xD8
 39 #define REG_ESAI_RCR            0xDC
 40 #define REG_ESAI_RCCR           0xE0
 41 #define REG_ESAI_xCR(tx)        (tx ? REG_ESAI_TCR : REG_ESAI_RCR)
 42 #define REG_ESAI_xCCR(tx)       (tx ? REG_ESAI_TCCR : REG_ESAI_RCCR)
 43 #define REG_ESAI_TSMA           0xE4
 44 #define REG_ESAI_TSMB           0xE8
 45 #define REG_ESAI_RSMA           0xEC
 46 #define REG_ESAI_RSMB           0xF0
 47 #define REG_ESAI_xSMA(tx)       (tx ? REG_ESAI_TSMA : REG_ESAI_RSMA)
 48 #define REG_ESAI_xSMB(tx)       (tx ? REG_ESAI_TSMB : REG_ESAI_RSMB)
 49 #define REG_ESAI_PRRC           0xF8
 50 #define REG_ESAI_PCRC           0xFC
 51 
 52 /* ESAI Control Register -- REG_ESAI_ECR 0x8 */
 53 #define ESAI_ECR_ETI_SHIFT      19
 54 #define ESAI_ECR_ETI_MASK       (1 << ESAI_ECR_ETI_SHIFT)
 55 #define ESAI_ECR_ETI            (1 << ESAI_ECR_ETI_SHIFT)
 56 #define ESAI_ECR_ETO_SHIFT      18
 57 #define ESAI_ECR_ETO_MASK       (1 << ESAI_ECR_ETO_SHIFT)
 58 #define ESAI_ECR_ETO            (1 << ESAI_ECR_ETO_SHIFT)
 59 #define ESAI_ECR_ERI_SHIFT      17
 60 #define ESAI_ECR_ERI_MASK       (1 << ESAI_ECR_ERI_SHIFT)
 61 #define ESAI_ECR_ERI            (1 << ESAI_ECR_ERI_SHIFT)
 62 #define ESAI_ECR_ERO_SHIFT      16
 63 #define ESAI_ECR_ERO_MASK       (1 << ESAI_ECR_ERO_SHIFT)
 64 #define ESAI_ECR_ERO            (1 << ESAI_ECR_ERO_SHIFT)
 65 #define ESAI_ECR_ERST_SHIFT     1
 66 #define ESAI_ECR_ERST_MASK      (1 << ESAI_ECR_ERST_SHIFT)
 67 #define ESAI_ECR_ERST           (1 << ESAI_ECR_ERST_SHIFT)
 68 #define ESAI_ECR_ESAIEN_SHIFT   0
 69 #define ESAI_ECR_ESAIEN_MASK    (1 << ESAI_ECR_ESAIEN_SHIFT)
 70 #define ESAI_ECR_ESAIEN         (1 << ESAI_ECR_ESAIEN_SHIFT)
 71 
 72 /* ESAI Status Register -- REG_ESAI_ESR 0xC */
 73 #define ESAI_ESR_TINIT_SHIFT    10
 74 #define ESAI_ESR_TINIT_MASK     (1 << ESAI_ESR_TINIT_SHIFT)
 75 #define ESAI_ESR_TINIT          (1 << ESAI_ESR_TINIT_SHIFT)
 76 #define ESAI_ESR_RFF_SHIFT      9
 77 #define ESAI_ESR_RFF_MASK       (1 << ESAI_ESR_RFF_SHIFT)
 78 #define ESAI_ESR_RFF            (1 << ESAI_ESR_RFF_SHIFT)
 79 #define ESAI_ESR_TFE_SHIFT      8
 80 #define ESAI_ESR_TFE_MASK       (1 << ESAI_ESR_TFE_SHIFT)
 81 #define ESAI_ESR_TFE            (1 << ESAI_ESR_TFE_SHIFT)
 82 #define ESAI_ESR_TLS_SHIFT      7
 83 #define ESAI_ESR_TLS_MASK       (1 << ESAI_ESR_TLS_SHIFT)
 84 #define ESAI_ESR_TLS            (1 << ESAI_ESR_TLS_SHIFT)
 85 #define ESAI_ESR_TDE_SHIFT      6
 86 #define ESAI_ESR_TDE_MASK       (1 << ESAI_ESR_TDE_SHIFT)
 87 #define ESAI_ESR_TDE            (1 << ESAI_ESR_TDE_SHIFT)
 88 #define ESAI_ESR_TED_SHIFT      5
 89 #define ESAI_ESR_TED_MASK       (1 << ESAI_ESR_TED_SHIFT)
 90 #define ESAI_ESR_TED            (1 << ESAI_ESR_TED_SHIFT)
 91 #define ESAI_ESR_TD_SHIFT       4
 92 #define ESAI_ESR_TD_MASK        (1 << ESAI_ESR_TD_SHIFT)
 93 #define ESAI_ESR_TD             (1 << ESAI_ESR_TD_SHIFT)
 94 #define ESAI_ESR_RLS_SHIFT      3
 95 #define ESAI_ESR_RLS_MASK       (1 << ESAI_ESR_RLS_SHIFT)
 96 #define ESAI_ESR_RLS            (1 << ESAI_ESR_RLS_SHIFT)
 97 #define ESAI_ESR_RDE_SHIFT      2
 98 #define ESAI_ESR_RDE_MASK       (1 << ESAI_ESR_RDE_SHIFT)
 99 #define ESAI_ESR_RDE            (1 << ESAI_ESR_RDE_SHIFT)
100 #define ESAI_ESR_RED_SHIFT      1
101 #define ESAI_ESR_RED_MASK       (1 << ESAI_ESR_RED_SHIFT)
102 #define ESAI_ESR_RED            (1 << ESAI_ESR_RED_SHIFT)
103 #define ESAI_ESR_RD_SHIFT       0
104 #define ESAI_ESR_RD_MASK        (1 << ESAI_ESR_RD_SHIFT)
105 #define ESAI_ESR_RD             (1 << ESAI_ESR_RD_SHIFT)
106 
107 /*
108  * Transmit FIFO Configuration Register -- REG_ESAI_TFCR 0x10
109  * Receive FIFO Configuration Register -- REG_ESAI_RFCR 0x18
110  */
111 #define ESAI_xFCR_TIEN_SHIFT    19
112 #define ESAI_xFCR_TIEN_MASK     (1 << ESAI_xFCR_TIEN_SHIFT)
113 #define ESAI_xFCR_TIEN          (1 << ESAI_xFCR_TIEN_SHIFT)
114 #define ESAI_xFCR_REXT_SHIFT    19
115 #define ESAI_xFCR_REXT_MASK     (1 << ESAI_xFCR_REXT_SHIFT)
116 #define ESAI_xFCR_REXT          (1 << ESAI_xFCR_REXT_SHIFT)
117 #define ESAI_xFCR_xWA_SHIFT     16
118 #define ESAI_xFCR_xWA_WIDTH     3
119 #define ESAI_xFCR_xWA_MASK      (((1 << ESAI_xFCR_xWA_WIDTH) - 1) << ESAI_xFCR_xWA_SHIFT)
120 #define ESAI_xFCR_xWA(v)        (((8 - ((v) >> 2)) << ESAI_xFCR_xWA_SHIFT) & ESAI_xFCR_xWA_MASK)
121 #define ESAI_xFCR_xFWM_SHIFT    8
122 #define ESAI_xFCR_xFWM_WIDTH    8
123 #define ESAI_xFCR_xFWM_MASK     (((1 << ESAI_xFCR_xFWM_WIDTH) - 1) << ESAI_xFCR_xFWM_SHIFT)
124 #define ESAI_xFCR_xFWM(v)       ((((v) - 1) << ESAI_xFCR_xFWM_SHIFT) & ESAI_xFCR_xFWM_MASK)
125 #define ESAI_xFCR_xE_SHIFT      2
126 #define ESAI_xFCR_TE_WIDTH      6
127 #define ESAI_xFCR_RE_WIDTH      4
128 #define ESAI_xFCR_TE_MASK       (((1 << ESAI_xFCR_TE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT)
129 #define ESAI_xFCR_RE_MASK       (((1 << ESAI_xFCR_RE_WIDTH) - 1) << ESAI_xFCR_xE_SHIFT)
130 #define ESAI_xFCR_TE(x)         ((ESAI_xFCR_TE_MASK >> (ESAI_xFCR_TE_WIDTH - x)) & ESAI_xFCR_TE_MASK)
131 #define ESAI_xFCR_RE(x)         ((ESAI_xFCR_RE_MASK >> (ESAI_xFCR_RE_WIDTH - x)) & ESAI_xFCR_RE_MASK)
132 #define ESAI_xFCR_xFR_SHIFT     1
133 #define ESAI_xFCR_xFR_MASK      (1 << ESAI_xFCR_xFR_SHIFT)
134 #define ESAI_xFCR_xFR           (1 << ESAI_xFCR_xFR_SHIFT)
135 #define ESAI_xFCR_xFEN_SHIFT    0
136 #define ESAI_xFCR_xFEN_MASK     (1 << ESAI_xFCR_xFEN_SHIFT)
137 #define ESAI_xFCR_xFEN          (1 << ESAI_xFCR_xFEN_SHIFT)
138 
139 /*
140  * Transmit FIFO Status Register -- REG_ESAI_TFSR 0x14
141  * Receive FIFO Status Register --REG_ESAI_RFSR 0x1C
142  */
143 #define ESAI_xFSR_NTFO_SHIFT    12
144 #define ESAI_xFSR_NRFI_SHIFT    12
145 #define ESAI_xFSR_NTFI_SHIFT    8
146 #define ESAI_xFSR_NRFO_SHIFT    8
147 #define ESAI_xFSR_NTFx_WIDTH    3
148 #define ESAI_xFSR_NRFx_WIDTH    2
149 #define ESAI_xFSR_NTFO_MASK     (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFO_SHIFT)
150 #define ESAI_xFSR_NTFI_MASK     (((1 << ESAI_xFSR_NTFx_WIDTH) - 1) << ESAI_xFSR_NTFI_SHIFT)
151 #define ESAI_xFSR_NRFO_MASK     (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFO_SHIFT)
152 #define ESAI_xFSR_NRFI_MASK     (((1 << ESAI_xFSR_NRFx_WIDTH) - 1) << ESAI_xFSR_NRFI_SHIFT)
153 #define ESAI_xFSR_xFCNT_SHIFT   0
154 #define ESAI_xFSR_xFCNT_WIDTH   8
155 #define ESAI_xFSR_xFCNT_MASK    (((1 << ESAI_xFSR_xFCNT_WIDTH) - 1) << ESAI_xFSR_xFCNT_SHIFT)
156 
157 /* ESAI Transmit Slot Register -- REG_ESAI_TSR 0x98 */
158 #define ESAI_TSR_SHIFT          0
159 #define ESAI_TSR_WIDTH          24
160 #define ESAI_TSR_MASK           (((1 << ESAI_TSR_WIDTH) - 1) << ESAI_TSR_SHIFT)
161 
162 /* Serial Audio Interface Status Register -- REG_ESAI_SAISR 0xCC */
163 #define ESAI_SAISR_TODFE_SHIFT  17
164 #define ESAI_SAISR_TODFE_MASK   (1 << ESAI_SAISR_TODFE_SHIFT)
165 #define ESAI_SAISR_TODFE        (1 << ESAI_SAISR_TODFE_SHIFT)
166 #define ESAI_SAISR_TEDE_SHIFT   16
167 #define ESAI_SAISR_TEDE_MASK    (1 << ESAI_SAISR_TEDE_SHIFT)
168 #define ESAI_SAISR_TEDE         (1 << ESAI_SAISR_TEDE_SHIFT)
169 #define ESAI_SAISR_TDE_SHIFT    15
170 #define ESAI_SAISR_TDE_MASK     (1 << ESAI_SAISR_TDE_SHIFT)
171 #define ESAI_SAISR_TDE          (1 << ESAI_SAISR_TDE_SHIFT)
172 #define ESAI_SAISR_TUE_SHIFT    14
173 #define ESAI_SAISR_TUE_MASK     (1 << ESAI_SAISR_TUE_SHIFT)
174 #define ESAI_SAISR_TUE          (1 << ESAI_SAISR_TUE_SHIFT)
175 #define ESAI_SAISR_TFS_SHIFT    13
176 #define ESAI_SAISR_TFS_MASK     (1 << ESAI_SAISR_TFS_SHIFT)
177 #define ESAI_SAISR_TFS          (1 << ESAI_SAISR_TFS_SHIFT)
178 #define ESAI_SAISR_RODF_SHIFT   10
179 #define ESAI_SAISR_RODF_MASK    (1 << ESAI_SAISR_RODF_SHIFT)
180 #define ESAI_SAISR_RODF         (1 << ESAI_SAISR_RODF_SHIFT)
181 #define ESAI_SAISR_REDF_SHIFT   9
182 #define ESAI_SAISR_REDF_MASK    (1 << ESAI_SAISR_REDF_SHIFT)
183 #define ESAI_SAISR_REDF         (1 << ESAI_SAISR_REDF_SHIFT)
184 #define ESAI_SAISR_RDF_SHIFT    8
185 #define ESAI_SAISR_RDF_MASK     (1 << ESAI_SAISR_RDF_SHIFT)
186 #define ESAI_SAISR_RDF          (1 << ESAI_SAISR_RDF_SHIFT)
187 #define ESAI_SAISR_ROE_SHIFT    7
188 #define ESAI_SAISR_ROE_MASK     (1 << ESAI_SAISR_ROE_SHIFT)
189 #define ESAI_SAISR_ROE          (1 << ESAI_SAISR_ROE_SHIFT)
190 #define ESAI_SAISR_RFS_SHIFT    6
191 #define ESAI_SAISR_RFS_MASK     (1 << ESAI_SAISR_RFS_SHIFT)
192 #define ESAI_SAISR_RFS          (1 << ESAI_SAISR_RFS_SHIFT)
193 #define ESAI_SAISR_IF2_SHIFT    2
194 #define ESAI_SAISR_IF2_MASK     (1 << ESAI_SAISR_IF2_SHIFT)
195 #define ESAI_SAISR_IF2          (1 << ESAI_SAISR_IF2_SHIFT)
196 #define ESAI_SAISR_IF1_SHIFT    1
197 #define ESAI_SAISR_IF1_MASK     (1 << ESAI_SAISR_IF1_SHIFT)
198 #define ESAI_SAISR_IF1          (1 << ESAI_SAISR_IF1_SHIFT)
199 #define ESAI_SAISR_IF0_SHIFT    0
200 #define ESAI_SAISR_IF0_MASK     (1 << ESAI_SAISR_IF0_SHIFT)
201 #define ESAI_SAISR_IF0          (1 << ESAI_SAISR_IF0_SHIFT)
202 
203 /* Serial Audio Interface Control Register -- REG_ESAI_SAICR 0xD0 */
204 #define ESAI_SAICR_ALC_SHIFT    8
205 #define ESAI_SAICR_ALC_MASK     (1 << ESAI_SAICR_ALC_SHIFT)
206 #define ESAI_SAICR_ALC          (1 << ESAI_SAICR_ALC_SHIFT)
207 #define ESAI_SAICR_TEBE_SHIFT   7
208 #define ESAI_SAICR_TEBE_MASK    (1 << ESAI_SAICR_TEBE_SHIFT)
209 #define ESAI_SAICR_TEBE         (1 << ESAI_SAICR_TEBE_SHIFT)
210 #define ESAI_SAICR_SYNC_SHIFT   6
211 #define ESAI_SAICR_SYNC_MASK    (1 << ESAI_SAICR_SYNC_SHIFT)
212 #define ESAI_SAICR_SYNC         (1 << ESAI_SAICR_SYNC_SHIFT)
213 #define ESAI_SAICR_OF2_SHIFT    2
214 #define ESAI_SAICR_OF2_MASK     (1 << ESAI_SAICR_OF2_SHIFT)
215 #define ESAI_SAICR_OF2          (1 << ESAI_SAICR_OF2_SHIFT)
216 #define ESAI_SAICR_OF1_SHIFT    1
217 #define ESAI_SAICR_OF1_MASK     (1 << ESAI_SAICR_OF1_SHIFT)
218 #define ESAI_SAICR_OF1          (1 << ESAI_SAICR_OF1_SHIFT)
219 #define ESAI_SAICR_OF0_SHIFT    0
220 #define ESAI_SAICR_OF0_MASK     (1 << ESAI_SAICR_OF0_SHIFT)
221 #define ESAI_SAICR_OF0          (1 << ESAI_SAICR_OF0_SHIFT)
222 
223 /*
224  * Transmit Control Register -- REG_ESAI_TCR 0xD4
225  * Receive Control Register -- REG_ESAI_RCR 0xDC
226  */
227 #define ESAI_xCR_xLIE_SHIFT     23
228 #define ESAI_xCR_xLIE_MASK      (1 << ESAI_xCR_xLIE_SHIFT)
229 #define ESAI_xCR_xLIE           (1 << ESAI_xCR_xLIE_SHIFT)
230 #define ESAI_xCR_xIE_SHIFT      22
231 #define ESAI_xCR_xIE_MASK       (1 << ESAI_xCR_xIE_SHIFT)
232 #define ESAI_xCR_xIE            (1 << ESAI_xCR_xIE_SHIFT)
233 #define ESAI_xCR_xEDIE_SHIFT    21
234 #define ESAI_xCR_xEDIE_MASK     (1 << ESAI_xCR_xEDIE_SHIFT)
235 #define ESAI_xCR_xEDIE          (1 << ESAI_xCR_xEDIE_SHIFT)
236 #define ESAI_xCR_xEIE_SHIFT     20
237 #define ESAI_xCR_xEIE_MASK      (1 << ESAI_xCR_xEIE_SHIFT)
238 #define ESAI_xCR_xEIE           (1 << ESAI_xCR_xEIE_SHIFT)
239 #define ESAI_xCR_xPR_SHIFT      19
240 #define ESAI_xCR_xPR_MASK       (1 << ESAI_xCR_xPR_SHIFT)
241 #define ESAI_xCR_xPR            (1 << ESAI_xCR_xPR_SHIFT)
242 #define ESAI_xCR_PADC_SHIFT     17
243 #define ESAI_xCR_PADC_MASK      (1 << ESAI_xCR_PADC_SHIFT)
244 #define ESAI_xCR_PADC           (1 << ESAI_xCR_PADC_SHIFT)
245 #define ESAI_xCR_xFSR_SHIFT     16
246 #define ESAI_xCR_xFSR_MASK      (1 << ESAI_xCR_xFSR_SHIFT)
247 #define ESAI_xCR_xFSR           (1 << ESAI_xCR_xFSR_SHIFT)
248 #define ESAI_xCR_xFSL_SHIFT     15
249 #define ESAI_xCR_xFSL_MASK      (1 << ESAI_xCR_xFSL_SHIFT)
250 #define ESAI_xCR_xFSL           (1 << ESAI_xCR_xFSL_SHIFT)
251 #define ESAI_xCR_xSWS_SHIFT     10
252 #define ESAI_xCR_xSWS_WIDTH     5
253 #define ESAI_xCR_xSWS_MASK      (((1 << ESAI_xCR_xSWS_WIDTH) - 1) << ESAI_xCR_xSWS_SHIFT)
254 #define ESAI_xCR_xSWS(s, w)     ((w < 24 ? (s - w + ((w - 8) >> 2)) : (s < 32 ? 0x1e : 0x1f)) << ESAI_xCR_xSWS_SHIFT)
255 #define ESAI_xCR_xMOD_SHIFT     8
256 #define ESAI_xCR_xMOD_WIDTH     2
257 #define ESAI_xCR_xMOD_MASK      (((1 << ESAI_xCR_xMOD_WIDTH) - 1) << ESAI_xCR_xMOD_SHIFT)
258 #define ESAI_xCR_xMOD_ONDEMAND  (0x1 << ESAI_xCR_xMOD_SHIFT)
259 #define ESAI_xCR_xMOD_NETWORK   (0x1 << ESAI_xCR_xMOD_SHIFT)
260 #define ESAI_xCR_xMOD_AC97      (0x3 << ESAI_xCR_xMOD_SHIFT)
261 #define ESAI_xCR_xWA_SHIFT      7
262 #define ESAI_xCR_xWA_MASK       (1 << ESAI_xCR_xWA_SHIFT)
263 #define ESAI_xCR_xWA            (1 << ESAI_xCR_xWA_SHIFT)
264 #define ESAI_xCR_xSHFD_SHIFT    6
265 #define ESAI_xCR_xSHFD_MASK     (1 << ESAI_xCR_xSHFD_SHIFT)
266 #define ESAI_xCR_xSHFD          (1 << ESAI_xCR_xSHFD_SHIFT)
267 #define ESAI_xCR_xE_SHIFT       0
268 #define ESAI_xCR_TE_WIDTH       6
269 #define ESAI_xCR_RE_WIDTH       4
270 #define ESAI_xCR_TE_MASK        (((1 << ESAI_xCR_TE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT)
271 #define ESAI_xCR_RE_MASK        (((1 << ESAI_xCR_RE_WIDTH) - 1) << ESAI_xCR_xE_SHIFT)
272 #define ESAI_xCR_TE(x)          ((ESAI_xCR_TE_MASK >> (ESAI_xCR_TE_WIDTH - x)) & ESAI_xCR_TE_MASK)
273 #define ESAI_xCR_RE(x)          ((ESAI_xCR_RE_MASK >> (ESAI_xCR_RE_WIDTH - x)) & ESAI_xCR_RE_MASK)
274 
275 /*
276  * Transmit Clock Control Register -- REG_ESAI_TCCR 0xD8
277  * Receive Clock Control Register -- REG_ESAI_RCCR 0xE0
278  */
279 #define ESAI_xCCR_xHCKD_SHIFT   23
280 #define ESAI_xCCR_xHCKD_MASK    (1 << ESAI_xCCR_xHCKD_SHIFT)
281 #define ESAI_xCCR_xHCKD         (1 << ESAI_xCCR_xHCKD_SHIFT)
282 #define ESAI_xCCR_xFSD_SHIFT    22
283 #define ESAI_xCCR_xFSD_MASK     (1 << ESAI_xCCR_xFSD_SHIFT)
284 #define ESAI_xCCR_xFSD          (1 << ESAI_xCCR_xFSD_SHIFT)
285 #define ESAI_xCCR_xCKD_SHIFT    21
286 #define ESAI_xCCR_xCKD_MASK     (1 << ESAI_xCCR_xCKD_SHIFT)
287 #define ESAI_xCCR_xCKD          (1 << ESAI_xCCR_xCKD_SHIFT)
288 #define ESAI_xCCR_xHCKP_SHIFT   20
289 #define ESAI_xCCR_xHCKP_MASK    (1 << ESAI_xCCR_xHCKP_SHIFT)
290 #define ESAI_xCCR_xHCKP         (1 << ESAI_xCCR_xHCKP_SHIFT)
291 #define ESAI_xCCR_xFSP_SHIFT    19
292 #define ESAI_xCCR_xFSP_MASK     (1 << ESAI_xCCR_xFSP_SHIFT)
293 #define ESAI_xCCR_xFSP          (1 << ESAI_xCCR_xFSP_SHIFT)
294 #define ESAI_xCCR_xCKP_SHIFT    18
295 #define ESAI_xCCR_xCKP_MASK     (1 << ESAI_xCCR_xCKP_SHIFT)
296 #define ESAI_xCCR_xCKP          (1 << ESAI_xCCR_xCKP_SHIFT)
297 #define ESAI_xCCR_xFP_SHIFT     14
298 #define ESAI_xCCR_xFP_WIDTH     4
299 #define ESAI_xCCR_xFP_MASK      (((1 << ESAI_xCCR_xFP_WIDTH) - 1) << ESAI_xCCR_xFP_SHIFT)
300 #define ESAI_xCCR_xFP(v)        ((((v) - 1) << ESAI_xCCR_xFP_SHIFT) & ESAI_xCCR_xFP_MASK)
301 #define ESAI_xCCR_xDC_SHIFT     9
302 #define ESAI_xCCR_xDC_WIDTH     5
303 #define ESAI_xCCR_xDC_MASK      (((1 << ESAI_xCCR_xDC_WIDTH) - 1) << ESAI_xCCR_xDC_SHIFT)
304 #define ESAI_xCCR_xDC(v)        ((((v) - 1) << ESAI_xCCR_xDC_SHIFT) & ESAI_xCCR_xDC_MASK)
305 #define ESAI_xCCR_xPSR_SHIFT    8
306 #define ESAI_xCCR_xPSR_MASK     (1 << ESAI_xCCR_xPSR_SHIFT)
307 #define ESAI_xCCR_xPSR_BYPASS   (1 << ESAI_xCCR_xPSR_SHIFT)
308 #define ESAI_xCCR_xPSR_DIV8     (0 << ESAI_xCCR_xPSR_SHIFT)
309 #define ESAI_xCCR_xPM_SHIFT     0
310 #define ESAI_xCCR_xPM_WIDTH     8
311 #define ESAI_xCCR_xPM_MASK      (((1 << ESAI_xCCR_xPM_WIDTH) - 1) << ESAI_xCCR_xPM_SHIFT)
312 #define ESAI_xCCR_xPM(v)        ((((v) - 1) << ESAI_xCCR_xPM_SHIFT) & ESAI_xCCR_xPM_MASK)
313 
314 /* Transmit Slot Mask Register A/B -- REG_ESAI_TSMA/B 0xE4 ~ 0xF0 */
315 #define ESAI_xSMA_xS_SHIFT      0
316 #define ESAI_xSMA_xS_WIDTH      16
317 #define ESAI_xSMA_xS_MASK       (((1 << ESAI_xSMA_xS_WIDTH) - 1) << ESAI_xSMA_xS_SHIFT)
318 #define ESAI_xSMA_xS(v)         ((v) & ESAI_xSMA_xS_MASK)
319 #define ESAI_xSMB_xS_SHIFT      0
320 #define ESAI_xSMB_xS_WIDTH      16
321 #define ESAI_xSMB_xS_MASK       (((1 << ESAI_xSMB_xS_WIDTH) - 1) << ESAI_xSMB_xS_SHIFT)
322 #define ESAI_xSMB_xS(v)         (((v) >> ESAI_xSMA_xS_WIDTH) & ESAI_xSMB_xS_MASK)
323 
324 /* Port C Direction Register -- REG_ESAI_PRRC 0xF8 */
325 #define ESAI_PRRC_PDC_SHIFT     0
326 #define ESAI_PRRC_PDC_WIDTH     12
327 #define ESAI_PRRC_PDC_MASK      (((1 << ESAI_PRRC_PDC_WIDTH) - 1) << ESAI_PRRC_PDC_SHIFT)
328 #define ESAI_PRRC_PDC(v)        ((v) & ESAI_PRRC_PDC_MASK)
329 
330 /* Port C Control Register -- REG_ESAI_PCRC 0xFC */
331 #define ESAI_PCRC_PC_SHIFT      0
332 #define ESAI_PCRC_PC_WIDTH      12
333 #define ESAI_PCRC_PC_MASK       (((1 << ESAI_PCRC_PC_WIDTH) - 1) << ESAI_PCRC_PC_SHIFT)
334 #define ESAI_PCRC_PC(v)         ((v) & ESAI_PCRC_PC_MASK)
335 
336 #define ESAI_GPIO               0xfff
337 
338 /* ESAI clock source */
339 #define ESAI_HCKT_FSYS          0
340 #define ESAI_HCKT_EXTAL         1
341 #define ESAI_HCKR_FSYS          2
342 #define ESAI_HCKR_EXTAL         3
343 
344 /* ESAI clock divider */
345 #define ESAI_TX_DIV_PSR         0
346 #define ESAI_TX_DIV_PM          1
347 #define ESAI_TX_DIV_FP          2
348 #define ESAI_RX_DIV_PSR         3
349 #define ESAI_RX_DIV_PM          4
350 #define ESAI_RX_DIV_FP          5
351 #endif /* _FSL_ESAI_DAI_H */
352 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php