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

Commit 1f84acd2 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'asoc/fix/core' into asoc-linus

parents 7171511e 18626c7e
Loading
Loading
Loading
Loading
+16 −13
Original line number Diff line number Diff line
@@ -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;

@@ -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)) {
		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);