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