From: Greg Kroah-Hartman Date: Sat, 3 Feb 2024 16:04:09 +0000 (-0800) Subject: 5.15-stable patches X-Git-Tag: v6.1.77~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a46c1c2754d9d697a957884f653cc997c2c3cfdf;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch --- diff --git a/queue-5.15/asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch b/queue-5.15/asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch new file mode 100644 index 00000000000..36d5861ffe2 --- /dev/null +++ b/queue-5.15/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 +@@ -1577,7 +1577,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) { +@@ -1616,10 +1615,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); +@@ -1647,10 +1644,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-5.15/series b/queue-5.15/series index aa59ec8bf0a..f41a3beca7d 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -297,3 +297,4 @@ gve-fix-use-after-free-vulnerability.patch hid-apple-add-support-for-the-2021-magic-keyboard.patch hid-apple-add-2021-magic-keyboard-fn-key-mapping.patch bonding-remove-print-in-bond_verify_device_path.patch +asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch