1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Samsung Galaxy S5 (SM-G900H) device-tree source
4 *
5 * Copyright (c) 2023 Markuss Broks
6 */
7
8/dts-v1/;
9#include <dt-bindings/clock/samsung,s2mps11.h>
10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/interrupt-controller/irq.h>
12#include "exynos5800.dtsi"
13#include "exynos5422-cpus.dtsi"
14
15/ {
16	model = "Samsung Galaxy S5 (SM-G900H)";
17	compatible = "samsung,k3g", "samsung,exynos5800", \
18		     "samsung,exynos5";
19
20	chassis-type = "handset";
21
22	aliases {
23		mmc0 = &mmc_0;
24	};
25
26	memory@20000000 {
27		device_type = "memory";
28		reg = <0x20000000 0x80000000>; /* 2 GiB */
29	};
30
31	fixed-rate-clocks {
32		oscclk {
33			compatible = "samsung,exynos5420-oscclk";
34			clock-frequency = <24000000>;
35		};
36	};
37
38	firmware@2073000 {
39		compatible = "samsung,secure-firmware";
40		reg = <0x02073000 0x1000>;
41	};
42
43	tsp_vdd: regulator-tsp-vdd-en {
44		compatible = "regulator-fixed";
45		regulator-name = "tsp_vdd_en";
46		regulator-min-microvolt = <3300000>;
47		regulator-max-microvolt = <3300000>;
48		gpio = <&gpy3 5 GPIO_ACTIVE_HIGH>;
49		enable-active-high;
50	};
51};
52
53&cpu0 {
54	cpu-supply = <&buck2_reg>;
55};
56
57&cpu4 {
58	cpu-supply = <&buck6_reg>;
59};
60
61&gpu {
62	status = "okay";
63	mali-supply = <&buck4_reg>;
64};
65
66&hsi2c_7 {
67	status = "okay";
68
69	pmic@66 {
70		compatible = "samsung,s2mps11-pmic";
71		reg = <0x66>;
72
73		interrupt-parent = <&gpx0>;
74		interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
75		wakeup-source;
76
77		pinctrl-names = "default";
78		pinctrl-0 = <&s2mps11_irq>;
79
80		s2mps11_osc: clocks {
81			compatible = "samsung,s2mps11-clk";
82			#clock-cells = <1>;
83			clock-output-names = "s2mps11_ap",
84					     "s2mps11_cp", "s2mps11_bt";
85		};
86
87		regulators {
88			buck1_reg: BUCK1 {
89				regulator-name = "VDD_MIF";
90				regulator-min-microvolt = <700000>;
91				regulator-max-microvolt = <1300000>;
92				regulator-always-on;
93				regulator-boot-on;
94
95				regulator-state-mem {
96					regulator-off-in-suspend;
97				};
98			};
99
100			buck2_reg: BUCK2 {
101				regulator-name = "VDD_ARM";
102				regulator-min-microvolt = <800000>;
103				regulator-max-microvolt = <1500000>;
104				regulator-always-on;
105				regulator-boot-on;
106
107				regulator-state-mem {
108					regulator-off-in-suspend;
109				};
110			};
111
112			buck3_reg: BUCK3 {
113				regulator-name = "VDD_INT";
114				regulator-min-microvolt = <800000>;
115				regulator-max-microvolt = <1400000>;
116				regulator-always-on;
117				regulator-boot-on;
118
119				regulator-state-mem {
120					regulator-off-in-suspend;
121				};
122			};
123
124			buck4_reg: BUCK4 {
125				regulator-name = "VDD_G3D";
126				regulator-min-microvolt = <700000>;
127				regulator-max-microvolt = <1400000>;
128				regulator-always-on;
129				regulator-boot-on;
130
131				regulator-state-mem {
132					regulator-off-in-suspend;
133				};
134			};
135
136			buck5_reg: BUCK5 {
137				regulator-name = "VDD_MEM";
138				regulator-min-microvolt = <1200000>;
139				regulator-max-microvolt = <1200000>;
140				regulator-always-on;
141				regulator-boot-on;
142
143				regulator-state-mem {
144					regulator-off-in-suspend;
145				};
146			};
147
148			buck6_reg: BUCK6 {
149				regulator-name = "VDD_KFC";
150				regulator-min-microvolt = <800000>;
151				regulator-max-microvolt = <1500000>;
152				regulator-always-on;
153				regulator-boot-on;
154
155				regulator-state-mem {
156					regulator-off-in-suspend;
157				};
158			};
159
160			buck7_reg: BUCK7 {
161				regulator-name = "VIN_LLDO";
162				regulator-min-microvolt = <1200000>;
163				regulator-max-microvolt = <1500000>;
164				regulator-always-on;
165			};
166
167			buck8_reg: BUCK8 {
168				regulator-name = "VIN_MLDO";
169				regulator-min-microvolt = <1800000>;
170				regulator-max-microvolt = <2100000>;
171				regulator-always-on;
172			};
173
174			buck9_reg: BUCK9 {
175				regulator-name = "VIN_HLDO";
176				regulator-min-microvolt = <3000000>;
177				regulator-max-microvolt = <3500000>;
178				regulator-always-on;
179			};
180
181			buck10_reg: BUCK10 {
182				regulator-name = "VDD_CAM_ISP";
183				regulator-min-microvolt = <750000>;
184				regulator-max-microvolt = <3550000>;
185			};
186
187			ldo1_reg: LDO1 {
188				regulator-name = "VDD_ALIVE";
189				regulator-min-microvolt = <1000000>;
190				regulator-max-microvolt = <1000000>;
191				regulator-always-on;
192			};
193
194			ldo2_reg: LDO2 {
195				regulator-name = "VDD_APIO";
196				regulator-min-microvolt = <1800000>;
197				regulator-max-microvolt = <1800000>;
198				regulator-always-on;
199				regulator-boot-on;
200
201				regulator-state-mem {
202					regulator-on-in-suspend;
203				};
204			};
205
206			ldo3_reg: LDO3 {
207				regulator-name = "VDD_APIO_MMC01";
208				regulator-min-microvolt = <1800000>;
209				regulator-max-microvolt = <1800000>;
210				regulator-always-on;
211
212				regulator-state-mem {
213					regulator-off-in-suspend;
214				};
215			};
216
217			ldo4_reg: LDO4 {
218				regulator-name = "VDD_ADC";
219				regulator-min-microvolt = <1800000>;
220				regulator-max-microvolt = <1800000>;
221				regulator-always-on;
222				regulator-boot-on;
223
224				regulator-state-mem {
225					regulator-on-in-suspend;
226				};
227			};
228
229			ldo5_reg: LDO5 {
230				regulator-name = "VDD_HRM_1V8";
231				regulator-min-microvolt = <1800000>;
232				regulator-max-microvolt = <1800000>;
233			};
234
235			ldo6_reg: LDO6 {
236				regulator-name = "VDD_MIPI";
237				regulator-min-microvolt = <1000000>;
238				regulator-max-microvolt = <1000000>;
239				regulator-always-on;
240				regulator-boot-on;
241
242				regulator-state-mem {
243					regulator-off-in-suspend;
244				};
245			};
246
247			ldo7_reg: LDO7 {
248				regulator-name = "VDD_MIPI_PLL_ABB1";
249				regulator-min-microvolt = <1800000>;
250				regulator-max-microvolt = <1800000>;
251				regulator-always-on;
252				regulator-boot-on;
253
254				regulator-state-mem {
255					regulator-off-in-suspend;
256				};
257			};
258
259			ldo8_reg: LDO8 {
260				regulator-name = "VDD_VTF";
261				regulator-min-microvolt = <1800000>;
262				regulator-max-microvolt = <1800000>;
263				regulator-always-on;
264
265				regulator-state-mem {
266					regulator-on-in-suspend;
267				};
268			};
269
270			ldo9_reg: LDO9 {
271				regulator-name = "VDD_UOTG";
272				regulator-min-microvolt = <3000000>;
273				regulator-max-microvolt = <3000000>;
274				regulator-always-on;
275				regulator-boot-on;
276
277				regulator-state-mem {
278					regulator-on-in-suspend;
279				};
280			};
281
282			ldo10_reg: LDO10 {
283				regulator-name = "VDDQ_PRE";
284				regulator-min-microvolt = <1800000>;
285				regulator-max-microvolt = <1800000>;
286				regulator-always-on;
287				regulator-boot-on;
288
289				regulator-state-mem {
290					regulator-on-in-suspend;
291				};
292			};
293
294			ldo11_reg: LDO11 {
295				regulator-name = "VDD_HSIC_1V0";
296				regulator-min-microvolt = <1000000>;
297				regulator-max-microvolt = <1000000>;
298				regulator-always-on;
299				regulator-boot-on;
300
301				regulator-state-mem {
302					regulator-on-in-suspend;
303				};
304			};
305
306			ldo12_reg: LDO12 {
307				regulator-name = "VDD_HSIC_1V8";
308				regulator-min-microvolt = <1800000>;
309				regulator-max-microvolt = <1800000>;
310				regulator-always-on;
311				regulator-boot-on;
312
313				regulator-state-mem {
314					regulator-on-in-suspend;
315				};
316			};
317
318			ldo13_reg: LDO13 {
319				regulator-name = "VDD_APIO_MMC2";
320				regulator-min-microvolt = <1800000>;
321				regulator-max-microvolt = <2800000>;
322				regulator-boot-on;
323
324				regulator-state-mem {
325					regulator-off-in-suspend;
326				};
327			};
328
329			ldo14_reg: LDO14 {
330				regulator-name = "VDD_MOTOR";
331				regulator-min-microvolt = <3000000>;
332				regulator-max-microvolt = <3000000>;
333
334				regulator-state-mem {
335					regulator-off-in-suspend;
336				};
337			};
338
339			ldo15_reg: LDO15 {
340				regulator-name = "VDD_CAM1_2V8";
341				regulator-min-microvolt = <2800000>;
342				regulator-max-microvolt = <2800000>;
343
344				regulator-state-mem {
345					regulator-off-in-suspend;
346				};
347			};
348
349			ldo16_reg: LDO16 {
350				regulator-name = "VDD_AP";
351				regulator-min-microvolt = <2800000>;
352				regulator-max-microvolt = <2800000>;
353				regulator-always-on;
354				regulator-boot-on;
355
356				regulator-state-mem {
357					regulator-on-in-suspend;
358				};
359			};
360
361			ldo17_reg: LDO17 {
362				/* Unused */
363				regulator-name = "VDD_LDO17";
364			};
365
366			ldo18_reg: LDO18 {
367				regulator-name = "VDD_CODEC";
368				regulator-min-microvolt = <1800000>;
369				regulator-max-microvolt = <1800000>;
370				regulator-always-on;
371
372				regulator-state-mem {
373					regulator-on-in-suspend;
374				};
375			};
376
377			ldo19_reg: LDO19 {
378				regulator-name = "VDD_VMMC";
379				regulator-min-microvolt = <2800000>;
380				regulator-max-microvolt = <2800000>;
381
382				regulator-state-mem {
383					regulator-on-in-suspend;
384				};
385			};
386
387			ldo20_reg: LDO20 {
388				regulator-name = "VDD_CAM1_1V8";
389				regulator-min-microvolt = <1800000>;
390				regulator-max-microvolt = <1800000>;
391
392				regulator-state-mem {
393					regulator-off-in-suspend;
394				};
395			};
396
397			ldo21_reg: LDO21 {
398				regulator-name = "VDD_CAM_IO";
399				regulator-min-microvolt = <1800000>;
400				regulator-max-microvolt = <1800000>;
401
402				regulator-state-mem {
403					regulator-off-in-suspend;
404				};
405			};
406
407			ldo22_reg: LDO22 {
408				regulator-name = "VDD_CAM0_S_CORE";
409				regulator-min-microvolt = <1200000>;
410				regulator-max-microvolt = <1200000>;
411
412				regulator-state-mem {
413					regulator-off-in-suspend;
414				};
415			};
416
417			ldo23_reg: LDO23 {
418				regulator-name = "VDD_MIFS";
419				regulator-min-microvolt = <800000>;
420				regulator-max-microvolt = <1100000>;
421				regulator-always-on;
422
423				regulator-state-mem {
424					regulator-on-in-suspend;
425				};
426			};
427
428			ldo24_reg: LDO24 {
429				regulator-name = "VDD_MHL_3V3";
430				regulator-min-microvolt = <3300000>;
431				regulator-max-microvolt = <3300000>;
432
433				regulator-state-mem {
434					regulator-off-in-suspend;
435				};
436			};
437
438			ldo25_reg: LDO25 {
439				regulator-name = "VDD_LCD_1V8";
440				regulator-min-microvolt = <1800000>;
441				regulator-max-microvolt = <1800000>;
442
443				regulator-state-mem {
444					regulator-off-in-suspend;
445				};
446			};
447
448			ldo26_reg: LDO26 {
449				regulator-name = "VDD_CAM0_AF";
450				regulator-min-microvolt = <2800000>;
451				regulator-max-microvolt = <2800000>;
452
453				regulator-state-mem {
454					regulator-off-in-suspend;
455				};
456			};
457
458			ldo27_reg: LDO27 {
459				regulator-name = "VDD_G3DS";
460				regulator-min-microvolt = <800000>;
461				regulator-max-microvolt = <1100000>;
462				regulator-always-on;
463
464				regulator-state-mem {
465					regulator-on-in-suspend;
466				};
467			};
468
469			ldo28_reg: LDO28 {
470				regulator-name = "VDD_LCD_3V0";
471				regulator-min-microvolt = <3000000>;
472				regulator-max-microvolt = <3000000>;
473
474				regulator-state-mem {
475					regulator-off-in-suspend;
476				};
477			};
478
479			ldo29_reg: LDO29 {
480				/* Unused */
481				regulator-name = "VDD_LDO29";
482			};
483
484			ldo30_reg: LDO30 {
485				regulator-name = "VDD_TOUCH";
486				regulator-min-microvolt = <1800000>;
487				regulator-max-microvolt = <1800000>;
488
489				regulator-state-mem {
490					regulator-off-in-suspend;
491				};
492			};
493
494			ldo31_reg: LDO31 {
495				regulator-name = "VDD_COMP";
496				regulator-min-microvolt = <1800000>;
497				regulator-max-microvolt = <1800000>;
498
499				regulator-state-mem {
500					regulator-off-in-suspend;
501				};
502			};
503
504			ldo32_reg: LDO32 {
505				regulator-name = "VDD_TOUCH_IO";
506				regulator-min-microvolt = <1800000>;
507				regulator-max-microvolt = <1800000>;
508
509				regulator-state-mem {
510					regulator-off-in-suspend;
511				};
512			};
513
514			ldo33_reg: LDO33 {
515				regulator-name = "VDD_MHL_1V8";
516				regulator-min-microvolt = <1800000>;
517				regulator-max-microvolt = <1800000>;
518
519				regulator-state-mem {
520					regulator-off-in-suspend;
521				};
522			};
523
524			ldo34_reg: LDO34 {
525				regulator-name = "VDD_HRM_3V3";
526				regulator-min-microvolt = <3300000>;
527				regulator-max-microvolt = <3300000>;
528
529				regulator-state-mem {
530					regulator-off-in-suspend;
531				};
532			};
533
534			ldo35_reg: LDO35 {
535				regulator-name = "VDD_SIL";
536				regulator-min-microvolt = <1200000>;
537				regulator-max-microvolt = <1200000>;
538
539				regulator-state-mem {
540					regulator-off-in-suspend;
541				};
542			};
543
544			ldo36_reg: LDO36 {
545				/* Unused */
546				regulator-name = "VDD_LDO36";
547				regulator-min-microvolt = <800000>;
548				regulator-max-microvolt = <3950000>;
549			};
550
551			ldo37_reg: LDO37 {
552				/* Unused */
553				regulator-name = "VDD_LDO37";
554				regulator-min-microvolt = <800000>;
555				regulator-max-microvolt = <3950000>;
556			};
557
558			ldo38_reg: LDO38 {
559				regulator-name = "VDD_KEY_LED";
560				regulator-min-microvolt = <3300000>;
561				regulator-max-microvolt = <3300000>;
562
563				regulator-state-mem {
564					regulator-off-in-suspend;
565				};
566			};
567		};
568	};
569};
570
571&i2c_0 {
572	status = "okay";
573
574	touchscreen@20 {
575		compatible = "syna,rmi4-i2c";
576		reg = <0x20>;
577		interrupt-parent = <&gpx1>;
578		interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
579		vio-supply = <&ldo32_reg>;
580		vdd-supply = <&tsp_vdd>;
581		syna,startup-delay-ms = <100>;
582
583		pinctrl-0 = <&touch_irq>;
584		pinctrl-names = "default";
585
586		#address-cells = <1>;
587		#size-cells = <0>;
588
589		rmi4-f01@1 {
590			reg = <0x1>;
591			syna,nosleep-mode = <1>;
592		};
593
594		rmi4-f12@12 {
595			reg = <0x12>;
596			syna,sensor-type = <1>;
597		};
598	};
599};
600
601/* eMMC flash */
602&mmc_0 {
603	status = "okay";
604	mmc-ddr-1_8v;
605	mmc-hs200-1_8v;
606	cap-mmc-highspeed;
607	non-removable;
608	clock-frequency = <400000000>;
609	samsung,dw-mshc-ciu-div = <3>;
610	samsung,dw-mshc-sdr-timing = <0 4>;
611	samsung,dw-mshc-ddr-timing = <0 2>;
612	samsung,dw-mshc-hs400-timing = <0 2>;
613	samsung,read-strobe-delay = <90>;
614	pinctrl-names = "default";
615	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_rclk>;
616	bus-width = <8>;
617};
618
619&pinctrl_0 {
620	s2mps11_irq: s2mps11-irq-pins {
621		samsung,pins = "gpx0-7";
622		samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
623		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
624		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
625	};
626
627	touch_irq: touch-irq-pins {
628		samsung,pins = "gpx1-6";
629		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
630	};
631};
632
633&rtc {
634	status = "okay";
635	clocks = <&clock CLK_RTC>, <&s2mps11_osc S2MPS11_CLK_AP>;
636	clock-names = "rtc", "rtc_src";
637};
638
639&timer {
640	arm,cpu-registers-not-fw-configured;
641};
642
643&tmu_cpu0 {
644	vtmu-supply = <&ldo10_reg>;
645};
646
647&tmu_cpu1 {
648	vtmu-supply = <&ldo10_reg>;
649};
650
651&tmu_cpu2 {
652	vtmu-supply = <&ldo10_reg>;
653};
654
655&tmu_cpu3 {
656	vtmu-supply = <&ldo10_reg>;
657};
658
659&tmu_gpu {
660	vtmu-supply = <&ldo10_reg>;
661};
662
663&usbdrd_dwc3_0 {
664	dr_mode = "peripheral";
665};
666
667&usbdrd_dwc3_1 {
668	dr_mode = "peripheral";
669};
670
671&usbdrd3_0 {
672	vdd33-supply = <&ldo9_reg>;
673	vdd10-supply = <&ldo11_reg>;
674};
675
676&usbdrd3_1 {
677	vdd33-supply = <&ldo9_reg>;
678	vdd10-supply = <&ldo11_reg>;
679};
680