Re: [PATCH v3 2/3] arm64: dts: qcom: Add HP EliteBook X G2q 14 AI
Jason Pettit <[email protected]>
| Newsgroups | org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <CAG9dZes12TWHUjTTggbm8j38Aqk1zuz33bd8uikhkJVyUq9Z0Q@mail.gmail.com> |
> On Wed, Aug 12, 2026 at 6:04 AM Tobias Heider <[email protected]> wrote: >> >> On Sun, Aug 09, 2026 at 02:29:22PM -0700, Jason Pettit wrote: >> > Add board support for the HP EliteBook X G2q 14" Next Gen AI PC >> > (product SKU C4JG0AV, board 8E91), a Snapdragon X2 Elite (Glymur) >> > laptop, using the "hp,elitebook-x-g2q" / "qcom,glymur" compatible. >> > >> > Enabled by this device tree: >> > >> > - internal eDP panel (samsung,atna33xc20) >> > - 2x USB Type-C with DisplayPort alt-mode and USB >> > - chassis HDMI output >> > - chassis USB-A host port (usb_mp multiport controller) >> > - internal eUSB2 host with the Elan fingerprint reader >> > - NVMe SSD on PCIe5 >> > - Wi-Fi and Bluetooth >> > - HID-over-I2C keyboard, touchpad, touchscreen; lid switch >> > - Adreno GPU and GMU (Freedreno GL on Mesa) >> > - audio playback and capture >> > - real-time clock >> > - compute DSP (cDSP) >> > >> > The HDMI jack is driven by a power-only DisplayPort-to-HDMI LSPCON on >> > the usb_2 combo-PHY DP lanes rather than being a third USB-C port; HPD >> > is on gpio126. The LSPCON is on an I/O sub-board with no I2C/AUX control >> > path, so it is modelled with the generic simple-bridge "parade,ps185hdm" >> > compatible used by the in-tree x1e80100 HDMI-bridge boards (the exact >> > bridge part is unconfirmed) and it needs CONFIG_DRM_SIMPLE_BRIDGE. >> > >> > The &gpu/&gmu enable, the audio nodes and &remoteproc_soccp opt into >> > glymur.dtsi SoC nodes that are still in-flight; those series are >> > declared as prerequisites in the cover letter. >> > >> > Assisted-by: Claude:claude-opus-4-8 >> > Signed-off-by: Jason Pettit <[email protected]> >> > --- >> > arch/arm64/boot/dts/qcom/Makefile | 1 + >> > .../boot/dts/qcom/glymur-hp-elitebook-x-g2q.dts | 1039 ++++++++++++++++++++ >> > 2 files changed, 1040 insertions(+) >> > >> > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile >> > index 1c86e7e98f55..146955de4606 100644 >> > --- a/arch/arm64/boot/dts/qcom/Makefile >> > +++ b/arch/arm64/boot/dts/qcom/Makefile >> > @@ -18,6 +18,7 @@ dtb-$(CONFIG_ARCH_QCOM) += eliza-cqs-evk.dtb >> > dtb-$(CONFIG_ARCH_QCOM) += eliza-mtp.dtb >> > dtb-$(CONFIG_ARCH_QCOM) += glymur-asus-zenbook-a16-ux3607oa.dtb >> > dtb-$(CONFIG_ARCH_QCOM) += glymur-crd.dtb >> > +dtb-$(CONFIG_ARCH_QCOM) += glymur-hp-elitebook-x-g2q.dtb >> > dtb-$(CONFIG_ARCH_QCOM) += hamoa-iot-evk.dtb >> > >> > hamoa-iot-evk-el2-dtbs := hamoa-iot-evk.dtb x1-el2.dtbo >> > diff --git a/arch/arm64/boot/dts/qcom/glymur-hp-elitebook-x-g2q.dts b/arch/arm64/boot/dts/qcom/glymur-hp-elitebook-x-g2q.dts >> > new file mode 100644 >> > index 000000000000..8d0fe276bf83 >> > --- /dev/null >> > +++ b/arch/arm64/boot/dts/qcom/glymur-hp-elitebook-x-g2q.dts >> > @@ -0,0 +1,1039 @@ >> > +// SPDX-License-Identifier: BSD-3-Clause >> > +/* >> > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. >> > + */ >> > +/dts-v1/; >> > + >> > +#include "glymur.dtsi" >> > + >> > +#include "pmcx0102.dtsi" /* SPMI0: SID-2/3 SPMI1: SID-2/3 */ >> > +#include "pmh0101.dtsi" /* SPMI0: SID-1 */ >> > +#include "pmh0110-glymur.dtsi" /* SPMI0: SID-5/7 SPMI1: SID-5 */ >> > +#include "pmh0104-glymur.dtsi" /* SPMI0: SID-8/9 SPMI1: SID-11 */ >> > +#include "pmk8850.dtsi" /* SPMI0: SID-0 */ >> > +#include "smb2370.dtsi" /* SPMI2: SID-9/10 */ >> > + >> > +#include <dt-bindings/gpio/gpio.h> >> > +#include <dt-bindings/input/gpio-keys.h> >> > +#include <dt-bindings/input/input.h> >> > +#include <dt-bindings/interrupt-controller/irq.h> >> > +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> >> > +#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h> >> > + >> > +/ { >> > + model = "HP EliteBook X G2q 14 AI"; >> > + compatible = "hp,elitebook-x-g2q", "qcom,glymur"; >> > + >> > + aliases { >> > + serial1 = &uart14; >> > + }; >> > + >> > + 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>; >> > + }; >> > + }; >> > + >> > + gpio-keys { >> > + compatible = "gpio-keys"; >> > + >> > + pinctrl-0 = <&lid_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>; >> > + }; >> > + }; >> > + >> > + hdmi-bridge { >> > + compatible = "parade,ps185hdm"; >> > + >> > + pinctrl-0 = <&usb2_dp_hot_plug_detect>; >> > + pinctrl-names = "default"; >> > + >> > + ports { >> > + #address-cells = <1>; >> > + #size-cells = <0>; >> > + >> > + port@0 { >> > + reg = <0>; >> > + >> > + hdmi_bridge_in: endpoint { >> > + remote-endpoint = <&usb_2_qmpphy_out_dp>; >> > + }; >> > + }; >> > + >> > + port@1 { >> > + reg = <1>; >> > + >> > + hdmi_bridge_out: endpoint { >> > + remote-endpoint = <&hdmi_con>; >> > + }; >> > + }; >> > + }; >> > + }; >> > + >> > + hdmi-connector { >> > + compatible = "hdmi-connector"; >> > + type = "a"; >> > + >> > + port { >> > + hdmi_con: endpoint { >> > + remote-endpoint = <&hdmi_bridge_out>; >> > + }; >> > + }; >> > + }; >> > + >> > + pmic-glink { >> > + compatible = "qcom,glymur-pmic-glink", >> > + "qcom,pmic-glink"; >> > + #address-cells = <1>; >> > + #size-cells = <0>; >> > + >> > + /* Left side 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 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_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; >> > + }; >> > + >> > + sound { >> > + compatible = "qcom,glymur-sndcard"; >> > + model = "GLYMUR-HP-EliteBook-X-G2q"; >> > + >> > + audio-routing = "WooferLeft IN", "WSA WSA_SPK1 OUT", >> > + "TweeterLeft IN", "WSA WSA_SPK2 OUT", >> > + "WooferRight IN", "WSA2 WSA_SPK1 OUT", >> > + "TweeterRight IN", "WSA2 WSA_SPK2 OUT", >> > + "VA DMIC0", "vdd-micb", >> > + "VA DMIC1", "vdd-micb", >> > + "VA DMIC2", "vdd-micb", >> > + "VA DMIC3", "vdd-micb"; >> > + >> > + va-dai-link { >> > + link-name = "VA Capture"; >> > + >> > + codec { >> > + sound-dai = <&lpass_vamacro 0>; >> > + }; >> > + >> > + cpu { >> > + sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>; >> > + }; >> > + >> > + platform { >> > + sound-dai = <&q6apm>; >> > + }; >> > + }; >> > + >> > + wsa-dai-link { >> > + link-name = "WSA Playback"; >> > + >> > + codec { >> > + sound-dai = <&left_woofer>, <&left_tweeter>, >> > + <&swr0 0>, <&lpass_wsamacro 0>, >> > + <&right_woofer>, <&right_tweeter>, >> > + <&swr3 0>, <&lpass_wsa2macro 0>; >> > + }; >> > + >> > + cpu { >> > + sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>; >> > + }; >> > + >> > + 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_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_l7b_e0_3p1: ldo7 { >> > + regulator-name = "vreg_l7b_e0_3p1"; >> > + regulator-min-microvolt = <3072000>; >> > + regulator-max-microvolt = <3072000>; >> > + 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>; >> > + }; >> > + >> > + 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>; >> > + }; >> > + }; >> > + >> > + regulators-1 { >> > + compatible = "qcom,pmcx0102-rpmh-regulators"; >> > + qcom,pmic-id = "C_E1"; >> > + >> > + vreg_l1c_e1_0p91: ldo1 { >> > + regulator-name = "vreg_l1c_e1_0p91"; >> > + regulator-min-microvolt = <912000>; >> > + regulator-max-microvolt = <912000>; >> > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; >> > + }; >> > + }; >> > + >> > + regulators-2 { >> > + compatible = "qcom,pmh0110-rpmh-regulators"; >> > + qcom,pmic-id = "F_E0"; >> > + >> > + 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>; >> > + }; >> > + }; >> > + >> > + regulators-3 { >> > + compatible = "qcom,pmh0110-rpmh-regulators"; >> > + qcom,pmic-id = "F_E1"; >> > + >> > + 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_0p88: ldo2 { >> > + regulator-name = "vreg_l2f_e1_0p88"; >> > + regulator-min-microvolt = <880000>; >> > + regulator-max-microvolt = <880000>; >> > + 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_0p88: ldo2 { >> > + regulator-name = "vreg_l2h_e0_0p88"; >> > + regulator-min-microvolt = <880000>; >> > + regulator-max-microvolt = <880000>; >> > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; >> > + }; >> > + >> > + vreg_l4h_e0_1p2: ldo4 { >> > + regulator-name = "vreg_l4h_e0_1p2"; >> > + regulator-min-microvolt = <1200000>; >> > + regulator-max-microvolt = <1200000>; >> > + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; >> > + }; >> > + }; >> > +}; >> > + >> > +&gmu { >> > + status = "okay"; >> > +}; >> > + >> > +&gpu { >> > + status = "okay"; >> > +}; >> > + >> > +&i2c0 { >> > + clock-frequency = <400000>; >> > + >> > + status = "okay"; >> > + >> > + touchpad@2c { >> > + compatible = "hid-over-i2c"; >> > + reg = <0x2c>; >> > + >> > + hid-descr-addr = <0x20>; >> > + interrupts-extended = <&tlmm 66 IRQ_TYPE_LEVEL_LOW>; >> > + >> > + 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>; >> > + >> > + pinctrl-0 = <&kybd_default>; >> > + pinctrl-names = "default"; >> > + >> > + wakeup-source; >> > + }; >> > +}; >> > + >> > +&i2c8 { >> > + clock-frequency = <400000>; >> > + >> > + status = "okay"; >> > + >> > + touchscreen@10 { >> > + compatible = "hid-over-i2c"; >> > + reg = <0x10>; >> > + >> > + hid-descr-addr = <0x1>; >> > + interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>; >> > + >> > + post-power-on-delay-ms = <200>; >> > + >> > + pinctrl-0 = <&ts0_default>; >> > + pinctrl-names = "default"; >> > + }; >> > +}; >> > + >> > +&lpass_vamacro { >> > + vdd-micb-supply = <&vreg_l1b_e0_1p8>; >> > + >> > + pinctrl-0 = <&dmic01_default>, <&dmic23_default>; >> > + pinctrl-names = "default"; >> > + >> > + qcom,dmic-sample-rate = <4800000>; >> > +}; >> > + >> > +&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_dp2 { >> > + status = "okay"; >> > +}; >> > + >> > +&mdss_dp2_out { >> > + link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>; >> > +}; >> > + >> > +&mdss_dp3 { >> > + /delete-property/ #sound-dai-cells; >> > + >> > + status = "okay"; >> > + >> > + aux-bus { >> > + panel { >> > + compatible = "samsung,atna33xc20"; >> > + enable-gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; >> > + power-supply = <&vreg_edp_3p3>; >> > + >> > + pinctrl-0 = <&edp_bl_en>; >> > + pinctrl-names = "default"; >> > + >> > + 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_0p88>; >> > + vdda-pll-supply = <&vreg_l4f_e1_1p2>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&pcie4 { >> > + pinctrl-0 = <&pcie4_default>; >> > + pinctrl-names = "default"; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&pcie4_phy { >> > + vdda-phy-supply = <&vreg_l1c_e1_0p91>; >> > + 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 { >> > + 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>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&pmh0101_gpios { >> > + nvme_reg_en: nvme-reg-en-state { >> > + pins = "gpio14"; >> > + function = "normal"; >> > + bias-disable; >> > + }; >> > +}; >> > + >> > +&pmk8850_rtc { >> > + qcom,no-alarm; >> > + qcom,uefi-rtc-info; >> > +}; >> > + >> > +&remoteproc_adsp { >> > + firmware-name = "qcom/glymur/hp/elitebook-x-g2q/adsp.mbn", >> > + "qcom/glymur/hp/elitebook-x-g2q/adsp_dtb.mbn"; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&remoteproc_cdsp { >> > + firmware-name = "qcom/glymur/hp/elitebook-x-g2q/cdsp.mbn", >> > + "qcom/glymur/hp/elitebook-x-g2q/cdsp_dtb.mbn"; >> >> Those firwmare names seem to diverge from the earlier Lenovo Yoga Slim 7x Gen11 patch >> and the X1E laptops currently in the tree. >> >> Generally it seems for consumer devices we have been sticking to the Windows firmware >> names in the past which would be: >> >> adsp.mbn -> qcadsp8480.mbn >> adsp_dtb.mbn -> adsp_dtbs.elf >> cdsp.mbn -> qccdsp8480.mbn >> cdsp_dtb.mbn -> cdsp_dtbs.elf >> >> See https://lore.kernel.org/all/20260731-topic-yoga_submission-v2-2-f1887031da4f@oss.qualcomm.com/ >> Thank you. I will adopt this in v4. Jason >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&remoteproc_soccp { >> > + status = "okay"; >> > +}; >> > + >> > +&smb2370_j_e2_eusb2_repeater { >> > + vdd18-supply = <&vreg_l15b_e0_1p8>; >> > + vdd3-supply = <&vreg_l7b_e0_3p1>; >> > +}; >> > + >> > +&smb2370_k_e2_eusb2_repeater { >> > + vdd18-supply = <&vreg_l15b_e0_1p8>; >> > + vdd3-supply = <&vreg_l7b_e0_3p1>; >> > +}; >> > + >> > +/* SID-11 (smb2370_l) does not enumerate on this board; keep it disabled. */ >> > +&smb2370_l_e2 { >> > + status = "disabled"; >> > +}; >> > + >> > +&swr0 { >> > + status = "okay"; >> > + >> > + /* WSA8845, left woofer */ >> > + left_woofer: speaker@0,0 { >> > + compatible = "sdw20217020400"; >> > + reg = <0 0>; >> > + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; >> > + #sound-dai-cells = <0>; >> > + sound-name-prefix = "WooferLeft"; >> > + vdd-1p8-supply = <&vreg_l15b_e0_1p8>; >> > + vdd-io-supply = <&vreg_l18b_e0_1p2>; >> > + qcom,port-mapping = <1 2 3 7 12 14>; >> > + }; >> > + >> > + /* WSA8845, left tweeter */ >> > + left_tweeter: speaker@0,1 { >> > + compatible = "sdw20217020400"; >> > + reg = <0 1>; >> > + reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>; >> > + #sound-dai-cells = <0>; >> > + sound-name-prefix = "TweeterLeft"; >> > + vdd-1p8-supply = <&vreg_l15b_e0_1p8>; >> > + vdd-io-supply = <&vreg_l18b_e0_1p2>; >> > + qcom,port-mapping = <4 5 6 7 13 15>; >> > + }; >> > +}; >> > + >> > +&swr3 { >> > + status = "okay"; >> > + >> > + /* WSA8845, right woofer */ >> > + right_woofer: speaker@0,0 { >> > + compatible = "sdw20217020400"; >> > + reg = <0 0>; >> > + reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>; >> > + #sound-dai-cells = <0>; >> > + sound-name-prefix = "WooferRight"; >> > + 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 tweeter */ >> > + right_tweeter: speaker@0,1 { >> > + compatible = "sdw20217020400"; >> > + reg = <0 1>; >> > + reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>; >> > + #sound-dai-cells = <0>; >> > + sound-name-prefix = "TweeterRight"; >> > + vdd-1p8-supply = <&vreg_l15b_e0_1p8>; >> > + vdd-io-supply = <&vreg_l18b_e0_1p2>; >> > + qcom,port-mapping = <4 5 6 7 13 15>; >> > + }; >> > +}; >> > + >> > +&tcsr { >> > + vdda-qrefrpt0-0p9-supply = <&vreg_l2f_e1_0p88>; >> > + vdda-qrefrpt1-0p9-supply = <&vreg_l2f_e1_0p88>; >> > + vdda-qrefrpt2-0p9-supply = <&vreg_l2f_e1_0p88>; >> > + vdda-qrefrpt3-0p9-supply = <&vreg_l2h_e0_0p88>; >> > + vdda-qrefrpt4-0p9-supply = <&vreg_l2h_e0_0p88>; >> > + vdda-qrefrx0-0p9-supply = <&vreg_l2f_e1_0p88>; >> > + vdda-qrefrx1-0p9-supply = <&vreg_l2f_e1_0p88>; >> > + vdda-qrefrx2-0p9-supply = <&vreg_l2f_e1_0p88>; >> > + vdda-qrefrx4-0p9-supply = <&vreg_l2h_e0_0p88>; >> > + 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 */ >> > + <44 4>, /* Security SPI (TPM) */ >> > + <65 1>; /* EC reset */ >> > + >> > + edp_bl_en: edp-bl-en-state { >> > + pins = "gpio18"; >> > + function = "gpio"; >> > + drive-strength = <16>; >> > + bias-disable; >> > + }; >> > + >> > + ts0_default: ts0-default-state { >> > + pins = "gpio51"; >> > + function = "gpio"; >> > + bias-disable; >> > + }; >> > + >> > + tpad_default: tpad-default-state { >> > + pins = "gpio66"; >> > + function = "gpio"; >> > + bias-disable; >> > + }; >> > + >> > + kybd_default: kybd-default-state { >> > + pins = "gpio67"; >> > + function = "gpio"; >> > + bias-disable; >> > + }; >> > + >> > + edp_reg_en: edp-reg-en-state { >> > + pins = "gpio70"; >> > + function = "gpio"; >> > + drive-strength = <16>; >> > + bias-disable; >> > + }; >> > + >> > + lid_default: lid-default-state { >> > + pins = "gpio92"; >> > + function = "gpio"; >> > + bias-disable; >> > + }; >> > + >> > + wcn_sw_en: wcn-sw-en-state { >> > + pins = "gpio94"; >> > + 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; >> > + }; >> > + >> > + usb2_dp_hot_plug_detect: usb2-dp-hot-plug-detect-state { >> > + pins = "gpio126"; >> > + function = "usb2_dp"; >> > + 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; >> > + }; >> > + }; >> > +}; >> > + >> > +&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_l4h_e0_1p2>; >> > + vdda-pll-supply = <&vreg_l3f_e0_0p91>; >> > + 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_l4h_e0_1p2>; >> > + vdda-pll-supply = <&vreg_l1h_e0_0p94>; >> > + refgen-supply = <&vreg_l2f_e0_0p94>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&usb_1_qmpphy_out { >> > + remote-endpoint = <&pmic_glink_ss_in1>; >> > +}; >> > + >> > +/* usb_2's combo PHY drives the HDMI bridge over DP; keep the dwc3 enabled. */ >> > +&usb_2 { >> > + maximum-speed = "high-speed"; >> > + >> > + phys = <&usb_2_hsphy>; >> > + phy-names = "usb2-phy"; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&usb_2_hsphy { >> > + vdd-supply = <&vreg_l3f_e0_0p91>; >> > + vdda12-supply = <&vreg_l4h_e0_1p2>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&usb_2_qmpphy { >> > + vdda-phy-supply = <&vreg_l4h_e0_1p2>; >> > + vdda-pll-supply = <&vreg_l3f_e0_0p91>; >> > + refgen-supply = <&vreg_l2f_e0_0p94>; >> > + >> > + /delete-property/ mode-switch; >> > + /delete-property/ orientation-switch; >> > + >> > + status = "okay"; >> > + >> > + ports { >> > + port@0 { >> > + #address-cells = <1>; >> > + #size-cells = <0>; >> > + >> > + /delete-node/ endpoint; >> > + >> > + usb_2_qmpphy_out_dp: endpoint@0 { >> > + reg = <0>; >> > + >> > + data-lanes = <3 2 1 0>; >> > + remote-endpoint = <&hdmi_bridge_in>; >> > + }; >> > + }; >> > + }; >> > +}; >> > + >> > +/* Internal USB2 host for the Elan fingerprint reader (usb 04f3:0ca8). */ >> > +&usb_hs { >> > + dr_mode = "host"; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&usb_hs_phy { >> > + vdd-supply = <&vreg_l2h_e0_0p88>; >> > + vdda12-supply = <&vreg_l4h_e0_1p2>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +/* Multiport host: port 0 = chassis USB-A, port 1 = internal USB HID. */ >> > +&usb_mp { >> > + status = "okay"; >> > +}; >> > + >> > +&usb_mp_hsphy0 { >> > + vdd-supply = <&vreg_l2h_e0_0p88>; >> > + vdda12-supply = <&vreg_l4h_e0_1p2>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&usb_mp_hsphy1 { >> > + vdd-supply = <&vreg_l2h_e0_0p88>; >> > + vdda12-supply = <&vreg_l4h_e0_1p2>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&usb_mp_qmpphy0 { >> > + vdda-phy-supply = <&vreg_l4h_e0_1p2>; >> > + vdda-pll-supply = <&vreg_l2h_e0_0p88>; >> > + refgen-supply = <&vreg_l4f_e1_1p2>; >> > + >> > + status = "okay"; >> > +}; >> > + >> > +&usb_mp_qmpphy1 { >> > + vdda-phy-supply = <&vreg_l4h_e0_1p2>; >> > + vdda-pll-supply = <&vreg_l2h_e0_0p88>; >> > + refgen-supply = <&vreg_l4f_e1_1p2>; >> > + >> > + status = "okay"; >> > +}; >> > >> > -- >> > 2.50.1 >> > >> >