aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/soc-dapm.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2009-04-13 06:27:03 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2009-04-13 06:59:01 -0400
commitf6d655a6e6974e474a11b25052c29d10b80814b3 (patch)
treecf1366799bc44d41775d5cc946a39af60d4dafc8 /sound/soc/soc-dapm.c
parent025756eca458b4a3d5e3d76baaffb2e8e3df79db (diff)
ASoC: Support DAPM events for DACs and ADCs
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound/soc/soc-dapm.c')
-rw-r--r--sound/soc/soc-dapm.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 713d12586705..a6d73379ab32 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -598,18 +598,22 @@ static int dapm_power_widget(struct snd_soc_codec *codec, int event,
598 if (w->id == snd_soc_dapm_adc && w->active) { 598 if (w->id == snd_soc_dapm_adc && w->active) {
599 in = is_connected_input_ep(w); 599 in = is_connected_input_ep(w);
600 dapm_clear_walk(w->codec); 600 dapm_clear_walk(w->codec);
601 w->power = (in != 0) ? 1 : 0; 601 power = (in != 0) ? 1 : 0;
602 dapm_update_bits(w); 602 if (power == w->power)
603 return 0; 603 return 0;
604 w->power = power;
605 return dapm_generic_apply_power(w);
604 } 606 }
605 607
606 /* active DAC */ 608 /* active DAC */
607 if (w->id == snd_soc_dapm_dac && w->active) { 609 if (w->id == snd_soc_dapm_dac && w->active) {
608 out = is_connected_output_ep(w); 610 out = is_connected_output_ep(w);
609 dapm_clear_walk(w->codec); 611 dapm_clear_walk(w->codec);
610 w->power = (out != 0) ? 1 : 0; 612 power = (out != 0) ? 1 : 0;
611 dapm_update_bits(w); 613 if (power == w->power)
612 return 0; 614 return 0;
615 w->power = power;
616 return dapm_generic_apply_power(w);
613 } 617 }
614 618
615 /* pre and post event widgets */ 619 /* pre and post event widgets */