]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: qcom: x1e78100-t14s: Enable audio headset support
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Thu, 27 Mar 2025 10:06:33 +0000 (10:06 +0000)
committerBjorn Andersson <andersson@kernel.org>
Fri, 16 May 2025 20:44:36 +0000 (21:44 +0100)
On Lenovo ThinkPad T14s, the headset is connected via a HiFi mux to
support CTIA and OMTP headsets. This switch is used to minimise pop and
click during headset type switching.

Enable the mux controls required to power this switch along with wiring up
gpio that control the headset switching.

Without this, headset audio will be very noisy and might see headset
detection errors.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Tested-by: Christopher Obbard <christopher.obbard@linaro.org>
Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20250327100633.11530-7-srinivas.kandagatla@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi

index 14ddf4fc7693a8f9a8bf9d657c3a377741b21217..ac1dddf27da30e6a9f7e1d1ecbd5192bf2d0671e 100644 (file)
@@ -37,6 +37,7 @@
                qcom,tx-device = <&wcd_tx>;
 
                reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
+               mux-controls = <&us_euro_mux_ctrl>;
 
                vdd-buck-supply = <&vreg_l15b_1p8>;
                vdd-rxtx-supply = <&vreg_l15b_1p8>;
                };
        };
 
+       /* two muxes together support CTIA and OMTP switching */
+       us_euro_mux_ctrl: mux-controller {
+               compatible = "gpio-mux";
+               pinctrl-0 = <&us_euro_hs_sel>;
+               pinctrl-names = "default";
+               mux-supply = <&vreg_l16b_2p5>;
+               #mux-control-cells = <0>;
+               mux-gpios = <&tlmm 68 GPIO_ACTIVE_HIGH>;
+       };
+
        reserved-memory {
                linux,cma {
                        compatible = "shared-dma-pool";
                        regulator-always-on;
                };
 
+               vreg_l16b_2p5: ldo16 {
+                       regulator-name = "vreg_l16b_2p5";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <2504000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
                vreg_l17b_2p5: ldo17 {
                        regulator-name = "vreg_l17b_2p5";
                        regulator-min-microvolt = <2504000>;
                bias-disable;
        };
 
+       us_euro_hs_sel: us-euro-hs-sel-state {
+               pins = "gpio68";
+               function = "gpio";
+               bias-pull-down;
+               drive-strength = <2>;
+       };
+
        usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
                pins = "gpio188";
                function = "gpio";