Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c9e065c2 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown
Browse files

ASoC: dapm: Make sure to always update the DAPM graph in _put_volsw()



When using auto-muted controls it may happen that the register value will not
change when changing a control from enabled to disabled (since the control might
be physically disabled due to the auto-muting). We have to make sure to still
update the DAPM graph and disconnect the mixer input.

Fixes: commit 57295073 ("ASoC: dapm: Implement mixer input auto-disable")
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 00a41d9f
Loading
Loading
Loading
Loading
+10 −13
Original line number Diff line number Diff line
@@ -2792,24 +2792,21 @@ 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;

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

	if (change) {
		if (reg != SND_SOC_NOPM) {
			if (snd_soc_test_bits(codec, reg, mask, val)) {
				update.kcontrol = kcontrol;
				update.reg = reg;
				update.mask = mask;
				update.val = val;

				card->update = &update;
			}

		}

		ret = soc_dapm_mixer_update_power(card, kcontrol, connect);

		card->update = NULL;