1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Base DT for Samsung's family of tablets based on Exynos5420.
4 *
5 * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
6 *		http://www.samsung.com
7 * Copyright (c) 2022 Henrik Grimler
8 */
9
10/dts-v1/;
11#include "exynos5420.dtsi"
12#include "exynos5420-cpus.dtsi"
13#include <dt-bindings/input/input.h>
14#include <dt-bindings/gpio/gpio.h>
15#include <dt-bindings/clock/samsung,s2mps11.h>
16
17/ {
18	chassis-type = "tablet";
19
20	/*
21	 * To successfully boot the mainline kernel with the stock
22	 * bootloader (SBOOT), the tlb needs to be flushed after the
23	 * page table pointer has been updated in __common_mmu_cache_on.
24	 * The same hack is also needed to boot exynos4412-i9300 with
25	 * stock bootloader, and probably other Samsung devices of
26	 * similar age.  See
27	 * https://lore.kernel.org/all/1355276466-18295-1-git-send-email-arve@android.com
28	 * for more details.
29	 */
30
31	chosen {
32		stdout-path = "serial2:115200n8";
33	};
34
35	memory@20000000 {
36		device_type = "memory";
37		reg = <0x20000000 0xc0000000>;
38	};
39
40	firmware@2073000 {
41		compatible = "samsung,secure-firmware";
42		reg = <0x02073000 0x1000>;
43	};
44
45	fixed-rate-clocks {
46		oscclk {
47			compatible = "samsung,exynos5420-oscclk";
48			clock-frequency = <24000000>;
49		};
50	};
51
52	gpio-keys {
53		compatible = "gpio-keys";
54		pinctrl-names = "default";
55
56		key-power {
57			debounce-interval = <10>;
58			gpios = <&gpx2 2 GPIO_ACTIVE_LOW>;
59			label = "Power";
60			linux,code = <KEY_POWER>;
61			wakeup-source;
62		};
63
64		key-home {
65			debounce-interval = <10>;
66			gpios = <&gpx0 5 GPIO_ACTIVE_LOW>;
67			label = "Home";
68			linux,code = <KEY_HOME>;
69			wakeup-source;
70		};
71
72		key-volume-up {
73			debounce-interval = <10>;
74			gpios = <&gpx0 2 GPIO_ACTIVE_LOW>;
75			label = "Volume Up";
76			linux,code = <KEY_VOLUMEUP>;
77		};
78
79		key-volume-down {
80			debounce-interval = <10>;
81			gpios = <&gpx0 3 GPIO_ACTIVE_LOW>;
82			label = "Volume Down";
83			linux,code = <KEY_VOLUMEDOWN>;
84		};
85	};
86};
87
88&cci {
89	/* CCI is disabled in hardware */
90	status = "disabled";
91};
92
93&cpu0 {
94	cpu-supply = <&buck2_reg>;
95};
96
97&cpu4 {
98	cpu-supply = <&buck6_reg>;
99};
100
101&gpu {
102	status = "okay";
103	mali-supply = <&buck4_reg>;
104};
105
106&hsi2c_7 {
107	status = "okay";
108
109	pmic@66 {
110		compatible = "samsung,s2mps11-pmic";
111		reg = <0x66>;
112
113		interrupt-parent = <&gpx3>;
114		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
115		pinctrl-names = "default";
116		pinctrl-0 = <&s2mps11_irq>;
117
118		s2mps11_osc: clocks {
119			compatible = "samsung,s2mps11-clk";
120			#clock-cells = <1>;
121			clock-output-names = "s2mps11_ap", "s2mps11_cp",
122					     "s2mps11_bt";
123		};
124
125		regulators {
126			buck1_reg: BUCK1 {
127				regulator-name = "VDD_MIF_1V1";
128				regulator-min-microvolt = <700000>;
129				regulator-max-microvolt = <1300000>;
130				regulator-always-on;
131				regulator-boot-on;
132
133				regulator-state-mem {
134					regulator-off-in-suspend;
135				};
136			};
137
138			buck2_reg: BUCK2 {
139				regulator-name = "VDD_ARM_1V0";
140				regulator-min-microvolt = <800000>;
141				regulator-max-microvolt = <1500000>;
142				regulator-always-on;
143				regulator-boot-on;
144
145				regulator-state-mem {
146					regulator-off-in-suspend;
147				};
148			};
149
150			buck3_reg: BUCK3 {
151				regulator-name = "VDD_INT_1V0";
152				regulator-min-microvolt = <800000>;
153				regulator-max-microvolt = <1400000>;
154				regulator-always-on;
155				regulator-boot-on;
156
157				regulator-state-mem {
158					regulator-off-in-suspend;
159				};
160			};
161
162			buck4_reg: BUCK4 {
163				regulator-name = "VDD_G3D_1V0";
164				regulator-min-microvolt = <700000>;
165				regulator-max-microvolt = <1400000>;
166				regulator-always-on;
167				regulator-boot-on;
168
169				regulator-state-mem {
170					regulator-off-in-suspend;
171				};
172			};
173
174			buck5_reg: BUCK5 {
175				regulator-name = "VDD_MEM_1V2";
176				regulator-min-microvolt = <1200000>;
177				regulator-max-microvolt = <1200000>;
178				regulator-always-on;
179				regulator-boot-on;
180
181				regulator-state-mem {
182					regulator-off-in-suspend;
183				};
184
185			};
186
187			buck6_reg: BUCK6 {
188				regulator-name = "VDD_KFC_1V0";
189				regulator-min-microvolt = <800000>;
190				regulator-max-microvolt = <1500000>;
191				regulator-always-on;
192				regulator-boot-on;
193
194				regulator-state-mem {
195					regulator-off-in-suspend;
196				};
197			};
198
199			buck7_reg: BUCK7 {
200				regulator-name = "VIN_LLDO_1V4";
201				regulator-min-microvolt = <1200000>;
202				regulator-max-microvolt = <1500000>;
203				regulator-always-on;
204			};
205
206			buck8_reg: BUCK8 {
207				regulator-name = "VIN_MLDO_2V0";
208				regulator-min-microvolt = <1800000>;
209				regulator-max-microvolt = <2100000>;
210				regulator-always-on;
211			};
212
213			buck9_reg: BUCK9 {
214				regulator-name = "VIN_HLDO_3V5";
215				regulator-min-microvolt = <3000000>;
216				regulator-max-microvolt = <3500000>;
217				regulator-always-on;
218			};
219
220			buck10_reg: BUCK10 {
221				regulator-name = "VDD_CAM_ISP_1V0";
222				regulator-min-microvolt = <750000>;
223				regulator-max-microvolt = <3550000>;
224			};
225
226			ldo1_reg: LDO1 {
227				regulator-name = "VDD_ALIVE_1.0V";
228				regulator-min-microvolt = <1000000>;
229				regulator-max-microvolt = <1000000>;
230				regulator-always-on;
231			};
232
233			ldo2_reg: LDO2 {
234				regulator-name = "VDD_APIO_1V8";
235				regulator-min-microvolt = <1800000>;
236				regulator-max-microvolt = <1800000>;
237				regulator-always-on;
238				regulator-boot-on;
239
240				regulator-state-mem {
241					regulator-on-in-suspend;
242				};
243			};
244
245			ldo3_reg: LDO3 {
246				regulator-name = "VDD_APIO_MMC01_1V8";
247				regulator-min-microvolt = <1800000>;
248				regulator-max-microvolt = <1800000>;
249				regulator-always-on;
250
251				regulator-state-mem {
252					regulator-off-in-suspend;
253				};
254			};
255
256			ldo4_reg: LDO4 {
257				regulator-name = "VDD_ADC_1V8";
258				regulator-min-microvolt = <1800000>;
259				regulator-max-microvolt = <1800000>;
260				regulator-always-on;
261				regulator-boot-on;
262
263				regulator-state-mem {
264					regulator-on-in-suspend;
265				};
266			};
267
268			ldo5_reg: LDO5 {
269				/* Unused */
270				regulator-name = "VDD_LDO5";
271				regulator-min-microvolt = <1800000>;
272				regulator-max-microvolt = <1800000>;
273			};
274
275			ldo6_reg: LDO6 {
276				regulator-name = "VDD_MIPI_1V0";
277				regulator-min-microvolt = <1000000>;
278				regulator-max-microvolt = <1000000>;
279				regulator-always-on;
280				regulator-boot-on;
281
282				regulator-state-mem {
283					regulator-off-in-suspend;
284				};
285			};
286
287			ldo7_reg: LDO7 {
288				regulator-name = "VDD_MIPI_PLL_ABB1_18V";
289				regulator-min-microvolt = <1800000>;
290				regulator-max-microvolt = <1800000>;
291				regulator-always-on;
292				regulator-boot-on;
293
294				regulator-state-mem {
295					regulator-off-in-suspend;
296				};
297			};
298
299			ldo8_reg: LDO8 {
300				/* Unused */
301				regulator-name = "VDD_LDO8";
302				regulator-min-microvolt = <1800000>;
303				regulator-max-microvolt = <1800000>;
304			};
305
306			ldo9_reg: LDO9 {
307				regulator-name = "VDD_UOTG_3V0";
308				regulator-min-microvolt = <3000000>;
309				regulator-max-microvolt = <3000000>;
310				regulator-always-on;
311				regulator-boot-on;
312
313				regulator-state-mem {
314					regulator-on-in-suspend;
315				};
316			};
317
318			ldo10_reg: LDO10 {
319				regulator-name = "VDDQ_PRE_1V8";
320				regulator-min-microvolt = <1800000>;
321				regulator-max-microvolt = <1800000>;
322				regulator-always-on;
323				regulator-boot-on;
324
325				regulator-state-mem {
326					regulator-on-in-suspend;
327				};
328			};
329
330			ldo11_reg: LDO11 {
331				regulator-name = "VDD_HSIC_1V0";
332				regulator-min-microvolt = <1000000>;
333				regulator-max-microvolt = <1000000>;
334				regulator-always-on;
335				regulator-boot-on;
336
337				regulator-state-mem {
338					regulator-on-in-suspend;
339				};
340			};
341
342			ldo12_reg: LDO12 {
343				regulator-name = "VDD_HSIC_1V8";
344				regulator-min-microvolt = <1800000>;
345				regulator-max-microvolt = <1800000>;
346				regulator-always-on;
347				regulator-boot-on;
348
349				regulator-state-mem {
350					regulator-on-in-suspend;
351				};
352			};
353
354			ldo13_reg: LDO13 {
355				regulator-name = "VDD_APIO_MMC2_2V8";
356				regulator-min-microvolt = <1800000>;
357				regulator-max-microvolt = <2800000>;
358				regulator-boot-on;
359
360				regulator-state-mem {
361					regulator-off-in-suspend;
362				};
363			};
364
365			ldo14_reg: LDO14 {
366				regulator-name = "VDD_MOTOR_3V0";
367				regulator-min-microvolt = <3000000>;
368				regulator-max-microvolt = <3000000>;
369
370				regulator-state-mem {
371					regulator-off-in-suspend;
372				};
373			};
374
375			ldo15_reg: LDO15 {
376				regulator-name = "VDD_LDO15";
377				/*
378				 * LDO15 varies between devices and is
379				 * specified in the device dts
380				 */
381			};
382
383			ldo16_reg: LDO16 {
384				regulator-name = "VDD_AP_2V8";
385				regulator-min-microvolt = <2800000>;
386				regulator-max-microvolt = <2800000>;
387				regulator-always-on;
388				regulator-boot-on;
389
390				regulator-state-mem {
391					regulator-on-in-suspend;
392				};
393			};
394
395			ldo17_reg: LDO17 {
396				regulator-name = "VDD_LDO17";
397				/*
398				 * LDO17 varies between devices and is
399				 * specified in the device dts
400				 */
401			};
402
403			ldo18_reg: LDO18 {
404				/* Unused */
405				regulator-name = "VDD_LDO18";
406				regulator-min-microvolt = <1800000>;
407				regulator-max-microvolt = <1800000>;
408			};
409
410			ldo19_reg: LDO19 {
411				regulator-name = "VDD_VTF_2V8";
412				regulator-min-microvolt = <2800000>;
413				regulator-max-microvolt = <2800000>;
414
415				regulator-state-mem {
416					regulator-off-in-suspend;
417				};
418			};
419
420			ldo20_reg: LDO20 {
421				regulator-name = "VDD_CAM1_CAM_1V8";
422				regulator-min-microvolt = <1800000>;
423				regulator-max-microvolt = <1800000>;
424
425				regulator-state-mem {
426					regulator-off-in-suspend;
427				};
428			};
429
430			ldo21_reg: LDO21 {
431				regulator-name = "VDD_CAM_IO_1V8";
432				regulator-min-microvolt = <1800000>;
433				regulator-max-microvolt = <1800000>;
434
435				regulator-state-mem {
436					regulator-off-in-suspend;
437				};
438			};
439
440			ldo22_reg: LDO22 {
441				regulator-name = "VDD_CAM0_S_CORE_1V1";
442				regulator-min-microvolt = <1050000>;
443				regulator-max-microvolt = <1200000>;
444
445				regulator-state-mem {
446					regulator-off-in-suspend;
447				};
448			};
449
450			ldo23_reg: LDO23 {
451				regulator-name = "VDD_MIFS_1V1";
452				regulator-min-microvolt = <800000>;
453				regulator-max-microvolt = <1100000>;
454				regulator-always-on;
455
456				regulator-state-mem {
457					regulator-on-in-suspend;
458				};
459			};
460
461			ldo24_reg: LDO24 {
462				regulator-name = "VDD_TSP_3V3";
463				regulator-min-microvolt = <3300000>;
464				regulator-max-microvolt = <3300000>;
465
466				regulator-state-mem {
467					regulator-off-in-suspend;
468				};
469			};
470
471			ldo25_reg: LDO25 {
472				/* Unused */
473				regulator-name = "VDD_LDO25";
474				regulator-min-microvolt = <800000>;
475				regulator-max-microvolt = <3950000>;
476			};
477
478			ldo26_reg: LDO26 {
479				regulator-name = "VDD_CAM0_AF_2V8";
480				regulator-min-microvolt = <2800000>;
481				regulator-max-microvolt = <2800000>;
482
483				regulator-state-mem {
484					regulator-off-in-suspend;
485				};
486			};
487
488			ldo27_reg: LDO27 {
489				regulator-name = "VDD_G3DS_1V0";
490				regulator-min-microvolt = <800000>;
491				regulator-max-microvolt = <1000000>;
492				regulator-always-on;
493
494				regulator-state-mem {
495					regulator-on-in-suspend;
496				};
497			};
498
499			ldo28_reg: LDO28 {
500				regulator-name = "VDD_LDO28";
501				/*
502				 * LDO28 varies between devices and is
503				 * specified in the device dts
504				 */
505			};
506
507			ldo29_reg: LDO29 {
508				regulator-name = "VDD_LDO29";
509				/*
510				 * LDO29 varies between devices and is
511				 * specified in the device dts
512				 */
513			};
514
515			ldo30_reg: LDO30 {
516				regulator-name = "VDD_TOUCH_1V8";
517				regulator-min-microvolt = <1900000>;
518				regulator-max-microvolt = <1900000>;
519
520				regulator-state-mem {
521					regulator-off-in-suspend;
522				};
523			};
524
525			ldo31_reg: LDO31 {
526				regulator-name = "VDD_LDO31";
527				/*
528				 * LDO31 varies between devices and is
529				 * specified in the device dts
530				 */
531			};
532
533			ldo32_reg: LDO32 {
534				regulator-name = "VDD_LDO32";
535				/*
536				 * LDO32 varies between devices and is
537				 * specified in the device dts
538				 */
539			};
540
541			ldo33_reg: LDO33 {
542				regulator-name = "VDD_MHL_1V8";
543				regulator-min-microvolt = <1800000>;
544				regulator-max-microvolt = <1800000>;
545
546				regulator-state-mem {
547					regulator-off-in-suspend;
548				};
549			};
550
551			ldo34_reg: LDO34 {
552				regulator-name = "VDD_MHL_3V3";
553				regulator-min-microvolt = <3300000>;
554				regulator-max-microvolt = <3300000>;
555
556				regulator-state-mem {
557					regulator-off-in-suspend;
558				};
559			};
560
561			ldo35_reg: LDO35 {
562				regulator-name = "VDD_SIL_1V2";
563				regulator-min-microvolt = <1200000>;
564				regulator-max-microvolt = <1200000>;
565
566				regulator-state-mem {
567					regulator-off-in-suspend;
568				};
569			};
570
571			ldo36_reg: LDO36 {
572				/* Unused */
573				regulator-name = "VDD_LDO36";
574				regulator-min-microvolt = <800000>;
575				regulator-max-microvolt = <3950000>;
576			};
577
578			ldo37_reg: LDO37 {
579				/* Unused */
580				regulator-name = "VDD_LDO37";
581				regulator-min-microvolt = <800000>;
582				regulator-max-microvolt = <3950000>;
583			};
584
585			ldo38_reg: LDO38 {
586				regulator-name = "VDD_KEY_LED_3V3";
587				regulator-min-microvolt = <2500000>;
588				regulator-max-microvolt = <3300000>;
589
590				regulator-state-mem {
591					regulator-off-in-suspend;
592				};
593			};
594		};
595	};
596};
597
598&mixer {
599	status = "okay";
600};
601
602/* Internal storage */
603&mmc_0 {
604	status = "okay";
605	bus-width = <8>;
606	cap-mmc-highspeed;
607	card-detect-delay = <200>;
608	mmc-hs200-1_8v;
609	non-removable;
610	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>;
611	pinctrl-names = "default";
612	samsung,dw-mshc-ciu-div = <3>;
613	samsung,dw-mshc-ddr-timing = <0 2>;
614	samsung,dw-mshc-sdr-timing = <0 4>;
615	vqmmc-supply = <&ldo3_reg>;
616};
617
618/* External sdcard */
619&mmc_2 {
620	status = "okay";
621	bus-width = <4>;
622	cap-sd-highspeed;
623	card-detect-delay = <200>;
624	cd-gpios = <&gpx2 4 GPIO_ACTIVE_LOW>;
625	pinctrl-0 = <&sd2_clk &sd2_cmd &mmc2_cd &sd2_bus1 &sd2_bus4>;
626	pinctrl-names = "default";
627	samsung,dw-mshc-ciu-div = <3>;
628	samsung,dw-mshc-ddr-timing = <0 2>;
629	samsung,dw-mshc-sdr-timing = <0 4>;
630	sd-uhs-sdr50;
631	vmmc-supply = <&ldo19_reg>;
632	vqmmc-supply = <&ldo13_reg>;
633};
634
635&pinctrl_0 {
636	mmc2_cd: mmc2-cd-pins {
637		samsung,pins = "gpx2-4";
638		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
639	};
640
641	s2mps11_irq: s2mps11-irq-pins {
642		samsung,pins = "gpx3-0";
643		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
644		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
645		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
646	};
647};
648
649&rtc {
650	status = "okay";
651	clocks = <&clock CLK_RTC>, <&s2mps11_osc S2MPS11_CLK_AP>;
652	clock-names = "rtc", "rtc_src";
653};
654
655&tmu_cpu0 {
656	vtmu-supply = <&ldo10_reg>;
657};
658
659&tmu_cpu1 {
660	vtmu-supply = <&ldo10_reg>;
661};
662
663&tmu_cpu2 {
664	vtmu-supply = <&ldo10_reg>;
665};
666
667&tmu_cpu3 {
668	vtmu-supply = <&ldo10_reg>;
669};
670
671&tmu_gpu {
672	vtmu-supply = <&ldo10_reg>;
673};
674
675&usbdrd_dwc3_0 {
676	dr_mode = "peripheral";
677};
678
679&usbdrd_dwc3_1 {
680	dr_mode = "peripheral";
681};
682
683&usbdrd3_0 {
684	vdd33-supply = <&ldo9_reg>;
685	vdd10-supply = <&ldo11_reg>;
686};
687
688&usbdrd3_1 {
689	vdd33-supply = <&ldo9_reg>;
690	vdd10-supply = <&ldo11_reg>;
691};
692