xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/max98090.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * max98090.h -- MAX98090 ALSA SoC Audio driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright 2011-2012 Maxim Integrated Products
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef _MAX98090_H
9*4882a593Smuzhiyun #define _MAX98090_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun /*
12*4882a593Smuzhiyun  * The default operating frequency for a DMIC attached to the codec.
13*4882a593Smuzhiyun  * This can be overridden by a device tree property.
14*4882a593Smuzhiyun  */
15*4882a593Smuzhiyun #define MAX98090_DEFAULT_DMIC_FREQ		2500000
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun /*
18*4882a593Smuzhiyun  * MAX98090 Register Definitions
19*4882a593Smuzhiyun  */
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #define M98090_REG_SOFTWARE_RESET		0x00
22*4882a593Smuzhiyun #define M98090_REG_DEVICE_STATUS		0x01
23*4882a593Smuzhiyun #define M98090_REG_JACK_STATUS			0x02
24*4882a593Smuzhiyun #define M98090_REG_INTERRUPT_S			0x03
25*4882a593Smuzhiyun #define M98090_REG_QUICK_SYSTEM_CLOCK		0x04
26*4882a593Smuzhiyun #define M98090_REG_QUICK_SAMPLE_RATE		0x05
27*4882a593Smuzhiyun #define M98090_REG_DAI_INTERFACE		0x06
28*4882a593Smuzhiyun #define M98090_REG_DAC_PATH			0x07
29*4882a593Smuzhiyun #define M98090_REG_MIC_DIRECT_TO_ADC		0x08
30*4882a593Smuzhiyun #define M98090_REG_LINE_TO_ADC			0x09
31*4882a593Smuzhiyun #define M98090_REG_ANALOG_MIC_LOOP		0x0A
32*4882a593Smuzhiyun #define M98090_REG_ANALOG_LINE_LOOP		0x0B
33*4882a593Smuzhiyun #define M98090_REG_RESERVED			0x0C
34*4882a593Smuzhiyun #define M98090_REG_LINE_INPUT_CONFIG		0x0D
35*4882a593Smuzhiyun #define M98090_REG_LINE_INPUT_LEVEL		0x0E
36*4882a593Smuzhiyun #define M98090_REG_INPUT_MODE			0x0F
37*4882a593Smuzhiyun #define M98090_REG_MIC1_INPUT_LEVEL		0x10
38*4882a593Smuzhiyun #define M98090_REG_MIC2_INPUT_LEVEL		0x11
39*4882a593Smuzhiyun #define M98090_REG_MIC_BIAS_VOLTAGE		0x12
40*4882a593Smuzhiyun #define M98090_REG_DIGITAL_MIC_ENABLE		0x13
41*4882a593Smuzhiyun #define M98090_REG_DIGITAL_MIC_CONFIG		0x14
42*4882a593Smuzhiyun #define M98090_REG_LEFT_ADC_MIXER		0x15
43*4882a593Smuzhiyun #define M98090_REG_RIGHT_ADC_MIXER		0x16
44*4882a593Smuzhiyun #define M98090_REG_LEFT_ADC_LEVEL		0x17
45*4882a593Smuzhiyun #define M98090_REG_RIGHT_ADC_LEVEL		0x18
46*4882a593Smuzhiyun #define M98090_REG_ADC_BIQUAD_LEVEL		0x19
47*4882a593Smuzhiyun #define M98090_REG_ADC_SIDETONE			0x1A
48*4882a593Smuzhiyun #define M98090_REG_SYSTEM_CLOCK			0x1B
49*4882a593Smuzhiyun #define M98090_REG_CLOCK_MODE			0x1C
50*4882a593Smuzhiyun #define M98090_REG_CLOCK_RATIO_NI_MSB		0x1D
51*4882a593Smuzhiyun #define M98090_REG_CLOCK_RATIO_NI_LSB		0x1E
52*4882a593Smuzhiyun #define M98090_REG_CLOCK_RATIO_MI_MSB		0x1F
53*4882a593Smuzhiyun #define M98090_REG_CLOCK_RATIO_MI_LSB		0x20
54*4882a593Smuzhiyun #define M98090_REG_MASTER_MODE			0x21
55*4882a593Smuzhiyun #define M98090_REG_INTERFACE_FORMAT		0x22
56*4882a593Smuzhiyun #define M98090_REG_TDM_CONTROL			0x23
57*4882a593Smuzhiyun #define M98090_REG_TDM_FORMAT			0x24
58*4882a593Smuzhiyun #define M98090_REG_IO_CONFIGURATION		0x25
59*4882a593Smuzhiyun #define M98090_REG_FILTER_CONFIG		0x26
60*4882a593Smuzhiyun #define M98090_REG_DAI_PLAYBACK_LEVEL		0x27
61*4882a593Smuzhiyun #define M98090_REG_DAI_PLAYBACK_LEVEL_EQ	0x28
62*4882a593Smuzhiyun #define M98090_REG_LEFT_HP_MIXER		0x29
63*4882a593Smuzhiyun #define M98090_REG_RIGHT_HP_MIXER		0x2A
64*4882a593Smuzhiyun #define M98090_REG_HP_CONTROL			0x2B
65*4882a593Smuzhiyun #define M98090_REG_LEFT_HP_VOLUME		0x2C
66*4882a593Smuzhiyun #define M98090_REG_RIGHT_HP_VOLUME		0x2D
67*4882a593Smuzhiyun #define M98090_REG_LEFT_SPK_MIXER		0x2E
68*4882a593Smuzhiyun #define M98090_REG_RIGHT_SPK_MIXER		0x2F
69*4882a593Smuzhiyun #define M98090_REG_SPK_CONTROL			0x30
70*4882a593Smuzhiyun #define M98090_REG_LEFT_SPK_VOLUME		0x31
71*4882a593Smuzhiyun #define M98090_REG_RIGHT_SPK_VOLUME		0x32
72*4882a593Smuzhiyun #define M98090_REG_DRC_TIMING			0x33
73*4882a593Smuzhiyun #define M98090_REG_DRC_COMPRESSOR		0x34
74*4882a593Smuzhiyun #define M98090_REG_DRC_EXPANDER			0x35
75*4882a593Smuzhiyun #define M98090_REG_DRC_GAIN			0x36
76*4882a593Smuzhiyun #define M98090_REG_RCV_LOUTL_MIXER		0x37
77*4882a593Smuzhiyun #define M98090_REG_RCV_LOUTL_CONTROL		0x38
78*4882a593Smuzhiyun #define M98090_REG_RCV_LOUTL_VOLUME		0x39
79*4882a593Smuzhiyun #define M98090_REG_LOUTR_MIXER			0x3A
80*4882a593Smuzhiyun #define M98090_REG_LOUTR_CONTROL		0x3B
81*4882a593Smuzhiyun #define M98090_REG_LOUTR_VOLUME			0x3C
82*4882a593Smuzhiyun #define M98090_REG_JACK_DETECT			0x3D
83*4882a593Smuzhiyun #define M98090_REG_INPUT_ENABLE			0x3E
84*4882a593Smuzhiyun #define M98090_REG_OUTPUT_ENABLE		0x3F
85*4882a593Smuzhiyun #define M98090_REG_LEVEL_CONTROL		0x40
86*4882a593Smuzhiyun #define M98090_REG_DSP_FILTER_ENABLE		0x41
87*4882a593Smuzhiyun #define M98090_REG_BIAS_CONTROL			0x42
88*4882a593Smuzhiyun #define M98090_REG_DAC_CONTROL			0x43
89*4882a593Smuzhiyun #define M98090_REG_ADC_CONTROL			0x44
90*4882a593Smuzhiyun #define M98090_REG_DEVICE_SHUTDOWN		0x45
91*4882a593Smuzhiyun #define M98090_REG_EQUALIZER_BASE		0x46
92*4882a593Smuzhiyun #define M98090_REG_RECORD_BIQUAD_BASE		0xAF
93*4882a593Smuzhiyun #define M98090_REG_DMIC3_VOLUME			0xBE
94*4882a593Smuzhiyun #define M98090_REG_DMIC4_VOLUME			0xBF
95*4882a593Smuzhiyun #define M98090_REG_DMIC34_BQ_PREATTEN		0xC0
96*4882a593Smuzhiyun #define M98090_REG_RECORD_TDM_SLOT		0xC1
97*4882a593Smuzhiyun #define M98090_REG_SAMPLE_RATE			0xC2
98*4882a593Smuzhiyun #define M98090_REG_DMIC34_BIQUAD_BASE		0xC3
99*4882a593Smuzhiyun #define M98090_REG_REVISION_ID			0xFF
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define M98090_REG_CNT				(0xFF+1)
102*4882a593Smuzhiyun #define MAX98090_MAX_REGISTER			0xFF
103*4882a593Smuzhiyun 
104*4882a593Smuzhiyun /* MAX98090 Register Bit Fields */
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun /*
107*4882a593Smuzhiyun  * M98090_REG_SOFTWARE_RESET
108*4882a593Smuzhiyun  */
109*4882a593Smuzhiyun #define M98090_SWRESET_MASK		(1<<7)
110*4882a593Smuzhiyun #define M98090_SWRESET_SHIFT		7
111*4882a593Smuzhiyun #define M98090_SWRESET_WIDTH		1
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun /*
114*4882a593Smuzhiyun  * M98090_REG_DEVICE_STATUS
115*4882a593Smuzhiyun  */
116*4882a593Smuzhiyun #define M98090_CLD_MASK			(1<<7)
117*4882a593Smuzhiyun #define M98090_CLD_SHIFT		7
118*4882a593Smuzhiyun #define M98090_CLD_WIDTH		1
119*4882a593Smuzhiyun #define M98090_SLD_MASK			(1<<6)
120*4882a593Smuzhiyun #define M98090_SLD_SHIFT		6
121*4882a593Smuzhiyun #define M98090_SLD_WIDTH		1
122*4882a593Smuzhiyun #define M98090_ULK_MASK			(1<<5)
123*4882a593Smuzhiyun #define M98090_ULK_SHIFT		5
124*4882a593Smuzhiyun #define M98090_ULK_WIDTH		1
125*4882a593Smuzhiyun #define M98090_JDET_MASK		(1<<2)
126*4882a593Smuzhiyun #define M98090_JDET_SHIFT		2
127*4882a593Smuzhiyun #define M98090_JDET_WIDTH		1
128*4882a593Smuzhiyun #define M98090_DRCACT_MASK		(1<<1)
129*4882a593Smuzhiyun #define M98090_DRCACT_SHIFT		1
130*4882a593Smuzhiyun #define M98090_DRCACT_WIDTH		1
131*4882a593Smuzhiyun #define M98090_DRCCLP_MASK		(1<<0)
132*4882a593Smuzhiyun #define M98090_DRCCLP_SHIFT		0
133*4882a593Smuzhiyun #define M98090_DRCCLP_WIDTH		1
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun /*
136*4882a593Smuzhiyun  * M98090_REG_JACK_STATUS
137*4882a593Smuzhiyun  */
138*4882a593Smuzhiyun #define M98090_LSNS_MASK		(1<<2)
139*4882a593Smuzhiyun #define M98090_LSNS_SHIFT		2
140*4882a593Smuzhiyun #define M98090_LSNS_WIDTH		1
141*4882a593Smuzhiyun #define M98090_JKSNS_MASK		(1<<1)
142*4882a593Smuzhiyun #define M98090_JKSNS_SHIFT		1
143*4882a593Smuzhiyun #define M98090_JKSNS_WIDTH		1
144*4882a593Smuzhiyun 
145*4882a593Smuzhiyun /*
146*4882a593Smuzhiyun  * M98090_REG_INTERRUPT_S
147*4882a593Smuzhiyun  */
148*4882a593Smuzhiyun #define M98090_ICLD_MASK		(1<<7)
149*4882a593Smuzhiyun #define M98090_ICLD_SHIFT		7
150*4882a593Smuzhiyun #define M98090_ICLD_WIDTH		1
151*4882a593Smuzhiyun #define M98090_ISLD_MASK		(1<<6)
152*4882a593Smuzhiyun #define M98090_ISLD_SHIFT		6
153*4882a593Smuzhiyun #define M98090_ISLD_WIDTH		1
154*4882a593Smuzhiyun #define M98090_IULK_MASK		(1<<5)
155*4882a593Smuzhiyun #define M98090_IULK_SHIFT		5
156*4882a593Smuzhiyun #define M98090_IULK_WIDTH		1
157*4882a593Smuzhiyun #define M98090_IJDET_MASK		(1<<2)
158*4882a593Smuzhiyun #define M98090_IJDET_SHIFT		2
159*4882a593Smuzhiyun #define M98090_IJDET_WIDTH		1
160*4882a593Smuzhiyun #define M98090_IDRCACT_MASK		(1<<1)
161*4882a593Smuzhiyun #define M98090_IDRCACT_SHIFT		1
162*4882a593Smuzhiyun #define M98090_IDRCACT_WIDTH		1
163*4882a593Smuzhiyun #define M98090_IDRCCLP_MASK		(1<<0)
164*4882a593Smuzhiyun #define M98090_IDRCCLP_SHIFT		0
165*4882a593Smuzhiyun #define M98090_IDRCCLP_WIDTH		1
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun /*
168*4882a593Smuzhiyun  * M98090_REG_QUICK_SYSTEM_CLOCK
169*4882a593Smuzhiyun  */
170*4882a593Smuzhiyun #define M98090_26M_MASK			(1<<7)
171*4882a593Smuzhiyun #define M98090_26M_SHIFT		7
172*4882a593Smuzhiyun #define M98090_26M_WIDTH		1
173*4882a593Smuzhiyun #define M98090_19P2M_MASK		(1<<6)
174*4882a593Smuzhiyun #define M98090_19P2M_SHIFT		6
175*4882a593Smuzhiyun #define M98090_19P2M_WIDTH		1
176*4882a593Smuzhiyun #define M98090_13M_MASK			(1<<5)
177*4882a593Smuzhiyun #define M98090_13M_SHIFT		5
178*4882a593Smuzhiyun #define M98090_13M_WIDTH		1
179*4882a593Smuzhiyun #define M98090_12P288M_MASK		(1<<4)
180*4882a593Smuzhiyun #define M98090_12P288M_SHIFT		4
181*4882a593Smuzhiyun #define M98090_12P288M_WIDTH		1
182*4882a593Smuzhiyun #define M98090_12M_MASK			(1<<3)
183*4882a593Smuzhiyun #define M98090_12M_SHIFT		3
184*4882a593Smuzhiyun #define M98090_12M_WIDTH		1
185*4882a593Smuzhiyun #define M98090_11P2896M_MASK		(1<<2)
186*4882a593Smuzhiyun #define M98090_11P2896M_SHIFT		2
187*4882a593Smuzhiyun #define M98090_11P2896M_WIDTH		1
188*4882a593Smuzhiyun #define M98090_256FS_MASK		(1<<0)
189*4882a593Smuzhiyun #define M98090_256FS_SHIFT		0
190*4882a593Smuzhiyun #define M98090_256FS_WIDTH		1
191*4882a593Smuzhiyun #define M98090_CLK_ALL_SHIFT		0
192*4882a593Smuzhiyun #define M98090_CLK_ALL_WIDTH		8
193*4882a593Smuzhiyun #define M98090_CLK_ALL_NUM		(1<<M98090_CLK_ALL_WIDTH)
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun /*
196*4882a593Smuzhiyun  * M98090_REG_QUICK_SAMPLE_RATE
197*4882a593Smuzhiyun  */
198*4882a593Smuzhiyun #define M98090_SR_96K_MASK		(1<<5)
199*4882a593Smuzhiyun #define M98090_SR_96K_SHIFT		5
200*4882a593Smuzhiyun #define M98090_SR_96K_WIDTH		1
201*4882a593Smuzhiyun #define M98090_SR_32K_MASK		(1<<4)
202*4882a593Smuzhiyun #define M98090_SR_32K_SHIFT		4
203*4882a593Smuzhiyun #define M98090_SR_32K_WIDTH		1
204*4882a593Smuzhiyun #define M98090_SR_48K_MASK		(1<<3)
205*4882a593Smuzhiyun #define M98090_SR_48K_SHIFT		3
206*4882a593Smuzhiyun #define M98090_SR_48K_WIDTH		1
207*4882a593Smuzhiyun #define M98090_SR_44K1_MASK		(1<<2)
208*4882a593Smuzhiyun #define M98090_SR_44K1_SHIFT		2
209*4882a593Smuzhiyun #define M98090_SR_44K1_WIDTH		1
210*4882a593Smuzhiyun #define M98090_SR_16K_MASK		(1<<1)
211*4882a593Smuzhiyun #define M98090_SR_16K_SHIFT		1
212*4882a593Smuzhiyun #define M98090_SR_16K_WIDTH		1
213*4882a593Smuzhiyun #define M98090_SR_8K_MASK		(1<<0)
214*4882a593Smuzhiyun #define M98090_SR_8K_SHIFT		0
215*4882a593Smuzhiyun #define M98090_SR_8K_WIDTH		1
216*4882a593Smuzhiyun #define M98090_SR_MASK			0x3F
217*4882a593Smuzhiyun #define M98090_SR_ALL_SHIFT		0
218*4882a593Smuzhiyun #define M98090_SR_ALL_WIDTH		8
219*4882a593Smuzhiyun #define M98090_SR_ALL_NUM		(1<<M98090_SR_ALL_WIDTH)
220*4882a593Smuzhiyun 
221*4882a593Smuzhiyun /*
222*4882a593Smuzhiyun  * M98090_REG_DAI_INTERFACE
223*4882a593Smuzhiyun  */
224*4882a593Smuzhiyun #define M98090_RJ_M_MASK		(1<<5)
225*4882a593Smuzhiyun #define M98090_RJ_M_SHIFT		5
226*4882a593Smuzhiyun #define M98090_RJ_M_WIDTH		1
227*4882a593Smuzhiyun #define M98090_RJ_S_MASK		(1<<4)
228*4882a593Smuzhiyun #define M98090_RJ_S_SHIFT		4
229*4882a593Smuzhiyun #define M98090_RJ_S_WIDTH		1
230*4882a593Smuzhiyun #define M98090_LJ_M_MASK		(1<<3)
231*4882a593Smuzhiyun #define M98090_LJ_M_SHIFT		3
232*4882a593Smuzhiyun #define M98090_LJ_M_WIDTH		1
233*4882a593Smuzhiyun #define M98090_LJ_S_MASK		(1<<2)
234*4882a593Smuzhiyun #define M98090_LJ_S_SHIFT		2
235*4882a593Smuzhiyun #define M98090_LJ_S_WIDTH		1
236*4882a593Smuzhiyun #define M98090_I2S_M_MASK		(1<<1)
237*4882a593Smuzhiyun #define M98090_I2S_M_SHIFT		1
238*4882a593Smuzhiyun #define M98090_I2S_M_WIDTH		1
239*4882a593Smuzhiyun #define M98090_I2S_S_MASK		(1<<0)
240*4882a593Smuzhiyun #define M98090_I2S_S_SHIFT		0
241*4882a593Smuzhiyun #define M98090_I2S_S_WIDTH		1
242*4882a593Smuzhiyun #define M98090_DAI_ALL_SHIFT		0
243*4882a593Smuzhiyun #define M98090_DAI_ALL_WIDTH		8
244*4882a593Smuzhiyun #define M98090_DAI_ALL_NUM		(1<<M98090_DAI_ALL_WIDTH)
245*4882a593Smuzhiyun 
246*4882a593Smuzhiyun /*
247*4882a593Smuzhiyun  * M98090_REG_DAC_PATH
248*4882a593Smuzhiyun  */
249*4882a593Smuzhiyun #define M98090_DIG2_HP_MASK		(1<<7)
250*4882a593Smuzhiyun #define M98090_DIG2_HP_SHIFT		7
251*4882a593Smuzhiyun #define M98090_DIG2_HP_WIDTH		1
252*4882a593Smuzhiyun #define M98090_DIG2_EAR_MASK		(1<<6)
253*4882a593Smuzhiyun #define M98090_DIG2_EAR_SHIFT		6
254*4882a593Smuzhiyun #define M98090_DIG2_EAR_WIDTH		1
255*4882a593Smuzhiyun #define M98090_DIG2_SPK_MASK		(1<<5)
256*4882a593Smuzhiyun #define M98090_DIG2_SPK_SHIFT		5
257*4882a593Smuzhiyun #define M98090_DIG2_SPK_WIDTH		1
258*4882a593Smuzhiyun #define M98090_DIG2_LOUT_MASK		(1<<4)
259*4882a593Smuzhiyun #define M98090_DIG2_LOUT_SHIFT		4
260*4882a593Smuzhiyun #define M98090_DIG2_LOUT_WIDTH		1
261*4882a593Smuzhiyun #define M98090_DIG2_ALL_SHIFT		0
262*4882a593Smuzhiyun #define M98090_DIG2_ALL_WIDTH		8
263*4882a593Smuzhiyun #define M98090_DIG2_ALL_NUM		(1<<M98090_DIG2_ALL_WIDTH)
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun /*
266*4882a593Smuzhiyun  * M98090_REG_MIC_DIRECT_TO_ADC
267*4882a593Smuzhiyun  */
268*4882a593Smuzhiyun #define M98090_IN12_MIC1_MASK		(1<<7)
269*4882a593Smuzhiyun #define M98090_IN12_MIC1_SHIFT		7
270*4882a593Smuzhiyun #define M98090_IN12_MIC1_WIDTH		1
271*4882a593Smuzhiyun #define M98090_IN34_MIC2_MASK		(1<<6)
272*4882a593Smuzhiyun #define M98090_IN34_MIC2_SHIFT		6
273*4882a593Smuzhiyun #define M98090_IN34_MIC2_WIDTH		1
274*4882a593Smuzhiyun #define M98090_IN56_MIC1_MASK		(1<<5)
275*4882a593Smuzhiyun #define M98090_IN56_MIC1_SHIFT		5
276*4882a593Smuzhiyun #define M98090_IN56_MIC1_WIDTH		1
277*4882a593Smuzhiyun #define M98090_IN56_MIC2_MASK		(1<<4)
278*4882a593Smuzhiyun #define M98090_IN56_MIC2_SHIFT		4
279*4882a593Smuzhiyun #define M98090_IN56_MIC2_WIDTH		1
280*4882a593Smuzhiyun #define M98090_IN12_DADC_MASK		(1<<3)
281*4882a593Smuzhiyun #define M98090_IN12_DADC_SHIFT		3
282*4882a593Smuzhiyun #define M98090_IN12_DADC_WIDTH		1
283*4882a593Smuzhiyun #define M98090_IN34_DADC_MASK		(1<<2)
284*4882a593Smuzhiyun #define M98090_IN34_DADC_SHIFT		2
285*4882a593Smuzhiyun #define M98090_IN34_DADC_WIDTH		1
286*4882a593Smuzhiyun #define M98090_IN56_DADC_MASK		(1<<1)
287*4882a593Smuzhiyun #define M98090_IN56_DADC_SHIFT		1
288*4882a593Smuzhiyun #define M98090_IN56_DADC_WIDTH		1
289*4882a593Smuzhiyun #define M98090_MIC_ALL_SHIFT		0
290*4882a593Smuzhiyun #define M98090_MIC_ALL_WIDTH		8
291*4882a593Smuzhiyun #define M98090_MIC_ALL_NUM		(1<<M98090_MIC_ALL_WIDTH)
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun /*
294*4882a593Smuzhiyun  * M98090_REG_LINE_TO_ADC
295*4882a593Smuzhiyun  */
296*4882a593Smuzhiyun #define M98090_IN12S_AB_MASK		(1<<7)
297*4882a593Smuzhiyun #define M98090_IN12S_AB_SHIFT		7
298*4882a593Smuzhiyun #define M98090_IN12S_AB_WIDTH		1
299*4882a593Smuzhiyun #define M98090_IN34S_AB_MASK		(1<<6)
300*4882a593Smuzhiyun #define M98090_IN34S_AB_SHIFT		6
301*4882a593Smuzhiyun #define M98090_IN34S_AB_WIDTH		1
302*4882a593Smuzhiyun #define M98090_IN56S_AB_MASK		(1<<5)
303*4882a593Smuzhiyun #define M98090_IN56S_AB_SHIFT		5
304*4882a593Smuzhiyun #define M98090_IN56S_AB_WIDTH		1
305*4882a593Smuzhiyun #define M98090_IN34D_A_MASK		(1<<4)
306*4882a593Smuzhiyun #define M98090_IN34D_A_SHIFT		4
307*4882a593Smuzhiyun #define M98090_IN34D_A_WIDTH		1
308*4882a593Smuzhiyun #define M98090_IN56D_B_MASK		(1<<3)
309*4882a593Smuzhiyun #define M98090_IN56D_B_SHIFT		3
310*4882a593Smuzhiyun #define M98090_IN56D_B_WIDTH		1
311*4882a593Smuzhiyun #define M98090_LINE_ALL_SHIFT		0
312*4882a593Smuzhiyun #define M98090_LINE_ALL_WIDTH		8
313*4882a593Smuzhiyun #define M98090_LINE_ALL_NUM		(1<<M98090_LINE_ALL_WIDTH)
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun /*
316*4882a593Smuzhiyun  * M98090_REG_ANALOG_MIC_LOOP
317*4882a593Smuzhiyun  */
318*4882a593Smuzhiyun #define M98090_IN12_M1HPL_MASK		(1<<7)
319*4882a593Smuzhiyun #define M98090_IN12_M1HPL_SHIFT		7
320*4882a593Smuzhiyun #define M98090_IN12_M1HPL_WIDTH		1
321*4882a593Smuzhiyun #define M98090_IN12_M1SPKL_MASK		(1<<6)
322*4882a593Smuzhiyun #define M98090_IN12_M1SPKL_SHIFT	6
323*4882a593Smuzhiyun #define M98090_IN12_M1SPKL_WIDTH	1
324*4882a593Smuzhiyun #define M98090_IN12_M1EAR_MASK		(1<<5)
325*4882a593Smuzhiyun #define M98090_IN12_M1EAR_SHIFT		5
326*4882a593Smuzhiyun #define M98090_IN12_M1EAR_WIDTH		1
327*4882a593Smuzhiyun #define M98090_IN12_M1LOUTL_MASK	(1<<4)
328*4882a593Smuzhiyun #define M98090_IN12_M1LOUTL_SHIFT	4
329*4882a593Smuzhiyun #define M98090_IN12_M1LOUTL_WIDTH	1
330*4882a593Smuzhiyun #define M98090_IN34_M2HPR_MASK		(1<<3)
331*4882a593Smuzhiyun #define M98090_IN34_M2HPR_SHIFT		3
332*4882a593Smuzhiyun #define M98090_IN34_M2HPR_WIDTH		1
333*4882a593Smuzhiyun #define M98090_IN34_M2SPKR_MASK		(1<<2)
334*4882a593Smuzhiyun #define M98090_IN34_M2SPKR_SHIFT	2
335*4882a593Smuzhiyun #define M98090_IN34_M2SPKR_WIDTH	1
336*4882a593Smuzhiyun #define M98090_IN34_M2EAR_MASK		(1<<1)
337*4882a593Smuzhiyun #define M98090_IN34_M2EAR_SHIFT		1
338*4882a593Smuzhiyun #define M98090_IN34_M2EAR_WIDTH		1
339*4882a593Smuzhiyun #define M98090_IN34_M2LOUTR_MASK	(1<<0)
340*4882a593Smuzhiyun #define M98090_IN34_M2LOUTR_SHIFT	0
341*4882a593Smuzhiyun #define M98090_IN34_M2LOUTR_WIDTH	1
342*4882a593Smuzhiyun #define M98090_AMIC_ALL_SHIFT		0
343*4882a593Smuzhiyun #define M98090_AMIC_ALL_WIDTH		8
344*4882a593Smuzhiyun #define M98090_AMIC_ALL_NUM		(1<<M98090_AMIC_ALL_WIDTH)
345*4882a593Smuzhiyun 
346*4882a593Smuzhiyun /*
347*4882a593Smuzhiyun  * M98090_REG_ANALOG_LINE_LOOP
348*4882a593Smuzhiyun  */
349*4882a593Smuzhiyun #define M98090_IN12S_ABHP_MASK		(1<<7)
350*4882a593Smuzhiyun #define M98090_IN12S_ABHP_SHIFT		7
351*4882a593Smuzhiyun #define M98090_IN12S_ABHP_WIDTH		1
352*4882a593Smuzhiyun #define M98090_IN34D_ASPKL_MASK		(1<<6)
353*4882a593Smuzhiyun #define M98090_IN34D_ASPKL_SHIFT	6
354*4882a593Smuzhiyun #define M98090_IN34D_ASPKL_WIDTH	1
355*4882a593Smuzhiyun #define M98090_IN34D_AEAR_MASK		(1<<5)
356*4882a593Smuzhiyun #define M98090_IN34D_AEAR_SHIFT		5
357*4882a593Smuzhiyun #define M98090_IN34D_AEAR_WIDTH		1
358*4882a593Smuzhiyun #define M98090_IN12S_ABLOUT_MASK	(1<<4)
359*4882a593Smuzhiyun #define M98090_IN12S_ABLOUT_SHIFT	4
360*4882a593Smuzhiyun #define M98090_IN12S_ABLOUT_WIDTH	1
361*4882a593Smuzhiyun #define M98090_IN34S_ABHP_MASK		(1<<3)
362*4882a593Smuzhiyun #define M98090_IN34S_ABHP_SHIFT		3
363*4882a593Smuzhiyun #define M98090_IN34S_ABHP_WIDTH		1
364*4882a593Smuzhiyun #define M98090_IN56D_BSPKR_MASK		(1<<2)
365*4882a593Smuzhiyun #define M98090_IN56D_BSPKR_SHIFT	2
366*4882a593Smuzhiyun #define M98090_IN56D_BSPKR_WIDTH	1
367*4882a593Smuzhiyun #define M98090_IN56D_BEAR_MASK		(1<<1)
368*4882a593Smuzhiyun #define M98090_IN56D_BEAR_SHIFT		1
369*4882a593Smuzhiyun #define M98090_IN56D_BEAR_WIDTH		1
370*4882a593Smuzhiyun #define M98090_IN34S_ABLOUT_MASK	(1<<0)
371*4882a593Smuzhiyun #define M98090_IN34S_ABLOUT_SHIFT	0
372*4882a593Smuzhiyun #define M98090_IN34S_ABLOUT_WIDTH	1
373*4882a593Smuzhiyun #define M98090_ALIN_ALL_SHIFT		0
374*4882a593Smuzhiyun #define M98090_ALIN_ALL_WIDTH		8
375*4882a593Smuzhiyun #define M98090_ALIN_ALL_NUM		(1<<M98090_ALIN_ALL_WIDTH)
376*4882a593Smuzhiyun 
377*4882a593Smuzhiyun /*
378*4882a593Smuzhiyun  * M98090_REG_RESERVED
379*4882a593Smuzhiyun  */
380*4882a593Smuzhiyun 
381*4882a593Smuzhiyun /*
382*4882a593Smuzhiyun  * M98090_REG_LINE_INPUT_CONFIG
383*4882a593Smuzhiyun  */
384*4882a593Smuzhiyun #define M98090_IN34DIFF_MASK		(1<<7)
385*4882a593Smuzhiyun #define M98090_IN34DIFF_SHIFT		7
386*4882a593Smuzhiyun #define M98090_IN34DIFF_WIDTH		1
387*4882a593Smuzhiyun #define M98090_IN56DIFF_MASK		(1<<6)
388*4882a593Smuzhiyun #define M98090_IN56DIFF_SHIFT		6
389*4882a593Smuzhiyun #define M98090_IN56DIFF_WIDTH		1
390*4882a593Smuzhiyun #define M98090_IN1SEEN_MASK		(1<<5)
391*4882a593Smuzhiyun #define M98090_IN1SEEN_SHIFT		5
392*4882a593Smuzhiyun #define M98090_IN1SEEN_WIDTH		1
393*4882a593Smuzhiyun #define M98090_IN2SEEN_MASK		(1<<4)
394*4882a593Smuzhiyun #define M98090_IN2SEEN_SHIFT		4
395*4882a593Smuzhiyun #define M98090_IN2SEEN_WIDTH		1
396*4882a593Smuzhiyun #define M98090_IN3SEEN_MASK		(1<<3)
397*4882a593Smuzhiyun #define M98090_IN3SEEN_SHIFT		3
398*4882a593Smuzhiyun #define M98090_IN3SEEN_WIDTH		1
399*4882a593Smuzhiyun #define M98090_IN4SEEN_MASK		(1<<2)
400*4882a593Smuzhiyun #define M98090_IN4SEEN_SHIFT		2
401*4882a593Smuzhiyun #define M98090_IN4SEEN_WIDTH		1
402*4882a593Smuzhiyun #define M98090_IN5SEEN_MASK		(1<<1)
403*4882a593Smuzhiyun #define M98090_IN5SEEN_SHIFT		1
404*4882a593Smuzhiyun #define M98090_IN5SEEN_WIDTH		1
405*4882a593Smuzhiyun #define M98090_IN6SEEN_MASK		(1<<0)
406*4882a593Smuzhiyun #define M98090_IN6SEEN_SHIFT		0
407*4882a593Smuzhiyun #define M98090_IN6SEEN_WIDTH		1
408*4882a593Smuzhiyun 
409*4882a593Smuzhiyun /*
410*4882a593Smuzhiyun  * M98090_REG_LINE_INPUT_LEVEL
411*4882a593Smuzhiyun  */
412*4882a593Smuzhiyun #define M98090_MIXG135_MASK		(1<<7)
413*4882a593Smuzhiyun #define M98090_MIXG135_SHIFT		7
414*4882a593Smuzhiyun #define M98090_MIXG135_WIDTH		1
415*4882a593Smuzhiyun #define M98090_MIXG135_NUM		(1<<M98090_MIXG135_WIDTH)
416*4882a593Smuzhiyun #define M98090_MIXG246_MASK		(1<<6)
417*4882a593Smuzhiyun #define M98090_MIXG246_SHIFT		6
418*4882a593Smuzhiyun #define M98090_MIXG246_WIDTH		1
419*4882a593Smuzhiyun #define M98090_MIXG246_NUM		(1<<M98090_MIXG246_WIDTH)
420*4882a593Smuzhiyun #define M98090_LINAPGA_MASK		(7<<3)
421*4882a593Smuzhiyun #define M98090_LINAPGA_SHIFT		3
422*4882a593Smuzhiyun #define M98090_LINAPGA_WIDTH		3
423*4882a593Smuzhiyun #define M98090_LINAPGA_NUM		6
424*4882a593Smuzhiyun #define M98090_LINBPGA_MASK		(7<<0)
425*4882a593Smuzhiyun #define M98090_LINBPGA_SHIFT		0
426*4882a593Smuzhiyun #define M98090_LINBPGA_WIDTH		3
427*4882a593Smuzhiyun #define M98090_LINBPGA_NUM		6
428*4882a593Smuzhiyun 
429*4882a593Smuzhiyun /*
430*4882a593Smuzhiyun  * M98090_REG_INPUT_MODE
431*4882a593Smuzhiyun  */
432*4882a593Smuzhiyun #define M98090_EXTBUFA_MASK		(1<<7)
433*4882a593Smuzhiyun #define M98090_EXTBUFA_SHIFT		7
434*4882a593Smuzhiyun #define M98090_EXTBUFA_WIDTH		1
435*4882a593Smuzhiyun #define M98090_EXTBUFA_NUM		(1<<M98090_EXTBUFA_WIDTH)
436*4882a593Smuzhiyun #define M98090_EXTBUFB_MASK		(1<<6)
437*4882a593Smuzhiyun #define M98090_EXTBUFB_SHIFT		6
438*4882a593Smuzhiyun #define M98090_EXTBUFB_WIDTH		1
439*4882a593Smuzhiyun #define M98090_EXTBUFB_NUM		(1<<M98090_EXTBUFB_WIDTH)
440*4882a593Smuzhiyun #define M98090_EXTMIC_MASK		(3<<0)
441*4882a593Smuzhiyun #define M98090_EXTMIC_SHIFT		0
442*4882a593Smuzhiyun #define M98090_EXTMIC1_SHIFT		0
443*4882a593Smuzhiyun #define M98090_EXTMIC2_SHIFT		1
444*4882a593Smuzhiyun #define M98090_EXTMIC_WIDTH		2
445*4882a593Smuzhiyun #define M98090_EXTMIC_NONE		(0<<0)
446*4882a593Smuzhiyun #define M98090_EXTMIC_MIC1		(1<<0)
447*4882a593Smuzhiyun #define M98090_EXTMIC_MIC2		(2<<0)
448*4882a593Smuzhiyun 
449*4882a593Smuzhiyun /*
450*4882a593Smuzhiyun  * M98090_REG_MIC1_INPUT_LEVEL
451*4882a593Smuzhiyun  */
452*4882a593Smuzhiyun #define M98090_MIC_PA1EN_MASK		(3<<5)
453*4882a593Smuzhiyun #define M98090_MIC_PA1EN_SHIFT		5
454*4882a593Smuzhiyun #define M98090_MIC_PA1EN_WIDTH		2
455*4882a593Smuzhiyun #define M98090_MIC_PA1EN_NUM		3
456*4882a593Smuzhiyun #define M98090_MIC_PGAM1_MASK		(31<<0)
457*4882a593Smuzhiyun #define M98090_MIC_PGAM1_SHIFT		0
458*4882a593Smuzhiyun #define M98090_MIC_PGAM1_WIDTH		5
459*4882a593Smuzhiyun #define M98090_MIC_PGAM1_NUM		21
460*4882a593Smuzhiyun 
461*4882a593Smuzhiyun /*
462*4882a593Smuzhiyun  * M98090_REG_MIC2_INPUT_LEVEL
463*4882a593Smuzhiyun  */
464*4882a593Smuzhiyun #define M98090_MIC_PA2EN_MASK		(3<<5)
465*4882a593Smuzhiyun #define M98090_MIC_PA2EN_SHIFT		5
466*4882a593Smuzhiyun #define M98090_MIC_PA2EN_WIDTH		2
467*4882a593Smuzhiyun #define M98090_MIC_PA2EN_NUM		3
468*4882a593Smuzhiyun #define M98090_MIC_PGAM2_MASK		(31<<0)
469*4882a593Smuzhiyun #define M98090_MIC_PGAM2_SHIFT		0
470*4882a593Smuzhiyun #define M98090_MIC_PGAM2_WIDTH		5
471*4882a593Smuzhiyun #define M98090_MIC_PGAM2_NUM		21
472*4882a593Smuzhiyun 
473*4882a593Smuzhiyun /*
474*4882a593Smuzhiyun  * M98090_REG_MIC_BIAS_VOLTAGE
475*4882a593Smuzhiyun  */
476*4882a593Smuzhiyun #define M98090_MBVSEL_MASK		(3<<0)
477*4882a593Smuzhiyun #define M98090_MBVSEL_SHIFT		0
478*4882a593Smuzhiyun #define M98090_MBVSEL_WIDTH		2
479*4882a593Smuzhiyun #define M98090_MBVSEL_2V8		(3<<0)
480*4882a593Smuzhiyun #define M98090_MBVSEL_2V55		(2<<0)
481*4882a593Smuzhiyun #define M98090_MBVSEL_2V4		(1<<0)
482*4882a593Smuzhiyun #define M98090_MBVSEL_2V2		(0<<0)
483*4882a593Smuzhiyun 
484*4882a593Smuzhiyun /*
485*4882a593Smuzhiyun  * M98090_REG_DIGITAL_MIC_ENABLE
486*4882a593Smuzhiyun  */
487*4882a593Smuzhiyun #define M98090_MICCLK_MASK		(7<<4)
488*4882a593Smuzhiyun #define M98090_MICCLK_SHIFT		4
489*4882a593Smuzhiyun #define M98090_MICCLK_WIDTH		3
490*4882a593Smuzhiyun #define M98090_DIGMIC4_MASK		(1<<3)
491*4882a593Smuzhiyun #define M98090_DIGMIC4_SHIFT		3
492*4882a593Smuzhiyun #define M98090_DIGMIC4_WIDTH		1
493*4882a593Smuzhiyun #define M98090_DIGMIC4_NUM		(1<<M98090_DIGMIC4_WIDTH)
494*4882a593Smuzhiyun #define M98090_DIGMIC3_MASK		(1<<2)
495*4882a593Smuzhiyun #define M98090_DIGMIC3_SHIFT		2
496*4882a593Smuzhiyun #define M98090_DIGMIC3_WIDTH		1
497*4882a593Smuzhiyun #define M98090_DIGMIC3_NUM		(1<<M98090_DIGMIC3_WIDTH)
498*4882a593Smuzhiyun #define M98090_DIGMICR_MASK		(1<<1)
499*4882a593Smuzhiyun #define M98090_DIGMICR_SHIFT		1
500*4882a593Smuzhiyun #define M98090_DIGMICR_WIDTH		1
501*4882a593Smuzhiyun #define M98090_DIGMICR_NUM		(1<<M98090_DIGMICR_WIDTH)
502*4882a593Smuzhiyun #define M98090_DIGMICL_MASK		(1<<0)
503*4882a593Smuzhiyun #define M98090_DIGMICL_SHIFT		0
504*4882a593Smuzhiyun #define M98090_DIGMICL_WIDTH		1
505*4882a593Smuzhiyun #define M98090_DIGMICL_NUM		(1<<M98090_DIGMICL_WIDTH)
506*4882a593Smuzhiyun 
507*4882a593Smuzhiyun /*
508*4882a593Smuzhiyun  * M98090_REG_DIGITAL_MIC_CONFIG
509*4882a593Smuzhiyun  */
510*4882a593Smuzhiyun #define M98090_DMIC_COMP_MASK		(15<<4)
511*4882a593Smuzhiyun #define M98090_DMIC_COMP_SHIFT		4
512*4882a593Smuzhiyun #define M98090_DMIC_COMP_WIDTH		4
513*4882a593Smuzhiyun #define M98090_DMIC_COMP_NUM		(1<<M98090_DMIC_COMP_WIDTH)
514*4882a593Smuzhiyun #define M98090_DMIC_FREQ_MASK		(3<<0)
515*4882a593Smuzhiyun #define M98090_DMIC_FREQ_SHIFT		0
516*4882a593Smuzhiyun #define M98090_DMIC_FREQ_WIDTH		2
517*4882a593Smuzhiyun 
518*4882a593Smuzhiyun /*
519*4882a593Smuzhiyun  * M98090_REG_LEFT_ADC_MIXER
520*4882a593Smuzhiyun  */
521*4882a593Smuzhiyun #define M98090_MIXADL_MIC2_MASK		(1<<6)
522*4882a593Smuzhiyun #define M98090_MIXADL_MIC2_SHIFT	6
523*4882a593Smuzhiyun #define M98090_MIXADL_MIC2_WIDTH	1
524*4882a593Smuzhiyun #define M98090_MIXADL_MIC1_MASK		(1<<5)
525*4882a593Smuzhiyun #define M98090_MIXADL_MIC1_SHIFT	5
526*4882a593Smuzhiyun #define M98090_MIXADL_MIC1_WIDTH	1
527*4882a593Smuzhiyun #define M98090_MIXADL_LINEB_MASK	(1<<4)
528*4882a593Smuzhiyun #define M98090_MIXADL_LINEB_SHIFT	4
529*4882a593Smuzhiyun #define M98090_MIXADL_LINEB_WIDTH	1
530*4882a593Smuzhiyun #define M98090_MIXADL_LINEA_MASK	(1<<3)
531*4882a593Smuzhiyun #define M98090_MIXADL_LINEA_SHIFT	3
532*4882a593Smuzhiyun #define M98090_MIXADL_LINEA_WIDTH	1
533*4882a593Smuzhiyun #define M98090_MIXADL_IN65DIFF_MASK	(1<<2)
534*4882a593Smuzhiyun #define M98090_MIXADL_IN65DIFF_SHIFT	2
535*4882a593Smuzhiyun #define M98090_MIXADL_IN65DIFF_WIDTH	1
536*4882a593Smuzhiyun #define M98090_MIXADL_IN34DIFF_MASK	(1<<1)
537*4882a593Smuzhiyun #define M98090_MIXADL_IN34DIFF_SHIFT	1
538*4882a593Smuzhiyun #define M98090_MIXADL_IN34DIFF_WIDTH	1
539*4882a593Smuzhiyun #define M98090_MIXADL_IN12DIFF_MASK	(1<<0)
540*4882a593Smuzhiyun #define M98090_MIXADL_IN12DIFF_SHIFT	0
541*4882a593Smuzhiyun #define M98090_MIXADL_IN12DIFF_WIDTH	1
542*4882a593Smuzhiyun #define M98090_MIXADL_MASK		(255<<0)
543*4882a593Smuzhiyun #define M98090_MIXADL_SHIFT		0
544*4882a593Smuzhiyun #define M98090_MIXADL_WIDTH		8
545*4882a593Smuzhiyun 
546*4882a593Smuzhiyun /*
547*4882a593Smuzhiyun  * M98090_REG_RIGHT_ADC_MIXER
548*4882a593Smuzhiyun  */
549*4882a593Smuzhiyun #define M98090_MIXADR_MIC2_MASK		(1<<6)
550*4882a593Smuzhiyun #define M98090_MIXADR_MIC2_SHIFT	6
551*4882a593Smuzhiyun #define M98090_MIXADR_MIC2_WIDTH	1
552*4882a593Smuzhiyun #define M98090_MIXADR_MIC1_MASK		(1<<5)
553*4882a593Smuzhiyun #define M98090_MIXADR_MIC1_SHIFT	5
554*4882a593Smuzhiyun #define M98090_MIXADR_MIC1_WIDTH	1
555*4882a593Smuzhiyun #define M98090_MIXADR_LINEB_MASK	(1<<4)
556*4882a593Smuzhiyun #define M98090_MIXADR_LINEB_SHIFT	4
557*4882a593Smuzhiyun #define M98090_MIXADR_LINEB_WIDTH	1
558*4882a593Smuzhiyun #define M98090_MIXADR_LINEA_MASK	(1<<3)
559*4882a593Smuzhiyun #define M98090_MIXADR_LINEA_SHIFT	3
560*4882a593Smuzhiyun #define M98090_MIXADR_LINEA_WIDTH	1
561*4882a593Smuzhiyun #define M98090_MIXADR_IN65DIFF_MASK	(1<<2)
562*4882a593Smuzhiyun #define M98090_MIXADR_IN65DIFF_SHIFT	2
563*4882a593Smuzhiyun #define M98090_MIXADR_IN65DIFF_WIDTH	1
564*4882a593Smuzhiyun #define M98090_MIXADR_IN34DIFF_MASK	(1<<1)
565*4882a593Smuzhiyun #define M98090_MIXADR_IN34DIFF_SHIFT	1
566*4882a593Smuzhiyun #define M98090_MIXADR_IN34DIFF_WIDTH	1
567*4882a593Smuzhiyun #define M98090_MIXADR_IN12DIFF_MASK	(1<<0)
568*4882a593Smuzhiyun #define M98090_MIXADR_IN12DIFF_SHIFT	0
569*4882a593Smuzhiyun #define M98090_MIXADR_IN12DIFF_WIDTH	1
570*4882a593Smuzhiyun #define M98090_MIXADR_MASK		(255<<0)
571*4882a593Smuzhiyun #define M98090_MIXADR_SHIFT		0
572*4882a593Smuzhiyun #define M98090_MIXADR_WIDTH		8
573*4882a593Smuzhiyun 
574*4882a593Smuzhiyun /*
575*4882a593Smuzhiyun  * M98090_REG_LEFT_ADC_LEVEL
576*4882a593Smuzhiyun  */
577*4882a593Smuzhiyun #define M98090_AVLG_MASK		(7<<4)
578*4882a593Smuzhiyun #define M98090_AVLG_SHIFT		4
579*4882a593Smuzhiyun #define M98090_AVLG_WIDTH		3
580*4882a593Smuzhiyun #define M98090_AVLG_NUM			(1<<M98090_AVLG_WIDTH)
581*4882a593Smuzhiyun #define M98090_AVL_MASK			(15<<0)
582*4882a593Smuzhiyun #define M98090_AVL_SHIFT		0
583*4882a593Smuzhiyun #define M98090_AVL_WIDTH		4
584*4882a593Smuzhiyun #define M98090_AVL_NUM			(1<<M98090_AVL_WIDTH)
585*4882a593Smuzhiyun 
586*4882a593Smuzhiyun /*
587*4882a593Smuzhiyun  * M98090_REG_RIGHT_ADC_LEVEL
588*4882a593Smuzhiyun  */
589*4882a593Smuzhiyun #define M98090_AVRG_MASK		(7<<4)
590*4882a593Smuzhiyun #define M98090_AVRG_SHIFT		4
591*4882a593Smuzhiyun #define M98090_AVRG_WIDTH		3
592*4882a593Smuzhiyun #define M98090_AVRG_NUM			(1<<M98090_AVRG_WIDTH)
593*4882a593Smuzhiyun #define M98090_AVR_MASK			(15<<0)
594*4882a593Smuzhiyun #define M98090_AVR_SHIFT		0
595*4882a593Smuzhiyun #define M98090_AVR_WIDTH		4
596*4882a593Smuzhiyun #define M98090_AVR_NUM			(1<<M98090_AVR_WIDTH)
597*4882a593Smuzhiyun 
598*4882a593Smuzhiyun /*
599*4882a593Smuzhiyun  * M98090_REG_ADC_BIQUAD_LEVEL
600*4882a593Smuzhiyun  */
601*4882a593Smuzhiyun #define M98090_AVBQ_MASK		(15<<0)
602*4882a593Smuzhiyun #define M98090_AVBQ_SHIFT		0
603*4882a593Smuzhiyun #define M98090_AVBQ_WIDTH		4
604*4882a593Smuzhiyun #define M98090_AVBQ_NUM			(1<<M98090_AVBQ_WIDTH)
605*4882a593Smuzhiyun 
606*4882a593Smuzhiyun /*
607*4882a593Smuzhiyun  * M98090_REG_ADC_SIDETONE
608*4882a593Smuzhiyun  */
609*4882a593Smuzhiyun #define M98090_DSTSR_MASK		(1<<7)
610*4882a593Smuzhiyun #define M98090_DSTSR_SHIFT		7
611*4882a593Smuzhiyun #define M98090_DSTSR_WIDTH		1
612*4882a593Smuzhiyun #define M98090_DSTSL_MASK		(1<<6)
613*4882a593Smuzhiyun #define M98090_DSTSL_SHIFT		6
614*4882a593Smuzhiyun #define M98090_DSTSL_WIDTH		1
615*4882a593Smuzhiyun #define M98090_DVST_MASK		(31<<0)
616*4882a593Smuzhiyun #define M98090_DVST_SHIFT		0
617*4882a593Smuzhiyun #define M98090_DVST_WIDTH		5
618*4882a593Smuzhiyun #define M98090_DVST_NUM			31
619*4882a593Smuzhiyun 
620*4882a593Smuzhiyun /*
621*4882a593Smuzhiyun  * M98090_REG_SYSTEM_CLOCK
622*4882a593Smuzhiyun  */
623*4882a593Smuzhiyun #define M98090_PSCLK_MASK		(3<<4)
624*4882a593Smuzhiyun #define M98090_PSCLK_SHIFT		4
625*4882a593Smuzhiyun #define M98090_PSCLK_WIDTH		2
626*4882a593Smuzhiyun #define M98090_PSCLK_DISABLED		(0<<4)
627*4882a593Smuzhiyun #define M98090_PSCLK_DIV1		(1<<4)
628*4882a593Smuzhiyun #define M98090_PSCLK_DIV2		(2<<4)
629*4882a593Smuzhiyun #define M98090_PSCLK_DIV4		(3<<4)
630*4882a593Smuzhiyun 
631*4882a593Smuzhiyun /*
632*4882a593Smuzhiyun  * M98090_REG_CLOCK_MODE
633*4882a593Smuzhiyun  */
634*4882a593Smuzhiyun #define M98090_FREQ_MASK		(15<<4)
635*4882a593Smuzhiyun #define M98090_FREQ_SHIFT		4
636*4882a593Smuzhiyun #define M98090_FREQ_WIDTH		4
637*4882a593Smuzhiyun #define M98090_USE_M1_MASK		(1<<0)
638*4882a593Smuzhiyun #define M98090_USE_M1_SHIFT		0
639*4882a593Smuzhiyun #define M98090_USE_M1_WIDTH		1
640*4882a593Smuzhiyun #define M98090_USE_M1_NUM		(1<<M98090_USE_M1_WIDTH)
641*4882a593Smuzhiyun 
642*4882a593Smuzhiyun /*
643*4882a593Smuzhiyun  * M98090_REG_CLOCK_RATIO_NI_MSB
644*4882a593Smuzhiyun  */
645*4882a593Smuzhiyun #define M98090_NI_HI_MASK		(127<<0)
646*4882a593Smuzhiyun #define M98090_NI_HI_SHIFT		0
647*4882a593Smuzhiyun #define M98090_NI_HI_WIDTH		7
648*4882a593Smuzhiyun #define M98090_NI_HI_NUM		(1<<M98090_NI_HI_WIDTH)
649*4882a593Smuzhiyun 
650*4882a593Smuzhiyun /*
651*4882a593Smuzhiyun  * M98090_REG_CLOCK_RATIO_NI_LSB
652*4882a593Smuzhiyun  */
653*4882a593Smuzhiyun #define M98090_NI_LO_MASK		(255<<0)
654*4882a593Smuzhiyun #define M98090_NI_LO_SHIFT		0
655*4882a593Smuzhiyun #define M98090_NI_LO_WIDTH		8
656*4882a593Smuzhiyun #define M98090_NI_LO_NUM		(1<<M98090_NI_LO_WIDTH)
657*4882a593Smuzhiyun 
658*4882a593Smuzhiyun /*
659*4882a593Smuzhiyun  * M98090_REG_CLOCK_RATIO_MI_MSB
660*4882a593Smuzhiyun  */
661*4882a593Smuzhiyun #define M98090_MI_HI_MASK		(255<<0)
662*4882a593Smuzhiyun #define M98090_MI_HI_SHIFT		0
663*4882a593Smuzhiyun #define M98090_MI_HI_WIDTH		8
664*4882a593Smuzhiyun #define M98090_MI_HI_NUM		(1<<M98090_MI_HI_WIDTH)
665*4882a593Smuzhiyun 
666*4882a593Smuzhiyun /*
667*4882a593Smuzhiyun  * M98090_REG_CLOCK_RATIO_MI_LSB
668*4882a593Smuzhiyun  */
669*4882a593Smuzhiyun #define M98090_MI_LO_MASK		(255<<0)
670*4882a593Smuzhiyun #define M98090_MI_LO_SHIFT		0
671*4882a593Smuzhiyun #define M98090_MI_LO_WIDTH		8
672*4882a593Smuzhiyun #define M98090_MI_LO_NUM		(1<<M98090_MI_LO_WIDTH)
673*4882a593Smuzhiyun 
674*4882a593Smuzhiyun /*
675*4882a593Smuzhiyun  * M98090_REG_MASTER_MODE
676*4882a593Smuzhiyun  */
677*4882a593Smuzhiyun #define M98090_MAS_MASK			(1<<7)
678*4882a593Smuzhiyun #define M98090_MAS_SHIFT		7
679*4882a593Smuzhiyun #define M98090_MAS_WIDTH		1
680*4882a593Smuzhiyun #define M98090_BSEL_MASK		(1<<0)
681*4882a593Smuzhiyun #define M98090_BSEL_SHIFT		0
682*4882a593Smuzhiyun #define M98090_BSEL_WIDTH		1
683*4882a593Smuzhiyun #define M98090_BSEL_32			(1<<0)
684*4882a593Smuzhiyun #define M98090_BSEL_48			(2<<0)
685*4882a593Smuzhiyun #define M98090_BSEL_64			(3<<0)
686*4882a593Smuzhiyun 
687*4882a593Smuzhiyun /*
688*4882a593Smuzhiyun  * M98090_REG_INTERFACE_FORMAT
689*4882a593Smuzhiyun  */
690*4882a593Smuzhiyun #define M98090_RJ_MASK			(1<<5)
691*4882a593Smuzhiyun #define M98090_RJ_SHIFT			5
692*4882a593Smuzhiyun #define M98090_RJ_WIDTH			1
693*4882a593Smuzhiyun #define M98090_WCI_MASK			(1<<4)
694*4882a593Smuzhiyun #define M98090_WCI_SHIFT		4
695*4882a593Smuzhiyun #define M98090_WCI_WIDTH		1
696*4882a593Smuzhiyun #define M98090_BCI_MASK			(1<<3)
697*4882a593Smuzhiyun #define M98090_BCI_SHIFT		3
698*4882a593Smuzhiyun #define M98090_BCI_WIDTH		1
699*4882a593Smuzhiyun #define M98090_DLY_MASK			(1<<2)
700*4882a593Smuzhiyun #define M98090_DLY_SHIFT		2
701*4882a593Smuzhiyun #define M98090_DLY_WIDTH		1
702*4882a593Smuzhiyun #define M98090_WS_MASK			(3<<0)
703*4882a593Smuzhiyun #define M98090_WS_SHIFT			0
704*4882a593Smuzhiyun #define M98090_WS_WIDTH			2
705*4882a593Smuzhiyun #define M98090_WS_NUM			(1<<M98090_WS_WIDTH)
706*4882a593Smuzhiyun 
707*4882a593Smuzhiyun /*
708*4882a593Smuzhiyun  * M98090_REG_TDM_CONTROL
709*4882a593Smuzhiyun  */
710*4882a593Smuzhiyun #define M98090_FSW_MASK			(1<<1)
711*4882a593Smuzhiyun #define M98090_FSW_SHIFT		1
712*4882a593Smuzhiyun #define M98090_FSW_WIDTH		1
713*4882a593Smuzhiyun #define M98090_TDM_MASK			(1<<0)
714*4882a593Smuzhiyun #define M98090_TDM_SHIFT		0
715*4882a593Smuzhiyun #define M98090_TDM_WIDTH		1
716*4882a593Smuzhiyun #define M98090_TDM_NUM			(1<<M98090_TDM_WIDTH)
717*4882a593Smuzhiyun 
718*4882a593Smuzhiyun /*
719*4882a593Smuzhiyun  * M98090_REG_TDM_FORMAT
720*4882a593Smuzhiyun  */
721*4882a593Smuzhiyun #define M98090_TDM_SLOTL_MASK		(3<<6)
722*4882a593Smuzhiyun #define M98090_TDM_SLOTL_SHIFT		6
723*4882a593Smuzhiyun #define M98090_TDM_SLOTL_WIDTH		2
724*4882a593Smuzhiyun #define M98090_TDM_SLOTL_NUM		(1<<M98090_TDM_SLOTL_WIDTH)
725*4882a593Smuzhiyun #define M98090_TDM_SLOTR_MASK		(3<<4)
726*4882a593Smuzhiyun #define M98090_TDM_SLOTR_SHIFT		4
727*4882a593Smuzhiyun #define M98090_TDM_SLOTR_WIDTH		2
728*4882a593Smuzhiyun #define M98090_TDM_SLOTR_NUM		(1<<M98090_TDM_SLOTR_WIDTH)
729*4882a593Smuzhiyun #define M98090_TDM_SLOTDLY_MASK		(15<<0)
730*4882a593Smuzhiyun #define M98090_TDM_SLOTDLY_SHIFT	0
731*4882a593Smuzhiyun #define M98090_TDM_SLOTDLY_WIDTH	4
732*4882a593Smuzhiyun #define M98090_TDM_SLOTDLY_NUM		(1<<M98090_TDM_SLOTDLY_WIDTH)
733*4882a593Smuzhiyun 
734*4882a593Smuzhiyun /*
735*4882a593Smuzhiyun  * M98090_REG_IO_CONFIGURATION
736*4882a593Smuzhiyun  */
737*4882a593Smuzhiyun #define M98090_LTEN_MASK		(1<<5)
738*4882a593Smuzhiyun #define M98090_LTEN_SHIFT		5
739*4882a593Smuzhiyun #define M98090_LTEN_WIDTH		1
740*4882a593Smuzhiyun #define M98090_LTEN_NUM			(1<<M98090_LTEN_WIDTH)
741*4882a593Smuzhiyun #define M98090_LBEN_MASK		(1<<4)
742*4882a593Smuzhiyun #define M98090_LBEN_SHIFT		4
743*4882a593Smuzhiyun #define M98090_LBEN_WIDTH		1
744*4882a593Smuzhiyun #define M98090_LBEN_NUM			(1<<M98090_LBEN_WIDTH)
745*4882a593Smuzhiyun #define M98090_DMONO_MASK		(1<<3)
746*4882a593Smuzhiyun #define M98090_DMONO_SHIFT		3
747*4882a593Smuzhiyun #define M98090_DMONO_WIDTH		1
748*4882a593Smuzhiyun #define M98090_DMONO_NUM		(1<<M98090_DMONO_WIDTH)
749*4882a593Smuzhiyun #define M98090_HIZOFF_MASK		(1<<2)
750*4882a593Smuzhiyun #define M98090_HIZOFF_SHIFT		2
751*4882a593Smuzhiyun #define M98090_HIZOFF_WIDTH		1
752*4882a593Smuzhiyun #define M98090_HIZOFF_NUM		(1<<M98090_HIZOFF_WIDTH)
753*4882a593Smuzhiyun #define M98090_SDOEN_MASK		(1<<1)
754*4882a593Smuzhiyun #define M98090_SDOEN_SHIFT		1
755*4882a593Smuzhiyun #define M98090_SDOEN_WIDTH		1
756*4882a593Smuzhiyun #define M98090_SDOEN_NUM		(1<<M98090_SDOEN_WIDTH)
757*4882a593Smuzhiyun #define M98090_SDIEN_MASK		(1<<0)
758*4882a593Smuzhiyun #define M98090_SDIEN_SHIFT		0
759*4882a593Smuzhiyun #define M98090_SDIEN_WIDTH		1
760*4882a593Smuzhiyun #define M98090_SDIEN_NUM		(1<<M98090_SDIEN_WIDTH)
761*4882a593Smuzhiyun 
762*4882a593Smuzhiyun /*
763*4882a593Smuzhiyun  * M98090_REG_FILTER_CONFIG
764*4882a593Smuzhiyun  */
765*4882a593Smuzhiyun #define M98090_MODE_MASK		(1<<7)
766*4882a593Smuzhiyun #define M98090_MODE_SHIFT		7
767*4882a593Smuzhiyun #define M98090_MODE_WIDTH		1
768*4882a593Smuzhiyun #define M98090_AHPF_MASK		(1<<6)
769*4882a593Smuzhiyun #define M98090_AHPF_SHIFT		6
770*4882a593Smuzhiyun #define M98090_AHPF_WIDTH		1
771*4882a593Smuzhiyun #define M98090_AHPF_NUM			(1<<M98090_AHPF_WIDTH)
772*4882a593Smuzhiyun #define M98090_DHPF_MASK		(1<<5)
773*4882a593Smuzhiyun #define M98090_DHPF_SHIFT		5
774*4882a593Smuzhiyun #define M98090_DHPF_WIDTH		1
775*4882a593Smuzhiyun #define M98090_DHPF_NUM			(1<<M98090_DHPF_WIDTH)
776*4882a593Smuzhiyun #define M98090_DHF_MASK			(1<<4)
777*4882a593Smuzhiyun #define M98090_DHF_SHIFT		4
778*4882a593Smuzhiyun #define M98090_DHF_WIDTH		1
779*4882a593Smuzhiyun #define M98090_FLT_DMIC34MODE_MASK	(1<<3)
780*4882a593Smuzhiyun #define M98090_FLT_DMIC34MODE_SHIFT	3
781*4882a593Smuzhiyun #define M98090_FLT_DMIC34MODE_WIDTH	1
782*4882a593Smuzhiyun #define M98090_FLT_DMIC34HPF_MASK	(1<<2)
783*4882a593Smuzhiyun #define M98090_FLT_DMIC34HPF_SHIFT	2
784*4882a593Smuzhiyun #define M98090_FLT_DMIC34HPF_WIDTH	1
785*4882a593Smuzhiyun #define M98090_FLT_DMIC34HPF_NUM	(1<<M98090_FLT_DMIC34HPF_WIDTH)
786*4882a593Smuzhiyun 
787*4882a593Smuzhiyun /*
788*4882a593Smuzhiyun  * M98090_REG_DAI_PLAYBACK_LEVEL
789*4882a593Smuzhiyun  */
790*4882a593Smuzhiyun #define M98090_DVM_MASK			(1<<7)
791*4882a593Smuzhiyun #define M98090_DVM_SHIFT		7
792*4882a593Smuzhiyun #define M98090_DVM_WIDTH		1
793*4882a593Smuzhiyun #define M98090_DVG_MASK			(3<<4)
794*4882a593Smuzhiyun #define M98090_DVG_SHIFT		4
795*4882a593Smuzhiyun #define M98090_DVG_WIDTH		2
796*4882a593Smuzhiyun #define M98090_DVG_NUM			(1<<M98090_DVG_WIDTH)
797*4882a593Smuzhiyun #define M98090_DV_MASK			(15<<0)
798*4882a593Smuzhiyun #define M98090_DV_SHIFT			0
799*4882a593Smuzhiyun #define M98090_DV_WIDTH			4
800*4882a593Smuzhiyun #define M98090_DV_NUM			(1<<M98090_DV_WIDTH)
801*4882a593Smuzhiyun 
802*4882a593Smuzhiyun /*
803*4882a593Smuzhiyun  * M98090_REG_DAI_PLAYBACK_LEVEL_EQ
804*4882a593Smuzhiyun  */
805*4882a593Smuzhiyun #define M98090_EQCLPN_MASK		(1<<4)
806*4882a593Smuzhiyun #define M98090_EQCLPN_SHIFT		4
807*4882a593Smuzhiyun #define M98090_EQCLPN_WIDTH		1
808*4882a593Smuzhiyun #define M98090_EQCLPN_NUM		(1<<M98090_EQCLPN_WIDTH)
809*4882a593Smuzhiyun #define M98090_DVEQ_MASK		(15<<0)
810*4882a593Smuzhiyun #define M98090_DVEQ_SHIFT		0
811*4882a593Smuzhiyun #define M98090_DVEQ_WIDTH		4
812*4882a593Smuzhiyun #define M98090_DVEQ_NUM			(1<<M98090_DVEQ_WIDTH)
813*4882a593Smuzhiyun 
814*4882a593Smuzhiyun /*
815*4882a593Smuzhiyun  * M98090_REG_LEFT_HP_MIXER
816*4882a593Smuzhiyun  */
817*4882a593Smuzhiyun #define M98090_MIXHPL_MIC2_MASK		(1<<5)
818*4882a593Smuzhiyun #define M98090_MIXHPL_MIC2_SHIFT	5
819*4882a593Smuzhiyun #define M98090_MIXHPL_MIC2_WIDTH	1
820*4882a593Smuzhiyun #define M98090_MIXHPL_MIC1_MASK		(1<<4)
821*4882a593Smuzhiyun #define M98090_MIXHPL_MIC1_SHIFT	4
822*4882a593Smuzhiyun #define M98090_MIXHPL_MIC1_WIDTH	1
823*4882a593Smuzhiyun #define M98090_MIXHPL_LINEB_MASK	(1<<3)
824*4882a593Smuzhiyun #define M98090_MIXHPL_LINEB_SHIFT	3
825*4882a593Smuzhiyun #define M98090_MIXHPL_LINEB_WIDTH	1
826*4882a593Smuzhiyun #define M98090_MIXHPL_LINEA_MASK	(1<<2)
827*4882a593Smuzhiyun #define M98090_MIXHPL_LINEA_SHIFT	2
828*4882a593Smuzhiyun #define M98090_MIXHPL_LINEA_WIDTH	1
829*4882a593Smuzhiyun #define M98090_MIXHPL_DACR_MASK		(1<<1)
830*4882a593Smuzhiyun #define M98090_MIXHPL_DACR_SHIFT	1
831*4882a593Smuzhiyun #define M98090_MIXHPL_DACR_WIDTH	1
832*4882a593Smuzhiyun #define M98090_MIXHPL_DACL_MASK		(1<<0)
833*4882a593Smuzhiyun #define M98090_MIXHPL_DACL_SHIFT	0
834*4882a593Smuzhiyun #define M98090_MIXHPL_DACL_WIDTH	1
835*4882a593Smuzhiyun #define M98090_MIXHPL_MASK		(63<<0)
836*4882a593Smuzhiyun #define M98090_MIXHPL_SHIFT		0
837*4882a593Smuzhiyun #define M98090_MIXHPL_WIDTH		6
838*4882a593Smuzhiyun 
839*4882a593Smuzhiyun /*
840*4882a593Smuzhiyun  * M98090_REG_RIGHT_HP_MIXER
841*4882a593Smuzhiyun  */
842*4882a593Smuzhiyun #define M98090_MIXHPR_MIC2_MASK		(1<<5)
843*4882a593Smuzhiyun #define M98090_MIXHPR_MIC2_SHIFT	5
844*4882a593Smuzhiyun #define M98090_MIXHPR_MIC2_WIDTH	1
845*4882a593Smuzhiyun #define M98090_MIXHPR_MIC1_MASK		(1<<4)
846*4882a593Smuzhiyun #define M98090_MIXHPR_MIC1_SHIFT	4
847*4882a593Smuzhiyun #define M98090_MIXHPR_MIC1_WIDTH	1
848*4882a593Smuzhiyun #define M98090_MIXHPR_LINEB_MASK	(1<<3)
849*4882a593Smuzhiyun #define M98090_MIXHPR_LINEB_SHIFT	3
850*4882a593Smuzhiyun #define M98090_MIXHPR_LINEB_WIDTH	1
851*4882a593Smuzhiyun #define M98090_MIXHPR_LINEA_MASK	(1<<2)
852*4882a593Smuzhiyun #define M98090_MIXHPR_LINEA_SHIFT	2
853*4882a593Smuzhiyun #define M98090_MIXHPR_LINEA_WIDTH	1
854*4882a593Smuzhiyun #define M98090_MIXHPR_DACR_MASK		(1<<1)
855*4882a593Smuzhiyun #define M98090_MIXHPR_DACR_SHIFT	1
856*4882a593Smuzhiyun #define M98090_MIXHPR_DACR_WIDTH	1
857*4882a593Smuzhiyun #define M98090_MIXHPR_DACL_MASK		(1<<0)
858*4882a593Smuzhiyun #define M98090_MIXHPR_DACL_SHIFT	0
859*4882a593Smuzhiyun #define M98090_MIXHPR_DACL_WIDTH	1
860*4882a593Smuzhiyun #define M98090_MIXHPR_MASK		(63<<0)
861*4882a593Smuzhiyun #define M98090_MIXHPR_SHIFT		0
862*4882a593Smuzhiyun #define M98090_MIXHPR_WIDTH		6
863*4882a593Smuzhiyun 
864*4882a593Smuzhiyun /*
865*4882a593Smuzhiyun  * M98090_REG_HP_CONTROL
866*4882a593Smuzhiyun  */
867*4882a593Smuzhiyun #define M98090_MIXHPRSEL_MASK		(1<<5)
868*4882a593Smuzhiyun #define M98090_MIXHPRSEL_SHIFT		5
869*4882a593Smuzhiyun #define M98090_MIXHPRSEL_WIDTH		1
870*4882a593Smuzhiyun #define M98090_MIXHPLSEL_MASK		(1<<4)
871*4882a593Smuzhiyun #define M98090_MIXHPLSEL_SHIFT		4
872*4882a593Smuzhiyun #define M98090_MIXHPLSEL_WIDTH		1
873*4882a593Smuzhiyun #define M98090_MIXHPRG_MASK		(3<<2)
874*4882a593Smuzhiyun #define M98090_MIXHPRG_SHIFT		2
875*4882a593Smuzhiyun #define M98090_MIXHPRG_WIDTH		2
876*4882a593Smuzhiyun #define M98090_MIXHPRG_NUM		(1<<M98090_MIXHPRG_WIDTH)
877*4882a593Smuzhiyun #define M98090_MIXHPLG_MASK		(3<<0)
878*4882a593Smuzhiyun #define M98090_MIXHPLG_SHIFT		0
879*4882a593Smuzhiyun #define M98090_MIXHPLG_WIDTH		2
880*4882a593Smuzhiyun #define M98090_MIXHPLG_NUM		(1<<M98090_MIXHPLG_WIDTH)
881*4882a593Smuzhiyun 
882*4882a593Smuzhiyun /*
883*4882a593Smuzhiyun  * M98090_REG_LEFT_HP_VOLUME
884*4882a593Smuzhiyun  */
885*4882a593Smuzhiyun #define M98090_HPLM_MASK		(1<<7)
886*4882a593Smuzhiyun #define M98090_HPLM_SHIFT		7
887*4882a593Smuzhiyun #define M98090_HPLM_WIDTH		1
888*4882a593Smuzhiyun #define M98090_HPVOLL_MASK		(31<<0)
889*4882a593Smuzhiyun #define M98090_HPVOLL_SHIFT		0
890*4882a593Smuzhiyun #define M98090_HPVOLL_WIDTH		5
891*4882a593Smuzhiyun #define M98090_HPVOLL_NUM		(1<<M98090_HPVOLL_WIDTH)
892*4882a593Smuzhiyun 
893*4882a593Smuzhiyun /*
894*4882a593Smuzhiyun  * M98090_REG_RIGHT_HP_VOLUME
895*4882a593Smuzhiyun  */
896*4882a593Smuzhiyun #define M98090_HPRM_MASK		(1<<7)
897*4882a593Smuzhiyun #define M98090_HPRM_SHIFT		7
898*4882a593Smuzhiyun #define M98090_HPRM_WIDTH		1
899*4882a593Smuzhiyun #define M98090_HPVOLR_MASK		(31<<0)
900*4882a593Smuzhiyun #define M98090_HPVOLR_SHIFT		0
901*4882a593Smuzhiyun #define M98090_HPVOLR_WIDTH		5
902*4882a593Smuzhiyun #define M98090_HPVOLR_NUM		(1<<M98090_HPVOLR_WIDTH)
903*4882a593Smuzhiyun 
904*4882a593Smuzhiyun /*
905*4882a593Smuzhiyun  * M98090_REG_LEFT_SPK_MIXER
906*4882a593Smuzhiyun  */
907*4882a593Smuzhiyun #define M98090_MIXSPL_MIC2_MASK		(1<<5)
908*4882a593Smuzhiyun #define M98090_MIXSPL_MIC2_SHIFT	5
909*4882a593Smuzhiyun #define M98090_MIXSPL_MIC2_WIDTH	1
910*4882a593Smuzhiyun #define M98090_MIXSPL_MIC1_MASK		(1<<4)
911*4882a593Smuzhiyun #define M98090_MIXSPL_MIC1_SHIFT	4
912*4882a593Smuzhiyun #define M98090_MIXSPL_MIC1_WIDTH	1
913*4882a593Smuzhiyun #define M98090_MIXSPL_LINEB_MASK	(1<<3)
914*4882a593Smuzhiyun #define M98090_MIXSPL_LINEB_SHIFT	3
915*4882a593Smuzhiyun #define M98090_MIXSPL_LINEB_WIDTH	1
916*4882a593Smuzhiyun #define M98090_MIXSPL_LINEA_MASK	(1<<2)
917*4882a593Smuzhiyun #define M98090_MIXSPL_LINEA_SHIFT	2
918*4882a593Smuzhiyun #define M98090_MIXSPL_LINEA_WIDTH	1
919*4882a593Smuzhiyun #define M98090_MIXSPL_DACR_MASK		(1<<1)
920*4882a593Smuzhiyun #define M98090_MIXSPL_DACR_SHIFT	1
921*4882a593Smuzhiyun #define M98090_MIXSPL_DACR_WIDTH	1
922*4882a593Smuzhiyun #define M98090_MIXSPL_DACL_MASK		(1<<0)
923*4882a593Smuzhiyun #define M98090_MIXSPL_DACL_SHIFT	0
924*4882a593Smuzhiyun #define M98090_MIXSPL_DACL_WIDTH	1
925*4882a593Smuzhiyun #define M98090_MIXSPL_MASK		(63<<0)
926*4882a593Smuzhiyun #define M98090_MIXSPL_SHIFT		0
927*4882a593Smuzhiyun #define M98090_MIXSPL_WIDTH		6
928*4882a593Smuzhiyun #define M98090_MIXSPR_DACR_MASK		(1<<1)
929*4882a593Smuzhiyun #define M98090_MIXSPR_DACR_SHIFT	1
930*4882a593Smuzhiyun #define M98090_MIXSPR_DACR_WIDTH	1
931*4882a593Smuzhiyun 
932*4882a593Smuzhiyun 
933*4882a593Smuzhiyun /*
934*4882a593Smuzhiyun  * M98090_REG_RIGHT_SPK_MIXER
935*4882a593Smuzhiyun  */
936*4882a593Smuzhiyun #define M98090_SPK_SLAVE_MASK		(1<<6)
937*4882a593Smuzhiyun #define M98090_SPK_SLAVE_SHIFT		6
938*4882a593Smuzhiyun #define M98090_SPK_SLAVE_WIDTH		1
939*4882a593Smuzhiyun #define M98090_MIXSPR_MIC2_MASK		(1<<5)
940*4882a593Smuzhiyun #define M98090_MIXSPR_MIC2_SHIFT	5
941*4882a593Smuzhiyun #define M98090_MIXSPR_MIC2_WIDTH	1
942*4882a593Smuzhiyun #define M98090_MIXSPR_MIC1_MASK		(1<<4)
943*4882a593Smuzhiyun #define M98090_MIXSPR_MIC1_SHIFT	4
944*4882a593Smuzhiyun #define M98090_MIXSPR_MIC1_WIDTH	1
945*4882a593Smuzhiyun #define M98090_MIXSPR_LINEB_MASK	(1<<3)
946*4882a593Smuzhiyun #define M98090_MIXSPR_LINEB_SHIFT	3
947*4882a593Smuzhiyun #define M98090_MIXSPR_LINEB_WIDTH	1
948*4882a593Smuzhiyun #define M98090_MIXSPR_LINEA_MASK	(1<<2)
949*4882a593Smuzhiyun #define M98090_MIXSPR_LINEA_SHIFT	2
950*4882a593Smuzhiyun #define M98090_MIXSPR_LINEA_WIDTH	1
951*4882a593Smuzhiyun #define M98090_MIXSPR_DACR_MASK		(1<<1)
952*4882a593Smuzhiyun #define M98090_MIXSPR_DACR_SHIFT	1
953*4882a593Smuzhiyun #define M98090_MIXSPR_DACR_WIDTH	1
954*4882a593Smuzhiyun #define M98090_MIXSPR_DACL_MASK		(1<<0)
955*4882a593Smuzhiyun #define M98090_MIXSPR_DACL_SHIFT	0
956*4882a593Smuzhiyun #define M98090_MIXSPR_DACL_WIDTH	1
957*4882a593Smuzhiyun #define M98090_MIXSPR_MASK		(63<<0)
958*4882a593Smuzhiyun #define M98090_MIXSPR_SHIFT		0
959*4882a593Smuzhiyun #define M98090_MIXSPR_WIDTH		6
960*4882a593Smuzhiyun 
961*4882a593Smuzhiyun /*
962*4882a593Smuzhiyun  * M98090_REG_SPK_CONTROL
963*4882a593Smuzhiyun  */
964*4882a593Smuzhiyun #define M98090_MIXSPRG_MASK		(3<<2)
965*4882a593Smuzhiyun #define M98090_MIXSPRG_SHIFT		2
966*4882a593Smuzhiyun #define M98090_MIXSPRG_WIDTH		2
967*4882a593Smuzhiyun #define M98090_MIXSPRG_NUM		(1<<M98090_MIXSPRG_WIDTH)
968*4882a593Smuzhiyun #define M98090_MIXSPLG_MASK		(3<<0)
969*4882a593Smuzhiyun #define M98090_MIXSPLG_SHIFT		0
970*4882a593Smuzhiyun #define M98090_MIXSPLG_WIDTH		2
971*4882a593Smuzhiyun #define M98090_MIXSPLG_NUM		(1<<M98090_MIXSPLG_WIDTH)
972*4882a593Smuzhiyun 
973*4882a593Smuzhiyun /*
974*4882a593Smuzhiyun  * M98090_REG_LEFT_SPK_VOLUME
975*4882a593Smuzhiyun  */
976*4882a593Smuzhiyun #define M98090_SPLM_MASK		(1<<7)
977*4882a593Smuzhiyun #define M98090_SPLM_SHIFT		7
978*4882a593Smuzhiyun #define M98090_SPLM_WIDTH		1
979*4882a593Smuzhiyun #define M98090_SPVOLL_MASK		(63<<0)
980*4882a593Smuzhiyun #define M98090_SPVOLL_SHIFT		0
981*4882a593Smuzhiyun #define M98090_SPVOLL_WIDTH		6
982*4882a593Smuzhiyun #define M98090_SPVOLL_NUM		40
983*4882a593Smuzhiyun 
984*4882a593Smuzhiyun /*
985*4882a593Smuzhiyun  * M98090_REG_RIGHT_SPK_VOLUME
986*4882a593Smuzhiyun  */
987*4882a593Smuzhiyun #define M98090_SPRM_MASK		(1<<7)
988*4882a593Smuzhiyun #define M98090_SPRM_SHIFT		7
989*4882a593Smuzhiyun #define M98090_SPRM_WIDTH		1
990*4882a593Smuzhiyun #define M98090_SPVOLR_MASK		(63<<0)
991*4882a593Smuzhiyun #define M98090_SPVOLR_SHIFT		0
992*4882a593Smuzhiyun #define M98090_SPVOLR_WIDTH		6
993*4882a593Smuzhiyun #define M98090_SPVOLR_NUM		40
994*4882a593Smuzhiyun 
995*4882a593Smuzhiyun /*
996*4882a593Smuzhiyun  * M98090_REG_DRC_TIMING
997*4882a593Smuzhiyun  */
998*4882a593Smuzhiyun #define M98090_DRCEN_MASK		(1<<7)
999*4882a593Smuzhiyun #define M98090_DRCEN_SHIFT		7
1000*4882a593Smuzhiyun #define M98090_DRCEN_WIDTH		1
1001*4882a593Smuzhiyun #define M98090_DRCEN_NUM		(1<<M98090_DRCEN_WIDTH)
1002*4882a593Smuzhiyun #define M98090_DRCRLS_MASK		(7<<4)
1003*4882a593Smuzhiyun #define M98090_DRCRLS_SHIFT		4
1004*4882a593Smuzhiyun #define M98090_DRCRLS_WIDTH		3
1005*4882a593Smuzhiyun #define M98090_DRCATK_MASK		(7<<0)
1006*4882a593Smuzhiyun #define M98090_DRCATK_SHIFT		0
1007*4882a593Smuzhiyun #define M98090_DRCATK_WIDTH		3
1008*4882a593Smuzhiyun 
1009*4882a593Smuzhiyun /*
1010*4882a593Smuzhiyun  * M98090_REG_DRC_COMPRESSOR
1011*4882a593Smuzhiyun  */
1012*4882a593Smuzhiyun #define M98090_DRCCMP_MASK		(7<<5)
1013*4882a593Smuzhiyun #define M98090_DRCCMP_SHIFT		5
1014*4882a593Smuzhiyun #define M98090_DRCCMP_WIDTH		3
1015*4882a593Smuzhiyun #define M98090_DRCTHC_MASK		(31<<0)
1016*4882a593Smuzhiyun #define M98090_DRCTHC_SHIFT		0
1017*4882a593Smuzhiyun #define M98090_DRCTHC_WIDTH		5
1018*4882a593Smuzhiyun #define M98090_DRCTHC_NUM		(1<<M98090_DRCTHC_WIDTH)
1019*4882a593Smuzhiyun 
1020*4882a593Smuzhiyun /*
1021*4882a593Smuzhiyun  * M98090_REG_DRC_EXPANDER
1022*4882a593Smuzhiyun  */
1023*4882a593Smuzhiyun #define M98090_DRCEXP_MASK		(7<<5)
1024*4882a593Smuzhiyun #define M98090_DRCEXP_SHIFT		5
1025*4882a593Smuzhiyun #define M98090_DRCEXP_WIDTH		3
1026*4882a593Smuzhiyun #define M98090_DRCTHE_MASK		(31<<0)
1027*4882a593Smuzhiyun #define M98090_DRCTHE_SHIFT		0
1028*4882a593Smuzhiyun #define M98090_DRCTHE_WIDTH		5
1029*4882a593Smuzhiyun #define M98090_DRCTHE_NUM		(1<<M98090_DRCTHE_WIDTH)
1030*4882a593Smuzhiyun 
1031*4882a593Smuzhiyun /*
1032*4882a593Smuzhiyun  * M98090_REG_DRC_GAIN
1033*4882a593Smuzhiyun  */
1034*4882a593Smuzhiyun #define M98090_DRCG_MASK		(31<<0)
1035*4882a593Smuzhiyun #define M98090_DRCG_SHIFT		0
1036*4882a593Smuzhiyun #define M98090_DRCG_WIDTH		5
1037*4882a593Smuzhiyun #define M98090_DRCG_NUM			13
1038*4882a593Smuzhiyun 
1039*4882a593Smuzhiyun /*
1040*4882a593Smuzhiyun  * M98090_REG_RCV_LOUTL_MIXER
1041*4882a593Smuzhiyun  */
1042*4882a593Smuzhiyun #define M98090_MIXRCVL_MIC2_MASK	(1<<5)
1043*4882a593Smuzhiyun #define M98090_MIXRCVL_MIC2_SHIFT	5
1044*4882a593Smuzhiyun #define M98090_MIXRCVL_MIC2_WIDTH	1
1045*4882a593Smuzhiyun #define M98090_MIXRCVL_MIC1_MASK	(1<<4)
1046*4882a593Smuzhiyun #define M98090_MIXRCVL_MIC1_SHIFT	4
1047*4882a593Smuzhiyun #define M98090_MIXRCVL_MIC1_WIDTH	1
1048*4882a593Smuzhiyun #define M98090_MIXRCVL_LINEB_MASK	(1<<3)
1049*4882a593Smuzhiyun #define M98090_MIXRCVL_LINEB_SHIFT	3
1050*4882a593Smuzhiyun #define M98090_MIXRCVL_LINEB_WIDTH	1
1051*4882a593Smuzhiyun #define M98090_MIXRCVL_LINEA_MASK	(1<<2)
1052*4882a593Smuzhiyun #define M98090_MIXRCVL_LINEA_SHIFT	2
1053*4882a593Smuzhiyun #define M98090_MIXRCVL_LINEA_WIDTH	1
1054*4882a593Smuzhiyun #define M98090_MIXRCVL_DACR_MASK	(1<<1)
1055*4882a593Smuzhiyun #define M98090_MIXRCVL_DACR_SHIFT	1
1056*4882a593Smuzhiyun #define M98090_MIXRCVL_DACR_WIDTH	1
1057*4882a593Smuzhiyun #define M98090_MIXRCVL_DACL_MASK	(1<<0)
1058*4882a593Smuzhiyun #define M98090_MIXRCVL_DACL_SHIFT	0
1059*4882a593Smuzhiyun #define M98090_MIXRCVL_DACL_WIDTH	1
1060*4882a593Smuzhiyun #define M98090_MIXRCVL_MASK		(63<<0)
1061*4882a593Smuzhiyun #define M98090_MIXRCVL_SHIFT		0
1062*4882a593Smuzhiyun #define M98090_MIXRCVL_WIDTH		6
1063*4882a593Smuzhiyun 
1064*4882a593Smuzhiyun /*
1065*4882a593Smuzhiyun  * M98090_REG_RCV_LOUTL_CONTROL
1066*4882a593Smuzhiyun  */
1067*4882a593Smuzhiyun #define M98090_MIXRCVLG_MASK		(3<<0)
1068*4882a593Smuzhiyun #define M98090_MIXRCVLG_SHIFT		0
1069*4882a593Smuzhiyun #define M98090_MIXRCVLG_WIDTH		2
1070*4882a593Smuzhiyun #define M98090_MIXRCVLG_NUM		(1<<M98090_MIXRCVLG_WIDTH)
1071*4882a593Smuzhiyun 
1072*4882a593Smuzhiyun /*
1073*4882a593Smuzhiyun  * M98090_REG_RCV_LOUTL_VOLUME
1074*4882a593Smuzhiyun  */
1075*4882a593Smuzhiyun #define M98090_RCVLM_MASK		(1<<7)
1076*4882a593Smuzhiyun #define M98090_RCVLM_SHIFT		7
1077*4882a593Smuzhiyun #define M98090_RCVLM_WIDTH		1
1078*4882a593Smuzhiyun #define M98090_RCVLVOL_MASK		(31<<0)
1079*4882a593Smuzhiyun #define M98090_RCVLVOL_SHIFT		0
1080*4882a593Smuzhiyun #define M98090_RCVLVOL_WIDTH		5
1081*4882a593Smuzhiyun #define M98090_RCVLVOL_NUM		(1<<M98090_RCVLVOL_WIDTH)
1082*4882a593Smuzhiyun 
1083*4882a593Smuzhiyun /*
1084*4882a593Smuzhiyun  * M98090_REG_LOUTR_MIXER
1085*4882a593Smuzhiyun  */
1086*4882a593Smuzhiyun #define M98090_LINMOD_MASK		(1<<7)
1087*4882a593Smuzhiyun #define M98090_LINMOD_SHIFT		7
1088*4882a593Smuzhiyun #define M98090_LINMOD_WIDTH		1
1089*4882a593Smuzhiyun #define M98090_MIXRCVR_MIC2_MASK	(1<<5)
1090*4882a593Smuzhiyun #define M98090_MIXRCVR_MIC2_SHIFT	5
1091*4882a593Smuzhiyun #define M98090_MIXRCVR_MIC2_WIDTH	1
1092*4882a593Smuzhiyun #define M98090_MIXRCVR_MIC1_MASK	(1<<4)
1093*4882a593Smuzhiyun #define M98090_MIXRCVR_MIC1_SHIFT	4
1094*4882a593Smuzhiyun #define M98090_MIXRCVR_MIC1_WIDTH	1
1095*4882a593Smuzhiyun #define M98090_MIXRCVR_LINEB_MASK	(1<<3)
1096*4882a593Smuzhiyun #define M98090_MIXRCVR_LINEB_SHIFT	3
1097*4882a593Smuzhiyun #define M98090_MIXRCVR_LINEB_WIDTH	1
1098*4882a593Smuzhiyun #define M98090_MIXRCVR_LINEA_MASK	(1<<2)
1099*4882a593Smuzhiyun #define M98090_MIXRCVR_LINEA_SHIFT	2
1100*4882a593Smuzhiyun #define M98090_MIXRCVR_LINEA_WIDTH	1
1101*4882a593Smuzhiyun #define M98090_MIXRCVR_DACR_MASK	(1<<1)
1102*4882a593Smuzhiyun #define M98090_MIXRCVR_DACR_SHIFT	1
1103*4882a593Smuzhiyun #define M98090_MIXRCVR_DACR_WIDTH	1
1104*4882a593Smuzhiyun #define M98090_MIXRCVR_DACL_MASK	(1<<0)
1105*4882a593Smuzhiyun #define M98090_MIXRCVR_DACL_SHIFT	0
1106*4882a593Smuzhiyun #define M98090_MIXRCVR_DACL_WIDTH	1
1107*4882a593Smuzhiyun #define M98090_MIXRCVR_MASK		(63<<0)
1108*4882a593Smuzhiyun #define M98090_MIXRCVR_SHIFT		0
1109*4882a593Smuzhiyun #define M98090_MIXRCVR_WIDTH		6
1110*4882a593Smuzhiyun 
1111*4882a593Smuzhiyun /*
1112*4882a593Smuzhiyun  * M98090_REG_LOUTR_CONTROL
1113*4882a593Smuzhiyun  */
1114*4882a593Smuzhiyun #define M98090_MIXRCVRG_MASK		(3<<0)
1115*4882a593Smuzhiyun #define M98090_MIXRCVRG_SHIFT		0
1116*4882a593Smuzhiyun #define M98090_MIXRCVRG_WIDTH		2
1117*4882a593Smuzhiyun #define M98090_MIXRCVRG_NUM		(1<<M98090_MIXRCVRG_WIDTH)
1118*4882a593Smuzhiyun 
1119*4882a593Smuzhiyun /*
1120*4882a593Smuzhiyun  * M98090_REG_LOUTR_VOLUME
1121*4882a593Smuzhiyun  */
1122*4882a593Smuzhiyun #define M98090_RCVRM_MASK		(1<<7)
1123*4882a593Smuzhiyun #define M98090_RCVRM_SHIFT		7
1124*4882a593Smuzhiyun #define M98090_RCVRM_WIDTH		1
1125*4882a593Smuzhiyun #define M98090_RCVRVOL_MASK		(31<<0)
1126*4882a593Smuzhiyun #define M98090_RCVRVOL_SHIFT		0
1127*4882a593Smuzhiyun #define M98090_RCVRVOL_WIDTH		5
1128*4882a593Smuzhiyun #define M98090_RCVRVOL_NUM		(1<<M98090_RCVRVOL_WIDTH)
1129*4882a593Smuzhiyun 
1130*4882a593Smuzhiyun /*
1131*4882a593Smuzhiyun  * M98090_REG_JACK_DETECT
1132*4882a593Smuzhiyun  */
1133*4882a593Smuzhiyun #define M98090_JDETEN_MASK		(1<<7)
1134*4882a593Smuzhiyun #define M98090_JDETEN_SHIFT		7
1135*4882a593Smuzhiyun #define M98090_JDETEN_WIDTH		1
1136*4882a593Smuzhiyun #define M98090_JDWK_MASK		(1<<6)
1137*4882a593Smuzhiyun #define M98090_JDWK_SHIFT		6
1138*4882a593Smuzhiyun #define M98090_JDWK_WIDTH		1
1139*4882a593Smuzhiyun #define M98090_JDEB_MASK		(3<<0)
1140*4882a593Smuzhiyun #define M98090_JDEB_SHIFT		0
1141*4882a593Smuzhiyun #define M98090_JDEB_WIDTH		2
1142*4882a593Smuzhiyun #define M98090_JDEB_25MS		(0<<0)
1143*4882a593Smuzhiyun #define M98090_JDEB_50MS		(1<<0)
1144*4882a593Smuzhiyun #define M98090_JDEB_100MS		(2<<0)
1145*4882a593Smuzhiyun #define M98090_JDEB_200MS		(3<<0)
1146*4882a593Smuzhiyun 
1147*4882a593Smuzhiyun /*
1148*4882a593Smuzhiyun  * M98090_REG_INPUT_ENABLE
1149*4882a593Smuzhiyun  */
1150*4882a593Smuzhiyun #define M98090_MBEN_MASK		(1<<4)
1151*4882a593Smuzhiyun #define M98090_MBEN_SHIFT		4
1152*4882a593Smuzhiyun #define M98090_MBEN_WIDTH		1
1153*4882a593Smuzhiyun #define M98090_LINEAEN_MASK		(1<<3)
1154*4882a593Smuzhiyun #define M98090_LINEAEN_SHIFT		3
1155*4882a593Smuzhiyun #define M98090_LINEAEN_WIDTH		1
1156*4882a593Smuzhiyun #define M98090_LINEBEN_MASK		(1<<2)
1157*4882a593Smuzhiyun #define M98090_LINEBEN_SHIFT		2
1158*4882a593Smuzhiyun #define M98090_LINEBEN_WIDTH		1
1159*4882a593Smuzhiyun #define M98090_ADREN_MASK		(1<<1)
1160*4882a593Smuzhiyun #define M98090_ADREN_SHIFT		1
1161*4882a593Smuzhiyun #define M98090_ADREN_WIDTH		1
1162*4882a593Smuzhiyun #define M98090_ADLEN_MASK		(1<<0)
1163*4882a593Smuzhiyun #define M98090_ADLEN_SHIFT		0
1164*4882a593Smuzhiyun #define M98090_ADLEN_WIDTH		1
1165*4882a593Smuzhiyun 
1166*4882a593Smuzhiyun /*
1167*4882a593Smuzhiyun  * M98090_REG_OUTPUT_ENABLE
1168*4882a593Smuzhiyun  */
1169*4882a593Smuzhiyun #define M98090_HPREN_MASK		(1<<7)
1170*4882a593Smuzhiyun #define M98090_HPREN_SHIFT		7
1171*4882a593Smuzhiyun #define M98090_HPREN_WIDTH		1
1172*4882a593Smuzhiyun #define M98090_HPLEN_MASK		(1<<6)
1173*4882a593Smuzhiyun #define M98090_HPLEN_SHIFT		6
1174*4882a593Smuzhiyun #define M98090_HPLEN_WIDTH		1
1175*4882a593Smuzhiyun #define M98090_SPREN_MASK		(1<<5)
1176*4882a593Smuzhiyun #define M98090_SPREN_SHIFT		5
1177*4882a593Smuzhiyun #define M98090_SPREN_WIDTH		1
1178*4882a593Smuzhiyun #define M98090_SPLEN_MASK		(1<<4)
1179*4882a593Smuzhiyun #define M98090_SPLEN_SHIFT		4
1180*4882a593Smuzhiyun #define M98090_SPLEN_WIDTH		1
1181*4882a593Smuzhiyun #define M98090_RCVLEN_MASK		(1<<3)
1182*4882a593Smuzhiyun #define M98090_RCVLEN_SHIFT		3
1183*4882a593Smuzhiyun #define M98090_RCVLEN_WIDTH		1
1184*4882a593Smuzhiyun #define M98090_RCVREN_MASK		(1<<2)
1185*4882a593Smuzhiyun #define M98090_RCVREN_SHIFT		2
1186*4882a593Smuzhiyun #define M98090_RCVREN_WIDTH		1
1187*4882a593Smuzhiyun #define M98090_DAREN_MASK		(1<<1)
1188*4882a593Smuzhiyun #define M98090_DAREN_SHIFT		1
1189*4882a593Smuzhiyun #define M98090_DAREN_WIDTH		1
1190*4882a593Smuzhiyun #define M98090_DALEN_MASK		(1<<0)
1191*4882a593Smuzhiyun #define M98090_DALEN_SHIFT		0
1192*4882a593Smuzhiyun #define M98090_DALEN_WIDTH		1
1193*4882a593Smuzhiyun 
1194*4882a593Smuzhiyun /*
1195*4882a593Smuzhiyun  * M98090_REG_LEVEL_CONTROL
1196*4882a593Smuzhiyun  */
1197*4882a593Smuzhiyun #define M98090_ZDENN_MASK		(1<<2)
1198*4882a593Smuzhiyun #define M98090_ZDENN_SHIFT		2
1199*4882a593Smuzhiyun #define M98090_ZDENN_WIDTH		1
1200*4882a593Smuzhiyun #define M98090_ZDENN_NUM		(1<<M98090_ZDENN_WIDTH)
1201*4882a593Smuzhiyun #define M98090_VS2ENN_MASK		(1<<1)
1202*4882a593Smuzhiyun #define M98090_VS2ENN_SHIFT		1
1203*4882a593Smuzhiyun #define M98090_VS2ENN_WIDTH		1
1204*4882a593Smuzhiyun #define M98090_VS2ENN_NUM		(1<<M98090_VS2ENN_WIDTH)
1205*4882a593Smuzhiyun #define M98090_VSENN_MASK		(1<<0)
1206*4882a593Smuzhiyun #define M98090_VSENN_SHIFT		0
1207*4882a593Smuzhiyun #define M98090_VSENN_WIDTH		1
1208*4882a593Smuzhiyun #define M98090_VSENN_NUM		(1<<M98090_VSENN_WIDTH)
1209*4882a593Smuzhiyun 
1210*4882a593Smuzhiyun /*
1211*4882a593Smuzhiyun  * M98090_REG_DSP_FILTER_ENABLE
1212*4882a593Smuzhiyun  */
1213*4882a593Smuzhiyun #define M98090_DMIC34BQEN_MASK		(1<<4)
1214*4882a593Smuzhiyun #define M98090_DMIC34BQEN_SHIFT		4
1215*4882a593Smuzhiyun #define M98090_DMIC34BQEN_WIDTH		1
1216*4882a593Smuzhiyun #define M98090_DMIC34BQEN_NUM		(1<<M98090_DMIC34BQEN_WIDTH)
1217*4882a593Smuzhiyun #define M98090_ADCBQEN_MASK		(1<<3)
1218*4882a593Smuzhiyun #define M98090_ADCBQEN_SHIFT		3
1219*4882a593Smuzhiyun #define M98090_ADCBQEN_WIDTH		1
1220*4882a593Smuzhiyun #define M98090_ADCBQEN_NUM		(1<<M98090_ADCBQEN_WIDTH)
1221*4882a593Smuzhiyun #define M98090_EQ3BANDEN_MASK		(1<<2)
1222*4882a593Smuzhiyun #define M98090_EQ3BANDEN_SHIFT		2
1223*4882a593Smuzhiyun #define M98090_EQ3BANDEN_WIDTH		1
1224*4882a593Smuzhiyun #define M98090_EQ3BANDEN_NUM		(1<<M98090_EQ3BANDEN_WIDTH)
1225*4882a593Smuzhiyun #define M98090_EQ5BANDEN_MASK		(1<<1)
1226*4882a593Smuzhiyun #define M98090_EQ5BANDEN_SHIFT		1
1227*4882a593Smuzhiyun #define M98090_EQ5BANDEN_WIDTH		1
1228*4882a593Smuzhiyun #define M98090_EQ5BANDEN_NUM		(1<<M98090_EQ5BANDEN_WIDTH)
1229*4882a593Smuzhiyun #define M98090_EQ7BANDEN_MASK		(1<<0)
1230*4882a593Smuzhiyun #define M98090_EQ7BANDEN_SHIFT		0
1231*4882a593Smuzhiyun #define M98090_EQ7BANDEN_WIDTH		1
1232*4882a593Smuzhiyun #define M98090_EQ7BANDEN_NUM		(1<<M98090_EQ7BANDEN_WIDTH)
1233*4882a593Smuzhiyun 
1234*4882a593Smuzhiyun /*
1235*4882a593Smuzhiyun  * M98090_REG_BIAS_CONTROL
1236*4882a593Smuzhiyun  */
1237*4882a593Smuzhiyun #define M98090_VCM_MODE_MASK		(1<<0)
1238*4882a593Smuzhiyun #define M98090_VCM_MODE_SHIFT		0
1239*4882a593Smuzhiyun #define M98090_VCM_MODE_WIDTH		1
1240*4882a593Smuzhiyun #define M98090_VCM_MODE_NUM		(1<<M98090_VCM_MODE_WIDTH)
1241*4882a593Smuzhiyun 
1242*4882a593Smuzhiyun /*
1243*4882a593Smuzhiyun  * M98090_REG_DAC_CONTROL
1244*4882a593Smuzhiyun  */
1245*4882a593Smuzhiyun #define M98090_PERFMODE_MASK		(1<<1)
1246*4882a593Smuzhiyun #define M98090_PERFMODE_SHIFT		1
1247*4882a593Smuzhiyun #define M98090_PERFMODE_WIDTH		1
1248*4882a593Smuzhiyun #define M98090_PERFMODE_NUM		(1<<M98090_PERFMODE_WIDTH)
1249*4882a593Smuzhiyun #define M98090_DACHP_MASK		(1<<0)
1250*4882a593Smuzhiyun #define M98090_DACHP_SHIFT		0
1251*4882a593Smuzhiyun #define M98090_DACHP_WIDTH		1
1252*4882a593Smuzhiyun #define M98090_DACHP_NUM		(1<<M98090_DACHP_WIDTH)
1253*4882a593Smuzhiyun 
1254*4882a593Smuzhiyun /*
1255*4882a593Smuzhiyun  * M98090_REG_ADC_CONTROL
1256*4882a593Smuzhiyun  */
1257*4882a593Smuzhiyun #define M98090_OSR128_MASK		(1<<2)
1258*4882a593Smuzhiyun #define M98090_OSR128_SHIFT		2
1259*4882a593Smuzhiyun #define M98090_OSR128_WIDTH		1
1260*4882a593Smuzhiyun #define M98090_ADCDITHER_MASK		(1<<1)
1261*4882a593Smuzhiyun #define M98090_ADCDITHER_SHIFT		1
1262*4882a593Smuzhiyun #define M98090_ADCDITHER_WIDTH		1
1263*4882a593Smuzhiyun #define M98090_ADCDITHER_NUM		(1<<M98090_ADCDITHER_WIDTH)
1264*4882a593Smuzhiyun #define M98090_ADCHP_MASK		(1<<0)
1265*4882a593Smuzhiyun #define M98090_ADCHP_SHIFT		0
1266*4882a593Smuzhiyun #define M98090_ADCHP_WIDTH		1
1267*4882a593Smuzhiyun #define M98090_ADCHP_NUM		(1<<M98090_ADCHP_WIDTH)
1268*4882a593Smuzhiyun 
1269*4882a593Smuzhiyun /*
1270*4882a593Smuzhiyun  * M98090_REG_DEVICE_SHUTDOWN
1271*4882a593Smuzhiyun  */
1272*4882a593Smuzhiyun #define M98090_SHDNN_MASK		(1<<7)
1273*4882a593Smuzhiyun #define M98090_SHDNN_SHIFT		7
1274*4882a593Smuzhiyun #define M98090_SHDNN_WIDTH		1
1275*4882a593Smuzhiyun 
1276*4882a593Smuzhiyun /*
1277*4882a593Smuzhiyun  * M98090_REG_EQUALIZER_BASE
1278*4882a593Smuzhiyun  */
1279*4882a593Smuzhiyun #define M98090_B0_1_HI_MASK		(255<<0)
1280*4882a593Smuzhiyun #define M98090_B0_1_HI_SHIFT		0
1281*4882a593Smuzhiyun #define M98090_B0_1_HI_WIDTH		8
1282*4882a593Smuzhiyun #define M98090_B0_1_MID_MASK		(255<<0)
1283*4882a593Smuzhiyun #define M98090_B0_1_MID_SHIFT		0
1284*4882a593Smuzhiyun #define M98090_B0_1_MID_WIDTH		8
1285*4882a593Smuzhiyun #define M98090_B0_1_LO_MASK		(255<<0)
1286*4882a593Smuzhiyun #define M98090_B0_1_LO_SHIFT		0
1287*4882a593Smuzhiyun #define M98090_B0_1_LO_WIDTH		8
1288*4882a593Smuzhiyun #define M98090_B1_1_HI_MASK		(255<<0)
1289*4882a593Smuzhiyun #define M98090_B1_1_HI_SHIFT		0
1290*4882a593Smuzhiyun #define M98090_B1_1_HI_WIDTH		8
1291*4882a593Smuzhiyun #define M98090_B1_1_MID_MASK		(255<<0)
1292*4882a593Smuzhiyun #define M98090_B1_1_MID_SHIFT		0
1293*4882a593Smuzhiyun #define M98090_B1_1_MID_WIDTH		8
1294*4882a593Smuzhiyun #define M98090_B1_1_LO_MASK		(255<<0)
1295*4882a593Smuzhiyun #define M98090_B1_1_LO_SHIFT		0
1296*4882a593Smuzhiyun #define M98090_B1_1_LO_WIDTH		8
1297*4882a593Smuzhiyun #define M98090_B2_1_HI_MASK		(255<<0)
1298*4882a593Smuzhiyun #define M98090_B2_1_HI_SHIFT		0
1299*4882a593Smuzhiyun #define M98090_B2_1_HI_WIDTH		8
1300*4882a593Smuzhiyun #define M98090_B2_1_MID_MASK		(255<<0)
1301*4882a593Smuzhiyun #define M98090_B2_1_MID_SHIFT		0
1302*4882a593Smuzhiyun #define M98090_B2_1_MID_WIDTH		8
1303*4882a593Smuzhiyun #define M98090_B2_1_LO_MASK		(255<<0)
1304*4882a593Smuzhiyun #define M98090_B2_1_LO_SHIFT		0
1305*4882a593Smuzhiyun #define M98090_B2_1_LO_WIDTH		8
1306*4882a593Smuzhiyun #define M98090_A1_1_HI_MASK		(255<<0)
1307*4882a593Smuzhiyun #define M98090_A1_1_HI_SHIFT		0
1308*4882a593Smuzhiyun #define M98090_A1_1_HI_WIDTH		8
1309*4882a593Smuzhiyun #define M98090_A1_1_MID_MASK		(255<<0)
1310*4882a593Smuzhiyun #define M98090_A1_1_MID_SHIFT		0
1311*4882a593Smuzhiyun #define M98090_A1_1_MID_WIDTH		8
1312*4882a593Smuzhiyun #define M98090_A1_1_LO_MASK		(255<<0)
1313*4882a593Smuzhiyun #define M98090_A1_1_LO_SHIFT		0
1314*4882a593Smuzhiyun #define M98090_A1_1_LO_WIDTH		8
1315*4882a593Smuzhiyun #define M98090_A2_1_HI_MASK		(255<<0)
1316*4882a593Smuzhiyun #define M98090_A2_1_HI_SHIFT		0
1317*4882a593Smuzhiyun #define M98090_A2_1_HI_WIDTH		8
1318*4882a593Smuzhiyun #define M98090_A2_1_MID_MASK		(255<<0)
1319*4882a593Smuzhiyun #define M98090_A2_1_MID_SHIFT		0
1320*4882a593Smuzhiyun #define M98090_A2_1_MID_WIDTH		8
1321*4882a593Smuzhiyun #define M98090_A2_1_LO_MASK		(255<<0)
1322*4882a593Smuzhiyun #define M98090_A2_1_LO_SHIFT		0
1323*4882a593Smuzhiyun #define M98090_A2_1_LO_WIDTH		8
1324*4882a593Smuzhiyun 
1325*4882a593Smuzhiyun #define M98090_COEFS_PER_BAND		5
1326*4882a593Smuzhiyun #define M98090_COEFS_BLK_SZ		(M98090_COEFS_PER_BAND * 3)
1327*4882a593Smuzhiyun #define M98090_COEFS_MAX_SZ		(M98090_COEFS_BLK_SZ * 7)
1328*4882a593Smuzhiyun 
1329*4882a593Smuzhiyun /*
1330*4882a593Smuzhiyun  * M98090_REG_RECORD_BIQUAD_BASE
1331*4882a593Smuzhiyun  */
1332*4882a593Smuzhiyun #define M98090_REC_B0_HI_MASK		(255<<0)
1333*4882a593Smuzhiyun #define M98090_REC_B0_HI_SHIFT		0
1334*4882a593Smuzhiyun #define M98090_REC_B0_HI_WIDTH		8
1335*4882a593Smuzhiyun #define M98090_REC_B0_MID_MASK		(255<<0)
1336*4882a593Smuzhiyun #define M98090_REC_B0_MID_SHIFT		0
1337*4882a593Smuzhiyun #define M98090_REC_B0_MID_WIDTH		8
1338*4882a593Smuzhiyun #define M98090_REC_B0_LO_MASK		(255<<0)
1339*4882a593Smuzhiyun #define M98090_REC_B0_LO_SHIFT		0
1340*4882a593Smuzhiyun #define M98090_REC_B0_LO_WIDTH		8
1341*4882a593Smuzhiyun #define M98090_REC_B1_HI_MASK		(255<<0)
1342*4882a593Smuzhiyun #define M98090_REC_B1_HI_SHIFT		0
1343*4882a593Smuzhiyun #define M98090_REC_B1_HI_WIDTH		8
1344*4882a593Smuzhiyun #define M98090_REC_B1_MID_MASK		(255<<0)
1345*4882a593Smuzhiyun #define M98090_REC_B1_MID_SHIFT		0
1346*4882a593Smuzhiyun #define M98090_REC_B1_MID_WIDTH		8
1347*4882a593Smuzhiyun #define M98090_REC_B1_LO_MASK		(255<<0)
1348*4882a593Smuzhiyun #define M98090_REC_B1_LO_SHIFT		0
1349*4882a593Smuzhiyun #define M98090_REC_B1_LO_WIDTH		8
1350*4882a593Smuzhiyun #define M98090_REC_B2_HI_MASK		(255<<0)
1351*4882a593Smuzhiyun #define M98090_REC_B2_HI_SHIFT		0
1352*4882a593Smuzhiyun #define M98090_REC_B2_HI_WIDTH		8
1353*4882a593Smuzhiyun #define M98090_REC_B2_MID_MASK		(255<<0)
1354*4882a593Smuzhiyun #define M98090_REC_B2_MID_SHIFT		0
1355*4882a593Smuzhiyun #define M98090_REC_B2_MID_WIDTH		8
1356*4882a593Smuzhiyun #define M98090_REC_B2_LO_MASK		(255<<0)
1357*4882a593Smuzhiyun #define M98090_REC_B2_LO_SHIFT		0
1358*4882a593Smuzhiyun #define M98090_REC_B2_LO_WIDTH		8
1359*4882a593Smuzhiyun #define M98090_REC_A1_HI_MASK		(255<<0)
1360*4882a593Smuzhiyun #define M98090_REC_A1_HI_SHIFT		0
1361*4882a593Smuzhiyun #define M98090_REC_A1_HI_WIDTH		8
1362*4882a593Smuzhiyun #define M98090_REC_A1_MID_MASK		(255<<0)
1363*4882a593Smuzhiyun #define M98090_REC_A1_MID_SHIFT		0
1364*4882a593Smuzhiyun #define M98090_REC_A1_MID_WIDTH		8
1365*4882a593Smuzhiyun #define M98090_REC_A1_LO_MASK		(255<<0)
1366*4882a593Smuzhiyun #define M98090_REC_A1_LO_SHIFT		0
1367*4882a593Smuzhiyun #define M98090_REC_A1_LO_WIDTH		8
1368*4882a593Smuzhiyun #define M98090_REC_A2_HI_MASK		(255<<0)
1369*4882a593Smuzhiyun #define M98090_REC_A2_HI_SHIFT		0
1370*4882a593Smuzhiyun #define M98090_REC_A2_HI_WIDTH		8
1371*4882a593Smuzhiyun #define M98090_REC_A2_MID_MASK		(255<<0)
1372*4882a593Smuzhiyun #define M98090_REC_A2_MID_SHIFT		0
1373*4882a593Smuzhiyun #define M98090_REC_A2_MID_WIDTH		8
1374*4882a593Smuzhiyun #define M98090_REC_A2_LO_MASK		(255<<0)
1375*4882a593Smuzhiyun #define M98090_REC_A2_LO_SHIFT		0
1376*4882a593Smuzhiyun #define M98090_REC_A2_LO_WIDTH		8
1377*4882a593Smuzhiyun 
1378*4882a593Smuzhiyun /*
1379*4882a593Smuzhiyun  * M98090_REG_DMIC3_VOLUME
1380*4882a593Smuzhiyun  */
1381*4882a593Smuzhiyun #define M98090_DMIC_AV3G_MASK		(7<<4)
1382*4882a593Smuzhiyun #define M98090_DMIC_AV3G_SHIFT		4
1383*4882a593Smuzhiyun #define M98090_DMIC_AV3G_WIDTH		3
1384*4882a593Smuzhiyun #define M98090_DMIC_AV3G_NUM		(1<<M98090_DMIC_AV3G_WIDTH)
1385*4882a593Smuzhiyun #define M98090_DMIC_AV3_MASK		(15<<0)
1386*4882a593Smuzhiyun #define M98090_DMIC_AV3_SHIFT		0
1387*4882a593Smuzhiyun #define M98090_DMIC_AV3_WIDTH		4
1388*4882a593Smuzhiyun #define M98090_DMIC_AV3_NUM		(1<<M98090_DMIC_AV3_WIDTH)
1389*4882a593Smuzhiyun 
1390*4882a593Smuzhiyun /*
1391*4882a593Smuzhiyun  * M98090_REG_DMIC4_VOLUME
1392*4882a593Smuzhiyun  */
1393*4882a593Smuzhiyun #define M98090_DMIC_AV4G_MASK		(7<<4)
1394*4882a593Smuzhiyun #define M98090_DMIC_AV4G_SHIFT		4
1395*4882a593Smuzhiyun #define M98090_DMIC_AV4G_WIDTH		3
1396*4882a593Smuzhiyun #define M98090_DMIC_AV4G_NUM		(1<<M98090_DMIC_AV4G_WIDTH)
1397*4882a593Smuzhiyun #define M98090_DMIC_AV4_MASK		(15<<0)
1398*4882a593Smuzhiyun #define M98090_DMIC_AV4_SHIFT		0
1399*4882a593Smuzhiyun #define M98090_DMIC_AV4_WIDTH		4
1400*4882a593Smuzhiyun #define M98090_DMIC_AV4_NUM		(1<<M98090_DMIC_AV4_WIDTH)
1401*4882a593Smuzhiyun 
1402*4882a593Smuzhiyun /*
1403*4882a593Smuzhiyun  * M98090_REG_DMIC34_BQ_PREATTEN
1404*4882a593Smuzhiyun  */
1405*4882a593Smuzhiyun #define M98090_AV34BQ_MASK		(15<<0)
1406*4882a593Smuzhiyun #define M98090_AV34BQ_SHIFT		0
1407*4882a593Smuzhiyun #define M98090_AV34BQ_WIDTH		4
1408*4882a593Smuzhiyun #define M98090_AV34BQ_NUM		(1<<M98090_AV34BQ_WIDTH)
1409*4882a593Smuzhiyun 
1410*4882a593Smuzhiyun /*
1411*4882a593Smuzhiyun  * M98090_REG_RECORD_TDM_SLOT
1412*4882a593Smuzhiyun  */
1413*4882a593Smuzhiyun #define M98090_TDM_SLOTADCL_MASK	(3<<6)
1414*4882a593Smuzhiyun #define M98090_TDM_SLOTADCL_SHIFT	6
1415*4882a593Smuzhiyun #define M98090_TDM_SLOTADCL_WIDTH	2
1416*4882a593Smuzhiyun #define M98090_TDM_SLOTADCL_NUM		(1<<M98090_TDM_SLOTADCL_WIDTH)
1417*4882a593Smuzhiyun #define M98090_TDM_SLOTADCR_MASK	(3<<4)
1418*4882a593Smuzhiyun #define M98090_TDM_SLOTADCR_SHIFT	4
1419*4882a593Smuzhiyun #define M98090_TDM_SLOTADCR_WIDTH	2
1420*4882a593Smuzhiyun #define M98090_TDM_SLOTADCR_NUM		(1<<M98090_TDM_SLOTADCR_WIDTH)
1421*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC3_MASK	(3<<2)
1422*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC3_SHIFT	2
1423*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC3_WIDTH	2
1424*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC3_NUM	(1<<M98090_TDM_SLOTDMIC3_WIDTH)
1425*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC4_MASK	(3<<0)
1426*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC4_SHIFT	0
1427*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC4_WIDTH	2
1428*4882a593Smuzhiyun #define M98090_TDM_SLOTDMIC4_NUM	(1<<M98090_TDM_SLOTDMIC4_WIDTH)
1429*4882a593Smuzhiyun 
1430*4882a593Smuzhiyun /*
1431*4882a593Smuzhiyun  * M98090_REG_SAMPLE_RATE
1432*4882a593Smuzhiyun  */
1433*4882a593Smuzhiyun #define M98090_DMIC34_ZEROPAD_MASK	(1<<4)
1434*4882a593Smuzhiyun #define M98090_DMIC34_ZEROPAD_SHIFT	4
1435*4882a593Smuzhiyun #define M98090_DMIC34_ZEROPAD_WIDTH	1
1436*4882a593Smuzhiyun #define M98090_DMIC34_ZEROPAD_NUM	(1<<M98090_DIGMIC4_WIDTH)
1437*4882a593Smuzhiyun #define M98090_DMIC34_SRDIV_MASK	(7<<0)
1438*4882a593Smuzhiyun #define M98090_DMIC34_SRDIV_SHIFT	0
1439*4882a593Smuzhiyun #define M98090_DMIC34_SRDIV_WIDTH	3
1440*4882a593Smuzhiyun 
1441*4882a593Smuzhiyun /*
1442*4882a593Smuzhiyun  * M98090_REG_DMIC34_BIQUAD_BASE
1443*4882a593Smuzhiyun  */
1444*4882a593Smuzhiyun #define M98090_DMIC34_B0_HI_MASK	(255<<0)
1445*4882a593Smuzhiyun #define M98090_DMIC34_B0_HI_SHIFT	0
1446*4882a593Smuzhiyun #define M98090_DMIC34_B0_HI_WIDTH	8
1447*4882a593Smuzhiyun #define M98090_DMIC34_B0_MID_MASK	(255<<0)
1448*4882a593Smuzhiyun #define M98090_DMIC34_B0_MID_SHIFT	0
1449*4882a593Smuzhiyun #define M98090_DMIC34_B0_MID_WIDTH	8
1450*4882a593Smuzhiyun #define M98090_DMIC34_B0_LO_MASK	(255<<0)
1451*4882a593Smuzhiyun #define M98090_DMIC34_B0_LO_SHIFT	0
1452*4882a593Smuzhiyun #define M98090_DMIC34_B0_LO_WIDTH	8
1453*4882a593Smuzhiyun #define M98090_DMIC34_B1_HI_MASK	(255<<0)
1454*4882a593Smuzhiyun #define M98090_DMIC34_B1_HI_SHIFT	0
1455*4882a593Smuzhiyun #define M98090_DMIC34_B1_HI_WIDTH	8
1456*4882a593Smuzhiyun #define M98090_DMIC34_B1_MID_MASK	(255<<0)
1457*4882a593Smuzhiyun #define M98090_DMIC34_B1_MID_SHIFT	0
1458*4882a593Smuzhiyun #define M98090_DMIC34_B1_MID_WIDTH	8
1459*4882a593Smuzhiyun #define M98090_DMIC34_B1_LO_MASK	(255<<0)
1460*4882a593Smuzhiyun #define M98090_DMIC34_B1_LO_SHIFT	0
1461*4882a593Smuzhiyun #define M98090_DMIC34_B1_LO_WIDTH	8
1462*4882a593Smuzhiyun #define M98090_DMIC34_B2_HI_MASK	(255<<0)
1463*4882a593Smuzhiyun #define M98090_DMIC34_B2_HI_SHIFT	0
1464*4882a593Smuzhiyun #define M98090_DMIC34_B2_HI_WIDTH	8
1465*4882a593Smuzhiyun #define M98090_DMIC34_B2_MID_MASK	(255<<0)
1466*4882a593Smuzhiyun #define M98090_DMIC34_B2_MID_SHIFT	0
1467*4882a593Smuzhiyun #define M98090_DMIC34_B2_MID_WIDTH	8
1468*4882a593Smuzhiyun #define M98090_DMIC34_B2_LO_MASK	(255<<0)
1469*4882a593Smuzhiyun #define M98090_DMIC34_B2_LO_SHIFT	0
1470*4882a593Smuzhiyun #define M98090_DMIC34_B2_LO_WIDTH	8
1471*4882a593Smuzhiyun #define M98090_DMIC34_A1_HI_MASK	(255<<0)
1472*4882a593Smuzhiyun #define M98090_DMIC34_A1_HI_SHIFT	0
1473*4882a593Smuzhiyun #define M98090_DMIC34_A1_HI_WIDTH	8
1474*4882a593Smuzhiyun #define M98090_DMIC34_A1_MID_MASK	(255<<0)
1475*4882a593Smuzhiyun #define M98090_DMIC34_A1_MID_SHIFT	0
1476*4882a593Smuzhiyun #define M98090_DMIC34_A1_MID_WIDTH	8
1477*4882a593Smuzhiyun #define M98090_DMIC34_A1_LO_MASK	(255<<0)
1478*4882a593Smuzhiyun #define M98090_DMIC34_A1_LO_SHIFT	0
1479*4882a593Smuzhiyun #define M98090_DMIC34_A1_LO_WIDTH	8
1480*4882a593Smuzhiyun #define M98090_DMIC34_A2_HI_MASK	(255<<0)
1481*4882a593Smuzhiyun #define M98090_DMIC34_A2_HI_SHIFT	0
1482*4882a593Smuzhiyun #define M98090_DMIC34_A2_HI_WIDTH	8
1483*4882a593Smuzhiyun #define M98090_DMIC34_A2_MID_MASK	(255<<0)
1484*4882a593Smuzhiyun #define M98090_DMIC34_A2_MID_SHIFT	0
1485*4882a593Smuzhiyun #define M98090_DMIC34_A2_MID_WIDTH	8
1486*4882a593Smuzhiyun #define M98090_DMIC34_A2_LO_MASK	(255<<0)
1487*4882a593Smuzhiyun #define M98090_DMIC34_A2_LO_SHIFT	0
1488*4882a593Smuzhiyun #define M98090_DMIC34_A2_LO_WIDTH	8
1489*4882a593Smuzhiyun 
1490*4882a593Smuzhiyun #define M98090_JACK_STATE_NO_HEADSET	0
1491*4882a593Smuzhiyun #define M98090_JACK_STATE_NO_HEADSET_2	1
1492*4882a593Smuzhiyun #define M98090_JACK_STATE_HEADPHONE	2
1493*4882a593Smuzhiyun #define M98090_JACK_STATE_HEADSET	3
1494*4882a593Smuzhiyun 
1495*4882a593Smuzhiyun /*
1496*4882a593Smuzhiyun  * M98090_REG_REVISION_ID
1497*4882a593Smuzhiyun  */
1498*4882a593Smuzhiyun #define M98090_REVID_MASK		(255<<0)
1499*4882a593Smuzhiyun #define M98090_REVID_SHIFT		0
1500*4882a593Smuzhiyun #define M98090_REVID_WIDTH		8
1501*4882a593Smuzhiyun #define M98090_REVID_NUM		(1<<M98090_REVID_WIDTH)
1502*4882a593Smuzhiyun 
1503*4882a593Smuzhiyun /* Silicon revision number */
1504*4882a593Smuzhiyun #define M98090_REVA			0x40
1505*4882a593Smuzhiyun #define M98091_REVA			0x50
1506*4882a593Smuzhiyun 
1507*4882a593Smuzhiyun enum max98090_type {
1508*4882a593Smuzhiyun 	MAX98090,
1509*4882a593Smuzhiyun 	MAX98091,
1510*4882a593Smuzhiyun };
1511*4882a593Smuzhiyun 
1512*4882a593Smuzhiyun struct max98090_cdata {
1513*4882a593Smuzhiyun 	unsigned int rate;
1514*4882a593Smuzhiyun 	unsigned int fmt;
1515*4882a593Smuzhiyun };
1516*4882a593Smuzhiyun 
1517*4882a593Smuzhiyun struct max98090_priv {
1518*4882a593Smuzhiyun 	struct regmap *regmap;
1519*4882a593Smuzhiyun 	struct snd_soc_component *component;
1520*4882a593Smuzhiyun 	enum max98090_type devtype;
1521*4882a593Smuzhiyun 	struct max98090_pdata *pdata;
1522*4882a593Smuzhiyun 	struct clk *mclk;
1523*4882a593Smuzhiyun 	unsigned int sysclk;
1524*4882a593Smuzhiyun 	unsigned int pclk;
1525*4882a593Smuzhiyun 	unsigned int bclk;
1526*4882a593Smuzhiyun 	unsigned int lrclk;
1527*4882a593Smuzhiyun 	u32 dmic_freq;
1528*4882a593Smuzhiyun 	struct max98090_cdata dai[1];
1529*4882a593Smuzhiyun 	int jack_state;
1530*4882a593Smuzhiyun 	struct delayed_work jack_work;
1531*4882a593Smuzhiyun 	struct delayed_work pll_det_enable_work;
1532*4882a593Smuzhiyun 	struct work_struct pll_det_disable_work;
1533*4882a593Smuzhiyun 	struct snd_soc_jack *jack;
1534*4882a593Smuzhiyun 	unsigned int dai_fmt;
1535*4882a593Smuzhiyun 	int tdm_slots;
1536*4882a593Smuzhiyun 	int tdm_width;
1537*4882a593Smuzhiyun 	u8 lin_state;
1538*4882a593Smuzhiyun 	unsigned int pa1en;
1539*4882a593Smuzhiyun 	unsigned int pa2en;
1540*4882a593Smuzhiyun 	unsigned int sidetone;
1541*4882a593Smuzhiyun 	bool master;
1542*4882a593Smuzhiyun 	bool shdn_pending;
1543*4882a593Smuzhiyun };
1544*4882a593Smuzhiyun 
1545*4882a593Smuzhiyun int max98090_mic_detect(struct snd_soc_component *component,
1546*4882a593Smuzhiyun 	struct snd_soc_jack *jack);
1547*4882a593Smuzhiyun 
1548*4882a593Smuzhiyun #endif
1549