diff options
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/soc-dapm.c | 16 |
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 */ |