xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/rt5663.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * rt5663.h  --  RT5663 ALSA SoC audio driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright 2016 Realtek Microelectronics
6*4882a593Smuzhiyun  * Author: Jack Yu <jack.yu@realtek.com>
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef __RT5663_H__
10*4882a593Smuzhiyun #define __RT5663_H__
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #include <sound/rt5663.h>
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /* Info */
15*4882a593Smuzhiyun #define RT5663_RESET				0x0000
16*4882a593Smuzhiyun #define RT5663_VENDOR_ID			0x00fd
17*4882a593Smuzhiyun #define RT5663_VENDOR_ID_1			0x00fe
18*4882a593Smuzhiyun #define RT5663_VENDOR_ID_2			0x00ff
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define RT5663_LOUT_CTRL			0x0001
21*4882a593Smuzhiyun #define RT5663_HP_AMP_2				0x0003
22*4882a593Smuzhiyun #define RT5663_MONO_OUT				0x0004
23*4882a593Smuzhiyun #define RT5663_MONO_GAIN			0x0007
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define RT5663_AEC_BST				0x000b
26*4882a593Smuzhiyun #define RT5663_IN1_IN2				0x000c
27*4882a593Smuzhiyun #define RT5663_IN3_IN4				0x000d
28*4882a593Smuzhiyun #define RT5663_INL1_INR1			0x000f
29*4882a593Smuzhiyun #define RT5663_CBJ_TYPE_2			0x0011
30*4882a593Smuzhiyun #define RT5663_CBJ_TYPE_3			0x0012
31*4882a593Smuzhiyun #define RT5663_CBJ_TYPE_4			0x0013
32*4882a593Smuzhiyun #define RT5663_CBJ_TYPE_5			0x0014
33*4882a593Smuzhiyun #define RT5663_CBJ_TYPE_8			0x0017
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun /* I/O - ADC/DAC/DMIC */
36*4882a593Smuzhiyun #define RT5663_DAC3_DIG_VOL			0x001a
37*4882a593Smuzhiyun #define RT5663_DAC3_CTRL			0x001b
38*4882a593Smuzhiyun #define RT5663_MONO_ADC_DIG_VOL			0x001d
39*4882a593Smuzhiyun #define RT5663_STO2_ADC_DIG_VOL			0x001e
40*4882a593Smuzhiyun #define RT5663_MONO_ADC_BST_GAIN		0x0020
41*4882a593Smuzhiyun #define RT5663_STO2_ADC_BST_GAIN		0x0021
42*4882a593Smuzhiyun #define RT5663_SIDETONE_CTRL			0x0024
43*4882a593Smuzhiyun /* Mixer - D-D */
44*4882a593Smuzhiyun #define RT5663_MONO1_ADC_MIXER			0x0027
45*4882a593Smuzhiyun #define RT5663_STO2_ADC_MIXER			0x0028
46*4882a593Smuzhiyun #define RT5663_MONO_DAC_MIXER			0x002b
47*4882a593Smuzhiyun #define RT5663_DAC2_SRC_CTRL			0x002e
48*4882a593Smuzhiyun #define RT5663_IF_3_4_DATA_CTL			0x002f
49*4882a593Smuzhiyun #define RT5663_IF_5_DATA_CTL			0x0030
50*4882a593Smuzhiyun #define RT5663_PDM_OUT_CTL			0x0031
51*4882a593Smuzhiyun #define RT5663_PDM_I2C_DATA_CTL1		0x0032
52*4882a593Smuzhiyun #define RT5663_PDM_I2C_DATA_CTL2		0x0033
53*4882a593Smuzhiyun #define RT5663_PDM_I2C_DATA_CTL3		0x0034
54*4882a593Smuzhiyun #define RT5663_PDM_I2C_DATA_CTL4		0x0035
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun /*Mixer - Analog*/
57*4882a593Smuzhiyun #define RT5663_RECMIX1_NEW			0x003a
58*4882a593Smuzhiyun #define RT5663_RECMIX1L_0			0x003b
59*4882a593Smuzhiyun #define RT5663_RECMIX1L				0x003c
60*4882a593Smuzhiyun #define RT5663_RECMIX1R_0			0x003d
61*4882a593Smuzhiyun #define RT5663_RECMIX1R				0x003e
62*4882a593Smuzhiyun #define RT5663_RECMIX2_NEW			0x003f
63*4882a593Smuzhiyun #define RT5663_RECMIX2_L_2			0x0041
64*4882a593Smuzhiyun #define RT5663_RECMIX2_R			0x0042
65*4882a593Smuzhiyun #define RT5663_RECMIX2_R_2			0x0043
66*4882a593Smuzhiyun #define RT5663_CALIB_REC_LR			0x0044
67*4882a593Smuzhiyun #define RT5663_ALC_BK_GAIN			0x0049
68*4882a593Smuzhiyun #define RT5663_MONOMIX_GAIN			0x004a
69*4882a593Smuzhiyun #define RT5663_MONOMIX_IN_GAIN			0x004b
70*4882a593Smuzhiyun #define RT5663_OUT_MIXL_GAIN			0x004d
71*4882a593Smuzhiyun #define RT5663_OUT_LMIX_IN_GAIN			0x004e
72*4882a593Smuzhiyun #define RT5663_OUT_RMIX_IN_GAIN			0x004f
73*4882a593Smuzhiyun #define RT5663_OUT_RMIX_IN_GAIN1		0x0050
74*4882a593Smuzhiyun #define RT5663_LOUT_MIXER_CTRL			0x0052
75*4882a593Smuzhiyun /* Power */
76*4882a593Smuzhiyun #define RT5663_PWR_VOL				0x0067
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #define RT5663_ADCDAC_RST			0x006d
79*4882a593Smuzhiyun /* Format - ADC/DAC */
80*4882a593Smuzhiyun #define RT5663_I2S34_SDP			0x0071
81*4882a593Smuzhiyun #define RT5663_I2S5_SDP				0x0072
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun /* Function - Analog */
84*4882a593Smuzhiyun #define RT5663_ASRC_3				0x0085
85*4882a593Smuzhiyun #define RT5663_ASRC_6				0x0088
86*4882a593Smuzhiyun #define RT5663_ASRC_7				0x0089
87*4882a593Smuzhiyun #define RT5663_PLL_TRK_13			0x0099
88*4882a593Smuzhiyun #define RT5663_I2S_M_CLK_CTL			0x00a0
89*4882a593Smuzhiyun #define RT5663_FDIV_I2S34_M_CLK			0x00a1
90*4882a593Smuzhiyun #define RT5663_FDIV_I2S34_M_CLK2		0x00a2
91*4882a593Smuzhiyun #define RT5663_FDIV_I2S5_M_CLK			0x00a3
92*4882a593Smuzhiyun #define RT5663_FDIV_I2S5_M_CLK2			0x00a4
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun /* Function - Digital */
95*4882a593Smuzhiyun #define RT5663_V2_IRQ_4				0x00b9
96*4882a593Smuzhiyun #define RT5663_GPIO_3				0x00c2
97*4882a593Smuzhiyun #define RT5663_GPIO_4				0x00c3
98*4882a593Smuzhiyun #define RT5663_GPIO_STA2			0x00c4
99*4882a593Smuzhiyun #define RT5663_HP_AMP_DET1			0x00d0
100*4882a593Smuzhiyun #define RT5663_HP_AMP_DET2			0x00d1
101*4882a593Smuzhiyun #define RT5663_HP_AMP_DET3			0x00d2
102*4882a593Smuzhiyun #define RT5663_MID_BD_HP_AMP			0x00d3
103*4882a593Smuzhiyun #define RT5663_LOW_BD_HP_AMP			0x00d4
104*4882a593Smuzhiyun #define RT5663_SOF_VOL_ZC2			0x00da
105*4882a593Smuzhiyun #define RT5663_ADC_STO2_ADJ1			0x00ee
106*4882a593Smuzhiyun #define RT5663_ADC_STO2_ADJ2			0x00ef
107*4882a593Smuzhiyun /* General Control */
108*4882a593Smuzhiyun #define RT5663_A_JD_CTRL			0x00f0
109*4882a593Smuzhiyun #define RT5663_JD1_TRES_CTRL			0x00f1
110*4882a593Smuzhiyun #define RT5663_JD2_TRES_CTRL			0x00f2
111*4882a593Smuzhiyun #define RT5663_V2_JD_CTRL2			0x00f7
112*4882a593Smuzhiyun #define RT5663_DUM_REG_2			0x00fb
113*4882a593Smuzhiyun #define RT5663_DUM_REG_3			0x00fc
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun 
116*4882a593Smuzhiyun #define RT5663_DACADC_DIG_VOL2			0x0101
117*4882a593Smuzhiyun #define RT5663_DIG_IN_PIN2			0x0133
118*4882a593Smuzhiyun #define RT5663_PAD_DRV_CTL1			0x0136
119*4882a593Smuzhiyun #define RT5663_SOF_RAM_DEPOP			0x0138
120*4882a593Smuzhiyun #define RT5663_VOL_TEST				0x013f
121*4882a593Smuzhiyun #define RT5663_MONO_DYNA_1			0x0170
122*4882a593Smuzhiyun #define RT5663_MONO_DYNA_2			0x0171
123*4882a593Smuzhiyun #define RT5663_MONO_DYNA_3			0x0172
124*4882a593Smuzhiyun #define RT5663_MONO_DYNA_4			0x0173
125*4882a593Smuzhiyun #define RT5663_MONO_DYNA_5			0x0174
126*4882a593Smuzhiyun #define RT5663_MONO_DYNA_6			0x0175
127*4882a593Smuzhiyun #define RT5663_STO1_SIL_DET			0x0190
128*4882a593Smuzhiyun #define RT5663_MONOL_SIL_DET			0x0191
129*4882a593Smuzhiyun #define RT5663_MONOR_SIL_DET			0x0192
130*4882a593Smuzhiyun #define RT5663_STO2_DAC_SIL			0x0193
131*4882a593Smuzhiyun #define RT5663_PWR_SAV_CTL1			0x0194
132*4882a593Smuzhiyun #define RT5663_PWR_SAV_CTL2			0x0195
133*4882a593Smuzhiyun #define RT5663_PWR_SAV_CTL3			0x0196
134*4882a593Smuzhiyun #define RT5663_PWR_SAV_CTL4			0x0197
135*4882a593Smuzhiyun #define RT5663_PWR_SAV_CTL5			0x0198
136*4882a593Smuzhiyun #define RT5663_PWR_SAV_CTL6			0x0199
137*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL1			0x01a0
138*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL2			0x01a1
139*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL3			0x01a2
140*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL4			0x01a3
141*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL5			0x01a4
142*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL6			0x01a5
143*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL7			0x01a6
144*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL_ST1			0x01a7
145*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL_ST2			0x01a8
146*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL_ST3			0x01a9
147*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL_ST4			0x01aa
148*4882a593Smuzhiyun #define RT5663_MONO_AMP_CAL_ST5			0x01ab
149*4882a593Smuzhiyun #define RT5663_V2_HP_IMP_SEN_13			0x01b9
150*4882a593Smuzhiyun #define RT5663_V2_HP_IMP_SEN_14			0x01ba
151*4882a593Smuzhiyun #define RT5663_V2_HP_IMP_SEN_6			0x01bb
152*4882a593Smuzhiyun #define RT5663_V2_HP_IMP_SEN_7			0x01bc
153*4882a593Smuzhiyun #define RT5663_V2_HP_IMP_SEN_8			0x01bd
154*4882a593Smuzhiyun #define RT5663_V2_HP_IMP_SEN_9			0x01be
155*4882a593Smuzhiyun #define RT5663_V2_HP_IMP_SEN_10			0x01bf
156*4882a593Smuzhiyun #define RT5663_HP_LOGIC_3			0x01dc
157*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST10			0x01f3
158*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST11			0x01f4
159*4882a593Smuzhiyun #define RT5663_PRO_REG_TBL_4			0x0203
160*4882a593Smuzhiyun #define RT5663_PRO_REG_TBL_5			0x0204
161*4882a593Smuzhiyun #define RT5663_PRO_REG_TBL_6			0x0205
162*4882a593Smuzhiyun #define RT5663_PRO_REG_TBL_7			0x0206
163*4882a593Smuzhiyun #define RT5663_PRO_REG_TBL_8			0x0207
164*4882a593Smuzhiyun #define RT5663_PRO_REG_TBL_9			0x0208
165*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_1			0x0210
166*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_2			0x0211
167*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_3			0x0212
168*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_4			0x0213
169*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_5			0x0214
170*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_6			0x0215
171*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_7			0x0216
172*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_8			0x0217
173*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_9			0x0218
174*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_10			0x0219
175*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_11			0x021a
176*4882a593Smuzhiyun #define RT5663_SAR_ADC_INL_12			0x021b
177*4882a593Smuzhiyun #define RT5663_DRC_CTRL_1			0x02ff
178*4882a593Smuzhiyun #define RT5663_DRC1_CTRL_2			0x0301
179*4882a593Smuzhiyun #define RT5663_DRC1_CTRL_3			0x0302
180*4882a593Smuzhiyun #define RT5663_DRC1_CTRL_4			0x0303
181*4882a593Smuzhiyun #define RT5663_DRC1_CTRL_5			0x0304
182*4882a593Smuzhiyun #define RT5663_DRC1_CTRL_6			0x0305
183*4882a593Smuzhiyun #define RT5663_DRC1_HD_CTRL_1			0x0306
184*4882a593Smuzhiyun #define RT5663_DRC1_HD_CTRL_2			0x0307
185*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_1			0x0310
186*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_2			0x0311
187*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_3			0x0312
188*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_4			0x0313
189*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_5			0x0314
190*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_6			0x0315
191*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_7			0x0316
192*4882a593Smuzhiyun #define RT5663_DRC1_PRI_REG_8			0x0317
193*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_1			0x0330
194*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_2			0x0331
195*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_3			0x0332
196*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_4			0x0333
197*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_5			0x0334
198*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_6			0x0335
199*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_7			0x0336
200*4882a593Smuzhiyun #define RT5663_ALC_PGA_CTL_8			0x0337
201*4882a593Smuzhiyun #define RT5663_ALC_PGA_REG_1			0x0338
202*4882a593Smuzhiyun #define RT5663_ALC_PGA_REG_2			0x0339
203*4882a593Smuzhiyun #define RT5663_ALC_PGA_REG_3			0x033a
204*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_1			0x03c0
205*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_2			0x03c1
206*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_3			0x03c2
207*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_4			0x03c3
208*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_5			0x03c4
209*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_6			0x03c5
210*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_7			0x03c6
211*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_8			0x03c7
212*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_9			0x03c8
213*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_10			0x03c9
214*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_11			0x03ca
215*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_12			0x03cb
216*4882a593Smuzhiyun #define RT5663_ADC_EQ_RECOV_13			0x03cc
217*4882a593Smuzhiyun #define RT5663_VID_HIDDEN			0x03fe
218*4882a593Smuzhiyun #define RT5663_VID_CUSTOMER			0x03ff
219*4882a593Smuzhiyun #define RT5663_SCAN_MODE			0x07f0
220*4882a593Smuzhiyun #define RT5663_I2C_BYPA				0x07fa
221*4882a593Smuzhiyun 
222*4882a593Smuzhiyun /* Headphone Amp Control 2 (0x0003) */
223*4882a593Smuzhiyun #define RT5663_EN_DAC_HPO_MASK			(0x1 << 14)
224*4882a593Smuzhiyun #define RT5663_EN_DAC_HPO_SHIFT			14
225*4882a593Smuzhiyun #define RT5663_EN_DAC_HPO_DIS			(0x0 << 14)
226*4882a593Smuzhiyun #define RT5663_EN_DAC_HPO_EN			(0x1 << 14)
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun /*Headphone Amp L/R Analog Gain and Digital NG2 Gain Control (0x0005 0x0006)*/
229*4882a593Smuzhiyun #define RT5663_GAIN_HP				(0x1f << 8)
230*4882a593Smuzhiyun #define RT5663_GAIN_HP_SHIFT			8
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun /* AEC BST Control (0x000b) */
233*4882a593Smuzhiyun #define RT5663_GAIN_CBJ_MASK			(0xf << 8)
234*4882a593Smuzhiyun #define RT5663_GAIN_CBJ_SHIFT			8
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun /* IN1 Control / MIC GND REF (0x000c) */
237*4882a593Smuzhiyun #define RT5663_IN1_DF_MASK			(0x1 << 15)
238*4882a593Smuzhiyun #define RT5663_IN1_DF_SHIFT			15
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun /* Combo Jack and Type Detection Control 1 (0x0010) */
241*4882a593Smuzhiyun #define RT5663_CBJ_DET_MASK			(0x1 << 15)
242*4882a593Smuzhiyun #define RT5663_CBJ_DET_SHIFT			15
243*4882a593Smuzhiyun #define RT5663_CBJ_DET_DIS			(0x0 << 15)
244*4882a593Smuzhiyun #define RT5663_CBJ_DET_EN			(0x1 << 15)
245*4882a593Smuzhiyun #define RT5663_DET_TYPE_MASK			(0x1 << 12)
246*4882a593Smuzhiyun #define RT5663_DET_TYPE_SHIFT			12
247*4882a593Smuzhiyun #define RT5663_DET_TYPE_WLCSP			(0x0 << 12)
248*4882a593Smuzhiyun #define RT5663_DET_TYPE_QFN			(0x1 << 12)
249*4882a593Smuzhiyun #define RT5663_VREF_BIAS_MASK			(0x1 << 6)
250*4882a593Smuzhiyun #define RT5663_VREF_BIAS_SHIFT			6
251*4882a593Smuzhiyun #define RT5663_VREF_BIAS_FSM			(0x0 << 6)
252*4882a593Smuzhiyun #define RT5663_VREF_BIAS_REG			(0x1 << 6)
253*4882a593Smuzhiyun 
254*4882a593Smuzhiyun /* REC Left Mixer Control 2 (0x003c) */
255*4882a593Smuzhiyun #define RT5663_RECMIX1L_BST1_CBJ		(0x1 << 7)
256*4882a593Smuzhiyun #define RT5663_RECMIX1L_BST1_CBJ_SHIFT		7
257*4882a593Smuzhiyun #define RT5663_RECMIX1L_BST2			(0x1 << 4)
258*4882a593Smuzhiyun #define RT5663_RECMIX1L_BST2_SHIFT		4
259*4882a593Smuzhiyun 
260*4882a593Smuzhiyun /* REC Right Mixer Control 2 (0x003e) */
261*4882a593Smuzhiyun #define RT5663_RECMIX1R_BST2			(0x1 << 4)
262*4882a593Smuzhiyun #define RT5663_RECMIX1R_BST2_SHIFT		4
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun /* DAC1 Digital Volume (0x0019) */
265*4882a593Smuzhiyun #define RT5663_DAC_L1_VOL_MASK			(0xff << 8)
266*4882a593Smuzhiyun #define RT5663_DAC_L1_VOL_SHIFT			8
267*4882a593Smuzhiyun #define RT5663_DAC_R1_VOL_MASK			(0xff)
268*4882a593Smuzhiyun #define RT5663_DAC_R1_VOL_SHIFT			0
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun /* ADC Digital Volume Control (0x001c) */
271*4882a593Smuzhiyun #define RT5663_ADC_L_MUTE_MASK			(0x1 << 15)
272*4882a593Smuzhiyun #define RT5663_ADC_L_MUTE_SHIFT			15
273*4882a593Smuzhiyun #define RT5663_ADC_L_VOL_MASK			(0x7f << 8)
274*4882a593Smuzhiyun #define RT5663_ADC_L_VOL_SHIFT			8
275*4882a593Smuzhiyun #define RT5663_ADC_R_MUTE_MASK			(0x1 << 7)
276*4882a593Smuzhiyun #define RT5663_ADC_R_MUTE_SHIFT			7
277*4882a593Smuzhiyun #define RT5663_ADC_R_VOL_MASK			(0x7f)
278*4882a593Smuzhiyun #define RT5663_ADC_R_VOL_SHIFT			0
279*4882a593Smuzhiyun 
280*4882a593Smuzhiyun /* Stereo ADC Mixer Control (0x0026) */
281*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_L1			(0x1 << 15)
282*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_L1_SHIFT		15
283*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_L2			(0x1 << 14)
284*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_L2_SHIFT		14
285*4882a593Smuzhiyun #define RT5663_STO1_ADC_L1_SRC			(0x1 << 13)
286*4882a593Smuzhiyun #define RT5663_STO1_ADC_L1_SRC_SHIFT		13
287*4882a593Smuzhiyun #define RT5663_STO1_ADC_L2_SRC			(0x1 << 12)
288*4882a593Smuzhiyun #define RT5663_STO1_ADC_L2_SRC_SHIFT		12
289*4882a593Smuzhiyun #define RT5663_STO1_ADC_L_SRC			(0x3 << 10)
290*4882a593Smuzhiyun #define RT5663_STO1_ADC_L_SRC_SHIFT		10
291*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_R1			(0x1 << 7)
292*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_R1_SHIFT		7
293*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_R2			(0x1 << 6)
294*4882a593Smuzhiyun #define RT5663_M_STO1_ADC_R2_SHIFT		6
295*4882a593Smuzhiyun #define RT5663_STO1_ADC_R1_SRC			(0x1 << 5)
296*4882a593Smuzhiyun #define RT5663_STO1_ADC_R1_SRC_SHIFT		5
297*4882a593Smuzhiyun #define RT5663_STO1_ADC_R2_SRC			(0x1 << 4)
298*4882a593Smuzhiyun #define RT5663_STO1_ADC_R2_SRC_SHIFT		4
299*4882a593Smuzhiyun #define RT5663_STO1_ADC_R_SRC			(0x3 << 2)
300*4882a593Smuzhiyun #define RT5663_STO1_ADC_R_SRC_SHIFT		2
301*4882a593Smuzhiyun 
302*4882a593Smuzhiyun /* ADC Mixer to DAC Mixer Control (0x0029) */
303*4882a593Smuzhiyun #define RT5663_M_ADCMIX_L			(0x1 << 15)
304*4882a593Smuzhiyun #define RT5663_M_ADCMIX_L_SHIFT			15
305*4882a593Smuzhiyun #define RT5663_M_DAC1_L				(0x1 << 14)
306*4882a593Smuzhiyun #define RT5663_M_DAC1_L_SHIFT			14
307*4882a593Smuzhiyun #define RT5663_M_ADCMIX_R			(0x1 << 7)
308*4882a593Smuzhiyun #define RT5663_M_ADCMIX_R_SHIFT			7
309*4882a593Smuzhiyun #define RT5663_M_DAC1_R				(0x1 << 6)
310*4882a593Smuzhiyun #define RT5663_M_DAC1_R_SHIFT			6
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun /* Stereo DAC Mixer Control (0x002a) */
313*4882a593Smuzhiyun #define RT5663_M_DAC_L1_STO_L			(0x1 << 15)
314*4882a593Smuzhiyun #define RT5663_M_DAC_L1_STO_L_SHIFT		15
315*4882a593Smuzhiyun #define RT5663_M_DAC_R1_STO_L			(0x1 << 13)
316*4882a593Smuzhiyun #define RT5663_M_DAC_R1_STO_L_SHIFT		13
317*4882a593Smuzhiyun #define RT5663_M_DAC_L1_STO_R			(0x1 << 7)
318*4882a593Smuzhiyun #define RT5663_M_DAC_L1_STO_R_SHIFT		7
319*4882a593Smuzhiyun #define RT5663_M_DAC_R1_STO_R			(0x1 << 5)
320*4882a593Smuzhiyun #define RT5663_M_DAC_R1_STO_R_SHIFT		5
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun /* Power Management for Digital 1 (0x0061) */
323*4882a593Smuzhiyun #define RT5663_PWR_I2S1				(0x1 << 15)
324*4882a593Smuzhiyun #define RT5663_PWR_I2S1_SHIFT			15
325*4882a593Smuzhiyun #define RT5663_PWR_DAC_L1			(0x1 << 11)
326*4882a593Smuzhiyun #define RT5663_PWR_DAC_L1_SHIFT			11
327*4882a593Smuzhiyun #define RT5663_PWR_DAC_R1			(0x1 << 10)
328*4882a593Smuzhiyun #define RT5663_PWR_DAC_R1_SHIFT			10
329*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREF_MASK		(0x1 << 8)
330*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREF_SHIFT		8
331*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREF_ON		(0x1 << 8)
332*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREF_DOWN		(0x0 << 8)
333*4882a593Smuzhiyun #define RT5663_PWR_LDO_SHIFT			8
334*4882a593Smuzhiyun #define RT5663_PWR_ADC_L1			(0x1 << 4)
335*4882a593Smuzhiyun #define RT5663_PWR_ADC_L1_SHIFT			4
336*4882a593Smuzhiyun #define RT5663_PWR_ADC_R1			(0x1 << 3)
337*4882a593Smuzhiyun #define RT5663_PWR_ADC_R1_SHIFT			3
338*4882a593Smuzhiyun 
339*4882a593Smuzhiyun /* Power Management for Digital 2 (0x0062) */
340*4882a593Smuzhiyun #define RT5663_PWR_ADC_S1F			(0x1 << 15)
341*4882a593Smuzhiyun #define RT5663_PWR_ADC_S1F_SHIFT		15
342*4882a593Smuzhiyun #define RT5663_PWR_DAC_S1F			(0x1 << 10)
343*4882a593Smuzhiyun #define RT5663_PWR_DAC_S1F_SHIFT		10
344*4882a593Smuzhiyun 
345*4882a593Smuzhiyun /* Power Management for Analog 1 (0x0063) */
346*4882a593Smuzhiyun #define RT5663_PWR_VREF1			(0x1 << 15)
347*4882a593Smuzhiyun #define RT5663_PWR_VREF1_MASK			(0x1 << 15)
348*4882a593Smuzhiyun #define RT5663_PWR_VREF1_SHIFT			15
349*4882a593Smuzhiyun #define RT5663_PWR_FV1				(0x1 << 14)
350*4882a593Smuzhiyun #define RT5663_PWR_FV1_MASK			(0x1 << 14)
351*4882a593Smuzhiyun #define RT5663_PWR_FV1_SHIFT			14
352*4882a593Smuzhiyun #define RT5663_PWR_VREF2			(0x1 << 13)
353*4882a593Smuzhiyun #define RT5663_PWR_VREF2_MASK			(0x1 << 13)
354*4882a593Smuzhiyun #define RT5663_PWR_VREF2_SHIFT			13
355*4882a593Smuzhiyun #define RT5663_PWR_FV2				(0x1 << 12)
356*4882a593Smuzhiyun #define RT5663_PWR_FV2_MASK			(0x1 << 12)
357*4882a593Smuzhiyun #define RT5663_PWR_FV2_SHIFT			12
358*4882a593Smuzhiyun #define RT5663_PWR_MB				(0x1 << 9)
359*4882a593Smuzhiyun #define RT5663_PWR_MB_MASK			(0x1 << 9)
360*4882a593Smuzhiyun #define RT5663_PWR_MB_SHIFT			9
361*4882a593Smuzhiyun #define RT5663_AMP_HP_MASK			(0x3 << 2)
362*4882a593Smuzhiyun #define RT5663_AMP_HP_SHIFT			2
363*4882a593Smuzhiyun #define RT5663_AMP_HP_1X			(0x0 << 2)
364*4882a593Smuzhiyun #define RT5663_AMP_HP_3X			(0x1 << 2)
365*4882a593Smuzhiyun #define RT5663_AMP_HP_5X			(0x3 << 2)
366*4882a593Smuzhiyun #define RT5663_LDO1_DVO_MASK			(0x3)
367*4882a593Smuzhiyun #define RT5663_LDO1_DVO_SHIFT			0
368*4882a593Smuzhiyun #define RT5663_LDO1_DVO_0_9V			(0x0)
369*4882a593Smuzhiyun #define RT5663_LDO1_DVO_1_0V			(0x1)
370*4882a593Smuzhiyun #define RT5663_LDO1_DVO_1_2V			(0x2)
371*4882a593Smuzhiyun #define RT5663_LDO1_DVO_1_4V			(0x3)
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun /* Power Management for Analog 2 (0x0064) */
374*4882a593Smuzhiyun #define RT5663_PWR_BST1				(0x1 << 15)
375*4882a593Smuzhiyun #define RT5663_PWR_BST1_MASK			(0x1 << 15)
376*4882a593Smuzhiyun #define RT5663_PWR_BST1_SHIFT			15
377*4882a593Smuzhiyun #define RT5663_PWR_BST1_OFF			(0x0 << 15)
378*4882a593Smuzhiyun #define RT5663_PWR_BST1_ON			(0x1 << 15)
379*4882a593Smuzhiyun #define RT5663_PWR_BST2				(0x1 << 14)
380*4882a593Smuzhiyun #define RT5663_PWR_BST2_MASK			(0x1 << 14)
381*4882a593Smuzhiyun #define RT5663_PWR_BST2_SHIFT			14
382*4882a593Smuzhiyun #define RT5663_PWR_MB1				(0x1 << 11)
383*4882a593Smuzhiyun #define RT5663_PWR_MB1_SHIFT			11
384*4882a593Smuzhiyun #define RT5663_PWR_MB2				(0x1 << 10)
385*4882a593Smuzhiyun #define RT5663_PWR_MB2_SHIFT			10
386*4882a593Smuzhiyun #define RT5663_PWR_BST2_OP			(0x1 << 6)
387*4882a593Smuzhiyun #define RT5663_PWR_BST2_OP_MASK			(0x1 << 6)
388*4882a593Smuzhiyun #define RT5663_PWR_BST2_OP_SHIFT		6
389*4882a593Smuzhiyun #define RT5663_PWR_JD1				(0x1 << 3)
390*4882a593Smuzhiyun #define RT5663_PWR_JD1_MASK			(0x1 << 3)
391*4882a593Smuzhiyun #define RT5663_PWR_JD1_SHIFT			3
392*4882a593Smuzhiyun #define RT5663_PWR_JD2				(0x1 << 2)
393*4882a593Smuzhiyun #define RT5663_PWR_JD2_MASK			(0x1 << 2)
394*4882a593Smuzhiyun #define RT5663_PWR_JD2_SHIFT			2
395*4882a593Smuzhiyun #define RT5663_PWR_RECMIX1			(0x1 << 1)
396*4882a593Smuzhiyun #define RT5663_PWR_RECMIX1_SHIFT		1
397*4882a593Smuzhiyun #define RT5663_PWR_RECMIX2			(0x1)
398*4882a593Smuzhiyun #define RT5663_PWR_RECMIX2_SHIFT		0
399*4882a593Smuzhiyun 
400*4882a593Smuzhiyun /* Power Management for Analog 3 (0x0065) */
401*4882a593Smuzhiyun #define RT5663_PWR_CBJ_MASK			(0x1 << 9)
402*4882a593Smuzhiyun #define RT5663_PWR_CBJ_SHIFT			9
403*4882a593Smuzhiyun #define RT5663_PWR_CBJ_OFF			(0x0 << 9)
404*4882a593Smuzhiyun #define RT5663_PWR_CBJ_ON			(0x1 << 9)
405*4882a593Smuzhiyun #define RT5663_PWR_PLL				(0x1 << 6)
406*4882a593Smuzhiyun #define RT5663_PWR_PLL_SHIFT			6
407*4882a593Smuzhiyun #define RT5663_PWR_LDO2				(0x1 << 2)
408*4882a593Smuzhiyun #define RT5663_PWR_LDO2_SHIFT			2
409*4882a593Smuzhiyun 
410*4882a593Smuzhiyun /* Power Management for Volume (0x0067) */
411*4882a593Smuzhiyun #define RT5663_V2_PWR_MIC_DET			(0x1 << 5)
412*4882a593Smuzhiyun #define RT5663_V2_PWR_MIC_DET_SHIFT		5
413*4882a593Smuzhiyun 
414*4882a593Smuzhiyun /* MCLK and System Clock Detection Control (0x006b) */
415*4882a593Smuzhiyun #define RT5663_EN_ANA_CLK_DET_MASK		(0x1 << 15)
416*4882a593Smuzhiyun #define RT5663_EN_ANA_CLK_DET_SHIFT		15
417*4882a593Smuzhiyun #define RT5663_EN_ANA_CLK_DET_DIS		(0x0 << 15)
418*4882a593Smuzhiyun #define RT5663_EN_ANA_CLK_DET_AUTO		(0x1 << 15)
419*4882a593Smuzhiyun #define RT5663_PWR_CLK_DET_MASK			(0x1)
420*4882a593Smuzhiyun #define RT5663_PWR_CLK_DET_SHIFT		0
421*4882a593Smuzhiyun #define RT5663_PWR_CLK_DET_DIS			(0x0)
422*4882a593Smuzhiyun #define RT5663_PWR_CLK_DET_EN			(0x1)
423*4882a593Smuzhiyun 
424*4882a593Smuzhiyun /* I2S1 Audio Serial Data Port Control (0x0070) */
425*4882a593Smuzhiyun #define RT5663_I2S_MS_MASK			(0x1 << 15)
426*4882a593Smuzhiyun #define RT5663_I2S_MS_SHIFT			15
427*4882a593Smuzhiyun #define RT5663_I2S_MS_M				(0x0 << 15)
428*4882a593Smuzhiyun #define RT5663_I2S_MS_S				(0x1 << 15)
429*4882a593Smuzhiyun #define RT5663_I2S_BP_MASK			(0x1 << 8)
430*4882a593Smuzhiyun #define RT5663_I2S_BP_SHIFT			8
431*4882a593Smuzhiyun #define RT5663_I2S_BP_NOR			(0x0 << 8)
432*4882a593Smuzhiyun #define RT5663_I2S_BP_INV			(0x1 << 8)
433*4882a593Smuzhiyun #define RT5663_I2S_DL_MASK			(0x3 << 4)
434*4882a593Smuzhiyun #define RT5663_I2S_DL_SHIFT			4
435*4882a593Smuzhiyun #define RT5663_I2S_DL_16			(0x0 << 4)
436*4882a593Smuzhiyun #define RT5663_I2S_DL_20			(0x1 << 4)
437*4882a593Smuzhiyun #define RT5663_I2S_DL_24			(0x2 << 4)
438*4882a593Smuzhiyun #define RT5663_I2S_DL_8				(0x3 << 4)
439*4882a593Smuzhiyun #define RT5663_I2S_DF_MASK			(0x7)
440*4882a593Smuzhiyun #define RT5663_I2S_DF_SHIFT			0
441*4882a593Smuzhiyun #define RT5663_I2S_DF_I2S			(0x0)
442*4882a593Smuzhiyun #define RT5663_I2S_DF_LEFT			(0x1)
443*4882a593Smuzhiyun #define RT5663_I2S_DF_PCM_A			(0x2)
444*4882a593Smuzhiyun #define RT5663_I2S_DF_PCM_B			(0x3)
445*4882a593Smuzhiyun #define RT5663_I2S_DF_PCM_A_N			(0x6)
446*4882a593Smuzhiyun #define RT5663_I2S_DF_PCM_B_N			(0x7)
447*4882a593Smuzhiyun 
448*4882a593Smuzhiyun /* ADC/DAC Clock Control 1 (0x0073) */
449*4882a593Smuzhiyun #define RT5663_I2S_PD1_MASK			(0x7 << 12)
450*4882a593Smuzhiyun #define RT5663_I2S_PD1_SHIFT			12
451*4882a593Smuzhiyun #define RT5663_M_I2S_DIV_MASK			(0x7 << 8)
452*4882a593Smuzhiyun #define RT5663_M_I2S_DIV_SHIFT			8
453*4882a593Smuzhiyun #define RT5663_CLK_SRC_MASK			(0x3 << 4)
454*4882a593Smuzhiyun #define RT5663_CLK_SRC_MCLK			(0x0 << 4)
455*4882a593Smuzhiyun #define RT5663_CLK_SRC_PLL_OUT			(0x1 << 4)
456*4882a593Smuzhiyun #define RT5663_CLK_SRC_DIV			(0x2 << 4)
457*4882a593Smuzhiyun #define RT5663_CLK_SRC_RC			(0x3 << 4)
458*4882a593Smuzhiyun #define RT5663_DAC_OSR_MASK			(0x3 << 2)
459*4882a593Smuzhiyun #define RT5663_DAC_OSR_SHIFT			2
460*4882a593Smuzhiyun #define RT5663_DAC_OSR_128			(0x0 << 2)
461*4882a593Smuzhiyun #define RT5663_DAC_OSR_64			(0x1 << 2)
462*4882a593Smuzhiyun #define RT5663_DAC_OSR_32			(0x2 << 2)
463*4882a593Smuzhiyun #define RT5663_ADC_OSR_MASK			(0x3)
464*4882a593Smuzhiyun #define RT5663_ADC_OSR_SHIFT			0
465*4882a593Smuzhiyun #define RT5663_ADC_OSR_128			(0x0)
466*4882a593Smuzhiyun #define RT5663_ADC_OSR_64			(0x1)
467*4882a593Smuzhiyun #define RT5663_ADC_OSR_32			(0x2)
468*4882a593Smuzhiyun 
469*4882a593Smuzhiyun /* TDM1 control 1 (0x0078) */
470*4882a593Smuzhiyun #define RT5663_TDM_MODE_MASK			(0x1 << 15)
471*4882a593Smuzhiyun #define RT5663_TDM_MODE_SHIFT			15
472*4882a593Smuzhiyun #define RT5663_TDM_MODE_I2S			(0x0 << 15)
473*4882a593Smuzhiyun #define RT5663_TDM_MODE_TDM			(0x1 << 15)
474*4882a593Smuzhiyun #define RT5663_TDM_IN_CH_MASK			(0x3 << 10)
475*4882a593Smuzhiyun #define RT5663_TDM_IN_CH_SHIFT			10
476*4882a593Smuzhiyun #define RT5663_TDM_IN_CH_2			(0x0 << 10)
477*4882a593Smuzhiyun #define RT5663_TDM_IN_CH_4			(0x1 << 10)
478*4882a593Smuzhiyun #define RT5663_TDM_IN_CH_6			(0x2 << 10)
479*4882a593Smuzhiyun #define RT5663_TDM_IN_CH_8			(0x3 << 10)
480*4882a593Smuzhiyun #define RT5663_TDM_OUT_CH_MASK			(0x3 << 8)
481*4882a593Smuzhiyun #define RT5663_TDM_OUT_CH_SHIFT			8
482*4882a593Smuzhiyun #define RT5663_TDM_OUT_CH_2			(0x0 << 8)
483*4882a593Smuzhiyun #define RT5663_TDM_OUT_CH_4			(0x1 << 8)
484*4882a593Smuzhiyun #define RT5663_TDM_OUT_CH_6			(0x2 << 8)
485*4882a593Smuzhiyun #define RT5663_TDM_OUT_CH_8			(0x3 << 8)
486*4882a593Smuzhiyun #define RT5663_TDM_IN_LEN_MASK			(0x3 << 6)
487*4882a593Smuzhiyun #define RT5663_TDM_IN_LEN_SHIFT			6
488*4882a593Smuzhiyun #define RT5663_TDM_IN_LEN_16			(0x0 << 6)
489*4882a593Smuzhiyun #define RT5663_TDM_IN_LEN_20			(0x1 << 6)
490*4882a593Smuzhiyun #define RT5663_TDM_IN_LEN_24			(0x2 << 6)
491*4882a593Smuzhiyun #define RT5663_TDM_IN_LEN_32			(0x3 << 6)
492*4882a593Smuzhiyun #define RT5663_TDM_OUT_LEN_MASK			(0x3 << 4)
493*4882a593Smuzhiyun #define RT5663_TDM_OUT_LEN_SHIFT		4
494*4882a593Smuzhiyun #define RT5663_TDM_OUT_LEN_16			(0x0 << 4)
495*4882a593Smuzhiyun #define RT5663_TDM_OUT_LEN_20			(0x1 << 4)
496*4882a593Smuzhiyun #define RT5663_TDM_OUT_LEN_24			(0x2 << 4)
497*4882a593Smuzhiyun #define RT5663_TDM_OUT_LEN_32			(0x3 << 4)
498*4882a593Smuzhiyun 
499*4882a593Smuzhiyun /* Global Clock Control (0x0080) */
500*4882a593Smuzhiyun #define RT5663_SCLK_SRC_MASK			(0x3 << 14)
501*4882a593Smuzhiyun #define RT5663_SCLK_SRC_SHIFT			14
502*4882a593Smuzhiyun #define RT5663_SCLK_SRC_MCLK			(0x0 << 14)
503*4882a593Smuzhiyun #define RT5663_SCLK_SRC_PLL1			(0x1 << 14)
504*4882a593Smuzhiyun #define RT5663_SCLK_SRC_RCCLK			(0x2 << 14)
505*4882a593Smuzhiyun #define RT5663_PLL1_SRC_MASK			(0x7 << 11)
506*4882a593Smuzhiyun #define RT5663_PLL1_SRC_SHIFT			11
507*4882a593Smuzhiyun #define RT5663_PLL1_SRC_MCLK			(0x0 << 11)
508*4882a593Smuzhiyun #define RT5663_PLL1_SRC_BCLK1			(0x1 << 11)
509*4882a593Smuzhiyun #define RT5663_V2_PLL1_SRC_MASK			(0x7 << 8)
510*4882a593Smuzhiyun #define RT5663_V2_PLL1_SRC_SHIFT		8
511*4882a593Smuzhiyun #define RT5663_V2_PLL1_SRC_MCLK			(0x0 << 8)
512*4882a593Smuzhiyun #define RT5663_V2_PLL1_SRC_BCLK1		(0x1 << 8)
513*4882a593Smuzhiyun #define RT5663_PLL1_PD_MASK			(0x1 << 4)
514*4882a593Smuzhiyun #define RT5663_PLL1_PD_SHIFT			4
515*4882a593Smuzhiyun 
516*4882a593Smuzhiyun #define RT5663_PLL_INP_MAX			40000000
517*4882a593Smuzhiyun #define RT5663_PLL_INP_MIN			256000
518*4882a593Smuzhiyun /* PLL M/N/K Code Control 1 (0x0081) */
519*4882a593Smuzhiyun #define RT5663_PLL_N_MAX			0x001ff
520*4882a593Smuzhiyun #define RT5663_PLL_N_MASK			(RT5663_PLL_N_MAX << 7)
521*4882a593Smuzhiyun #define RT5663_PLL_N_SHIFT			7
522*4882a593Smuzhiyun #define RT5663_PLL_K_MAX			0x001f
523*4882a593Smuzhiyun #define RT5663_PLL_K_MASK			(RT5663_PLL_K_MAX)
524*4882a593Smuzhiyun #define RT5663_PLL_K_SHIFT			0
525*4882a593Smuzhiyun 
526*4882a593Smuzhiyun /* PLL M/N/K Code Control 2 (0x0082) */
527*4882a593Smuzhiyun #define RT5663_PLL_M_MAX			0x00f
528*4882a593Smuzhiyun #define RT5663_PLL_M_MASK			(RT5663_PLL_M_MAX << 12)
529*4882a593Smuzhiyun #define RT5663_PLL_M_SHIFT			12
530*4882a593Smuzhiyun #define RT5663_PLL_M_BP				(0x1 << 11)
531*4882a593Smuzhiyun #define RT5663_PLL_M_BP_SHIFT			11
532*4882a593Smuzhiyun 
533*4882a593Smuzhiyun /* PLL tracking mode 1 (0x0083) */
534*4882a593Smuzhiyun #define RT5663_V2_I2S1_ASRC_MASK			(0x1 << 13)
535*4882a593Smuzhiyun #define RT5663_V2_I2S1_ASRC_SHIFT			13
536*4882a593Smuzhiyun #define RT5663_V2_DAC_STO1_ASRC_MASK		(0x1 << 12)
537*4882a593Smuzhiyun #define RT5663_V2_DAC_STO1_ASRC_SHIFT		12
538*4882a593Smuzhiyun #define RT5663_V2_ADC_STO1_ASRC_MASK		(0x1 << 4)
539*4882a593Smuzhiyun #define RT5663_V2_ADC_STO1_ASRC_SHIFT		4
540*4882a593Smuzhiyun 
541*4882a593Smuzhiyun /* PLL tracking mode 2 (0x0084)*/
542*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_MASK		(0x7 << 12)
543*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_SHIFT		12
544*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_SYSCLK		(0x0 << 12)
545*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_I2S1		(0x1 << 12)
546*4882a593Smuzhiyun 
547*4882a593Smuzhiyun /* PLL tracking mode 3 (0x0085)*/
548*4882a593Smuzhiyun #define RT5663_V2_AD_STO1_TRACK_MASK		(0x7 << 12)
549*4882a593Smuzhiyun #define RT5663_V2_AD_STO1_TRACK_SHIFT		12
550*4882a593Smuzhiyun #define RT5663_V2_AD_STO1_TRACK_SYSCLK		(0x0 << 12)
551*4882a593Smuzhiyun #define RT5663_V2_AD_STO1_TRACK_I2S1		(0x1 << 12)
552*4882a593Smuzhiyun 
553*4882a593Smuzhiyun /* HPOUT Charge pump control 1 (0x0091) */
554*4882a593Smuzhiyun #define RT5663_OSW_HP_L_MASK			(0x1 << 11)
555*4882a593Smuzhiyun #define RT5663_OSW_HP_L_SHIFT			11
556*4882a593Smuzhiyun #define RT5663_OSW_HP_L_EN			(0x1 << 11)
557*4882a593Smuzhiyun #define RT5663_OSW_HP_L_DIS			(0x0 << 11)
558*4882a593Smuzhiyun #define RT5663_OSW_HP_R_MASK			(0x1 << 10)
559*4882a593Smuzhiyun #define RT5663_OSW_HP_R_SHIFT			10
560*4882a593Smuzhiyun #define RT5663_OSW_HP_R_EN			(0x1 << 10)
561*4882a593Smuzhiyun #define RT5663_OSW_HP_R_DIS			(0x0 << 10)
562*4882a593Smuzhiyun #define RT5663_SEL_PM_HP_MASK			(0x3 << 8)
563*4882a593Smuzhiyun #define RT5663_SEL_PM_HP_SHIFT			8
564*4882a593Smuzhiyun #define RT5663_SEL_PM_HP_0_6			(0x0 << 8)
565*4882a593Smuzhiyun #define RT5663_SEL_PM_HP_0_9			(0x1 << 8)
566*4882a593Smuzhiyun #define RT5663_SEL_PM_HP_1_8			(0x2 << 8)
567*4882a593Smuzhiyun #define RT5663_SEL_PM_HP_HIGH			(0x3 << 8)
568*4882a593Smuzhiyun #define RT5663_OVCD_HP_MASK			(0x1 << 2)
569*4882a593Smuzhiyun #define RT5663_OVCD_HP_SHIFT			2
570*4882a593Smuzhiyun #define RT5663_OVCD_HP_EN			(0x1 << 2)
571*4882a593Smuzhiyun #define RT5663_OVCD_HP_DIS			(0x0 << 2)
572*4882a593Smuzhiyun 
573*4882a593Smuzhiyun /* RC Clock Control (0x0094) */
574*4882a593Smuzhiyun #define RT5663_DIG_25M_CLK_MASK			(0x1 << 9)
575*4882a593Smuzhiyun #define RT5663_DIG_25M_CLK_SHIFT		9
576*4882a593Smuzhiyun #define RT5663_DIG_25M_CLK_DIS			(0x0 << 9)
577*4882a593Smuzhiyun #define RT5663_DIG_25M_CLK_EN			(0x1 << 9)
578*4882a593Smuzhiyun #define RT5663_DIG_1M_CLK_MASK			(0x1 << 8)
579*4882a593Smuzhiyun #define RT5663_DIG_1M_CLK_SHIFT			8
580*4882a593Smuzhiyun #define RT5663_DIG_1M_CLK_DIS			(0x0 << 8)
581*4882a593Smuzhiyun #define RT5663_DIG_1M_CLK_EN			(0x1 << 8)
582*4882a593Smuzhiyun 
583*4882a593Smuzhiyun /* Auto Turn On 1M RC CLK (0x009f) */
584*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_MASK			(0x1 << 15)
585*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_SHIFT		15
586*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_DIS			(0x0 << 15)
587*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_EN			(0x1 << 15)
588*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_JD1_MASK		(0x1 << 14)
589*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_JD1_SHIFT		14
590*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_JD1_DIS		(0x0 << 14)
591*4882a593Smuzhiyun #define RT5663_IRQ_POW_SAV_JD1_EN		(0x1 << 14)
592*4882a593Smuzhiyun #define RT5663_IRQ_MANUAL_MASK			(0x1 << 8)
593*4882a593Smuzhiyun #define RT5663_IRQ_MANUAL_SHIFT			8
594*4882a593Smuzhiyun #define RT5663_IRQ_MANUAL_DIS			(0x0 << 8)
595*4882a593Smuzhiyun #define RT5663_IRQ_MANUAL_EN			(0x1 << 8)
596*4882a593Smuzhiyun 
597*4882a593Smuzhiyun /* IRQ Control 1 (0x00b6) */
598*4882a593Smuzhiyun #define RT5663_EN_CB_JD_MASK			(0x1 << 3)
599*4882a593Smuzhiyun #define RT5663_EN_CB_JD_SHIFT			3
600*4882a593Smuzhiyun #define RT5663_EN_CB_JD_EN			(0x1 << 3)
601*4882a593Smuzhiyun #define RT5663_EN_CB_JD_DIS			(0x0 << 3)
602*4882a593Smuzhiyun 
603*4882a593Smuzhiyun /* IRQ Control 3 (0x00b8) */
604*4882a593Smuzhiyun #define RT5663_V2_EN_IRQ_INLINE_MASK		(0x1 << 6)
605*4882a593Smuzhiyun #define RT5663_V2_EN_IRQ_INLINE_SHIFT		6
606*4882a593Smuzhiyun #define RT5663_V2_EN_IRQ_INLINE_BYP		(0x0 << 6)
607*4882a593Smuzhiyun #define RT5663_V2_EN_IRQ_INLINE_NOR		(0x1 << 6)
608*4882a593Smuzhiyun 
609*4882a593Smuzhiyun /* GPIO Control 1 (0x00c0) */
610*4882a593Smuzhiyun #define RT5663_GP1_PIN_MASK			(0x1 << 15)
611*4882a593Smuzhiyun #define RT5663_GP1_PIN_SHIFT			15
612*4882a593Smuzhiyun #define RT5663_GP1_PIN_GPIO1			(0x0 << 15)
613*4882a593Smuzhiyun #define RT5663_GP1_PIN_IRQ			(0x1 << 15)
614*4882a593Smuzhiyun 
615*4882a593Smuzhiyun /* GPIO Control 2 (0x00c1) */
616*4882a593Smuzhiyun #define RT5663_GP4_PIN_CONF_MASK		(0x1 << 5)
617*4882a593Smuzhiyun #define RT5663_GP4_PIN_CONF_SHIFT		5
618*4882a593Smuzhiyun #define RT5663_GP4_PIN_CONF_INPUT		(0x0 << 5)
619*4882a593Smuzhiyun #define RT5663_GP4_PIN_CONF_OUTPUT		(0x1 << 5)
620*4882a593Smuzhiyun 
621*4882a593Smuzhiyun /* GPIO Control 2 (0x00c2) */
622*4882a593Smuzhiyun #define RT5663_GP8_PIN_CONF_MASK		(0x1 << 13)
623*4882a593Smuzhiyun #define RT5663_GP8_PIN_CONF_SHIFT		13
624*4882a593Smuzhiyun #define RT5663_GP8_PIN_CONF_INPUT		(0x0 << 13)
625*4882a593Smuzhiyun #define RT5663_GP8_PIN_CONF_OUTPUT		(0x1 << 13)
626*4882a593Smuzhiyun 
627*4882a593Smuzhiyun /* 4 Buttons Inline Command Function 1 (0x00df) */
628*4882a593Smuzhiyun #define RT5663_4BTN_CLK_DEB_MASK		(0x3 << 2)
629*4882a593Smuzhiyun #define RT5663_4BTN_CLK_DEB_SHIFT		2
630*4882a593Smuzhiyun #define RT5663_4BTN_CLK_DEB_8MS			(0x0 << 2)
631*4882a593Smuzhiyun #define RT5663_4BTN_CLK_DEB_16MS		(0x1 << 2)
632*4882a593Smuzhiyun #define RT5663_4BTN_CLK_DEB_32MS		(0x2 << 2)
633*4882a593Smuzhiyun #define RT5663_4BTN_CLK_DEB_65MS		(0x3 << 2)
634*4882a593Smuzhiyun 
635*4882a593Smuzhiyun /* Inline Command Function 6 (0x00e0) */
636*4882a593Smuzhiyun #define RT5663_EN_4BTN_INL_MASK			(0x1 << 15)
637*4882a593Smuzhiyun #define RT5663_EN_4BTN_INL_SHIFT		15
638*4882a593Smuzhiyun #define RT5663_EN_4BTN_INL_DIS			(0x0 << 15)
639*4882a593Smuzhiyun #define RT5663_EN_4BTN_INL_EN			(0x1 << 15)
640*4882a593Smuzhiyun #define RT5663_RESET_4BTN_INL_MASK		(0x1 << 14)
641*4882a593Smuzhiyun #define RT5663_RESET_4BTN_INL_SHIFT		14
642*4882a593Smuzhiyun #define RT5663_RESET_4BTN_INL_RESET		(0x0 << 14)
643*4882a593Smuzhiyun #define RT5663_RESET_4BTN_INL_NOR		(0x1 << 14)
644*4882a593Smuzhiyun 
645*4882a593Smuzhiyun /* Digital Misc Control (0x00fa) */
646*4882a593Smuzhiyun #define RT5663_DIG_GATE_CTRL_MASK		0x1
647*4882a593Smuzhiyun #define RT5663_DIG_GATE_CTRL_SHIFT		(0)
648*4882a593Smuzhiyun #define RT5663_DIG_GATE_CTRL_DIS		0x0
649*4882a593Smuzhiyun #define RT5663_DIG_GATE_CTRL_EN			0x1
650*4882a593Smuzhiyun 
651*4882a593Smuzhiyun /* Chopper and Clock control for DAC L (0x013a)*/
652*4882a593Smuzhiyun #define RT5663_CKXEN_DAC1_MASK			(0x1 << 13)
653*4882a593Smuzhiyun #define RT5663_CKXEN_DAC1_SHIFT			13
654*4882a593Smuzhiyun #define RT5663_CKGEN_DAC1_MASK			(0x1 << 12)
655*4882a593Smuzhiyun #define RT5663_CKGEN_DAC1_SHIFT			12
656*4882a593Smuzhiyun 
657*4882a593Smuzhiyun /* Chopper and Clock control for ADC (0x013b)*/
658*4882a593Smuzhiyun #define RT5663_CKXEN_ADCC_MASK			(0x1 << 13)
659*4882a593Smuzhiyun #define RT5663_CKXEN_ADCC_SHIFT			13
660*4882a593Smuzhiyun #define RT5663_CKGEN_ADCC_MASK			(0x1 << 12)
661*4882a593Smuzhiyun #define RT5663_CKGEN_ADCC_SHIFT			12
662*4882a593Smuzhiyun 
663*4882a593Smuzhiyun /* HP Behavior Logic Control 2 (0x01db) */
664*4882a593Smuzhiyun #define RT5663_HP_SIG_SRC1_MASK			(0x3)
665*4882a593Smuzhiyun #define RT5663_HP_SIG_SRC1_SHIFT		0
666*4882a593Smuzhiyun #define RT5663_HP_SIG_SRC1_HP_DC		(0x0)
667*4882a593Smuzhiyun #define RT5663_HP_SIG_SRC1_HP_CALIB		(0x1)
668*4882a593Smuzhiyun #define RT5663_HP_SIG_SRC1_REG			(0x2)
669*4882a593Smuzhiyun #define RT5663_HP_SIG_SRC1_SILENCE		(0x3)
670*4882a593Smuzhiyun 
671*4882a593Smuzhiyun /* RT5663 specific register */
672*4882a593Smuzhiyun #define RT5663_HP_OUT_EN			0x0002
673*4882a593Smuzhiyun #define RT5663_HP_LCH_DRE			0x0005
674*4882a593Smuzhiyun #define RT5663_HP_RCH_DRE			0x0006
675*4882a593Smuzhiyun #define RT5663_CALIB_BST			0x000a
676*4882a593Smuzhiyun #define RT5663_RECMIX				0x0010
677*4882a593Smuzhiyun #define RT5663_SIL_DET_CTL			0x0015
678*4882a593Smuzhiyun #define RT5663_PWR_SAV_SILDET			0x0016
679*4882a593Smuzhiyun #define RT5663_SIDETONE_CTL			0x0018
680*4882a593Smuzhiyun #define RT5663_STO1_DAC_DIG_VOL			0x0019
681*4882a593Smuzhiyun #define RT5663_STO1_ADC_DIG_VOL			0x001c
682*4882a593Smuzhiyun #define RT5663_STO1_BOOST			0x001f
683*4882a593Smuzhiyun #define RT5663_HP_IMP_GAIN_1			0x0022
684*4882a593Smuzhiyun #define RT5663_HP_IMP_GAIN_2			0x0023
685*4882a593Smuzhiyun #define RT5663_STO1_ADC_MIXER			0x0026
686*4882a593Smuzhiyun #define RT5663_AD_DA_MIXER			0x0029
687*4882a593Smuzhiyun #define RT5663_STO_DAC_MIXER			0x002a
688*4882a593Smuzhiyun #define RT5663_DIG_SIDE_MIXER			0x002c
689*4882a593Smuzhiyun #define RT5663_BYPASS_STO_DAC			0x002d
690*4882a593Smuzhiyun #define RT5663_CALIB_REC_MIX			0x0040
691*4882a593Smuzhiyun #define RT5663_PWR_DIG_1			0x0061
692*4882a593Smuzhiyun #define RT5663_PWR_DIG_2			0x0062
693*4882a593Smuzhiyun #define RT5663_PWR_ANLG_1			0x0063
694*4882a593Smuzhiyun #define RT5663_PWR_ANLG_2			0x0064
695*4882a593Smuzhiyun #define RT5663_PWR_ANLG_3			0x0065
696*4882a593Smuzhiyun #define RT5663_PWR_MIXER			0x0066
697*4882a593Smuzhiyun #define RT5663_SIG_CLK_DET			0x006b
698*4882a593Smuzhiyun #define RT5663_PRE_DIV_GATING_1			0x006e
699*4882a593Smuzhiyun #define RT5663_PRE_DIV_GATING_2			0x006f
700*4882a593Smuzhiyun #define RT5663_I2S1_SDP				0x0070
701*4882a593Smuzhiyun #define RT5663_ADDA_CLK_1			0x0073
702*4882a593Smuzhiyun #define RT5663_ADDA_RST				0x0074
703*4882a593Smuzhiyun #define RT5663_FRAC_DIV_1			0x0075
704*4882a593Smuzhiyun #define RT5663_FRAC_DIV_2			0x0076
705*4882a593Smuzhiyun #define RT5663_TDM_1				0x0077
706*4882a593Smuzhiyun #define RT5663_TDM_2				0x0078
707*4882a593Smuzhiyun #define RT5663_TDM_3				0x0079
708*4882a593Smuzhiyun #define RT5663_TDM_4				0x007a
709*4882a593Smuzhiyun #define RT5663_TDM_5				0x007b
710*4882a593Smuzhiyun #define RT5663_TDM_6				0x007c
711*4882a593Smuzhiyun #define RT5663_TDM_7				0x007d
712*4882a593Smuzhiyun #define RT5663_TDM_8				0x007e
713*4882a593Smuzhiyun #define RT5663_TDM_9				0x007f
714*4882a593Smuzhiyun #define RT5663_GLB_CLK				0x0080
715*4882a593Smuzhiyun #define RT5663_PLL_1				0x0081
716*4882a593Smuzhiyun #define RT5663_PLL_2				0x0082
717*4882a593Smuzhiyun #define RT5663_ASRC_1				0x0083
718*4882a593Smuzhiyun #define RT5663_ASRC_2				0x0084
719*4882a593Smuzhiyun #define RT5663_ASRC_4				0x0086
720*4882a593Smuzhiyun #define RT5663_DUMMY_REG			0x0087
721*4882a593Smuzhiyun #define RT5663_ASRC_8				0x008a
722*4882a593Smuzhiyun #define RT5663_ASRC_9				0x008b
723*4882a593Smuzhiyun #define RT5663_ASRC_11				0x008c
724*4882a593Smuzhiyun #define RT5663_DEPOP_1				0x008e
725*4882a593Smuzhiyun #define RT5663_DEPOP_2				0x008f
726*4882a593Smuzhiyun #define RT5663_DEPOP_3				0x0090
727*4882a593Smuzhiyun #define RT5663_HP_CHARGE_PUMP_1			0x0091
728*4882a593Smuzhiyun #define RT5663_HP_CHARGE_PUMP_2			0x0092
729*4882a593Smuzhiyun #define RT5663_MICBIAS_1			0x0093
730*4882a593Smuzhiyun #define RT5663_RC_CLK				0x0094
731*4882a593Smuzhiyun #define RT5663_ASRC_11_2			0x0097
732*4882a593Smuzhiyun #define RT5663_DUMMY_REG_2			0x0098
733*4882a593Smuzhiyun #define RT5663_REC_PATH_GAIN			0x009a
734*4882a593Smuzhiyun #define RT5663_AUTO_1MRC_CLK			0x009f
735*4882a593Smuzhiyun #define RT5663_ADC_EQ_1				0x00ae
736*4882a593Smuzhiyun #define RT5663_ADC_EQ_2				0x00af
737*4882a593Smuzhiyun #define RT5663_IRQ_1				0x00b6
738*4882a593Smuzhiyun #define RT5663_IRQ_2				0x00b7
739*4882a593Smuzhiyun #define RT5663_IRQ_3				0x00b8
740*4882a593Smuzhiyun #define RT5663_IRQ_4				0x00ba
741*4882a593Smuzhiyun #define RT5663_IRQ_5				0x00bb
742*4882a593Smuzhiyun #define RT5663_INT_ST_1				0x00be
743*4882a593Smuzhiyun #define RT5663_INT_ST_2				0x00bf
744*4882a593Smuzhiyun #define RT5663_GPIO_1				0x00c0
745*4882a593Smuzhiyun #define RT5663_GPIO_2				0x00c1
746*4882a593Smuzhiyun #define RT5663_GPIO_STA1			0x00c5
747*4882a593Smuzhiyun #define RT5663_SIN_GEN_1			0x00cb
748*4882a593Smuzhiyun #define RT5663_SIN_GEN_2			0x00cc
749*4882a593Smuzhiyun #define RT5663_SIN_GEN_3			0x00cd
750*4882a593Smuzhiyun #define RT5663_SOF_VOL_ZC1			0x00d9
751*4882a593Smuzhiyun #define RT5663_IL_CMD_1				0x00db
752*4882a593Smuzhiyun #define RT5663_IL_CMD_2				0x00dc
753*4882a593Smuzhiyun #define RT5663_IL_CMD_3				0x00dd
754*4882a593Smuzhiyun #define RT5663_IL_CMD_4				0x00de
755*4882a593Smuzhiyun #define RT5663_IL_CMD_5				0x00df
756*4882a593Smuzhiyun #define RT5663_IL_CMD_6				0x00e0
757*4882a593Smuzhiyun #define RT5663_IL_CMD_7				0x00e1
758*4882a593Smuzhiyun #define RT5663_IL_CMD_8				0x00e2
759*4882a593Smuzhiyun #define RT5663_IL_CMD_PWRSAV1			0x00e4
760*4882a593Smuzhiyun #define RT5663_IL_CMD_PWRSAV2			0x00e5
761*4882a593Smuzhiyun #define RT5663_EM_JACK_TYPE_1			0x00e6
762*4882a593Smuzhiyun #define RT5663_EM_JACK_TYPE_2			0x00e7
763*4882a593Smuzhiyun #define RT5663_EM_JACK_TYPE_3			0x00e8
764*4882a593Smuzhiyun #define RT5663_EM_JACK_TYPE_4			0x00e9
765*4882a593Smuzhiyun #define RT5663_EM_JACK_TYPE_5			0x00ea
766*4882a593Smuzhiyun #define RT5663_EM_JACK_TYPE_6			0x00eb
767*4882a593Smuzhiyun #define RT5663_STO1_HPF_ADJ1			0x00ec
768*4882a593Smuzhiyun #define RT5663_STO1_HPF_ADJ2			0x00ed
769*4882a593Smuzhiyun #define RT5663_FAST_OFF_MICBIAS			0x00f4
770*4882a593Smuzhiyun #define RT5663_JD_CTRL1				0x00f6
771*4882a593Smuzhiyun #define RT5663_JD_CTRL2				0x00f8
772*4882a593Smuzhiyun #define RT5663_DIG_MISC				0x00fa
773*4882a593Smuzhiyun #define RT5663_DIG_VOL_ZCD			0x0100
774*4882a593Smuzhiyun #define RT5663_ANA_BIAS_CUR_1			0x0108
775*4882a593Smuzhiyun #define RT5663_ANA_BIAS_CUR_2			0x0109
776*4882a593Smuzhiyun #define RT5663_ANA_BIAS_CUR_3			0x010a
777*4882a593Smuzhiyun #define RT5663_ANA_BIAS_CUR_4			0x010b
778*4882a593Smuzhiyun #define RT5663_ANA_BIAS_CUR_5			0x010c
779*4882a593Smuzhiyun #define RT5663_ANA_BIAS_CUR_6			0x010d
780*4882a593Smuzhiyun #define RT5663_BIAS_CUR_5			0x010e
781*4882a593Smuzhiyun #define RT5663_BIAS_CUR_6			0x010f
782*4882a593Smuzhiyun #define RT5663_BIAS_CUR_7			0x0110
783*4882a593Smuzhiyun #define RT5663_BIAS_CUR_8			0x0111
784*4882a593Smuzhiyun #define RT5663_DACREF_LDO			0x0112
785*4882a593Smuzhiyun #define RT5663_DUMMY_REG_3			0x0113
786*4882a593Smuzhiyun #define RT5663_BIAS_CUR_9			0x0114
787*4882a593Smuzhiyun #define RT5663_DUMMY_REG_4			0x0116
788*4882a593Smuzhiyun #define RT5663_VREFADJ_OP			0x0117
789*4882a593Smuzhiyun #define RT5663_VREF_RECMIX			0x0118
790*4882a593Smuzhiyun #define RT5663_CHARGE_PUMP_1			0x0125
791*4882a593Smuzhiyun #define RT5663_CHARGE_PUMP_1_2			0x0126
792*4882a593Smuzhiyun #define RT5663_CHARGE_PUMP_1_3			0x0127
793*4882a593Smuzhiyun #define RT5663_CHARGE_PUMP_2			0x0128
794*4882a593Smuzhiyun #define RT5663_DIG_IN_PIN1			0x0132
795*4882a593Smuzhiyun #define RT5663_PAD_DRV_CTL			0x0137
796*4882a593Smuzhiyun #define RT5663_PLL_INT_REG			0x0139
797*4882a593Smuzhiyun #define RT5663_CHOP_DAC_L			0x013a
798*4882a593Smuzhiyun #define RT5663_CHOP_ADC				0x013b
799*4882a593Smuzhiyun #define RT5663_CALIB_ADC			0x013c
800*4882a593Smuzhiyun #define RT5663_CHOP_DAC_R			0x013d
801*4882a593Smuzhiyun #define RT5663_DUMMY_CTL_DACLR			0x013e
802*4882a593Smuzhiyun #define RT5663_DUMMY_REG_5			0x0140
803*4882a593Smuzhiyun #define RT5663_SOFT_RAMP			0x0141
804*4882a593Smuzhiyun #define RT5663_TEST_MODE_1			0x0144
805*4882a593Smuzhiyun #define RT5663_TEST_MODE_2			0x0145
806*4882a593Smuzhiyun #define RT5663_TEST_MODE_3			0x0146
807*4882a593Smuzhiyun #define RT5663_TEST_MODE_4			0x0147
808*4882a593Smuzhiyun #define RT5663_TEST_MODE_5			0x0148
809*4882a593Smuzhiyun #define RT5663_STO_DRE_1			0x0160
810*4882a593Smuzhiyun #define RT5663_STO_DRE_2			0x0161
811*4882a593Smuzhiyun #define RT5663_STO_DRE_3			0x0162
812*4882a593Smuzhiyun #define RT5663_STO_DRE_4			0x0163
813*4882a593Smuzhiyun #define RT5663_STO_DRE_5			0x0164
814*4882a593Smuzhiyun #define RT5663_STO_DRE_6			0x0165
815*4882a593Smuzhiyun #define RT5663_STO_DRE_7			0x0166
816*4882a593Smuzhiyun #define RT5663_STO_DRE_8			0x0167
817*4882a593Smuzhiyun #define RT5663_STO_DRE_9			0x0168
818*4882a593Smuzhiyun #define RT5663_STO_DRE_10			0x0169
819*4882a593Smuzhiyun #define RT5663_MIC_DECRO_1			0x0180
820*4882a593Smuzhiyun #define RT5663_MIC_DECRO_2			0x0181
821*4882a593Smuzhiyun #define RT5663_MIC_DECRO_3			0x0182
822*4882a593Smuzhiyun #define RT5663_MIC_DECRO_4			0x0183
823*4882a593Smuzhiyun #define RT5663_MIC_DECRO_5			0x0184
824*4882a593Smuzhiyun #define RT5663_MIC_DECRO_6			0x0185
825*4882a593Smuzhiyun #define RT5663_HP_DECRO_1			0x01b0
826*4882a593Smuzhiyun #define RT5663_HP_DECRO_2			0x01b1
827*4882a593Smuzhiyun #define RT5663_HP_DECRO_3			0x01b2
828*4882a593Smuzhiyun #define RT5663_HP_DECRO_4			0x01b3
829*4882a593Smuzhiyun #define RT5663_HP_DECOUP			0x01b4
830*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_MAP8			0x01b5
831*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_MAP9			0x01b6
832*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_MAP10			0x01b7
833*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_MAP11			0x01b8
834*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_1			0x01c0
835*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_2			0x01c1
836*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_3			0x01c2
837*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_4			0x01c3
838*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_5			0x01c4
839*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_6			0x01c5
840*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_7			0x01c6
841*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_8			0x01c7
842*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_9			0x01c8
843*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_10			0x01c9
844*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_11			0x01ca
845*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_12			0x01cb
846*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_13			0x01cc
847*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_14			0x01cd
848*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_15			0x01ce
849*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_16			0x01cf
850*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_17			0x01d0
851*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_18			0x01d1
852*4882a593Smuzhiyun #define RT5663_HP_IMP_SEN_19			0x01d2
853*4882a593Smuzhiyun #define RT5663_HP_IMPSEN_DIG5			0x01d3
854*4882a593Smuzhiyun #define RT5663_HP_IMPSEN_MAP1			0x01d4
855*4882a593Smuzhiyun #define RT5663_HP_IMPSEN_MAP2			0x01d5
856*4882a593Smuzhiyun #define RT5663_HP_IMPSEN_MAP3			0x01d6
857*4882a593Smuzhiyun #define RT5663_HP_IMPSEN_MAP4			0x01d7
858*4882a593Smuzhiyun #define RT5663_HP_IMPSEN_MAP5			0x01d8
859*4882a593Smuzhiyun #define RT5663_HP_IMPSEN_MAP7			0x01d9
860*4882a593Smuzhiyun #define RT5663_HP_LOGIC_1			0x01da
861*4882a593Smuzhiyun #define RT5663_HP_LOGIC_2			0x01db
862*4882a593Smuzhiyun #define RT5663_HP_CALIB_1			0x01dd
863*4882a593Smuzhiyun #define RT5663_HP_CALIB_1_1			0x01de
864*4882a593Smuzhiyun #define RT5663_HP_CALIB_2			0x01df
865*4882a593Smuzhiyun #define RT5663_HP_CALIB_3			0x01e0
866*4882a593Smuzhiyun #define RT5663_HP_CALIB_4			0x01e1
867*4882a593Smuzhiyun #define RT5663_HP_CALIB_5			0x01e2
868*4882a593Smuzhiyun #define RT5663_HP_CALIB_5_1			0x01e3
869*4882a593Smuzhiyun #define RT5663_HP_CALIB_6			0x01e4
870*4882a593Smuzhiyun #define RT5663_HP_CALIB_7			0x01e5
871*4882a593Smuzhiyun #define RT5663_HP_CALIB_9			0x01e6
872*4882a593Smuzhiyun #define RT5663_HP_CALIB_10			0x01e7
873*4882a593Smuzhiyun #define RT5663_HP_CALIB_11			0x01e8
874*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST1			0x01ea
875*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST2			0x01eb
876*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST3			0x01ec
877*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST4			0x01ed
878*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST5			0x01ee
879*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST6			0x01ef
880*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST7			0x01f0
881*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST8			0x01f1
882*4882a593Smuzhiyun #define RT5663_HP_CALIB_ST9			0x01f2
883*4882a593Smuzhiyun #define RT5663_HP_AMP_DET			0x0200
884*4882a593Smuzhiyun #define RT5663_DUMMY_REG_6			0x0201
885*4882a593Smuzhiyun #define RT5663_HP_BIAS				0x0202
886*4882a593Smuzhiyun #define RT5663_CBJ_1				0x0250
887*4882a593Smuzhiyun #define RT5663_CBJ_2				0x0251
888*4882a593Smuzhiyun #define RT5663_CBJ_3				0x0252
889*4882a593Smuzhiyun #define RT5663_DUMMY_1				0x02fa
890*4882a593Smuzhiyun #define RT5663_DUMMY_2				0x02fb
891*4882a593Smuzhiyun #define RT5663_DUMMY_3				0x02fc
892*4882a593Smuzhiyun #define RT5663_ANA_JD				0x0300
893*4882a593Smuzhiyun #define RT5663_ADC_LCH_LPF1_A1			0x03d0
894*4882a593Smuzhiyun #define RT5663_ADC_RCH_LPF1_A1			0x03d1
895*4882a593Smuzhiyun #define RT5663_ADC_LCH_LPF1_H0			0x03d2
896*4882a593Smuzhiyun #define RT5663_ADC_RCH_LPF1_H0			0x03d3
897*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF1_A1			0x03d4
898*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF1_A1			0x03d5
899*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF1_A2			0x03d6
900*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF1_A2			0x03d7
901*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF1_H0			0x03d8
902*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF1_H0			0x03d9
903*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF2_A1			0x03da
904*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF2_A1			0x03db
905*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF2_A2			0x03dc
906*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF2_A2			0x03dd
907*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF2_H0			0x03de
908*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF2_H0			0x03df
909*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF3_A1			0x03e0
910*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF3_A1			0x03e1
911*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF3_A2			0x03e2
912*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF3_A2			0x03e3
913*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF3_H0			0x03e4
914*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF3_H0			0x03e5
915*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF4_A1			0x03e6
916*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF4_A1			0x03e7
917*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF4_A2			0x03e8
918*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF4_A2			0x03e9
919*4882a593Smuzhiyun #define RT5663_ADC_LCH_BPF4_H0			0x03ea
920*4882a593Smuzhiyun #define RT5663_ADC_RCH_BPF4_H0			0x03eb
921*4882a593Smuzhiyun #define RT5663_ADC_LCH_HPF1_A1			0x03ec
922*4882a593Smuzhiyun #define RT5663_ADC_RCH_HPF1_A1			0x03ed
923*4882a593Smuzhiyun #define RT5663_ADC_LCH_HPF1_H0			0x03ee
924*4882a593Smuzhiyun #define RT5663_ADC_RCH_HPF1_H0			0x03ef
925*4882a593Smuzhiyun #define RT5663_ADC_EQ_PRE_VOL_L			0x03f0
926*4882a593Smuzhiyun #define RT5663_ADC_EQ_PRE_VOL_R			0x03f1
927*4882a593Smuzhiyun #define RT5663_ADC_EQ_POST_VOL_L		0x03f2
928*4882a593Smuzhiyun #define RT5663_ADC_EQ_POST_VOL_R		0x03f3
929*4882a593Smuzhiyun 
930*4882a593Smuzhiyun /* RECMIX Control (0x0010) */
931*4882a593Smuzhiyun #define RT5663_RECMIX1_BST1_MASK		(0x1)
932*4882a593Smuzhiyun #define RT5663_RECMIX1_BST1_SHIFT		0
933*4882a593Smuzhiyun #define RT5663_RECMIX1_BST1_ON			(0x0)
934*4882a593Smuzhiyun #define RT5663_RECMIX1_BST1_OFF			(0x1)
935*4882a593Smuzhiyun 
936*4882a593Smuzhiyun /* Bypass Stereo1 DAC Mixer Control (0x002d) */
937*4882a593Smuzhiyun #define RT5663_DACL1_SRC_MASK			(0x1 << 3)
938*4882a593Smuzhiyun #define RT5663_DACL1_SRC_SHIFT			3
939*4882a593Smuzhiyun #define RT5663_DACR1_SRC_MASK			(0x1 << 2)
940*4882a593Smuzhiyun #define RT5663_DACR1_SRC_SHIFT			2
941*4882a593Smuzhiyun 
942*4882a593Smuzhiyun /* TDM control 2 (0x0078) */
943*4882a593Smuzhiyun #define RT5663_DATA_SWAP_ADCDAT1_MASK		(0x3 << 14)
944*4882a593Smuzhiyun #define RT5663_DATA_SWAP_ADCDAT1_SHIFT		14
945*4882a593Smuzhiyun #define RT5663_DATA_SWAP_ADCDAT1_LR		(0x0 << 14)
946*4882a593Smuzhiyun #define RT5663_DATA_SWAP_ADCDAT1_RL		(0x1 << 14)
947*4882a593Smuzhiyun #define RT5663_DATA_SWAP_ADCDAT1_LL		(0x2 << 14)
948*4882a593Smuzhiyun #define RT5663_DATA_SWAP_ADCDAT1_RR		(0x3 << 14)
949*4882a593Smuzhiyun 
950*4882a593Smuzhiyun /* TDM control 5 (0x007b) */
951*4882a593Smuzhiyun #define RT5663_TDM_LENGTN_MASK			(0x3)
952*4882a593Smuzhiyun #define RT5663_TDM_LENGTN_SHIFT			0
953*4882a593Smuzhiyun #define RT5663_TDM_LENGTN_16			(0x0)
954*4882a593Smuzhiyun #define RT5663_TDM_LENGTN_20			(0x1)
955*4882a593Smuzhiyun #define RT5663_TDM_LENGTN_24			(0x2)
956*4882a593Smuzhiyun #define RT5663_TDM_LENGTN_32			(0x3)
957*4882a593Smuzhiyun 
958*4882a593Smuzhiyun /* PLL tracking mode 1 (0x0083) */
959*4882a593Smuzhiyun #define RT5663_I2S1_ASRC_MASK			(0x1 << 11)
960*4882a593Smuzhiyun #define RT5663_I2S1_ASRC_SHIFT			11
961*4882a593Smuzhiyun #define RT5663_DAC_STO1_ASRC_MASK		(0x1 << 10)
962*4882a593Smuzhiyun #define RT5663_DAC_STO1_ASRC_SHIFT		10
963*4882a593Smuzhiyun #define RT5663_ADC_STO1_ASRC_MASK		(0x1 << 3)
964*4882a593Smuzhiyun #define RT5663_ADC_STO1_ASRC_SHIFT		3
965*4882a593Smuzhiyun 
966*4882a593Smuzhiyun /* PLL tracking mode 2 (0x0084)*/
967*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_MASK		(0x7 << 12)
968*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_SHIFT		12
969*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_SYSCLK		(0x0 << 12)
970*4882a593Smuzhiyun #define RT5663_DA_STO1_TRACK_I2S1		(0x1 << 12)
971*4882a593Smuzhiyun #define RT5663_AD_STO1_TRACK_MASK		(0x7)
972*4882a593Smuzhiyun #define RT5663_AD_STO1_TRACK_SHIFT		0
973*4882a593Smuzhiyun #define RT5663_AD_STO1_TRACK_SYSCLK		(0x0)
974*4882a593Smuzhiyun #define RT5663_AD_STO1_TRACK_I2S1		(0x1)
975*4882a593Smuzhiyun 
976*4882a593Smuzhiyun /* HPOUT Charge pump control 1 (0x0091) */
977*4882a593Smuzhiyun #define RT5663_SI_HP_MASK			(0x1 << 12)
978*4882a593Smuzhiyun #define RT5663_SI_HP_SHIFT			12
979*4882a593Smuzhiyun #define RT5663_SI_HP_EN				(0x1 << 12)
980*4882a593Smuzhiyun #define RT5663_SI_HP_DIS			(0x0 << 12)
981*4882a593Smuzhiyun 
982*4882a593Smuzhiyun /* GPIO Control 2 (0x00b6) */
983*4882a593Smuzhiyun #define RT5663_GP1_PIN_CONF_MASK		(0x1 << 2)
984*4882a593Smuzhiyun #define RT5663_GP1_PIN_CONF_SHIFT		2
985*4882a593Smuzhiyun #define RT5663_GP1_PIN_CONF_OUTPUT		(0x1 << 2)
986*4882a593Smuzhiyun #define RT5663_GP1_PIN_CONF_INPUT		(0x0 << 2)
987*4882a593Smuzhiyun 
988*4882a593Smuzhiyun /* GPIO Control 2 (0x00b7) */
989*4882a593Smuzhiyun #define RT5663_EN_IRQ_INLINE_MASK		(0x1 << 3)
990*4882a593Smuzhiyun #define RT5663_EN_IRQ_INLINE_SHIFT		3
991*4882a593Smuzhiyun #define RT5663_EN_IRQ_INLINE_NOR		(0x1 << 3)
992*4882a593Smuzhiyun #define RT5663_EN_IRQ_INLINE_BYP		(0x0 << 3)
993*4882a593Smuzhiyun 
994*4882a593Smuzhiyun /* GPIO Control 1 (0x00c0) */
995*4882a593Smuzhiyun #define RT5663_GPIO1_TYPE_MASK			(0x1 << 15)
996*4882a593Smuzhiyun #define RT5663_GPIO1_TYPE_SHIFT			15
997*4882a593Smuzhiyun #define RT5663_GPIO1_TYPE_EN			(0x1 << 15)
998*4882a593Smuzhiyun #define RT5663_GPIO1_TYPE_DIS			(0x0 << 15)
999*4882a593Smuzhiyun 
1000*4882a593Smuzhiyun /* IRQ Control 1 (0x00c1) */
1001*4882a593Smuzhiyun #define RT5663_EN_IRQ_JD1_MASK			(0x1 << 6)
1002*4882a593Smuzhiyun #define RT5663_EN_IRQ_JD1_SHIFT			6
1003*4882a593Smuzhiyun #define RT5663_EN_IRQ_JD1_EN			(0x1 << 6)
1004*4882a593Smuzhiyun #define RT5663_EN_IRQ_JD1_DIS			(0x0 << 6)
1005*4882a593Smuzhiyun #define RT5663_SEL_GPIO1_MASK			(0x1 << 2)
1006*4882a593Smuzhiyun #define RT5663_SEL_GPIO1_SHIFT			6
1007*4882a593Smuzhiyun #define RT5663_SEL_GPIO1_EN			(0x1 << 2)
1008*4882a593Smuzhiyun #define RT5663_SEL_GPIO1_DIS			(0x0 << 2)
1009*4882a593Smuzhiyun 
1010*4882a593Smuzhiyun /* Inline Command Function 2 (0x00dc) */
1011*4882a593Smuzhiyun #define RT5663_PWR_MIC_DET_MASK			(0x1)
1012*4882a593Smuzhiyun #define RT5663_PWR_MIC_DET_SHIFT		0
1013*4882a593Smuzhiyun #define RT5663_PWR_MIC_DET_ON			(0x1)
1014*4882a593Smuzhiyun #define RT5663_PWR_MIC_DET_OFF			(0x0)
1015*4882a593Smuzhiyun 
1016*4882a593Smuzhiyun /* Embeeded Jack and Type Detection Control 1 (0x00e6)*/
1017*4882a593Smuzhiyun #define RT5663_CBJ_DET_MASK			(0x1 << 15)
1018*4882a593Smuzhiyun #define RT5663_CBJ_DET_SHIFT			15
1019*4882a593Smuzhiyun #define RT5663_CBJ_DET_DIS			(0x0 << 15)
1020*4882a593Smuzhiyun #define RT5663_CBJ_DET_EN			(0x1 << 15)
1021*4882a593Smuzhiyun #define RT5663_EXT_JD_MASK			(0x1 << 11)
1022*4882a593Smuzhiyun #define RT5663_EXT_JD_SHIFT			11
1023*4882a593Smuzhiyun #define RT5663_EXT_JD_EN			(0x1 << 11)
1024*4882a593Smuzhiyun #define RT5663_EXT_JD_DIS			(0x0 << 11)
1025*4882a593Smuzhiyun #define RT5663_POL_EXT_JD_MASK			(0x1 << 10)
1026*4882a593Smuzhiyun #define RT5663_POL_EXT_JD_SHIFT			10
1027*4882a593Smuzhiyun #define RT5663_POL_EXT_JD_EN			(0x1 << 10)
1028*4882a593Smuzhiyun #define RT5663_POL_EXT_JD_DIS			(0x0 << 10)
1029*4882a593Smuzhiyun #define RT5663_EM_JD_MASK			(0x1 << 7)
1030*4882a593Smuzhiyun #define RT5663_EM_JD_SHIFT			7
1031*4882a593Smuzhiyun #define RT5663_EM_JD_NOR			(0x1 << 7)
1032*4882a593Smuzhiyun #define RT5663_EM_JD_RST			(0x0 << 7)
1033*4882a593Smuzhiyun 
1034*4882a593Smuzhiyun /* DACREF LDO Control (0x0112)*/
1035*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREFL_MASK		(0x1 << 9)
1036*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREFL_SHIFT		9
1037*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREFR_MASK		(0x1 << 1)
1038*4882a593Smuzhiyun #define RT5663_PWR_LDO_DACREFR_SHIFT		1
1039*4882a593Smuzhiyun 
1040*4882a593Smuzhiyun /* Stereo Dynamic Range Enhancement Control 9 (0x0168, 0x0169)*/
1041*4882a593Smuzhiyun #define RT5663_DRE_GAIN_HP_MASK			(0x1f)
1042*4882a593Smuzhiyun #define RT5663_DRE_GAIN_HP_SHIFT		0
1043*4882a593Smuzhiyun 
1044*4882a593Smuzhiyun /* Combo Jack Control (0x0250) */
1045*4882a593Smuzhiyun #define RT5663_INBUF_CBJ_BST1_MASK		(0x1 << 11)
1046*4882a593Smuzhiyun #define RT5663_INBUF_CBJ_BST1_SHIFT		11
1047*4882a593Smuzhiyun #define RT5663_INBUF_CBJ_BST1_ON		(0x1 << 11)
1048*4882a593Smuzhiyun #define RT5663_INBUF_CBJ_BST1_OFF		(0x0 << 11)
1049*4882a593Smuzhiyun #define RT5663_CBJ_SENSE_BST1_MASK		(0x1 << 10)
1050*4882a593Smuzhiyun #define RT5663_CBJ_SENSE_BST1_SHIFT		10
1051*4882a593Smuzhiyun #define RT5663_CBJ_SENSE_BST1_L			(0x1 << 10)
1052*4882a593Smuzhiyun #define RT5663_CBJ_SENSE_BST1_R			(0x0 << 10)
1053*4882a593Smuzhiyun 
1054*4882a593Smuzhiyun /* Combo Jack Control (0x0251) */
1055*4882a593Smuzhiyun #define RT5663_GAIN_BST1_MASK			(0xf)
1056*4882a593Smuzhiyun #define RT5663_GAIN_BST1_SHIFT			0
1057*4882a593Smuzhiyun 
1058*4882a593Smuzhiyun /* Dummy register 1 (0x02fa) */
1059*4882a593Smuzhiyun #define RT5663_EMB_CLK_MASK			(0x1 << 9)
1060*4882a593Smuzhiyun #define RT5663_EMB_CLK_SHIFT			9
1061*4882a593Smuzhiyun #define RT5663_EMB_CLK_EN			(0x1 << 9)
1062*4882a593Smuzhiyun #define RT5663_EMB_CLK_DIS			(0x0 << 9)
1063*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_MASK		(0x7 << 6)
1064*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_SHIFT		6
1065*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_0_5			(0x0 << 6)
1066*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_1			(0x1 << 6)
1067*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_2			(0x2 << 6)
1068*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_3			(0x3 << 6)
1069*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_4_1			(0x4 << 6)
1070*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_4_2			(0x5 << 6)
1071*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_6			(0x6 << 6)
1072*4882a593Smuzhiyun #define RT5663_HPA_CPL_BIAS_8			(0x7 << 6)
1073*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_MASK		(0x7 << 3)
1074*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_SHIFT		3
1075*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_0_5			(0x0 << 3)
1076*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_1			(0x1 << 3)
1077*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_2			(0x2 << 3)
1078*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_3			(0x3 << 3)
1079*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_4_1			(0x4 << 3)
1080*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_4_2			(0x5 << 3)
1081*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_6			(0x6 << 3)
1082*4882a593Smuzhiyun #define RT5663_HPA_CPR_BIAS_8			(0x7 << 3)
1083*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_MASK			(0x7)
1084*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_SHIFT			0
1085*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_0_5			(0x0)
1086*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_1			(0x1)
1087*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_2			(0x2)
1088*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_3			(0x3)
1089*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_4_1			(0x4)
1090*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_4_2			(0x5)
1091*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_6			(0x6)
1092*4882a593Smuzhiyun #define RT5663_DUMMY_BIAS_8			(0x7)
1093*4882a593Smuzhiyun 
1094*4882a593Smuzhiyun 
1095*4882a593Smuzhiyun /* System Clock Source */
1096*4882a593Smuzhiyun enum {
1097*4882a593Smuzhiyun 	RT5663_SCLK_S_MCLK,
1098*4882a593Smuzhiyun 	RT5663_SCLK_S_PLL1,
1099*4882a593Smuzhiyun 	RT5663_SCLK_S_RCCLK,
1100*4882a593Smuzhiyun };
1101*4882a593Smuzhiyun 
1102*4882a593Smuzhiyun /* PLL1 Source */
1103*4882a593Smuzhiyun enum {
1104*4882a593Smuzhiyun 	RT5663_PLL1_S_MCLK,
1105*4882a593Smuzhiyun 	RT5663_PLL1_S_BCLK1,
1106*4882a593Smuzhiyun };
1107*4882a593Smuzhiyun 
1108*4882a593Smuzhiyun enum {
1109*4882a593Smuzhiyun 	RT5663_AIF,
1110*4882a593Smuzhiyun 	RT5663_AIFS,
1111*4882a593Smuzhiyun };
1112*4882a593Smuzhiyun 
1113*4882a593Smuzhiyun /* asrc clock source */
1114*4882a593Smuzhiyun enum {
1115*4882a593Smuzhiyun 	RT5663_CLK_SEL_SYS = 0x0,
1116*4882a593Smuzhiyun 	RT5663_CLK_SEL_I2S1_ASRC = 0x1,
1117*4882a593Smuzhiyun };
1118*4882a593Smuzhiyun 
1119*4882a593Smuzhiyun /* filter mask */
1120*4882a593Smuzhiyun enum {
1121*4882a593Smuzhiyun 	RT5663_DA_STEREO_FILTER = 0x1,
1122*4882a593Smuzhiyun 	RT5663_AD_STEREO_FILTER = 0x2,
1123*4882a593Smuzhiyun };
1124*4882a593Smuzhiyun 
1125*4882a593Smuzhiyun int rt5663_sel_asrc_clk_src(struct snd_soc_component *component,
1126*4882a593Smuzhiyun 	unsigned int filter_mask, unsigned int clk_src);
1127*4882a593Smuzhiyun 
1128*4882a593Smuzhiyun #endif /* __RT5663_H__ */
1129