1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/usb/pd.h>
11#include "sm8150.dtsi"
12#include "pm8150.dtsi"
13#include "pm8150b.dtsi"
14#include "pm8150l.dtsi"
15
16/ {
17	model = "Qualcomm Technologies, Inc. SM8150 HDK";
18	compatible = "qcom,sm8150-hdk", "qcom,sm8150";
19	chassis-type = "embedded";
20
21	aliases {
22		serial0 = &uart2;
23	};
24
25	chosen {
26		stdout-path = "serial0:115200n8";
27	};
28
29	vph_pwr: vph-pwr-regulator {
30		compatible = "regulator-fixed";
31		regulator-name = "vph_pwr";
32		regulator-min-microvolt = <3700000>;
33		regulator-max-microvolt = <3700000>;
34	};
35
36	vreg_s4a_1p8: pm8150-s4 {
37		compatible = "regulator-fixed";
38		regulator-name = "vreg_s4a_1p8";
39
40		regulator-min-microvolt = <1800000>;
41		regulator-max-microvolt = <1800000>;
42
43		regulator-always-on;
44		regulator-boot-on;
45
46		vin-supply = <&vph_pwr>;
47	};
48
49	gpio-keys {
50		compatible = "gpio-keys";
51
52		key-vol-up {
53			label = "Volume Up";
54			linux,code = <KEY_VOLUMEUP>;
55			gpios = <&pm8150_gpios 6 GPIO_ACTIVE_LOW>;
56		};
57	};
58
59	hdmi-out {
60		compatible = "hdmi-connector";
61		type = "a";
62
63		port {
64			hdmi_con: endpoint {
65				remote-endpoint = <&lt9611_out>;
66			};
67		};
68	};
69};
70
71&apps_rsc {
72	regulators-0 {
73		compatible = "qcom,pm8150-rpmh-regulators";
74		qcom,pmic-id = "a";
75
76		vdd-s1-supply = <&vph_pwr>;
77		vdd-s2-supply = <&vph_pwr>;
78		vdd-s3-supply = <&vph_pwr>;
79		vdd-s4-supply = <&vph_pwr>;
80		vdd-s5-supply = <&vph_pwr>;
81		vdd-s6-supply = <&vph_pwr>;
82		vdd-s7-supply = <&vph_pwr>;
83		vdd-s8-supply = <&vph_pwr>;
84		vdd-s9-supply = <&vph_pwr>;
85		vdd-s10-supply = <&vph_pwr>;
86
87		vdd-l1-l8-l11-supply = <&vreg_s6a_0p9>;
88		vdd-l2-l10-supply = <&vreg_bob>;
89		vdd-l3-l4-l5-l18-supply = <&vreg_s6a_0p9>;
90		vdd-l6-l9-supply = <&vreg_s8c_1p3>;
91		vdd-l7-l12-l14-l15-supply = <&vreg_s5a_2p0>;
92		vdd-l13-l16-l17-supply = <&vreg_bob>;
93
94		vreg_s5a_2p0: smps5 {
95			regulator-min-microvolt = <1904000>;
96			regulator-max-microvolt = <2000000>;
97		};
98
99		vreg_s6a_0p9: smps6 {
100			regulator-min-microvolt = <920000>;
101			regulator-max-microvolt = <1128000>;
102		};
103
104		vdda_wcss_pll:
105		vreg_l1a_0p75: ldo1 {
106			regulator-min-microvolt = <752000>;
107			regulator-max-microvolt = <752000>;
108			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
109		};
110
111		vdd_pdphy:
112		vdda_usb_hs_3p1:
113		vreg_l2a_3p1: ldo2 {
114			regulator-min-microvolt = <3072000>;
115			regulator-max-microvolt = <3072000>;
116			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
117		};
118
119		vreg_l3a_0p8: ldo3 {
120			regulator-min-microvolt = <480000>;
121			regulator-max-microvolt = <932000>;
122			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
123		};
124
125		vdd_usb_hs_core:
126		vdda_csi_0_0p9:
127		vdda_csi_1_0p9:
128		vdda_csi_2_0p9:
129		vdda_csi_3_0p9:
130		vdda_dsi_0_0p9:
131		vdda_dsi_1_0p9:
132		vdda_dsi_0_pll_0p9:
133		vdda_dsi_1_pll_0p9:
134		vdda_pcie_1ln_core:
135		vdda_pcie_2ln_core:
136		vdda_pll_hv_cc_ebi01:
137		vdda_pll_hv_cc_ebi23:
138		vdda_qrefs_0p875_5:
139		vdda_sp_sensor:
140		vdda_ufs_2ln_core_1:
141		vdda_ufs_2ln_core_2:
142		vdda_qlink_lv:
143		vdda_qlink_lv_ck:
144		vreg_l5a_0p875: ldo5 {
145			regulator-min-microvolt = <880000>;
146			regulator-max-microvolt = <880000>;
147			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
148		};
149
150		vreg_l6a_1p2: ldo6 {
151			regulator-min-microvolt = <1200000>;
152			regulator-max-microvolt = <1200000>;
153			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
154		};
155
156		vreg_l7a_1p8: ldo7 {
157			regulator-min-microvolt = <1800000>;
158			regulator-max-microvolt = <1800000>;
159			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
160		};
161
162		vddpx_10:
163		vreg_l9a_1p2: ldo9 {
164			regulator-min-microvolt = <1200000>;
165			regulator-max-microvolt = <1200000>;
166			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
167		};
168
169		vreg_l10a_2p5: ldo10 {
170			regulator-min-microvolt = <2504000>;
171			regulator-max-microvolt = <2960000>;
172			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
173		};
174
175		vreg_l11a_0p8: ldo11 {
176			regulator-min-microvolt = <800000>;
177			regulator-max-microvolt = <800000>;
178			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
179		};
180
181		vdd_qfprom:
182		vdd_qfprom_sp:
183		vdda_apc_cs_1p8:
184		vdda_gfx_cs_1p8:
185		vdda_usb_hs_1p8:
186		vdda_qrefs_vref_1p8:
187		vddpx_10_a:
188		vreg_l12a_1p8: ldo12 {
189			regulator-min-microvolt = <1800000>;
190			regulator-max-microvolt = <1800000>;
191			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
192		};
193
194		vreg_l13a_2p7: ldo13 {
195			regulator-min-microvolt = <2704000>;
196			regulator-max-microvolt = <2704000>;
197			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
198		};
199
200		vreg_l14a_1p8: ldo14 {
201			regulator-min-microvolt = <1800000>;
202			regulator-max-microvolt = <1880000>;
203			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
204		};
205
206		vreg_l15a_1p7: ldo15 {
207			regulator-min-microvolt = <1704000>;
208			regulator-max-microvolt = <1704000>;
209			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
210		};
211
212		vreg_l16a_2p7: ldo16 {
213			regulator-min-microvolt = <2704000>;
214			regulator-max-microvolt = <2960000>;
215			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
216		};
217
218		vreg_l17a_3p0: ldo17 {
219			regulator-min-microvolt = <2856000>;
220			regulator-max-microvolt = <3008000>;
221			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
222		};
223
224		vreg_l18a_0p8: ldo18 {
225			regulator-min-microvolt = <880000>;
226			regulator-max-microvolt = <880000>;
227			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
228		};
229	};
230
231	regulators-1 {
232		compatible = "qcom,pm8150l-rpmh-regulators";
233		qcom,pmic-id = "c";
234
235		vdd-s1-supply = <&vph_pwr>;
236		vdd-s2-supply = <&vph_pwr>;
237		vdd-s3-supply = <&vph_pwr>;
238		vdd-s4-supply = <&vph_pwr>;
239		vdd-s5-supply = <&vph_pwr>;
240		vdd-s6-supply = <&vph_pwr>;
241		vdd-s7-supply = <&vph_pwr>;
242		vdd-s8-supply = <&vph_pwr>;
243
244		vdd-l1-l8-supply = <&vreg_s4a_1p8>;
245		vdd-l2-l3-supply = <&vreg_s8c_1p3>;
246		vdd-l4-l5-l6-supply = <&vreg_bob>;
247		vdd-l7-l11-supply = <&vreg_bob>;
248		vdd-l9-l10-supply = <&vreg_bob>;
249
250		vdd-bob-supply = <&vph_pwr>;
251		vdd-flash-supply = <&vreg_bob>;
252		vdd-rgb-supply = <&vreg_bob>;
253
254		vreg_bob: bob {
255			regulator-min-microvolt = <3008000>;
256			regulator-max-microvolt = <4000000>;
257			regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
258			regulator-allow-bypass;
259		};
260
261		vreg_s8c_1p3: smps8 {
262			regulator-min-microvolt = <1352000>;
263			regulator-max-microvolt = <1352000>;
264		};
265
266		vreg_l1c_1p8: ldo1 {
267			regulator-min-microvolt = <1800000>;
268			regulator-max-microvolt = <1800000>;
269			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
270		};
271
272		vdda_wcss_adcdac_1:
273		vdda_wcss_adcdac_22:
274		vreg_l2c_1p3: ldo2 {
275			regulator-min-microvolt = <1304000>;
276			regulator-max-microvolt = <1304000>;
277			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
278		};
279
280		vdda_hv_ebi0:
281		vdda_hv_ebi1:
282		vdda_hv_ebi2:
283		vdda_hv_ebi3:
284		vdda_hv_refgen0:
285		vdda_qlink_hv_ck:
286		vreg_l3c_1p2: ldo3 {
287			regulator-min-microvolt = <1200000>;
288			regulator-max-microvolt = <1200000>;
289			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
290		};
291
292		vddpx_5:
293		vreg_l4c_1p8: ldo4 {
294			regulator-min-microvolt = <1704000>;
295			regulator-max-microvolt = <2928000>;
296			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
297		};
298
299		vddpx_6:
300		vreg_l5c_1p8: ldo5 {
301			regulator-min-microvolt = <1704000>;
302			regulator-max-microvolt = <2928000>;
303			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
304		};
305
306		vddpx_2:
307		vreg_l6c_2p9: ldo6 {
308			regulator-min-microvolt = <1800000>;
309			regulator-max-microvolt = <2960000>;
310			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
311		};
312
313		vreg_l7c_3p0: ldo7 {
314			regulator-min-microvolt = <2856000>;
315			regulator-max-microvolt = <3104000>;
316			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
317		};
318
319		vreg_l8c_1p8: ldo8 {
320			regulator-min-microvolt = <1800000>;
321			regulator-max-microvolt = <1800000>;
322			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
323		};
324
325		vreg_l9c_2p9: ldo9 {
326			regulator-min-microvolt = <2704000>;
327			regulator-max-microvolt = <2960000>;
328			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
329		};
330
331		vreg_l10c_3p3: ldo10 {
332			regulator-min-microvolt = <3000000>;
333			regulator-max-microvolt = <3312000>;
334			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
335		};
336
337		vreg_l11c_3p3: ldo11 {
338			regulator-min-microvolt = <3000000>;
339			regulator-max-microvolt = <3312000>;
340			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
341		};
342	};
343
344	regulators-2 {
345		compatible = "qcom,pm8009-rpmh-regulators";
346		qcom,pmic-id = "f";
347
348		vdd-s1-supply = <&vph_pwr>;
349		vdd-s2-supply = <&vreg_bob>;
350
351		vdd-l2-supply = <&vreg_s8c_1p3>;
352		vdd-l5-l6-supply = <&vreg_bob>;
353
354		vreg_l2f_1p2: ldo2 {
355			regulator-min-microvolt = <1200000>;
356			regulator-max-microvolt = <1200000>;
357			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
358		};
359
360		vreg_l5f_2p85: ldo5 {
361			regulator-min-microvolt = <2800000>;
362			regulator-max-microvolt = <2800000>;
363			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
364		};
365
366		vreg_l6f_2p85: ldo6 {
367			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
368			regulator-min-microvolt = <2856000>;
369			regulator-max-microvolt = <2856000>;
370		};
371	};
372};
373
374&gmu {
375	status = "okay";
376};
377
378&gpi_dma0 {
379	status = "okay";
380};
381
382&gpi_dma1 {
383	status = "okay";
384};
385
386&gpu {
387	status = "okay";
388};
389
390&i2c4 {
391	clock-frequency = <100000>;
392
393	status = "okay";
394
395	typec-mux@42 {
396		compatible = "fcs,fsa4480";
397		reg = <0x42>;
398
399		interrupts-extended = <&tlmm 152 IRQ_TYPE_LEVEL_LOW>;
400
401		vcc-supply = <&vreg_bob>;
402		mode-switch;
403		orientation-switch;
404
405		port {
406			fsa4480_sbu_mux: endpoint {
407				remote-endpoint = <&pm8150b_typec_sbu_out>;
408			};
409		};
410	};
411};
412
413&i2c9 {
414	status = "okay";
415	clock-frequency = <400000>;
416
417	lt9611_codec: hdmi-bridge@3b {
418		compatible = "lontium,lt9611";
419		reg = <0x3b>;
420		#sound-dai-cells = <1>;
421
422		interrupts-extended = <&tlmm 9 IRQ_TYPE_EDGE_FALLING>;
423
424		reset-gpios = <&tlmm 7 GPIO_ACTIVE_HIGH>;
425
426		vdd-supply = <&vreg_s4a_1p8>;
427		vcc-supply = <&vreg_bob>;
428
429		pinctrl-names = "default";
430		pinctrl-0 = <&lt9611_irq_pin>;
431
432		ports {
433			#address-cells = <1>;
434			#size-cells = <0>;
435
436			port@0 {
437				reg = <0>;
438
439				lt9611_a: endpoint {
440					remote-endpoint = <&mdss_dsi0_out>;
441				};
442			};
443
444			port@1 {
445				reg = <1>;
446
447				lt9611_b: endpoint {
448					remote-endpoint = <&mdss_dsi1_out>;
449				};
450			};
451
452			port@2 {
453				reg = <2>;
454
455				lt9611_out: endpoint {
456					remote-endpoint = <&hdmi_con>;
457				};
458			};
459		};
460	};
461};
462
463&mdss {
464	status = "okay";
465};
466
467&mdss_dp {
468	status = "okay";
469};
470
471&mdss_dp_out {
472	data-lanes = <0 1>;
473	remote-endpoint = <&usb_1_qmpphy_dp_in>;
474};
475
476&mdss_dsi0 {
477	status = "okay";
478	vdda-supply = <&vreg_l3c_1p2>;
479
480	qcom,dual-dsi-mode;
481	qcom,master-dsi;
482
483	ports {
484		port@1 {
485			endpoint {
486				remote-endpoint = <&lt9611_a>;
487				data-lanes = <0 1 2 3>;
488			};
489		};
490	};
491};
492
493&mdss_dsi0_phy {
494	status = "okay";
495	vdds-supply = <&vreg_l5a_0p875>;
496};
497
498&mdss_dsi1 {
499	vdda-supply = <&vreg_l3c_1p2>;
500
501	qcom,dual-dsi-mode;
502
503	/* DSI1 is slave, so use DSI0 clocks */
504	assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
505
506	status = "okay";
507
508	ports {
509		port@1 {
510			endpoint {
511				remote-endpoint = <&lt9611_b>;
512				data-lanes = <0 1 2 3>;
513			};
514		};
515	};
516};
517
518&mdss_dsi1_phy {
519	vdds-supply = <&vreg_l5a_0p875>;
520	status = "okay";
521};
522
523&pm8150b_vbus {
524	regulator-min-microamp = <500000>;
525	regulator-max-microamp = <3000000>;
526	status = "okay";
527};
528
529&pm8150b_typec {
530	status = "okay";
531
532	vdd-pdphy-supply = <&vreg_l2a_3p1>;
533
534	connector {
535		compatible = "usb-c-connector";
536
537		power-role = "source";
538		data-role = "dual";
539		self-powered;
540
541		source-pdos = <PDO_FIXED(5000, 3000,
542					 PDO_FIXED_DUAL_ROLE |
543					 PDO_FIXED_USB_COMM |
544					 PDO_FIXED_DATA_SWAP)>;
545
546		altmodes {
547			displayport {
548				svid = /bits/ 16 <0xff01>;
549				vdo = <0x00001c46>;
550			};
551		};
552
553		ports {
554			#address-cells = <1>;
555			#size-cells = <0>;
556
557			port@0 {
558				reg = <0>;
559				pm8150b_role_switch_in: endpoint {
560					remote-endpoint = <&usb_1_dwc3_hs>;
561				};
562			};
563
564			port@1 {
565				reg = <1>;
566				pm8150b_typec_mux_in: endpoint {
567					remote-endpoint = <&usb_1_qmpphy_out>;
568				};
569			};
570
571			port@2 {
572				reg = <2>;
573
574				pm8150b_typec_sbu_out: endpoint {
575					remote-endpoint = <&fsa4480_sbu_mux>;
576				};
577			};
578		};
579	};
580};
581
582&pon_pwrkey {
583	status = "okay";
584};
585
586&pon_resin {
587	status = "okay";
588
589	linux,code = <KEY_VOLUMEDOWN>;
590};
591
592&qupv3_id_0 {
593	status = "okay";
594};
595
596&qupv3_id_1 {
597	status = "okay";
598};
599
600&remoteproc_adsp {
601	status = "okay";
602
603	firmware-name = "qcom/sm8150/adsp.mbn";
604};
605
606&remoteproc_cdsp {
607	status = "okay";
608
609	firmware-name = "qcom/sm8150/cdsp.mbn";
610};
611
612&remoteproc_slpi {
613	status = "okay";
614
615	firmware-name = "qcom/sm8150/slpi.mbn";
616};
617
618&tlmm {
619	gpio-reserved-ranges = <0 4>, <126 4>;
620
621	lt9611_irq_pin: lt9611-irq-state {
622		pins = "gpio9";
623		function = "gpio";
624		bias-disable;
625	};
626
627};
628
629&uart2 {
630	status = "okay";
631};
632
633&ufs_mem_hc {
634	status = "okay";
635
636	reset-gpios = <&tlmm 175 GPIO_ACTIVE_LOW>;
637
638	vcc-supply = <&vreg_l10a_2p5>;
639	vcc-max-microamp = <750000>;
640	vccq-supply = <&vreg_l9a_1p2>;
641	vccq-max-microamp = <700000>;
642	vccq2-supply = <&vreg_s4a_1p8>;
643	vccq2-max-microamp = <750000>;
644};
645
646&ufs_mem_phy {
647	status = "okay";
648
649	vdda-phy-supply = <&vdda_ufs_2ln_core_1>;
650	vdda-pll-supply = <&vreg_l3c_1p2>;
651};
652
653&usb_1_hsphy {
654	status = "okay";
655	vdda-pll-supply = <&vdd_usb_hs_core>;
656	vdda33-supply = <&vdda_usb_hs_3p1>;
657	vdda18-supply = <&vdda_usb_hs_1p8>;
658};
659
660&usb_2_hsphy {
661	status = "okay";
662	vdda-pll-supply = <&vdd_usb_hs_core>;
663	vdda33-supply = <&vdda_usb_hs_3p1>;
664	vdda18-supply = <&vdda_usb_hs_1p8>;
665};
666
667&usb_1_qmpphy {
668	status = "okay";
669	vdda-phy-supply = <&vreg_l3c_1p2>;
670	vdda-pll-supply = <&vreg_l18a_0p8>;
671	orientation-switch;
672};
673
674&usb_1_qmpphy_dp_in {
675	remote-endpoint = <&mdss_dp_out>;
676};
677
678&usb_1_qmpphy_out {
679	remote-endpoint = <&pm8150b_typec_mux_in>;
680};
681
682&usb_1_qmpphy_usb_ss_in {
683	remote-endpoint = <&usb_1_dwc3_ss>;
684};
685
686&usb_2_qmpphy {
687	status = "okay";
688	vdda-phy-supply = <&vreg_l3c_1p2>;
689	vdda-pll-supply = <&vreg_l5a_0p875>;
690};
691
692&usb_1 {
693	status = "okay";
694};
695
696&usb_2 {
697	status = "okay";
698};
699
700&usb_1_dwc3 {
701	dr_mode = "otg";
702	usb-role-switch;
703};
704
705&usb_1_dwc3_hs {
706	remote-endpoint = <&pm8150b_role_switch_in>;
707};
708
709&usb_1_dwc3_ss {
710	remote-endpoint = <&usb_1_qmpphy_usb_ss_in>;
711};
712
713&usb_2_dwc3 {
714	dr_mode = "host";
715};
716