Commit 9dd8d812 authored by Mark Brown's avatar Mark Brown Committed by Takashi Iwai

ALSA: ASoC: Factor PGA DAPM handling into main

This allows pre and post event hooks to be provided for PGA widgets.
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 2927d6ee
...@@ -523,24 +523,6 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event) ...@@ -523,24 +523,6 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
continue; continue;
} }
/* programmable gain/attenuation */
if (w->id == snd_soc_dapm_pga) {
int on;
in = is_connected_input_ep(w);
dapm_clear_walk(w->codec);
out = is_connected_output_ep(w);
dapm_clear_walk(w->codec);
w->power = on = (out != 0 && in != 0) ? 1 : 0;
if (!on)
dapm_set_pga(w, on); /* lower volume to reduce pops */
dapm_update_bits(w);
if (on)
dapm_set_pga(w, on); /* restore volume from zero */
continue;
}
/* pre and post event widgets */ /* pre and post event widgets */
if (w->id == snd_soc_dapm_pre) { if (w->id == snd_soc_dapm_pre) {
if (!w->event) if (!w->event)
...@@ -611,8 +593,16 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event) ...@@ -611,8 +593,16 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
return ret; return ret;
} }
/* Lower PGA volume to reduce pops */
if (w->id == snd_soc_dapm_pga && !power)
dapm_set_pga(w, power);
dapm_update_bits(w); dapm_update_bits(w);
/* Raise PGA volume to reduce pops */
if (w->id == snd_soc_dapm_pga && power)
dapm_set_pga(w, power);
/* power up post event */ /* power up post event */
if (power && w->event && if (power && w->event &&
(w->event_flags & SND_SOC_DAPM_POST_PMU)) { (w->event_flags & SND_SOC_DAPM_POST_PMU)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment