forked from luck/tmp_suning_uos_patched
ASoC: sun50i-codec-analog: Enable DAPM for earpiece switch
By including the earpiece mute switch in the DAPM graph, both the earpiece amplifier and the Mixer/DAC inputs can be powered off when the earpiece is muted. While the widget is really just a simple switch, it is represented as a "mixer with named controls" to avoid including the widget name in the kcontrol name. Otherwise, it is not possible to give the widget an accurate, descriptive name without changing the kcontrol name seen by userspace (which should be stable). The mute switch is between the source selection and the amplifier, as per the diagram in the SoC manual. Signed-off-by: Samuel Holland <samuel@sholland.org> Link: https://lore.kernel.org/r/20200726025334.59931-9-samuel@sholland.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
95d34762f2
commit
7829e68d55
|
@ -232,11 +232,6 @@ static const struct snd_kcontrol_new sun50i_a64_codec_controls[] = {
|
|||
SUN50I_ADDA_EARPIECE_CTRL1,
|
||||
SUN50I_ADDA_EARPIECE_CTRL1_ESP_VOL, 0x1f, 0,
|
||||
sun50i_codec_earpiece_vol_scale),
|
||||
|
||||
SOC_SINGLE("Earpiece Playback Switch",
|
||||
SUN50I_ADDA_EARPIECE_CTRL1,
|
||||
SUN50I_ADDA_EARPIECE_CTRL1_ESPPA_MUTE, 1, 0),
|
||||
|
||||
};
|
||||
|
||||
static const char * const sun50i_codec_hp_src_enum_text[] = {
|
||||
|
@ -295,6 +290,12 @@ static const struct snd_kcontrol_new sun50i_codec_earpiece_src[] = {
|
|||
sun50i_codec_earpiece_src_enum),
|
||||
};
|
||||
|
||||
static const struct snd_kcontrol_new sun50i_codec_earpiece_switch[] = {
|
||||
SOC_DAPM_SINGLE("Earpiece Playback Switch",
|
||||
SUN50I_ADDA_EARPIECE_CTRL1,
|
||||
SUN50I_ADDA_EARPIECE_CTRL1_ESPPA_MUTE, 1, 0),
|
||||
};
|
||||
|
||||
static const struct snd_soc_dapm_widget sun50i_a64_codec_widgets[] = {
|
||||
/* DAC */
|
||||
SND_SOC_DAPM_DAC("Left DAC", NULL, SUN50I_ADDA_MIX_DAC_CTRL,
|
||||
|
@ -341,6 +342,9 @@ static const struct snd_soc_dapm_widget sun50i_a64_codec_widgets[] = {
|
|||
|
||||
SND_SOC_DAPM_MUX("Earpiece Source Playback Route",
|
||||
SND_SOC_NOPM, 0, 0, sun50i_codec_earpiece_src),
|
||||
SOC_MIXER_NAMED_CTL_ARRAY("Earpiece Switch",
|
||||
SND_SOC_NOPM, 0, 0,
|
||||
sun50i_codec_earpiece_switch),
|
||||
SND_SOC_DAPM_OUT_DRV("Earpiece Amp", SUN50I_ADDA_EARPIECE_CTRL1,
|
||||
SUN50I_ADDA_EARPIECE_CTRL1_ESPPA_EN, 0, NULL, 0),
|
||||
SND_SOC_DAPM_OUTPUT("EARPIECE"),
|
||||
|
@ -462,7 +466,8 @@ static const struct snd_soc_dapm_route sun50i_a64_codec_routes[] = {
|
|||
{ "Earpiece Source Playback Route", "DACR", "Right DAC" },
|
||||
{ "Earpiece Source Playback Route", "Left Mixer", "Left Mixer" },
|
||||
{ "Earpiece Source Playback Route", "Right Mixer", "Right Mixer" },
|
||||
{ "Earpiece Amp", NULL, "Earpiece Source Playback Route" },
|
||||
{ "Earpiece Switch", "Earpiece Playback Switch", "Earpiece Source Playback Route" },
|
||||
{ "Earpiece Amp", NULL, "Earpiece Switch" },
|
||||
{ "EARPIECE", NULL, "Earpiece Amp" },
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user