summaryrefslogtreecommitdiff
path: root/sound/soc/qcom/qdsp6/q6routing.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2021-12-06 17:25:10 +0100
committerTakashi Iwai <tiwai@suse.de>2021-12-06 17:25:10 +0100
commit38ddfb2699d524b85929aa7da93bfc3a7f2c9275 (patch)
tree8c03696cd79f4a0c7f7e494dbf2be6313e248c7a /sound/soc/qcom/qdsp6/q6routing.c
parentfb1af5bea4670c835e42fc0c14c49d3499468774 (diff)
parent3fc27e9a1f619b50700f020e6cd270c1b74755f0 (diff)
Merge tag 'asoc-fix-v5.16-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v5.16 A relatively large collection of updates, the size is increased quite a bit by there being some repetitive changes for similar issues that occur multiple times with both notifying control value changes and runtime PM. The Rockchip update looks at first glance like a cleanup but fixes instantiation of the hardware on some systems.
Diffstat (limited to 'sound/soc/qcom/qdsp6/q6routing.c')
-rw-r--r--sound/soc/qcom/qdsp6/q6routing.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/soc/qcom/qdsp6/q6routing.c b/sound/soc/qcom/qdsp6/q6routing.c
index cd74681e811e..928fd23e2c27 100644
--- a/sound/soc/qcom/qdsp6/q6routing.c
+++ b/sound/soc/qcom/qdsp6/q6routing.c
@@ -498,14 +498,16 @@ static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol,
struct session_data *session = &data->sessions[session_id];
if (ucontrol->value.integer.value[0]) {
+ if (session->port_id == be_id)
+ return 0;
+
session->port_id = be_id;
snd_soc_dapm_mixer_update_power(dapm, kcontrol, 1, update);
} else {
- if (session->port_id == be_id) {
- session->port_id = -1;
+ if (session->port_id == -1 || session->port_id != be_id)
return 0;
- }
+ session->port_id = -1;
snd_soc_dapm_mixer_update_power(dapm, kcontrol, 0, update);
}