summaryrefslogtreecommitdiff
path: root/sound/soc/codecs/rt1316-sdw.c
diff options
context:
space:
mode:
authorShuming Fan <shumingf@realtek.com>2023-07-26 12:10:51 +0300
committerMark Brown <broonie@kernel.org>2023-07-26 14:49:44 +0300
commit8744776363c370b0eeb0ed50cb0212d7826639b7 (patch)
tree76affb18824b56876e203535fe49f659bfb6349b /sound/soc/codecs/rt1316-sdw.c
parentf6500ec12c1ec745fbec20fd4734b832bbfd4aac (diff)
downloadlinux-8744776363c370b0eeb0ed50cb0212d7826639b7.tar.xz
ASoC: rt1316: fix key tone missing
This patch adds a control that there are three options to control the digital volume output. The user could select "immediately" to make volume updates immediately and avoid key tone missing issues. In default, the driver selects that the volume update when a zero-crossing with a soft ramp. Signed-off-by: Shuming Fan <shumingf@realtek.com> Reported-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com> Link: https://lore.kernel.org/r/20230726091051.658754-1-shumingf@realtek.com Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/rt1316-sdw.c')
-rw-r--r--sound/soc/codecs/rt1316-sdw.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt1316-sdw.c b/sound/soc/codecs/rt1316-sdw.c
index 721821d9e9af..10a53c8d4874 100644
--- a/sound/soc/codecs/rt1316-sdw.c
+++ b/sound/soc/codecs/rt1316-sdw.c
@@ -424,6 +424,15 @@ static SOC_ENUM_SINGLE_DECL(rt1316_rx_data_ch_enum,
SDW_SDCA_CTL(FUNC_NUM_SMART_AMP, RT1316_SDCA_ENT_UDMPU21, RT1316_SDCA_CTL_UDMPU_CLUSTER, 0), 0,
rt1316_rx_data_ch_select);
+static const char * const rt1316_dac_output_vol_select[] = {
+ "immediately",
+ "zero crossing",
+ "zero crossing with soft ramp",
+};
+
+static SOC_ENUM_SINGLE_DECL(rt1316_dac_vol_ctl_enum,
+ 0xc010, 6, rt1316_dac_output_vol_select);
+
static const struct snd_kcontrol_new rt1316_snd_controls[] = {
/* I2S Data Channel Selection */
@@ -442,6 +451,9 @@ static const struct snd_kcontrol_new rt1316_snd_controls[] = {
/* IV mixer Control */
SOC_DOUBLE("Isense Mixer Switch", 0xc605, 2, 0, 1, 1),
SOC_DOUBLE("Vsense Mixer Switch", 0xc605, 3, 1, 1, 1),
+
+ /* DAC Output Volume Control */
+ SOC_ENUM("DAC Output Vol Control", rt1316_dac_vol_ctl_enum),
};
static const struct snd_kcontrol_new rt1316_sto_dac =