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

Commit 0e7e515a authored by Charles Keepax's avatar Charles Keepax Committed by Greg Kroah-Hartman
Browse files

ASoC: cs47l15: Fix event generation for low power mux control



[ Upstream commit 7f103af4a10f375b9b346b4d0b730f6a66b8c451 ]

cs47l15_in1_adc_put always returns zero regardless of if the control
value was updated. This results in missing notifications to user-space
of the control change. Update the handling to return 1 when the value is
changed.

Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220623105120.1981154-3-ckeepax@opensource.cirrus.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 20b921f2
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -122,6 +122,9 @@ static int cs47l15_in1_adc_put(struct snd_kcontrol *kcontrol,
		snd_soc_kcontrol_component(kcontrol);
	struct cs47l15 *cs47l15 = snd_soc_component_get_drvdata(component);

	if (!!ucontrol->value.integer.value[0] == cs47l15->in1_lp_mode)
		return 0;

	switch (ucontrol->value.integer.value[0]) {
	case 0:
		/* Set IN1 to normal mode */
@@ -150,7 +153,7 @@ static int cs47l15_in1_adc_put(struct snd_kcontrol *kcontrol,
		break;
	}

	return 0;
	return 1;
}

static const struct snd_kcontrol_new cs47l15_snd_controls[] = {