1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Hardkernel Odroid XU3/XU3-Lite/XU4 boards common device tree source
4 *
5 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
6 *		http://www.samsung.com
7 * Copyright (c) 2014 Collabora Ltd.
8 * Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com>
9 *                    Anand Moon <linux.amoon@gmail.com>
10 */
11
12#include <dt-bindings/input/input.h>
13#include "exynos5422-odroid-core.dtsi"
14
15/ {
16	gpio-keys {
17		compatible = "gpio-keys";
18		pinctrl-names = "default";
19		pinctrl-0 = <&power_key>;
20
21		power-key {
22			/*
23			 * The power button (SW2) is connected to the PWRON
24			 * pin (active high) of the S2MPS11 PMIC, which acts
25			 * as a 16ms debouce filter and signal inverter with
26			 * output on ONOB pin (active low). ONOB PMIC pin is
27			 * then connected to XEINT3 SoC pin.
28			 */
29			gpios = <&gpx0 3 GPIO_ACTIVE_LOW>;
30			linux,code = <KEY_POWER>;
31			label = "power key";
32			debounce-interval = <0>;
33			wakeup-source;
34		};
35	};
36
37	emmc_pwrseq: pwrseq {
38		pinctrl-0 = <&emmc_nrst_pin>;
39		pinctrl-names = "default";
40		compatible = "mmc-pwrseq-emmc";
41		reset-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>;
42	};
43
44	fan0: pwm-fan {
45		compatible = "pwm-fan";
46		pwms = <&pwm 0 20972 0>;
47		#cooling-cells = <2>;
48		cooling-levels = <0 130 170 230>;
49	};
50
51	thermal-zones {
52		cpu0_thermal: cpu0-thermal {
53			thermal-sensors = <&tmu_cpu0 0>;
54			polling-delay-passive = <250>;
55			polling-delay = <0>;
56			trips {
57				cpu0_alert0: cpu-alert-0 {
58					temperature = <50000>; /* millicelsius */
59					hysteresis = <5000>; /* millicelsius */
60					type = "active";
61				};
62				cpu0_alert1: cpu-alert-1 {
63					temperature = <60000>; /* millicelsius */
64					hysteresis = <5000>; /* millicelsius */
65					type = "active";
66				};
67				cpu0_alert2: cpu-alert-2 {
68					temperature = <70000>; /* millicelsius */
69					hysteresis = <5000>; /* millicelsius */
70					type = "active";
71				};
72				cpu0_crit0: cpu-crit-0 {
73					temperature = <120000>; /* millicelsius */
74					hysteresis = <0>; /* millicelsius */
75					type = "critical";
76				};
77				/*
78				 * Exynos542x supports only 4 trip-points
79				 * so for these polling mode is required.
80				 * Start polling at temperature level of last
81				 * interrupt-driven trip: cpu0_alert2
82				 */
83				cpu0_alert3: cpu-alert-3 {
84					temperature = <70000>; /* millicelsius */
85					hysteresis = <10000>; /* millicelsius */
86					type = "passive";
87				};
88				cpu0_alert4: cpu-alert-4 {
89					temperature = <85000>; /* millicelsius */
90					hysteresis = <10000>; /* millicelsius */
91					type = "passive";
92				};
93			};
94			cooling-maps {
95				map0 {
96					trip = <&cpu0_alert0>;
97					cooling-device = <&fan0 0 1>;
98				};
99				map1 {
100					trip = <&cpu0_alert1>;
101					cooling-device = <&fan0 1 2>;
102				};
103				map2 {
104					trip = <&cpu0_alert2>;
105					cooling-device = <&fan0 2 3>;
106				};
107				/*
108				 * When reaching cpu0_alert3, reduce CPU
109				 * by 2 steps. On Exynos5422/5800 that would
110				 * (usually) be: 1800 MHz and 1200 MHz.
111				 */
112				map3 {
113					trip = <&cpu0_alert3>;
114					cooling-device = <&cpu0 0 2>,
115							 <&cpu1 0 2>,
116							 <&cpu2 0 2>,
117							 <&cpu3 0 2>,
118							 <&cpu4 0 2>,
119							 <&cpu5 0 2>,
120							 <&cpu6 0 2>,
121							 <&cpu7 0 2>;
122				};
123				/*
124				 * When reaching cpu0_alert4, reduce CPU
125				 * further, down to 600 MHz (14 steps for big,
126				 * 8 steps for LITTLE).
127				 */
128				cpu0_cooling_map4: map4 {
129					trip = <&cpu0_alert4>;
130					cooling-device = <&cpu0 3 8>,
131							 <&cpu1 3 8>,
132							 <&cpu2 3 8>,
133							 <&cpu3 3 8>,
134							 <&cpu4 3 14>,
135							 <&cpu5 3 14>,
136							 <&cpu6 3 14>,
137							 <&cpu7 3 14>;
138				};
139			};
140		};
141		cpu1_thermal: cpu1-thermal {
142			thermal-sensors = <&tmu_cpu1 0>;
143			polling-delay-passive = <250>;
144			polling-delay = <0>;
145			trips {
146				cpu1_alert0: cpu-alert-0 {
147					temperature = <50000>;
148					hysteresis = <5000>;
149					type = "active";
150				};
151				cpu1_alert1: cpu-alert-1 {
152					temperature = <60000>;
153					hysteresis = <5000>;
154					type = "active";
155				};
156				cpu1_alert2: cpu-alert-2 {
157					temperature = <70000>;
158					hysteresis = <5000>;
159					type = "active";
160				};
161				cpu1_crit0: cpu-crit-0 {
162					temperature = <120000>;
163					hysteresis = <0>;
164					type = "critical";
165				};
166				cpu1_alert3: cpu-alert-3 {
167					temperature = <70000>;
168					hysteresis = <10000>;
169					type = "passive";
170				};
171				cpu1_alert4: cpu-alert-4 {
172					temperature = <85000>;
173					hysteresis = <10000>;
174					type = "passive";
175				};
176			};
177			cooling-maps {
178				map0 {
179					trip = <&cpu1_alert0>;
180					cooling-device = <&fan0 0 1>;
181				};
182				map1 {
183					trip = <&cpu1_alert1>;
184					cooling-device = <&fan0 1 2>;
185				};
186				map2 {
187					trip = <&cpu1_alert2>;
188					cooling-device = <&fan0 2 3>;
189				};
190				map3 {
191					trip = <&cpu1_alert3>;
192					cooling-device = <&cpu0 0 2>,
193							 <&cpu1 0 2>,
194							 <&cpu2 0 2>,
195							 <&cpu3 0 2>,
196							 <&cpu4 0 2>,
197							 <&cpu5 0 2>,
198							 <&cpu6 0 2>,
199							 <&cpu7 0 2>;
200				};
201				cpu1_cooling_map4: map4 {
202					trip = <&cpu1_alert4>;
203					cooling-device = <&cpu0 3 8>,
204							 <&cpu1 3 8>,
205							 <&cpu2 3 8>,
206							 <&cpu3 3 8>,
207							 <&cpu4 3 14>,
208							 <&cpu5 3 14>,
209							 <&cpu6 3 14>,
210							 <&cpu7 3 14>;
211				};
212			};
213		};
214		cpu2_thermal: cpu2-thermal {
215			thermal-sensors = <&tmu_cpu2 0>;
216			polling-delay-passive = <250>;
217			polling-delay = <0>;
218			trips {
219				cpu2_alert0: cpu-alert-0 {
220					temperature = <50000>;
221					hysteresis = <5000>;
222					type = "active";
223				};
224				cpu2_alert1: cpu-alert-1 {
225					temperature = <60000>;
226					hysteresis = <5000>;
227					type = "active";
228				};
229				cpu2_alert2: cpu-alert-2 {
230					temperature = <70000>;
231					hysteresis = <5000>;
232					type = "active";
233				};
234				cpu2_crit0: cpu-crit-0 {
235					temperature = <120000>;
236					hysteresis = <0>;
237					type = "critical";
238				};
239				cpu2_alert3: cpu-alert-3 {
240					temperature = <70000>;
241					hysteresis = <10000>;
242					type = "passive";
243				};
244				cpu2_alert4: cpu-alert-4 {
245					temperature = <85000>;
246					hysteresis = <10000>;
247					type = "passive";
248				};
249			};
250			cooling-maps {
251				map0 {
252					trip = <&cpu2_alert0>;
253					cooling-device = <&fan0 0 1>;
254				};
255				map1 {
256					trip = <&cpu2_alert1>;
257					cooling-device = <&fan0 1 2>;
258				};
259				map2 {
260					trip = <&cpu2_alert2>;
261					cooling-device = <&fan0 2 3>;
262				};
263				map3 {
264					trip = <&cpu2_alert3>;
265					cooling-device = <&cpu0 0 2>,
266							 <&cpu1 0 2>,
267							 <&cpu2 0 2>,
268							 <&cpu3 0 2>,
269							 <&cpu4 0 2>,
270							 <&cpu5 0 2>,
271							 <&cpu6 0 2>,
272							 <&cpu7 0 2>;
273				};
274				cpu2_cooling_map4: map4 {
275					trip = <&cpu2_alert4>;
276					cooling-device = <&cpu0 3 8>,
277							 <&cpu1 3 8>,
278							 <&cpu2 3 8>,
279							 <&cpu3 3 8>,
280							 <&cpu4 3 14>,
281							 <&cpu5 3 14>,
282							 <&cpu6 3 14>,
283							 <&cpu7 3 14>;
284				};
285			};
286		};
287		cpu3_thermal: cpu3-thermal {
288			thermal-sensors = <&tmu_cpu3 0>;
289			polling-delay-passive = <250>;
290			polling-delay = <0>;
291			trips {
292				cpu3_alert0: cpu-alert-0 {
293					temperature = <50000>;
294					hysteresis = <5000>;
295					type = "active";
296				};
297				cpu3_alert1: cpu-alert-1 {
298					temperature = <60000>;
299					hysteresis = <5000>;
300					type = "active";
301				};
302				cpu3_alert2: cpu-alert-2 {
303					temperature = <70000>;
304					hysteresis = <5000>;
305					type = "active";
306				};
307				cpu3_crit0: cpu-crit-0 {
308					temperature = <120000>;
309					hysteresis = <0>;
310					type = "critical";
311				};
312				cpu3_alert3: cpu-alert-3 {
313					temperature = <70000>;
314					hysteresis = <10000>;
315					type = "passive";
316				};
317				cpu3_alert4: cpu-alert-4 {
318					temperature = <85000>;
319					hysteresis = <10000>;
320					type = "passive";
321				};
322			};
323			cooling-maps {
324				map0 {
325					trip = <&cpu3_alert0>;
326					cooling-device = <&fan0 0 1>;
327				};
328				map1 {
329					trip = <&cpu3_alert1>;
330					cooling-device = <&fan0 1 2>;
331				};
332				map2 {
333					trip = <&cpu3_alert2>;
334					cooling-device = <&fan0 2 3>;
335				};
336				map3 {
337					trip = <&cpu3_alert3>;
338					cooling-device = <&cpu0 0 2>,
339							 <&cpu1 0 2>,
340							 <&cpu2 0 2>,
341							 <&cpu3 0 2>,
342							 <&cpu4 0 2>,
343							 <&cpu5 0 2>,
344							 <&cpu6 0 2>,
345							 <&cpu7 0 2>;
346				};
347				cpu3_cooling_map4: map4 {
348					trip = <&cpu3_alert4>;
349					cooling-device = <&cpu0 3 8>,
350							 <&cpu1 3 8>,
351							 <&cpu2 3 8>,
352							 <&cpu3 3 8>,
353							 <&cpu4 3 14>,
354							 <&cpu5 3 14>,
355							 <&cpu6 3 14>,
356							 <&cpu7 3 14>;
357				};
358			};
359		};
360		gpu_thermal: gpu-thermal {
361			thermal-sensors = <&tmu_gpu 0>;
362			polling-delay-passive = <250>;
363			polling-delay = <0>;
364			trips {
365				gpu_alert0: gpu-alert-0 {
366					temperature = <50000>;
367					hysteresis = <5000>;
368					type = "active";
369				};
370				gpu_alert1: gpu-alert-1 {
371					temperature = <60000>;
372					hysteresis = <5000>;
373					type = "active";
374				};
375				gpu_alert2: gpu-alert-2 {
376					temperature = <70000>;
377					hysteresis = <5000>;
378					type = "active";
379				};
380				gpu_crit0: gpu-crit-0 {
381					temperature = <120000>;
382					hysteresis = <0>;
383					type = "critical";
384				};
385				gpu_alert3: gpu-alert-3 {
386					temperature = <70000>;
387					hysteresis = <10000>;
388					type = "passive";
389				};
390				gpu_alert4: gpu-alert-4 {
391					temperature = <85000>;
392					hysteresis = <10000>;
393					type = "passive";
394				};
395			};
396			cooling-maps {
397				map0 {
398					trip = <&gpu_alert0>;
399					cooling-device = <&fan0 0 1>;
400				};
401				map1 {
402					trip = <&gpu_alert1>;
403					cooling-device = <&fan0 1 2>;
404				};
405				map2 {
406					trip = <&gpu_alert2>;
407					cooling-device = <&fan0 2 3>;
408				};
409				map3 {
410					trip = <&gpu_alert3>;
411					cooling-device = <&gpu 0 2>;
412				};
413				map4 {
414					trip = <&gpu_alert4>;
415					cooling-device = <&gpu 3 6>;
416				};
417			};
418		};
419	};
420};
421
422&buck10_reg {
423	/* Supplies vmmc-supply of mmc_0 */
424	regulator-always-on;
425	regulator-boot-on;
426};
427
428&hdmi {
429	status = "okay";
430	ddc = <&i2c_2>;
431	hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
432	pinctrl-names = "default";
433	pinctrl-0 = <&hdmi_hpd_irq>;
434
435	vdd_osc-supply = <&ldo7_reg>;
436	vdd_pll-supply = <&ldo6_reg>;
437	vdd-supply = <&ldo6_reg>;
438};
439
440&hdmicec {
441	status = "okay";
442	needs-hpd;
443};
444
445&i2c_2 {
446	samsung,i2c-sda-delay = <100>;
447	samsung,i2c-max-bus-freq = <66000>;
448	/* used by HDMI DDC */
449	status = "okay";
450};
451
452&ldo26_reg {
453	regulator-min-microvolt = <3000000>;
454	regulator-max-microvolt = <3000000>;
455	regulator-always-on;
456};
457
458&mixer {
459	status = "okay";
460};
461
462&mmc_0 {
463	status = "okay";
464	mmc-pwrseq = <&emmc_pwrseq>;
465	card-detect-delay = <200>;
466	samsung,dw-mshc-ciu-div = <3>;
467	samsung,dw-mshc-sdr-timing = <0 4>;
468	samsung,dw-mshc-ddr-timing = <0 2>;
469	samsung,dw-mshc-hs400-timing = <0 2>;
470	samsung,read-strobe-delay = <90>;
471	pinctrl-names = "default";
472	pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd &sd0_rclk>;
473	bus-width = <8>;
474	cap-mmc-highspeed;
475	mmc-hs200-1_8v;
476	mmc-hs400-1_8v;
477	max-frequency = <200000000>;
478	vmmc-supply = <&ldo18_reg>;
479	vqmmc-supply = <&ldo3_reg>;
480};
481
482&pinctrl_0 {
483	power_key: power-key {
484		samsung,pins = "gpx0-3";
485		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
486		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
487		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
488	};
489
490	hdmi_hpd_irq: hdmi-hpd-irq {
491		samsung,pins = "gpx3-7";
492		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
493		samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
494		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
495	};
496};
497
498&pinctrl_1 {
499	emmc_nrst_pin: emmc-nrst {
500		samsung,pins = "gpd1-0";
501		samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
502		samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
503		samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
504	};
505};
506