summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2022-06-03 14:46:09 +0200
committerMark Brown <broonie@kernel.org>2022-06-24 17:21:44 +0200
commita7786cbae4b2732815da98efa39df96746b5bd0d (patch)
tree68219bb33537220b241060d64555b6b152535227 /sound
parentASoC: wcd9335: Remove RX channel from old list before adding it to a new one (diff)
downloadlinux-a7786cbae4b2732815da98efa39df96746b5bd0d.tar.xz
linux-a7786cbae4b2732815da98efa39df96746b5bd0d.zip
ASoC: wcd9335: Fix spurious event generation
The slimbus mux put operation unconditionally reports a change in value which means that spurious events are generated. Fix this by exiting early in that case. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20220603124609.4024666-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/wcd9335.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c
index 597420679505..d9f135200688 100644
--- a/sound/soc/codecs/wcd9335.c
+++ b/sound/soc/codecs/wcd9335.c
@@ -1287,6 +1287,9 @@ static int slim_rx_mux_put(struct snd_kcontrol *kc,
struct snd_soc_dapm_update *update = NULL;
u32 port_id = w->shift;
+ if (wcd->rx_port_value[port_id] == ucontrol->value.enumerated.item[0])
+ return 0;
+
wcd->rx_port_value[port_id] = ucontrol->value.enumerated.item[0];
/* Remove channel from any list it's in before adding it to a new one */