1 /*
2  * Copyright (c) 2015-2016, Freescale Semiconductor, Inc.
3  * Copyright 2016-2020 NXP
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 #ifndef _FSL_DIALOG7212_H_
9 #define _FSL_DIALOG7212_H_
10 
11 #include "fsl_codec_i2c.h"
12 
13 /*!
14  * @addtogroup da7212
15  * @ingroup codec
16  * @{
17  */
18 /*******************************************************************************
19  * Definitions
20  ******************************************************************************/
21 /*! @name Driver version */
22 /*! @{ */
23 /*! @brief CLOCK driver version 2.3.0. */
24 #define FSL_DA7212_DRIVER_VERSION (MAKE_VERSION(2, 3, 1))
25 /*! @} */
26 
27 /*! @brief da7212 handle size */
28 #ifndef DA7212_I2C_HANDLER_SIZE
29 #define DA7212_I2C_HANDLER_SIZE CODEC_I2C_MASTER_HANDLER_SIZE
30 #endif
31 
32 #define DA7212_INIT_SIZE   (36U)
33 #define DA7212_DAC_MAX_VOL (DA7213_DAC_GAIN_12DB)
34 #define DA7212_DAC_MIN_VOL (DA7212_DAC_GAIN_MUTE)
35 
36 /*! @brief DA7212 I2C address */
37 #define DA7212_ADDRESS (0x1A)
38 
39 #define DA7212_AUX_REGISTER_SIZE  (33)
40 #define DA7212_MIC2_REGISTER_SIZE (33)
41 #define DA7212_MIC1_REGISTER_SIZE (24)
42 
43 #define DA7212_DAC_MUTE_ENABLED  (0xC0)
44 #define DA7212_DAC_MUTE_DISABLED (0x80)
45 
46 #define DA7212_MAX_VOLUME_STEPS (15)
47 #define DA7212_MIN_VOLUME_STEPS (0)
48 
49 #define DA7212_MAX_VOLUME_STEPS (15)
50 
51 #define DA7212_CHANGE_FREQ_SIZE (0x05)
52 
53 #define CLEAR_REGISTER (0x00)
54 
55 #define DA7212_I2C_BAUDRATE (100000U)
56 /***************************************************************************************************/
57 /* * Register values. */
58 
59 /******************Status registers*********************/
60 #define DIALOG7212_STATUS1             0x02
61 #define DIALOG7212_PLL_STATUS          0x03
62 #define DIALOG7212_AUX_L_GAIN_STATUS   0x04
63 #define DIALOG7212_AUX_R_GAIN_STATUS   0x05
64 #define DIALOG7212_MIC_1_GAIN_STATUS   0x06
65 #define DIALOG7212_MIC_2_GAIN_STATUS   0x07
66 #define DIALOG7212_MIXIN_L_GAIN_STATUS 0x08
67 #define DIALOG7212_MIXIN_R_GAIN_STATUS 0x09
68 #define DIALOG7212_ADC_L_GAIN_STATUS   0x0A
69 #define DIALOG7212_ADC_R_GAIN_STATUS   0x0B
70 #define DIALOG7212_DAC_L_GAIN_STATUS   0x0C
71 #define DIALOG7212_DAC_R_GAIN_STATUS   0x0D
72 #define DIALOG7212_HP_L_GAIN_STATUS    0x0E
73 #define DIALOG7212_HP_R_GAIN_STATUS    0x0F
74 #define DIALOG7212_LINE_GAIN_STATUS    0x10
75 /***************System Initialisation Registers************/
76 #define DIALOG7212_CIF_CTRL        0x1d
77 #define DIALOG7212_DIG_ROUTING_DAI 0x21
78 #define DIALOG7212_SR              0x22
79 #define DIALOG7212_REFERENCES      0x23
80 #define DIALOG7212_PLL_FRAC_TOP    0x24
81 #define DIALOG7212_PLL_FRAC_BOT    0x25
82 #define DIALOG7212_PLL_INTEGER     0x26
83 #define DIALOG7212_PLL_CTRL        0x27
84 #define DIALOG7212_DAI_CLK_MODE    0x28
85 #define DIALOG7212_DAI_CTRL        0x29
86 #define DIALOG7212_DIG_ROUTING_DAC 0x2A
87 #define DIALOG7212_ALC_CTRL1       0x2B
88 /************Input Gain/ Select Filter Registers**********/
89 #define DIALOG7212_AUX_L_GAIN     0x30
90 #define DIALOG7212_AUX_R_GAIN     0x31
91 #define DIALOG7212_MIXIN_L_SELECT 0x32
92 #define DIALOG7212_MIXIN_R_SELECT 0x33
93 #define DIALOG7212_MIXIN_L_GAIN   0x34
94 #define DIALOG7212_MIXIN_R_GAIN   0x35
95 #define DIALOG7212_ADC_L_GAIN     0x36
96 #define DIALOG7212_ADC_R_GAIN     0x37
97 #define DIALOG7212_ADC_FILTERS1   0x38
98 #define DIALOG7212_MIC_1_GAIN     0x39
99 #define DIALOG7212_MIC_2_GAIN     0x3A
100 /************Output Gain/ Select Filter Registers**********/
101 #define DIALOG7212_DAC_FILTERS5    0x40
102 #define DIALOG7212_DAC_FILTERS2    0x41
103 #define DIALOG7212_DAC_FILTERS3    0x42
104 #define DIALOG7212_DAC_FILTERS4    0x43
105 #define DIALOG7212_DAC_FILTERS1    0x44
106 #define DIALOG7212_DAC_L_GAIN      0x45
107 #define DIALOG7212_DAC_R_GAIN      0x46
108 #define DIALOG7212_CP_CTRL         0x47
109 #define DIALOG7212_HP_L_GAIN       0x48
110 #define DIALOG7212_HP_R_GAIN       0x49
111 #define DIALOG7212_LINE_GAIN       0x4A
112 #define DIALOG7212_MIXOUT_L_SELECT 0x4B
113 #define DIALOG7212_MIXOUT_R_SELECT 0x4C
114 /**************System Controller Registers(1)*************/
115 #define DIALOG7212_SYSTEM_MODES_INPUT  0x50
116 #define DIALOG7212_SYSTEM_MODES_OUTPUT 0x51
117 /*****************Control Registers(2)********************/
118 #define DIALOG7212_AUX_L_CTRL    0x60
119 #define DIALOG7212_AUX_R_CTRL    0x61
120 #define DIALOG7212_MICBIAS_CTRL  0x62
121 #define DIALOG7212_MIC_1_CTRL    0x63
122 #define DIALOG7212_MIC_2_CTRL    0x64
123 #define DIALOG7212_MIXIN_L_CTRL  0x65
124 #define DIALOG7212_MIXIN_R_CTRL  0x66
125 #define DIALOG7212_ADC_L_CTRL    0x67
126 #define DIALOG7212_ADC_R_CTRL    0x68
127 #define DIALOG7212_DAC_L_CTRL    0x69
128 #define DIALOG7212_DAC_R_CTRL    0x6A
129 #define DIALOG7212_HP_L_CTRL     0x6B
130 #define DIALOG7212_HP_R_CTRL     0x6C
131 #define DIALOG7212_LINE_CTRL     0x6D
132 #define DIALOG7212_MIXOUT_L_CTRL 0x6E
133 #define DIALOG7212_MIXOUT_R_CTRL 0x6F
134 /************ Registers**********/
135 
136 /****************Configuration Registers*****************/
137 #define DIALOG7212_LDO_CTRL            0x90
138 #define DIALOG7212_GAIN_RAMP_CTRL      0x92
139 #define DIALOG7212_MIC_CONFIG          0x93
140 #define DIALOG7212_PC_COUNT            0x94
141 #define DIALOG7212_CP_VOL_THRESHOLD1   0x95
142 #define DIALOG7212_CP_DELAY            0x96
143 #define DIALOG7212_CP_DETECTOR         0x97
144 #define DIALOG7212_DAI_OFFSET          0x98
145 #define DIALOG7212_DIG_CTRL            0x99
146 #define DIALOG7212_ALC_CTRL2           0x9A
147 #define DIALOG7212_ALC_CTRL3           0x9B
148 #define DIALOG7212_ALC_NOISE           0x9C
149 #define DIALOG7212_ALC_TARGET_MIN      0x9D
150 #define DIALOG7212_ALC_TARGET_MAX      0x9E
151 #define DIALOG7212_ALC_GAIN_LIMITS     0x9F
152 #define DIALOG7212_ALC_ANA_GAIN_LIMITS 0xA0
153 #define DIALOG7212_ALC_ANTICLIP_CTRL   0xA1
154 #define DIALOG7212_ALC_ANTICLIP_LEVEL  0xA2
155 #define DIALOG7212_DAC_NG_SETUP_TIME   0xAF
156 #define DIALOG7212_DAC_NG_OFF_THRESH   0xB0
157 #define DIALOG7212_DAC_NG_ON_THRESH    0xB1
158 #define DIALOG7212_DAC_NG_CTRL         0xB2
159 // #define DIALOG7212_DAC_NG_SPARE                       0xB3
160 /************Tone Generation & Beep Registers************/
161 #define DIALOG7212_TONE_GEN_CFG1    0xB4
162 #define DIALOG7212_TONE_GEN_CFG2    0xB5
163 #define DIALOG7212_TONE_GEN_CYCLES  0xB6
164 #define DIALOG7212_TONE_GEN_FREQ1_L 0xB7
165 #define DIALOG7212_TONE_GEN_FREQ1_U 0xB8
166 #define DIALOG7212_TONE_GEN_FREQ2_L 0xB9
167 #define DIALOG7212_TONE_GEN_FREQ2_U 0xBA
168 #define DIALOG7212_TONE_GEN_ON_PER  0xBB
169 #define DIALOG7212_TONE_GEN_OFF_PER 0xBC
170 
171 /************System Controller Registers(2)*************/
172 #define DIALOG7212_SYSTEM_STATUS 0xE0
173 
174 #define DIALOG7212_SYSTEM_ACTIVE 0xFD
175 
176 /******************Driver DA7212 Macros*****************/
177 
178 /******************Status registers*********************/
179 /* DIALOG7212_PLL_STATUS                         0x03*/
180 #define DIALOG7212_PLL_STATUS_BYPASS_ACTIVE_MASK (1U << 3)
181 #define DIALOG7212_PLL_STATUS_MCLK_STATUS_MASK   (1U << 2)
182 #define DIALOG7212_PLL_STATUS_SRM_LOCK_MASK      (1U << 1)
183 #define DIALOG7212_PLL_STATUS_LOCK_MASK          (1U << 0)
184 
185 /* DIALOG7212_AUX_L_GAIN_STATUS                  0x04*/
186 #define DIALOG7212_AUX_L_AMP_GAIN_STATUS_MASK  (0x3F)
187 #define DIALOG7212_AUX_L_AMP_GAIN_STATUS_SHIFT (0U)
188 #define DIALOG7212_AUX_L_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_AUX_L_AMP_GAIN_STATUS_SHIFT)
189 
190 /* DIALOG7212_AUX_R_GAIN_STATUS                  0x05*/
191 #define DIALOG7212_AUX_R_AMP_GAIN_STATUS_MASK  (0x3F)
192 #define DIALOG7212_AUX_R_AMP_GAIN_STATUS_SHIFT (0U)
193 #define DIALOG7212_AUX_R_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_AUX_R_AMP_GAIN_STATUS_SHIFT)
194 
195 /* DIALOG7212_MIC_1_GAIN_STATUS                  0x06*/
196 #define DIALOG7212_MIC_1_AMP_GAIN_STATUS_MASK  (0x07)
197 #define DIALOG7212_MIC_1_AMP_GAIN_STATUS_SHIFT (0U)
198 #define DIALOG7212_MIC_1_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_MIC_1_AMP_GAIN_STATUS_SHIFT)
199 
200 /* DIALOG7212_MIC_2_GAIN_STATUS                  0x07*/
201 #define DIALOG7212_MIC_2_AMP_GAIN_STATUS_MASK  (0x07)
202 #define DIALOG7212_MIC_2_AMP_GAIN_STATUS_SHIFT (0U)
203 #define DIALOG7212_MIC_2_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_MIC_2_AMP_GAIN_STATUS_SHIFT)
204 
205 /* DIALOG7212_MIXIN_L_GAIN_STATUS                0x08*/
206 #define DIALOG7212_MIXIN_L_AMP_GAIN_STATUS_MASK  (0x0F)
207 #define DIALOG7212_MIXIN_L_AMP_GAIN_STATUS_SHIFT (0U)
208 #define DIALOG7212_MIXIN_L_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_MIXIN_L_AMP_GAIN_STATUS_SHIFT)
209 
210 /* DIALOG7212_MIXIN_R_GAIN_STATUS                0x09*/
211 #define DIALOG7212_MIXIN_R_AMP_GAIN_STATUS_MASK  (0x0F)
212 #define DIALOG7212_MIXIN_R_AMP_GAIN_STATUS_SHIFT (0U)
213 #define DIALOG7212_MIXIN_R_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_MIXIN_R_AMP_GAIN_STATUS_SHIFT)
214 
215 /* DIALOG7212_ADC_L_GAIN_STATUS                  0x0A*/
216 #define DIALOG7212_ADC_L_GAIN_STATUS_MASK   (0x7F)
217 #define DIALOG7212_ADC_L_GAIN_STATUS_SHIFT  (0U)
218 #define DIALOG7212_ADC_L_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_ADC_L_GAIN_STATUS_SHIFT)
219 
220 /* DIALOG7212_ADC_R_GAIN_STATUS                  0x0B*/
221 #define DIALOG7212_ADC_R_GAIN_STATUS_MASK   (0x7F)
222 #define DIALOG7212_ADC_R_GAIN_STATUS_SHIFT  (0U)
223 #define DIALOG7212_ADC_R_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_ADC_R_GAIN_STATUS_SHIFT)
224 
225 /* DIALOG7212_DAC_L_GAIN_STATUS                  0x0C*/
226 #define DIALOG7212_DAC_L_GAIN_STATUS_MASK   (0x7F)
227 #define DIALOG7212_DAC_L_GAIN_STATUS_SHIFT  (0U)
228 #define DIALOG7212_DAC_L_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_DAC_L_GAIN_STATUS_SHIFT)
229 
230 /* DIALOG7212_DAC_R_GAIN_STATUS                  0x0D*/
231 #define DIALOG7212_DAC_R_GAIN_STATUS_MASK   (0x7F)
232 #define DIALOG7212_DAC_R_GAIN_STATUS_SHIFT  (0U)
233 #define DIALOG7212_DAC_R_GAIN_STATUS_VAL(x) ((x) << DIALOG7212_DAC_R_GAIN_STATUS_SHIFT)
234 
235 /* DIALOG7212_HP_L_GAIN_STATUS                   0x0E*/
236 #define DIALOG7212_HP_L_AMP_GAIN_STATUS_MASK  (0x3F)
237 #define DIALOG7212_HP_L_AMP_GAIN_STATUS_SHIFT (0U)
238 #define DIALOG7212_HP_L_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_HP_L_AMP_GAIN_STATUS_SHIFT)
239 
240 /* DIALOG7212_HP_R_GAIN_STATUS                   0x0F*/
241 #define DIALOG7212_HP_R_AMP_GAIN_STATUS_MASK  (0x3F)
242 #define DIALOG7212_HP_R_AMP_GAIN_STATUS_SHIFT (0U)
243 #define DIALOG7212_HP_R_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_HP_R_AMP_GAIN_STATUS_SHIFT)
244 
245 /* DIALOG7212_LINE_GAIN_STATUS                   0x10*/
246 #define DIALOG7212_LINE_AMP_GAIN_STATUS_MASK  (0x3F)
247 #define DIALOG7212_LINE_AMP_GAIN_STATUS_SHIFT (0U)
248 #define DIALOG7212_LINE_AMP_GAIN_STATUS(x)    ((x) << DIALOG7212_LINE_AMP_GAIN_STATUS_SHIFT)
249 
250 /***************System Initialisation Registers************/
251 
252 /* DIALOG7212_CIF_CTRL                           0x1d */
253 #define DIALOG7212_CIF_CTRL_CIF_REG_SOFT_RESET_MASK (1U << 7)
254 #define DIALOG7212_CIF_CTRL_CIF_I2C_WRITE_MODE_MASK (1U << 0)
255 
256 /* DIALOG7212_DIG_ROUTING_DAI                    0x21 */
257 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_MASK      (0x30)
258 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT     (4U)
259 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_ADC_LEFT  (0U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
260 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_ADC_RIGHT (1U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
261 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_DAI_LEFT  (2U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
262 #define DIALOG7212_DIG_ROUTING_DAI_R_SRC_DAI_RIGHT (3U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
263 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_MASK      (0x03)
264 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_SHIFT     (4U)
265 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_ADC_LEFT  (0U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
266 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_ADC_RIGHT (1U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
267 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_DAI_LEFT  (2U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
268 #define DIALOG7212_DIG_ROUTING_DAI_L_SRC_DAI_RIGHT (3U << DIALOG7212_DIG_ROUTING_DAI_R_SRC_SHIFT)
269 
270 /* DIALOG7212_SR                                 0x22 */
271 #define DIALOG7212_SR_MASK      (0x0F)
272 #define DIALOG7212_SR_SHIFT     (0U)
273 #define DIALOG7212_SR_8KHZ      (1U << DIALOG7212_SR_SHIFT)
274 #define DIALOG7212_SR_11_025KHZ (2U << DIALOG7212_SR_SHIFT)
275 #define DIALOG7212_SR_12KHZ     (3U << DIALOG7212_SR_SHIFT)
276 #define DIALOG7212_SR_16KHZ     (5U << DIALOG7212_SR_SHIFT)
277 #define DIALOG7212_SR_22KHZ     (6U << DIALOG7212_SR_SHIFT)
278 #define DIALOG7212_SR_24KHZ     (7U << DIALOG7212_SR_SHIFT)
279 #define DIALOG7212_SR_32KHZ     (9U << DIALOG7212_SR_SHIFT)
280 #define DIALOG7212_SR_44_1KHZ   (10U << DIALOG7212_SR_SHIFT)
281 #define DIALOG7212_SR_48KHZ     (11U << DIALOG7212_SR_SHIFT)
282 #define DIALOG7212_SR_88_2KHZ   (14U << DIALOG7212_SR_SHIFT)
283 #define DIALOG7212_SR_96KHZ     (15U << DIALOG7212_SR_SHIFT)
284 
285 /* DIALOG7212_REFERENCES                         0x23 */
286 #define DIALOG7212_REFERENCES_VMID_FAST_DISCHARGE_MASK (1U << 5)
287 #define DIALOG7212_REFERENCES_VMID_FAST_CHARGE_MASK    (1U << 4)
288 #define DIALOG7212_REFERENCES_BIAS_EN_MASK             (1U << 3)
289 
290 /* DIALOG7212_PLL_FRAC_TOP                       0x24 */
291 #define DIALOG7212_PLL_FBDIV_FRAC_TOP_MASK  (0x1F)
292 #define DIALOG7212_PLL_FBDIV_FRAC_TOP_SHIFT (0U)
293 #define DIALOG7212_PLL_FBDIV_FRAC_TOP(x)    ((x) << DIALOG7212_PLL_FBDIV_FRAC_TOP_SHIFT)
294 
295 /* DIALOG7212_PLL_FRAC_BOT                       0x25 */
296 #define DIALOG7212_PLL_FBDIV_FRAC_BOT_MASK  (0xFF)
297 #define DIALOG7212_PLL_FBDIV_FRAC_BOT_SHIFT (0U)
298 #define DIALOG7212_PLL_FBDIV_FRAC_BOT(x)    ((x) << DIALOG7212_PLL_FBDIV_FRAC_BOT_SHIFT)
299 
300 /* DIALOG7212_PLL_INTEGER                        0x26 */
301 #define DIALOG7212_PLL_FBDIV_INTEGER_MASK   (0xFF)
302 #define DIALOG7212_PLL_FBDIV_INTEGER_SHIFT  (0U)
303 #define DIALOG7212_PLL_FBDIV_INTEGER_BOT(x) ((x) << DIALOG7212_PLL_FBDIV_INTEGER_SHIFT)
304 
305 /* DIALOG7212_PLL_CTRL                           0x27 */
306 #define DIALOG7212_PLL_EN_MASK         (1U << 7)
307 #define DIALOG7212_PLL_SRM_EN_MASK     (1U << 6)
308 #define DIALOG7212_PLL_32K_MODE_MASK   (1U << 5)
309 #define DIALOG7212_PLL_MCLKSQR_EN_MASK (1U << 4)
310 #define DIALOG7212_PLL_INDIV_MASK      (0x06)
311 #define DIALOG7212_PLL_INDIV_SHIFT     (2U)
312 #define DIALOG7212_PLL_INDIV_2_10MHZ   (0U << DIALOG7212_PLL_INDIV_SHIFT)
313 #define DIALOG7212_PLL_INDIV_10_20MHZ  (1U << DIALOG7212_PLL_INDIV_SHIFT)
314 #define DIALOG7212_PLL_INDIV_20_40MHZ  (2U << DIALOG7212_PLL_INDIV_SHIFT)
315 #define DIALOG7212_PLL_INDIV_40_80MHZ  (3U << DIALOG7212_PLL_INDIV_SHIFT)
316 
317 /* DIALOG7212_DAI_CLK_MODE                       0x28 */
318 #define DIALOG7212_DAI_CLK_EN_MASK            (1U << 7)
319 #define DIALOG7212_DAI_WCLK_POL_MASK          (1U << 3)
320 #define DIALOG7212_DAI_CLK_POL_MASK           (1U << 2)
321 #define DIALOG7212_DAI_BCLKS_PER_WCLK_MASK    (0x03)
322 #define DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT   (0U)
323 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK32  (0U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT)
324 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK64  (1U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT)
325 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK128 (2U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT)
326 #define DIALOG7212_DAI_BCLKS_PER_WCLK_BCLK256 (3U << DIALOG7212_DAI_BCLKS_PER_WCLK_SHIFT)
327 
328 /* DIALOG7212_DAI_CTRL                           0x29 */
329 #define DIALOG7212_DAI_EN_MASK                (1U << 7)
330 #define DIALOG7212_DAI_OE_MASK                (1U << 6)
331 #define DIALOG7212_DAI_TDM_MODE_EN_MASK       (1U << 5)
332 #define DIALOG7212_DAI_MONO_MODE_MASK         (1U << 4)
333 #define DIALOG7212_DAI_WORD_LENGTH_MASK       (0x06)
334 #define DIALOG7212_DAI_WORD_LENGTH_SHIFT      (2U)
335 #define DIALOG7212_DAI_WORD_LENGTH_16B        (0U << DIALOG7212_DAI_WORD_LENGTH_SHIFT)
336 #define DIALOG7212_DAI_WORD_LENGTH_20B        (1U << DIALOG7212_DAI_WORD_LENGTH_SHIFT)
337 #define DIALOG7212_DAI_WORD_LENGTH_24B        (2U << DIALOG7212_DAI_WORD_LENGTH_SHIFT)
338 #define DIALOG7212_DAI_WORD_LENGTH_32B        (3U << DIALOG7212_DAI_WORD_LENGTH_SHIFT)
339 #define DIALOG7212_DAI_FORMAT_MASK            (0x03)
340 #define DIALOG7212_DAI_FORMAT_SHIFT           (0U)
341 #define DIALOG7212_DAI_FORMAT_I2S_MODE        (0U << DIALOG7212_DAI_FORMAT_SHIFT)
342 #define DIALOG7212_DAI_FORMAT_LEFT_JUSTIFIED  (1U << DIALOG7212_DAI_FORMAT_SHIFT)
343 #define DIALOG7212_DAI_FORMAT_RIGTH_JUSTIFIED (2U << DIALOG7212_DAI_FORMAT_SHIFT)
344 #define DIALOG7212_DAI_FORMAT_DSP_MODE        (3U << DIALOG7212_DAI_FORMAT_SHIFT)
345 
346 /* DIALOG7212_DIG_ROUTING_DAC                    0x2A */
347 #define DIALOG7212_DIG_ROUTING_DAC_R_MONO_MASK        (1U << 7)
348 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_MASK         (0x30)
349 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT        (4U)
350 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_ADC_L_OUTPUT (0U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT)
351 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_ADC_R_OUTPUT (1U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT)
352 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_DAC_L        (2U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT)
353 #define DIALOG7212_DIG_ROUTING_DAC_R_RSC_DAC_R        (3U << DIALOG7212_DIG_ROUTING_DAC_R_RSC_SHIFT)
354 #define DIALOG7212_DIG_ROUTING_DAC_L_MONO_MASK        (1U << 3)
355 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_MASK         (0x03)
356 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT        (0U)
357 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_ADC_L_OUTPUT (0U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT)
358 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_ADC_R_OUTPUT (1U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT)
359 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_DAC_L        (2U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT)
360 #define DIALOG7212_DIG_ROUTING_DAC_L_RSC_DAC_R        (3U << DIALOG7212_DIG_ROUTING_DAC_L_RSC_SHIFT)
361 
362 /* DIALOG7212_ALC_CTRL1                          0x2B */
363 #define DIALOG7212_ALC_R_EN_MASK           (1U << 7)
364 #define DIALOG7212_ALC_CALIB_OVERFLOW_MASK (1U << 5)
365 #define DIALOG7212_ALC_AUTO_CALIB_EN_MASK  (1U << 4)
366 #define DIALOG7212_ALC_L_EN_MASK           (1U << 3)
367 #define DIALOG7212_ALC_CALIB_MODE_MASK     (1U << 2)
368 #define DIALOG7212_ALC_SYNC_MODE_MASK      (1U << 1)
369 #define DIALOG7212_ALC_OFFSET_EN_MASK      (1U << 0)
370 
371 /************Input Gain/ Select Filter Registers**********/
372 /* DIALOG7212_AUX_L_GAIN                         0x30 */
373 #define DIALOG7212_AUX_L_AMP_GAIN_MASK  (0x3F)
374 #define DIALOG7212_AUX_L_AMP_GAIN_SHIFT (0U)
375 #define DIALOG7212_AUX_L_AMP_GAIN(x)    ((x) << DIALOG7212_AUX_L_AMP_GAIN_SHIFT)
376 
377 /* DIALOG7212_AUX_R_GAIN                         0x31 */
378 #define DIALOG7212_AUX_R_AMP_GAIN_MASK  (0x3F)
379 #define DIALOG7212_AUX_R_AMP_GAIN_SHIFT (0U)
380 #define DIALOG7212_AUX_R_AMP_GAIN(x)    ((x) << DIALOG7212_AUX_R_AMP_GAIN_SHIFT)
381 
382 /* DIALOG7212_MIXIN_L_SELECT                     0x32 */
383 #define DIALOG7212_MIXIN_L_SELECT_DMIC_L_EN_MASK (1U << 7)
384 #define DIALOG7212_MIXIN_L_SELECT_MIXING_R_MASK  (1U << 3)
385 #define DIALOG7212_MIXIN_L_SELECT_MIC2_SEL_MASK  (1U << 2)
386 #define DIALOG7212_MIXIN_L_SELECT_MIC1_SEL_MASK  (1U << 1)
387 #define DIALOG7212_MIXIN_L_SELECT_AUX_L_SEL_MASK (1U << 0)
388 
389 /* DIALOG7212_MIXIN_R_SELECT                     0x33 */
390 #define DIALOG7212_MIXIN_R_SELECT_DMIC_R_EN_MASK (1U << 7)
391 #define DIALOG7212_MIXIN_R_SELECT_MIXING_L_MASK  (1U << 3)
392 #define DIALOG7212_MIXIN_R_SELECT_MIC2_SEL_MASK  (1U << 2)
393 #define DIALOG7212_MIXIN_R_SELECT_MIC1_SEL_MASK  (1U << 1)
394 #define DIALOG7212_MIXIN_R_SELECT_AUX_R_SEL_MASK (1U << 0)
395 
396 /* DIALOG7212_MIXIN_L_GAIN                       0x34 */
397 #define DIALOG7212_MIXIN_L_AMP_GAIN_MASK  (0x0F)
398 #define DIALOG7212_MIXIN_L_AMP_GAIN_SHIFT (0U)
399 #define DIALOG7212_MIXIN_L_AMP_GAIN(x)    ((x) << DIALOG7212_MIXIN_L_AMP_GAIN_SHIFT)
400 
401 /* DIALOG7212_MIXIN_R_GAIN                       0x35 */
402 #define DIALOG7212_MIXIN_R_AMP_GAIN_MASK  (0x0F)
403 #define DIALOG7212_MIXIN_R_AMP_GAIN_SHIFT (0U)
404 #define DIALOG7212_MIXIN_R_AMP_GAIN(x)    ((x) << DIALOG7212_MIXIN_R_AMP_GAIN_SHIFT)
405 
406 /* DIALOG7212_ADC_L_GAIN                         0x36 */
407 #define DIALOG7212_ADC_L_DIGITAL_GAIN_MASK  (0x7F)
408 #define DIALOG7212_ADC_L_DIGITAL_GAIN_SHIFT (0U)
409 #define DIALOG7212_ADC_L_DIGITAL_GAIN(x)    ((x) << DIALOG7212_ADC_L_DIGITAL_GAIN_SHIFT)
410 
411 /* DIALOG7212_ADC_R_GAIN                         0x37 */
412 #define DIALOG7212_ADC_R_DIGITAL_GAIN_MASK  (0x7F)
413 #define DIALOG7212_ADC_R_DIGITAL_GAIN_SHIFT (0U)
414 #define DIALOG7212_ADC_R_DIGITAL_GAIN(x)    ((x) << DIALOG7212_ADC_R_DIGITAL_GAIN_SHIFT)
415 
416 /* DIALOG7212_ADC_FILTERS1                       0x38 */
417 #define DIALOG7212_ADC_FILTERS1_ADC_HPF_EN_MASK            (1U << 7)
418 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_MASK  (0x30)
419 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT (5U)
420 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_2HZ   (0U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT)
421 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_4HZ   (1U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT)
422 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_8HZ   (2U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT)
423 #define DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_16HZ  (3U << DIALOG7212_ADC_FILTERS1_ADC_AUDIO_HPF_CORNER_SHIFT)
424 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_EN_MASK          (1U << 3)
425 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_MASK  (0x07)
426 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT (0U)
427 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_2_5HZ (0U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
428 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_25HZ  (1U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
429 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_50HZ  (2U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
430 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_100HZ (3U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
431 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_150HZ (4U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
432 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_200HZ (5U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
433 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_300HZ (6U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
434 #define DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_400HZ (7U << DIALOG7212_ADC_FILTERS1_ADC_VOICE_HPF_CORNER_SHIFT)
435 
436 /* DIALOG7212_MIC_1_GAIN                         0x39 */
437 #define DIALOG7212_MIC_1_AMP_GAIN_MASK  (0x07)
438 #define DIALOG7212_MIC_1_AMP_GAIN_SHIFT (0U)
439 #define DIALOG7212_MIC_1_AMP_GAIN_N6DB  (0U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
440 #define DIALOG7212_MIC_1_AMP_GAIN_0DB   (1U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
441 #define DIALOG7212_MIC_1_AMP_GAIN_P6DB  (2U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
442 #define DIALOG7212_MIC_1_AMP_GAIN_P12DB (3U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
443 #define DIALOG7212_MIC_1_AMP_GAIN_P18DB (4U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
444 #define DIALOG7212_MIC_1_AMP_GAIN_P24DB (5U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
445 #define DIALOG7212_MIC_1_AMP_GAIN_P30DB (6U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
446 #define DIALOG7212_MIC_1_AMP_GAIN_P36DB (7U << DIALOG7212_MIC_1_AMP_GAIN_SHIFT)
447 
448 /* DIALOG7212_MIC_2_GAIN                         0x3A */
449 #define DIALOG7212_MIC_2_AMP_GAIN_MASK  (0x07)
450 #define DIALOG7212_MIC_2_AMP_GAIN_SHIFT (0U)
451 #define DIALOG7212_MIC_2_AMP_GAIN_N6DB  (0U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
452 #define DIALOG7212_MIC_2_AMP_GAIN_0DB   (1U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
453 #define DIALOG7212_MIC_2_AMP_GAIN_P6DB  (2U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
454 #define DIALOG7212_MIC_2_AMP_GAIN_P12DB (3U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
455 #define DIALOG7212_MIC_2_AMP_GAIN_P18DB (4U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
456 #define DIALOG7212_MIC_2_AMP_GAIN_P24DB (5U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
457 #define DIALOG7212_MIC_2_AMP_GAIN_P30DB (6U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
458 #define DIALOG7212_MIC_2_AMP_GAIN_P36DB (7U << DIALOG7212_MIC_2_AMP_GAIN_SHIFT)
459 
460 /************Output Gain/ Select Filter Registers**********/
461 /* DIALOG7212_DAC_FILTERS5                       0x40 */
462 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_EN_MASK    (1U << 7)
463 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_MASK  (0x07)
464 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT (4U)
465 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_1     (0U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT)
466 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_2     (1U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT)
467 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_4     (2U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT)
468 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_8     (3U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT)
469 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_16    (4U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT)
470 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_32    (5U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT)
471 #define DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_64    (6U << DIALOG7212_DAC_FILTERS5_SOFTMUTE_RATE_SHIFT)
472 
473 /* DIALOG7212_DAC_FILTERS2                       0x41 */
474 #define DIALOG7212_DAC_FILTERS2_EQ_BAND2_MASK  (0xF0)
475 #define DIALOG7212_DAC_FILTERS2_EQ_BAND2_SHIFT (4U)
476 #define DIALOG7212_DAC_FILTERS2_EQ_BAND2(x)    ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND2_SHIFT)
477 #define DIALOG7212_DAC_FILTERS2_EQ_BAND1_MASK  (0x0F)
478 #define DIALOG7212_DAC_FILTERS2_EQ_BAND1_SHIFT (0U)
479 #define DIALOG7212_DAC_FILTERS2_EQ_BAND1(x)    ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND1_SHIFT)
480 
481 /* DIALOG7212_DAC_FILTERS3                       0x42 */
482 #define DIALOG7212_DAC_FILTERS3_EQ_BAND4_MASK  (0xF0)
483 #define DIALOG7212_DAC_FILTERS3_EQ_BAND4_SHIFT (4U)
484 #define DIALOG7212_DAC_FILTERS3_EQ_BAND4(x)    ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND4_SHIFT)
485 #define DIALOG7212_DAC_FILTERS3_EQ_BAND3_MASK  (0x0F)
486 #define DIALOG7212_DAC_FILTERS3_EQ_BAND3_SHIFT (0U)
487 #define DIALOG7212_DAC_FILTERS3_EQ_BAND3(x)    ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND3_SHIFT)
488 
489 /* DIALOG7212_DAC_FILTERS4                       0x43 */
490 #define DIALOG7212_DAC_FILTERS4_EQ_EN_MASK     (1U << 7)
491 #define DIALOG7212_DAC_FILTERS4_EQ_BAND5_MASK  (0x0F)
492 #define DIALOG7212_DAC_FILTERS4_EQ_BAND5_SHIFT (0U)
493 #define DIALOG7212_DAC_FILTERS4_EQ_BAND5(x)    ((x) << DIALOG7212_DAC_FILTERS2_EQ_BAND5_SHIFT)
494 
495 /* DIALOG7212_DAC_FILTERS1                       0x44 */
496 #define DIALOG7212_DAC_FILTERS1_HPF_EN_MASK                (1U << 7)
497 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_MASK  (0x30)
498 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT (5U)
499 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_2HZ   (0U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT)
500 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_4HZ   (1U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT)
501 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_8HZ   (2U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT)
502 #define DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_16HZ  (3U << DIALOG7212_DAC_FILTERS1_DAC_AUDIO_HPF_CORNER_SHIFT)
503 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_EN_MASK          (1U << 3)
504 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_MASK  (0x07)
505 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT (0U)
506 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_2_5HZ (0U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
507 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_25HZ  (1U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
508 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_50HZ  (2U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
509 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_100HZ (3U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
510 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_150HZ (4U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
511 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_200HZ (5U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
512 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_300HZ (6U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
513 #define DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_400HZ (7U << DIALOG7212_DAC_FILTERS1_DAC_VOICE_HPF_CORNER_SHIFT)
514 
515 /* DIALOG7212_DAC_L_GAIN                         0x45 */
516 #define DIALOG7212_DAC_L_DIGITAL_GAIN_MASK  (0x7F)
517 #define DIALOG7212_DAC_L_DIGITAL_GAIN_SHIFT (0U)
518 #define DIALOG7212_DAC_L_DIGITAL_GAIN(x)    ((x) << DIALOG7212_DAC_L_DIGITAL_GAIN_SHIFT)
519 
520 /* DIALOG7212_DAC_R_GAIN                         0x46 */
521 #define DIALOG7212_DAC_R_DIGITAL_GAIN_MASK  (0x7F)
522 #define DIALOG7212_DAC_R_DIGITAL_GAIN_SHIFT (0U)
523 #define DIALOG7212_DAC_R_DIGITAL_GAIN(x)    ((x) << DIALOG7212_DAC_R_DIGITAL_GAIN_SHIFT)
524 
525 /* DIALOG7212_CP_CTRL                            0x47 */
526 #define DIALOG7212_CP_CTRL_EN_MASK                    (1U << 7)
527 #define DIALOG7212_CP_CTRL_SMALL_SWIT_CH_FREQ_EN_MASK (1U << 6)
528 #define DIALOG7212_CP_CTRL_MCHANGE_MASK               (0x30)
529 #define DIALOG7212_CP_CTRL_MCHANGE_SHIFT              (4U)
530 #define DIALOG7212_CP_CTRL_MCHANGE_CP_MOD             (0U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT)
531 #define DIALOG7212_CP_CTRL_MCHANGE_PGA                (1U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT)
532 #define DIALOG7212_CP_CTRL_MCHANGE_DAC                (2U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT)
533 #define DIALOG7212_CP_CTRL_MCHANGE_OUTPUT             (3U << DIALOG7212_CP_CTRL_MCHANGE_SHIFT)
534 #define DIALOG7212_CP_CTRL_MOD_MASK                   (0x0C)
535 #define DIALOG7212_CP_CTRL_MOD_SHIFT                  (2U)
536 #define DIALOG7212_CP_CTRL_MOD_STANDBY                (0U << DIALOG7212_CP_CTRL_MOD_SHIFT)
537 #define DIALOG7212_CP_CTRL_MOD_CPVDD_2                (2U << DIALOG7212_CP_CTRL_MOD_SHIFT)
538 #define DIALOG7212_CP_CTRL_MOD_CPVDD_1                (3U << DIALOG7212_CP_CTRL_MOD_SHIFT)
539 #define DIALOG7212_CP_CTRL_ANALOG_VLL_MASK            (0x03)
540 #define DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT           (0U)
541 #define DIALOG7212_CP_CTRL_ANALOG_VLL_NO_FEEDBACK     (0U << DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT)
542 #define DIALOG7212_CP_CTRL_ANALOG_VLL_LV_BOOSTS_CP    (1U << DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT)
543 #define DIALOG7212_CP_CTRL_ANALOG_VLL_LV_RESTART_CP   (2U << DIALOG7212_CP_CTRL_ANALOG_VLL_SHIFT)
544 
545 /* DIALOG7212_HP_L_GAIN                          0x48 */
546 #define DIALOG7212_HP_L_AMP_GAIN_MASK  (0x3F)
547 #define DIALOG7212_HP_L_AMP_GAIN_SHIFT (0U)
548 #define DIALOG7212_HP_L_AMP_GAIN(x)    ((x) << DIALOG7212_HP_L_AMP_GAIN_SHIFT)
549 
550 /* DIALOG7212_HP_R_GAIN                          0x49 */
551 #define DIALOG7212_HP_R_AMP_GAIN_MASK  (0x3F)
552 #define DIALOG7212_HP_R_AMP_GAIN_SHIFT (0U)
553 #define DIALOG7212_HP_R_AMP_GAIN(x)    ((x) << DIALOG7212_HP_R_AMP_GAIN_SHIFT)
554 
555 /* DIALOG7212_LINE_GAIN                          0x4A */
556 #define DIALOG7212_LINE_AMP_GAIN_MASK  (0x3F)
557 #define DIALOG7212_LINE_AMP_GAIN_SHIFT (0U)
558 #define DIALOG7212_LINE_AMP_GAIN(x)    ((x) << DIALOG7212_LINE_AMP_GAIN_SHIFT)
559 
560 /* DIALOG7212_MIXOUT_L_SELECT                    0x4B */
561 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_R_INV_MASK (1U << 6)
562 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_L_INV_MASK (1U << 5)
563 #define DIALOG7212_MIXOUT_L_SELECT_AUX_L_INV_MASK   (1U << 4)
564 #define DIALOG7212_MIXOUT_L_SELECT_DAC_L_MASK       (1U << 3)
565 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_R_MASK     (1U << 2)
566 #define DIALOG7212_MIXOUT_L_SELECT_MIXIN_L_MASK     (1U << 1)
567 #define DIALOG7212_MIXOUT_L_SELECT_AUX_L_MASK       (1U << 0)
568 
569 /* DIALOG7212_MIXOUT_R_SELECT                    0x4C */
570 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_L_INV_MASK (1U << 6)
571 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_R_INV_MASK (1U << 5)
572 #define DIALOG7212_MIXOUT_R_SELECT_AUX_R_INV_MASK   (1U << 4)
573 #define DIALOG7212_MIXOUT_R_SELECT_DAC_R_MASK       (1U << 3)
574 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_L_MASK     (1U << 2)
575 #define DIALOG7212_MIXOUT_R_SELECT_MIXIN_R_MASK     (1U << 1)
576 #define DIALOG7212_MIXOUT_R_SELECT_AUX_R_MASK       (1U << 0)
577 
578 /**************System Controller Registers(1)*************/
579 /* DIALOG7212_SYSTEM_MODES_INPUT                 0x50 */
580 #define DIALOG7212_SYSTEM_MODES_INPUT_ADC_R_MASK       (1U << 7)
581 #define DIALOG7212_SYSTEM_MODES_INPUT_ADC_L_MASK       (1U << 6)
582 #define DIALOG7212_SYSTEM_MODES_INPUT_MIXIN_R_MASK     (1U << 5)
583 #define DIALOG7212_SYSTEM_MODES_INPUT_MIXIN_L_MASK     (1U << 4)
584 #define DIALOG7212_SYSTEM_MODES_INPUT_MIC_2_MASK       (1U << 3)
585 #define DIALOG7212_SYSTEM_MODES_INPUT_MIC_1_MASK       (1U << 2)
586 #define DIALOG7212_SYSTEM_MODES_INPUT_MIC_BIAS_MASK    (1U << 1)
587 #define DIALOG7212_SYSTEM_MODES_INPUT_MODE_SUBMIT_MASK (1U << 0)
588 
589 /* DIALOG7212_SYSTEM_MODES_OUTPUT                0x51 */
590 #define DIALOG7212_SYSTEM_MODES_OUTPUT_DAC_R_MASK       (1U << 7)
591 #define DIALOG7212_SYSTEM_MODES_OUTPUT_DAC_L_MASK       (1U << 6)
592 #define DIALOG7212_SYSTEM_MODES_OUTPUT_HP_R_MASK        (1U << 5)
593 #define DIALOG7212_SYSTEM_MODES_OUTPUT_HP_L_MASK        (1U << 4)
594 #define DIALOG7212_SYSTEM_MODES_OUTPUT_LINE_MASK        (1U << 3)
595 #define DIALOG7212_SYSTEM_MODES_OUTPUT_AUX_R_MASK       (1U << 2)
596 #define DIALOG7212_SYSTEM_MODES_OUTPUT_AUX_L_MASK       (1U << 1)
597 #define DIALOG7212_SYSTEM_MODES_OUTPUT_MODE_SUBMIT_MASK (1U << 0)
598 
599 /*****************Control Registers(2)********************/
600 /* DIALOG7212_AUX_L_CTRL                         0x60 */
601 #define DIALOG7212_AUX_L_CTRL_AMP_EN_MASK               (1U << 7)
602 #define DIALOG7212_AUX_L_CTRL_AMP_MUTE_EN_MASK          (1U << 6)
603 #define DIALOG7212_AUX_L_CTRL_AMP_RAMP_EN_MASK          (1U << 5)
604 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_EN_MASK            (1U << 4)
605 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_MASK           (0x0C)
606 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT          (2U)
607 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_INPUT_AUX_L    (0U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT)
608 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_INPUT_AUX_L_IF (1U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT)
609 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_NO_ZC_POSSBLE  (2U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT)
610 #define DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_OUTPUT_AUX_L   (3U << DIALOG7212_AUX_L_CTRL_AMP_ZC_SEL_SHIFT)
611 
612 /* DIALOG7212_AUX_R_CTRL                         0x61 */
613 #define DIALOG7212_AUX_R_CTRL_AMP_EN_MASK               (1U << 7)
614 #define DIALOG7212_AUX_R_CTRL_AMP_MUTE_EN_MASK          (1U << 6)
615 #define DIALOG7212_AUX_R_CTRL_AMP_RAMP_EN_MASK          (1U << 5)
616 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_EN_MASK            (1U << 4)
617 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_MASK           (0x0C)
618 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT          (2U)
619 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_INPUT_AUX_R    (0U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT)
620 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_INPUT_AUX_R_IF (1U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT)
621 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_NO_ZC_POSSBLE  (2U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT)
622 #define DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_OUTPUT_AUX_R   (3U << DIALOG7212_AUX_R_CTRL_AMP_ZC_SEL_SHIFT)
623 
624 /* DIALOG7212_MICBIAS_CTRL                       0x62 */
625 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_EN_MASK    (1U << 7)
626 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_LEVEL_MASK (0x30)
627 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT      (4U)
628 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_1_6V       (0U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT)
629 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_2_2V       (1U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT)
630 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_2_5V       (2U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT)
631 #define DIALOG7212_MICBIAS_CTRL_MICBIAS2_3_0V       (3U << DIALOG7212_MICBIAS_CTRL_MICBIAS2_SHIFT)
632 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_EN_MASK    (1U << 3)
633 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_LEVEL_MASK (0x03)
634 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT      (0U)
635 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_1_6V       (0U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT)
636 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_2_2V       (1U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT)
637 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_2_5V       (2U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT)
638 #define DIALOG7212_MICBIAS_CTRL_MICBIAS1_3_0V       (3U << DIALOG7212_MICBIAS_CTRL_MICBIAS1_SHIFT)
639 
640 /* DIALOG7212_MIC_1_CTRL                         0x63 */
641 #define DIALOG7212_MIC_1_CTRL_AMP_EN_MASK             (1U << 7)
642 #define DIALOG7212_MIC_1_CTRL_AMP_MUTE_EN_MASK        (1U << 6)
643 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_MASK         (0x0C)
644 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT        (2U)
645 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_DIFFERENTIAL (0U << DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT)
646 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_MIC_1_P      (1U << DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT)
647 #define DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_MIC_1_N      (2U << DIALOG7212_MIC_1_CTRL_AMP_IN_SEL_SHIFT)
648 
649 /* DIALOG7212_MIC_2_CTRL                         0x64 */
650 #define DIALOG7212_MIC_2_CTRL_AMP_EN_MASK             (1U << 7)
651 #define DIALOG7212_MIC_2_CTRL_AMP_MUTE_EN_MASK        (1U << 6)
652 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_MASK         (0x0C)
653 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT        (2U)
654 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_DIFFERENTIAL (0U << DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT)
655 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_MIC_2_P      (1U << DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT)
656 #define DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_MIC_2_N      (2U << DIALOG7212_MIC_2_CTRL_AMP_IN_SEL_SHIFT)
657 
658 /* DIALOG7212_MIXIN_L_CTRL                       0x65 */
659 #define DIALOG7212_MIXIN_L_CTRL_AMP_EN_MASK      (1U << 7)
660 #define DIALOG7212_MIXIN_L_CTRL_AMP_MUTE_EN_MASK (1U << 6)
661 #define DIALOG7212_MIXIN_L_CTRL_AMP_RAMP_EN_MASK (1U << 5)
662 #define DIALOG7212_MIXIN_L_CTRL_AMP_ZC_EN_MASK   (1U << 4)
663 #define DIALOG7212_MIXIN_L_CTRL_AMP_MIX_EN_MASK  (1U << 3)
664 
665 /* DIALOG7212_MIXIN_R_CTRL                       0x66 */
666 #define DIALOG7212_MIXIN_R_CTRL_AMP_EN_MASK      (1U << 7)
667 #define DIALOG7212_MIXIN_R_CTRL_AMP_MUTE_EN_MASK (1U << 6)
668 #define DIALOG7212_MIXIN_R_CTRL_AMP_RAMP_EN_MASK (1U << 5)
669 #define DIALOG7212_MIXIN_R_CTRL_AMP_ZC_EN_MASK   (1U << 4)
670 #define DIALOG7212_MIXIN_R_CTRL_AMP_MIX_EN_MASK  (1U << 3)
671 
672 /* DIALOG7212_ADC_L_CTRL                         0x67 */
673 #define DIALOG7212_ADC_L_CTRL_ADC_EN_MASK      (1U << 7)
674 #define DIALOG7212_ADC_L_CTRL_ADC_MUTE_EN_MASK (1U << 6)
675 #define DIALOG7212_ADC_L_CTRL_ADC_RAMP_EN_MASK (1U << 5)
676 
677 /* DIALOG7212_ADC_R_CTRL                         0x68 */
678 #define DIALOG7212_ADC_R_CTRL_ADC_EN_MASK      (1U << 7)
679 #define DIALOG7212_ADC_R_CTRL_ADC_MUTE_EN_MASK (1U << 6)
680 #define DIALOG7212_ADC_R_CTRL_ADC_RAMP_EN_MASK (1U << 5)
681 
682 /* DIALOG7212_DAC_L_CTRL                         0x69 */
683 #define DIALOG7212_DAC_L_CTRL_ADC_EN_MASK      (1U << 7)
684 #define DIALOG7212_DAC_L_CTRL_ADC_MUTE_EN_MASK (1U << 6)
685 #define DIALOG7212_DAC_L_CTRL_ADC_RAMP_EN_MASK (1U << 5)
686 
687 /* DIALOG7212_DAC_R_CTRL                         0x6A */
688 #define DIALOG7212_DAC_R_CTRL_ADC_EN_MASK      (1U << 7)
689 #define DIALOG7212_DAC_R_CTRL_ADC_MUTE_EN_MASK (1U << 6)
690 #define DIALOG7212_DAC_R_CTRL_ADC_RAMP_EN_MASK (1U << 5)
691 
692 /* DIALOG7212_HP_L_CTRL                          0x6B */
693 #define DIALOG7212_HP_L_CTRL_AMP_EN_MASK          (1U << 7)
694 #define DIALOG7212_HP_L_CTRL_AMP_MUTE_EN_MASK     (1U << 6)
695 #define DIALOG7212_HP_L_CTRL_AMP_RAMP_EN_MASK     (1U << 5)
696 #define DIALOG7212_HP_L_CTRL_AMP_ZC_EN_MASK       (1U << 4)
697 #define DIALOG7212_HP_L_CTRL_AMP_OE_MASK          (1U << 3)
698 #define DIALOG7212_HP_L_CTRL_AMP_MIN_GAIN_EN_MASK (1U << 2)
699 
700 /* DIALOG7212_HP_R_CTRL                          0x6C */
701 #define DIALOG7212_HP_R_CTRL_AMP_EN_MASK          (1U << 7)
702 #define DIALOG7212_HP_R_CTRL_AMP_MUTE_EN_MASK     (1U << 6)
703 #define DIALOG7212_HP_R_CTRL_AMP_RAMP_EN_MASK     (1U << 5)
704 #define DIALOG7212_HP_R_CTRL_AMP_ZC_EN_MASK       (1U << 4)
705 #define DIALOG7212_HP_R_CTRL_AMP_OE_MASK          (1U << 3)
706 #define DIALOG7212_HP_R_CTRL_AMP_MIN_GAIN_EN_MASK (1U << 2)
707 
708 /* DIALOG7212_LINE_CTRL                          0x6D */
709 #define DIALOG7212_LINE_CTRL_AMP_EN_MASK          (1U << 7)
710 #define DIALOG7212_LINE_CTRL_AMP_MUTE_EN_MASK     (1U << 6)
711 #define DIALOG7212_LINE_CTRL_AMP_RAMP_EN_MASK     (1U << 5)
712 #define DIALOG7212_LINE_CTRL_AMP_OE_MASK          (1U << 3)
713 #define DIALOG7212_LINE_CTRL_AMP_MIN_GAIN_EN_MASK (1U << 2)
714 
715 /* DIALOG7212_MIXOUT_L_CTRL                      0x6E */
716 #define DIALOG7212_MIXOUT_L_CTRL_AMP_EN_MASK          (1U << 7)
717 #define DIALOG7212_MIXOUT_L_CTRL_AMP_SOFT_MIX_EN_MASK (1U << 4)
718 #define DIALOG7212_MIXOUT_L_CTRL_AMP_MIX_EN_MASK      (1U << 3)
719 
720 /* DIALOG7212_MIXOUT_R_CTRL                      0x6F */
721 #define DIALOG7212_MIXOUT_R_CTRL_AMP_EN_MASK          (1U << 7)
722 #define DIALOG7212_MIXOUT_R_CTRL_AMP_SOFT_MIX_EN_MASK (1U << 4)
723 #define DIALOG7212_MIXOUT_R_CTRL_AMP_MIX_EN_MASK      (1U << 3)
724 
725 /*****************Configuration Registers*****************/
726 /* DIALOG7212_LDO_CTRL                           0x90 */
727 #define DIALOG7212_LDO_CTRL_EN_MASK            (1U << 7)
728 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_MASK  (0x30)
729 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT (4U)
730 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_05V (0U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT)
731 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_10V (1U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT)
732 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_20V (2U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT)
733 #define DIALOG7212_LDO_CTRL_LEVEL_SELECT_1_40V (3U << DIALOG7212_LDO_CTRL_LEVEL_SELECT_SHIFT)
734 
735 /* DIALOG7212_GAIN_RAMP_CTRL                     0x92 */
736 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_MASK      (0x03)
737 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT     (0U)
738 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_DIV_8  (0U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT)
739 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_DIV_16 (1U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT)
740 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_MUL_16 (2U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT)
741 #define DIALOG7212_GAIN_RAMP_CTRL_RATE_NR_MUL_32 (3U << DIALOG7212_GAIN_RAMP_CTRL_RATE_SHIFT)
742 
743 /* DIALOG7212_MIC_CONFIG                         0x93 */
744 #define DIALOG7212_MIC_CONFIG_DMIC_CLK_RATE_MASK    (1U << 2)
745 #define DIALOG7212_MIC_CONFIG_DMIC_SAMPLEPHASE_MASK (1U << 1)
746 #define DIALOG7212_MIC_CONFIG_DMIC_DATA_SEL_MASK    (1U << 0)
747 
748 /* DIALOG7212_PC_COUNT                           0x94 */
749 #define DIALOG7212_PC_COUNT_RESYNC_MASK (1U << 1)
750 #define DIALOG7212_PC_COUNT_FREERU_MASK (1U << 0)
751 
752 /* DIALOG7212_CP_VOL_THRESHOLD1                  0x95 */
753 #define DIALOG7212_CP_VOL_THRESHOLD1_VDD2_MASK  (0x3F)
754 #define DIALOG7212_CP_VOL_THRESHOLD1_VDD2_SHIFT (0U)
755 #define DIALOG7212_CP_VOL_THRESHOLD1_VDD2(x)    ((x) << DIALOG7212_CP_VOL_THRESHOLD1_VDD2_SHIFT)
756 
757 /* DIALOG7212_CP_DELAY                           0x96 */
758 #define DIALOG7212_CP_DELAY_ON_OFF_MASK          (0xC0)
759 #define DIALOG7212_CP_DELAY_ON_OFF_SHIFT         (6U)
760 #define DIALOG7212_CP_DELAY_ON_OFF_LIMITER_ON    (0U << DIALOG7212_CP_DELAY_ON_OFF_SHIFT)
761 #define DIALOG7212_CP_DELAY_ON_OFF_LIMITER_OFF   (1U << DIALOG7212_CP_DELAY_ON_OFF_SHIFT)
762 #define DIALOG7212_CP_DELAY_ON_OFF_LIMITER_AUT   (2U << DIALOG7212_CP_DELAY_ON_OFF_SHIFT)
763 #define DIALOG7212_CP_DELAY_TAU_DELAY_MASK       (0x38)
764 #define DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT      (3U)
765 #define DIALOG7212_CP_DELAY_TAU_DELAY_0MS        (0U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
766 #define DIALOG7212_CP_DELAY_TAU_DELAY_2MS        (1U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
767 #define DIALOG7212_CP_DELAY_TAU_DELAY_4MS        (2U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
768 #define DIALOG7212_CP_DELAY_TAU_DELAY_16MS       (3U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
769 #define DIALOG7212_CP_DELAY_TAU_DELAY_64MS       (4U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
770 #define DIALOG7212_CP_DELAY_TAU_DELAY_128MS      (5U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
771 #define DIALOG7212_CP_DELAY_TAU_DELAY_256MS      (6U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
772 #define DIALOG7212_CP_DELAY_TAU_DELAY_512MS      (7U << DIALOG7212_CP_DELAY_TAU_DELAY_SHIFT)
773 #define DIALOG7212_CP_DELAY_FCONTROL_MASK        (0x07)
774 #define DIALOG7212_CP_DELAY_FCONTROL_SHIFT       (0U)
775 #define DIALOG7212_CP_DELAY_FCONTROL_1MHZ        (0U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT)
776 #define DIALOG7212_CP_DELAY_FCONTROL_500KHZ      (1U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT)
777 #define DIALOG7212_CP_DELAY_FCONTROL_250KHZ      (2U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT)
778 #define DIALOG7212_CP_DELAY_FCONTROL_125KHZ      (3U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT)
779 #define DIALOG7212_CP_DELAY_FCONTROL_63KHZ       (4U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT)
780 #define DIALOG7212_CP_DELAY_FCONTROL_0HZ_OR_1MHZ (5U << DIALOG7212_CP_DELAY_FCONTROL_SHIFT)
781 
782 /* DIALOG7212_CP_DETECTOR                        0x97 */
783 #define DIALOG7212_CP_DETECTOR_DROP_MASK  (0x03)
784 #define DIALOG7212_CP_DETECTOR_DROP_SHIFT (0U)
785 #define DIALOG7212_CP_DETECTOR_DROP_25MV  (0U << DIALOG7212_CP_DETECTOR_DROP_SHIFT)
786 #define DIALOG7212_CP_DETECTOR_DROP_50MV  (1U << DIALOG7212_CP_DETECTOR_DROP_SHIFT)
787 #define DIALOG7212_CP_DETECTOR_DROP_75MV  (2U << DIALOG7212_CP_DETECTOR_DROP_SHIFT)
788 #define DIALOG7212_CP_DETECTOR_DROP_100MV (3U << DIALOG7212_CP_DETECTOR_DROP_SHIFT)
789 
790 /* DIALOG7212_DAI_OFFSET                         0x98 */
791 #define DIALOG7212_DAI_OFFSET_MASK   (0xFF)
792 #define DIALOG7212_DAI_OFFSET_SHIFT  (0U)
793 #define DIALOG7212_DAI_OFFSET_VAL(x) (x << DIALOG7212_DAI_OFFSET_SHIFT)
794 
795 /* DIALOG7212_DIG_CTRL                           0x99 */
796 #define DIALOG7212_DIG_CTRL_R_INV_MASK (1U << 7)
797 #define DIALOG7212_DIG_CTRL_L_INV_MASK (1U << 3)
798 
799 /* DIALOG7212_ALC_CTRL2                          0x9A */
800 #define DIALOG7212_ALC_CTRL2_RELEASE_MASK  (0xF0)
801 #define DIALOG7212_ALC_CTRL2_RELEASE_SHIFT (4U)
802 #define DIALOG7212_ALC_CTRL2_RELEASE(x)    ((x) << DIALOG7212_ALC_CTRL2_RELEASE_SHIFT)
803 #define DIALOG7212_ALC_CTRL2_ATTACK_MASK   (0x0F)
804 #define DIALOG7212_ALC_CTRL2_ATTACK_SHIFT  (0U)
805 #define DIALOG7212_ALC_CTRL2_ATTACK(x)     ((x) << DIALOG7212_ALC_CTRL2_RELEASE_SHIFT)
806 
807 /* DIALOG7212_ALC_CTRL3                          0x9B */
808 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_MASK    (0xC0)
809 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT   (6U)
810 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_1DIV4   (0U << DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT)
811 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_1DIV16  (1U << DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT)
812 #define DIALOG7212_ALC_CTRL3_INTEG_RELEASE_1DIV256 (2U << DIALOG7212_ALC_CTRL3_INTEG_RELEASE_SHIFT)
813 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_MASK     (0x30)
814 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT    (4U)
815 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_1DIV4    (0U << DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT)
816 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_1DIV16   (1U << DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT)
817 #define DIALOG7212_ALC_CTRL3_INTEG_ATTACK_1DIV256  (2U << DIALOG7212_ALC_CTRL3_INTEG_ATTACK_SHIFT)
818 #define DIALOG7212_ALC_CTRL3_HOLD_MASK             (0x0F)
819 #define DIALOG7212_ALC_CTRL3_HOLD_SHIFT            (0U)
820 #define DIALOG7212_ALC_CTRL3_HOLD(x)               ((x) << DIALOG7212_ALC_CTRL3_HOLD_SHIFT)
821 
822 /* DIALOG7212_ALC_NOISE                          0x9C */
823 #define DIALOG7212_ALC_NOISE_MASK   (0x3F)
824 #define DIALOG7212_ALC_NOISE_SHIFT  (0U)
825 #define DIALOG7212_ALC_NOISE_VAL(x) ((x) << DIALOG7212_ALC_NOISE_SHIFT)
826 
827 /* DIALOG7212_ALC_TARGET_MIN                     0x9D */
828 #define DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN_MASK  (0x3F)
829 #define DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN_SHIFT (0U)
830 #define DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN(x)    ((x) << DIALOG7212_ALC_TARGET_MIN_THRESHOLD_MIN_SHIFT)
831 
832 /* DIALOG7212_ALC_TARGET_MAX                     0x9E */
833 #define DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MAX_MASK  (0x3F)
834 #define DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MAX_SHIFT (0U)
835 #define DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MAX(x)    ((x) << DIALOG7212_ALC_TARGET_MAX_THRESHOLD_MIN_SHIFT)
836 
837 /* DIALOG7212_ALC_GAIN_LIMITS                    0x9F */
838 #define DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX_MASK   (0xF0)
839 #define DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX_SHIFT  (4U)
840 #define DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX(x)     ((x) << DIALOG7212_ALC_GAIN_LIMITS_GAIN_MAX_SHIFT)
841 #define DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX_MASK  (0x0F)
842 #define DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX_SHIFT (0U)
843 #define DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX(x)    ((x) << DIALOG7212_ALC_GAIN_LIMITS_ATTEN_MAX_SHIFT)
844 
845 /* DIALOG7212_ALC_ANA_GAIN_LIMITS                0xA0 */
846 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_MASK  (0x70)
847 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT (4U)
848 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_0DB   (1U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT)
849 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_6DB   (2U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT)
850 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_12DB  (3U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT)
851 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_18DB  (4U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT)
852 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_24DB  (5U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT)
853 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_30DB  (6U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT)
854 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_36DB  (7U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MAX_SHIFT)
855 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_MASK  (0x07)
856 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT (0U)
857 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_0DB   (1U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT)
858 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_6DB   (2U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT)
859 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_12DB  (3U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT)
860 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_18DB  (4U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT)
861 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_24DB  (5U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT)
862 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_30DB  (6U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT)
863 #define DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_36DB  (7U << DIALOG7212_ALC_ANA_GAIN_LIMITS_MIN_SHIFT)
864 
865 /* DIALOG7212_ALC_ANTICLIP_CTRL                  0xA1 */
866 #define DIALOG7212_ALC_ANTICLIP_CTRL_EN_MASK (1U << 7)
867 
868 /* DIALOG7212_ALC_ANTICLIP_LEVEL                 0xA2 */
869 #define DIALOG7212_ALC_ANTICLIP_LEVEL_MASK   (0x7F)
870 #define DIALOG7212_ALC_ANTICLIP_LEVEL_SHIFT  (0U)
871 #define DIALOG7212_ALC_ANTICLIP_LEVEL_VAL(x) ((x) << DIALOG7212_ALC_ANTICLIP_LEVEL_SHIFT)
872 
873 /* DIALOG7212_DAC_NG_SETUP_TIME                  0xAF */
874 #define DIALOG7212_DAC_NG_SETUP_TIME_RAMPDN_RATE_MASK (1U << 3)
875 #define DIALOG7212_DAC_NG_SETUP_TIME_RAMPUP_RATE_MASK (1U << 2)
876 #define DIALOG7212_DAC_NG_SETUP_TIME_MASK             (0x03)
877 #define DIALOG7212_DAC_NG_SETUP_TIME_SHIFT            (0U)
878 #define DIALOG7212_DAC_NG_SETUP_TIME_256              (1U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT)
879 #define DIALOG7212_DAC_NG_SETUP_TIME_512              (2U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT)
880 #define DIALOG7212_DAC_NG_SETUP_TIME_1024             (3U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT)
881 #define DIALOG7212_DAC_NG_SETUP_TIME_2048             (4U << DIALOG7212_DAC_NG_SETUP_TIME_SHIFT)
882 
883 /* DIALOG7212_DAC_NG_OFF_THRESH                  0xB0 */
884 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_MASK  (0x07)
885 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT (0U)
886 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N90DB (0U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
887 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N84DB (1U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
888 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N78DB (2U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
889 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N72DB (3U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
890 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N66DB (4U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
891 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N60DB (5U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
892 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N54DB (6U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
893 #define DIALOG7212_DAC_NG_OFF_THRESHOLD_N48DB (7U << DIALOG7212_DAC_NG_OFF_THRESHOLD_SHIFT)
894 
895 /* DIALOG7212_DAC_NG_ON_THRESH                   0xB1 */
896 #define DIALOG7212_DAC_NG_ON_THRESHOLD_MASK  (0x07)
897 #define DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT (0U)
898 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N90DB (0U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
899 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N84DB (1U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
900 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N78DB (2U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
901 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N72DB (3U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
902 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N66DB (4U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
903 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N60DB (5U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
904 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N54DB (6U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
905 #define DIALOG7212_DAC_NG_ON_THRESHOLD_N48DB (7U << DIALOG7212_DAC_NG_ON_THRESHOLD_SHIFT)
906 
907 /* DIALOG7212_DAC_NG_CTRL                        0xB2 */
908 #define DIALOG7212_DAC_NG_CTRL_EN_MASK (1U << 7)
909 
910 /*************Tone Generation & Beep Registers************/
911 /* DIALOG7212_TONE_GEN_CFG1                      0xB4 */
912 #define DIALOG7212_TONE_GEN_CFG1_START_STOPN_MASK (1U << 7)
913 #define DIALOG7212_TONE_GEN_CFG1_DMTF_EN_MASK     (1U << 4)
914 #define DIALOG7212_TONE_GEN_CFG1_DMTF_REG_MASK    (0x0F)
915 #define DIALOG7212_TONE_GEN_CFG1_DMTF_REG_SHIFT   (0U)
916 #define DIALOG7212_TONE_GEN_CFG1_DMTF_REG(x)      ((x) << DIALOG7212_TONE_GEN_CFG1_DMTF_REG_SHIFT)
917 
918 /* DIALOG7212_TONE_GEN_CFG2                      0xB5 */
919 #define DIALOG7212_TONE_GEN_CFG2_GAIN_MASK         (0xF0)
920 #define DIALOG7212_TONE_GEN_CFG2_GAIN_SHIFT        (4U)
921 #define DIALOG7212_TONE_GEN_CFG2_GAIN(x)           ((x) << DIALOG7212_TONE_GEN_CFG2_GAIN_SHIFT)
922 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_MASK      (0x03)
923 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT     (0U)
924 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SUM__BOTH (0U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT)
925 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SWG1_ONLY (1U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT)
926 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SWG2_ONLY (2U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT)
927 #define DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SUM_BOTH  (3U << DIALOG7212_TONE_GEN_CFG2_SWG_SEL_SHIFT)
928 
929 /* DIALOG7212_TONE_GEN_CYCLES                    0xB6 */
930 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_MASK     (0x07)
931 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT    (0U)
932 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_1        (0U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT)
933 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_2        (1U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT)
934 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_4        (2U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT)
935 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_8        (3U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT)
936 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_16       (4U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT)
937 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_32       (5U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT)
938 #define DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_INFINITE (6U << DIALOG7212_TONE_GEN_CYCLES_BEEP_CYCLES_SHIFT)
939 
940 /* DIALOG7212_TONE_GEN_FREQ1_L                   0xB7 */
941 #define DIALOG7212_TONE_GEN_FREQ1_L_MASK   (0xFF)
942 #define DIALOG7212_TONE_GEN_FREQ1_L_SHIFT  (0U)
943 #define DIALOG7212_TONE_GEN_FREQ1_L_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ1_L_SHIFT)
944 
945 /* DIALOG7212_TONE_GEN_FREQ1_U                   0xB8 */
946 #define DIALOG7212_TONE_GEN_FREQ1_U_MASK   (0xFF)
947 #define DIALOG7212_TONE_GEN_FREQ1_U_SHIFT  (0U)
948 #define DIALOG7212_TONE_GEN_FREQ1_U_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ1_U_SHIFT)
949 
950 /* DIALOG7212_TONE_GEN_FREQ2_L                   0xB9 */
951 #define DIALOG7212_TONE_GEN_FREQ2_L_MASK   (0xFF)
952 #define DIALOG7212_TONE_GEN_FREQ2_L_SHIFT  (0U)
953 #define DIALOG7212_TONE_GEN_FREQ2_L_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ2_L_SHIFT)
954 
955 /* DIALOG7212_TONE_GEN_FREQ2_U                   0xBA */
956 #define DIALOG7212_TONE_GEN_FREQ2_U_MASK   (0xFF)
957 #define DIALOG7212_TONE_GEN_FREQ2_U_SHIFT  (0U)
958 #define DIALOG7212_TONE_GEN_FREQ2_U_VAL(x) ((x) << DIALOG7212_TONE_GEN_FREQ2_U_SHIFT)
959 
960 /* DIALOG7212_TONE_GEN_ON_PER                    0xBB */
961 #define DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER_MASK  (0x3F)
962 #define DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER_SHIFT (0U)
963 #define DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER(x)    ((x) << DIALOG7212_TONE_GEN_ON_PER_BEEP_ON_PER_SHIFT)
964 
965 /* DIALOG7212_TONE_GEN_OFF_PER                   0xBC */
966 #define DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER_MASK  (0x3F)
967 #define DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER_SHIFT (0U)
968 #define DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER(x)    ((x) << DIALOG7212_TONE_GEN_OFF_PER_BEEP_OFF_PER_SHIFT)
969 
970 /*************System Controller Registers(2)*************/
971 /* DIALOG7212_SYSTEM_STATUS                      0xE0 */
972 #define DIALOG7212_SYSTEM_STATUS_SC2_BUSY_MASK (1U << 1)
973 #define DIALOG7212_SYSTEM_STATUS_SC1_BUSY_MASK (1U << 0)
974 
975 /* DIALOG7212_SYSTEM_ACTIVE                      0xFD */
976 #define DIALOG7212_SYSTEM_ACTIVE_MASK (1U << 0)
977 
978 /*! @brief da7212 volume setting range */
979 #define DA7212_HEADPHONE_MAX_VOLUME_VALUE 0x3FU
980 
981 /*! @brief DA7212 input source select */
982 typedef enum _da7212_Input
983 {
984     kDA7212_Input_AUX = 0x0, /*!< Input from AUX */
985     kDA7212_Input_MIC1_Dig,  /*!< Input from MIC1 Digital */
986     kDA7212_Input_MIC1_An,   /*!< Input from Mic1 Analog */
987     kDA7212_Input_MIC2,      /*!< Input from MIC2 */
988     kDA7212_Input_MAX
989 } da7212_Input_t;
990 
991 /*! @brief da7212 play channel  */
992 enum _da7212_play_channel
993 {
994     kDA7212_HeadphoneLeft  = 1U, /*!< headphone left */
995     kDA7212_HeadphoneRight = 2U, /*!< headphone right */
996     kDA7212_Speaker        = 4U, /*!< speaker channel */
997 };
998 
999 /*! @brief DA7212 output device select */
1000 typedef enum _da7212_Output
1001 {
1002     kDA7212_Output_HP = 0x0, /*!< Output to headphone */
1003     kDA7212_Output_SP,       /*!< Output to speaker */
1004     kDA7212_Output_MAX
1005 } da7212_Output_t;
1006 
1007 /*! @brief DA7212 module */
1008 enum _da7212_module
1009 {
1010     kDA7212_ModuleADC,       /*!< module ADC*/
1011     kDA7212_ModuleDAC,       /*!< module DAC */
1012     kDA7212_ModuleHeadphone, /*!< module headphone */
1013     kDA7212_ModuleSpeaker,   /*!< module speaker */
1014 };
1015 
1016 /*! @brief DA7212 functionality */
1017 typedef enum _da7212_dac_source
1018 {
1019     kDA7212_DACSourceADC         = 0x0U, /*!< DAC source from ADC */
1020     kDA7212_DACSourceInputStream = 0x3U  /*!< DAC source from  */
1021 } da7212_dac_source_t;
1022 
1023 /*! @brief DA7212 volume */
1024 typedef enum _da7212_volume
1025 {
1026     kDA7212_DACGainMute  = 0x7,  /*!< Mute DAC */
1027     kDA7212_DACGainM72DB = 0x17, /*!< DAC volume -72db */
1028     kDA7212_DACGainM60DB = 0x1F, /*!< DAC volume -60db */
1029     kDA7212_DACGainM54DB = 0x27, /*!< DAC volume -54db */
1030     kDA7212_DACGainM48DB = 0x2F, /*!< DAC volume -48db */
1031     kDA7212_DACGainM42DB = 0x37, /*!< DAC volume -42db */
1032     kDA7212_DACGainM36DB = 0x3F, /*!< DAC volume -36db */
1033     kDA7212_DACGainM30DB = 0x47, /*!< DAC volume -30db */
1034     kDA7212_DACGainM24DB = 0x4F, /*!< DAC volume -24db */
1035     kDA7212_DACGainM18DB = 0x57, /*!< DAC volume -18db */
1036     kDA7212_DACGainM12DB = 0x5F, /*!< DAC volume -12db */
1037     kDA7212_DACGainM6DB  = 0x67, /*!< DAC volume -6bb */
1038     kDA7212_DACGain0DB   = 0x6F, /*!< DAC volume +0db */
1039     kDA7212_DACGain6DB   = 0x77, /*!< DAC volume +6db */
1040     kDA7212_DACGain12DB  = 0x7F  /*!< DAC volume +12db */
1041 } da7212_volume_t;
1042 
1043 /*!
1044  * @brief The audio data transfer protocol choice.
1045  */
1046 typedef enum _da7212_protocol
1047 {
1048     kDA7212_BusI2S = 0x0,      /*!< I2S Type */
1049     kDA7212_BusLeftJustified,  /*!< Left justified */
1050     kDA7212_BusRightJustified, /*!< Right Justified */
1051     kDA7212_BusDSPMode,        /*!< DSP mode */
1052 } da7212_protocol_t;
1053 
1054 /*! @brief da7212 system clock source */
1055 typedef enum _da7212_sys_clk_source
1056 {
1057     kDA7212_SysClkSourceMCLK = 0U,       /*!< da7212 system clock soure from MCLK */
1058     kDA7212_SysClkSourcePLL  = 1U << 14, /*!< da7212 system clock soure from pLL */
1059 } da7212_sys_clk_source_t;
1060 
1061 /*! @brief DA7212 pll clock source */
1062 typedef enum _da7212_pll_clk_source
1063 {
1064     kDA7212_PLLClkSourceMCLK = 0U, /*!< DA7212 PLL clock source from MCLK */
1065 } da7212_pll_clk_source_t;
1066 
1067 /*! @brief DA7212 output clock frequency */
1068 typedef enum _da7212_pll_out_clk
1069 {
1070     kDA7212_PLLOutputClk11289600 = 11289600U, /*!< output 112896000U */
1071     kDA7212_PLLOutputClk12288000 = 12288000U, /*!< output 12288000U */
1072 } da7212_pll_out_clk_t;
1073 
1074 /*!@brief master mode bits per frame */
1075 typedef enum _da7212_master_bits
1076 {
1077     kDA7212_MasterBits32PerFrame  = 0U, /*!< master mode bits32 per frame */
1078     kDA7212_MasterBits64PerFrame  = 1U, /*!< master mode bits64 per frame */
1079     kDA7212_MasterBits128PerFrame = 2U, /*!< master mode bits128 per frame */
1080     kDA7212_MasterBits256PerFrame = 3U, /*!< master mode bits256 per frame */
1081 } da7212_master_bits_t;
1082 
1083 /*! @brief da7212 pll configuration */
1084 typedef struct _da7212_pll_config
1085 {
1086     da7212_pll_clk_source_t source;      /*!< pll reference clock source */
1087     uint32_t refClock_HZ;                /*!< pll reference clock frequency */
1088     da7212_pll_out_clk_t outputClock_HZ; /*!< pll output clock frequency  */
1089 } da7212_pll_config_t;
1090 
1091 /*! @brief da7212 audio format */
1092 typedef struct _da7212_audio_format
1093 {
1094     uint32_t mclk_HZ;    /*!< master clock frequency */
1095     uint32_t sampleRate; /*!< sample rate */
1096     uint32_t bitWidth;   /*!< bit width */
1097     bool isBclkInvert;   /*!< bit clock intervet */
1098 } da7212_audio_format_t;
1099 
1100 /*! @brief DA7212 configure structure */
1101 typedef struct da7212_config
1102 {
1103     bool isMaster;                        /*!< If DA7212 is master, true means master, false means slave. */
1104     da7212_protocol_t protocol;           /*!< Audio bus format, can be I2S, LJ, RJ or DSP mode. */
1105     da7212_dac_source_t dacSource;        /*!< DA7212 data source. */
1106     da7212_audio_format_t format;         /*!< audio format */
1107     uint8_t slaveAddress;                 /*!< device address */
1108     codec_i2c_config_t i2cConfig;         /*!< i2c configuration */
1109 
1110     da7212_sys_clk_source_t sysClkSource; /*!< system clock source */
1111     da7212_pll_config_t *pll;             /*!< pll configuration */
1112     da7212_Input_t inputSource;           /*!< AD212 input source*/
1113 } da7212_config_t;
1114 
1115 /*! @brief da7212 codec handler
1116  */
1117 typedef struct _da7212_handle
1118 {
1119     da7212_config_t *config;                    /*!< da7212 config pointer */
1120     uint8_t i2cHandle[DA7212_I2C_HANDLER_SIZE]; /*!< i2c handle */
1121 } da7212_handle_t;
1122 
1123 /*******************************************************************************
1124  * API
1125  ******************************************************************************/
1126 
1127 #if defined(__cplusplus)
1128 extern "C" {
1129 #endif
1130 
1131 /*!
1132  * @brief DA7212 initialize function.
1133  *
1134  * @param handle DA7212 handle pointer.
1135  * @param codecConfig Codec configure structure. This parameter can be NULL, if NULL, set as default settings.
1136  * The default setting:
1137  * @code
1138  * sgtl_init_t codec_config
1139  * codec_config.route = kDA7212_RoutePlayback
1140  * codec_config.bus = kDA7212_BusI2S
1141  * codec_config.isMaster = false
1142  * @endcode
1143  */
1144 status_t DA7212_Init(da7212_handle_t *handle, da7212_config_t *codecConfig);
1145 
1146 /*!
1147  * @brief Set DA7212 audio format.
1148  *
1149  * @param handle DA7212 handle pointer.
1150  * @param masterClock_Hz Master clock frequency in Hz. If DA7212 is slave, use the frequency of master, if DA7212 as
1151  * master, it should be 1228000 while sample rate frequency is 8k/12K/16K/24K/32K/48K/96K, 11289600 whie sample rate is
1152  * 11.025K/22.05K/44.1K
1153  * @param sampleRate_Hz Sample rate frequency in Hz.
1154  * @param dataBits How many bits in a word of a audio frame, DA7212 only supports 16/20/24/32 bits.
1155  */
1156 status_t DA7212_ConfigAudioFormat(da7212_handle_t *handle,
1157                                   uint32_t masterClock_Hz,
1158                                   uint32_t sampleRate_Hz,
1159                                   uint32_t dataBits);
1160 
1161 /*!
1162  * @brief DA7212 set PLL configuration
1163  * This function will enable the GPIO1 FLL clock output function, so user can see
1164  * the generated fll output clock frequency from WM8904 GPIO1.
1165  *
1166  * @param handle DA7212 handler pointer.
1167  * @param config PLL configuration pointer.
1168  *
1169  */
1170 status_t DA7212_SetPLLConfig(da7212_handle_t *handle, da7212_pll_config_t *config);
1171 
1172 /*!
1173  * @brief Set DA7212 playback volume.
1174  *
1175  * @param handle DA7212 handle pointer.
1176  * @param volume The volume of playback.
1177  */
1178 void DA7212_ChangeHPVolume(da7212_handle_t *handle, da7212_volume_t volume);
1179 
1180 /*!
1181  * @brief Mute or unmute DA7212.
1182  *
1183  * @param handle DA7212 handle pointer.
1184  * @param isMuted True means mute, false means unmute.
1185  */
1186 void DA7212_Mute(da7212_handle_t *handle, bool isMuted);
1187 
1188 /*!
1189  * @brief Set the input data source of DA7212.
1190  *
1191  * @param handle DA7212 handle pointer.
1192  * @param DA7212_Input Input data source.
1193  */
1194 void DA7212_ChangeInput(da7212_handle_t *handle, da7212_Input_t DA7212_Input);
1195 
1196 /*!
1197  * @brief Set the output device of DA7212.
1198  *
1199  * @param handle DA7212 handle pointer.
1200  * @param DA7212_Output Output device of DA7212.
1201  */
1202 void DA7212_ChangeOutput(da7212_handle_t *handle, da7212_Output_t DA7212_Output);
1203 
1204 /*!
1205  * @brief Set module volume.
1206  *
1207  * @param handle DA7212 handle pointer.
1208  * @param channel shoule be a value of _da7212_channel.
1209  * @param volume volume range 0 - 0x3F mapped to range -57dB - 6dB.
1210  */
1211 status_t DA7212_SetChannelVolume(da7212_handle_t *handle, uint32_t channel, uint32_t volume);
1212 
1213 /*!
1214  * @brief Set module mute.
1215  *
1216  * @param handle DA7212 handle pointer.
1217  * @param channel shoule be a value of _da7212_channel.
1218  * @param isMute true is mute, false is unmute.
1219  */
1220 status_t DA7212_SetChannelMute(da7212_handle_t *handle, uint32_t channel, bool isMute);
1221 
1222 /*!
1223  * @brief Set protocol for DA7212.
1224  *
1225  * @param handle DA7212 handle pointer.
1226  * @param protocol da7212_protocol_t.
1227  */
1228 status_t DA7212_SetProtocol(da7212_handle_t *handle, da7212_protocol_t protocol);
1229 
1230 /*!
1231  * @brief Set master mode bits per frame for DA7212.
1232  *
1233  * @param handle DA7212 handle pointer.
1234  * @param bitWidth audio data bitwidth.
1235  */
1236 status_t DA7212_SetMasterModeBits(da7212_handle_t *handle, uint32_t bitWidth);
1237 
1238 /*!
1239  * @brief Write a register for DA7212.
1240  *
1241  * @param handle DA7212 handle pointer.
1242  * @param u8Register DA7212 register address to be written.
1243  * @param u8RegisterData Data to be written into regsiter
1244  */
1245 status_t DA7212_WriteRegister(da7212_handle_t *handle, uint8_t u8Register, uint8_t u8RegisterData);
1246 
1247 /*!
1248  * @brief Get a register value of DA7212.
1249  *
1250  * @param handle DA7212 handle pointer.
1251  * @param u8Register DA7212 register address to be read.
1252  * @param pu8RegisterData Pointer where the read out value to be stored.
1253  */
1254 status_t DA7212_ReadRegister(da7212_handle_t *handle, uint8_t u8Register, uint8_t *pu8RegisterData);
1255 
1256 /*!
1257  * @brief Deinit DA7212.
1258  *
1259  * @param handle DA7212 handle pointer.
1260  */
1261 status_t DA7212_Deinit(da7212_handle_t *handle);
1262 
1263 #if defined(__cplusplus)
1264 }
1265 #endif
1266 
1267 /*! @} */
1268 #endif /* _FSL_DIALOG7212_H_ */
1269