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