OSDN Git Service

ASoC: rt5645: add DAC1 soft volume func control
authorBard Liao <bardliao@realtek.com>
Thu, 7 Jul 2016 10:56:31 +0000 (18:56 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 7 Jul 2016 12:08:48 +0000 (14:08 +0200)
This patch add an alsa control for DAC1 digital volume control function
selection. The options are:
0: Gain update immediately
1: Gain update when a zero crossing
2: Gain update when a zero crossing with a soft ramp

Signed-off-by: Bard Liao <bardliao@realtek.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt5645.c
sound/soc/codecs/rt5645.h

index 97bf96e..dbf0560 100644 (file)
@@ -741,6 +741,14 @@ static int rt5645_spk_put_volsw(struct snd_kcontrol *kcontrol,
        return ret;
 }
 
+static const char * const rt5645_dac1_vol_ctrl_mode_text[] = {
+       "immediately", "zero crossing", "soft ramp"
+};
+
+static SOC_ENUM_SINGLE_DECL(
+       rt5645_dac1_vol_ctrl_mode, RT5645_PR_BASE,
+       RT5645_DA1_ZDET_SFT, rt5645_dac1_vol_ctrl_mode_text);
+
 static const struct snd_kcontrol_new rt5645_snd_controls[] = {
        /* Speaker Output Volume */
        SOC_DOUBLE("Speaker Channel Switch", RT5645_SPK_VOL,
@@ -807,6 +815,9 @@ static const struct snd_kcontrol_new rt5645_snd_controls[] = {
        SOC_SINGLE("I2S2 Func Switch", RT5645_GPIO_CTRL1, RT5645_I2S2_SEL_SFT,
                1, 1),
        RT5645_HWEQ("Speaker HWEQ"),
+
+       /* Digital Soft Volume Control */
+       SOC_ENUM("DAC1 Digital Volume Control Func", rt5645_dac1_vol_ctrl_mode),
 };
 
 /**
index 205e071..cfc5f97 100644 (file)
 
 
 /* Codec Private Register definition */
+/* DAC ADC Digital Volume (0x00) */
+#define RT5645_DA1_ZDET_SFT                    6
+
 /* 3D Speaker Control (0x63) */
 #define RT5645_3D_SPK_MASK                     (0x1 << 15)
 #define RT5645_3D_SPK_SFT                      15