xref: /linux/arch/arm64/boot/dts/qcom/x1p42100-microsoft-sp12in.dts (revision cbe8aadf1551f3f4a853f24b3b96d9f0eea49c53)
1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
4 * Copyright (c) 2024, Linaro Limited
5 * Copyright (c) 2025, Jens Glathe
6 * Copyright (c) 2025, Harrison Vanderbyl
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/input/gpio-keys.h>
13#include <dt-bindings/input/input.h>
14#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
15#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
16#include <dt-bindings/clock/qcom,x1e80100-tcsr.h>
17
18#include "purwa.dtsi"
19#include "hamoa-pmics.dtsi"
20
21/delete-node/ &pmc8380_6;
22/delete-node/ &pmc8380_6_thermal;
23
24/ {
25	model = "Surface Pro 12in 1st Edition";
26	compatible = "microsoft,surface-pro-12in", "qcom,x1p42100";
27	chassis-type = "tablet";
28
29	aliases {
30		serial0 = &uart2;
31		serial1 = &uart14;
32	};
33
34	backlight: backlight {
35		compatible = "pwm-backlight";
36		pwms = <&pmk8550_pwm 0 5000000>;
37
38		power-supply = <&vreg_edp_3p3>;
39	};
40
41	gpio-keys {
42		compatible = "gpio-keys";
43
44		pinctrl-0 = <&hall_int_n_default>, <&vol_up_n_default>, <&vol_down_n_default>;
45		pinctrl-names = "default";
46
47		switch-lid {
48			gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
49			linux,input-type = <EV_SW>;
50			linux,code = <SW_LID>;
51			wakeup-source;
52			wakeup-event-action = <EV_ACT_DEASSERTED>;
53		};
54
55		key-vol-up {
56			gpios = <&pm8550_gpios 8 GPIO_ACTIVE_LOW>;
57			linux,code = <KEY_VOLUMEUP>;
58			debounce-interval = <15>;
59			linux,can-disable;
60			wakeup-source;
61		};
62
63		key-vol-down {
64			gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
65			linux,code = <KEY_VOLUMEDOWN>;
66			debounce-interval = <15>;
67			linux,can-disable;
68			wakeup-source;
69		};
70	};
71
72	pmic-glink {
73		compatible = "qcom,x1e80100-pmic-glink",
74			     "qcom,sm8550-pmic-glink",
75			     "qcom,pmic-glink";
76		orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
77				    <&tlmm 123 GPIO_ACTIVE_HIGH>;
78		#address-cells = <1>;
79		#size-cells = <0>;
80
81		/* Right-side upper port */
82		connector@0 {
83			compatible = "usb-c-connector";
84			reg = <0>;
85			power-role = "dual";
86			data-role = "dual";
87
88			ports {
89				#address-cells = <1>;
90				#size-cells = <0>;
91
92				port@0 {
93					reg = <0>;
94
95					pmic_glink_ss0_hs_in: endpoint {
96						remote-endpoint = <&usb_1_ss0_dwc3_hs>;
97					};
98				};
99
100				port@1 {
101					reg = <1>;
102
103					pmic_glink_ss0_ss_in: endpoint {
104						remote-endpoint = <&usb_1_ss0_qmpphy_out>;
105					};
106				};
107
108				port@2 {
109					reg = <2>;
110
111					pmic_glink_ss0_sbu: endpoint {
112						remote-endpoint = <&usb_1_ss0_sbu_mux>;
113					};
114				};
115			};
116		};
117
118		/* Right-side lower port */
119		connector@1 {
120			compatible = "usb-c-connector";
121			reg = <1>;
122			power-role = "dual";
123			data-role = "dual";
124
125			ports {
126				#address-cells = <1>;
127				#size-cells = <0>;
128
129				port@0 {
130					reg = <0>;
131
132					pmic_glink_ss1_hs_in: endpoint {
133						remote-endpoint = <&usb_1_ss1_dwc3_hs>;
134					};
135				};
136
137				port@1 {
138					reg = <1>;
139
140					pmic_glink_ss1_ss_in: endpoint {
141						remote-endpoint = <&usb_1_ss1_qmpphy_out>;
142					};
143				};
144
145				port@2 {
146					reg = <2>;
147
148					pmic_glink_ss1_sbu: endpoint {
149						remote-endpoint = <&usb_1_ss1_sbu_mux>;
150					};
151				};
152			};
153		};
154	};
155
156	reserved-memory {
157		linux,cma {
158			compatible = "shared-dma-pool";
159			size = <0x0 0x20000000>;
160			reusable;
161			linux,cma-default;
162		};
163	};
164
165	vreg_edp_3p3: regulator-edp-3p3 {
166		compatible = "regulator-fixed";
167
168		regulator-name = "VREG_EDP_3P3";
169		regulator-min-microvolt = <3300000>;
170		regulator-max-microvolt = <3300000>;
171
172		gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
173		enable-active-high;
174
175		pinctrl-0 = <&edp_reg_en>;
176		pinctrl-names = "default";
177
178		regulator-boot-on;
179		vin-supply = <&vreg_panel_en>;
180	};
181
182	vreg_panel_en: regulator-panel-en {
183		compatible = "regulator-fixed";
184
185		regulator-name = "VREG_PANEL_EN";
186		regulator-min-microvolt = <3300000>;
187		regulator-max-microvolt = <3300000>;
188
189		gpio = <&tlmm 29 GPIO_ACTIVE_HIGH>;
190		enable-active-high;
191
192		regulator-enable-ramp-delay = <150000>;
193
194		pinctrl-0 = <&panel_en>;
195		pinctrl-names = "default";
196
197		regulator-boot-on;
198	};
199
200	vph_pwr: regulator-vph-pwr {
201		compatible = "regulator-fixed";
202
203		regulator-name = "vph_pwr";
204		regulator-min-microvolt = <3700000>;
205		regulator-max-microvolt = <3700000>;
206	};
207
208	vreg_wcn_0p95: regulator-wcn-0p95 {
209		compatible = "regulator-fixed";
210
211		regulator-name = "VREG_WCN_0P95";
212		regulator-min-microvolt = <950000>;
213		regulator-max-microvolt = <950000>;
214
215		vin-supply = <&vreg_wcn_3p3>;
216	};
217
218	vreg_wcn_1p9: regulator-wcn-1p9 {
219		compatible = "regulator-fixed";
220
221		regulator-name = "VREG_WCN_1P9";
222		regulator-min-microvolt = <1900000>;
223		regulator-max-microvolt = <1900000>;
224
225		vin-supply = <&vreg_wcn_3p3>;
226	};
227
228	vreg_wcn_3p3: regulator-wcn-3p3 {
229		compatible = "regulator-fixed";
230
231		regulator-name = "VREG_WCN_3P3";
232		regulator-min-microvolt = <3300000>;
233		regulator-max-microvolt = <3300000>;
234
235		gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
236		enable-active-high;
237
238		pinctrl-0 = <&wcn_sw_en>;
239		pinctrl-names = "default";
240	};
241
242	sound {
243		compatible = "qcom,x1e80100-sndcard";
244		model = "X1P42100-Microsoft-Surface-Pro-12in";
245		audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT",
246				"SpkrRight IN", "WSA WSA_SPK2 OUT",
247				"VA DMIC0", "vdd-micb",
248				"VA DMIC1", "vdd-micb";
249
250		va-dai-link {
251			link-name = "VA Capture";
252
253			codec {
254				sound-dai = <&lpass_vamacro 0>;
255			};
256
257			cpu {
258				sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
259			};
260
261			platform {
262				sound-dai = <&q6apm>;
263			};
264		};
265
266		wsa-dai-link {
267			link-name = "WSA Playback";
268
269			codec {
270				sound-dai = <&left_spkr>, <&right_spkr>,
271					    <&swr0 0>, <&lpass_wsamacro 0>;
272			};
273
274			cpu {
275				sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
276			};
277
278			platform {
279				sound-dai = <&q6apm>;
280			};
281		};
282	};
283
284	wcn7850-pmu {
285		compatible = "qcom,wcn7850-pmu";
286
287		vdd-supply = <&vreg_wcn_0p95>;
288		vddio-supply = <&vreg_l15b_1p8>;
289		vddaon-supply = <&vreg_wcn_0p95>;
290		vdddig-supply = <&vreg_wcn_0p95>;
291		vddrfa1p2-supply = <&vreg_wcn_1p9>;
292		vddrfa1p8-supply = <&vreg_wcn_1p9>;
293
294		wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
295		bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
296
297		pinctrl-0 = <&wcn_wlan_bt_en>;
298		pinctrl-names = "default";
299
300		regulators {
301			vreg_pmu_rfa_cmn: ldo0 {
302				regulator-name = "vreg_pmu_rfa_cmn";
303			};
304
305			vreg_pmu_aon_0p59: ldo1 {
306				regulator-name = "vreg_pmu_aon_0p59";
307			};
308
309			vreg_pmu_wlcx_0p8: ldo2 {
310				regulator-name = "vreg_pmu_wlcx_0p8";
311			};
312
313			vreg_pmu_wlmx_0p85: ldo3 {
314				regulator-name = "vreg_pmu_wlmx_0p85";
315			};
316
317			vreg_pmu_btcmx_0p85: ldo4 {
318				regulator-name = "vreg_pmu_btcmx_0p85";
319			};
320
321			vreg_pmu_rfa_0p8: ldo5 {
322				regulator-name = "vreg_pmu_rfa_0p8";
323			};
324
325			vreg_pmu_rfa_1p2: ldo6 {
326				regulator-name = "vreg_pmu_rfa_1p2";
327			};
328
329			vreg_pmu_rfa_1p8: ldo7 {
330				regulator-name = "vreg_pmu_rfa_1p8";
331			};
332
333			vreg_pmu_pcie_0p9: ldo8 {
334				regulator-name = "vreg_pmu_pcie_0p9";
335			};
336
337			vreg_pmu_pcie_1p8: ldo9 {
338				regulator-name = "vreg_pmu_pcie_1p8";
339			};
340		};
341	};
342
343	usb-1-ss0-sbu-mux {
344		compatible = "onnn,fsusb42", "gpio-sbu-mux";
345
346		enable-gpios = <&tlmm 168 GPIO_ACTIVE_LOW>;
347		select-gpios = <&tlmm 167 GPIO_ACTIVE_HIGH>;
348
349		pinctrl-0 = <&usb_1_ss0_sbu_default>;
350		pinctrl-names = "default";
351
352		mode-switch;
353		orientation-switch;
354
355		port {
356			usb_1_ss0_sbu_mux: endpoint {
357				remote-endpoint = <&pmic_glink_ss0_sbu>;
358			};
359		};
360	};
361
362	usb-1-ss1-sbu-mux {
363		compatible = "onnn,fsusb42", "gpio-sbu-mux";
364
365		enable-gpios = <&tlmm 179 GPIO_ACTIVE_LOW>;
366		select-gpios = <&tlmm 178 GPIO_ACTIVE_HIGH>;
367
368		pinctrl-0 = <&usb_1_ss1_sbu_default>;
369		pinctrl-names = "default";
370
371		mode-switch;
372		orientation-switch;
373
374		port {
375			usb_1_ss1_sbu_mux: endpoint {
376				remote-endpoint = <&pmic_glink_ss1_sbu>;
377			};
378		};
379	};
380};
381
382&apps_rsc {
383	regulators-0 {
384		compatible = "qcom,pm8550-rpmh-regulators";
385		qcom,pmic-id = "b";
386
387		vdd-bob1-supply = <&vph_pwr>;
388		vdd-bob2-supply = <&vph_pwr>;
389		vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
390		vdd-l2-l13-l14-supply = <&vreg_bob1>;
391		vdd-l5-l16-supply = <&vreg_bob1>;
392		vdd-l6-l7-supply = <&vreg_bob2>;
393		vdd-l8-l9-supply = <&vreg_bob1>;
394		vdd-l12-supply = <&vreg_s5j_1p2>;
395		vdd-l15-supply = <&vreg_s4c_1p8>;
396		vdd-l17-supply = <&vreg_bob2>;
397
398		vreg_bob1: bob1 {
399			regulator-name = "vreg_bob1";
400			regulator-min-microvolt = <3008000>;
401			regulator-max-microvolt = <3960000>;
402			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
403		};
404
405		vreg_bob2: bob2 {
406			regulator-name = "vreg_bob2";
407			regulator-min-microvolt = <2504000>;
408			regulator-max-microvolt = <3008000>;
409			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
410		};
411
412		vreg_l1b_1p8: ldo1 {
413			regulator-name = "vreg_l1b_1p8";
414			regulator-min-microvolt = <1800000>;
415			regulator-max-microvolt = <1800000>;
416			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
417		};
418
419		vreg_l2b_3p0: ldo2 {
420			regulator-name = "vreg_l2b_3p0";
421			regulator-min-microvolt = <3072000>;
422			regulator-max-microvolt = <3100000>;
423			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
424		};
425
426		vreg_l4b_1p8: ldo4 {
427			regulator-name = "vreg_l4b_1p8";
428			regulator-min-microvolt = <1800000>;
429			regulator-max-microvolt = <1800000>;
430			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
431		};
432
433		vreg_l5b_3p0: ldo5 {
434			regulator-name = "vreg_l5b_3p0";
435			regulator-min-microvolt = <3000000>;
436			regulator-max-microvolt = <3000000>;
437			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
438		};
439
440		vreg_l6b_1p8: ldo6 {
441			regulator-name = "vreg_l6b_1p8";
442			regulator-min-microvolt = <1800000>;
443			regulator-max-microvolt = <2960000>;
444			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
445		};
446
447		vreg_l7b_2p8: ldo7 {
448			regulator-name = "vreg_l7b_2p8";
449			regulator-min-microvolt = <2800000>;
450			regulator-max-microvolt = <2800000>;
451			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
452			regulator-always-on;
453		};
454
455		vreg_l8b_3p0: ldo8 {
456			regulator-name = "vreg_l8b_3p0";
457			regulator-min-microvolt = <3072000>;
458			regulator-max-microvolt = <3072000>;
459			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
460		};
461
462		vreg_l9b_2p9: ldo9 {
463			regulator-name = "vreg_l9b_2p9";
464			regulator-min-microvolt = <2960000>;
465			regulator-max-microvolt = <2960000>;
466			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
467		};
468
469		vreg_l10b_1p8: ldo10 {
470			regulator-name = "vreg_l10b_1p8";
471			regulator-min-microvolt = <1800000>;
472			regulator-max-microvolt = <1800000>;
473			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
474		};
475
476		vreg_l12b_1p2: ldo12 {
477			regulator-name = "vreg_l12b_1p2";
478			regulator-min-microvolt = <1200000>;
479			regulator-max-microvolt = <1200000>;
480			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
481		};
482
483		vreg_l13b_3p0: ldo13 {
484			regulator-name = "vreg_l13b_3p0";
485			regulator-min-microvolt = <3072000>;
486			regulator-max-microvolt = <3100000>;
487			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
488		};
489
490		vreg_l14b_3p0: ldo14 {
491			regulator-name = "vreg_l14b_3p0";
492			regulator-min-microvolt = <3072000>;
493			regulator-max-microvolt = <3072000>;
494			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
495		};
496
497		vreg_l15b_1p8: ldo15 {
498			regulator-name = "vreg_l15b_1p8";
499			regulator-min-microvolt = <1800000>;
500			regulator-max-microvolt = <1800000>;
501			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
502		};
503
504		vreg_l16b_2p9: ldo16 {
505			regulator-name = "vreg_l16b_2p9";
506			regulator-min-microvolt = <2900000>;
507			regulator-max-microvolt = <2912000>;
508			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
509			regulator-allow-set-load;
510			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
511						   RPMH_REGULATOR_MODE_HPM>;
512		};
513
514		vreg_l17b_2p5: ldo17 {
515			regulator-name = "vreg_l17b_2p5";
516			regulator-min-microvolt = <2504000>;
517			regulator-max-microvolt = <2504000>;
518			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
519			regulator-allow-set-load;
520			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
521						   RPMH_REGULATOR_MODE_HPM>;
522		};
523	};
524
525	regulators-1 {
526		compatible = "qcom,pm8550ve-rpmh-regulators";
527		qcom,pmic-id = "c";
528
529		vdd-l1-supply = <&vreg_s5j_1p2>;
530		vdd-s4-supply = <&vph_pwr>;
531
532		vreg_s4c_1p8: smps4 {
533			regulator-name = "vreg_s4c_1p8";
534			regulator-min-microvolt = <1856000>;
535			regulator-max-microvolt = <2000000>;
536			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
537		};
538
539		vreg_l1c_1p2: ldo1 {
540			regulator-name = "vreg_l1c_1p2";
541			regulator-min-microvolt = <1200000>;
542			regulator-max-microvolt = <1200000>;
543			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
544		};
545
546		vreg_l2c_0p8: ldo2 {
547			regulator-name = "vreg_l2c_0p8";
548			regulator-min-microvolt = <880000>;
549			regulator-max-microvolt = <920000>;
550			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
551		};
552
553		vreg_l3c_0p8: ldo3 {
554			regulator-name = "vreg_l3c_0p8";
555			regulator-min-microvolt = <880000>;
556			regulator-max-microvolt = <920000>;
557			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
558		};
559	};
560
561	regulators-2 {
562		compatible = "qcom,pmc8380-rpmh-regulators";
563		qcom,pmic-id = "d";
564
565		vdd-l3-supply = <&vreg_s4c_1p8>;
566		vdd-s1-supply = <&vph_pwr>;
567
568		vreg_l1d_0p8: ldo1 {
569			regulator-name = "vreg_l1d_0p8";
570			regulator-min-microvolt = <880000>;
571			regulator-max-microvolt = <920000>;
572			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
573		};
574
575		vreg_l2d_0p9: ldo2 {
576			regulator-name = "vreg_l2d_0p9";
577			regulator-min-microvolt = <912000>;
578			regulator-max-microvolt = <920000>;
579			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
580		};
581
582		vreg_l3d_1p8: ldo3 {
583			regulator-name = "vreg_l3d_1p8";
584			regulator-min-microvolt = <1800000>;
585			regulator-max-microvolt = <1800000>;
586			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
587		};
588	};
589
590	regulators-3 {
591		compatible = "qcom,pmc8380-rpmh-regulators";
592		qcom,pmic-id = "e";
593
594		vdd-l3-supply = <&vreg_s5j_1p2>;
595
596		vreg_l2e_0p8: ldo2 {
597			regulator-name = "vreg_l2e_0p8";
598			regulator-min-microvolt = <880000>;
599			regulator-max-microvolt = <880000>;
600			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
601		};
602
603		vreg_l3e_1p2: ldo3 {
604			regulator-name = "vreg_l3e_1p2";
605			regulator-min-microvolt = <1200000>;
606			regulator-max-microvolt = <1200000>;
607			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
608			regulator-allow-set-load;
609			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
610						   RPMH_REGULATOR_MODE_HPM>;
611		};
612	};
613
614	regulators-6 {
615		compatible = "qcom,pm8550ve-rpmh-regulators";
616		qcom,pmic-id = "i";
617
618		vdd-l1-supply = <&vreg_s4c_1p8>;
619		vdd-l2-supply = <&vreg_s5j_1p2>;
620		vdd-s1-supply = <&vph_pwr>;
621		vdd-s2-supply = <&vph_pwr>;
622
623		vreg_s1i_0p9: smps1 {
624			regulator-name = "vreg_s1i_0p9";
625			regulator-min-microvolt = <900000>;
626			regulator-max-microvolt = <920000>;
627			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
628		};
629
630		vreg_s2i_1p0: smps2 {
631			regulator-name = "vreg_s2i_1p0";
632			regulator-min-microvolt = <1000000>;
633			regulator-max-microvolt = <1100000>;
634			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
635		};
636
637		vreg_l1i_1p8: ldo1 {
638			regulator-name = "vreg_l1i_1p8";
639			regulator-min-microvolt = <1800000>;
640			regulator-max-microvolt = <1800000>;
641			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
642		};
643
644		vreg_l2i_1p2: ldo2 {
645			regulator-name = "vreg_l2i_1p2";
646			regulator-min-microvolt = <1200000>;
647			regulator-max-microvolt = <1200000>;
648			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
649			regulator-allow-set-load;
650			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
651						   RPMH_REGULATOR_MODE_HPM>;
652		};
653
654		vreg_l3i_0p8: ldo3 {
655			regulator-name = "vreg_l3i_0p8";
656			regulator-min-microvolt = <880000>;
657			regulator-max-microvolt = <880000>;
658			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
659			regulator-allow-set-load;
660			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
661						   RPMH_REGULATOR_MODE_HPM>;
662		};
663	};
664
665	regulators-7 {
666		compatible = "qcom,pm8550ve-rpmh-regulators";
667		qcom,pmic-id = "j";
668
669		vdd-l2-supply = <&vreg_s5j_1p2>;
670		vdd-s5-supply = <&vph_pwr>;
671
672		vreg_s5j_1p2: smps5 {
673			regulator-name = "vreg_s5j_1p2";
674			regulator-min-microvolt = <1256000>;
675			regulator-max-microvolt = <1304000>;
676			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
677		};
678
679		vreg_l1j_0p8: ldo1 {
680			regulator-name = "vreg_l1j_0p8";
681			regulator-min-microvolt = <880000>;
682			regulator-max-microvolt = <920000>;
683			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
684		};
685
686		vreg_l2j_1p2: ldo2 {
687			regulator-name = "vreg_l2j_1p2";
688			regulator-min-microvolt = <1200000>;
689			regulator-max-microvolt = <1256000>;
690			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
691			regulator-allow-set-load;
692			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
693						   RPMH_REGULATOR_MODE_HPM>;
694		};
695
696		vreg_l3j_0p8: ldo3 {
697			regulator-name = "vreg_l3j_0p8";
698			regulator-min-microvolt = <880000>;
699			regulator-max-microvolt = <880000>;
700			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
701			regulator-allow-set-load;
702			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
703						   RPMH_REGULATOR_MODE_HPM>;
704		};
705	};
706};
707
708&gpu {
709	status = "okay";
710};
711
712&gpu_zap_shader {
713	firmware-name = "qcom/x1p42100/Microsoft/Surface12/qcdxkmsucpurwa.mbn";
714};
715
716&i2c8 {
717	clock-frequency = <1000000>;
718
719	status = "okay";
720
721	touchscreen@16 {
722		compatible = "hid-over-i2c";
723		reg = <0x16>;
724
725		hid-descr-addr = <0x1>;
726		interrupts-extended = <&tlmm 38 IRQ_TYPE_LEVEL_LOW>;
727		wakeup-source;
728
729		vddl-supply = <&vreg_l15b_1p8>;
730
731		pinctrl-0 = <&ts0_default>;
732		pinctrl-names = "default";
733	};
734};
735
736&i2c0 {
737	clock-frequency = <400000>;
738
739	status = "okay";
740};
741
742&i2c4 {
743	clock-frequency = <400000>;
744
745	status = "okay";
746
747	/* MAX34417 @12 */
748	/* MAX34417 @14 */
749	/* MAX34417 @16 */
750	/* MAX34417 @18 */
751	/* MAX34417 @1a */
752};
753
754&i2c9 {
755	clock-frequency = <400000>;
756
757	status = "okay";
758
759	/* NFC @28 Business 2109 sku only */
760};
761
762&lpass_tlmm {
763	spkr_01_sd_n_active: spkr-01-sd-n-active-state {
764		pins = "gpio12";
765		function = "gpio";
766		drive-strength = <2>;
767		bias-disable;
768		output-low;
769	};
770};
771
772&lpass_vamacro {
773	qcom,dmic-sample-rate = <4800000>;
774
775	vdd-micb-supply = <&vreg_l1b_1p8>;
776
777	pinctrl-0 = <&dmic01_default>;
778	pinctrl-names = "default";
779};
780
781&mdss {
782	status = "okay";
783};
784
785&mdss_dp0 {
786	status = "okay";
787};
788
789&mdss_dp0_out {
790	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
791};
792
793&mdss_dp1 {
794	status = "okay";
795};
796
797&mdss_dp1_out {
798	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
799};
800
801&mdss_dp3 {
802	/delete-property/ #sound-dai-cells;
803
804	pinctrl-0 = <&edp0_hpd_default>;
805	pinctrl-names = "default";
806
807	status = "okay";
808
809	aux-bus {
810		panel: panel {
811			compatible = "edp-panel";
812
813			backlight = <&backlight>;
814
815			power-supply = <&vreg_edp_3p3>;
816
817			port {
818				edp_panel_in: endpoint {
819					remote-endpoint = <&mdss_dp3_out>;
820				};
821			};
822		};
823	};
824};
825
826&mdss_dp3_out {
827	data-lanes = <0 1 2 3>;
828	link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
829
830	remote-endpoint = <&edp_panel_in>;
831};
832
833&mdss_dp3_phy {
834	vdda-phy-supply = <&vreg_l3j_0p8>;
835	vdda-pll-supply = <&vreg_l2j_1p2>;
836
837	status = "okay";
838};
839
840&pcie4 {
841	pinctrl-0 = <&pcie4_default>;
842	pinctrl-names = "default";
843
844	status = "okay";
845};
846
847&pcie4_phy {
848	vdda-phy-supply = <&vreg_l3i_0p8>;
849	vdda-pll-supply = <&vreg_l3e_1p2>;
850
851	status = "okay";
852};
853
854&pcie4_port0 {
855	reset-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
856	wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
857
858	wifi@0 {
859		compatible = "pci17cb,1107";
860		reg = <0x10000 0x0 0x0 0x0 0x0>;
861
862		vddaon-supply = <&vreg_pmu_aon_0p59>;
863		vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
864		vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
865		vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
866		vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
867		vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
868		vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
869		vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
870		vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
871	};
872};
873
874&pm8550_gpios {
875	vol_up_n_default: vol-up-n-state {
876		pins = "gpio8";
877		function = "normal";
878		power-source = <1>;
879		bias-pull-up;
880		input-enable;
881	};
882
883	vol_down_n_default: vol-down-n-state {
884		pins = "gpio6";
885		function = "normal";
886		power-source = <1>;
887		bias-pull-up;
888		input-enable;
889	};
890};
891
892&pmk8550_pwm {
893	status = "okay";
894};
895
896&qupv3_0 {
897	status = "okay";
898};
899
900&qupv3_1 {
901	status = "okay";
902};
903
904&qupv3_2 {
905	status = "okay";
906};
907
908&remoteproc_adsp {
909	firmware-name = "qcom/x1p42100/Microsoft/Surface12/qcadsp8380.mbn",
910			"qcom/x1p42100/Microsoft/Surface12/adsp_dtbs.elf";
911
912	status = "okay";
913};
914
915&remoteproc_cdsp {
916	firmware-name = "qcom/x1p42100/Microsoft/Surface12/qccdsp8380.mbn",
917			"qcom/x1p42100/Microsoft/Surface12/cdsp_dtbs.elf";
918
919	status = "okay";
920};
921
922&smb2360_0 {
923	status = "okay";
924};
925
926&smb2360_0_eusb2_repeater {
927	vdd18-supply = <&vreg_l3d_1p8>;
928	vdd3-supply = <&vreg_l2b_3p0>;
929};
930
931&smb2360_1 {
932	status = "okay";
933};
934
935&smb2360_1_eusb2_repeater {
936	vdd18-supply = <&vreg_l3d_1p8>;
937	vdd3-supply = <&vreg_l14b_3p0>;
938};
939
940&swr0 {
941	pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
942	pinctrl-names = "default";
943
944	status = "okay";
945
946	/* WSA8845, Left speaker */
947	left_spkr: speaker@0,0 {
948		compatible = "sdw20217020400";
949		reg = <0 0>;
950		reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
951		#sound-dai-cells = <0>;
952		sound-name-prefix = "SpkrLeft";
953		vdd-1p8-supply = <&vreg_l15b_1p8>;
954		vdd-io-supply = <&vreg_l12b_1p2>;
955		qcom,port-mapping = <1 2 3 7 10 13>;
956	};
957
958	/* WSA8845, Right speaker */
959	right_spkr: speaker@0,1 {
960		compatible = "sdw20217020400";
961		reg = <0 1>;
962		reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
963		#sound-dai-cells = <0>;
964		sound-name-prefix = "SpkrRight";
965		vdd-1p8-supply = <&vreg_l15b_1p8>;
966		vdd-io-supply = <&vreg_l12b_1p2>;
967		qcom,port-mapping = <4 5 6 7 11 13>;
968	};
969};
970
971&tlmm {
972	gpio-reserved-ranges = <34 2>, /* Unused */
973			       <44 4>; /* SPI (TPM) */
974
975	edp_reg_en: edp-reg-en-state {
976		pins = "gpio70";
977		function = "gpio";
978		drive-strength = <2>;
979		bias-disable;
980	};
981
982	hall_int_n_default: hall-int-n-state {
983		pins = "gpio2";
984		function = "gpio";
985		bias-disable;
986	};
987
988	panel_en: panel-en-state {
989		pins = "gpio29";
990		function = "gpio";
991		drive-strength = <2>;
992		bias-disable;
993	};
994
995	pcie4_default: pcie4-default-state {
996		clkreq-n-pins {
997			pins = "gpio147";
998			function = "pcie4_clk";
999			drive-strength = <2>;
1000			bias-pull-up;
1001		};
1002
1003		perst-n-pins {
1004			pins = "gpio146";
1005			function = "gpio";
1006			drive-strength = <2>;
1007			bias-disable;
1008		};
1009
1010		wake-n-pins {
1011			pins = "gpio148";
1012			function = "gpio";
1013			drive-strength = <2>;
1014			bias-pull-up;
1015		};
1016	};
1017
1018	ssam_state: ssam-state-state {
1019		pins = "gpio91";
1020		function = "gpio";
1021		bias-disable;
1022	};
1023
1024	ts0_default: ts0-default-state {
1025		int-n-pins {
1026			pins = "gpio38";
1027			function = "gpio";
1028			bias-disable;
1029		};
1030
1031		reset-n-pins {
1032			pins = "gpio48";
1033			function = "gpio";
1034			output-high;
1035			drive-strength = <16>;
1036		};
1037	};
1038
1039	wcn_sw_en: wcn-sw-en-state {
1040		pins = "gpio214";
1041		function = "gpio";
1042		drive-strength = <2>;
1043		bias-disable;
1044	};
1045
1046	wcn_wlan_bt_en: wcn-wlan-bt-en-state {
1047		pins = "gpio116", "gpio117";
1048		function = "gpio";
1049		drive-strength = <2>;
1050		bias-disable;
1051	};
1052
1053	usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
1054		oe-n-pins {
1055			pins = "gpio168";
1056			function = "gpio";
1057			bias-disable;
1058			drive-strength = <2>;
1059		};
1060
1061		sel-pins {
1062			pins = "gpio167";
1063			function = "gpio";
1064			bias-disable;
1065			drive-strength = <2>;
1066		};
1067	};
1068
1069	usb_1_ss1_sbu_default: usb-1-ss1-sbu-state {
1070		oe-n-pins {
1071			pins = "gpio179";
1072			function = "gpio";
1073			bias-disable;
1074			drive-strength = <2>;
1075		};
1076
1077		sel-pins {
1078			pins = "gpio178";
1079			function = "gpio";
1080			bias-disable;
1081			drive-strength = <2>;
1082		};
1083	};
1084};
1085
1086&uart2 {
1087	status = "okay";
1088
1089	embedded-controller {
1090		compatible = "microsoft,surface-sam";
1091
1092		interrupts-extended = <&tlmm 91 IRQ_TYPE_EDGE_RISING>;
1093
1094		current-speed = <4000000>;
1095
1096		pinctrl-0 = <&ssam_state>;
1097		pinctrl-names = "default";
1098	};
1099};
1100
1101&uart14 {
1102	status = "okay";
1103
1104	bluetooth {
1105		compatible = "qcom,wcn7850-bt";
1106		max-speed = <3200000>;
1107
1108		vddaon-supply = <&vreg_pmu_aon_0p59>;
1109		vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
1110		vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
1111		vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
1112		vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
1113		vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
1114		vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
1115	};
1116};
1117
1118&ufs_mem_hc {
1119	vcc-supply = <&vreg_l17b_2p5>;
1120	vcc-max-microamp = <800000>;
1121	vccq-supply = <&vreg_l2i_1p2>;
1122	vccq-max-microamp = <900000>;
1123
1124	vdd-hba-supply = <&vreg_l3j_0p8>;
1125
1126	status = "okay";
1127};
1128
1129&ufs_mem_phy {
1130	status = "okay";
1131
1132	vdda-phy-supply = <&vreg_l3i_0p8>;
1133	vdda-pll-supply = <&vreg_l3e_1p2>;
1134};
1135
1136&usb_1_ss0_hsphy {
1137	vdd-supply = <&vreg_l3j_0p8>;
1138	vdda12-supply = <&vreg_l2j_1p2>;
1139
1140	phys = <&smb2360_0_eusb2_repeater>;
1141
1142	status = "okay";
1143};
1144
1145&usb_1_ss0_qmpphy {
1146	vdda-phy-supply = <&vreg_l2j_1p2>;
1147	vdda-pll-supply = <&vreg_l1j_0p8>;
1148
1149	status = "okay";
1150};
1151
1152&usb_1_ss0 {
1153	dr_mode = "host";
1154
1155	status = "okay";
1156};
1157
1158&usb_1_ss0_dwc3_hs {
1159	remote-endpoint = <&pmic_glink_ss0_hs_in>;
1160};
1161
1162&usb_1_ss0_qmpphy_out {
1163	remote-endpoint = <&pmic_glink_ss0_ss_in>;
1164};
1165
1166&usb_1_ss1_hsphy {
1167	vdd-supply = <&vreg_l3j_0p8>;
1168	vdda12-supply = <&vreg_l2j_1p2>;
1169
1170	phys = <&smb2360_1_eusb2_repeater>;
1171
1172	status = "okay";
1173};
1174
1175&usb_1_ss1_qmpphy {
1176	vdda-phy-supply = <&vreg_l2j_1p2>;
1177	vdda-pll-supply = <&vreg_l2d_0p9>;
1178
1179	status = "okay";
1180};
1181
1182&usb_1_ss1 {
1183	dr_mode = "host";
1184
1185	status = "okay";
1186};
1187
1188&usb_1_ss1_dwc3_hs {
1189	remote-endpoint = <&pmic_glink_ss1_hs_in>;
1190};
1191
1192&usb_1_ss1_qmpphy_out {
1193	remote-endpoint = <&pmic_glink_ss1_ss_in>;
1194};
1195