Add support for the Microsoft Surface Laptop 13.8" 8th Edition, which is
built on the Mahua SoC. Most of the board follows the Qualcomm reference
design. The keyboard, fan and platform profile sit behind the Surface
Aggregator Module on uart22, same as on the Surface Laptop 7.

What works:
- internal eDP panel (link capped at HBR, HBR2 fails channel equalization)
- both USB-C ports, host and charging
- USB multiport controller behind the two PTN3222 eUSB2 redrivers
- Wi-Fi and Bluetooth (WCN7850)
- speakers (2x WSA8845) and the two DMICs
- NVMe
- keyboard, fan and platform profile via SAM
- touchpad and touchscreen (HID over I2C)
- lid switch

The GPU and GMU remain disabled because support is not yet
functional on this platform.

Assisted-by: LLM
Signed-off-by: Gopikrishna Garmidi <[email protected]>
---
 arch/arm64/boot/dts/qcom/Makefile                  |    1 +
 .../qcom/mahua-microsoft-surface-laptop-8-13in.dts | 1180 ++++++++++++++++++++
 2 files changed, 1181 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/Makefile 
b/arch/arm64/boot/dts/qcom/Makefile
index 88230c4e00ea..4e6ae446ff77 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -65,6 +65,7 @@ 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)        += mahua-microsoft-surface-laptop-8-13in.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-microsoft-surface-laptop-8-13in.dts 
b/arch/arm64/boot/dts/qcom/mahua-microsoft-surface-laptop-8-13in.dts
new file mode 100644
index 000000000000..2e37b6f96740
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/mahua-microsoft-surface-laptop-8-13in.dts
@@ -0,0 +1,1180 @@
+// 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 "pmh0110-glymur.dtsi"
+#include "pmh0104-glymur.dtsi"
+#include "pmk8850.dtsi"
+#include "smb2370.dtsi"
+
+#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>
+
+/* 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 = "Microsoft Surface Laptop 8th Edition (13.8 inch)";
+       compatible = "microsoft,surface-laptop-8-13in", "qcom,mahua";
+
+       aliases {
+               i2c0 = &i2c0;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               i2c8 = &i2c8;
+               i2c10 = &i2c10;
+
+               serial0 = &uart22;
+               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>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&hall_int_n_default>;
+               pinctrl-names = "default";
+
+               switch-lid {
+                       label = "lid";
+                       gpios = <&tlmm 2 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>;
+
+               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>;
+                                       };
+                               };
+                       };
+               };
+
+               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>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       reserved-memory {
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       size = <0x0 0x8000000>;
+                       reusable;
+                       linux,cma-default;
+               };
+       };
+
+       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_tpad: regulator-tpad {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_TPAD";
+
+               gpio = <&tlmm 102 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <20000>;
+
+               pinctrl-0 = <&tpad_en>;
+               pinctrl-names = "default";
+       };
+
+       vreg_ts: regulator-ts {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_TS";
+
+               gpio = <&tlmm 38 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <6000>;
+
+               pinctrl-0 = <&ts_pwr_en>;
+               pinctrl-names = "default";
+       };
+
+       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 = "Microsoft-Surface-Laptop-8-13in";
+               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 = <1804000>;
+                       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 = <3304000>;
+                       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 = <2960000>;
+                       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_1p14: ldo12 {
+                       regulator-name = "vreg_l12b_e0_1p14";
+                       regulator-min-microvolt = <1144000>;
+                       regulator-max-microvolt = <1144000>;
+                       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_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>;
+               };
+       };
+
+       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_0p82: ldo2 {
+                       regulator-name = "vreg_l2f_e0_0p82";
+                       regulator-min-microvolt = <832000>;
+                       regulator-max-microvolt = <832000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3f_e0_0p72: ldo3 {
+                       regulator-name = "vreg_l3f_e0_0p72";
+                       regulator-min-microvolt = <720000>;
+                       regulator-max-microvolt = <720000>;
+                       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_0p9: ldo1 {
+                       regulator-name = "vreg_l1f_e1_0p9";
+                       regulator-min-microvolt = <904000>;
+                       regulator-max-microvolt = <904000>;
+                       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_0p89: ldo1 {
+                       regulator-name = "vreg_l1h_e0_0p89";
+                       regulator-min-microvolt = <832000>;
+                       regulator-max-microvolt = <832000>;
+                       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 = <100000>;
+
+       status = "okay";
+
+       /* Something @39, @3e, @44 */
+};
+
+&i2c4 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       /* INA4230 power monitors @40, @41, @42, @43, @44 */
+};
+
+&i2c5 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       ptn3222_1: redriver@43 {
+               compatible = "nxp,ptn3222";
+               reg = <0x43>;
+
+               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+               vdd3v3-supply = <&vreg_l8b_e0_3p3>;
+               vdd1v8-supply = <&vreg_l15b_e0_1p8>;
+
+               #phy-cells = <0>;
+       };
+
+       ptn3222_0: redriver@4f {
+               compatible = "nxp,ptn3222";
+               reg = <0x4f>;
+
+               reset-gpios = <&tlmm 8 GPIO_ACTIVE_LOW>;
+
+               vdd3v3-supply = <&vreg_l8b_e0_3p3>;
+               vdd1v8-supply = <&vreg_l15b_e0_1p8>;
+
+               #phy-cells = <0>;
+       };
+};
+
+&i2c8 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       touchscreen@41 {
+               compatible = "hid-over-i2c";
+               reg = <0x41>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 43 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_ts>;
+               post-power-on-delay-ms = <150>;
+
+               pinctrl-0 = <&ts_default>;
+               pinctrl-names = "default";
+       };
+};
+
+&i2c10 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       touchpad@15 {
+               compatible = "hid-over-i2c";
+               reg = <0x15>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_tpad>;
+
+               pinctrl-0 = <&tpad_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+};
+
+&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";
+                       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>;
+       /* HBR2 channel equalization fails, limit the link to HBR */
+       link-frequencies = /bits/ 64 <1620000000 2700000000>;
+
+       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_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 {
+       vddpe-3v3-supply = <&vreg_nvme>;
+
+       pinctrl-0 = <&pcie5_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie5_phy {
+       vdda-phy-supply = <&vreg_l2f_e0_0p82>;
+       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>;
+};
+
+&pmh0101_gpios {
+       nvme_reg_en: nvme-reg-en-state {
+               pins = "gpio14";
+               function = "normal";
+               bias-disable;
+       };
+};
+
+&pmk8850_rtc {
+       qcom,no-alarm;
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/glymur/microsoft/mahua/qcadsp8480.mbn",
+                       "qcom/glymur/microsoft/mahua/adsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/glymur/microsoft/mahua/qccdsp8480.mbn",
+                       "qcom/glymur/microsoft/mahua/cdsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&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>;
+};
+
+&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>;
+       };
+};
+
+&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_l1f_e1_0p9>;
+       vdda-qrefrpt4-0p9-supply = <&vreg_l2h_e0_0p72>;
+       vdda-qrefrpt5-0p9-supply = <&vreg_l2h_e0_0p72>;
+       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-qrefrx3-0p9-supply = <&vreg_l2h_e0_0p72>;
+       vdda-qreftx1-0p9-supply = <&vreg_l1f_e1_0p9>;
+       vdda-refgen3-0p9-supply = <&vreg_l1f_e1_0p9>;
+       vdda-refgen3-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) */
+
+       edp_bl_en: edp-bl-en-state {
+               pins = "gpio18";
+               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 = "gpio2";
+               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;
+               };
+       };
+
+       ssam_state: ssam-state-state {
+               pins = "gpio71";
+               function = "gpio";
+               bias-disable;
+       };
+
+       tpad_default: tpad-default-state {
+               pins = "gpio3";
+               function = "gpio";
+               bias-disable;
+       };
+
+       tpad_en: tpad-en-state {
+               pins = "gpio102";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       ts_default: ts-default-state {
+               int-n-pins {
+                       pins = "gpio43";
+                       function = "gpio";
+                       bias-disable;
+               };
+
+               reset-n-pins {
+                       pins = "gpio48";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+                       output-high;
+               };
+       };
+
+       ts_pwr_en: ts-pwr-en-state {
+               pins = "gpio38";
+               function = "gpio";
+               drive-strength = <2>;
+               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;
+       };
+};
+
+&uart14 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn7850-bt";
+               max-speed = <3200000>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+       };
+};
+
+&uart21 {
+       status = "disabled";
+};
+
+&uart22 {
+       status = "okay";
+
+       embedded-controller {
+               compatible = "microsoft,surface-sam";
+
+               interrupts-extended = <&tlmm 71 IRQ_TYPE_EDGE_RISING>;
+
+               current-speed = <4000000>;
+
+               pinctrl-0 = <&ssam_state>;
+               pinctrl-names = "default";
+       };
+};
+
+&usb_0 {
+       dr_mode = "host";
+
+       status = "okay";
+};
+
+&usb_0_dwc3_hs {
+       remote-endpoint = <&pmic_glink_hs_in>;
+};
+
+&usb_0_hsphy {
+       vdd-supply = <&vreg_l3f_e0_0p72>;
+       vdda12-supply = <&vreg_l4h_e0_1p2>;
+
+       phys = <&smb2370_j_e2_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_0_qmpphy {
+       vdda-phy-supply = <&vreg_l3f_e0_0p72>;
+       vdda-pll-supply = <&vreg_l4h_e0_1p2>;
+       refgen-supply = <&vreg_l2f_e0_0p82>;
+
+       status = "okay";
+};
+
+&usb_0_qmpphy_out {
+       remote-endpoint = <&pmic_glink_ss_in>;
+};
+
+&usb_1 {
+       dr_mode = "host";
+
+       status = "okay";
+};
+
+&usb_1_dwc3_hs {
+       remote-endpoint = <&pmic_glink_hs_in1>;
+};
+
+&usb_1_hsphy {
+       vdd-supply = <&vreg_l3f_e0_0p72>;
+       vdda12-supply = <&vreg_l4h_e0_1p2>;
+
+       phys = <&smb2370_k_e2_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_qmpphy {
+       vdda-phy-supply = <&vreg_l1h_e0_0p89>;
+       vdda-pll-supply = <&vreg_l4h_e0_1p2>;
+       refgen-supply = <&vreg_l2f_e0_0p82>;
+
+       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";
+};

-- 
2.34.1

Reply via email to