* [PATCH v2] ASoC: qcom: x1e80100: limit speaker volumes
@ 2026-04-22 13:30 Tobias Heider
2026-04-22 14:00 ` Srinivas Kandagatla
2026-04-22 14:44 ` Mark Brown
0 siblings, 2 replies; 3+ messages in thread
From: Tobias Heider @ 2026-04-22 13:30 UTC (permalink / raw)
To: Srinivas Kandagatla, Liam Girdwood, Mark Brown, Jaroslav Kysela,
Takashi Iwai
Cc: linux-sound, linux-arm-msm, linux-kernel, Johan Hovold,
Tobias Heider
Limit the digital gain and PA volumes to a combined -3 dB in the machine
driver to reduce the risk of speaker damage until we have active speaker
protection in place (or higher safe levels have been established).
Based on commit c481016bb4f8 ("ASoC: qcom: sc8280xp: limit speaker
volumes") which addressed the same issue on the sc8280x SoC with some
minor changes as explained below.
The Digital Volume behaves almost identical to sc8280x since both use
the same lpass-wsa-macro, but x1e80100 has two sets of controls prefixed
with WSA and WSA2.
For PA x1e80100 machines use wsa884x amplifiers which expose a linear
scale from -9 dB to 9 dB with a 1.5 dB step size giving us
0 dB = -9 dB + 6 * 1.5 dB.
On x1e80100 there are two different speaker topologies we need to handle:
2-Speakers: SpkrLeft, Spkr Right
4-Speakers: WooferLeft, WooferRight, TweeterLeft, TweeterRight
Signed-off-by: Tobias Heider <tobias.heider@canonical.com>
---
On x1e80100 laptops like the Lenovo T14s Gen 6 most of the audio
enablement work has landed upstream at this point meaning it works
out of the box on any Linux system.
One unresolved problem is that there isn't a solution for active
speaker protection yet and the current default seems to be unsafe.
With the current defaults it is trivial to crank up the volume to
a point where the T14s will hit what I believe is a hardware
protection that shuts down the speakers entirely until the next
reboot. I am worried that this means there is also a risk cause
permanent hardware damage with the default settings.
This patch adopts the same limits we currently use for sc8280x to
x1e80100. With this applied I can't trigger the same shutoff I
described above.
---
Changes in v2:
- Adjusted Digital Volume names as suggested by Mark Brown
- Link to v1: https://lore.kernel.org/r/20260421-x1e80100-audio-limit-v1-1-98bac8cee2ee@canonical.com
---
sound/soc/qcom/x1e80100.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/sound/soc/qcom/x1e80100.c b/sound/soc/qcom/x1e80100.c
index a3f4785c4bbe62e7e027deb6d810e0a0275d81c2..c81df41ace8839cf912a55514518f1d8cd3e58c1 100644
--- a/sound/soc/qcom/x1e80100.c
+++ b/sound/soc/qcom/x1e80100.c
@@ -27,10 +27,29 @@ static int x1e80100_snd_init(struct snd_soc_pcm_runtime *rtd)
{
struct x1e80100_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
+ struct snd_soc_card *card = rtd->card;
struct snd_soc_jack *dp_jack = NULL;
int dp_pcm_id = 0;
switch (cpu_dai->id) {
+ case WSA_CODEC_DMA_RX_0:
+ case WSA_CODEC_DMA_RX_1:
+ /*
+ * Set limit of -3 dB on Digital Volume and 0 dB on PA Volume
+ * to reduce the risk of speaker damage until we have active
+ * speaker protection in place.
+ */
+ snd_soc_limit_volume(card, "WSA WSA_RX0 Digital Volume", 81);
+ snd_soc_limit_volume(card, "WSA WSA_RX1 Digital Volume", 81);
+ snd_soc_limit_volume(card, "WSA2 WSA_RX0 Digital Volume", 81);
+ snd_soc_limit_volume(card, "WSA2 WSA_RX1 Digital Volume", 81);
+ snd_soc_limit_volume(card, "SpkrLeft PA Volume", 6);
+ snd_soc_limit_volume(card, "SpkrRight PA Volume", 6);
+ snd_soc_limit_volume(card, "WooferLeft PA Volume", 6);
+ snd_soc_limit_volume(card, "TweeterLeft PA Volume", 6);
+ snd_soc_limit_volume(card, "WooferRight PA Volume", 6);
+ snd_soc_limit_volume(card, "TweeterRight PA Volume", 6);
+ break;
case DISPLAY_PORT_RX_0:
dp_pcm_id = 0;
dp_jack = &data->dp_jack[dp_pcm_id];
---
base-commit: b4e07588e743c989499ca24d49e752c074924a9a
change-id: 20260421-x1e80100-audio-limit-f6e75e0ad422
Best regards,
--
Tobias Heider <tobias.heider@canonical.com>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v2] ASoC: qcom: x1e80100: limit speaker volumes
2026-04-22 13:30 [PATCH v2] ASoC: qcom: x1e80100: limit speaker volumes Tobias Heider
@ 2026-04-22 14:00 ` Srinivas Kandagatla
2026-04-22 14:44 ` Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Srinivas Kandagatla @ 2026-04-22 14:00 UTC (permalink / raw)
To: Tobias Heider, Srinivas Kandagatla, Liam Girdwood, Mark Brown,
Jaroslav Kysela, Takashi Iwai
Cc: linux-sound, linux-arm-msm, linux-kernel, Johan Hovold
On 4/22/26 1:30 PM, Tobias Heider wrote:
> Limit the digital gain and PA volumes to a combined -3 dB in the machine
> driver to reduce the risk of speaker damage until we have active speaker
> protection in place (or higher safe levels have been established).
>
> Based on commit c481016bb4f8 ("ASoC: qcom: sc8280xp: limit speaker
> volumes") which addressed the same issue on the sc8280x SoC with some
> minor changes as explained below.
>
> The Digital Volume behaves almost identical to sc8280x since both use
> the same lpass-wsa-macro, but x1e80100 has two sets of controls prefixed
> with WSA and WSA2.
> For PA x1e80100 machines use wsa884x amplifiers which expose a linear
> scale from -9 dB to 9 dB with a 1.5 dB step size giving us
> 0 dB = -9 dB + 6 * 1.5 dB.
>
> On x1e80100 there are two different speaker topologies we need to handle:
> 2-Speakers: SpkrLeft, Spkr Right
> 4-Speakers: WooferLeft, WooferRight, TweeterLeft, TweeterRight
>
> Signed-off-by: Tobias Heider <tobias.heider@canonical.com>
Thanks Tobias for doing this, this has been long pending.
Bits required for Speaker Protection are also getting tested, hopefully
we can soon send it out.
Tested it on T14s and Dell Latitude 7455
Tested-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com>
--srini
> ---
> On x1e80100 laptops like the Lenovo T14s Gen 6 most of the audio
> enablement work has landed upstream at this point meaning it works
> out of the box on any Linux system.
> One unresolved problem is that there isn't a solution for active
> speaker protection yet and the current default seems to be unsafe.
>
> With the current defaults it is trivial to crank up the volume to
> a point where the T14s will hit what I believe is a hardware
> protection that shuts down the speakers entirely until the next
> reboot. I am worried that this means there is also a risk cause
> permanent hardware damage with the default settings.
>
> This patch adopts the same limits we currently use for sc8280x to
> x1e80100. With this applied I can't trigger the same shutoff I
> described above.
> ---
> Changes in v2:
> - Adjusted Digital Volume names as suggested by Mark Brown
> - Link to v1: https://lore.kernel.org/r/20260421-x1e80100-audio-limit-v1-1-98bac8cee2ee@canonical.com
> ---
> sound/soc/qcom/x1e80100.c | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/sound/soc/qcom/x1e80100.c b/sound/soc/qcom/x1e80100.c
> index a3f4785c4bbe62e7e027deb6d810e0a0275d81c2..c81df41ace8839cf912a55514518f1d8cd3e58c1 100644
> --- a/sound/soc/qcom/x1e80100.c
> +++ b/sound/soc/qcom/x1e80100.c
> @@ -27,10 +27,29 @@ static int x1e80100_snd_init(struct snd_soc_pcm_runtime *rtd)
> {
> struct x1e80100_snd_data *data = snd_soc_card_get_drvdata(rtd->card);
> struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0);
> + struct snd_soc_card *card = rtd->card;
> struct snd_soc_jack *dp_jack = NULL;
> int dp_pcm_id = 0;
>
> switch (cpu_dai->id) {
> + case WSA_CODEC_DMA_RX_0:
> + case WSA_CODEC_DMA_RX_1:
> + /*
> + * Set limit of -3 dB on Digital Volume and 0 dB on PA Volume
> + * to reduce the risk of speaker damage until we have active
> + * speaker protection in place.
> + */
> + snd_soc_limit_volume(card, "WSA WSA_RX0 Digital Volume", 81);
> + snd_soc_limit_volume(card, "WSA WSA_RX1 Digital Volume", 81);
> + snd_soc_limit_volume(card, "WSA2 WSA_RX0 Digital Volume", 81);
> + snd_soc_limit_volume(card, "WSA2 WSA_RX1 Digital Volume", 81);
> + snd_soc_limit_volume(card, "SpkrLeft PA Volume", 6);
> + snd_soc_limit_volume(card, "SpkrRight PA Volume", 6);
> + snd_soc_limit_volume(card, "WooferLeft PA Volume", 6);
> + snd_soc_limit_volume(card, "TweeterLeft PA Volume", 6);
> + snd_soc_limit_volume(card, "WooferRight PA Volume", 6);
> + snd_soc_limit_volume(card, "TweeterRight PA Volume", 6);
> + break;
> case DISPLAY_PORT_RX_0:
> dp_pcm_id = 0;
> dp_jack = &data->dp_jack[dp_pcm_id];
>
> ---
> base-commit: b4e07588e743c989499ca24d49e752c074924a9a
> change-id: 20260421-x1e80100-audio-limit-f6e75e0ad422
>
> Best regards,
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v2] ASoC: qcom: x1e80100: limit speaker volumes
2026-04-22 13:30 [PATCH v2] ASoC: qcom: x1e80100: limit speaker volumes Tobias Heider
2026-04-22 14:00 ` Srinivas Kandagatla
@ 2026-04-22 14:44 ` Mark Brown
1 sibling, 0 replies; 3+ messages in thread
From: Mark Brown @ 2026-04-22 14:44 UTC (permalink / raw)
To: Srinivas Kandagatla, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
Tobias Heider
Cc: linux-sound, linux-arm-msm, linux-kernel, Johan Hovold
On Wed, 22 Apr 2026 15:30:59 +0200, Tobias Heider wrote:
> ASoC: qcom: x1e80100: limit speaker volumes
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.1
Thanks!
[1/1] ASoC: qcom: x1e80100: limit speaker volumes
https://git.kernel.org/broonie/sound/c/0a5ee0e520ef
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-04-22 19:58 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-22 13:30 [PATCH v2] ASoC: qcom: x1e80100: limit speaker volumes Tobias Heider
2026-04-22 14:00 ` Srinivas Kandagatla
2026-04-22 14:44 ` Mark Brown
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox