1*d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 2d59fb285SBard Liao /* 3d59fb285SBard Liao * rt5668.h -- RT5668/RT5658 ALSA SoC audio driver 4d59fb285SBard Liao * 5d59fb285SBard Liao * Copyright 2018 Realtek Microelectronics 6d59fb285SBard Liao * Author: Bard Liao <bardliao@realtek.com> 7d59fb285SBard Liao */ 8d59fb285SBard Liao 9d59fb285SBard Liao #ifndef __RT5668_H__ 10d59fb285SBard Liao #define __RT5668_H__ 11d59fb285SBard Liao 12d59fb285SBard Liao #include <sound/rt5668.h> 13d59fb285SBard Liao 14d59fb285SBard Liao #define DEVICE_ID 0x6530 15d59fb285SBard Liao 16d59fb285SBard Liao /* Info */ 17d59fb285SBard Liao #define RT5668_RESET 0x0000 18d59fb285SBard Liao #define RT5668_VERSION_ID 0x00fd 19d59fb285SBard Liao #define RT5668_VENDOR_ID 0x00fe 20d59fb285SBard Liao #define RT5668_DEVICE_ID 0x00ff 21d59fb285SBard Liao /* I/O - Output */ 22d59fb285SBard Liao #define RT5668_HP_CTRL_1 0x0002 23d59fb285SBard Liao #define RT5668_HP_CTRL_2 0x0003 24d59fb285SBard Liao #define RT5668_HPL_GAIN 0x0005 25d59fb285SBard Liao #define RT5668_HPR_GAIN 0x0006 26d59fb285SBard Liao 27d59fb285SBard Liao #define RT5668_I2C_CTRL 0x0008 28d59fb285SBard Liao 29d59fb285SBard Liao /* I/O - Input */ 30d59fb285SBard Liao #define RT5668_CBJ_BST_CTRL 0x000b 31d59fb285SBard Liao #define RT5668_CBJ_CTRL_1 0x0010 32d59fb285SBard Liao #define RT5668_CBJ_CTRL_2 0x0011 33d59fb285SBard Liao #define RT5668_CBJ_CTRL_3 0x0012 34d59fb285SBard Liao #define RT5668_CBJ_CTRL_4 0x0013 35d59fb285SBard Liao #define RT5668_CBJ_CTRL_5 0x0014 36d59fb285SBard Liao #define RT5668_CBJ_CTRL_6 0x0015 37d59fb285SBard Liao #define RT5668_CBJ_CTRL_7 0x0016 38d59fb285SBard Liao /* I/O - ADC/DAC/DMIC */ 39d59fb285SBard Liao #define RT5668_DAC1_DIG_VOL 0x0019 40d59fb285SBard Liao #define RT5668_STO1_ADC_DIG_VOL 0x001c 41d59fb285SBard Liao #define RT5668_STO1_ADC_BOOST 0x001f 42d59fb285SBard Liao #define RT5668_HP_IMP_GAIN_1 0x0022 43d59fb285SBard Liao #define RT5668_HP_IMP_GAIN_2 0x0023 44d59fb285SBard Liao /* Mixer - D-D */ 45d59fb285SBard Liao #define RT5668_SIDETONE_CTRL 0x0024 46d59fb285SBard Liao #define RT5668_STO1_ADC_MIXER 0x0026 47d59fb285SBard Liao #define RT5668_AD_DA_MIXER 0x0029 48d59fb285SBard Liao #define RT5668_STO1_DAC_MIXER 0x002a 49d59fb285SBard Liao #define RT5668_A_DAC1_MUX 0x002b 50d59fb285SBard Liao #define RT5668_DIG_INF2_DATA 0x0030 51d59fb285SBard Liao /* Mixer - ADC */ 52d59fb285SBard Liao #define RT5668_REC_MIXER 0x003c 53d59fb285SBard Liao #define RT5668_CAL_REC 0x0044 54d59fb285SBard Liao #define RT5668_ALC_BACK_GAIN 0x0049 55d59fb285SBard Liao /* Power */ 56d59fb285SBard Liao #define RT5668_PWR_DIG_1 0x0061 57d59fb285SBard Liao #define RT5668_PWR_DIG_2 0x0062 58d59fb285SBard Liao #define RT5668_PWR_ANLG_1 0x0063 59d59fb285SBard Liao #define RT5668_PWR_ANLG_2 0x0064 60d59fb285SBard Liao #define RT5668_PWR_ANLG_3 0x0065 61d59fb285SBard Liao #define RT5668_PWR_MIXER 0x0066 62d59fb285SBard Liao #define RT5668_PWR_VOL 0x0067 63d59fb285SBard Liao /* Clock Detect */ 64d59fb285SBard Liao #define RT5668_CLK_DET 0x006b 65d59fb285SBard Liao /* Filter Auto Reset */ 66d59fb285SBard Liao #define RT5668_RESET_LPF_CTRL 0x006c 67d59fb285SBard Liao #define RT5668_RESET_HPF_CTRL 0x006d 68d59fb285SBard Liao /* DMIC */ 69d59fb285SBard Liao #define RT5668_DMIC_CTRL_1 0x006e 70d59fb285SBard Liao /* Format - ADC/DAC */ 71d59fb285SBard Liao #define RT5668_I2S1_SDP 0x0070 72d59fb285SBard Liao #define RT5668_I2S2_SDP 0x0071 73d59fb285SBard Liao #define RT5668_ADDA_CLK_1 0x0073 74d59fb285SBard Liao #define RT5668_ADDA_CLK_2 0x0074 75d59fb285SBard Liao #define RT5668_I2S1_F_DIV_CTRL_1 0x0075 76d59fb285SBard Liao #define RT5668_I2S1_F_DIV_CTRL_2 0x0076 77d59fb285SBard Liao /* Format - TDM Control */ 78d59fb285SBard Liao #define RT5668_TDM_CTRL 0x0079 79d59fb285SBard Liao #define RT5668_TDM_ADDA_CTRL_1 0x007a 80d59fb285SBard Liao #define RT5668_TDM_ADDA_CTRL_2 0x007b 81d59fb285SBard Liao #define RT5668_DATA_SEL_CTRL_1 0x007c 82d59fb285SBard Liao #define RT5668_TDM_TCON_CTRL 0x007e 83d59fb285SBard Liao /* Function - Analog */ 84d59fb285SBard Liao #define RT5668_GLB_CLK 0x0080 85d59fb285SBard Liao #define RT5668_PLL_CTRL_1 0x0081 86d59fb285SBard Liao #define RT5668_PLL_CTRL_2 0x0082 87d59fb285SBard Liao #define RT5668_PLL_TRACK_1 0x0083 88d59fb285SBard Liao #define RT5668_PLL_TRACK_2 0x0084 89d59fb285SBard Liao #define RT5668_PLL_TRACK_3 0x0085 90d59fb285SBard Liao #define RT5668_PLL_TRACK_4 0x0086 91d59fb285SBard Liao #define RT5668_PLL_TRACK_5 0x0087 92d59fb285SBard Liao #define RT5668_PLL_TRACK_6 0x0088 93d59fb285SBard Liao #define RT5668_PLL_TRACK_11 0x008c 94d59fb285SBard Liao #define RT5668_SDW_REF_CLK 0x008d 95d59fb285SBard Liao #define RT5668_DEPOP_1 0x008e 96d59fb285SBard Liao #define RT5668_DEPOP_2 0x008f 97d59fb285SBard Liao #define RT5668_HP_CHARGE_PUMP_1 0x0091 98d59fb285SBard Liao #define RT5668_HP_CHARGE_PUMP_2 0x0092 99d59fb285SBard Liao #define RT5668_MICBIAS_1 0x0093 100d59fb285SBard Liao #define RT5668_MICBIAS_2 0x0094 101d59fb285SBard Liao #define RT5668_PLL_TRACK_12 0x0098 102d59fb285SBard Liao #define RT5668_PLL_TRACK_14 0x009a 103d59fb285SBard Liao #define RT5668_PLL2_CTRL_1 0x009b 104d59fb285SBard Liao #define RT5668_PLL2_CTRL_2 0x009c 105d59fb285SBard Liao #define RT5668_PLL2_CTRL_3 0x009d 106d59fb285SBard Liao #define RT5668_PLL2_CTRL_4 0x009e 107d59fb285SBard Liao #define RT5668_RC_CLK_CTRL 0x009f 108d59fb285SBard Liao #define RT5668_I2S_M_CLK_CTRL_1 0x00a0 109d59fb285SBard Liao #define RT5668_I2S2_F_DIV_CTRL_1 0x00a3 110d59fb285SBard Liao #define RT5668_I2S2_F_DIV_CTRL_2 0x00a4 111d59fb285SBard Liao /* Function - Digital */ 112d59fb285SBard Liao #define RT5668_EQ_CTRL_1 0x00ae 113d59fb285SBard Liao #define RT5668_EQ_CTRL_2 0x00af 114d59fb285SBard Liao #define RT5668_IRQ_CTRL_1 0x00b6 115d59fb285SBard Liao #define RT5668_IRQ_CTRL_2 0x00b7 116d59fb285SBard Liao #define RT5668_IRQ_CTRL_3 0x00b8 117d59fb285SBard Liao #define RT5668_IRQ_CTRL_4 0x00b9 118d59fb285SBard Liao #define RT5668_INT_ST_1 0x00be 119d59fb285SBard Liao #define RT5668_GPIO_CTRL_1 0x00c0 120d59fb285SBard Liao #define RT5668_GPIO_CTRL_2 0x00c1 121d59fb285SBard Liao #define RT5668_GPIO_CTRL_3 0x00c2 122d59fb285SBard Liao #define RT5668_HP_AMP_DET_CTRL_1 0x00d0 123d59fb285SBard Liao #define RT5668_HP_AMP_DET_CTRL_2 0x00d1 124d59fb285SBard Liao #define RT5668_MID_HP_AMP_DET 0x00d2 125d59fb285SBard Liao #define RT5668_LOW_HP_AMP_DET 0x00d3 126d59fb285SBard Liao #define RT5668_DELAY_BUF_CTRL 0x00d4 127d59fb285SBard Liao #define RT5668_SV_ZCD_1 0x00d9 128d59fb285SBard Liao #define RT5668_SV_ZCD_2 0x00da 129d59fb285SBard Liao #define RT5668_IL_CMD_1 0x00db 130d59fb285SBard Liao #define RT5668_IL_CMD_2 0x00dc 131d59fb285SBard Liao #define RT5668_IL_CMD_3 0x00dd 132d59fb285SBard Liao #define RT5668_IL_CMD_4 0x00de 133d59fb285SBard Liao #define RT5668_IL_CMD_5 0x00df 134d59fb285SBard Liao #define RT5668_IL_CMD_6 0x00e0 135d59fb285SBard Liao #define RT5668_4BTN_IL_CMD_1 0x00e2 136d59fb285SBard Liao #define RT5668_4BTN_IL_CMD_2 0x00e3 137d59fb285SBard Liao #define RT5668_4BTN_IL_CMD_3 0x00e4 138d59fb285SBard Liao #define RT5668_4BTN_IL_CMD_4 0x00e5 139d59fb285SBard Liao #define RT5668_4BTN_IL_CMD_5 0x00e6 140d59fb285SBard Liao #define RT5668_4BTN_IL_CMD_6 0x00e7 141d59fb285SBard Liao #define RT5668_4BTN_IL_CMD_7 0x00e8 142d59fb285SBard Liao 143d59fb285SBard Liao #define RT5668_ADC_STO1_HP_CTRL_1 0x00ea 144d59fb285SBard Liao #define RT5668_ADC_STO1_HP_CTRL_2 0x00eb 145d59fb285SBard Liao #define RT5668_AJD1_CTRL 0x00f0 146d59fb285SBard Liao #define RT5668_JD1_THD 0x00f1 147d59fb285SBard Liao #define RT5668_JD2_THD 0x00f2 148d59fb285SBard Liao #define RT5668_JD_CTRL_1 0x00f6 149d59fb285SBard Liao /* General Control */ 150d59fb285SBard Liao #define RT5668_DUMMY_1 0x00fa 151d59fb285SBard Liao #define RT5668_DUMMY_2 0x00fb 152d59fb285SBard Liao #define RT5668_DUMMY_3 0x00fc 153d59fb285SBard Liao 154d59fb285SBard Liao #define RT5668_DAC_ADC_DIG_VOL1 0x0100 155d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_2 0x010b 156d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_3 0x010c 157d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_4 0x010d 158d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_5 0x010e 159d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_6 0x010f 160d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_7 0x0110 161d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_8 0x0111 162d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_9 0x0112 163d59fb285SBard Liao #define RT5668_BIAS_CUR_CTRL_10 0x0113 164d59fb285SBard Liao #define RT5668_VREF_REC_OP_FB_CAP_CTRL 0x0117 165d59fb285SBard Liao #define RT5668_CHARGE_PUMP_1 0x0125 166d59fb285SBard Liao #define RT5668_DIG_IN_CTRL_1 0x0132 167d59fb285SBard Liao #define RT5668_PAD_DRIVING_CTRL 0x0136 168d59fb285SBard Liao #define RT5668_SOFT_RAMP_DEPOP 0x0138 169d59fb285SBard Liao #define RT5668_CHOP_DAC 0x013a 170d59fb285SBard Liao #define RT5668_CHOP_ADC 0x013b 171d59fb285SBard Liao #define RT5668_CALIB_ADC_CTRL 0x013c 172d59fb285SBard Liao #define RT5668_VOL_TEST 0x013f 173d59fb285SBard Liao #define RT5668_SPKVDD_DET_STA 0x0142 174d59fb285SBard Liao #define RT5668_TEST_MODE_CTRL_1 0x0145 175d59fb285SBard Liao #define RT5668_TEST_MODE_CTRL_2 0x0146 176d59fb285SBard Liao #define RT5668_TEST_MODE_CTRL_3 0x0147 177d59fb285SBard Liao #define RT5668_TEST_MODE_CTRL_4 0x0148 178d59fb285SBard Liao #define RT5668_TEST_MODE_CTRL_5 0x0149 179d59fb285SBard Liao #define RT5668_PLL1_INTERNAL 0x0150 180d59fb285SBard Liao #define RT5668_PLL2_INTERNAL 0x0151 181d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_1 0x0160 182d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_2 0x0161 183d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_3 0x0162 184d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_4 0x0163 185d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_5 0x0164 186d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_6 0x0165 187d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_7 0x0166 188d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_8 0x0167 189d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_9 0x0168 190d59fb285SBard Liao #define RT5668_STO_NG2_CTRL_10 0x0169 191d59fb285SBard Liao #define RT5668_STO1_DAC_SIL_DET 0x0190 192d59fb285SBard Liao #define RT5668_SIL_PSV_CTRL1 0x0194 193d59fb285SBard Liao #define RT5668_SIL_PSV_CTRL2 0x0195 194d59fb285SBard Liao #define RT5668_SIL_PSV_CTRL3 0x0197 195d59fb285SBard Liao #define RT5668_SIL_PSV_CTRL4 0x0198 196d59fb285SBard Liao #define RT5668_SIL_PSV_CTRL5 0x0199 197d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_01 0x01af 198d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_02 0x01b0 199d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_03 0x01b1 200d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_04 0x01b2 201d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_05 0x01b3 202d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_06 0x01b4 203d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_07 0x01b5 204d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_08 0x01b6 205d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_09 0x01b7 206d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_10 0x01b8 207d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_11 0x01b9 208d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_12 0x01ba 209d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_13 0x01bb 210d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_14 0x01bc 211d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_15 0x01bd 212d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_16 0x01be 213d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_17 0x01bf 214d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_18 0x01c0 215d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_19 0x01c1 216d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_20 0x01c2 217d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_21 0x01c3 218d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_22 0x01c4 219d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_23 0x01c5 220d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_24 0x01c6 221d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_25 0x01c7 222d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_26 0x01c8 223d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_27 0x01c9 224d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_28 0x01ca 225d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_29 0x01cb 226d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_30 0x01cc 227d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_31 0x01cd 228d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_32 0x01ce 229d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_33 0x01cf 230d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_34 0x01d0 231d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_35 0x01d1 232d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_36 0x01d2 233d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_37 0x01d3 234d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_38 0x01d4 235d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_39 0x01d5 236d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_40 0x01d6 237d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_41 0x01d7 238d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_42 0x01d8 239d59fb285SBard Liao #define RT5668_HP_IMP_SENS_CTRL_43 0x01d9 240d59fb285SBard Liao #define RT5668_HP_LOGIC_CTRL_1 0x01da 241d59fb285SBard Liao #define RT5668_HP_LOGIC_CTRL_2 0x01db 242d59fb285SBard Liao #define RT5668_HP_LOGIC_CTRL_3 0x01dc 243d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_1 0x01de 244d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_2 0x01df 245d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_3 0x01e0 246d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_4 0x01e1 247d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_5 0x01e2 248d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_6 0x01e3 249d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_7 0x01e4 250d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_9 0x01e6 251d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_10 0x01e7 252d59fb285SBard Liao #define RT5668_HP_CALIB_CTRL_11 0x01e8 253d59fb285SBard Liao #define RT5668_HP_CALIB_STA_1 0x01ea 254d59fb285SBard Liao #define RT5668_HP_CALIB_STA_2 0x01eb 255d59fb285SBard Liao #define RT5668_HP_CALIB_STA_3 0x01ec 256d59fb285SBard Liao #define RT5668_HP_CALIB_STA_4 0x01ed 257d59fb285SBard Liao #define RT5668_HP_CALIB_STA_5 0x01ee 258d59fb285SBard Liao #define RT5668_HP_CALIB_STA_6 0x01ef 259d59fb285SBard Liao #define RT5668_HP_CALIB_STA_7 0x01f0 260d59fb285SBard Liao #define RT5668_HP_CALIB_STA_8 0x01f1 261d59fb285SBard Liao #define RT5668_HP_CALIB_STA_9 0x01f2 262d59fb285SBard Liao #define RT5668_HP_CALIB_STA_10 0x01f3 263d59fb285SBard Liao #define RT5668_HP_CALIB_STA_11 0x01f4 264d59fb285SBard Liao #define RT5668_SAR_IL_CMD_1 0x0210 265d59fb285SBard Liao #define RT5668_SAR_IL_CMD_2 0x0211 266d59fb285SBard Liao #define RT5668_SAR_IL_CMD_3 0x0212 267d59fb285SBard Liao #define RT5668_SAR_IL_CMD_4 0x0213 268d59fb285SBard Liao #define RT5668_SAR_IL_CMD_5 0x0214 269d59fb285SBard Liao #define RT5668_SAR_IL_CMD_6 0x0215 270d59fb285SBard Liao #define RT5668_SAR_IL_CMD_7 0x0216 271d59fb285SBard Liao #define RT5668_SAR_IL_CMD_8 0x0217 272d59fb285SBard Liao #define RT5668_SAR_IL_CMD_9 0x0218 273d59fb285SBard Liao #define RT5668_SAR_IL_CMD_10 0x0219 274d59fb285SBard Liao #define RT5668_SAR_IL_CMD_11 0x021a 275d59fb285SBard Liao #define RT5668_SAR_IL_CMD_12 0x021b 276d59fb285SBard Liao #define RT5668_SAR_IL_CMD_13 0x021c 277d59fb285SBard Liao #define RT5668_EFUSE_CTRL_1 0x0250 278d59fb285SBard Liao #define RT5668_EFUSE_CTRL_2 0x0251 279d59fb285SBard Liao #define RT5668_EFUSE_CTRL_3 0x0252 280d59fb285SBard Liao #define RT5668_EFUSE_CTRL_4 0x0253 281d59fb285SBard Liao #define RT5668_EFUSE_CTRL_5 0x0254 282d59fb285SBard Liao #define RT5668_EFUSE_CTRL_6 0x0255 283d59fb285SBard Liao #define RT5668_EFUSE_CTRL_7 0x0256 284d59fb285SBard Liao #define RT5668_EFUSE_CTRL_8 0x0257 285d59fb285SBard Liao #define RT5668_EFUSE_CTRL_9 0x0258 286d59fb285SBard Liao #define RT5668_EFUSE_CTRL_10 0x0259 287d59fb285SBard Liao #define RT5668_EFUSE_CTRL_11 0x025a 288d59fb285SBard Liao #define RT5668_JD_TOP_VC_VTRL 0x0270 289d59fb285SBard Liao #define RT5668_DRC1_CTRL_0 0x02ff 290d59fb285SBard Liao #define RT5668_DRC1_CTRL_1 0x0300 291d59fb285SBard Liao #define RT5668_DRC1_CTRL_2 0x0301 292d59fb285SBard Liao #define RT5668_DRC1_CTRL_3 0x0302 293d59fb285SBard Liao #define RT5668_DRC1_CTRL_4 0x0303 294d59fb285SBard Liao #define RT5668_DRC1_CTRL_5 0x0304 295d59fb285SBard Liao #define RT5668_DRC1_CTRL_6 0x0305 296d59fb285SBard Liao #define RT5668_DRC1_HARD_LMT_CTRL_1 0x0306 297d59fb285SBard Liao #define RT5668_DRC1_HARD_LMT_CTRL_2 0x0307 298d59fb285SBard Liao #define RT5668_DRC1_PRIV_1 0x0310 299d59fb285SBard Liao #define RT5668_DRC1_PRIV_2 0x0311 300d59fb285SBard Liao #define RT5668_DRC1_PRIV_3 0x0312 301d59fb285SBard Liao #define RT5668_DRC1_PRIV_4 0x0313 302d59fb285SBard Liao #define RT5668_DRC1_PRIV_5 0x0314 303d59fb285SBard Liao #define RT5668_DRC1_PRIV_6 0x0315 304d59fb285SBard Liao #define RT5668_DRC1_PRIV_7 0x0316 305d59fb285SBard Liao #define RT5668_DRC1_PRIV_8 0x0317 306d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL1 0x03c0 307d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL2 0x03c1 308d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL3 0x03c2 309d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL4 0x03c3 310d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL5 0x03c4 311d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL6 0x03c5 312d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL7 0x03c6 313d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL8 0x03c7 314d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL9 0x03c8 315d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL10 0x03c9 316d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL11 0x03ca 317d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL12 0x03cb 318d59fb285SBard Liao #define RT5668_EQ_AUTO_RCV_CTRL13 0x03cc 319d59fb285SBard Liao #define RT5668_ADC_L_EQ_LPF1_A1 0x03d0 320d59fb285SBard Liao #define RT5668_R_EQ_LPF1_A1 0x03d1 321d59fb285SBard Liao #define RT5668_L_EQ_LPF1_H0 0x03d2 322d59fb285SBard Liao #define RT5668_R_EQ_LPF1_H0 0x03d3 323d59fb285SBard Liao #define RT5668_L_EQ_BPF1_A1 0x03d4 324d59fb285SBard Liao #define RT5668_R_EQ_BPF1_A1 0x03d5 325d59fb285SBard Liao #define RT5668_L_EQ_BPF1_A2 0x03d6 326d59fb285SBard Liao #define RT5668_R_EQ_BPF1_A2 0x03d7 327d59fb285SBard Liao #define RT5668_L_EQ_BPF1_H0 0x03d8 328d59fb285SBard Liao #define RT5668_R_EQ_BPF1_H0 0x03d9 329d59fb285SBard Liao #define RT5668_L_EQ_BPF2_A1 0x03da 330d59fb285SBard Liao #define RT5668_R_EQ_BPF2_A1 0x03db 331d59fb285SBard Liao #define RT5668_L_EQ_BPF2_A2 0x03dc 332d59fb285SBard Liao #define RT5668_R_EQ_BPF2_A2 0x03dd 333d59fb285SBard Liao #define RT5668_L_EQ_BPF2_H0 0x03de 334d59fb285SBard Liao #define RT5668_R_EQ_BPF2_H0 0x03df 335d59fb285SBard Liao #define RT5668_L_EQ_BPF3_A1 0x03e0 336d59fb285SBard Liao #define RT5668_R_EQ_BPF3_A1 0x03e1 337d59fb285SBard Liao #define RT5668_L_EQ_BPF3_A2 0x03e2 338d59fb285SBard Liao #define RT5668_R_EQ_BPF3_A2 0x03e3 339d59fb285SBard Liao #define RT5668_L_EQ_BPF3_H0 0x03e4 340d59fb285SBard Liao #define RT5668_R_EQ_BPF3_H0 0x03e5 341d59fb285SBard Liao #define RT5668_L_EQ_BPF4_A1 0x03e6 342d59fb285SBard Liao #define RT5668_R_EQ_BPF4_A1 0x03e7 343d59fb285SBard Liao #define RT5668_L_EQ_BPF4_A2 0x03e8 344d59fb285SBard Liao #define RT5668_R_EQ_BPF4_A2 0x03e9 345d59fb285SBard Liao #define RT5668_L_EQ_BPF4_H0 0x03ea 346d59fb285SBard Liao #define RT5668_R_EQ_BPF4_H0 0x03eb 347d59fb285SBard Liao #define RT5668_L_EQ_HPF1_A1 0x03ec 348d59fb285SBard Liao #define RT5668_R_EQ_HPF1_A1 0x03ed 349d59fb285SBard Liao #define RT5668_L_EQ_HPF1_H0 0x03ee 350d59fb285SBard Liao #define RT5668_R_EQ_HPF1_H0 0x03ef 351d59fb285SBard Liao #define RT5668_L_EQ_PRE_VOL 0x03f0 352d59fb285SBard Liao #define RT5668_R_EQ_PRE_VOL 0x03f1 353d59fb285SBard Liao #define RT5668_L_EQ_POST_VOL 0x03f2 354d59fb285SBard Liao #define RT5668_R_EQ_POST_VOL 0x03f3 355d59fb285SBard Liao #define RT5668_I2C_MODE 0xffff 356d59fb285SBard Liao 357d59fb285SBard Liao 358d59fb285SBard Liao /* global definition */ 359d59fb285SBard Liao #define RT5668_L_MUTE (0x1 << 15) 360d59fb285SBard Liao #define RT5668_L_MUTE_SFT 15 361d59fb285SBard Liao #define RT5668_VOL_L_MUTE (0x1 << 14) 362d59fb285SBard Liao #define RT5668_VOL_L_SFT 14 363d59fb285SBard Liao #define RT5668_R_MUTE (0x1 << 7) 364d59fb285SBard Liao #define RT5668_R_MUTE_SFT 7 365d59fb285SBard Liao #define RT5668_VOL_R_MUTE (0x1 << 6) 366d59fb285SBard Liao #define RT5668_VOL_R_SFT 6 367d59fb285SBard Liao #define RT5668_L_VOL_MASK (0x3f << 8) 368d59fb285SBard Liao #define RT5668_L_VOL_SFT 8 369d59fb285SBard Liao #define RT5668_R_VOL_MASK (0x3f) 370d59fb285SBard Liao #define RT5668_R_VOL_SFT 0 371d59fb285SBard Liao 372d59fb285SBard Liao /*Headphone Amp L/R Analog Gain and Digital NG2 Gain Control (0x0005 0x0006)*/ 373d59fb285SBard Liao #define RT5668_G_HP (0xf << 8) 374d59fb285SBard Liao #define RT5668_G_HP_SFT 8 375d59fb285SBard Liao #define RT5668_G_STO_DA_DMIX (0xf) 376d59fb285SBard Liao #define RT5668_G_STO_DA_SFT 0 377d59fb285SBard Liao 378d59fb285SBard Liao /* CBJ Control (0x000b) */ 379d59fb285SBard Liao #define RT5668_BST_CBJ_MASK (0xf << 8) 380d59fb285SBard Liao #define RT5668_BST_CBJ_SFT 8 381d59fb285SBard Liao 382d59fb285SBard Liao /* Embeeded Jack and Type Detection Control 1 (0x0010) */ 383d59fb285SBard Liao #define RT5668_EMB_JD_EN (0x1 << 15) 384d59fb285SBard Liao #define RT5668_EMB_JD_EN_SFT 15 385d59fb285SBard Liao #define RT5668_EMB_JD_RST (0x1 << 14) 386d59fb285SBard Liao #define RT5668_JD_MODE (0x1 << 13) 387d59fb285SBard Liao #define RT5668_JD_MODE_SFT 13 388d59fb285SBard Liao #define RT5668_DET_TYPE (0x1 << 12) 389d59fb285SBard Liao #define RT5668_DET_TYPE_SFT 12 390d59fb285SBard Liao #define RT5668_POLA_EXT_JD_MASK (0x1 << 11) 391d59fb285SBard Liao #define RT5668_POLA_EXT_JD_LOW (0x1 << 11) 392d59fb285SBard Liao #define RT5668_POLA_EXT_JD_HIGH (0x0 << 11) 393d59fb285SBard Liao #define RT5668_EXT_JD_DIG (0x1 << 9) 394d59fb285SBard Liao #define RT5668_POL_FAST_OFF_MASK (0x1 << 8) 395d59fb285SBard Liao #define RT5668_POL_FAST_OFF_HIGH (0x1 << 8) 396d59fb285SBard Liao #define RT5668_POL_FAST_OFF_LOW (0x0 << 8) 397d59fb285SBard Liao #define RT5668_FAST_OFF_MASK (0x1 << 7) 398d59fb285SBard Liao #define RT5668_FAST_OFF_EN (0x1 << 7) 399d59fb285SBard Liao #define RT5668_FAST_OFF_DIS (0x0 << 7) 400d59fb285SBard Liao #define RT5668_VREF_POW_MASK (0x1 << 6) 401d59fb285SBard Liao #define RT5668_VREF_POW_FSM (0x0 << 6) 402d59fb285SBard Liao #define RT5668_VREF_POW_REG (0x1 << 6) 403d59fb285SBard Liao #define RT5668_MB1_PATH_MASK (0x1 << 5) 404d59fb285SBard Liao #define RT5668_CTRL_MB1_REG (0x1 << 5) 405d59fb285SBard Liao #define RT5668_CTRL_MB1_FSM (0x0 << 5) 406d59fb285SBard Liao #define RT5668_MB2_PATH_MASK (0x1 << 4) 407d59fb285SBard Liao #define RT5668_CTRL_MB2_REG (0x1 << 4) 408d59fb285SBard Liao #define RT5668_CTRL_MB2_FSM (0x0 << 4) 409d59fb285SBard Liao #define RT5668_TRIG_JD_MASK (0x1 << 3) 410d59fb285SBard Liao #define RT5668_TRIG_JD_HIGH (0x1 << 3) 411d59fb285SBard Liao #define RT5668_TRIG_JD_LOW (0x0 << 3) 412d59fb285SBard Liao #define RT5668_MIC_CAP_MASK (0x1 << 1) 413d59fb285SBard Liao #define RT5668_MIC_CAP_HS (0x1 << 1) 414d59fb285SBard Liao #define RT5668_MIC_CAP_HP (0x0 << 1) 415d59fb285SBard Liao #define RT5668_MIC_CAP_SRC_MASK (0x1) 416d59fb285SBard Liao #define RT5668_MIC_CAP_SRC_REG (0x1) 417d59fb285SBard Liao #define RT5668_MIC_CAP_SRC_ANA (0x0) 418d59fb285SBard Liao 419d59fb285SBard Liao /* Embeeded Jack and Type Detection Control 2 (0x0011) */ 420d59fb285SBard Liao #define RT5668_EXT_JD_SRC (0x7 << 4) 421d59fb285SBard Liao #define RT5668_EXT_JD_SRC_SFT 4 422d59fb285SBard Liao #define RT5668_EXT_JD_SRC_GPIO_JD1 (0x0 << 4) 423d59fb285SBard Liao #define RT5668_EXT_JD_SRC_GPIO_JD2 (0x1 << 4) 424d59fb285SBard Liao #define RT5668_EXT_JD_SRC_JDH (0x2 << 4) 425d59fb285SBard Liao #define RT5668_EXT_JD_SRC_JDL (0x3 << 4) 426d59fb285SBard Liao #define RT5668_EXT_JD_SRC_MANUAL (0x4 << 4) 427d59fb285SBard Liao #define RT5668_JACK_TYPE_MASK (0x3) 428d59fb285SBard Liao 429d59fb285SBard Liao /* Combo Jack and Type Detection Control 3 (0x0012) */ 430d59fb285SBard Liao #define RT5668_CBJ_IN_BUF_EN (0x1 << 7) 431d59fb285SBard Liao 432d59fb285SBard Liao /* Combo Jack and Type Detection Control 4 (0x0013) */ 433d59fb285SBard Liao #define RT5668_SEL_SHT_MID_TON_MASK (0x3 << 12) 434d59fb285SBard Liao #define RT5668_SEL_SHT_MID_TON_2 (0x0 << 12) 435d59fb285SBard Liao #define RT5668_SEL_SHT_MID_TON_3 (0x1 << 12) 436d59fb285SBard Liao #define RT5668_CBJ_JD_TEST_MASK (0x1 << 6) 437d59fb285SBard Liao #define RT5668_CBJ_JD_TEST_NORM (0x0 << 6) 438d59fb285SBard Liao #define RT5668_CBJ_JD_TEST_MODE (0x1 << 6) 439d59fb285SBard Liao 440d59fb285SBard Liao /* DAC1 Digital Volume (0x0019) */ 441d59fb285SBard Liao #define RT5668_DAC_L1_VOL_MASK (0xff << 8) 442d59fb285SBard Liao #define RT5668_DAC_L1_VOL_SFT 8 443d59fb285SBard Liao #define RT5668_DAC_R1_VOL_MASK (0xff) 444d59fb285SBard Liao #define RT5668_DAC_R1_VOL_SFT 0 445d59fb285SBard Liao 446d59fb285SBard Liao /* ADC Digital Volume Control (0x001c) */ 447d59fb285SBard Liao #define RT5668_ADC_L_VOL_MASK (0x7f << 8) 448d59fb285SBard Liao #define RT5668_ADC_L_VOL_SFT 8 449d59fb285SBard Liao #define RT5668_ADC_R_VOL_MASK (0x7f) 450d59fb285SBard Liao #define RT5668_ADC_R_VOL_SFT 0 451d59fb285SBard Liao 452d59fb285SBard Liao /* Stereo1 ADC Boost Gain Control (0x001f) */ 453d59fb285SBard Liao #define RT5668_STO1_ADC_L_BST_MASK (0x3 << 14) 454d59fb285SBard Liao #define RT5668_STO1_ADC_L_BST_SFT 14 455d59fb285SBard Liao #define RT5668_STO1_ADC_R_BST_MASK (0x3 << 12) 456d59fb285SBard Liao #define RT5668_STO1_ADC_R_BST_SFT 12 457d59fb285SBard Liao 458d59fb285SBard Liao /* Sidetone Control (0x0024) */ 459d59fb285SBard Liao #define RT5668_ST_SRC_SEL (0x1 << 8) 460d59fb285SBard Liao #define RT5668_ST_SRC_SFT 8 461d59fb285SBard Liao #define RT5668_ST_EN_MASK (0x1 << 6) 462d59fb285SBard Liao #define RT5668_ST_DIS (0x0 << 6) 463d59fb285SBard Liao #define RT5668_ST_EN (0x1 << 6) 464d59fb285SBard Liao #define RT5668_ST_EN_SFT 6 465d59fb285SBard Liao 466d59fb285SBard Liao /* Stereo1 ADC Mixer Control (0x0026) */ 467d59fb285SBard Liao #define RT5668_M_STO1_ADC_L1 (0x1 << 15) 468d59fb285SBard Liao #define RT5668_M_STO1_ADC_L1_SFT 15 469d59fb285SBard Liao #define RT5668_M_STO1_ADC_L2 (0x1 << 14) 470d59fb285SBard Liao #define RT5668_M_STO1_ADC_L2_SFT 14 471d59fb285SBard Liao #define RT5668_STO1_ADC1L_SRC_MASK (0x1 << 13) 472d59fb285SBard Liao #define RT5668_STO1_ADC1L_SRC_SFT 13 473d59fb285SBard Liao #define RT5668_STO1_ADC1_SRC_ADC (0x1 << 13) 474d59fb285SBard Liao #define RT5668_STO1_ADC1_SRC_DACMIX (0x0 << 13) 475d59fb285SBard Liao #define RT5668_STO1_ADC2L_SRC_MASK (0x1 << 12) 476d59fb285SBard Liao #define RT5668_STO1_ADC2L_SRC_SFT 12 477d59fb285SBard Liao #define RT5668_STO1_ADCL_SRC_MASK (0x3 << 10) 478d59fb285SBard Liao #define RT5668_STO1_ADCL_SRC_SFT 10 479d59fb285SBard Liao #define RT5668_STO1_DD_L_SRC_MASK (0x1 << 9) 480d59fb285SBard Liao #define RT5668_STO1_DD_L_SRC_SFT 9 481d59fb285SBard Liao #define RT5668_STO1_DMIC_SRC_MASK (0x1 << 8) 482d59fb285SBard Liao #define RT5668_STO1_DMIC_SRC_SFT 8 483d59fb285SBard Liao #define RT5668_STO1_DMIC_SRC_DMIC2 (0x1 << 8) 484d59fb285SBard Liao #define RT5668_STO1_DMIC_SRC_DMIC1 (0x0 << 8) 485d59fb285SBard Liao #define RT5668_M_STO1_ADC_R1 (0x1 << 7) 486d59fb285SBard Liao #define RT5668_M_STO1_ADC_R1_SFT 7 487d59fb285SBard Liao #define RT5668_M_STO1_ADC_R2 (0x1 << 6) 488d59fb285SBard Liao #define RT5668_M_STO1_ADC_R2_SFT 6 489d59fb285SBard Liao #define RT5668_STO1_ADC1R_SRC_MASK (0x1 << 5) 490d59fb285SBard Liao #define RT5668_STO1_ADC1R_SRC_SFT 5 491d59fb285SBard Liao #define RT5668_STO1_ADC2R_SRC_MASK (0x1 << 4) 492d59fb285SBard Liao #define RT5668_STO1_ADC2R_SRC_SFT 4 493d59fb285SBard Liao #define RT5668_STO1_ADCR_SRC_MASK (0x3 << 2) 494d59fb285SBard Liao #define RT5668_STO1_ADCR_SRC_SFT 2 495d59fb285SBard Liao 496d59fb285SBard Liao /* ADC Mixer to DAC Mixer Control (0x0029) */ 497d59fb285SBard Liao #define RT5668_M_ADCMIX_L (0x1 << 15) 498d59fb285SBard Liao #define RT5668_M_ADCMIX_L_SFT 15 499d59fb285SBard Liao #define RT5668_M_DAC1_L (0x1 << 14) 500d59fb285SBard Liao #define RT5668_M_DAC1_L_SFT 14 501d59fb285SBard Liao #define RT5668_DAC1_R_SEL_MASK (0x1 << 10) 502d59fb285SBard Liao #define RT5668_DAC1_R_SEL_SFT 10 503d59fb285SBard Liao #define RT5668_DAC1_L_SEL_MASK (0x1 << 8) 504d59fb285SBard Liao #define RT5668_DAC1_L_SEL_SFT 8 505d59fb285SBard Liao #define RT5668_M_ADCMIX_R (0x1 << 7) 506d59fb285SBard Liao #define RT5668_M_ADCMIX_R_SFT 7 507d59fb285SBard Liao #define RT5668_M_DAC1_R (0x1 << 6) 508d59fb285SBard Liao #define RT5668_M_DAC1_R_SFT 6 509d59fb285SBard Liao 510d59fb285SBard Liao /* Stereo1 DAC Mixer Control (0x002a) */ 511d59fb285SBard Liao #define RT5668_M_DAC_L1_STO_L (0x1 << 15) 512d59fb285SBard Liao #define RT5668_M_DAC_L1_STO_L_SFT 15 513d59fb285SBard Liao #define RT5668_G_DAC_L1_STO_L_MASK (0x1 << 14) 514d59fb285SBard Liao #define RT5668_G_DAC_L1_STO_L_SFT 14 515d59fb285SBard Liao #define RT5668_M_DAC_R1_STO_L (0x1 << 13) 516d59fb285SBard Liao #define RT5668_M_DAC_R1_STO_L_SFT 13 517d59fb285SBard Liao #define RT5668_G_DAC_R1_STO_L_MASK (0x1 << 12) 518d59fb285SBard Liao #define RT5668_G_DAC_R1_STO_L_SFT 12 519d59fb285SBard Liao #define RT5668_M_DAC_L1_STO_R (0x1 << 7) 520d59fb285SBard Liao #define RT5668_M_DAC_L1_STO_R_SFT 7 521d59fb285SBard Liao #define RT5668_G_DAC_L1_STO_R_MASK (0x1 << 6) 522d59fb285SBard Liao #define RT5668_G_DAC_L1_STO_R_SFT 6 523d59fb285SBard Liao #define RT5668_M_DAC_R1_STO_R (0x1 << 5) 524d59fb285SBard Liao #define RT5668_M_DAC_R1_STO_R_SFT 5 525d59fb285SBard Liao #define RT5668_G_DAC_R1_STO_R_MASK (0x1 << 4) 526d59fb285SBard Liao #define RT5668_G_DAC_R1_STO_R_SFT 4 527d59fb285SBard Liao 528d59fb285SBard Liao /* Analog DAC1 Input Source Control (0x002b) */ 529d59fb285SBard Liao #define RT5668_M_ST_STO_L (0x1 << 9) 530d59fb285SBard Liao #define RT5668_M_ST_STO_L_SFT 9 531d59fb285SBard Liao #define RT5668_M_ST_STO_R (0x1 << 8) 532d59fb285SBard Liao #define RT5668_M_ST_STO_R_SFT 8 533d59fb285SBard Liao #define RT5668_DAC_L1_SRC_MASK (0x3 << 4) 534d59fb285SBard Liao #define RT5668_A_DACL1_SFT 4 535d59fb285SBard Liao #define RT5668_DAC_R1_SRC_MASK (0x3) 536d59fb285SBard Liao #define RT5668_A_DACR1_SFT 0 537d59fb285SBard Liao 538d59fb285SBard Liao /* Digital Interface Data Control (0x0030) */ 539d59fb285SBard Liao #define RT5668_IF2_ADC_SEL_MASK (0x3 << 0) 540d59fb285SBard Liao #define RT5668_IF2_ADC_SEL_SFT 0 541d59fb285SBard Liao 542d59fb285SBard Liao /* REC Left Mixer Control 2 (0x003c) */ 543d59fb285SBard Liao #define RT5668_G_CBJ_RM1_L (0x7 << 10) 544d59fb285SBard Liao #define RT5668_G_CBJ_RM1_L_SFT 10 545d59fb285SBard Liao #define RT5668_M_CBJ_RM1_L (0x1 << 7) 546d59fb285SBard Liao #define RT5668_M_CBJ_RM1_L_SFT 7 547d59fb285SBard Liao 548d59fb285SBard Liao /* Power Management for Digital 1 (0x0061) */ 549d59fb285SBard Liao #define RT5668_PWR_I2S1 (0x1 << 15) 550d59fb285SBard Liao #define RT5668_PWR_I2S1_BIT 15 551d59fb285SBard Liao #define RT5668_PWR_I2S2 (0x1 << 14) 552d59fb285SBard Liao #define RT5668_PWR_I2S2_BIT 14 553d59fb285SBard Liao #define RT5668_PWR_DAC_L1 (0x1 << 11) 554d59fb285SBard Liao #define RT5668_PWR_DAC_L1_BIT 11 555d59fb285SBard Liao #define RT5668_PWR_DAC_R1 (0x1 << 10) 556d59fb285SBard Liao #define RT5668_PWR_DAC_R1_BIT 10 557d59fb285SBard Liao #define RT5668_PWR_LDO (0x1 << 8) 558d59fb285SBard Liao #define RT5668_PWR_LDO_BIT 8 559d59fb285SBard Liao #define RT5668_PWR_ADC_L1 (0x1 << 4) 560d59fb285SBard Liao #define RT5668_PWR_ADC_L1_BIT 4 561d59fb285SBard Liao #define RT5668_PWR_ADC_R1 (0x1 << 3) 562d59fb285SBard Liao #define RT5668_PWR_ADC_R1_BIT 3 563d59fb285SBard Liao #define RT5668_DIG_GATE_CTRL (0x1 << 0) 564d59fb285SBard Liao #define RT5668_DIG_GATE_CTRL_SFT 0 565d59fb285SBard Liao 566d59fb285SBard Liao 567d59fb285SBard Liao /* Power Management for Digital 2 (0x0062) */ 568d59fb285SBard Liao #define RT5668_PWR_ADC_S1F (0x1 << 15) 569d59fb285SBard Liao #define RT5668_PWR_ADC_S1F_BIT 15 570d59fb285SBard Liao #define RT5668_PWR_DAC_S1F (0x1 << 10) 571d59fb285SBard Liao #define RT5668_PWR_DAC_S1F_BIT 10 572d59fb285SBard Liao 573d59fb285SBard Liao /* Power Management for Analog 1 (0x0063) */ 574d59fb285SBard Liao #define RT5668_PWR_VREF1 (0x1 << 15) 575d59fb285SBard Liao #define RT5668_PWR_VREF1_BIT 15 576d59fb285SBard Liao #define RT5668_PWR_FV1 (0x1 << 14) 577d59fb285SBard Liao #define RT5668_PWR_FV1_BIT 14 578d59fb285SBard Liao #define RT5668_PWR_VREF2 (0x1 << 13) 579d59fb285SBard Liao #define RT5668_PWR_VREF2_BIT 13 580d59fb285SBard Liao #define RT5668_PWR_FV2 (0x1 << 12) 581d59fb285SBard Liao #define RT5668_PWR_FV2_BIT 12 582d59fb285SBard Liao #define RT5668_LDO1_DBG_MASK (0x3 << 10) 583d59fb285SBard Liao #define RT5668_PWR_MB (0x1 << 9) 584d59fb285SBard Liao #define RT5668_PWR_MB_BIT 9 585d59fb285SBard Liao #define RT5668_PWR_BG (0x1 << 7) 586d59fb285SBard Liao #define RT5668_PWR_BG_BIT 7 587d59fb285SBard Liao #define RT5668_LDO1_BYPASS_MASK (0x1 << 6) 588d59fb285SBard Liao #define RT5668_LDO1_BYPASS (0x1 << 6) 589d59fb285SBard Liao #define RT5668_LDO1_NOT_BYPASS (0x0 << 6) 590d59fb285SBard Liao #define RT5668_PWR_MA_BIT 6 591d59fb285SBard Liao #define RT5668_LDO1_DVO_MASK (0x3 << 4) 592d59fb285SBard Liao #define RT5668_LDO1_DVO_09 (0x0 << 4) 593d59fb285SBard Liao #define RT5668_LDO1_DVO_10 (0x1 << 4) 594d59fb285SBard Liao #define RT5668_LDO1_DVO_12 (0x2 << 4) 595d59fb285SBard Liao #define RT5668_LDO1_DVO_14 (0x3 << 4) 596d59fb285SBard Liao #define RT5668_HP_DRIVER_MASK (0x3 << 2) 597d59fb285SBard Liao #define RT5668_HP_DRIVER_1X (0x0 << 2) 598d59fb285SBard Liao #define RT5668_HP_DRIVER_3X (0x1 << 2) 599d59fb285SBard Liao #define RT5668_HP_DRIVER_5X (0x3 << 2) 600d59fb285SBard Liao #define RT5668_PWR_HA_L (0x1 << 1) 601d59fb285SBard Liao #define RT5668_PWR_HA_L_BIT 1 602d59fb285SBard Liao #define RT5668_PWR_HA_R (0x1 << 0) 603d59fb285SBard Liao #define RT5668_PWR_HA_R_BIT 0 604d59fb285SBard Liao 605d59fb285SBard Liao /* Power Management for Analog 2 (0x0064) */ 606d59fb285SBard Liao #define RT5668_PWR_MB1 (0x1 << 11) 607d59fb285SBard Liao #define RT5668_PWR_MB1_PWR_DOWN (0x0 << 11) 608d59fb285SBard Liao #define RT5668_PWR_MB1_BIT 11 609d59fb285SBard Liao #define RT5668_PWR_MB2 (0x1 << 10) 610d59fb285SBard Liao #define RT5668_PWR_MB2_PWR_DOWN (0x0 << 10) 611d59fb285SBard Liao #define RT5668_PWR_MB2_BIT 10 612d59fb285SBard Liao #define RT5668_PWR_JDH (0x1 << 3) 613d59fb285SBard Liao #define RT5668_PWR_JDH_BIT 3 614d59fb285SBard Liao #define RT5668_PWR_JDL (0x1 << 2) 615d59fb285SBard Liao #define RT5668_PWR_JDL_BIT 2 616d59fb285SBard Liao #define RT5668_PWR_RM1_L (0x1 << 1) 617d59fb285SBard Liao #define RT5668_PWR_RM1_L_BIT 1 618d59fb285SBard Liao 619d59fb285SBard Liao /* Power Management for Analog 3 (0x0065) */ 620d59fb285SBard Liao #define RT5668_PWR_CBJ (0x1 << 9) 621d59fb285SBard Liao #define RT5668_PWR_CBJ_BIT 9 622d59fb285SBard Liao #define RT5668_PWR_PLL (0x1 << 6) 623d59fb285SBard Liao #define RT5668_PWR_PLL_BIT 6 624d59fb285SBard Liao #define RT5668_PWR_PLL2B (0x1 << 5) 625d59fb285SBard Liao #define RT5668_PWR_PLL2B_BIT 5 626d59fb285SBard Liao #define RT5668_PWR_PLL2F (0x1 << 4) 627d59fb285SBard Liao #define RT5668_PWR_PLL2F_BIT 4 628d59fb285SBard Liao #define RT5668_PWR_LDO2 (0x1 << 2) 629d59fb285SBard Liao #define RT5668_PWR_LDO2_BIT 2 630d59fb285SBard Liao #define RT5668_PWR_DET_SPKVDD (0x1 << 1) 631d59fb285SBard Liao #define RT5668_PWR_DET_SPKVDD_BIT 1 632d59fb285SBard Liao 633d59fb285SBard Liao /* Power Management for Mixer (0x0066) */ 634d59fb285SBard Liao #define RT5668_PWR_STO1_DAC_L (0x1 << 5) 635d59fb285SBard Liao #define RT5668_PWR_STO1_DAC_L_BIT 5 636d59fb285SBard Liao #define RT5668_PWR_STO1_DAC_R (0x1 << 4) 637d59fb285SBard Liao #define RT5668_PWR_STO1_DAC_R_BIT 4 638d59fb285SBard Liao 639d59fb285SBard Liao /* MCLK and System Clock Detection Control (0x006b) */ 640d59fb285SBard Liao #define RT5668_SYS_CLK_DET (0x1 << 15) 641d59fb285SBard Liao #define RT5668_SYS_CLK_DET_SFT 15 642d59fb285SBard Liao #define RT5668_PLL1_CLK_DET (0x1 << 14) 643d59fb285SBard Liao #define RT5668_PLL1_CLK_DET_SFT 14 644d59fb285SBard Liao #define RT5668_PLL2_CLK_DET (0x1 << 13) 645d59fb285SBard Liao #define RT5668_PLL2_CLK_DET_SFT 13 646d59fb285SBard Liao #define RT5668_POW_CLK_DET2_SFT 8 647d59fb285SBard Liao #define RT5668_POW_CLK_DET_SFT 0 648d59fb285SBard Liao 649d59fb285SBard Liao /* Digital Microphone Control 1 (0x006e) */ 650d59fb285SBard Liao #define RT5668_DMIC_1_EN_MASK (0x1 << 15) 651d59fb285SBard Liao #define RT5668_DMIC_1_EN_SFT 15 652d59fb285SBard Liao #define RT5668_DMIC_1_DIS (0x0 << 15) 653d59fb285SBard Liao #define RT5668_DMIC_1_EN (0x1 << 15) 654d59fb285SBard Liao #define RT5668_DMIC_1_DP_MASK (0x3 << 4) 655d59fb285SBard Liao #define RT5668_DMIC_1_DP_SFT 4 656d59fb285SBard Liao #define RT5668_DMIC_1_DP_GPIO2 (0x0 << 4) 657d59fb285SBard Liao #define RT5668_DMIC_1_DP_GPIO5 (0x1 << 4) 658d59fb285SBard Liao #define RT5668_DMIC_CLK_MASK (0xf << 0) 659d59fb285SBard Liao #define RT5668_DMIC_CLK_SFT 0 660d59fb285SBard Liao 661d59fb285SBard Liao /* I2S1 Audio Serial Data Port Control (0x0070) */ 662d59fb285SBard Liao #define RT5668_SEL_ADCDAT_MASK (0x1 << 15) 663d59fb285SBard Liao #define RT5668_SEL_ADCDAT_OUT (0x0 << 15) 664d59fb285SBard Liao #define RT5668_SEL_ADCDAT_IN (0x1 << 15) 665d59fb285SBard Liao #define RT5668_SEL_ADCDAT_SFT 15 666d59fb285SBard Liao #define RT5668_I2S1_TX_CHL_MASK (0x7 << 12) 667d59fb285SBard Liao #define RT5668_I2S1_TX_CHL_SFT 12 668d59fb285SBard Liao #define RT5668_I2S1_TX_CHL_16 (0x0 << 12) 669d59fb285SBard Liao #define RT5668_I2S1_TX_CHL_20 (0x1 << 12) 670d59fb285SBard Liao #define RT5668_I2S1_TX_CHL_24 (0x2 << 12) 671d59fb285SBard Liao #define RT5668_I2S1_TX_CHL_32 (0x3 << 12) 672d59fb285SBard Liao #define RT5668_I2S1_TX_CHL_8 (0x4 << 12) 673d59fb285SBard Liao #define RT5668_I2S1_RX_CHL_MASK (0x7 << 8) 674d59fb285SBard Liao #define RT5668_I2S1_RX_CHL_SFT 8 675d59fb285SBard Liao #define RT5668_I2S1_RX_CHL_16 (0x0 << 8) 676d59fb285SBard Liao #define RT5668_I2S1_RX_CHL_20 (0x1 << 8) 677d59fb285SBard Liao #define RT5668_I2S1_RX_CHL_24 (0x2 << 8) 678d59fb285SBard Liao #define RT5668_I2S1_RX_CHL_32 (0x3 << 8) 679d59fb285SBard Liao #define RT5668_I2S1_RX_CHL_8 (0x4 << 8) 680d59fb285SBard Liao #define RT5668_I2S1_MONO_MASK (0x1 << 7) 681d59fb285SBard Liao #define RT5668_I2S1_MONO_EN (0x1 << 7) 682d59fb285SBard Liao #define RT5668_I2S1_MONO_DIS (0x0 << 7) 683d59fb285SBard Liao #define RT5668_I2S2_MONO_MASK (0x1 << 6) 684d59fb285SBard Liao #define RT5668_I2S2_MONO_EN (0x1 << 6) 685d59fb285SBard Liao #define RT5668_I2S2_MONO_DIS (0x0 << 6) 686d59fb285SBard Liao #define RT5668_I2S1_DL_MASK (0x7 << 4) 687d59fb285SBard Liao #define RT5668_I2S1_DL_SFT 4 688d59fb285SBard Liao #define RT5668_I2S1_DL_16 (0x0 << 4) 689d59fb285SBard Liao #define RT5668_I2S1_DL_20 (0x1 << 4) 690d59fb285SBard Liao #define RT5668_I2S1_DL_24 (0x2 << 4) 691d59fb285SBard Liao #define RT5668_I2S1_DL_32 (0x3 << 4) 692d59fb285SBard Liao #define RT5668_I2S1_DL_8 (0x4 << 4) 693d59fb285SBard Liao 694d59fb285SBard Liao /* I2S1/2 Audio Serial Data Port Control (0x0070)(0x0071) */ 695d59fb285SBard Liao #define RT5668_I2S2_MS_MASK (0x1 << 15) 696d59fb285SBard Liao #define RT5668_I2S2_MS_SFT 15 697d59fb285SBard Liao #define RT5668_I2S2_MS_M (0x0 << 15) 698d59fb285SBard Liao #define RT5668_I2S2_MS_S (0x1 << 15) 699d59fb285SBard Liao #define RT5668_I2S2_PIN_CFG_MASK (0x1 << 14) 700d59fb285SBard Liao #define RT5668_I2S2_PIN_CFG_SFT 14 701d59fb285SBard Liao #define RT5668_I2S2_CLK_SEL_MASK (0x1 << 11) 702d59fb285SBard Liao #define RT5668_I2S2_CLK_SEL_SFT 11 703d59fb285SBard Liao #define RT5668_I2S2_OUT_MASK (0x1 << 9) 704d59fb285SBard Liao #define RT5668_I2S2_OUT_SFT 9 705d59fb285SBard Liao #define RT5668_I2S2_OUT_UM (0x0 << 9) 706d59fb285SBard Liao #define RT5668_I2S2_OUT_M (0x1 << 9) 707d59fb285SBard Liao #define RT5668_I2S_BP_MASK (0x1 << 8) 708d59fb285SBard Liao #define RT5668_I2S_BP_SFT 8 709d59fb285SBard Liao #define RT5668_I2S_BP_NOR (0x0 << 8) 710d59fb285SBard Liao #define RT5668_I2S_BP_INV (0x1 << 8) 711d59fb285SBard Liao #define RT5668_I2S2_MONO_EN (0x1 << 6) 712d59fb285SBard Liao #define RT5668_I2S2_MONO_DIS (0x0 << 6) 713d59fb285SBard Liao #define RT5668_I2S2_DL_MASK (0x3 << 4) 714d59fb285SBard Liao #define RT5668_I2S2_DL_SFT 4 715d59fb285SBard Liao #define RT5668_I2S2_DL_16 (0x0 << 4) 716d59fb285SBard Liao #define RT5668_I2S2_DL_20 (0x1 << 4) 717d59fb285SBard Liao #define RT5668_I2S2_DL_24 (0x2 << 4) 718d59fb285SBard Liao #define RT5668_I2S2_DL_8 (0x3 << 4) 719d59fb285SBard Liao #define RT5668_I2S_DF_MASK (0x7) 720d59fb285SBard Liao #define RT5668_I2S_DF_SFT 0 721d59fb285SBard Liao #define RT5668_I2S_DF_I2S (0x0) 722d59fb285SBard Liao #define RT5668_I2S_DF_LEFT (0x1) 723d59fb285SBard Liao #define RT5668_I2S_DF_PCM_A (0x2) 724d59fb285SBard Liao #define RT5668_I2S_DF_PCM_B (0x3) 725d59fb285SBard Liao #define RT5668_I2S_DF_PCM_A_N (0x6) 726d59fb285SBard Liao #define RT5668_I2S_DF_PCM_B_N (0x7) 727d59fb285SBard Liao 728d59fb285SBard Liao /* ADC/DAC Clock Control 1 (0x0073) */ 729d59fb285SBard Liao #define RT5668_ADC_OSR_MASK (0xf << 12) 730d59fb285SBard Liao #define RT5668_ADC_OSR_SFT 12 731d59fb285SBard Liao #define RT5668_ADC_OSR_D_1 (0x0 << 12) 732d59fb285SBard Liao #define RT5668_ADC_OSR_D_2 (0x1 << 12) 733d59fb285SBard Liao #define RT5668_ADC_OSR_D_4 (0x2 << 12) 734d59fb285SBard Liao #define RT5668_ADC_OSR_D_6 (0x3 << 12) 735d59fb285SBard Liao #define RT5668_ADC_OSR_D_8 (0x4 << 12) 736d59fb285SBard Liao #define RT5668_ADC_OSR_D_12 (0x5 << 12) 737d59fb285SBard Liao #define RT5668_ADC_OSR_D_16 (0x6 << 12) 738d59fb285SBard Liao #define RT5668_ADC_OSR_D_24 (0x7 << 12) 739d59fb285SBard Liao #define RT5668_ADC_OSR_D_32 (0x8 << 12) 740d59fb285SBard Liao #define RT5668_ADC_OSR_D_48 (0x9 << 12) 741d59fb285SBard Liao #define RT5668_I2S_M_DIV_MASK (0xf << 12) 742d59fb285SBard Liao #define RT5668_I2S_M_DIV_SFT 8 743d59fb285SBard Liao #define RT5668_I2S_M_D_1 (0x0 << 8) 744d59fb285SBard Liao #define RT5668_I2S_M_D_2 (0x1 << 8) 745d59fb285SBard Liao #define RT5668_I2S_M_D_3 (0x2 << 8) 746d59fb285SBard Liao #define RT5668_I2S_M_D_4 (0x3 << 8) 747d59fb285SBard Liao #define RT5668_I2S_M_D_6 (0x4 << 8) 748d59fb285SBard Liao #define RT5668_I2S_M_D_8 (0x5 << 8) 749d59fb285SBard Liao #define RT5668_I2S_M_D_12 (0x6 << 8) 750d59fb285SBard Liao #define RT5668_I2S_M_D_16 (0x7 << 8) 751d59fb285SBard Liao #define RT5668_I2S_M_D_24 (0x8 << 8) 752d59fb285SBard Liao #define RT5668_I2S_M_D_32 (0x9 << 8) 753d59fb285SBard Liao #define RT5668_I2S_M_D_48 (0x10 << 8) 754d59fb285SBard Liao #define RT5668_I2S_CLK_SRC_MASK (0x7 << 4) 755d59fb285SBard Liao #define RT5668_I2S_CLK_SRC_SFT 4 756d59fb285SBard Liao #define RT5668_I2S_CLK_SRC_MCLK (0x0 << 4) 757d59fb285SBard Liao #define RT5668_I2S_CLK_SRC_PLL1 (0x1 << 4) 758d59fb285SBard Liao #define RT5668_I2S_CLK_SRC_PLL2 (0x2 << 4) 759d59fb285SBard Liao #define RT5668_I2S_CLK_SRC_SDW (0x3 << 4) 760d59fb285SBard Liao #define RT5668_I2S_CLK_SRC_RCCLK (0x4 << 4) /* 25M */ 761d59fb285SBard Liao #define RT5668_DAC_OSR_MASK (0xf << 0) 762d59fb285SBard Liao #define RT5668_DAC_OSR_SFT 0 763d59fb285SBard Liao #define RT5668_DAC_OSR_D_1 (0x0 << 0) 764d59fb285SBard Liao #define RT5668_DAC_OSR_D_2 (0x1 << 0) 765d59fb285SBard Liao #define RT5668_DAC_OSR_D_4 (0x2 << 0) 766d59fb285SBard Liao #define RT5668_DAC_OSR_D_6 (0x3 << 0) 767d59fb285SBard Liao #define RT5668_DAC_OSR_D_8 (0x4 << 0) 768d59fb285SBard Liao #define RT5668_DAC_OSR_D_12 (0x5 << 0) 769d59fb285SBard Liao #define RT5668_DAC_OSR_D_16 (0x6 << 0) 770d59fb285SBard Liao #define RT5668_DAC_OSR_D_24 (0x7 << 0) 771d59fb285SBard Liao #define RT5668_DAC_OSR_D_32 (0x8 << 0) 772d59fb285SBard Liao #define RT5668_DAC_OSR_D_48 (0x9 << 0) 773d59fb285SBard Liao 774d59fb285SBard Liao /* ADC/DAC Clock Control 2 (0x0074) */ 775d59fb285SBard Liao #define RT5668_I2S2_BCLK_MS2_MASK (0x1 << 11) 776d59fb285SBard Liao #define RT5668_I2S2_BCLK_MS2_SFT 11 777d59fb285SBard Liao #define RT5668_I2S2_BCLK_MS2_32 (0x0 << 11) 778d59fb285SBard Liao #define RT5668_I2S2_BCLK_MS2_64 (0x1 << 11) 779d59fb285SBard Liao 780d59fb285SBard Liao 781d59fb285SBard Liao /* TDM control 1 (0x0079) */ 782d59fb285SBard Liao #define RT5668_TDM_TX_CH_MASK (0x3 << 12) 783d59fb285SBard Liao #define RT5668_TDM_TX_CH_2 (0x0 << 12) 784d59fb285SBard Liao #define RT5668_TDM_TX_CH_4 (0x1 << 12) 785d59fb285SBard Liao #define RT5668_TDM_TX_CH_6 (0x2 << 12) 786d59fb285SBard Liao #define RT5668_TDM_TX_CH_8 (0x3 << 12) 787d59fb285SBard Liao #define RT5668_TDM_RX_CH_MASK (0x3 << 8) 788d59fb285SBard Liao #define RT5668_TDM_RX_CH_2 (0x0 << 8) 789d59fb285SBard Liao #define RT5668_TDM_RX_CH_4 (0x1 << 8) 790d59fb285SBard Liao #define RT5668_TDM_RX_CH_6 (0x2 << 8) 791d59fb285SBard Liao #define RT5668_TDM_RX_CH_8 (0x3 << 8) 792d59fb285SBard Liao #define RT5668_TDM_ADC_LCA_MASK (0xf << 4) 793d59fb285SBard Liao #define RT5668_TDM_ADC_LCA_SFT 4 794d59fb285SBard Liao #define RT5668_TDM_ADC_DL_SFT 0 795d59fb285SBard Liao 796d59fb285SBard Liao /* TDM control 3 (0x007a) */ 797d59fb285SBard Liao #define RT5668_IF1_ADC1_SEL_SFT 14 798d59fb285SBard Liao #define RT5668_IF1_ADC2_SEL_SFT 12 799d59fb285SBard Liao #define RT5668_IF1_ADC3_SEL_SFT 10 800d59fb285SBard Liao #define RT5668_IF1_ADC4_SEL_SFT 8 801d59fb285SBard Liao #define RT5668_TDM_ADC_SEL_SFT 4 802d59fb285SBard Liao 803d59fb285SBard Liao /* TDM/I2S control (0x007e) */ 804d59fb285SBard Liao #define RT5668_TDM_S_BP_MASK (0x1 << 15) 805d59fb285SBard Liao #define RT5668_TDM_S_BP_SFT 15 806d59fb285SBard Liao #define RT5668_TDM_S_BP_NOR (0x0 << 15) 807d59fb285SBard Liao #define RT5668_TDM_S_BP_INV (0x1 << 15) 808d59fb285SBard Liao #define RT5668_TDM_S_LP_MASK (0x1 << 14) 809d59fb285SBard Liao #define RT5668_TDM_S_LP_SFT 14 810d59fb285SBard Liao #define RT5668_TDM_S_LP_NOR (0x0 << 14) 811d59fb285SBard Liao #define RT5668_TDM_S_LP_INV (0x1 << 14) 812d59fb285SBard Liao #define RT5668_TDM_DF_MASK (0x7 << 11) 813d59fb285SBard Liao #define RT5668_TDM_DF_SFT 11 814d59fb285SBard Liao #define RT5668_TDM_DF_I2S (0x0 << 11) 815d59fb285SBard Liao #define RT5668_TDM_DF_LEFT (0x1 << 11) 816d59fb285SBard Liao #define RT5668_TDM_DF_PCM_A (0x2 << 11) 817d59fb285SBard Liao #define RT5668_TDM_DF_PCM_B (0x3 << 11) 818d59fb285SBard Liao #define RT5668_TDM_DF_PCM_A_N (0x6 << 11) 819d59fb285SBard Liao #define RT5668_TDM_DF_PCM_B_N (0x7 << 11) 820d59fb285SBard Liao #define RT5668_TDM_CL_MASK (0x3 << 4) 821d59fb285SBard Liao #define RT5668_TDM_CL_16 (0x0 << 4) 822d59fb285SBard Liao #define RT5668_TDM_CL_20 (0x1 << 4) 823d59fb285SBard Liao #define RT5668_TDM_CL_24 (0x2 << 4) 824d59fb285SBard Liao #define RT5668_TDM_CL_32 (0x3 << 4) 825d59fb285SBard Liao #define RT5668_TDM_M_BP_MASK (0x1 << 2) 826d59fb285SBard Liao #define RT5668_TDM_M_BP_SFT 2 827d59fb285SBard Liao #define RT5668_TDM_M_BP_NOR (0x0 << 2) 828d59fb285SBard Liao #define RT5668_TDM_M_BP_INV (0x1 << 2) 829d59fb285SBard Liao #define RT5668_TDM_M_LP_MASK (0x1 << 1) 830d59fb285SBard Liao #define RT5668_TDM_M_LP_SFT 1 831d59fb285SBard Liao #define RT5668_TDM_M_LP_NOR (0x0 << 1) 832d59fb285SBard Liao #define RT5668_TDM_M_LP_INV (0x1 << 1) 833d59fb285SBard Liao #define RT5668_TDM_MS_MASK (0x1 << 0) 834d59fb285SBard Liao #define RT5668_TDM_MS_SFT 0 835d59fb285SBard Liao #define RT5668_TDM_MS_M (0x0 << 0) 836d59fb285SBard Liao #define RT5668_TDM_MS_S (0x1 << 0) 837d59fb285SBard Liao 838d59fb285SBard Liao /* Global Clock Control (0x0080) */ 839d59fb285SBard Liao #define RT5668_SCLK_SRC_MASK (0x7 << 13) 840d59fb285SBard Liao #define RT5668_SCLK_SRC_SFT 13 841d59fb285SBard Liao #define RT5668_SCLK_SRC_MCLK (0x0 << 13) 842d59fb285SBard Liao #define RT5668_SCLK_SRC_PLL1 (0x1 << 13) 843d59fb285SBard Liao #define RT5668_SCLK_SRC_PLL2 (0x2 << 13) 844d59fb285SBard Liao #define RT5668_SCLK_SRC_SDW (0x3 << 13) 845d59fb285SBard Liao #define RT5668_SCLK_SRC_RCCLK (0x4 << 13) 846d59fb285SBard Liao #define RT5668_PLL1_SRC_MASK (0x3 << 10) 847d59fb285SBard Liao #define RT5668_PLL1_SRC_SFT 10 848d59fb285SBard Liao #define RT5668_PLL1_SRC_MCLK (0x0 << 10) 849d59fb285SBard Liao #define RT5668_PLL1_SRC_BCLK1 (0x1 << 10) 850d59fb285SBard Liao #define RT5668_PLL1_SRC_SDW (0x2 << 10) 851d59fb285SBard Liao #define RT5668_PLL1_SRC_RC (0x3 << 10) 852d59fb285SBard Liao #define RT5668_PLL2_SRC_MASK (0x3 << 8) 853d59fb285SBard Liao #define RT5668_PLL2_SRC_SFT 8 854d59fb285SBard Liao #define RT5668_PLL2_SRC_MCLK (0x0 << 8) 855d59fb285SBard Liao #define RT5668_PLL2_SRC_BCLK1 (0x1 << 8) 856d59fb285SBard Liao #define RT5668_PLL2_SRC_SDW (0x2 << 8) 857d59fb285SBard Liao #define RT5668_PLL2_SRC_RC (0x3 << 8) 858d59fb285SBard Liao 859d59fb285SBard Liao 860d59fb285SBard Liao 861d59fb285SBard Liao #define RT5668_PLL_INP_MAX 40000000 862d59fb285SBard Liao #define RT5668_PLL_INP_MIN 256000 863d59fb285SBard Liao /* PLL M/N/K Code Control 1 (0x0081) */ 864d59fb285SBard Liao #define RT5668_PLL_N_MAX 0x001ff 865d59fb285SBard Liao #define RT5668_PLL_N_MASK (RT5668_PLL_N_MAX << 7) 866d59fb285SBard Liao #define RT5668_PLL_N_SFT 7 867d59fb285SBard Liao #define RT5668_PLL_K_MAX 0x001f 868d59fb285SBard Liao #define RT5668_PLL_K_MASK (RT5668_PLL_K_MAX) 869d59fb285SBard Liao #define RT5668_PLL_K_SFT 0 870d59fb285SBard Liao 871d59fb285SBard Liao /* PLL M/N/K Code Control 2 (0x0082) */ 872d59fb285SBard Liao #define RT5668_PLL_M_MAX 0x00f 873d59fb285SBard Liao #define RT5668_PLL_M_MASK (RT5668_PLL_M_MAX << 12) 874d59fb285SBard Liao #define RT5668_PLL_M_SFT 12 875d59fb285SBard Liao #define RT5668_PLL_M_BP (0x1 << 11) 876d59fb285SBard Liao #define RT5668_PLL_M_BP_SFT 11 877d59fb285SBard Liao #define RT5668_PLL_K_BP (0x1 << 10) 878d59fb285SBard Liao #define RT5668_PLL_K_BP_SFT 10 879d59fb285SBard Liao 880d59fb285SBard Liao /* PLL tracking mode 1 (0x0083) */ 881d59fb285SBard Liao #define RT5668_DA_ASRC_MASK (0x1 << 13) 882d59fb285SBard Liao #define RT5668_DA_ASRC_SFT 13 883d59fb285SBard Liao #define RT5668_DAC_STO1_ASRC_MASK (0x1 << 12) 884d59fb285SBard Liao #define RT5668_DAC_STO1_ASRC_SFT 12 885d59fb285SBard Liao #define RT5668_AD_ASRC_MASK (0x1 << 8) 886d59fb285SBard Liao #define RT5668_AD_ASRC_SFT 8 887d59fb285SBard Liao #define RT5668_AD_ASRC_SEL_MASK (0x1 << 4) 888d59fb285SBard Liao #define RT5668_AD_ASRC_SEL_SFT 4 889d59fb285SBard Liao #define RT5668_DMIC_ASRC_MASK (0x1 << 3) 890d59fb285SBard Liao #define RT5668_DMIC_ASRC_SFT 3 891d59fb285SBard Liao #define RT5668_ADC_STO1_ASRC_MASK (0x1 << 2) 892d59fb285SBard Liao #define RT5668_ADC_STO1_ASRC_SFT 2 893d59fb285SBard Liao #define RT5668_DA_ASRC_SEL_MASK (0x1 << 0) 894d59fb285SBard Liao #define RT5668_DA_ASRC_SEL_SFT 0 895d59fb285SBard Liao 896d59fb285SBard Liao /* PLL tracking mode 2 3 (0x0084)(0x0085)*/ 897d59fb285SBard Liao #define RT5668_FILTER_CLK_SEL_MASK (0x7 << 12) 898d59fb285SBard Liao #define RT5668_FILTER_CLK_SEL_SFT 12 899d59fb285SBard Liao 900d59fb285SBard Liao /* ASRC Control 4 (0x0086) */ 901d59fb285SBard Liao #define RT5668_ASRCIN_FTK_N1_MASK (0x3 << 14) 902d59fb285SBard Liao #define RT5668_ASRCIN_FTK_N1_SFT 14 903d59fb285SBard Liao #define RT5668_ASRCIN_FTK_N2_MASK (0x3 << 12) 904d59fb285SBard Liao #define RT5668_ASRCIN_FTK_N2_SFT 12 905d59fb285SBard Liao #define RT5668_ASRCIN_FTK_M1_MASK (0x7 << 8) 906d59fb285SBard Liao #define RT5668_ASRCIN_FTK_M1_SFT 8 907d59fb285SBard Liao #define RT5668_ASRCIN_FTK_M2_MASK (0x7 << 4) 908d59fb285SBard Liao #define RT5668_ASRCIN_FTK_M2_SFT 4 909d59fb285SBard Liao 910d59fb285SBard Liao /* SoundWire reference clk (0x008d) */ 911d59fb285SBard Liao #define RT5668_PLL2_OUT_MASK (0x1 << 8) 912d59fb285SBard Liao #define RT5668_PLL2_OUT_98M (0x0 << 8) 913d59fb285SBard Liao #define RT5668_PLL2_OUT_49M (0x1 << 8) 914d59fb285SBard Liao #define RT5668_SDW_REF_2_MASK (0xf << 4) 915d59fb285SBard Liao #define RT5668_SDW_REF_2_SFT 4 916d59fb285SBard Liao #define RT5668_SDW_REF_2_48K (0x0 << 4) 917d59fb285SBard Liao #define RT5668_SDW_REF_2_96K (0x1 << 4) 918d59fb285SBard Liao #define RT5668_SDW_REF_2_192K (0x2 << 4) 919d59fb285SBard Liao #define RT5668_SDW_REF_2_32K (0x3 << 4) 920d59fb285SBard Liao #define RT5668_SDW_REF_2_24K (0x4 << 4) 921d59fb285SBard Liao #define RT5668_SDW_REF_2_16K (0x5 << 4) 922d59fb285SBard Liao #define RT5668_SDW_REF_2_12K (0x6 << 4) 923d59fb285SBard Liao #define RT5668_SDW_REF_2_8K (0x7 << 4) 924d59fb285SBard Liao #define RT5668_SDW_REF_2_44K (0x8 << 4) 925d59fb285SBard Liao #define RT5668_SDW_REF_2_88K (0x9 << 4) 926d59fb285SBard Liao #define RT5668_SDW_REF_2_176K (0xa << 4) 927d59fb285SBard Liao #define RT5668_SDW_REF_2_353K (0xb << 4) 928d59fb285SBard Liao #define RT5668_SDW_REF_2_22K (0xc << 4) 929d59fb285SBard Liao #define RT5668_SDW_REF_2_384K (0xd << 4) 930d59fb285SBard Liao #define RT5668_SDW_REF_2_11K (0xe << 4) 931d59fb285SBard Liao #define RT5668_SDW_REF_1_MASK (0xf << 0) 932d59fb285SBard Liao #define RT5668_SDW_REF_1_SFT 0 933d59fb285SBard Liao #define RT5668_SDW_REF_1_48K (0x0 << 0) 934d59fb285SBard Liao #define RT5668_SDW_REF_1_96K (0x1 << 0) 935d59fb285SBard Liao #define RT5668_SDW_REF_1_192K (0x2 << 0) 936d59fb285SBard Liao #define RT5668_SDW_REF_1_32K (0x3 << 0) 937d59fb285SBard Liao #define RT5668_SDW_REF_1_24K (0x4 << 0) 938d59fb285SBard Liao #define RT5668_SDW_REF_1_16K (0x5 << 0) 939d59fb285SBard Liao #define RT5668_SDW_REF_1_12K (0x6 << 0) 940d59fb285SBard Liao #define RT5668_SDW_REF_1_8K (0x7 << 0) 941d59fb285SBard Liao #define RT5668_SDW_REF_1_44K (0x8 << 0) 942d59fb285SBard Liao #define RT5668_SDW_REF_1_88K (0x9 << 0) 943d59fb285SBard Liao #define RT5668_SDW_REF_1_176K (0xa << 0) 944d59fb285SBard Liao #define RT5668_SDW_REF_1_353K (0xb << 0) 945d59fb285SBard Liao #define RT5668_SDW_REF_1_22K (0xc << 0) 946d59fb285SBard Liao #define RT5668_SDW_REF_1_384K (0xd << 0) 947d59fb285SBard Liao #define RT5668_SDW_REF_1_11K (0xe << 0) 948d59fb285SBard Liao 949d59fb285SBard Liao /* Depop Mode Control 1 (0x008e) */ 950d59fb285SBard Liao #define RT5668_PUMP_EN (0x1 << 3) 951d59fb285SBard Liao #define RT5668_PUMP_EN_SFT 3 952d59fb285SBard Liao #define RT5668_CAPLESS_EN (0x1 << 0) 953d59fb285SBard Liao #define RT5668_CAPLESS_EN_SFT 0 954d59fb285SBard Liao 955d59fb285SBard Liao /* Depop Mode Control 2 (0x8f) */ 956d59fb285SBard Liao #define RT5668_RAMP_MASK (0x1 << 12) 957d59fb285SBard Liao #define RT5668_RAMP_SFT 12 958d59fb285SBard Liao #define RT5668_RAMP_DIS (0x0 << 12) 959d59fb285SBard Liao #define RT5668_RAMP_EN (0x1 << 12) 960d59fb285SBard Liao #define RT5668_BPS_MASK (0x1 << 11) 961d59fb285SBard Liao #define RT5668_BPS_SFT 11 962d59fb285SBard Liao #define RT5668_BPS_DIS (0x0 << 11) 963d59fb285SBard Liao #define RT5668_BPS_EN (0x1 << 11) 964d59fb285SBard Liao #define RT5668_FAST_UPDN_MASK (0x1 << 10) 965d59fb285SBard Liao #define RT5668_FAST_UPDN_SFT 10 966d59fb285SBard Liao #define RT5668_FAST_UPDN_DIS (0x0 << 10) 967d59fb285SBard Liao #define RT5668_FAST_UPDN_EN (0x1 << 10) 968d59fb285SBard Liao #define RT5668_VLO_MASK (0x1 << 7) 969d59fb285SBard Liao #define RT5668_VLO_SFT 7 970d59fb285SBard Liao #define RT5668_VLO_3V (0x0 << 7) 971d59fb285SBard Liao #define RT5668_VLO_33V (0x1 << 7) 972d59fb285SBard Liao 973d59fb285SBard Liao /* HPOUT charge pump 1 (0x0091) */ 974d59fb285SBard Liao #define RT5668_OSW_L_MASK (0x1 << 11) 975d59fb285SBard Liao #define RT5668_OSW_L_SFT 11 976d59fb285SBard Liao #define RT5668_OSW_L_DIS (0x0 << 11) 977d59fb285SBard Liao #define RT5668_OSW_L_EN (0x1 << 11) 978d59fb285SBard Liao #define RT5668_OSW_R_MASK (0x1 << 10) 979d59fb285SBard Liao #define RT5668_OSW_R_SFT 10 980d59fb285SBard Liao #define RT5668_OSW_R_DIS (0x0 << 10) 981d59fb285SBard Liao #define RT5668_OSW_R_EN (0x1 << 10) 982d59fb285SBard Liao #define RT5668_PM_HP_MASK (0x3 << 8) 983d59fb285SBard Liao #define RT5668_PM_HP_SFT 8 984d59fb285SBard Liao #define RT5668_PM_HP_LV (0x0 << 8) 985d59fb285SBard Liao #define RT5668_PM_HP_MV (0x1 << 8) 986d59fb285SBard Liao #define RT5668_PM_HP_HV (0x2 << 8) 987d59fb285SBard Liao #define RT5668_IB_HP_MASK (0x3 << 6) 988d59fb285SBard Liao #define RT5668_IB_HP_SFT 6 989d59fb285SBard Liao #define RT5668_IB_HP_125IL (0x0 << 6) 990d59fb285SBard Liao #define RT5668_IB_HP_25IL (0x1 << 6) 991d59fb285SBard Liao #define RT5668_IB_HP_5IL (0x2 << 6) 992d59fb285SBard Liao #define RT5668_IB_HP_1IL (0x3 << 6) 993d59fb285SBard Liao 994d59fb285SBard Liao /* Micbias Control1 (0x93) */ 995d59fb285SBard Liao #define RT5668_MIC1_OV_MASK (0x3 << 14) 996d59fb285SBard Liao #define RT5668_MIC1_OV_SFT 14 997d59fb285SBard Liao #define RT5668_MIC1_OV_2V7 (0x0 << 14) 998d59fb285SBard Liao #define RT5668_MIC1_OV_2V4 (0x1 << 14) 999d59fb285SBard Liao #define RT5668_MIC1_OV_2V25 (0x3 << 14) 1000d59fb285SBard Liao #define RT5668_MIC1_OV_1V8 (0x4 << 14) 1001d59fb285SBard Liao #define RT5668_MIC1_CLK_MASK (0x1 << 13) 1002d59fb285SBard Liao #define RT5668_MIC1_CLK_SFT 13 1003d59fb285SBard Liao #define RT5668_MIC1_CLK_DIS (0x0 << 13) 1004d59fb285SBard Liao #define RT5668_MIC1_CLK_EN (0x1 << 13) 1005d59fb285SBard Liao #define RT5668_MIC1_OVCD_MASK (0x1 << 12) 1006d59fb285SBard Liao #define RT5668_MIC1_OVCD_SFT 12 1007d59fb285SBard Liao #define RT5668_MIC1_OVCD_DIS (0x0 << 12) 1008d59fb285SBard Liao #define RT5668_MIC1_OVCD_EN (0x1 << 12) 1009d59fb285SBard Liao #define RT5668_MIC1_OVTH_MASK (0x3 << 10) 1010d59fb285SBard Liao #define RT5668_MIC1_OVTH_SFT 10 1011d59fb285SBard Liao #define RT5668_MIC1_OVTH_768UA (0x0 << 10) 1012d59fb285SBard Liao #define RT5668_MIC1_OVTH_960UA (0x1 << 10) 1013d59fb285SBard Liao #define RT5668_MIC1_OVTH_1152UA (0x2 << 10) 1014d59fb285SBard Liao #define RT5668_MIC1_OVTH_1960UA (0x3 << 10) 1015d59fb285SBard Liao #define RT5668_MIC2_OV_MASK (0x3 << 8) 1016d59fb285SBard Liao #define RT5668_MIC2_OV_SFT 8 1017d59fb285SBard Liao #define RT5668_MIC2_OV_2V7 (0x0 << 8) 1018d59fb285SBard Liao #define RT5668_MIC2_OV_2V4 (0x1 << 8) 1019d59fb285SBard Liao #define RT5668_MIC2_OV_2V25 (0x3 << 8) 1020d59fb285SBard Liao #define RT5668_MIC2_OV_1V8 (0x4 << 8) 1021d59fb285SBard Liao #define RT5668_MIC2_CLK_MASK (0x1 << 7) 1022d59fb285SBard Liao #define RT5668_MIC2_CLK_SFT 7 1023d59fb285SBard Liao #define RT5668_MIC2_CLK_DIS (0x0 << 7) 1024d59fb285SBard Liao #define RT5668_MIC2_CLK_EN (0x1 << 7) 1025d59fb285SBard Liao #define RT5668_MIC2_OVTH_MASK (0x3 << 4) 1026d59fb285SBard Liao #define RT5668_MIC2_OVTH_SFT 4 1027d59fb285SBard Liao #define RT5668_MIC2_OVTH_768UA (0x0 << 4) 1028d59fb285SBard Liao #define RT5668_MIC2_OVTH_960UA (0x1 << 4) 1029d59fb285SBard Liao #define RT5668_MIC2_OVTH_1152UA (0x2 << 4) 1030d59fb285SBard Liao #define RT5668_MIC2_OVTH_1960UA (0x3 << 4) 1031d59fb285SBard Liao #define RT5668_PWR_MB_MASK (0x1 << 3) 1032d59fb285SBard Liao #define RT5668_PWR_MB_SFT 3 1033d59fb285SBard Liao #define RT5668_PWR_MB_PD (0x0 << 3) 1034d59fb285SBard Liao #define RT5668_PWR_MB_PU (0x1 << 3) 1035d59fb285SBard Liao 1036d59fb285SBard Liao /* Micbias Control2 (0x0094) */ 1037d59fb285SBard Liao #define RT5668_PWR_CLK25M_MASK (0x1 << 9) 1038d59fb285SBard Liao #define RT5668_PWR_CLK25M_SFT 9 1039d59fb285SBard Liao #define RT5668_PWR_CLK25M_PD (0x0 << 9) 1040d59fb285SBard Liao #define RT5668_PWR_CLK25M_PU (0x1 << 9) 1041d59fb285SBard Liao #define RT5668_PWR_CLK1M_MASK (0x1 << 8) 1042d59fb285SBard Liao #define RT5668_PWR_CLK1M_SFT 8 1043d59fb285SBard Liao #define RT5668_PWR_CLK1M_PD (0x0 << 8) 1044d59fb285SBard Liao #define RT5668_PWR_CLK1M_PU (0x1 << 8) 1045d59fb285SBard Liao 1046d59fb285SBard Liao /* RC Clock Control (0x009f) */ 1047d59fb285SBard Liao #define RT5668_POW_IRQ (0x1 << 15) 1048d59fb285SBard Liao #define RT5668_POW_JDH (0x1 << 14) 1049d59fb285SBard Liao #define RT5668_POW_JDL (0x1 << 13) 1050d59fb285SBard Liao #define RT5668_POW_ANA (0x1 << 12) 1051d59fb285SBard Liao 1052d59fb285SBard Liao /* I2S Master Mode Clock Control 1 (0x00a0) */ 1053d59fb285SBard Liao #define RT5668_CLK_SRC_MCLK (0x0) 1054d59fb285SBard Liao #define RT5668_CLK_SRC_PLL1 (0x1) 1055d59fb285SBard Liao #define RT5668_CLK_SRC_PLL2 (0x2) 1056d59fb285SBard Liao #define RT5668_CLK_SRC_SDW (0x3) 1057d59fb285SBard Liao #define RT5668_CLK_SRC_RCCLK (0x4) 1058d59fb285SBard Liao #define RT5668_I2S_PD_1 (0x0) 1059d59fb285SBard Liao #define RT5668_I2S_PD_2 (0x1) 1060d59fb285SBard Liao #define RT5668_I2S_PD_3 (0x2) 1061d59fb285SBard Liao #define RT5668_I2S_PD_4 (0x3) 1062d59fb285SBard Liao #define RT5668_I2S_PD_6 (0x4) 1063d59fb285SBard Liao #define RT5668_I2S_PD_8 (0x5) 1064d59fb285SBard Liao #define RT5668_I2S_PD_12 (0x6) 1065d59fb285SBard Liao #define RT5668_I2S_PD_16 (0x7) 1066d59fb285SBard Liao #define RT5668_I2S_PD_24 (0x8) 1067d59fb285SBard Liao #define RT5668_I2S_PD_32 (0x9) 1068d59fb285SBard Liao #define RT5668_I2S_PD_48 (0xa) 1069d59fb285SBard Liao #define RT5668_I2S2_SRC_MASK (0x3 << 4) 1070d59fb285SBard Liao #define RT5668_I2S2_SRC_SFT 4 1071d59fb285SBard Liao #define RT5668_I2S2_M_PD_MASK (0xf << 0) 1072d59fb285SBard Liao #define RT5668_I2S2_M_PD_SFT 0 1073d59fb285SBard Liao 1074d59fb285SBard Liao /* IRQ Control 1 (0x00b6) */ 1075d59fb285SBard Liao #define RT5668_JD1_PULSE_EN_MASK (0x1 << 10) 1076d59fb285SBard Liao #define RT5668_JD1_PULSE_EN_SFT 10 1077d59fb285SBard Liao #define RT5668_JD1_PULSE_DIS (0x0 << 10) 1078d59fb285SBard Liao #define RT5668_JD1_PULSE_EN (0x1 << 10) 1079d59fb285SBard Liao 1080d59fb285SBard Liao /* IRQ Control 2 (0x00b7) */ 1081d59fb285SBard Liao #define RT5668_JD1_EN_MASK (0x1 << 15) 1082d59fb285SBard Liao #define RT5668_JD1_EN_SFT 15 1083d59fb285SBard Liao #define RT5668_JD1_DIS (0x0 << 15) 1084d59fb285SBard Liao #define RT5668_JD1_EN (0x1 << 15) 1085d59fb285SBard Liao #define RT5668_JD1_POL_MASK (0x1 << 13) 1086d59fb285SBard Liao #define RT5668_JD1_POL_NOR (0x0 << 13) 1087d59fb285SBard Liao #define RT5668_JD1_POL_INV (0x1 << 13) 1088d59fb285SBard Liao 1089d59fb285SBard Liao /* IRQ Control 3 (0x00b8) */ 1090d59fb285SBard Liao #define RT5668_IL_IRQ_MASK (0x1 << 7) 1091d59fb285SBard Liao #define RT5668_IL_IRQ_DIS (0x0 << 7) 1092d59fb285SBard Liao #define RT5668_IL_IRQ_EN (0x1 << 7) 1093d59fb285SBard Liao 1094d59fb285SBard Liao /* GPIO Control 1 (0x00c0) */ 1095d59fb285SBard Liao #define RT5668_GP1_PIN_MASK (0x3 << 14) 1096d59fb285SBard Liao #define RT5668_GP1_PIN_SFT 14 1097d59fb285SBard Liao #define RT5668_GP1_PIN_GPIO1 (0x0 << 14) 1098d59fb285SBard Liao #define RT5668_GP1_PIN_IRQ (0x1 << 14) 1099d59fb285SBard Liao #define RT5668_GP1_PIN_DMIC_CLK (0x2 << 14) 1100d59fb285SBard Liao #define RT5668_GP2_PIN_MASK (0x3 << 12) 1101d59fb285SBard Liao #define RT5668_GP2_PIN_SFT 12 1102d59fb285SBard Liao #define RT5668_GP2_PIN_GPIO2 (0x0 << 12) 1103d59fb285SBard Liao #define RT5668_GP2_PIN_LRCK2 (0x1 << 12) 1104d59fb285SBard Liao #define RT5668_GP2_PIN_DMIC_SDA (0x2 << 12) 1105d59fb285SBard Liao #define RT5668_GP3_PIN_MASK (0x3 << 10) 1106d59fb285SBard Liao #define RT5668_GP3_PIN_SFT 10 1107d59fb285SBard Liao #define RT5668_GP3_PIN_GPIO3 (0x0 << 10) 1108d59fb285SBard Liao #define RT5668_GP3_PIN_BCLK2 (0x1 << 10) 1109d59fb285SBard Liao #define RT5668_GP3_PIN_DMIC_CLK (0x2 << 10) 1110d59fb285SBard Liao #define RT5668_GP4_PIN_MASK (0x3 << 8) 1111d59fb285SBard Liao #define RT5668_GP4_PIN_SFT 8 1112d59fb285SBard Liao #define RT5668_GP4_PIN_GPIO4 (0x0 << 8) 1113d59fb285SBard Liao #define RT5668_GP4_PIN_ADCDAT1 (0x1 << 8) 1114d59fb285SBard Liao #define RT5668_GP4_PIN_DMIC_CLK (0x2 << 8) 1115d59fb285SBard Liao #define RT5668_GP4_PIN_ADCDAT2 (0x3 << 8) 1116d59fb285SBard Liao #define RT5668_GP5_PIN_MASK (0x3 << 6) 1117d59fb285SBard Liao #define RT5668_GP5_PIN_SFT 6 1118d59fb285SBard Liao #define RT5668_GP5_PIN_GPIO5 (0x0 << 6) 1119d59fb285SBard Liao #define RT5668_GP5_PIN_DACDAT1 (0x1 << 6) 1120d59fb285SBard Liao #define RT5668_GP5_PIN_DMIC_SDA (0x2 << 6) 1121d59fb285SBard Liao #define RT5668_GP6_PIN_MASK (0x1 << 5) 1122d59fb285SBard Liao #define RT5668_GP6_PIN_SFT 5 1123d59fb285SBard Liao #define RT5668_GP6_PIN_GPIO6 (0x0 << 5) 1124d59fb285SBard Liao #define RT5668_GP6_PIN_LRCK1 (0x1 << 5) 1125d59fb285SBard Liao 1126d59fb285SBard Liao /* GPIO Control 2 (0x00c1)*/ 1127d59fb285SBard Liao #define RT5668_GP1_PF_MASK (0x1 << 15) 1128d59fb285SBard Liao #define RT5668_GP1_PF_IN (0x0 << 15) 1129d59fb285SBard Liao #define RT5668_GP1_PF_OUT (0x1 << 15) 1130d59fb285SBard Liao #define RT5668_GP1_OUT_MASK (0x1 << 14) 1131d59fb285SBard Liao #define RT5668_GP1_OUT_L (0x0 << 14) 1132d59fb285SBard Liao #define RT5668_GP1_OUT_H (0x1 << 14) 1133d59fb285SBard Liao #define RT5668_GP2_PF_MASK (0x1 << 13) 1134d59fb285SBard Liao #define RT5668_GP2_PF_IN (0x0 << 13) 1135d59fb285SBard Liao #define RT5668_GP2_PF_OUT (0x1 << 13) 1136d59fb285SBard Liao #define RT5668_GP2_OUT_MASK (0x1 << 12) 1137d59fb285SBard Liao #define RT5668_GP2_OUT_L (0x0 << 12) 1138d59fb285SBard Liao #define RT5668_GP2_OUT_H (0x1 << 12) 1139d59fb285SBard Liao #define RT5668_GP3_PF_MASK (0x1 << 11) 1140d59fb285SBard Liao #define RT5668_GP3_PF_IN (0x0 << 11) 1141d59fb285SBard Liao #define RT5668_GP3_PF_OUT (0x1 << 11) 1142d59fb285SBard Liao #define RT5668_GP3_OUT_MASK (0x1 << 10) 1143d59fb285SBard Liao #define RT5668_GP3_OUT_L (0x0 << 10) 1144d59fb285SBard Liao #define RT5668_GP3_OUT_H (0x1 << 10) 1145d59fb285SBard Liao #define RT5668_GP4_PF_MASK (0x1 << 9) 1146d59fb285SBard Liao #define RT5668_GP4_PF_IN (0x0 << 9) 1147d59fb285SBard Liao #define RT5668_GP4_PF_OUT (0x1 << 9) 1148d59fb285SBard Liao #define RT5668_GP4_OUT_MASK (0x1 << 8) 1149d59fb285SBard Liao #define RT5668_GP4_OUT_L (0x0 << 8) 1150d59fb285SBard Liao #define RT5668_GP4_OUT_H (0x1 << 8) 1151d59fb285SBard Liao #define RT5668_GP5_PF_MASK (0x1 << 7) 1152d59fb285SBard Liao #define RT5668_GP5_PF_IN (0x0 << 7) 1153d59fb285SBard Liao #define RT5668_GP5_PF_OUT (0x1 << 7) 1154d59fb285SBard Liao #define RT5668_GP5_OUT_MASK (0x1 << 6) 1155d59fb285SBard Liao #define RT5668_GP5_OUT_L (0x0 << 6) 1156d59fb285SBard Liao #define RT5668_GP5_OUT_H (0x1 << 6) 1157d59fb285SBard Liao #define RT5668_GP6_PF_MASK (0x1 << 5) 1158d59fb285SBard Liao #define RT5668_GP6_PF_IN (0x0 << 5) 1159d59fb285SBard Liao #define RT5668_GP6_PF_OUT (0x1 << 5) 1160d59fb285SBard Liao #define RT5668_GP6_OUT_MASK (0x1 << 4) 1161d59fb285SBard Liao #define RT5668_GP6_OUT_L (0x0 << 4) 1162d59fb285SBard Liao #define RT5668_GP6_OUT_H (0x1 << 4) 1163d59fb285SBard Liao 1164d59fb285SBard Liao 1165d59fb285SBard Liao /* GPIO Status (0x00c2) */ 1166d59fb285SBard Liao #define RT5668_GP6_STA (0x1 << 6) 1167d59fb285SBard Liao #define RT5668_GP5_STA (0x1 << 5) 1168d59fb285SBard Liao #define RT5668_GP4_STA (0x1 << 4) 1169d59fb285SBard Liao #define RT5668_GP3_STA (0x1 << 3) 1170d59fb285SBard Liao #define RT5668_GP2_STA (0x1 << 2) 1171d59fb285SBard Liao #define RT5668_GP1_STA (0x1 << 1) 1172d59fb285SBard Liao 1173d59fb285SBard Liao /* Soft volume and zero cross control 1 (0x00d9) */ 1174d59fb285SBard Liao #define RT5668_SV_MASK (0x1 << 15) 1175d59fb285SBard Liao #define RT5668_SV_SFT 15 1176d59fb285SBard Liao #define RT5668_SV_DIS (0x0 << 15) 1177d59fb285SBard Liao #define RT5668_SV_EN (0x1 << 15) 1178d59fb285SBard Liao #define RT5668_ZCD_MASK (0x1 << 10) 1179d59fb285SBard Liao #define RT5668_ZCD_SFT 10 1180d59fb285SBard Liao #define RT5668_ZCD_PD (0x0 << 10) 1181d59fb285SBard Liao #define RT5668_ZCD_PU (0x1 << 10) 1182d59fb285SBard Liao #define RT5668_SV_DLY_MASK (0xf) 1183d59fb285SBard Liao #define RT5668_SV_DLY_SFT 0 1184d59fb285SBard Liao 1185d59fb285SBard Liao /* Soft volume and zero cross control 2 (0x00da) */ 1186d59fb285SBard Liao #define RT5668_ZCD_BST1_CBJ_MASK (0x1 << 7) 1187d59fb285SBard Liao #define RT5668_ZCD_BST1_CBJ_SFT 7 1188d59fb285SBard Liao #define RT5668_ZCD_BST1_CBJ_DIS (0x0 << 7) 1189d59fb285SBard Liao #define RT5668_ZCD_BST1_CBJ_EN (0x1 << 7) 1190d59fb285SBard Liao #define RT5668_ZCD_RECMIX_MASK (0x1) 1191d59fb285SBard Liao #define RT5668_ZCD_RECMIX_SFT 0 1192d59fb285SBard Liao #define RT5668_ZCD_RECMIX_DIS (0x0) 1193d59fb285SBard Liao #define RT5668_ZCD_RECMIX_EN (0x1) 1194d59fb285SBard Liao 1195d59fb285SBard Liao /* 4 Button Inline Command Control 2 (0x00e3) */ 1196d59fb285SBard Liao #define RT5668_4BTN_IL_MASK (0x1 << 15) 1197d59fb285SBard Liao #define RT5668_4BTN_IL_EN (0x1 << 15) 1198d59fb285SBard Liao #define RT5668_4BTN_IL_DIS (0x0 << 15) 1199d59fb285SBard Liao #define RT5668_4BTN_IL_RST_MASK (0x1 << 14) 1200d59fb285SBard Liao #define RT5668_4BTN_IL_NOR (0x1 << 14) 1201d59fb285SBard Liao #define RT5668_4BTN_IL_RST (0x0 << 14) 1202d59fb285SBard Liao 1203d59fb285SBard Liao /* Analog JD Control (0x00f0) */ 1204d59fb285SBard Liao #define RT5668_JDH_RS_MASK (0x1 << 4) 1205d59fb285SBard Liao #define RT5668_JDH_NO_PLUG (0x1 << 4) 1206d59fb285SBard Liao #define RT5668_JDH_PLUG (0x0 << 4) 1207d59fb285SBard Liao 1208d59fb285SBard Liao /* Chopper and Clock control for DAC (0x013a)*/ 1209d59fb285SBard Liao #define RT5668_CKXEN_DAC1_MASK (0x1 << 13) 1210d59fb285SBard Liao #define RT5668_CKXEN_DAC1_SFT 13 1211d59fb285SBard Liao #define RT5668_CKGEN_DAC1_MASK (0x1 << 12) 1212d59fb285SBard Liao #define RT5668_CKGEN_DAC1_SFT 12 1213d59fb285SBard Liao 1214d59fb285SBard Liao /* Chopper and Clock control for ADC (0x013b)*/ 1215d59fb285SBard Liao #define RT5668_CKXEN_ADC1_MASK (0x1 << 13) 1216d59fb285SBard Liao #define RT5668_CKXEN_ADC1_SFT 13 1217d59fb285SBard Liao #define RT5668_CKGEN_ADC1_MASK (0x1 << 12) 1218d59fb285SBard Liao #define RT5668_CKGEN_ADC1_SFT 12 1219d59fb285SBard Liao 1220d59fb285SBard Liao /* Volume test (0x013f)*/ 1221d59fb285SBard Liao #define RT5668_SEL_CLK_VOL_MASK (0x1 << 15) 1222d59fb285SBard Liao #define RT5668_SEL_CLK_VOL_EN (0x1 << 15) 1223d59fb285SBard Liao #define RT5668_SEL_CLK_VOL_DIS (0x0 << 15) 1224d59fb285SBard Liao 1225d59fb285SBard Liao /* Test Mode Control 1 (0x0145) */ 1226d59fb285SBard Liao #define RT5668_AD2DA_LB_MASK (0x1 << 10) 1227d59fb285SBard Liao #define RT5668_AD2DA_LB_SFT 10 1228d59fb285SBard Liao 1229d59fb285SBard Liao /* Stereo Noise Gate Control 1 (0x0160) */ 1230d59fb285SBard Liao #define RT5668_NG2_EN_MASK (0x1 << 15) 1231d59fb285SBard Liao #define RT5668_NG2_EN (0x1 << 15) 1232d59fb285SBard Liao #define RT5668_NG2_DIS (0x0 << 15) 1233d59fb285SBard Liao 1234d59fb285SBard Liao /* Stereo1 DAC Silence Detection Control (0x0190) */ 1235d59fb285SBard Liao #define RT5668_DEB_STO_DAC_MASK (0x7 << 4) 1236d59fb285SBard Liao #define RT5668_DEB_80_MS (0x0 << 4) 1237d59fb285SBard Liao 1238d59fb285SBard Liao /* SAR ADC Inline Command Control 1 (0x0210) */ 1239d59fb285SBard Liao #define RT5668_SAR_BUTT_DET_MASK (0x1 << 15) 1240d59fb285SBard Liao #define RT5668_SAR_BUTT_DET_EN (0x1 << 15) 1241d59fb285SBard Liao #define RT5668_SAR_BUTT_DET_DIS (0x0 << 15) 1242d59fb285SBard Liao #define RT5668_SAR_BUTDET_MODE_MASK (0x1 << 14) 1243d59fb285SBard Liao #define RT5668_SAR_BUTDET_POW_SAV (0x1 << 14) 1244d59fb285SBard Liao #define RT5668_SAR_BUTDET_POW_NORM (0x0 << 14) 1245d59fb285SBard Liao #define RT5668_SAR_BUTDET_RST_MASK (0x1 << 13) 1246d59fb285SBard Liao #define RT5668_SAR_BUTDET_RST_NORMAL (0x1 << 13) 1247d59fb285SBard Liao #define RT5668_SAR_BUTDET_RST (0x0 << 13) 1248d59fb285SBard Liao #define RT5668_SAR_POW_MASK (0x1 << 12) 1249d59fb285SBard Liao #define RT5668_SAR_POW_EN (0x1 << 12) 1250d59fb285SBard Liao #define RT5668_SAR_POW_DIS (0x0 << 12) 1251d59fb285SBard Liao #define RT5668_SAR_RST_MASK (0x1 << 11) 1252d59fb285SBard Liao #define RT5668_SAR_RST_NORMAL (0x1 << 11) 1253d59fb285SBard Liao #define RT5668_SAR_RST (0x0 << 11) 1254d59fb285SBard Liao #define RT5668_SAR_BYPASS_MASK (0x1 << 10) 1255d59fb285SBard Liao #define RT5668_SAR_BYPASS_EN (0x1 << 10) 1256d59fb285SBard Liao #define RT5668_SAR_BYPASS_DIS (0x0 << 10) 1257d59fb285SBard Liao #define RT5668_SAR_SEL_MB1_MASK (0x1 << 9) 1258d59fb285SBard Liao #define RT5668_SAR_SEL_MB1_SEL (0x1 << 9) 1259d59fb285SBard Liao #define RT5668_SAR_SEL_MB1_NOSEL (0x0 << 9) 1260d59fb285SBard Liao #define RT5668_SAR_SEL_MB2_MASK (0x1 << 8) 1261d59fb285SBard Liao #define RT5668_SAR_SEL_MB2_SEL (0x1 << 8) 1262d59fb285SBard Liao #define RT5668_SAR_SEL_MB2_NOSEL (0x0 << 8) 1263d59fb285SBard Liao #define RT5668_SAR_SEL_MODE_MASK (0x1 << 7) 1264d59fb285SBard Liao #define RT5668_SAR_SEL_MODE_CMP (0x1 << 7) 1265d59fb285SBard Liao #define RT5668_SAR_SEL_MODE_ADC (0x0 << 7) 1266d59fb285SBard Liao #define RT5668_SAR_SEL_MB1_MB2_MASK (0x1 << 5) 1267d59fb285SBard Liao #define RT5668_SAR_SEL_MB1_MB2_AUTO (0x1 << 5) 1268d59fb285SBard Liao #define RT5668_SAR_SEL_MB1_MB2_MANU (0x0 << 5) 1269d59fb285SBard Liao #define RT5668_SAR_SEL_SIGNAL_MASK (0x1 << 4) 1270d59fb285SBard Liao #define RT5668_SAR_SEL_SIGNAL_AUTO (0x1 << 4) 1271d59fb285SBard Liao #define RT5668_SAR_SEL_SIGNAL_MANU (0x0 << 4) 1272d59fb285SBard Liao 1273d59fb285SBard Liao /* SAR ADC Inline Command Control 13 (0x021c) */ 1274d59fb285SBard Liao #define RT5668_SAR_SOUR_MASK (0x3f) 1275d59fb285SBard Liao #define RT5668_SAR_SOUR_BTN (0x3f) 1276d59fb285SBard Liao #define RT5668_SAR_SOUR_TYPE (0x0) 1277d59fb285SBard Liao 1278d59fb285SBard Liao 1279d59fb285SBard Liao /* System Clock Source */ 1280d59fb285SBard Liao enum { 1281d59fb285SBard Liao RT5668_SCLK_S_MCLK, 1282d59fb285SBard Liao RT5668_SCLK_S_PLL1, 1283d59fb285SBard Liao RT5668_SCLK_S_PLL2, 1284d59fb285SBard Liao RT5668_SCLK_S_RCCLK, 1285d59fb285SBard Liao }; 1286d59fb285SBard Liao 1287d59fb285SBard Liao /* PLL Source */ 1288d59fb285SBard Liao enum { 1289d59fb285SBard Liao RT5668_PLL1_S_MCLK, 1290d59fb285SBard Liao RT5668_PLL1_S_BCLK1, 1291d59fb285SBard Liao RT5668_PLL1_S_RCCLK, 1292d59fb285SBard Liao }; 1293d59fb285SBard Liao 1294d59fb285SBard Liao enum { 1295d59fb285SBard Liao RT5668_AIF1, 1296d59fb285SBard Liao RT5668_AIF2, 1297d59fb285SBard Liao RT5668_AIFS 1298d59fb285SBard Liao }; 1299d59fb285SBard Liao 1300d59fb285SBard Liao /* filter mask */ 1301d59fb285SBard Liao enum { 1302d59fb285SBard Liao RT5668_DA_STEREO1_FILTER = 0x1, 1303d59fb285SBard Liao RT5668_AD_STEREO1_FILTER = (0x1 << 1), 1304d59fb285SBard Liao }; 1305d59fb285SBard Liao 1306d59fb285SBard Liao enum { 1307d59fb285SBard Liao RT5668_CLK_SEL_SYS, 1308d59fb285SBard Liao RT5668_CLK_SEL_I2S1_ASRC, 1309d59fb285SBard Liao RT5668_CLK_SEL_I2S2_ASRC, 1310d59fb285SBard Liao }; 1311d59fb285SBard Liao 1312d59fb285SBard Liao int rt5668_sel_asrc_clk_src(struct snd_soc_component *component, 1313d59fb285SBard Liao unsigned int filter_mask, unsigned int clk_src); 1314d59fb285SBard Liao 1315d59fb285SBard Liao #endif /* __RT5668_H__ */ 1316