xref: /OK3568_Linux_fs/kernel/sound/soc/codecs/es8396.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * ES8396.h  --  ES8396 ALSA SoC Audio Codec
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Based on alc5632.h by Arnaud Patard
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef _ES8396_H
9*4882a593Smuzhiyun #define _ES8396_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun /* THE REGISTER DEFINITION FORMAT            */
12*4882a593Smuzhiyun /* ES8396_REGISTER NAME_REG_REGISTER ADDRESS */
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /* write 0x01 to Register 0x00 will reset all registers of codec.
15*4882a593Smuzhiyun  * Register 0x00 must be cleared before normal
16*4882a593Smuzhiyun */
17*4882a593Smuzhiyun #define ES8396_RESET_REG00			0x00
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun /* Clock Scheme Register definition */
20*4882a593Smuzhiyun /* Register 0x01 for MCLK source selection */
21*4882a593Smuzhiyun #define ES8396_CLK_SRC_SEL_REG01		0x01
22*4882a593Smuzhiyun /* Register 0x02 for PLL power down/up, reset, divider and divider dither */
23*4882a593Smuzhiyun #define ES8396_PLL_CTRL_1_REG02			0x02
24*4882a593Smuzhiyun /* Register 0x03 for PLL low power mode and PLL power supply selection */
25*4882a593Smuzhiyun #define ES8396_PLL_CTRL_2_REG03			0x03
26*4882a593Smuzhiyun /* Register 0x04 for PLL N cofficient, must be in 5 to 13 range*/
27*4882a593Smuzhiyun #define ES8396_PLL_N_REG04			0x04
28*4882a593Smuzhiyun /* Register 0x05-0x07 for PLL k cofficient*/
29*4882a593Smuzhiyun #define ES8396_PLL_K2_REG05			0x05
30*4882a593Smuzhiyun #define ES8396_PLL_K1_REG06			0x06
31*4882a593Smuzhiyun #define ES8396_PLL_K0_REG07			0x07
32*4882a593Smuzhiyun /* Register 0x08 for ADC,DAC CHARGE PUMP and CLASS D clock switch*/
33*4882a593Smuzhiyun #define ES8396_CLK_CTRL_REG08			0x08
34*4882a593Smuzhiyun /* Register 0x09 for ADC MCLK divider*/
35*4882a593Smuzhiyun #define ES8396_ADC_CLK_DIV_REG09		0x09
36*4882a593Smuzhiyun  /* Register 0x0A for DAC MCLK divider*/
37*4882a593Smuzhiyun #define ES8396_DAC_CLK_DIV_REG0A		0x0A
38*4882a593Smuzhiyun  /* Register 0x0B for CHARGE PUMP CLOCK divider*/
39*4882a593Smuzhiyun #define ES8396_CP_CLK_DIV_REG0B			0x0B
40*4882a593Smuzhiyun /* Register 0x0C for CLASS D Amplifier Clock divider*/
41*4882a593Smuzhiyun #define ES8396_DAMP_CLK_DIV_REG0C		0x0C
42*4882a593Smuzhiyun /* Register 0x0D for DLL control and DAC MCLK SELECTION*/
43*4882a593Smuzhiyun #define ES8396_DLL_CTRL_REG0D			0x0D
44*4882a593Smuzhiyun /* Register 0x0E for BCLK divider1 in I2S BUS Master mode*/
45*4882a593Smuzhiyun #define ES8396_BCLK_DIV_M1_REG0E		0x0E
46*4882a593Smuzhiyun /* Register 0x0F for BCLK divider2 in I2S BUS Master mode*/
47*4882a593Smuzhiyun #define ES8396_BCLK_DIV_M2_REG0F		0x0F
48*4882a593Smuzhiyun /* Register 0x10 for LRCK divider3 in I2S BUS Master mode*/
49*4882a593Smuzhiyun #define ES8396_LRCK_DIV_M3_REG10		0x10
50*4882a593Smuzhiyun /* Register 0x11 for LRCK divider4 in I2S BUS Master mode*/
51*4882a593Smuzhiyun #define ES8396_LRCK_DIV_M4_REG11		0x11
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun /* PAD MUX REGISTER DEFINITION */
54*4882a593Smuzhiyun /* Register 0x12 for SDP1 Master or slave mode*/
55*4882a593Smuzhiyun #define ES8396_SDP_1_MS_REG12			0x12
56*4882a593Smuzhiyun /* Register 0x13 for SDP2 Master or slave mode*/
57*4882a593Smuzhiyun #define ES8396_SDP_2_MS_REG13			0x13
58*4882a593Smuzhiyun /* Register 0x14 for SDP1 Master or slave mode*/
59*4882a593Smuzhiyun #define ES8396_SDP_3_MS_REG14			0x14
60*4882a593Smuzhiyun /* Register 0x15 for ADLRCK or GPIO control*/
61*4882a593Smuzhiyun #define ES8396_ALRCK_GPIO_SEL_REG15		0x15
62*4882a593Smuzhiyun 
63*4882a593Smuzhiyun /* GPIO REGISTER DEFINITION */
64*4882a593Smuzhiyun /* Register 0x16 for GPIO interrupt*/
65*4882a593Smuzhiyun #define ES8396_GPIO_IRQ_REG16			0x16
66*4882a593Smuzhiyun /* Register 0x17 for GPIO STATUS*/
67*4882a593Smuzhiyun #define ES8396_GPIO_STA_REG17			0x17
68*4882a593Smuzhiyun 
69*4882a593Smuzhiyun /*  Digital Mixer Register Definition  */
70*4882a593Smuzhiyun /* Register 0x18 for Digital Mixer Source*/
71*4882a593Smuzhiyun #define ES8396_DMIX_SRC_1_REG18		        0x18
72*4882a593Smuzhiyun /* Register 0x19 for Digital Mixer Source*/
73*4882a593Smuzhiyun #define ES8396_DMIX_SRC_2_REG19		        0x19
74*4882a593Smuzhiyun /* Register 0x1A for DAC Digital Source and SDP1 Digital Output Source*/
75*4882a593Smuzhiyun #define ES8396_DAC_SRC_SDP1O_SRC_REG1A	0x1A
76*4882a593Smuzhiyun /* Register 0x1B for SDP2 and SDP3 Digital Output Source*/
77*4882a593Smuzhiyun #define ES8396_SDP2O_SDP3O_SRC_REG1B		0x1B
78*4882a593Smuzhiyun /* Register 0x1C for EQ CLOCK and OSR Selection*/
79*4882a593Smuzhiyun #define ES8396_EQ_CLK_OSR_SEL_REG1C		0x1C
80*4882a593Smuzhiyun /* Register 0x1D for Address of shared register map*/
81*4882a593Smuzhiyun #define ES8396_SHARED_ADDR_REG1D		0x1D
82*4882a593Smuzhiyun /* Register 0x1E for DATA of shared register map*/
83*4882a593Smuzhiyun #define ES8396_SHARED_DATA_REG1E		0x1E
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun /*  Serial AUDIO Interface Register Definition  */
86*4882a593Smuzhiyun /* Register 0x1F for SDP1 INPUT FORMAT*/
87*4882a593Smuzhiyun #define ES8396_SDP1_IN_FMT_REG1F		0x1F
88*4882a593Smuzhiyun /* Register 0x20 for SDP1 OUTPUT FORMAT*/
89*4882a593Smuzhiyun #define ES8396_SDP1_OUT_FMT_REG20		0x20
90*4882a593Smuzhiyun /* Register 0x21 for SDP1 Digital GAIN AND TDM MODE*/
91*4882a593Smuzhiyun #define ES8396_SDP1_DGAIN_TDM_REG21		0x21
92*4882a593Smuzhiyun /* Register 0x22 for SDP2 INPUT FORMAT*/
93*4882a593Smuzhiyun #define ES8396_SDP2_IN_FMT_REG22		0x22
94*4882a593Smuzhiyun /* Register 0x23 for SDP2 OUTPUT FORMAT*/
95*4882a593Smuzhiyun #define ES8396_SDP2_OUT_FMT_REG23		0x23
96*4882a593Smuzhiyun /* Register 0x24 for SDP3 INPUT FORMAT*/
97*4882a593Smuzhiyun #define ES8396_SDP3_IN_FMT_REG24		0x24
98*4882a593Smuzhiyun /* Register 0x25 for SDP3 OUTPUT FORMAT*/
99*4882a593Smuzhiyun #define ES8396_SDP3_OUT_FMT_REG25		0x25
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun /* SPEAKER MIXER Register Definition */
102*4882a593Smuzhiyun /* Register 0x26 for SPK MIXER*/
103*4882a593Smuzhiyun #define ES8396_SPK_MIXER_REG26		        0x26
104*4882a593Smuzhiyun /* Register 0x27 for SPK MIXER BOOST GAIN*/
105*4882a593Smuzhiyun #define ES8396_SPK_MIXER_BOOST_REG27		0x27
106*4882a593Smuzhiyun /* Register 0x28 for SPK MIXER VOLUME*/
107*4882a593Smuzhiyun #define ES8396_SPK_MIXER_VOL_REG28		0x28
108*4882a593Smuzhiyun /* Register 0x29 for SPK MIXER REFERENCE AND LOW POWER MODE*/
109*4882a593Smuzhiyun #define ES8396_SPK_MIXER_REF_LP_REG29		0x29
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun /*  HP MIXER Register Definition  */
112*4882a593Smuzhiyun /* Register 0x2A for HP MIXER*/
113*4882a593Smuzhiyun #define ES8396_HP_MIXER_REG2A		        0x2A
114*4882a593Smuzhiyun /* Register 0x2B for HP MIXER BOOST GAIN*/
115*4882a593Smuzhiyun #define ES8396_HP_MIXER_BOOST_REG2B		0x2B
116*4882a593Smuzhiyun /* Register 0x2C for HP MIXER VOLUME*/
117*4882a593Smuzhiyun #define ES8396_HP_MIXER_VOL_REG2C		0x2C
118*4882a593Smuzhiyun /* Register 0x2D for HP MIXER REFERENCE AND LOW POWER MODE*/
119*4882a593Smuzhiyun #define ES8396_HP_MIXER_REF_LP_REG2D		0x2D
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun /*  AX MIXER Register Definition  */
122*4882a593Smuzhiyun /* Register 0x2E for AX MIXER*/
123*4882a593Smuzhiyun #define ES8396_AX_MIXER_REG2E		        0x2E
124*4882a593Smuzhiyun /* Register 0x2F for AX MIXER BOOST GAIN*/
125*4882a593Smuzhiyun #define ES8396_AX_MIXER_BOOST_REG2F		0x2F
126*4882a593Smuzhiyun /* Register 0x30 for AX MIXER VOLUME*/
127*4882a593Smuzhiyun #define ES8396_AX_MIXER_VOL_REG30		0x30
128*4882a593Smuzhiyun /* Register 0x31 for AX MIXER REFERENCE AND LOW POWER MODE*/
129*4882a593Smuzhiyun #define ES8396_AX_MIXER_REF_LP_REG31		0x31
130*4882a593Smuzhiyun 
131*4882a593Smuzhiyun /*  LN MIXER Register Definition  */
132*4882a593Smuzhiyun /* Register 0x32 for LN MIXER*/
133*4882a593Smuzhiyun #define ES8396_LN_MIXER_REG32		        0x32
134*4882a593Smuzhiyun /* Register 0x33 for LN MIXER BOOST GAIN*/
135*4882a593Smuzhiyun #define ES8396_LN_MIXER_BOOST_REG33		0x33
136*4882a593Smuzhiyun /* Register 0x34 for LN MIXER VOLUME*/
137*4882a593Smuzhiyun #define ES8396_LN_MIXER_VOL_REG34		0x34
138*4882a593Smuzhiyun /* Register 0x35 for LN MIXER REFERENCE AND LOW POWER MODE*/
139*4882a593Smuzhiyun #define ES8396_LN_MIXER_REF_LP_REG35		0x35
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun /*  MN MIXER Register Definition  */
142*4882a593Smuzhiyun /* Register 0x36 for MN MIXER*/
143*4882a593Smuzhiyun #define ES8396_MN_MIXER_REG36		        0x36
144*4882a593Smuzhiyun /* Register 0x37 for MN MIXER BOOST GAIN*/
145*4882a593Smuzhiyun #define ES8396_MN_MIXER_BOOST_REG37		0x37
146*4882a593Smuzhiyun /* Register 0x38 for MN MIXER VOLUME*/
147*4882a593Smuzhiyun #define ES8396_MN_MIXER_VOL_REG38		0x38
148*4882a593Smuzhiyun /* Register 0x39 for MN MIXER REFERENCE AND LOW POWER MODE*/
149*4882a593Smuzhiyun #define ES8396_MN_MIXER_REF_LP_REG39		0x39
150*4882a593Smuzhiyun 
151*4882a593Smuzhiyun /*  SPKD Register Definition  */
152*4882a593Smuzhiyun /* Register 0x3A for CLASS D control and SOURCE SELECTION*/
153*4882a593Smuzhiyun #define ES8396_SPK_CTRL_SRC_REG3A		0x3A
154*4882a593Smuzhiyun /* Register 0x3B for CLASS D Enabled and Volume Control*/
155*4882a593Smuzhiyun #define ES8396_SPK_EN_VOL_REG3B		        0x3B
156*4882a593Smuzhiyun /* Register 0x3C for CLASS D CONTROL */
157*4882a593Smuzhiyun #define ES8396_SPK_CTRL_1_REG3C		        0x3C
158*4882a593Smuzhiyun /* Register 0x3D for CLASS D CONTROL*/
159*4882a593Smuzhiyun #define ES8396_SPK_CTRL_2_REG3D		        0x3D
160*4882a593Smuzhiyun 
161*4882a593Smuzhiyun /*  CPHP Register Definition  */
162*4882a593Smuzhiyun /* Register 0x3E for CPHP HPL ICAL VALUE*/
163*4882a593Smuzhiyun #define ES8396_CPHP_HPL_ICAL_REG3E		0x3E
164*4882a593Smuzhiyun /* Register 0x3F for CPHP HPR ICAL VALUE*/
165*4882a593Smuzhiyun #define ES8396_CPHP_HPR_ICAL_REG3F		0x3F
166*4882a593Smuzhiyun /* Register 0x40 for CPHP ENABLE */
167*4882a593Smuzhiyun #define ES8396_CPHP_ENABLE_REG40		0x40
168*4882a593Smuzhiyun /* Register 0x41 for CPHP VOLUME AND ICAL ENABLE*/
169*4882a593Smuzhiyun #define ES8396_CPHP_ICAL_VOL_REG41		0x41
170*4882a593Smuzhiyun /* Register 0x42 for CPHP CONTROL */
171*4882a593Smuzhiyun #define ES8396_CPHP_CTRL_1_REG42		0x42
172*4882a593Smuzhiyun /* Register 0x43 for CPHP CONTROL*/
173*4882a593Smuzhiyun #define ES8396_CPHP_CTRL_2_REG43		0x43
174*4882a593Smuzhiyun /* Register 0x44 for CPHP CONTROL*/
175*4882a593Smuzhiyun #define ES8396_CPHP_CTRL_3_REG44		0x44
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun /*  MONOHP Register Definition  */
178*4882a593Smuzhiyun /* Register 0x45 for MONOHP REFERENCE AND LOW POWER MODE*/
179*4882a593Smuzhiyun #define ES8396_MONOHP_REF_LP_REG45		0x45
180*4882a593Smuzhiyun /* Register 0x46 for MONOHP N MIXER*/
181*4882a593Smuzhiyun #define ES8396_MONOHP_N_MIXER_REG46		0x46
182*4882a593Smuzhiyun /* Register 0x47 for MONOHP P MIXER */
183*4882a593Smuzhiyun #define ES8396_MONOHP_P_MIXER_REG47		0x47
184*4882a593Smuzhiyun /* Register 0x48 for MONOHP P BOOST AND MUTE CONTROL*/
185*4882a593Smuzhiyun #define ES8396_MONOHP_P_BOOST_MUTE_REG48	0x48
186*4882a593Smuzhiyun /* Register 0x49 for MONOHP N BOOST AND MUTE CONTROL */
187*4882a593Smuzhiyun #define ES8396_MONOHP_N_BOOST_MUTE_REG49	0x49
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun /*  LNOUT Register Definition  */
190*4882a593Smuzhiyun /* Register 0x4A for LNOUT LOUT1 ENABLE AND MIXER*/
191*4882a593Smuzhiyun #define ES8396_LNOUT_LO1EN_LO1MIX_REG4A		0x4A
192*4882a593Smuzhiyun /* Register 0x4B for LNOUT ROUT1 ENABLE AND MIXER*/
193*4882a593Smuzhiyun #define ES8396_LNOUT_RO1EN_RO1MIX_REG4B		0x4B
194*4882a593Smuzhiyun /* Register 0x4C for LNOUT LOUT2 ENABLE AND MIXER*/
195*4882a593Smuzhiyun #define ES8396_LNOUT_LO2EN_LO2MIX_REG4C		0x4C
196*4882a593Smuzhiyun /* Register 0x4D for LNOUT ROUT2 ENABLE AND MIXER*/
197*4882a593Smuzhiyun #define ES8396_LNOUT_RO2EN_RO2MIX_REG4D		0x4D
198*4882a593Smuzhiyun /* Register 0x4E for LNOUT LOUT1 GAIN CONTROL */
199*4882a593Smuzhiyun #define ES8396_LNOUT_LO1_GAIN_CTRL_REG4E	0x4E
200*4882a593Smuzhiyun /* Register 0x4F for LNOUT ROUT1 GAIN CONTROL */
201*4882a593Smuzhiyun #define ES8396_LNOUT_RO1_GAIN_CTRL_REG4F	0x4F
202*4882a593Smuzhiyun /* Register 0x50 for LNOUT LOUT2 GAIN CONTROL */
203*4882a593Smuzhiyun #define ES8396_LNOUT_LO2_GAIN_CTRL_REG50	0x50
204*4882a593Smuzhiyun /* Register 0x51 for LNOUT ROUT2 GAIN CONTROL */
205*4882a593Smuzhiyun #define ES8396_LNOUT_RO2_GAIN_CTRL_REG51	0x51
206*4882a593Smuzhiyun /* Register 0x52 for LNOUT REFERENCE */
207*4882a593Smuzhiyun #define ES8396_LNOUT_REFERENCE_REG52	        0x52
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun /*  ADC Register Definition  */
210*4882a593Smuzhiyun /* Register 0x53 for ADC CHIP STATE MACHINE and Digital Control*/
211*4882a593Smuzhiyun #define ES8396_ADC_CSM_REG53			0x53
212*4882a593Smuzhiyun /* Register 0x54 for ADC DMIC and Ramp Rate*/
213*4882a593Smuzhiyun #define ES8396_ADC_DMIC_RAMPRATE_REG54		0x54
214*4882a593Smuzhiyun /* Register 0x55 for ADC HIGH PASS FILTER,U-LAW/A-LAW COMPMODE,DATA SELECTION*/
215*4882a593Smuzhiyun #define ES8396_ADC_HPF_COMP_DASEL_REG55         0x55
216*4882a593Smuzhiyun /* Register 0x56 for ADC LEFT ADC VOLUME*/
217*4882a593Smuzhiyun #define ES8396_ADC_LADC_VOL_REG56		0x56
218*4882a593Smuzhiyun /* Register 0x57 for ADC RIGHT ADC VOLUME */
219*4882a593Smuzhiyun #define ES8396_ADC_RADC_VOL_REG57		0x57
220*4882a593Smuzhiyun /* Register 0x58 for ADC ALC CONTROL 1*/
221*4882a593Smuzhiyun #define ES8396_ADC_ALC_CTRL_1_REG58	        0x58
222*4882a593Smuzhiyun /* Register 0x59 for ADC ALC CONTROL 2 */
223*4882a593Smuzhiyun #define ES8396_ADC_ALC_CTRL_2_REG59		0x59
224*4882a593Smuzhiyun /* Register 0x5A for ADC ALC CONTROL 3 */
225*4882a593Smuzhiyun #define ES8396_ADC_ALC_CTRL_3_REG5A	        0x5A
226*4882a593Smuzhiyun /* Register 0x5B for ADC ALC CONTROL 4 */
227*4882a593Smuzhiyun #define ES8396_ADC_ALC_CTRL_4_REG5B	        0x5B
228*4882a593Smuzhiyun /* Register 0x5C for ADC ALC CONTROL 5*/
229*4882a593Smuzhiyun #define ES8396_ADC_ALC_CTRL_5_REG5C		0x5C
230*4882a593Smuzhiyun /* Register 0x5D for ADC ALC CONTROL 6*/
231*4882a593Smuzhiyun #define ES8396_ADC_ALC_CTRL_6_REG5D		0x5D
232*4882a593Smuzhiyun /* Register 0x5E for ADC ANALOG CONTROL*/
233*4882a593Smuzhiyun #define ES8396_ADC_ANALOG_CTRL_REG5E		0x5E
234*4882a593Smuzhiyun /* Register 0x5F for ADC LOW POWER MODE AND REFERENCE*/
235*4882a593Smuzhiyun #define ES8396_ADC_LP_REFERENCE_REG5F		0x5F
236*4882a593Smuzhiyun /* Register 0x60 for ADC MIC BOOST */
237*4882a593Smuzhiyun #define ES8396_ADC_MICBOOST_REG60		0x60
238*4882a593Smuzhiyun /* Register 0x61 for ADC L/R PGA GAIN */
239*4882a593Smuzhiyun #define ES8396_ADC_PGA_GAIN_REG61		0x61
240*4882a593Smuzhiyun /* Register 0x62 for ADC LPGA MIXER */
241*4882a593Smuzhiyun #define ES8396_ADC_LPGA_MIXER_REG62		0x62
242*4882a593Smuzhiyun /* Register 0x63 for ADC RPGA MIXER */
243*4882a593Smuzhiyun #define ES8396_ADC_RPGA_MIXER_REG63	        0x63
244*4882a593Smuzhiyun /* Register 0x64 for ADC LNMUX */
245*4882a593Smuzhiyun #define ES8396_ADC_LN_MUX_REG64			0x64
246*4882a593Smuzhiyun /* Register 0x65 for ADC AXMUX */
247*4882a593Smuzhiyun #define ES8396_ADC_AX_MUX_REG65			0x65
248*4882a593Smuzhiyun 
249*4882a593Smuzhiyun /*  DAC Register Definition  */
250*4882a593Smuzhiyun /* Register 0x66 for DAC CHIP STATE MACHINE AND MUTE CONTROL*/
251*4882a593Smuzhiyun #define ES8396_DAC_CSM_REG66			0x66
252*4882a593Smuzhiyun /* Register 0x67 for DAC RAMPE RATE AND MONO/ZERO CONTROL*/
253*4882a593Smuzhiyun #define ES8396_DAC_RAMP_RATE_REG67	        0x67
254*4882a593Smuzhiyun /* Register 0x68 for DAC STEREO ENHANCEMENT */
255*4882a593Smuzhiyun #define ES8396_DAC_STEREO_ENHANCE_REG68		0x68
256*4882a593Smuzhiyun /* Register 0x69 for DAC JACK DETECTION AND U/A-LAW COMPRESS */
257*4882a593Smuzhiyun #define ES8396_DAC_JACK_DET_COMP_REG69		0x69
258*4882a593Smuzhiyun /* Register 0x6A for DAC LEFT DAC VOLUME */
259*4882a593Smuzhiyun #define ES8396_DAC_LDAC_VOL_REG6A	        0x6A
260*4882a593Smuzhiyun /* Register 0x6B for DAC RIGHT DAC VOLUME */
261*4882a593Smuzhiyun #define ES8396_DAC_RDAC_VOL_REG6B	        0x6B
262*4882a593Smuzhiyun /* Register 0x6C for DAC LIMITER CONTROL 1 */
263*4882a593Smuzhiyun #define ES8396_DAC_DPL_CTRL_1_REG6C	        0x6C
264*4882a593Smuzhiyun /* Register 0x6D for DAC LIMITER CONTROL 2 */
265*4882a593Smuzhiyun #define ES8396_DAC_DPL_CTRL_2_REG6D	        0x6D
266*4882a593Smuzhiyun /* Register 0x6E for DAC REFERENCE AND POWER CONTROL */
267*4882a593Smuzhiyun #define ES8396_DAC_REF_PWR_CTRL_REG6E		0x6E
268*4882a593Smuzhiyun /* Register 0x6F for DAC DC OFFSET CALIBRATION */
269*4882a593Smuzhiyun #define ES8396_DAC_OFFSET_CALI_REG6F		0x6F
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun /* SYSTEM Register Definition  */
272*4882a593Smuzhiyun /* Register 0x70 for CHIP ANALOG CONTROL,
273*4882a593Smuzhiyun  * SUCH AS ANALOG POWER CONTROL, AVDDLDO POWER CONTROL */
274*4882a593Smuzhiyun #define ES8396_SYS_CHIP_ANA_CTL_REG70		0x70
275*4882a593Smuzhiyun /* Register 0x71 for VMID SELECTION AND REFERENCE */
276*4882a593Smuzhiyun #define ES8396_SYS_VMID_REF_REG71	        0x71
277*4882a593Smuzhiyun /* Register 0x72 for VSEL 1 */
278*4882a593Smuzhiyun #define ES8396_SYS_VSEL_1_REG72			0x72
279*4882a593Smuzhiyun /* Register 0x73 for VSEL 2 */
280*4882a593Smuzhiyun #define ES8396_SYS_VSEL_2_REG73			0x73
281*4882a593Smuzhiyun /* Register 0x74 for MICBIAS CONTROL */
282*4882a593Smuzhiyun #define ES8396_SYS_MICBIAS_CTRL_REG74		0x74
283*4882a593Smuzhiyun /* Register 0x75 for MIC ENABLE AND IBIASGEN SELECTION*/
284*4882a593Smuzhiyun #define ES8396_SYS_MIC_IBIAS_EN_REG75		0x75
285*4882a593Smuzhiyun 
286*4882a593Smuzhiyun /* undocumented */
287*4882a593Smuzhiyun /* Write 0XA0 TO REG0X76 to ENABLE TEST MODE*/
288*4882a593Smuzhiyun #define ES8396_TEST_MODE_REG76			0x76
289*4882a593Smuzhiyun #define ES8396_ADC_FORCE_REG77			0x77
290*4882a593Smuzhiyun #define ES8396_NGTH_REG7A			0X7A
291*4882a593Smuzhiyun #define ES8396_MAX_REGISTER			0x7F
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun #define NO_EVENT      0
294*4882a593Smuzhiyun #define JD_EVENT      1
295*4882a593Smuzhiyun #define BOT_EVENT     2
296*4882a593Smuzhiyun 
297*4882a593Smuzhiyun #define DET_HEADPHONE 1
298*4882a593Smuzhiyun #define DET_HEADSET   2
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun #define BOT_NULL      0
301*4882a593Smuzhiyun #define BOT_DWN       1
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun #define MICBIAS_3V    7
304*4882a593Smuzhiyun #define MICBIAS_2_8V  6
305*4882a593Smuzhiyun #define MICBIAS_2_5V  1
306*4882a593Smuzhiyun #define MICBIAS_2_3V  2
307*4882a593Smuzhiyun #define MICBIAS_2V    4
308*4882a593Smuzhiyun #define MICBIAS_1_5V  0
309*4882a593Smuzhiyun 
310*4882a593Smuzhiyun #define MIC_AMIC      0
311*4882a593Smuzhiyun #define MIC_DMIC      1
312*4882a593Smuzhiyun 
313*4882a593Smuzhiyun #define ANA_LDO_3V    3
314*4882a593Smuzhiyun #define ANA_LDO_2_9V  2
315*4882a593Smuzhiyun #define ANA_LDO_2_8V  1
316*4882a593Smuzhiyun #define ANA_LDO_2_7V  0
317*4882a593Smuzhiyun #define ANA_LDO_2_4V  7
318*4882a593Smuzhiyun #define ANA_LDO_2_3V  6
319*4882a593Smuzhiyun #define ANA_LDO_2_2V  5
320*4882a593Smuzhiyun #define ANA_LDO_2_1V  4
321*4882a593Smuzhiyun 
322*4882a593Smuzhiyun #define SPK_LDO_3_3V  3
323*4882a593Smuzhiyun #define SPK_LDO_3_2V  2
324*4882a593Smuzhiyun #define SPK_LDO_3V    1
325*4882a593Smuzhiyun #define SPK_LDO_2_9V  0
326*4882a593Smuzhiyun #define SPK_LDO_2_8V  7
327*4882a593Smuzhiyun #define SPK_LDO_2_6V  6
328*4882a593Smuzhiyun #define SPK_LDO_2_5V  5
329*4882a593Smuzhiyun #define SPK_LDO_2_4V  4
330*4882a593Smuzhiyun 
331*4882a593Smuzhiyun #define ES8396_AIF_MUTE			0x40
332*4882a593Smuzhiyun 
333*4882a593Smuzhiyun #define ES8396_SDP1			0
334*4882a593Smuzhiyun #define ES8396_SDP2			1
335*4882a593Smuzhiyun #define ES8396_SDP3			2
336*4882a593Smuzhiyun /*
337*4882a593Smuzhiyun * es8396 System clock derived from MCLK or BCLK
338*4882a593Smuzhiyun */
339*4882a593Smuzhiyun #define ES8396_CLKID_MCLK		0
340*4882a593Smuzhiyun #define ES8396_CLKID_BCLK		1
341*4882a593Smuzhiyun #define ES8396_CLKID_PLLO		2
342*4882a593Smuzhiyun /*
343*4882a593Smuzhiyun * PLL clock source
344*4882a593Smuzhiyun */
345*4882a593Smuzhiyun #define ES8396_PLL			0
346*4882a593Smuzhiyun 
347*4882a593Smuzhiyun #define ES8396_PLL_NO_SRC_0		0
348*4882a593Smuzhiyun #define ES8396_PLL_SRC_FRM_MCLK		1
349*4882a593Smuzhiyun #define ES8396_PLL_NO_SRC_1		2
350*4882a593Smuzhiyun #define ES8396_PLL_SRC_FRM_BCLK		3
351*4882a593Smuzhiyun 
352*4882a593Smuzhiyun #define MS_MASTER			(0x24)
353*4882a593Smuzhiyun 
354*4882a593Smuzhiyun #endif
355