xref: /openbmc/linux/sound/soc/codecs/rt5670.h (revision 8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17)
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