diff options
author | Charles Keepax <ckeepax@opensource.cirrus.com> | 2022-06-23 11:51:17 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2022-06-24 16:21:59 +0100 |
commit | 7f103af4a10f375b9b346b4d0b730f6a66b8c451 (patch) | |
tree | 81b8e554eacdfec7084c85e1ea793dec47dc85e8 /sound | |
parent | 46b0d050c8c7df6dfb2c376aaa149bf2cfc5ca3e (diff) | |
download | linux-7f103af4a10f375b9b346b4d0b730f6a66b8c451.tar.bz2 |
ASoC: cs47l15: Fix event generation for low power mux control
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: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20220623105120.1981154-3-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/cs47l15.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/soc/codecs/cs47l15.c b/sound/soc/codecs/cs47l15.c index 391fd7da331f..1c7d52bef893 100644 --- a/sound/soc/codecs/cs47l15.c +++ b/sound/soc/codecs/cs47l15.c @@ -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[] = { |