1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Hardkernel Odroid XU3/XU3-Lite/XU4/HC1 boards core device tree source
4 *
5 * Copyright (c) 2017 Marek Szyprowski
6 * Copyright (c) 2013-2017 Samsung Electronics Co., Ltd.
7 *		http://www.samsung.com
8 */
9
10#include <dt-bindings/clock/samsung,s2mps11.h>
11#include <dt-bindings/interrupt-controller/irq.h>
12#include <dt-bindings/gpio/gpio.h>
13#include "exynos5800.dtsi"
14#include "exynos5422-cpus.dtsi"
15
16/ {
17	memory@40000000 {
18		device_type = "memory";
19		reg = <0x40000000 0x7EA00000>;
20	};
21
22	chosen {
23		stdout-path = "serial2:115200n8";
24	};
25
26	firmware@2073000 {
27		compatible = "samsung,secure-firmware";
28		reg = <0x02073000 0x1000>;
29	};
30
31	fixed-rate-clocks {
32		oscclk {
33			compatible = "samsung,exynos5420-oscclk";
34			clock-frequency = <24000000>;
35		};
36	};
37};
38
39&adc {
40	vdd-supply = <&ldo4_reg>;
41	status = "okay";
42};
43
44&bus_wcore {
45	devfreq-events = <&nocp_mem0_0>, <&nocp_mem0_1>,
46			<&nocp_mem1_0>, <&nocp_mem1_1>;
47	vdd-supply = <&buck3_reg>;
48	exynos,saturation-ratio = <100>;
49	status = "okay";
50};
51
52&bus_noc {
53	devfreq = <&bus_wcore>;
54	status = "okay";
55};
56
57&bus_fsys_apb {
58	devfreq = <&bus_wcore>;
59	status = "okay";
60};
61
62&bus_fsys {
63	devfreq = <&bus_wcore>;
64	status = "okay";
65};
66
67&bus_fsys2 {
68	devfreq = <&bus_wcore>;
69	status = "okay";
70};
71
72&bus_mfc {
73	devfreq = <&bus_wcore>;
74	status = "okay";
75};
76
77&bus_gen {
78	devfreq = <&bus_wcore>;
79	status = "okay";
80};
81
82&bus_peri {
83	devfreq = <&bus_wcore>;
84	status = "okay";
85};
86
87&bus_g2d {
88	devfreq = <&bus_wcore>;
89	status = "okay";
90};
91
92&bus_g2d_acp {
93	devfreq = <&bus_wcore>;
94	status = "okay";
95};
96
97&bus_jpeg {
98	devfreq = <&bus_wcore>;
99	status = "okay";
100};
101
102&bus_jpeg_apb {
103	devfreq = <&bus_wcore>;
104	status = "okay";
105};
106
107&bus_disp1_fimd {
108	devfreq = <&bus_wcore>;
109	status = "okay";
110};
111
112&bus_disp1 {
113	devfreq = <&bus_wcore>;
114	status = "okay";
115};
116
117&bus_gscl_scaler {
118	devfreq = <&bus_wcore>;
119	status = "okay";
120};
121
122&bus_mscl {
123	devfreq = <&bus_wcore>;
124	status = "okay";
125};
126
127&cpu0 {
128	cpu-supply = <&buck6_reg>;
129};
130
131&cpu4 {
132	cpu-supply = <&buck2_reg>;
133};
134
135&hsi2c_4 {
136	status = "okay";
137
138	s2mps11_pmic@66 {
139		compatible = "samsung,s2mps11-pmic";
140		reg = <0x66>;
141		samsung,s2mps11-acokb-ground;
142
143		interrupt-parent = <&gpx0>;
144		interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
145		pinctrl-names = "default";
146		pinctrl-0 = <&s2mps11_irq>;
147
148		s2mps11_osc: clocks {
149			compatible = "samsung,s2mps11-clk";
150			#clock-cells = <1>;
151			clock-output-names = "s2mps11_ap",
152					"s2mps11_cp", "s2mps11_bt";
153		};
154
155		regulators {
156			ldo1_reg: LDO1 {
157				regulator-name = "vdd_ldo1";
158				regulator-min-microvolt = <1000000>;
159				regulator-max-microvolt = <1000000>;
160				regulator-always-on;
161			};
162
163			ldo2_reg: LDO2 {
164				regulator-name = "vdd_ldo2";
165				regulator-min-microvolt = <1800000>;
166				regulator-max-microvolt = <1800000>;
167				regulator-always-on;
168			};
169
170			ldo3_reg: LDO3 {
171				regulator-name = "vddq_mmc0";
172				regulator-min-microvolt = <1800000>;
173				regulator-max-microvolt = <1800000>;
174			};
175
176			ldo4_reg: LDO4 {
177				regulator-name = "vdd_adc";
178				regulator-min-microvolt = <1800000>;
179				regulator-max-microvolt = <1800000>;
180
181				regulator-state-mem {
182					regulator-off-in-suspend;
183				};
184			};
185
186			ldo5_reg: LDO5 {
187				regulator-name = "vdd_ldo5";
188				regulator-min-microvolt = <1800000>;
189				regulator-max-microvolt = <1800000>;
190				regulator-always-on;
191
192				regulator-state-mem {
193					regulator-off-in-suspend;
194				};
195			};
196
197			ldo6_reg: LDO6 {
198				regulator-name = "vdd_ldo6";
199				regulator-min-microvolt = <1000000>;
200				regulator-max-microvolt = <1000000>;
201				regulator-always-on;
202
203				regulator-state-mem {
204					regulator-off-in-suspend;
205				};
206			};
207
208			ldo7_reg: LDO7 {
209				regulator-name = "vdd_ldo7";
210				regulator-min-microvolt = <1800000>;
211				regulator-max-microvolt = <1800000>;
212				regulator-always-on;
213
214				regulator-state-mem {
215					regulator-off-in-suspend;
216				};
217			};
218
219			ldo8_reg: LDO8 {
220				regulator-name = "vdd_ldo8";
221				regulator-min-microvolt = <1800000>;
222				regulator-max-microvolt = <1800000>;
223				regulator-always-on;
224
225				regulator-state-mem {
226					regulator-off-in-suspend;
227				};
228			};
229
230			ldo9_reg: LDO9 {
231				regulator-name = "vdd_ldo9";
232				regulator-min-microvolt = <3000000>;
233				regulator-max-microvolt = <3000000>;
234				regulator-always-on;
235
236				regulator-state-mem {
237					regulator-off-in-suspend;
238				};
239			};
240
241			ldo10_reg: LDO10 {
242				regulator-name = "vdd_ldo10";
243				regulator-min-microvolt = <1800000>;
244				regulator-max-microvolt = <1800000>;
245				regulator-always-on;
246
247				regulator-state-mem {
248					regulator-off-in-suspend;
249				};
250			};
251
252			ldo11_reg: LDO11 {
253				regulator-name = "vdd_ldo11";
254				regulator-min-microvolt = <1000000>;
255				regulator-max-microvolt = <1000000>;
256				regulator-always-on;
257
258				regulator-state-mem {
259					regulator-off-in-suspend;
260				};
261			};
262
263			ldo12_reg: LDO12 {
264				/* Unused */
265				regulator-name = "vdd_ldo12";
266				regulator-min-microvolt = <800000>;
267				regulator-max-microvolt = <2375000>;
268			};
269
270			ldo13_reg: LDO13 {
271				regulator-name = "vddq_mmc2";
272				regulator-min-microvolt = <1800000>;
273				regulator-max-microvolt = <2800000>;
274
275				regulator-state-mem {
276					regulator-off-in-suspend;
277				};
278			};
279
280			ldo14_reg: LDO14 {
281				/* Unused */
282				regulator-name = "vdd_ldo14";
283				regulator-min-microvolt = <800000>;
284				regulator-max-microvolt = <3950000>;
285			};
286
287			ldo15_reg: LDO15 {
288				regulator-name = "vdd_ldo15";
289				regulator-min-microvolt = <3300000>;
290				regulator-max-microvolt = <3300000>;
291				regulator-always-on;
292
293				regulator-state-mem {
294					regulator-off-in-suspend;
295				};
296			};
297
298			ldo16_reg: LDO16 {
299				/* Unused */
300				regulator-name = "vdd_ldo16";
301				regulator-min-microvolt = <800000>;
302				regulator-max-microvolt = <3950000>;
303			};
304
305			ldo17_reg: LDO17 {
306				regulator-name = "vdd_ldo17";
307				regulator-min-microvolt = <3300000>;
308				regulator-max-microvolt = <3300000>;
309				regulator-always-on;
310
311				regulator-state-mem {
312					regulator-off-in-suspend;
313				};
314			};
315
316			ldo18_reg: LDO18 {
317				regulator-name = "vdd_emmc_1V8";
318				regulator-min-microvolt = <1800000>;
319				regulator-max-microvolt = <1800000>;
320
321				regulator-state-mem {
322					regulator-off-in-suspend;
323				};
324			};
325
326			ldo19_reg: LDO19 {
327				regulator-name = "vdd_sd";
328				regulator-min-microvolt = <2800000>;
329				regulator-max-microvolt = <2800000>;
330
331				regulator-state-mem {
332					regulator-off-in-suspend;
333				};
334			};
335
336			ldo20_reg: LDO20 {
337				/* Unused */
338				regulator-name = "vdd_ldo20";
339				regulator-min-microvolt = <800000>;
340				regulator-max-microvolt = <3950000>;
341			};
342
343			ldo21_reg: LDO21 {
344				/* Unused */
345				regulator-name = "vdd_ldo21";
346				regulator-min-microvolt = <800000>;
347				regulator-max-microvolt = <3950000>;
348			};
349
350			ldo22_reg: LDO22 {
351				/* Unused */
352				regulator-name = "vdd_ldo22";
353				regulator-min-microvolt = <800000>;
354				regulator-max-microvolt = <2375000>;
355			};
356
357			ldo23_reg: LDO23 {
358				regulator-name = "vdd_mifs";
359				regulator-min-microvolt = <1100000>;
360				regulator-max-microvolt = <1100000>;
361				regulator-always-on;
362
363				regulator-state-mem {
364					regulator-off-in-suspend;
365				};
366			};
367
368			ldo24_reg: LDO24 {
369				/* Unused */
370				regulator-name = "vdd_ldo24";
371				regulator-min-microvolt = <800000>;
372				regulator-max-microvolt = <3950000>;
373			};
374
375			ldo25_reg: LDO25 {
376				/* Unused */
377				regulator-name = "vdd_ldo25";
378				regulator-min-microvolt = <800000>;
379				regulator-max-microvolt = <3950000>;
380			};
381
382			ldo26_reg: LDO26 {
383				/* Used on XU3, XU3-Lite and XU4 */
384				regulator-name = "vdd_ldo26";
385				regulator-min-microvolt = <800000>;
386				regulator-max-microvolt = <3950000>;
387
388				regulator-state-mem {
389					regulator-off-in-suspend;
390				};
391			};
392
393			ldo27_reg: LDO27 {
394				regulator-name = "vdd_g3ds";
395				regulator-min-microvolt = <1000000>;
396				regulator-max-microvolt = <1000000>;
397				regulator-always-on;
398
399				regulator-state-mem {
400					regulator-off-in-suspend;
401				};
402			};
403
404			ldo28_reg: LDO28 {
405				/* Used on XU3 */
406				regulator-name = "vdd_ldo28";
407				regulator-min-microvolt = <800000>;
408				regulator-max-microvolt = <3950000>;
409
410				regulator-state-mem {
411					regulator-off-in-suspend;
412				};
413			};
414
415			ldo29_reg: LDO29 {
416				/* Unused */
417				regulator-name = "vdd_ldo29";
418				regulator-min-microvolt = <800000>;
419				regulator-max-microvolt = <3950000>;
420			};
421
422			ldo30_reg: LDO30 {
423				/* Unused */
424				regulator-name = "vdd_ldo30";
425				regulator-min-microvolt = <800000>;
426				regulator-max-microvolt = <3950000>;
427			};
428
429			ldo31_reg: LDO31 {
430				/* Unused */
431				regulator-name = "vdd_ldo31";
432				regulator-min-microvolt = <800000>;
433				regulator-max-microvolt = <3950000>;
434			};
435
436			ldo32_reg: LDO32 {
437				/* Unused */
438				regulator-name = "vdd_ldo32";
439				regulator-min-microvolt = <800000>;
440				regulator-max-microvolt = <3950000>;
441			};
442
443			ldo33_reg: LDO33 {
444				/* Unused */
445				regulator-name = "vdd_ldo33";
446				regulator-min-microvolt = <800000>;
447				regulator-max-microvolt = <3950000>;
448			};
449
450			ldo34_reg: LDO34 {
451				/* Unused */
452				regulator-name = "vdd_ldo34";
453				regulator-min-microvolt = <800000>;
454				regulator-max-microvolt = <3950000>;
455			};
456
457			ldo35_reg: LDO35 {
458				/* Unused */
459				regulator-name = "vdd_ldo35";
460				regulator-min-microvolt = <800000>;
461				regulator-max-microvolt = <2375000>;
462			};
463
464			ldo36_reg: LDO36 {
465				/* Unused */
466				regulator-name = "vdd_ldo36";
467				regulator-min-microvolt = <800000>;
468				regulator-max-microvolt = <3950000>;
469			};
470
471			ldo37_reg: LDO37 {
472				/* Unused */
473				regulator-name = "vdd_ldo37";
474				regulator-min-microvolt = <800000>;
475				regulator-max-microvolt = <3950000>;
476			};
477
478			ldo38_reg: LDO38 {
479				/* Unused */
480				regulator-name = "vdd_ldo38";
481				regulator-min-microvolt = <800000>;
482				regulator-max-microvolt = <3950000>;
483			};
484
485			buck1_reg: BUCK1 {
486				regulator-name = "vdd_mif";
487				regulator-min-microvolt = <800000>;
488				regulator-max-microvolt = <1300000>;
489				regulator-always-on;
490				regulator-boot-on;
491
492				regulator-state-mem {
493					regulator-off-in-suspend;
494				};
495			};
496
497			buck2_reg: BUCK2 {
498				regulator-name = "vdd_arm";
499				regulator-min-microvolt = <800000>;
500				regulator-max-microvolt = <1500000>;
501				regulator-always-on;
502				regulator-boot-on;
503
504				regulator-state-mem {
505					regulator-off-in-suspend;
506				};
507			};
508
509			buck3_reg: BUCK3 {
510				regulator-name = "vdd_int";
511				regulator-min-microvolt = <800000>;
512				regulator-max-microvolt = <1400000>;
513				regulator-always-on;
514				regulator-boot-on;
515
516				regulator-state-mem {
517					regulator-off-in-suspend;
518				};
519			};
520
521			buck4_reg: BUCK4 {
522				regulator-name = "vdd_g3d";
523				regulator-min-microvolt = <800000>;
524				regulator-max-microvolt = <1400000>;
525				regulator-always-on;
526				regulator-boot-on;
527
528				regulator-state-mem {
529					regulator-off-in-suspend;
530				};
531			};
532
533			buck5_reg: BUCK5 {
534				regulator-name = "vdd_mem";
535				regulator-min-microvolt = <800000>;
536				regulator-max-microvolt = <1400000>;
537				regulator-always-on;
538				regulator-boot-on;
539			};
540
541			buck6_reg: BUCK6 {
542				regulator-name = "vdd_kfc";
543				regulator-min-microvolt = <800000>;
544				regulator-max-microvolt = <1500000>;
545				regulator-always-on;
546				regulator-boot-on;
547
548				regulator-state-mem {
549					regulator-off-in-suspend;
550				};
551			};
552
553			buck7_reg: BUCK7 {
554				regulator-name = "vdd_1.35v_ldo";
555				regulator-min-microvolt = <1200000>;
556				regulator-max-microvolt = <1500000>;
557				regulator-always-on;
558				regulator-boot-on;
559			};
560
561			buck8_reg: BUCK8 {
562				regulator-name = "vdd_2.0v_ldo";
563				regulator-min-microvolt = <1800000>;
564				regulator-max-microvolt = <2100000>;
565				regulator-always-on;
566				regulator-boot-on;
567			};
568
569			buck9_reg: BUCK9 {
570				regulator-name = "vdd_2.8v_ldo";
571				regulator-min-microvolt = <3000000>;
572				regulator-max-microvolt = <3750000>;
573				regulator-always-on;
574				regulator-boot-on;
575
576				regulator-state-mem {
577					regulator-off-in-suspend;
578				};
579			};
580
581			buck10_reg: BUCK10 {
582				regulator-name = "vdd_vmem";
583				regulator-min-microvolt = <2850000>;
584				regulator-max-microvolt = <2850000>;
585
586				regulator-state-mem {
587					regulator-off-in-suspend;
588				};
589			};
590		};
591	};
592};
593
594&mmc_2 {
595	status = "okay";
596	card-detect-delay = <200>;
597	samsung,dw-mshc-ciu-div = <3>;
598	samsung,dw-mshc-sdr-timing = <0 4>;
599	samsung,dw-mshc-ddr-timing = <0 2>;
600	pinctrl-names = "default";
601	pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_wp &sd2_bus1 &sd2_bus4>;
602	bus-width = <4>;
603	cap-sd-highspeed;
604	max-frequency = <200000000>;
605	vmmc-supply = <&ldo19_reg>;
606	vqmmc-supply = <&ldo13_reg>;
607	sd-uhs-sdr50;
608	sd-uhs-sdr104;
609	sd-uhs-ddr50;
610};
611
612&nocp_mem0_0 {
613	status = "okay";
614};
615
616&nocp_mem0_1 {
617	status = "okay";
618};
619
620&nocp_mem1_0 {
621	status = "okay";
622};
623
624&nocp_mem1_1 {
625	status = "okay";
626};
627
628&pinctrl_0 {
629	s2mps11_irq: s2mps11-irq {
630		samsung,pins = "gpx0-4";
631		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
632		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
633		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
634	};
635};
636
637&tmu_cpu0 {
638	vtmu-supply = <&ldo7_reg>;
639};
640
641&tmu_cpu1 {
642	vtmu-supply = <&ldo7_reg>;
643};
644
645&tmu_cpu2 {
646	vtmu-supply = <&ldo7_reg>;
647};
648
649&tmu_cpu3 {
650	vtmu-supply = <&ldo7_reg>;
651};
652
653&tmu_gpu {
654	vtmu-supply = <&ldo7_reg>;
655};
656
657&rtc {
658	status = "okay";
659	clocks = <&clock CLK_RTC>, <&s2mps11_osc S2MPS11_CLK_AP>;
660	clock-names = "rtc", "rtc_src";
661};
662
663&usbdrd_dwc3_0 {
664	dr_mode = "host";
665};
666
667/* usbdrd_dwc3_1 mode customized in each board */
668
669&usbdrd3_0 {
670	vdd33-supply = <&ldo9_reg>;
671	vdd10-supply = <&ldo11_reg>;
672};
673
674&usbdrd3_1 {
675	vdd33-supply = <&ldo9_reg>;
676	vdd10-supply = <&ldo11_reg>;
677};
678