1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 20ddce71cSBard Liao /* 30ddce71cSBard Liao * rt5682.h -- RT5682/RT5658 ALSA SoC audio driver 40ddce71cSBard Liao * 50ddce71cSBard Liao * Copyright 2018 Realtek Microelectronics 60ddce71cSBard Liao * Author: Bard Liao <bardliao@realtek.com> 70ddce71cSBard Liao */ 80ddce71cSBard Liao 90ddce71cSBard Liao #ifndef __RT5682_H__ 100ddce71cSBard Liao #define __RT5682_H__ 110ddce71cSBard Liao 120ddce71cSBard Liao #include <sound/rt5682.h> 1303f6fc6dSOder Chiou #include <linux/regulator/consumer.h> 14*ed117017SLinus Walleij #include <linux/gpio/consumer.h> 1503f6fc6dSOder Chiou #include <linux/clk.h> 1603f6fc6dSOder Chiou #include <linux/clkdev.h> 1703f6fc6dSOder Chiou #include <linux/clk-provider.h> 1803f6fc6dSOder Chiou #include <linux/soundwire/sdw.h> 1903f6fc6dSOder Chiou #include <linux/soundwire/sdw_type.h> 200ddce71cSBard Liao 210ddce71cSBard Liao #define DEVICE_ID 0x6530 220ddce71cSBard Liao 230ddce71cSBard Liao /* Info */ 240ddce71cSBard Liao #define RT5682_RESET 0x0000 250ddce71cSBard Liao #define RT5682_VERSION_ID 0x00fd 260ddce71cSBard Liao #define RT5682_VENDOR_ID 0x00fe 270ddce71cSBard Liao #define RT5682_DEVICE_ID 0x00ff 280ddce71cSBard Liao /* I/O - Output */ 290ddce71cSBard Liao #define RT5682_HP_CTRL_1 0x0002 300ddce71cSBard Liao #define RT5682_HP_CTRL_2 0x0003 310ddce71cSBard Liao #define RT5682_HPL_GAIN 0x0005 320ddce71cSBard Liao #define RT5682_HPR_GAIN 0x0006 330ddce71cSBard Liao 340ddce71cSBard Liao #define RT5682_I2C_CTRL 0x0008 350ddce71cSBard Liao 360ddce71cSBard Liao /* I/O - Input */ 370ddce71cSBard Liao #define RT5682_CBJ_BST_CTRL 0x000b 380ddce71cSBard Liao #define RT5682_CBJ_CTRL_1 0x0010 390ddce71cSBard Liao #define RT5682_CBJ_CTRL_2 0x0011 400ddce71cSBard Liao #define RT5682_CBJ_CTRL_3 0x0012 410ddce71cSBard Liao #define RT5682_CBJ_CTRL_4 0x0013 420ddce71cSBard Liao #define RT5682_CBJ_CTRL_5 0x0014 430ddce71cSBard Liao #define RT5682_CBJ_CTRL_6 0x0015 440ddce71cSBard Liao #define RT5682_CBJ_CTRL_7 0x0016 450ddce71cSBard Liao /* I/O - ADC/DAC/DMIC */ 460ddce71cSBard Liao #define RT5682_DAC1_DIG_VOL 0x0019 470ddce71cSBard Liao #define RT5682_STO1_ADC_DIG_VOL 0x001c 480ddce71cSBard Liao #define RT5682_STO1_ADC_BOOST 0x001f 490ddce71cSBard Liao #define RT5682_HP_IMP_GAIN_1 0x0022 500ddce71cSBard Liao #define RT5682_HP_IMP_GAIN_2 0x0023 510ddce71cSBard Liao /* Mixer - D-D */ 520ddce71cSBard Liao #define RT5682_SIDETONE_CTRL 0x0024 530ddce71cSBard Liao #define RT5682_STO1_ADC_MIXER 0x0026 540ddce71cSBard Liao #define RT5682_AD_DA_MIXER 0x0029 550ddce71cSBard Liao #define RT5682_STO1_DAC_MIXER 0x002a 560ddce71cSBard Liao #define RT5682_A_DAC1_MUX 0x002b 570ddce71cSBard Liao #define RT5682_DIG_INF2_DATA 0x0030 580ddce71cSBard Liao /* Mixer - ADC */ 590ddce71cSBard Liao #define RT5682_REC_MIXER 0x003c 600ddce71cSBard Liao #define RT5682_CAL_REC 0x0044 610ddce71cSBard Liao #define RT5682_ALC_BACK_GAIN 0x0049 620ddce71cSBard Liao /* Power */ 630ddce71cSBard Liao #define RT5682_PWR_DIG_1 0x0061 640ddce71cSBard Liao #define RT5682_PWR_DIG_2 0x0062 650ddce71cSBard Liao #define RT5682_PWR_ANLG_1 0x0063 660ddce71cSBard Liao #define RT5682_PWR_ANLG_2 0x0064 670ddce71cSBard Liao #define RT5682_PWR_ANLG_3 0x0065 680ddce71cSBard Liao #define RT5682_PWR_MIXER 0x0066 690ddce71cSBard Liao #define RT5682_PWR_VOL 0x0067 700ddce71cSBard Liao /* Clock Detect */ 710ddce71cSBard Liao #define RT5682_CLK_DET 0x006b 720ddce71cSBard Liao /* Filter Auto Reset */ 730ddce71cSBard Liao #define RT5682_RESET_LPF_CTRL 0x006c 740ddce71cSBard Liao #define RT5682_RESET_HPF_CTRL 0x006d 750ddce71cSBard Liao /* DMIC */ 760ddce71cSBard Liao #define RT5682_DMIC_CTRL_1 0x006e 770ddce71cSBard Liao /* Format - ADC/DAC */ 780ddce71cSBard Liao #define RT5682_I2S1_SDP 0x0070 790ddce71cSBard Liao #define RT5682_I2S2_SDP 0x0071 800ddce71cSBard Liao #define RT5682_ADDA_CLK_1 0x0073 810ddce71cSBard Liao #define RT5682_ADDA_CLK_2 0x0074 820ddce71cSBard Liao #define RT5682_I2S1_F_DIV_CTRL_1 0x0075 830ddce71cSBard Liao #define RT5682_I2S1_F_DIV_CTRL_2 0x0076 840ddce71cSBard Liao /* Format - TDM Control */ 850ddce71cSBard Liao #define RT5682_TDM_CTRL 0x0079 860ddce71cSBard Liao #define RT5682_TDM_ADDA_CTRL_1 0x007a 870ddce71cSBard Liao #define RT5682_TDM_ADDA_CTRL_2 0x007b 880ddce71cSBard Liao #define RT5682_DATA_SEL_CTRL_1 0x007c 890ddce71cSBard Liao #define RT5682_TDM_TCON_CTRL 0x007e 900ddce71cSBard Liao /* Function - Analog */ 910ddce71cSBard Liao #define RT5682_GLB_CLK 0x0080 920ddce71cSBard Liao #define RT5682_PLL_CTRL_1 0x0081 930ddce71cSBard Liao #define RT5682_PLL_CTRL_2 0x0082 940ddce71cSBard Liao #define RT5682_PLL_TRACK_1 0x0083 950ddce71cSBard Liao #define RT5682_PLL_TRACK_2 0x0084 960ddce71cSBard Liao #define RT5682_PLL_TRACK_3 0x0085 970ddce71cSBard Liao #define RT5682_PLL_TRACK_4 0x0086 980ddce71cSBard Liao #define RT5682_PLL_TRACK_5 0x0087 990ddce71cSBard Liao #define RT5682_PLL_TRACK_6 0x0088 1000ddce71cSBard Liao #define RT5682_PLL_TRACK_11 0x008c 1010ddce71cSBard Liao #define RT5682_SDW_REF_CLK 0x008d 1020ddce71cSBard Liao #define RT5682_DEPOP_1 0x008e 1030ddce71cSBard Liao #define RT5682_DEPOP_2 0x008f 1040ddce71cSBard Liao #define RT5682_HP_CHARGE_PUMP_1 0x0091 1050ddce71cSBard Liao #define RT5682_HP_CHARGE_PUMP_2 0x0092 1060ddce71cSBard Liao #define RT5682_MICBIAS_1 0x0093 1070ddce71cSBard Liao #define RT5682_MICBIAS_2 0x0094 1080ddce71cSBard Liao #define RT5682_PLL_TRACK_12 0x0098 1090ddce71cSBard Liao #define RT5682_PLL_TRACK_14 0x009a 1100ddce71cSBard Liao #define RT5682_PLL2_CTRL_1 0x009b 1110ddce71cSBard Liao #define RT5682_PLL2_CTRL_2 0x009c 1120ddce71cSBard Liao #define RT5682_PLL2_CTRL_3 0x009d 1130ddce71cSBard Liao #define RT5682_PLL2_CTRL_4 0x009e 1140ddce71cSBard Liao #define RT5682_RC_CLK_CTRL 0x009f 1150ddce71cSBard Liao #define RT5682_I2S_M_CLK_CTRL_1 0x00a0 1160ddce71cSBard Liao #define RT5682_I2S2_F_DIV_CTRL_1 0x00a3 1170ddce71cSBard Liao #define RT5682_I2S2_F_DIV_CTRL_2 0x00a4 1180ddce71cSBard Liao /* Function - Digital */ 1190ddce71cSBard Liao #define RT5682_EQ_CTRL_1 0x00ae 1200ddce71cSBard Liao #define RT5682_EQ_CTRL_2 0x00af 1210ddce71cSBard Liao #define RT5682_IRQ_CTRL_1 0x00b6 1220ddce71cSBard Liao #define RT5682_IRQ_CTRL_2 0x00b7 1230ddce71cSBard Liao #define RT5682_IRQ_CTRL_3 0x00b8 1240ddce71cSBard Liao #define RT5682_IRQ_CTRL_4 0x00b9 1250ddce71cSBard Liao #define RT5682_INT_ST_1 0x00be 1260ddce71cSBard Liao #define RT5682_GPIO_CTRL_1 0x00c0 1270ddce71cSBard Liao #define RT5682_GPIO_CTRL_2 0x00c1 1280ddce71cSBard Liao #define RT5682_GPIO_CTRL_3 0x00c2 1290ddce71cSBard Liao #define RT5682_HP_AMP_DET_CTRL_1 0x00d0 1300ddce71cSBard Liao #define RT5682_HP_AMP_DET_CTRL_2 0x00d1 1310ddce71cSBard Liao #define RT5682_MID_HP_AMP_DET 0x00d2 1320ddce71cSBard Liao #define RT5682_LOW_HP_AMP_DET 0x00d3 1330ddce71cSBard Liao #define RT5682_DELAY_BUF_CTRL 0x00d4 1340ddce71cSBard Liao #define RT5682_SV_ZCD_1 0x00d9 1350ddce71cSBard Liao #define RT5682_SV_ZCD_2 0x00da 1360ddce71cSBard Liao #define RT5682_IL_CMD_1 0x00db 1370ddce71cSBard Liao #define RT5682_IL_CMD_2 0x00dc 1380ddce71cSBard Liao #define RT5682_IL_CMD_3 0x00dd 1390ddce71cSBard Liao #define RT5682_IL_CMD_4 0x00de 1400ddce71cSBard Liao #define RT5682_IL_CMD_5 0x00df 1410ddce71cSBard Liao #define RT5682_IL_CMD_6 0x00e0 1420ddce71cSBard Liao #define RT5682_4BTN_IL_CMD_1 0x00e2 1430ddce71cSBard Liao #define RT5682_4BTN_IL_CMD_2 0x00e3 1440ddce71cSBard Liao #define RT5682_4BTN_IL_CMD_3 0x00e4 1450ddce71cSBard Liao #define RT5682_4BTN_IL_CMD_4 0x00e5 1460ddce71cSBard Liao #define RT5682_4BTN_IL_CMD_5 0x00e6 1470ddce71cSBard Liao #define RT5682_4BTN_IL_CMD_6 0x00e7 1480ddce71cSBard Liao #define RT5682_4BTN_IL_CMD_7 0x00e8 1490ddce71cSBard Liao 1500ddce71cSBard Liao #define RT5682_ADC_STO1_HP_CTRL_1 0x00ea 1510ddce71cSBard Liao #define RT5682_ADC_STO1_HP_CTRL_2 0x00eb 1520ddce71cSBard Liao #define RT5682_AJD1_CTRL 0x00f0 1530ddce71cSBard Liao #define RT5682_JD1_THD 0x00f1 1540ddce71cSBard Liao #define RT5682_JD2_THD 0x00f2 1550ddce71cSBard Liao #define RT5682_JD_CTRL_1 0x00f6 1560ddce71cSBard Liao /* General Control */ 1570ddce71cSBard Liao #define RT5682_DUMMY_1 0x00fa 1580ddce71cSBard Liao #define RT5682_DUMMY_2 0x00fb 1590ddce71cSBard Liao #define RT5682_DUMMY_3 0x00fc 1600ddce71cSBard Liao 1610ddce71cSBard Liao #define RT5682_DAC_ADC_DIG_VOL1 0x0100 1620ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_2 0x010b 1630ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_3 0x010c 1640ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_4 0x010d 1650ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_5 0x010e 1660ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_6 0x010f 1670ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_7 0x0110 1680ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_8 0x0111 1690ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_9 0x0112 1700ddce71cSBard Liao #define RT5682_BIAS_CUR_CTRL_10 0x0113 1710ddce71cSBard Liao #define RT5682_VREF_REC_OP_FB_CAP_CTRL 0x0117 1720ddce71cSBard Liao #define RT5682_CHARGE_PUMP_1 0x0125 1730ddce71cSBard Liao #define RT5682_DIG_IN_CTRL_1 0x0132 1740ddce71cSBard Liao #define RT5682_PAD_DRIVING_CTRL 0x0136 1750ddce71cSBard Liao #define RT5682_SOFT_RAMP_DEPOP 0x0138 1760ddce71cSBard Liao #define RT5682_CHOP_DAC 0x013a 1770ddce71cSBard Liao #define RT5682_CHOP_ADC 0x013b 1780ddce71cSBard Liao #define RT5682_CALIB_ADC_CTRL 0x013c 1790ddce71cSBard Liao #define RT5682_VOL_TEST 0x013f 1800ddce71cSBard Liao #define RT5682_SPKVDD_DET_STA 0x0142 1810ddce71cSBard Liao #define RT5682_TEST_MODE_CTRL_1 0x0145 1820ddce71cSBard Liao #define RT5682_TEST_MODE_CTRL_2 0x0146 1830ddce71cSBard Liao #define RT5682_TEST_MODE_CTRL_3 0x0147 1840ddce71cSBard Liao #define RT5682_TEST_MODE_CTRL_4 0x0148 1850ddce71cSBard Liao #define RT5682_TEST_MODE_CTRL_5 0x0149 1860ddce71cSBard Liao #define RT5682_PLL1_INTERNAL 0x0150 1870c48a653Sderek.fang #define RT5682_PLL2_INTERNAL 0x0156 1880ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_1 0x0160 1890ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_2 0x0161 1900ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_3 0x0162 1910ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_4 0x0163 1920ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_5 0x0164 1930ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_6 0x0165 1940ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_7 0x0166 1950ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_8 0x0167 1960ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_9 0x0168 1970ddce71cSBard Liao #define RT5682_STO_NG2_CTRL_10 0x0169 1980ddce71cSBard Liao #define RT5682_STO1_DAC_SIL_DET 0x0190 1990ddce71cSBard Liao #define RT5682_SIL_PSV_CTRL1 0x0194 2000ddce71cSBard Liao #define RT5682_SIL_PSV_CTRL2 0x0195 2010ddce71cSBard Liao #define RT5682_SIL_PSV_CTRL3 0x0197 2020ddce71cSBard Liao #define RT5682_SIL_PSV_CTRL4 0x0198 2030ddce71cSBard Liao #define RT5682_SIL_PSV_CTRL5 0x0199 2040ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_01 0x01af 2050ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_02 0x01b0 2060ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_03 0x01b1 2070ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_04 0x01b2 2080ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_05 0x01b3 2090ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_06 0x01b4 2100ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_07 0x01b5 2110ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_08 0x01b6 2120ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_09 0x01b7 2130ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_10 0x01b8 2140ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_11 0x01b9 2150ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_12 0x01ba 2160ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_13 0x01bb 2170ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_14 0x01bc 2180ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_15 0x01bd 2190ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_16 0x01be 2200ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_17 0x01bf 2210ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_18 0x01c0 2220ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_19 0x01c1 2230ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_20 0x01c2 2240ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_21 0x01c3 2250ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_22 0x01c4 2260ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_23 0x01c5 2270ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_24 0x01c6 2280ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_25 0x01c7 2290ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_26 0x01c8 2300ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_27 0x01c9 2310ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_28 0x01ca 2320ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_29 0x01cb 2330ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_30 0x01cc 2340ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_31 0x01cd 2350ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_32 0x01ce 2360ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_33 0x01cf 2370ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_34 0x01d0 2380ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_35 0x01d1 2390ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_36 0x01d2 2400ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_37 0x01d3 2410ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_38 0x01d4 2420ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_39 0x01d5 2430ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_40 0x01d6 2440ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_41 0x01d7 2450ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_42 0x01d8 2460ddce71cSBard Liao #define RT5682_HP_IMP_SENS_CTRL_43 0x01d9 2470ddce71cSBard Liao #define RT5682_HP_LOGIC_CTRL_1 0x01da 2480ddce71cSBard Liao #define RT5682_HP_LOGIC_CTRL_2 0x01db 2490ddce71cSBard Liao #define RT5682_HP_LOGIC_CTRL_3 0x01dc 2500ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_1 0x01de 2510ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_2 0x01df 2520ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_3 0x01e0 2530ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_4 0x01e1 2540ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_5 0x01e2 2550ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_6 0x01e3 2560ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_7 0x01e4 2570ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_9 0x01e6 2580ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_10 0x01e7 2590ddce71cSBard Liao #define RT5682_HP_CALIB_CTRL_11 0x01e8 2600ddce71cSBard Liao #define RT5682_HP_CALIB_STA_1 0x01ea 2610ddce71cSBard Liao #define RT5682_HP_CALIB_STA_2 0x01eb 2620ddce71cSBard Liao #define RT5682_HP_CALIB_STA_3 0x01ec 2630ddce71cSBard Liao #define RT5682_HP_CALIB_STA_4 0x01ed 2640ddce71cSBard Liao #define RT5682_HP_CALIB_STA_5 0x01ee 2650ddce71cSBard Liao #define RT5682_HP_CALIB_STA_6 0x01ef 2660ddce71cSBard Liao #define RT5682_HP_CALIB_STA_7 0x01f0 2670ddce71cSBard Liao #define RT5682_HP_CALIB_STA_8 0x01f1 2680ddce71cSBard Liao #define RT5682_HP_CALIB_STA_9 0x01f2 2690ddce71cSBard Liao #define RT5682_HP_CALIB_STA_10 0x01f3 2700ddce71cSBard Liao #define RT5682_HP_CALIB_STA_11 0x01f4 2710ddce71cSBard Liao #define RT5682_SAR_IL_CMD_1 0x0210 2720ddce71cSBard Liao #define RT5682_SAR_IL_CMD_2 0x0211 2730ddce71cSBard Liao #define RT5682_SAR_IL_CMD_3 0x0212 2740ddce71cSBard Liao #define RT5682_SAR_IL_CMD_4 0x0213 2750ddce71cSBard Liao #define RT5682_SAR_IL_CMD_5 0x0214 2760ddce71cSBard Liao #define RT5682_SAR_IL_CMD_6 0x0215 2770ddce71cSBard Liao #define RT5682_SAR_IL_CMD_7 0x0216 2780ddce71cSBard Liao #define RT5682_SAR_IL_CMD_8 0x0217 2790ddce71cSBard Liao #define RT5682_SAR_IL_CMD_9 0x0218 2800ddce71cSBard Liao #define RT5682_SAR_IL_CMD_10 0x0219 2810ddce71cSBard Liao #define RT5682_SAR_IL_CMD_11 0x021a 2820ddce71cSBard Liao #define RT5682_SAR_IL_CMD_12 0x021b 2830ddce71cSBard Liao #define RT5682_SAR_IL_CMD_13 0x021c 2840ddce71cSBard Liao #define RT5682_EFUSE_CTRL_1 0x0250 2850ddce71cSBard Liao #define RT5682_EFUSE_CTRL_2 0x0251 2860ddce71cSBard Liao #define RT5682_EFUSE_CTRL_3 0x0252 2870ddce71cSBard Liao #define RT5682_EFUSE_CTRL_4 0x0253 2880ddce71cSBard Liao #define RT5682_EFUSE_CTRL_5 0x0254 2890ddce71cSBard Liao #define RT5682_EFUSE_CTRL_6 0x0255 2900ddce71cSBard Liao #define RT5682_EFUSE_CTRL_7 0x0256 2910ddce71cSBard Liao #define RT5682_EFUSE_CTRL_8 0x0257 2920ddce71cSBard Liao #define RT5682_EFUSE_CTRL_9 0x0258 2930ddce71cSBard Liao #define RT5682_EFUSE_CTRL_10 0x0259 2940ddce71cSBard Liao #define RT5682_EFUSE_CTRL_11 0x025a 2950ddce71cSBard Liao #define RT5682_JD_TOP_VC_VTRL 0x0270 2960ddce71cSBard Liao #define RT5682_DRC1_CTRL_0 0x02ff 2970ddce71cSBard Liao #define RT5682_DRC1_CTRL_1 0x0300 2980ddce71cSBard Liao #define RT5682_DRC1_CTRL_2 0x0301 2990ddce71cSBard Liao #define RT5682_DRC1_CTRL_3 0x0302 3000ddce71cSBard Liao #define RT5682_DRC1_CTRL_4 0x0303 3010ddce71cSBard Liao #define RT5682_DRC1_CTRL_5 0x0304 3020ddce71cSBard Liao #define RT5682_DRC1_CTRL_6 0x0305 3030ddce71cSBard Liao #define RT5682_DRC1_HARD_LMT_CTRL_1 0x0306 3040ddce71cSBard Liao #define RT5682_DRC1_HARD_LMT_CTRL_2 0x0307 3050ddce71cSBard Liao #define RT5682_DRC1_PRIV_1 0x0310 3060ddce71cSBard Liao #define RT5682_DRC1_PRIV_2 0x0311 3070ddce71cSBard Liao #define RT5682_DRC1_PRIV_3 0x0312 3080ddce71cSBard Liao #define RT5682_DRC1_PRIV_4 0x0313 3090ddce71cSBard Liao #define RT5682_DRC1_PRIV_5 0x0314 3100ddce71cSBard Liao #define RT5682_DRC1_PRIV_6 0x0315 3110ddce71cSBard Liao #define RT5682_DRC1_PRIV_7 0x0316 3120ddce71cSBard Liao #define RT5682_DRC1_PRIV_8 0x0317 3130ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL1 0x03c0 3140ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL2 0x03c1 3150ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL3 0x03c2 3160ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL4 0x03c3 3170ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL5 0x03c4 3180ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL6 0x03c5 3190ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL7 0x03c6 3200ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL8 0x03c7 3210ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL9 0x03c8 3220ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL10 0x03c9 3230ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL11 0x03ca 3240ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL12 0x03cb 3250ddce71cSBard Liao #define RT5682_EQ_AUTO_RCV_CTRL13 0x03cc 3260ddce71cSBard Liao #define RT5682_ADC_L_EQ_LPF1_A1 0x03d0 3270ddce71cSBard Liao #define RT5682_R_EQ_LPF1_A1 0x03d1 3280ddce71cSBard Liao #define RT5682_L_EQ_LPF1_H0 0x03d2 3290ddce71cSBard Liao #define RT5682_R_EQ_LPF1_H0 0x03d3 3300ddce71cSBard Liao #define RT5682_L_EQ_BPF1_A1 0x03d4 3310ddce71cSBard Liao #define RT5682_R_EQ_BPF1_A1 0x03d5 3320ddce71cSBard Liao #define RT5682_L_EQ_BPF1_A2 0x03d6 3330ddce71cSBard Liao #define RT5682_R_EQ_BPF1_A2 0x03d7 3340ddce71cSBard Liao #define RT5682_L_EQ_BPF1_H0 0x03d8 3350ddce71cSBard Liao #define RT5682_R_EQ_BPF1_H0 0x03d9 3360ddce71cSBard Liao #define RT5682_L_EQ_BPF2_A1 0x03da 3370ddce71cSBard Liao #define RT5682_R_EQ_BPF2_A1 0x03db 3380ddce71cSBard Liao #define RT5682_L_EQ_BPF2_A2 0x03dc 3390ddce71cSBard Liao #define RT5682_R_EQ_BPF2_A2 0x03dd 3400ddce71cSBard Liao #define RT5682_L_EQ_BPF2_H0 0x03de 3410ddce71cSBard Liao #define RT5682_R_EQ_BPF2_H0 0x03df 3420ddce71cSBard Liao #define RT5682_L_EQ_BPF3_A1 0x03e0 3430ddce71cSBard Liao #define RT5682_R_EQ_BPF3_A1 0x03e1 3440ddce71cSBard Liao #define RT5682_L_EQ_BPF3_A2 0x03e2 3450ddce71cSBard Liao #define RT5682_R_EQ_BPF3_A2 0x03e3 3460ddce71cSBard Liao #define RT5682_L_EQ_BPF3_H0 0x03e4 3470ddce71cSBard Liao #define RT5682_R_EQ_BPF3_H0 0x03e5 3480ddce71cSBard Liao #define RT5682_L_EQ_BPF4_A1 0x03e6 3490ddce71cSBard Liao #define RT5682_R_EQ_BPF4_A1 0x03e7 3500ddce71cSBard Liao #define RT5682_L_EQ_BPF4_A2 0x03e8 3510ddce71cSBard Liao #define RT5682_R_EQ_BPF4_A2 0x03e9 3520ddce71cSBard Liao #define RT5682_L_EQ_BPF4_H0 0x03ea 3530ddce71cSBard Liao #define RT5682_R_EQ_BPF4_H0 0x03eb 3540ddce71cSBard Liao #define RT5682_L_EQ_HPF1_A1 0x03ec 3550ddce71cSBard Liao #define RT5682_R_EQ_HPF1_A1 0x03ed 3560ddce71cSBard Liao #define RT5682_L_EQ_HPF1_H0 0x03ee 3570ddce71cSBard Liao #define RT5682_R_EQ_HPF1_H0 0x03ef 3580ddce71cSBard Liao #define RT5682_L_EQ_PRE_VOL 0x03f0 3590ddce71cSBard Liao #define RT5682_R_EQ_PRE_VOL 0x03f1 3600ddce71cSBard Liao #define RT5682_L_EQ_POST_VOL 0x03f2 3610ddce71cSBard Liao #define RT5682_R_EQ_POST_VOL 0x03f3 3620ddce71cSBard Liao #define RT5682_I2C_MODE 0xffff 3630ddce71cSBard Liao 3640ddce71cSBard Liao 3650ddce71cSBard Liao /* global definition */ 3660ddce71cSBard Liao #define RT5682_L_MUTE (0x1 << 15) 3670ddce71cSBard Liao #define RT5682_L_MUTE_SFT 15 3680ddce71cSBard Liao #define RT5682_VOL_L_MUTE (0x1 << 14) 3690ddce71cSBard Liao #define RT5682_VOL_L_SFT 14 3700ddce71cSBard Liao #define RT5682_R_MUTE (0x1 << 7) 3710ddce71cSBard Liao #define RT5682_R_MUTE_SFT 7 3720ddce71cSBard Liao #define RT5682_VOL_R_MUTE (0x1 << 6) 3730ddce71cSBard Liao #define RT5682_VOL_R_SFT 6 3740ddce71cSBard Liao #define RT5682_L_VOL_MASK (0x3f << 8) 3750ddce71cSBard Liao #define RT5682_L_VOL_SFT 8 3760ddce71cSBard Liao #define RT5682_R_VOL_MASK (0x3f) 3770ddce71cSBard Liao #define RT5682_R_VOL_SFT 0 3780ddce71cSBard Liao 3794b19e4a7SDerek Fang /* Headphone Amp Control 2 (0x0003) */ 3804b19e4a7SDerek Fang #define RT5682_HP_C2_DAC_AMP_MUTE_SFT 15 3814b19e4a7SDerek Fang #define RT5682_HP_C2_DAC_AMP_MUTE (0x1 << 15) 3824b19e4a7SDerek Fang #define RT5682_HP_C2_DAC_L_EN_SFT 14 3834b19e4a7SDerek Fang #define RT5682_HP_C2_DAC_L_EN (0x1 << 14) 3844b19e4a7SDerek Fang #define RT5682_HP_C2_DAC_R_EN_SFT 13 3854b19e4a7SDerek Fang #define RT5682_HP_C2_DAC_R_EN (0x1 << 13) 3864b19e4a7SDerek Fang 3870ddce71cSBard Liao /*Headphone Amp L/R Analog Gain and Digital NG2 Gain Control (0x0005 0x0006)*/ 3880ddce71cSBard Liao #define RT5682_G_HP (0xf << 8) 3890ddce71cSBard Liao #define RT5682_G_HP_SFT 8 3900ddce71cSBard Liao #define RT5682_G_STO_DA_DMIX (0xf) 3910ddce71cSBard Liao #define RT5682_G_STO_DA_SFT 0 3920ddce71cSBard Liao 3930ddce71cSBard Liao /* CBJ Control (0x000b) */ 3940ddce71cSBard Liao #define RT5682_BST_CBJ_MASK (0xf << 8) 3950ddce71cSBard Liao #define RT5682_BST_CBJ_SFT 8 3960ddce71cSBard Liao 3970ddce71cSBard Liao /* Embeeded Jack and Type Detection Control 1 (0x0010) */ 3980ddce71cSBard Liao #define RT5682_EMB_JD_EN (0x1 << 15) 3990ddce71cSBard Liao #define RT5682_EMB_JD_EN_SFT 15 4000ddce71cSBard Liao #define RT5682_EMB_JD_RST (0x1 << 14) 4010ddce71cSBard Liao #define RT5682_JD_MODE (0x1 << 13) 4020ddce71cSBard Liao #define RT5682_JD_MODE_SFT 13 4030ddce71cSBard Liao #define RT5682_DET_TYPE (0x1 << 12) 4040ddce71cSBard Liao #define RT5682_DET_TYPE_SFT 12 4050ddce71cSBard Liao #define RT5682_POLA_EXT_JD_MASK (0x1 << 11) 4060ddce71cSBard Liao #define RT5682_POLA_EXT_JD_LOW (0x1 << 11) 4070ddce71cSBard Liao #define RT5682_POLA_EXT_JD_HIGH (0x0 << 11) 4080ddce71cSBard Liao #define RT5682_EXT_JD_DIG (0x1 << 9) 4090ddce71cSBard Liao #define RT5682_POL_FAST_OFF_MASK (0x1 << 8) 4100ddce71cSBard Liao #define RT5682_POL_FAST_OFF_HIGH (0x1 << 8) 4110ddce71cSBard Liao #define RT5682_POL_FAST_OFF_LOW (0x0 << 8) 4120ddce71cSBard Liao #define RT5682_FAST_OFF_MASK (0x1 << 7) 4130ddce71cSBard Liao #define RT5682_FAST_OFF_EN (0x1 << 7) 4140ddce71cSBard Liao #define RT5682_FAST_OFF_DIS (0x0 << 7) 4150ddce71cSBard Liao #define RT5682_VREF_POW_MASK (0x1 << 6) 4160ddce71cSBard Liao #define RT5682_VREF_POW_FSM (0x0 << 6) 4170ddce71cSBard Liao #define RT5682_VREF_POW_REG (0x1 << 6) 4180ddce71cSBard Liao #define RT5682_MB1_PATH_MASK (0x1 << 5) 4190ddce71cSBard Liao #define RT5682_CTRL_MB1_REG (0x1 << 5) 4200ddce71cSBard Liao #define RT5682_CTRL_MB1_FSM (0x0 << 5) 4210ddce71cSBard Liao #define RT5682_MB2_PATH_MASK (0x1 << 4) 4220ddce71cSBard Liao #define RT5682_CTRL_MB2_REG (0x1 << 4) 4230ddce71cSBard Liao #define RT5682_CTRL_MB2_FSM (0x0 << 4) 4240ddce71cSBard Liao #define RT5682_TRIG_JD_MASK (0x1 << 3) 4250ddce71cSBard Liao #define RT5682_TRIG_JD_HIGH (0x1 << 3) 4260ddce71cSBard Liao #define RT5682_TRIG_JD_LOW (0x0 << 3) 4270ddce71cSBard Liao #define RT5682_MIC_CAP_MASK (0x1 << 1) 4280ddce71cSBard Liao #define RT5682_MIC_CAP_HS (0x1 << 1) 4290ddce71cSBard Liao #define RT5682_MIC_CAP_HP (0x0 << 1) 4300ddce71cSBard Liao #define RT5682_MIC_CAP_SRC_MASK (0x1) 4310ddce71cSBard Liao #define RT5682_MIC_CAP_SRC_REG (0x1) 4320ddce71cSBard Liao #define RT5682_MIC_CAP_SRC_ANA (0x0) 4330ddce71cSBard Liao 4340ddce71cSBard Liao /* Embeeded Jack and Type Detection Control 2 (0x0011) */ 4350ddce71cSBard Liao #define RT5682_EXT_JD_SRC (0x7 << 4) 4360ddce71cSBard Liao #define RT5682_EXT_JD_SRC_SFT 4 4370ddce71cSBard Liao #define RT5682_EXT_JD_SRC_GPIO_JD1 (0x0 << 4) 4380ddce71cSBard Liao #define RT5682_EXT_JD_SRC_GPIO_JD2 (0x1 << 4) 4390ddce71cSBard Liao #define RT5682_EXT_JD_SRC_JDH (0x2 << 4) 4400ddce71cSBard Liao #define RT5682_EXT_JD_SRC_JDL (0x3 << 4) 4410ddce71cSBard Liao #define RT5682_EXT_JD_SRC_MANUAL (0x4 << 4) 4420ddce71cSBard Liao #define RT5682_JACK_TYPE_MASK (0x3) 4430ddce71cSBard Liao 4440ddce71cSBard Liao /* Combo Jack and Type Detection Control 3 (0x0012) */ 4450ddce71cSBard Liao #define RT5682_CBJ_IN_BUF_EN (0x1 << 7) 4460ddce71cSBard Liao 4470ddce71cSBard Liao /* Combo Jack and Type Detection Control 4 (0x0013) */ 4480ddce71cSBard Liao #define RT5682_SEL_SHT_MID_TON_MASK (0x3 << 12) 4490ddce71cSBard Liao #define RT5682_SEL_SHT_MID_TON_2 (0x0 << 12) 4500ddce71cSBard Liao #define RT5682_SEL_SHT_MID_TON_3 (0x1 << 12) 4510ddce71cSBard Liao #define RT5682_CBJ_JD_TEST_MASK (0x1 << 6) 4520ddce71cSBard Liao #define RT5682_CBJ_JD_TEST_NORM (0x0 << 6) 4530ddce71cSBard Liao #define RT5682_CBJ_JD_TEST_MODE (0x1 << 6) 4540ddce71cSBard Liao 4550ddce71cSBard Liao /* DAC1 Digital Volume (0x0019) */ 4560ddce71cSBard Liao #define RT5682_DAC_L1_VOL_MASK (0xff << 8) 4570ddce71cSBard Liao #define RT5682_DAC_L1_VOL_SFT 8 4580ddce71cSBard Liao #define RT5682_DAC_R1_VOL_MASK (0xff) 4590ddce71cSBard Liao #define RT5682_DAC_R1_VOL_SFT 0 4600ddce71cSBard Liao 4610ddce71cSBard Liao /* ADC Digital Volume Control (0x001c) */ 4620ddce71cSBard Liao #define RT5682_ADC_L_VOL_MASK (0x7f << 8) 4630ddce71cSBard Liao #define RT5682_ADC_L_VOL_SFT 8 4640ddce71cSBard Liao #define RT5682_ADC_R_VOL_MASK (0x7f) 4650ddce71cSBard Liao #define RT5682_ADC_R_VOL_SFT 0 4660ddce71cSBard Liao 4670ddce71cSBard Liao /* Stereo1 ADC Boost Gain Control (0x001f) */ 4680ddce71cSBard Liao #define RT5682_STO1_ADC_L_BST_MASK (0x3 << 14) 4690ddce71cSBard Liao #define RT5682_STO1_ADC_L_BST_SFT 14 4700ddce71cSBard Liao #define RT5682_STO1_ADC_R_BST_MASK (0x3 << 12) 4710ddce71cSBard Liao #define RT5682_STO1_ADC_R_BST_SFT 12 4720ddce71cSBard Liao 4730ddce71cSBard Liao /* Sidetone Control (0x0024) */ 4740ddce71cSBard Liao #define RT5682_ST_SRC_SEL (0x1 << 8) 4750ddce71cSBard Liao #define RT5682_ST_SRC_SFT 8 4760ddce71cSBard Liao #define RT5682_ST_EN_MASK (0x1 << 6) 4770ddce71cSBard Liao #define RT5682_ST_DIS (0x0 << 6) 4780ddce71cSBard Liao #define RT5682_ST_EN (0x1 << 6) 4790ddce71cSBard Liao #define RT5682_ST_EN_SFT 6 4800ddce71cSBard Liao 4810ddce71cSBard Liao /* Stereo1 ADC Mixer Control (0x0026) */ 4820ddce71cSBard Liao #define RT5682_M_STO1_ADC_L1 (0x1 << 15) 4830ddce71cSBard Liao #define RT5682_M_STO1_ADC_L1_SFT 15 4840ddce71cSBard Liao #define RT5682_M_STO1_ADC_L2 (0x1 << 14) 4850ddce71cSBard Liao #define RT5682_M_STO1_ADC_L2_SFT 14 4860ddce71cSBard Liao #define RT5682_STO1_ADC1L_SRC_MASK (0x1 << 13) 4870ddce71cSBard Liao #define RT5682_STO1_ADC1L_SRC_SFT 13 4880ddce71cSBard Liao #define RT5682_STO1_ADC1_SRC_ADC (0x1 << 13) 4890ddce71cSBard Liao #define RT5682_STO1_ADC1_SRC_DACMIX (0x0 << 13) 4900ddce71cSBard Liao #define RT5682_STO1_ADC2L_SRC_MASK (0x1 << 12) 4910ddce71cSBard Liao #define RT5682_STO1_ADC2L_SRC_SFT 12 4920ddce71cSBard Liao #define RT5682_STO1_ADCL_SRC_MASK (0x3 << 10) 4930ddce71cSBard Liao #define RT5682_STO1_ADCL_SRC_SFT 10 4940ddce71cSBard Liao #define RT5682_STO1_DD_L_SRC_MASK (0x1 << 9) 4950ddce71cSBard Liao #define RT5682_STO1_DD_L_SRC_SFT 9 4960ddce71cSBard Liao #define RT5682_STO1_DMIC_SRC_MASK (0x1 << 8) 4970ddce71cSBard Liao #define RT5682_STO1_DMIC_SRC_SFT 8 4980ddce71cSBard Liao #define RT5682_STO1_DMIC_SRC_DMIC2 (0x1 << 8) 4990ddce71cSBard Liao #define RT5682_STO1_DMIC_SRC_DMIC1 (0x0 << 8) 5000ddce71cSBard Liao #define RT5682_M_STO1_ADC_R1 (0x1 << 7) 5010ddce71cSBard Liao #define RT5682_M_STO1_ADC_R1_SFT 7 5020ddce71cSBard Liao #define RT5682_M_STO1_ADC_R2 (0x1 << 6) 5030ddce71cSBard Liao #define RT5682_M_STO1_ADC_R2_SFT 6 5040ddce71cSBard Liao #define RT5682_STO1_ADC1R_SRC_MASK (0x1 << 5) 5050ddce71cSBard Liao #define RT5682_STO1_ADC1R_SRC_SFT 5 5060ddce71cSBard Liao #define RT5682_STO1_ADC2R_SRC_MASK (0x1 << 4) 5070ddce71cSBard Liao #define RT5682_STO1_ADC2R_SRC_SFT 4 5080ddce71cSBard Liao #define RT5682_STO1_ADCR_SRC_MASK (0x3 << 2) 5090ddce71cSBard Liao #define RT5682_STO1_ADCR_SRC_SFT 2 5100ddce71cSBard Liao 5110ddce71cSBard Liao /* ADC Mixer to DAC Mixer Control (0x0029) */ 5120ddce71cSBard Liao #define RT5682_M_ADCMIX_L (0x1 << 15) 5130ddce71cSBard Liao #define RT5682_M_ADCMIX_L_SFT 15 5140ddce71cSBard Liao #define RT5682_M_DAC1_L (0x1 << 14) 5150ddce71cSBard Liao #define RT5682_M_DAC1_L_SFT 14 5160ddce71cSBard Liao #define RT5682_DAC1_R_SEL_MASK (0x1 << 10) 5170ddce71cSBard Liao #define RT5682_DAC1_R_SEL_SFT 10 5180ddce71cSBard Liao #define RT5682_DAC1_L_SEL_MASK (0x1 << 8) 5190ddce71cSBard Liao #define RT5682_DAC1_L_SEL_SFT 8 5200ddce71cSBard Liao #define RT5682_M_ADCMIX_R (0x1 << 7) 5210ddce71cSBard Liao #define RT5682_M_ADCMIX_R_SFT 7 5220ddce71cSBard Liao #define RT5682_M_DAC1_R (0x1 << 6) 5230ddce71cSBard Liao #define RT5682_M_DAC1_R_SFT 6 5240ddce71cSBard Liao 5250ddce71cSBard Liao /* Stereo1 DAC Mixer Control (0x002a) */ 5260ddce71cSBard Liao #define RT5682_M_DAC_L1_STO_L (0x1 << 15) 5270ddce71cSBard Liao #define RT5682_M_DAC_L1_STO_L_SFT 15 5280ddce71cSBard Liao #define RT5682_G_DAC_L1_STO_L_MASK (0x1 << 14) 5290ddce71cSBard Liao #define RT5682_G_DAC_L1_STO_L_SFT 14 5300ddce71cSBard Liao #define RT5682_M_DAC_R1_STO_L (0x1 << 13) 5310ddce71cSBard Liao #define RT5682_M_DAC_R1_STO_L_SFT 13 5320ddce71cSBard Liao #define RT5682_G_DAC_R1_STO_L_MASK (0x1 << 12) 5330ddce71cSBard Liao #define RT5682_G_DAC_R1_STO_L_SFT 12 5340ddce71cSBard Liao #define RT5682_M_DAC_L1_STO_R (0x1 << 7) 5350ddce71cSBard Liao #define RT5682_M_DAC_L1_STO_R_SFT 7 5360ddce71cSBard Liao #define RT5682_G_DAC_L1_STO_R_MASK (0x1 << 6) 5370ddce71cSBard Liao #define RT5682_G_DAC_L1_STO_R_SFT 6 5380ddce71cSBard Liao #define RT5682_M_DAC_R1_STO_R (0x1 << 5) 5390ddce71cSBard Liao #define RT5682_M_DAC_R1_STO_R_SFT 5 5400ddce71cSBard Liao #define RT5682_G_DAC_R1_STO_R_MASK (0x1 << 4) 5410ddce71cSBard Liao #define RT5682_G_DAC_R1_STO_R_SFT 4 5420ddce71cSBard Liao 5430ddce71cSBard Liao /* Analog DAC1 Input Source Control (0x002b) */ 5440ddce71cSBard Liao #define RT5682_M_ST_STO_L (0x1 << 9) 5450ddce71cSBard Liao #define RT5682_M_ST_STO_L_SFT 9 5460ddce71cSBard Liao #define RT5682_M_ST_STO_R (0x1 << 8) 5470ddce71cSBard Liao #define RT5682_M_ST_STO_R_SFT 8 5480ddce71cSBard Liao #define RT5682_DAC_L1_SRC_MASK (0x3 << 4) 5490ddce71cSBard Liao #define RT5682_A_DACL1_SFT 4 5500ddce71cSBard Liao #define RT5682_DAC_R1_SRC_MASK (0x3) 5510ddce71cSBard Liao #define RT5682_A_DACR1_SFT 0 5520ddce71cSBard Liao 5530ddce71cSBard Liao /* Digital Interface Data Control (0x0030) */ 5540ddce71cSBard Liao #define RT5682_IF2_ADC_SEL_MASK (0x3 << 0) 5550ddce71cSBard Liao #define RT5682_IF2_ADC_SEL_SFT 0 5560ddce71cSBard Liao 5570ddce71cSBard Liao /* REC Left Mixer Control 2 (0x003c) */ 5580ddce71cSBard Liao #define RT5682_G_CBJ_RM1_L (0x7 << 10) 5590ddce71cSBard Liao #define RT5682_G_CBJ_RM1_L_SFT 10 5600ddce71cSBard Liao #define RT5682_M_CBJ_RM1_L (0x1 << 7) 5610ddce71cSBard Liao #define RT5682_M_CBJ_RM1_L_SFT 7 5620ddce71cSBard Liao 5630ddce71cSBard Liao /* Power Management for Digital 1 (0x0061) */ 5640ddce71cSBard Liao #define RT5682_PWR_I2S1 (0x1 << 15) 5650ddce71cSBard Liao #define RT5682_PWR_I2S1_BIT 15 5660ddce71cSBard Liao #define RT5682_PWR_I2S2 (0x1 << 14) 5670ddce71cSBard Liao #define RT5682_PWR_I2S2_BIT 14 5680ddce71cSBard Liao #define RT5682_PWR_DAC_L1 (0x1 << 11) 5690ddce71cSBard Liao #define RT5682_PWR_DAC_L1_BIT 11 5700ddce71cSBard Liao #define RT5682_PWR_DAC_R1 (0x1 << 10) 5710ddce71cSBard Liao #define RT5682_PWR_DAC_R1_BIT 10 5720ddce71cSBard Liao #define RT5682_PWR_LDO (0x1 << 8) 5730ddce71cSBard Liao #define RT5682_PWR_LDO_BIT 8 5740ddce71cSBard Liao #define RT5682_PWR_ADC_L1 (0x1 << 4) 5750ddce71cSBard Liao #define RT5682_PWR_ADC_L1_BIT 4 5760ddce71cSBard Liao #define RT5682_PWR_ADC_R1 (0x1 << 3) 5770ddce71cSBard Liao #define RT5682_PWR_ADC_R1_BIT 3 5780ddce71cSBard Liao #define RT5682_DIG_GATE_CTRL (0x1 << 0) 5790ddce71cSBard Liao #define RT5682_DIG_GATE_CTRL_SFT 0 5800ddce71cSBard Liao 5810ddce71cSBard Liao 5820ddce71cSBard Liao /* Power Management for Digital 2 (0x0062) */ 5830ddce71cSBard Liao #define RT5682_PWR_ADC_S1F (0x1 << 15) 5840ddce71cSBard Liao #define RT5682_PWR_ADC_S1F_BIT 15 5850ddce71cSBard Liao #define RT5682_PWR_DAC_S1F (0x1 << 10) 5860ddce71cSBard Liao #define RT5682_PWR_DAC_S1F_BIT 10 5870ddce71cSBard Liao 5880ddce71cSBard Liao /* Power Management for Analog 1 (0x0063) */ 5890ddce71cSBard Liao #define RT5682_PWR_VREF1 (0x1 << 15) 5900ddce71cSBard Liao #define RT5682_PWR_VREF1_BIT 15 5910ddce71cSBard Liao #define RT5682_PWR_FV1 (0x1 << 14) 5920ddce71cSBard Liao #define RT5682_PWR_FV1_BIT 14 5930ddce71cSBard Liao #define RT5682_PWR_VREF2 (0x1 << 13) 5940ddce71cSBard Liao #define RT5682_PWR_VREF2_BIT 13 5950ddce71cSBard Liao #define RT5682_PWR_FV2 (0x1 << 12) 5960ddce71cSBard Liao #define RT5682_PWR_FV2_BIT 12 5970ddce71cSBard Liao #define RT5682_LDO1_DBG_MASK (0x3 << 10) 5980ddce71cSBard Liao #define RT5682_PWR_MB (0x1 << 9) 5990ddce71cSBard Liao #define RT5682_PWR_MB_BIT 9 6000ddce71cSBard Liao #define RT5682_PWR_BG (0x1 << 7) 6010ddce71cSBard Liao #define RT5682_PWR_BG_BIT 7 6020ddce71cSBard Liao #define RT5682_LDO1_BYPASS_MASK (0x1 << 6) 6030ddce71cSBard Liao #define RT5682_LDO1_BYPASS (0x1 << 6) 6040ddce71cSBard Liao #define RT5682_LDO1_NOT_BYPASS (0x0 << 6) 6050ddce71cSBard Liao #define RT5682_PWR_MA_BIT 6 6060ddce71cSBard Liao #define RT5682_LDO1_DVO_MASK (0x3 << 4) 6070ddce71cSBard Liao #define RT5682_LDO1_DVO_09 (0x0 << 4) 6080ddce71cSBard Liao #define RT5682_LDO1_DVO_10 (0x1 << 4) 6090ddce71cSBard Liao #define RT5682_LDO1_DVO_12 (0x2 << 4) 6100ddce71cSBard Liao #define RT5682_LDO1_DVO_14 (0x3 << 4) 6110ddce71cSBard Liao #define RT5682_HP_DRIVER_MASK (0x3 << 2) 6120ddce71cSBard Liao #define RT5682_HP_DRIVER_1X (0x0 << 2) 6130ddce71cSBard Liao #define RT5682_HP_DRIVER_3X (0x1 << 2) 6140ddce71cSBard Liao #define RT5682_HP_DRIVER_5X (0x3 << 2) 6150ddce71cSBard Liao #define RT5682_PWR_HA_L (0x1 << 1) 6160ddce71cSBard Liao #define RT5682_PWR_HA_L_BIT 1 6170ddce71cSBard Liao #define RT5682_PWR_HA_R (0x1 << 0) 6180ddce71cSBard Liao #define RT5682_PWR_HA_R_BIT 0 6190ddce71cSBard Liao 6200ddce71cSBard Liao /* Power Management for Analog 2 (0x0064) */ 6210ddce71cSBard Liao #define RT5682_PWR_MB1 (0x1 << 11) 6220ddce71cSBard Liao #define RT5682_PWR_MB1_PWR_DOWN (0x0 << 11) 6230ddce71cSBard Liao #define RT5682_PWR_MB1_BIT 11 6240ddce71cSBard Liao #define RT5682_PWR_MB2 (0x1 << 10) 6250ddce71cSBard Liao #define RT5682_PWR_MB2_PWR_DOWN (0x0 << 10) 6260ddce71cSBard Liao #define RT5682_PWR_MB2_BIT 10 6270ddce71cSBard Liao #define RT5682_PWR_JDH (0x1 << 3) 6280ddce71cSBard Liao #define RT5682_PWR_JDH_BIT 3 6290ddce71cSBard Liao #define RT5682_PWR_JDL (0x1 << 2) 6300ddce71cSBard Liao #define RT5682_PWR_JDL_BIT 2 6310ddce71cSBard Liao #define RT5682_PWR_RM1_L (0x1 << 1) 6320ddce71cSBard Liao #define RT5682_PWR_RM1_L_BIT 1 6330ddce71cSBard Liao 6340ddce71cSBard Liao /* Power Management for Analog 3 (0x0065) */ 6350ddce71cSBard Liao #define RT5682_PWR_CBJ (0x1 << 9) 6360ddce71cSBard Liao #define RT5682_PWR_CBJ_BIT 9 6370ddce71cSBard Liao #define RT5682_PWR_PLL (0x1 << 6) 6380ddce71cSBard Liao #define RT5682_PWR_PLL_BIT 6 6390ddce71cSBard Liao #define RT5682_PWR_PLL2B (0x1 << 5) 6400ddce71cSBard Liao #define RT5682_PWR_PLL2B_BIT 5 6410ddce71cSBard Liao #define RT5682_PWR_PLL2F (0x1 << 4) 6420ddce71cSBard Liao #define RT5682_PWR_PLL2F_BIT 4 6430ddce71cSBard Liao #define RT5682_PWR_LDO2 (0x1 << 2) 6440ddce71cSBard Liao #define RT5682_PWR_LDO2_BIT 2 6450ddce71cSBard Liao #define RT5682_PWR_DET_SPKVDD (0x1 << 1) 6460ddce71cSBard Liao #define RT5682_PWR_DET_SPKVDD_BIT 1 6470ddce71cSBard Liao 6480ddce71cSBard Liao /* Power Management for Mixer (0x0066) */ 6490ddce71cSBard Liao #define RT5682_PWR_STO1_DAC_L (0x1 << 5) 6500ddce71cSBard Liao #define RT5682_PWR_STO1_DAC_L_BIT 5 6510ddce71cSBard Liao #define RT5682_PWR_STO1_DAC_R (0x1 << 4) 6520ddce71cSBard Liao #define RT5682_PWR_STO1_DAC_R_BIT 4 6530ddce71cSBard Liao 6540ddce71cSBard Liao /* MCLK and System Clock Detection Control (0x006b) */ 6550ddce71cSBard Liao #define RT5682_SYS_CLK_DET (0x1 << 15) 6560ddce71cSBard Liao #define RT5682_SYS_CLK_DET_SFT 15 6570ddce71cSBard Liao #define RT5682_PLL1_CLK_DET (0x1 << 14) 6580ddce71cSBard Liao #define RT5682_PLL1_CLK_DET_SFT 14 6590ddce71cSBard Liao #define RT5682_PLL2_CLK_DET (0x1 << 13) 6600ddce71cSBard Liao #define RT5682_PLL2_CLK_DET_SFT 13 6610ddce71cSBard Liao #define RT5682_POW_CLK_DET2_SFT 8 6620ddce71cSBard Liao #define RT5682_POW_CLK_DET_SFT 0 6630ddce71cSBard Liao 6640ddce71cSBard Liao /* Digital Microphone Control 1 (0x006e) */ 6650ddce71cSBard Liao #define RT5682_DMIC_1_EN_MASK (0x1 << 15) 6660ddce71cSBard Liao #define RT5682_DMIC_1_EN_SFT 15 6670ddce71cSBard Liao #define RT5682_DMIC_1_DIS (0x0 << 15) 6680ddce71cSBard Liao #define RT5682_DMIC_1_EN (0x1 << 15) 669557270e8SShuming Fan #define RT5682_FIFO_CLK_DIV_MASK (0x7 << 12) 670557270e8SShuming Fan #define RT5682_FIFO_CLK_DIV_2 (0x1 << 12) 6710ddce71cSBard Liao #define RT5682_DMIC_1_DP_MASK (0x3 << 4) 6720ddce71cSBard Liao #define RT5682_DMIC_1_DP_SFT 4 6730ddce71cSBard Liao #define RT5682_DMIC_1_DP_GPIO2 (0x0 << 4) 6740ddce71cSBard Liao #define RT5682_DMIC_1_DP_GPIO5 (0x1 << 4) 6750ddce71cSBard Liao #define RT5682_DMIC_CLK_MASK (0xf << 0) 6760ddce71cSBard Liao #define RT5682_DMIC_CLK_SFT 0 6770ddce71cSBard Liao 6780ddce71cSBard Liao /* I2S1 Audio Serial Data Port Control (0x0070) */ 6790ddce71cSBard Liao #define RT5682_SEL_ADCDAT_MASK (0x1 << 15) 6800ddce71cSBard Liao #define RT5682_SEL_ADCDAT_OUT (0x0 << 15) 6810ddce71cSBard Liao #define RT5682_SEL_ADCDAT_IN (0x1 << 15) 6820ddce71cSBard Liao #define RT5682_SEL_ADCDAT_SFT 15 6830ddce71cSBard Liao #define RT5682_I2S1_TX_CHL_MASK (0x7 << 12) 6840ddce71cSBard Liao #define RT5682_I2S1_TX_CHL_SFT 12 6850ddce71cSBard Liao #define RT5682_I2S1_TX_CHL_16 (0x0 << 12) 6860ddce71cSBard Liao #define RT5682_I2S1_TX_CHL_20 (0x1 << 12) 6870ddce71cSBard Liao #define RT5682_I2S1_TX_CHL_24 (0x2 << 12) 6880ddce71cSBard Liao #define RT5682_I2S1_TX_CHL_32 (0x3 << 12) 6890ddce71cSBard Liao #define RT5682_I2S1_TX_CHL_8 (0x4 << 12) 6900ddce71cSBard Liao #define RT5682_I2S1_RX_CHL_MASK (0x7 << 8) 6910ddce71cSBard Liao #define RT5682_I2S1_RX_CHL_SFT 8 6920ddce71cSBard Liao #define RT5682_I2S1_RX_CHL_16 (0x0 << 8) 6930ddce71cSBard Liao #define RT5682_I2S1_RX_CHL_20 (0x1 << 8) 6940ddce71cSBard Liao #define RT5682_I2S1_RX_CHL_24 (0x2 << 8) 6950ddce71cSBard Liao #define RT5682_I2S1_RX_CHL_32 (0x3 << 8) 6960ddce71cSBard Liao #define RT5682_I2S1_RX_CHL_8 (0x4 << 8) 6970ddce71cSBard Liao #define RT5682_I2S1_MONO_MASK (0x1 << 7) 6980ddce71cSBard Liao #define RT5682_I2S1_MONO_EN (0x1 << 7) 6990ddce71cSBard Liao #define RT5682_I2S1_MONO_DIS (0x0 << 7) 7000ddce71cSBard Liao #define RT5682_I2S2_MONO_MASK (0x1 << 6) 7010ddce71cSBard Liao #define RT5682_I2S2_MONO_EN (0x1 << 6) 7020ddce71cSBard Liao #define RT5682_I2S2_MONO_DIS (0x0 << 6) 7030ddce71cSBard Liao #define RT5682_I2S1_DL_MASK (0x7 << 4) 7040ddce71cSBard Liao #define RT5682_I2S1_DL_SFT 4 7050ddce71cSBard Liao #define RT5682_I2S1_DL_16 (0x0 << 4) 7060ddce71cSBard Liao #define RT5682_I2S1_DL_20 (0x1 << 4) 7070ddce71cSBard Liao #define RT5682_I2S1_DL_24 (0x2 << 4) 7080ddce71cSBard Liao #define RT5682_I2S1_DL_32 (0x3 << 4) 7090ddce71cSBard Liao #define RT5682_I2S1_DL_8 (0x4 << 4) 7100ddce71cSBard Liao 7110ddce71cSBard Liao /* I2S1/2 Audio Serial Data Port Control (0x0070)(0x0071) */ 7120ddce71cSBard Liao #define RT5682_I2S2_MS_MASK (0x1 << 15) 7130ddce71cSBard Liao #define RT5682_I2S2_MS_SFT 15 7140ddce71cSBard Liao #define RT5682_I2S2_MS_M (0x0 << 15) 7150ddce71cSBard Liao #define RT5682_I2S2_MS_S (0x1 << 15) 7160ddce71cSBard Liao #define RT5682_I2S2_PIN_CFG_MASK (0x1 << 14) 7170ddce71cSBard Liao #define RT5682_I2S2_PIN_CFG_SFT 14 7180ddce71cSBard Liao #define RT5682_I2S2_CLK_SEL_MASK (0x1 << 11) 7190ddce71cSBard Liao #define RT5682_I2S2_CLK_SEL_SFT 11 7200ddce71cSBard Liao #define RT5682_I2S2_OUT_MASK (0x1 << 9) 7210ddce71cSBard Liao #define RT5682_I2S2_OUT_SFT 9 7220ddce71cSBard Liao #define RT5682_I2S2_OUT_UM (0x0 << 9) 7230ddce71cSBard Liao #define RT5682_I2S2_OUT_M (0x1 << 9) 7240ddce71cSBard Liao #define RT5682_I2S_BP_MASK (0x1 << 8) 7250ddce71cSBard Liao #define RT5682_I2S_BP_SFT 8 7260ddce71cSBard Liao #define RT5682_I2S_BP_NOR (0x0 << 8) 7270ddce71cSBard Liao #define RT5682_I2S_BP_INV (0x1 << 8) 7280ddce71cSBard Liao #define RT5682_I2S2_MONO_EN (0x1 << 6) 7290ddce71cSBard Liao #define RT5682_I2S2_MONO_DIS (0x0 << 6) 7300ddce71cSBard Liao #define RT5682_I2S2_DL_MASK (0x3 << 4) 7310ddce71cSBard Liao #define RT5682_I2S2_DL_SFT 4 7320ddce71cSBard Liao #define RT5682_I2S2_DL_16 (0x0 << 4) 7330ddce71cSBard Liao #define RT5682_I2S2_DL_20 (0x1 << 4) 7340ddce71cSBard Liao #define RT5682_I2S2_DL_24 (0x2 << 4) 7350ddce71cSBard Liao #define RT5682_I2S2_DL_8 (0x3 << 4) 7360ddce71cSBard Liao #define RT5682_I2S_DF_MASK (0x7) 7370ddce71cSBard Liao #define RT5682_I2S_DF_SFT 0 7380ddce71cSBard Liao #define RT5682_I2S_DF_I2S (0x0) 7390ddce71cSBard Liao #define RT5682_I2S_DF_LEFT (0x1) 7400ddce71cSBard Liao #define RT5682_I2S_DF_PCM_A (0x2) 7410ddce71cSBard Liao #define RT5682_I2S_DF_PCM_B (0x3) 7420ddce71cSBard Liao #define RT5682_I2S_DF_PCM_A_N (0x6) 7430ddce71cSBard Liao #define RT5682_I2S_DF_PCM_B_N (0x7) 7440ddce71cSBard Liao 7450ddce71cSBard Liao /* ADC/DAC Clock Control 1 (0x0073) */ 7460ddce71cSBard Liao #define RT5682_ADC_OSR_MASK (0xf << 12) 7470ddce71cSBard Liao #define RT5682_ADC_OSR_SFT 12 7480ddce71cSBard Liao #define RT5682_ADC_OSR_D_1 (0x0 << 12) 7490ddce71cSBard Liao #define RT5682_ADC_OSR_D_2 (0x1 << 12) 7500ddce71cSBard Liao #define RT5682_ADC_OSR_D_4 (0x2 << 12) 7510ddce71cSBard Liao #define RT5682_ADC_OSR_D_6 (0x3 << 12) 7520ddce71cSBard Liao #define RT5682_ADC_OSR_D_8 (0x4 << 12) 7530ddce71cSBard Liao #define RT5682_ADC_OSR_D_12 (0x5 << 12) 7540ddce71cSBard Liao #define RT5682_ADC_OSR_D_16 (0x6 << 12) 7550ddce71cSBard Liao #define RT5682_ADC_OSR_D_24 (0x7 << 12) 7560ddce71cSBard Liao #define RT5682_ADC_OSR_D_32 (0x8 << 12) 7570ddce71cSBard Liao #define RT5682_ADC_OSR_D_48 (0x9 << 12) 7580c48a653Sderek.fang #define RT5682_I2S_M_DIV_MASK (0xf << 8) 7590ddce71cSBard Liao #define RT5682_I2S_M_DIV_SFT 8 7600ddce71cSBard Liao #define RT5682_I2S_M_D_1 (0x0 << 8) 7610ddce71cSBard Liao #define RT5682_I2S_M_D_2 (0x1 << 8) 7620ddce71cSBard Liao #define RT5682_I2S_M_D_3 (0x2 << 8) 7630ddce71cSBard Liao #define RT5682_I2S_M_D_4 (0x3 << 8) 7640ddce71cSBard Liao #define RT5682_I2S_M_D_6 (0x4 << 8) 7650ddce71cSBard Liao #define RT5682_I2S_M_D_8 (0x5 << 8) 7660ddce71cSBard Liao #define RT5682_I2S_M_D_12 (0x6 << 8) 7670ddce71cSBard Liao #define RT5682_I2S_M_D_16 (0x7 << 8) 7680ddce71cSBard Liao #define RT5682_I2S_M_D_24 (0x8 << 8) 7690ddce71cSBard Liao #define RT5682_I2S_M_D_32 (0x9 << 8) 7700ddce71cSBard Liao #define RT5682_I2S_M_D_48 (0x10 << 8) 7710ddce71cSBard Liao #define RT5682_I2S_CLK_SRC_MASK (0x7 << 4) 7720ddce71cSBard Liao #define RT5682_I2S_CLK_SRC_SFT 4 7730ddce71cSBard Liao #define RT5682_I2S_CLK_SRC_MCLK (0x0 << 4) 7740ddce71cSBard Liao #define RT5682_I2S_CLK_SRC_PLL1 (0x1 << 4) 7750ddce71cSBard Liao #define RT5682_I2S_CLK_SRC_PLL2 (0x2 << 4) 7760ddce71cSBard Liao #define RT5682_I2S_CLK_SRC_SDW (0x3 << 4) 7770ddce71cSBard Liao #define RT5682_I2S_CLK_SRC_RCCLK (0x4 << 4) /* 25M */ 7780ddce71cSBard Liao #define RT5682_DAC_OSR_MASK (0xf << 0) 7790ddce71cSBard Liao #define RT5682_DAC_OSR_SFT 0 7800ddce71cSBard Liao #define RT5682_DAC_OSR_D_1 (0x0 << 0) 7810ddce71cSBard Liao #define RT5682_DAC_OSR_D_2 (0x1 << 0) 7820ddce71cSBard Liao #define RT5682_DAC_OSR_D_4 (0x2 << 0) 7830ddce71cSBard Liao #define RT5682_DAC_OSR_D_6 (0x3 << 0) 7840ddce71cSBard Liao #define RT5682_DAC_OSR_D_8 (0x4 << 0) 7850ddce71cSBard Liao #define RT5682_DAC_OSR_D_12 (0x5 << 0) 7860ddce71cSBard Liao #define RT5682_DAC_OSR_D_16 (0x6 << 0) 7870ddce71cSBard Liao #define RT5682_DAC_OSR_D_24 (0x7 << 0) 7880ddce71cSBard Liao #define RT5682_DAC_OSR_D_32 (0x8 << 0) 7890ddce71cSBard Liao #define RT5682_DAC_OSR_D_48 (0x9 << 0) 7900ddce71cSBard Liao 7910ddce71cSBard Liao /* ADC/DAC Clock Control 2 (0x0074) */ 7920ddce71cSBard Liao #define RT5682_I2S2_BCLK_MS2_MASK (0x1 << 11) 7930ddce71cSBard Liao #define RT5682_I2S2_BCLK_MS2_SFT 11 7940ddce71cSBard Liao #define RT5682_I2S2_BCLK_MS2_32 (0x0 << 11) 7950ddce71cSBard Liao #define RT5682_I2S2_BCLK_MS2_64 (0x1 << 11) 7960ddce71cSBard Liao 7970ddce71cSBard Liao 7980ddce71cSBard Liao /* TDM control 1 (0x0079) */ 7990ddce71cSBard Liao #define RT5682_TDM_TX_CH_MASK (0x3 << 12) 8000ddce71cSBard Liao #define RT5682_TDM_TX_CH_2 (0x0 << 12) 8010ddce71cSBard Liao #define RT5682_TDM_TX_CH_4 (0x1 << 12) 8020ddce71cSBard Liao #define RT5682_TDM_TX_CH_6 (0x2 << 12) 8030ddce71cSBard Liao #define RT5682_TDM_TX_CH_8 (0x3 << 12) 8040ddce71cSBard Liao #define RT5682_TDM_RX_CH_MASK (0x3 << 8) 8050ddce71cSBard Liao #define RT5682_TDM_RX_CH_2 (0x0 << 8) 8060ddce71cSBard Liao #define RT5682_TDM_RX_CH_4 (0x1 << 8) 8070ddce71cSBard Liao #define RT5682_TDM_RX_CH_6 (0x2 << 8) 8080ddce71cSBard Liao #define RT5682_TDM_RX_CH_8 (0x3 << 8) 8090ddce71cSBard Liao #define RT5682_TDM_ADC_LCA_MASK (0xf << 4) 8100ddce71cSBard Liao #define RT5682_TDM_ADC_LCA_SFT 4 8110ddce71cSBard Liao #define RT5682_TDM_ADC_DL_SFT 0 8120ddce71cSBard Liao 8130ddce71cSBard Liao /* TDM control 2 (0x007a) */ 8140ddce71cSBard Liao #define RT5682_IF1_ADC1_SEL_SFT 14 8150ddce71cSBard Liao #define RT5682_IF1_ADC2_SEL_SFT 12 8160ddce71cSBard Liao #define RT5682_IF1_ADC3_SEL_SFT 10 8170ddce71cSBard Liao #define RT5682_IF1_ADC4_SEL_SFT 8 8180ddce71cSBard Liao #define RT5682_TDM_ADC_SEL_SFT 4 8190ddce71cSBard Liao 8200ddce71cSBard Liao /* TDM control 3 (0x007b) */ 8210ddce71cSBard Liao #define RT5682_TDM_EN (0x1 << 7) 8220ddce71cSBard Liao 8230ddce71cSBard Liao /* TDM/I2S control (0x007e) */ 8240ddce71cSBard Liao #define RT5682_TDM_S_BP_MASK (0x1 << 15) 8250ddce71cSBard Liao #define RT5682_TDM_S_BP_SFT 15 8260ddce71cSBard Liao #define RT5682_TDM_S_BP_NOR (0x0 << 15) 8270ddce71cSBard Liao #define RT5682_TDM_S_BP_INV (0x1 << 15) 8280ddce71cSBard Liao #define RT5682_TDM_S_LP_MASK (0x1 << 14) 8290ddce71cSBard Liao #define RT5682_TDM_S_LP_SFT 14 8300ddce71cSBard Liao #define RT5682_TDM_S_LP_NOR (0x0 << 14) 8310ddce71cSBard Liao #define RT5682_TDM_S_LP_INV (0x1 << 14) 8320ddce71cSBard Liao #define RT5682_TDM_DF_MASK (0x7 << 11) 8330ddce71cSBard Liao #define RT5682_TDM_DF_SFT 11 8340ddce71cSBard Liao #define RT5682_TDM_DF_I2S (0x0 << 11) 8350ddce71cSBard Liao #define RT5682_TDM_DF_LEFT (0x1 << 11) 8360ddce71cSBard Liao #define RT5682_TDM_DF_PCM_A (0x2 << 11) 8370ddce71cSBard Liao #define RT5682_TDM_DF_PCM_B (0x3 << 11) 8380ddce71cSBard Liao #define RT5682_TDM_DF_PCM_A_N (0x6 << 11) 8390ddce71cSBard Liao #define RT5682_TDM_DF_PCM_B_N (0x7 << 11) 8400c48a653Sderek.fang #define RT5682_TDM_BCLK_MS1_MASK (0x3 << 9) 8410c48a653Sderek.fang #define RT5682_TDM_BCLK_MS1_SFT 9 8420c48a653Sderek.fang #define RT5682_TDM_BCLK_MS1_32 (0x0 << 9) 8430c48a653Sderek.fang #define RT5682_TDM_BCLK_MS1_64 (0x1 << 9) 8440c48a653Sderek.fang #define RT5682_TDM_BCLK_MS1_128 (0x2 << 9) 8450c48a653Sderek.fang #define RT5682_TDM_BCLK_MS1_256 (0x3 << 9) 8460ddce71cSBard Liao #define RT5682_TDM_CL_MASK (0x3 << 4) 8470ddce71cSBard Liao #define RT5682_TDM_CL_16 (0x0 << 4) 8480ddce71cSBard Liao #define RT5682_TDM_CL_20 (0x1 << 4) 8490ddce71cSBard Liao #define RT5682_TDM_CL_24 (0x2 << 4) 8500ddce71cSBard Liao #define RT5682_TDM_CL_32 (0x3 << 4) 8510ddce71cSBard Liao #define RT5682_TDM_M_BP_MASK (0x1 << 2) 8520ddce71cSBard Liao #define RT5682_TDM_M_BP_SFT 2 8530ddce71cSBard Liao #define RT5682_TDM_M_BP_NOR (0x0 << 2) 8540ddce71cSBard Liao #define RT5682_TDM_M_BP_INV (0x1 << 2) 8550ddce71cSBard Liao #define RT5682_TDM_M_LP_MASK (0x1 << 1) 8560ddce71cSBard Liao #define RT5682_TDM_M_LP_SFT 1 8570ddce71cSBard Liao #define RT5682_TDM_M_LP_NOR (0x0 << 1) 8580ddce71cSBard Liao #define RT5682_TDM_M_LP_INV (0x1 << 1) 8590ddce71cSBard Liao #define RT5682_TDM_MS_MASK (0x1 << 0) 8600ddce71cSBard Liao #define RT5682_TDM_MS_SFT 0 861ebbfabc1SDerek Fang #define RT5682_TDM_MS_S (0x0 << 0) 862ebbfabc1SDerek Fang #define RT5682_TDM_MS_M (0x1 << 0) 8630ddce71cSBard Liao 8640ddce71cSBard Liao /* Global Clock Control (0x0080) */ 8650ddce71cSBard Liao #define RT5682_SCLK_SRC_MASK (0x7 << 13) 8660ddce71cSBard Liao #define RT5682_SCLK_SRC_SFT 13 8670ddce71cSBard Liao #define RT5682_SCLK_SRC_MCLK (0x0 << 13) 8680ddce71cSBard Liao #define RT5682_SCLK_SRC_PLL1 (0x1 << 13) 8690ddce71cSBard Liao #define RT5682_SCLK_SRC_PLL2 (0x2 << 13) 8700ddce71cSBard Liao #define RT5682_SCLK_SRC_SDW (0x3 << 13) 8710ddce71cSBard Liao #define RT5682_SCLK_SRC_RCCLK (0x4 << 13) 872ee7ea2a9SShuming Fan #define RT5682_PLL2_SRC_MASK (0x3 << 10) 873ee7ea2a9SShuming Fan #define RT5682_PLL2_SRC_SFT 10 874ee7ea2a9SShuming Fan #define RT5682_PLL2_SRC_MCLK (0x0 << 10) 875ee7ea2a9SShuming Fan #define RT5682_PLL2_SRC_BCLK1 (0x1 << 10) 876ee7ea2a9SShuming Fan #define RT5682_PLL2_SRC_SDW (0x2 << 10) 877ee7ea2a9SShuming Fan #define RT5682_PLL2_SRC_RC (0x3 << 10) 878ee7ea2a9SShuming Fan #define RT5682_PLL1_SRC_MASK (0x3 << 8) 879ee7ea2a9SShuming Fan #define RT5682_PLL1_SRC_SFT 8 880ee7ea2a9SShuming Fan #define RT5682_PLL1_SRC_MCLK (0x0 << 8) 881ee7ea2a9SShuming Fan #define RT5682_PLL1_SRC_BCLK1 (0x1 << 8) 882ee7ea2a9SShuming Fan #define RT5682_PLL1_SRC_SDW (0x2 << 8) 883ee7ea2a9SShuming Fan #define RT5682_PLL1_SRC_RC (0x3 << 8) 8840ddce71cSBard Liao 8850ddce71cSBard Liao 8860ddce71cSBard Liao 8870ddce71cSBard Liao #define RT5682_PLL_INP_MAX 40000000 8880ddce71cSBard Liao #define RT5682_PLL_INP_MIN 256000 8890ddce71cSBard Liao /* PLL M/N/K Code Control 1 (0x0081) */ 8900ddce71cSBard Liao #define RT5682_PLL_N_MAX 0x001ff 8910ddce71cSBard Liao #define RT5682_PLL_N_MASK (RT5682_PLL_N_MAX << 7) 8920ddce71cSBard Liao #define RT5682_PLL_N_SFT 7 8930ddce71cSBard Liao #define RT5682_PLL_K_MAX 0x001f 8940ddce71cSBard Liao #define RT5682_PLL_K_MASK (RT5682_PLL_K_MAX) 8950ddce71cSBard Liao #define RT5682_PLL_K_SFT 0 8960ddce71cSBard Liao 8970ddce71cSBard Liao /* PLL M/N/K Code Control 2 (0x0082) */ 8980ddce71cSBard Liao #define RT5682_PLL_M_MAX 0x00f 8990ddce71cSBard Liao #define RT5682_PLL_M_MASK (RT5682_PLL_M_MAX << 12) 9000ddce71cSBard Liao #define RT5682_PLL_M_SFT 12 9010ddce71cSBard Liao #define RT5682_PLL_M_BP (0x1 << 11) 9020ddce71cSBard Liao #define RT5682_PLL_M_BP_SFT 11 9030ddce71cSBard Liao #define RT5682_PLL_K_BP (0x1 << 10) 9040ddce71cSBard Liao #define RT5682_PLL_K_BP_SFT 10 9050ddce71cSBard Liao #define RT5682_PLL_RST (0x1 << 1) 9060ddce71cSBard Liao 9070ddce71cSBard Liao /* PLL tracking mode 1 (0x0083) */ 9080ddce71cSBard Liao #define RT5682_DA_ASRC_MASK (0x1 << 13) 9090ddce71cSBard Liao #define RT5682_DA_ASRC_SFT 13 9100ddce71cSBard Liao #define RT5682_DAC_STO1_ASRC_MASK (0x1 << 12) 9110ddce71cSBard Liao #define RT5682_DAC_STO1_ASRC_SFT 12 9120ddce71cSBard Liao #define RT5682_AD_ASRC_MASK (0x1 << 8) 9130ddce71cSBard Liao #define RT5682_AD_ASRC_SFT 8 9140ddce71cSBard Liao #define RT5682_AD_ASRC_SEL_MASK (0x1 << 4) 9150ddce71cSBard Liao #define RT5682_AD_ASRC_SEL_SFT 4 9160ddce71cSBard Liao #define RT5682_DMIC_ASRC_MASK (0x1 << 3) 9170ddce71cSBard Liao #define RT5682_DMIC_ASRC_SFT 3 9180ddce71cSBard Liao #define RT5682_ADC_STO1_ASRC_MASK (0x1 << 2) 9190ddce71cSBard Liao #define RT5682_ADC_STO1_ASRC_SFT 2 9200ddce71cSBard Liao #define RT5682_DA_ASRC_SEL_MASK (0x1 << 0) 9210ddce71cSBard Liao #define RT5682_DA_ASRC_SEL_SFT 0 9220ddce71cSBard Liao 9230ddce71cSBard Liao /* PLL tracking mode 2 3 (0x0084)(0x0085)*/ 9240ddce71cSBard Liao #define RT5682_FILTER_CLK_SEL_MASK (0x7 << 12) 9250ddce71cSBard Liao #define RT5682_FILTER_CLK_SEL_SFT 12 9260ddce71cSBard Liao #define RT5682_FILTER_CLK_DIV_MASK (0xf << 8) 9270ddce71cSBard Liao #define RT5682_FILTER_CLK_DIV_SFT 8 9280ddce71cSBard Liao 9290ddce71cSBard Liao /* ASRC Control 4 (0x0086) */ 9300ddce71cSBard Liao #define RT5682_ASRCIN_FTK_N1_MASK (0x3 << 14) 9310ddce71cSBard Liao #define RT5682_ASRCIN_FTK_N1_SFT 14 9320ddce71cSBard Liao #define RT5682_ASRCIN_FTK_N2_MASK (0x3 << 12) 9330ddce71cSBard Liao #define RT5682_ASRCIN_FTK_N2_SFT 12 9340ddce71cSBard Liao #define RT5682_ASRCIN_FTK_M1_MASK (0x7 << 8) 9350ddce71cSBard Liao #define RT5682_ASRCIN_FTK_M1_SFT 8 9360ddce71cSBard Liao #define RT5682_ASRCIN_FTK_M2_MASK (0x7 << 4) 9370ddce71cSBard Liao #define RT5682_ASRCIN_FTK_M2_SFT 4 9380ddce71cSBard Liao 9390ddce71cSBard Liao /* SoundWire reference clk (0x008d) */ 9400ddce71cSBard Liao #define RT5682_PLL2_OUT_MASK (0x1 << 8) 9410ddce71cSBard Liao #define RT5682_PLL2_OUT_98M (0x0 << 8) 9420ddce71cSBard Liao #define RT5682_PLL2_OUT_49M (0x1 << 8) 9430ddce71cSBard Liao #define RT5682_SDW_REF_2_MASK (0xf << 4) 9440ddce71cSBard Liao #define RT5682_SDW_REF_2_SFT 4 9450ddce71cSBard Liao #define RT5682_SDW_REF_2_48K (0x0 << 4) 9460ddce71cSBard Liao #define RT5682_SDW_REF_2_96K (0x1 << 4) 9470ddce71cSBard Liao #define RT5682_SDW_REF_2_192K (0x2 << 4) 9480ddce71cSBard Liao #define RT5682_SDW_REF_2_32K (0x3 << 4) 9490ddce71cSBard Liao #define RT5682_SDW_REF_2_24K (0x4 << 4) 9500ddce71cSBard Liao #define RT5682_SDW_REF_2_16K (0x5 << 4) 9510ddce71cSBard Liao #define RT5682_SDW_REF_2_12K (0x6 << 4) 9520ddce71cSBard Liao #define RT5682_SDW_REF_2_8K (0x7 << 4) 9530ddce71cSBard Liao #define RT5682_SDW_REF_2_44K (0x8 << 4) 9540ddce71cSBard Liao #define RT5682_SDW_REF_2_88K (0x9 << 4) 9550ddce71cSBard Liao #define RT5682_SDW_REF_2_176K (0xa << 4) 9560ddce71cSBard Liao #define RT5682_SDW_REF_2_353K (0xb << 4) 9570ddce71cSBard Liao #define RT5682_SDW_REF_2_22K (0xc << 4) 9580ddce71cSBard Liao #define RT5682_SDW_REF_2_384K (0xd << 4) 9590ddce71cSBard Liao #define RT5682_SDW_REF_2_11K (0xe << 4) 9600ddce71cSBard Liao #define RT5682_SDW_REF_1_MASK (0xf << 0) 9610ddce71cSBard Liao #define RT5682_SDW_REF_1_SFT 0 9620ddce71cSBard Liao #define RT5682_SDW_REF_1_48K (0x0 << 0) 9630ddce71cSBard Liao #define RT5682_SDW_REF_1_96K (0x1 << 0) 9640ddce71cSBard Liao #define RT5682_SDW_REF_1_192K (0x2 << 0) 9650ddce71cSBard Liao #define RT5682_SDW_REF_1_32K (0x3 << 0) 9660ddce71cSBard Liao #define RT5682_SDW_REF_1_24K (0x4 << 0) 9670ddce71cSBard Liao #define RT5682_SDW_REF_1_16K (0x5 << 0) 9680ddce71cSBard Liao #define RT5682_SDW_REF_1_12K (0x6 << 0) 9690ddce71cSBard Liao #define RT5682_SDW_REF_1_8K (0x7 << 0) 9700ddce71cSBard Liao #define RT5682_SDW_REF_1_44K (0x8 << 0) 9710ddce71cSBard Liao #define RT5682_SDW_REF_1_88K (0x9 << 0) 9720ddce71cSBard Liao #define RT5682_SDW_REF_1_176K (0xa << 0) 9730ddce71cSBard Liao #define RT5682_SDW_REF_1_353K (0xb << 0) 9740ddce71cSBard Liao #define RT5682_SDW_REF_1_22K (0xc << 0) 9750ddce71cSBard Liao #define RT5682_SDW_REF_1_384K (0xd << 0) 9760ddce71cSBard Liao #define RT5682_SDW_REF_1_11K (0xe << 0) 9770ddce71cSBard Liao 9780ddce71cSBard Liao /* Depop Mode Control 1 (0x008e) */ 9790ddce71cSBard Liao #define RT5682_PUMP_EN (0x1 << 3) 9800ddce71cSBard Liao #define RT5682_PUMP_EN_SFT 3 9810ddce71cSBard Liao #define RT5682_CAPLESS_EN (0x1 << 0) 9820ddce71cSBard Liao #define RT5682_CAPLESS_EN_SFT 0 9830ddce71cSBard Liao 9840ddce71cSBard Liao /* Depop Mode Control 2 (0x8f) */ 9850ddce71cSBard Liao #define RT5682_RAMP_MASK (0x1 << 12) 9860ddce71cSBard Liao #define RT5682_RAMP_SFT 12 9870ddce71cSBard Liao #define RT5682_RAMP_DIS (0x0 << 12) 9880ddce71cSBard Liao #define RT5682_RAMP_EN (0x1 << 12) 9890ddce71cSBard Liao #define RT5682_BPS_MASK (0x1 << 11) 9900ddce71cSBard Liao #define RT5682_BPS_SFT 11 9910ddce71cSBard Liao #define RT5682_BPS_DIS (0x0 << 11) 9920ddce71cSBard Liao #define RT5682_BPS_EN (0x1 << 11) 9930ddce71cSBard Liao #define RT5682_FAST_UPDN_MASK (0x1 << 10) 9940ddce71cSBard Liao #define RT5682_FAST_UPDN_SFT 10 9950ddce71cSBard Liao #define RT5682_FAST_UPDN_DIS (0x0 << 10) 9960ddce71cSBard Liao #define RT5682_FAST_UPDN_EN (0x1 << 10) 9970ddce71cSBard Liao #define RT5682_VLO_MASK (0x1 << 7) 9980ddce71cSBard Liao #define RT5682_VLO_SFT 7 9990ddce71cSBard Liao #define RT5682_VLO_3V (0x0 << 7) 10000ddce71cSBard Liao #define RT5682_VLO_33V (0x1 << 7) 10010ddce71cSBard Liao 10020ddce71cSBard Liao /* HPOUT charge pump 1 (0x0091) */ 10030ddce71cSBard Liao #define RT5682_OSW_L_MASK (0x1 << 11) 10040ddce71cSBard Liao #define RT5682_OSW_L_SFT 11 10050ddce71cSBard Liao #define RT5682_OSW_L_DIS (0x0 << 11) 10060ddce71cSBard Liao #define RT5682_OSW_L_EN (0x1 << 11) 10070ddce71cSBard Liao #define RT5682_OSW_R_MASK (0x1 << 10) 10080ddce71cSBard Liao #define RT5682_OSW_R_SFT 10 10090ddce71cSBard Liao #define RT5682_OSW_R_DIS (0x0 << 10) 10100ddce71cSBard Liao #define RT5682_OSW_R_EN (0x1 << 10) 10110ddce71cSBard Liao #define RT5682_PM_HP_MASK (0x3 << 8) 10120ddce71cSBard Liao #define RT5682_PM_HP_SFT 8 10130ddce71cSBard Liao #define RT5682_PM_HP_LV (0x0 << 8) 10140ddce71cSBard Liao #define RT5682_PM_HP_MV (0x1 << 8) 10150ddce71cSBard Liao #define RT5682_PM_HP_HV (0x2 << 8) 10160ddce71cSBard Liao #define RT5682_IB_HP_MASK (0x3 << 6) 10170ddce71cSBard Liao #define RT5682_IB_HP_SFT 6 10180ddce71cSBard Liao #define RT5682_IB_HP_125IL (0x0 << 6) 10190ddce71cSBard Liao #define RT5682_IB_HP_25IL (0x1 << 6) 10200ddce71cSBard Liao #define RT5682_IB_HP_5IL (0x2 << 6) 10210ddce71cSBard Liao #define RT5682_IB_HP_1IL (0x3 << 6) 10220ddce71cSBard Liao 10230ddce71cSBard Liao /* Micbias Control1 (0x93) */ 10240ddce71cSBard Liao #define RT5682_MIC1_OV_MASK (0x3 << 14) 10250ddce71cSBard Liao #define RT5682_MIC1_OV_SFT 14 10260ddce71cSBard Liao #define RT5682_MIC1_OV_2V7 (0x0 << 14) 10270ddce71cSBard Liao #define RT5682_MIC1_OV_2V4 (0x1 << 14) 10280ddce71cSBard Liao #define RT5682_MIC1_OV_2V25 (0x3 << 14) 10290ddce71cSBard Liao #define RT5682_MIC1_OV_1V8 (0x4 << 14) 10300ddce71cSBard Liao #define RT5682_MIC1_CLK_MASK (0x1 << 13) 10310ddce71cSBard Liao #define RT5682_MIC1_CLK_SFT 13 10320ddce71cSBard Liao #define RT5682_MIC1_CLK_DIS (0x0 << 13) 10330ddce71cSBard Liao #define RT5682_MIC1_CLK_EN (0x1 << 13) 10340ddce71cSBard Liao #define RT5682_MIC1_OVCD_MASK (0x1 << 12) 10350ddce71cSBard Liao #define RT5682_MIC1_OVCD_SFT 12 10360ddce71cSBard Liao #define RT5682_MIC1_OVCD_DIS (0x0 << 12) 10370ddce71cSBard Liao #define RT5682_MIC1_OVCD_EN (0x1 << 12) 10380ddce71cSBard Liao #define RT5682_MIC1_OVTH_MASK (0x3 << 10) 10390ddce71cSBard Liao #define RT5682_MIC1_OVTH_SFT 10 10400ddce71cSBard Liao #define RT5682_MIC1_OVTH_768UA (0x0 << 10) 10410ddce71cSBard Liao #define RT5682_MIC1_OVTH_960UA (0x1 << 10) 10420ddce71cSBard Liao #define RT5682_MIC1_OVTH_1152UA (0x2 << 10) 10430ddce71cSBard Liao #define RT5682_MIC1_OVTH_1960UA (0x3 << 10) 10440ddce71cSBard Liao #define RT5682_MIC2_OV_MASK (0x3 << 8) 10450ddce71cSBard Liao #define RT5682_MIC2_OV_SFT 8 10460ddce71cSBard Liao #define RT5682_MIC2_OV_2V7 (0x0 << 8) 10470ddce71cSBard Liao #define RT5682_MIC2_OV_2V4 (0x1 << 8) 10480ddce71cSBard Liao #define RT5682_MIC2_OV_2V25 (0x3 << 8) 10490ddce71cSBard Liao #define RT5682_MIC2_OV_1V8 (0x4 << 8) 10500ddce71cSBard Liao #define RT5682_MIC2_CLK_MASK (0x1 << 7) 10510ddce71cSBard Liao #define RT5682_MIC2_CLK_SFT 7 10520ddce71cSBard Liao #define RT5682_MIC2_CLK_DIS (0x0 << 7) 10530ddce71cSBard Liao #define RT5682_MIC2_CLK_EN (0x1 << 7) 10540ddce71cSBard Liao #define RT5682_MIC2_OVTH_MASK (0x3 << 4) 10550ddce71cSBard Liao #define RT5682_MIC2_OVTH_SFT 4 10560ddce71cSBard Liao #define RT5682_MIC2_OVTH_768UA (0x0 << 4) 10570ddce71cSBard Liao #define RT5682_MIC2_OVTH_960UA (0x1 << 4) 10580ddce71cSBard Liao #define RT5682_MIC2_OVTH_1152UA (0x2 << 4) 10590ddce71cSBard Liao #define RT5682_MIC2_OVTH_1960UA (0x3 << 4) 10600ddce71cSBard Liao #define RT5682_PWR_MB_MASK (0x1 << 3) 10610ddce71cSBard Liao #define RT5682_PWR_MB_SFT 3 10620ddce71cSBard Liao #define RT5682_PWR_MB_PD (0x0 << 3) 10630ddce71cSBard Liao #define RT5682_PWR_MB_PU (0x1 << 3) 10640ddce71cSBard Liao 10650ddce71cSBard Liao /* Micbias Control2 (0x0094) */ 10660ddce71cSBard Liao #define RT5682_PWR_CLK25M_MASK (0x1 << 9) 10670ddce71cSBard Liao #define RT5682_PWR_CLK25M_SFT 9 10680ddce71cSBard Liao #define RT5682_PWR_CLK25M_PD (0x0 << 9) 10690ddce71cSBard Liao #define RT5682_PWR_CLK25M_PU (0x1 << 9) 10700ddce71cSBard Liao #define RT5682_PWR_CLK1M_MASK (0x1 << 8) 10710ddce71cSBard Liao #define RT5682_PWR_CLK1M_SFT 8 10720ddce71cSBard Liao #define RT5682_PWR_CLK1M_PD (0x0 << 8) 10730ddce71cSBard Liao #define RT5682_PWR_CLK1M_PU (0x1 << 8) 10740ddce71cSBard Liao 10750c48a653Sderek.fang /* PLL2 M/N/K Code Control 1 (0x009b) */ 10760c48a653Sderek.fang #define RT5682_PLL2F_K_MASK (0x1f << 8) 10770c48a653Sderek.fang #define RT5682_PLL2F_K_SFT 8 10780c48a653Sderek.fang #define RT5682_PLL2B_K_MASK (0xf << 4) 10790c48a653Sderek.fang #define RT5682_PLL2B_K_SFT 4 10800c48a653Sderek.fang #define RT5682_PLL2B_M_MASK (0xf << 0) 10810c48a653Sderek.fang 10820c48a653Sderek.fang /* PLL2 M/N/K Code Control 2 (0x009c) */ 10830c48a653Sderek.fang #define RT5682_PLL2F_M_MASK (0x3f << 8) 10840c48a653Sderek.fang #define RT5682_PLL2F_M_SFT 8 10850c48a653Sderek.fang #define RT5682_PLL2B_N_MASK (0x3f << 0) 10860c48a653Sderek.fang 10870c48a653Sderek.fang /* PLL2 M/N/K Code Control 2 (0x009d) */ 10880c48a653Sderek.fang #define RT5682_PLL2F_N_MASK (0x7f << 8) 10890c48a653Sderek.fang #define RT5682_PLL2F_N_SFT 8 10900c48a653Sderek.fang 10910c48a653Sderek.fang /* PLL2 M/N/K Code Control 2 (0x009e) */ 1092d54348fbSderek.fang #define RT5682_PLL2B_SEL_PS_MASK (0x1 << 13) 1093d54348fbSderek.fang #define RT5682_PLL2B_SEL_PS_SFT 13 1094d54348fbSderek.fang #define RT5682_PLL2B_PS_BYP_MASK (0x1 << 12) 1095d54348fbSderek.fang #define RT5682_PLL2B_PS_BYP_SFT 12 10960c48a653Sderek.fang #define RT5682_PLL2B_M_BP_MASK (0x1 << 11) 10970c48a653Sderek.fang #define RT5682_PLL2B_M_BP_SFT 11 10980c48a653Sderek.fang #define RT5682_PLL2F_M_BP_MASK (0x1 << 7) 10990c48a653Sderek.fang #define RT5682_PLL2F_M_BP_SFT 7 11000c48a653Sderek.fang 11010ddce71cSBard Liao /* RC Clock Control (0x009f) */ 11020ddce71cSBard Liao #define RT5682_POW_IRQ (0x1 << 15) 11030ddce71cSBard Liao #define RT5682_POW_JDH (0x1 << 14) 11040ddce71cSBard Liao #define RT5682_POW_JDL (0x1 << 13) 11050ddce71cSBard Liao #define RT5682_POW_ANA (0x1 << 12) 11060ddce71cSBard Liao 11070ddce71cSBard Liao /* I2S Master Mode Clock Control 1 (0x00a0) */ 11080ddce71cSBard Liao #define RT5682_CLK_SRC_MCLK (0x0) 11090ddce71cSBard Liao #define RT5682_CLK_SRC_PLL1 (0x1) 11100ddce71cSBard Liao #define RT5682_CLK_SRC_PLL2 (0x2) 11110ddce71cSBard Liao #define RT5682_CLK_SRC_SDW (0x3) 11120ddce71cSBard Liao #define RT5682_CLK_SRC_RCCLK (0x4) 11130ddce71cSBard Liao #define RT5682_I2S_PD_1 (0x0) 11140ddce71cSBard Liao #define RT5682_I2S_PD_2 (0x1) 11150ddce71cSBard Liao #define RT5682_I2S_PD_3 (0x2) 11160ddce71cSBard Liao #define RT5682_I2S_PD_4 (0x3) 11170ddce71cSBard Liao #define RT5682_I2S_PD_6 (0x4) 11180ddce71cSBard Liao #define RT5682_I2S_PD_8 (0x5) 11190ddce71cSBard Liao #define RT5682_I2S_PD_12 (0x6) 11200ddce71cSBard Liao #define RT5682_I2S_PD_16 (0x7) 11210ddce71cSBard Liao #define RT5682_I2S_PD_24 (0x8) 11220ddce71cSBard Liao #define RT5682_I2S_PD_32 (0x9) 11230ddce71cSBard Liao #define RT5682_I2S_PD_48 (0xa) 11240ddce71cSBard Liao #define RT5682_I2S2_SRC_MASK (0x3 << 4) 11250ddce71cSBard Liao #define RT5682_I2S2_SRC_SFT 4 11260ddce71cSBard Liao #define RT5682_I2S2_M_PD_MASK (0xf << 0) 11270ddce71cSBard Liao #define RT5682_I2S2_M_PD_SFT 0 11280ddce71cSBard Liao 11290ddce71cSBard Liao /* IRQ Control 1 (0x00b6) */ 11300ddce71cSBard Liao #define RT5682_JD1_PULSE_EN_MASK (0x1 << 10) 11310ddce71cSBard Liao #define RT5682_JD1_PULSE_EN_SFT 10 11320ddce71cSBard Liao #define RT5682_JD1_PULSE_DIS (0x0 << 10) 11330ddce71cSBard Liao #define RT5682_JD1_PULSE_EN (0x1 << 10) 11340ddce71cSBard Liao 11350ddce71cSBard Liao /* IRQ Control 2 (0x00b7) */ 11360ddce71cSBard Liao #define RT5682_JD1_EN_MASK (0x1 << 15) 11370ddce71cSBard Liao #define RT5682_JD1_EN_SFT 15 11380ddce71cSBard Liao #define RT5682_JD1_DIS (0x0 << 15) 11390ddce71cSBard Liao #define RT5682_JD1_EN (0x1 << 15) 11400ddce71cSBard Liao #define RT5682_JD1_POL_MASK (0x1 << 13) 11410ddce71cSBard Liao #define RT5682_JD1_POL_NOR (0x0 << 13) 11420ddce71cSBard Liao #define RT5682_JD1_POL_INV (0x1 << 13) 1143b5848c81SOder Chiou #define RT5682_JD1_IRQ_MASK (0x1 << 10) 1144b5848c81SOder Chiou #define RT5682_JD1_IRQ_LEV (0x0 << 10) 1145b5848c81SOder Chiou #define RT5682_JD1_IRQ_PUL (0x1 << 10) 11460ddce71cSBard Liao 11470ddce71cSBard Liao /* IRQ Control 3 (0x00b8) */ 11480ddce71cSBard Liao #define RT5682_IL_IRQ_MASK (0x1 << 7) 11490ddce71cSBard Liao #define RT5682_IL_IRQ_DIS (0x0 << 7) 11500ddce71cSBard Liao #define RT5682_IL_IRQ_EN (0x1 << 7) 1151b5848c81SOder Chiou #define RT5682_IL_IRQ_TYPE_MASK (0x1 << 4) 1152b5848c81SOder Chiou #define RT5682_IL_IRQ_LEV (0x0 << 4) 1153b5848c81SOder Chiou #define RT5682_IL_IRQ_PUL (0x1 << 4) 11540ddce71cSBard Liao 11550ddce71cSBard Liao /* GPIO Control 1 (0x00c0) */ 11560ddce71cSBard Liao #define RT5682_GP1_PIN_MASK (0x3 << 14) 11570ddce71cSBard Liao #define RT5682_GP1_PIN_SFT 14 11580ddce71cSBard Liao #define RT5682_GP1_PIN_GPIO1 (0x0 << 14) 11590ddce71cSBard Liao #define RT5682_GP1_PIN_IRQ (0x1 << 14) 11600ddce71cSBard Liao #define RT5682_GP1_PIN_DMIC_CLK (0x2 << 14) 11610ddce71cSBard Liao #define RT5682_GP2_PIN_MASK (0x3 << 12) 11620ddce71cSBard Liao #define RT5682_GP2_PIN_SFT 12 11630ddce71cSBard Liao #define RT5682_GP2_PIN_GPIO2 (0x0 << 12) 11640ddce71cSBard Liao #define RT5682_GP2_PIN_LRCK2 (0x1 << 12) 11650ddce71cSBard Liao #define RT5682_GP2_PIN_DMIC_SDA (0x2 << 12) 11660ddce71cSBard Liao #define RT5682_GP3_PIN_MASK (0x3 << 10) 11670ddce71cSBard Liao #define RT5682_GP3_PIN_SFT 10 11680ddce71cSBard Liao #define RT5682_GP3_PIN_GPIO3 (0x0 << 10) 11690ddce71cSBard Liao #define RT5682_GP3_PIN_BCLK2 (0x1 << 10) 11700ddce71cSBard Liao #define RT5682_GP3_PIN_DMIC_CLK (0x2 << 10) 11710ddce71cSBard Liao #define RT5682_GP4_PIN_MASK (0x3 << 8) 11720ddce71cSBard Liao #define RT5682_GP4_PIN_SFT 8 11730ddce71cSBard Liao #define RT5682_GP4_PIN_GPIO4 (0x0 << 8) 11740ddce71cSBard Liao #define RT5682_GP4_PIN_ADCDAT1 (0x1 << 8) 11750ddce71cSBard Liao #define RT5682_GP4_PIN_DMIC_CLK (0x2 << 8) 11760ddce71cSBard Liao #define RT5682_GP4_PIN_ADCDAT2 (0x3 << 8) 11770ddce71cSBard Liao #define RT5682_GP5_PIN_MASK (0x3 << 6) 11780ddce71cSBard Liao #define RT5682_GP5_PIN_SFT 6 11790ddce71cSBard Liao #define RT5682_GP5_PIN_GPIO5 (0x0 << 6) 11800ddce71cSBard Liao #define RT5682_GP5_PIN_DACDAT1 (0x1 << 6) 11810ddce71cSBard Liao #define RT5682_GP5_PIN_DMIC_SDA (0x2 << 6) 11820ddce71cSBard Liao #define RT5682_GP6_PIN_MASK (0x1 << 5) 11830ddce71cSBard Liao #define RT5682_GP6_PIN_SFT 5 11840ddce71cSBard Liao #define RT5682_GP6_PIN_GPIO6 (0x0 << 5) 11850ddce71cSBard Liao #define RT5682_GP6_PIN_LRCK1 (0x1 << 5) 11860ddce71cSBard Liao 11870ddce71cSBard Liao /* GPIO Control 2 (0x00c1)*/ 11880ddce71cSBard Liao #define RT5682_GP1_PF_MASK (0x1 << 15) 11890ddce71cSBard Liao #define RT5682_GP1_PF_IN (0x0 << 15) 11900ddce71cSBard Liao #define RT5682_GP1_PF_OUT (0x1 << 15) 11910ddce71cSBard Liao #define RT5682_GP1_OUT_MASK (0x1 << 14) 11920ddce71cSBard Liao #define RT5682_GP1_OUT_L (0x0 << 14) 11930ddce71cSBard Liao #define RT5682_GP1_OUT_H (0x1 << 14) 11940ddce71cSBard Liao #define RT5682_GP2_PF_MASK (0x1 << 13) 11950ddce71cSBard Liao #define RT5682_GP2_PF_IN (0x0 << 13) 11960ddce71cSBard Liao #define RT5682_GP2_PF_OUT (0x1 << 13) 11970ddce71cSBard Liao #define RT5682_GP2_OUT_MASK (0x1 << 12) 11980ddce71cSBard Liao #define RT5682_GP2_OUT_L (0x0 << 12) 11990ddce71cSBard Liao #define RT5682_GP2_OUT_H (0x1 << 12) 12000ddce71cSBard Liao #define RT5682_GP3_PF_MASK (0x1 << 11) 12010ddce71cSBard Liao #define RT5682_GP3_PF_IN (0x0 << 11) 12020ddce71cSBard Liao #define RT5682_GP3_PF_OUT (0x1 << 11) 12030ddce71cSBard Liao #define RT5682_GP3_OUT_MASK (0x1 << 10) 12040ddce71cSBard Liao #define RT5682_GP3_OUT_L (0x0 << 10) 12050ddce71cSBard Liao #define RT5682_GP3_OUT_H (0x1 << 10) 12060ddce71cSBard Liao #define RT5682_GP4_PF_MASK (0x1 << 9) 12070ddce71cSBard Liao #define RT5682_GP4_PF_IN (0x0 << 9) 12080ddce71cSBard Liao #define RT5682_GP4_PF_OUT (0x1 << 9) 12090ddce71cSBard Liao #define RT5682_GP4_OUT_MASK (0x1 << 8) 12100ddce71cSBard Liao #define RT5682_GP4_OUT_L (0x0 << 8) 12110ddce71cSBard Liao #define RT5682_GP4_OUT_H (0x1 << 8) 12120ddce71cSBard Liao #define RT5682_GP5_PF_MASK (0x1 << 7) 12130ddce71cSBard Liao #define RT5682_GP5_PF_IN (0x0 << 7) 12140ddce71cSBard Liao #define RT5682_GP5_PF_OUT (0x1 << 7) 12150ddce71cSBard Liao #define RT5682_GP5_OUT_MASK (0x1 << 6) 12160ddce71cSBard Liao #define RT5682_GP5_OUT_L (0x0 << 6) 12170ddce71cSBard Liao #define RT5682_GP5_OUT_H (0x1 << 6) 12180ddce71cSBard Liao #define RT5682_GP6_PF_MASK (0x1 << 5) 12190ddce71cSBard Liao #define RT5682_GP6_PF_IN (0x0 << 5) 12200ddce71cSBard Liao #define RT5682_GP6_PF_OUT (0x1 << 5) 12210ddce71cSBard Liao #define RT5682_GP6_OUT_MASK (0x1 << 4) 12220ddce71cSBard Liao #define RT5682_GP6_OUT_L (0x0 << 4) 12230ddce71cSBard Liao #define RT5682_GP6_OUT_H (0x1 << 4) 12240ddce71cSBard Liao 12250ddce71cSBard Liao 12260ddce71cSBard Liao /* GPIO Status (0x00c2) */ 12270ddce71cSBard Liao #define RT5682_GP6_STA (0x1 << 6) 12280ddce71cSBard Liao #define RT5682_GP5_STA (0x1 << 5) 12290ddce71cSBard Liao #define RT5682_GP4_STA (0x1 << 4) 12300ddce71cSBard Liao #define RT5682_GP3_STA (0x1 << 3) 12310ddce71cSBard Liao #define RT5682_GP2_STA (0x1 << 2) 12320ddce71cSBard Liao #define RT5682_GP1_STA (0x1 << 1) 12330ddce71cSBard Liao 12340ddce71cSBard Liao /* Soft volume and zero cross control 1 (0x00d9) */ 12350ddce71cSBard Liao #define RT5682_SV_MASK (0x1 << 15) 12360ddce71cSBard Liao #define RT5682_SV_SFT 15 12370ddce71cSBard Liao #define RT5682_SV_DIS (0x0 << 15) 12380ddce71cSBard Liao #define RT5682_SV_EN (0x1 << 15) 12390ddce71cSBard Liao #define RT5682_ZCD_MASK (0x1 << 10) 12400ddce71cSBard Liao #define RT5682_ZCD_SFT 10 12410ddce71cSBard Liao #define RT5682_ZCD_PD (0x0 << 10) 12420ddce71cSBard Liao #define RT5682_ZCD_PU (0x1 << 10) 12430ddce71cSBard Liao #define RT5682_SV_DLY_MASK (0xf) 12440ddce71cSBard Liao #define RT5682_SV_DLY_SFT 0 12450ddce71cSBard Liao 12460ddce71cSBard Liao /* Soft volume and zero cross control 2 (0x00da) */ 12470ddce71cSBard Liao #define RT5682_ZCD_BST1_CBJ_MASK (0x1 << 7) 12480ddce71cSBard Liao #define RT5682_ZCD_BST1_CBJ_SFT 7 12490ddce71cSBard Liao #define RT5682_ZCD_BST1_CBJ_DIS (0x0 << 7) 12500ddce71cSBard Liao #define RT5682_ZCD_BST1_CBJ_EN (0x1 << 7) 12510ddce71cSBard Liao #define RT5682_ZCD_RECMIX_MASK (0x1) 12520ddce71cSBard Liao #define RT5682_ZCD_RECMIX_SFT 0 12530ddce71cSBard Liao #define RT5682_ZCD_RECMIX_DIS (0x0) 12540ddce71cSBard Liao #define RT5682_ZCD_RECMIX_EN (0x1) 12550ddce71cSBard Liao 12560ddce71cSBard Liao /* 4 Button Inline Command Control 2 (0x00e3) */ 12570ddce71cSBard Liao #define RT5682_4BTN_IL_MASK (0x1 << 15) 12580ddce71cSBard Liao #define RT5682_4BTN_IL_EN (0x1 << 15) 12590ddce71cSBard Liao #define RT5682_4BTN_IL_DIS (0x0 << 15) 12600ddce71cSBard Liao #define RT5682_4BTN_IL_RST_MASK (0x1 << 14) 12610ddce71cSBard Liao #define RT5682_4BTN_IL_NOR (0x1 << 14) 12620ddce71cSBard Liao #define RT5682_4BTN_IL_RST (0x0 << 14) 12630ddce71cSBard Liao 12640ddce71cSBard Liao /* Analog JD Control (0x00f0) */ 12650ddce71cSBard Liao #define RT5682_JDH_RS_MASK (0x1 << 4) 12660ddce71cSBard Liao #define RT5682_JDH_NO_PLUG (0x1 << 4) 12670ddce71cSBard Liao #define RT5682_JDH_PLUG (0x0 << 4) 12680ddce71cSBard Liao 1269bf0fa00fSShuming Fan /* Bias current control 8 (0x0111) */ 1270bf0fa00fSShuming Fan #define RT5682_HPA_CP_BIAS_CTRL_MASK (0x3 << 2) 1271bf0fa00fSShuming Fan #define RT5682_HPA_CP_BIAS_2UA (0x0 << 2) 1272bf0fa00fSShuming Fan #define RT5682_HPA_CP_BIAS_3UA (0x1 << 2) 1273bf0fa00fSShuming Fan #define RT5682_HPA_CP_BIAS_4UA (0x2 << 2) 1274bf0fa00fSShuming Fan #define RT5682_HPA_CP_BIAS_6UA (0x3 << 2) 1275bf0fa00fSShuming Fan 1276bf0fa00fSShuming Fan /* Charge Pump Internal Register1 (0x0125) */ 12774b19e4a7SDerek Fang #define RT5682_CP_SW_SIZE_MASK (0x7 << 8) 12784b19e4a7SDerek Fang #define RT5682_CP_SW_SIZE_L (0x4 << 8) 12794b19e4a7SDerek Fang #define RT5682_CP_SW_SIZE_M (0x2 << 8) 12804b19e4a7SDerek Fang #define RT5682_CP_SW_SIZE_S (0x1 << 8) 1281bf0fa00fSShuming Fan #define RT5682_CP_CLK_HP_MASK (0x3 << 4) 1282bf0fa00fSShuming Fan #define RT5682_CP_CLK_HP_100KHZ (0x0 << 4) 1283bf0fa00fSShuming Fan #define RT5682_CP_CLK_HP_200KHZ (0x1 << 4) 1284bf0fa00fSShuming Fan #define RT5682_CP_CLK_HP_300KHZ (0x2 << 4) 1285bf0fa00fSShuming Fan #define RT5682_CP_CLK_HP_600KHZ (0x3 << 4) 1286bf0fa00fSShuming Fan 12877416f6bcSOder Chiou /* Pad Driving Control (0x0136) */ 12887416f6bcSOder Chiou #define RT5682_PAD_DRV_GP1_MASK (0x3 << 14) 12897416f6bcSOder Chiou #define RT5682_PAD_DRV_GP1_SFT 14 12907416f6bcSOder Chiou #define RT5682_PAD_DRV_GP2_MASK (0x3 << 12) 12917416f6bcSOder Chiou #define RT5682_PAD_DRV_GP2_SFT 12 12927416f6bcSOder Chiou #define RT5682_PAD_DRV_GP3_MASK (0x3 << 10) 12937416f6bcSOder Chiou #define RT5682_PAD_DRV_GP3_SFT 10 12947416f6bcSOder Chiou #define RT5682_PAD_DRV_GP4_MASK (0x3 << 8) 12957416f6bcSOder Chiou #define RT5682_PAD_DRV_GP4_SFT 8 12967416f6bcSOder Chiou #define RT5682_PAD_DRV_GP5_MASK (0x3 << 6) 12977416f6bcSOder Chiou #define RT5682_PAD_DRV_GP5_SFT 6 12987416f6bcSOder Chiou #define RT5682_PAD_DRV_GP6_MASK (0x3 << 4) 12997416f6bcSOder Chiou #define RT5682_PAD_DRV_GP6_SFT 4 13007416f6bcSOder Chiou 13010ddce71cSBard Liao /* Chopper and Clock control for DAC (0x013a)*/ 13020ddce71cSBard Liao #define RT5682_CKXEN_DAC1_MASK (0x1 << 13) 13030ddce71cSBard Liao #define RT5682_CKXEN_DAC1_SFT 13 13040ddce71cSBard Liao #define RT5682_CKGEN_DAC1_MASK (0x1 << 12) 13050ddce71cSBard Liao #define RT5682_CKGEN_DAC1_SFT 12 13060ddce71cSBard Liao 13070ddce71cSBard Liao /* Chopper and Clock control for ADC (0x013b)*/ 13080ddce71cSBard Liao #define RT5682_CKXEN_ADC1_MASK (0x1 << 13) 13090ddce71cSBard Liao #define RT5682_CKXEN_ADC1_SFT 13 13100ddce71cSBard Liao #define RT5682_CKGEN_ADC1_MASK (0x1 << 12) 13110ddce71cSBard Liao #define RT5682_CKGEN_ADC1_SFT 12 13120ddce71cSBard Liao 13130ddce71cSBard Liao /* Volume test (0x013f)*/ 13140ddce71cSBard Liao #define RT5682_SEL_CLK_VOL_MASK (0x1 << 15) 13150ddce71cSBard Liao #define RT5682_SEL_CLK_VOL_EN (0x1 << 15) 13160ddce71cSBard Liao #define RT5682_SEL_CLK_VOL_DIS (0x0 << 15) 13170ddce71cSBard Liao 13180ddce71cSBard Liao /* Test Mode Control 1 (0x0145) */ 13190ddce71cSBard Liao #define RT5682_AD2DA_LB_MASK (0x1 << 10) 13200ddce71cSBard Liao #define RT5682_AD2DA_LB_SFT 10 13210ddce71cSBard Liao 13220ddce71cSBard Liao /* Stereo Noise Gate Control 1 (0x0160) */ 13230ddce71cSBard Liao #define RT5682_NG2_EN_MASK (0x1 << 15) 13240ddce71cSBard Liao #define RT5682_NG2_EN (0x1 << 15) 13250ddce71cSBard Liao #define RT5682_NG2_DIS (0x0 << 15) 13260ddce71cSBard Liao 13270ddce71cSBard Liao /* Stereo1 DAC Silence Detection Control (0x0190) */ 13280ddce71cSBard Liao #define RT5682_DEB_STO_DAC_MASK (0x7 << 4) 13290ddce71cSBard Liao #define RT5682_DEB_80_MS (0x0 << 4) 13300ddce71cSBard Liao 13314b19e4a7SDerek Fang /* HP Behavior Logic Control 2 (0x01db) */ 13324b19e4a7SDerek Fang #define RT5682_HP_LC2_SIG_SOUR2_MASK (0x1 << 4) 13334b19e4a7SDerek Fang #define RT5682_HP_LC2_SIG_SOUR2_REG (0x1 << 4) 13344b19e4a7SDerek Fang #define RT5682_HP_LC2_SIG_SOUR2_DC_CAL (0x0 << 4) 13354b19e4a7SDerek Fang #define RT5682_HP_LC2_SIG_SOUR1_MASK (0x7) 13364b19e4a7SDerek Fang #define RT5682_HP_LC2_SIG_SOUR1_1BIT (0x7) 13374b19e4a7SDerek Fang #define RT5682_HP_LC2_SIG_SOUR1_LEGA (0x2) 13384b19e4a7SDerek Fang 13390ddce71cSBard Liao /* SAR ADC Inline Command Control 1 (0x0210) */ 13400ddce71cSBard Liao #define RT5682_SAR_BUTT_DET_MASK (0x1 << 15) 13410ddce71cSBard Liao #define RT5682_SAR_BUTT_DET_EN (0x1 << 15) 13420ddce71cSBard Liao #define RT5682_SAR_BUTT_DET_DIS (0x0 << 15) 13430ddce71cSBard Liao #define RT5682_SAR_BUTDET_MODE_MASK (0x1 << 14) 13440ddce71cSBard Liao #define RT5682_SAR_BUTDET_POW_SAV (0x1 << 14) 13450ddce71cSBard Liao #define RT5682_SAR_BUTDET_POW_NORM (0x0 << 14) 13460ddce71cSBard Liao #define RT5682_SAR_BUTDET_RST_MASK (0x1 << 13) 13470ddce71cSBard Liao #define RT5682_SAR_BUTDET_RST_NORMAL (0x1 << 13) 13480ddce71cSBard Liao #define RT5682_SAR_BUTDET_RST (0x0 << 13) 13490ddce71cSBard Liao #define RT5682_SAR_POW_MASK (0x1 << 12) 13500ddce71cSBard Liao #define RT5682_SAR_POW_EN (0x1 << 12) 13510ddce71cSBard Liao #define RT5682_SAR_POW_DIS (0x0 << 12) 13520ddce71cSBard Liao #define RT5682_SAR_RST_MASK (0x1 << 11) 13530ddce71cSBard Liao #define RT5682_SAR_RST_NORMAL (0x1 << 11) 13540ddce71cSBard Liao #define RT5682_SAR_RST (0x0 << 11) 13550ddce71cSBard Liao #define RT5682_SAR_BYPASS_MASK (0x1 << 10) 13560ddce71cSBard Liao #define RT5682_SAR_BYPASS_EN (0x1 << 10) 13570ddce71cSBard Liao #define RT5682_SAR_BYPASS_DIS (0x0 << 10) 13580ddce71cSBard Liao #define RT5682_SAR_SEL_MB1_MASK (0x1 << 9) 13590ddce71cSBard Liao #define RT5682_SAR_SEL_MB1_SEL (0x1 << 9) 13600ddce71cSBard Liao #define RT5682_SAR_SEL_MB1_NOSEL (0x0 << 9) 13610ddce71cSBard Liao #define RT5682_SAR_SEL_MB2_MASK (0x1 << 8) 13620ddce71cSBard Liao #define RT5682_SAR_SEL_MB2_SEL (0x1 << 8) 13630ddce71cSBard Liao #define RT5682_SAR_SEL_MB2_NOSEL (0x0 << 8) 13640ddce71cSBard Liao #define RT5682_SAR_SEL_MODE_MASK (0x1 << 7) 13650ddce71cSBard Liao #define RT5682_SAR_SEL_MODE_CMP (0x1 << 7) 13660ddce71cSBard Liao #define RT5682_SAR_SEL_MODE_ADC (0x0 << 7) 13670ddce71cSBard Liao #define RT5682_SAR_SEL_MB1_MB2_MASK (0x1 << 5) 13680ddce71cSBard Liao #define RT5682_SAR_SEL_MB1_MB2_AUTO (0x1 << 5) 13690ddce71cSBard Liao #define RT5682_SAR_SEL_MB1_MB2_MANU (0x0 << 5) 13700ddce71cSBard Liao #define RT5682_SAR_SEL_SIGNAL_MASK (0x1 << 4) 13710ddce71cSBard Liao #define RT5682_SAR_SEL_SIGNAL_AUTO (0x1 << 4) 13720ddce71cSBard Liao #define RT5682_SAR_SEL_SIGNAL_MANU (0x0 << 4) 13730ddce71cSBard Liao 13740ddce71cSBard Liao /* SAR ADC Inline Command Control 13 (0x021c) */ 13750ddce71cSBard Liao #define RT5682_SAR_SOUR_MASK (0x3f) 13760ddce71cSBard Liao #define RT5682_SAR_SOUR_BTN (0x3f) 13770ddce71cSBard Liao #define RT5682_SAR_SOUR_TYPE (0x0) 13780ddce71cSBard Liao 1379a50067d4SArnd Bergmann /* soundwire timeout */ 13807ef8c9edSPierre-Louis Bossart #define RT5682_PROBE_TIMEOUT 5000 1381a50067d4SArnd Bergmann 1382a50067d4SArnd Bergmann 1383a50067d4SArnd Bergmann #define RT5682_STEREO_RATES SNDRV_PCM_RATE_8000_192000 1384a50067d4SArnd Bergmann #define RT5682_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \ 1385a50067d4SArnd Bergmann SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S8) 13860ddce71cSBard Liao 13870ddce71cSBard Liao /* System Clock Source */ 13880ddce71cSBard Liao enum { 13890ddce71cSBard Liao RT5682_SCLK_S_MCLK, 13900ddce71cSBard Liao RT5682_SCLK_S_PLL1, 13910ddce71cSBard Liao RT5682_SCLK_S_PLL2, 13920ddce71cSBard Liao RT5682_SCLK_S_RCCLK, 13930ddce71cSBard Liao }; 13940ddce71cSBard Liao 13950ddce71cSBard Liao /* PLL Source */ 13960ddce71cSBard Liao enum { 13970ddce71cSBard Liao RT5682_PLL1_S_MCLK, 13980ddce71cSBard Liao RT5682_PLL1_S_BCLK1, 13990ddce71cSBard Liao RT5682_PLL1_S_RCCLK, 14000c48a653Sderek.fang RT5682_PLL2_S_MCLK, 14010c48a653Sderek.fang }; 14020c48a653Sderek.fang 14030c48a653Sderek.fang enum { 14040c48a653Sderek.fang RT5682_PLL1, 14050c48a653Sderek.fang RT5682_PLL2, 14060c48a653Sderek.fang RT5682_PLLS, 14070ddce71cSBard Liao }; 14080ddce71cSBard Liao 14090ddce71cSBard Liao enum { 14100ddce71cSBard Liao RT5682_AIF1, 14110ddce71cSBard Liao RT5682_AIF2, 141203f6fc6dSOder Chiou RT5682_SDW, 14130ddce71cSBard Liao RT5682_AIFS 14140ddce71cSBard Liao }; 14150ddce71cSBard Liao 14160ddce71cSBard Liao /* filter mask */ 14170ddce71cSBard Liao enum { 14180ddce71cSBard Liao RT5682_DA_STEREO1_FILTER = 0x1, 14190ddce71cSBard Liao RT5682_AD_STEREO1_FILTER = (0x1 << 1), 14200ddce71cSBard Liao }; 14210ddce71cSBard Liao 14220ddce71cSBard Liao enum { 14230ddce71cSBard Liao RT5682_CLK_SEL_SYS, 14240ddce71cSBard Liao RT5682_CLK_SEL_I2S1_ASRC, 14250ddce71cSBard Liao RT5682_CLK_SEL_I2S2_ASRC, 14260ddce71cSBard Liao }; 14270ddce71cSBard Liao 1428318ff069SNícolas F. R. A. Prado #define RT5682_NUM_SUPPLIES 5 142903f6fc6dSOder Chiou 143003f6fc6dSOder Chiou struct rt5682_priv { 143103f6fc6dSOder Chiou struct snd_soc_component *component; 143257589f82SJack Yu struct device *i2c_dev; 143303f6fc6dSOder Chiou struct rt5682_platform_data pdata; 1434*ed117017SLinus Walleij struct gpio_desc *ldo1_en; 143503f6fc6dSOder Chiou struct regmap *regmap; 143603f6fc6dSOder Chiou struct regmap *sdw_regmap; 143703f6fc6dSOder Chiou struct snd_soc_jack *hs_jack; 143803f6fc6dSOder Chiou struct regulator_bulk_data supplies[RT5682_NUM_SUPPLIES]; 143903f6fc6dSOder Chiou struct delayed_work jack_detect_work; 144003f6fc6dSOder Chiou struct delayed_work jd_check_work; 144114f4946dSPierre-Louis Bossart struct mutex disable_irq_lock; /* imp-def irq lock protection */ 144214f4946dSPierre-Louis Bossart bool disable_irq; 144303f6fc6dSOder Chiou struct mutex calibrate_mutex; 144403f6fc6dSOder Chiou struct sdw_slave *slave; 144503f6fc6dSOder Chiou struct sdw_bus_params params; 144603f6fc6dSOder Chiou bool hw_init; 144703f6fc6dSOder Chiou bool first_hw_init; 144803f6fc6dSOder Chiou bool is_sdw; 144903f6fc6dSOder Chiou 145003f6fc6dSOder Chiou #ifdef CONFIG_COMMON_CLK 145103f6fc6dSOder Chiou struct clk_hw dai_clks_hw[RT5682_DAI_NUM_CLKS]; 145203f6fc6dSOder Chiou struct clk *mclk; 145303f6fc6dSOder Chiou #endif 145403f6fc6dSOder Chiou 145503f6fc6dSOder Chiou int sysclk; 145603f6fc6dSOder Chiou int sysclk_src; 145703f6fc6dSOder Chiou int lrck[RT5682_AIFS]; 145803f6fc6dSOder Chiou int bclk[RT5682_AIFS]; 145903f6fc6dSOder Chiou int master[RT5682_AIFS]; 146003f6fc6dSOder Chiou 146103f6fc6dSOder Chiou int pll_src[RT5682_PLLS]; 146203f6fc6dSOder Chiou int pll_in[RT5682_PLLS]; 146303f6fc6dSOder Chiou int pll_out[RT5682_PLLS]; 146403f6fc6dSOder Chiou 146503f6fc6dSOder Chiou int jack_type; 14668b271370SMatthias Kaehlcke int irq; 146754271282SShuming Fan int irq_work_delay_time; 146803f6fc6dSOder Chiou }; 146903f6fc6dSOder Chiou 1470a50067d4SArnd Bergmann extern const char *rt5682_supply_names[RT5682_NUM_SUPPLIES]; 1471a50067d4SArnd Bergmann 14720ddce71cSBard Liao int rt5682_sel_asrc_clk_src(struct snd_soc_component *component, 14730ddce71cSBard Liao unsigned int filter_mask, unsigned int clk_src); 1474a50067d4SArnd Bergmann 1475a50067d4SArnd Bergmann void rt5682_apply_patch_list(struct rt5682_priv *rt5682, struct device *dev); 1476a50067d4SArnd Bergmann 1477a50067d4SArnd Bergmann void rt5682_jack_detect_handler(struct work_struct *work); 1478a50067d4SArnd Bergmann 1479a50067d4SArnd Bergmann bool rt5682_volatile_register(struct device *dev, unsigned int reg); 1480a50067d4SArnd Bergmann bool rt5682_readable_register(struct device *dev, unsigned int reg); 1481a50067d4SArnd Bergmann 1482a50067d4SArnd Bergmann int rt5682_register_component(struct device *dev); 1483a50067d4SArnd Bergmann void rt5682_calibrate(struct rt5682_priv *rt5682); 1484a50067d4SArnd Bergmann void rt5682_reset(struct rt5682_priv *rt5682); 1485a50067d4SArnd Bergmann int rt5682_parse_dt(struct rt5682_priv *rt5682, struct device *dev); 1486*ed117017SLinus Walleij int rt5682_get_ldo1(struct rt5682_priv *rt5682, struct device *dev); 1487a50067d4SArnd Bergmann 148857589f82SJack Yu int rt5682_register_dai_clks(struct rt5682_priv *rt5682); 148957589f82SJack Yu 1490a50067d4SArnd Bergmann #define RT5682_REG_NUM 318 1491a50067d4SArnd Bergmann extern const struct reg_default rt5682_reg[RT5682_REG_NUM]; 1492a50067d4SArnd Bergmann 1493a50067d4SArnd Bergmann extern const struct snd_soc_dai_ops rt5682_aif1_dai_ops; 1494a50067d4SArnd Bergmann extern const struct snd_soc_dai_ops rt5682_aif2_dai_ops; 1495a50067d4SArnd Bergmann extern const struct snd_soc_component_driver rt5682_soc_component_dev; 14960ddce71cSBard Liao 14970ddce71cSBard Liao #endif /* __RT5682_H__ */ 1498