Skip to content

Commit

Permalink
Merge remote-tracking branch 'asoc/fix/core' into asoc-linus
Browse files Browse the repository at this point in the history
  • Loading branch information
broonie committed Jun 16, 2014
2 parents 7171511 + 18626c7 commit 1f84acd
Showing 1 changed file with 16 additions and 13 deletions.
29 changes: 16 additions & 13 deletions sound/soc/soc-dapm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2755,7 +2755,7 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
unsigned int mask = (1 << fls(max)) - 1;
unsigned int invert = mc->invert;
unsigned int val;
int connect, change;
int connect, change, reg_change = 0;
struct snd_soc_dapm_update update;
int ret = 0;

Expand All @@ -2773,20 +2773,23 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol,
mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME);

change = dapm_kcontrol_set_value(kcontrol, val);
if (change) {
if (reg != SND_SOC_NOPM) {
mask = mask << shift;
val = val << shift;

if (snd_soc_test_bits(codec, reg, mask, val)) {
update.kcontrol = kcontrol;
update.reg = reg;
update.mask = mask;
update.val = val;
card->update = &update;
}

if (reg != SND_SOC_NOPM) {
mask = mask << shift;
val = val << shift;

reg_change = snd_soc_test_bits(codec, reg, mask, val);
}

if (change || reg_change) {
if (reg_change) {
update.kcontrol = kcontrol;
update.reg = reg;
update.mask = mask;
update.val = val;
card->update = &update;
}
change |= reg_change;

ret = soc_dapm_mixer_update_power(card, kcontrol, connect);

Expand Down

0 comments on commit 1f84acd

Please sign in to comment.