These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / sound / soc / codecs / rt5645.h
index db78e94..205e071 100644 (file)
@@ -39,8 +39,8 @@
 #define RT5645_STO1_ADC_DIG_VOL                        0x1c
 #define RT5645_MONO_ADC_DIG_VOL                        0x1d
 #define RT5645_ADC_BST_VOL1                    0x1e
-/* Mixer - D-D */
 #define RT5645_ADC_BST_VOL2                    0x20
+/* Mixer - D-D */
 #define RT5645_STO1_ADC_MIXER                  0x27
 #define RT5645_MONO_ADC_MIXER                  0x28
 #define RT5645_AD_DA_MIXER                     0x29
 #define RT5645_TDM_CTRL_1                      0x77
 #define RT5645_TDM_CTRL_2                      0x78
 #define RT5645_TDM_CTRL_3                      0x79
+#define RT5650_TDM_CTRL_4                      0x7a
 
 /* Function - Analog */
 #define RT5645_GLB_CLK                         0x80
 #define RT5645_STO1_ADC_R_BST_SFT              12
 #define RT5645_STO1_ADC_COMP_MASK              (0x3 << 10)
 #define RT5645_STO1_ADC_COMP_SFT               10
-#define RT5645_STO2_ADC_L_BST_MASK             (0x3 << 8)
-#define RT5645_STO2_ADC_L_BST_SFT              8
-#define RT5645_STO2_ADC_R_BST_MASK             (0x3 << 6)
-#define RT5645_STO2_ADC_R_BST_SFT              6
-#define RT5645_STO2_ADC_COMP_MASK              (0x3 << 4)
-#define RT5645_STO2_ADC_COMP_SFT               4
+
+/* ADC Boost Volume Control (0x20) */
+#define RT5645_MONO_ADC_L_BST_MASK             (0x3 << 14)
+#define RT5645_MONO_ADC_L_BST_SFT              14
+#define RT5645_MONO_ADC_R_BST_MASK             (0x3 << 12)
+#define RT5645_MONO_ADC_R_BST_SFT              12
+#define RT5645_MONO_ADC_COMP_MASK              (0x3 << 10)
+#define RT5645_MONO_ADC_COMP_SFT               10
 
 /* Stereo2 ADC Mixer Control (0x26) */
 #define RT5645_STO2_ADC_SRC_MASK               (0x1 << 15)
 #define RT5645_G_OM_L_SM_L_SFT                 6
 #define RT5645_M_BST1_L_SM_L                   (0x1 << 5)
 #define RT5645_M_BST1_L_SM_L_SFT               5
+#define RT5645_M_BST3_L_SM_L                   (0x1 << 4)
+#define RT5645_M_BST3_L_SM_L_SFT               4
 #define RT5645_M_IN_L_SM_L                     (0x1 << 3)
 #define RT5645_M_IN_L_SM_L_SFT                 3
-#define RT5645_M_DAC_L1_SM_L                   (0x1 << 1)
-#define RT5645_M_DAC_L1_SM_L_SFT               1
 #define RT5645_M_DAC_L2_SM_L                   (0x1 << 2)
 #define RT5645_M_DAC_L2_SM_L_SFT               2
-#define RT5645_M_BST3_L_SM_L                   (0x1 << 4)
-#define RT5645_M_BST3_L_SM_L_SFT               4
+#define RT5645_M_DAC_L1_SM_L                   (0x1 << 1)
+#define RT5645_M_DAC_L1_SM_L_SFT               1
 
 /* SPK Right Mixer Control (0x47) */
 #define RT5645_G_RM_R_SM_R_MASK                        (0x3 << 14)
 #define RT5645_G_OM_R_SM_R_SFT                 6
 #define RT5645_M_BST2_R_SM_R                   (0x1 << 5)
 #define RT5645_M_BST2_R_SM_R_SFT               5
+#define RT5645_M_BST3_R_SM_R                   (0x1 << 4)
+#define RT5645_M_BST3_R_SM_R_SFT               4
 #define RT5645_M_IN_R_SM_R                     (0x1 << 3)
 #define RT5645_M_IN_R_SM_R_SFT                 3
-#define RT5645_M_DAC_R1_SM_R                   (0x1 << 1)
-#define RT5645_M_DAC_R1_SM_R_SFT               1
 #define RT5645_M_DAC_R2_SM_R                   (0x1 << 2)
 #define RT5645_M_DAC_R2_SM_R_SFT               2
-#define RT5645_M_BST3_R_SM_R                   (0x1 << 4)
-#define RT5645_M_BST3_R_SM_R_SFT               4
+#define RT5645_M_DAC_R1_SM_R                   (0x1 << 1)
+#define RT5645_M_DAC_R1_SM_R_SFT               1
 
 /* SPOLMIX Control (0x48) */
 #define RT5645_M_DAC_L1_SPM_L                  (0x1 << 15)
 #define RT5645_M_SV_R_SPM_R                    (0x1 << 0)
 #define RT5645_M_SV_R_SPM_R_SFT                        0
 
+/* SPOMIX Ratio Control (0x4a) */
+#define RT5645_SPK_G_CLSD_MASK                 (0x7 << 0)
+#define RT5645_SPK_G_CLSD_SFT                  0
+
 /* Mono Output Mixer Control (0x4c) */
+#define RT5645_G_MONOMIX_MASK                  (0x1 << 10)
+#define RT5645_G_MONOMIX_SFT                   10
 #define RT5645_M_OV_L_MM                       (0x1 << 9)
 #define RT5645_M_OV_L_MM_SFT                   9
 #define RT5645_M_DAC_L2_MA                     (0x1 << 8)
 #define RT5645_M_DAC_L2_MA_SFT                 8
-#define RT5645_G_MONOMIX_MASK                  (0x1 << 10)
-#define RT5645_G_MONOMIX_SFT                   10
 #define RT5645_M_BST2_MM                       (0x1 << 4)
 #define RT5645_M_BST2_MM_SFT                   4
 #define RT5645_M_DAC_R1_MM                     (0x1 << 3)
 #define RT5645_PWR_CLS_D_R_BIT                 9
 #define RT5645_PWR_CLS_D_L                     (0x1 << 8)
 #define RT5645_PWR_CLS_D_L_BIT                 8
-#define RT5645_PWR_ADC_R                       (0x1 << 1)
-#define RT5645_PWR_ADC_R_BIT                   1
 #define RT5645_PWR_DAC_L2                      (0x1 << 7)
 #define RT5645_PWR_DAC_L2_BIT                  7
 #define RT5645_PWR_DAC_R2                      (0x1 << 6)
 #define RT5645_I2S2_SDI_I2S2                   (0x1 << 6)
 
 /* ADC/DAC Clock Control 1 (0x73) */
-#define RT5645_I2S_BCLK_MS1_MASK               (0x1 << 15)
-#define RT5645_I2S_BCLK_MS1_SFT                        15
-#define RT5645_I2S_BCLK_MS1_32                 (0x0 << 15)
-#define RT5645_I2S_BCLK_MS1_64                 (0x1 << 15)
 #define RT5645_I2S_PD1_MASK                    (0x7 << 12)
 #define RT5645_I2S_PD1_SFT                     12
 #define RT5645_I2S_PD1_1                       (0x0 << 12)
 #define RT5645_SCLK_SRC_SFT                    14
 #define RT5645_SCLK_SRC_MCLK                   (0x0 << 14)
 #define RT5645_SCLK_SRC_PLL1                   (0x1 << 14)
-#define RT5645_SCLK_SRC_RCCLK                  (0x2 << 14) /* 15MHz */
-#define RT5645_PLL1_SRC_MASK                   (0x3 << 12)
-#define RT5645_PLL1_SRC_SFT                    12
-#define RT5645_PLL1_SRC_MCLK                   (0x0 << 12)
-#define RT5645_PLL1_SRC_BCLK1                  (0x1 << 12)
-#define RT5645_PLL1_SRC_BCLK2                  (0x2 << 12)
-#define RT5645_PLL1_SRC_BCLK3                  (0x3 << 12)
+#define RT5645_SCLK_SRC_RCCLK                  (0x2 << 14)
+#define RT5645_PLL1_SRC_MASK                   (0x7 << 11)
+#define RT5645_PLL1_SRC_SFT                    11
+#define RT5645_PLL1_SRC_MCLK                   (0x0 << 11)
+#define RT5645_PLL1_SRC_BCLK1                  (0x1 << 11)
+#define RT5645_PLL1_SRC_BCLK2                  (0x2 << 11)
+#define RT5645_PLL1_SRC_BCLK3                  (0x3 << 11)
+#define RT5645_PLL1_SRC_RCCLK                  (0x4 << 11)
 #define RT5645_PLL1_PD_MASK                    (0x1 << 3)
 #define RT5645_PLL1_PD_SFT                     3
 #define RT5645_PLL1_PD_1                       (0x0 << 3)
 #define RT5645_OT_P_NOR                                (0x0 << 10)
 #define RT5645_OT_P_INV                                (0x1 << 10)
 #define RT5645_IRQ_JD_1_1_EN                   (0x1 << 9)
+#define RT5645_JD_1_1_MASK                     (0x1 << 7)
+#define RT5645_JD_1_1_SFT                      7
+#define RT5645_JD_1_1_NOR                      (0x0 << 7)
+#define RT5645_JD_1_1_INV                      (0x1 << 7)
 
 /* IRQ Control 2 (0xbe) */
 #define RT5645_IRQ_MB1_OC_MASK                 (0x1 << 15)
 #define RT5645_GP6_PIN_SFT                     6
 #define RT5645_GP6_PIN_GPIO6                   (0x0 << 6)
 #define RT5645_GP6_PIN_DMIC2_SDA               (0x1 << 6)
+#define RT5645_I2S2_DAC_PIN_MASK               (0x1 << 4)
+#define RT5645_I2S2_DAC_PIN_SFT                        4
+#define RT5645_I2S2_DAC_PIN_I2S                        (0x0 << 4)
+#define RT5645_I2S2_DAC_PIN_GPIO               (0x1 << 4)
 #define RT5645_GP8_PIN_MASK                    (0x1 << 3)
 #define RT5645_GP8_PIN_SFT                     3
 #define RT5645_GP8_PIN_GPIO8                   (0x0 << 3)
@@ -2112,7 +2122,12 @@ enum {
 /* General Control3 (0xfc) */
 #define RT5645_JD_PSV_MODE                     (0x1 << 12)
 #define RT5645_IRQ_CLK_GATE_CTRL               (0x1 << 11)
+#define RT5645_DET_CLK_MASK                    (0x3 << 9)
+#define RT5645_DET_CLK_DIS                     (0x0 << 9)
+#define RT5645_DET_CLK_MODE1                   (0x1 << 9)
+#define RT5645_DET_CLK_MODE2                   (0x2 << 9)
 #define RT5645_MICINDET_MANU                   (0x1 << 7)
+#define RT5645_RING2_SLEEVE_GND                        (0x1 << 5)
 
 /* Vendor ID (0xfd) */
 #define RT5645_VER_C                           0x2
@@ -2147,6 +2162,7 @@ enum {
 };
 
 enum {
+       RT5645_DMIC1_DISABLE,
        RT5645_DMIC_DATA_IN2P,
        RT5645_DMIC_DATA_GPIO6,
        RT5645_DMIC_DATA_GPIO10,
@@ -2154,6 +2170,7 @@ enum {
 };
 
 enum {
+       RT5645_DMIC2_DISABLE,
        RT5645_DMIC_DATA_IN2N,
        RT5645_DMIC_DATA_GPIO5,
        RT5645_DMIC_DATA_GPIO11,
@@ -2177,28 +2194,7 @@ enum {
 int rt5645_sel_asrc_clk_src(struct snd_soc_codec *codec,
                unsigned int filter_mask, unsigned int clk_src);
 
-struct rt5645_priv {
-       struct snd_soc_codec *codec;
-       struct rt5645_platform_data pdata;
-       struct regmap *regmap;
-       struct i2c_client *i2c;
-       struct snd_soc_jack *hp_jack;
-       struct snd_soc_jack *mic_jack;
-       struct delayed_work jack_detect_work;
-
-       int codec_type;
-       int sysclk;
-       int sysclk_src;
-       int lrck[RT5645_AIFS];
-       int bclk[RT5645_AIFS];
-       int master[RT5645_AIFS];
-
-       int pll_src;
-       int pll_in;
-       int pll_out;
-};
-
 int rt5645_set_jack_detect(struct snd_soc_codec *codec,
-       struct snd_soc_jack *hp_jack, struct snd_soc_jack *mic_jack);
-
+       struct snd_soc_jack *hp_jack, struct snd_soc_jack *mic_jack,
+       struct snd_soc_jack *btn_jack);
 #endif /* __RT5645_H__ */