1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * TOPEET's Exynos4412 based itop board device tree source
4  *
5  * Copyright (c) 2016 SUMOMO Computer Association
6  *			https://www.sumomo.mobi
7  *			Randy Li <ayaka@soulik.info>
8  *
9  * Device tree source file for TOPEET iTop Exynos 4412 SCP package core
10  * board which is based on Samsung's Exynos4412 SoC.
11  */
12 
13 #include <dt-bindings/clock/samsung,s2mps11.h>
14 #include <dt-bindings/gpio/gpio.h>
15 #include <dt-bindings/input/input.h>
16 #include "exynos4412.dtsi"
17 #include "exynos4412-ppmu-common.dtsi"
18 #include "exynos-mfc-reserved-memory.dtsi"
19 
20 / {
21 	memory@40000000 {
22 		device_type = "memory";
23 		reg = <0x40000000 0x40000000>;
24 	};
25 
26 	firmware@203f000 {
27 		compatible = "samsung,secure-firmware";
28 		reg = <0x0203F000 0x1000>;
29 	};
30 
31 	fixed-rate-clocks {
32 		xxti {
33 			compatible = "samsung,clock-xxti";
34 			clock-frequency = <0>;
35 		};
36 
37 		xusbxti {
38 			compatible = "samsung,clock-xusbxti";
39 			clock-frequency = <24000000>;
40 		};
41 	};
42 
43 	thermal-zones {
44 		cpu_thermal: cpu-thermal {
45 			cooling-maps {
46 				map0 {
47 				     /* Corresponds to 800MHz at freq_table */
48 				     cooling-device = <&cpu0 7 7>, <&cpu1 7 7>,
49 						      <&cpu2 7 7>, <&cpu3 7 7>;
50 				};
51 				map1 {
52 				     /* Corresponds to 200MHz at freq_table */
53 				     cooling-device = <&cpu0 13 13>,
54 						      <&cpu1 13 13>,
55 						      <&cpu2 13 13>,
56 						      <&cpu3 13 13>;
57 			       };
58 		       };
59 		};
60 	};
61 
62 	usb-hub {
63 		compatible = "smsc,usb3503a";
64 		reset-gpios = <&gpm2 4 GPIO_ACTIVE_LOW>;
65 		connect-gpios = <&gpm3 3 GPIO_ACTIVE_HIGH>;
66 		intn-gpios = <&gpx2 3 GPIO_ACTIVE_HIGH>;
67 		pinctrl-names = "default";
68 		pinctrl-0 = <&hsic_reset>;
69 	};
70 };
71 
72 &bus_dmc {
73 	devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
74 	vdd-supply = <&buck1_reg>;
75 	status = "okay";
76 };
77 
78 &bus_acp {
79 	devfreq = <&bus_dmc>;
80 	status = "okay";
81 };
82 
83 &bus_c2c {
84 	devfreq = <&bus_dmc>;
85 	status = "okay";
86 };
87 
88 &bus_leftbus {
89 	devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
90 	vdd-supply = <&buck3_reg>;
91 	status = "okay";
92 };
93 
94 &bus_rightbus {
95 	devfreq = <&bus_leftbus>;
96 	status = "okay";
97 };
98 
99 &bus_fsys {
100 	devfreq = <&bus_leftbus>;
101 	status = "okay";
102 };
103 
104 &bus_peri {
105 	devfreq = <&bus_leftbus>;
106 	status = "okay";
107 };
108 
109 &bus_mfc {
110 	devfreq = <&bus_leftbus>;
111 	status = "okay";
112 };
113 
114 &cpu0 {
115 	cpu0-supply = <&buck2_reg>;
116 };
117 
118 &gpu {
119 	mali-supply = <&buck4_reg>;
120 	status = "okay";
121 };
122 
123 &hsotg {
124 	vusb_d-supply = <&ldo15_reg>;
125 	vusb_a-supply = <&ldo12_reg>;
126 };
127 
128 &i2c_1 {
129 	#address-cells = <1>;
130 	#size-cells = <0>;
131 	samsung,i2c-sda-delay = <100>;
132 	samsung,i2c-max-bus-freq = <400000>;
133 	pinctrl-0 = <&i2c1_bus>;
134 	pinctrl-names = "default";
135 	status = "okay";
136 
137 	s5m8767: pmic@66 {
138 		compatible = "samsung,s5m8767-pmic";
139 		reg = <0x66>;
140 
141 		s5m8767,pmic-buck-default-dvs-idx = <3>;
142 
143 		s5m8767,pmic-buck-dvs-gpios = <&gpb 5 GPIO_ACTIVE_HIGH>,
144 						 <&gpb 6 GPIO_ACTIVE_HIGH>,
145 						 <&gpb 7 GPIO_ACTIVE_HIGH>;
146 
147 		s5m8767,pmic-buck-ds-gpios = <&gpm3 5 GPIO_ACTIVE_HIGH>,
148 						<&gpm3 6 GPIO_ACTIVE_HIGH>,
149 						<&gpm3 7 GPIO_ACTIVE_HIGH>;
150 
151 		/* VDD_ARM */
152 		s5m8767,pmic-buck2-dvs-voltage = <1356250>, <1300000>,
153 						 <1243750>, <1118750>,
154 						 <1068750>, <1012500>,
155 						 <956250>, <900000>;
156 		/* VDD_INT */
157 		s5m8767,pmic-buck3-dvs-voltage = <1000000>, <1000000>,
158 						 <925000>, <925000>,
159 						 <887500>, <887500>,
160 						 <850000>, <850000>;
161 		/* VDD_G3D */
162 		s5m8767,pmic-buck4-dvs-voltage = <1081250>, <1081250>,
163 						 <1025000>, <950000>,
164 						 <918750>, <900000>,
165 						 <875000>, <831250>;
166 		wakeup-source;
167 
168 		regulators {
169 			ldo1_reg: LDO1 {
170 				regulator-name = "VDD_ALIVE";
171 				regulator-min-microvolt = <1100000>;
172 				regulator-max-microvolt = <1100000>;
173 				regulator-always-on;
174 				regulator-boot-on;
175 				op_mode = <1>; /* Normal Mode */
176 			};
177 
178 			/* SCP uses 1.5v, POP uses 1.2v */
179 			ldo2_reg: LDO2 {
180 				regulator-name = "VDDQ_M12";
181 				regulator-min-microvolt = <1500000>;
182 				regulator-max-microvolt = <1500000>;
183 				regulator-always-on;
184 				regulator-boot-on;
185 				op_mode = <1>; /* Normal Mode */
186 			};
187 
188 			ldo3_reg: LDO3 {
189 				regulator-name = "VDDIOAP_18";
190 				regulator-min-microvolt = <1800000>;
191 				regulator-max-microvolt = <1800000>;
192 				regulator-always-on;
193 				op_mode = <1>; /* Normal Mode */
194 			};
195 
196 			ldo4_reg: LDO4 {
197 				regulator-name = "VDDQ_PRE";
198 				regulator-min-microvolt = <1800000>;
199 				regulator-max-microvolt = <1800000>;
200 				regulator-always-on;
201 				op_mode = <1>; /* Normal Mode */
202 			};
203 
204 			ldo5_reg: LDO5 {
205 				regulator-name = "VDD_LDO5";
206 				op_mode = <0>; /* Always off Mode */
207 			};
208 
209 			ldo6_reg: LDO6 {
210 				regulator-name = "VDD10_MPLL";
211 				regulator-min-microvolt = <1000000>;
212 				regulator-max-microvolt = <1000000>;
213 				regulator-always-on;
214 				op_mode = <1>; /* Normal Mode */
215 			};
216 
217 			ldo7_reg: LDO7 {
218 				regulator-name = "VDD10_XPLL";
219 				regulator-min-microvolt = <1000000>;
220 				regulator-max-microvolt = <1000000>;
221 				regulator-always-on;
222 				op_mode = <1>; /* Normal Mode */
223 			};
224 
225 			ldo8_reg: LDO8 {
226 				regulator-name = "VDD10_MIPI";
227 				regulator-min-microvolt = <1000000>;
228 				regulator-max-microvolt = <1000000>;
229 				op_mode = <1>; /* Normal Mode */
230 			};
231 
232 			ldo9_reg: LDO9 {
233 				regulator-name = "VDD33_LCD";
234 				regulator-min-microvolt = <3300000>;
235 				regulator-max-microvolt = <3300000>;
236 				op_mode = <1>; /* Normal Mode */
237 			};
238 
239 			ldo10_reg: LDO10 {
240 				regulator-name = "VDD18_MIPI";
241 				regulator-min-microvolt = <1800000>;
242 				regulator-max-microvolt = <1800000>;
243 				op_mode = <1>; /* Normal Mode */
244 			};
245 
246 			ldo11_reg: LDO11 {
247 				regulator-name = "VDD18_ABB1";
248 				regulator-min-microvolt = <1800000>;
249 				regulator-max-microvolt = <1800000>;
250 				regulator-always-on;
251 				op_mode = <1>; /* Normal Mode */
252 			};
253 
254 			ldo12_reg: LDO12 {
255 				regulator-name = "VDD33_UOTG";
256 				regulator-min-microvolt = <3300000>;
257 				regulator-max-microvolt = <3300000>;
258 				regulator-always-on;
259 				op_mode = <1>; /* Normal Mode */
260 			};
261 
262 			ldo13_reg: LDO13 {
263 				regulator-name = "VDDIOPERI_18";
264 				regulator-min-microvolt = <1800000>;
265 				regulator-max-microvolt = <1800000>;
266 				regulator-always-on;
267 				op_mode = <1>; /* Normal Mode */
268 			};
269 
270 			ldo14_reg: LDO14 {
271 				regulator-name = "VDD18_ABB02";
272 				regulator-min-microvolt = <1800000>;
273 				regulator-max-microvolt = <1800000>;
274 				regulator-always-on;
275 				op_mode = <1>; /* Normal Mode */
276 			};
277 
278 			ldo15_reg: LDO15 {
279 				regulator-name = "VDD10_USH";
280 				regulator-min-microvolt = <1000000>;
281 				regulator-max-microvolt = <1000000>;
282 				regulator-always-on;
283 				op_mode = <1>; /* Normal Mode */
284 			};
285 
286 			ldo16_reg: LDO16 {
287 				regulator-name = "VDD18_HSIC";
288 				regulator-min-microvolt = <1800000>;
289 				regulator-max-microvolt = <1800000>;
290 				regulator-always-on;
291 				op_mode = <1>; /* Normal Mode */
292 			};
293 
294 			ldo17_reg: LDO17 {
295 				regulator-name = "VDDIOAP_MMC012_28";
296 				regulator-min-microvolt = <2800000>;
297 				regulator-max-microvolt = <2800000>;
298 				op_mode = <1>; /* Normal Mode */
299 			};
300 
301 			/* Used by HSIC */
302 			ldo18_reg: LDO18 {
303 				regulator-name = "VDDIOPERI_28";
304 				regulator-min-microvolt = <3300000>;
305 				regulator-max-microvolt = <3300000>;
306 				regulator-always-on;
307 				op_mode = <1>; /* Normal Mode */
308 			};
309 
310 			ldo19_reg: LDO19 {
311 				regulator-name = "VDD_LDO19";
312 				op_mode = <0>; /* Always off Mode */
313 			};
314 
315 			ldo20_reg: LDO20 {
316 				regulator-name = "VDD28_CAM";
317 				regulator-min-microvolt = <1800000>;
318 				regulator-max-microvolt = <2800000>;
319 				op_mode = <1>; /* Normal Mode */
320 			};
321 
322 			ldo21_reg: LDO21 {
323 				regulator-name = "VDD28_AF";
324 				regulator-min-microvolt = <1800000>;
325 				regulator-max-microvolt = <2800000>;
326 				op_mode = <1>; /* Normal Mode */
327 			};
328 
329 			ldo22_reg: LDO22 {
330 				regulator-name = "VDDA28_2M";
331 				regulator-min-microvolt = <2800000>;
332 				regulator-max-microvolt = <2800000>;
333 				op_mode = <1>; /* Normal Mode */
334 			};
335 
336 			ldo23_reg: LDO23 {
337 				regulator-name = "VDD28_TF";
338 				regulator-min-microvolt = <2800000>;
339 				regulator-max-microvolt = <2800000>;
340 				op_mode = <1>; /* Normal Mode */
341 			};
342 
343 			ldo24_reg: LDO24 {
344 				regulator-name = "VDD33_A31";
345 				regulator-min-microvolt = <3300000>;
346 				regulator-max-microvolt = <3300000>;
347 				op_mode = <1>; /* Normal Mode */
348 			};
349 
350 			ldo25_reg: LDO25 {
351 				regulator-name = "VDD18_CAM";
352 				regulator-min-microvolt = <1800000>;
353 				regulator-max-microvolt = <1800000>;
354 				op_mode = <1>; /* Normal Mode */
355 			};
356 
357 			ldo26_reg: LDO26 {
358 				regulator-name = "VDD18_A31";
359 				regulator-min-microvolt = <1800000>;
360 				regulator-max-microvolt = <1800000>;
361 				op_mode = <1>; /* Normal Mode */
362 			};
363 
364 			ldo27_reg: LDO27 {
365 				regulator-name = "GPS_1V8";
366 				regulator-min-microvolt = <1800000>;
367 				regulator-max-microvolt = <1800000>;
368 				op_mode = <1>; /* Normal Mode */
369 			};
370 
371 			ldo28_reg: LDO28 {
372 				regulator-name = "DVDD12";
373 				regulator-min-microvolt = <1200000>;
374 				regulator-max-microvolt = <1200000>;
375 				op_mode = <1>; /* Normal Mode */
376 			};
377 
378 			buck1_reg: BUCK1 {
379 				regulator-name = "vdd_mif";
380 				regulator-min-microvolt = <850000>;
381 				regulator-max-microvolt = <1100000>;
382 				regulator-always-on;
383 				regulator-boot-on;
384 				op_mode = <1>; /* Normal Mode */
385 			};
386 
387 			buck2_reg: BUCK2 {
388 				regulator-name = "vdd_arm";
389 				regulator-min-microvolt = <850000>;
390 				regulator-max-microvolt = <1456250>;
391 				regulator-always-on;
392 				regulator-boot-on;
393 				op_mode = <1>; /* Normal Mode */
394 			};
395 
396 			buck3_reg: BUCK3 {
397 				regulator-name = "vdd_int";
398 				regulator-min-microvolt = <875000>;
399 				regulator-max-microvolt = <1200000>;
400 				regulator-always-on;
401 				regulator-boot-on;
402 				op_mode = <1>; /* Normal Mode */
403 			};
404 
405 			buck4_reg: BUCK4 {
406 				regulator-name = "vdd_g3d";
407 				regulator-min-microvolt = <750000>;
408 				regulator-max-microvolt = <1500000>;
409 				regulator-always-on;
410 				regulator-boot-on;
411 				op_mode = <1>; /* Normal Mode */
412 			};
413 
414 			buck5_reg: BUCK5 {
415 				regulator-name = "vdd_m12";
416 				regulator-min-microvolt = <750000>;
417 				regulator-max-microvolt = <1500000>;
418 				regulator-always-on;
419 				regulator-boot-on;
420 				op_mode = <1>; /* Normal Mode */
421 			};
422 
423 			buck6_reg: BUCK6 {
424 				regulator-name = "vdd12_5m";
425 				regulator-min-microvolt = <750000>;
426 				regulator-max-microvolt = <1500000>;
427 				regulator-always-on;
428 				regulator-boot-on;
429 				op_mode = <1>; /* Normal Mode */
430 			};
431 
432 			buck7_reg: BUCK7 {
433 				regulator-name = "pvdd_buck7";
434 				regulator-min-microvolt = <750000>;
435 				regulator-max-microvolt = <2000000>;
436 				regulator-boot-on;
437 				regulator-always-on;
438 				op_mode = <1>; /* Normal Mode */
439 			};
440 
441 			buck8_reg: BUCK8 {
442 				regulator-name = "pvdd_buck8";
443 				regulator-min-microvolt = <750000>;
444 				regulator-max-microvolt = <1500000>;
445 				regulator-boot-on;
446 				regulator-always-on;
447 				op_mode = <1>; /* Normal Mode */
448 			};
449 
450 			buck9_reg: BUCK9 {
451 				regulator-name = "vddf28_emmc";
452 				regulator-min-microvolt = <750000>;
453 				regulator-max-microvolt = <3000000>;
454 				op_mode = <1>; /* Normal Mode */
455 			};
456 		};
457 
458 		s5m8767_osc: clocks {
459 			compatible = "samsung,s5m8767-clk";
460 			#clock-cells = <1>;
461 			clock-output-names = "s5m8767_ap",
462 					"s5m8767_cp", "s5m8767_bt";
463 		};
464 
465 	};
466 };
467 
468 &mfc {
469 	status = "okay";
470 };
471 
472 &mshc_0 {
473 	pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
474 	pinctrl-names = "default";
475 	status = "okay";
476 	vmmc-supply = <&buck9_reg>;
477 	broken-cd;
478 	card-detect-delay = <200>;
479 	samsung,dw-mshc-ciu-div = <3>;
480 	samsung,dw-mshc-sdr-timing = <2 3>;
481 	samsung,dw-mshc-ddr-timing = <1 2>;
482 	bus-width = <8>;
483 	cap-mmc-highspeed;
484 };
485 
486 &pinctrl_1 {
487 	hsic_reset: hsic-reset {
488 		samsung,pins = "gpm2-4";
489 		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
490 		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
491 		samsung,pin-drv = <EXYNOS4_PIN_DRV_LV4>;
492 	};
493 };
494 
495 &rtc {
496 	status = "okay";
497 	clocks = <&clock CLK_RTC>, <&s5m8767_osc S2MPS11_CLK_AP>;
498 	clock-names = "rtc", "rtc_src";
499 };
500 
501 &tmu {
502 	vtmu-supply = <&ldo16_reg>;
503 	status = "okay";
504 };
505