Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 467b1479 authored by Bard Liao's avatar Bard Liao Committed by Mark Brown
Browse files

ASoC: rt5645: add DAC1 soft volume func control



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: default avatarBard Liao <bardliao@realtek.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent e62ebf15
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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),
};

/**
+3 −0
Original line number Diff line number Diff line
@@ -2018,6 +2018,9 @@


/* 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