| commit b0b5b2406d878bb06220e03d0b0c6c512dbba6c2
|
| Author: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
|
| Date: Thu Feb 6 08:27:56 2025 +0100
|
|
|
| arm64: Add bluetooth and sound support for slim 7x
|
|
|
| comparing with CRD and other dts for a more complete support of the 7X
|
| also include sound, WCN7850 PMU / WLAN / BT
|
|
|
| Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
|
|
|
| diff --git a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
|
| index 00040e7fc19d..69b0c5eacb5f 100644
|
| --- a/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
|
| +++ b/arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts
|
| @@ -20,6 +20,7 @@ / {
|
|
|
| aliases {
|
| serial0 = &uart21;
|
| + serial1 = &uart14;
|
| };
|
|
|
| chosen {
|
| @@ -180,6 +181,38 @@ sound {
|
| "WooferRight IN", "WSA2 WSA_SPK2 OUT",
|
| "TweeterRight IN", "WSA2 WSA_SPK2 OUT";
|
|
|
| + wcd-playback-dai-link {
|
| + link-name = "WCD Playback";
|
| +
|
| + cpu {
|
| + sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
|
| + };
|
| +
|
| + codec {
|
| + sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
|
| + };
|
| +
|
| + platform {
|
| + sound-dai = <&q6apm>;
|
| + };
|
| + };
|
| +
|
| + wcd-capture-dai-link {
|
| + link-name = "WCD Capture";
|
| +
|
| + cpu {
|
| + sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
|
| + };
|
| +
|
| + codec {
|
| + sound-dai = <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>;
|
| + };
|
| +
|
| + platform {
|
| + sound-dai = <&q6apm>;
|
| + };
|
| + };
|
| +
|
| wsa-dai-link {
|
| link-name = "WSA Playback";
|
|
|
| @@ -216,6 +249,23 @@ platform {
|
| };
|
| };
|
|
|
| + vreg_misc_3p3: regulator-misc-3p3 {
|
| + compatible = "regulator-fixed";
|
| +
|
| + regulator-name = "VREG_MISC_3P3";
|
| + regulator-min-microvolt = <3300000>;
|
| + regulator-max-microvolt = <3300000>;
|
| +
|
| + gpio = <&pm8550ve_8_gpios 6 GPIO_ACTIVE_HIGH>;
|
| + enable-active-high;
|
| +
|
| + pinctrl-names = "default";
|
| + pinctrl-0 = <&misc_3p3_reg_en>;
|
| +
|
| + regulator-boot-on;
|
| + regulator-always-on;
|
| + };
|
| +
|
| vreg_edp_3p3: regulator-edp-3p3 {
|
| compatible = "regulator-fixed";
|
|
|
| @@ -402,6 +452,133 @@ vph_pwr: regulator-vph-pwr {
|
| regulator-always-on;
|
| regulator-boot-on;
|
| };
|
| +
|
| + wcd938x: audio-codec {
|
| + compatible = "qcom,wcd9385-codec";
|
| +
|
| + pinctrl-names = "default";
|
| + pinctrl-0 = <&wcd_default>;
|
| +
|
| + qcom,micbias1-microvolt = <1800000>;
|
| + qcom,micbias2-microvolt = <1800000>;
|
| + qcom,micbias3-microvolt = <1800000>;
|
| + qcom,micbias4-microvolt = <1800000>;
|
| + qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
|
| + qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
|
| + qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
|
| + qcom,rx-device = <&wcd_rx>;
|
| + qcom,tx-device = <&wcd_tx>;
|
| +
|
| + reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
|
| +
|
| + vdd-buck-supply = <&vreg_l15b_1p8>;
|
| + vdd-rxtx-supply = <&vreg_l15b_1p8>;
|
| + vdd-io-supply = <&vreg_l15b_1p8>;
|
| + vdd-mic-bias-supply = <&vreg_bob1>;
|
| +
|
| + #sound-dai-cells = <1>;
|
| + };
|
| +
|
| + vreg_wcn_3p3: regulator-wcn-3p3 {
|
| + compatible = "regulator-fixed";
|
| +
|
| + regulator-name = "VREG_WCN_3P3";
|
| + regulator-min-microvolt = <3300000>;
|
| + regulator-max-microvolt = <3300000>;
|
| +
|
| + gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
|
| + enable-active-high;
|
| +
|
| + pinctrl-0 = <&wcn_sw_en>;
|
| + pinctrl-names = "default";
|
| +
|
| + regulator-boot-on;
|
| + };
|
| +
|
| + /*
|
| + * TODO: These two regulators are actually part of the removable M.2
|
| + * card and not the CRD mainboard. Need to describe this differently.
|
| + * Functionally it works correctly, because all we need to do is to
|
| + * turn on the actual 3.3V supply above.
|
| + */
|
| + vreg_wcn_0p95: regulator-wcn-0p95 {
|
| + compatible = "regulator-fixed";
|
| +
|
| + regulator-name = "VREG_WCN_0P95";
|
| + regulator-min-microvolt = <950000>;
|
| + regulator-max-microvolt = <950000>;
|
| +
|
| + vin-supply = <&vreg_wcn_3p3>;
|
| + };
|
| +
|
| + vreg_wcn_1p9: regulator-wcn-1p9 {
|
| + compatible = "regulator-fixed";
|
| +
|
| + regulator-name = "VREG_WCN_1P9";
|
| + regulator-min-microvolt = <1900000>;
|
| + regulator-max-microvolt = <1900000>;
|
| +
|
| + vin-supply = <&vreg_wcn_3p3>;
|
| + };
|
| +
|
| + wcn7850-pmu {
|
| + compatible = "qcom,wcn7850-pmu";
|
| +
|
| + vdd-supply = <&vreg_wcn_0p95>;
|
| + vddio-supply = <&vreg_l15b_1p8>;
|
| + vddaon-supply = <&vreg_wcn_0p95>;
|
| + vdddig-supply = <&vreg_wcn_0p95>;
|
| + vddrfa1p2-supply = <&vreg_wcn_1p9>;
|
| + vddrfa1p8-supply = <&vreg_wcn_1p9>;
|
| +
|
| + wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
|
| + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
|
| +
|
| + pinctrl-0 = <&wcn_wlan_bt_en>;
|
| + pinctrl-names = "default";
|
| +
|
| + regulators {
|
| + vreg_pmu_rfa_cmn: ldo0 {
|
| + regulator-name = "vreg_pmu_rfa_cmn";
|
| + };
|
| +
|
| + vreg_pmu_aon_0p59: ldo1 {
|
| + regulator-name = "vreg_pmu_aon_0p59";
|
| + };
|
| +
|
| + vreg_pmu_wlcx_0p8: ldo2 {
|
| + regulator-name = "vreg_pmu_wlcx_0p8";
|
| + };
|
| +
|
| + vreg_pmu_wlmx_0p85: ldo3 {
|
| + regulator-name = "vreg_pmu_wlmx_0p85";
|
| + };
|
| +
|
| + vreg_pmu_btcmx_0p85: ldo4 {
|
| + regulator-name = "vreg_pmu_btcmx_0p85";
|
| + };
|
| +
|
| + vreg_pmu_rfa_0p8: ldo5 {
|
| + regulator-name = "vreg_pmu_rfa_0p8";
|
| + };
|
| +
|
| + vreg_pmu_rfa_1p2: ldo6 {
|
| + regulator-name = "vreg_pmu_rfa_1p2";
|
| + };
|
| +
|
| + vreg_pmu_rfa_1p8: ldo7 {
|
| + regulator-name = "vreg_pmu_rfa_1p8";
|
| + };
|
| +
|
| + vreg_pmu_pcie_0p9: ldo8 {
|
| + regulator-name = "vreg_pmu_pcie_0p9";
|
| + };
|
| +
|
| + vreg_pmu_pcie_1p8: ldo9 {
|
| + regulator-name = "vreg_pmu_pcie_1p8";
|
| + };
|
| + };
|
| + };
|
| };
|
|
|
| &apps_rsc {
|
| @@ -448,6 +625,34 @@ vreg_l2b_3p0: ldo2 {
|
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| };
|
|
|
| + vreg_l4b_1p8: ldo4 {
|
| + regulator-name = "vreg_l4b_1p8";
|
| + regulator-min-microvolt = <1800000>;
|
| + regulator-max-microvolt = <1800000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| + vreg_l5b_3p0: ldo5 {
|
| + regulator-name = "vreg_l5b_3p0";
|
| + regulator-min-microvolt = <3000000>;
|
| + regulator-max-microvolt = <3000000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| + vreg_l6b_1p8: ldo6 {
|
| + regulator-name = "vreg_l6b_1p8";
|
| + regulator-min-microvolt = <1800000>;
|
| + regulator-max-microvolt = <2960000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| + vreg_l7b_2p8: ldo7 {
|
| + regulator-name = "vreg_l7b_2p8";
|
| + regulator-min-microvolt = <2800000>;
|
| + regulator-max-microvolt = <2800000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| vreg_l8b_3p0: ldo8 {
|
| regulator-name = "vreg_l8b_3p0";
|
| regulator-min-microvolt = <3072000>;
|
| @@ -455,6 +660,20 @@ vreg_l8b_3p0: ldo8 {
|
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| };
|
|
|
| + vreg_l9b_2p9: ldo9 {
|
| + regulator-name = "vreg_l9b_2p9";
|
| + regulator-min-microvolt = <2960000>;
|
| + regulator-max-microvolt = <2960000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| + vreg_l10b_1p8: ldo10 {
|
| + regulator-name = "vreg_l10b_1p8";
|
| + regulator-min-microvolt = <1800000>;
|
| + regulator-max-microvolt = <1800000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| vreg_l12b_1p2: ldo12 {
|
| regulator-name = "vreg_l12b_1p2";
|
| regulator-min-microvolt = <1200000>;
|
| @@ -463,6 +682,13 @@ vreg_l12b_1p2: ldo12 {
|
| regulator-always-on;
|
| };
|
|
|
| + vreg_l13b_3p0: ldo13 {
|
| + regulator-name = "vreg_l13b_3p0";
|
| + regulator-min-microvolt = <3072000>;
|
| + regulator-max-microvolt = <3100000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| vreg_l14b_3p0: ldo14 {
|
| regulator-name = "vreg_l14b_3p0";
|
| regulator-min-microvolt = <3072000>;
|
| @@ -477,6 +703,20 @@ vreg_l15b_1p8: ldo15 {
|
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| regulator-always-on;
|
| };
|
| +
|
| + vreg_l16b_2p9: ldo16 {
|
| + regulator-name = "vreg_l16b_2p9";
|
| + regulator-min-microvolt = <2912000>;
|
| + regulator-max-microvolt = <2912000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| +
|
| + vreg_l17b_2p5: ldo17 {
|
| + regulator-name = "vreg_l17b_2p5";
|
| + regulator-min-microvolt = <2504000>;
|
| + regulator-max-microvolt = <2504000>;
|
| + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
|
| + };
|
| };
|
|
|
| regulators-1 {
|
| @@ -713,6 +953,9 @@ touchpad@2c {
|
| hid-descr-addr = <0x20>;
|
| interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
|
|
|
| + vdd-supply = <&vreg_misc_3p3>;
|
| + vddl-supply = <&vreg_l12b_1p2>;
|
| +
|
| pinctrl-0 = <&tpad_default>;
|
| pinctrl-names = "default";
|
|
|
| @@ -726,6 +969,9 @@ keyboard@3a {
|
| hid-descr-addr = <0x1>;
|
| interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
|
|
|
| + vdd-supply = <&vreg_misc_3p3>;
|
| + vddl-supply = <&vreg_l12b_1p2>;
|
| +
|
| pinctrl-0 = <&kybd_default>;
|
| pinctrl-names = "default";
|
|
|
| @@ -733,22 +979,6 @@ keyboard@3a {
|
| };
|
| };
|
|
|
| -&i2c5 {
|
| - clock-frequency = <400000>;
|
| -
|
| - status = "okay";
|
| -
|
| - embedded-controller@76 {
|
| - compatible = "lenovo,yoga-slim7x-ec", "qcom,x1e-it8987-ec";
|
| - reg = <0x76>;
|
| -
|
| - interrupts-extended = <&tlmm 66 IRQ_TYPE_EDGE_FALLING>;
|
| -
|
| - pinctrl-0 = <&ec_int_n_default>;
|
| - pinctrl-names = "default";
|
| - };
|
| -};
|
| -
|
| &i2c1 {
|
| clock-frequency = <400000>;
|
|
|
| @@ -863,6 +1093,22 @@ retimer_ss0_con_sbu_out: endpoint {
|
| };
|
| };
|
|
|
| +&i2c5 {
|
| + clock-frequency = <400000>;
|
| +
|
| + status = "okay";
|
| +
|
| + embedded-controller@76 {
|
| + compatible = "lenovo,yoga-slim7x-ec", "qcom,x1e-it8987-ec";
|
| + reg = <0x76>;
|
| +
|
| + interrupts-extended = <&tlmm 66 IRQ_TYPE_EDGE_FALLING>;
|
| +
|
| + pinctrl-0 = <&ec_int_n_default>;
|
| + pinctrl-names = "default";
|
| + };
|
| +};
|
| +
|
| &i2c7 {
|
| clock-frequency = <400000>;
|
|
|
| @@ -933,6 +1179,9 @@ touchscreen@14 {
|
| hid-descr-addr = <0x1>;
|
| interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>;
|
|
|
| + vdd-supply = <&vreg_misc_3p3>;
|
| + vddl-supply = <&vreg_l15b_1p8>;
|
| +
|
| pinctrl-0 = <&ts0_default>;
|
| pinctrl-names = "default";
|
| };
|
| @@ -1066,6 +1315,15 @@ wifi@0 {
|
| compatible = "pci17cb,1107";
|
| reg = <0x10000 0x0 0x0 0x0 0x0>;
|
|
|
| + vddaon-supply = <&vreg_pmu_aon_0p59>;
|
| + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
|
| + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
|
| + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
|
| + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
|
| + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
|
| + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
|
| + vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
|
| + vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
|
| qcom,ath12k-calibration-variant = "LES790";
|
| };
|
| };
|
| @@ -1237,6 +1495,27 @@ left_tweeter: speaker@0,1 {
|
| };
|
| };
|
|
|
| +&swr1 {
|
| + status = "okay";
|
| +
|
| + /* WCD9385 RX */
|
| + wcd_rx: codec@0,4 {
|
| + compatible = "sdw20217010d00";
|
| + reg = <0 4>;
|
| + qcom,rx-port-mapping = <1 2 3 4 5>;
|
| + };
|
| +};
|
| +
|
| +&swr2 {
|
| + status = "okay";
|
| +
|
| + /* WCD9385 TX */
|
| + wcd_tx: codec@0,3 {
|
| + compatible = "sdw20217010d00";
|
| + reg = <0 3>;
|
| + qcom,tx-port-mapping = <2 2 3 4>;
|
| + };
|
| +};
|
|
|
| &swr3 {
|
| status = "okay";
|
| @@ -1444,6 +1723,52 @@ usb2_pwr_3p3_reg_en: usb2-pwr-3p3-reg-en-state {
|
| drive-strength = <2>;
|
| bias-disable;
|
| };
|
| +
|
| + wcd_default: wcd-reset-n-active-state {
|
| + pins = "gpio191";
|
| + function = "gpio";
|
| + drive-strength = <16>;
|
| + bias-disable;
|
| + output-low;
|
| + };
|
| +
|
| + wcn_sw_en: wcn-sw-en-state {
|
| + pins = "gpio214";
|
| + function = "gpio";
|
| + drive-strength = <2>;
|
| + bias-disable;
|
| + };
|
| +
|
| + wcn_wlan_bt_en: wcn-wlan-bt-en-state {
|
| + pins = "gpio116", "gpio117";
|
| + function = "gpio";
|
| + drive-strength = <2>;
|
| + bias-disable;
|
| + };
|
| +
|
| + wwan_sw_en: wwan-sw-en-state {
|
| + pins = "gpio221";
|
| + function = "gpio";
|
| + drive-strength = <4>;
|
| + bias-disable;
|
| + };
|
| +};
|
| +
|
| +&uart14 {
|
| + status = "okay";
|
| +
|
| + bluetooth {
|
| + compatible = "qcom,wcn7850-bt";
|
| + max-speed = <3200000>;
|
| +
|
| + vddaon-supply = <&vreg_pmu_aon_0p59>;
|
| + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
|
| + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
|
| + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
|
| + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
|
| + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
|
| + vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
|
| + };
|
| };
|
|
|
| &uart21 {
|