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