From e141bcf2355b691211fe79fd6e70ade075f7a23e Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 11 Dec 2023 14:40:50 +0100 Subject: [PATCH] 6.6-stable patches added patches: asoc-qcom-sc8280xp-limit-speaker-digital-volumes.patch --- ...8280xp-limit-speaker-digital-volumes.patch | 53 +++++++++++++++++++ queue-6.6/series | 1 + 2 files changed, 54 insertions(+) create mode 100644 queue-6.6/asoc-qcom-sc8280xp-limit-speaker-digital-volumes.patch diff --git a/queue-6.6/asoc-qcom-sc8280xp-limit-speaker-digital-volumes.patch b/queue-6.6/asoc-qcom-sc8280xp-limit-speaker-digital-volumes.patch new file mode 100644 index 00000000000..1d4c0ec0037 --- /dev/null +++ b/queue-6.6/asoc-qcom-sc8280xp-limit-speaker-digital-volumes.patch @@ -0,0 +1,53 @@ +From 716d4e5373e9d1ae993485ab2e3b893bf7104fb1 Mon Sep 17 00:00:00 2001 +From: Srinivas Kandagatla +Date: Mon, 4 Dec 2023 12:47:36 +0000 +Subject: ASoC: qcom: sc8280xp: Limit speaker digital volumes + +From: Srinivas Kandagatla + +commit 716d4e5373e9d1ae993485ab2e3b893bf7104fb1 upstream. + +Limit the speaker digital gains to 0dB so that the users will not damage them. +Currently there is a limit in UCM, but this does not stop the user form +changing the digital gains from command line. So limit this in driver +which makes the speakers more safer without active speaker protection in +place. + +Signed-off-by: Srinivas Kandagatla +Reviewed-by: Johan Hovold +Tested-by: Johan Hovold +Link: https://lore.kernel.org/r/20231204124736.132185-3-srinivas.kandagatla@linaro.org +Signed-off-by: Mark Brown +[ johan: backport to 6.6; rename snd_soc_rtd_to_cpu() ] +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/qcom/sc8280xp.c | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +--- a/sound/soc/qcom/sc8280xp.c ++++ b/sound/soc/qcom/sc8280xp.c +@@ -27,6 +27,23 @@ struct sc8280xp_snd_data { + static int sc8280xp_snd_init(struct snd_soc_pcm_runtime *rtd) + { + struct sc8280xp_snd_data *data = snd_soc_card_get_drvdata(rtd->card); ++ struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0); ++ struct snd_soc_card *card = rtd->card; ++ ++ switch (cpu_dai->id) { ++ case WSA_CODEC_DMA_RX_0: ++ case WSA_CODEC_DMA_RX_1: ++ /* ++ * set limit of 0dB on Digital Volume for Speakers, ++ * this can prevent damage of speakers to some extent without ++ * active speaker protection ++ */ ++ snd_soc_limit_volume(card, "WSA_RX0 Digital Volume", 84); ++ snd_soc_limit_volume(card, "WSA_RX1 Digital Volume", 84); ++ break; ++ default: ++ break; ++ } + + return qcom_snd_wcd_jack_setup(rtd, &data->jack, &data->jack_setup); + } diff --git a/queue-6.6/series b/queue-6.6/series index da4ba72b43b..c9e4a33a7a7 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -236,3 +236,4 @@ mips-loongson64-reserve-vgabios-memory-on-boot.patch mips-loongson64-handle-more-memory-types-passed-from-firmware.patch mips-loongson64-enable-dma-noncoherent-support.patch netfilter-nft_set_pipapo-skip-inactive-elements-during-set-walk.patch +asoc-qcom-sc8280xp-limit-speaker-digital-volumes.patch -- 2.47.3