]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
ASoC: sun4i-codec: Add Mic1 Boost Volume, Mic2 Boost Volume
authorDanny Milosavljevic <dannym@scratchpost.org>
Wed, 30 Jan 2019 10:39:40 +0000 (11:39 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 7 Feb 2019 12:15:04 +0000 (12:15 +0000)
Add Mic1 Boost Volume and Mic2 Boost Volume for Allwinner A10 and for
Allwinner A20.

Those controls are in different registers per chip model, so put the
Allwinner A10 controls and the Allwinner A20 controls into the newly
split sun4i_codec_controls and sun7i_codec_controls, respectively.

Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org>
Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sunxi/sun4i-codec.c

index 52453c46b4090c5e8afc59a84119162dd7fa8c36..9d509ede22c71120042c2a4d276c2d59e57c60ad 100644 (file)
@@ -95,6 +95,8 @@
 #define SUN4I_CODEC_ADC_ACTL_PREG1EN                   (29)
 #define SUN4I_CODEC_ADC_ACTL_PREG2EN                   (28)
 #define SUN4I_CODEC_ADC_ACTL_VMICEN                    (27)
+#define SUN4I_CODEC_ADC_ACTL_PREG1                     (25)
+#define SUN4I_CODEC_ADC_ACTL_PREG2                     (23)
 #define SUN4I_CODEC_ADC_ACTL_VADCG                     (20)
 #define SUN4I_CODEC_ADC_ACTL_ADCIS                     (17)
 #define SUN4I_CODEC_ADC_ACTL_PA_EN                     (4)
 /* Microphone controls (sun7i only) */
 #define SUN7I_CODEC_AC_MIC_PHONE_CAL           (0x3c)
 
+#define SUN7I_CODEC_AC_MIC_PHONE_CAL_PREG1             (29)
+#define SUN7I_CODEC_AC_MIC_PHONE_CAL_PREG2             (26)
+
 /*
  * sun6i specific registers
  *
@@ -676,6 +681,12 @@ static const struct snd_kcontrol_new sun4i_codec_pa_mute =
 static DECLARE_TLV_DB_SCALE(sun4i_codec_pa_volume_scale, -6300, 100, 1);
 static DECLARE_TLV_DB_SCALE(sun4i_codec_micin_loopback_gain_scale, -450, 150,
                            0);
+static DECLARE_TLV_DB_RANGE(sun4i_codec_micin_preamp_gain_scale,
+                           0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
+                           1, 7, TLV_DB_SCALE_ITEM(3500, 300, 0));
+static DECLARE_TLV_DB_RANGE(sun7i_codec_micin_preamp_gain_scale,
+                           0, 0, TLV_DB_SCALE_ITEM(0, 0, 0),
+                           1, 7, TLV_DB_SCALE_ITEM(2400, 300, 0));
 
 static const struct snd_kcontrol_new sun4i_codec_controls[] = {
        SOC_SINGLE_TLV("Power Amplifier Volume", SUN4I_CODEC_DAC_ACTL,
@@ -684,6 +695,12 @@ static const struct snd_kcontrol_new sun4i_codec_controls[] = {
        SOC_SINGLE_TLV("Mic Playback Volume", SUN4I_CODEC_DAC_ACTL,
                       SUN4I_CODEC_DAC_ACTL_MICG, 7, 0,
                       sun4i_codec_micin_loopback_gain_scale),
+       SOC_SINGLE_TLV("Mic1 Boost Volume", SUN4I_CODEC_ADC_ACTL,
+                      SUN4I_CODEC_ADC_ACTL_PREG1, 3, 0,
+                      sun4i_codec_micin_preamp_gain_scale),
+       SOC_SINGLE_TLV("Mic2 Boost Volume", SUN4I_CODEC_ADC_ACTL,
+                      SUN4I_CODEC_ADC_ACTL_PREG2, 3, 0,
+                      sun4i_codec_micin_preamp_gain_scale),
 };
 
 static const struct snd_kcontrol_new sun7i_codec_controls[] = {
@@ -693,6 +710,12 @@ static const struct snd_kcontrol_new sun7i_codec_controls[] = {
        SOC_SINGLE_TLV("Mic Playback Volume", SUN4I_CODEC_DAC_ACTL,
                       SUN4I_CODEC_DAC_ACTL_MICG, 7, 0,
                       sun4i_codec_micin_loopback_gain_scale),
+       SOC_SINGLE_TLV("Mic1 Boost Volume", SUN7I_CODEC_AC_MIC_PHONE_CAL,
+                      SUN7I_CODEC_AC_MIC_PHONE_CAL_PREG1, 7, 0,
+                      sun7i_codec_micin_preamp_gain_scale),
+       SOC_SINGLE_TLV("Mic2 Boost Volume", SUN7I_CODEC_AC_MIC_PHONE_CAL,
+                      SUN7I_CODEC_AC_MIC_PHONE_CAL_PREG2, 7, 0,
+                      sun7i_codec_micin_preamp_gain_scale),
 };
 
 static const struct snd_kcontrol_new sun4i_codec_left_mixer_controls[] = {