1// SPDX-License-Identifier: BSD-3-Clause
2/*
3 * Copyright (c) 2023, Linaro Limited
4 */
5
6/dts-v1/;
7
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
10
11#include "sa8775p.dtsi"
12#include "sa8775p-pmics.dtsi"
13
14/ {
15	model = "Qualcomm SA8775P Ride";
16	compatible = "qcom,sa8775p-ride", "qcom,sa8775p";
17
18	aliases {
19		serial0 = &uart10;
20		serial1 = &uart12;
21		serial2 = &uart17;
22		i2c11 = &i2c11;
23		i2c18 = &i2c18;
24		spi16 = &spi16;
25		ufshc1 = &ufs_mem_hc;
26	};
27
28	chosen {
29		stdout-path = "serial0:115200n8";
30	};
31};
32
33&apps_rsc {
34	regulators-0 {
35		compatible = "qcom,pmm8654au-rpmh-regulators";
36		qcom,pmic-id = "a";
37
38		vreg_s4a: smps4 {
39			regulator-name = "vreg_s4a";
40			regulator-min-microvolt = <1800000>;
41			regulator-max-microvolt = <1816000>;
42			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
43		};
44
45		vreg_s5a: smps5 {
46			regulator-name = "vreg_s5a";
47			regulator-min-microvolt = <1850000>;
48			regulator-max-microvolt = <1996000>;
49			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
50		};
51
52		vreg_s9a: smps9 {
53			regulator-name = "vreg_s9a";
54			regulator-min-microvolt = <535000>;
55			regulator-max-microvolt = <1120000>;
56			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
57		};
58
59		vreg_l4a: ldo4 {
60			regulator-name = "vreg_l4a";
61			regulator-min-microvolt = <788000>;
62			regulator-max-microvolt = <1050000>;
63			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
64			regulator-allow-set-load;
65			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
66						   RPMH_REGULATOR_MODE_HPM>;
67		};
68
69		vreg_l5a: ldo5 {
70			regulator-name = "vreg_l5a";
71			regulator-min-microvolt = <870000>;
72			regulator-max-microvolt = <950000>;
73			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
74			regulator-allow-set-load;
75			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
76						   RPMH_REGULATOR_MODE_HPM>;
77		};
78
79		vreg_l6a: ldo6 {
80			regulator-name = "vreg_l6a";
81			regulator-min-microvolt = <870000>;
82			regulator-max-microvolt = <970000>;
83			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
84			regulator-allow-set-load;
85			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
86						   RPMH_REGULATOR_MODE_HPM>;
87		};
88
89		vreg_l7a: ldo7 {
90			regulator-name = "vreg_l7a";
91			regulator-min-microvolt = <720000>;
92			regulator-max-microvolt = <950000>;
93			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
94			regulator-allow-set-load;
95			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
96						   RPMH_REGULATOR_MODE_HPM>;
97		};
98
99		vreg_l8a: ldo8 {
100			regulator-name = "vreg_l8a";
101			regulator-min-microvolt = <2504000>;
102			regulator-max-microvolt = <3300000>;
103			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
104			regulator-allow-set-load;
105			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
106						   RPMH_REGULATOR_MODE_HPM>;
107		};
108
109		vreg_l9a: ldo9 {
110			regulator-name = "vreg_l9a";
111			regulator-min-microvolt = <2970000>;
112			regulator-max-microvolt = <3544000>;
113			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
114			regulator-allow-set-load;
115			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
116						   RPMH_REGULATOR_MODE_HPM>;
117		};
118	};
119
120	regulators-1 {
121		compatible = "qcom,pmm8654au-rpmh-regulators";
122		qcom,pmic-id = "c";
123
124		vreg_l1c: ldo1 {
125			regulator-name = "vreg_l1c";
126			regulator-min-microvolt = <1140000>;
127			regulator-max-microvolt = <1260000>;
128			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
129			regulator-allow-set-load;
130			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
131						   RPMH_REGULATOR_MODE_HPM>;
132		};
133
134		vreg_l2c: ldo2 {
135			regulator-name = "vreg_l2c";
136			regulator-min-microvolt = <900000>;
137			regulator-max-microvolt = <1100000>;
138			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
139			regulator-allow-set-load;
140			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
141						   RPMH_REGULATOR_MODE_HPM>;
142		};
143
144		vreg_l3c: ldo3 {
145			regulator-name = "vreg_l3c";
146			regulator-min-microvolt = <1100000>;
147			regulator-max-microvolt = <1300000>;
148			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
149			regulator-allow-set-load;
150			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
151						   RPMH_REGULATOR_MODE_HPM>;
152		};
153
154		vreg_l4c: ldo4 {
155			regulator-name = "vreg_l4c";
156			regulator-min-microvolt = <1100000>;
157			regulator-max-microvolt = <1300000>;
158			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
159			/*
160			 * FIXME: This should have regulator-allow-set-load but
161			 * we're getting an over-current fault from the PMIC
162			 * when switching to LPM.
163			 */
164		};
165
166		vreg_l5c: ldo5 {
167			regulator-name = "vreg_l5c";
168			regulator-min-microvolt = <1100000>;
169			regulator-max-microvolt = <1300000>;
170			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
171			regulator-allow-set-load;
172			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
173						   RPMH_REGULATOR_MODE_HPM>;
174		};
175
176		vreg_l6c: ldo6 {
177			regulator-name = "vreg_l6c";
178			regulator-min-microvolt = <1620000>;
179			regulator-max-microvolt = <1980000>;
180			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
181			regulator-allow-set-load;
182			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
183						   RPMH_REGULATOR_MODE_HPM>;
184		};
185
186		vreg_l7c: ldo7 {
187			regulator-name = "vreg_l7c";
188			regulator-min-microvolt = <1620000>;
189			regulator-max-microvolt = <2000000>;
190			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
191			regulator-allow-set-load;
192			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
193						   RPMH_REGULATOR_MODE_HPM>;
194		};
195
196		vreg_l8c: ldo8 {
197			regulator-name = "vreg_l8c";
198			regulator-min-microvolt = <2400000>;
199			regulator-max-microvolt = <3300000>;
200			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
201			regulator-allow-set-load;
202			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
203						   RPMH_REGULATOR_MODE_HPM>;
204		};
205
206		vreg_l9c: ldo9 {
207			regulator-name = "vreg_l9c";
208			regulator-min-microvolt = <1650000>;
209			regulator-max-microvolt = <2700000>;
210			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
211			regulator-allow-set-load;
212			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
213						   RPMH_REGULATOR_MODE_HPM>;
214		};
215	};
216
217	regulators-2 {
218		compatible = "qcom,pmm8654au-rpmh-regulators";
219		qcom,pmic-id = "e";
220
221		vreg_s4e: smps4 {
222			regulator-name = "vreg_s4e";
223			regulator-min-microvolt = <970000>;
224			regulator-max-microvolt = <1520000>;
225			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
226		};
227
228		vreg_s7e: smps7 {
229			regulator-name = "vreg_s7e";
230			regulator-min-microvolt = <1010000>;
231			regulator-max-microvolt = <1170000>;
232			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
233		};
234
235		vreg_s9e: smps9 {
236			regulator-name = "vreg_s9e";
237			regulator-min-microvolt = <300000>;
238			regulator-max-microvolt = <570000>;
239			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
240		};
241
242		vreg_l6e: ldo6 {
243			regulator-name = "vreg_l6e";
244			regulator-min-microvolt = <1280000>;
245			regulator-max-microvolt = <1450000>;
246			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
247			regulator-allow-set-load;
248			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
249						   RPMH_REGULATOR_MODE_HPM>;
250		};
251
252		vreg_l8e: ldo8 {
253			regulator-name = "vreg_l8e";
254			regulator-min-microvolt = <1800000>;
255			regulator-max-microvolt = <1950000>;
256			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
257			regulator-allow-set-load;
258			regulator-allowed-modes = <RPMH_REGULATOR_MODE_LPM
259						   RPMH_REGULATOR_MODE_HPM>;
260		};
261	};
262};
263
264&ethernet0 {
265	phy-mode = "sgmii";
266	phy-handle = <&sgmii_phy>;
267
268	pinctrl-0 = <&ethernet0_default>;
269	pinctrl-names = "default";
270
271	snps,mtl-rx-config = <&mtl_rx_setup>;
272	snps,mtl-tx-config = <&mtl_tx_setup>;
273	snps,ps-speed = <1000>;
274
275	status = "okay";
276
277	mdio {
278		compatible = "snps,dwmac-mdio";
279		#address-cells = <1>;
280		#size-cells = <0>;
281
282		reset-gpios = <&pmm8654au_2_gpios 8 GPIO_ACTIVE_LOW>;
283		reset-delay-us = <11000>;
284		reset-post-delay-us = <70000>;
285
286		sgmii_phy: phy@8 {
287			reg = <0x8>;
288			device_type = "ethernet-phy";
289		};
290	};
291
292	mtl_rx_setup: rx-queues-config {
293		snps,rx-queues-to-use = <4>;
294		snps,rx-sched-sp;
295
296		queue0 {
297			snps,dcb-algorithm;
298			snps,map-to-dma-channel = <0x0>;
299			snps,route-up;
300			snps,priority = <0x1>;
301		};
302
303		queue1 {
304			snps,dcb-algorithm;
305			snps,map-to-dma-channel = <0x1>;
306			snps,route-ptp;
307		};
308
309		queue2 {
310			snps,avb-algorithm;
311			snps,map-to-dma-channel = <0x2>;
312			snps,route-avcp;
313		};
314
315		queue3 {
316			snps,avb-algorithm;
317			snps,map-to-dma-channel = <0x3>;
318			snps,priority = <0xc>;
319		};
320	};
321
322	mtl_tx_setup: tx-queues-config {
323		snps,tx-queues-to-use = <4>;
324		snps,tx-sched-sp;
325
326		queue0 {
327			snps,dcb-algorithm;
328		};
329
330		queue1 {
331			snps,dcb-algorithm;
332		};
333
334		queue2 {
335			snps,avb-algorithm;
336			snps,send_slope = <0x1000>;
337			snps,idle_slope = <0x1000>;
338			snps,high_credit = <0x3e800>;
339			snps,low_credit = <0xffc18000>;
340		};
341
342		queue3 {
343			snps,avb-algorithm;
344			snps,send_slope = <0x1000>;
345			snps,idle_slope = <0x1000>;
346			snps,high_credit = <0x3e800>;
347			snps,low_credit = <0xffc18000>;
348		};
349	};
350};
351
352&i2c11 {
353	clock-frequency = <400000>;
354	pinctrl-0 = <&qup_i2c11_default>;
355	pinctrl-names = "default";
356	status = "okay";
357};
358
359&i2c18 {
360	clock-frequency = <400000>;
361	pinctrl-0 = <&qup_i2c18_default>;
362	pinctrl-names = "default";
363	status = "okay";
364};
365
366&pmm8654au_0_gpios {
367	gpio-line-names = "DS_EN",
368			  "POFF_COMPLETE",
369			  "UFS0_VER_ID",
370			  "FAST_POFF",
371			  "DBU1_PON_DONE",
372			  "AOSS_SLEEP",
373			  "CAM_DES0_EN",
374			  "CAM_DES1_EN",
375			  "CAM_DES2_EN",
376			  "CAM_DES3_EN",
377			  "UEFI",
378			  "ANALOG_PON_OPT";
379};
380
381&pmm8654au_1_gpios {
382	gpio-line-names = "PMIC_C_ID0",
383			  "PMIC_C_ID1",
384			  "UFS1_VER_ID",
385			  "IPA_PWR",
386			  "",
387			  "WLAN_DBU4_EN",
388			  "WLAN_EN",
389			  "BT_EN",
390			  "USB2_PWR_EN",
391			  "USB2_FAULT";
392
393	usb2_en_state: usb2-en-state {
394		pins = "gpio9";
395		function = "normal";
396		output-high;
397		power-source = <0>;
398	};
399};
400
401&pmm8654au_2_gpios {
402	gpio-line-names = "PMIC_E_ID0",
403			  "PMIC_E_ID1",
404			  "USB0_PWR_EN",
405			  "USB0_FAULT",
406			  "SENSOR_IRQ_1",
407			  "SENSOR_IRQ_2",
408			  "SENSOR_RST",
409			  "SGMIIO0_RST",
410			  "SGMIIO1_RST",
411			  "USB1_PWR_ENABLE",
412			  "USB1_FAULT",
413			  "VMON_SPX8";
414
415	usb0_en_state: usb0-en-state {
416		pins = "gpio3";
417		function = "normal";
418		output-high;
419		power-source = <0>;
420	};
421
422	usb1_en_state: usb1-en-state {
423		pins = "gpio10";
424		function = "normal";
425		output-high;
426		power-source = <0>;
427	};
428};
429
430&pmm8654au_3_gpios {
431	gpio-line-names = "PMIC_G_ID0",
432			  "PMIC_G_ID1",
433			  "GNSS_RST",
434			  "GNSS_EN",
435			  "GNSS_BOOT_MODE";
436};
437
438&qupv3_id_1 {
439	status = "okay";
440};
441
442&qupv3_id_2 {
443	status = "okay";
444};
445
446&serdes0 {
447	phy-supply = <&vreg_l5a>;
448	status = "okay";
449};
450
451&sleep_clk {
452	clock-frequency = <32764>;
453};
454
455&spi16 {
456	pinctrl-0 = <&qup_spi16_default>;
457	pinctrl-names = "default";
458	status = "okay";
459};
460
461&tlmm {
462	ethernet0_default: ethernet0-default-state {
463		ethernet0_mdc: ethernet0-mdc-pins {
464			pins = "gpio8";
465			function = "emac0_mdc";
466			drive-strength = <16>;
467			bias-pull-up;
468		};
469
470		ethernet0_mdio: ethernet0-mdio-pins {
471			pins = "gpio9";
472			function = "emac0_mdio";
473			drive-strength = <16>;
474			bias-pull-up;
475		};
476	};
477
478	qup_uart10_default: qup-uart10-state {
479		pins = "gpio46", "gpio47";
480		function = "qup1_se3";
481	};
482
483	qup_spi16_default: qup-spi16-state {
484		pins = "gpio86", "gpio87", "gpio88", "gpio89";
485		function = "qup2_se2";
486		drive-strength = <6>;
487		bias-disable;
488	};
489
490	qup_i2c11_default: qup-i2c11-state {
491		pins = "gpio48", "gpio49";
492		function = "qup1_se4";
493		drive-strength = <2>;
494		bias-pull-up;
495	};
496
497	qup_i2c18_default: qup-i2c18-state {
498		pins = "gpio95", "gpio96";
499		function = "qup2_se4";
500		drive-strength = <2>;
501		bias-pull-up;
502	};
503
504	qup_uart12_default: qup-uart12-state {
505		qup_uart12_cts: qup-uart12-cts-pins {
506			pins = "gpio52";
507			function = "qup1_se5";
508			bias-disable;
509		};
510
511		qup_uart12_rts: qup-uart12-rts-pins {
512			pins = "gpio53";
513			function = "qup1_se5";
514			bias-pull-down;
515		};
516
517		qup_uart12_tx: qup-uart12-tx-pins {
518			pins = "gpio54";
519			function = "qup1_se5";
520			bias-pull-up;
521		};
522
523		qup_uart12_rx: qup-uart12-rx-pins {
524			pins = "gpio55";
525			function = "qup1_se5";
526			bias-pull-down;
527		};
528	};
529
530	qup_uart17_default: qup-uart17-state {
531		qup_uart17_cts: qup-uart17-cts-pins {
532			pins = "gpio91";
533			function = "qup2_se3";
534			bias-disable;
535		};
536
537		qup_uart17_rts: qup0-uart17-rts-pins {
538			pins = "gpio92";
539			function = "qup2_se3";
540			bias-pull-down;
541		};
542
543		qup_uart17_tx: qup0-uart17-tx-pins {
544			pins = "gpio93";
545			function = "qup2_se3";
546			bias-pull-up;
547		};
548
549		qup_uart17_rx: qup0-uart17-rx-pins {
550			pins = "gpio94";
551			function = "qup2_se3";
552			bias-pull-down;
553		};
554	};
555};
556
557&uart10 {
558	compatible = "qcom,geni-debug-uart";
559	pinctrl-0 = <&qup_uart10_default>;
560	pinctrl-names = "default";
561	status = "okay";
562};
563
564&uart12 {
565	pinctrl-0 = <&qup_uart12_default>;
566	pinctrl-names = "default";
567	status = "okay";
568};
569
570&uart17 {
571	pinctrl-0 = <&qup_uart17_default>;
572	pinctrl-names = "default";
573	status = "okay";
574};
575
576&ufs_mem_hc {
577	reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>;
578	vcc-supply = <&vreg_l8a>;
579	vcc-max-microamp = <1100000>;
580	vccq-supply = <&vreg_l4c>;
581	vccq-max-microamp = <1200000>;
582
583	status = "okay";
584};
585
586&ufs_mem_phy {
587	vdda-phy-supply = <&vreg_l4a>;
588	vdda-pll-supply = <&vreg_l1c>;
589
590	status = "okay";
591};
592
593&usb_0 {
594	pinctrl-names = "default";
595	pinctrl-0 = <&usb0_en_state>;
596
597	status = "okay";
598};
599
600&usb_0_dwc3 {
601	dr_mode = "peripheral";
602};
603
604&usb_0_hsphy {
605	vdda-pll-supply = <&vreg_l7a>;
606	vdda18-supply = <&vreg_l6c>;
607	vdda33-supply = <&vreg_l9a>;
608
609	status = "okay";
610};
611
612&usb_0_qmpphy {
613	vdda-phy-supply = <&vreg_l1c>;
614	vdda-pll-supply = <&vreg_l7a>;
615
616	status = "okay";
617};
618
619&usb_1 {
620	pinctrl-names = "default";
621	pinctrl-0 = <&usb1_en_state>;
622
623	status = "okay";
624};
625
626&usb_1_dwc3 {
627	dr_mode = "host";
628};
629
630&usb_1_hsphy {
631	vdda-pll-supply = <&vreg_l7a>;
632	vdda18-supply = <&vreg_l6c>;
633	vdda33-supply = <&vreg_l9a>;
634
635	status = "okay";
636};
637
638&usb_1_qmpphy {
639	vdda-phy-supply = <&vreg_l1c>;
640	vdda-pll-supply = <&vreg_l7a>;
641
642	status = "okay";
643};
644
645&usb_2 {
646	pinctrl-names = "default";
647	pinctrl-0 = <&usb2_en_state>;
648
649	status = "okay";
650};
651
652&usb_2_dwc3 {
653	dr_mode = "host";
654};
655
656&usb_2_hsphy {
657	vdda-pll-supply = <&vreg_l7a>;
658	vdda18-supply = <&vreg_l6c>;
659	vdda33-supply = <&vreg_l9a>;
660
661	status = "okay";
662};
663
664&xo_board_clk {
665	clock-frequency = <38400000>;
666};
667