Subject: [PATCH v2 1/1] ASoC: rt5682s: Add dapm switch to mute/unmute HP
playback output
Add dapm switch in playback path to mute or unmute HP output data.
We will set and reset MUTE_SFT bit in RT5682S_HP_CTRL_1 register based on
switch value to mute or unmute respective channel.
Signed-off-by: Ajit Kumar Pandey <AjitKumar.Pandey@xxxxxxx>
---
sound/soc/codecs/rt5682s.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/rt5682s.c b/sound/soc/codecs/rt5682s.c index
d49a4f68566d..21ab5f7df422 100644
--- a/sound/soc/codecs/rt5682s.c
+++ b/sound/soc/codecs/rt5682s.c
@@ -1573,6 +1573,14 @@ static const char * const
rt5682s_adcdat_pin_select[] = {
"ADCDAT1", "ADCDAT2",
};
+/* Out Switch */
+static const struct snd_kcontrol_new hpol_switch =
+ SOC_DAPM_SINGLE_AUTODISABLE("Switch", RT5682S_HP_CTRL_1,
+ RT5682S_L_MUTE_SFT, 1, 1);
+static const struct snd_kcontrol_new hpor_switch =
+ SOC_DAPM_SINGLE_AUTODISABLE("Switch", RT5682S_HP_CTRL_1,
+ RT5682S_R_MUTE_SFT, 1, 1);
+
static SOC_VALUE_ENUM_SINGLE_DECL(rt5682s_adcdat_pin_enum,
RT5682S_GPIO_CTRL_1, RT5682S_GP4_PIN_SFT,
RT5682S_GP4_PIN_MASK,
rt5682s_adcdat_pin_select, rt5682s_adcdat_pin_values); @@ -1746,6
+1754,11 @@ static const struct snd_soc_dapm_widget
rt5682s_dapm_widgets[] = {
SND_SOC_DAPM_PGA_S("HP Amp", 1, SND_SOC_NOPM, 0, 0,
rt5682s_hp_amp_event,
SND_SOC_DAPM_POST_PMD | SND_SOC_DAPM_POST_PMU),
+ SND_SOC_DAPM_SWITCH("HPOL Playback", SND_SOC_NOPM, 0, 0,
+ &hpol_switch),
+ SND_SOC_DAPM_SWITCH("HPOR Playback", SND_SOC_NOPM, 0, 0,
+ &hpor_switch),
+
/* CLK DET */
SND_SOC_DAPM_SUPPLY("CLKDET SYS", RT5682S_CLK_DET,
RT5682S_SYS_CLK_DET_SFT, 0, NULL, 0), @@ -1895,8 +1908,10 @@
static const struct snd_soc_dapm_route rt5682s_dapm_routes[] = {
{"HP Amp", NULL, "CLKDET SYS"},
{"HP Amp", NULL, "SAR"},
- {"HPOL", NULL, "HP Amp"},
- {"HPOR", NULL, "HP Amp"},
+ {"HPOL Playback", "Switch", "HP Amp"},
+ {"HPOR Playback", "Switch", "HP Amp"},
+ {"HPOL", NULL, "HPOL Playback"},
+ {"HPOR", NULL, "HPOR Playback"},
};