]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 3 Feb 2024 16:04:09 +0000 (08:04 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 3 Feb 2024 16:04:09 +0000 (08:04 -0800)
added patches:
asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch

queue-5.15/asoc-codecs-lpass-wsa-macro-fix-compander-volume-hack.patch [new file with mode: 0644]
queue-5.15/series

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 (file)
index 0000000..36d5861
--- /dev/null
@@ -0,0 +1,74 @@
+From 46188db080bd1df7d2d28031b89e56f2fdbabd67 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Fri, 19 Jan 2024 12:24:19 +0100
+Subject: ASoC: codecs: lpass-wsa-macro: fix compander volume hack
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+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 <srinivas.kandagatla@linaro.org>
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Link: https://msgid.link/r/20240119112420.7446-4-johan+linaro@kernel.org
+Signed-off-by: Mark Brown <broonie@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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);
index aa59ec8bf0a8331f2edc54da98f5fb185eb33f78..f41a3beca7dc16d00b36eb7110811c521f43df26 100644 (file)
@@ -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