RE: [PATCH v2 1/1] ASoC: rt5682s: Add dapm switch to mute/unmute HP playback output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Subject: Re: [PATCH v2 1/1] ASoC: rt5682s: Add dapm switch to mute/unmute
> HP playback output
> 
> On 12/9/2021 7:55 AM, Shuming [范書銘] wrote:
> > [CAUTION: External Email]
> >
> >> 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"},
> >>   };
> >
> > RT5682S enables the 1 bit control for HP output.
> > Therefore, the setting of RT5682S_HP_CTRL_1[15][7] will be not effective.
> >
> >
> Ok, it was actually effective and muted audio when we test in our
> platform, possible because i'm tearing down dapm path based on switch
> value. If we don't have register bits available to mute i'll resubmit
> the change with virtual switch widget to disable DAPM and stop audio.
> 
What purpose do you want to add an additional switch to power up/down 
the dapm in the codec driver instead of using existing controls?
And we thought the virtual switch you talked about could be implemented 
in the machine driver.




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux