From: Greg Kroah-Hartman Date: Sat, 3 Feb 2024 16:05:29 +0000 (-0800) Subject: 6.7-stable patches X-Git-Tag: v6.1.77~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af1293d0806823b7791be58f5e1020af837554f0;p=thirdparty%2Fkernel%2Fstable-queue.git 6.7-stable patches added patches: asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch asoc-codecs-wcd938x-fix-headphones-volume-controls.patch asoc-codecs-wsa883x-fix-pa-volume-control.patch asoc-qcom-sc8280xp-limit-speaker-volumes.patch --- diff --git a/queue-6.7/asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch b/queue-6.7/asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch new file mode 100644 index 00000000000..a8dba19bf8a --- /dev/null +++ b/queue-6.7/asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch @@ -0,0 +1,74 @@ +From 46188db080bd1df7d2d28031b89e56f2fdbabd67 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Fri, 19 Jan 2024 12:24:19 +0100 +Subject: ASoC: codecs: lpass-wsa-macro: fix compander volume hack + +From: Johan Hovold + +commit 46188db080bd1df7d2d28031b89e56f2fdbabd67 upstream. + +The LPASS WSA macro codec driver is updating the digital gain settings +behind the back of user space on DAPM events if companding has been +enabled. + +As compander control is exported to user space, this can result in the +digital gain setting being incremented (or decremented) every time the +sound server is started and the codec suspended depending on what the +UCM configuration looks like. + +Soon enough playback will become distorted (or too quiet). + +This is specifically a problem on the Lenovo ThinkPad X13s as this +bypasses the limit for the digital gain setting that has been set by the +machine driver. + +Fix this by simply dropping the compander gain offset hack. If someone +cares about modelling the impact of the compander setting this can +possibly be done by exporting it as a volume control later. + +Note that the volume registers still need to be written after enabling +clocks in order for any prior updates to take effect. + +Fixes: 2c4066e5d428 ("ASoC: codecs: lpass-wsa-macro: add dapm widgets and route") +Cc: stable@vger.kernel.org # 5.11 +Cc: Srinivas Kandagatla +Signed-off-by: Johan Hovold +Link: https://msgid.link/r/20240119112420.7446-4-johan+linaro@kernel.org +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/codecs/lpass-wsa-macro.c | 7 ------- + 1 file changed, 7 deletions(-) + +--- a/sound/soc/codecs/lpass-wsa-macro.c ++++ b/sound/soc/codecs/lpass-wsa-macro.c +@@ -1584,7 +1584,6 @@ static int wsa_macro_enable_interpolator + u16 gain_reg; + u16 reg; + int val; +- int offset_val = 0; + struct wsa_macro *wsa = snd_soc_component_get_drvdata(component); + + if (w->shift == WSA_MACRO_COMP1) { +@@ -1623,10 +1622,8 @@ static int wsa_macro_enable_interpolator + CDC_WSA_RX1_RX_PATH_MIX_SEC0, + CDC_WSA_RX_PGA_HALF_DB_MASK, + CDC_WSA_RX_PGA_HALF_DB_ENABLE); +- offset_val = -2; + } + val = snd_soc_component_read(component, gain_reg); +- val += offset_val; + snd_soc_component_write(component, gain_reg, val); + wsa_macro_config_ear_spkr_gain(component, wsa, + event, gain_reg); +@@ -1654,10 +1651,6 @@ static int wsa_macro_enable_interpolator + CDC_WSA_RX1_RX_PATH_MIX_SEC0, + CDC_WSA_RX_PGA_HALF_DB_MASK, + CDC_WSA_RX_PGA_HALF_DB_DISABLE); +- offset_val = 2; +- val = snd_soc_component_read(component, gain_reg); +- val += offset_val; +- snd_soc_component_write(component, gain_reg, val); + } + wsa_macro_config_ear_spkr_gain(component, wsa, + event, gain_reg); diff --git a/queue-6.7/asoc-codecs-wcd938x-fix-headphones-volume-controls.patch b/queue-6.7/asoc-codecs-wcd938x-fix-headphones-volume-controls.patch new file mode 100644 index 00000000000..7241989e477 --- /dev/null +++ b/queue-6.7/asoc-codecs-wcd938x-fix-headphones-volume-controls.patch @@ -0,0 +1,37 @@ +From 4d0e8bdfa4a57099dc7230952a460903f2e2f8de Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Mon, 22 Jan 2024 10:11:30 +0100 +Subject: ASoC: codecs: wcd938x: fix headphones volume controls + +From: Johan Hovold + +commit 4d0e8bdfa4a57099dc7230952a460903f2e2f8de upstream. + +The lowest headphones volume setting does not mute so the leave the TLV +mute flag unset. + +This is specifically needed to let the sound server use the lowest gain +setting. + +Fixes: c03226ba15fe ("ASoC: codecs: wcd938x: fix dB range for HPHL and HPHR") +Cc: # 6.5 +Cc: Srinivas Kandagatla +Signed-off-by: Johan Hovold +Link: https://msgid.link/r/20240122091130.27463-1-johan+linaro@kernel.org +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/codecs/wcd938x.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/codecs/wcd938x.c ++++ b/sound/soc/codecs/wcd938x.c +@@ -210,7 +210,7 @@ struct wcd938x_priv { + }; + + static const SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(ear_pa_gain, 600, -1800); +-static const DECLARE_TLV_DB_SCALE(line_gain, -3000, 150, -3000); ++static const DECLARE_TLV_DB_SCALE(line_gain, -3000, 150, 0); + static const SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(analog_gain, 0, 3000); + + struct wcd938x_mbhc_zdet_param { diff --git a/queue-6.7/asoc-codecs-wsa883x-fix-pa-volume-control.patch b/queue-6.7/asoc-codecs-wsa883x-fix-pa-volume-control.patch new file mode 100644 index 00000000000..6f598c931ac --- /dev/null +++ b/queue-6.7/asoc-codecs-wsa883x-fix-pa-volume-control.patch @@ -0,0 +1,48 @@ +From b53cc6144a3f6c8b56afcdec89d81195c9b0dc69 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Fri, 19 Jan 2024 12:24:17 +0100 +Subject: ASoC: codecs: wsa883x: fix PA volume control + +From: Johan Hovold + +commit b53cc6144a3f6c8b56afcdec89d81195c9b0dc69 upstream. + +The PA gain can be set in steps of 1.5 dB from -3 dB to 18 dB, that is, +in 15 levels. + +Fix the dB values for the PA volume control as experiments using wsa8835 +show that the first 16 levels all map to the same lowest gain while the +last three map to the highest gain. + +These values specifically need to be correct for the sound server to +provide proper volume control. + +Note that level 0 (-3 dB) does not mute the PA so the mute flag should +also not be set. + +Fixes: cdb09e623143 ("ASoC: codecs: wsa883x: add control, dapm widgets and map") +Cc: stable@vger.kernel.org # 6.0 +Cc: Srinivas Kandagatla +Signed-off-by: Johan Hovold +Link: https://msgid.link/r/20240119112420.7446-2-johan+linaro@kernel.org +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/codecs/wsa883x.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/sound/soc/codecs/wsa883x.c ++++ b/sound/soc/codecs/wsa883x.c +@@ -1098,7 +1098,11 @@ static int wsa_dev_mode_put(struct snd_k + return 1; + } + +-static const DECLARE_TLV_DB_SCALE(pa_gain, -300, 150, -300); ++static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(pa_gain, ++ 0, 14, TLV_DB_SCALE_ITEM(-300, 0, 0), ++ 15, 29, TLV_DB_SCALE_ITEM(-300, 150, 0), ++ 30, 31, TLV_DB_SCALE_ITEM(1800, 0, 0), ++); + + static int wsa883x_get_swr_port(struct snd_kcontrol *kcontrol, + struct snd_ctl_elem_value *ucontrol) diff --git a/queue-6.7/asoc-qcom-sc8280xp-limit-speaker-volumes.patch b/queue-6.7/asoc-qcom-sc8280xp-limit-speaker-volumes.patch new file mode 100644 index 00000000000..e15ef9b89cd --- /dev/null +++ b/queue-6.7/asoc-qcom-sc8280xp-limit-speaker-volumes.patch @@ -0,0 +1,55 @@ +From c481016bb4f8a9c059c39ac06e7b65e233a61f6a Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Mon, 22 Jan 2024 19:18:17 +0100 +Subject: ASoC: qcom: sc8280xp: limit speaker volumes + +From: Johan Hovold + +commit c481016bb4f8a9c059c39ac06e7b65e233a61f6a upstream. + +The UCM configuration for the Lenovo ThinkPad X13s has up until now +been setting the speaker PA volume to the minimum -3 dB when enabling +the speakers, but this does not prevent the user from increasing the +volume further. + +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). + +Note that the PA volume limit cannot be set lower than 0 dB or +PulseAudio gets confused when the first 16 levels all map to -3 dB. + +Also note that this will probably need to be generalised using +machine-specific limits, but a common limit should do for now. + +Cc: # 6.5 +Signed-off-by: Johan Hovold +Link: https://msgid.link/r/20240122181819.4038-3-johan+linaro@kernel.org +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman +--- + sound/soc/qcom/sc8280xp.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +--- a/sound/soc/qcom/sc8280xp.c ++++ b/sound/soc/qcom/sc8280xp.c +@@ -34,12 +34,14 @@ static int sc8280xp_snd_init(struct snd_ + 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 ++ * 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_RX0 Digital Volume", 84); +- snd_soc_limit_volume(card, "WSA_RX1 Digital Volume", 84); ++ snd_soc_limit_volume(card, "WSA_RX0 Digital Volume", 81); ++ snd_soc_limit_volume(card, "WSA_RX1 Digital Volume", 81); ++ snd_soc_limit_volume(card, "SpkrLeft PA Volume", 17); ++ snd_soc_limit_volume(card, "SpkrRight PA Volume", 17); + break; + default: + break; diff --git a/queue-6.7/series b/queue-6.7/series index 488e172c2c8..6efb3088676 100644 --- a/queue-6.7/series +++ b/queue-6.7/series @@ -349,3 +349,7 @@ revert-drm-amd-display-disable-psr-su-on-parade-0803-tcon-again.patch drm-msm-dsi-enable-runtime-pm.patch selftests-bpf-remove-flaky-test_btf_id-test.patch bonding-remove-print-in-bond_verify_device_path.patch +asoc-qcom-sc8280xp-limit-speaker-volumes.patch +asoc-codecs-wcd938x-fix-headphones-volume-controls.patch +asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch +asoc-codecs-wsa883x-fix-pa-volume-control.patch