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