]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ASoC: sun4i-codec: Add FM Playback Volume, FM Left, FM Right, FM Playback Switch
authorDanny Milosavljevic <dannym@scratchpost.org>
Wed, 30 Jan 2019 10:39:43 +0000 (11:39 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 7 Feb 2019 12:15:17 +0000 (12:15 +0000)
Add FM Playback Volume for Allwinner A10 and Allwinner A20.
Add FM Left, FM Right, FM Playback Switch for Allwinner A10 and
Allwinner A20.

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 87bb16e59da7b6bdd9e96ddba4bbd6f9a3792691..2ec7a43975f6aa3350c1f602c2eb75271aab6841 100644 (file)
 #define SUN4I_CODEC_DAC_ACTL_DACAENR                   (31)
 #define SUN4I_CODEC_DAC_ACTL_DACAENL                   (30)
 #define SUN4I_CODEC_DAC_ACTL_MIXEN                     (29)
+#define SUN4I_CODEC_DAC_ACTL_FMG                       (23)
 #define SUN4I_CODEC_DAC_ACTL_MICG                      (20)
+#define SUN4I_CODEC_DAC_ACTL_LFMS                      (17)
+#define SUN4I_CODEC_DAC_ACTL_RFMS                      (16)
 #define SUN4I_CODEC_DAC_ACTL_LDACLMIXS                 (15)
 #define SUN4I_CODEC_DAC_ACTL_RDACRMIXS                 (14)
 #define SUN4I_CODEC_DAC_ACTL_LDACRMIXS                 (13)
@@ -683,6 +686,8 @@ static const struct snd_kcontrol_new sun4i_codec_pa_mute =
                        SUN4I_CODEC_DAC_ACTL_PA_MUTE, 1, 0);
 
 static DECLARE_TLV_DB_SCALE(sun4i_codec_pa_volume_scale, -6300, 100, 1);
+static DECLARE_TLV_DB_SCALE(sun4i_codec_fmin_loopback_gain_scale, -450, 150,
+                           0);
 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,
@@ -696,6 +701,9 @@ static const struct snd_kcontrol_new sun4i_codec_controls[] = {
        SOC_SINGLE_TLV("Power Amplifier Volume", SUN4I_CODEC_DAC_ACTL,
                       SUN4I_CODEC_DAC_ACTL_PA_VOL, 0x3F, 0,
                       sun4i_codec_pa_volume_scale),
+       SOC_SINGLE_TLV("FM Playback Volume", SUN4I_CODEC_DAC_ACTL,
+                      SUN4I_CODEC_DAC_ACTL_FMG, 3, 0,
+                      sun4i_codec_fmin_loopback_gain_scale),
        SOC_SINGLE_TLV("Mic Playback Volume", SUN4I_CODEC_DAC_ACTL,
                       SUN4I_CODEC_DAC_ACTL_MICG, 7, 0,
                       sun4i_codec_micin_loopback_gain_scale),
@@ -711,6 +719,9 @@ static const struct snd_kcontrol_new sun7i_codec_controls[] = {
        SOC_SINGLE_TLV("Power Amplifier Volume", SUN4I_CODEC_DAC_ACTL,
                       SUN4I_CODEC_DAC_ACTL_PA_VOL, 0x3F, 0,
                       sun4i_codec_pa_volume_scale),
+       SOC_SINGLE_TLV("FM Playback Volume", SUN4I_CODEC_DAC_ACTL,
+                      SUN4I_CODEC_DAC_ACTL_FMG, 3, 0,
+                      sun4i_codec_fmin_loopback_gain_scale),
        SOC_SINGLE_TLV("Mic Playback Volume", SUN4I_CODEC_DAC_ACTL,
                       SUN4I_CODEC_DAC_ACTL_MICG, 7, 0,
                       sun4i_codec_micin_loopback_gain_scale),
@@ -732,6 +743,9 @@ static const struct snd_kcontrol_new sun4i_codec_mixer_controls[] = {
        SOC_DAPM_SINGLE("Right Mixer Left DAC Playback Switch",
                        SUN4I_CODEC_DAC_ACTL,
                        SUN4I_CODEC_DAC_ACTL_LDACRMIXS, 1, 0),
+       SOC_DAPM_DOUBLE("FM Playback Switch", SUN4I_CODEC_DAC_ACTL,
+                       SUN4I_CODEC_DAC_ACTL_LFMS,
+                       SUN4I_CODEC_DAC_ACTL_RFMS, 1, 0),
        SOC_DAPM_DOUBLE("Mic1 Playback Switch", SUN4I_CODEC_DAC_ACTL,
                        SUN4I_CODEC_DAC_ACTL_MIC1LS,
                        SUN4I_CODEC_DAC_ACTL_MIC1RS, 1, 0),
@@ -800,6 +814,8 @@ static const struct snd_soc_dapm_widget sun4i_codec_codec_dapm_widgets[] = {
        SND_SOC_DAPM_SWITCH("Power Amplifier Mute", SND_SOC_NOPM, 0, 0,
                            &sun4i_codec_pa_mute),
 
+       SND_SOC_DAPM_INPUT("FM Right"),
+       SND_SOC_DAPM_INPUT("FM Left"),
        SND_SOC_DAPM_INPUT("Mic1"),
        SND_SOC_DAPM_INPUT("Mic2"),
 
@@ -820,12 +836,14 @@ static const struct snd_soc_dapm_route sun4i_codec_codec_dapm_routes[] = {
        { "Right Mixer", NULL, "Mixer Enable" },
        { "Right Mixer", "Right Mixer Left DAC Playback Switch", "Left DAC" },
        { "Right Mixer", "Right Mixer Right DAC Playback Switch", "Right DAC" },
+       { "Right Mixer", "FM Playback Switch", "FM Right" },
        { "Right Mixer", "Mic1 Playback Switch", "MIC1 Pre-Amplifier" },
        { "Right Mixer", "Mic2 Playback Switch", "MIC2 Pre-Amplifier" },
 
        /* Left Mixer Routes */
        { "Left Mixer", NULL, "Mixer Enable" },
        { "Left Mixer", "Left Mixer Left DAC Playback Switch", "Left DAC" },
+       { "Left Mixer", "FM Playback Switch", "FM Left" },
        { "Left Mixer", "Mic1 Playback Switch", "MIC1 Pre-Amplifier" },
        { "Left Mixer", "Mic2 Playback Switch", "MIC2 Pre-Amplifier" },