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 Original line 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 mask = (1 << fls(max)) - 1;
	unsigned int invert = mc->invert;
	unsigned int invert = mc->invert;
	unsigned int val;
	unsigned int val;
	int connect, change;
	int connect, change, reg_change = 0;
	struct snd_soc_dapm_update update;
	struct snd_soc_dapm_update update;
	int ret = 0;
	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);
	mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME);


	change = dapm_kcontrol_set_value(kcontrol, val);
	change = dapm_kcontrol_set_value(kcontrol, val);
	if (change) {

	if (reg != SND_SOC_NOPM) {
	if (reg != SND_SOC_NOPM) {
		mask = mask << shift;
		mask = mask << shift;
		val = val << 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.kcontrol = kcontrol;
			update.reg = reg;
			update.reg = reg;
			update.mask = mask;
			update.mask = mask;
			update.val = val;
			update.val = val;
			card->update = &update;
			card->update = &update;
		}
		}

		change |= reg_change;
		}


		ret = soc_dapm_mixer_update_power(card, kcontrol, connect);
		ret = soc_dapm_mixer_update_power(card, kcontrol, connect);