// SPDX-License-Identifier: BSD-3-Clause /* * Copyright (c) 2024, Jérôme de Bretagne */ /dts-v1/; #include #include #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 = ; regulator-always-on; }; vreg_s11b: smps11 { regulator-name = "vreg_s11b"; regulator-min-microvolt = <1272000>; regulator-max-microvolt = <1272000>; regulator-initial-mode = ; regulator-always-on; }; vreg_s12b: smps12 { regulator-name = "vreg_s12b"; regulator-min-microvolt = <984000>; regulator-max-microvolt = <984000>; regulator-initial-mode = ; regulator-always-on; }; vreg_l3b: ldo3 { regulator-name = "vreg_l3b"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; regulator-boot-on; }; vreg_l4b: ldo4 { regulator-name = "vreg_l4b"; regulator-min-microvolt = <912000>; regulator-max-microvolt = <912000>; regulator-initial-mode = ; }; vreg_l6b: ldo6 { regulator-name = "vreg_l6b"; regulator-min-microvolt = <880000>; regulator-max-microvolt = <880000>; regulator-initial-mode = ; 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 = ; regulator-always-on; }; vreg_l1c: ldo1 { regulator-name = "vreg_l1c"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; }; vreg_l12c: ldo12 { regulator-name = "vreg_l12c"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; }; vreg_l13c: ldo13 { regulator-name = "vreg_l13c"; regulator-min-microvolt = <3072000>; regulator-max-microvolt = <3072000>; regulator-initial-mode = ; }; vreg_bob: bob { regulator-name = "vreg_bob"; regulator-min-microvolt = <3008000>; regulator-max-microvolt = <3960000>; regulator-initial-mode = ; 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 = ; }; vreg_l4d: ldo4 { regulator-name = "vreg_l4d"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; }; vreg_l6d: ldo6 { regulator-name = "vreg_l6d"; regulator-min-microvolt = <880000>; regulator-max-microvolt = <880000>; regulator-initial-mode = ; }; vreg_l7d: ldo7 { regulator-name = "vreg_l7d"; regulator-min-microvolt = <3072000>; regulator-max-microvolt = <3072000>; regulator-initial-mode = ; }; vreg_l9d: ldo9 { regulator-name = "vreg_l9d"; regulator-min-microvolt = <912000>; regulator-max-microvolt = <912000>; regulator-initial-mode = ; }; }; }; &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; }; }; };