arm64: dts: qcom: sc8280xp: Add Microsoft Surface Pro 9 5G
authorJérôme de Bretagne <jerome.debretagne@gmail.com>
Sun, 8 Sep 2024 22:35:05 +0000 (00:35 +0200)
committerBjorn Andersson <andersson@kernel.org>
Sun, 6 Oct 2024 03:20:46 +0000 (22:20 -0500)
Add an initial devicetree for the Microsoft Surface Pro 9 5G, based
on SC8280XP.

It enables the support for Wi-Fi, NVMe, the two USB Type-C ports,
Bluetooth, 5G cellular modem, audio output (via Bluetooth headsets
or USB audio), external display via DisplayPort over Type-C (only
the bottom USB Type-C port is working so far), charging, the Surface
Aggregator Module (SAM) to get keyboard and touchpad working with
Surface Type Cover accessories.

Some key features not supported yet:
- built-in display (but software fallback is working with efifb
  when blacklisting the msm module)
- built-in display touchscreen
- external display with the top USB Type-C port
- speakers and microphones
- physical volume up and down keys
- LID switch detection

This devicetree is based on the other SC8280XP ones, for the Lenovo
ThinkPad X13s and the Qualcomm CRD.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Link: https://lore.kernel.org/r/20240908223505.21011-6-jerome.debretagne@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/Makefile
arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts [new file with mode: 0644]

index ae002c7cf1268a6f848fefdfadbd746091ee517b..aea1d69db541e5c26dfb8a3c310da3a1e892b930 100644 (file)
@@ -191,6 +191,7 @@ dtb-$(CONFIG_ARCH_QCOM)     += sc8180x-lenovo-flex-5g.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc8180x-primus.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc8280xp-crd.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sc8280xp-lenovo-thinkpad-x13s.dtb
+dtb-$(CONFIG_ARCH_QCOM)        += sc8280xp-microsoft-arcata.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sda660-inforce-ifc6560.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm450-lenovo-tbx605f.dtb
 dtb-$(CONFIG_ARCH_QCOM)        += sdm450-motorola-ali.dtb
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts b/arch/arm64/boot/dts/qcom/sc8280xp-microsoft-arcata.dts
new file mode 100644 (file)
index 0000000..a317424
--- /dev/null
@@ -0,0 +1,1032 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024, Jérôme de Bretagne <jerome.debretagne@gmail.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "sc8280xp.dtsi"
+#include "sc8280xp-pmics.dtsi"
+
+/ {
+       model = "Microsoft Surface Pro 9 5G";
+       compatible = "microsoft,arcata", "qcom,sc8280xp";
+
+       aliases {
+               serial0 = &uart18;
+               serial1 = &uart2;
+       };
+
+       wcd938x: audio-codec {
+               compatible = "qcom,wcd9380-codec";
+
+               pinctrl-0 = <&wcd_default>;
+               pinctrl-names = "default";
+
+               reset-gpios = <&tlmm 106 GPIO_ACTIVE_LOW>;
+
+               vdd-buck-supply = <&vreg_s10b>;
+               vdd-rxtx-supply = <&vreg_s10b>;
+               vdd-io-supply = <&vreg_s10b>;
+               vdd-mic-bias-supply = <&vreg_bob>;
+
+               qcom,micbias1-microvolt = <1800000>;
+               qcom,micbias2-microvolt = <1800000>;
+               qcom,micbias3-microvolt = <1800000>;
+               qcom,micbias4-microvolt = <1800000>;
+               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+               qcom,rx-device = <&wcd_rx>;
+               qcom,tx-device = <&wcd_tx>;
+
+               #sound-dai-cells = <1>;
+       };
+
+       pmic-glink {
+               compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
+
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* Left-side top 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_con0_hs: endpoint {
+                                               remote-endpoint = <&usb_0_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_con0_ss: endpoint {
+                                               remote-endpoint = <&usb_0_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_con0_sbu: endpoint {
+                                               remote-endpoint = <&usb0_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+
+               /* Left-side bottom 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_con1_hs: endpoint {
+                                               remote-endpoint = <&usb_1_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_con1_ss: endpoint {
+                                               remote-endpoint = <&usb_1_qmpphy_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_con1_sbu: endpoint {
+                                               remote-endpoint = <&usb1_sbu_mux>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       vreg_nvme: regulator-nvme {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VCC3_SSD";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 135 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&nvme_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_vph_pwr: regulator-vph-pwr {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VPH_VCC3R9";
+               regulator-min-microvolt = <3900000>;
+               regulator-max-microvolt = <3900000>;
+
+               regulator-always-on;
+       };
+
+       vreg_wlan: regulator-wlan {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VCC_WLAN_3R9";
+               regulator-min-microvolt = <3900000>;
+               regulator-max-microvolt = <3900000>;
+
+               gpio = <&pmr735a_gpios 1 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&hastings_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_wwan: regulator-wwan {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VCC3B_WAN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pmc8280_2_gpios 1 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wwan_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       reserved-memory {
+               gpu_mem: gpu-mem@8bf00000 {
+                       reg = <0 0x8bf00000 0 0x2000>;
+                       no-map;
+               };
+
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       size = <0x0 0x8000000>;
+                       reusable;
+                       linux,cma-default;
+               };
+       };
+
+       thermal-zones {
+               skin-temp-thermal {
+                       polling-delay-passive = <250>;
+
+                       thermal-sensors = <&pmk8280_adc_tm 5>;
+
+                       trips {
+                               skin_temp_alert0: trip-point0 {
+                                       temperature = <55000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               skin_temp_alert1: trip-point1 {
+                                       temperature = <58000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+
+                               skin-temp-crit {
+                                       temperature = <73000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       trip = <&skin_temp_alert0>;
+                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+
+                               map1 {
+                                       trip = <&skin_temp_alert1>;
+                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+
+       usb0-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&usb0_sbu_default>;
+               pinctrl-names = "default";
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       usb0_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_con0_sbu>;
+                       };
+               };
+       };
+
+       usb1-sbu-mux {
+               compatible = "pericom,pi3usb102", "gpio-sbu-mux";
+
+               enable-gpios = <&tlmm 48 GPIO_ACTIVE_LOW>;
+               select-gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&usb1_sbu_default>;
+               pinctrl-names = "default";
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       usb1_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_con1_sbu>;
+                       };
+               };
+       };
+};
+
+&apps_rsc {
+       regulators-0 {
+               compatible = "qcom,pm8350-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vdd-l1-l4-supply = <&vreg_s12b>;
+               vdd-l2-l7-supply = <&vreg_bob>;
+               vdd-l3-l5-supply = <&vreg_s11b>;
+               vdd-l6-l9-l10-supply = <&vreg_s12b>;
+               vdd-l8-supply = <&vreg_s12b>;
+
+               vreg_s10b: smps10 {
+                       regulator-name = "vreg_s10b";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_s11b: smps11 {
+                       regulator-name = "vreg_s11b";
+                       regulator-min-microvolt = <1272000>;
+                       regulator-max-microvolt = <1272000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_s12b: smps12 {
+                       regulator-name = "vreg_s12b";
+                       regulator-min-microvolt = <984000>;
+                       regulator-max-microvolt = <984000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l3b: ldo3 {
+                       regulator-name = "vreg_l3b";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-boot-on;
+               };
+
+               vreg_l4b: ldo4 {
+                       regulator-name = "vreg_l4b";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6b: ldo6 {
+                       regulator-name = "vreg_l6b";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-boot-on;
+                       regulator-always-on;    // FIXME: VDD_A_EDP_0_0P9
+               };
+       };
+
+       regulators-1 {
+               compatible = "qcom,pm8350c-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vdd-bob-supply = <&vreg_vph_pwr>;
+               vdd-l1-l12-supply = <&vreg_s1c>;
+               vdd-l2-l8-supply = <&vreg_s1c>;
+               vdd-l3-l4-l5-l7-l13-supply = <&vreg_bob>;
+               vdd-l6-l9-l11-supply = <&vreg_bob>;
+               vdd-l10-supply = <&vreg_s11b>;
+
+               vreg_s1c: smps1 {
+                       regulator-name = "vreg_s1c";
+                       regulator-min-microvolt = <1880000>;
+                       regulator-max-microvolt = <1900000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l1c: ldo1 {
+                       regulator-name = "vreg_l1c";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l12c: ldo12 {
+                       regulator-name = "vreg_l12c";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l13c: ldo13 {
+                       regulator-name = "vreg_l13c";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob: bob {
+                       regulator-name = "vreg_bob";
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
+                       regulator-always-on;
+               };
+       };
+
+       regulators-2 {
+               compatible = "qcom,pm8350-rpmh-regulators";
+               qcom,pmic-id = "d";
+
+               vdd-l1-l4-supply = <&vreg_s11b>;
+               vdd-l2-l7-supply = <&vreg_bob>;
+               vdd-l3-l5-supply = <&vreg_s11b>;
+               vdd-l6-l9-l10-supply = <&vreg_s12b>;
+               vdd-l8-supply = <&vreg_s12b>;
+
+               vreg_l3d: ldo3 {
+                       regulator-name = "vreg_l3d";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l4d: ldo4 {
+                       regulator-name = "vreg_l4d";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6d: ldo6 {
+                       regulator-name = "vreg_l6d";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l7d: ldo7 {
+                       regulator-name = "vreg_l7d";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l9d: ldo9 {
+                       regulator-name = "vreg_l9d";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+};
+
+&dispcc0 {
+       status = "okay";
+};
+
+&dispcc1 {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+
+       zap-shader {
+               memory-region = <&gpu_mem>;
+               firmware-name = "qcom/sc8280xp/MICROSOFT/SurfacePro9/qcdxkmsuc8280.mbn";
+       };
+};
+
+&mdss0 {
+       status = "okay";
+};
+
+&mdss0_dp0 {
+       status = "okay";
+};
+
+&mdss0_dp0_out {
+       data-lanes = <0 1>;
+       remote-endpoint = <&usb_0_qmpphy_dp_in>;
+};
+
+&mdss0_dp1 {
+       status = "okay";
+};
+
+&mdss0_dp1_out {
+       data-lanes = <0 1>;
+       remote-endpoint = <&usb_1_qmpphy_dp_in>;
+};
+
+&pcie2a {
+       perst-gpios = <&tlmm 143 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 145 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_nvme>;
+
+       pinctrl-0 = <&pcie2a_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie2a_phy {
+       vdda-phy-supply = <&vreg_l6d>;
+       vdda-pll-supply = <&vreg_l4d>;
+
+       status = "okay";
+};
+
+&pcie3a {
+       perst-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_wwan>;
+
+       pinctrl-0 = <&pcie3a_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie3a_phy {
+       vdda-phy-supply = <&vreg_l6d>;
+       vdda-pll-supply = <&vreg_l4d>;
+
+       status = "okay";
+};
+
+&pcie4 {
+       max-link-speed = <2>;
+
+       perst-gpios = <&tlmm 141 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 139 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_wlan>;
+
+       pinctrl-0 = <&pcie4_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie4_port0 {
+       wifi@0 {
+               compatible = "pci17cb,1103";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+               qcom,ath11k-calibration-variant = "MS_SP9_5G";
+       };
+};
+
+&pcie4_phy {
+       vdda-phy-supply = <&vreg_l6d>;
+       vdda-pll-supply = <&vreg_l4d>;
+
+       status = "okay";
+};
+
+&pmk8280_pon_pwrkey {
+       status = "okay";
+};
+
+&pmk8280_pon_resin {
+       status = "okay";
+};
+
+&pmk8280_rtc {
+       nvmem-cells = <&rtc_offset>;
+       nvmem-cell-names = "offset";
+
+       status = "okay";
+};
+
+&pmk8280_sdam_6 {
+       status = "okay";
+
+       rtc_offset: rtc-offset@bc {
+               reg = <0xbc 0x4>;
+       };
+};
+
+&qup0 {
+       status = "okay";
+};
+
+&qup1 {
+       status = "okay";
+};
+
+&qup2 {
+       status = "okay";
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/sc8280xp/MICROSOFT/SurfacePro9/qcadsp8280.mbn";
+
+       status = "okay";
+};
+
+&remoteproc_nsp0 {
+       firmware-name = "qcom/sc8280xp/MICROSOFT/SurfacePro9/qccdsp8280.mbn";
+
+       status = "okay";
+};
+
+&rxmacro {
+       status = "okay";
+};
+
+&sound {
+       compatible = "qcom,sc8280xp-sndcard";
+       model = "SC8280XP-MICROSOFT-SURFACE-PRO-9-5G";
+       audio-routing = "SpkrLeft IN", "WSA_SPK1 OUT",
+                       "SpkrRight IN", "WSA_SPK2 OUT",
+                       "IN1_HPHL", "HPHL_OUT",
+                       "IN2_HPHR", "HPHR_OUT",
+                       "AMIC2", "MIC BIAS2",
+                       "VA DMIC0", "MIC BIAS1",
+                       "VA DMIC1", "MIC BIAS1",
+                       "VA DMIC2", "MIC BIAS3",
+                       "VA DMIC0", "VA MIC BIAS1",
+                       "VA DMIC1", "VA MIC BIAS1",
+                       "VA DMIC2", "VA MIC BIAS3",
+                       "TX SWR_ADC1", "ADC2_OUTPUT";
+
+       wcd-playback-dai-link {
+               link-name = "WCD Playback";
+
+               cpu {
+                       sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+               };
+
+               codec {
+                       sound-dai = <&wcd938x 0>, <&swr1 0>, <&rxmacro 0>;
+               };
+
+               platform {
+                       sound-dai = <&q6apm>;
+               };
+       };
+
+       wcd-capture-dai-link {
+               link-name = "WCD Capture";
+
+               cpu {
+                       sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+               };
+
+               codec {
+                       sound-dai = <&wcd938x 1>, <&swr2 0>, <&txmacro 0>;
+               };
+
+               platform {
+                       sound-dai = <&q6apm>;
+               };
+       };
+
+       wsa-dai-link {
+               link-name = "WSA Playback";
+
+               cpu {
+                       sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+               };
+
+               codec {
+                       sound-dai = <&swr0 0>, <&wsamacro 0>;
+               };
+
+               platform {
+                       sound-dai = <&q6apm>;
+               };
+       };
+
+       va-dai-link {
+               link-name = "VA Capture";
+
+               cpu {
+                       sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+               };
+
+               platform {
+                       sound-dai = <&q6apm>;
+               };
+
+               codec {
+                       sound-dai = <&vamacro 0>;
+               };
+       };
+};
+
+&swr0 {
+       status = "okay";
+};
+
+&swr1 {
+       status = "okay";
+
+       wcd_rx: codec@0,4 {
+               compatible = "sdw20217010d00";
+               reg = <0 4>;
+               qcom,rx-port-mapping = <1 2 3 4 5>;
+       };
+};
+
+&swr2 {
+       status = "okay";
+
+       wcd_tx: codec@0,3 {
+               compatible = "sdw20217010d00";
+               reg = <0 3>;
+               qcom,tx-port-mapping = <1 1 2 3>;
+       };
+};
+
+&txmacro {
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-0 = <&uart2_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn6855-bt";
+
+               vddio-supply = <&vreg_s10b>;
+               vddbtcxmx-supply = <&vreg_s12b>;
+               vddrfacmn-supply = <&vreg_s12b>;
+               vddrfa0p8-supply = <&vreg_s12b>;
+               vddrfa1p2-supply = <&vreg_s11b>;
+               vddrfa1p7-supply = <&vreg_s1c>;
+
+               max-speed = <3200000>;
+
+               enable-gpios = <&tlmm 133 GPIO_ACTIVE_HIGH>;
+               swctrl-gpios = <&tlmm 132 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&bt_default>;
+               pinctrl-names = "default";
+       };
+};
+
+&uart18 {
+       status = "okay";
+
+       embedded-controller {
+               compatible = "microsoft,surface-sam";
+
+               interrupts-extended = <&tlmm 85 IRQ_TYPE_EDGE_RISING>;
+
+               current-speed = <4000000>;
+
+               pinctrl-0 = <&ssam_state>;
+               pinctrl-names = "default";
+       };
+};
+
+&usb_0 {
+       status = "okay";
+};
+
+&usb_0_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_0_dwc3_hs {
+       remote-endpoint = <&pmic_glink_con0_hs>;
+};
+
+&usb_0_hsphy {
+       vdda-pll-supply = <&vreg_l9d>;
+       vdda18-supply = <&vreg_l1c>;
+       vdda33-supply = <&vreg_l7d>;
+
+       status = "okay";
+};
+
+&usb_0_qmpphy {
+       vdda-phy-supply = <&vreg_l9d>;
+       vdda-pll-supply = <&vreg_l4d>;
+
+       orientation-switch;
+
+       status = "okay";
+};
+
+&usb_0_qmpphy_dp_in {
+       remote-endpoint = <&mdss0_dp0_out>;
+};
+
+&usb_0_qmpphy_out {
+       remote-endpoint = <&pmic_glink_con0_ss>;
+};
+
+&usb_1 {
+       status = "okay";
+};
+
+&usb_1_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_dwc3_hs {
+       remote-endpoint = <&pmic_glink_con1_hs>;
+};
+
+&usb_1_hsphy {
+       vdda-pll-supply = <&vreg_l4b>;
+       vdda18-supply = <&vreg_l1c>;
+       vdda33-supply = <&vreg_l13c>;
+
+       status = "okay";
+};
+
+&usb_1_qmpphy {
+       vdda-phy-supply = <&vreg_l4b>;
+       vdda-pll-supply = <&vreg_l3b>;
+
+       orientation-switch;
+
+       status = "okay";
+};
+
+&usb_1_qmpphy_dp_in {
+       remote-endpoint = <&mdss0_dp1_out>;
+};
+
+&usb_1_qmpphy_out {
+       remote-endpoint = <&pmic_glink_con1_ss>;
+};
+
+&vamacro {
+       pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
+       pinctrl-names = "default";
+
+       vdd-micb-supply = <&vreg_s10b>;
+
+       qcom,dmic-sample-rate = <4800000>;
+
+       status = "okay";
+};
+
+&wsamacro {
+       status = "okay";
+};
+
+&xo_board_clk {
+       clock-frequency = <38400000>;
+};
+
+/* PINCTRL */
+
+&lpass_tlmm {
+       status = "okay";
+};
+
+&pmc8280_2_gpios {
+       wwan_sw_en: wwan-sw-en-state {
+               pins = "gpio1";
+               function = "normal";
+       };
+};
+
+&pmr735a_gpios {
+       hastings_reg_en: hastings-reg-en-state {
+               pins = "gpio1";
+               function = "normal";
+       };
+};
+
+&tlmm {
+       bt_default: bt-default-state {
+               hstp-bt-en-pins {
+                       pins = "gpio133";
+                       function = "gpio";
+                       drive-strength = <16>;
+                       bias-disable;
+               };
+
+               hstp-sw-ctrl-pins {
+                       pins = "gpio132";
+                       function = "gpio";
+                       bias-pull-down;
+               };
+       };
+
+       nvme_reg_en: nvme-reg-en-state {
+               pins = "gpio135";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       pcie2a_default: pcie2a-default-state {
+               clkreq-n-pins {
+                       pins = "gpio142";
+                       function = "pcie2a_clkreq";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio143";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio145";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+              };
+       };
+
+       pcie3a_default: pcie3a-default-state {
+               clkreq-n-pins {
+                       pins = "gpio150";
+                       function = "pcie3a_clkreq";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio151";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio148";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie4_default: pcie4-default-state {
+               clkreq-n-pins {
+                       pins = "gpio140";
+                       function = "pcie4_clkreq";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio141";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio139";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+
+       ssam_state: ssam-state-state {
+               pins = "gpio85";
+               function = "gpio";
+               bias-disable;
+       };
+
+       uart2_default: uart2-default-state {
+               cts-pins {
+                       pins = "gpio121";
+                       function = "qup2";
+                       bias-bus-hold;
+               };
+
+               rts-pins {
+                       pins = "gpio122";
+                       function = "qup2";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               rx-pins {
+                       pins = "gpio124";
+                       function = "qup2";
+                       bias-pull-up;
+               };
+
+               tx-pins {
+                       pins = "gpio123";
+                       function = "qup2";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+       };
+
+       usb0_sbu_default: usb0-sbu-state {
+               oe-n-pins {
+                       pins = "gpio101";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+                       output-high;
+               };
+
+               sel-pins {
+                       pins = "gpio164";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+       };
+
+       usb1_sbu_default: usb1-sbu-state {
+               oe-n-pins {
+                       pins = "gpio48";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+                       output-high;
+               };
+
+               sel-pins {
+                       pins = "gpio47";
+                       function = "gpio";
+                       bias-disable;
+                       drive-strength = <16>;
+               };
+       };
+
+       wcd_default: wcd-default-state {
+               reset-pins {
+                       pins = "gpio106";
+                       function = "gpio";
+                       bias-disable;
+               };
+       };
+};