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&serdes1 {
452	phy-supply = <&vreg_l5a>;
453	status = "okay";
454};
455
456&sleep_clk {
457	clock-frequency = <32764>;
458};
459
460&spi16 {
461	pinctrl-0 = <&qup_spi16_default>;
462	pinctrl-names = "default";
463	status = "okay";
464};
465
466&tlmm {
467	ethernet0_default: ethernet0-default-state {
468		ethernet0_mdc: ethernet0-mdc-pins {
469			pins = "gpio8";
470			function = "emac0_mdc";
471			drive-strength = <16>;
472			bias-pull-up;
473		};
474
475		ethernet0_mdio: ethernet0-mdio-pins {
476			pins = "gpio9";
477			function = "emac0_mdio";
478			drive-strength = <16>;
479			bias-pull-up;
480		};
481	};
482
483	qup_uart10_default: qup-uart10-state {
484		pins = "gpio46", "gpio47";
485		function = "qup1_se3";
486	};
487
488	qup_spi16_default: qup-spi16-state {
489		pins = "gpio86", "gpio87", "gpio88", "gpio89";
490		function = "qup2_se2";
491		drive-strength = <6>;
492		bias-disable;
493	};
494
495	qup_i2c11_default: qup-i2c11-state {
496		pins = "gpio48", "gpio49";
497		function = "qup1_se4";
498		drive-strength = <2>;
499		bias-pull-up;
500	};
501
502	qup_i2c18_default: qup-i2c18-state {
503		pins = "gpio95", "gpio96";
504		function = "qup2_se4";
505		drive-strength = <2>;
506		bias-pull-up;
507	};
508
509	qup_uart12_default: qup-uart12-state {
510		qup_uart12_cts: qup-uart12-cts-pins {
511			pins = "gpio52";
512			function = "qup1_se5";
513			bias-disable;
514		};
515
516		qup_uart12_rts: qup-uart12-rts-pins {
517			pins = "gpio53";
518			function = "qup1_se5";
519			bias-pull-down;
520		};
521
522		qup_uart12_tx: qup-uart12-tx-pins {
523			pins = "gpio54";
524			function = "qup1_se5";
525			bias-pull-up;
526		};
527
528		qup_uart12_rx: qup-uart12-rx-pins {
529			pins = "gpio55";
530			function = "qup1_se5";
531			bias-pull-down;
532		};
533	};
534
535	qup_uart17_default: qup-uart17-state {
536		qup_uart17_cts: qup-uart17-cts-pins {
537			pins = "gpio91";
538			function = "qup2_se3";
539			bias-disable;
540		};
541
542		qup_uart17_rts: qup0-uart17-rts-pins {
543			pins = "gpio92";
544			function = "qup2_se3";
545			bias-pull-down;
546		};
547
548		qup_uart17_tx: qup0-uart17-tx-pins {
549			pins = "gpio93";
550			function = "qup2_se3";
551			bias-pull-up;
552		};
553
554		qup_uart17_rx: qup0-uart17-rx-pins {
555			pins = "gpio94";
556			function = "qup2_se3";
557			bias-pull-down;
558		};
559	};
560
561	pcie0_default_state: pcie0-default-state {
562		perst-pins {
563			pins = "gpio2";
564			function = "gpio";
565			drive-strength = <2>;
566			bias-pull-down;
567		};
568
569		clkreq-pins {
570			pins = "gpio1";
571			function = "pcie0_clkreq";
572			drive-strength = <2>;
573			bias-pull-up;
574		};
575
576		wake-pins {
577			pins = "gpio0";
578			function = "gpio";
579			drive-strength = <2>;
580			bias-pull-up;
581		};
582	};
583
584	pcie1_default_state: pcie1-default-state {
585		perst-pins {
586			pins = "gpio4";
587			function = "gpio";
588			drive-strength = <2>;
589			bias-pull-down;
590		};
591
592		clkreq-pins {
593			pins = "gpio3";
594			function = "pcie1_clkreq";
595			drive-strength = <2>;
596			bias-pull-up;
597		};
598
599		wake-pins {
600			pins = "gpio5";
601			function = "gpio";
602			drive-strength = <2>;
603			bias-pull-up;
604		};
605	};
606};
607
608&pcie0 {
609	perst-gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
610	wake-gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
611
612	pinctrl-names = "default";
613	pinctrl-0 = <&pcie0_default_state>;
614
615	status = "okay";
616};
617
618&pcie1 {
619	perst-gpios = <&tlmm 4 GPIO_ACTIVE_LOW>;
620	wake-gpios = <&tlmm 5 GPIO_ACTIVE_HIGH>;
621
622	pinctrl-names = "default";
623	pinctrl-0 = <&pcie1_default_state>;
624
625	status = "okay";
626};
627
628&pcie0_phy {
629	vdda-phy-supply = <&vreg_l5a>;
630	vdda-pll-supply = <&vreg_l1c>;
631
632	status = "okay";
633};
634
635&pcie1_phy {
636	vdda-phy-supply = <&vreg_l5a>;
637	vdda-pll-supply = <&vreg_l1c>;
638
639	status = "okay";
640};
641
642&uart10 {
643	compatible = "qcom,geni-debug-uart";
644	pinctrl-0 = <&qup_uart10_default>;
645	pinctrl-names = "default";
646	status = "okay";
647};
648
649&uart12 {
650	pinctrl-0 = <&qup_uart12_default>;
651	pinctrl-names = "default";
652	status = "okay";
653};
654
655&uart17 {
656	pinctrl-0 = <&qup_uart17_default>;
657	pinctrl-names = "default";
658	status = "okay";
659};
660
661&ufs_mem_hc {
662	reset-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>;
663	vcc-supply = <&vreg_l8a>;
664	vcc-max-microamp = <1100000>;
665	vccq-supply = <&vreg_l4c>;
666	vccq-max-microamp = <1200000>;
667
668	status = "okay";
669};
670
671&ufs_mem_phy {
672	vdda-phy-supply = <&vreg_l4a>;
673	vdda-pll-supply = <&vreg_l1c>;
674
675	status = "okay";
676};
677
678&usb_0 {
679	pinctrl-names = "default";
680	pinctrl-0 = <&usb0_en_state>;
681
682	status = "okay";
683};
684
685&usb_0_dwc3 {
686	dr_mode = "peripheral";
687};
688
689&usb_0_hsphy {
690	vdda-pll-supply = <&vreg_l7a>;
691	vdda18-supply = <&vreg_l6c>;
692	vdda33-supply = <&vreg_l9a>;
693
694	status = "okay";
695};
696
697&usb_0_qmpphy {
698	vdda-phy-supply = <&vreg_l1c>;
699	vdda-pll-supply = <&vreg_l7a>;
700
701	status = "okay";
702};
703
704&usb_1 {
705	pinctrl-names = "default";
706	pinctrl-0 = <&usb1_en_state>;
707
708	status = "okay";
709};
710
711&usb_1_dwc3 {
712	dr_mode = "host";
713};
714
715&usb_1_hsphy {
716	vdda-pll-supply = <&vreg_l7a>;
717	vdda18-supply = <&vreg_l6c>;
718	vdda33-supply = <&vreg_l9a>;
719
720	status = "okay";
721};
722
723&usb_1_qmpphy {
724	vdda-phy-supply = <&vreg_l1c>;
725	vdda-pll-supply = <&vreg_l7a>;
726
727	status = "okay";
728};
729
730&usb_2 {
731	pinctrl-names = "default";
732	pinctrl-0 = <&usb2_en_state>;
733
734	status = "okay";
735};
736
737&usb_2_dwc3 {
738	dr_mode = "host";
739};
740
741&usb_2_hsphy {
742	vdda-pll-supply = <&vreg_l7a>;
743	vdda18-supply = <&vreg_l6c>;
744	vdda33-supply = <&vreg_l9a>;
745
746	status = "okay";
747};
748
749&xo_board_clk {
750	clock-frequency = <38400000>;
751};
752