Skip to content

Commit

Permalink
ALSA: ASoC: Factor PGA DAPM handling into main
Browse files Browse the repository at this point in the history
This allows pre and post event hooks to be provided for PGA widgets.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Mark Brown authored and Takashi Iwai committed Jul 17, 2008
1 parent 2927d6e commit 9dd8d81
Showing 1 changed file with 8 additions and 18 deletions.
26 changes: 8 additions & 18 deletions sound/soc/soc-dapm.c
Original file line number Diff line number Diff line change
Expand Up @@ -523,24 +523,6 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
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 */
if (w->id == snd_soc_dapm_pre) {
if (!w->event)
Expand Down Expand Up @@ -611,8 +593,16 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
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);

/* Raise PGA volume to reduce pops */
if (w->id == snd_soc_dapm_pga && power)
dapm_set_pga(w, power);

/* power up post event */
if (power && w->event &&
(w->event_flags & SND_SOC_DAPM_POST_PMU)) {
Expand Down

0 comments on commit 9dd8d81

Please sign in to comment.