0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef __RT1016_H__
0014 #define __RT1016_H__
0015
0016 #define RT1016_DEVICE_ID_VAL 0x6595
0017
0018 #define RT1016_RESET 0x00
0019 #define RT1016_PADS_CTRL_1 0x01
0020 #define RT1016_PADS_CTRL_2 0x02
0021 #define RT1016_I2C_CTRL 0x03
0022 #define RT1016_VOL_CTRL_1 0x04
0023 #define RT1016_VOL_CTRL_2 0x05
0024 #define RT1016_VOL_CTRL_3 0x06
0025 #define RT1016_ANA_CTRL_1 0x07
0026 #define RT1016_MUX_SEL 0x08
0027 #define RT1016_RX_I2S_CTRL 0x09
0028 #define RT1016_ANA_FLAG 0x0a
0029 #define RT1016_VERSION2_ID 0x0c
0030 #define RT1016_VERSION1_ID 0x0d
0031 #define RT1016_VENDER_ID 0x0e
0032 #define RT1016_DEVICE_ID 0x0f
0033 #define RT1016_ANA_CTRL_2 0x11
0034 #define RT1016_TEST_SIGNAL 0x1c
0035 #define RT1016_TEST_CTRL_1 0x1d
0036 #define RT1016_TEST_CTRL_2 0x1e
0037 #define RT1016_TEST_CTRL_3 0x1f
0038 #define RT1016_CLOCK_1 0x20
0039 #define RT1016_CLOCK_2 0x21
0040 #define RT1016_CLOCK_3 0x22
0041 #define RT1016_CLOCK_4 0x23
0042 #define RT1016_CLOCK_5 0x24
0043 #define RT1016_CLOCK_6 0x25
0044 #define RT1016_CLOCK_7 0x26
0045 #define RT1016_I2S_CTRL 0x40
0046 #define RT1016_DAC_CTRL_1 0x60
0047 #define RT1016_SC_CTRL_1 0x80
0048 #define RT1016_SC_CTRL_2 0x81
0049 #define RT1016_SC_CTRL_3 0x82
0050 #define RT1016_SC_CTRL_4 0x83
0051 #define RT1016_SIL_DET 0xa0
0052 #define RT1016_SYS_CLK 0xc0
0053 #define RT1016_BIAS_CUR 0xc1
0054 #define RT1016_DAC_CTRL_2 0xc2
0055 #define RT1016_LDO_CTRL 0xc3
0056 #define RT1016_CLASSD_1 0xc4
0057 #define RT1016_PLL1 0xc5
0058 #define RT1016_PLL2 0xc6
0059 #define RT1016_PLL3 0xc7
0060 #define RT1016_CLASSD_2 0xc8
0061 #define RT1016_CLASSD_OUT 0xc9
0062 #define RT1016_CLASSD_3 0xca
0063 #define RT1016_CLASSD_4 0xcb
0064 #define RT1016_CLASSD_5 0xcc
0065 #define RT1016_PWR_CTRL 0xcf
0066
0067
0068 #define RT1016_L_VOL_MASK (0xff << 8)
0069 #define RT1016_L_VOL_SFT 8
0070 #define RT1016_R_VOL_MASK (0xff)
0071 #define RT1016_R_VOL_SFT 0
0072
0073
0074 #define RT1016_DA_MUTE_L_SFT 7
0075 #define RT1016_DA_MUTE_R_SFT 6
0076
0077
0078 #define RT1016_CLK_SYS_SEL_MASK (0x1 << 15)
0079 #define RT1016_CLK_SYS_SEL_SFT 15
0080 #define RT1016_CLK_SYS_SEL_MCLK (0x0 << 15)
0081 #define RT1016_CLK_SYS_SEL_PLL (0x1 << 15)
0082 #define RT1016_PLL_SEL_MASK (0x1 << 13)
0083 #define RT1016_PLL_SEL_SFT 13
0084 #define RT1016_PLL_SEL_MCLK (0x0 << 13)
0085 #define RT1016_PLL_SEL_BCLK (0x1 << 13)
0086
0087
0088 #define RT1016_FS_PD_MASK (0x7 << 13)
0089 #define RT1016_FS_PD_SFT 13
0090 #define RT1016_OSR_PD_MASK (0x3 << 10)
0091 #define RT1016_OSR_PD_SFT 10
0092
0093
0094 #define RT1016_PWR_DAC_FILTER (0x1 << 11)
0095 #define RT1016_PWR_DAC_FILTER_BIT 11
0096 #define RT1016_PWR_DACMOD (0x1 << 10)
0097 #define RT1016_PWR_DACMOD_BIT 10
0098 #define RT1016_PWR_CLK_FIFO (0x1 << 9)
0099 #define RT1016_PWR_CLK_FIFO_BIT 9
0100 #define RT1016_PWR_CLK_PUREDC (0x1 << 8)
0101 #define RT1016_PWR_CLK_PUREDC_BIT 8
0102 #define RT1016_PWR_SIL_DET (0x1 << 7)
0103 #define RT1016_PWR_SIL_DET_BIT 7
0104 #define RT1016_PWR_RC_25M (0x1 << 6)
0105 #define RT1016_PWR_RC_25M_BIT 6
0106 #define RT1016_PWR_PLL1 (0x1 << 5)
0107 #define RT1016_PWR_PLL1_BIT 5
0108 #define RT1016_PWR_ANA_CTRL (0x1 << 4)
0109 #define RT1016_PWR_ANA_CTRL_BIT 4
0110 #define RT1016_PWR_CLK_SYS (0x1 << 3)
0111 #define RT1016_PWR_CLK_SYS_BIT 3
0112
0113
0114 #define RT1016_PWR_LRCK_DET (0x1 << 15)
0115 #define RT1016_PWR_LRCK_DET_BIT 15
0116 #define RT1016_PWR_BCLK_DET (0x1 << 11)
0117 #define RT1016_PWR_BCLK_DET_BIT 11
0118
0119
0120 #define RT1016_I2S_BCLK_MS_MASK (0x1 << 15)
0121 #define RT1016_I2S_BCLK_MS_SFT 15
0122 #define RT1016_I2S_BCLK_MS_32 (0x0 << 15)
0123 #define RT1016_I2S_BCLK_MS_64 (0x1 << 15)
0124 #define RT1016_I2S_BCLK_POL_MASK (0x1 << 13)
0125 #define RT1016_I2S_BCLK_POL_SFT 13
0126 #define RT1016_I2S_BCLK_POL_NOR (0x0 << 13)
0127 #define RT1016_I2S_BCLK_POL_INV (0x1 << 13)
0128 #define RT1016_I2S_DATA_SWAP_MASK (0x1 << 10)
0129 #define RT1016_I2S_DATA_SWAP_SFT 10
0130 #define RT1016_I2S_DL_MASK (0x7 << 4)
0131 #define RT1016_I2S_DL_SFT 4
0132 #define RT1016_I2S_DL_16 (0x1 << 4)
0133 #define RT1016_I2S_DL_20 (0x2 << 4)
0134 #define RT1016_I2S_DL_24 (0x3 << 4)
0135 #define RT1016_I2S_DL_32 (0x4 << 4)
0136 #define RT1016_I2S_MS_MASK (0x1 << 3)
0137 #define RT1016_I2S_MS_SFT 3
0138 #define RT1016_I2S_MS_M (0x0 << 3)
0139 #define RT1016_I2S_MS_S (0x1 << 3)
0140 #define RT1016_I2S_DF_MASK (0x7 << 0)
0141 #define RT1016_I2S_DF_SFT 0
0142 #define RT1016_I2S_DF_I2S (0x0)
0143 #define RT1016_I2S_DF_LEFT (0x1)
0144 #define RT1016_I2S_DF_PCM_A (0x2)
0145 #define RT1016_I2S_DF_PCM_B (0x3)
0146
0147
0148 #define RT1016_SIL_DET_EN (0x1 << 15)
0149 #define RT1016_SIL_DET_EN_BIT 15
0150
0151
0152 #define RT1016_CKGEN_DAC (0x1 << 13)
0153 #define RT1016_CKGEN_DAC_BIT 13
0154
0155
0156 #define RT1016_VCM_SLOW (0x1 << 6)
0157 #define RT1016_VCM_SLOW_BIT 6
0158
0159
0160 #define RT1016_PLL_M_MAX 0xf
0161 #define RT1016_PLL_M_MASK (RT1016_PLL_M_MAX << 12)
0162 #define RT1016_PLL_M_SFT 12
0163 #define RT1016_PLL_M_BP (0x1 << 11)
0164 #define RT1016_PLL_M_BP_SFT 11
0165 #define RT1016_PLL_N_MAX 0x1ff
0166 #define RT1016_PLL_N_MASK (RT1016_PLL_N_MAX << 0)
0167 #define RT1016_PLL_N_SFT 0
0168
0169
0170 #define RT1016_PLL2_EN (0x1 << 15)
0171 #define RT1016_PLL2_EN_BIT 15
0172 #define RT1016_PLL_K_BP (0x1 << 5)
0173 #define RT1016_PLL_K_BP_SFT 5
0174 #define RT1016_PLL_K_MAX 0x1f
0175 #define RT1016_PLL_K_MASK (RT1016_PLL_K_MAX)
0176 #define RT1016_PLL_K_SFT 0
0177
0178
0179 #define RT1016_PWR_BG_1_2 (0x1 << 12)
0180 #define RT1016_PWR_BG_1_2_BIT 12
0181 #define RT1016_PWR_MBIAS_BG (0x1 << 11)
0182 #define RT1016_PWR_MBIAS_BG_BIT 11
0183 #define RT1016_PWR_PLL (0x1 << 9)
0184 #define RT1016_PWR_PLL_BIT 9
0185 #define RT1016_PWR_BASIC (0x1 << 8)
0186 #define RT1016_PWR_BASIC_BIT 8
0187 #define RT1016_PWR_CLSD (0x1 << 7)
0188 #define RT1016_PWR_CLSD_BIT 7
0189 #define RT1016_PWR_25M (0x1 << 6)
0190 #define RT1016_PWR_25M_BIT 6
0191 #define RT1016_PWR_DACL (0x1 << 4)
0192 #define RT1016_PWR_DACL_BIT 4
0193 #define RT1016_PWR_DACR (0x1 << 3)
0194 #define RT1016_PWR_DACR_BIT 3
0195 #define RT1016_PWR_LDO2 (0x1 << 2)
0196 #define RT1016_PWR_LDO2_BIT 2
0197 #define RT1016_PWR_VREF (0x1 << 1)
0198 #define RT1016_PWR_VREF_BIT 1
0199 #define RT1016_PWR_MBIAS (0x1 << 0)
0200 #define RT1016_PWR_MBIAS_BIT 0
0201
0202
0203 enum {
0204 RT1016_SCLK_S_MCLK,
0205 RT1016_SCLK_S_PLL,
0206 };
0207
0208
0209 enum {
0210 RT1016_PLL_S_MCLK,
0211 RT1016_PLL_S_BCLK,
0212 };
0213
0214 enum {
0215 RT1016_AIF1,
0216 RT1016_AIFS,
0217 };
0218
0219 struct rt1016_priv {
0220 struct snd_soc_component *component;
0221 struct regmap *regmap;
0222 int sysclk;
0223 int sysclk_src;
0224 int lrck;
0225 int bclk;
0226 int master;
0227 int pll_src;
0228 int pll_in;
0229 int pll_out;
0230 };
0231
0232 #endif