Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * rt1016.h  --  RT1016 ALSA SoC audio amplifier driver
0004  *
0005  * Copyright 2020 Realtek Semiconductor Corp.
0006  * Author: Oder Chiou <oder_chiou@realtek.com>
0007  *
0008  * This program is free software; you can redistribute it and/or modify
0009  * it under the terms of the GNU General Public License version 2 as
0010  * published by the Free Software Foundation.
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 /* global definition */
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 /* 0x04 */
0074 #define RT1016_DA_MUTE_L_SFT            7
0075 #define RT1016_DA_MUTE_R_SFT            6
0076 
0077 /* 0x20 */
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 /* 0x21 */
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 /* 0x22 */
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 /* 0x23 */
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 /* 0x40 */
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 /* 0xa0 */
0148 #define RT1016_SIL_DET_EN           (0x1 << 15)
0149 #define RT1016_SIL_DET_EN_BIT           15
0150 
0151 /* 0xc2 */
0152 #define RT1016_CKGEN_DAC            (0x1 << 13)
0153 #define RT1016_CKGEN_DAC_BIT            13
0154 
0155 /* 0xc4 */
0156 #define RT1016_VCM_SLOW             (0x1 << 6)
0157 #define RT1016_VCM_SLOW_BIT         6
0158 
0159 /* 0xc5 */
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 /* 0xc6 */
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 /* 0xcf */
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 /* System Clock Source */
0203 enum {
0204     RT1016_SCLK_S_MCLK,
0205     RT1016_SCLK_S_PLL,
0206 };
0207 
0208 /* PLL1 Source */
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 /* __RT1016_H__ */