aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-06-16 11:05:15 -0400
committerMark Brown <broonie@linaro.org>2014-06-16 11:05:15 -0400
commit1f84acd2dc21b7c3220256b71f7b25d254a3175b (patch)
tree9312d2212a1e308855cbfe9c2338a47d07fd1e36 /sound/soc
parent7171511eaec5bf23fb06078f59784a3a0626b38f (diff)
parent18626c7ebc05e6486712cc129d8da83d07da9dc7 (diff)
Merge remote-tracking branch 'asoc/fix/core' into asoc-linus
Diffstat (limited to 'sound/soc')
-rw-r--r--sound/soc/soc-dapm.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index a74b9bf23d9f..cdc837ed144d 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -2755,7 +2755,7 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
2755 unsigned int mask = (1 << fls(max)) - 1; 2755 unsigned int mask = (1 << fls(max)) - 1;
2756 unsigned int invert = mc->invert; 2756 unsigned int invert = mc->invert;
2757 unsigned int val; 2757 unsigned int val;
2758 int connect, change; 2758 int connect, change, reg_change = 0;
2759 struct snd_soc_dapm_update update; 2759 struct snd_soc_dapm_update update;
2760 int ret = 0; 2760 int ret = 0;
2761 2761
@@ -2773,20 +2773,23 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
2773 mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME); 2773 mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME);
2774 2774
2775 change = dapm_kcontrol_set_value(kcontrol, val); 2775 change = dapm_kcontrol_set_value(kcontrol, val);
2776 if (change) {
2777 if (reg != SND_SOC_NOPM) {
2778 mask = mask << shift;
2779 val = val << shift;
2780
2781 if (snd_soc_test_bits(codec, reg, mask, val)) {
2782 update.kcontrol = kcontrol;
2783 update.reg = reg;
2784 update.mask = mask;
2785 update.val = val;
2786 card->update = &update;
2787 }
2788 2776
2777 if (reg != SND_SOC_NOPM) {
2778 mask = mask << shift;
2779 val = val << shift;
2780
2781 reg_change = snd_soc_test_bits(codec, reg, mask, val);
2782 }
2783
2784 if (change || reg_change) {
2785 if (reg_change) {
2786 update.kcontrol = kcontrol;
2787 update.reg = reg;
2788 update.mask = mask;
2789 update.val = val;
2790 card->update = &update;
2789 } 2791 }
2792 change |= reg_change;
2790 2793
2791 ret = soc_dapm_mixer_update_power(card, kcontrol, connect); 2794 ret = soc_dapm_mixer_update_power(card, kcontrol, connect);
2792 2795