1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 25e8351deSBard Liao /* 35e8351deSBard Liao * rt5670.h -- RT5670 ALSA SoC audio driver 45e8351deSBard Liao * 55e8351deSBard Liao * Copyright 2014 Realtek Microelectronics 65e8351deSBard Liao * Author: Bard Liao <bardliao@realtek.com> 75e8351deSBard Liao */ 85e8351deSBard Liao 95e8351deSBard Liao #ifndef __RT5670_H__ 105e8351deSBard Liao #define __RT5670_H__ 115e8351deSBard Liao 125e8351deSBard Liao /* Info */ 135e8351deSBard Liao #define RT5670_RESET 0x00 145e8351deSBard Liao #define RT5670_VENDOR_ID 0xfd 155e8351deSBard Liao #define RT5670_VENDOR_ID1 0xfe 165e8351deSBard Liao #define RT5670_VENDOR_ID2 0xff 175e8351deSBard Liao /* I/O - Output */ 185e8351deSBard Liao #define RT5670_HP_VOL 0x02 195e8351deSBard Liao #define RT5670_LOUT1 0x03 205e8351deSBard Liao /* I/O - Input */ 215e8351deSBard Liao #define RT5670_CJ_CTRL1 0x0a 225e8351deSBard Liao #define RT5670_CJ_CTRL2 0x0b 235e8351deSBard Liao #define RT5670_CJ_CTRL3 0x0c 245e8351deSBard Liao #define RT5670_IN2 0x0e 255e8351deSBard Liao #define RT5670_INL1_INR1_VOL 0x0f 265e8351deSBard Liao /* I/O - ADC/DAC/DMIC */ 275e8351deSBard Liao #define RT5670_DAC1_DIG_VOL 0x19 285e8351deSBard Liao #define RT5670_DAC2_DIG_VOL 0x1a 295e8351deSBard Liao #define RT5670_DAC_CTRL 0x1b 305e8351deSBard Liao #define RT5670_STO1_ADC_DIG_VOL 0x1c 315e8351deSBard Liao #define RT5670_MONO_ADC_DIG_VOL 0x1d 325e8351deSBard Liao #define RT5670_ADC_BST_VOL1 0x1e 335e8351deSBard Liao #define RT5670_STO2_ADC_DIG_VOL 0x1f 345e8351deSBard Liao /* Mixer - D-D */ 355e8351deSBard Liao #define RT5670_ADC_BST_VOL2 0x20 365e8351deSBard Liao #define RT5670_STO2_ADC_MIXER 0x26 375e8351deSBard Liao #define RT5670_STO1_ADC_MIXER 0x27 385e8351deSBard Liao #define RT5670_MONO_ADC_MIXER 0x28 395e8351deSBard Liao #define RT5670_AD_DA_MIXER 0x29 405e8351deSBard Liao #define RT5670_STO_DAC_MIXER 0x2a 415e8351deSBard Liao #define RT5670_DD_MIXER 0x2b 425e8351deSBard Liao #define RT5670_DIG_MIXER 0x2c 435e8351deSBard Liao #define RT5670_DSP_PATH1 0x2d 445e8351deSBard Liao #define RT5670_DSP_PATH2 0x2e 455e8351deSBard Liao #define RT5670_DIG_INF1_DATA 0x2f 465e8351deSBard Liao #define RT5670_DIG_INF2_DATA 0x30 475e8351deSBard Liao /* Mixer - PDM */ 485e8351deSBard Liao #define RT5670_PDM_OUT_CTRL 0x31 495e8351deSBard Liao #define RT5670_PDM_DATA_CTRL1 0x32 505e8351deSBard Liao #define RT5670_PDM1_DATA_CTRL2 0x33 515e8351deSBard Liao #define RT5670_PDM1_DATA_CTRL3 0x34 525e8351deSBard Liao #define RT5670_PDM1_DATA_CTRL4 0x35 535e8351deSBard Liao #define RT5670_PDM2_DATA_CTRL2 0x36 545e8351deSBard Liao #define RT5670_PDM2_DATA_CTRL3 0x37 555e8351deSBard Liao #define RT5670_PDM2_DATA_CTRL4 0x38 565e8351deSBard Liao /* Mixer - ADC */ 575e8351deSBard Liao #define RT5670_REC_L1_MIXER 0x3b 585e8351deSBard Liao #define RT5670_REC_L2_MIXER 0x3c 595e8351deSBard Liao #define RT5670_REC_R1_MIXER 0x3d 605e8351deSBard Liao #define RT5670_REC_R2_MIXER 0x3e 615e8351deSBard Liao /* Mixer - DAC */ 625e8351deSBard Liao #define RT5670_HPO_MIXER 0x45 635e8351deSBard Liao #define RT5670_MONO_MIXER 0x4c 645e8351deSBard Liao #define RT5670_OUT_L1_MIXER 0x4f 655e8351deSBard Liao #define RT5670_OUT_R1_MIXER 0x52 665e8351deSBard Liao #define RT5670_LOUT_MIXER 0x53 675e8351deSBard Liao /* Power */ 685e8351deSBard Liao #define RT5670_PWR_DIG1 0x61 695e8351deSBard Liao #define RT5670_PWR_DIG2 0x62 705e8351deSBard Liao #define RT5670_PWR_ANLG1 0x63 715e8351deSBard Liao #define RT5670_PWR_ANLG2 0x64 725e8351deSBard Liao #define RT5670_PWR_MIXER 0x65 735e8351deSBard Liao #define RT5670_PWR_VOL 0x66 745e8351deSBard Liao /* Private Register Control */ 755e8351deSBard Liao #define RT5670_PRIV_INDEX 0x6a 765e8351deSBard Liao #define RT5670_PRIV_DATA 0x6c 775e8351deSBard Liao /* Format - ADC/DAC */ 785e8351deSBard Liao #define RT5670_I2S4_SDP 0x6f 795e8351deSBard Liao #define RT5670_I2S1_SDP 0x70 805e8351deSBard Liao #define RT5670_I2S2_SDP 0x71 815e8351deSBard Liao #define RT5670_I2S3_SDP 0x72 825e8351deSBard Liao #define RT5670_ADDA_CLK1 0x73 835e8351deSBard Liao #define RT5670_ADDA_CLK2 0x74 845e8351deSBard Liao #define RT5670_DMIC_CTRL1 0x75 855e8351deSBard Liao #define RT5670_DMIC_CTRL2 0x76 865e8351deSBard Liao /* Format - TDM Control */ 875e8351deSBard Liao #define RT5670_TDM_CTRL_1 0x77 885e8351deSBard Liao #define RT5670_TDM_CTRL_2 0x78 895e8351deSBard Liao #define RT5670_TDM_CTRL_3 0x79 905e8351deSBard Liao 915e8351deSBard Liao /* Function - Analog */ 925e8351deSBard Liao #define RT5670_DSP_CLK 0x7f 935e8351deSBard Liao #define RT5670_GLB_CLK 0x80 945e8351deSBard Liao #define RT5670_PLL_CTRL1 0x81 955e8351deSBard Liao #define RT5670_PLL_CTRL2 0x82 965e8351deSBard Liao #define RT5670_ASRC_1 0x83 975e8351deSBard Liao #define RT5670_ASRC_2 0x84 985e8351deSBard Liao #define RT5670_ASRC_3 0x85 995e8351deSBard Liao #define RT5670_ASRC_4 0x86 1005e8351deSBard Liao #define RT5670_ASRC_5 0x87 1015e8351deSBard Liao #define RT5670_ASRC_7 0x89 1025e8351deSBard Liao #define RT5670_ASRC_8 0x8a 1035e8351deSBard Liao #define RT5670_ASRC_9 0x8b 1045e8351deSBard Liao #define RT5670_ASRC_10 0x8c 1055e8351deSBard Liao #define RT5670_ASRC_11 0x8d 1065e8351deSBard Liao #define RT5670_DEPOP_M1 0x8e 1075e8351deSBard Liao #define RT5670_DEPOP_M2 0x8f 1085e8351deSBard Liao #define RT5670_DEPOP_M3 0x90 1095e8351deSBard Liao #define RT5670_CHARGE_PUMP 0x91 1105e8351deSBard Liao #define RT5670_MICBIAS 0x93 1115e8351deSBard Liao #define RT5670_A_JD_CTRL1 0x94 1125e8351deSBard Liao #define RT5670_A_JD_CTRL2 0x95 1135e8351deSBard Liao #define RT5670_ASRC_12 0x97 1145e8351deSBard Liao #define RT5670_ASRC_13 0x98 1155e8351deSBard Liao #define RT5670_ASRC_14 0x99 1165e8351deSBard Liao #define RT5670_VAD_CTRL1 0x9a 1175e8351deSBard Liao #define RT5670_VAD_CTRL2 0x9b 1185e8351deSBard Liao #define RT5670_VAD_CTRL3 0x9c 1195e8351deSBard Liao #define RT5670_VAD_CTRL4 0x9d 1205e8351deSBard Liao #define RT5670_VAD_CTRL5 0x9e 1215e8351deSBard Liao /* Function - Digital */ 1225e8351deSBard Liao #define RT5670_ADC_EQ_CTRL1 0xae 1235e8351deSBard Liao #define RT5670_ADC_EQ_CTRL2 0xaf 1245e8351deSBard Liao #define RT5670_EQ_CTRL1 0xb0 1255e8351deSBard Liao #define RT5670_EQ_CTRL2 0xb1 1265e8351deSBard Liao #define RT5670_ALC_DRC_CTRL1 0xb2 1275e8351deSBard Liao #define RT5670_ALC_DRC_CTRL2 0xb3 1285e8351deSBard Liao #define RT5670_ALC_CTRL_1 0xb4 1295e8351deSBard Liao #define RT5670_ALC_CTRL_2 0xb5 1305e8351deSBard Liao #define RT5670_ALC_CTRL_3 0xb6 1315e8351deSBard Liao #define RT5670_ALC_CTRL_4 0xb7 1325e8351deSBard Liao #define RT5670_JD_CTRL 0xbb 1335e8351deSBard Liao #define RT5670_IRQ_CTRL1 0xbd 1345e8351deSBard Liao #define RT5670_IRQ_CTRL2 0xbe 1355e8351deSBard Liao #define RT5670_INT_IRQ_ST 0xbf 1365e8351deSBard Liao #define RT5670_GPIO_CTRL1 0xc0 1375e8351deSBard Liao #define RT5670_GPIO_CTRL2 0xc1 1385e8351deSBard Liao #define RT5670_GPIO_CTRL3 0xc2 1395e8351deSBard Liao #define RT5670_SCRABBLE_FUN 0xcd 1405e8351deSBard Liao #define RT5670_SCRABBLE_CTRL 0xce 1415e8351deSBard Liao #define RT5670_BASE_BACK 0xcf 1425e8351deSBard Liao #define RT5670_MP3_PLUS1 0xd0 1435e8351deSBard Liao #define RT5670_MP3_PLUS2 0xd1 1445e8351deSBard Liao #define RT5670_ADJ_HPF1 0xd3 1455e8351deSBard Liao #define RT5670_ADJ_HPF2 0xd4 1465e8351deSBard Liao #define RT5670_HP_CALIB_AMP_DET 0xd6 1475e8351deSBard Liao #define RT5670_SV_ZCD1 0xd9 1485e8351deSBard Liao #define RT5670_SV_ZCD2 0xda 1495e8351deSBard Liao #define RT5670_IL_CMD 0xdb 1505e8351deSBard Liao #define RT5670_IL_CMD2 0xdc 1515e8351deSBard Liao #define RT5670_IL_CMD3 0xdd 1525e8351deSBard Liao #define RT5670_DRC_HL_CTRL1 0xe6 1535e8351deSBard Liao #define RT5670_DRC_HL_CTRL2 0xe7 1545e8351deSBard Liao #define RT5670_ADC_MONO_HP_CTRL1 0xec 1555e8351deSBard Liao #define RT5670_ADC_MONO_HP_CTRL2 0xed 1565e8351deSBard Liao #define RT5670_ADC_STO2_HP_CTRL1 0xee 1575e8351deSBard Liao #define RT5670_ADC_STO2_HP_CTRL2 0xef 1585e8351deSBard Liao #define RT5670_JD_CTRL3 0xf8 1595e8351deSBard Liao #define RT5670_JD_CTRL4 0xf9 1605e8351deSBard Liao /* General Control */ 1615e8351deSBard Liao #define RT5670_DIG_MISC 0xfa 1625e8351deSBard Liao #define RT5670_GEN_CTRL2 0xfb 1635e8351deSBard Liao #define RT5670_GEN_CTRL3 0xfc 1645e8351deSBard Liao 1655e8351deSBard Liao 1665e8351deSBard Liao /* Index of Codec Private Register definition */ 1675e8351deSBard Liao #define RT5670_DIG_VOL 0x00 1685e8351deSBard Liao #define RT5670_PR_ALC_CTRL_1 0x01 1695e8351deSBard Liao #define RT5670_PR_ALC_CTRL_2 0x02 1705e8351deSBard Liao #define RT5670_PR_ALC_CTRL_3 0x03 1715e8351deSBard Liao #define RT5670_PR_ALC_CTRL_4 0x04 1725e8351deSBard Liao #define RT5670_PR_ALC_CTRL_5 0x05 1735e8351deSBard Liao #define RT5670_PR_ALC_CTRL_6 0x06 1745e8351deSBard Liao #define RT5670_BIAS_CUR1 0x12 1755e8351deSBard Liao #define RT5670_BIAS_CUR3 0x14 1765e8351deSBard Liao #define RT5670_CLSD_INT_REG1 0x1c 1775e8351deSBard Liao #define RT5670_MAMP_INT_REG2 0x37 1785e8351deSBard Liao #define RT5670_CHOP_DAC_ADC 0x3d 1795e8351deSBard Liao #define RT5670_MIXER_INT_REG 0x3f 1805e8351deSBard Liao #define RT5670_3D_SPK 0x63 1815e8351deSBard Liao #define RT5670_WND_1 0x6c 1825e8351deSBard Liao #define RT5670_WND_2 0x6d 1835e8351deSBard Liao #define RT5670_WND_3 0x6e 1845e8351deSBard Liao #define RT5670_WND_4 0x6f 1855e8351deSBard Liao #define RT5670_WND_5 0x70 1865e8351deSBard Liao #define RT5670_WND_8 0x73 1875e8351deSBard Liao #define RT5670_DIP_SPK_INF 0x75 1885e8351deSBard Liao #define RT5670_HP_DCC_INT1 0x77 1895e8351deSBard Liao #define RT5670_EQ_BW_LOP 0xa0 1905e8351deSBard Liao #define RT5670_EQ_GN_LOP 0xa1 1915e8351deSBard Liao #define RT5670_EQ_FC_BP1 0xa2 1925e8351deSBard Liao #define RT5670_EQ_BW_BP1 0xa3 1935e8351deSBard Liao #define RT5670_EQ_GN_BP1 0xa4 1945e8351deSBard Liao #define RT5670_EQ_FC_BP2 0xa5 1955e8351deSBard Liao #define RT5670_EQ_BW_BP2 0xa6 1965e8351deSBard Liao #define RT5670_EQ_GN_BP2 0xa7 1975e8351deSBard Liao #define RT5670_EQ_FC_BP3 0xa8 1985e8351deSBard Liao #define RT5670_EQ_BW_BP3 0xa9 1995e8351deSBard Liao #define RT5670_EQ_GN_BP3 0xaa 2005e8351deSBard Liao #define RT5670_EQ_FC_BP4 0xab 2015e8351deSBard Liao #define RT5670_EQ_BW_BP4 0xac 2025e8351deSBard Liao #define RT5670_EQ_GN_BP4 0xad 2035e8351deSBard Liao #define RT5670_EQ_FC_HIP1 0xae 2045e8351deSBard Liao #define RT5670_EQ_GN_HIP1 0xaf 2055e8351deSBard Liao #define RT5670_EQ_FC_HIP2 0xb0 2065e8351deSBard Liao #define RT5670_EQ_BW_HIP2 0xb1 2075e8351deSBard Liao #define RT5670_EQ_GN_HIP2 0xb2 2085e8351deSBard Liao #define RT5670_EQ_PRE_VOL 0xb3 2095e8351deSBard Liao #define RT5670_EQ_PST_VOL 0xb4 2105e8351deSBard Liao 2115e8351deSBard Liao 2125e8351deSBard Liao /* global definition */ 2135e8351deSBard Liao #define RT5670_L_MUTE (0x1 << 15) 2145e8351deSBard Liao #define RT5670_L_MUTE_SFT 15 2155e8351deSBard Liao #define RT5670_R_MUTE (0x1 << 7) 2165e8351deSBard Liao #define RT5670_R_MUTE_SFT 7 2175e8351deSBard Liao #define RT5670_L_VOL_MASK (0x3f << 8) 2185e8351deSBard Liao #define RT5670_L_VOL_SFT 8 2195e8351deSBard Liao #define RT5670_R_VOL_MASK (0x3f) 2205e8351deSBard Liao #define RT5670_R_VOL_SFT 0 2215e8351deSBard Liao 2220cf18632SBard Liao /* SW Reset & Device ID (0x00) */ 2230cf18632SBard Liao #define RT5670_ID_MASK (0x3 << 1) 2240cf18632SBard Liao #define RT5670_ID_5670 (0x0 << 1) 2250cf18632SBard Liao #define RT5670_ID_5672 (0x1 << 1) 2260cf18632SBard Liao #define RT5670_ID_5671 (0x2 << 1) 2270cf18632SBard Liao 2285e8351deSBard Liao /* Combo Jack Control 1 (0x0a) */ 2295e8351deSBard Liao #define RT5670_CBJ_BST1_MASK (0xf << 12) 2305e8351deSBard Liao #define RT5670_CBJ_BST1_SFT (12) 2315e8351deSBard Liao #define RT5670_CBJ_JD_HP_EN (0x1 << 9) 2325e8351deSBard Liao #define RT5670_CBJ_JD_MIC_EN (0x1 << 8) 2335e8351deSBard Liao #define RT5670_CBJ_BST1_EN (0x1 << 2) 2345e8351deSBard Liao 2355e8351deSBard Liao /* Combo Jack Control 1 (0x0b) */ 2365e8351deSBard Liao #define RT5670_CBJ_MN_JD (0x1 << 12) 2375e8351deSBard Liao #define RT5670_CAPLESS_EN (0x1 << 11) 2385e8351deSBard Liao #define RT5670_CBJ_DET_MODE (0x1 << 7) 2395e8351deSBard Liao 2405e8351deSBard Liao /* IN2 Control (0x0e) */ 2415e8351deSBard Liao #define RT5670_BST_MASK1 (0xf<<12) 2425e8351deSBard Liao #define RT5670_BST_SFT1 12 2435e8351deSBard Liao #define RT5670_BST_MASK2 (0xf<<8) 2445e8351deSBard Liao #define RT5670_BST_SFT2 8 2455e8351deSBard Liao #define RT5670_IN_DF1 (0x1 << 7) 2465e8351deSBard Liao #define RT5670_IN_SFT1 7 2475e8351deSBard Liao #define RT5670_IN_DF2 (0x1 << 6) 2485e8351deSBard Liao #define RT5670_IN_SFT2 6 2495e8351deSBard Liao 2505e8351deSBard Liao /* INL and INR Volume Control (0x0f) */ 2515e8351deSBard Liao #define RT5670_INL_SEL_MASK (0x1 << 15) 2525e8351deSBard Liao #define RT5670_INL_SEL_SFT 15 2535e8351deSBard Liao #define RT5670_INL_SEL_IN4P (0x0 << 15) 2545e8351deSBard Liao #define RT5670_INL_SEL_MONOP (0x1 << 15) 2555e8351deSBard Liao #define RT5670_INL_VOL_MASK (0x1f << 8) 2565e8351deSBard Liao #define RT5670_INL_VOL_SFT 8 2575e8351deSBard Liao #define RT5670_INR_SEL_MASK (0x1 << 7) 2585e8351deSBard Liao #define RT5670_INR_SEL_SFT 7 2595e8351deSBard Liao #define RT5670_INR_SEL_IN4N (0x0 << 7) 2605e8351deSBard Liao #define RT5670_INR_SEL_MONON (0x1 << 7) 2615e8351deSBard Liao #define RT5670_INR_VOL_MASK (0x1f) 2625e8351deSBard Liao #define RT5670_INR_VOL_SFT 0 2635e8351deSBard Liao 2645e8351deSBard Liao /* Sidetone Control (0x18) */ 2655e8351deSBard Liao #define RT5670_ST_SEL_MASK (0x7 << 9) 2665e8351deSBard Liao #define RT5670_ST_SEL_SFT 9 2675e8351deSBard Liao #define RT5670_M_ST_DACR2 (0x1 << 8) 2685e8351deSBard Liao #define RT5670_M_ST_DACR2_SFT 8 2695e8351deSBard Liao #define RT5670_M_ST_DACL2 (0x1 << 7) 2705e8351deSBard Liao #define RT5670_M_ST_DACL2_SFT 7 2715e8351deSBard Liao #define RT5670_ST_EN (0x1 << 6) 2725e8351deSBard Liao #define RT5670_ST_EN_SFT 6 2735e8351deSBard Liao 2745e8351deSBard Liao /* DAC1 Digital Volume (0x19) */ 2755e8351deSBard Liao #define RT5670_DAC_L1_VOL_MASK (0xff << 8) 2765e8351deSBard Liao #define RT5670_DAC_L1_VOL_SFT 8 2775e8351deSBard Liao #define RT5670_DAC_R1_VOL_MASK (0xff) 2785e8351deSBard Liao #define RT5670_DAC_R1_VOL_SFT 0 2795e8351deSBard Liao 2805e8351deSBard Liao /* DAC2 Digital Volume (0x1a) */ 2815e8351deSBard Liao #define RT5670_DAC_L2_VOL_MASK (0xff << 8) 2825e8351deSBard Liao #define RT5670_DAC_L2_VOL_SFT 8 2835e8351deSBard Liao #define RT5670_DAC_R2_VOL_MASK (0xff) 2845e8351deSBard Liao #define RT5670_DAC_R2_VOL_SFT 0 2855e8351deSBard Liao 2865e8351deSBard Liao /* DAC2 Control (0x1b) */ 2875e8351deSBard Liao #define RT5670_M_DAC_L2_VOL (0x1 << 13) 2885e8351deSBard Liao #define RT5670_M_DAC_L2_VOL_SFT 13 2895e8351deSBard Liao #define RT5670_M_DAC_R2_VOL (0x1 << 12) 2905e8351deSBard Liao #define RT5670_M_DAC_R2_VOL_SFT 12 2915e8351deSBard Liao #define RT5670_DAC2_L_SEL_MASK (0x7 << 4) 2925e8351deSBard Liao #define RT5670_DAC2_L_SEL_SFT 4 2935e8351deSBard Liao #define RT5670_DAC2_R_SEL_MASK (0x7 << 0) 2945e8351deSBard Liao #define RT5670_DAC2_R_SEL_SFT 0 2955e8351deSBard Liao 2965e8351deSBard Liao /* ADC Digital Volume Control (0x1c) */ 2975e8351deSBard Liao #define RT5670_ADC_L_VOL_MASK (0x7f << 8) 2985e8351deSBard Liao #define RT5670_ADC_L_VOL_SFT 8 2995e8351deSBard Liao #define RT5670_ADC_R_VOL_MASK (0x7f) 3005e8351deSBard Liao #define RT5670_ADC_R_VOL_SFT 0 3015e8351deSBard Liao 3025e8351deSBard Liao /* Mono ADC Digital Volume Control (0x1d) */ 3035e8351deSBard Liao #define RT5670_MONO_ADC_L_VOL_MASK (0x7f << 8) 3045e8351deSBard Liao #define RT5670_MONO_ADC_L_VOL_SFT 8 3055e8351deSBard Liao #define RT5670_MONO_ADC_R_VOL_MASK (0x7f) 3065e8351deSBard Liao #define RT5670_MONO_ADC_R_VOL_SFT 0 3075e8351deSBard Liao 3085e8351deSBard Liao /* ADC Boost Volume Control (0x1e) */ 3095e8351deSBard Liao #define RT5670_STO1_ADC_L_BST_MASK (0x3 << 14) 3105e8351deSBard Liao #define RT5670_STO1_ADC_L_BST_SFT 14 3115e8351deSBard Liao #define RT5670_STO1_ADC_R_BST_MASK (0x3 << 12) 3125e8351deSBard Liao #define RT5670_STO1_ADC_R_BST_SFT 12 3135e8351deSBard Liao #define RT5670_STO1_ADC_COMP_MASK (0x3 << 10) 3145e8351deSBard Liao #define RT5670_STO1_ADC_COMP_SFT 10 3155e8351deSBard Liao #define RT5670_STO2_ADC_L_BST_MASK (0x3 << 8) 3165e8351deSBard Liao #define RT5670_STO2_ADC_L_BST_SFT 8 3175e8351deSBard Liao #define RT5670_STO2_ADC_R_BST_MASK (0x3 << 6) 3185e8351deSBard Liao #define RT5670_STO2_ADC_R_BST_SFT 6 3195e8351deSBard Liao #define RT5670_STO2_ADC_COMP_MASK (0x3 << 4) 3205e8351deSBard Liao #define RT5670_STO2_ADC_COMP_SFT 4 3215e8351deSBard Liao 3225e8351deSBard Liao /* Stereo2 ADC Mixer Control (0x26) */ 3235e8351deSBard Liao #define RT5670_STO2_ADC_SRC_MASK (0x1 << 15) 3245e8351deSBard Liao #define RT5670_STO2_ADC_SRC_SFT 15 3255e8351deSBard Liao 3265e8351deSBard Liao /* Stereo ADC Mixer Control (0x26 0x27) */ 3275e8351deSBard Liao #define RT5670_M_ADC_L1 (0x1 << 14) 3285e8351deSBard Liao #define RT5670_M_ADC_L1_SFT 14 3295e8351deSBard Liao #define RT5670_M_ADC_L2 (0x1 << 13) 3305e8351deSBard Liao #define RT5670_M_ADC_L2_SFT 13 3315e8351deSBard Liao #define RT5670_ADC_1_SRC_MASK (0x1 << 12) 3325e8351deSBard Liao #define RT5670_ADC_1_SRC_SFT 12 3335e8351deSBard Liao #define RT5670_ADC_1_SRC_ADC (0x1 << 12) 3345e8351deSBard Liao #define RT5670_ADC_1_SRC_DACMIX (0x0 << 12) 3355e8351deSBard Liao #define RT5670_ADC_2_SRC_MASK (0x1 << 11) 3365e8351deSBard Liao #define RT5670_ADC_2_SRC_SFT 11 3375e8351deSBard Liao #define RT5670_ADC_SRC_MASK (0x1 << 10) 3385e8351deSBard Liao #define RT5670_ADC_SRC_SFT 10 3395e8351deSBard Liao #define RT5670_DMIC_SRC_MASK (0x3 << 8) 3405e8351deSBard Liao #define RT5670_DMIC_SRC_SFT 8 3415e8351deSBard Liao #define RT5670_M_ADC_R1 (0x1 << 6) 3425e8351deSBard Liao #define RT5670_M_ADC_R1_SFT 6 3435e8351deSBard Liao #define RT5670_M_ADC_R2 (0x1 << 5) 3445e8351deSBard Liao #define RT5670_M_ADC_R2_SFT 5 3455e8351deSBard Liao #define RT5670_DMIC3_SRC_MASK (0x1 << 1) 3465e8351deSBard Liao #define RT5670_DMIC3_SRC_SFT 0 3475e8351deSBard Liao 3485e8351deSBard Liao /* Mono ADC Mixer Control (0x28) */ 3495e8351deSBard Liao #define RT5670_M_MONO_ADC_L1 (0x1 << 14) 3505e8351deSBard Liao #define RT5670_M_MONO_ADC_L1_SFT 14 3515e8351deSBard Liao #define RT5670_M_MONO_ADC_L2 (0x1 << 13) 3525e8351deSBard Liao #define RT5670_M_MONO_ADC_L2_SFT 13 3535e8351deSBard Liao #define RT5670_MONO_ADC_L1_SRC_MASK (0x1 << 12) 3545e8351deSBard Liao #define RT5670_MONO_ADC_L1_SRC_SFT 12 3555e8351deSBard Liao #define RT5670_MONO_ADC_L1_SRC_DACMIXL (0x0 << 12) 3565e8351deSBard Liao #define RT5670_MONO_ADC_L1_SRC_ADCL (0x1 << 12) 3575e8351deSBard Liao #define RT5670_MONO_ADC_L2_SRC_MASK (0x1 << 11) 3585e8351deSBard Liao #define RT5670_MONO_ADC_L2_SRC_SFT 11 3595e8351deSBard Liao #define RT5670_MONO_ADC_L_SRC_MASK (0x1 << 10) 3605e8351deSBard Liao #define RT5670_MONO_ADC_L_SRC_SFT 10 3615e8351deSBard Liao #define RT5670_MONO_DMIC_L_SRC_MASK (0x3 << 8) 3625e8351deSBard Liao #define RT5670_MONO_DMIC_L_SRC_SFT 8 3635e8351deSBard Liao #define RT5670_M_MONO_ADC_R1 (0x1 << 6) 3645e8351deSBard Liao #define RT5670_M_MONO_ADC_R1_SFT 6 3655e8351deSBard Liao #define RT5670_M_MONO_ADC_R2 (0x1 << 5) 3665e8351deSBard Liao #define RT5670_M_MONO_ADC_R2_SFT 5 3675e8351deSBard Liao #define RT5670_MONO_ADC_R1_SRC_MASK (0x1 << 4) 3685e8351deSBard Liao #define RT5670_MONO_ADC_R1_SRC_SFT 4 3695e8351deSBard Liao #define RT5670_MONO_ADC_R1_SRC_ADCR (0x1 << 4) 3705e8351deSBard Liao #define RT5670_MONO_ADC_R1_SRC_DACMIXR (0x0 << 4) 3715e8351deSBard Liao #define RT5670_MONO_ADC_R2_SRC_MASK (0x1 << 3) 3725e8351deSBard Liao #define RT5670_MONO_ADC_R2_SRC_SFT 3 3735e8351deSBard Liao #define RT5670_MONO_DMIC_R_SRC_MASK (0x3) 3745e8351deSBard Liao #define RT5670_MONO_DMIC_R_SRC_SFT 0 3755e8351deSBard Liao 3765e8351deSBard Liao /* ADC Mixer to DAC Mixer Control (0x29) */ 3775e8351deSBard Liao #define RT5670_M_ADCMIX_L (0x1 << 15) 3785e8351deSBard Liao #define RT5670_M_ADCMIX_L_SFT 15 3795e8351deSBard Liao #define RT5670_M_DAC1_L (0x1 << 14) 3805e8351deSBard Liao #define RT5670_M_DAC1_L_SFT 14 3815e8351deSBard Liao #define RT5670_DAC1_R_SEL_MASK (0x3 << 10) 3825e8351deSBard Liao #define RT5670_DAC1_R_SEL_SFT 10 3835e8351deSBard Liao #define RT5670_DAC1_R_SEL_IF1 (0x0 << 10) 3845e8351deSBard Liao #define RT5670_DAC1_R_SEL_IF2 (0x1 << 10) 3855e8351deSBard Liao #define RT5670_DAC1_R_SEL_IF3 (0x2 << 10) 3865e8351deSBard Liao #define RT5670_DAC1_R_SEL_IF4 (0x3 << 10) 3875e8351deSBard Liao #define RT5670_DAC1_L_SEL_MASK (0x3 << 8) 3885e8351deSBard Liao #define RT5670_DAC1_L_SEL_SFT 8 3895e8351deSBard Liao #define RT5670_DAC1_L_SEL_IF1 (0x0 << 8) 3905e8351deSBard Liao #define RT5670_DAC1_L_SEL_IF2 (0x1 << 8) 3915e8351deSBard Liao #define RT5670_DAC1_L_SEL_IF3 (0x2 << 8) 3925e8351deSBard Liao #define RT5670_DAC1_L_SEL_IF4 (0x3 << 8) 3935e8351deSBard Liao #define RT5670_M_ADCMIX_R (0x1 << 7) 3945e8351deSBard Liao #define RT5670_M_ADCMIX_R_SFT 7 3955e8351deSBard Liao #define RT5670_M_DAC1_R (0x1 << 6) 3965e8351deSBard Liao #define RT5670_M_DAC1_R_SFT 6 3975e8351deSBard Liao 3985e8351deSBard Liao /* Stereo DAC Mixer Control (0x2a) */ 3995e8351deSBard Liao #define RT5670_M_DAC_L1 (0x1 << 14) 4005e8351deSBard Liao #define RT5670_M_DAC_L1_SFT 14 4015e8351deSBard Liao #define RT5670_DAC_L1_STO_L_VOL_MASK (0x1 << 13) 4025e8351deSBard Liao #define RT5670_DAC_L1_STO_L_VOL_SFT 13 4035e8351deSBard Liao #define RT5670_M_DAC_L2 (0x1 << 12) 4045e8351deSBard Liao #define RT5670_M_DAC_L2_SFT 12 4055e8351deSBard Liao #define RT5670_DAC_L2_STO_L_VOL_MASK (0x1 << 11) 4065e8351deSBard Liao #define RT5670_DAC_L2_STO_L_VOL_SFT 11 4075e8351deSBard Liao #define RT5670_M_DAC_R1_STO_L (0x1 << 9) 4085e8351deSBard Liao #define RT5670_M_DAC_R1_STO_L_SFT 9 4095e8351deSBard Liao #define RT5670_DAC_R1_STO_L_VOL_MASK (0x1 << 8) 4105e8351deSBard Liao #define RT5670_DAC_R1_STO_L_VOL_SFT 8 4115e8351deSBard Liao #define RT5670_M_DAC_R1 (0x1 << 6) 4125e8351deSBard Liao #define RT5670_M_DAC_R1_SFT 6 4135e8351deSBard Liao #define RT5670_DAC_R1_STO_R_VOL_MASK (0x1 << 5) 4145e8351deSBard Liao #define RT5670_DAC_R1_STO_R_VOL_SFT 5 4155e8351deSBard Liao #define RT5670_M_DAC_R2 (0x1 << 4) 4165e8351deSBard Liao #define RT5670_M_DAC_R2_SFT 4 4175e8351deSBard Liao #define RT5670_DAC_R2_STO_R_VOL_MASK (0x1 << 3) 4185e8351deSBard Liao #define RT5670_DAC_R2_STO_R_VOL_SFT 3 4195e8351deSBard Liao #define RT5670_M_DAC_L1_STO_R (0x1 << 1) 4205e8351deSBard Liao #define RT5670_M_DAC_L1_STO_R_SFT 1 4215e8351deSBard Liao #define RT5670_DAC_L1_STO_R_VOL_MASK (0x1) 4225e8351deSBard Liao #define RT5670_DAC_L1_STO_R_VOL_SFT 0 4235e8351deSBard Liao 4245e8351deSBard Liao /* Mono DAC Mixer Control (0x2b) */ 4255e8351deSBard Liao #define RT5670_M_DAC_L1_MONO_L (0x1 << 14) 4265e8351deSBard Liao #define RT5670_M_DAC_L1_MONO_L_SFT 14 4275e8351deSBard Liao #define RT5670_DAC_L1_MONO_L_VOL_MASK (0x1 << 13) 4285e8351deSBard Liao #define RT5670_DAC_L1_MONO_L_VOL_SFT 13 4295e8351deSBard Liao #define RT5670_M_DAC_L2_MONO_L (0x1 << 12) 4305e8351deSBard Liao #define RT5670_M_DAC_L2_MONO_L_SFT 12 4315e8351deSBard Liao #define RT5670_DAC_L2_MONO_L_VOL_MASK (0x1 << 11) 4325e8351deSBard Liao #define RT5670_DAC_L2_MONO_L_VOL_SFT 11 4335e8351deSBard Liao #define RT5670_M_DAC_R2_MONO_L (0x1 << 10) 4345e8351deSBard Liao #define RT5670_M_DAC_R2_MONO_L_SFT 10 4355e8351deSBard Liao #define RT5670_DAC_R2_MONO_L_VOL_MASK (0x1 << 9) 4365e8351deSBard Liao #define RT5670_DAC_R2_MONO_L_VOL_SFT 9 4375e8351deSBard Liao #define RT5670_M_DAC_R1_MONO_R (0x1 << 6) 4385e8351deSBard Liao #define RT5670_M_DAC_R1_MONO_R_SFT 6 4395e8351deSBard Liao #define RT5670_DAC_R1_MONO_R_VOL_MASK (0x1 << 5) 4405e8351deSBard Liao #define RT5670_DAC_R1_MONO_R_VOL_SFT 5 4415e8351deSBard Liao #define RT5670_M_DAC_R2_MONO_R (0x1 << 4) 4425e8351deSBard Liao #define RT5670_M_DAC_R2_MONO_R_SFT 4 4435e8351deSBard Liao #define RT5670_DAC_R2_MONO_R_VOL_MASK (0x1 << 3) 4445e8351deSBard Liao #define RT5670_DAC_R2_MONO_R_VOL_SFT 3 4455e8351deSBard Liao #define RT5670_M_DAC_L2_MONO_R (0x1 << 2) 4465e8351deSBard Liao #define RT5670_M_DAC_L2_MONO_R_SFT 2 4475e8351deSBard Liao #define RT5670_DAC_L2_MONO_R_VOL_MASK (0x1 << 1) 4485e8351deSBard Liao #define RT5670_DAC_L2_MONO_R_VOL_SFT 1 4495e8351deSBard Liao 4505e8351deSBard Liao /* Digital Mixer Control (0x2c) */ 4515e8351deSBard Liao #define RT5670_M_STO_L_DAC_L (0x1 << 15) 4525e8351deSBard Liao #define RT5670_M_STO_L_DAC_L_SFT 15 4535e8351deSBard Liao #define RT5670_STO_L_DAC_L_VOL_MASK (0x1 << 14) 4545e8351deSBard Liao #define RT5670_STO_L_DAC_L_VOL_SFT 14 4555e8351deSBard Liao #define RT5670_M_DAC_L2_DAC_L (0x1 << 13) 4565e8351deSBard Liao #define RT5670_M_DAC_L2_DAC_L_SFT 13 4575e8351deSBard Liao #define RT5670_DAC_L2_DAC_L_VOL_MASK (0x1 << 12) 4585e8351deSBard Liao #define RT5670_DAC_L2_DAC_L_VOL_SFT 12 4595e8351deSBard Liao #define RT5670_M_STO_R_DAC_R (0x1 << 11) 4605e8351deSBard Liao #define RT5670_M_STO_R_DAC_R_SFT 11 4615e8351deSBard Liao #define RT5670_STO_R_DAC_R_VOL_MASK (0x1 << 10) 4625e8351deSBard Liao #define RT5670_STO_R_DAC_R_VOL_SFT 10 4635e8351deSBard Liao #define RT5670_M_DAC_R2_DAC_R (0x1 << 9) 4645e8351deSBard Liao #define RT5670_M_DAC_R2_DAC_R_SFT 9 4655e8351deSBard Liao #define RT5670_DAC_R2_DAC_R_VOL_MASK (0x1 << 8) 4665e8351deSBard Liao #define RT5670_DAC_R2_DAC_R_VOL_SFT 8 4675e8351deSBard Liao #define RT5670_M_DAC_R2_DAC_L (0x1 << 7) 4685e8351deSBard Liao #define RT5670_M_DAC_R2_DAC_L_SFT 7 4695e8351deSBard Liao #define RT5670_DAC_R2_DAC_L_VOL_MASK (0x1 << 6) 4705e8351deSBard Liao #define RT5670_DAC_R2_DAC_L_VOL_SFT 6 4715e8351deSBard Liao #define RT5670_M_DAC_L2_DAC_R (0x1 << 5) 4725e8351deSBard Liao #define RT5670_M_DAC_L2_DAC_R_SFT 5 4735e8351deSBard Liao #define RT5670_DAC_L2_DAC_R_VOL_MASK (0x1 << 4) 4745e8351deSBard Liao #define RT5670_DAC_L2_DAC_R_VOL_SFT 4 4755e8351deSBard Liao 4765e8351deSBard Liao /* DSP Path Control 1 (0x2d) */ 4775e8351deSBard Liao #define RT5670_RXDP_SEL_MASK (0x7 << 13) 4785e8351deSBard Liao #define RT5670_RXDP_SEL_SFT 13 4795e8351deSBard Liao #define RT5670_RXDP_SRC_MASK (0x3 << 11) 4805e8351deSBard Liao #define RT5670_RXDP_SRC_SFT 11 4815e8351deSBard Liao #define RT5670_RXDP_SRC_NOR (0x0 << 11) 4825e8351deSBard Liao #define RT5670_RXDP_SRC_DIV2 (0x1 << 11) 4835e8351deSBard Liao #define RT5670_RXDP_SRC_DIV3 (0x2 << 11) 4845e8351deSBard Liao #define RT5670_TXDP_SRC_MASK (0x3 << 4) 4855e8351deSBard Liao #define RT5670_TXDP_SRC_SFT 4 4865e8351deSBard Liao #define RT5670_TXDP_SRC_NOR (0x0 << 4) 4875e8351deSBard Liao #define RT5670_TXDP_SRC_DIV2 (0x1 << 4) 4885e8351deSBard Liao #define RT5670_TXDP_SRC_DIV3 (0x2 << 4) 4895e8351deSBard Liao #define RT5670_TXDP_SLOT_SEL_MASK (0x3 << 2) 4905e8351deSBard Liao #define RT5670_TXDP_SLOT_SEL_SFT 2 4915e8351deSBard Liao #define RT5670_DSP_UL_SEL (0x1 << 1) 4925e8351deSBard Liao #define RT5670_DSP_UL_SFT 1 4935e8351deSBard Liao #define RT5670_DSP_DL_SEL 0x1 4945e8351deSBard Liao #define RT5670_DSP_DL_SFT 0 4955e8351deSBard Liao 4965e8351deSBard Liao /* DSP Path Control 2 (0x2e) */ 4975e8351deSBard Liao #define RT5670_TXDP_L_VOL_MASK (0x7f << 8) 4985e8351deSBard Liao #define RT5670_TXDP_L_VOL_SFT 8 4995e8351deSBard Liao #define RT5670_TXDP_R_VOL_MASK (0x7f) 5005e8351deSBard Liao #define RT5670_TXDP_R_VOL_SFT 0 5015e8351deSBard Liao 5025e8351deSBard Liao /* Digital Interface Data Control (0x2f) */ 5035e8351deSBard Liao #define RT5670_IF1_ADC2_IN_SEL (0x1 << 15) 5045e8351deSBard Liao #define RT5670_IF1_ADC2_IN_SFT 15 5055e8351deSBard Liao #define RT5670_IF2_ADC_IN_MASK (0x7 << 12) 5065e8351deSBard Liao #define RT5670_IF2_ADC_IN_SFT 12 5075e8351deSBard Liao #define RT5670_IF2_DAC_SEL_MASK (0x3 << 10) 5085e8351deSBard Liao #define RT5670_IF2_DAC_SEL_SFT 10 5095e8351deSBard Liao #define RT5670_IF2_ADC_SEL_MASK (0x3 << 8) 5105e8351deSBard Liao #define RT5670_IF2_ADC_SEL_SFT 8 5115e8351deSBard Liao 5125e8351deSBard Liao /* Digital Interface Data Control (0x30) */ 5135e8351deSBard Liao #define RT5670_IF4_ADC_IN_MASK (0x3 << 4) 5145e8351deSBard Liao #define RT5670_IF4_ADC_IN_SFT 4 5155e8351deSBard Liao 5165e8351deSBard Liao /* PDM Output Control (0x31) */ 5175e8351deSBard Liao #define RT5670_PDM1_L_MASK (0x1 << 15) 5185e8351deSBard Liao #define RT5670_PDM1_L_SFT 15 5195e8351deSBard Liao #define RT5670_M_PDM1_L (0x1 << 14) 5205e8351deSBard Liao #define RT5670_M_PDM1_L_SFT 14 5215e8351deSBard Liao #define RT5670_PDM1_R_MASK (0x1 << 13) 5225e8351deSBard Liao #define RT5670_PDM1_R_SFT 13 5235e8351deSBard Liao #define RT5670_M_PDM1_R (0x1 << 12) 5245e8351deSBard Liao #define RT5670_M_PDM1_R_SFT 12 5255e8351deSBard Liao #define RT5670_PDM2_L_MASK (0x1 << 11) 5265e8351deSBard Liao #define RT5670_PDM2_L_SFT 11 5275e8351deSBard Liao #define RT5670_M_PDM2_L (0x1 << 10) 5285e8351deSBard Liao #define RT5670_M_PDM2_L_SFT 10 5295e8351deSBard Liao #define RT5670_PDM2_R_MASK (0x1 << 9) 5305e8351deSBard Liao #define RT5670_PDM2_R_SFT 9 5315e8351deSBard Liao #define RT5670_M_PDM2_R (0x1 << 8) 5325e8351deSBard Liao #define RT5670_M_PDM2_R_SFT 8 5335e8351deSBard Liao #define RT5670_PDM2_BUSY (0x1 << 7) 5345e8351deSBard Liao #define RT5670_PDM1_BUSY (0x1 << 6) 5355e8351deSBard Liao #define RT5670_PDM_PATTERN (0x1 << 5) 5365e8351deSBard Liao #define RT5670_PDM_GAIN (0x1 << 4) 5375e8351deSBard Liao #define RT5670_PDM_DIV_MASK (0x3) 5385e8351deSBard Liao 5395e8351deSBard Liao /* REC Left Mixer Control 1 (0x3b) */ 5405e8351deSBard Liao #define RT5670_G_HP_L_RM_L_MASK (0x7 << 13) 5415e8351deSBard Liao #define RT5670_G_HP_L_RM_L_SFT 13 5425e8351deSBard Liao #define RT5670_G_IN_L_RM_L_MASK (0x7 << 10) 5435e8351deSBard Liao #define RT5670_G_IN_L_RM_L_SFT 10 5445e8351deSBard Liao #define RT5670_G_BST4_RM_L_MASK (0x7 << 7) 5455e8351deSBard Liao #define RT5670_G_BST4_RM_L_SFT 7 5465e8351deSBard Liao #define RT5670_G_BST3_RM_L_MASK (0x7 << 4) 5475e8351deSBard Liao #define RT5670_G_BST3_RM_L_SFT 4 5485e8351deSBard Liao #define RT5670_G_BST2_RM_L_MASK (0x7 << 1) 5495e8351deSBard Liao #define RT5670_G_BST2_RM_L_SFT 1 5505e8351deSBard Liao 5515e8351deSBard Liao /* REC Left Mixer Control 2 (0x3c) */ 5525e8351deSBard Liao #define RT5670_G_BST1_RM_L_MASK (0x7 << 13) 5535e8351deSBard Liao #define RT5670_G_BST1_RM_L_SFT 13 5545e8351deSBard Liao #define RT5670_M_IN_L_RM_L (0x1 << 5) 5555e8351deSBard Liao #define RT5670_M_IN_L_RM_L_SFT 5 5565e8351deSBard Liao #define RT5670_M_BST2_RM_L (0x1 << 3) 5575e8351deSBard Liao #define RT5670_M_BST2_RM_L_SFT 3 5585e8351deSBard Liao #define RT5670_M_BST1_RM_L (0x1 << 1) 5595e8351deSBard Liao #define RT5670_M_BST1_RM_L_SFT 1 5605e8351deSBard Liao 5615e8351deSBard Liao /* REC Right Mixer Control 1 (0x3d) */ 5625e8351deSBard Liao #define RT5670_G_HP_R_RM_R_MASK (0x7 << 13) 5635e8351deSBard Liao #define RT5670_G_HP_R_RM_R_SFT 13 5645e8351deSBard Liao #define RT5670_G_IN_R_RM_R_MASK (0x7 << 10) 5655e8351deSBard Liao #define RT5670_G_IN_R_RM_R_SFT 10 5665e8351deSBard Liao #define RT5670_G_BST4_RM_R_MASK (0x7 << 7) 5675e8351deSBard Liao #define RT5670_G_BST4_RM_R_SFT 7 5685e8351deSBard Liao #define RT5670_G_BST3_RM_R_MASK (0x7 << 4) 5695e8351deSBard Liao #define RT5670_G_BST3_RM_R_SFT 4 5705e8351deSBard Liao #define RT5670_G_BST2_RM_R_MASK (0x7 << 1) 5715e8351deSBard Liao #define RT5670_G_BST2_RM_R_SFT 1 5725e8351deSBard Liao 5735e8351deSBard Liao /* REC Right Mixer Control 2 (0x3e) */ 5745e8351deSBard Liao #define RT5670_G_BST1_RM_R_MASK (0x7 << 13) 5755e8351deSBard Liao #define RT5670_G_BST1_RM_R_SFT 13 5765e8351deSBard Liao #define RT5670_M_IN_R_RM_R (0x1 << 5) 5775e8351deSBard Liao #define RT5670_M_IN_R_RM_R_SFT 5 5785e8351deSBard Liao #define RT5670_M_BST2_RM_R (0x1 << 3) 5795e8351deSBard Liao #define RT5670_M_BST2_RM_R_SFT 3 5805e8351deSBard Liao #define RT5670_M_BST1_RM_R (0x1 << 1) 5815e8351deSBard Liao #define RT5670_M_BST1_RM_R_SFT 1 5825e8351deSBard Liao 5835e8351deSBard Liao /* HPMIX Control (0x45) */ 5845e8351deSBard Liao #define RT5670_M_DAC2_HM (0x1 << 15) 5855e8351deSBard Liao #define RT5670_M_DAC2_HM_SFT 15 5865e8351deSBard Liao #define RT5670_M_HPVOL_HM (0x1 << 14) 5875e8351deSBard Liao #define RT5670_M_HPVOL_HM_SFT 14 5885e8351deSBard Liao #define RT5670_M_DAC1_HM (0x1 << 13) 5895e8351deSBard Liao #define RT5670_M_DAC1_HM_SFT 13 5905e8351deSBard Liao #define RT5670_G_HPOMIX_MASK (0x1 << 12) 5915e8351deSBard Liao #define RT5670_G_HPOMIX_SFT 12 5925e8351deSBard Liao #define RT5670_M_INR1_HMR (0x1 << 3) 5935e8351deSBard Liao #define RT5670_M_INR1_HMR_SFT 3 5945e8351deSBard Liao #define RT5670_M_DACR1_HMR (0x1 << 2) 5955e8351deSBard Liao #define RT5670_M_DACR1_HMR_SFT 2 5965e8351deSBard Liao #define RT5670_M_INL1_HML (0x1 << 1) 5975e8351deSBard Liao #define RT5670_M_INL1_HML_SFT 1 5985e8351deSBard Liao #define RT5670_M_DACL1_HML (0x1) 5995e8351deSBard Liao #define RT5670_M_DACL1_HML_SFT 0 6005e8351deSBard Liao 6015e8351deSBard Liao /* Mono Output Mixer Control (0x4c) */ 6025e8351deSBard Liao #define RT5670_M_DAC_R2_MA (0x1 << 15) 6035e8351deSBard Liao #define RT5670_M_DAC_R2_MA_SFT 15 6045e8351deSBard Liao #define RT5670_M_DAC_L2_MA (0x1 << 14) 6055e8351deSBard Liao #define RT5670_M_DAC_L2_MA_SFT 14 6065e8351deSBard Liao #define RT5670_M_OV_R_MM (0x1 << 13) 6075e8351deSBard Liao #define RT5670_M_OV_R_MM_SFT 13 6085e8351deSBard Liao #define RT5670_M_OV_L_MM (0x1 << 12) 6095e8351deSBard Liao #define RT5670_M_OV_L_MM_SFT 12 6105e8351deSBard Liao #define RT5670_G_MONOMIX_MASK (0x1 << 10) 6115e8351deSBard Liao #define RT5670_G_MONOMIX_SFT 10 6125e8351deSBard Liao #define RT5670_M_DAC_R2_MM (0x1 << 9) 6135e8351deSBard Liao #define RT5670_M_DAC_R2_MM_SFT 9 6145e8351deSBard Liao #define RT5670_M_DAC_L2_MM (0x1 << 8) 6155e8351deSBard Liao #define RT5670_M_DAC_L2_MM_SFT 8 6165e8351deSBard Liao #define RT5670_M_BST4_MM (0x1 << 7) 6175e8351deSBard Liao #define RT5670_M_BST4_MM_SFT 7 6185e8351deSBard Liao 6195e8351deSBard Liao /* Output Left Mixer Control 1 (0x4d) */ 6205e8351deSBard Liao #define RT5670_G_BST3_OM_L_MASK (0x7 << 13) 6215e8351deSBard Liao #define RT5670_G_BST3_OM_L_SFT 13 6225e8351deSBard Liao #define RT5670_G_BST2_OM_L_MASK (0x7 << 10) 6235e8351deSBard Liao #define RT5670_G_BST2_OM_L_SFT 10 6245e8351deSBard Liao #define RT5670_G_BST1_OM_L_MASK (0x7 << 7) 6255e8351deSBard Liao #define RT5670_G_BST1_OM_L_SFT 7 6265e8351deSBard Liao #define RT5670_G_IN_L_OM_L_MASK (0x7 << 4) 6275e8351deSBard Liao #define RT5670_G_IN_L_OM_L_SFT 4 6285e8351deSBard Liao #define RT5670_G_RM_L_OM_L_MASK (0x7 << 1) 6295e8351deSBard Liao #define RT5670_G_RM_L_OM_L_SFT 1 6305e8351deSBard Liao 6315e8351deSBard Liao /* Output Left Mixer Control 2 (0x4e) */ 6325e8351deSBard Liao #define RT5670_G_DAC_R2_OM_L_MASK (0x7 << 13) 6335e8351deSBard Liao #define RT5670_G_DAC_R2_OM_L_SFT 13 6345e8351deSBard Liao #define RT5670_G_DAC_L2_OM_L_MASK (0x7 << 10) 6355e8351deSBard Liao #define RT5670_G_DAC_L2_OM_L_SFT 10 6365e8351deSBard Liao #define RT5670_G_DAC_L1_OM_L_MASK (0x7 << 7) 6375e8351deSBard Liao #define RT5670_G_DAC_L1_OM_L_SFT 7 6385e8351deSBard Liao 6395e8351deSBard Liao /* Output Left Mixer Control 3 (0x4f) */ 6405e8351deSBard Liao #define RT5670_M_BST1_OM_L (0x1 << 5) 6415e8351deSBard Liao #define RT5670_M_BST1_OM_L_SFT 5 6425e8351deSBard Liao #define RT5670_M_IN_L_OM_L (0x1 << 4) 6435e8351deSBard Liao #define RT5670_M_IN_L_OM_L_SFT 4 6445e8351deSBard Liao #define RT5670_M_DAC_L2_OM_L (0x1 << 1) 6455e8351deSBard Liao #define RT5670_M_DAC_L2_OM_L_SFT 1 6465e8351deSBard Liao #define RT5670_M_DAC_L1_OM_L (0x1) 6475e8351deSBard Liao #define RT5670_M_DAC_L1_OM_L_SFT 0 6485e8351deSBard Liao 6495e8351deSBard Liao /* Output Right Mixer Control 1 (0x50) */ 6505e8351deSBard Liao #define RT5670_G_BST4_OM_R_MASK (0x7 << 13) 6515e8351deSBard Liao #define RT5670_G_BST4_OM_R_SFT 13 6525e8351deSBard Liao #define RT5670_G_BST2_OM_R_MASK (0x7 << 10) 6535e8351deSBard Liao #define RT5670_G_BST2_OM_R_SFT 10 6545e8351deSBard Liao #define RT5670_G_BST1_OM_R_MASK (0x7 << 7) 6555e8351deSBard Liao #define RT5670_G_BST1_OM_R_SFT 7 6565e8351deSBard Liao #define RT5670_G_IN_R_OM_R_MASK (0x7 << 4) 6575e8351deSBard Liao #define RT5670_G_IN_R_OM_R_SFT 4 6585e8351deSBard Liao #define RT5670_G_RM_R_OM_R_MASK (0x7 << 1) 6595e8351deSBard Liao #define RT5670_G_RM_R_OM_R_SFT 1 6605e8351deSBard Liao 6615e8351deSBard Liao /* Output Right Mixer Control 2 (0x51) */ 6625e8351deSBard Liao #define RT5670_G_DAC_L2_OM_R_MASK (0x7 << 13) 6635e8351deSBard Liao #define RT5670_G_DAC_L2_OM_R_SFT 13 6645e8351deSBard Liao #define RT5670_G_DAC_R2_OM_R_MASK (0x7 << 10) 6655e8351deSBard Liao #define RT5670_G_DAC_R2_OM_R_SFT 10 6665e8351deSBard Liao #define RT5670_G_DAC_R1_OM_R_MASK (0x7 << 7) 6675e8351deSBard Liao #define RT5670_G_DAC_R1_OM_R_SFT 7 6685e8351deSBard Liao 6695e8351deSBard Liao /* Output Right Mixer Control 3 (0x52) */ 6705e8351deSBard Liao #define RT5670_M_BST2_OM_R (0x1 << 6) 6715e8351deSBard Liao #define RT5670_M_BST2_OM_R_SFT 6 6725e8351deSBard Liao #define RT5670_M_IN_R_OM_R (0x1 << 4) 6735e8351deSBard Liao #define RT5670_M_IN_R_OM_R_SFT 4 6745e8351deSBard Liao #define RT5670_M_DAC_R2_OM_R (0x1 << 1) 6755e8351deSBard Liao #define RT5670_M_DAC_R2_OM_R_SFT 1 6765e8351deSBard Liao #define RT5670_M_DAC_R1_OM_R (0x1) 6775e8351deSBard Liao #define RT5670_M_DAC_R1_OM_R_SFT 0 6785e8351deSBard Liao 6795e8351deSBard Liao /* LOUT Mixer Control (0x53) */ 6805e8351deSBard Liao #define RT5670_M_DAC_L1_LM (0x1 << 15) 6815e8351deSBard Liao #define RT5670_M_DAC_L1_LM_SFT 15 6825e8351deSBard Liao #define RT5670_M_DAC_R1_LM (0x1 << 14) 6835e8351deSBard Liao #define RT5670_M_DAC_R1_LM_SFT 14 6845e8351deSBard Liao #define RT5670_M_OV_L_LM (0x1 << 13) 6855e8351deSBard Liao #define RT5670_M_OV_L_LM_SFT 13 6865e8351deSBard Liao #define RT5670_M_OV_R_LM (0x1 << 12) 6875e8351deSBard Liao #define RT5670_M_OV_R_LM_SFT 12 6885e8351deSBard Liao #define RT5670_G_LOUTMIX_MASK (0x1 << 11) 6895e8351deSBard Liao #define RT5670_G_LOUTMIX_SFT 11 6905e8351deSBard Liao 6915e8351deSBard Liao /* Power Management for Digital 1 (0x61) */ 6925e8351deSBard Liao #define RT5670_PWR_I2S1 (0x1 << 15) 6935e8351deSBard Liao #define RT5670_PWR_I2S1_BIT 15 6945e8351deSBard Liao #define RT5670_PWR_I2S2 (0x1 << 14) 6955e8351deSBard Liao #define RT5670_PWR_I2S2_BIT 14 6965e8351deSBard Liao #define RT5670_PWR_DAC_L1 (0x1 << 12) 6975e8351deSBard Liao #define RT5670_PWR_DAC_L1_BIT 12 6985e8351deSBard Liao #define RT5670_PWR_DAC_R1 (0x1 << 11) 6995e8351deSBard Liao #define RT5670_PWR_DAC_R1_BIT 11 7005e8351deSBard Liao #define RT5670_PWR_DAC_L2 (0x1 << 7) 7015e8351deSBard Liao #define RT5670_PWR_DAC_L2_BIT 7 7025e8351deSBard Liao #define RT5670_PWR_DAC_R2 (0x1 << 6) 7035e8351deSBard Liao #define RT5670_PWR_DAC_R2_BIT 6 7045e8351deSBard Liao #define RT5670_PWR_ADC_L (0x1 << 2) 7055e8351deSBard Liao #define RT5670_PWR_ADC_L_BIT 2 7065e8351deSBard Liao #define RT5670_PWR_ADC_R (0x1 << 1) 7075e8351deSBard Liao #define RT5670_PWR_ADC_R_BIT 1 7085e8351deSBard Liao #define RT5670_PWR_CLS_D (0x1) 7095e8351deSBard Liao #define RT5670_PWR_CLS_D_BIT 0 7105e8351deSBard Liao 7115e8351deSBard Liao /* Power Management for Digital 2 (0x62) */ 7125e8351deSBard Liao #define RT5670_PWR_ADC_S1F (0x1 << 15) 7135e8351deSBard Liao #define RT5670_PWR_ADC_S1F_BIT 15 7145e8351deSBard Liao #define RT5670_PWR_ADC_MF_L (0x1 << 14) 7155e8351deSBard Liao #define RT5670_PWR_ADC_MF_L_BIT 14 7165e8351deSBard Liao #define RT5670_PWR_ADC_MF_R (0x1 << 13) 7175e8351deSBard Liao #define RT5670_PWR_ADC_MF_R_BIT 13 7185e8351deSBard Liao #define RT5670_PWR_I2S_DSP (0x1 << 12) 7195e8351deSBard Liao #define RT5670_PWR_I2S_DSP_BIT 12 7205e8351deSBard Liao #define RT5670_PWR_DAC_S1F (0x1 << 11) 7215e8351deSBard Liao #define RT5670_PWR_DAC_S1F_BIT 11 7225e8351deSBard Liao #define RT5670_PWR_DAC_MF_L (0x1 << 10) 7235e8351deSBard Liao #define RT5670_PWR_DAC_MF_L_BIT 10 7245e8351deSBard Liao #define RT5670_PWR_DAC_MF_R (0x1 << 9) 7255e8351deSBard Liao #define RT5670_PWR_DAC_MF_R_BIT 9 7265e8351deSBard Liao #define RT5670_PWR_ADC_S2F (0x1 << 8) 7275e8351deSBard Liao #define RT5670_PWR_ADC_S2F_BIT 8 7285e8351deSBard Liao #define RT5670_PWR_PDM1 (0x1 << 7) 7295e8351deSBard Liao #define RT5670_PWR_PDM1_BIT 7 7305e8351deSBard Liao #define RT5670_PWR_PDM2 (0x1 << 6) 7315e8351deSBard Liao #define RT5670_PWR_PDM2_BIT 6 7325e8351deSBard Liao 7335e8351deSBard Liao /* Power Management for Analog 1 (0x63) */ 7345e8351deSBard Liao #define RT5670_PWR_VREF1 (0x1 << 15) 7355e8351deSBard Liao #define RT5670_PWR_VREF1_BIT 15 7365e8351deSBard Liao #define RT5670_PWR_FV1 (0x1 << 14) 7375e8351deSBard Liao #define RT5670_PWR_FV1_BIT 14 7385e8351deSBard Liao #define RT5670_PWR_MB (0x1 << 13) 7395e8351deSBard Liao #define RT5670_PWR_MB_BIT 13 7405e8351deSBard Liao #define RT5670_PWR_LM (0x1 << 12) 7415e8351deSBard Liao #define RT5670_PWR_LM_BIT 12 7425e8351deSBard Liao #define RT5670_PWR_BG (0x1 << 11) 7435e8351deSBard Liao #define RT5670_PWR_BG_BIT 11 7445e8351deSBard Liao #define RT5670_PWR_HP_L (0x1 << 7) 7455e8351deSBard Liao #define RT5670_PWR_HP_L_BIT 7 7465e8351deSBard Liao #define RT5670_PWR_HP_R (0x1 << 6) 7475e8351deSBard Liao #define RT5670_PWR_HP_R_BIT 6 7485e8351deSBard Liao #define RT5670_PWR_HA (0x1 << 5) 7495e8351deSBard Liao #define RT5670_PWR_HA_BIT 5 7505e8351deSBard Liao #define RT5670_PWR_VREF2 (0x1 << 4) 7515e8351deSBard Liao #define RT5670_PWR_VREF2_BIT 4 7525e8351deSBard Liao #define RT5670_PWR_FV2 (0x1 << 3) 7535e8351deSBard Liao #define RT5670_PWR_FV2_BIT 3 7545cacc6f5SHans de Goede #define RT5670_LDO_SEL_MASK (0x7) 7555e8351deSBard Liao #define RT5670_LDO_SEL_SFT 0 7565e8351deSBard Liao 7575e8351deSBard Liao /* Power Management for Analog 2 (0x64) */ 7585e8351deSBard Liao #define RT5670_PWR_BST1 (0x1 << 15) 7595e8351deSBard Liao #define RT5670_PWR_BST1_BIT 15 7605e8351deSBard Liao #define RT5670_PWR_BST2 (0x1 << 13) 7615e8351deSBard Liao #define RT5670_PWR_BST2_BIT 13 7625e8351deSBard Liao #define RT5670_PWR_MB1 (0x1 << 11) 7635e8351deSBard Liao #define RT5670_PWR_MB1_BIT 11 7645e8351deSBard Liao #define RT5670_PWR_MB2 (0x1 << 10) 7655e8351deSBard Liao #define RT5670_PWR_MB2_BIT 10 7665e8351deSBard Liao #define RT5670_PWR_PLL (0x1 << 9) 7675e8351deSBard Liao #define RT5670_PWR_PLL_BIT 9 7685e8351deSBard Liao #define RT5670_PWR_BST1_P (0x1 << 6) 7695e8351deSBard Liao #define RT5670_PWR_BST1_P_BIT 6 7705e8351deSBard Liao #define RT5670_PWR_BST2_P (0x1 << 4) 7715e8351deSBard Liao #define RT5670_PWR_BST2_P_BIT 4 7725e8351deSBard Liao #define RT5670_PWR_JD1 (0x1 << 2) 7735e8351deSBard Liao #define RT5670_PWR_JD1_BIT 2 7745e8351deSBard Liao #define RT5670_PWR_JD (0x1 << 1) 7755e8351deSBard Liao #define RT5670_PWR_JD_BIT 1 7765e8351deSBard Liao 7775e8351deSBard Liao /* Power Management for Mixer (0x65) */ 7785e8351deSBard Liao #define RT5670_PWR_OM_L (0x1 << 15) 7795e8351deSBard Liao #define RT5670_PWR_OM_L_BIT 15 7805e8351deSBard Liao #define RT5670_PWR_OM_R (0x1 << 14) 7815e8351deSBard Liao #define RT5670_PWR_OM_R_BIT 14 7825e8351deSBard Liao #define RT5670_PWR_RM_L (0x1 << 11) 7835e8351deSBard Liao #define RT5670_PWR_RM_L_BIT 11 7845e8351deSBard Liao #define RT5670_PWR_RM_R (0x1 << 10) 7855e8351deSBard Liao #define RT5670_PWR_RM_R_BIT 10 7865e8351deSBard Liao 7875e8351deSBard Liao /* Power Management for Volume (0x66) */ 7885e8351deSBard Liao #define RT5670_PWR_HV_L (0x1 << 11) 7895e8351deSBard Liao #define RT5670_PWR_HV_L_BIT 11 7905e8351deSBard Liao #define RT5670_PWR_HV_R (0x1 << 10) 7915e8351deSBard Liao #define RT5670_PWR_HV_R_BIT 10 7925e8351deSBard Liao #define RT5670_PWR_IN_L (0x1 << 9) 7935e8351deSBard Liao #define RT5670_PWR_IN_L_BIT 9 7945e8351deSBard Liao #define RT5670_PWR_IN_R (0x1 << 8) 7955e8351deSBard Liao #define RT5670_PWR_IN_R_BIT 8 7965e8351deSBard Liao #define RT5670_PWR_MIC_DET (0x1 << 5) 7975e8351deSBard Liao #define RT5670_PWR_MIC_DET_BIT 5 7985e8351deSBard Liao 7995e8351deSBard Liao /* I2S1/2/3 Audio Serial Data Port Control (0x70 0x71 0x72) */ 8005e8351deSBard Liao #define RT5670_I2S_MS_MASK (0x1 << 15) 8015e8351deSBard Liao #define RT5670_I2S_MS_SFT 15 8025e8351deSBard Liao #define RT5670_I2S_MS_M (0x0 << 15) 8035e8351deSBard Liao #define RT5670_I2S_MS_S (0x1 << 15) 8045e8351deSBard Liao #define RT5670_I2S_IF_MASK (0x7 << 12) 8055e8351deSBard Liao #define RT5670_I2S_IF_SFT 12 8065e8351deSBard Liao #define RT5670_I2S_O_CP_MASK (0x3 << 10) 8075e8351deSBard Liao #define RT5670_I2S_O_CP_SFT 10 8085e8351deSBard Liao #define RT5670_I2S_O_CP_OFF (0x0 << 10) 8095e8351deSBard Liao #define RT5670_I2S_O_CP_U_LAW (0x1 << 10) 8105e8351deSBard Liao #define RT5670_I2S_O_CP_A_LAW (0x2 << 10) 8115e8351deSBard Liao #define RT5670_I2S_I_CP_MASK (0x3 << 8) 8125e8351deSBard Liao #define RT5670_I2S_I_CP_SFT 8 8135e8351deSBard Liao #define RT5670_I2S_I_CP_OFF (0x0 << 8) 8145e8351deSBard Liao #define RT5670_I2S_I_CP_U_LAW (0x1 << 8) 8155e8351deSBard Liao #define RT5670_I2S_I_CP_A_LAW (0x2 << 8) 8165e8351deSBard Liao #define RT5670_I2S_BP_MASK (0x1 << 7) 8175e8351deSBard Liao #define RT5670_I2S_BP_SFT 7 8185e8351deSBard Liao #define RT5670_I2S_BP_NOR (0x0 << 7) 8195e8351deSBard Liao #define RT5670_I2S_BP_INV (0x1 << 7) 8205e8351deSBard Liao #define RT5670_I2S_DL_MASK (0x3 << 2) 8215e8351deSBard Liao #define RT5670_I2S_DL_SFT 2 8225e8351deSBard Liao #define RT5670_I2S_DL_16 (0x0 << 2) 8235e8351deSBard Liao #define RT5670_I2S_DL_20 (0x1 << 2) 8245e8351deSBard Liao #define RT5670_I2S_DL_24 (0x2 << 2) 8255e8351deSBard Liao #define RT5670_I2S_DL_8 (0x3 << 2) 8265e8351deSBard Liao #define RT5670_I2S_DF_MASK (0x3) 8275e8351deSBard Liao #define RT5670_I2S_DF_SFT 0 8285e8351deSBard Liao #define RT5670_I2S_DF_I2S (0x0) 8295e8351deSBard Liao #define RT5670_I2S_DF_LEFT (0x1) 8305e8351deSBard Liao #define RT5670_I2S_DF_PCM_A (0x2) 8315e8351deSBard Liao #define RT5670_I2S_DF_PCM_B (0x3) 8325e8351deSBard Liao 8335e8351deSBard Liao /* I2S2 Audio Serial Data Port Control (0x71) */ 8345e8351deSBard Liao #define RT5670_I2S2_SDI_MASK (0x1 << 6) 8355e8351deSBard Liao #define RT5670_I2S2_SDI_SFT 6 8365e8351deSBard Liao #define RT5670_I2S2_SDI_I2S1 (0x0 << 6) 8375e8351deSBard Liao #define RT5670_I2S2_SDI_I2S2 (0x1 << 6) 8385e8351deSBard Liao 8395e8351deSBard Liao /* ADC/DAC Clock Control 1 (0x73) */ 8405e8351deSBard Liao #define RT5670_I2S_BCLK_MS1_MASK (0x1 << 15) 8415e8351deSBard Liao #define RT5670_I2S_BCLK_MS1_SFT 15 8425e8351deSBard Liao #define RT5670_I2S_BCLK_MS1_32 (0x0 << 15) 8435e8351deSBard Liao #define RT5670_I2S_BCLK_MS1_64 (0x1 << 15) 8445e8351deSBard Liao #define RT5670_I2S_PD1_MASK (0x7 << 12) 8455e8351deSBard Liao #define RT5670_I2S_PD1_SFT 12 8465e8351deSBard Liao #define RT5670_I2S_PD1_1 (0x0 << 12) 8475e8351deSBard Liao #define RT5670_I2S_PD1_2 (0x1 << 12) 8485e8351deSBard Liao #define RT5670_I2S_PD1_3 (0x2 << 12) 8495e8351deSBard Liao #define RT5670_I2S_PD1_4 (0x3 << 12) 8505e8351deSBard Liao #define RT5670_I2S_PD1_6 (0x4 << 12) 8515e8351deSBard Liao #define RT5670_I2S_PD1_8 (0x5 << 12) 8525e8351deSBard Liao #define RT5670_I2S_PD1_12 (0x6 << 12) 8535e8351deSBard Liao #define RT5670_I2S_PD1_16 (0x7 << 12) 8545e8351deSBard Liao #define RT5670_I2S_BCLK_MS2_MASK (0x1 << 11) 8555e8351deSBard Liao #define RT5670_I2S_BCLK_MS2_SFT 11 8565e8351deSBard Liao #define RT5670_I2S_BCLK_MS2_32 (0x0 << 11) 8575e8351deSBard Liao #define RT5670_I2S_BCLK_MS2_64 (0x1 << 11) 8585e8351deSBard Liao #define RT5670_I2S_PD2_MASK (0x7 << 8) 8595e8351deSBard Liao #define RT5670_I2S_PD2_SFT 8 8605e8351deSBard Liao #define RT5670_I2S_PD2_1 (0x0 << 8) 8615e8351deSBard Liao #define RT5670_I2S_PD2_2 (0x1 << 8) 8625e8351deSBard Liao #define RT5670_I2S_PD2_3 (0x2 << 8) 8635e8351deSBard Liao #define RT5670_I2S_PD2_4 (0x3 << 8) 8645e8351deSBard Liao #define RT5670_I2S_PD2_6 (0x4 << 8) 8655e8351deSBard Liao #define RT5670_I2S_PD2_8 (0x5 << 8) 8665e8351deSBard Liao #define RT5670_I2S_PD2_12 (0x6 << 8) 8675e8351deSBard Liao #define RT5670_I2S_PD2_16 (0x7 << 8) 8685e8351deSBard Liao #define RT5670_I2S_BCLK_MS3_MASK (0x1 << 7) 8695e8351deSBard Liao #define RT5670_I2S_BCLK_MS3_SFT 7 8705e8351deSBard Liao #define RT5670_I2S_BCLK_MS3_32 (0x0 << 7) 8715e8351deSBard Liao #define RT5670_I2S_BCLK_MS3_64 (0x1 << 7) 8725e8351deSBard Liao #define RT5670_I2S_PD3_MASK (0x7 << 4) 8735e8351deSBard Liao #define RT5670_I2S_PD3_SFT 4 8745e8351deSBard Liao #define RT5670_I2S_PD3_1 (0x0 << 4) 8755e8351deSBard Liao #define RT5670_I2S_PD3_2 (0x1 << 4) 8765e8351deSBard Liao #define RT5670_I2S_PD3_3 (0x2 << 4) 8775e8351deSBard Liao #define RT5670_I2S_PD3_4 (0x3 << 4) 8785e8351deSBard Liao #define RT5670_I2S_PD3_6 (0x4 << 4) 8795e8351deSBard Liao #define RT5670_I2S_PD3_8 (0x5 << 4) 8805e8351deSBard Liao #define RT5670_I2S_PD3_12 (0x6 << 4) 8815e8351deSBard Liao #define RT5670_I2S_PD3_16 (0x7 << 4) 8825e8351deSBard Liao #define RT5670_DAC_OSR_MASK (0x3 << 2) 8835e8351deSBard Liao #define RT5670_DAC_OSR_SFT 2 8845e8351deSBard Liao #define RT5670_DAC_OSR_128 (0x0 << 2) 8855e8351deSBard Liao #define RT5670_DAC_OSR_64 (0x1 << 2) 8865e8351deSBard Liao #define RT5670_DAC_OSR_32 (0x2 << 2) 8875e8351deSBard Liao #define RT5670_DAC_OSR_16 (0x3 << 2) 8885e8351deSBard Liao #define RT5670_ADC_OSR_MASK (0x3) 8895e8351deSBard Liao #define RT5670_ADC_OSR_SFT 0 8905e8351deSBard Liao #define RT5670_ADC_OSR_128 (0x0) 8915e8351deSBard Liao #define RT5670_ADC_OSR_64 (0x1) 8925e8351deSBard Liao #define RT5670_ADC_OSR_32 (0x2) 8935e8351deSBard Liao #define RT5670_ADC_OSR_16 (0x3) 8945e8351deSBard Liao 8955e8351deSBard Liao /* ADC/DAC Clock Control 2 (0x74) */ 8965e8351deSBard Liao #define RT5670_DAC_L_OSR_MASK (0x3 << 14) 8975e8351deSBard Liao #define RT5670_DAC_L_OSR_SFT 14 8985e8351deSBard Liao #define RT5670_DAC_L_OSR_128 (0x0 << 14) 8995e8351deSBard Liao #define RT5670_DAC_L_OSR_64 (0x1 << 14) 9005e8351deSBard Liao #define RT5670_DAC_L_OSR_32 (0x2 << 14) 9015e8351deSBard Liao #define RT5670_DAC_L_OSR_16 (0x3 << 14) 9025e8351deSBard Liao #define RT5670_ADC_R_OSR_MASK (0x3 << 12) 9035e8351deSBard Liao #define RT5670_ADC_R_OSR_SFT 12 9045e8351deSBard Liao #define RT5670_ADC_R_OSR_128 (0x0 << 12) 9055e8351deSBard Liao #define RT5670_ADC_R_OSR_64 (0x1 << 12) 9065e8351deSBard Liao #define RT5670_ADC_R_OSR_32 (0x2 << 12) 9075e8351deSBard Liao #define RT5670_ADC_R_OSR_16 (0x3 << 12) 9085e8351deSBard Liao #define RT5670_DAHPF_EN (0x1 << 11) 9095e8351deSBard Liao #define RT5670_DAHPF_EN_SFT 11 9105e8351deSBard Liao #define RT5670_ADHPF_EN (0x1 << 10) 9115e8351deSBard Liao #define RT5670_ADHPF_EN_SFT 10 9125e8351deSBard Liao 9135e8351deSBard Liao /* Digital Microphone Control (0x75) */ 9145e8351deSBard Liao #define RT5670_DMIC_1_EN_MASK (0x1 << 15) 9155e8351deSBard Liao #define RT5670_DMIC_1_EN_SFT 15 9165e8351deSBard Liao #define RT5670_DMIC_1_DIS (0x0 << 15) 9175e8351deSBard Liao #define RT5670_DMIC_1_EN (0x1 << 15) 9185e8351deSBard Liao #define RT5670_DMIC_2_EN_MASK (0x1 << 14) 9195e8351deSBard Liao #define RT5670_DMIC_2_EN_SFT 14 9205e8351deSBard Liao #define RT5670_DMIC_2_DIS (0x0 << 14) 9215e8351deSBard Liao #define RT5670_DMIC_2_EN (0x1 << 14) 9225e8351deSBard Liao #define RT5670_DMIC_1L_LH_MASK (0x1 << 13) 9235e8351deSBard Liao #define RT5670_DMIC_1L_LH_SFT 13 9245e8351deSBard Liao #define RT5670_DMIC_1L_LH_FALLING (0x0 << 13) 9255e8351deSBard Liao #define RT5670_DMIC_1L_LH_RISING (0x1 << 13) 9265e8351deSBard Liao #define RT5670_DMIC_1R_LH_MASK (0x1 << 12) 9275e8351deSBard Liao #define RT5670_DMIC_1R_LH_SFT 12 9285e8351deSBard Liao #define RT5670_DMIC_1R_LH_FALLING (0x0 << 12) 9295e8351deSBard Liao #define RT5670_DMIC_1R_LH_RISING (0x1 << 12) 9305e8351deSBard Liao #define RT5670_DMIC_2_DP_MASK (0x1 << 10) 9315e8351deSBard Liao #define RT5670_DMIC_2_DP_SFT 10 9325e8351deSBard Liao #define RT5670_DMIC_2_DP_GPIO8 (0x0 << 10) 9335e8351deSBard Liao #define RT5670_DMIC_2_DP_IN3N (0x1 << 10) 9345e8351deSBard Liao #define RT5670_DMIC_2L_LH_MASK (0x1 << 9) 9355e8351deSBard Liao #define RT5670_DMIC_2L_LH_SFT 9 9365e8351deSBard Liao #define RT5670_DMIC_2L_LH_FALLING (0x0 << 9) 9375e8351deSBard Liao #define RT5670_DMIC_2L_LH_RISING (0x1 << 9) 9385e8351deSBard Liao #define RT5670_DMIC_2R_LH_MASK (0x1 << 8) 9395e8351deSBard Liao #define RT5670_DMIC_2R_LH_SFT 8 9405e8351deSBard Liao #define RT5670_DMIC_2R_LH_FALLING (0x0 << 8) 9415e8351deSBard Liao #define RT5670_DMIC_2R_LH_RISING (0x1 << 8) 9425e8351deSBard Liao #define RT5670_DMIC_CLK_MASK (0x7 << 5) 9435e8351deSBard Liao #define RT5670_DMIC_CLK_SFT 5 9445e8351deSBard Liao #define RT5670_DMIC_3_EN_MASK (0x1 << 4) 9455e8351deSBard Liao #define RT5670_DMIC_3_EN_SFT 4 9465e8351deSBard Liao #define RT5670_DMIC_3_DIS (0x0 << 4) 9475e8351deSBard Liao #define RT5670_DMIC_3_EN (0x1 << 4) 9485e8351deSBard Liao #define RT5670_DMIC_1_DP_MASK (0x3 << 0) 9495e8351deSBard Liao #define RT5670_DMIC_1_DP_SFT 0 9505e8351deSBard Liao #define RT5670_DMIC_1_DP_GPIO6 (0x0 << 0) 9515e8351deSBard Liao #define RT5670_DMIC_1_DP_IN2P (0x1 << 0) 9525e8351deSBard Liao #define RT5670_DMIC_1_DP_GPIO7 (0x2 << 0) 9535e8351deSBard Liao 9545e8351deSBard Liao /* Digital Microphone Control2 (0x76) */ 9555e8351deSBard Liao #define RT5670_DMIC_3_DP_MASK (0x3 << 6) 9565e8351deSBard Liao #define RT5670_DMIC_3_DP_SFT 6 9575e8351deSBard Liao #define RT5670_DMIC_3_DP_GPIO9 (0x0 << 6) 9585e8351deSBard Liao #define RT5670_DMIC_3_DP_GPIO10 (0x1 << 6) 9595e8351deSBard Liao #define RT5670_DMIC_3_DP_GPIO5 (0x2 << 6) 9605e8351deSBard Liao 9615e8351deSBard Liao /* Global Clock Control (0x80) */ 9625e8351deSBard Liao #define RT5670_SCLK_SRC_MASK (0x3 << 14) 9635e8351deSBard Liao #define RT5670_SCLK_SRC_SFT 14 9645e8351deSBard Liao #define RT5670_SCLK_SRC_MCLK (0x0 << 14) 9655e8351deSBard Liao #define RT5670_SCLK_SRC_PLL1 (0x1 << 14) 9665e8351deSBard Liao #define RT5670_SCLK_SRC_RCCLK (0x2 << 14) /* 15MHz */ 967e71bf055SBard Liao #define RT5670_PLL1_SRC_MASK (0x7 << 11) 968e71bf055SBard Liao #define RT5670_PLL1_SRC_SFT 11 969e71bf055SBard Liao #define RT5670_PLL1_SRC_MCLK (0x0 << 11) 970e71bf055SBard Liao #define RT5670_PLL1_SRC_BCLK1 (0x1 << 11) 971e71bf055SBard Liao #define RT5670_PLL1_SRC_BCLK2 (0x2 << 11) 972e71bf055SBard Liao #define RT5670_PLL1_SRC_BCLK3 (0x3 << 11) 9735e8351deSBard Liao #define RT5670_PLL1_PD_MASK (0x1 << 3) 9745e8351deSBard Liao #define RT5670_PLL1_PD_SFT 3 9755e8351deSBard Liao #define RT5670_PLL1_PD_1 (0x0 << 3) 9765e8351deSBard Liao #define RT5670_PLL1_PD_2 (0x1 << 3) 9775e8351deSBard Liao 9785e8351deSBard Liao #define RT5670_PLL_INP_MAX 40000000 9795e8351deSBard Liao #define RT5670_PLL_INP_MIN 256000 9805e8351deSBard Liao /* PLL M/N/K Code Control 1 (0x81) */ 9815e8351deSBard Liao #define RT5670_PLL_N_MAX 0x1ff 9825e8351deSBard Liao #define RT5670_PLL_N_MASK (RT5670_PLL_N_MAX << 7) 9835e8351deSBard Liao #define RT5670_PLL_N_SFT 7 9845e8351deSBard Liao #define RT5670_PLL_K_MAX 0x1f 9855e8351deSBard Liao #define RT5670_PLL_K_MASK (RT5670_PLL_K_MAX) 9865e8351deSBard Liao #define RT5670_PLL_K_SFT 0 9875e8351deSBard Liao 9885e8351deSBard Liao /* PLL M/N/K Code Control 2 (0x82) */ 9895e8351deSBard Liao #define RT5670_PLL_M_MAX 0xf 9905e8351deSBard Liao #define RT5670_PLL_M_MASK (RT5670_PLL_M_MAX << 12) 9915e8351deSBard Liao #define RT5670_PLL_M_SFT 12 9925e8351deSBard Liao #define RT5670_PLL_M_BP (0x1 << 11) 9935e8351deSBard Liao #define RT5670_PLL_M_BP_SFT 11 9945e8351deSBard Liao 9955e8351deSBard Liao /* ASRC Control 1 (0x83) */ 9965e8351deSBard Liao #define RT5670_STO_T_MASK (0x1 << 15) 9975e8351deSBard Liao #define RT5670_STO_T_SFT 15 9985e8351deSBard Liao #define RT5670_STO_T_SCLK (0x0 << 15) 9995e8351deSBard Liao #define RT5670_STO_T_LRCK1 (0x1 << 15) 10005e8351deSBard Liao #define RT5670_M1_T_MASK (0x1 << 14) 10015e8351deSBard Liao #define RT5670_M1_T_SFT 14 10025e8351deSBard Liao #define RT5670_M1_T_I2S2 (0x0 << 14) 10035e8351deSBard Liao #define RT5670_M1_T_I2S2_D3 (0x1 << 14) 10045e8351deSBard Liao #define RT5670_I2S2_F_MASK (0x1 << 12) 10055e8351deSBard Liao #define RT5670_I2S2_F_SFT 12 10065e8351deSBard Liao #define RT5670_I2S2_F_I2S2_D2 (0x0 << 12) 10075e8351deSBard Liao #define RT5670_I2S2_F_I2S1_TCLK (0x1 << 12) 10085e8351deSBard Liao #define RT5670_DMIC_1_M_MASK (0x1 << 9) 10095e8351deSBard Liao #define RT5670_DMIC_1_M_SFT 9 10105e8351deSBard Liao #define RT5670_DMIC_1_M_NOR (0x0 << 9) 10115e8351deSBard Liao #define RT5670_DMIC_1_M_ASYN (0x1 << 9) 10125e8351deSBard Liao #define RT5670_DMIC_2_M_MASK (0x1 << 8) 10135e8351deSBard Liao #define RT5670_DMIC_2_M_SFT 8 10145e8351deSBard Liao #define RT5670_DMIC_2_M_NOR (0x0 << 8) 10155e8351deSBard Liao #define RT5670_DMIC_2_M_ASYN (0x1 << 8) 10165e8351deSBard Liao 10173aebec3aSBard Liao /* ASRC clock source selection (0x84, 0x85) */ 10183aebec3aSBard Liao #define RT5670_CLK_SEL_SYS (0x0) 10193aebec3aSBard Liao #define RT5670_CLK_SEL_I2S1_ASRC (0x1) 10203aebec3aSBard Liao #define RT5670_CLK_SEL_I2S2_ASRC (0x2) 10213aebec3aSBard Liao #define RT5670_CLK_SEL_I2S3_ASRC (0x3) 10223aebec3aSBard Liao #define RT5670_CLK_SEL_SYS2 (0x5) 10233aebec3aSBard Liao #define RT5670_CLK_SEL_SYS3 (0x6) 10243aebec3aSBard Liao 10255e8351deSBard Liao /* ASRC Control 2 (0x84) */ 10263aebec3aSBard Liao #define RT5670_DA_STO_CLK_SEL_MASK (0xf << 12) 10273aebec3aSBard Liao #define RT5670_DA_STO_CLK_SEL_SFT 12 10283aebec3aSBard Liao #define RT5670_DA_MONOL_CLK_SEL_MASK (0xf << 8) 10293aebec3aSBard Liao #define RT5670_DA_MONOL_CLK_SEL_SFT 8 10303aebec3aSBard Liao #define RT5670_DA_MONOR_CLK_SEL_MASK (0xf << 4) 10313aebec3aSBard Liao #define RT5670_DA_MONOR_CLK_SEL_SFT 4 10323aebec3aSBard Liao #define RT5670_AD_STO1_CLK_SEL_MASK (0xf << 0) 10333aebec3aSBard Liao #define RT5670_AD_STO1_CLK_SEL_SFT 0 10345e8351deSBard Liao 10355e8351deSBard Liao /* ASRC Control 3 (0x85) */ 10363aebec3aSBard Liao #define RT5670_UP_CLK_SEL_MASK (0xf << 12) 10373aebec3aSBard Liao #define RT5670_UP_CLK_SEL_SFT 12 10383aebec3aSBard Liao #define RT5670_DOWN_CLK_SEL_MASK (0xf << 8) 10393aebec3aSBard Liao #define RT5670_DOWN_CLK_SEL_SFT 8 10403aebec3aSBard Liao #define RT5670_AD_MONOL_CLK_SEL_MASK (0xf << 4) 10413aebec3aSBard Liao #define RT5670_AD_MONOL_CLK_SEL_SFT 4 10423aebec3aSBard Liao #define RT5670_AD_MONOR_CLK_SEL_MASK (0xf << 0) 10433aebec3aSBard Liao #define RT5670_AD_MONOR_CLK_SEL_SFT 0 10445e8351deSBard Liao 10455e8351deSBard Liao /* ASRC Control 4 (0x89) */ 10465e8351deSBard Liao #define RT5670_I2S1_PD_MASK (0x7 << 12) 10475e8351deSBard Liao #define RT5670_I2S1_PD_SFT 12 10485e8351deSBard Liao #define RT5670_I2S2_PD_MASK (0x7 << 8) 10495e8351deSBard Liao #define RT5670_I2S2_PD_SFT 8 10505e8351deSBard Liao 10515e8351deSBard Liao /* HPOUT Over Current Detection (0x8b) */ 10525e8351deSBard Liao #define RT5670_HP_OVCD_MASK (0x1 << 10) 10535e8351deSBard Liao #define RT5670_HP_OVCD_SFT 10 10545e8351deSBard Liao #define RT5670_HP_OVCD_DIS (0x0 << 10) 10555e8351deSBard Liao #define RT5670_HP_OVCD_EN (0x1 << 10) 10565e8351deSBard Liao #define RT5670_HP_OC_TH_MASK (0x3 << 8) 10575e8351deSBard Liao #define RT5670_HP_OC_TH_SFT 8 10585e8351deSBard Liao #define RT5670_HP_OC_TH_90 (0x0 << 8) 10595e8351deSBard Liao #define RT5670_HP_OC_TH_105 (0x1 << 8) 10605e8351deSBard Liao #define RT5670_HP_OC_TH_120 (0x2 << 8) 10615e8351deSBard Liao #define RT5670_HP_OC_TH_135 (0x3 << 8) 10625e8351deSBard Liao 10635e8351deSBard Liao /* Class D Over Current Control (0x8c) */ 10645e8351deSBard Liao #define RT5670_CLSD_OC_MASK (0x1 << 9) 10655e8351deSBard Liao #define RT5670_CLSD_OC_SFT 9 10665e8351deSBard Liao #define RT5670_CLSD_OC_PU (0x0 << 9) 10675e8351deSBard Liao #define RT5670_CLSD_OC_PD (0x1 << 9) 10685e8351deSBard Liao #define RT5670_AUTO_PD_MASK (0x1 << 8) 10695e8351deSBard Liao #define RT5670_AUTO_PD_SFT 8 10705e8351deSBard Liao #define RT5670_AUTO_PD_DIS (0x0 << 8) 10715e8351deSBard Liao #define RT5670_AUTO_PD_EN (0x1 << 8) 10725e8351deSBard Liao #define RT5670_CLSD_OC_TH_MASK (0x3f) 10735e8351deSBard Liao #define RT5670_CLSD_OC_TH_SFT 0 10745e8351deSBard Liao 10755e8351deSBard Liao /* Class D Output Control (0x8d) */ 10765e8351deSBard Liao #define RT5670_CLSD_RATIO_MASK (0xf << 12) 10775e8351deSBard Liao #define RT5670_CLSD_RATIO_SFT 12 10785e8351deSBard Liao #define RT5670_CLSD_OM_MASK (0x1 << 11) 10795e8351deSBard Liao #define RT5670_CLSD_OM_SFT 11 10805e8351deSBard Liao #define RT5670_CLSD_OM_MONO (0x0 << 11) 10815e8351deSBard Liao #define RT5670_CLSD_OM_STO (0x1 << 11) 10825e8351deSBard Liao #define RT5670_CLSD_SCH_MASK (0x1 << 10) 10835e8351deSBard Liao #define RT5670_CLSD_SCH_SFT 10 10845e8351deSBard Liao #define RT5670_CLSD_SCH_L (0x0 << 10) 10855e8351deSBard Liao #define RT5670_CLSD_SCH_S (0x1 << 10) 10865e8351deSBard Liao 10875e8351deSBard Liao /* Depop Mode Control 1 (0x8e) */ 10885e8351deSBard Liao #define RT5670_SMT_TRIG_MASK (0x1 << 15) 10895e8351deSBard Liao #define RT5670_SMT_TRIG_SFT 15 10905e8351deSBard Liao #define RT5670_SMT_TRIG_DIS (0x0 << 15) 10915e8351deSBard Liao #define RT5670_SMT_TRIG_EN (0x1 << 15) 10925e8351deSBard Liao #define RT5670_HP_L_SMT_MASK (0x1 << 9) 10935e8351deSBard Liao #define RT5670_HP_L_SMT_SFT 9 10945e8351deSBard Liao #define RT5670_HP_L_SMT_DIS (0x0 << 9) 10955e8351deSBard Liao #define RT5670_HP_L_SMT_EN (0x1 << 9) 10965e8351deSBard Liao #define RT5670_HP_R_SMT_MASK (0x1 << 8) 10975e8351deSBard Liao #define RT5670_HP_R_SMT_SFT 8 10985e8351deSBard Liao #define RT5670_HP_R_SMT_DIS (0x0 << 8) 10995e8351deSBard Liao #define RT5670_HP_R_SMT_EN (0x1 << 8) 11005e8351deSBard Liao #define RT5670_HP_CD_PD_MASK (0x1 << 7) 11015e8351deSBard Liao #define RT5670_HP_CD_PD_SFT 7 11025e8351deSBard Liao #define RT5670_HP_CD_PD_DIS (0x0 << 7) 11035e8351deSBard Liao #define RT5670_HP_CD_PD_EN (0x1 << 7) 11045e8351deSBard Liao #define RT5670_RSTN_MASK (0x1 << 6) 11055e8351deSBard Liao #define RT5670_RSTN_SFT 6 11065e8351deSBard Liao #define RT5670_RSTN_DIS (0x0 << 6) 11075e8351deSBard Liao #define RT5670_RSTN_EN (0x1 << 6) 11085e8351deSBard Liao #define RT5670_RSTP_MASK (0x1 << 5) 11095e8351deSBard Liao #define RT5670_RSTP_SFT 5 11105e8351deSBard Liao #define RT5670_RSTP_DIS (0x0 << 5) 11115e8351deSBard Liao #define RT5670_RSTP_EN (0x1 << 5) 11125e8351deSBard Liao #define RT5670_HP_CO_MASK (0x1 << 4) 11135e8351deSBard Liao #define RT5670_HP_CO_SFT 4 11145e8351deSBard Liao #define RT5670_HP_CO_DIS (0x0 << 4) 11155e8351deSBard Liao #define RT5670_HP_CO_EN (0x1 << 4) 11165e8351deSBard Liao #define RT5670_HP_CP_MASK (0x1 << 3) 11175e8351deSBard Liao #define RT5670_HP_CP_SFT 3 11185e8351deSBard Liao #define RT5670_HP_CP_PD (0x0 << 3) 11195e8351deSBard Liao #define RT5670_HP_CP_PU (0x1 << 3) 11205e8351deSBard Liao #define RT5670_HP_SG_MASK (0x1 << 2) 11215e8351deSBard Liao #define RT5670_HP_SG_SFT 2 11225e8351deSBard Liao #define RT5670_HP_SG_DIS (0x0 << 2) 11235e8351deSBard Liao #define RT5670_HP_SG_EN (0x1 << 2) 11245e8351deSBard Liao #define RT5670_HP_DP_MASK (0x1 << 1) 11255e8351deSBard Liao #define RT5670_HP_DP_SFT 1 11265e8351deSBard Liao #define RT5670_HP_DP_PD (0x0 << 1) 11275e8351deSBard Liao #define RT5670_HP_DP_PU (0x1 << 1) 11285e8351deSBard Liao #define RT5670_HP_CB_MASK (0x1) 11295e8351deSBard Liao #define RT5670_HP_CB_SFT 0 11305e8351deSBard Liao #define RT5670_HP_CB_PD (0x0) 11315e8351deSBard Liao #define RT5670_HP_CB_PU (0x1) 11325e8351deSBard Liao 11335e8351deSBard Liao /* Depop Mode Control 2 (0x8f) */ 11345e8351deSBard Liao #define RT5670_DEPOP_MASK (0x1 << 13) 11355e8351deSBard Liao #define RT5670_DEPOP_SFT 13 11365e8351deSBard Liao #define RT5670_DEPOP_AUTO (0x0 << 13) 11375e8351deSBard Liao #define RT5670_DEPOP_MAN (0x1 << 13) 11385e8351deSBard Liao #define RT5670_RAMP_MASK (0x1 << 12) 11395e8351deSBard Liao #define RT5670_RAMP_SFT 12 11405e8351deSBard Liao #define RT5670_RAMP_DIS (0x0 << 12) 11415e8351deSBard Liao #define RT5670_RAMP_EN (0x1 << 12) 11425e8351deSBard Liao #define RT5670_BPS_MASK (0x1 << 11) 11435e8351deSBard Liao #define RT5670_BPS_SFT 11 11445e8351deSBard Liao #define RT5670_BPS_DIS (0x0 << 11) 11455e8351deSBard Liao #define RT5670_BPS_EN (0x1 << 11) 11465e8351deSBard Liao #define RT5670_FAST_UPDN_MASK (0x1 << 10) 11475e8351deSBard Liao #define RT5670_FAST_UPDN_SFT 10 11485e8351deSBard Liao #define RT5670_FAST_UPDN_DIS (0x0 << 10) 11495e8351deSBard Liao #define RT5670_FAST_UPDN_EN (0x1 << 10) 11505e8351deSBard Liao #define RT5670_MRES_MASK (0x3 << 8) 11515e8351deSBard Liao #define RT5670_MRES_SFT 8 11525e8351deSBard Liao #define RT5670_MRES_15MO (0x0 << 8) 11535e8351deSBard Liao #define RT5670_MRES_25MO (0x1 << 8) 11545e8351deSBard Liao #define RT5670_MRES_35MO (0x2 << 8) 11555e8351deSBard Liao #define RT5670_MRES_45MO (0x3 << 8) 11565e8351deSBard Liao #define RT5670_VLO_MASK (0x1 << 7) 11575e8351deSBard Liao #define RT5670_VLO_SFT 7 11585e8351deSBard Liao #define RT5670_VLO_3V (0x0 << 7) 11595e8351deSBard Liao #define RT5670_VLO_32V (0x1 << 7) 11605e8351deSBard Liao #define RT5670_DIG_DP_MASK (0x1 << 6) 11615e8351deSBard Liao #define RT5670_DIG_DP_SFT 6 11625e8351deSBard Liao #define RT5670_DIG_DP_DIS (0x0 << 6) 11635e8351deSBard Liao #define RT5670_DIG_DP_EN (0x1 << 6) 11645e8351deSBard Liao #define RT5670_DP_TH_MASK (0x3 << 4) 11655e8351deSBard Liao #define RT5670_DP_TH_SFT 4 11665e8351deSBard Liao 11675e8351deSBard Liao /* Depop Mode Control 3 (0x90) */ 11685e8351deSBard Liao #define RT5670_CP_SYS_MASK (0x7 << 12) 11695e8351deSBard Liao #define RT5670_CP_SYS_SFT 12 11705e8351deSBard Liao #define RT5670_CP_FQ1_MASK (0x7 << 8) 11715e8351deSBard Liao #define RT5670_CP_FQ1_SFT 8 11725e8351deSBard Liao #define RT5670_CP_FQ2_MASK (0x7 << 4) 11735e8351deSBard Liao #define RT5670_CP_FQ2_SFT 4 11745e8351deSBard Liao #define RT5670_CP_FQ3_MASK (0x7) 11755e8351deSBard Liao #define RT5670_CP_FQ3_SFT 0 11765e8351deSBard Liao #define RT5670_CP_FQ_1_5_KHZ 0 11775e8351deSBard Liao #define RT5670_CP_FQ_3_KHZ 1 11785e8351deSBard Liao #define RT5670_CP_FQ_6_KHZ 2 11795e8351deSBard Liao #define RT5670_CP_FQ_12_KHZ 3 11805e8351deSBard Liao #define RT5670_CP_FQ_24_KHZ 4 11815e8351deSBard Liao #define RT5670_CP_FQ_48_KHZ 5 11825e8351deSBard Liao #define RT5670_CP_FQ_96_KHZ 6 11835e8351deSBard Liao #define RT5670_CP_FQ_192_KHZ 7 11845e8351deSBard Liao 11855e8351deSBard Liao /* HPOUT charge pump (0x91) */ 11865e8351deSBard Liao #define RT5670_OSW_L_MASK (0x1 << 11) 11875e8351deSBard Liao #define RT5670_OSW_L_SFT 11 11885e8351deSBard Liao #define RT5670_OSW_L_DIS (0x0 << 11) 11895e8351deSBard Liao #define RT5670_OSW_L_EN (0x1 << 11) 11905e8351deSBard Liao #define RT5670_OSW_R_MASK (0x1 << 10) 11915e8351deSBard Liao #define RT5670_OSW_R_SFT 10 11925e8351deSBard Liao #define RT5670_OSW_R_DIS (0x0 << 10) 11935e8351deSBard Liao #define RT5670_OSW_R_EN (0x1 << 10) 11945e8351deSBard Liao #define RT5670_PM_HP_MASK (0x3 << 8) 11955e8351deSBard Liao #define RT5670_PM_HP_SFT 8 11965e8351deSBard Liao #define RT5670_PM_HP_LV (0x0 << 8) 11975e8351deSBard Liao #define RT5670_PM_HP_MV (0x1 << 8) 11985e8351deSBard Liao #define RT5670_PM_HP_HV (0x2 << 8) 11995e8351deSBard Liao #define RT5670_IB_HP_MASK (0x3 << 6) 12005e8351deSBard Liao #define RT5670_IB_HP_SFT 6 12015e8351deSBard Liao #define RT5670_IB_HP_125IL (0x0 << 6) 12025e8351deSBard Liao #define RT5670_IB_HP_25IL (0x1 << 6) 12035e8351deSBard Liao #define RT5670_IB_HP_5IL (0x2 << 6) 12045e8351deSBard Liao #define RT5670_IB_HP_1IL (0x3 << 6) 12055e8351deSBard Liao 12065e8351deSBard Liao /* PV detection and SPK gain control (0x92) */ 12075e8351deSBard Liao #define RT5670_PVDD_DET_MASK (0x1 << 15) 12085e8351deSBard Liao #define RT5670_PVDD_DET_SFT 15 12095e8351deSBard Liao #define RT5670_PVDD_DET_DIS (0x0 << 15) 12105e8351deSBard Liao #define RT5670_PVDD_DET_EN (0x1 << 15) 12115e8351deSBard Liao #define RT5670_SPK_AG_MASK (0x1 << 14) 12125e8351deSBard Liao #define RT5670_SPK_AG_SFT 14 12135e8351deSBard Liao #define RT5670_SPK_AG_DIS (0x0 << 14) 12145e8351deSBard Liao #define RT5670_SPK_AG_EN (0x1 << 14) 12155e8351deSBard Liao 12165e8351deSBard Liao /* Micbias Control (0x93) */ 12175e8351deSBard Liao #define RT5670_MIC1_BS_MASK (0x1 << 15) 12185e8351deSBard Liao #define RT5670_MIC1_BS_SFT 15 12195e8351deSBard Liao #define RT5670_MIC1_BS_9AV (0x0 << 15) 12205e8351deSBard Liao #define RT5670_MIC1_BS_75AV (0x1 << 15) 12215e8351deSBard Liao #define RT5670_MIC2_BS_MASK (0x1 << 14) 12225e8351deSBard Liao #define RT5670_MIC2_BS_SFT 14 12235e8351deSBard Liao #define RT5670_MIC2_BS_9AV (0x0 << 14) 12245e8351deSBard Liao #define RT5670_MIC2_BS_75AV (0x1 << 14) 12255e8351deSBard Liao #define RT5670_MIC1_CLK_MASK (0x1 << 13) 12265e8351deSBard Liao #define RT5670_MIC1_CLK_SFT 13 12275e8351deSBard Liao #define RT5670_MIC1_CLK_DIS (0x0 << 13) 12285e8351deSBard Liao #define RT5670_MIC1_CLK_EN (0x1 << 13) 12295e8351deSBard Liao #define RT5670_MIC2_CLK_MASK (0x1 << 12) 12305e8351deSBard Liao #define RT5670_MIC2_CLK_SFT 12 12315e8351deSBard Liao #define RT5670_MIC2_CLK_DIS (0x0 << 12) 12325e8351deSBard Liao #define RT5670_MIC2_CLK_EN (0x1 << 12) 12335e8351deSBard Liao #define RT5670_MIC1_OVCD_MASK (0x1 << 11) 12345e8351deSBard Liao #define RT5670_MIC1_OVCD_SFT 11 12355e8351deSBard Liao #define RT5670_MIC1_OVCD_DIS (0x0 << 11) 12365e8351deSBard Liao #define RT5670_MIC1_OVCD_EN (0x1 << 11) 12375e8351deSBard Liao #define RT5670_MIC1_OVTH_MASK (0x3 << 9) 12385e8351deSBard Liao #define RT5670_MIC1_OVTH_SFT 9 12395e8351deSBard Liao #define RT5670_MIC1_OVTH_600UA (0x0 << 9) 12405e8351deSBard Liao #define RT5670_MIC1_OVTH_1500UA (0x1 << 9) 12415e8351deSBard Liao #define RT5670_MIC1_OVTH_2000UA (0x2 << 9) 12425e8351deSBard Liao #define RT5670_MIC2_OVCD_MASK (0x1 << 8) 12435e8351deSBard Liao #define RT5670_MIC2_OVCD_SFT 8 12445e8351deSBard Liao #define RT5670_MIC2_OVCD_DIS (0x0 << 8) 12455e8351deSBard Liao #define RT5670_MIC2_OVCD_EN (0x1 << 8) 12465e8351deSBard Liao #define RT5670_MIC2_OVTH_MASK (0x3 << 6) 12475e8351deSBard Liao #define RT5670_MIC2_OVTH_SFT 6 12485e8351deSBard Liao #define RT5670_MIC2_OVTH_600UA (0x0 << 6) 12495e8351deSBard Liao #define RT5670_MIC2_OVTH_1500UA (0x1 << 6) 12505e8351deSBard Liao #define RT5670_MIC2_OVTH_2000UA (0x2 << 6) 12515e8351deSBard Liao #define RT5670_PWR_MB_MASK (0x1 << 5) 12525e8351deSBard Liao #define RT5670_PWR_MB_SFT 5 12535e8351deSBard Liao #define RT5670_PWR_MB_PD (0x0 << 5) 12545e8351deSBard Liao #define RT5670_PWR_MB_PU (0x1 << 5) 12555e8351deSBard Liao #define RT5670_PWR_CLK25M_MASK (0x1 << 4) 12565e8351deSBard Liao #define RT5670_PWR_CLK25M_SFT 4 12575e8351deSBard Liao #define RT5670_PWR_CLK25M_PD (0x0 << 4) 12585e8351deSBard Liao #define RT5670_PWR_CLK25M_PU (0x1 << 4) 12595e8351deSBard Liao 12605e8351deSBard Liao /* Analog JD Control 1 (0x94) */ 12615e8351deSBard Liao #define RT5670_JD1_MODE_MASK (0x3 << 0) 12625e8351deSBard Liao #define RT5670_JD1_MODE_0 (0x0 << 0) 12635e8351deSBard Liao #define RT5670_JD1_MODE_1 (0x1 << 0) 12645e8351deSBard Liao #define RT5670_JD1_MODE_2 (0x2 << 0) 12655e8351deSBard Liao 12665e8351deSBard Liao /* VAD Control 4 (0x9d) */ 12675e8351deSBard Liao #define RT5670_VAD_SEL_MASK (0x3 << 8) 12685e8351deSBard Liao #define RT5670_VAD_SEL_SFT 8 12695e8351deSBard Liao 12705e8351deSBard Liao /* EQ Control 1 (0xb0) */ 12715e8351deSBard Liao #define RT5670_EQ_SRC_MASK (0x1 << 15) 12725e8351deSBard Liao #define RT5670_EQ_SRC_SFT 15 12735e8351deSBard Liao #define RT5670_EQ_SRC_DAC (0x0 << 15) 12745e8351deSBard Liao #define RT5670_EQ_SRC_ADC (0x1 << 15) 12755e8351deSBard Liao #define RT5670_EQ_UPD (0x1 << 14) 12765e8351deSBard Liao #define RT5670_EQ_UPD_BIT 14 12775e8351deSBard Liao #define RT5670_EQ_CD_MASK (0x1 << 13) 12785e8351deSBard Liao #define RT5670_EQ_CD_SFT 13 12795e8351deSBard Liao #define RT5670_EQ_CD_DIS (0x0 << 13) 12805e8351deSBard Liao #define RT5670_EQ_CD_EN (0x1 << 13) 12815e8351deSBard Liao #define RT5670_EQ_DITH_MASK (0x3 << 8) 12825e8351deSBard Liao #define RT5670_EQ_DITH_SFT 8 12835e8351deSBard Liao #define RT5670_EQ_DITH_NOR (0x0 << 8) 12845e8351deSBard Liao #define RT5670_EQ_DITH_LSB (0x1 << 8) 12855e8351deSBard Liao #define RT5670_EQ_DITH_LSB_1 (0x2 << 8) 12865e8351deSBard Liao #define RT5670_EQ_DITH_LSB_2 (0x3 << 8) 12875e8351deSBard Liao 12885e8351deSBard Liao /* EQ Control 2 (0xb1) */ 12895e8351deSBard Liao #define RT5670_EQ_HPF1_M_MASK (0x1 << 8) 12905e8351deSBard Liao #define RT5670_EQ_HPF1_M_SFT 8 12915e8351deSBard Liao #define RT5670_EQ_HPF1_M_HI (0x0 << 8) 12925e8351deSBard Liao #define RT5670_EQ_HPF1_M_1ST (0x1 << 8) 12935e8351deSBard Liao #define RT5670_EQ_LPF1_M_MASK (0x1 << 7) 12945e8351deSBard Liao #define RT5670_EQ_LPF1_M_SFT 7 12955e8351deSBard Liao #define RT5670_EQ_LPF1_M_LO (0x0 << 7) 12965e8351deSBard Liao #define RT5670_EQ_LPF1_M_1ST (0x1 << 7) 12975e8351deSBard Liao #define RT5670_EQ_HPF2_MASK (0x1 << 6) 12985e8351deSBard Liao #define RT5670_EQ_HPF2_SFT 6 12995e8351deSBard Liao #define RT5670_EQ_HPF2_DIS (0x0 << 6) 13005e8351deSBard Liao #define RT5670_EQ_HPF2_EN (0x1 << 6) 13015e8351deSBard Liao #define RT5670_EQ_HPF1_MASK (0x1 << 5) 13025e8351deSBard Liao #define RT5670_EQ_HPF1_SFT 5 13035e8351deSBard Liao #define RT5670_EQ_HPF1_DIS (0x0 << 5) 13045e8351deSBard Liao #define RT5670_EQ_HPF1_EN (0x1 << 5) 13055e8351deSBard Liao #define RT5670_EQ_BPF4_MASK (0x1 << 4) 13065e8351deSBard Liao #define RT5670_EQ_BPF4_SFT 4 13075e8351deSBard Liao #define RT5670_EQ_BPF4_DIS (0x0 << 4) 13085e8351deSBard Liao #define RT5670_EQ_BPF4_EN (0x1 << 4) 13095e8351deSBard Liao #define RT5670_EQ_BPF3_MASK (0x1 << 3) 13105e8351deSBard Liao #define RT5670_EQ_BPF3_SFT 3 13115e8351deSBard Liao #define RT5670_EQ_BPF3_DIS (0x0 << 3) 13125e8351deSBard Liao #define RT5670_EQ_BPF3_EN (0x1 << 3) 13135e8351deSBard Liao #define RT5670_EQ_BPF2_MASK (0x1 << 2) 13145e8351deSBard Liao #define RT5670_EQ_BPF2_SFT 2 13155e8351deSBard Liao #define RT5670_EQ_BPF2_DIS (0x0 << 2) 13165e8351deSBard Liao #define RT5670_EQ_BPF2_EN (0x1 << 2) 13175e8351deSBard Liao #define RT5670_EQ_BPF1_MASK (0x1 << 1) 13185e8351deSBard Liao #define RT5670_EQ_BPF1_SFT 1 13195e8351deSBard Liao #define RT5670_EQ_BPF1_DIS (0x0 << 1) 13205e8351deSBard Liao #define RT5670_EQ_BPF1_EN (0x1 << 1) 13215e8351deSBard Liao #define RT5670_EQ_LPF_MASK (0x1) 13225e8351deSBard Liao #define RT5670_EQ_LPF_SFT 0 13235e8351deSBard Liao #define RT5670_EQ_LPF_DIS (0x0) 13245e8351deSBard Liao #define RT5670_EQ_LPF_EN (0x1) 13255e8351deSBard Liao #define RT5670_EQ_CTRL_MASK (0x7f) 13265e8351deSBard Liao 13275e8351deSBard Liao /* Memory Test (0xb2) */ 13285e8351deSBard Liao #define RT5670_MT_MASK (0x1 << 15) 13295e8351deSBard Liao #define RT5670_MT_SFT 15 13305e8351deSBard Liao #define RT5670_MT_DIS (0x0 << 15) 13315e8351deSBard Liao #define RT5670_MT_EN (0x1 << 15) 13325e8351deSBard Liao 13335e8351deSBard Liao /* DRC/AGC Control 1 (0xb4) */ 13345e8351deSBard Liao #define RT5670_DRC_AGC_P_MASK (0x1 << 15) 13355e8351deSBard Liao #define RT5670_DRC_AGC_P_SFT 15 13365e8351deSBard Liao #define RT5670_DRC_AGC_P_DAC (0x0 << 15) 13375e8351deSBard Liao #define RT5670_DRC_AGC_P_ADC (0x1 << 15) 13385e8351deSBard Liao #define RT5670_DRC_AGC_MASK (0x1 << 14) 13395e8351deSBard Liao #define RT5670_DRC_AGC_SFT 14 13405e8351deSBard Liao #define RT5670_DRC_AGC_DIS (0x0 << 14) 13415e8351deSBard Liao #define RT5670_DRC_AGC_EN (0x1 << 14) 13425e8351deSBard Liao #define RT5670_DRC_AGC_UPD (0x1 << 13) 13435e8351deSBard Liao #define RT5670_DRC_AGC_UPD_BIT 13 13445e8351deSBard Liao #define RT5670_DRC_AGC_AR_MASK (0x1f << 8) 13455e8351deSBard Liao #define RT5670_DRC_AGC_AR_SFT 8 13465e8351deSBard Liao #define RT5670_DRC_AGC_R_MASK (0x7 << 5) 13475e8351deSBard Liao #define RT5670_DRC_AGC_R_SFT 5 13485e8351deSBard Liao #define RT5670_DRC_AGC_R_48K (0x1 << 5) 13495e8351deSBard Liao #define RT5670_DRC_AGC_R_96K (0x2 << 5) 13505e8351deSBard Liao #define RT5670_DRC_AGC_R_192K (0x3 << 5) 13515e8351deSBard Liao #define RT5670_DRC_AGC_R_441K (0x5 << 5) 13525e8351deSBard Liao #define RT5670_DRC_AGC_R_882K (0x6 << 5) 13535e8351deSBard Liao #define RT5670_DRC_AGC_R_1764K (0x7 << 5) 13545e8351deSBard Liao #define RT5670_DRC_AGC_RC_MASK (0x1f) 13555e8351deSBard Liao #define RT5670_DRC_AGC_RC_SFT 0 13565e8351deSBard Liao 13575e8351deSBard Liao /* DRC/AGC Control 2 (0xb5) */ 13585e8351deSBard Liao #define RT5670_DRC_AGC_POB_MASK (0x3f << 8) 13595e8351deSBard Liao #define RT5670_DRC_AGC_POB_SFT 8 13605e8351deSBard Liao #define RT5670_DRC_AGC_CP_MASK (0x1 << 7) 13615e8351deSBard Liao #define RT5670_DRC_AGC_CP_SFT 7 13625e8351deSBard Liao #define RT5670_DRC_AGC_CP_DIS (0x0 << 7) 13635e8351deSBard Liao #define RT5670_DRC_AGC_CP_EN (0x1 << 7) 13645e8351deSBard Liao #define RT5670_DRC_AGC_CPR_MASK (0x3 << 5) 13655e8351deSBard Liao #define RT5670_DRC_AGC_CPR_SFT 5 13665e8351deSBard Liao #define RT5670_DRC_AGC_CPR_1_1 (0x0 << 5) 13675e8351deSBard Liao #define RT5670_DRC_AGC_CPR_1_2 (0x1 << 5) 13685e8351deSBard Liao #define RT5670_DRC_AGC_CPR_1_3 (0x2 << 5) 13695e8351deSBard Liao #define RT5670_DRC_AGC_CPR_1_4 (0x3 << 5) 13705e8351deSBard Liao #define RT5670_DRC_AGC_PRB_MASK (0x1f) 13715e8351deSBard Liao #define RT5670_DRC_AGC_PRB_SFT 0 13725e8351deSBard Liao 13735e8351deSBard Liao /* DRC/AGC Control 3 (0xb6) */ 13745e8351deSBard Liao #define RT5670_DRC_AGC_NGB_MASK (0xf << 12) 13755e8351deSBard Liao #define RT5670_DRC_AGC_NGB_SFT 12 13765e8351deSBard Liao #define RT5670_DRC_AGC_TAR_MASK (0x1f << 7) 13775e8351deSBard Liao #define RT5670_DRC_AGC_TAR_SFT 7 13785e8351deSBard Liao #define RT5670_DRC_AGC_NG_MASK (0x1 << 6) 13795e8351deSBard Liao #define RT5670_DRC_AGC_NG_SFT 6 13805e8351deSBard Liao #define RT5670_DRC_AGC_NG_DIS (0x0 << 6) 13815e8351deSBard Liao #define RT5670_DRC_AGC_NG_EN (0x1 << 6) 13825e8351deSBard Liao #define RT5670_DRC_AGC_NGH_MASK (0x1 << 5) 13835e8351deSBard Liao #define RT5670_DRC_AGC_NGH_SFT 5 13845e8351deSBard Liao #define RT5670_DRC_AGC_NGH_DIS (0x0 << 5) 13855e8351deSBard Liao #define RT5670_DRC_AGC_NGH_EN (0x1 << 5) 13865e8351deSBard Liao #define RT5670_DRC_AGC_NGT_MASK (0x1f) 13875e8351deSBard Liao #define RT5670_DRC_AGC_NGT_SFT 0 13885e8351deSBard Liao 13895e8351deSBard Liao /* Jack Detect Control (0xbb) */ 13905e8351deSBard Liao #define RT5670_JD_MASK (0x7 << 13) 13915e8351deSBard Liao #define RT5670_JD_SFT 13 13925e8351deSBard Liao #define RT5670_JD_DIS (0x0 << 13) 13935e8351deSBard Liao #define RT5670_JD_GPIO1 (0x1 << 13) 13945e8351deSBard Liao #define RT5670_JD_JD1_IN4P (0x2 << 13) 13955e8351deSBard Liao #define RT5670_JD_JD2_IN4N (0x3 << 13) 13965e8351deSBard Liao #define RT5670_JD_GPIO2 (0x4 << 13) 13975e8351deSBard Liao #define RT5670_JD_GPIO3 (0x5 << 13) 13985e8351deSBard Liao #define RT5670_JD_GPIO4 (0x6 << 13) 13995e8351deSBard Liao #define RT5670_JD_HP_MASK (0x1 << 11) 14005e8351deSBard Liao #define RT5670_JD_HP_SFT 11 14015e8351deSBard Liao #define RT5670_JD_HP_DIS (0x0 << 11) 14025e8351deSBard Liao #define RT5670_JD_HP_EN (0x1 << 11) 14035e8351deSBard Liao #define RT5670_JD_HP_TRG_MASK (0x1 << 10) 14045e8351deSBard Liao #define RT5670_JD_HP_TRG_SFT 10 14055e8351deSBard Liao #define RT5670_JD_HP_TRG_LO (0x0 << 10) 14065e8351deSBard Liao #define RT5670_JD_HP_TRG_HI (0x1 << 10) 14075e8351deSBard Liao #define RT5670_JD_SPL_MASK (0x1 << 9) 14085e8351deSBard Liao #define RT5670_JD_SPL_SFT 9 14095e8351deSBard Liao #define RT5670_JD_SPL_DIS (0x0 << 9) 14105e8351deSBard Liao #define RT5670_JD_SPL_EN (0x1 << 9) 14115e8351deSBard Liao #define RT5670_JD_SPL_TRG_MASK (0x1 << 8) 14125e8351deSBard Liao #define RT5670_JD_SPL_TRG_SFT 8 14135e8351deSBard Liao #define RT5670_JD_SPL_TRG_LO (0x0 << 8) 14145e8351deSBard Liao #define RT5670_JD_SPL_TRG_HI (0x1 << 8) 14155e8351deSBard Liao #define RT5670_JD_SPR_MASK (0x1 << 7) 14165e8351deSBard Liao #define RT5670_JD_SPR_SFT 7 14175e8351deSBard Liao #define RT5670_JD_SPR_DIS (0x0 << 7) 14185e8351deSBard Liao #define RT5670_JD_SPR_EN (0x1 << 7) 14195e8351deSBard Liao #define RT5670_JD_SPR_TRG_MASK (0x1 << 6) 14205e8351deSBard Liao #define RT5670_JD_SPR_TRG_SFT 6 14215e8351deSBard Liao #define RT5670_JD_SPR_TRG_LO (0x0 << 6) 14225e8351deSBard Liao #define RT5670_JD_SPR_TRG_HI (0x1 << 6) 14235e8351deSBard Liao #define RT5670_JD_MO_MASK (0x1 << 5) 14245e8351deSBard Liao #define RT5670_JD_MO_SFT 5 14255e8351deSBard Liao #define RT5670_JD_MO_DIS (0x0 << 5) 14265e8351deSBard Liao #define RT5670_JD_MO_EN (0x1 << 5) 14275e8351deSBard Liao #define RT5670_JD_MO_TRG_MASK (0x1 << 4) 14285e8351deSBard Liao #define RT5670_JD_MO_TRG_SFT 4 14295e8351deSBard Liao #define RT5670_JD_MO_TRG_LO (0x0 << 4) 14305e8351deSBard Liao #define RT5670_JD_MO_TRG_HI (0x1 << 4) 14315e8351deSBard Liao #define RT5670_JD_LO_MASK (0x1 << 3) 14325e8351deSBard Liao #define RT5670_JD_LO_SFT 3 14335e8351deSBard Liao #define RT5670_JD_LO_DIS (0x0 << 3) 14345e8351deSBard Liao #define RT5670_JD_LO_EN (0x1 << 3) 14355e8351deSBard Liao #define RT5670_JD_LO_TRG_MASK (0x1 << 2) 14365e8351deSBard Liao #define RT5670_JD_LO_TRG_SFT 2 14375e8351deSBard Liao #define RT5670_JD_LO_TRG_LO (0x0 << 2) 14385e8351deSBard Liao #define RT5670_JD_LO_TRG_HI (0x1 << 2) 14395e8351deSBard Liao #define RT5670_JD1_IN4P_MASK (0x1 << 1) 14405e8351deSBard Liao #define RT5670_JD1_IN4P_SFT 1 14415e8351deSBard Liao #define RT5670_JD1_IN4P_DIS (0x0 << 1) 14425e8351deSBard Liao #define RT5670_JD1_IN4P_EN (0x1 << 1) 14435e8351deSBard Liao #define RT5670_JD2_IN4N_MASK (0x1) 14445e8351deSBard Liao #define RT5670_JD2_IN4N_SFT 0 14455e8351deSBard Liao #define RT5670_JD2_IN4N_DIS (0x0) 14465e8351deSBard Liao #define RT5670_JD2_IN4N_EN (0x1) 14475e8351deSBard Liao 14485e8351deSBard Liao /* IRQ Control 1 (0xbd) */ 14495e8351deSBard Liao #define RT5670_IRQ_JD_MASK (0x1 << 15) 14505e8351deSBard Liao #define RT5670_IRQ_JD_SFT 15 14515e8351deSBard Liao #define RT5670_IRQ_JD_BP (0x0 << 15) 14525e8351deSBard Liao #define RT5670_IRQ_JD_NOR (0x1 << 15) 14535e8351deSBard Liao #define RT5670_IRQ_OT_MASK (0x1 << 14) 14545e8351deSBard Liao #define RT5670_IRQ_OT_SFT 14 14555e8351deSBard Liao #define RT5670_IRQ_OT_BP (0x0 << 14) 14565e8351deSBard Liao #define RT5670_IRQ_OT_NOR (0x1 << 14) 14575e8351deSBard Liao #define RT5670_JD_STKY_MASK (0x1 << 13) 14585e8351deSBard Liao #define RT5670_JD_STKY_SFT 13 14595e8351deSBard Liao #define RT5670_JD_STKY_DIS (0x0 << 13) 14605e8351deSBard Liao #define RT5670_JD_STKY_EN (0x1 << 13) 14615e8351deSBard Liao #define RT5670_OT_STKY_MASK (0x1 << 12) 14625e8351deSBard Liao #define RT5670_OT_STKY_SFT 12 14635e8351deSBard Liao #define RT5670_OT_STKY_DIS (0x0 << 12) 14645e8351deSBard Liao #define RT5670_OT_STKY_EN (0x1 << 12) 14655e8351deSBard Liao #define RT5670_JD_P_MASK (0x1 << 11) 14665e8351deSBard Liao #define RT5670_JD_P_SFT 11 14675e8351deSBard Liao #define RT5670_JD_P_NOR (0x0 << 11) 14685e8351deSBard Liao #define RT5670_JD_P_INV (0x1 << 11) 14695e8351deSBard Liao #define RT5670_OT_P_MASK (0x1 << 10) 14705e8351deSBard Liao #define RT5670_OT_P_SFT 10 14715e8351deSBard Liao #define RT5670_OT_P_NOR (0x0 << 10) 14725e8351deSBard Liao #define RT5670_OT_P_INV (0x1 << 10) 14735e8351deSBard Liao #define RT5670_JD1_1_EN_MASK (0x1 << 9) 14745e8351deSBard Liao #define RT5670_JD1_1_EN_SFT 9 14755e8351deSBard Liao #define RT5670_JD1_1_DIS (0x0 << 9) 14765e8351deSBard Liao #define RT5670_JD1_1_EN (0x1 << 9) 14775e8351deSBard Liao 14785e8351deSBard Liao /* IRQ Control 2 (0xbe) */ 14795e8351deSBard Liao #define RT5670_IRQ_MB1_OC_MASK (0x1 << 15) 14805e8351deSBard Liao #define RT5670_IRQ_MB1_OC_SFT 15 14815e8351deSBard Liao #define RT5670_IRQ_MB1_OC_BP (0x0 << 15) 14825e8351deSBard Liao #define RT5670_IRQ_MB1_OC_NOR (0x1 << 15) 14835e8351deSBard Liao #define RT5670_IRQ_MB2_OC_MASK (0x1 << 14) 14845e8351deSBard Liao #define RT5670_IRQ_MB2_OC_SFT 14 14855e8351deSBard Liao #define RT5670_IRQ_MB2_OC_BP (0x0 << 14) 14865e8351deSBard Liao #define RT5670_IRQ_MB2_OC_NOR (0x1 << 14) 14875e8351deSBard Liao #define RT5670_MB1_OC_STKY_MASK (0x1 << 11) 14885e8351deSBard Liao #define RT5670_MB1_OC_STKY_SFT 11 14895e8351deSBard Liao #define RT5670_MB1_OC_STKY_DIS (0x0 << 11) 14905e8351deSBard Liao #define RT5670_MB1_OC_STKY_EN (0x1 << 11) 14915e8351deSBard Liao #define RT5670_MB2_OC_STKY_MASK (0x1 << 10) 14925e8351deSBard Liao #define RT5670_MB2_OC_STKY_SFT 10 14935e8351deSBard Liao #define RT5670_MB2_OC_STKY_DIS (0x0 << 10) 14945e8351deSBard Liao #define RT5670_MB2_OC_STKY_EN (0x1 << 10) 14955e8351deSBard Liao #define RT5670_MB1_OC_P_MASK (0x1 << 7) 14965e8351deSBard Liao #define RT5670_MB1_OC_P_SFT 7 14975e8351deSBard Liao #define RT5670_MB1_OC_P_NOR (0x0 << 7) 14985e8351deSBard Liao #define RT5670_MB1_OC_P_INV (0x1 << 7) 14995e8351deSBard Liao #define RT5670_MB2_OC_P_MASK (0x1 << 6) 15005e8351deSBard Liao #define RT5670_MB2_OC_P_SFT 6 15015e8351deSBard Liao #define RT5670_MB2_OC_P_NOR (0x0 << 6) 15025e8351deSBard Liao #define RT5670_MB2_OC_P_INV (0x1 << 6) 15035e8351deSBard Liao #define RT5670_MB1_OC_CLR (0x1 << 3) 15045e8351deSBard Liao #define RT5670_MB1_OC_CLR_SFT 3 15055e8351deSBard Liao #define RT5670_MB2_OC_CLR (0x1 << 2) 15065e8351deSBard Liao #define RT5670_MB2_OC_CLR_SFT 2 15075e8351deSBard Liao 15085e8351deSBard Liao /* GPIO Control 1 (0xc0) */ 15095e8351deSBard Liao #define RT5670_GP1_PIN_MASK (0x1 << 15) 15105e8351deSBard Liao #define RT5670_GP1_PIN_SFT 15 15115e8351deSBard Liao #define RT5670_GP1_PIN_GPIO1 (0x0 << 15) 15125e8351deSBard Liao #define RT5670_GP1_PIN_IRQ (0x1 << 15) 15135e8351deSBard Liao #define RT5670_GP2_PIN_MASK (0x1 << 14) 15145e8351deSBard Liao #define RT5670_GP2_PIN_SFT 14 15155e8351deSBard Liao #define RT5670_GP2_PIN_GPIO2 (0x0 << 14) 15165e8351deSBard Liao #define RT5670_GP2_PIN_DMIC1_SCL (0x1 << 14) 15175e8351deSBard Liao #define RT5670_GP3_PIN_MASK (0x3 << 12) 15185e8351deSBard Liao #define RT5670_GP3_PIN_SFT 12 15195e8351deSBard Liao #define RT5670_GP3_PIN_GPIO3 (0x0 << 12) 15205e8351deSBard Liao #define RT5670_GP3_PIN_DMIC1_SDA (0x1 << 12) 15215e8351deSBard Liao #define RT5670_GP3_PIN_IRQ (0x2 << 12) 15225e8351deSBard Liao #define RT5670_GP4_PIN_MASK (0x1 << 11) 15235e8351deSBard Liao #define RT5670_GP4_PIN_SFT 11 15245e8351deSBard Liao #define RT5670_GP4_PIN_GPIO4 (0x0 << 11) 15255e8351deSBard Liao #define RT5670_GP4_PIN_DMIC2_SDA (0x1 << 11) 15265e8351deSBard Liao #define RT5670_DP_SIG_MASK (0x1 << 10) 15275e8351deSBard Liao #define RT5670_DP_SIG_SFT 10 15285e8351deSBard Liao #define RT5670_DP_SIG_TEST (0x0 << 10) 15295e8351deSBard Liao #define RT5670_DP_SIG_AP (0x1 << 10) 15305e8351deSBard Liao #define RT5670_GPIO_M_MASK (0x1 << 9) 15315e8351deSBard Liao #define RT5670_GPIO_M_SFT 9 15325e8351deSBard Liao #define RT5670_GPIO_M_FLT (0x0 << 9) 15335e8351deSBard Liao #define RT5670_GPIO_M_PH (0x1 << 9) 15345e8351deSBard Liao #define RT5670_I2S2_PIN_MASK (0x1 << 8) 15355e8351deSBard Liao #define RT5670_I2S2_PIN_SFT 8 15365e8351deSBard Liao #define RT5670_I2S2_PIN_I2S (0x0 << 8) 15375e8351deSBard Liao #define RT5670_I2S2_PIN_GPIO (0x1 << 8) 15385e8351deSBard Liao #define RT5670_GP5_PIN_MASK (0x1 << 7) 15395e8351deSBard Liao #define RT5670_GP5_PIN_SFT 7 15405e8351deSBard Liao #define RT5670_GP5_PIN_GPIO5 (0x0 << 7) 15415e8351deSBard Liao #define RT5670_GP5_PIN_DMIC3_SDA (0x1 << 7) 15425e8351deSBard Liao #define RT5670_GP6_PIN_MASK (0x1 << 6) 15435e8351deSBard Liao #define RT5670_GP6_PIN_SFT 6 15445e8351deSBard Liao #define RT5670_GP6_PIN_GPIO6 (0x0 << 6) 15455e8351deSBard Liao #define RT5670_GP6_PIN_DMIC1_SDA (0x1 << 6) 15465e8351deSBard Liao #define RT5670_GP7_PIN_MASK (0x3 << 4) 15475e8351deSBard Liao #define RT5670_GP7_PIN_SFT 4 15485e8351deSBard Liao #define RT5670_GP7_PIN_GPIO7 (0x0 << 4) 15495e8351deSBard Liao #define RT5670_GP7_PIN_DMIC1_SDA (0x1 << 4) 15505e8351deSBard Liao #define RT5670_GP7_PIN_PDM_SCL2 (0x2 << 4) 15515e8351deSBard Liao #define RT5670_GP8_PIN_MASK (0x1 << 3) 15525e8351deSBard Liao #define RT5670_GP8_PIN_SFT 3 15535e8351deSBard Liao #define RT5670_GP8_PIN_GPIO8 (0x0 << 3) 15545e8351deSBard Liao #define RT5670_GP8_PIN_DMIC2_SDA (0x1 << 3) 15555e8351deSBard Liao #define RT5670_GP9_PIN_MASK (0x1 << 2) 15565e8351deSBard Liao #define RT5670_GP9_PIN_SFT 2 15575e8351deSBard Liao #define RT5670_GP9_PIN_GPIO9 (0x0 << 2) 15585e8351deSBard Liao #define RT5670_GP9_PIN_DMIC3_SDA (0x1 << 2) 15595e8351deSBard Liao #define RT5670_GP10_PIN_MASK (0x3) 15605e8351deSBard Liao #define RT5670_GP10_PIN_SFT 0 15615e8351deSBard Liao #define RT5670_GP10_PIN_GPIO9 (0x0) 15625e8351deSBard Liao #define RT5670_GP10_PIN_DMIC3_SDA (0x1) 15635e8351deSBard Liao #define RT5670_GP10_PIN_PDM_ADT2 (0x2) 15645e8351deSBard Liao 15655e8351deSBard Liao /* GPIO Control 2 (0xc1) */ 15665e8351deSBard Liao #define RT5670_GP4_PF_MASK (0x1 << 11) 15675e8351deSBard Liao #define RT5670_GP4_PF_SFT 11 15685e8351deSBard Liao #define RT5670_GP4_PF_IN (0x0 << 11) 15695e8351deSBard Liao #define RT5670_GP4_PF_OUT (0x1 << 11) 15705e8351deSBard Liao #define RT5670_GP4_OUT_MASK (0x1 << 10) 15715e8351deSBard Liao #define RT5670_GP4_OUT_SFT 10 15725e8351deSBard Liao #define RT5670_GP4_OUT_LO (0x0 << 10) 15735e8351deSBard Liao #define RT5670_GP4_OUT_HI (0x1 << 10) 15745e8351deSBard Liao #define RT5670_GP4_P_MASK (0x1 << 9) 15755e8351deSBard Liao #define RT5670_GP4_P_SFT 9 15765e8351deSBard Liao #define RT5670_GP4_P_NOR (0x0 << 9) 15775e8351deSBard Liao #define RT5670_GP4_P_INV (0x1 << 9) 15785e8351deSBard Liao #define RT5670_GP3_PF_MASK (0x1 << 8) 15795e8351deSBard Liao #define RT5670_GP3_PF_SFT 8 15805e8351deSBard Liao #define RT5670_GP3_PF_IN (0x0 << 8) 15815e8351deSBard Liao #define RT5670_GP3_PF_OUT (0x1 << 8) 15825e8351deSBard Liao #define RT5670_GP3_OUT_MASK (0x1 << 7) 15835e8351deSBard Liao #define RT5670_GP3_OUT_SFT 7 15845e8351deSBard Liao #define RT5670_GP3_OUT_LO (0x0 << 7) 15855e8351deSBard Liao #define RT5670_GP3_OUT_HI (0x1 << 7) 15865e8351deSBard Liao #define RT5670_GP3_P_MASK (0x1 << 6) 15875e8351deSBard Liao #define RT5670_GP3_P_SFT 6 15885e8351deSBard Liao #define RT5670_GP3_P_NOR (0x0 << 6) 15895e8351deSBard Liao #define RT5670_GP3_P_INV (0x1 << 6) 15905e8351deSBard Liao #define RT5670_GP2_PF_MASK (0x1 << 5) 15915e8351deSBard Liao #define RT5670_GP2_PF_SFT 5 15925e8351deSBard Liao #define RT5670_GP2_PF_IN (0x0 << 5) 15935e8351deSBard Liao #define RT5670_GP2_PF_OUT (0x1 << 5) 15945e8351deSBard Liao #define RT5670_GP2_OUT_MASK (0x1 << 4) 15955e8351deSBard Liao #define RT5670_GP2_OUT_SFT 4 15965e8351deSBard Liao #define RT5670_GP2_OUT_LO (0x0 << 4) 15975e8351deSBard Liao #define RT5670_GP2_OUT_HI (0x1 << 4) 15985e8351deSBard Liao #define RT5670_GP2_P_MASK (0x1 << 3) 15995e8351deSBard Liao #define RT5670_GP2_P_SFT 3 16005e8351deSBard Liao #define RT5670_GP2_P_NOR (0x0 << 3) 16015e8351deSBard Liao #define RT5670_GP2_P_INV (0x1 << 3) 16025e8351deSBard Liao #define RT5670_GP1_PF_MASK (0x1 << 2) 16035e8351deSBard Liao #define RT5670_GP1_PF_SFT 2 16045e8351deSBard Liao #define RT5670_GP1_PF_IN (0x0 << 2) 16055e8351deSBard Liao #define RT5670_GP1_PF_OUT (0x1 << 2) 16065e8351deSBard Liao #define RT5670_GP1_OUT_MASK (0x1 << 1) 16075e8351deSBard Liao #define RT5670_GP1_OUT_SFT 1 16085e8351deSBard Liao #define RT5670_GP1_OUT_LO (0x0 << 1) 16095e8351deSBard Liao #define RT5670_GP1_OUT_HI (0x1 << 1) 16105e8351deSBard Liao #define RT5670_GP1_P_MASK (0x1) 16115e8351deSBard Liao #define RT5670_GP1_P_SFT 0 16125e8351deSBard Liao #define RT5670_GP1_P_NOR (0x0) 16135e8351deSBard Liao #define RT5670_GP1_P_INV (0x1) 16145e8351deSBard Liao 16155e8351deSBard Liao /* Scramble Function (0xcd) */ 16165e8351deSBard Liao #define RT5670_SCB_KEY_MASK (0xff) 16175e8351deSBard Liao #define RT5670_SCB_KEY_SFT 0 16185e8351deSBard Liao 16195e8351deSBard Liao /* Scramble Control (0xce) */ 16205e8351deSBard Liao #define RT5670_SCB_SWAP_MASK (0x1 << 15) 16215e8351deSBard Liao #define RT5670_SCB_SWAP_SFT 15 16225e8351deSBard Liao #define RT5670_SCB_SWAP_DIS (0x0 << 15) 16235e8351deSBard Liao #define RT5670_SCB_SWAP_EN (0x1 << 15) 16245e8351deSBard Liao #define RT5670_SCB_MASK (0x1 << 14) 16255e8351deSBard Liao #define RT5670_SCB_SFT 14 16265e8351deSBard Liao #define RT5670_SCB_DIS (0x0 << 14) 16275e8351deSBard Liao #define RT5670_SCB_EN (0x1 << 14) 16285e8351deSBard Liao 16295e8351deSBard Liao /* Baseback Control (0xcf) */ 16305e8351deSBard Liao #define RT5670_BB_MASK (0x1 << 15) 16315e8351deSBard Liao #define RT5670_BB_SFT 15 16325e8351deSBard Liao #define RT5670_BB_DIS (0x0 << 15) 16335e8351deSBard Liao #define RT5670_BB_EN (0x1 << 15) 16345e8351deSBard Liao #define RT5670_BB_CT_MASK (0x7 << 12) 16355e8351deSBard Liao #define RT5670_BB_CT_SFT 12 16365e8351deSBard Liao #define RT5670_BB_CT_A (0x0 << 12) 16375e8351deSBard Liao #define RT5670_BB_CT_B (0x1 << 12) 16385e8351deSBard Liao #define RT5670_BB_CT_C (0x2 << 12) 16395e8351deSBard Liao #define RT5670_BB_CT_D (0x3 << 12) 16405e8351deSBard Liao #define RT5670_M_BB_L_MASK (0x1 << 9) 16415e8351deSBard Liao #define RT5670_M_BB_L_SFT 9 16425e8351deSBard Liao #define RT5670_M_BB_R_MASK (0x1 << 8) 16435e8351deSBard Liao #define RT5670_M_BB_R_SFT 8 16445e8351deSBard Liao #define RT5670_M_BB_HPF_L_MASK (0x1 << 7) 16455e8351deSBard Liao #define RT5670_M_BB_HPF_L_SFT 7 16465e8351deSBard Liao #define RT5670_M_BB_HPF_R_MASK (0x1 << 6) 16475e8351deSBard Liao #define RT5670_M_BB_HPF_R_SFT 6 16485e8351deSBard Liao #define RT5670_G_BB_BST_MASK (0x3f) 16495e8351deSBard Liao #define RT5670_G_BB_BST_SFT 0 16505e8351deSBard Liao 16515e8351deSBard Liao /* MP3 Plus Control 1 (0xd0) */ 16525e8351deSBard Liao #define RT5670_M_MP3_L_MASK (0x1 << 15) 16535e8351deSBard Liao #define RT5670_M_MP3_L_SFT 15 16545e8351deSBard Liao #define RT5670_M_MP3_R_MASK (0x1 << 14) 16555e8351deSBard Liao #define RT5670_M_MP3_R_SFT 14 16565e8351deSBard Liao #define RT5670_M_MP3_MASK (0x1 << 13) 16575e8351deSBard Liao #define RT5670_M_MP3_SFT 13 16585e8351deSBard Liao #define RT5670_M_MP3_DIS (0x0 << 13) 16595e8351deSBard Liao #define RT5670_M_MP3_EN (0x1 << 13) 16605e8351deSBard Liao #define RT5670_EG_MP3_MASK (0x1f << 8) 16615e8351deSBard Liao #define RT5670_EG_MP3_SFT 8 16625e8351deSBard Liao #define RT5670_MP3_HLP_MASK (0x1 << 7) 16635e8351deSBard Liao #define RT5670_MP3_HLP_SFT 7 16645e8351deSBard Liao #define RT5670_MP3_HLP_DIS (0x0 << 7) 16655e8351deSBard Liao #define RT5670_MP3_HLP_EN (0x1 << 7) 16665e8351deSBard Liao #define RT5670_M_MP3_ORG_L_MASK (0x1 << 6) 16675e8351deSBard Liao #define RT5670_M_MP3_ORG_L_SFT 6 16685e8351deSBard Liao #define RT5670_M_MP3_ORG_R_MASK (0x1 << 5) 16695e8351deSBard Liao #define RT5670_M_MP3_ORG_R_SFT 5 16705e8351deSBard Liao 16715e8351deSBard Liao /* MP3 Plus Control 2 (0xd1) */ 16725e8351deSBard Liao #define RT5670_MP3_WT_MASK (0x1 << 13) 16735e8351deSBard Liao #define RT5670_MP3_WT_SFT 13 16745e8351deSBard Liao #define RT5670_MP3_WT_1_4 (0x0 << 13) 16755e8351deSBard Liao #define RT5670_MP3_WT_1_2 (0x1 << 13) 16765e8351deSBard Liao #define RT5670_OG_MP3_MASK (0x1f << 8) 16775e8351deSBard Liao #define RT5670_OG_MP3_SFT 8 16785e8351deSBard Liao #define RT5670_HG_MP3_MASK (0x3f) 16795e8351deSBard Liao #define RT5670_HG_MP3_SFT 0 16805e8351deSBard Liao 16815e8351deSBard Liao /* 3D HP Control 1 (0xd2) */ 16825e8351deSBard Liao #define RT5670_3D_CF_MASK (0x1 << 15) 16835e8351deSBard Liao #define RT5670_3D_CF_SFT 15 16845e8351deSBard Liao #define RT5670_3D_CF_DIS (0x0 << 15) 16855e8351deSBard Liao #define RT5670_3D_CF_EN (0x1 << 15) 16865e8351deSBard Liao #define RT5670_3D_HP_MASK (0x1 << 14) 16875e8351deSBard Liao #define RT5670_3D_HP_SFT 14 16885e8351deSBard Liao #define RT5670_3D_HP_DIS (0x0 << 14) 16895e8351deSBard Liao #define RT5670_3D_HP_EN (0x1 << 14) 16905e8351deSBard Liao #define RT5670_3D_BT_MASK (0x1 << 13) 16915e8351deSBard Liao #define RT5670_3D_BT_SFT 13 16925e8351deSBard Liao #define RT5670_3D_BT_DIS (0x0 << 13) 16935e8351deSBard Liao #define RT5670_3D_BT_EN (0x1 << 13) 16945e8351deSBard Liao #define RT5670_3D_1F_MIX_MASK (0x3 << 11) 16955e8351deSBard Liao #define RT5670_3D_1F_MIX_SFT 11 16965e8351deSBard Liao #define RT5670_3D_HP_M_MASK (0x1 << 10) 16975e8351deSBard Liao #define RT5670_3D_HP_M_SFT 10 16985e8351deSBard Liao #define RT5670_3D_HP_M_SUR (0x0 << 10) 16995e8351deSBard Liao #define RT5670_3D_HP_M_FRO (0x1 << 10) 17005e8351deSBard Liao #define RT5670_M_3D_HRTF_MASK (0x1 << 9) 17015e8351deSBard Liao #define RT5670_M_3D_HRTF_SFT 9 17025e8351deSBard Liao #define RT5670_M_3D_D2H_MASK (0x1 << 8) 17035e8351deSBard Liao #define RT5670_M_3D_D2H_SFT 8 17045e8351deSBard Liao #define RT5670_M_3D_D2R_MASK (0x1 << 7) 17055e8351deSBard Liao #define RT5670_M_3D_D2R_SFT 7 17065e8351deSBard Liao #define RT5670_M_3D_REVB_MASK (0x1 << 6) 17075e8351deSBard Liao #define RT5670_M_3D_REVB_SFT 6 17085e8351deSBard Liao 17095e8351deSBard Liao /* Adjustable high pass filter control 1 (0xd3) */ 17105e8351deSBard Liao #define RT5670_2ND_HPF_MASK (0x1 << 15) 17115e8351deSBard Liao #define RT5670_2ND_HPF_SFT 15 17125e8351deSBard Liao #define RT5670_2ND_HPF_DIS (0x0 << 15) 17135e8351deSBard Liao #define RT5670_2ND_HPF_EN (0x1 << 15) 17145e8351deSBard Liao #define RT5670_HPF_CF_L_MASK (0x7 << 12) 17155e8351deSBard Liao #define RT5670_HPF_CF_L_SFT 12 17165e8351deSBard Liao #define RT5670_1ST_HPF_MASK (0x1 << 11) 17175e8351deSBard Liao #define RT5670_1ST_HPF_SFT 11 17185e8351deSBard Liao #define RT5670_1ST_HPF_DIS (0x0 << 11) 17195e8351deSBard Liao #define RT5670_1ST_HPF_EN (0x1 << 11) 17205e8351deSBard Liao #define RT5670_HPF_CF_R_MASK (0x7 << 8) 17215e8351deSBard Liao #define RT5670_HPF_CF_R_SFT 8 17225e8351deSBard Liao #define RT5670_ZD_T_MASK (0x3 << 6) 17235e8351deSBard Liao #define RT5670_ZD_T_SFT 6 17245e8351deSBard Liao #define RT5670_ZD_F_MASK (0x3 << 4) 17255e8351deSBard Liao #define RT5670_ZD_F_SFT 4 17265e8351deSBard Liao #define RT5670_ZD_F_IM (0x0 << 4) 17275e8351deSBard Liao #define RT5670_ZD_F_ZC_IM (0x1 << 4) 17285e8351deSBard Liao #define RT5670_ZD_F_ZC_IOD (0x2 << 4) 17295e8351deSBard Liao #define RT5670_ZD_F_UN (0x3 << 4) 17305e8351deSBard Liao 17315e8351deSBard Liao /* HP calibration control and Amp detection (0xd6) */ 17325e8351deSBard Liao #define RT5670_SI_DAC_MASK (0x1 << 11) 17335e8351deSBard Liao #define RT5670_SI_DAC_SFT 11 17345e8351deSBard Liao #define RT5670_SI_DAC_AUTO (0x0 << 11) 17355e8351deSBard Liao #define RT5670_SI_DAC_TEST (0x1 << 11) 17365e8351deSBard Liao #define RT5670_DC_CAL_M_MASK (0x1 << 10) 17375e8351deSBard Liao #define RT5670_DC_CAL_M_SFT 10 17385e8351deSBard Liao #define RT5670_DC_CAL_M_CAL (0x0 << 10) 17395e8351deSBard Liao #define RT5670_DC_CAL_M_NOR (0x1 << 10) 17405e8351deSBard Liao #define RT5670_DC_CAL_MASK (0x1 << 9) 17415e8351deSBard Liao #define RT5670_DC_CAL_SFT 9 17425e8351deSBard Liao #define RT5670_DC_CAL_DIS (0x0 << 9) 17435e8351deSBard Liao #define RT5670_DC_CAL_EN (0x1 << 9) 17445e8351deSBard Liao #define RT5670_HPD_RCV_MASK (0x7 << 6) 17455e8351deSBard Liao #define RT5670_HPD_RCV_SFT 6 17465e8351deSBard Liao #define RT5670_HPD_PS_MASK (0x1 << 5) 17475e8351deSBard Liao #define RT5670_HPD_PS_SFT 5 17485e8351deSBard Liao #define RT5670_HPD_PS_DIS (0x0 << 5) 17495e8351deSBard Liao #define RT5670_HPD_PS_EN (0x1 << 5) 17505e8351deSBard Liao #define RT5670_CAL_M_MASK (0x1 << 4) 17515e8351deSBard Liao #define RT5670_CAL_M_SFT 4 17525e8351deSBard Liao #define RT5670_CAL_M_DEP (0x0 << 4) 17535e8351deSBard Liao #define RT5670_CAL_M_CAL (0x1 << 4) 17545e8351deSBard Liao #define RT5670_CAL_MASK (0x1 << 3) 17555e8351deSBard Liao #define RT5670_CAL_SFT 3 17565e8351deSBard Liao #define RT5670_CAL_DIS (0x0 << 3) 17575e8351deSBard Liao #define RT5670_CAL_EN (0x1 << 3) 17585e8351deSBard Liao #define RT5670_CAL_TEST_MASK (0x1 << 2) 17595e8351deSBard Liao #define RT5670_CAL_TEST_SFT 2 17605e8351deSBard Liao #define RT5670_CAL_TEST_DIS (0x0 << 2) 17615e8351deSBard Liao #define RT5670_CAL_TEST_EN (0x1 << 2) 17625e8351deSBard Liao #define RT5670_CAL_P_MASK (0x3) 17635e8351deSBard Liao #define RT5670_CAL_P_SFT 0 17645e8351deSBard Liao #define RT5670_CAL_P_NONE (0x0) 17655e8351deSBard Liao #define RT5670_CAL_P_CAL (0x1) 17665e8351deSBard Liao #define RT5670_CAL_P_DAC_CAL (0x2) 17675e8351deSBard Liao 17685e8351deSBard Liao /* Soft volume and zero cross control 1 (0xd9) */ 17695e8351deSBard Liao #define RT5670_SV_MASK (0x1 << 15) 17705e8351deSBard Liao #define RT5670_SV_SFT 15 17715e8351deSBard Liao #define RT5670_SV_DIS (0x0 << 15) 17725e8351deSBard Liao #define RT5670_SV_EN (0x1 << 15) 17735e8351deSBard Liao #define RT5670_SPO_SV_MASK (0x1 << 14) 17745e8351deSBard Liao #define RT5670_SPO_SV_SFT 14 17755e8351deSBard Liao #define RT5670_SPO_SV_DIS (0x0 << 14) 17765e8351deSBard Liao #define RT5670_SPO_SV_EN (0x1 << 14) 17775e8351deSBard Liao #define RT5670_OUT_SV_MASK (0x1 << 13) 17785e8351deSBard Liao #define RT5670_OUT_SV_SFT 13 17795e8351deSBard Liao #define RT5670_OUT_SV_DIS (0x0 << 13) 17805e8351deSBard Liao #define RT5670_OUT_SV_EN (0x1 << 13) 17815e8351deSBard Liao #define RT5670_HP_SV_MASK (0x1 << 12) 17825e8351deSBard Liao #define RT5670_HP_SV_SFT 12 17835e8351deSBard Liao #define RT5670_HP_SV_DIS (0x0 << 12) 17845e8351deSBard Liao #define RT5670_HP_SV_EN (0x1 << 12) 17855e8351deSBard Liao #define RT5670_ZCD_DIG_MASK (0x1 << 11) 17865e8351deSBard Liao #define RT5670_ZCD_DIG_SFT 11 17875e8351deSBard Liao #define RT5670_ZCD_DIG_DIS (0x0 << 11) 17885e8351deSBard Liao #define RT5670_ZCD_DIG_EN (0x1 << 11) 17895e8351deSBard Liao #define RT5670_ZCD_MASK (0x1 << 10) 17905e8351deSBard Liao #define RT5670_ZCD_SFT 10 17915e8351deSBard Liao #define RT5670_ZCD_PD (0x0 << 10) 17925e8351deSBard Liao #define RT5670_ZCD_PU (0x1 << 10) 17935e8351deSBard Liao #define RT5670_M_ZCD_MASK (0x3f << 4) 17945e8351deSBard Liao #define RT5670_M_ZCD_SFT 4 17955e8351deSBard Liao #define RT5670_M_ZCD_RM_L (0x1 << 9) 17965e8351deSBard Liao #define RT5670_M_ZCD_RM_R (0x1 << 8) 17975e8351deSBard Liao #define RT5670_M_ZCD_SM_L (0x1 << 7) 17985e8351deSBard Liao #define RT5670_M_ZCD_SM_R (0x1 << 6) 17995e8351deSBard Liao #define RT5670_M_ZCD_OM_L (0x1 << 5) 18005e8351deSBard Liao #define RT5670_M_ZCD_OM_R (0x1 << 4) 18015e8351deSBard Liao #define RT5670_SV_DLY_MASK (0xf) 18025e8351deSBard Liao #define RT5670_SV_DLY_SFT 0 18035e8351deSBard Liao 18045e8351deSBard Liao /* Soft volume and zero cross control 2 (0xda) */ 18055e8351deSBard Liao #define RT5670_ZCD_HP_MASK (0x1 << 15) 18065e8351deSBard Liao #define RT5670_ZCD_HP_SFT 15 18075e8351deSBard Liao #define RT5670_ZCD_HP_DIS (0x0 << 15) 18085e8351deSBard Liao #define RT5670_ZCD_HP_EN (0x1 << 15) 18095e8351deSBard Liao 1810d0817657SBard Liao /* General Control 3 (0xfc) */ 1811d0817657SBard Liao #define RT5670_TDM_DATA_MODE_SEL (0x1 << 11) 1812d0817657SBard Liao #define RT5670_TDM_DATA_MODE_NOR (0x0 << 11) 1813d0817657SBard Liao #define RT5670_TDM_DATA_MODE_50FS (0x1 << 11) 18145e8351deSBard Liao 18155e8351deSBard Liao /* Codec Private Register definition */ 18165e8351deSBard Liao /* 3D Speaker Control (0x63) */ 18175e8351deSBard Liao #define RT5670_3D_SPK_MASK (0x1 << 15) 18185e8351deSBard Liao #define RT5670_3D_SPK_SFT 15 18195e8351deSBard Liao #define RT5670_3D_SPK_DIS (0x0 << 15) 18205e8351deSBard Liao #define RT5670_3D_SPK_EN (0x1 << 15) 18215e8351deSBard Liao #define RT5670_3D_SPK_M_MASK (0x3 << 13) 18225e8351deSBard Liao #define RT5670_3D_SPK_M_SFT 13 18235e8351deSBard Liao #define RT5670_3D_SPK_CG_MASK (0x1f << 8) 18245e8351deSBard Liao #define RT5670_3D_SPK_CG_SFT 8 18255e8351deSBard Liao #define RT5670_3D_SPK_SG_MASK (0x1f) 18265e8351deSBard Liao #define RT5670_3D_SPK_SG_SFT 0 18275e8351deSBard Liao 18285e8351deSBard Liao /* Wind Noise Detection Control 1 (0x6c) */ 18295e8351deSBard Liao #define RT5670_WND_MASK (0x1 << 15) 18305e8351deSBard Liao #define RT5670_WND_SFT 15 18315e8351deSBard Liao #define RT5670_WND_DIS (0x0 << 15) 18325e8351deSBard Liao #define RT5670_WND_EN (0x1 << 15) 18335e8351deSBard Liao 18345e8351deSBard Liao /* Wind Noise Detection Control 2 (0x6d) */ 18355e8351deSBard Liao #define RT5670_WND_FC_NW_MASK (0x3f << 10) 18365e8351deSBard Liao #define RT5670_WND_FC_NW_SFT 10 18375e8351deSBard Liao #define RT5670_WND_FC_WK_MASK (0x3f << 4) 18385e8351deSBard Liao #define RT5670_WND_FC_WK_SFT 4 18395e8351deSBard Liao 18405e8351deSBard Liao /* Wind Noise Detection Control 3 (0x6e) */ 18415e8351deSBard Liao #define RT5670_HPF_FC_MASK (0x3f << 6) 18425e8351deSBard Liao #define RT5670_HPF_FC_SFT 6 18435e8351deSBard Liao #define RT5670_WND_FC_ST_MASK (0x3f) 18445e8351deSBard Liao #define RT5670_WND_FC_ST_SFT 0 18455e8351deSBard Liao 18465e8351deSBard Liao /* Wind Noise Detection Control 4 (0x6f) */ 18475e8351deSBard Liao #define RT5670_WND_TH_LO_MASK (0x3ff) 18485e8351deSBard Liao #define RT5670_WND_TH_LO_SFT 0 18495e8351deSBard Liao 18505e8351deSBard Liao /* Wind Noise Detection Control 5 (0x70) */ 18515e8351deSBard Liao #define RT5670_WND_TH_HI_MASK (0x3ff) 18525e8351deSBard Liao #define RT5670_WND_TH_HI_SFT 0 18535e8351deSBard Liao 18545e8351deSBard Liao /* Wind Noise Detection Control 8 (0x73) */ 18555e8351deSBard Liao #define RT5670_WND_WIND_MASK (0x1 << 13) /* Read-Only */ 18565e8351deSBard Liao #define RT5670_WND_WIND_SFT 13 18575e8351deSBard Liao #define RT5670_WND_STRONG_MASK (0x1 << 12) /* Read-Only */ 18585e8351deSBard Liao #define RT5670_WND_STRONG_SFT 12 18595e8351deSBard Liao enum { 18605e8351deSBard Liao RT5670_NO_WIND, 18615e8351deSBard Liao RT5670_BREEZE, 18625e8351deSBard Liao RT5670_STORM, 18635e8351deSBard Liao }; 18645e8351deSBard Liao 18655e8351deSBard Liao /* Dipole Speaker Interface (0x75) */ 18665e8351deSBard Liao #define RT5670_DP_ATT_MASK (0x3 << 14) 18675e8351deSBard Liao #define RT5670_DP_ATT_SFT 14 18685e8351deSBard Liao #define RT5670_DP_SPK_MASK (0x1 << 10) 18695e8351deSBard Liao #define RT5670_DP_SPK_SFT 10 18705e8351deSBard Liao #define RT5670_DP_SPK_DIS (0x0 << 10) 18715e8351deSBard Liao #define RT5670_DP_SPK_EN (0x1 << 10) 18725e8351deSBard Liao 18735e8351deSBard Liao /* EQ Pre Volume Control (0xb3) */ 18745e8351deSBard Liao #define RT5670_EQ_PRE_VOL_MASK (0xffff) 18755e8351deSBard Liao #define RT5670_EQ_PRE_VOL_SFT 0 18765e8351deSBard Liao 18775e8351deSBard Liao /* EQ Post Volume Control (0xb4) */ 18785e8351deSBard Liao #define RT5670_EQ_PST_VOL_MASK (0xffff) 18795e8351deSBard Liao #define RT5670_EQ_PST_VOL_SFT 0 18805e8351deSBard Liao 18815e8351deSBard Liao /* Jack Detect Control 3 (0xf8) */ 18825e8351deSBard Liao #define RT5670_CMP_MIC_IN_DET_MASK (0x7 << 12) 18835e8351deSBard Liao #define RT5670_JD_CBJ_EN (0x1 << 7) 18845e8351deSBard Liao #define RT5670_JD_CBJ_POL (0x1 << 6) 18855e8351deSBard Liao #define RT5670_JD_TRI_CBJ_SEL_MASK (0x7 << 3) 18865e8351deSBard Liao #define RT5670_JD_TRI_CBJ_SEL_SFT (3) 18875e8351deSBard Liao #define RT5670_JD_CBJ_GPIO_JD1 (0x0 << 3) 18885e8351deSBard Liao #define RT5670_JD_CBJ_JD1_1 (0x1 << 3) 18895e8351deSBard Liao #define RT5670_JD_CBJ_JD1_2 (0x2 << 3) 18905e8351deSBard Liao #define RT5670_JD_CBJ_JD2 (0x3 << 3) 18915e8351deSBard Liao #define RT5670_JD_CBJ_JD3 (0x4 << 3) 18925e8351deSBard Liao #define RT5670_JD_CBJ_GPIO_JD2 (0x5 << 3) 18935e8351deSBard Liao #define RT5670_JD_CBJ_MX0B_12 (0x6 << 3) 18945e8351deSBard Liao #define RT5670_JD_TRI_HPO_SEL_MASK (0x7 << 3) 18955e8351deSBard Liao #define RT5670_JD_TRI_HPO_SEL_SFT (0) 18965e8351deSBard Liao #define RT5670_JD_HPO_GPIO_JD1 (0x0) 18975e8351deSBard Liao #define RT5670_JD_HPO_JD1_1 (0x1) 18985e8351deSBard Liao #define RT5670_JD_HPO_JD1_2 (0x2) 18995e8351deSBard Liao #define RT5670_JD_HPO_JD2 (0x3) 19005e8351deSBard Liao #define RT5670_JD_HPO_JD3 (0x4) 19015e8351deSBard Liao #define RT5670_JD_HPO_GPIO_JD2 (0x5) 19025e8351deSBard Liao #define RT5670_JD_HPO_MX0B_12 (0x6) 19035e8351deSBard Liao 19045e8351deSBard Liao /* Digital Misc Control (0xfa) */ 19055e8351deSBard Liao #define RT5670_RST_DSP (0x1 << 13) 19065e8351deSBard Liao #define RT5670_IF1_ADC1_IN1_SEL (0x1 << 12) 19075e8351deSBard Liao #define RT5670_IF1_ADC1_IN1_SFT 12 19085e8351deSBard Liao #define RT5670_IF1_ADC1_IN2_SEL (0x1 << 11) 19095e8351deSBard Liao #define RT5670_IF1_ADC1_IN2_SFT 11 19105e8351deSBard Liao #define RT5670_IF1_ADC2_IN1_SEL (0x1 << 10) 19115e8351deSBard Liao #define RT5670_IF1_ADC2_IN1_SFT 10 1912a5d93da1SBard Liao #define RT5670_MCLK_DET (0x1 << 3) 19135e8351deSBard Liao 19145e8351deSBard Liao /* General Control2 (0xfb) */ 19155e8351deSBard Liao #define RT5670_RXDC_SRC_MASK (0x1 << 7) 19165e8351deSBard Liao #define RT5670_RXDC_SRC_STO (0x0 << 7) 19175e8351deSBard Liao #define RT5670_RXDC_SRC_MONO (0x1 << 7) 19185e8351deSBard Liao #define RT5670_RXDC_SRC_SFT (7) 19195e8351deSBard Liao #define RT5670_RXDP2_SEL_MASK (0x1 << 3) 19205e8351deSBard Liao #define RT5670_RXDP2_SEL_IF2 (0x0 << 3) 19215e8351deSBard Liao #define RT5670_RXDP2_SEL_ADC (0x1 << 3) 19225e8351deSBard Liao #define RT5670_RXDP2_SEL_SFT (3) 19235e8351deSBard Liao 19245e8351deSBard Liao /* System Clock Source */ 19255e8351deSBard Liao enum { 19265e8351deSBard Liao RT5670_SCLK_S_MCLK, 19275e8351deSBard Liao RT5670_SCLK_S_PLL1, 19285e8351deSBard Liao RT5670_SCLK_S_RCCLK, 19295e8351deSBard Liao }; 19305e8351deSBard Liao 19315e8351deSBard Liao /* PLL1 Source */ 19325e8351deSBard Liao enum { 19335e8351deSBard Liao RT5670_PLL1_S_MCLK, 19345e8351deSBard Liao RT5670_PLL1_S_BCLK1, 19355e8351deSBard Liao RT5670_PLL1_S_BCLK2, 19365e8351deSBard Liao RT5670_PLL1_S_BCLK3, 19375e8351deSBard Liao RT5670_PLL1_S_BCLK4, 19385e8351deSBard Liao }; 19395e8351deSBard Liao 19405e8351deSBard Liao enum { 19415e8351deSBard Liao RT5670_AIF1, 19425e8351deSBard Liao RT5670_AIF2, 19435e8351deSBard Liao RT5670_AIF3, 19445e8351deSBard Liao RT5670_AIF4, 19455e8351deSBard Liao RT5670_AIFS, 19465e8351deSBard Liao }; 19475e8351deSBard Liao 19485e8351deSBard Liao enum { 19497371bd1fSBard Liao RT5670_DMIC1_DISABLED, 19505e8351deSBard Liao RT5670_DMIC_DATA_GPIO6, 19515e8351deSBard Liao RT5670_DMIC_DATA_IN2P, 19525e8351deSBard Liao RT5670_DMIC_DATA_GPIO7, 19535e8351deSBard Liao }; 19545e8351deSBard Liao 19555e8351deSBard Liao enum { 19567371bd1fSBard Liao RT5670_DMIC2_DISABLED, 19575e8351deSBard Liao RT5670_DMIC_DATA_GPIO8, 19585e8351deSBard Liao RT5670_DMIC_DATA_IN3N, 19595e8351deSBard Liao }; 19605e8351deSBard Liao 19615e8351deSBard Liao enum { 19627371bd1fSBard Liao RT5670_DMIC3_DISABLED, 19635e8351deSBard Liao RT5670_DMIC_DATA_GPIO9, 19645e8351deSBard Liao RT5670_DMIC_DATA_GPIO10, 19655e8351deSBard Liao RT5670_DMIC_DATA_GPIO5, 19665e8351deSBard Liao }; 19675e8351deSBard Liao 1968ea232b3fSMengdong Lin /* filter mask */ 1969ea232b3fSMengdong Lin enum { 1970ea232b3fSMengdong Lin RT5670_DA_STEREO_FILTER = 0x1, 1971ea232b3fSMengdong Lin RT5670_DA_MONO_L_FILTER = (0x1 << 1), 1972ea232b3fSMengdong Lin RT5670_DA_MONO_R_FILTER = (0x1 << 2), 1973ea232b3fSMengdong Lin RT5670_AD_STEREO_FILTER = (0x1 << 3), 1974ea232b3fSMengdong Lin RT5670_AD_MONO_L_FILTER = (0x1 << 4), 1975ea232b3fSMengdong Lin RT5670_AD_MONO_R_FILTER = (0x1 << 5), 1976ea232b3fSMengdong Lin RT5670_UP_RATE_FILTER = (0x1 << 6), 1977ea232b3fSMengdong Lin RT5670_DOWN_RATE_FILTER = (0x1 << 7), 1978ea232b3fSMengdong Lin }; 1979ea232b3fSMengdong Lin 19805ba04c66SKuninori Morimoto int rt5670_sel_asrc_clk_src(struct snd_soc_component *component, 1981ea232b3fSMengdong Lin unsigned int filter_mask, unsigned int clk_src); 1982ea232b3fSMengdong Lin 19835e8351deSBard Liao struct rt5670_priv { 19845ba04c66SKuninori Morimoto struct snd_soc_component *component; 19855e8351deSBard Liao struct regmap *regmap; 1986d3ef7054SBard Liao struct snd_soc_jack *jack; 1987d3ef7054SBard Liao struct snd_soc_jack_gpio hp_gpio; 19885e8351deSBard Liao 1989c14f61a8SHans de Goede int jd_mode; 1990c14f61a8SHans de Goede bool in2_diff; 1991883330c1SHans de Goede bool gpio1_is_irq; 1992c14f61a8SHans de Goede bool gpio1_is_ext_spk_en; 1993c14f61a8SHans de Goede 1994c14f61a8SHans de Goede bool dmic_en; 1995c14f61a8SHans de Goede unsigned int dmic1_data_pin; 1996c14f61a8SHans de Goede /* 0 = GPIO6; 1 = IN2P; 3 = GPIO7*/ 1997c14f61a8SHans de Goede unsigned int dmic2_data_pin; 1998c14f61a8SHans de Goede /* 0 = GPIO8; 1 = IN3N; */ 1999c14f61a8SHans de Goede unsigned int dmic3_data_pin; 2000c14f61a8SHans de Goede /* 0 = GPIO9; 1 = GPIO10; 2 = GPIO5*/ 2001c14f61a8SHans de Goede 20025e8351deSBard Liao int sysclk; 20035e8351deSBard Liao int sysclk_src; 20045e8351deSBard Liao int lrck[RT5670_AIFS]; 20055e8351deSBard Liao int bclk[RT5670_AIFS]; 20065e8351deSBard Liao int master[RT5670_AIFS]; 20075e8351deSBard Liao 20085e8351deSBard Liao int pll_src; 20095e8351deSBard Liao int pll_in; 20105e8351deSBard Liao int pll_out; 20115e8351deSBard Liao 20125e8351deSBard Liao int dsp_sw; /* expected parameter setting */ 20135e8351deSBard Liao int dsp_rate; 20145e8351deSBard Liao int jack_type; 2015cc3c340dSBard Liao int jack_type_saved; 201642121c26SHans de Goede 201742121c26SHans de Goede bool dac1_mixl_dac1_switch; 201842121c26SHans de Goede bool dac1_mixr_dac1_switch; 201942121c26SHans de Goede bool dac1_playback_switch_l; 202042121c26SHans de Goede bool dac1_playback_switch_r; 20215e8351deSBard Liao }; 20225e8351deSBard Liao 20235ba04c66SKuninori Morimoto void rt5670_jack_suspend(struct snd_soc_component *component); 20245ba04c66SKuninori Morimoto void rt5670_jack_resume(struct snd_soc_component *component); 20255ba04c66SKuninori Morimoto int rt5670_set_jack_detect(struct snd_soc_component *component, 2026d3ef7054SBard Liao struct snd_soc_jack *jack); 2027*3d534537SHans de Goede const char *rt5670_components(void); 2028*3d534537SHans de Goede 20295e8351deSBard Liao #endif /* __RT5670_H__ */ 2030