Re: [PATCH 1/6] ASoC: codecs: wsa884x: remove mute_unmute_on_trigger
From: Jonathan Marek
Date: Mon Nov 24 2025 - 09:57:19 EST
On 11/24/25 9:08 AM, Srinivas Kandagatla wrote:
On 11/24/25 6:45 AM, Jonathan Marek wrote:
trigger is atomic (non-schedulable), and soundwire register writes are notThanks Jonathan for the patch,
safe to run in an atomic context. (bus is locked with a mutex, and qcom
driver's callback can also sleep if the FIFO is full).
We have nonatomic=1 flag set for all the Qualcomm sound cards, Did you
hit any schedule while atomic bug?
Right, I missed that. I'm using a different driver which does not set nonatomic. But this driver to not need nonatomic - mute_unmute_on_trigger is a hack, if there is a timing requirement - then it needs to be explicit, the different timing with this flag is not reliable).
In-fact this change has helped suppress most of the click and pop noises
on laptops, specially with wsa codecs as they accumulate static if the
ports are kept open without sending any data.
28b0b18d5346 is important to fix the click and pop noises. But the useful part is the rest of the commit, not the mute_unmute_on_trigger flag. As long as the mute_stream() happens while the soundwire stream is enabled (between sdw_enable_stream and sdw_disable_stream), there should be no pop click.
AFAIK the pop/click is because of PDM: zeros (soundwire stream off) represent the minimum (negative maximum) amplitude, and the soundwire stream needs to be enabled to output a zero amplitude (alternating ones/zeros). Turning on the amp while the soundwire stream is not enabled will cause jumps between the minimum and zero amplitude.
--srini
The important part of fixing the click/pop issue was removing the PA_EN
writes from the dapm events, AFAICT this flag doesn't help anyway.
Fixes: 28b0b18d5346 ("ASoC: codec: wsa884x: make use of new mute_unmute_on_trigger flag")
Signed-off-by: Jonathan Marek <jonathan@xxxxxxxx>
---
sound/soc/codecs/wsa884x.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/sound/soc/codecs/wsa884x.c b/sound/soc/codecs/wsa884x.c
index 2484d4b8e2d94..0218dfc13bc77 100644
--- a/sound/soc/codecs/wsa884x.c
+++ b/sound/soc/codecs/wsa884x.c
@@ -1840,7 +1840,6 @@ static const struct snd_soc_dai_ops wsa884x_dai_ops = {
.hw_free = wsa884x_hw_free,
.mute_stream = wsa884x_mute_stream,
.set_stream = wsa884x_set_stream,
- .mute_unmute_on_trigger = true,
};
static struct snd_soc_dai_driver wsa884x_dais[] = {