Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / sound / soc / fsl / fsl_micfil.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * PDM Microphone Interface for the NXP i.MX SoC
4  * Copyright 2018 NXP
5  */
6
7 #ifndef _FSL_MICFIL_H
8 #define _FSL_MICFIL_H
9
10 /* MICFIL Register Map */
11 #define REG_MICFIL_CTRL1                0x00
12 #define REG_MICFIL_CTRL2                0x04
13 #define REG_MICFIL_STAT                 0x08
14 #define REG_MICFIL_FIFO_CTRL            0x10
15 #define REG_MICFIL_FIFO_STAT            0x14
16 #define REG_MICFIL_DATACH0              0x24
17 #define REG_MICFIL_DATACH1              0x28
18 #define REG_MICFIL_DATACH2              0x2C
19 #define REG_MICFIL_DATACH3              0x30
20 #define REG_MICFIL_DATACH4              0x34
21 #define REG_MICFIL_DATACH5              0x38
22 #define REG_MICFIL_DATACH6              0x3C
23 #define REG_MICFIL_DATACH7              0x40
24 #define REG_MICFIL_DC_CTRL              0x64
25 #define REG_MICFIL_OUT_CTRL             0x74
26 #define REG_MICFIL_OUT_STAT             0x7C
27 #define REG_MICFIL_VAD0_CTRL1           0x90
28 #define REG_MICFIL_VAD0_CTRL2           0x94
29 #define REG_MICFIL_VAD0_STAT            0x98
30 #define REG_MICFIL_VAD0_SCONFIG         0x9C
31 #define REG_MICFIL_VAD0_NCONFIG         0xA0
32 #define REG_MICFIL_VAD0_NDATA           0xA4
33 #define REG_MICFIL_VAD0_ZCD             0xA8
34
35 /* MICFIL Control Register 1 -- REG_MICFILL_CTRL1 0x00 */
36 #define MICFIL_CTRL1_MDIS_SHIFT         31
37 #define MICFIL_CTRL1_MDIS_MASK          BIT(MICFIL_CTRL1_MDIS_SHIFT)
38 #define MICFIL_CTRL1_MDIS               BIT(MICFIL_CTRL1_MDIS_SHIFT)
39 #define MICFIL_CTRL1_DOZEN_SHIFT        30
40 #define MICFIL_CTRL1_DOZEN_MASK         BIT(MICFIL_CTRL1_DOZEN_SHIFT)
41 #define MICFIL_CTRL1_DOZEN              BIT(MICFIL_CTRL1_DOZEN_SHIFT)
42 #define MICFIL_CTRL1_PDMIEN_SHIFT       29
43 #define MICFIL_CTRL1_PDMIEN_MASK        BIT(MICFIL_CTRL1_PDMIEN_SHIFT)
44 #define MICFIL_CTRL1_PDMIEN             BIT(MICFIL_CTRL1_PDMIEN_SHIFT)
45 #define MICFIL_CTRL1_DBG_SHIFT          28
46 #define MICFIL_CTRL1_DBG_MASK           BIT(MICFIL_CTRL1_DBG_SHIFT)
47 #define MICFIL_CTRL1_DBG                BIT(MICFIL_CTRL1_DBG_SHIFT)
48 #define MICFIL_CTRL1_SRES_SHIFT         27
49 #define MICFIL_CTRL1_SRES_MASK          BIT(MICFIL_CTRL1_SRES_SHIFT)
50 #define MICFIL_CTRL1_SRES               BIT(MICFIL_CTRL1_SRES_SHIFT)
51 #define MICFIL_CTRL1_DBGE_SHIFT         26
52 #define MICFIL_CTRL1_DBGE_MASK          BIT(MICFIL_CTRL1_DBGE_SHIFT)
53 #define MICFIL_CTRL1_DBGE               BIT(MICFIL_CTRL1_DBGE_SHIFT)
54 #define MICFIL_CTRL1_DISEL_SHIFT        24
55 #define MICFIL_CTRL1_DISEL_WIDTH        2
56 #define MICFIL_CTRL1_DISEL_MASK         ((BIT(MICFIL_CTRL1_DISEL_WIDTH) - 1) \
57                                          << MICFIL_CTRL1_DISEL_SHIFT)
58 #define MICFIL_CTRL1_DISEL(v)           (((v) << MICFIL_CTRL1_DISEL_SHIFT) \
59                                          & MICFIL_CTRL1_DISEL_MASK)
60 #define MICFIL_CTRL1_ERREN_SHIFT        23
61 #define MICFIL_CTRL1_ERREN_MASK         BIT(MICFIL_CTRL1_ERREN_SHIFT)
62 #define MICFIL_CTRL1_ERREN              BIT(MICFIL_CTRL1_ERREN_SHIFT)
63 #define MICFIL_CTRL1_CHEN_SHIFT         0
64 #define MICFIL_CTRL1_CHEN_WIDTH         8
65 #define MICFIL_CTRL1_CHEN_MASK(x)       (BIT(x) << MICFIL_CTRL1_CHEN_SHIFT)
66 #define MICFIL_CTRL1_CHEN(x)            (MICFIL_CTRL1_CHEN_MASK(x))
67
68 /* MICFIL Control Register 2 -- REG_MICFILL_CTRL2 0x04 */
69 #define MICFIL_CTRL2_QSEL_SHIFT         25
70 #define MICFIL_CTRL2_QSEL_WIDTH         3
71 #define MICFIL_CTRL2_QSEL_MASK          ((BIT(MICFIL_CTRL2_QSEL_WIDTH) - 1) \
72                                          << MICFIL_CTRL2_QSEL_SHIFT)
73 #define MICFIL_HIGH_QUALITY             BIT(MICFIL_CTRL2_QSEL_SHIFT)
74 #define MICFIL_MEDIUM_QUALITY           (0 << MICFIL_CTRL2_QSEL_SHIFT)
75 #define MICFIL_LOW_QUALITY              (7 << MICFIL_CTRL2_QSEL_SHIFT)
76 #define MICFIL_VLOW0_QUALITY            (6 << MICFIL_CTRL2_QSEL_SHIFT)
77 #define MICFIL_VLOW1_QUALITY            (5 << MICFIL_CTRL2_QSEL_SHIFT)
78 #define MICFIL_VLOW2_QUALITY            (4 << MICFIL_CTRL2_QSEL_SHIFT)
79
80 #define MICFIL_CTRL2_CICOSR_SHIFT       16
81 #define MICFIL_CTRL2_CICOSR_WIDTH       4
82 #define MICFIL_CTRL2_CICOSR_MASK        ((BIT(MICFIL_CTRL2_CICOSR_WIDTH) - 1) \
83                                          << MICFIL_CTRL2_CICOSR_SHIFT)
84 #define MICFIL_CTRL2_CICOSR(v)          (((v) << MICFIL_CTRL2_CICOSR_SHIFT) \
85                                          & MICFIL_CTRL2_CICOSR_MASK)
86 #define MICFIL_CTRL2_CLKDIV_SHIFT       0
87 #define MICFIL_CTRL2_CLKDIV_WIDTH       8
88 #define MICFIL_CTRL2_CLKDIV_MASK        ((BIT(MICFIL_CTRL2_CLKDIV_WIDTH) - 1) \
89                                          << MICFIL_CTRL2_CLKDIV_SHIFT)
90 #define MICFIL_CTRL2_CLKDIV(v)          (((v) << MICFIL_CTRL2_CLKDIV_SHIFT) \
91                                          & MICFIL_CTRL2_CLKDIV_MASK)
92
93 /* MICFIL Status Register -- REG_MICFIL_STAT 0x08 */
94 #define MICFIL_STAT_BSY_FIL_SHIFT       31
95 #define MICFIL_STAT_BSY_FIL_MASK        BIT(MICFIL_STAT_BSY_FIL_SHIFT)
96 #define MICFIL_STAT_BSY_FIL             BIT(MICFIL_STAT_BSY_FIL_SHIFT)
97 #define MICFIL_STAT_FIR_RDY_SHIFT       30
98 #define MICFIL_STAT_FIR_RDY_MASK        BIT(MICFIL_STAT_FIR_RDY_SHIFT)
99 #define MICFIL_STAT_FIR_RDY             BIT(MICFIL_STAT_FIR_RDY_SHIFT)
100 #define MICFIL_STAT_LOWFREQF_SHIFT      29
101 #define MICFIL_STAT_LOWFREQF_MASK       BIT(MICFIL_STAT_LOWFREQF_SHIFT)
102 #define MICFIL_STAT_LOWFREQF            BIT(MICFIL_STAT_LOWFREQF_SHIFT)
103 #define MICFIL_STAT_CHXF_SHIFT(v)       (v)
104 #define MICFIL_STAT_CHXF_MASK(v)        BIT(MICFIL_STAT_CHXF_SHIFT(v))
105 #define MICFIL_STAT_CHXF(v)             BIT(MICFIL_STAT_CHXF_SHIFT(v))
106
107 /* MICFIL FIFO Control Register -- REG_MICFIL_FIFO_CTRL 0x10 */
108 #define MICFIL_FIFO_CTRL_FIFOWMK_SHIFT  0
109 #define MICFIL_FIFO_CTRL_FIFOWMK_WIDTH  3
110 #define MICFIL_FIFO_CTRL_FIFOWMK_MASK   ((BIT(MICFIL_FIFO_CTRL_FIFOWMK_WIDTH) - 1) \
111                                          << MICFIL_FIFO_CTRL_FIFOWMK_SHIFT)
112 #define MICFIL_FIFO_CTRL_FIFOWMK(v)     (((v) << MICFIL_FIFO_CTRL_FIFOWMK_SHIFT) \
113                                          & MICFIL_FIFO_CTRL_FIFOWMK_MASK)
114
115 /* MICFIL FIFO Status Register -- REG_MICFIL_FIFO_STAT 0x14 */
116 #define MICFIL_FIFO_STAT_FIFOX_OVER_SHIFT(v)    (v)
117 #define MICFIL_FIFO_STAT_FIFOX_OVER_MASK(v)     BIT(MICFIL_FIFO_STAT_FIFOX_OVER_SHIFT(v))
118 #define MICFIL_FIFO_STAT_FIFOX_UNDER_SHIFT(v)   ((v) + 8)
119 #define MICFIL_FIFO_STAT_FIFOX_UNDER_MASK(v)    BIT(MICFIL_FIFO_STAT_FIFOX_UNDER_SHIFT(v))
120
121 /* MICFIL HWVAD0 Control 1 Register -- REG_MICFIL_VAD0_CTRL1*/
122 #define MICFIL_VAD0_CTRL1_CHSEL_SHIFT   24
123 #define MICFIL_VAD0_CTRL1_CHSEL_WIDTH   3
124 #define MICFIL_VAD0_CTRL1_CHSEL_MASK    ((BIT(MICFIL_VAD0_CTRL1_CHSEL_WIDTH) - 1) \
125                                          << MICFIL_VAD0_CTRL1_CHSEL_SHIFT)
126 #define MICFIL_VAD0_CTRL1_CHSEL(v)      (((v) << MICFIL_VAD0_CTRL1_CHSEL_SHIFT) \
127                                          & MICFIL_VAD0_CTRL1_CHSEL_MASK)
128 #define MICFIL_VAD0_CTRL1_CICOSR_SHIFT  16
129 #define MICFIL_VAD0_CTRL1_CICOSR_WIDTH  4
130 #define MICFIL_VAD0_CTRL1_CICOSR_MASK   ((BIT(MICFIL_VAD0_CTRL1_CICOSR_WIDTH) - 1) \
131                                          << MICFIL_VAD0_CTRL1_CICOSR_SHIFT)
132 #define MICFIL_VAD0_CTRL1_CICOSR(v)     (((v) << MICFIL_VAD0_CTRL1_CICOSR_SHIFT) \
133                                          & MICFIL_VAD0_CTRL1_CICOSR_MASK)
134 #define MICFIL_VAD0_CTRL1_INITT_SHIFT   8
135 #define MICFIL_VAD0_CTRL1_INITT_WIDTH   5
136 #define MICFIL_VAD0_CTRL1_INITT_MASK    ((BIT(MICFIL_VAD0_CTRL1_INITT_WIDTH) - 1) \
137                                          << MICFIL_VAD0_CTRL1_INITT_SHIFT)
138 #define MICFIL_VAD0_CTRL1_INITT(v)      (((v) << MICFIL_VAD0_CTRL1_INITT_SHIFT) \
139                                          & MICFIL_VAD0_CTRL1_INITT_MASK)
140 #define MICFIL_VAD0_CTRL1_ST10_SHIFT    4
141 #define MICFIL_VAD0_CTRL1_ST10_MASK     BIT(MICFIL_VAD0_CTRL1_ST10_SHIFT)
142 #define MICFIL_VAD0_CTRL1_ST10          BIT(MICFIL_VAD0_CTRL1_ST10_SHIFT)
143 #define MICFIL_VAD0_CTRL1_ERIE_SHIFT    3
144 #define MICFIL_VAD0_CTRL1_ERIE_MASK     BIT(MICFIL_VAD0_CTRL1_ERIE_SHIFT)
145 #define MICFIL_VAD0_CTRL1_ERIE          BIT(MICFIL_VAD0_CTRL1_ERIE_SHIFT)
146 #define MICFIL_VAD0_CTRL1_IE_SHIFT      2
147 #define MICFIL_VAD0_CTRL1_IE_MASK       BIT(MICFIL_VAD0_CTRL1_IE_SHIFT)
148 #define MICFIL_VAD0_CTRL1_IE            BIT(MICFIL_VAD0_CTRL1_IE_SHIFT)
149 #define MICFIL_VAD0_CTRL1_RST_SHIFT     1
150 #define MICFIL_VAD0_CTRL1_RST_MASK      BIT(MICFIL_VAD0_CTRL1_RST_SHIFT)
151 #define MICFIL_VAD0_CTRL1_RST           BIT(MICFIL_VAD0_CTRL1_RST_SHIFT)
152 #define MICFIL_VAD0_CTRL1_EN_SHIFT      0
153 #define MICFIL_VAD0_CTRL1_EN_MASK       BIT(MICFIL_VAD0_CTRL1_EN_SHIFT)
154 #define MICFIL_VAD0_CTRL1_EN            BIT(MICFIL_VAD0_CTRL1_EN_SHIFT)
155
156 /* MICFIL HWVAD0 Control 2 Register -- REG_MICFIL_VAD0_CTRL2*/
157 #define MICFIL_VAD0_CTRL2_FRENDIS_SHIFT 31
158 #define MICFIL_VAD0_CTRL2_FRENDIS_MASK  BIT(MICFIL_VAD0_CTRL2_FRENDIS_SHIFT)
159 #define MICFIL_VAD0_CTRL2_FRENDIS       BIT(MICFIL_VAD0_CTRL2_FRENDIS_SHIFT)
160 #define MICFIL_VAD0_CTRL2_PREFEN_SHIFT  30
161 #define MICFIL_VAD0_CTRL2_PREFEN_MASK   BIT(MICFIL_VAD0_CTRL2_PREFEN_SHIFT)
162 #define MICFIL_VAD0_CTRL2_PREFEN        BIT(MICFIL_VAD0_CTRL2_PREFEN_SHIFT)
163 #define MICFIL_VAD0_CTRL2_FOUTDIS_SHIFT 28
164 #define MICFIL_VAD0_CTRL2_FOUTDIS_MASK  BIT(MICFIL_VAD0_CTRL2_FOUTDIS_SHIFT)
165 #define MICFIL_VAD0_CTRL2_FOUTDIS       BIT(MICFIL_VAD0_CTRL2_FOUTDIS_SHIFT)
166 #define MICFIL_VAD0_CTRL2_FRAMET_SHIFT  16
167 #define MICFIL_VAD0_CTRL2_FRAMET_WIDTH  6
168 #define MICFIL_VAD0_CTRL2_FRAMET_MASK   ((BIT(MICFIL_VAD0_CTRL2_FRAMET_WIDTH) - 1) \
169                                          << MICFIL_VAD0_CTRL2_FRAMET_SHIFT)
170 #define MICFIL_VAD0_CTRL2_FRAMET(v)     (((v) << MICFIL_VAD0_CTRL2_FRAMET_SHIFT) \
171                                          & MICFIL_VAD0_CTRL2_FRAMET_MASK)
172 #define MICFIL_VAD0_CTRL2_INPGAIN_SHIFT 8
173 #define MICFIL_VAD0_CTRL2_INPGAIN_WIDTH 4
174 #define MICFIL_VAD0_CTRL2_INPGAIN_MASK  ((BIT(MICFIL_VAD0_CTRL2_INPGAIN_WIDTH) - 1) \
175                                          << MICFIL_VAD0_CTRL2_INPGAIN_SHIFT)
176 #define MICFIL_VAD0_CTRL2_INPGAIN(v)    (((v) << MICFIL_VAD0_CTRL2_INPGAIN_SHIFT) \
177                                         & MICFIL_VAD0_CTRL2_INPGAIN_MASK)
178 #define MICFIL_VAD0_CTRL2_HPF_SHIFT     0
179 #define MICFIL_VAD0_CTRL2_HPF_WIDTH     2
180 #define MICFIL_VAD0_CTRL2_HPF_MASK      ((BIT(MICFIL_VAD0_CTRL2_HPF_WIDTH) - 1) \
181                                          << MICFIL_VAD0_CTRL2_HPF_SHIFT)
182 #define MICFIL_VAD0_CTRL2_HPF(v)        (((v) << MICFIL_VAD0_CTRL2_HPF_SHIFT) \
183                                          & MICFIL_VAD0_CTRL2_HPF_MASK)
184
185 /* MICFIL HWVAD0 Signal CONFIG Register -- REG_MICFIL_VAD0_SCONFIG */
186 #define MICFIL_VAD0_SCONFIG_SFILEN_SHIFT        31
187 #define MICFIL_VAD0_SCONFIG_SFILEN_MASK         BIT(MICFIL_VAD0_SCONFIG_SFILEN_SHIFT)
188 #define MICFIL_VAD0_SCONFIG_SFILEN              BIT(MICFIL_VAD0_SCONFIG_SFILEN_SHIFT)
189 #define MICFIL_VAD0_SCONFIG_SMAXEN_SHIFT        30
190 #define MICFIL_VAD0_SCONFIG_SMAXEN_MASK         BIT(MICFIL_VAD0_SCONFIG_SMAXEN_SHIFT)
191 #define MICFIL_VAD0_SCONFIG_SMAXEN              BIT(MICFIL_VAD0_SCONFIG_SMAXEN_SHIFT)
192 #define MICFIL_VAD0_SCONFIG_SGAIN_SHIFT         0
193 #define MICFIL_VAD0_SCONFIG_SGAIN_WIDTH         4
194 #define MICFIL_VAD0_SCONFIG_SGAIN_MASK          ((BIT(MICFIL_VAD0_SCONFIG_SGAIN_WIDTH) - 1) \
195                                                 << MICFIL_VAD0_SCONFIG_SGAIN_SHIFT)
196 #define MICFIL_VAD0_SCONFIG_SGAIN(v)            (((v) << MICFIL_VAD0_SCONFIG_SGAIN_SHIFT) \
197                                                  & MICFIL_VAD0_SCONFIG_SGAIN_MASK)
198
199 /* MICFIL HWVAD0 Noise CONFIG Register -- REG_MICFIL_VAD0_NCONFIG */
200 #define MICFIL_VAD0_NCONFIG_NFILAUT_SHIFT       31
201 #define MICFIL_VAD0_NCONFIG_NFILAUT_MASK        BIT(MICFIL_VAD0_NCONFIG_NFILAUT_SHIFT)
202 #define MICFIL_VAD0_NCONFIG_NFILAUT             BIT(MICFIL_VAD0_NCONFIG_NFILAUT_SHIFT)
203 #define MICFIL_VAD0_NCONFIG_NMINEN_SHIFT        30
204 #define MICFIL_VAD0_NCONFIG_NMINEN_MASK         BIT(MICFIL_VAD0_NCONFIG_NMINEN_SHIFT)
205 #define MICFIL_VAD0_NCONFIG_NMINEN              BIT(MICFIL_VAD0_NCONFIG_NMINEN_SHIFT)
206 #define MICFIL_VAD0_NCONFIG_NDECEN_SHIFT        29
207 #define MICFIL_VAD0_NCONFIG_NDECEN_MASK         BIT(MICFIL_VAD0_NCONFIG_NDECEN_SHIFT)
208 #define MICFIL_VAD0_NCONFIG_NDECEN              BIT(MICFIL_VAD0_NCONFIG_NDECEN_SHIFT)
209 #define MICFIL_VAD0_NCONFIG_NOREN_SHIFT         28
210 #define MICFIL_VAD0_NCONFIG_NOREN               BIT(MICFIL_VAD0_NCONFIG_NOREN_SHIFT)
211 #define MICFIL_VAD0_NCONFIG_NFILADJ_SHIFT       8
212 #define MICFIL_VAD0_NCONFIG_NFILADJ_WIDTH       5
213 #define MICFIL_VAD0_NCONFIG_NFILADJ_MASK        ((BIT(MICFIL_VAD0_NCONFIG_NFILADJ_WIDTH) - 1) \
214                                                  << MICFIL_VAD0_NCONFIG_NFILADJ_SHIFT)
215 #define MICFIL_VAD0_NCONFIG_NFILADJ(v)          (((v) << MICFIL_VAD0_NCONFIG_NFILADJ_SHIFT) \
216                                                  & MICFIL_VAD0_NCONFIG_NFILADJ_MASK)
217 #define MICFIL_VAD0_NCONFIG_NGAIN_SHIFT         0
218 #define MICFIL_VAD0_NCONFIG_NGAIN_WIDTH         4
219 #define MICFIL_VAD0_NCONFIG_NGAIN_MASK          ((BIT(MICFIL_VAD0_NCONFIG_NGAIN_WIDTH) - 1) \
220                                                  << MICFIL_VAD0_NCONFIG_NGAIN_SHIFT)
221 #define MICFIL_VAD0_NCONFIG_NGAIN(v)            (((v) << MICFIL_VAD0_NCONFIG_NGAIN_SHIFT) \
222                                                  & MICFIL_VAD0_NCONFIG_NGAIN_MASK)
223
224 /* MICFIL HWVAD0 Zero-Crossing Detector - REG_MICFIL_VAD0_ZCD */
225 #define MICFIL_VAD0_ZCD_ZCDTH_SHIFT     16
226 #define MICFIL_VAD0_ZCD_ZCDTH_WIDTH     10
227 #define MICFIL_VAD0_ZCD_ZCDTH_MASK      ((BIT(MICFIL_VAD0_ZCD_ZCDTH_WIDTH) - 1) \
228                                          << MICFIL_VAD0_ZCD_ZCDTH_SHIFT)
229 #define MICFIL_VAD0_ZCD_ZCDTH(v)        (((v) << MICFIL_VAD0_ZCD_ZCDTH_SHIFT)\
230                                          & MICFIL_VAD0_ZCD_ZCDTH_MASK)
231 #define MICFIL_VAD0_ZCD_ZCDADJ_SHIFT    8
232 #define MICFIL_VAD0_ZCD_ZCDADJ_WIDTH    4
233 #define MICFIL_VAD0_ZCD_ZCDADJ_MASK     ((BIT(MICFIL_VAD0_ZCD_ZCDADJ_WIDTH) - 1)\
234                                          << MICFIL_VAD0_ZCD_ZCDADJ_SHIFT)
235 #define MICFIL_VAD0_ZCD_ZCDADJ(v)       (((v) << MICFIL_VAD0_ZCD_ZCDADJ_SHIFT)\
236                                          & MICFIL_VAD0_ZCD_ZCDADJ_MASK)
237 #define MICFIL_VAD0_ZCD_ZCDAND_SHIFT    4
238 #define MICFIL_VAD0_ZCD_ZCDAND_MASK     BIT(MICFIL_VAD0_ZCD_ZCDAND_SHIFT)
239 #define MICFIL_VAD0_ZCD_ZCDAND          BIT(MICFIL_VAD0_ZCD_ZCDAND_SHIFT)
240 #define MICFIL_VAD0_ZCD_ZCDAUT_SHIFT    2
241 #define MICFIL_VAD0_ZCD_ZCDAUT_MASK     BIT(MICFIL_VAD0_ZCD_ZCDAUT_SHIFT)
242 #define MICFIL_VAD0_ZCD_ZCDAUT          BIT(MICFIL_VAD0_ZCD_ZCDAUT_SHIFT)
243 #define MICFIL_VAD0_ZCD_ZCDEN_SHIFT     0
244 #define MICFIL_VAD0_ZCD_ZCDEN_MASK      BIT(MICFIL_VAD0_ZCD_ZCDEN_SHIFT)
245 #define MICFIL_VAD0_ZCD_ZCDEN           BIT(MICFIL_VAD0_ZCD_ZCDEN_SHIFT)
246
247 /* MICFIL HWVAD0 Status Register - REG_MICFIL_VAD0_STAT */
248 #define MICFIL_VAD0_STAT_INITF_SHIFT    31
249 #define MICFIL_VAD0_STAT_INITF_MASK     BIT(MICFIL_VAD0_STAT_INITF_SHIFT)
250 #define MICFIL_VAD0_STAT_INITF          BIT(MICFIL_VAD0_STAT_INITF_SHIFT)
251 #define MICFIL_VAD0_STAT_INSATF_SHIFT   16
252 #define MICFIL_VAD0_STAT_INSATF_MASK    BIT(MICFIL_VAD0_STAT_INSATF_SHIFT)
253 #define MICFIL_VAD0_STAT_INSATF         BIT(MICFIL_VAD0_STAT_INSATF_SHIFT)
254 #define MICFIL_VAD0_STAT_EF_SHIFT       15
255 #define MICFIL_VAD0_STAT_EF_MASK        BIT(MICFIL_VAD0_STAT_EF_SHIFT)
256 #define MICFIL_VAD0_STAT_EF             BIT(MICFIL_VAD0_STAT_EF_SHIFT)
257 #define MICFIL_VAD0_STAT_IF_SHIFT       0
258 #define MICFIL_VAD0_STAT_IF_MASK        BIT(MICFIL_VAD0_STAT_IF_SHIFT)
259 #define MICFIL_VAD0_STAT_IF             BIT(MICFIL_VAD0_STAT_IF_SHIFT)
260
261 /* MICFIL Output Control Register */
262 #define MICFIL_OUTGAIN_CHX_SHIFT(v)     (4 * (v))
263
264 /* Constants */
265 #define MICFIL_DMA_IRQ_DISABLED(v)      ((v) & MICFIL_CTRL1_DISEL_MASK)
266 #define MICFIL_DMA_ENABLED(v)           ((0x1 << MICFIL_CTRL1_DISEL_SHIFT) \
267                                          == ((v) & MICFIL_CTRL1_DISEL_MASK))
268 #define MICFIL_IRQ_ENABLED(v)           ((0x2 << MICFIL_CTRL1_DISEL_SHIFT) \
269                                          == ((v) & MICFIL_CTRL1_DISEL_MASK))
270 #define MICFIL_OUTPUT_CHANNELS          8
271 #define MICFIL_FIFO_NUM                 8
272
273 #define FIFO_PTRWID                     3
274 #define FIFO_LEN                        BIT(FIFO_PTRWID)
275
276 #define MICFIL_IRQ_LINES                2
277 #define MICFIL_MAX_RETRY                25
278 #define MICFIL_SLEEP_MIN                90000 /* in us */
279 #define MICFIL_SLEEP_MAX                100000 /* in us */
280 #define MICFIL_DMA_MAXBURST_RX          6
281 #define MICFIL_CTRL2_OSR_DEFAULT        (0 << MICFIL_CTRL2_CICOSR_SHIFT)
282
283 #endif /* _FSL_MICFIL_H */