* [PATCH v4 0/3] arm64: dts: qcom: Lenovo ThinkPad T14s Gen 7 (Mahua) support
@ 2026-09-29 22:18 Srinivas Kandagatla
2026-09-29 22:18 ` [PATCH v4 1/3] dt-bindings: arm: qcom: add Lenovo ThinkPad T14s Gen 7 (Mahua) Srinivas Kandagatla
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Srinivas Kandagatla @ 2026-09-29 22:18 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Abel Vesa, Neil Armstrong, Dmitry Baryshkov, linux-arm-msm,
devicetree, linux-kernel, Srinivas Kandagatla
Add support for the Lenovo ThinkPad T14s Gen 7 (Mahua), a Snapdragon X2
Elite laptop. Patch 1 adds the board compatible under qcom,mahua.
Patch 2 is the T14s Gen 7 (LCD) device tree; it follows the Qualcomm
Glymur reference design used by mahua-crd. Patch 3 allowlists QSEECOM
on this platform.
Currently working on the board: internal eDP display (with backlight
on/off), WSA8845 speaker playback and DMIC capture, DisplayPort audio
on the two USB-C DP outputs, USB-C (host + charging on both ports),
WCN7850 Wi-Fi and Bluetooth, NVMe, HID-over-I2C touchpad / keyboard /
TrackPoint, lid switch. WWAN wiring is included but untested (no such
SKU on hand).
Real backlight brightness control needs the PMK8850 LPG/PWM (the
EDP_BL/PWMR_BV_PS signal on the schematic). That will follow as a
separate series adding qcom,pmk8850-pwm to leds-qcom-lpg, a PWM subnode
to pmk8850.dtsi, and switching the T14s backlight to pwm-backlight.
Changes since v3 [1]:
- Address Sashiko AI review [2]:
* fixed conflciting gpios
* add panel backlight switch.
- Sort PMIC includes alphabetically.
- Pick up Acked-by: Rob Herring on the dt-bindings patch.
[1] https://lore.kernel.org/all/20260928145122.1337186-1-srinivas.kandagatla@oss.qualcomm.com/
[2] https://sashiko.dev/#/patchset/20260928145122.1337186-1-srinivas.kandagatla@oss.qualcomm.com
Srinivas Kandagatla (3):
dt-bindings: arm: qcom: add Lenovo ThinkPad T14s Gen 7 (Mahua)
arm64: dts: qcom: Add Lenovo ThinkPad T14s Gen 7
firmware: qcom: scm: Allow QSEECOM on ThinkPad T14s Gen 7
.../devicetree/bindings/arm/qcom.yaml | 7 +
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../mahua-lenovo-thinkpad-t14s-gen7-lcd.dts | 1277 +++++++++++++++++
drivers/firmware/qcom/qcom_scm.c | 1 +
4 files changed, 1286 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH v4 1/3] dt-bindings: arm: qcom: add Lenovo ThinkPad T14s Gen 7 (Mahua) 2026-09-29 22:18 [PATCH v4 0/3] arm64: dts: qcom: Lenovo ThinkPad T14s Gen 7 (Mahua) support Srinivas Kandagatla @ 2026-09-29 22:18 ` Srinivas Kandagatla 2026-09-29 22:18 ` [PATCH v4 2/3] arm64: dts: qcom: Add Lenovo ThinkPad T14s Gen 7 Srinivas Kandagatla 2026-09-29 22:18 ` [PATCH v4 3/3] firmware: qcom: scm: Allow QSEECOM on " Srinivas Kandagatla 2 siblings, 0 replies; 5+ messages in thread From: Srinivas Kandagatla @ 2026-09-29 22:18 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Abel Vesa, Neil Armstrong, Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel, Srinivas Kandagatla Add lenovo,thinkpad-t14s-gen7 as a board compatible under qcom,mahua. The T14s Gen 7 uses the Mahua SoC (a 12-core variant of Glymur with cluster2 / cpu12-cpu17 fused off) rather than Glymur proper, matching what the platform's ACPI MADT dump reports (12 enabled + 6 disabled processors). Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> Acked-by: Rob Herring (Arm) <robh@kernel.org> --- Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml index 18a13b4a460f..de4647501085 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -194,6 +194,13 @@ properties: - qcom,mahua-crd - const: qcom,mahua + - items: + - enum: + - lenovo,thinkpad-t14s-gen7-lcd + - lenovo,thinkpad-t14s-gen7-oled + - const: lenovo,thinkpad-t14s-gen7 + - const: qcom,mahua + - description: Sierra Wireless MangOH Green with WP8548 Module items: - const: swir,mangoh-green-wp8548 -- 2.53.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v4 2/3] arm64: dts: qcom: Add Lenovo ThinkPad T14s Gen 7 2026-09-29 22:18 [PATCH v4 0/3] arm64: dts: qcom: Lenovo ThinkPad T14s Gen 7 (Mahua) support Srinivas Kandagatla 2026-09-29 22:18 ` [PATCH v4 1/3] dt-bindings: arm: qcom: add Lenovo ThinkPad T14s Gen 7 (Mahua) Srinivas Kandagatla @ 2026-09-29 22:18 ` Srinivas Kandagatla 2026-10-01 2:30 ` Bjorn Andersson 2026-09-29 22:18 ` [PATCH v4 3/3] firmware: qcom: scm: Allow QSEECOM on " Srinivas Kandagatla 2 siblings, 1 reply; 5+ messages in thread From: Srinivas Kandagatla @ 2026-09-29 22:18 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Abel Vesa, Neil Armstrong, Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel, Srinivas Kandagatla, Abel Vesa, Konrad Dybcio Introduce a device tree for the Mahua-based Lenovo ThinkPad T14s Gen 7, a Snapdragon X2 Elite laptop. It follows the Qualcomm Glymur reference design used by mahua-crd. Currently working: - Display (internal eDP panel) - Audio playback and capture (2x WSA8845 speakers on swr0, DMICs via the VA macro) - DisplayPort audio on the two USB-C DP outputs (DP0/DP1) - USB-C (host + charging on both ports) - Wi-Fi (WCN7850 on PCIe4), Bluetooth (over uart14) - NVMe on PCIe5 - HID-over-I2C touchpad, keyboard and TrackPoint on i2c0 - Lid switch - Internal USB2 camera on usb_hs (via PTN3222 redriver) - Goodix fingerprint reader on usb_2 - WWAN wiring is included but remains untested due to lack of access to such a SKU. Assisted-by: Claude:claude-opus-4-7 Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> --- arch/arm64/boot/dts/qcom/Makefile | 1 + .../mahua-lenovo-thinkpad-t14s-gen7-lcd.dts | 1277 +++++++++++++++++ 2 files changed, 1278 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 7ee7b98994c2..a9e372e0285a 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -62,6 +62,7 @@ dtb-$(CONFIG_ARCH_QCOM) += lemans-evk-el2.dtb lemans-evk-ifp-mezzanine-dtbs := lemans-evk.dtb lemans-evk-ifp-mezzanine.dtbo dtb-$(CONFIG_ARCH_QCOM) += lemans-evk-ifp-mezzanine.dtb dtb-$(CONFIG_ARCH_QCOM) += mahua-crd.dtb +dtb-$(CONFIG_ARCH_QCOM) += mahua-lenovo-thinkpad-t14s-gen7-lcd.dtb dtb-$(CONFIG_ARCH_QCOM) += milos-fairphone-fp6.dtb dtb-$(CONFIG_ARCH_QCOM) += milos-nothing-asteroids.dtb dtb-$(CONFIG_ARCH_QCOM) += monaco-arduino-monza.dtb diff --git a/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts b/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts new file mode 100644 index 000000000000..b3c6559df964 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts @@ -0,0 +1,1277 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ +/dts-v1/; + +#include "mahua.dtsi" + +#include "pmcx0102.dtsi" +#include "pmh0101.dtsi" +#include "pmh0104-glymur.dtsi" +#include "pmh0110-glymur.dtsi" +#include "pmk8850.dtsi" +#include "smb2370.dtsi" + +#include <dt-bindings/input/gpio-keys.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> + +/* PMICs tied to Glymur's cluster2 are absent on Mahua. */ +/delete-node/ &pmcx0102_d_e0; +/delete-node/ &pmcx0102_d0_thermal; +/delete-node/ &pmh0104_i_e0; +/delete-node/ &pmh0104_i0_thermal; +/delete-node/ &pmh0104_j_e0; +/delete-node/ &pmh0104_j0_thermal; + +/ { + model = "Lenovo ThinkPad T14s Gen 7 (LCD)"; + compatible = "lenovo,thinkpad-t14s-gen7-lcd", "lenovo,thinkpad-t14s-gen7", + "qcom,mahua"; + + aliases { + i2c0 = &i2c0; + i2c5 = &i2c5; + + serial0 = &uart21; + serial1 = &uart14; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + clocks { + xo_board: xo-board { + compatible = "fixed-clock"; + clock-frequency = <38400000>; + #clock-cells = <0>; + }; + + sleep_clk: sleep-clk { + compatible = "fixed-clock"; + clock-frequency = <32000>; + #clock-cells = <0>; + }; + }; + + backlight: backlight { + compatible = "gpio-backlight"; + gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&edp_bl_en>; + pinctrl-names = "default"; + }; + + gpio-keys { + compatible = "gpio-keys"; + + pinctrl-0 = <&hall_int_n_default>; + pinctrl-names = "default"; + + switch-lid { + label = "lid"; + gpios = <&tlmm 92 GPIO_ACTIVE_LOW>; + linux,input-type = <EV_SW>; + linux,code = <SW_LID>; + wakeup-source; + wakeup-event-action = <EV_ACT_DEASSERTED>; + }; + }; + + pmic-glink { + compatible = "qcom,glymur-pmic-glink", + "qcom,pmic-glink"; + #address-cells = <1>; + #size-cells = <0>; + + /* Left-side USB-C port */ + connector@0 { + compatible = "usb-c-connector"; + reg = <0>; + power-role = "dual"; + data-role = "dual"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + pmic_glink_hs_in: endpoint { + remote-endpoint = <&usb_0_dwc3_hs>; + }; + }; + + port@1 { + reg = <1>; + + pmic_glink_ss_in: endpoint { + remote-endpoint = <&usb_0_qmpphy_out>; + }; + }; + }; + }; + + /* Right-side USB-C port */ + connector@1 { + compatible = "usb-c-connector"; + reg = <1>; + power-role = "dual"; + data-role = "dual"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + pmic_glink_hs_in1: endpoint { + remote-endpoint = <&usb_1_dwc3_hs>; + }; + }; + + port@1 { + reg = <1>; + + pmic_glink_ss_in1: endpoint { + remote-endpoint = <&usb_1_qmpphy_out>; + }; + }; + }; + }; + }; + + vreg_edp_3p3: regulator-edp-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_EDP_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&edp_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + + vreg_edp_bl: regulator-edp-bl { + compatible = "regulator-fixed"; + + regulator-name = "VREG_EDP_BL"; + regulator-min-microvolt = <3600000>; + regulator-max-microvolt = <3600000>; + + gpio = <&tlmm 19 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&edp_bl_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + regulator-always-on; + }; + + vreg_misc_3p3: regulator-misc-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_MISC_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&pmh0110_f_e0_gpios 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&misc_3p3_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + regulator-always-on; + }; + + vreg_nvme: regulator-nvme { + compatible = "regulator-fixed"; + + regulator-name = "VREG_NVME_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&pmh0101_gpios 14 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&nvme_reg_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + + 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_3p3: regulator-wcn-3p3 { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WCN_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 94 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&wcn_sw_en>; + pinctrl-names = "default"; + + regulator-boot-on; + }; + + vreg_wwan: regulator-wwan { + compatible = "regulator-fixed"; + + regulator-name = "VREG_WWAN_3P3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + + gpio = <&tlmm 246 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 = <&wwan_reg_en>; + pinctrl-names = "default"; + }; + + reserved-memory { + linux,cma { + compatible = "shared-dma-pool"; + size = <0x0 0x10000000>; + reusable; + linux,cma-default; + }; + }; + + sound { + compatible = "qcom,glymur-sndcard"; + model = "Lenovo-ThinkPad-T14s-Gen-7"; + audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT", + "SpkrRight IN", "WSA WSA_SPK2 OUT", + "VA DMIC0", "vdd-micb", + "VA DMIC1", "vdd-micb"; + + wsa-dai-link { + link-name = "WSA Playback"; + + cpu { + sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>; + }; + + codec { + sound-dai = <&left_spkr>, <&right_spkr>, + <&swr0 0>, <&lpass_wsamacro 0>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + + va-dai-link { + link-name = "VA Capture"; + + cpu { + sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>; + }; + + codec { + sound-dai = <&lpass_vamacro 0>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + + displayport-0-dai-link { + link-name = "DisplayPort0 Playback"; + + cpu { + sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>; + }; + + codec { + sound-dai = <&mdss_dp0>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + + displayport-1-dai-link { + link-name = "DisplayPort1 Playback"; + + cpu { + sound-dai = <&q6apmbedai DISPLAY_PORT_RX_1>; + }; + + codec { + sound-dai = <&mdss_dp1>; + }; + + platform { + sound-dai = <&q6apm>; + }; + }; + + }; + + wcn7850-pmu { + compatible = "qcom,wcn7850-pmu"; + + vdd-supply = <&vreg_wcn_0p95>; + vddio-supply = <&vreg_l15b_e0_1p8>; + vddaon-supply = <&vreg_l15b_e0_1p8>; + vdddig-supply = <&vreg_l15b_e0_1p8>; + vddrfa1p2-supply = <&vreg_l15b_e0_1p8>; + vddrfa1p8-supply = <&vreg_l15b_e0_1p8>; + + 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 { + regulators-0 { + compatible = "qcom,pmh0101-rpmh-regulators"; + qcom,pmic-id = "B_E0"; + + vreg_bob1_e0: bob1 { + regulator-name = "vreg_bob1_e0"; + regulator-min-microvolt = <2200000>; + regulator-max-microvolt = <4224000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; + }; + + vreg_bob2_e0: bob2 { + regulator-name = "vreg_bob2_e0"; + regulator-min-microvolt = <2540000>; + regulator-max-microvolt = <3600000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; + }; + + vreg_l1b_e0_1p8: ldo1 { + regulator-name = "vreg_l1b_e0_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2b_e0_2p9: ldo2 { + regulator-name = "vreg_l2b_e0_2p9"; + regulator-min-microvolt = <2904000>; + regulator-max-microvolt = <2904000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l7b_e0_2p79: ldo7 { + regulator-name = "vreg_l7b_e0_2p79"; + regulator-min-microvolt = <2790000>; + regulator-max-microvolt = <2792000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l8b_e0_3p3: ldo8 { + regulator-name = "vreg_l8b_e0_3p3"; + regulator-min-microvolt = <1504000>; + regulator-max-microvolt = <3304000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l9b_e0_2p9: ldo9 { + regulator-name = "vreg_l9b_e0_2p9"; + regulator-min-microvolt = <2704000>; + regulator-max-microvolt = <2960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l10b_e0_1p8: ldo10 { + regulator-name = "vreg_l10b_e0_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l11b_e0_1p2: ldo11 { + regulator-name = "vreg_l11b_e0_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l12b_e0_1p2: ldo12 { + regulator-name = "vreg_l12b_e0_1p2"; + regulator-min-microvolt = <1144000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l15b_e0_1p8: ldo15 { + regulator-name = "vreg_l15b_e0_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-always-on; + }; + + vreg_l17b_e0_2p4: ldo17 { + regulator-name = "vreg_l17b_e0_2p4"; + regulator-min-microvolt = <2400000>; + regulator-max-microvolt = <2700000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l18b_e0_1p2: ldo18 { + regulator-name = "vreg_l18b_e0_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + regulator-always-on; + }; + }; + + regulators-1 { + compatible = "qcom,pmcx0102-rpmh-regulators"; + qcom,pmic-id = "C_E1"; + + vreg_l1c_e1_0p82: ldo1 { + regulator-name = "vreg_l1c_e1_0p82"; + regulator-min-microvolt = <832000>; + regulator-max-microvolt = <832000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2c_e1_1p14: ldo2 { + regulator-name = "vreg_l2c_e1_1p14"; + regulator-min-microvolt = <1144000>; + regulator-max-microvolt = <1144000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3c_e1_0p89: ldo3 { + regulator-name = "vreg_l3c_e1_0p89"; + regulator-min-microvolt = <890000>; + regulator-max-microvolt = <980000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4c_e1_0p72: ldo4 { + regulator-name = "vreg_l4c_e1_0p72"; + regulator-min-microvolt = <720000>; + regulator-max-microvolt = <720000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-2 { + compatible = "qcom,pmh0110-rpmh-regulators"; + qcom,pmic-id = "F_E0"; + + vreg_s7f_e0_1p32: smps7 { + regulator-name = "vreg_s7f_e0_1p32"; + regulator-min-microvolt = <1320000>; + regulator-max-microvolt = <1352000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s8f_e0_0p95: smps8 { + regulator-name = "vreg_s8f_e0_0p95"; + regulator-min-microvolt = <952000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_s9f_e0_1p9: smps9 { + regulator-name = "vreg_s9f_e0_1p9"; + regulator-min-microvolt = <1900000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2f_e0_0p94: ldo2 { + regulator-name = "vreg_l2f_e0_0p94"; + regulator-min-microvolt = <936000>; + regulator-max-microvolt = <936000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3f_e0_0p91: ldo3 { + regulator-name = "vreg_l3f_e0_0p91"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4f_e0_0p3: ldo4 { + regulator-name = "vreg_l4f_e0_0p3"; + regulator-min-microvolt = <1080000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-3 { + compatible = "qcom,pmh0110-rpmh-regulators"; + qcom,pmic-id = "F_E1"; + + vreg_s7f_e1_0p3: smps7 { + regulator-name = "vreg_s7f_e1_0p3"; + regulator-min-microvolt = <300000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l1f_e1_0p88: ldo1 { + regulator-name = "vreg_l1f_e1_0p88"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <880000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2f_e1_0p9: ldo2 { + regulator-name = "vreg_l2f_e1_0p9"; + regulator-min-microvolt = <904000>; + regulator-max-microvolt = <904000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4f_e1_1p2: ldo4 { + regulator-name = "vreg_l4f_e1_1p2"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-4 { + compatible = "qcom,pmh0110-rpmh-regulators"; + qcom,pmic-id = "H_E0"; + + vreg_l1h_e0_0p94: ldo1 { + regulator-name = "vreg_l1h_e0_0p94"; + regulator-min-microvolt = <936000>; + regulator-max-microvolt = <936000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l2h_e0_0p72: ldo2 { + regulator-name = "vreg_l2h_e0_0p72"; + regulator-min-microvolt = <832000>; + regulator-max-microvolt = <832000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l3h_e0_0p32: ldo3 { + regulator-name = "vreg_l3h_e0_0p32"; + regulator-min-microvolt = <320000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + vreg_l4h_e0_1p2: ldo4 { + regulator-name = "vreg_l4h_e0_1p2"; + regulator-min-microvolt = <1080000>; + regulator-max-microvolt = <1320000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; +}; + +/* GPU/GMU not fully functional yet on this platform. */ +&gmu { + status = "disabled"; +}; + +&gpu { + status = "disabled"; +}; + +&i2c0 { + clock-frequency = <400000>; + + status = "okay"; + + touchpad@2c { + compatible = "hid-over-i2c"; + reg = <0x2c>; + + hid-descr-addr = <0x20>; + interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; + + vdd-supply = <&vreg_misc_3p3>; + vddl-supply = <&vreg_l15b_e0_1p8>; + + pinctrl-0 = <&tpad_default>; + pinctrl-names = "default"; + + wakeup-source; + }; + + keyboard@3a { + compatible = "hid-over-i2c"; + reg = <0x3a>; + + hid-descr-addr = <0x1>; + interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>; + + vdd-supply = <&vreg_misc_3p3>; + vddl-supply = <&vreg_l15b_e0_1p8>; + + pinctrl-0 = <&kybd_default>; + pinctrl-names = "default"; + + wakeup-source; + }; +}; + +&i2c5 { + clock-frequency = <400000>; + + status = "okay"; + + ptn3222_0: redriver@43 { + compatible = "nxp,ptn3222"; + reg = <0x43>; + + reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>; + + vdd3v3-supply = <&vreg_l8b_e0_3p3>; + vdd1v8-supply = <&vreg_l15b_e0_1p8>; + + #phy-cells = <0>; + }; + + ptn3222_1: redriver@4b { + compatible = "nxp,ptn3222"; + reg = <0x4b>; + + reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>; + + vdd3v3-supply = <&vreg_l8b_e0_3p3>; + vdd1v8-supply = <&vreg_l15b_e0_1p8>; + + #phy-cells = <0>; + }; + + ptn3222_cam: redriver@47 { + compatible = "nxp,ptn3222"; + reg = <0x47>; + + reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; + + vdd3v3-supply = <&vreg_l8b_e0_3p3>; + vdd1v8-supply = <&vreg_l15b_e0_1p8>; + + #phy-cells = <0>; + }; + + ptn3222_fpr: redriver@4f { + compatible = "nxp,ptn3222"; + reg = <0x4f>; + + reset-gpios = <&tlmm 40 GPIO_ACTIVE_LOW>; + + vdd3v3-supply = <&vreg_l8b_e0_3p3>; + vdd1v8-supply = <&vreg_l15b_e0_1p8>; + + #phy-cells = <0>; + }; +}; + +&lpass_vamacro { + pinctrl-0 = <&dmic01_default>; + pinctrl-names = "default"; + qcom,dmic-sample-rate = <4800000>; + vdd-micb-supply = <&vreg_l1b_e0_1p8>; +}; + +&mdss { + status = "okay"; +}; + +&mdss_dp0 { + status = "okay"; +}; + +&mdss_dp0_out { + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; +}; + +&mdss_dp1 { + status = "okay"; +}; + +&mdss_dp1_out { + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; +}; + +&mdss_dp3 { + /delete-property/ #sound-dai-cells; + + pinctrl-0 = <&edp0_hpd_default>; + pinctrl-names = "default"; + + status = "okay"; + + aux-bus { + panel { + compatible = "edp-panel"; + power-supply = <&vreg_edp_3p3>; + backlight = <&backlight>; + + port { + edp_panel_in: endpoint { + remote-endpoint = <&mdss_dp3_out>; + }; + }; + }; + }; +}; + +&mdss_dp3_out { + data-lanes = <0 1 2 3>; + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; + + remote-endpoint = <&edp_panel_in>; +}; + +&mdss_dp3_phy { + vdda-phy-supply = <&vreg_l2f_e1_0p9>; + vdda-pll-supply = <&vreg_l4f_e1_1p2>; + + status = "okay"; +}; + +/* PCIe4: on-board WLAN (WCN7850) */ +&pcie4 { + pinctrl-0 = <&pcie4_default>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie4_phy { + vdda-phy-supply = <&vreg_l1c_e1_0p82>; + vdda-pll-supply = <&vreg_l4f_e1_1p2>; + + status = "okay"; +}; + +&pcie4_port0 { + reset-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; + + 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>; + }; +}; + +/* PCIe5: primary M.2 2280 NVMe */ +&pcie5 { + vddpe-3v3-supply = <&vreg_nvme>; + + pinctrl-0 = <&pcie5_default>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie5_phy { + vdda-phy-supply = <&vreg_l2f_e0_0p94>; + vdda-pll-supply = <&vreg_l4h_e0_1p2>; + + status = "okay"; +}; + +&pcie5_port0 { + reset-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>; + wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>; +}; + +/* PCIe6: optional WWAN M.2 3042 */ +&pcie6 { + vddpe-3v3-supply = <&vreg_wwan>; + + pinctrl-0 = <&pcie6_default>; + pinctrl-names = "default"; + + status = "okay"; +}; + +&pcie6_phy { + vdda-phy-supply = <&vreg_l1c_e1_0p82>; + vdda-pll-supply = <&vreg_l4f_e1_1p2>; + + status = "okay"; +}; + +&pcie6_port0 { + reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>; + wake-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>; +}; + +&pmh0101_gpios { + nvme_reg_en: nvme-reg-en-state { + pins = "gpio14"; + function = "normal"; + bias-disable; + }; +}; + +&pmh0110_f_e0_gpios { + misc_3p3_reg_en: misc-3p3-reg-en-state { + pins = "gpio6"; + function = "normal"; + bias-disable; + input-disable; + output-enable; + drive-push-pull; + power-source = <1>; /* 1.8 V */ + qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>; + }; +}; + +&pmk8850_rtc { + qcom,no-alarm; +}; + +&remoteproc_adsp { + firmware-name = "qcom/glymur/LENOVO/22A8/qcadsp8480.mbn", + "qcom/glymur/LENOVO/22A8/adsp_dtbs.elf"; + + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/glymur/LENOVO/22A8/qccdsp8480.mbn", + "qcom/glymur/LENOVO/22A8/cdsp_dtbs.elf"; + + status = "okay"; +}; + +&swr0 { + status = "okay"; + + /* WSA8845, Left */ + left_spkr: speaker@0,0 { + compatible = "sdw20217020400"; + reg = <0 0>; + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; + #sound-dai-cells = <0>; + sound-name-prefix = "SpkrLeft"; + vdd-1p8-supply = <&vreg_l15b_e0_1p8>; + vdd-io-supply = <&vreg_l18b_e0_1p2>; + qcom,port-mapping = <1 2 3 7 12 14>; + }; + + /* WSA8845, Right */ + right_spkr: speaker@0,1 { + compatible = "sdw20217020400"; + reg = <0 1>; + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; + #sound-dai-cells = <0>; + sound-name-prefix = "SpkrRight"; + vdd-1p8-supply = <&vreg_l15b_e0_1p8>; + vdd-io-supply = <&vreg_l18b_e0_1p2>; + qcom,port-mapping = <4 5 6 7 13 15>; + }; +}; + +&smb2370_j_e2_eusb2_repeater { + vdd18-supply = <&vreg_l15b_e0_1p8>; + vdd3-supply = <&vreg_l7b_e0_2p79>; +}; + +&smb2370_k_e2_eusb2_repeater { + vdd18-supply = <&vreg_l15b_e0_1p8>; + vdd3-supply = <&vreg_l7b_e0_2p79>; +}; + +&tcsr { + vdda-qrefrpt0-0p9-supply = <&vreg_l2f_e1_0p9>; + vdda-qrefrpt1-0p9-supply = <&vreg_l2f_e1_0p9>; + vdda-qrefrpt2-0p9-supply = <&vreg_l2f_e1_0p9>; + vdda-qrefrpt3-0p9-supply = <&vreg_l2h_e0_0p72>; + vdda-qrefrpt4-0p9-supply = <&vreg_l2h_e0_0p72>; + vdda-qrefrpt5-0p9-supply = <&vreg_l2h_e0_0p72>; + vdda-qrefrx0-0p9-supply = <&vreg_l2f_e1_0p9>; + vdda-qrefrx1-0p9-supply = <&vreg_l2f_e1_0p9>; + vdda-qrefrx2-0p9-supply = <&vreg_l2f_e1_0p9>; + vdda-qrefrx3-0p9-supply = <&vreg_l2h_e0_0p72>; + vdda-qrefrx4-0p9-supply = <&vreg_l2h_e0_0p72>; + vdda-qrefrx5-0p9-supply = <&vreg_l3f_e0_0p91>; + vdda-qreftx0-0p9-supply = <&vreg_l3f_e0_0p91>; + vdda-qreftx0-1p2-supply = <&vreg_l4h_e0_1p2>; + vdda-qreftx1-0p9-supply = <&vreg_l1f_e1_0p88>; + vdda-refgen3-0p9-supply = <&vreg_l2f_e0_0p94>; + vdda-refgen3-1p2-supply = <&vreg_l4h_e0_1p2>; + vdda-refgen4-0p9-supply = <&vreg_l1f_e1_0p88>; + vdda-refgen4-1p2-supply = <&vreg_l4f_e1_1p2>; +}; + +&tlmm { + gpio-reserved-ranges = <4 4>, /* EC TZ Secure I3C */ + <10 2>, /* OOB UART */ + <27 1>, /* TZ trigger */ + <44 4>, /* TPM */ + <139 1>; /* TZ trigger */ + + edp_bl_en: edp-bl-en-state { + pins = "gpio18"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + edp_bl_reg_en: edp-bl-reg-en-state { + pins = "gpio19"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + edp_reg_en: edp-reg-en-state { + pins = "gpio70"; + function = "gpio"; + drive-strength = <16>; + bias-disable; + }; + + edp0_hpd_default: edp0-hpd-default-state { + pins = "gpio119"; + function = "edp0_hot"; + bias-disable; + }; + + hall_int_n_default: hall-int-n-state { + pins = "gpio92"; + function = "gpio"; + bias-disable; + }; + + kybd_default: kybd-default-state { + pins = "gpio67"; + function = "gpio"; + bias-disable; + }; + + pcie4_default: pcie4-default-state { + clkreq-n-pins { + pins = "gpio147"; + function = "pcie4_clk_req_n"; + drive-strength = <2>; + bias-pull-up; + }; + + perst-n-pins { + pins = "gpio146"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wake-n-pins { + pins = "gpio148"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + pcie5_default: pcie5-default-state { + clkreq-n-pins { + pins = "gpio153"; + function = "pcie5_clk_req_n"; + drive-strength = <2>; + bias-pull-up; + }; + + perst-n-pins { + pins = "gpio152"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wake-n-pins { + pins = "gpio154"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + pcie6_default: pcie6-default-state { + clkreq-n-pins { + pins = "gpio150"; + function = "pcie6_clk_req_n"; + drive-strength = <2>; + bias-pull-up; + }; + + perst-n-pins { + pins = "gpio149"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wake-n-pins { + pins = "gpio151"; + function = "gpio"; + drive-strength = <2>; + bias-pull-up; + }; + }; + + tpad_default: tpad-default-state { + pins = "gpio3"; + function = "gpio"; + bias-disable; + }; + + wcn_wlan_bt_en: wcn-wlan-bt-en-state { + pins = "gpio116", "gpio117"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wcn_sw_en: wcn-sw-en-state { + pins = "gpio94"; + function = "gpio"; + drive-strength = <2>; + bias-disable; + }; + + wwan_reg_en: wwan-reg-en-state { + pins = "gpio246"; + function = "gpio"; + drive-strength = <2>; + 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>; + }; +}; + +&usb_0 { + status = "okay"; +}; + +&usb_0_dwc3_hs { + remote-endpoint = <&pmic_glink_hs_in>; +}; + +&usb_0_hsphy { + vdd-supply = <&vreg_l3f_e0_0p91>; + vdda12-supply = <&vreg_l4h_e0_1p2>; + + phys = <&smb2370_j_e2_eusb2_repeater>; + + status = "okay"; +}; + +&usb_0_qmpphy { + vdda-phy-supply = <&vreg_l3f_e0_0p91>; + vdda-pll-supply = <&vreg_l4h_e0_1p2>; + refgen-supply = <&vreg_l2f_e0_0p94>; + + status = "okay"; +}; + +&usb_0_qmpphy_out { + remote-endpoint = <&pmic_glink_ss_in>; +}; + +&usb_1 { + status = "okay"; +}; + +&usb_1_dwc3_hs { + remote-endpoint = <&pmic_glink_hs_in1>; +}; + +&usb_1_hsphy { + vdd-supply = <&vreg_l3f_e0_0p91>; + vdda12-supply = <&vreg_l4h_e0_1p2>; + + phys = <&smb2370_k_e2_eusb2_repeater>; + + status = "okay"; +}; + +&usb_1_qmpphy { + vdda-phy-supply = <&vreg_l1h_e0_0p94>; + vdda-pll-supply = <&vreg_l4h_e0_1p2>; + refgen-supply = <&vreg_l2f_e0_0p94>; + + status = "okay"; +}; + +&usb_1_qmpphy_out { + remote-endpoint = <&pmic_glink_ss_in1>; +}; + +&usb_mp { + status = "okay"; +}; + +&usb_mp_hsphy0 { + vdd-supply = <&vreg_l2h_e0_0p72>; + vdda12-supply = <&vreg_l4h_e0_1p2>; + + phys = <&ptn3222_0>; + + status = "okay"; +}; + +&usb_mp_hsphy1 { + vdd-supply = <&vreg_l2h_e0_0p72>; + vdda12-supply = <&vreg_l4h_e0_1p2>; + + phys = <&ptn3222_1>; + + status = "okay"; +}; + +&usb_mp_qmpphy0 { + vdda-phy-supply = <&vreg_l2h_e0_0p72>; + vdda-pll-supply = <&vreg_l4h_e0_1p2>; + refgen-supply = <&vreg_l4f_e1_1p2>; + + status = "okay"; +}; + +&usb_mp_qmpphy1 { + vdda-phy-supply = <&vreg_l2h_e0_0p72>; + vdda-pll-supply = <&vreg_l4h_e0_1p2>; + refgen-supply = <&vreg_l4f_e1_1p2>; + + status = "okay"; +}; + +&usb_hs { + dr_mode = "host"; + + status = "okay"; +}; + +&usb_hs_phy { + vdd-supply = <&vreg_l2h_e0_0p72>; + vdda12-supply = <&vreg_l4h_e0_1p2>; + + phys = <&ptn3222_cam>; + + status = "okay"; +}; + +&usb_2 { + dr_mode = "host"; + maximum-speed = "high-speed"; + + /delete-property/ usb-role-switch; + phys = <&usb_2_hsphy>; + phy-names = "usb2-phy"; + + status = "okay"; +}; + +&usb_2_hsphy { + vdd-supply = <&vreg_l4c_e1_0p72>; + vdda12-supply = <&vreg_l4f_e1_1p2>; + + phys = <&ptn3222_fpr>; + + status = "okay"; +}; -- 2.53.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v4 2/3] arm64: dts: qcom: Add Lenovo ThinkPad T14s Gen 7 2026-09-29 22:18 ` [PATCH v4 2/3] arm64: dts: qcom: Add Lenovo ThinkPad T14s Gen 7 Srinivas Kandagatla @ 2026-10-01 2:30 ` Bjorn Andersson 0 siblings, 0 replies; 5+ messages in thread From: Bjorn Andersson @ 2026-10-01 2:30 UTC (permalink / raw) To: Srinivas Kandagatla Cc: Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Abel Vesa, Neil Armstrong, Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel, Abel Vesa, Konrad Dybcio On Tue, Sep 29, 2026 at 11:18:20PM +0100, Srinivas Kandagatla wrote: > Introduce a device tree for the Mahua-based Lenovo ThinkPad T14s Gen 7, > a Snapdragon X2 Elite laptop. It follows the Qualcomm Glymur reference > design used by mahua-crd. > I already merged v3, so please check the delta and submit any incremental fixes. > Currently working: > - Display (internal eDP panel) > - Audio playback and capture (2x WSA8845 speakers on swr0, DMICs via > the VA macro) > - DisplayPort audio on the two USB-C DP outputs (DP0/DP1) > - USB-C (host + charging on both ports) > - Wi-Fi (WCN7850 on PCIe4), Bluetooth (over uart14) > - NVMe on PCIe5 > - HID-over-I2C touchpad, keyboard and TrackPoint on i2c0 > - Lid switch > - Internal USB2 camera on usb_hs (via PTN3222 redriver) > - Goodix fingerprint reader on usb_2 > - WWAN wiring is included but remains untested due to lack of access > to such a SKU. > > Assisted-by: Claude:claude-opus-4-7 Now in the future this should be: Assisted-by: LLM Regards, Bjorn > Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com> > Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com> > Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../mahua-lenovo-thinkpad-t14s-gen7-lcd.dts | 1277 +++++++++++++++++ > 2 files changed, 1278 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 7ee7b98994c2..a9e372e0285a 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -62,6 +62,7 @@ dtb-$(CONFIG_ARCH_QCOM) += lemans-evk-el2.dtb > lemans-evk-ifp-mezzanine-dtbs := lemans-evk.dtb lemans-evk-ifp-mezzanine.dtbo > dtb-$(CONFIG_ARCH_QCOM) += lemans-evk-ifp-mezzanine.dtb > dtb-$(CONFIG_ARCH_QCOM) += mahua-crd.dtb > +dtb-$(CONFIG_ARCH_QCOM) += mahua-lenovo-thinkpad-t14s-gen7-lcd.dtb > dtb-$(CONFIG_ARCH_QCOM) += milos-fairphone-fp6.dtb > dtb-$(CONFIG_ARCH_QCOM) += milos-nothing-asteroids.dtb > dtb-$(CONFIG_ARCH_QCOM) += monaco-arduino-monza.dtb > diff --git a/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts b/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts > new file mode 100644 > index 000000000000..b3c6559df964 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/mahua-lenovo-thinkpad-t14s-gen7-lcd.dts > @@ -0,0 +1,1277 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. > + */ > +/dts-v1/; > + > +#include "mahua.dtsi" > + > +#include "pmcx0102.dtsi" > +#include "pmh0101.dtsi" > +#include "pmh0104-glymur.dtsi" > +#include "pmh0110-glymur.dtsi" > +#include "pmk8850.dtsi" > +#include "smb2370.dtsi" > + > +#include <dt-bindings/input/gpio-keys.h> > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/leds/common.h> > +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> > + > +/* PMICs tied to Glymur's cluster2 are absent on Mahua. */ > +/delete-node/ &pmcx0102_d_e0; > +/delete-node/ &pmcx0102_d0_thermal; > +/delete-node/ &pmh0104_i_e0; > +/delete-node/ &pmh0104_i0_thermal; > +/delete-node/ &pmh0104_j_e0; > +/delete-node/ &pmh0104_j0_thermal; > + > +/ { > + model = "Lenovo ThinkPad T14s Gen 7 (LCD)"; > + compatible = "lenovo,thinkpad-t14s-gen7-lcd", "lenovo,thinkpad-t14s-gen7", > + "qcom,mahua"; > + > + aliases { > + i2c0 = &i2c0; > + i2c5 = &i2c5; > + > + serial0 = &uart21; > + serial1 = &uart14; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + clocks { > + xo_board: xo-board { > + compatible = "fixed-clock"; > + clock-frequency = <38400000>; > + #clock-cells = <0>; > + }; > + > + sleep_clk: sleep-clk { > + compatible = "fixed-clock"; > + clock-frequency = <32000>; > + #clock-cells = <0>; > + }; > + }; > + > + backlight: backlight { > + compatible = "gpio-backlight"; > + gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; > + > + pinctrl-0 = <&edp_bl_en>; > + pinctrl-names = "default"; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + > + pinctrl-0 = <&hall_int_n_default>; > + pinctrl-names = "default"; > + > + switch-lid { > + label = "lid"; > + gpios = <&tlmm 92 GPIO_ACTIVE_LOW>; > + linux,input-type = <EV_SW>; > + linux,code = <SW_LID>; > + wakeup-source; > + wakeup-event-action = <EV_ACT_DEASSERTED>; > + }; > + }; > + > + pmic-glink { > + compatible = "qcom,glymur-pmic-glink", > + "qcom,pmic-glink"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + /* Left-side USB-C port */ > + connector@0 { > + compatible = "usb-c-connector"; > + reg = <0>; > + power-role = "dual"; > + data-role = "dual"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + pmic_glink_hs_in: endpoint { > + remote-endpoint = <&usb_0_dwc3_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + pmic_glink_ss_in: endpoint { > + remote-endpoint = <&usb_0_qmpphy_out>; > + }; > + }; > + }; > + }; > + > + /* Right-side USB-C port */ > + connector@1 { > + compatible = "usb-c-connector"; > + reg = <1>; > + power-role = "dual"; > + data-role = "dual"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + pmic_glink_hs_in1: endpoint { > + remote-endpoint = <&usb_1_dwc3_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + pmic_glink_ss_in1: endpoint { > + remote-endpoint = <&usb_1_qmpphy_out>; > + }; > + }; > + }; > + }; > + }; > + > + vreg_edp_3p3: regulator-edp-3p3 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_EDP_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&edp_reg_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + }; > + > + vreg_edp_bl: regulator-edp-bl { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_EDP_BL"; > + regulator-min-microvolt = <3600000>; > + regulator-max-microvolt = <3600000>; > + > + gpio = <&tlmm 19 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&edp_bl_reg_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + regulator-always-on; > + }; > + > + vreg_misc_3p3: regulator-misc-3p3 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_MISC_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&pmh0110_f_e0_gpios 6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&misc_3p3_reg_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + regulator-always-on; > + }; > + > + vreg_nvme: regulator-nvme { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_NVME_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&pmh0101_gpios 14 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&nvme_reg_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + }; > + > + 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_3p3: regulator-wcn-3p3 { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_WCN_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&tlmm 94 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&wcn_sw_en>; > + pinctrl-names = "default"; > + > + regulator-boot-on; > + }; > + > + vreg_wwan: regulator-wwan { > + compatible = "regulator-fixed"; > + > + regulator-name = "VREG_WWAN_3P3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&tlmm 246 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&wwan_reg_en>; > + pinctrl-names = "default"; > + }; > + > + reserved-memory { > + linux,cma { > + compatible = "shared-dma-pool"; > + size = <0x0 0x10000000>; > + reusable; > + linux,cma-default; > + }; > + }; > + > + sound { > + compatible = "qcom,glymur-sndcard"; > + model = "Lenovo-ThinkPad-T14s-Gen-7"; > + audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT", > + "SpkrRight IN", "WSA WSA_SPK2 OUT", > + "VA DMIC0", "vdd-micb", > + "VA DMIC1", "vdd-micb"; > + > + wsa-dai-link { > + link-name = "WSA Playback"; > + > + cpu { > + sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>; > + }; > + > + codec { > + sound-dai = <&left_spkr>, <&right_spkr>, > + <&swr0 0>, <&lpass_wsamacro 0>; > + }; > + > + platform { > + sound-dai = <&q6apm>; > + }; > + }; > + > + va-dai-link { > + link-name = "VA Capture"; > + > + cpu { > + sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>; > + }; > + > + codec { > + sound-dai = <&lpass_vamacro 0>; > + }; > + > + platform { > + sound-dai = <&q6apm>; > + }; > + }; > + > + displayport-0-dai-link { > + link-name = "DisplayPort0 Playback"; > + > + cpu { > + sound-dai = <&q6apmbedai DISPLAY_PORT_RX_0>; > + }; > + > + codec { > + sound-dai = <&mdss_dp0>; > + }; > + > + platform { > + sound-dai = <&q6apm>; > + }; > + }; > + > + displayport-1-dai-link { > + link-name = "DisplayPort1 Playback"; > + > + cpu { > + sound-dai = <&q6apmbedai DISPLAY_PORT_RX_1>; > + }; > + > + codec { > + sound-dai = <&mdss_dp1>; > + }; > + > + platform { > + sound-dai = <&q6apm>; > + }; > + }; > + > + }; > + > + wcn7850-pmu { > + compatible = "qcom,wcn7850-pmu"; > + > + vdd-supply = <&vreg_wcn_0p95>; > + vddio-supply = <&vreg_l15b_e0_1p8>; > + vddaon-supply = <&vreg_l15b_e0_1p8>; > + vdddig-supply = <&vreg_l15b_e0_1p8>; > + vddrfa1p2-supply = <&vreg_l15b_e0_1p8>; > + vddrfa1p8-supply = <&vreg_l15b_e0_1p8>; > + > + 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 { > + regulators-0 { > + compatible = "qcom,pmh0101-rpmh-regulators"; > + qcom,pmic-id = "B_E0"; > + > + vreg_bob1_e0: bob1 { > + regulator-name = "vreg_bob1_e0"; > + regulator-min-microvolt = <2200000>; > + regulator-max-microvolt = <4224000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; > + }; > + > + vreg_bob2_e0: bob2 { > + regulator-name = "vreg_bob2_e0"; > + regulator-min-microvolt = <2540000>; > + regulator-max-microvolt = <3600000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; > + }; > + > + vreg_l1b_e0_1p8: ldo1 { > + regulator-name = "vreg_l1b_e0_1p8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l2b_e0_2p9: ldo2 { > + regulator-name = "vreg_l2b_e0_2p9"; > + regulator-min-microvolt = <2904000>; > + regulator-max-microvolt = <2904000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l7b_e0_2p79: ldo7 { > + regulator-name = "vreg_l7b_e0_2p79"; > + regulator-min-microvolt = <2790000>; > + regulator-max-microvolt = <2792000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l8b_e0_3p3: ldo8 { > + regulator-name = "vreg_l8b_e0_3p3"; > + regulator-min-microvolt = <1504000>; > + regulator-max-microvolt = <3304000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l9b_e0_2p9: ldo9 { > + regulator-name = "vreg_l9b_e0_2p9"; > + regulator-min-microvolt = <2704000>; > + regulator-max-microvolt = <2960000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l10b_e0_1p8: ldo10 { > + regulator-name = "vreg_l10b_e0_1p8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l11b_e0_1p2: ldo11 { > + regulator-name = "vreg_l11b_e0_1p2"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l12b_e0_1p2: ldo12 { > + regulator-name = "vreg_l12b_e0_1p2"; > + regulator-min-microvolt = <1144000>; > + regulator-max-microvolt = <1200000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l15b_e0_1p8: ldo15 { > + regulator-name = "vreg_l15b_e0_1p8"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + regulator-always-on; > + }; > + > + vreg_l17b_e0_2p4: ldo17 { > + regulator-name = "vreg_l17b_e0_2p4"; > + regulator-min-microvolt = <2400000>; > + regulator-max-microvolt = <2700000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l18b_e0_1p2: ldo18 { > + regulator-name = "vreg_l18b_e0_1p2"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + regulator-always-on; > + }; > + }; > + > + regulators-1 { > + compatible = "qcom,pmcx0102-rpmh-regulators"; > + qcom,pmic-id = "C_E1"; > + > + vreg_l1c_e1_0p82: ldo1 { > + regulator-name = "vreg_l1c_e1_0p82"; > + regulator-min-microvolt = <832000>; > + regulator-max-microvolt = <832000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l2c_e1_1p14: ldo2 { > + regulator-name = "vreg_l2c_e1_1p14"; > + regulator-min-microvolt = <1144000>; > + regulator-max-microvolt = <1144000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l3c_e1_0p89: ldo3 { > + regulator-name = "vreg_l3c_e1_0p89"; > + regulator-min-microvolt = <890000>; > + regulator-max-microvolt = <980000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l4c_e1_0p72: ldo4 { > + regulator-name = "vreg_l4c_e1_0p72"; > + regulator-min-microvolt = <720000>; > + regulator-max-microvolt = <720000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + }; > + > + regulators-2 { > + compatible = "qcom,pmh0110-rpmh-regulators"; > + qcom,pmic-id = "F_E0"; > + > + vreg_s7f_e0_1p32: smps7 { > + regulator-name = "vreg_s7f_e0_1p32"; > + regulator-min-microvolt = <1320000>; > + regulator-max-microvolt = <1352000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_s8f_e0_0p95: smps8 { > + regulator-name = "vreg_s8f_e0_0p95"; > + regulator-min-microvolt = <952000>; > + regulator-max-microvolt = <1200000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_s9f_e0_1p9: smps9 { > + regulator-name = "vreg_s9f_e0_1p9"; > + regulator-min-microvolt = <1900000>; > + regulator-max-microvolt = <2000000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l2f_e0_0p94: ldo2 { > + regulator-name = "vreg_l2f_e0_0p94"; > + regulator-min-microvolt = <936000>; > + regulator-max-microvolt = <936000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l3f_e0_0p91: ldo3 { > + regulator-name = "vreg_l3f_e0_0p91"; > + regulator-min-microvolt = <912000>; > + regulator-max-microvolt = <912000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l4f_e0_0p3: ldo4 { > + regulator-name = "vreg_l4f_e0_0p3"; > + regulator-min-microvolt = <1080000>; > + regulator-max-microvolt = <1200000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + }; > + > + regulators-3 { > + compatible = "qcom,pmh0110-rpmh-regulators"; > + qcom,pmic-id = "F_E1"; > + > + vreg_s7f_e1_0p3: smps7 { > + regulator-name = "vreg_s7f_e1_0p3"; > + regulator-min-microvolt = <300000>; > + regulator-max-microvolt = <1200000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l1f_e1_0p88: ldo1 { > + regulator-name = "vreg_l1f_e1_0p88"; > + regulator-min-microvolt = <880000>; > + regulator-max-microvolt = <880000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l2f_e1_0p9: ldo2 { > + regulator-name = "vreg_l2f_e1_0p9"; > + regulator-min-microvolt = <904000>; > + regulator-max-microvolt = <904000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l4f_e1_1p2: ldo4 { > + regulator-name = "vreg_l4f_e1_1p2"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + }; > + > + regulators-4 { > + compatible = "qcom,pmh0110-rpmh-regulators"; > + qcom,pmic-id = "H_E0"; > + > + vreg_l1h_e0_0p94: ldo1 { > + regulator-name = "vreg_l1h_e0_0p94"; > + regulator-min-microvolt = <936000>; > + regulator-max-microvolt = <936000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l2h_e0_0p72: ldo2 { > + regulator-name = "vreg_l2h_e0_0p72"; > + regulator-min-microvolt = <832000>; > + regulator-max-microvolt = <832000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l3h_e0_0p32: ldo3 { > + regulator-name = "vreg_l3h_e0_0p32"; > + regulator-min-microvolt = <320000>; > + regulator-max-microvolt = <2000000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + > + vreg_l4h_e0_1p2: ldo4 { > + regulator-name = "vreg_l4h_e0_1p2"; > + regulator-min-microvolt = <1080000>; > + regulator-max-microvolt = <1320000>; > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; > + }; > + }; > +}; > + > +/* GPU/GMU not fully functional yet on this platform. */ > +&gmu { > + status = "disabled"; > +}; > + > +&gpu { > + status = "disabled"; > +}; > + > +&i2c0 { > + clock-frequency = <400000>; > + > + status = "okay"; > + > + touchpad@2c { > + compatible = "hid-over-i2c"; > + reg = <0x2c>; > + > + hid-descr-addr = <0x20>; > + interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>; > + > + vdd-supply = <&vreg_misc_3p3>; > + vddl-supply = <&vreg_l15b_e0_1p8>; > + > + pinctrl-0 = <&tpad_default>; > + pinctrl-names = "default"; > + > + wakeup-source; > + }; > + > + keyboard@3a { > + compatible = "hid-over-i2c"; > + reg = <0x3a>; > + > + hid-descr-addr = <0x1>; > + interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>; > + > + vdd-supply = <&vreg_misc_3p3>; > + vddl-supply = <&vreg_l15b_e0_1p8>; > + > + pinctrl-0 = <&kybd_default>; > + pinctrl-names = "default"; > + > + wakeup-source; > + }; > +}; > + > +&i2c5 { > + clock-frequency = <400000>; > + > + status = "okay"; > + > + ptn3222_0: redriver@43 { > + compatible = "nxp,ptn3222"; > + reg = <0x43>; > + > + reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>; > + > + vdd3v3-supply = <&vreg_l8b_e0_3p3>; > + vdd1v8-supply = <&vreg_l15b_e0_1p8>; > + > + #phy-cells = <0>; > + }; > + > + ptn3222_1: redriver@4b { > + compatible = "nxp,ptn3222"; > + reg = <0x4b>; > + > + reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>; > + > + vdd3v3-supply = <&vreg_l8b_e0_3p3>; > + vdd1v8-supply = <&vreg_l15b_e0_1p8>; > + > + #phy-cells = <0>; > + }; > + > + ptn3222_cam: redriver@47 { > + compatible = "nxp,ptn3222"; > + reg = <0x47>; > + > + reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; > + > + vdd3v3-supply = <&vreg_l8b_e0_3p3>; > + vdd1v8-supply = <&vreg_l15b_e0_1p8>; > + > + #phy-cells = <0>; > + }; > + > + ptn3222_fpr: redriver@4f { > + compatible = "nxp,ptn3222"; > + reg = <0x4f>; > + > + reset-gpios = <&tlmm 40 GPIO_ACTIVE_LOW>; > + > + vdd3v3-supply = <&vreg_l8b_e0_3p3>; > + vdd1v8-supply = <&vreg_l15b_e0_1p8>; > + > + #phy-cells = <0>; > + }; > +}; > + > +&lpass_vamacro { > + pinctrl-0 = <&dmic01_default>; > + pinctrl-names = "default"; > + qcom,dmic-sample-rate = <4800000>; > + vdd-micb-supply = <&vreg_l1b_e0_1p8>; > +}; > + > +&mdss { > + status = "okay"; > +}; > + > +&mdss_dp0 { > + status = "okay"; > +}; > + > +&mdss_dp0_out { > + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > +}; > + > +&mdss_dp1 { > + status = "okay"; > +}; > + > +&mdss_dp1_out { > + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > +}; > + > +&mdss_dp3 { > + /delete-property/ #sound-dai-cells; > + > + pinctrl-0 = <&edp0_hpd_default>; > + pinctrl-names = "default"; > + > + status = "okay"; > + > + aux-bus { > + panel { > + compatible = "edp-panel"; > + power-supply = <&vreg_edp_3p3>; > + backlight = <&backlight>; > + > + port { > + edp_panel_in: endpoint { > + remote-endpoint = <&mdss_dp3_out>; > + }; > + }; > + }; > + }; > +}; > + > +&mdss_dp3_out { > + data-lanes = <0 1 2 3>; > + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; > + > + remote-endpoint = <&edp_panel_in>; > +}; > + > +&mdss_dp3_phy { > + vdda-phy-supply = <&vreg_l2f_e1_0p9>; > + vdda-pll-supply = <&vreg_l4f_e1_1p2>; > + > + status = "okay"; > +}; > + > +/* PCIe4: on-board WLAN (WCN7850) */ > +&pcie4 { > + pinctrl-0 = <&pcie4_default>; > + pinctrl-names = "default"; > + > + status = "okay"; > +}; > + > +&pcie4_phy { > + vdda-phy-supply = <&vreg_l1c_e1_0p82>; > + vdda-pll-supply = <&vreg_l4f_e1_1p2>; > + > + status = "okay"; > +}; > + > +&pcie4_port0 { > + reset-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>; > + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>; > + > + 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>; > + }; > +}; > + > +/* PCIe5: primary M.2 2280 NVMe */ > +&pcie5 { > + vddpe-3v3-supply = <&vreg_nvme>; > + > + pinctrl-0 = <&pcie5_default>; > + pinctrl-names = "default"; > + > + status = "okay"; > +}; > + > +&pcie5_phy { > + vdda-phy-supply = <&vreg_l2f_e0_0p94>; > + vdda-pll-supply = <&vreg_l4h_e0_1p2>; > + > + status = "okay"; > +}; > + > +&pcie5_port0 { > + reset-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>; > + wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>; > +}; > + > +/* PCIe6: optional WWAN M.2 3042 */ > +&pcie6 { > + vddpe-3v3-supply = <&vreg_wwan>; > + > + pinctrl-0 = <&pcie6_default>; > + pinctrl-names = "default"; > + > + status = "okay"; > +}; > + > +&pcie6_phy { > + vdda-phy-supply = <&vreg_l1c_e1_0p82>; > + vdda-pll-supply = <&vreg_l4f_e1_1p2>; > + > + status = "okay"; > +}; > + > +&pcie6_port0 { > + reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>; > + wake-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>; > +}; > + > +&pmh0101_gpios { > + nvme_reg_en: nvme-reg-en-state { > + pins = "gpio14"; > + function = "normal"; > + bias-disable; > + }; > +}; > + > +&pmh0110_f_e0_gpios { > + misc_3p3_reg_en: misc-3p3-reg-en-state { > + pins = "gpio6"; > + function = "normal"; > + bias-disable; > + input-disable; > + output-enable; > + drive-push-pull; > + power-source = <1>; /* 1.8 V */ > + qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>; > + }; > +}; > + > +&pmk8850_rtc { > + qcom,no-alarm; > +}; > + > +&remoteproc_adsp { > + firmware-name = "qcom/glymur/LENOVO/22A8/qcadsp8480.mbn", > + "qcom/glymur/LENOVO/22A8/adsp_dtbs.elf"; > + > + status = "okay"; > +}; > + > +&remoteproc_cdsp { > + firmware-name = "qcom/glymur/LENOVO/22A8/qccdsp8480.mbn", > + "qcom/glymur/LENOVO/22A8/cdsp_dtbs.elf"; > + > + status = "okay"; > +}; > + > +&swr0 { > + status = "okay"; > + > + /* WSA8845, Left */ > + left_spkr: speaker@0,0 { > + compatible = "sdw20217020400"; > + reg = <0 0>; > + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; > + #sound-dai-cells = <0>; > + sound-name-prefix = "SpkrLeft"; > + vdd-1p8-supply = <&vreg_l15b_e0_1p8>; > + vdd-io-supply = <&vreg_l18b_e0_1p2>; > + qcom,port-mapping = <1 2 3 7 12 14>; > + }; > + > + /* WSA8845, Right */ > + right_spkr: speaker@0,1 { > + compatible = "sdw20217020400"; > + reg = <0 1>; > + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; > + #sound-dai-cells = <0>; > + sound-name-prefix = "SpkrRight"; > + vdd-1p8-supply = <&vreg_l15b_e0_1p8>; > + vdd-io-supply = <&vreg_l18b_e0_1p2>; > + qcom,port-mapping = <4 5 6 7 13 15>; > + }; > +}; > + > +&smb2370_j_e2_eusb2_repeater { > + vdd18-supply = <&vreg_l15b_e0_1p8>; > + vdd3-supply = <&vreg_l7b_e0_2p79>; > +}; > + > +&smb2370_k_e2_eusb2_repeater { > + vdd18-supply = <&vreg_l15b_e0_1p8>; > + vdd3-supply = <&vreg_l7b_e0_2p79>; > +}; > + > +&tcsr { > + vdda-qrefrpt0-0p9-supply = <&vreg_l2f_e1_0p9>; > + vdda-qrefrpt1-0p9-supply = <&vreg_l2f_e1_0p9>; > + vdda-qrefrpt2-0p9-supply = <&vreg_l2f_e1_0p9>; > + vdda-qrefrpt3-0p9-supply = <&vreg_l2h_e0_0p72>; > + vdda-qrefrpt4-0p9-supply = <&vreg_l2h_e0_0p72>; > + vdda-qrefrpt5-0p9-supply = <&vreg_l2h_e0_0p72>; > + vdda-qrefrx0-0p9-supply = <&vreg_l2f_e1_0p9>; > + vdda-qrefrx1-0p9-supply = <&vreg_l2f_e1_0p9>; > + vdda-qrefrx2-0p9-supply = <&vreg_l2f_e1_0p9>; > + vdda-qrefrx3-0p9-supply = <&vreg_l2h_e0_0p72>; > + vdda-qrefrx4-0p9-supply = <&vreg_l2h_e0_0p72>; > + vdda-qrefrx5-0p9-supply = <&vreg_l3f_e0_0p91>; > + vdda-qreftx0-0p9-supply = <&vreg_l3f_e0_0p91>; > + vdda-qreftx0-1p2-supply = <&vreg_l4h_e0_1p2>; > + vdda-qreftx1-0p9-supply = <&vreg_l1f_e1_0p88>; > + vdda-refgen3-0p9-supply = <&vreg_l2f_e0_0p94>; > + vdda-refgen3-1p2-supply = <&vreg_l4h_e0_1p2>; > + vdda-refgen4-0p9-supply = <&vreg_l1f_e1_0p88>; > + vdda-refgen4-1p2-supply = <&vreg_l4f_e1_1p2>; > +}; > + > +&tlmm { > + gpio-reserved-ranges = <4 4>, /* EC TZ Secure I3C */ > + <10 2>, /* OOB UART */ > + <27 1>, /* TZ trigger */ > + <44 4>, /* TPM */ > + <139 1>; /* TZ trigger */ > + > + edp_bl_en: edp-bl-en-state { > + pins = "gpio18"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + edp_bl_reg_en: edp-bl-reg-en-state { > + pins = "gpio19"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + edp_reg_en: edp-reg-en-state { > + pins = "gpio70"; > + function = "gpio"; > + drive-strength = <16>; > + bias-disable; > + }; > + > + edp0_hpd_default: edp0-hpd-default-state { > + pins = "gpio119"; > + function = "edp0_hot"; > + bias-disable; > + }; > + > + hall_int_n_default: hall-int-n-state { > + pins = "gpio92"; > + function = "gpio"; > + bias-disable; > + }; > + > + kybd_default: kybd-default-state { > + pins = "gpio67"; > + function = "gpio"; > + bias-disable; > + }; > + > + pcie4_default: pcie4-default-state { > + clkreq-n-pins { > + pins = "gpio147"; > + function = "pcie4_clk_req_n"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + > + perst-n-pins { > + pins = "gpio146"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + wake-n-pins { > + pins = "gpio148"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + }; > + > + pcie5_default: pcie5-default-state { > + clkreq-n-pins { > + pins = "gpio153"; > + function = "pcie5_clk_req_n"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + > + perst-n-pins { > + pins = "gpio152"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + wake-n-pins { > + pins = "gpio154"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + }; > + > + pcie6_default: pcie6-default-state { > + clkreq-n-pins { > + pins = "gpio150"; > + function = "pcie6_clk_req_n"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + > + perst-n-pins { > + pins = "gpio149"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + wake-n-pins { > + pins = "gpio151"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + }; > + > + tpad_default: tpad-default-state { > + pins = "gpio3"; > + function = "gpio"; > + bias-disable; > + }; > + > + wcn_wlan_bt_en: wcn-wlan-bt-en-state { > + pins = "gpio116", "gpio117"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + wcn_sw_en: wcn-sw-en-state { > + pins = "gpio94"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + wwan_reg_en: wwan-reg-en-state { > + pins = "gpio246"; > + function = "gpio"; > + drive-strength = <2>; > + 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>; > + }; > +}; > + > +&usb_0 { > + status = "okay"; > +}; > + > +&usb_0_dwc3_hs { > + remote-endpoint = <&pmic_glink_hs_in>; > +}; > + > +&usb_0_hsphy { > + vdd-supply = <&vreg_l3f_e0_0p91>; > + vdda12-supply = <&vreg_l4h_e0_1p2>; > + > + phys = <&smb2370_j_e2_eusb2_repeater>; > + > + status = "okay"; > +}; > + > +&usb_0_qmpphy { > + vdda-phy-supply = <&vreg_l3f_e0_0p91>; > + vdda-pll-supply = <&vreg_l4h_e0_1p2>; > + refgen-supply = <&vreg_l2f_e0_0p94>; > + > + status = "okay"; > +}; > + > +&usb_0_qmpphy_out { > + remote-endpoint = <&pmic_glink_ss_in>; > +}; > + > +&usb_1 { > + status = "okay"; > +}; > + > +&usb_1_dwc3_hs { > + remote-endpoint = <&pmic_glink_hs_in1>; > +}; > + > +&usb_1_hsphy { > + vdd-supply = <&vreg_l3f_e0_0p91>; > + vdda12-supply = <&vreg_l4h_e0_1p2>; > + > + phys = <&smb2370_k_e2_eusb2_repeater>; > + > + status = "okay"; > +}; > + > +&usb_1_qmpphy { > + vdda-phy-supply = <&vreg_l1h_e0_0p94>; > + vdda-pll-supply = <&vreg_l4h_e0_1p2>; > + refgen-supply = <&vreg_l2f_e0_0p94>; > + > + status = "okay"; > +}; > + > +&usb_1_qmpphy_out { > + remote-endpoint = <&pmic_glink_ss_in1>; > +}; > + > +&usb_mp { > + status = "okay"; > +}; > + > +&usb_mp_hsphy0 { > + vdd-supply = <&vreg_l2h_e0_0p72>; > + vdda12-supply = <&vreg_l4h_e0_1p2>; > + > + phys = <&ptn3222_0>; > + > + status = "okay"; > +}; > + > +&usb_mp_hsphy1 { > + vdd-supply = <&vreg_l2h_e0_0p72>; > + vdda12-supply = <&vreg_l4h_e0_1p2>; > + > + phys = <&ptn3222_1>; > + > + status = "okay"; > +}; > + > +&usb_mp_qmpphy0 { > + vdda-phy-supply = <&vreg_l2h_e0_0p72>; > + vdda-pll-supply = <&vreg_l4h_e0_1p2>; > + refgen-supply = <&vreg_l4f_e1_1p2>; > + > + status = "okay"; > +}; > + > +&usb_mp_qmpphy1 { > + vdda-phy-supply = <&vreg_l2h_e0_0p72>; > + vdda-pll-supply = <&vreg_l4h_e0_1p2>; > + refgen-supply = <&vreg_l4f_e1_1p2>; > + > + status = "okay"; > +}; > + > +&usb_hs { > + dr_mode = "host"; > + > + status = "okay"; > +}; > + > +&usb_hs_phy { > + vdd-supply = <&vreg_l2h_e0_0p72>; > + vdda12-supply = <&vreg_l4h_e0_1p2>; > + > + phys = <&ptn3222_cam>; > + > + status = "okay"; > +}; > + > +&usb_2 { > + dr_mode = "host"; > + maximum-speed = "high-speed"; > + > + /delete-property/ usb-role-switch; > + phys = <&usb_2_hsphy>; > + phy-names = "usb2-phy"; > + > + status = "okay"; > +}; > + > +&usb_2_hsphy { > + vdd-supply = <&vreg_l4c_e1_0p72>; > + vdda12-supply = <&vreg_l4f_e1_1p2>; > + > + phys = <&ptn3222_fpr>; > + > + status = "okay"; > +}; > -- > 2.53.0 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v4 3/3] firmware: qcom: scm: Allow QSEECOM on ThinkPad T14s Gen 7 2026-09-29 22:18 [PATCH v4 0/3] arm64: dts: qcom: Lenovo ThinkPad T14s Gen 7 (Mahua) support Srinivas Kandagatla 2026-09-29 22:18 ` [PATCH v4 1/3] dt-bindings: arm: qcom: add Lenovo ThinkPad T14s Gen 7 (Mahua) Srinivas Kandagatla 2026-09-29 22:18 ` [PATCH v4 2/3] arm64: dts: qcom: Add Lenovo ThinkPad T14s Gen 7 Srinivas Kandagatla @ 2026-09-29 22:18 ` Srinivas Kandagatla 2 siblings, 0 replies; 5+ messages in thread From: Srinivas Kandagatla @ 2026-09-29 22:18 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: Abel Vesa, Neil Armstrong, Dmitry Baryshkov, linux-arm-msm, devicetree, linux-kernel, Srinivas Kandagatla Allow the use of QSEECOM on the Mahua-based Lenovo ThinkPad T14s Gen 7, matching the pattern established for the Yoga Slim 7x Gen 11. Assisted-by: Claude:claude-opus-4-7 Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> --- drivers/firmware/qcom/qcom_scm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c index 899573674c2e..43e250faea75 100644 --- a/drivers/firmware/qcom/qcom_scm.c +++ b/drivers/firmware/qcom/qcom_scm.c @@ -2244,6 +2244,7 @@ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = { { .compatible = "lenovo,ideacentre-mini-01q8x10" }, { .compatible = "lenovo,thinkbook-16" }, { .compatible = "lenovo,thinkpad-t14s" }, + { .compatible = "lenovo,thinkpad-t14s-gen7" }, { .compatible = "lenovo,thinkpad-x13s", }, { .compatible = "lenovo,yoga-slim7x" }, { .compatible = "lenovo,yoga-slim7x-gen11" }, -- 2.53.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-10-01 2:30 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-09-29 22:18 [PATCH v4 0/3] arm64: dts: qcom: Lenovo ThinkPad T14s Gen 7 (Mahua) support Srinivas Kandagatla 2026-09-29 22:18 ` [PATCH v4 1/3] dt-bindings: arm: qcom: add Lenovo ThinkPad T14s Gen 7 (Mahua) Srinivas Kandagatla 2026-09-29 22:18 ` [PATCH v4 2/3] arm64: dts: qcom: Add Lenovo ThinkPad T14s Gen 7 Srinivas Kandagatla 2026-10-01 2:30 ` Bjorn Andersson 2026-09-29 22:18 ` [PATCH v4 3/3] firmware: qcom: scm: Allow QSEECOM on " Srinivas Kandagatla
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®