xref: /openbmc/linux/sound/soc/codecs/rt5677.h (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
20e826e86SOder Chiou /*
30e826e86SOder Chiou  * rt5677.h  --  RT5677 ALSA SoC audio driver
40e826e86SOder Chiou  *
50e826e86SOder Chiou  * Copyright 2013 Realtek Semiconductor Corp.
60e826e86SOder Chiou  * Author: Oder Chiou <oder_chiou@realtek.com>
70e826e86SOder Chiou  */
80e826e86SOder Chiou 
90e826e86SOder Chiou #ifndef __RT5677_H__
100e826e86SOder Chiou #define __RT5677_H__
110e826e86SOder Chiou 
1280fff6bfSBen Zhang #include <linux/gpio/driver.h>
13efd901eeSBen Zhang #include <linux/gpio/consumer.h>
140e826e86SOder Chiou 
150e826e86SOder Chiou /* Info */
160e826e86SOder Chiou #define RT5677_RESET				0x00
170e826e86SOder Chiou #define RT5677_VENDOR_ID			0xfd
180e826e86SOder Chiou #define RT5677_VENDOR_ID1			0xfe
190e826e86SOder Chiou #define RT5677_VENDOR_ID2			0xff
200e826e86SOder Chiou /*  I/O - Output */
210e826e86SOder Chiou #define RT5677_LOUT1				0x01
220e826e86SOder Chiou /* I/O - Input */
230e826e86SOder Chiou #define RT5677_IN1				0x03
240e826e86SOder Chiou #define RT5677_MICBIAS				0x04
250e826e86SOder Chiou /* I/O - SLIMBus */
260e826e86SOder Chiou #define RT5677_SLIMBUS_PARAM			0x07
270e826e86SOder Chiou #define RT5677_SLIMBUS_RX			0x08
280e826e86SOder Chiou #define RT5677_SLIMBUS_CTRL			0x09
290e826e86SOder Chiou /* I/O */
300e826e86SOder Chiou #define RT5677_SIDETONE_CTRL			0x13
310e826e86SOder Chiou /* I/O - ADC/DAC */
320e826e86SOder Chiou #define RT5677_ANA_DAC1_2_3_SRC			0x15
330e826e86SOder Chiou #define RT5677_IF_DSP_DAC3_4_MIXER		0x16
340e826e86SOder Chiou #define RT5677_DAC4_DIG_VOL			0x17
350e826e86SOder Chiou #define RT5677_DAC3_DIG_VOL			0x18
360e826e86SOder Chiou #define RT5677_DAC1_DIG_VOL			0x19
370e826e86SOder Chiou #define RT5677_DAC2_DIG_VOL			0x1a
380e826e86SOder Chiou #define RT5677_IF_DSP_DAC2_MIXER		0x1b
390e826e86SOder Chiou #define RT5677_STO1_ADC_DIG_VOL			0x1c
400e826e86SOder Chiou #define RT5677_MONO_ADC_DIG_VOL			0x1d
410e826e86SOder Chiou #define RT5677_STO1_2_ADC_BST			0x1e
420e826e86SOder Chiou #define RT5677_STO2_ADC_DIG_VOL			0x1f
430e826e86SOder Chiou /* Mixer - D-D */
440e826e86SOder Chiou #define RT5677_ADC_BST_CTRL2			0x20
450e826e86SOder Chiou #define RT5677_STO3_4_ADC_BST			0x21
460e826e86SOder Chiou #define RT5677_STO3_ADC_DIG_VOL			0x22
470e826e86SOder Chiou #define RT5677_STO4_ADC_DIG_VOL			0x23
480e826e86SOder Chiou #define RT5677_STO4_ADC_MIXER			0x24
490e826e86SOder Chiou #define RT5677_STO3_ADC_MIXER			0x25
500e826e86SOder Chiou #define RT5677_STO2_ADC_MIXER			0x26
510e826e86SOder Chiou #define RT5677_STO1_ADC_MIXER			0x27
520e826e86SOder Chiou #define RT5677_MONO_ADC_MIXER			0x28
530e826e86SOder Chiou #define RT5677_ADC_IF_DSP_DAC1_MIXER		0x29
540e826e86SOder Chiou #define RT5677_STO1_DAC_MIXER			0x2a
550e826e86SOder Chiou #define RT5677_MONO_DAC_MIXER			0x2b
560e826e86SOder Chiou #define RT5677_DD1_MIXER			0x2c
570e826e86SOder Chiou #define RT5677_DD2_MIXER			0x2d
580e826e86SOder Chiou #define RT5677_IF3_DATA				0x2f
590e826e86SOder Chiou #define RT5677_IF4_DATA				0x30
600e826e86SOder Chiou /* Mixer - PDM */
610e826e86SOder Chiou #define RT5677_PDM_OUT_CTRL			0x31
620e826e86SOder Chiou #define RT5677_PDM_DATA_CTRL1			0x32
630e826e86SOder Chiou #define RT5677_PDM_DATA_CTRL2			0x33
640e826e86SOder Chiou #define RT5677_PDM1_DATA_CTRL2			0x34
650e826e86SOder Chiou #define RT5677_PDM1_DATA_CTRL3			0x35
660e826e86SOder Chiou #define RT5677_PDM1_DATA_CTRL4			0x36
670e826e86SOder Chiou #define RT5677_PDM2_DATA_CTRL2			0x37
680e826e86SOder Chiou #define RT5677_PDM2_DATA_CTRL3			0x38
690e826e86SOder Chiou #define RT5677_PDM2_DATA_CTRL4			0x39
700e826e86SOder Chiou /* TDM */
710e826e86SOder Chiou #define RT5677_TDM1_CTRL1			0x3b
720e826e86SOder Chiou #define RT5677_TDM1_CTRL2			0x3c
730e826e86SOder Chiou #define RT5677_TDM1_CTRL3			0x3d
740e826e86SOder Chiou #define RT5677_TDM1_CTRL4			0x3e
750e826e86SOder Chiou #define RT5677_TDM1_CTRL5			0x3f
760e826e86SOder Chiou #define RT5677_TDM2_CTRL1			0x40
770e826e86SOder Chiou #define RT5677_TDM2_CTRL2			0x41
780e826e86SOder Chiou #define RT5677_TDM2_CTRL3			0x42
790e826e86SOder Chiou #define RT5677_TDM2_CTRL4			0x43
800e826e86SOder Chiou #define RT5677_TDM2_CTRL5			0x44
810e826e86SOder Chiou /* I2C_MASTER_CTRL */
820e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL1			0x47
830e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL2			0x48
840e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL3			0x49
850e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL4			0x4a
860e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL5			0x4b
870e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL6			0x4c
880e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL7			0x4d
890e826e86SOder Chiou #define RT5677_I2C_MASTER_CTRL8			0x4e
900e826e86SOder Chiou /* DMIC */
910e826e86SOder Chiou #define RT5677_DMIC_CTRL1			0x50
920e826e86SOder Chiou #define RT5677_DMIC_CTRL2			0x51
930e826e86SOder Chiou /* Haptic Generator */
940e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL1			0x56
950e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL2			0x57
960e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL3			0x58
970e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL4			0x59
980e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL5			0x5a
990e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL6			0x5b
1000e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL7			0x5c
1010e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL8			0x5d
1020e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL9			0x5e
1030e826e86SOder Chiou #define RT5677_HAP_GENE_CTRL10			0x5f
1040e826e86SOder Chiou /* Power */
1050e826e86SOder Chiou #define RT5677_PWR_DIG1				0x61
1060e826e86SOder Chiou #define RT5677_PWR_DIG2				0x62
1070e826e86SOder Chiou #define RT5677_PWR_ANLG1			0x63
1080e826e86SOder Chiou #define RT5677_PWR_ANLG2			0x64
1090e826e86SOder Chiou #define RT5677_PWR_DSP1				0x65
1100e826e86SOder Chiou #define RT5677_PWR_DSP_ST			0x66
1110e826e86SOder Chiou #define RT5677_PWR_DSP2				0x67
1120e826e86SOder Chiou #define RT5677_ADC_DAC_HPF_CTRL1		0x68
1130e826e86SOder Chiou /* Private Register Control */
1140e826e86SOder Chiou #define RT5677_PRIV_INDEX			0x6a
1150e826e86SOder Chiou #define RT5677_PRIV_DATA			0x6c
1160e826e86SOder Chiou /* Format - ADC/DAC */
1170e826e86SOder Chiou #define RT5677_I2S4_SDP				0x6f
1180e826e86SOder Chiou #define RT5677_I2S1_SDP				0x70
1190e826e86SOder Chiou #define RT5677_I2S2_SDP				0x71
1200e826e86SOder Chiou #define RT5677_I2S3_SDP				0x72
1210e826e86SOder Chiou #define RT5677_CLK_TREE_CTRL1			0x73
1220e826e86SOder Chiou #define RT5677_CLK_TREE_CTRL2			0x74
1230e826e86SOder Chiou #define RT5677_CLK_TREE_CTRL3			0x75
1240e826e86SOder Chiou /* Function - Analog */
1250e826e86SOder Chiou #define RT5677_PLL1_CTRL1			0x7a
1260e826e86SOder Chiou #define RT5677_PLL1_CTRL2			0x7b
1270e826e86SOder Chiou #define RT5677_PLL2_CTRL1			0x7c
1280e826e86SOder Chiou #define RT5677_PLL2_CTRL2			0x7d
1290e826e86SOder Chiou #define RT5677_GLB_CLK1				0x80
1300e826e86SOder Chiou #define RT5677_GLB_CLK2				0x81
1310e826e86SOder Chiou #define RT5677_ASRC_1				0x83
1320e826e86SOder Chiou #define RT5677_ASRC_2				0x84
1330e826e86SOder Chiou #define RT5677_ASRC_3				0x85
1340e826e86SOder Chiou #define RT5677_ASRC_4				0x86
1350e826e86SOder Chiou #define RT5677_ASRC_5				0x87
1360e826e86SOder Chiou #define RT5677_ASRC_6				0x88
1370e826e86SOder Chiou #define RT5677_ASRC_7				0x89
1380e826e86SOder Chiou #define RT5677_ASRC_8				0x8a
1390e826e86SOder Chiou #define RT5677_ASRC_9				0x8b
1400e826e86SOder Chiou #define RT5677_ASRC_10				0x8c
1410e826e86SOder Chiou #define RT5677_ASRC_11				0x8d
1420e826e86SOder Chiou #define RT5677_ASRC_12				0x8e
1430e826e86SOder Chiou #define RT5677_ASRC_13				0x8f
1440e826e86SOder Chiou #define RT5677_ASRC_14				0x90
1450e826e86SOder Chiou #define RT5677_ASRC_15				0x91
1460e826e86SOder Chiou #define RT5677_ASRC_16				0x92
1470e826e86SOder Chiou #define RT5677_ASRC_17				0x93
1480e826e86SOder Chiou #define RT5677_ASRC_18				0x94
1490e826e86SOder Chiou #define RT5677_ASRC_19				0x95
1500e826e86SOder Chiou #define RT5677_ASRC_20				0x97
1510e826e86SOder Chiou #define RT5677_ASRC_21				0x98
1520e826e86SOder Chiou #define RT5677_ASRC_22				0x99
1530e826e86SOder Chiou #define RT5677_ASRC_23				0x9a
1540e826e86SOder Chiou #define RT5677_VAD_CTRL1			0x9c
1550e826e86SOder Chiou #define RT5677_VAD_CTRL2			0x9d
1560e826e86SOder Chiou #define RT5677_VAD_CTRL3			0x9e
1570e826e86SOder Chiou #define RT5677_VAD_CTRL4			0x9f
1580e826e86SOder Chiou #define RT5677_VAD_CTRL5			0xa0
1590e826e86SOder Chiou /* Function - Digital */
1600e826e86SOder Chiou #define RT5677_DSP_INB_CTRL1			0xa3
1610e826e86SOder Chiou #define RT5677_DSP_INB_CTRL2			0xa4
1620e826e86SOder Chiou #define RT5677_DSP_IN_OUTB_CTRL			0xa5
1630e826e86SOder Chiou #define RT5677_DSP_OUTB0_1_DIG_VOL		0xa6
1640e826e86SOder Chiou #define RT5677_DSP_OUTB2_3_DIG_VOL		0xa7
1650e826e86SOder Chiou #define RT5677_DSP_OUTB4_5_DIG_VOL		0xa8
1660e826e86SOder Chiou #define RT5677_DSP_OUTB6_7_DIG_VOL		0xa9
1670e826e86SOder Chiou #define RT5677_ADC_EQ_CTRL1			0xae
1680e826e86SOder Chiou #define RT5677_ADC_EQ_CTRL2			0xaf
1690e826e86SOder Chiou #define RT5677_EQ_CTRL1				0xb0
1700e826e86SOder Chiou #define RT5677_EQ_CTRL2				0xb1
1710e826e86SOder Chiou #define RT5677_EQ_CTRL3				0xb2
1720e826e86SOder Chiou #define RT5677_SOFT_VOL_ZERO_CROSS1		0xb3
1730e826e86SOder Chiou #define RT5677_JD_CTRL1				0xb5
1740e826e86SOder Chiou #define RT5677_JD_CTRL2				0xb6
1750e826e86SOder Chiou #define RT5677_JD_CTRL3				0xb8
1760e826e86SOder Chiou #define RT5677_IRQ_CTRL1			0xbd
1770e826e86SOder Chiou #define RT5677_IRQ_CTRL2			0xbe
1780e826e86SOder Chiou #define RT5677_GPIO_ST				0xbf
1790e826e86SOder Chiou #define RT5677_GPIO_CTRL1			0xc0
1800e826e86SOder Chiou #define RT5677_GPIO_CTRL2			0xc1
1810e826e86SOder Chiou #define RT5677_GPIO_CTRL3			0xc2
1820e826e86SOder Chiou #define RT5677_STO1_ADC_HI_FILTER1		0xc5
1830e826e86SOder Chiou #define RT5677_STO1_ADC_HI_FILTER2		0xc6
1840e826e86SOder Chiou #define RT5677_MONO_ADC_HI_FILTER1		0xc7
1850e826e86SOder Chiou #define RT5677_MONO_ADC_HI_FILTER2		0xc8
1860e826e86SOder Chiou #define RT5677_STO2_ADC_HI_FILTER1		0xc9
1870e826e86SOder Chiou #define RT5677_STO2_ADC_HI_FILTER2		0xca
1880e826e86SOder Chiou #define RT5677_STO3_ADC_HI_FILTER1		0xcb
1890e826e86SOder Chiou #define RT5677_STO3_ADC_HI_FILTER2		0xcc
1900e826e86SOder Chiou #define RT5677_STO4_ADC_HI_FILTER1		0xcd
1910e826e86SOder Chiou #define RT5677_STO4_ADC_HI_FILTER2		0xce
1920e826e86SOder Chiou #define RT5677_MB_DRC_CTRL1			0xd0
1930e826e86SOder Chiou #define RT5677_DRC1_CTRL1			0xd2
1940e826e86SOder Chiou #define RT5677_DRC1_CTRL2			0xd3
1950e826e86SOder Chiou #define RT5677_DRC1_CTRL3			0xd4
1960e826e86SOder Chiou #define RT5677_DRC1_CTRL4			0xd5
1970e826e86SOder Chiou #define RT5677_DRC1_CTRL5			0xd6
1980e826e86SOder Chiou #define RT5677_DRC1_CTRL6			0xd7
1990e826e86SOder Chiou #define RT5677_DRC2_CTRL1			0xd8
2000e826e86SOder Chiou #define RT5677_DRC2_CTRL2			0xd9
2010e826e86SOder Chiou #define RT5677_DRC2_CTRL3			0xda
2020e826e86SOder Chiou #define RT5677_DRC2_CTRL4			0xdb
2030e826e86SOder Chiou #define RT5677_DRC2_CTRL5			0xdc
2040e826e86SOder Chiou #define RT5677_DRC2_CTRL6			0xdd
2050e826e86SOder Chiou #define RT5677_DRC1_HL_CTRL1			0xde
2060e826e86SOder Chiou #define RT5677_DRC1_HL_CTRL2			0xdf
2070e826e86SOder Chiou #define RT5677_DRC2_HL_CTRL1			0xe0
2080e826e86SOder Chiou #define RT5677_DRC2_HL_CTRL2			0xe1
2090e826e86SOder Chiou #define RT5677_DSP_INB1_SRC_CTRL1		0xe3
2100e826e86SOder Chiou #define RT5677_DSP_INB1_SRC_CTRL2		0xe4
2110e826e86SOder Chiou #define RT5677_DSP_INB1_SRC_CTRL3		0xe5
2120e826e86SOder Chiou #define RT5677_DSP_INB1_SRC_CTRL4		0xe6
2130e826e86SOder Chiou #define RT5677_DSP_INB2_SRC_CTRL1		0xe7
2140e826e86SOder Chiou #define RT5677_DSP_INB2_SRC_CTRL2		0xe8
2150e826e86SOder Chiou #define RT5677_DSP_INB2_SRC_CTRL3		0xe9
2160e826e86SOder Chiou #define RT5677_DSP_INB2_SRC_CTRL4		0xea
2170e826e86SOder Chiou #define RT5677_DSP_INB3_SRC_CTRL1		0xeb
2180e826e86SOder Chiou #define RT5677_DSP_INB3_SRC_CTRL2		0xec
2190e826e86SOder Chiou #define RT5677_DSP_INB3_SRC_CTRL3		0xed
2200e826e86SOder Chiou #define RT5677_DSP_INB3_SRC_CTRL4		0xee
2210e826e86SOder Chiou #define RT5677_DSP_OUTB1_SRC_CTRL1		0xef
2220e826e86SOder Chiou #define RT5677_DSP_OUTB1_SRC_CTRL2		0xf0
2230e826e86SOder Chiou #define RT5677_DSP_OUTB1_SRC_CTRL3		0xf1
2240e826e86SOder Chiou #define RT5677_DSP_OUTB1_SRC_CTRL4		0xf2
2250e826e86SOder Chiou #define RT5677_DSP_OUTB2_SRC_CTRL1		0xf3
2260e826e86SOder Chiou #define RT5677_DSP_OUTB2_SRC_CTRL2		0xf4
2270e826e86SOder Chiou #define RT5677_DSP_OUTB2_SRC_CTRL3		0xf5
2280e826e86SOder Chiou #define RT5677_DSP_OUTB2_SRC_CTRL4		0xf6
2290e826e86SOder Chiou 
2300e826e86SOder Chiou /* Virtual DSP Mixer Control */
2310e826e86SOder Chiou #define RT5677_DSP_OUTB_0123_MIXER_CTRL		0xf7
2320e826e86SOder Chiou #define RT5677_DSP_OUTB_45_MIXER_CTRL		0xf8
2330e826e86SOder Chiou #define RT5677_DSP_OUTB_67_MIXER_CTRL		0xf9
2340e826e86SOder Chiou 
2350e826e86SOder Chiou /* General Control */
2360e826e86SOder Chiou #define RT5677_DIG_MISC				0xfa
2370e826e86SOder Chiou #define RT5677_GEN_CTRL1			0xfb
2380e826e86SOder Chiou #define RT5677_GEN_CTRL2			0xfc
2390e826e86SOder Chiou 
2400e826e86SOder Chiou /* DSP Mode I2C Control*/
2410e826e86SOder Chiou #define RT5677_DSP_I2C_OP_CODE			0x00
2420e826e86SOder Chiou #define RT5677_DSP_I2C_ADDR_LSB			0x01
2430e826e86SOder Chiou #define RT5677_DSP_I2C_ADDR_MSB			0x02
2440e826e86SOder Chiou #define RT5677_DSP_I2C_DATA_LSB			0x03
2450e826e86SOder Chiou #define RT5677_DSP_I2C_DATA_MSB			0x04
2460e826e86SOder Chiou 
2470e826e86SOder Chiou /* Index of Codec Private Register definition */
2480e826e86SOder Chiou #define RT5677_PR_DRC1_CTRL_1			0x01
2490e826e86SOder Chiou #define RT5677_PR_DRC1_CTRL_2			0x02
2500e826e86SOder Chiou #define RT5677_PR_DRC1_CTRL_3			0x03
2510e826e86SOder Chiou #define RT5677_PR_DRC1_CTRL_4			0x04
2520e826e86SOder Chiou #define RT5677_PR_DRC1_CTRL_5			0x05
2530e826e86SOder Chiou #define RT5677_PR_DRC1_CTRL_6			0x06
2540e826e86SOder Chiou #define RT5677_PR_DRC1_CTRL_7			0x07
2550e826e86SOder Chiou #define RT5677_PR_DRC2_CTRL_1			0x08
2560e826e86SOder Chiou #define RT5677_PR_DRC2_CTRL_2			0x09
2570e826e86SOder Chiou #define RT5677_PR_DRC2_CTRL_3			0x0a
2580e826e86SOder Chiou #define RT5677_PR_DRC2_CTRL_4			0x0b
2590e826e86SOder Chiou #define RT5677_PR_DRC2_CTRL_5			0x0c
2600e826e86SOder Chiou #define RT5677_PR_DRC2_CTRL_6			0x0d
2610e826e86SOder Chiou #define RT5677_PR_DRC2_CTRL_7			0x0e
2620e826e86SOder Chiou #define RT5677_BIAS_CUR1			0x10
2630e826e86SOder Chiou #define RT5677_BIAS_CUR2			0x12
2640e826e86SOder Chiou #define RT5677_BIAS_CUR3			0x13
2650e826e86SOder Chiou #define RT5677_BIAS_CUR4			0x14
2660e826e86SOder Chiou #define RT5677_BIAS_CUR5			0x15
2670e826e86SOder Chiou #define RT5677_VREF_LOUT_CTRL			0x17
2680e826e86SOder Chiou #define RT5677_DIG_VOL_CTRL1			0x1a
2690e826e86SOder Chiou #define RT5677_DIG_VOL_CTRL2			0x1b
2700e826e86SOder Chiou #define RT5677_ANA_ADC_GAIN_CTRL		0x1e
2710e826e86SOder Chiou #define RT5677_VAD_SRAM_TEST1			0x20
2720e826e86SOder Chiou #define RT5677_VAD_SRAM_TEST2			0x21
2730e826e86SOder Chiou #define RT5677_VAD_SRAM_TEST3			0x22
2740e826e86SOder Chiou #define RT5677_VAD_SRAM_TEST4			0x23
2750e826e86SOder Chiou #define RT5677_PAD_DRV_CTRL			0x26
2760e826e86SOder Chiou #define RT5677_DIG_IN_PIN_ST_CTRL1		0x29
2770e826e86SOder Chiou #define RT5677_DIG_IN_PIN_ST_CTRL2		0x2a
2780e826e86SOder Chiou #define RT5677_DIG_IN_PIN_ST_CTRL3		0x2b
2790e826e86SOder Chiou #define RT5677_PLL1_INT				0x38
2800e826e86SOder Chiou #define RT5677_PLL2_INT				0x39
2810e826e86SOder Chiou #define RT5677_TEST_CTRL1			0x3a
2820e826e86SOder Chiou #define RT5677_TEST_CTRL2			0x3b
2830e826e86SOder Chiou #define RT5677_TEST_CTRL3			0x3c
2840e826e86SOder Chiou #define RT5677_CHOP_DAC_ADC			0x3d
2850e826e86SOder Chiou #define RT5677_SOFT_DEPOP_DAC_CLK_CTRL		0x3e
2860e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER1		0x90
2870e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER2		0x91
2880e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER3		0x92
2890e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER4		0x93
2900e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER5		0x94
2910e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER6		0x95
2920e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER7		0x96
2930e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER8		0x97
2940e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER9		0x98
2950e826e86SOder Chiou #define RT5677_CROSS_OVER_FILTER10		0x99
2960e826e86SOder Chiou 
2970e826e86SOder Chiou /* global definition */
2980e826e86SOder Chiou #define RT5677_L_MUTE				(0x1 << 15)
2990e826e86SOder Chiou #define RT5677_L_MUTE_SFT			15
3000e826e86SOder Chiou #define RT5677_VOL_L_MUTE			(0x1 << 14)
3010e826e86SOder Chiou #define RT5677_VOL_L_SFT			14
3020e826e86SOder Chiou #define RT5677_R_MUTE				(0x1 << 7)
3030e826e86SOder Chiou #define RT5677_R_MUTE_SFT			7
3040e826e86SOder Chiou #define RT5677_VOL_R_MUTE			(0x1 << 6)
3050e826e86SOder Chiou #define RT5677_VOL_R_SFT			6
30640e3262eSDylan Reid #define RT5677_L_VOL_MASK			(0x7f << 9)
30740e3262eSDylan Reid #define RT5677_L_VOL_SFT			9
30840e3262eSDylan Reid #define RT5677_R_VOL_MASK			(0x7f << 1)
30940e3262eSDylan Reid #define RT5677_R_VOL_SFT			1
3100e826e86SOder Chiou 
3110e826e86SOder Chiou /* LOUT1 Control (0x01) */
3120e826e86SOder Chiou #define RT5677_LOUT1_L_MUTE			(0x1 << 15)
3130e826e86SOder Chiou #define RT5677_LOUT1_L_MUTE_SFT			(15)
3140e826e86SOder Chiou #define RT5677_LOUT1_L_DF			(0x1 << 14)
3150e826e86SOder Chiou #define RT5677_LOUT1_L_DF_SFT			(14)
3160e826e86SOder Chiou #define RT5677_LOUT2_L_MUTE			(0x1 << 13)
3170e826e86SOder Chiou #define RT5677_LOUT2_L_MUTE_SFT			(13)
3180e826e86SOder Chiou #define RT5677_LOUT2_L_DF			(0x1 << 12)
3190e826e86SOder Chiou #define RT5677_LOUT2_L_DF_SFT			(12)
3200e826e86SOder Chiou #define RT5677_LOUT3_L_MUTE			(0x1 << 11)
3210e826e86SOder Chiou #define RT5677_LOUT3_L_MUTE_SFT			(11)
3220e826e86SOder Chiou #define RT5677_LOUT3_L_DF			(0x1 << 10)
3230e826e86SOder Chiou #define RT5677_LOUT3_L_DF_SFT			(10)
3240e826e86SOder Chiou #define RT5677_LOUT1_ENH_DRV			(0x1 << 9)
3250e826e86SOder Chiou #define RT5677_LOUT1_ENH_DRV_SFT		(9)
3260e826e86SOder Chiou #define RT5677_LOUT2_ENH_DRV			(0x1 << 8)
3270e826e86SOder Chiou #define RT5677_LOUT2_ENH_DRV_SFT		(8)
3280e826e86SOder Chiou #define RT5677_LOUT3_ENH_DRV			(0x1 << 7)
3290e826e86SOder Chiou #define RT5677_LOUT3_ENH_DRV_SFT		(7)
3300e826e86SOder Chiou 
3310e826e86SOder Chiou /* IN1 Control (0x03) */
3320e826e86SOder Chiou #define RT5677_BST_MASK1			(0xf << 12)
3330e826e86SOder Chiou #define RT5677_BST_SFT1				12
3340e826e86SOder Chiou #define RT5677_BST_MASK2			(0xf << 8)
3350e826e86SOder Chiou #define RT5677_BST_SFT2				8
3360e826e86SOder Chiou #define RT5677_IN_DF1				(0x1 << 7)
3370e826e86SOder Chiou #define RT5677_IN_DF1_SFT			7
3380e826e86SOder Chiou #define RT5677_IN_DF2				(0x1 << 6)
3390e826e86SOder Chiou #define RT5677_IN_DF2_SFT			6
3400e826e86SOder Chiou 
3410e826e86SOder Chiou /* Micbias Control (0x04) */
3420e826e86SOder Chiou #define RT5677_MICBIAS1_OUTVOLT_MASK		(0x1 << 15)
3430e826e86SOder Chiou #define RT5677_MICBIAS1_OUTVOLT_SFT		(15)
3440e826e86SOder Chiou #define RT5677_MICBIAS1_OUTVOLT_2_7V		(0x0 << 15)
3450e826e86SOder Chiou #define RT5677_MICBIAS1_OUTVOLT_2_25V		(0x1 << 15)
3460e826e86SOder Chiou #define RT5677_MICBIAS1_CTRL_VDD_MASK		(0x1 << 14)
3470e826e86SOder Chiou #define RT5677_MICBIAS1_CTRL_VDD_SFT		(14)
3480e826e86SOder Chiou #define RT5677_MICBIAS1_CTRL_VDD_1_8V		(0x0 << 14)
3490e826e86SOder Chiou #define RT5677_MICBIAS1_CTRL_VDD_3_3V		(0x1 << 14)
3500e826e86SOder Chiou #define RT5677_MICBIAS1_OVCD_MASK		(0x1 << 11)
3510e826e86SOder Chiou #define RT5677_MICBIAS1_OVCD_SHIFT		(11)
3520e826e86SOder Chiou #define RT5677_MICBIAS1_OVCD_DIS		(0x0 << 11)
3530e826e86SOder Chiou #define RT5677_MICBIAS1_OVCD_EN			(0x1 << 11)
3540e826e86SOder Chiou #define RT5677_MICBIAS1_OVTH_MASK		(0x3 << 9)
3550e826e86SOder Chiou #define RT5677_MICBIAS1_OVTH_SFT		9
3560e826e86SOder Chiou #define RT5677_MICBIAS1_OVTH_640UA		(0x0 << 9)
3570e826e86SOder Chiou #define RT5677_MICBIAS1_OVTH_1280UA		(0x1 << 9)
3580e826e86SOder Chiou #define RT5677_MICBIAS1_OVTH_1920UA		(0x2 << 9)
3590e826e86SOder Chiou 
3600e826e86SOder Chiou /* SLIMbus Parameter (0x07) */
3610e826e86SOder Chiou 
3620e826e86SOder Chiou /* SLIMbus Rx (0x08) */
3630e826e86SOder Chiou #define RT5677_SLB_ADC4_MASK			(0x3 << 6)
3640e826e86SOder Chiou #define RT5677_SLB_ADC4_SFT			6
3650e826e86SOder Chiou #define RT5677_SLB_ADC3_MASK			(0x3 << 4)
3660e826e86SOder Chiou #define RT5677_SLB_ADC3_SFT			4
3670e826e86SOder Chiou #define RT5677_SLB_ADC2_MASK			(0x3 << 2)
3680e826e86SOder Chiou #define RT5677_SLB_ADC2_SFT			2
3690e826e86SOder Chiou #define RT5677_SLB_ADC1_MASK			(0x3 << 0)
3700e826e86SOder Chiou #define RT5677_SLB_ADC1_SFT			0
3710e826e86SOder Chiou 
3720e826e86SOder Chiou /* SLIMBus control (0x09) */
3730e826e86SOder Chiou 
3740e826e86SOder Chiou /* Sidetone Control (0x13) */
3750e826e86SOder Chiou #define RT5677_ST_HPF_SEL_MASK			(0x7 << 13)
3760e826e86SOder Chiou #define RT5677_ST_HPF_SEL_SFT			13
3770e826e86SOder Chiou #define RT5677_ST_HPF_PATH			(0x1 << 12)
3780e826e86SOder Chiou #define RT5677_ST_HPF_PATH_SFT			12
3790e826e86SOder Chiou #define RT5677_ST_SEL_MASK			(0x7 << 9)
3800e826e86SOder Chiou #define RT5677_ST_SEL_SFT			9
3810e826e86SOder Chiou #define RT5677_ST_EN				(0x1 << 6)
3820e826e86SOder Chiou #define RT5677_ST_EN_SFT			6
38390bdbb46SOder Chiou #define RT5677_ST_GAIN				(0x1 << 5)
38490bdbb46SOder Chiou #define RT5677_ST_GAIN_SFT			5
38590bdbb46SOder Chiou #define RT5677_ST_VOL_MASK			(0x1f << 0)
38690bdbb46SOder Chiou #define RT5677_ST_VOL_SFT			0
3870e826e86SOder Chiou 
3880e826e86SOder Chiou /* Analog DAC1/2/3 Source Control (0x15) */
3890e826e86SOder Chiou #define RT5677_ANA_DAC3_SRC_SEL_MASK		(0x3 << 4)
3900e826e86SOder Chiou #define RT5677_ANA_DAC3_SRC_SEL_SFT		4
3910e826e86SOder Chiou #define RT5677_ANA_DAC1_2_SRC_SEL_MASK		(0x3 << 0)
3920e826e86SOder Chiou #define RT5677_ANA_DAC1_2_SRC_SEL_SFT		0
3930e826e86SOder Chiou 
3940e826e86SOder Chiou /* IF/DSP to DAC3/4 Mixer Control (0x16) */
3950e826e86SOder Chiou #define RT5677_M_DAC4_L_VOL			(0x1 << 15)
3960e826e86SOder Chiou #define RT5677_M_DAC4_L_VOL_SFT			15
3970e826e86SOder Chiou #define RT5677_SEL_DAC4_L_SRC_MASK		(0x7 << 12)
3980e826e86SOder Chiou #define RT5677_SEL_DAC4_L_SRC_SFT		12
3990e826e86SOder Chiou #define RT5677_M_DAC4_R_VOL			(0x1 << 11)
4000e826e86SOder Chiou #define RT5677_M_DAC4_R_VOL_SFT			11
4010e826e86SOder Chiou #define RT5677_SEL_DAC4_R_SRC_MASK		(0x7 << 8)
4020e826e86SOder Chiou #define RT5677_SEL_DAC4_R_SRC_SFT		8
4030e826e86SOder Chiou #define RT5677_M_DAC3_L_VOL			(0x1 << 7)
4040e826e86SOder Chiou #define RT5677_M_DAC3_L_VOL_SFT			7
4050e826e86SOder Chiou #define RT5677_SEL_DAC3_L_SRC_MASK		(0x7 << 4)
4060e826e86SOder Chiou #define RT5677_SEL_DAC3_L_SRC_SFT		4
4070e826e86SOder Chiou #define RT5677_M_DAC3_R_VOL			(0x1 << 3)
4080e826e86SOder Chiou #define RT5677_M_DAC3_R_VOL_SFT			3
4090e826e86SOder Chiou #define RT5677_SEL_DAC3_R_SRC_MASK		(0x7 << 0)
4100e826e86SOder Chiou #define RT5677_SEL_DAC3_R_SRC_SFT		0
4110e826e86SOder Chiou 
4120e826e86SOder Chiou /* DAC4 Digital Volume (0x17) */
4130e826e86SOder Chiou #define RT5677_DAC4_L_VOL_MASK			(0xff << 8)
4140e826e86SOder Chiou #define RT5677_DAC4_L_VOL_SFT			8
4150e826e86SOder Chiou #define RT5677_DAC4_R_VOL_MASK			(0xff)
4160e826e86SOder Chiou #define RT5677_DAC4_R_VOL_SFT			0
4170e826e86SOder Chiou 
4180e826e86SOder Chiou /* DAC3 Digital Volume (0x18) */
4190e826e86SOder Chiou #define RT5677_DAC3_L_VOL_MASK			(0xff << 8)
4200e826e86SOder Chiou #define RT5677_DAC3_L_VOL_SFT			8
4210e826e86SOder Chiou #define RT5677_DAC3_R_VOL_MASK			(0xff)
4220e826e86SOder Chiou #define RT5677_DAC3_R_VOL_SFT			0
4230e826e86SOder Chiou 
4240e826e86SOder Chiou /* DAC3 Digital Volume (0x19) */
4250e826e86SOder Chiou #define RT5677_DAC1_L_VOL_MASK			(0xff << 8)
4260e826e86SOder Chiou #define RT5677_DAC1_L_VOL_SFT			8
4270e826e86SOder Chiou #define RT5677_DAC1_R_VOL_MASK			(0xff)
4280e826e86SOder Chiou #define RT5677_DAC1_R_VOL_SFT			0
4290e826e86SOder Chiou 
4300e826e86SOder Chiou /* DAC2 Digital Volume (0x1a) */
4310e826e86SOder Chiou #define RT5677_DAC2_L_VOL_MASK			(0xff << 8)
4320e826e86SOder Chiou #define RT5677_DAC2_L_VOL_SFT			8
4330e826e86SOder Chiou #define RT5677_DAC2_R_VOL_MASK			(0xff)
4340e826e86SOder Chiou #define RT5677_DAC2_R_VOL_SFT			0
4350e826e86SOder Chiou 
4360e826e86SOder Chiou /* IF/DSP to DAC2 Mixer Control (0x1b) */
4370e826e86SOder Chiou #define RT5677_M_DAC2_L_VOL			(0x1 << 7)
4380e826e86SOder Chiou #define RT5677_M_DAC2_L_VOL_SFT			7
4390e826e86SOder Chiou #define RT5677_SEL_DAC2_L_SRC_MASK		(0x7 << 4)
4400e826e86SOder Chiou #define RT5677_SEL_DAC2_L_SRC_SFT		4
4410e826e86SOder Chiou #define RT5677_M_DAC2_R_VOL			(0x1 << 3)
4420e826e86SOder Chiou #define RT5677_M_DAC2_R_VOL_SFT			3
4430e826e86SOder Chiou #define RT5677_SEL_DAC2_R_SRC_MASK		(0x7 << 0)
4440e826e86SOder Chiou #define RT5677_SEL_DAC2_R_SRC_SFT		0
4450e826e86SOder Chiou 
4460e826e86SOder Chiou /* Stereo1 ADC Digital Volume Control (0x1c) */
44740e3262eSDylan Reid #define RT5677_STO1_ADC_L_VOL_MASK		(0x3f << 9)
44840e3262eSDylan Reid #define RT5677_STO1_ADC_L_VOL_SFT		9
44940e3262eSDylan Reid #define RT5677_STO1_ADC_R_VOL_MASK		(0x3f << 1)
45040e3262eSDylan Reid #define RT5677_STO1_ADC_R_VOL_SFT		1
4510e826e86SOder Chiou 
4520e826e86SOder Chiou /* Mono ADC Digital Volume Control (0x1d) */
45340e3262eSDylan Reid #define RT5677_MONO_ADC_L_VOL_MASK		(0x3f << 9)
45440e3262eSDylan Reid #define RT5677_MONO_ADC_L_VOL_SFT		9
45540e3262eSDylan Reid #define RT5677_MONO_ADC_R_VOL_MASK		(0x3f << 1)
45640e3262eSDylan Reid #define RT5677_MONO_ADC_R_VOL_SFT		1
4570e826e86SOder Chiou 
4580e826e86SOder Chiou /* Stereo 1/2 ADC Boost Gain Control (0x1e) */
4590e826e86SOder Chiou #define RT5677_STO1_ADC_L_BST_MASK		(0x3 << 14)
4600e826e86SOder Chiou #define RT5677_STO1_ADC_L_BST_SFT		14
4610e826e86SOder Chiou #define RT5677_STO1_ADC_R_BST_MASK		(0x3 << 12)
4620e826e86SOder Chiou #define RT5677_STO1_ADC_R_BST_SFT		12
4630e826e86SOder Chiou #define RT5677_STO1_ADC_COMP_MASK		(0x3 << 10)
4640e826e86SOder Chiou #define RT5677_STO1_ADC_COMP_SFT		10
4650e826e86SOder Chiou #define RT5677_STO2_ADC_L_BST_MASK		(0x3 << 8)
4660e826e86SOder Chiou #define RT5677_STO2_ADC_L_BST_SFT		8
4670e826e86SOder Chiou #define RT5677_STO2_ADC_R_BST_MASK		(0x3 << 6)
4680e826e86SOder Chiou #define RT5677_STO2_ADC_R_BST_SFT		6
4690e826e86SOder Chiou #define RT5677_STO2_ADC_COMP_MASK		(0x3 << 4)
4700e826e86SOder Chiou #define RT5677_STO2_ADC_COMP_SFT		4
4710e826e86SOder Chiou 
4720e826e86SOder Chiou /* Stereo2 ADC Digital Volume Control (0x1f) */
4730e826e86SOder Chiou #define RT5677_STO2_ADC_L_VOL_MASK		(0x7f << 8)
4740e826e86SOder Chiou #define RT5677_STO2_ADC_L_VOL_SFT		8
4750e826e86SOder Chiou #define RT5677_STO2_ADC_R_VOL_MASK		(0x7f)
4760e826e86SOder Chiou #define RT5677_STO2_ADC_R_VOL_SFT		0
4770e826e86SOder Chiou 
4780e826e86SOder Chiou /* ADC Boost Gain Control 2 (0x20) */
4790e826e86SOder Chiou #define RT5677_MONO_ADC_L_BST_MASK		(0x3 << 14)
4800e826e86SOder Chiou #define RT5677_MONO_ADC_L_BST_SFT		14
4810e826e86SOder Chiou #define RT5677_MONO_ADC_R_BST_MASK		(0x3 << 12)
4820e826e86SOder Chiou #define RT5677_MONO_ADC_R_BST_SFT		12
4830e826e86SOder Chiou #define RT5677_MONO_ADC_COMP_MASK		(0x3 << 10)
4840e826e86SOder Chiou #define RT5677_MONO_ADC_COMP_SFT		10
4850e826e86SOder Chiou 
4860e826e86SOder Chiou /* Stereo 3/4 ADC Boost Gain Control (0x21) */
4870e826e86SOder Chiou #define RT5677_STO3_ADC_L_BST_MASK		(0x3 << 14)
4880e826e86SOder Chiou #define RT5677_STO3_ADC_L_BST_SFT		14
4890e826e86SOder Chiou #define RT5677_STO3_ADC_R_BST_MASK		(0x3 << 12)
4900e826e86SOder Chiou #define RT5677_STO3_ADC_R_BST_SFT		12
4910e826e86SOder Chiou #define RT5677_STO3_ADC_COMP_MASK		(0x3 << 10)
4920e826e86SOder Chiou #define RT5677_STO3_ADC_COMP_SFT		10
4930e826e86SOder Chiou #define RT5677_STO4_ADC_L_BST_MASK		(0x3 << 8)
4940e826e86SOder Chiou #define RT5677_STO4_ADC_L_BST_SFT		8
4950e826e86SOder Chiou #define RT5677_STO4_ADC_R_BST_MASK		(0x3 << 6)
4960e826e86SOder Chiou #define RT5677_STO4_ADC_R_BST_SFT		6
4970e826e86SOder Chiou #define RT5677_STO4_ADC_COMP_MASK		(0x3 << 4)
4980e826e86SOder Chiou #define RT5677_STO4_ADC_COMP_SFT		4
4990e826e86SOder Chiou 
5000e826e86SOder Chiou /* Stereo3 ADC Digital Volume Control (0x22) */
5010e826e86SOder Chiou #define RT5677_STO3_ADC_L_VOL_MASK		(0x7f << 8)
5020e826e86SOder Chiou #define RT5677_STO3_ADC_L_VOL_SFT		8
5030e826e86SOder Chiou #define RT5677_STO3_ADC_R_VOL_MASK		(0x7f)
5040e826e86SOder Chiou #define RT5677_STO3_ADC_R_VOL_SFT		0
5050e826e86SOder Chiou 
5060e826e86SOder Chiou /* Stereo4 ADC Digital Volume Control (0x23) */
5070e826e86SOder Chiou #define RT5677_STO4_ADC_L_VOL_MASK		(0x7f << 8)
5080e826e86SOder Chiou #define RT5677_STO4_ADC_L_VOL_SFT		8
5090e826e86SOder Chiou #define RT5677_STO4_ADC_R_VOL_MASK		(0x7f)
5100e826e86SOder Chiou #define RT5677_STO4_ADC_R_VOL_SFT		0
5110e826e86SOder Chiou 
5120e826e86SOder Chiou /* Stereo4 ADC Mixer control (0x24) */
5130e826e86SOder Chiou #define RT5677_M_STO4_ADC_L2			(0x1 << 15)
5140e826e86SOder Chiou #define RT5677_M_STO4_ADC_L2_SFT		15
5150e826e86SOder Chiou #define RT5677_M_STO4_ADC_L1			(0x1 << 14)
5160e826e86SOder Chiou #define RT5677_M_STO4_ADC_L1_SFT		14
5170e826e86SOder Chiou #define RT5677_SEL_STO4_ADC1_MASK		(0x3 << 12)
5180e826e86SOder Chiou #define RT5677_SEL_STO4_ADC1_SFT		12
5190e826e86SOder Chiou #define RT5677_SEL_STO4_ADC2_MASK		(0x3 << 10)
5200e826e86SOder Chiou #define RT5677_SEL_STO4_ADC2_SFT		10
5210e826e86SOder Chiou #define RT5677_SEL_STO4_DMIC_MASK		(0x3 << 8)
5220e826e86SOder Chiou #define RT5677_SEL_STO4_DMIC_SFT		8
5230e826e86SOder Chiou #define RT5677_M_STO4_ADC_R1			(0x1 << 7)
5240e826e86SOder Chiou #define RT5677_M_STO4_ADC_R1_SFT		7
5250e826e86SOder Chiou #define RT5677_M_STO4_ADC_R2			(0x1 << 6)
5260e826e86SOder Chiou #define RT5677_M_STO4_ADC_R2_SFT		6
5270e826e86SOder Chiou 
5280e826e86SOder Chiou /* Stereo3 ADC Mixer control (0x25) */
5290e826e86SOder Chiou #define RT5677_M_STO3_ADC_L2			(0x1 << 15)
5300e826e86SOder Chiou #define RT5677_M_STO3_ADC_L2_SFT		15
5310e826e86SOder Chiou #define RT5677_M_STO3_ADC_L1			(0x1 << 14)
5320e826e86SOder Chiou #define RT5677_M_STO3_ADC_L1_SFT		14
5330e826e86SOder Chiou #define RT5677_SEL_STO3_ADC1_MASK		(0x3 << 12)
5340e826e86SOder Chiou #define RT5677_SEL_STO3_ADC1_SFT		12
5350e826e86SOder Chiou #define RT5677_SEL_STO3_ADC2_MASK		(0x3 << 10)
5360e826e86SOder Chiou #define RT5677_SEL_STO3_ADC2_SFT		10
5370e826e86SOder Chiou #define RT5677_SEL_STO3_DMIC_MASK		(0x3 << 8)
5380e826e86SOder Chiou #define RT5677_SEL_STO3_DMIC_SFT		8
5390e826e86SOder Chiou #define RT5677_M_STO3_ADC_R1			(0x1 << 7)
5400e826e86SOder Chiou #define RT5677_M_STO3_ADC_R1_SFT		7
5410e826e86SOder Chiou #define RT5677_M_STO3_ADC_R2			(0x1 << 6)
5420e826e86SOder Chiou #define RT5677_M_STO3_ADC_R2_SFT		6
5430e826e86SOder Chiou 
5440e826e86SOder Chiou /* Stereo2 ADC Mixer Control (0x26) */
5450e826e86SOder Chiou #define RT5677_M_STO2_ADC_L2			(0x1 << 15)
5460e826e86SOder Chiou #define RT5677_M_STO2_ADC_L2_SFT		15
5470e826e86SOder Chiou #define RT5677_M_STO2_ADC_L1			(0x1 << 14)
5480e826e86SOder Chiou #define RT5677_M_STO2_ADC_L1_SFT		14
5490e826e86SOder Chiou #define RT5677_SEL_STO2_ADC1_MASK		(0x3 << 12)
5500e826e86SOder Chiou #define RT5677_SEL_STO2_ADC1_SFT		12
5510e826e86SOder Chiou #define RT5677_SEL_STO2_ADC2_MASK		(0x3 << 10)
5520e826e86SOder Chiou #define RT5677_SEL_STO2_ADC2_SFT		10
5530e826e86SOder Chiou #define RT5677_SEL_STO2_DMIC_MASK		(0x3 << 8)
5540e826e86SOder Chiou #define RT5677_SEL_STO2_DMIC_SFT		8
5550e826e86SOder Chiou #define RT5677_M_STO2_ADC_R1			(0x1 << 7)
5560e826e86SOder Chiou #define RT5677_M_STO2_ADC_R1_SFT		7
5570e826e86SOder Chiou #define RT5677_M_STO2_ADC_R2			(0x1 << 6)
5580e826e86SOder Chiou #define RT5677_M_STO2_ADC_R2_SFT		6
5590e826e86SOder Chiou #define RT5677_SEL_STO2_LR_MIX_MASK		(0x1 << 0)
5600e826e86SOder Chiou #define RT5677_SEL_STO2_LR_MIX_SFT		0
5610e826e86SOder Chiou #define RT5677_SEL_STO2_LR_MIX_L		(0x0 << 0)
5620e826e86SOder Chiou #define RT5677_SEL_STO2_LR_MIX_LR		(0x1 << 0)
5630e826e86SOder Chiou 
5640e826e86SOder Chiou /* Stereo1 ADC Mixer control (0x27) */
5650e826e86SOder Chiou #define RT5677_M_STO1_ADC_L2			(0x1 << 15)
5660e826e86SOder Chiou #define RT5677_M_STO1_ADC_L2_SFT		15
5670e826e86SOder Chiou #define RT5677_M_STO1_ADC_L1			(0x1 << 14)
5680e826e86SOder Chiou #define RT5677_M_STO1_ADC_L1_SFT		14
5690e826e86SOder Chiou #define RT5677_SEL_STO1_ADC1_MASK		(0x3 << 12)
5700e826e86SOder Chiou #define RT5677_SEL_STO1_ADC1_SFT		12
5710e826e86SOder Chiou #define RT5677_SEL_STO1_ADC2_MASK		(0x3 << 10)
5720e826e86SOder Chiou #define RT5677_SEL_STO1_ADC2_SFT		10
5730e826e86SOder Chiou #define RT5677_SEL_STO1_DMIC_MASK		(0x3 << 8)
5740e826e86SOder Chiou #define RT5677_SEL_STO1_DMIC_SFT		8
5750e826e86SOder Chiou #define RT5677_M_STO1_ADC_R1			(0x1 << 7)
5760e826e86SOder Chiou #define RT5677_M_STO1_ADC_R1_SFT		7
5770e826e86SOder Chiou #define RT5677_M_STO1_ADC_R2			(0x1 << 6)
5780e826e86SOder Chiou #define RT5677_M_STO1_ADC_R2_SFT		6
5790e826e86SOder Chiou 
5800e826e86SOder Chiou /* Mono ADC Mixer control (0x28) */
5810e826e86SOder Chiou #define RT5677_M_MONO_ADC_L2			(0x1 << 15)
5820e826e86SOder Chiou #define RT5677_M_MONO_ADC_L2_SFT		15
5830e826e86SOder Chiou #define RT5677_M_MONO_ADC_L1			(0x1 << 14)
5840e826e86SOder Chiou #define RT5677_M_MONO_ADC_L1_SFT		14
5850e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_L1_MASK		(0x3 << 12)
5860e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_L1_SFT		12
5870e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_L2_MASK		(0x3 << 10)
5880e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_L2_SFT		10
5890e826e86SOder Chiou #define RT5677_SEL_MONO_DMIC_L_MASK		(0x3 << 8)
5900e826e86SOder Chiou #define RT5677_SEL_MONO_DMIC_L_SFT		8
5910e826e86SOder Chiou #define RT5677_M_MONO_ADC_R1			(0x1 << 7)
5920e826e86SOder Chiou #define RT5677_M_MONO_ADC_R1_SFT		7
5930e826e86SOder Chiou #define RT5677_M_MONO_ADC_R2			(0x1 << 6)
5940e826e86SOder Chiou #define RT5677_M_MONO_ADC_R2_SFT		6
5950e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_R1_MASK		(0x3 << 4)
5960e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_R1_SFT		4
5970e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_R2_MASK		(0x3 << 2)
5980e826e86SOder Chiou #define RT5677_SEL_MONO_ADC_R2_SFT		2
5990e826e86SOder Chiou #define RT5677_SEL_MONO_DMIC_R_MASK		(0x3 << 0)
6000e826e86SOder Chiou #define RT5677_SEL_MONO_DMIC_R_SFT		0
6010e826e86SOder Chiou 
6020e826e86SOder Chiou /* ADC/IF/DSP to DAC1 Mixer control (0x29) */
6030e826e86SOder Chiou #define RT5677_M_ADDA_MIXER1_L			(0x1 << 15)
6040e826e86SOder Chiou #define RT5677_M_ADDA_MIXER1_L_SFT		15
6050e826e86SOder Chiou #define RT5677_M_DAC1_L				(0x1 << 14)
6060e826e86SOder Chiou #define RT5677_M_DAC1_L_SFT			14
6070e826e86SOder Chiou #define RT5677_DAC1_L_SEL_MASK			(0x7 << 8)
6080e826e86SOder Chiou #define RT5677_DAC1_L_SEL_SFT			8
6090e826e86SOder Chiou #define RT5677_M_ADDA_MIXER1_R			(0x1 << 7)
6100e826e86SOder Chiou #define RT5677_M_ADDA_MIXER1_R_SFT		7
6110e826e86SOder Chiou #define RT5677_M_DAC1_R				(0x1 << 6)
6120e826e86SOder Chiou #define RT5677_M_DAC1_R_SFT			6
6130e826e86SOder Chiou #define RT5677_ADDA1_SEL_MASK			(0x3 << 0)
6140e826e86SOder Chiou #define RT5677_ADDA1_SEL_SFT			0
6150e826e86SOder Chiou 
6160e826e86SOder Chiou /* Stereo1 DAC Mixer L/R Control (0x2a) */
6170e826e86SOder Chiou #define RT5677_M_ST_DAC1_L			(0x1 << 15)
6180e826e86SOder Chiou #define RT5677_M_ST_DAC1_L_SFT			15
6190e826e86SOder Chiou #define RT5677_M_DAC1_L_STO_L			(0x1 << 13)
6200e826e86SOder Chiou #define RT5677_M_DAC1_L_STO_L_SFT		13
6210e826e86SOder Chiou #define RT5677_DAC1_L_STO_L_VOL_MASK		(0x1 << 12)
6220e826e86SOder Chiou #define RT5677_DAC1_L_STO_L_VOL_SFT		12
6230e826e86SOder Chiou #define RT5677_M_DAC2_L_STO_L			(0x1 << 11)
6240e826e86SOder Chiou #define RT5677_M_DAC2_L_STO_L_SFT		11
6250e826e86SOder Chiou #define RT5677_DAC2_L_STO_L_VOL_MASK		(0x1 << 10)
6260e826e86SOder Chiou #define RT5677_DAC2_L_STO_L_VOL_SFT		10
6270e826e86SOder Chiou #define RT5677_M_DAC1_R_STO_L			(0x1 << 9)
6280e826e86SOder Chiou #define RT5677_M_DAC1_R_STO_L_SFT		9
6290e826e86SOder Chiou #define RT5677_DAC1_R_STO_L_VOL_MASK		(0x1 << 8)
6300e826e86SOder Chiou #define RT5677_DAC1_R_STO_L_VOL_SFT		8
6310e826e86SOder Chiou #define RT5677_M_ST_DAC1_R			(0x1 << 7)
6320e826e86SOder Chiou #define RT5677_M_ST_DAC1_R_SFT			7
6330e826e86SOder Chiou #define RT5677_M_DAC1_R_STO_R			(0x1 << 5)
6340e826e86SOder Chiou #define RT5677_M_DAC1_R_STO_R_SFT		5
6350e826e86SOder Chiou #define RT5677_DAC1_R_STO_R_VOL_MASK		(0x1 << 4)
6360e826e86SOder Chiou #define RT5677_DAC1_R_STO_R_VOL_SFT		4
6370e826e86SOder Chiou #define RT5677_M_DAC2_R_STO_R			(0x1 << 3)
6380e826e86SOder Chiou #define RT5677_M_DAC2_R_STO_R_SFT		3
6390e826e86SOder Chiou #define RT5677_DAC2_R_STO_R_VOL_MASK		(0x1 << 2)
6400e826e86SOder Chiou #define RT5677_DAC2_R_STO_R_VOL_SFT		2
6410e826e86SOder Chiou #define RT5677_M_DAC1_L_STO_R			(0x1 << 1)
6420e826e86SOder Chiou #define RT5677_M_DAC1_L_STO_R_SFT		1
6430e826e86SOder Chiou #define RT5677_DAC1_L_STO_R_VOL_MASK		(0x1 << 0)
6440e826e86SOder Chiou #define RT5677_DAC1_L_STO_R_VOL_SFT		0
6450e826e86SOder Chiou 
6460e826e86SOder Chiou /* Mono DAC Mixer L/R Control (0x2b) */
6470e826e86SOder Chiou #define RT5677_M_ST_DAC2_L			(0x1 << 15)
6480e826e86SOder Chiou #define RT5677_M_ST_DAC2_L_SFT			15
6490e826e86SOder Chiou #define RT5677_M_DAC2_L_MONO_L			(0x1 << 13)
6500e826e86SOder Chiou #define RT5677_M_DAC2_L_MONO_L_SFT		13
6510e826e86SOder Chiou #define RT5677_DAC2_L_MONO_L_VOL_MASK		(0x1 << 12)
6520e826e86SOder Chiou #define RT5677_DAC2_L_MONO_L_VOL_SFT		12
6530e826e86SOder Chiou #define RT5677_M_DAC2_R_MONO_L			(0x1 << 11)
6540e826e86SOder Chiou #define RT5677_M_DAC2_R_MONO_L_SFT		11
6550e826e86SOder Chiou #define RT5677_DAC2_R_MONO_L_VOL_MASK		(0x1 << 10)
6560e826e86SOder Chiou #define RT5677_DAC2_R_MONO_L_VOL_SFT		10
6570e826e86SOder Chiou #define RT5677_M_DAC1_L_MONO_L			(0x1 << 9)
6580e826e86SOder Chiou #define RT5677_M_DAC1_L_MONO_L_SFT		9
6590e826e86SOder Chiou #define RT5677_DAC1_L_MONO_L_VOL_MASK		(0x1 << 8)
6600e826e86SOder Chiou #define RT5677_DAC1_L_MONO_L_VOL_SFT		8
6610e826e86SOder Chiou #define RT5677_M_ST_DAC2_R			(0x1 << 7)
6620e826e86SOder Chiou #define RT5677_M_ST_DAC2_R_SFT			7
6630e826e86SOder Chiou #define RT5677_M_DAC2_R_MONO_R			(0x1 << 5)
6640e826e86SOder Chiou #define RT5677_M_DAC2_R_MONO_R_SFT		5
6650e826e86SOder Chiou #define RT5677_DAC2_R_MONO_R_VOL_MASK		(0x1 << 4)
6660e826e86SOder Chiou #define RT5677_DAC2_R_MONO_R_VOL_SFT		4
6670e826e86SOder Chiou #define RT5677_M_DAC1_R_MONO_R			(0x1 << 3)
6680e826e86SOder Chiou #define RT5677_M_DAC1_R_MONO_R_SFT		3
6690e826e86SOder Chiou #define RT5677_DAC1_R_MONO_R_VOL_MASK		(0x1 << 2)
6700e826e86SOder Chiou #define RT5677_DAC1_R_MONO_R_VOL_SFT		2
6710e826e86SOder Chiou #define RT5677_M_DAC2_L_MONO_R			(0x1 << 1)
6720e826e86SOder Chiou #define RT5677_M_DAC2_L_MONO_R_SFT		1
6730e826e86SOder Chiou #define RT5677_DAC2_L_MONO_R_VOL_MASK		(0x1 << 0)
6740e826e86SOder Chiou #define RT5677_DAC2_L_MONO_R_VOL_SFT		0
6750e826e86SOder Chiou 
6760e826e86SOder Chiou /* DD Mixer 1 Control (0x2c) */
6770e826e86SOder Chiou #define RT5677_M_STO_L_DD1_L			(0x1 << 15)
6780e826e86SOder Chiou #define RT5677_M_STO_L_DD1_L_SFT		15
6790e826e86SOder Chiou #define RT5677_STO_L_DD1_L_VOL_MASK		(0x1 << 14)
6800e826e86SOder Chiou #define RT5677_STO_L_DD1_L_VOL_SFT		14
6810e826e86SOder Chiou #define RT5677_M_MONO_L_DD1_L			(0x1 << 13)
6820e826e86SOder Chiou #define RT5677_M_MONO_L_DD1_L_SFT		13
6830e826e86SOder Chiou #define RT5677_MONO_L_DD1_L_VOL_MASK		(0x1 << 12)
6840e826e86SOder Chiou #define RT5677_MONO_L_DD1_L_VOL_SFT		12
6850e826e86SOder Chiou #define RT5677_M_DAC3_L_DD1_L			(0x1 << 11)
6860e826e86SOder Chiou #define RT5677_M_DAC3_L_DD1_L_SFT		11
6870e826e86SOder Chiou #define RT5677_DAC3_L_DD1_L_VOL_MASK		(0x1 << 10)
6880e826e86SOder Chiou #define RT5677_DAC3_L_DD1_L_VOL_SFT		10
6890e826e86SOder Chiou #define RT5677_M_DAC3_R_DD1_L			(0x1 << 9)
6900e826e86SOder Chiou #define RT5677_M_DAC3_R_DD1_L_SFT		9
6910e826e86SOder Chiou #define RT5677_DAC3_R_DD1_L_VOL_MASK		(0x1 << 8)
6920e826e86SOder Chiou #define RT5677_DAC3_R_DD1_L_VOL_SFT		8
6930e826e86SOder Chiou #define RT5677_M_STO_R_DD1_R			(0x1 << 7)
6940e826e86SOder Chiou #define RT5677_M_STO_R_DD1_R_SFT		7
6950e826e86SOder Chiou #define RT5677_STO_R_DD1_R_VOL_MASK		(0x1 << 6)
6960e826e86SOder Chiou #define RT5677_STO_R_DD1_R_VOL_SFT		6
6970e826e86SOder Chiou #define RT5677_M_MONO_R_DD1_R			(0x1 << 5)
6980e826e86SOder Chiou #define RT5677_M_MONO_R_DD1_R_SFT		5
6990e826e86SOder Chiou #define RT5677_MONO_R_DD1_R_VOL_MASK		(0x1 << 4)
7000e826e86SOder Chiou #define RT5677_MONO_R_DD1_R_VOL_SFT		4
7010e826e86SOder Chiou #define RT5677_M_DAC3_R_DD1_R			(0x1 << 3)
7020e826e86SOder Chiou #define RT5677_M_DAC3_R_DD1_R_SFT		3
7030e826e86SOder Chiou #define RT5677_DAC3_R_DD1_R_VOL_MASK		(0x1 << 2)
7040e826e86SOder Chiou #define RT5677_DAC3_R_DD1_R_VOL_SFT		2
7050e826e86SOder Chiou #define RT5677_M_DAC3_L_DD1_R			(0x1 << 1)
7060e826e86SOder Chiou #define RT5677_M_DAC3_L_DD1_R_SFT		1
7070e826e86SOder Chiou #define RT5677_DAC3_L_DD1_R_VOL_MASK		(0x1 << 0)
7080e826e86SOder Chiou #define RT5677_DAC3_L_DD1_R_VOL_SFT		0
7090e826e86SOder Chiou 
7100e826e86SOder Chiou /* DD Mixer 2 Control (0x2d) */
7110e826e86SOder Chiou #define RT5677_M_STO_L_DD2_L			(0x1 << 15)
7120e826e86SOder Chiou #define RT5677_M_STO_L_DD2_L_SFT		15
7130e826e86SOder Chiou #define RT5677_STO_L_DD2_L_VOL_MASK		(0x1 << 14)
7140e826e86SOder Chiou #define RT5677_STO_L_DD2_L_VOL_SFT		14
7150e826e86SOder Chiou #define RT5677_M_MONO_L_DD2_L			(0x1 << 13)
7160e826e86SOder Chiou #define RT5677_M_MONO_L_DD2_L_SFT		13
7170e826e86SOder Chiou #define RT5677_MONO_L_DD2_L_VOL_MASK		(0x1 << 12)
7180e826e86SOder Chiou #define RT5677_MONO_L_DD2_L_VOL_SFT		12
7190e826e86SOder Chiou #define RT5677_M_DAC4_L_DD2_L			(0x1 << 11)
7200e826e86SOder Chiou #define RT5677_M_DAC4_L_DD2_L_SFT		11
7210e826e86SOder Chiou #define RT5677_DAC4_L_DD2_L_VOL_MASK		(0x1 << 10)
7220e826e86SOder Chiou #define RT5677_DAC4_L_DD2_L_VOL_SFT		10
7230e826e86SOder Chiou #define RT5677_M_DAC4_R_DD2_L			(0x1 << 9)
7240e826e86SOder Chiou #define RT5677_M_DAC4_R_DD2_L_SFT		9
7250e826e86SOder Chiou #define RT5677_DAC4_R_DD2_L_VOL_MASK		(0x1 << 8)
7260e826e86SOder Chiou #define RT5677_DAC4_R_DD2_L_VOL_SFT		8
7270e826e86SOder Chiou #define RT5677_M_STO_R_DD2_R			(0x1 << 7)
7280e826e86SOder Chiou #define RT5677_M_STO_R_DD2_R_SFT		7
7290e826e86SOder Chiou #define RT5677_STO_R_DD2_R_VOL_MASK		(0x1 << 6)
7300e826e86SOder Chiou #define RT5677_STO_R_DD2_R_VOL_SFT		6
7310e826e86SOder Chiou #define RT5677_M_MONO_R_DD2_R			(0x1 << 5)
7320e826e86SOder Chiou #define RT5677_M_MONO_R_DD2_R_SFT		5
7330e826e86SOder Chiou #define RT5677_MONO_R_DD2_R_VOL_MASK		(0x1 << 4)
7340e826e86SOder Chiou #define RT5677_MONO_R_DD2_R_VOL_SFT		4
7350e826e86SOder Chiou #define RT5677_M_DAC4_R_DD2_R			(0x1 << 3)
7360e826e86SOder Chiou #define RT5677_M_DAC4_R_DD2_R_SFT		3
7370e826e86SOder Chiou #define RT5677_DAC4_R_DD2_R_VOL_MASK		(0x1 << 2)
7380e826e86SOder Chiou #define RT5677_DAC4_R_DD2_R_VOL_SFT		2
7390e826e86SOder Chiou #define RT5677_M_DAC4_L_DD2_R			(0x1 << 1)
7400e826e86SOder Chiou #define RT5677_M_DAC4_L_DD2_R_SFT		1
7410e826e86SOder Chiou #define RT5677_DAC4_L_DD2_R_VOL_MASK		(0x1 << 0)
7420e826e86SOder Chiou #define RT5677_DAC4_L_DD2_R_VOL_SFT		0
7430e826e86SOder Chiou 
7440e826e86SOder Chiou /* IF3 data control (0x2f) */
7450e826e86SOder Chiou #define RT5677_IF3_DAC_SEL_MASK			(0x3 << 6)
7460e826e86SOder Chiou #define RT5677_IF3_DAC_SEL_SFT			6
7470e826e86SOder Chiou #define RT5677_IF3_ADC_SEL_MASK			(0x3 << 4)
7480e826e86SOder Chiou #define RT5677_IF3_ADC_SEL_SFT			4
7490e826e86SOder Chiou #define RT5677_IF3_ADC_IN_MASK			(0xf << 0)
7500e826e86SOder Chiou #define RT5677_IF3_ADC_IN_SFT			0
7510e826e86SOder Chiou 
7520e826e86SOder Chiou /* IF4 data control (0x30) */
7530e826e86SOder Chiou #define RT5677_IF4_ADC_IN_MASK			(0xf << 4)
7540e826e86SOder Chiou #define RT5677_IF4_ADC_IN_SFT			4
7550e826e86SOder Chiou #define RT5677_IF4_DAC_SEL_MASK			(0x3 << 2)
7560e826e86SOder Chiou #define RT5677_IF4_DAC_SEL_SFT			2
7570e826e86SOder Chiou #define RT5677_IF4_ADC_SEL_MASK			(0x3 << 0)
7580e826e86SOder Chiou #define RT5677_IF4_ADC_SEL_SFT			0
7590e826e86SOder Chiou 
7600e826e86SOder Chiou /* PDM Output Control (0x31) */
7610e826e86SOder Chiou #define RT5677_M_PDM1_L				(0x1 << 15)
7620e826e86SOder Chiou #define RT5677_M_PDM1_L_SFT			15
7630e826e86SOder Chiou #define RT5677_SEL_PDM1_L_MASK			(0x3 << 12)
7640e826e86SOder Chiou #define RT5677_SEL_PDM1_L_SFT			12
7650e826e86SOder Chiou #define RT5677_M_PDM1_R				(0x1 << 11)
7660e826e86SOder Chiou #define RT5677_M_PDM1_R_SFT			11
7670e826e86SOder Chiou #define RT5677_SEL_PDM1_R_MASK			(0x3 << 8)
7680e826e86SOder Chiou #define RT5677_SEL_PDM1_R_SFT			8
7690e826e86SOder Chiou #define RT5677_M_PDM2_L				(0x1 << 7)
7700e826e86SOder Chiou #define RT5677_M_PDM2_L_SFT			7
7710e826e86SOder Chiou #define RT5677_SEL_PDM2_L_MASK			(0x3 << 4)
7720e826e86SOder Chiou #define RT5677_SEL_PDM2_L_SFT			4
7730e826e86SOder Chiou #define RT5677_M_PDM2_R				(0x1 << 3)
7740e826e86SOder Chiou #define RT5677_M_PDM2_R_SFT			3
7750e826e86SOder Chiou #define RT5677_SEL_PDM2_R_MASK			(0x3 << 0)
7760e826e86SOder Chiou #define RT5677_SEL_PDM2_R_SFT			0
7770e826e86SOder Chiou 
7780e826e86SOder Chiou /* PDM I2C / Data Control 1 (0x32) */
7790e826e86SOder Chiou #define RT5677_PDM2_PW_DOWN			(0x1 << 7)
7800e826e86SOder Chiou #define RT5677_PDM1_PW_DOWN			(0x1 << 6)
7810e826e86SOder Chiou #define RT5677_PDM2_BUSY			(0x1 << 5)
7820e826e86SOder Chiou #define RT5677_PDM1_BUSY			(0x1 << 4)
7830e826e86SOder Chiou #define RT5677_PDM_PATTERN			(0x1 << 3)
7840e826e86SOder Chiou #define RT5677_PDM_GAIN				(0x1 << 2)
7850e826e86SOder Chiou #define RT5677_PDM_DIV_MASK			(0x3 << 0)
7860e826e86SOder Chiou 
7870e826e86SOder Chiou /* PDM I2C / Data Control 2 (0x33) */
7880e826e86SOder Chiou #define RT5677_PDM1_I2C_ID			(0xf << 12)
7890e826e86SOder Chiou #define RT5677_PDM1_EXE				(0x1 << 11)
7900e826e86SOder Chiou #define RT5677_PDM1_I2C_CMD			(0x1 << 10)
7910e826e86SOder Chiou #define RT5677_PDM1_I2C_EXE			(0x1 << 9)
7920e826e86SOder Chiou #define RT5677_PDM1_I2C_BUSY			(0x1 << 8)
7930e826e86SOder Chiou #define RT5677_PDM2_I2C_ID			(0xf << 4)
7940e826e86SOder Chiou #define RT5677_PDM2_EXE				(0x1 << 3)
7950e826e86SOder Chiou #define RT5677_PDM2_I2C_CMD			(0x1 << 2)
7960e826e86SOder Chiou #define RT5677_PDM2_I2C_EXE			(0x1 << 1)
7970e826e86SOder Chiou #define RT5677_PDM2_I2C_BUSY			(0x1 << 0)
7980e826e86SOder Chiou 
79991159ecaSOder Chiou /* TDM1 control 1 (0x3b) */
800e6f6ebc1SOder Chiou #define RT5677_IF1_ADC_MODE_MASK		(0x1 << 12)
801e6f6ebc1SOder Chiou #define RT5677_IF1_ADC_MODE_SFT			12
802e6f6ebc1SOder Chiou #define RT5677_IF1_ADC_MODE_I2S			(0x0 << 12)
803e6f6ebc1SOder Chiou #define RT5677_IF1_ADC_MODE_TDM			(0x1 << 12)
804e6f6ebc1SOder Chiou #define RT5677_IF1_ADC1_SWAP_MASK		(0x3 << 6)
805e6f6ebc1SOder Chiou #define RT5677_IF1_ADC1_SWAP_SFT		6
806e6f6ebc1SOder Chiou #define RT5677_IF1_ADC2_SWAP_MASK		(0x3 << 4)
807e6f6ebc1SOder Chiou #define RT5677_IF1_ADC2_SWAP_SFT		4
808e6f6ebc1SOder Chiou #define RT5677_IF1_ADC3_SWAP_MASK		(0x3 << 2)
809e6f6ebc1SOder Chiou #define RT5677_IF1_ADC3_SWAP_SFT		2
810e6f6ebc1SOder Chiou #define RT5677_IF1_ADC4_SWAP_MASK		(0x3 << 0)
811e6f6ebc1SOder Chiou #define RT5677_IF1_ADC4_SWAP_SFT		0
812e6f6ebc1SOder Chiou 
81391159ecaSOder Chiou /* TDM1 control 2 (0x3c) */
8140e826e86SOder Chiou #define RT5677_IF1_ADC4_MASK			(0x3 << 10)
8150e826e86SOder Chiou #define RT5677_IF1_ADC4_SFT			10
8160e826e86SOder Chiou #define RT5677_IF1_ADC3_MASK			(0x3 << 8)
8170e826e86SOder Chiou #define RT5677_IF1_ADC3_SFT			8
8180e826e86SOder Chiou #define RT5677_IF1_ADC2_MASK			(0x3 << 6)
8190e826e86SOder Chiou #define RT5677_IF1_ADC2_SFT			6
8200e826e86SOder Chiou #define RT5677_IF1_ADC1_MASK			(0x3 << 4)
8210e826e86SOder Chiou #define RT5677_IF1_ADC1_SFT			4
822e6f6ebc1SOder Chiou #define RT5677_IF1_ADC_CTRL_MASK		(0x7 << 0)
823e6f6ebc1SOder Chiou #define RT5677_IF1_ADC_CTRL_SFT			0
8240e826e86SOder Chiou 
82591159ecaSOder Chiou /* TDM1 control 4 (0x3e) */
82691159ecaSOder Chiou #define RT5677_IF1_DAC0_MASK			(0x7 << 12)
82791159ecaSOder Chiou #define RT5677_IF1_DAC0_SFT			12
82891159ecaSOder Chiou #define RT5677_IF1_DAC1_MASK			(0x7 << 8)
82991159ecaSOder Chiou #define RT5677_IF1_DAC1_SFT			8
83091159ecaSOder Chiou #define RT5677_IF1_DAC2_MASK			(0x7 << 4)
83191159ecaSOder Chiou #define RT5677_IF1_DAC2_SFT			4
83291159ecaSOder Chiou #define RT5677_IF1_DAC3_MASK			(0x7 << 0)
83391159ecaSOder Chiou #define RT5677_IF1_DAC3_SFT			0
83491159ecaSOder Chiou 
83591159ecaSOder Chiou /* TDM1 control 5 (0x3f) */
83691159ecaSOder Chiou #define RT5677_IF1_DAC4_MASK			(0x7 << 12)
83791159ecaSOder Chiou #define RT5677_IF1_DAC4_SFT			12
83891159ecaSOder Chiou #define RT5677_IF1_DAC5_MASK			(0x7 << 8)
83991159ecaSOder Chiou #define RT5677_IF1_DAC5_SFT			8
84091159ecaSOder Chiou #define RT5677_IF1_DAC6_MASK			(0x7 << 4)
84191159ecaSOder Chiou #define RT5677_IF1_DAC6_SFT			4
84291159ecaSOder Chiou #define RT5677_IF1_DAC7_MASK			(0x7 << 0)
84391159ecaSOder Chiou #define RT5677_IF1_DAC7_SFT			0
84491159ecaSOder Chiou 
84591159ecaSOder Chiou /* TDM2 control 1 (0x40) */
846e6f6ebc1SOder Chiou #define RT5677_IF2_ADC_MODE_MASK		(0x1 << 12)
847e6f6ebc1SOder Chiou #define RT5677_IF2_ADC_MODE_SFT			12
848e6f6ebc1SOder Chiou #define RT5677_IF2_ADC_MODE_I2S			(0x0 << 12)
849e6f6ebc1SOder Chiou #define RT5677_IF2_ADC_MODE_TDM			(0x1 << 12)
850e6f6ebc1SOder Chiou #define RT5677_IF2_ADC1_SWAP_MASK		(0x3 << 6)
851e6f6ebc1SOder Chiou #define RT5677_IF2_ADC1_SWAP_SFT		6
852e6f6ebc1SOder Chiou #define RT5677_IF2_ADC2_SWAP_MASK		(0x3 << 4)
853e6f6ebc1SOder Chiou #define RT5677_IF2_ADC2_SWAP_SFT		4
854e6f6ebc1SOder Chiou #define RT5677_IF2_ADC3_SWAP_MASK		(0x3 << 2)
855e6f6ebc1SOder Chiou #define RT5677_IF2_ADC3_SWAP_SFT		2
856e6f6ebc1SOder Chiou #define RT5677_IF2_ADC4_SWAP_MASK		(0x3 << 0)
857e6f6ebc1SOder Chiou #define RT5677_IF2_ADC4_SWAP_SFT		0
858e6f6ebc1SOder Chiou 
85991159ecaSOder Chiou /* TDM2 control 2 (0x41) */
8600e826e86SOder Chiou #define RT5677_IF2_ADC4_MASK			(0x3 << 10)
8610e826e86SOder Chiou #define RT5677_IF2_ADC4_SFT			10
8620e826e86SOder Chiou #define RT5677_IF2_ADC3_MASK			(0x3 << 8)
8630e826e86SOder Chiou #define RT5677_IF2_ADC3_SFT			8
8640e826e86SOder Chiou #define RT5677_IF2_ADC2_MASK			(0x3 << 6)
8650e826e86SOder Chiou #define RT5677_IF2_ADC2_SFT			6
8660e826e86SOder Chiou #define RT5677_IF2_ADC1_MASK			(0x3 << 4)
8670e826e86SOder Chiou #define RT5677_IF2_ADC1_SFT			4
868e6f6ebc1SOder Chiou #define RT5677_IF2_ADC_CTRL_MASK		(0x7 << 0)
869e6f6ebc1SOder Chiou #define RT5677_IF2_ADC_CTRL_SFT			0
8700e826e86SOder Chiou 
87191159ecaSOder Chiou /* TDM2 control 4 (0x43) */
87291159ecaSOder Chiou #define RT5677_IF2_DAC0_MASK			(0x7 << 12)
87391159ecaSOder Chiou #define RT5677_IF2_DAC0_SFT			12
87491159ecaSOder Chiou #define RT5677_IF2_DAC1_MASK			(0x7 << 8)
87591159ecaSOder Chiou #define RT5677_IF2_DAC1_SFT			8
87691159ecaSOder Chiou #define RT5677_IF2_DAC2_MASK			(0x7 << 4)
87791159ecaSOder Chiou #define RT5677_IF2_DAC2_SFT			4
87891159ecaSOder Chiou #define RT5677_IF2_DAC3_MASK			(0x7 << 0)
87991159ecaSOder Chiou #define RT5677_IF2_DAC3_SFT			0
88091159ecaSOder Chiou 
88191159ecaSOder Chiou /* TDM2 control 5 (0x44) */
88291159ecaSOder Chiou #define RT5677_IF2_DAC4_MASK			(0x7 << 12)
88391159ecaSOder Chiou #define RT5677_IF2_DAC4_SFT			12
88491159ecaSOder Chiou #define RT5677_IF2_DAC5_MASK			(0x7 << 8)
88591159ecaSOder Chiou #define RT5677_IF2_DAC5_SFT			8
88691159ecaSOder Chiou #define RT5677_IF2_DAC6_MASK			(0x7 << 4)
88791159ecaSOder Chiou #define RT5677_IF2_DAC6_SFT			4
88891159ecaSOder Chiou #define RT5677_IF2_DAC7_MASK			(0x7 << 0)
88991159ecaSOder Chiou #define RT5677_IF2_DAC7_SFT			0
89091159ecaSOder Chiou 
8910e826e86SOder Chiou /* Digital Microphone Control 1 (0x50) */
8920e826e86SOder Chiou #define RT5677_DMIC_1_EN_MASK			(0x1 << 15)
8930e826e86SOder Chiou #define RT5677_DMIC_1_EN_SFT			15
8940e826e86SOder Chiou #define RT5677_DMIC_1_DIS			(0x0 << 15)
8950e826e86SOder Chiou #define RT5677_DMIC_1_EN			(0x1 << 15)
8960e826e86SOder Chiou #define RT5677_DMIC_2_EN_MASK			(0x1 << 14)
8970e826e86SOder Chiou #define RT5677_DMIC_2_EN_SFT			14
8980e826e86SOder Chiou #define RT5677_DMIC_2_DIS			(0x0 << 14)
8990e826e86SOder Chiou #define RT5677_DMIC_2_EN			(0x1 << 14)
9000e826e86SOder Chiou #define RT5677_DMIC_L_STO1_LH_MASK		(0x1 << 13)
9010e826e86SOder Chiou #define RT5677_DMIC_L_STO1_LH_SFT		13
9020e826e86SOder Chiou #define RT5677_DMIC_L_STO1_LH_FALLING		(0x0 << 13)
9030e826e86SOder Chiou #define RT5677_DMIC_L_STO1_LH_RISING		(0x1 << 13)
9040e826e86SOder Chiou #define RT5677_DMIC_R_STO1_LH_MASK		(0x1 << 12)
9050e826e86SOder Chiou #define RT5677_DMIC_R_STO1_LH_SFT		12
9060e826e86SOder Chiou #define RT5677_DMIC_R_STO1_LH_FALLING		(0x0 << 12)
9070e826e86SOder Chiou #define RT5677_DMIC_R_STO1_LH_RISING		(0x1 << 12)
9080e826e86SOder Chiou #define RT5677_DMIC_L_STO3_LH_MASK		(0x1 << 11)
9090e826e86SOder Chiou #define RT5677_DMIC_L_STO3_LH_SFT		11
9100e826e86SOder Chiou #define RT5677_DMIC_L_STO3_LH_FALLING		(0x0 << 11)
9110e826e86SOder Chiou #define RT5677_DMIC_L_STO3_LH_RISING		(0x1 << 11)
9120e826e86SOder Chiou #define RT5677_DMIC_R_STO3_LH_MASK		(0x1 << 10)
9130e826e86SOder Chiou #define RT5677_DMIC_R_STO3_LH_SFT		10
9140e826e86SOder Chiou #define RT5677_DMIC_R_STO3_LH_FALLING		(0x0 << 10)
9150e826e86SOder Chiou #define RT5677_DMIC_R_STO3_LH_RISING		(0x1 << 10)
9160e826e86SOder Chiou #define RT5677_DMIC_L_STO2_LH_MASK		(0x1 << 9)
9170e826e86SOder Chiou #define RT5677_DMIC_L_STO2_LH_SFT		9
9180e826e86SOder Chiou #define RT5677_DMIC_L_STO2_LH_FALLING		(0x0 << 9)
9190e826e86SOder Chiou #define RT5677_DMIC_L_STO2_LH_RISING		(0x1 << 9)
9200e826e86SOder Chiou #define RT5677_DMIC_R_STO2_LH_MASK		(0x1 << 8)
9210e826e86SOder Chiou #define RT5677_DMIC_R_STO2_LH_SFT		8
9220e826e86SOder Chiou #define RT5677_DMIC_R_STO2_LH_FALLING		(0x0 << 8)
9230e826e86SOder Chiou #define RT5677_DMIC_R_STO2_LH_RISING		(0x1 << 8)
9240e826e86SOder Chiou #define RT5677_DMIC_CLK_MASK			(0x7 << 5)
9250e826e86SOder Chiou #define RT5677_DMIC_CLK_SFT			5
9260e826e86SOder Chiou #define RT5677_DMIC_3_EN_MASK			(0x1 << 4)
9270e826e86SOder Chiou #define RT5677_DMIC_3_EN_SFT			4
9280e826e86SOder Chiou #define RT5677_DMIC_3_DIS			(0x0 << 4)
9290e826e86SOder Chiou #define RT5677_DMIC_3_EN			(0x1 << 4)
9300e826e86SOder Chiou #define RT5677_DMIC_R_MONO_LH_MASK		(0x1 << 2)
9310e826e86SOder Chiou #define RT5677_DMIC_R_MONO_LH_SFT		2
9320e826e86SOder Chiou #define RT5677_DMIC_R_MONO_LH_FALLING		(0x0 << 2)
9330e826e86SOder Chiou #define RT5677_DMIC_R_MONO_LH_RISING		(0x1 << 2)
9340e826e86SOder Chiou #define RT5677_DMIC_L_STO4_LH_MASK		(0x1 << 1)
9350e826e86SOder Chiou #define RT5677_DMIC_L_STO4_LH_SFT		1
9360e826e86SOder Chiou #define RT5677_DMIC_L_STO4_LH_FALLING		(0x0 << 1)
9370e826e86SOder Chiou #define RT5677_DMIC_L_STO4_LH_RISING		(0x1 << 1)
9380e826e86SOder Chiou #define RT5677_DMIC_R_STO4_LH_MASK		(0x1 << 0)
9390e826e86SOder Chiou #define RT5677_DMIC_R_STO4_LH_SFT		0
9400e826e86SOder Chiou #define RT5677_DMIC_R_STO4_LH_FALLING		(0x0 << 0)
9410e826e86SOder Chiou #define RT5677_DMIC_R_STO4_LH_RISING		(0x1 << 0)
9420e826e86SOder Chiou 
9430e826e86SOder Chiou /* Digital Microphone Control 2 (0x51) */
9440e826e86SOder Chiou #define RT5677_DMIC_4_EN_MASK			(0x1 << 15)
9450e826e86SOder Chiou #define RT5677_DMIC_4_EN_SFT			15
9460e826e86SOder Chiou #define RT5677_DMIC_4_DIS			(0x0 << 15)
9470e826e86SOder Chiou #define RT5677_DMIC_4_EN			(0x1 << 15)
9480e826e86SOder Chiou #define RT5677_DMIC_4L_LH_MASK			(0x1 << 7)
9490e826e86SOder Chiou #define RT5677_DMIC_4L_LH_SFT			7
9500e826e86SOder Chiou #define RT5677_DMIC_4L_LH_FALLING		(0x0 << 7)
9510e826e86SOder Chiou #define RT5677_DMIC_4L_LH_RISING		(0x1 << 7)
9520e826e86SOder Chiou #define RT5677_DMIC_4R_LH_MASK			(0x1 << 6)
9530e826e86SOder Chiou #define RT5677_DMIC_4R_LH_SFT			6
9540e826e86SOder Chiou #define RT5677_DMIC_4R_LH_FALLING		(0x0 << 6)
9550e826e86SOder Chiou #define RT5677_DMIC_4R_LH_RISING		(0x1 << 6)
9560e826e86SOder Chiou #define RT5677_DMIC_3L_LH_MASK			(0x1 << 5)
9570e826e86SOder Chiou #define RT5677_DMIC_3L_LH_SFT			5
9580e826e86SOder Chiou #define RT5677_DMIC_3L_LH_FALLING		(0x0 << 5)
9590e826e86SOder Chiou #define RT5677_DMIC_3L_LH_RISING		(0x1 << 5)
9600e826e86SOder Chiou #define RT5677_DMIC_3R_LH_MASK			(0x1 << 4)
9610e826e86SOder Chiou #define RT5677_DMIC_3R_LH_SFT			4
9620e826e86SOder Chiou #define RT5677_DMIC_3R_LH_FALLING		(0x0 << 4)
9630e826e86SOder Chiou #define RT5677_DMIC_3R_LH_RISING		(0x1 << 4)
9640e826e86SOder Chiou #define RT5677_DMIC_2L_LH_MASK			(0x1 << 3)
9650e826e86SOder Chiou #define RT5677_DMIC_2L_LH_SFT			3
9660e826e86SOder Chiou #define RT5677_DMIC_2L_LH_FALLING		(0x0 << 3)
9670e826e86SOder Chiou #define RT5677_DMIC_2L_LH_RISING		(0x1 << 3)
9680e826e86SOder Chiou #define RT5677_DMIC_2R_LH_MASK			(0x1 << 2)
9690e826e86SOder Chiou #define RT5677_DMIC_2R_LH_SFT			2
9700e826e86SOder Chiou #define RT5677_DMIC_2R_LH_FALLING		(0x0 << 2)
9710e826e86SOder Chiou #define RT5677_DMIC_2R_LH_RISING		(0x1 << 2)
9720e826e86SOder Chiou #define RT5677_DMIC_1L_LH_MASK			(0x1 << 1)
9730e826e86SOder Chiou #define RT5677_DMIC_1L_LH_SFT			1
9740e826e86SOder Chiou #define RT5677_DMIC_1L_LH_FALLING		(0x0 << 1)
9750e826e86SOder Chiou #define RT5677_DMIC_1L_LH_RISING		(0x1 << 1)
9760e826e86SOder Chiou #define RT5677_DMIC_1R_LH_MASK			(0x1 << 0)
9770e826e86SOder Chiou #define RT5677_DMIC_1R_LH_SFT			0
9780e826e86SOder Chiou #define RT5677_DMIC_1R_LH_FALLING		(0x0 << 0)
9790e826e86SOder Chiou #define RT5677_DMIC_1R_LH_RISING		(0x1 << 0)
9800e826e86SOder Chiou 
9810e826e86SOder Chiou /* Power Management for Digital 1 (0x61) */
9820e826e86SOder Chiou #define RT5677_PWR_I2S1				(0x1 << 15)
9830e826e86SOder Chiou #define RT5677_PWR_I2S1_BIT			15
9840e826e86SOder Chiou #define RT5677_PWR_I2S2				(0x1 << 14)
9850e826e86SOder Chiou #define RT5677_PWR_I2S2_BIT			14
9860e826e86SOder Chiou #define RT5677_PWR_I2S3				(0x1 << 13)
9870e826e86SOder Chiou #define RT5677_PWR_I2S3_BIT			13
9880e826e86SOder Chiou #define RT5677_PWR_DAC1				(0x1 << 12)
9890e826e86SOder Chiou #define RT5677_PWR_DAC1_BIT			12
9900e826e86SOder Chiou #define RT5677_PWR_DAC2				(0x1 << 11)
9910e826e86SOder Chiou #define RT5677_PWR_DAC2_BIT			11
9920e826e86SOder Chiou #define RT5677_PWR_I2S4				(0x1 << 10)
9930e826e86SOder Chiou #define RT5677_PWR_I2S4_BIT			10
9940e826e86SOder Chiou #define RT5677_PWR_SLB				(0x1 << 9)
9950e826e86SOder Chiou #define RT5677_PWR_SLB_BIT			9
9960e826e86SOder Chiou #define RT5677_PWR_DAC3				(0x1 << 7)
9970e826e86SOder Chiou #define RT5677_PWR_DAC3_BIT			7
9980e826e86SOder Chiou #define RT5677_PWR_ADCFED2			(0x1 << 4)
9990e826e86SOder Chiou #define RT5677_PWR_ADCFED2_BIT			4
10000e826e86SOder Chiou #define RT5677_PWR_ADCFED1			(0x1 << 3)
10010e826e86SOder Chiou #define RT5677_PWR_ADCFED1_BIT			3
10020e826e86SOder Chiou #define RT5677_PWR_ADC_L			(0x1 << 2)
10030e826e86SOder Chiou #define RT5677_PWR_ADC_L_BIT			2
10040e826e86SOder Chiou #define RT5677_PWR_ADC_R			(0x1 << 1)
10050e826e86SOder Chiou #define RT5677_PWR_ADC_R_BIT			1
10060e826e86SOder Chiou #define RT5677_PWR_I2C_MASTER			(0x1 << 0)
10070e826e86SOder Chiou #define RT5677_PWR_I2C_MASTER_BIT		0
10080e826e86SOder Chiou 
10090e826e86SOder Chiou /* Power Management for Digital 2 (0x62) */
10100e826e86SOder Chiou #define RT5677_PWR_ADC_S1F			(0x1 << 15)
10110e826e86SOder Chiou #define RT5677_PWR_ADC_S1F_BIT			15
10120e826e86SOder Chiou #define RT5677_PWR_ADC_MF_L			(0x1 << 14)
10130e826e86SOder Chiou #define RT5677_PWR_ADC_MF_L_BIT			14
10140e826e86SOder Chiou #define RT5677_PWR_ADC_MF_R			(0x1 << 13)
10150e826e86SOder Chiou #define RT5677_PWR_ADC_MF_R_BIT			13
10160e826e86SOder Chiou #define RT5677_PWR_DAC_S1F			(0x1 << 12)
10170e826e86SOder Chiou #define RT5677_PWR_DAC_S1F_BIT			12
10180e826e86SOder Chiou #define RT5677_PWR_DAC_M2F_L			(0x1 << 11)
10190e826e86SOder Chiou #define RT5677_PWR_DAC_M2F_L_BIT		11
10200e826e86SOder Chiou #define RT5677_PWR_DAC_M2F_R			(0x1 << 10)
10210e826e86SOder Chiou #define RT5677_PWR_DAC_M2F_R_BIT		10
10220e826e86SOder Chiou #define RT5677_PWR_DAC_M3F_L			(0x1 << 9)
10230e826e86SOder Chiou #define RT5677_PWR_DAC_M3F_L_BIT		9
10240e826e86SOder Chiou #define RT5677_PWR_DAC_M3F_R			(0x1 << 8)
10250e826e86SOder Chiou #define RT5677_PWR_DAC_M3F_R_BIT		8
10260e826e86SOder Chiou #define RT5677_PWR_DAC_M4F_L			(0x1 << 7)
10270e826e86SOder Chiou #define RT5677_PWR_DAC_M4F_L_BIT		7
10280e826e86SOder Chiou #define RT5677_PWR_DAC_M4F_R			(0x1 << 6)
10290e826e86SOder Chiou #define RT5677_PWR_DAC_M4F_R_BIT		6
10300e826e86SOder Chiou #define RT5677_PWR_ADC_S2F			(0x1 << 5)
10310e826e86SOder Chiou #define RT5677_PWR_ADC_S2F_BIT			5
10320e826e86SOder Chiou #define RT5677_PWR_ADC_S3F			(0x1 << 4)
10330e826e86SOder Chiou #define RT5677_PWR_ADC_S3F_BIT			4
10340e826e86SOder Chiou #define RT5677_PWR_ADC_S4F			(0x1 << 3)
10350e826e86SOder Chiou #define RT5677_PWR_ADC_S4F_BIT			3
10360e826e86SOder Chiou #define RT5677_PWR_PDM1				(0x1 << 2)
10370e826e86SOder Chiou #define RT5677_PWR_PDM1_BIT			2
10380e826e86SOder Chiou #define RT5677_PWR_PDM2				(0x1 << 1)
10390e826e86SOder Chiou #define RT5677_PWR_PDM2_BIT			1
10400e826e86SOder Chiou 
10410e826e86SOder Chiou /* Power Management for Analog 1 (0x63) */
10420e826e86SOder Chiou #define RT5677_PWR_VREF1			(0x1 << 15)
10430e826e86SOder Chiou #define RT5677_PWR_VREF1_BIT			15
10440e826e86SOder Chiou #define RT5677_PWR_FV1				(0x1 << 14)
10450e826e86SOder Chiou #define RT5677_PWR_FV1_BIT			14
10460e826e86SOder Chiou #define RT5677_PWR_MB				(0x1 << 13)
10470e826e86SOder Chiou #define RT5677_PWR_MB_BIT			13
10480e826e86SOder Chiou #define RT5677_PWR_LO1				(0x1 << 12)
10490e826e86SOder Chiou #define RT5677_PWR_LO1_BIT			12
10500e826e86SOder Chiou #define RT5677_PWR_BG				(0x1 << 11)
10510e826e86SOder Chiou #define RT5677_PWR_BG_BIT			11
10520e826e86SOder Chiou #define RT5677_PWR_LO2				(0x1 << 10)
10530e826e86SOder Chiou #define RT5677_PWR_LO2_BIT			10
10540e826e86SOder Chiou #define RT5677_PWR_LO3				(0x1 << 9)
10550e826e86SOder Chiou #define RT5677_PWR_LO3_BIT			9
10560e826e86SOder Chiou #define RT5677_PWR_VREF2			(0x1 << 8)
10570e826e86SOder Chiou #define RT5677_PWR_VREF2_BIT			8
10580e826e86SOder Chiou #define RT5677_PWR_FV2				(0x1 << 7)
10590e826e86SOder Chiou #define RT5677_PWR_FV2_BIT			7
10600e826e86SOder Chiou #define RT5677_LDO2_SEL_MASK			(0x7 << 4)
10610e826e86SOder Chiou #define RT5677_LDO2_SEL_SFT			4
10620e826e86SOder Chiou #define RT5677_LDO1_SEL_MASK			(0x7 << 0)
10630e826e86SOder Chiou #define RT5677_LDO1_SEL_SFT			0
10640e826e86SOder Chiou 
10650e826e86SOder Chiou /* Power Management for Analog 2 (0x64) */
10660e826e86SOder Chiou #define RT5677_PWR_BST1				(0x1 << 15)
10670e826e86SOder Chiou #define RT5677_PWR_BST1_BIT			15
10680e826e86SOder Chiou #define RT5677_PWR_BST2				(0x1 << 14)
10690e826e86SOder Chiou #define RT5677_PWR_BST2_BIT			14
10700e826e86SOder Chiou #define RT5677_PWR_CLK_MB1			(0x1 << 13)
10710e826e86SOder Chiou #define RT5677_PWR_CLK_MB1_BIT			13
10720e826e86SOder Chiou #define RT5677_PWR_SLIM				(0x1 << 12)
10730e826e86SOder Chiou #define RT5677_PWR_SLIM_BIT			12
10740e826e86SOder Chiou #define RT5677_PWR_MB1				(0x1 << 11)
10750e826e86SOder Chiou #define RT5677_PWR_MB1_BIT			11
10760e826e86SOder Chiou #define RT5677_PWR_PP_MB1			(0x1 << 10)
10770e826e86SOder Chiou #define RT5677_PWR_PP_MB1_BIT			10
10780e826e86SOder Chiou #define RT5677_PWR_PLL1				(0x1 << 9)
10790e826e86SOder Chiou #define RT5677_PWR_PLL1_BIT			9
10800e826e86SOder Chiou #define RT5677_PWR_PLL2				(0x1 << 8)
10810e826e86SOder Chiou #define RT5677_PWR_PLL2_BIT			8
10820e826e86SOder Chiou #define RT5677_PWR_CORE				(0x1 << 7)
10830e826e86SOder Chiou #define RT5677_PWR_CORE_BIT			7
10840e826e86SOder Chiou #define RT5677_PWR_CLK_MB			(0x1 << 6)
10850e826e86SOder Chiou #define RT5677_PWR_CLK_MB_BIT			6
10860e826e86SOder Chiou #define RT5677_PWR_BST1_P			(0x1 << 5)
10870e826e86SOder Chiou #define RT5677_PWR_BST1_P_BIT			5
10880e826e86SOder Chiou #define RT5677_PWR_BST2_P			(0x1 << 4)
10890e826e86SOder Chiou #define RT5677_PWR_BST2_P_BIT			4
10900e826e86SOder Chiou #define RT5677_PWR_IPTV				(0x1 << 3)
10910e826e86SOder Chiou #define RT5677_PWR_IPTV_BIT			3
10920e826e86SOder Chiou #define RT5677_PWR_25M_CLK			(0x1 << 1)
10930e826e86SOder Chiou #define RT5677_PWR_25M_CLK_BIT			1
10940e826e86SOder Chiou #define RT5677_PWR_LDO1				(0x1 << 0)
10950e826e86SOder Chiou #define RT5677_PWR_LDO1_BIT			0
10960e826e86SOder Chiou 
10970e826e86SOder Chiou /* Power Management for DSP (0x65) */
10980e826e86SOder Chiou #define RT5677_PWR_SR7				(0x1 << 10)
10990e826e86SOder Chiou #define RT5677_PWR_SR7_BIT			10
11000e826e86SOder Chiou #define RT5677_PWR_SR6				(0x1 << 9)
11010e826e86SOder Chiou #define RT5677_PWR_SR6_BIT			9
11020e826e86SOder Chiou #define RT5677_PWR_SR5				(0x1 << 8)
11030e826e86SOder Chiou #define RT5677_PWR_SR5_BIT			8
11040e826e86SOder Chiou #define RT5677_PWR_SR4				(0x1 << 7)
11050e826e86SOder Chiou #define RT5677_PWR_SR4_BIT			7
11060e826e86SOder Chiou #define RT5677_PWR_SR3				(0x1 << 6)
11070e826e86SOder Chiou #define RT5677_PWR_SR3_BIT			6
11080e826e86SOder Chiou #define RT5677_PWR_SR2				(0x1 << 5)
11090e826e86SOder Chiou #define RT5677_PWR_SR2_BIT			5
11100e826e86SOder Chiou #define RT5677_PWR_SR1				(0x1 << 4)
11110e826e86SOder Chiou #define RT5677_PWR_SR1_BIT			4
11120e826e86SOder Chiou #define RT5677_PWR_SR0				(0x1 << 3)
11130e826e86SOder Chiou #define RT5677_PWR_SR0_BIT			3
11140e826e86SOder Chiou #define RT5677_PWR_MLT				(0x1 << 2)
11150e826e86SOder Chiou #define RT5677_PWR_MLT_BIT			2
11160e826e86SOder Chiou #define RT5677_PWR_DSP				(0x1 << 1)
11170e826e86SOder Chiou #define RT5677_PWR_DSP_BIT			1
11180e826e86SOder Chiou #define RT5677_PWR_DSP_CPU			(0x1 << 0)
11190e826e86SOder Chiou #define RT5677_PWR_DSP_CPU_BIT			0
11200e826e86SOder Chiou 
11210e826e86SOder Chiou /* Power Status for DSP (0x66) */
11220e826e86SOder Chiou #define RT5677_PWR_SR7_RDY			(0x1 << 9)
11230e826e86SOder Chiou #define RT5677_PWR_SR7_RDY_BIT			9
11240e826e86SOder Chiou #define RT5677_PWR_SR6_RDY			(0x1 << 8)
11250e826e86SOder Chiou #define RT5677_PWR_SR6_RDY_BIT			8
11260e826e86SOder Chiou #define RT5677_PWR_SR5_RDY			(0x1 << 7)
11270e826e86SOder Chiou #define RT5677_PWR_SR5_RDY_BIT			7
11280e826e86SOder Chiou #define RT5677_PWR_SR4_RDY			(0x1 << 6)
11290e826e86SOder Chiou #define RT5677_PWR_SR4_RDY_BIT			6
11300e826e86SOder Chiou #define RT5677_PWR_SR3_RDY			(0x1 << 5)
11310e826e86SOder Chiou #define RT5677_PWR_SR3_RDY_BIT			5
11320e826e86SOder Chiou #define RT5677_PWR_SR2_RDY			(0x1 << 4)
11330e826e86SOder Chiou #define RT5677_PWR_SR2_RDY_BIT			4
11340e826e86SOder Chiou #define RT5677_PWR_SR1_RDY			(0x1 << 3)
11350e826e86SOder Chiou #define RT5677_PWR_SR1_RDY_BIT			3
11360e826e86SOder Chiou #define RT5677_PWR_SR0_RDY			(0x1 << 2)
11370e826e86SOder Chiou #define RT5677_PWR_SR0_RDY_BIT			2
11380e826e86SOder Chiou #define RT5677_PWR_MLT_RDY			(0x1 << 1)
11390e826e86SOder Chiou #define RT5677_PWR_MLT_RDY_BIT			1
11400e826e86SOder Chiou #define RT5677_PWR_DSP_RDY			(0x1 << 0)
11410e826e86SOder Chiou #define RT5677_PWR_DSP_RDY_BIT			0
11420e826e86SOder Chiou 
11430e826e86SOder Chiou /* Power Management for DSP (0x67) */
11440e826e86SOder Chiou #define RT5677_PWR_SLIM_ISO			(0x1 << 11)
11450e826e86SOder Chiou #define RT5677_PWR_SLIM_ISO_BIT			11
11460e826e86SOder Chiou #define RT5677_PWR_CORE_ISO			(0x1 << 10)
11470e826e86SOder Chiou #define RT5677_PWR_CORE_ISO_BIT			10
11480e826e86SOder Chiou #define RT5677_PWR_DSP_ISO			(0x1 << 9)
11490e826e86SOder Chiou #define RT5677_PWR_DSP_ISO_BIT			9
11500e826e86SOder Chiou #define RT5677_PWR_SR7_ISO			(0x1 << 8)
11510e826e86SOder Chiou #define RT5677_PWR_SR7_ISO_BIT			8
11520e826e86SOder Chiou #define RT5677_PWR_SR6_ISO			(0x1 << 7)
11530e826e86SOder Chiou #define RT5677_PWR_SR6_ISO_BIT			7
11540e826e86SOder Chiou #define RT5677_PWR_SR5_ISO			(0x1 << 6)
11550e826e86SOder Chiou #define RT5677_PWR_SR5_ISO_BIT			6
11560e826e86SOder Chiou #define RT5677_PWR_SR4_ISO			(0x1 << 5)
11570e826e86SOder Chiou #define RT5677_PWR_SR4_ISO_BIT			5
11580e826e86SOder Chiou #define RT5677_PWR_SR3_ISO			(0x1 << 4)
11590e826e86SOder Chiou #define RT5677_PWR_SR3_ISO_BIT			4
11600e826e86SOder Chiou #define RT5677_PWR_SR2_ISO			(0x1 << 3)
11610e826e86SOder Chiou #define RT5677_PWR_SR2_ISO_BIT			3
11620e826e86SOder Chiou #define RT5677_PWR_SR1_ISO			(0x1 << 2)
11630e826e86SOder Chiou #define RT5677_PWR_SR1_ISO_BIT			2
11640e826e86SOder Chiou #define RT5677_PWR_SR0_ISO			(0x1 << 1)
11650e826e86SOder Chiou #define RT5677_PWR_SR0_ISO_BIT			1
11660e826e86SOder Chiou #define RT5677_PWR_MLT_ISO			(0x1 << 0)
11670e826e86SOder Chiou #define RT5677_PWR_MLT_ISO_BIT			0
11680e826e86SOder Chiou 
11690e826e86SOder Chiou /* I2S1/2/3/4 Audio Serial Data Port Control (0x6f 0x70 0x71 0x72) */
11700e826e86SOder Chiou #define RT5677_I2S_MS_MASK			(0x1 << 15)
11710e826e86SOder Chiou #define RT5677_I2S_MS_SFT			15
11720e826e86SOder Chiou #define RT5677_I2S_MS_M				(0x0 << 15)
11730e826e86SOder Chiou #define RT5677_I2S_MS_S				(0x1 << 15)
11740e826e86SOder Chiou #define RT5677_I2S_O_CP_MASK			(0x3 << 10)
11750e826e86SOder Chiou #define RT5677_I2S_O_CP_SFT			10
11760e826e86SOder Chiou #define RT5677_I2S_O_CP_OFF			(0x0 << 10)
11770e826e86SOder Chiou #define RT5677_I2S_O_CP_U_LAW			(0x1 << 10)
11780e826e86SOder Chiou #define RT5677_I2S_O_CP_A_LAW			(0x2 << 10)
11790e826e86SOder Chiou #define RT5677_I2S_I_CP_MASK			(0x3 << 8)
11800e826e86SOder Chiou #define RT5677_I2S_I_CP_SFT			8
11810e826e86SOder Chiou #define RT5677_I2S_I_CP_OFF			(0x0 << 8)
11820e826e86SOder Chiou #define RT5677_I2S_I_CP_U_LAW			(0x1 << 8)
11830e826e86SOder Chiou #define RT5677_I2S_I_CP_A_LAW			(0x2 << 8)
11840e826e86SOder Chiou #define RT5677_I2S_BP_MASK			(0x1 << 7)
11850e826e86SOder Chiou #define RT5677_I2S_BP_SFT			7
11860e826e86SOder Chiou #define RT5677_I2S_BP_NOR			(0x0 << 7)
11870e826e86SOder Chiou #define RT5677_I2S_BP_INV			(0x1 << 7)
11880e826e86SOder Chiou #define RT5677_I2S_DL_MASK			(0x3 << 2)
11890e826e86SOder Chiou #define RT5677_I2S_DL_SFT			2
11900e826e86SOder Chiou #define RT5677_I2S_DL_16			(0x0 << 2)
11910e826e86SOder Chiou #define RT5677_I2S_DL_20			(0x1 << 2)
11920e826e86SOder Chiou #define RT5677_I2S_DL_24			(0x2 << 2)
11930e826e86SOder Chiou #define RT5677_I2S_DL_8				(0x3 << 2)
11940e826e86SOder Chiou #define RT5677_I2S_DF_MASK			(0x3 << 0)
11950e826e86SOder Chiou #define RT5677_I2S_DF_SFT			0
11960e826e86SOder Chiou #define RT5677_I2S_DF_I2S			(0x0 << 0)
11970e826e86SOder Chiou #define RT5677_I2S_DF_LEFT			(0x1 << 0)
11980e826e86SOder Chiou #define RT5677_I2S_DF_PCM_A			(0x2 << 0)
11990e826e86SOder Chiou #define RT5677_I2S_DF_PCM_B			(0x3 << 0)
12000e826e86SOder Chiou 
12010e826e86SOder Chiou /* Clock Tree Control 1 (0x73) */
12020e826e86SOder Chiou #define RT5677_I2S_PD1_MASK			(0x7 << 12)
12030e826e86SOder Chiou #define RT5677_I2S_PD1_SFT			12
12040e826e86SOder Chiou #define RT5677_I2S_PD1_1			(0x0 << 12)
12050e826e86SOder Chiou #define RT5677_I2S_PD1_2			(0x1 << 12)
12060e826e86SOder Chiou #define RT5677_I2S_PD1_3			(0x2 << 12)
12070e826e86SOder Chiou #define RT5677_I2S_PD1_4			(0x3 << 12)
12080e826e86SOder Chiou #define RT5677_I2S_PD1_6			(0x4 << 12)
12090e826e86SOder Chiou #define RT5677_I2S_PD1_8			(0x5 << 12)
12100e826e86SOder Chiou #define RT5677_I2S_PD1_12			(0x6 << 12)
12110e826e86SOder Chiou #define RT5677_I2S_PD1_16			(0x7 << 12)
12120e826e86SOder Chiou #define RT5677_I2S_BCLK_MS2_MASK		(0x1 << 11)
12130e826e86SOder Chiou #define RT5677_I2S_BCLK_MS2_SFT			11
12140e826e86SOder Chiou #define RT5677_I2S_BCLK_MS2_32			(0x0 << 11)
12150e826e86SOder Chiou #define RT5677_I2S_BCLK_MS2_64			(0x1 << 11)
12160e826e86SOder Chiou #define RT5677_I2S_PD2_MASK			(0x7 << 8)
12170e826e86SOder Chiou #define RT5677_I2S_PD2_SFT			8
12180e826e86SOder Chiou #define RT5677_I2S_PD2_1			(0x0 << 8)
12190e826e86SOder Chiou #define RT5677_I2S_PD2_2			(0x1 << 8)
12200e826e86SOder Chiou #define RT5677_I2S_PD2_3			(0x2 << 8)
12210e826e86SOder Chiou #define RT5677_I2S_PD2_4			(0x3 << 8)
12220e826e86SOder Chiou #define RT5677_I2S_PD2_6			(0x4 << 8)
12230e826e86SOder Chiou #define RT5677_I2S_PD2_8			(0x5 << 8)
12240e826e86SOder Chiou #define RT5677_I2S_PD2_12			(0x6 << 8)
12250e826e86SOder Chiou #define RT5677_I2S_PD2_16			(0x7 << 8)
12260e826e86SOder Chiou #define RT5677_I2S_BCLK_MS3_MASK		(0x1 << 7)
12270e826e86SOder Chiou #define RT5677_I2S_BCLK_MS3_SFT			7
12280e826e86SOder Chiou #define RT5677_I2S_BCLK_MS3_32			(0x0 << 7)
12290e826e86SOder Chiou #define RT5677_I2S_BCLK_MS3_64			(0x1 << 7)
12300e826e86SOder Chiou #define RT5677_I2S_PD3_MASK			(0x7 << 4)
12310e826e86SOder Chiou #define RT5677_I2S_PD3_SFT			4
12320e826e86SOder Chiou #define RT5677_I2S_PD3_1			(0x0 << 4)
12330e826e86SOder Chiou #define RT5677_I2S_PD3_2			(0x1 << 4)
12340e826e86SOder Chiou #define RT5677_I2S_PD3_3			(0x2 << 4)
12350e826e86SOder Chiou #define RT5677_I2S_PD3_4			(0x3 << 4)
12360e826e86SOder Chiou #define RT5677_I2S_PD3_6			(0x4 << 4)
12370e826e86SOder Chiou #define RT5677_I2S_PD3_8			(0x5 << 4)
12380e826e86SOder Chiou #define RT5677_I2S_PD3_12			(0x6 << 4)
12390e826e86SOder Chiou #define RT5677_I2S_PD3_16			(0x7 << 4)
12400e826e86SOder Chiou #define RT5677_I2S_BCLK_MS4_MASK		(0x1 << 3)
12410e826e86SOder Chiou #define RT5677_I2S_BCLK_MS4_SFT			3
12420e826e86SOder Chiou #define RT5677_I2S_BCLK_MS4_32			(0x0 << 3)
12430e826e86SOder Chiou #define RT5677_I2S_BCLK_MS4_64			(0x1 << 3)
12440e826e86SOder Chiou #define RT5677_I2S_PD4_MASK			(0x7 << 0)
12450e826e86SOder Chiou #define RT5677_I2S_PD4_SFT			0
12460e826e86SOder Chiou #define RT5677_I2S_PD4_1			(0x0 << 0)
12470e826e86SOder Chiou #define RT5677_I2S_PD4_2			(0x1 << 0)
12480e826e86SOder Chiou #define RT5677_I2S_PD4_3			(0x2 << 0)
12490e826e86SOder Chiou #define RT5677_I2S_PD4_4			(0x3 << 0)
12500e826e86SOder Chiou #define RT5677_I2S_PD4_6			(0x4 << 0)
12510e826e86SOder Chiou #define RT5677_I2S_PD4_8			(0x5 << 0)
12520e826e86SOder Chiou #define RT5677_I2S_PD4_12			(0x6 << 0)
12530e826e86SOder Chiou #define RT5677_I2S_PD4_16			(0x7 << 0)
12540e826e86SOder Chiou 
12550e826e86SOder Chiou /* Clock Tree Control 2 (0x74) */
12560e826e86SOder Chiou #define RT5677_I2S_PD5_MASK			(0x7 << 12)
12570e826e86SOder Chiou #define RT5677_I2S_PD5_SFT			12
12580e826e86SOder Chiou #define RT5677_I2S_PD5_1			(0x0 << 12)
12590e826e86SOder Chiou #define RT5677_I2S_PD5_2			(0x1 << 12)
12600e826e86SOder Chiou #define RT5677_I2S_PD5_3			(0x2 << 12)
12610e826e86SOder Chiou #define RT5677_I2S_PD5_4			(0x3 << 12)
12620e826e86SOder Chiou #define RT5677_I2S_PD5_6			(0x4 << 12)
12630e826e86SOder Chiou #define RT5677_I2S_PD5_8			(0x5 << 12)
12640e826e86SOder Chiou #define RT5677_I2S_PD5_12			(0x6 << 12)
12650e826e86SOder Chiou #define RT5677_I2S_PD5_16			(0x7 << 12)
12660e826e86SOder Chiou #define RT5677_I2S_PD6_MASK			(0x7 << 8)
12670e826e86SOder Chiou #define RT5677_I2S_PD6_SFT			8
12680e826e86SOder Chiou #define RT5677_I2S_PD6_1			(0x0 << 8)
12690e826e86SOder Chiou #define RT5677_I2S_PD6_2			(0x1 << 8)
12700e826e86SOder Chiou #define RT5677_I2S_PD6_3			(0x2 << 8)
12710e826e86SOder Chiou #define RT5677_I2S_PD6_4			(0x3 << 8)
12720e826e86SOder Chiou #define RT5677_I2S_PD6_6			(0x4 << 8)
12730e826e86SOder Chiou #define RT5677_I2S_PD6_8			(0x5 << 8)
12740e826e86SOder Chiou #define RT5677_I2S_PD6_12			(0x6 << 8)
12750e826e86SOder Chiou #define RT5677_I2S_PD6_16			(0x7 << 8)
12760e826e86SOder Chiou #define RT5677_I2S_PD7_MASK			(0x7 << 4)
12770e826e86SOder Chiou #define RT5677_I2S_PD7_SFT			4
12780e826e86SOder Chiou #define RT5677_I2S_PD7_1			(0x0 << 4)
12790e826e86SOder Chiou #define RT5677_I2S_PD7_2			(0x1 << 4)
12800e826e86SOder Chiou #define RT5677_I2S_PD7_3			(0x2 << 4)
12810e826e86SOder Chiou #define RT5677_I2S_PD7_4			(0x3 << 4)
12820e826e86SOder Chiou #define RT5677_I2S_PD7_6			(0x4 << 4)
12830e826e86SOder Chiou #define RT5677_I2S_PD7_8			(0x5 << 4)
12840e826e86SOder Chiou #define RT5677_I2S_PD7_12			(0x6 << 4)
12850e826e86SOder Chiou #define RT5677_I2S_PD7_16			(0x7 << 4)
12860e826e86SOder Chiou #define RT5677_I2S_PD8_MASK			(0x7 << 0)
12870e826e86SOder Chiou #define RT5677_I2S_PD8_SFT			0
12880e826e86SOder Chiou #define RT5677_I2S_PD8_1			(0x0 << 0)
12890e826e86SOder Chiou #define RT5677_I2S_PD8_2			(0x1 << 0)
12900e826e86SOder Chiou #define RT5677_I2S_PD8_3			(0x2 << 0)
12910e826e86SOder Chiou #define RT5677_I2S_PD8_4			(0x3 << 0)
12920e826e86SOder Chiou #define RT5677_I2S_PD8_6			(0x4 << 0)
12930e826e86SOder Chiou #define RT5677_I2S_PD8_8			(0x5 << 0)
12940e826e86SOder Chiou #define RT5677_I2S_PD8_12			(0x6 << 0)
12950e826e86SOder Chiou #define RT5677_I2S_PD8_16			(0x7 << 0)
12960e826e86SOder Chiou 
12970e826e86SOder Chiou /* Clock Tree Control 3 (0x75) */
12980e826e86SOder Chiou #define RT5677_DSP_ASRC_O_MASK			(0x3 << 6)
12990e826e86SOder Chiou #define RT5677_DSP_ASRC_O_SFT			6
13000e826e86SOder Chiou #define RT5677_DSP_ASRC_O_1_0			(0x0 << 6)
13010e826e86SOder Chiou #define RT5677_DSP_ASRC_O_1_5			(0x1 << 6)
13020e826e86SOder Chiou #define RT5677_DSP_ASRC_O_2_0			(0x2 << 6)
13030e826e86SOder Chiou #define RT5677_DSP_ASRC_O_3_0			(0x3 << 6)
13040e826e86SOder Chiou #define RT5677_DSP_ASRC_I_MASK			(0x3 << 4)
13050e826e86SOder Chiou #define RT5677_DSP_ASRC_I_SFT			4
13060e826e86SOder Chiou #define RT5677_DSP_ASRC_I_1_0			(0x0 << 4)
13070e826e86SOder Chiou #define RT5677_DSP_ASRC_I_1_5			(0x1 << 4)
13080e826e86SOder Chiou #define RT5677_DSP_ASRC_I_2_0			(0x2 << 4)
13090e826e86SOder Chiou #define RT5677_DSP_ASRC_I_3_0			(0x3 << 4)
13100e826e86SOder Chiou #define RT5677_DSP_BUS_PD_MASK			(0x7 << 0)
13110e826e86SOder Chiou #define RT5677_DSP_BUS_PD_SFT			0
13120e826e86SOder Chiou #define RT5677_DSP_BUS_PD_1			(0x0 << 0)
13130e826e86SOder Chiou #define RT5677_DSP_BUS_PD_2			(0x1 << 0)
13140e826e86SOder Chiou #define RT5677_DSP_BUS_PD_3			(0x2 << 0)
13150e826e86SOder Chiou #define RT5677_DSP_BUS_PD_4			(0x3 << 0)
13160e826e86SOder Chiou #define RT5677_DSP_BUS_PD_6			(0x4 << 0)
13170e826e86SOder Chiou #define RT5677_DSP_BUS_PD_8			(0x5 << 0)
13180e826e86SOder Chiou #define RT5677_DSP_BUS_PD_12			(0x6 << 0)
13190e826e86SOder Chiou #define RT5677_DSP_BUS_PD_16			(0x7 << 0)
13200e826e86SOder Chiou 
13210e826e86SOder Chiou #define RT5677_PLL_INP_MAX			40000000
13220e826e86SOder Chiou #define RT5677_PLL_INP_MIN			2048000
13230e826e86SOder Chiou /* PLL M/N/K Code Control 1 (0x7a 0x7c) */
13240e826e86SOder Chiou #define RT5677_PLL_N_MAX			0x1ff
13250e826e86SOder Chiou #define RT5677_PLL_N_MASK			(RT5677_PLL_N_MAX << 7)
13260e826e86SOder Chiou #define RT5677_PLL_N_SFT			7
13270e826e86SOder Chiou #define RT5677_PLL_K_BP				(0x1 << 5)
13280e826e86SOder Chiou #define RT5677_PLL_K_BP_SFT			5
13290e826e86SOder Chiou #define RT5677_PLL_K_MAX			0x1f
13300e826e86SOder Chiou #define RT5677_PLL_K_MASK			(RT5677_PLL_K_MAX)
13310e826e86SOder Chiou #define RT5677_PLL_K_SFT			0
13320e826e86SOder Chiou 
13330e826e86SOder Chiou /* PLL M/N/K Code Control 2 (0x7b 0x7d) */
13340e826e86SOder Chiou #define RT5677_PLL_M_MAX			0xf
13350e826e86SOder Chiou #define RT5677_PLL_M_MASK			(RT5677_PLL_M_MAX << 12)
13360e826e86SOder Chiou #define RT5677_PLL_M_SFT			12
13370e826e86SOder Chiou #define RT5677_PLL_M_BP				(0x1 << 11)
13380e826e86SOder Chiou #define RT5677_PLL_M_BP_SFT			11
1339ba0b3a97SCurtis Malainey #define RT5677_PLL_UPDATE_PLL1			(0x1 << 1)
1340ba0b3a97SCurtis Malainey #define RT5677_PLL_UPDATE_PLL1_SFT		1
13410e826e86SOder Chiou 
13420e826e86SOder Chiou /* Global Clock Control 1 (0x80) */
13430e826e86SOder Chiou #define RT5677_SCLK_SRC_MASK			(0x3 << 14)
13440e826e86SOder Chiou #define RT5677_SCLK_SRC_SFT			14
13450e826e86SOder Chiou #define RT5677_SCLK_SRC_MCLK			(0x0 << 14)
13460e826e86SOder Chiou #define RT5677_SCLK_SRC_PLL1			(0x1 << 14)
13470e826e86SOder Chiou #define RT5677_SCLK_SRC_RCCLK			(0x2 << 14) /* 25MHz */
13480e826e86SOder Chiou #define RT5677_SCLK_SRC_SLIM			(0x3 << 14)
13490e826e86SOder Chiou #define RT5677_PLL1_SRC_MASK			(0x7 << 11)
13500e826e86SOder Chiou #define RT5677_PLL1_SRC_SFT			11
13510e826e86SOder Chiou #define RT5677_PLL1_SRC_MCLK			(0x0 << 11)
13520e826e86SOder Chiou #define RT5677_PLL1_SRC_BCLK1			(0x1 << 11)
13530e826e86SOder Chiou #define RT5677_PLL1_SRC_BCLK2			(0x2 << 11)
13540e826e86SOder Chiou #define RT5677_PLL1_SRC_BCLK3			(0x3 << 11)
13550e826e86SOder Chiou #define RT5677_PLL1_SRC_BCLK4			(0x4 << 11)
13560e826e86SOder Chiou #define RT5677_PLL1_SRC_RCCLK			(0x5 << 11)
13570e826e86SOder Chiou #define RT5677_PLL1_SRC_SLIM			(0x6 << 11)
13580e826e86SOder Chiou #define RT5677_MCLK_SRC_MASK			(0x1 << 10)
13590e826e86SOder Chiou #define RT5677_MCLK_SRC_SFT			10
13600e826e86SOder Chiou #define RT5677_MCLK1_SRC			(0x0 << 10)
13610e826e86SOder Chiou #define RT5677_MCLK2_SRC			(0x1 << 10)
13620e826e86SOder Chiou #define RT5677_PLL1_PD_MASK			(0x1 << 8)
13630e826e86SOder Chiou #define RT5677_PLL1_PD_SFT			8
13640e826e86SOder Chiou #define RT5677_PLL1_PD_1			(0x0 << 8)
13650e826e86SOder Chiou #define RT5677_PLL1_PD_2			(0x1 << 8)
1366e5b2791dSOder Chiou #define RT5677_DAC_OSR_MASK			(0x3 << 6)
1367e5b2791dSOder Chiou #define RT5677_DAC_OSR_SFT			6
1368e5b2791dSOder Chiou #define RT5677_DAC_OSR_128			(0x0 << 6)
1369e5b2791dSOder Chiou #define RT5677_DAC_OSR_64			(0x1 << 6)
1370e5b2791dSOder Chiou #define RT5677_DAC_OSR_32			(0x2 << 6)
1371e5b2791dSOder Chiou #define RT5677_ADC_OSR_MASK			(0x3 << 4)
1372e5b2791dSOder Chiou #define RT5677_ADC_OSR_SFT			4
1373e5b2791dSOder Chiou #define RT5677_ADC_OSR_128			(0x0 << 4)
1374e5b2791dSOder Chiou #define RT5677_ADC_OSR_64			(0x1 << 4)
1375e5b2791dSOder Chiou #define RT5677_ADC_OSR_32			(0x2 << 4)
13760e826e86SOder Chiou 
13770e826e86SOder Chiou /* Global Clock Control 2 (0x81) */
13780e826e86SOder Chiou #define RT5677_PLL2_PR_SRC_MASK			(0x1 << 15)
13790e826e86SOder Chiou #define RT5677_PLL2_PR_SRC_SFT			15
13800e826e86SOder Chiou #define RT5677_PLL2_PR_SRC_MCLK1		(0x0 << 15)
13810e826e86SOder Chiou #define RT5677_PLL2_PR_SRC_MCLK2		(0x1 << 15)
13820e826e86SOder Chiou #define RT5677_PLL2_SRC_MASK			(0x7 << 12)
13830e826e86SOder Chiou #define RT5677_PLL2_SRC_SFT			12
13840e826e86SOder Chiou #define RT5677_PLL2_SRC_MCLK			(0x0 << 12)
13850e826e86SOder Chiou #define RT5677_PLL2_SRC_BCLK1			(0x1 << 12)
13860e826e86SOder Chiou #define RT5677_PLL2_SRC_BCLK2			(0x2 << 12)
13870e826e86SOder Chiou #define RT5677_PLL2_SRC_BCLK3			(0x3 << 12)
13880e826e86SOder Chiou #define RT5677_PLL2_SRC_BCLK4			(0x4 << 12)
13890e826e86SOder Chiou #define RT5677_PLL2_SRC_RCCLK			(0x5 << 12)
13900e826e86SOder Chiou #define RT5677_PLL2_SRC_SLIM			(0x6 << 12)
1391e5b2791dSOder Chiou #define RT5677_DSP_ASRC_O_SRC			(0x3 << 10)
1392e5b2791dSOder Chiou #define RT5677_DSP_ASRC_O_SRC_SFT		10
1393e5b2791dSOder Chiou #define RT5677_DSP_ASRC_O_MCLK			(0x0 << 10)
1394e5b2791dSOder Chiou #define RT5677_DSP_ASRC_O_PLL1			(0x1 << 10)
1395e5b2791dSOder Chiou #define RT5677_DSP_ASRC_O_SLIM			(0x2 << 10)
1396e5b2791dSOder Chiou #define RT5677_DSP_ASRC_O_RCCLK			(0x3 << 10)
1397e5b2791dSOder Chiou #define RT5677_DSP_ASRC_I_SRC			(0x3 << 8)
1398e5b2791dSOder Chiou #define RT5677_DSP_ASRC_I_SRC_SFT		8
1399e5b2791dSOder Chiou #define RT5677_DSP_ASRC_I_MCLK			(0x0 << 8)
1400e5b2791dSOder Chiou #define RT5677_DSP_ASRC_I_PLL1			(0x1 << 8)
1401e5b2791dSOder Chiou #define RT5677_DSP_ASRC_I_SLIM			(0x2 << 8)
1402e5b2791dSOder Chiou #define RT5677_DSP_ASRC_I_RCCLK			(0x3 << 8)
14030e826e86SOder Chiou #define RT5677_DSP_CLK_SRC_MASK			(0x1 << 7)
14040e826e86SOder Chiou #define RT5677_DSP_CLK_SRC_SFT			7
14050e826e86SOder Chiou #define RT5677_DSP_CLK_SRC_PLL2			(0x0 << 7)
14060e826e86SOder Chiou #define RT5677_DSP_CLK_SRC_BYPASS		(0x1 << 7)
14070e826e86SOder Chiou 
1408c36aa0a1SOder Chiou /* ASRC Control 3 (0x85) */
1409c36aa0a1SOder Chiou #define RT5677_DA_STO_CLK_SEL_MASK		(0xf << 12)
1410c36aa0a1SOder Chiou #define RT5677_DA_STO_CLK_SEL_SFT		12
1411c36aa0a1SOder Chiou #define RT5677_DA_MONO2L_CLK_SEL_MASK		(0xf << 4)
1412c36aa0a1SOder Chiou #define RT5677_DA_MONO2L_CLK_SEL_SFT		4
1413c36aa0a1SOder Chiou #define RT5677_DA_MONO2R_CLK_SEL_MASK		(0xf << 0)
1414c36aa0a1SOder Chiou #define RT5677_DA_MONO2R_CLK_SEL_SFT		0
1415c36aa0a1SOder Chiou 
1416c36aa0a1SOder Chiou /* ASRC Control 4 (0x86) */
1417c36aa0a1SOder Chiou #define RT5677_DA_MONO3L_CLK_SEL_MASK		(0xf << 12)
1418c36aa0a1SOder Chiou #define RT5677_DA_MONO3L_CLK_SEL_SFT		12
1419c36aa0a1SOder Chiou #define RT5677_DA_MONO3R_CLK_SEL_MASK		(0xf << 8)
1420c36aa0a1SOder Chiou #define RT5677_DA_MONO3R_CLK_SEL_SFT		8
1421c36aa0a1SOder Chiou #define RT5677_DA_MONO4L_CLK_SEL_MASK		(0xf << 4)
1422c36aa0a1SOder Chiou #define RT5677_DA_MONO4L_CLK_SEL_SFT		4
1423c36aa0a1SOder Chiou #define RT5677_DA_MONO4R_CLK_SEL_MASK		(0xf << 0)
1424c36aa0a1SOder Chiou #define RT5677_DA_MONO4R_CLK_SEL_SFT		0
1425c36aa0a1SOder Chiou 
1426c36aa0a1SOder Chiou /* ASRC Control 5 (0x87) */
1427c36aa0a1SOder Chiou #define RT5677_AD_STO1_CLK_SEL_MASK		(0xf << 12)
1428c36aa0a1SOder Chiou #define RT5677_AD_STO1_CLK_SEL_SFT		12
1429c36aa0a1SOder Chiou #define RT5677_AD_STO2_CLK_SEL_MASK		(0xf << 8)
1430c36aa0a1SOder Chiou #define RT5677_AD_STO2_CLK_SEL_SFT		8
1431c36aa0a1SOder Chiou #define RT5677_AD_STO3_CLK_SEL_MASK		(0xf << 4)
1432c36aa0a1SOder Chiou #define RT5677_AD_STO3_CLK_SEL_SFT		4
1433c36aa0a1SOder Chiou #define RT5677_AD_STO4_CLK_SEL_MASK		(0xf << 0)
1434c36aa0a1SOder Chiou #define RT5677_AD_STO4_CLK_SEL_SFT		0
1435c36aa0a1SOder Chiou 
1436c36aa0a1SOder Chiou /* ASRC Control 6 (0x88) */
1437c36aa0a1SOder Chiou #define RT5677_AD_MONOL_CLK_SEL_MASK		(0xf << 12)
1438c36aa0a1SOder Chiou #define RT5677_AD_MONOL_CLK_SEL_SFT		12
1439c36aa0a1SOder Chiou #define RT5677_AD_MONOR_CLK_SEL_MASK		(0xf << 8)
1440c36aa0a1SOder Chiou #define RT5677_AD_MONOR_CLK_SEL_SFT		8
1441c36aa0a1SOder Chiou 
1442c36aa0a1SOder Chiou /* ASRC Control 7 (0x89) */
1443c36aa0a1SOder Chiou #define RT5677_DSP_OB_0_3_CLK_SEL_MASK		(0xf << 12)
1444c36aa0a1SOder Chiou #define RT5677_DSP_OB_0_3_CLK_SEL_SFT		12
1445c36aa0a1SOder Chiou #define RT5677_DSP_OB_4_7_CLK_SEL_MASK		(0xf << 8)
1446c36aa0a1SOder Chiou #define RT5677_DSP_OB_4_7_CLK_SEL_SFT		8
1447c36aa0a1SOder Chiou 
144816ab6e18SBard Liao /* ASRC Control 8 (0x8a) */
144916ab6e18SBard Liao #define RT5677_I2S1_CLK_SEL_MASK		(0xf << 12)
145016ab6e18SBard Liao #define RT5677_I2S1_CLK_SEL_SFT			12
145116ab6e18SBard Liao #define RT5677_I2S2_CLK_SEL_MASK		(0xf << 8)
145216ab6e18SBard Liao #define RT5677_I2S2_CLK_SEL_SFT			8
145316ab6e18SBard Liao #define RT5677_I2S3_CLK_SEL_MASK		(0xf << 4)
145416ab6e18SBard Liao #define RT5677_I2S3_CLK_SEL_SFT			4
145516ab6e18SBard Liao #define RT5677_I2S4_CLK_SEL_MASK		(0xf)
145616ab6e18SBard Liao #define RT5677_I2S4_CLK_SEL_SFT			0
145716ab6e18SBard Liao 
1458f499edf9SCurtis Malainey /* VAD Function Control 1 (0x9c) */
1459f499edf9SCurtis Malainey #define RT5677_VAD_MIN_DUR_MASK			(0x3 << 13)
1460f499edf9SCurtis Malainey #define RT5677_VAD_MIN_DUR_SFT			13
1461f499edf9SCurtis Malainey #define RT5677_VAD_ADPCM_BYPASS			(1 << 10)
1462f499edf9SCurtis Malainey #define RT5677_VAD_ADPCM_BYPASS_BIT		10
1463f499edf9SCurtis Malainey #define RT5677_VAD_FG2ENC			(1 << 9)
1464f499edf9SCurtis Malainey #define RT5677_VAD_FG2ENC_BIT			9
1465f499edf9SCurtis Malainey #define RT5677_VAD_BUF_OW			(1 << 8)
1466f499edf9SCurtis Malainey #define RT5677_VAD_BUF_OW_BIT			8
1467f499edf9SCurtis Malainey #define RT5677_VAD_CLR_FLAG			(1 << 7)
1468f499edf9SCurtis Malainey #define RT5677_VAD_CLR_FLAG_BIT			7
1469f499edf9SCurtis Malainey #define RT5677_VAD_BUF_POP			(1 << 6)
1470f499edf9SCurtis Malainey #define RT5677_VAD_BUF_POP_BIT			6
1471f499edf9SCurtis Malainey #define RT5677_VAD_BUF_PUSH			(1 << 5)
1472f499edf9SCurtis Malainey #define RT5677_VAD_BUF_PUSH_BIT			5
1473f499edf9SCurtis Malainey #define RT5677_VAD_DET_ENABLE			(1 << 4)
1474f499edf9SCurtis Malainey #define RT5677_VAD_DET_ENABLE_BIT		4
1475f499edf9SCurtis Malainey #define RT5677_VAD_FUNC_ENABLE			(1 << 3)
1476f499edf9SCurtis Malainey #define RT5677_VAD_FUNC_ENABLE_BIT		3
1477f499edf9SCurtis Malainey #define RT5677_VAD_FUNC_RESET			(1 << 2)
1478f499edf9SCurtis Malainey #define RT5677_VAD_FUNC_RESET_BIT		2
1479f499edf9SCurtis Malainey 
14800e826e86SOder Chiou /* VAD Function Control 4 (0x9f) */
1481f499edf9SCurtis Malainey #define RT5677_VAD_OUT_SRC_RATE_MASK		(0x1 << 11)
1482f499edf9SCurtis Malainey #define RT5677_VAD_OUT_SRC_RATE_SFT		11
1483f499edf9SCurtis Malainey #define RT5677_VAD_OUT_SRC_MASK			(0x1 << 10)
1484f499edf9SCurtis Malainey #define RT5677_VAD_OUT_SRC_SFT			10
1485f499edf9SCurtis Malainey #define RT5677_VAD_SRC_MASK			(0x3 << 8)
14860e826e86SOder Chiou #define RT5677_VAD_SRC_SFT			8
1487f499edf9SCurtis Malainey #define RT5677_VAD_LV_DIFF_MASK			(0xff << 0)
1488f499edf9SCurtis Malainey #define RT5677_VAD_LV_DIFF_SFT			0
14890e826e86SOder Chiou 
14900e826e86SOder Chiou /* DSP InBound Control (0xa3) */
14910e826e86SOder Chiou #define RT5677_IB01_SRC_MASK			(0x7 << 12)
14920e826e86SOder Chiou #define RT5677_IB01_SRC_SFT			12
14930e826e86SOder Chiou #define RT5677_IB23_SRC_MASK			(0x7 << 8)
14940e826e86SOder Chiou #define RT5677_IB23_SRC_SFT			8
14950e826e86SOder Chiou #define RT5677_IB45_SRC_MASK			(0x7 << 4)
14960e826e86SOder Chiou #define RT5677_IB45_SRC_SFT			4
14970e826e86SOder Chiou #define RT5677_IB6_SRC_MASK			(0x7 << 0)
14980e826e86SOder Chiou #define RT5677_IB6_SRC_SFT			0
14990e826e86SOder Chiou 
15000e826e86SOder Chiou /* DSP InBound Control (0xa4) */
15010e826e86SOder Chiou #define RT5677_IB7_SRC_MASK			(0x7 << 12)
15020e826e86SOder Chiou #define RT5677_IB7_SRC_SFT			12
15030e826e86SOder Chiou #define RT5677_IB8_SRC_MASK			(0x7 << 8)
15040e826e86SOder Chiou #define RT5677_IB8_SRC_SFT			8
15050e826e86SOder Chiou #define RT5677_IB9_SRC_MASK			(0x7 << 4)
15060e826e86SOder Chiou #define RT5677_IB9_SRC_SFT			4
15070e826e86SOder Chiou 
15080e826e86SOder Chiou /* DSP In/OutBound Control (0xa5) */
15090e826e86SOder Chiou #define RT5677_SEL_SRC_OB23			(0x1 << 4)
15100e826e86SOder Chiou #define RT5677_SEL_SRC_OB23_SFT			4
15110e826e86SOder Chiou #define RT5677_SEL_SRC_OB01			(0x1 << 3)
15120e826e86SOder Chiou #define RT5677_SEL_SRC_OB01_SFT			3
15130e826e86SOder Chiou #define RT5677_SEL_SRC_IB45			(0x1 << 2)
15140e826e86SOder Chiou #define RT5677_SEL_SRC_IB45_SFT			2
15150e826e86SOder Chiou #define RT5677_SEL_SRC_IB23			(0x1 << 1)
15160e826e86SOder Chiou #define RT5677_SEL_SRC_IB23_SFT			1
15170e826e86SOder Chiou #define RT5677_SEL_SRC_IB01			(0x1 << 0)
15180e826e86SOder Chiou #define RT5677_SEL_SRC_IB01_SFT			0
15190e826e86SOder Chiou 
15205e3363adSOder Chiou /* Jack Detect Control 1 (0xb5) */
15215e3363adSOder Chiou #define RT5677_SEL_GPIO_JD1_MASK		(0x3 << 14)
15225e3363adSOder Chiou #define RT5677_SEL_GPIO_JD1_SFT			14
15235e3363adSOder Chiou #define RT5677_SEL_GPIO_JD2_MASK		(0x3 << 12)
15245e3363adSOder Chiou #define RT5677_SEL_GPIO_JD2_SFT			12
15255e3363adSOder Chiou #define RT5677_SEL_GPIO_JD3_MASK		(0x3 << 10)
15265e3363adSOder Chiou #define RT5677_SEL_GPIO_JD3_SFT			10
15275e3363adSOder Chiou 
15285e3363adSOder Chiou /* IRQ Control 1 (0xbd) */
15295e3363adSOder Chiou #define RT5677_STA_GPIO_JD1			(0x1 << 15)
15305e3363adSOder Chiou #define RT5677_STA_GPIO_JD1_SFT			15
15315e3363adSOder Chiou #define RT5677_EN_IRQ_GPIO_JD1			(0x1 << 14)
15325e3363adSOder Chiou #define RT5677_EN_IRQ_GPIO_JD1_SFT		14
15335e3363adSOder Chiou #define RT5677_EN_GPIO_JD1_STICKY		(0x1 << 13)
15345e3363adSOder Chiou #define RT5677_EN_GPIO_JD1_STICKY_SFT		13
15355e3363adSOder Chiou #define RT5677_INV_GPIO_JD1			(0x1 << 12)
15365e3363adSOder Chiou #define RT5677_INV_GPIO_JD1_SFT			12
15375e3363adSOder Chiou #define RT5677_STA_GPIO_JD2			(0x1 << 11)
15385e3363adSOder Chiou #define RT5677_STA_GPIO_JD2_SFT			11
15395e3363adSOder Chiou #define RT5677_EN_IRQ_GPIO_JD2			(0x1 << 10)
15405e3363adSOder Chiou #define RT5677_EN_IRQ_GPIO_JD2_SFT		10
15415e3363adSOder Chiou #define RT5677_EN_GPIO_JD2_STICKY		(0x1 << 9)
15425e3363adSOder Chiou #define RT5677_EN_GPIO_JD2_STICKY_SFT		9
15435e3363adSOder Chiou #define RT5677_INV_GPIO_JD2			(0x1 << 8)
15445e3363adSOder Chiou #define RT5677_INV_GPIO_JD2_SFT			8
15455e3363adSOder Chiou #define RT5677_STA_MICBIAS1_OVCD		(0x1 << 7)
15465e3363adSOder Chiou #define RT5677_STA_MICBIAS1_OVCD_SFT		7
15475e3363adSOder Chiou #define RT5677_EN_IRQ_MICBIAS1_OVCD		(0x1 << 6)
15485e3363adSOder Chiou #define RT5677_EN_IRQ_MICBIAS1_OVCD_SFT		6
15495e3363adSOder Chiou #define RT5677_EN_MICBIAS1_OVCD_STICKY		(0x1 << 5)
15505e3363adSOder Chiou #define RT5677_EN_MICBIAS1_OVCD_STICKY_SFT	5
15515e3363adSOder Chiou #define RT5677_INV_MICBIAS1_OVCD		(0x1 << 4)
15525e3363adSOder Chiou #define RT5677_INV_MICBIAS1_OVCD_SFT		4
15535e3363adSOder Chiou #define RT5677_STA_GPIO_JD3			(0x1 << 3)
15545e3363adSOder Chiou #define RT5677_STA_GPIO_JD3_SFT			3
15555e3363adSOder Chiou #define RT5677_EN_IRQ_GPIO_JD3			(0x1 << 2)
15565e3363adSOder Chiou #define RT5677_EN_IRQ_GPIO_JD3_SFT		2
15575e3363adSOder Chiou #define RT5677_EN_GPIO_JD3_STICKY		(0x1 << 1)
15585e3363adSOder Chiou #define RT5677_EN_GPIO_JD3_STICKY_SFT		1
15595e3363adSOder Chiou #define RT5677_INV_GPIO_JD3			(0x1 << 0)
15605e3363adSOder Chiou #define RT5677_INV_GPIO_JD3_SFT			0
15615e3363adSOder Chiou 
156244caf764SOder Chiou /* GPIO status (0xbf) */
156344caf764SOder Chiou #define RT5677_GPIO6_STATUS_MASK		(0x1 << 5)
156444caf764SOder Chiou #define RT5677_GPIO6_STATUS_SFT			5
156544caf764SOder Chiou #define RT5677_GPIO5_STATUS_MASK		(0x1 << 4)
156644caf764SOder Chiou #define RT5677_GPIO5_STATUS_SFT			4
156744caf764SOder Chiou #define RT5677_GPIO4_STATUS_MASK		(0x1 << 3)
156844caf764SOder Chiou #define RT5677_GPIO4_STATUS_SFT			3
156944caf764SOder Chiou #define RT5677_GPIO3_STATUS_MASK		(0x1 << 2)
157044caf764SOder Chiou #define RT5677_GPIO3_STATUS_SFT			2
157144caf764SOder Chiou #define RT5677_GPIO2_STATUS_MASK		(0x1 << 1)
157244caf764SOder Chiou #define RT5677_GPIO2_STATUS_SFT			1
157344caf764SOder Chiou #define RT5677_GPIO1_STATUS_MASK		(0x1 << 0)
157444caf764SOder Chiou #define RT5677_GPIO1_STATUS_SFT			0
157544caf764SOder Chiou 
157644caf764SOder Chiou /* GPIO Control 1 (0xc0) */
157744caf764SOder Chiou #define RT5677_GPIO1_PIN_MASK			(0x1 << 15)
157844caf764SOder Chiou #define RT5677_GPIO1_PIN_SFT			15
157944caf764SOder Chiou #define RT5677_GPIO1_PIN_GPIO1			(0x0 << 15)
158044caf764SOder Chiou #define RT5677_GPIO1_PIN_IRQ			(0x1 << 15)
158144caf764SOder Chiou #define RT5677_IPTV_MODE_MASK			(0x1 << 14)
158244caf764SOder Chiou #define RT5677_IPTV_MODE_SFT			14
158344caf764SOder Chiou #define RT5677_IPTV_MODE_GPIO			(0x0 << 14)
158444caf764SOder Chiou #define RT5677_IPTV_MODE_IPTV			(0x1 << 14)
158544caf764SOder Chiou #define RT5677_FUNC_MODE_MASK			(0x1 << 13)
158644caf764SOder Chiou #define RT5677_FUNC_MODE_SFT			13
158744caf764SOder Chiou #define RT5677_FUNC_MODE_DMIC_GPIO		(0x0 << 13)
158844caf764SOder Chiou #define RT5677_FUNC_MODE_JTAG			(0x1 << 13)
158944caf764SOder Chiou 
15905512ffd9SAndy Shevchenko /* GPIO Control 2 (0xc1) & 3 (0xc2) common bits */
15915512ffd9SAndy Shevchenko #define RT5677_GPIOx_DIR_MASK			(0x1 << 2)
15925512ffd9SAndy Shevchenko #define RT5677_GPIOx_DIR_SFT			2
15935512ffd9SAndy Shevchenko #define RT5677_GPIOx_DIR_IN			(0x0 << 2)
15945512ffd9SAndy Shevchenko #define RT5677_GPIOx_DIR_OUT			(0x1 << 2)
15955512ffd9SAndy Shevchenko #define RT5677_GPIOx_OUT_MASK			(0x1 << 1)
15965512ffd9SAndy Shevchenko #define RT5677_GPIOx_OUT_SFT			1
15975512ffd9SAndy Shevchenko #define RT5677_GPIOx_OUT_LO			(0x0 << 1)
15985512ffd9SAndy Shevchenko #define RT5677_GPIOx_OUT_HI			(0x1 << 1)
15995512ffd9SAndy Shevchenko #define RT5677_GPIOx_P_MASK			(0x1 << 0)
16005512ffd9SAndy Shevchenko #define RT5677_GPIOx_P_SFT			0
16015512ffd9SAndy Shevchenko #define RT5677_GPIOx_P_NOR			(0x0 << 0)
16025512ffd9SAndy Shevchenko #define RT5677_GPIOx_P_INV			(0x1 << 0)
16032d15d974SBard Liao 
160424180064SFletcher Woodruff /* General Control (0xfa) */
160524180064SFletcher Woodruff #define RT5677_IRQ_DEBOUNCE_SEL_MASK		(0x3 << 3)
160624180064SFletcher Woodruff #define RT5677_IRQ_DEBOUNCE_SEL_MCLK		(0x0 << 3)
160724180064SFletcher Woodruff #define RT5677_IRQ_DEBOUNCE_SEL_RC		(0x1 << 3)
160824180064SFletcher Woodruff #define RT5677_IRQ_DEBOUNCE_SEL_SLIM		(0x2 << 3)
160924180064SFletcher Woodruff 
16100e826e86SOder Chiou /* Virtual DSP Mixer Control (0xf7 0xf8 0xf9) */
16110e826e86SOder Chiou #define RT5677_DSP_IB_01_H			(0x1 << 15)
16120e826e86SOder Chiou #define RT5677_DSP_IB_01_H_SFT			15
16130e826e86SOder Chiou #define RT5677_DSP_IB_23_H			(0x1 << 14)
16140e826e86SOder Chiou #define RT5677_DSP_IB_23_H_SFT			14
16150e826e86SOder Chiou #define RT5677_DSP_IB_45_H			(0x1 << 13)
16160e826e86SOder Chiou #define RT5677_DSP_IB_45_H_SFT			13
16170e826e86SOder Chiou #define RT5677_DSP_IB_6_H			(0x1 << 12)
16180e826e86SOder Chiou #define RT5677_DSP_IB_6_H_SFT			12
16190e826e86SOder Chiou #define RT5677_DSP_IB_7_H			(0x1 << 11)
16200e826e86SOder Chiou #define RT5677_DSP_IB_7_H_SFT			11
16210e826e86SOder Chiou #define RT5677_DSP_IB_8_H			(0x1 << 10)
16220e826e86SOder Chiou #define RT5677_DSP_IB_8_H_SFT			10
16230e826e86SOder Chiou #define RT5677_DSP_IB_9_H			(0x1 << 9)
16240e826e86SOder Chiou #define RT5677_DSP_IB_9_H_SFT			9
16250e826e86SOder Chiou #define RT5677_DSP_IB_01_L			(0x1 << 7)
16260e826e86SOder Chiou #define RT5677_DSP_IB_01_L_SFT			7
16270e826e86SOder Chiou #define RT5677_DSP_IB_23_L			(0x1 << 6)
16280e826e86SOder Chiou #define RT5677_DSP_IB_23_L_SFT			6
16290e826e86SOder Chiou #define RT5677_DSP_IB_45_L			(0x1 << 5)
16300e826e86SOder Chiou #define RT5677_DSP_IB_45_L_SFT			5
16310e826e86SOder Chiou #define RT5677_DSP_IB_6_L			(0x1 << 4)
16320e826e86SOder Chiou #define RT5677_DSP_IB_6_L_SFT			4
16330e826e86SOder Chiou #define RT5677_DSP_IB_7_L			(0x1 << 3)
16340e826e86SOder Chiou #define RT5677_DSP_IB_7_L_SFT			3
16350e826e86SOder Chiou #define RT5677_DSP_IB_8_L			(0x1 << 2)
16360e826e86SOder Chiou #define RT5677_DSP_IB_8_L_SFT			2
16370e826e86SOder Chiou #define RT5677_DSP_IB_9_L			(0x1 << 1)
16380e826e86SOder Chiou #define RT5677_DSP_IB_9_L_SFT			1
16390e826e86SOder Chiou 
16402d15d974SBard Liao /* General Control2 (0xfc)*/
16412d15d974SBard Liao #define RT5677_GPIO5_FUNC_MASK			(0x1 << 9)
16422d15d974SBard Liao #define RT5677_GPIO5_FUNC_GPIO			(0x0 << 9)
16432d15d974SBard Liao #define RT5677_GPIO5_FUNC_DMIC			(0x1 << 9)
16442d15d974SBard Liao 
1645af48f1d0SOder Chiou #define RT5677_FIRMWARE1	"rt5677_dsp_fw1.bin"
1646af48f1d0SOder Chiou #define RT5677_FIRMWARE2	"rt5677_dsp_fw2.bin"
1647af48f1d0SOder Chiou 
1648893d1a9cSCurtis Malainey #define RT5677_DRV_NAME		"rt5677"
1649893d1a9cSCurtis Malainey 
16500e826e86SOder Chiou /* System Clock Source */
16510e826e86SOder Chiou enum {
16520e826e86SOder Chiou 	RT5677_SCLK_S_MCLK,
16530e826e86SOder Chiou 	RT5677_SCLK_S_PLL1,
16540e826e86SOder Chiou 	RT5677_SCLK_S_RCCLK,
16550e826e86SOder Chiou };
16560e826e86SOder Chiou 
16570e826e86SOder Chiou /* PLL1 Source */
16580e826e86SOder Chiou enum {
16590e826e86SOder Chiou 	RT5677_PLL1_S_MCLK,
16600e826e86SOder Chiou 	RT5677_PLL1_S_BCLK1,
16610e826e86SOder Chiou 	RT5677_PLL1_S_BCLK2,
16620e826e86SOder Chiou 	RT5677_PLL1_S_BCLK3,
16630e826e86SOder Chiou 	RT5677_PLL1_S_BCLK4,
16640e826e86SOder Chiou };
16650e826e86SOder Chiou 
16660e826e86SOder Chiou enum {
16670e826e86SOder Chiou 	RT5677_AIF1,
16680e826e86SOder Chiou 	RT5677_AIF2,
16690e826e86SOder Chiou 	RT5677_AIF3,
16700e826e86SOder Chiou 	RT5677_AIF4,
16710e826e86SOder Chiou 	RT5677_AIF5,
16720e826e86SOder Chiou 	RT5677_AIFS,
1673461c6232SBen Zhang 	RT5677_DSPBUFF,
16740e826e86SOder Chiou };
16750e826e86SOder Chiou 
167644caf764SOder Chiou enum {
167744caf764SOder Chiou 	RT5677_GPIO1,
167844caf764SOder Chiou 	RT5677_GPIO2,
167944caf764SOder Chiou 	RT5677_GPIO3,
168044caf764SOder Chiou 	RT5677_GPIO4,
168144caf764SOder Chiou 	RT5677_GPIO5,
168244caf764SOder Chiou 	RT5677_GPIO6,
168344caf764SOder Chiou 	RT5677_GPIO_NUM,
168444caf764SOder Chiou };
168544caf764SOder Chiou 
16865e3363adSOder Chiou enum {
16875e3363adSOder Chiou 	RT5677_IRQ_JD1,
16885e3363adSOder Chiou 	RT5677_IRQ_JD2,
16895e3363adSOder Chiou 	RT5677_IRQ_JD3,
16904f7b018bSBen Zhang 	RT5677_IRQ_NUM,
16915e3363adSOder Chiou };
16925e3363adSOder Chiou 
1693ab1f7095SOder Chiou enum rt5677_type {
1694*043bb9c0SAndy Shevchenko 	RT5677 = 1,
1695*043bb9c0SAndy Shevchenko 	RT5676 = 2,
1696ab1f7095SOder Chiou };
1697ab1f7095SOder Chiou 
1698c36aa0a1SOder Chiou /* ASRC clock source selection */
1699c36aa0a1SOder Chiou enum {
1700c36aa0a1SOder Chiou 	RT5677_CLK_SEL_SYS,
1701c36aa0a1SOder Chiou 	RT5677_CLK_SEL_I2S1_ASRC,
1702c36aa0a1SOder Chiou 	RT5677_CLK_SEL_I2S2_ASRC,
1703c36aa0a1SOder Chiou 	RT5677_CLK_SEL_I2S3_ASRC,
1704c36aa0a1SOder Chiou 	RT5677_CLK_SEL_I2S4_ASRC,
1705c36aa0a1SOder Chiou 	RT5677_CLK_SEL_I2S5_ASRC,
1706c36aa0a1SOder Chiou 	RT5677_CLK_SEL_I2S6_ASRC,
1707c36aa0a1SOder Chiou 	RT5677_CLK_SEL_SYS2,
1708c36aa0a1SOder Chiou 	RT5677_CLK_SEL_SYS3,
1709c36aa0a1SOder Chiou 	RT5677_CLK_SEL_SYS4,
1710c36aa0a1SOder Chiou 	RT5677_CLK_SEL_SYS5,
1711c36aa0a1SOder Chiou 	RT5677_CLK_SEL_SYS6,
1712c36aa0a1SOder Chiou 	RT5677_CLK_SEL_SYS7,
1713c36aa0a1SOder Chiou };
1714c36aa0a1SOder Chiou 
1715c36aa0a1SOder Chiou /* filter mask */
1716c36aa0a1SOder Chiou enum {
1717c36aa0a1SOder Chiou 	RT5677_DA_STEREO_FILTER = 0x1,
1718c36aa0a1SOder Chiou 	RT5677_DA_MONO2_L_FILTER = (0x1 << 1),
1719c36aa0a1SOder Chiou 	RT5677_DA_MONO2_R_FILTER = (0x1 << 2),
1720c36aa0a1SOder Chiou 	RT5677_DA_MONO3_L_FILTER = (0x1 << 3),
1721c36aa0a1SOder Chiou 	RT5677_DA_MONO3_R_FILTER = (0x1 << 4),
1722c36aa0a1SOder Chiou 	RT5677_DA_MONO4_L_FILTER = (0x1 << 5),
1723c36aa0a1SOder Chiou 	RT5677_DA_MONO4_R_FILTER = (0x1 << 6),
1724c36aa0a1SOder Chiou 	RT5677_AD_STEREO1_FILTER = (0x1 << 7),
1725c36aa0a1SOder Chiou 	RT5677_AD_STEREO2_FILTER = (0x1 << 8),
1726c36aa0a1SOder Chiou 	RT5677_AD_STEREO3_FILTER = (0x1 << 9),
1727c36aa0a1SOder Chiou 	RT5677_AD_STEREO4_FILTER = (0x1 << 10),
1728c36aa0a1SOder Chiou 	RT5677_AD_MONO_L_FILTER = (0x1 << 11),
1729c36aa0a1SOder Chiou 	RT5677_AD_MONO_R_FILTER = (0x1 << 12),
1730c36aa0a1SOder Chiou 	RT5677_DSP_OB_0_3_FILTER = (0x1 << 13),
1731c36aa0a1SOder Chiou 	RT5677_DSP_OB_4_7_FILTER = (0x1 << 14),
173216ab6e18SBard Liao 	RT5677_I2S1_SOURCE = (0x1 << 15),
173316ab6e18SBard Liao 	RT5677_I2S2_SOURCE = (0x1 << 16),
173416ab6e18SBard Liao 	RT5677_I2S3_SOURCE = (0x1 << 17),
173516ab6e18SBard Liao 	RT5677_I2S4_SOURCE = (0x1 << 18),
1736c36aa0a1SOder Chiou };
1737c36aa0a1SOder Chiou 
1738ddc9e69bSAndy Shevchenko enum rt5677_dmic2_clk {
1739ddc9e69bSAndy Shevchenko 	RT5677_DMIC_CLK1 = 0,
1740ddc9e69bSAndy Shevchenko 	RT5677_DMIC_CLK2 = 1,
1741ddc9e69bSAndy Shevchenko };
1742ddc9e69bSAndy Shevchenko 
1743ddc9e69bSAndy Shevchenko struct rt5677_platform_data {
1744ddc9e69bSAndy Shevchenko 	/* IN1/IN2/LOUT1/LOUT2/LOUT3 can optionally be differential */
1745ddc9e69bSAndy Shevchenko 	bool in1_diff;
1746ddc9e69bSAndy Shevchenko 	bool in2_diff;
1747ddc9e69bSAndy Shevchenko 	bool lout1_diff;
1748ddc9e69bSAndy Shevchenko 	bool lout2_diff;
1749ddc9e69bSAndy Shevchenko 	bool lout3_diff;
1750ddc9e69bSAndy Shevchenko 	/* DMIC2 clock source selection */
1751ddc9e69bSAndy Shevchenko 	enum rt5677_dmic2_clk dmic2_clk_pin;
1752ddc9e69bSAndy Shevchenko 
1753ddc9e69bSAndy Shevchenko 	/* configures GPIO, 0 - floating, 1 - pulldown, 2 - pullup */
1754ddc9e69bSAndy Shevchenko 	u8 gpio_config[6];
1755ddc9e69bSAndy Shevchenko 
1756ddc9e69bSAndy Shevchenko 	/* jd1 can select 0 ~ 3 as OFF, GPIO1, GPIO2 and GPIO3 respectively */
1757ddc9e69bSAndy Shevchenko 	unsigned int jd1_gpio;
1758ddc9e69bSAndy Shevchenko 	/* jd2 and jd3 can select 0 ~ 3 as
1759ddc9e69bSAndy Shevchenko 		OFF, GPIO4, GPIO5 and GPIO6 respectively */
1760ddc9e69bSAndy Shevchenko 	unsigned int jd2_gpio;
1761ddc9e69bSAndy Shevchenko 	unsigned int jd3_gpio;
1762ddc9e69bSAndy Shevchenko 
1763ddc9e69bSAndy Shevchenko 	/* Set MICBIAS1 VDD 1v8 or 3v3 */
1764ddc9e69bSAndy Shevchenko 	bool micbias1_vdd_3v3;
1765ddc9e69bSAndy Shevchenko };
1766ddc9e69bSAndy Shevchenko 
17670e826e86SOder Chiou struct rt5677_priv {
176879223bf1SKuninori Morimoto 	struct snd_soc_component *component;
17694f7b018bSBen Zhang 	struct device *dev;
17700e826e86SOder Chiou 	struct rt5677_platform_data pdata;
177119ba484dSOder Chiou 	struct regmap *regmap, *regmap_physical;
1772af48f1d0SOder Chiou 	const struct firmware *fw1, *fw2;
17736fe17da0SOder Chiou 	struct mutex dsp_cmd_lock, dsp_pri_lock;
17740e826e86SOder Chiou 
17750e826e86SOder Chiou 	int sysclk;
17760e826e86SOder Chiou 	int sysclk_src;
17770e826e86SOder Chiou 	int lrck[RT5677_AIFS];
17780e826e86SOder Chiou 	int bclk[RT5677_AIFS];
17790e826e86SOder Chiou 	int master[RT5677_AIFS];
17800e826e86SOder Chiou 	int pll_src;
17810e826e86SOder Chiou 	int pll_in;
17820e826e86SOder Chiou 	int pll_out;
1783efd901eeSBen Zhang 	struct gpio_desc *pow_ldo2; /* POW_LDO2 pin */
1784efd901eeSBen Zhang 	struct gpio_desc *reset_pin; /* RESET pin */
1785ab1f7095SOder Chiou 	enum rt5677_type type;
178644caf764SOder Chiou #ifdef CONFIG_GPIOLIB
178744caf764SOder Chiou 	struct gpio_chip gpio_chip;
178844caf764SOder Chiou #endif
17893f81068dSBen Zhang 	bool dsp_vad_en_request; /* DSP VAD enable/disable request */
17903f81068dSBen Zhang 	bool dsp_vad_en; /* dsp_work parameter */
179119ba484dSOder Chiou 	bool is_dsp_mode;
1792683996cbSOder Chiou 	bool is_vref_slow;
1793461c6232SBen Zhang 	struct delayed_work dsp_work;
17944f7b018bSBen Zhang 
17954f7b018bSBen Zhang 	/* Interrupt handling */
17964f7b018bSBen Zhang 	struct irq_domain *domain;
17974f7b018bSBen Zhang 	struct mutex irq_lock;
17984f7b018bSBen Zhang 	unsigned int irq_en;
1799ee0be4a9SBen Zhang 	struct delayed_work resume_irq_check;
1800ee0be4a9SBen Zhang 	int irq;
1801461c6232SBen Zhang 
1802461c6232SBen Zhang 	int (*set_dsp_vad)(struct snd_soc_component *component, bool on);
18030e826e86SOder Chiou };
18040e826e86SOder Chiou 
180579223bf1SKuninori Morimoto int rt5677_sel_asrc_clk_src(struct snd_soc_component *component,
1806c36aa0a1SOder Chiou 		unsigned int filter_mask, unsigned int clk_src);
1807c36aa0a1SOder Chiou 
18080e826e86SOder Chiou #endif /* __RT5677_H__ */
1809