blob: 1865a708b49f1835304f1aac73a8a0fd74cfc202 [file] [log] [blame]
Krzysztof Kozlowskicc4637f2017-12-25 11:40:09 +01001// SPDX-License-Identifier: GPL-2.0
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +09002/*
Krzysztof Kozlowski6e2422f2018-11-13 20:46:26 +01003 * Hardkernel Odroid XU3/XU3-Lite/XU4 boards common device tree source
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +09004 *
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +09005 * Copyright (c) 2013 Samsung Electronics Co., Ltd.
6 * http://www.samsung.com
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +02007 * Copyright (c) 2014 Collabora Ltd.
8 * Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com>
9 * Anand Moon <linux.amoon@gmail.com>
Krzysztof Kozlowskicc4637f2017-12-25 11:40:09 +010010 */
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +090011
Brian Kim227c23b2017-09-12 13:57:54 +020012#include <dt-bindings/input/input.h>
Marek Szyprowski1ac49422017-10-02 08:39:34 +020013#include "exynos5422-odroid-core.dtsi"
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +090014
15/ {
Brian Kim227c23b2017-09-12 13:57:54 +020016 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
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +090037 emmc_pwrseq: pwrseq {
38 pinctrl-0 = <&emmc_nrst_pin>;
39 pinctrl-names = "default";
40 compatible = "mmc-pwrseq-emmc";
Javier Martinez Canillas31b99032015-10-08 07:39:58 +090041 reset-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>;
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +090042 };
43
Anand Moonb685d542015-06-15 12:23:20 +093044 fan0: pwm-fan {
45 compatible = "pwm-fan";
46 pwms = <&pwm 0 20972 0>;
Anand Moonb685d542015-06-15 12:23:20 +093047 #cooling-cells = <2>;
48 cooling-levels = <0 130 170 230>;
49 };
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020050
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 {
Willy Wolffe7407312017-09-07 18:10:00 +020057 cpu0_alert0: cpu-alert-0 {
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020058 temperature = <50000>; /* millicelsius */
59 hysteresis = <5000>; /* millicelsius */
60 type = "active";
61 };
Willy Wolffe7407312017-09-07 18:10:00 +020062 cpu0_alert1: cpu-alert-1 {
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020063 temperature = <60000>; /* millicelsius */
64 hysteresis = <5000>; /* millicelsius */
65 type = "active";
66 };
Willy Wolffe7407312017-09-07 18:10:00 +020067 cpu0_alert2: cpu-alert-2 {
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020068 temperature = <70000>; /* millicelsius */
69 hysteresis = <5000>; /* millicelsius */
70 type = "active";
71 };
Willy Wolffe7407312017-09-07 18:10:00 +020072 cpu0_crit0: cpu-crit-0 {
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020073 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
Willy Wolffe7407312017-09-07 18:10:00 +020081 * interrupt-driven trip: cpu0_alert2
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020082 */
Willy Wolffe7407312017-09-07 18:10:00 +020083 cpu0_alert3: cpu-alert-3 {
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020084 temperature = <70000>; /* millicelsius */
85 hysteresis = <10000>; /* millicelsius */
86 type = "passive";
87 };
Willy Wolffe7407312017-09-07 18:10:00 +020088 cpu0_alert4: cpu-alert-4 {
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020089 temperature = <85000>; /* millicelsius */
90 hysteresis = <10000>; /* millicelsius */
91 type = "passive";
92 };
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020093 };
94 cooling-maps {
95 map0 {
Willy Wolffe7407312017-09-07 18:10:00 +020096 trip = <&cpu0_alert0>;
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +020097 cooling-device = <&fan0 0 1>;
98 };
99 map1 {
Willy Wolffe7407312017-09-07 18:10:00 +0200100 trip = <&cpu0_alert1>;
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200101 cooling-device = <&fan0 1 2>;
102 };
103 map2 {
Willy Wolffe7407312017-09-07 18:10:00 +0200104 trip = <&cpu0_alert2>;
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200105 cooling-device = <&fan0 2 3>;
106 };
107 /*
Willy Wolffe7407312017-09-07 18:10:00 +0200108 * When reaching cpu0_alert3, reduce CPU
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200109 * by 2 steps. On Exynos5422/5800 that would
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100110 * (usually) be: 1800 MHz and 1200 MHz.
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200111 */
112 map3 {
Willy Wolffe7407312017-09-07 18:10:00 +0200113 trip = <&cpu0_alert3>;
Viresh Kumar670734f2018-11-16 15:31:10 +0530114 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>;
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200122 };
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200123 /*
Willy Wolffe7407312017-09-07 18:10:00 +0200124 * When reaching cpu0_alert4, reduce CPU
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100125 * further, down to 600 MHz (14 steps for big,
126 * 8 steps for LITTLE).
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200127 */
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100128 cpu0_cooling_map4: map4 {
Willy Wolffe7407312017-09-07 18:10:00 +0200129 trip = <&cpu0_alert4>;
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100130 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>;
Willy Wolffe7407312017-09-07 18:10:00 +0200138 };
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>;
Viresh Kumar670734f2018-11-16 15:31:10 +0530192 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>;
Willy Wolffe7407312017-09-07 18:10:00 +0200200 };
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100201 cpu1_cooling_map4: map4 {
Willy Wolffe7407312017-09-07 18:10:00 +0200202 trip = <&cpu1_alert4>;
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100203 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>;
Willy Wolffe7407312017-09-07 18:10:00 +0200211 };
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>;
Viresh Kumar670734f2018-11-16 15:31:10 +0530265 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>;
Willy Wolffe7407312017-09-07 18:10:00 +0200273 };
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100274 cpu2_cooling_map4: map4 {
Willy Wolffe7407312017-09-07 18:10:00 +0200275 trip = <&cpu2_alert4>;
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100276 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>;
Willy Wolffe7407312017-09-07 18:10:00 +0200284 };
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>;
Viresh Kumar670734f2018-11-16 15:31:10 +0530338 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>;
Willy Wolffe7407312017-09-07 18:10:00 +0200346 };
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100347 cpu3_cooling_map4: map4 {
Willy Wolffe7407312017-09-07 18:10:00 +0200348 trip = <&cpu3_alert4>;
Bartlomiej Zolnierkiewiczeaffc4d2019-12-10 12:40:27 +0100349 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>;
Krzysztof Kozlowskif4715dc2016-05-09 08:19:49 +0200357 };
358 };
359 };
360 };
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900361};
362
Krzysztof Kozlowskid0b737f2019-06-20 20:34:52 +0200363&buck10_reg {
364 /* Supplies vmmc-supply of mmc_0 */
365 regulator-always-on;
366 regulator-boot-on;
367};
368
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900369&hdmi {
370 status = "okay";
Marek Szyprowskic9c51fd2017-09-15 11:11:21 +0200371 ddc = <&i2c_2>;
Milo Kim05b01dd2016-08-24 22:07:16 +0900372 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900373 pinctrl-names = "default";
374 pinctrl-0 = <&hdmi_hpd_irq>;
375
376 vdd_osc-supply = <&ldo7_reg>;
377 vdd_pll-supply = <&ldo6_reg>;
378 vdd-supply = <&ldo6_reg>;
379};
380
Marek Szyprowski5343b152017-05-31 13:00:17 +0200381&hdmicec {
382 status = "okay";
Hans Verkuil93a4c832017-08-23 18:24:50 +0200383 needs-hpd;
Marek Szyprowski5343b152017-05-31 13:00:17 +0200384};
385
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900386&i2c_2 {
387 samsung,i2c-sda-delay = <100>;
388 samsung,i2c-max-bus-freq = <66000>;
Marek Szyprowskic9c51fd2017-09-15 11:11:21 +0200389 /* used by HDMI DDC */
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900390 status = "okay";
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900391};
392
Krzysztof Kozlowskib5124e42018-08-06 18:09:32 +0200393&ldo26_reg {
394 regulator-min-microvolt = <3000000>;
395 regulator-max-microvolt = <3000000>;
396 regulator-always-on;
397};
398
Marek Szyprowski1cb686c2017-09-15 11:11:23 +0200399&mixer {
400 status = "okay";
401};
402
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900403&mmc_0 {
404 status = "okay";
405 mmc-pwrseq = <&emmc_pwrseq>;
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900406 card-detect-delay = <200>;
407 samsung,dw-mshc-ciu-div = <3>;
408 samsung,dw-mshc-sdr-timing = <0 4>;
409 samsung,dw-mshc-ddr-timing = <0 2>;
410 samsung,dw-mshc-hs400-timing = <0 2>;
411 samsung,read-strobe-delay = <90>;
412 pinctrl-names = "default";
413 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd &sd0_rclk>;
414 bus-width = <8>;
415 cap-mmc-highspeed;
416 mmc-hs200-1_8v;
417 mmc-hs400-1_8v;
Anand Moon4289c862018-09-27 14:07:37 +0000418 max-frequency = <200000000>;
Markus Reichl399fc182016-04-04 11:55:13 +0200419 vmmc-supply = <&ldo18_reg>;
420 vqmmc-supply = <&ldo3_reg>;
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900421};
422
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900423&pinctrl_0 {
Brian Kim227c23b2017-09-12 13:57:54 +0200424 power_key: power-key {
425 samsung,pins = "gpx0-3";
426 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
427 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
428 samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
429 };
430
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900431 hdmi_hpd_irq: hdmi-hpd-irq {
432 samsung,pins = "gpx3-7";
Krzysztof Kozlowskia2f2bc32016-09-04 13:04:14 +0200433 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
434 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
435 samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900436 };
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900437};
438
439&pinctrl_1 {
440 emmc_nrst_pin: emmc-nrst {
441 samsung,pins = "gpd1-0";
Krzysztof Kozlowskia2f2bc32016-09-04 13:04:14 +0200442 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
443 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
444 samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
Krzysztof Kozlowski3a7c01d2015-05-25 21:13:17 +0900445 };
446};