blob: 93ddbd4b0a1898303a041ecc453c3d8635c2c8c5 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0
2/*
3 * Common definition for Hardkernel's Exynos4412 based ODROID-X/X2/U2/U3 boards
4 * device tree source
5 */
6
7#include <dt-bindings/sound/samsung-i2s.h>
8#include <dt-bindings/input/input.h>
9#include <dt-bindings/clock/maxim,max77686.h>
10#include "exynos4412.dtsi"
11#include "exynos4412-ppmu-common.dtsi"
12#include <dt-bindings/gpio/gpio.h>
13#include "exynos-mfc-reserved-memory.dtsi"
14
15/ {
16 aliases {
17 mmc0 = &mshc_0;
18 mmc2 = &sdhci_2;
19 };
20
21 chosen {
22 stdout-path = &serial_1;
23 };
24
25 firmware@204f000 {
26 compatible = "samsung,secure-firmware";
27 reg = <0x0204f000 0x1000>;
28 };
29
30 gpio_keys: gpio-keys {
31 compatible = "gpio-keys";
32 pinctrl-names = "default";
33 pinctrl-0 = <&gpio_power_key>;
34
35 power-key {
36 gpios = <&gpx1 3 GPIO_ACTIVE_LOW>;
37 linux,code = <KEY_POWER>;
38 label = "power key";
39 debounce-interval = <10>;
40 wakeup-source;
41 };
42 };
43
44 sound: sound {
45 compatible = "hardkernel,odroid-xu4-audio";
46
47 cpu {
48 sound-dai = <&i2s0 0>;
49 };
50
51 codec {
52 sound-dai = <&hdmi>, <&max98090>;
53 };
54 };
55
56 emmc_pwrseq: pwrseq {
57 pinctrl-0 = <&emmc_rstn>;
58 pinctrl-names = "default";
59 compatible = "mmc-pwrseq-emmc";
60 reset-gpios = <&gpk1 2 GPIO_ACTIVE_LOW>;
61 };
62
63 fixed-rate-clocks {
64 xxti {
65 compatible = "samsung,clock-xxti";
66 clock-frequency = <0>;
67 };
68
69 xusbxti {
70 compatible = "samsung,clock-xusbxti";
71 clock-frequency = <24000000>;
72 };
73 };
74};
75
76&bus_dmc {
77 devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>;
78 vdd-supply = <&buck1_reg>;
79 status = "okay";
80};
81
82&bus_acp {
83 devfreq = <&bus_dmc>;
84 status = "okay";
85};
86
87&bus_c2c {
88 devfreq = <&bus_dmc>;
89 status = "okay";
90};
91
92&bus_leftbus {
93 devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>;
94 vdd-supply = <&buck3_reg>;
95 status = "okay";
96};
97
98&bus_rightbus {
99 devfreq = <&bus_leftbus>;
100 status = "okay";
101};
102
103&bus_display {
104 devfreq = <&bus_leftbus>;
105 status = "okay";
106};
107
108&bus_fsys {
109 devfreq = <&bus_leftbus>;
110 status = "okay";
111};
112
113&bus_peri {
114 devfreq = <&bus_leftbus>;
115 status = "okay";
116};
117
118&bus_mfc {
119 devfreq = <&bus_leftbus>;
120 status = "okay";
121};
122
123&camera {
124 status = "okay";
125};
126
127&clock {
128 clocks = <&clock CLK_XUSBXTI>;
129 assigned-clocks = <&clock CLK_FOUT_EPLL>;
130 assigned-clock-rates = <45158401>;
131};
132
133&clock_audss {
134 assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>,
135 <&clock_audss EXYNOS_MOUT_I2S>,
136 <&clock_audss EXYNOS_DOUT_SRP>,
137 <&clock_audss EXYNOS_DOUT_AUD_BUS>,
138 <&clock_audss EXYNOS_DOUT_I2S>;
139
140 assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
141 <&clock_audss EXYNOS_MOUT_AUDSS>;
142
143 assigned-clock-rates = <0>, <0>,
144 <196608001>,
145 <(196608001 / 2)>,
146 <(196608001 / 8)>;
147};
148
149&cpu0 {
150 cpu0-supply = <&buck2_reg>;
151};
152
153&cpu0_opp_table {
154 opp-1000000000 {
155 opp-suspend;
156 };
157 opp-800000000 {
158 /delete-property/opp-suspend;
159 };
160};
161
162&cpu_thermal {
163 cooling-maps {
164 cooling_map0: map0 {
165 /* Corresponds to 800MHz at freq_table */
166 cooling-device = <&cpu0 7 7>, <&cpu1 7 7>,
167 <&cpu2 7 7>, <&cpu3 7 7>;
168 };
169 cooling_map1: map1 {
170 /* Corresponds to 200MHz at freq_table */
171 cooling-device = <&cpu0 13 13>, <&cpu1 13 13>,
172 <&cpu2 13 13>, <&cpu3 13 13>;
173 };
174 };
175};
176
177&pinctrl_1 {
178 gpio_power_key: power-key-pins {
179 samsung,pins = "gpx1-3";
180 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
181 };
182
183 max77686_irq: max77686-irq-pins {
184 samsung,pins = "gpx3-2";
185 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
186 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
187 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
188 };
189
190 hdmi_hpd: hdmi-hpd-pins {
191 samsung,pins = "gpx3-7";
192 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
193 };
194
195 emmc_rstn: emmc-rstn-pins {
196 samsung,pins = "gpk1-2";
197 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
198 };
199};
200
201&ehci {
202 status = "okay";
203};
204
205&exynos_usbphy {
206 status = "okay";
207};
208
209&fimc_0 {
210 status = "okay";
211 assigned-clocks = <&clock CLK_MOUT_FIMC0>,
212 <&clock CLK_SCLK_FIMC0>;
213 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
214 assigned-clock-rates = <0>, <176000000>;
215};
216
217&fimc_1 {
218 status = "okay";
219 assigned-clocks = <&clock CLK_MOUT_FIMC1>,
220 <&clock CLK_SCLK_FIMC1>;
221 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
222 assigned-clock-rates = <0>, <176000000>;
223};
224
225&fimc_2 {
226 status = "okay";
227 assigned-clocks = <&clock CLK_MOUT_FIMC2>,
228 <&clock CLK_SCLK_FIMC2>;
229 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
230 assigned-clock-rates = <0>, <176000000>;
231};
232
233&fimc_3 {
234 status = "okay";
235 assigned-clocks = <&clock CLK_MOUT_FIMC3>,
236 <&clock CLK_SCLK_FIMC3>;
237 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>;
238 assigned-clock-rates = <0>, <176000000>;
239};
240
241&gpu {
242 mali-supply = <&buck4_reg>;
243 status = "okay";
244};
245
246&hdmi {
247 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
248 pinctrl-names = "default";
249 pinctrl-0 = <&hdmi_hpd>;
250 vdd-supply = <&ldo8_reg>;
251 vdd_osc-supply = <&ldo10_reg>;
252 vdd_pll-supply = <&ldo8_reg>;
253 ddc = <&i2c_2>;
254 status = "okay";
255};
256
257&hdmicec {
258 status = "okay";
259};
260
261&hsotg {
262 status = "okay";
263 vusb_d-supply = <&ldo15_reg>;
264 vusb_a-supply = <&ldo12_reg>;
265};
266
267&i2c_0 {
268 samsung,i2c-sda-delay = <100>;
269 samsung,i2c-max-bus-freq = <400000>;
270 status = "okay";
271
272 usb3503: usb-hub@8 {
273 compatible = "smsc,usb3503";
274 reg = <0x08>;
275
276 intn-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>;
277 connect-gpios = <&gpx3 4 GPIO_ACTIVE_HIGH>;
278 reset-gpios = <&gpx3 5 GPIO_ACTIVE_LOW>;
279 initial-mode = <1>;
280 };
281
282 max77686: pmic@9 {
283 compatible = "maxim,max77686";
284 interrupt-parent = <&gpx3>;
285 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
286 pinctrl-names = "default";
287 pinctrl-0 = <&max77686_irq>;
288 wakeup-source;
289 reg = <0x09>;
290 #clock-cells = <1>;
291
292 voltage-regulators {
293 ldo1_reg: LDO1 {
294 regulator-name = "VDD_ALIVE_1.0V";
295 regulator-min-microvolt = <1000000>;
296 regulator-max-microvolt = <1000000>;
297 regulator-always-on;
298 };
299
300 ldo2_reg: LDO2 {
301 regulator-name = "VDDQ_M1_2_1.8V";
302 regulator-min-microvolt = <1800000>;
303 regulator-max-microvolt = <1800000>;
304 regulator-always-on;
305 };
306
307 ldo3_reg: LDO3 {
308 regulator-name = "VDDQ_EXT_1.8V";
309 regulator-min-microvolt = <1800000>;
310 regulator-max-microvolt = <1800000>;
311 regulator-always-on;
312 };
313
314 ldo4_reg: LDO4 {
315 regulator-name = "VDDQ_MMC2_2.8V";
316 regulator-min-microvolt = <2800000>;
317 regulator-max-microvolt = <2800000>;
318 regulator-boot-on;
319 };
320
321 ldo5_reg: LDO5 {
322 regulator-name = "VDDQ_MMC1_3_1.8V";
323 regulator-min-microvolt = <1800000>;
324 regulator-max-microvolt = <1800000>;
325 regulator-always-on;
326 regulator-boot-on;
327 };
328
329 ldo6_reg: LDO6 {
330 regulator-name = "VDD10_MPLL_1.0V";
331 regulator-min-microvolt = <1000000>;
332 regulator-max-microvolt = <1000000>;
333 regulator-always-on;
334 };
335
336 ldo7_reg: LDO7 {
337 regulator-name = "VDD10_XPLL_1.0V";
338 regulator-min-microvolt = <1000000>;
339 regulator-max-microvolt = <1000000>;
340 regulator-always-on;
341 };
342
343 ldo8_reg: LDO8 {
344 regulator-name = "VDD10_HDMI_1.0V";
345 regulator-min-microvolt = <1000000>;
346 regulator-max-microvolt = <1000000>;
347 };
348
349 ldo10_reg: LDO10 {
350 regulator-name = "VDDQ_MIPIHSI_1.8V";
351 regulator-min-microvolt = <1800000>;
352 regulator-max-microvolt = <1800000>;
353 };
354
355 ldo11_reg: LDO11 {
356 regulator-name = "VDD18_ABB1_1.8V";
357 regulator-min-microvolt = <1800000>;
358 regulator-max-microvolt = <1800000>;
359 regulator-always-on;
360 };
361
362 ldo12_reg: LDO12 {
363 regulator-name = "VDD33_USB_3.3V";
364 regulator-min-microvolt = <3300000>;
365 regulator-max-microvolt = <3300000>;
366 regulator-always-on;
367 regulator-boot-on;
368 };
369
370 ldo13_reg: LDO13 {
371 regulator-name = "VDDQ_C2C_W_1.8V";
372 regulator-min-microvolt = <1800000>;
373 regulator-max-microvolt = <1800000>;
374 regulator-always-on;
375 regulator-boot-on;
376 };
377
378 ldo14_reg: LDO14 {
379 regulator-name = "VDD18_ABB0_2_1.8V";
380 regulator-min-microvolt = <1800000>;
381 regulator-max-microvolt = <1800000>;
382 regulator-always-on;
383 regulator-boot-on;
384 };
385
386 ldo15_reg: LDO15 {
387 regulator-name = "VDD10_HSIC_1.0V";
388 regulator-min-microvolt = <1000000>;
389 regulator-max-microvolt = <1000000>;
390 regulator-always-on;
391 regulator-boot-on;
392 };
393
394 ldo16_reg: LDO16 {
395 regulator-name = "VDD18_HSIC_1.8V";
396 regulator-min-microvolt = <1800000>;
397 regulator-max-microvolt = <1800000>;
398 regulator-always-on;
399 regulator-boot-on;
400 };
401
402 ldo20_reg: LDO20 {
403 regulator-name = "LDO20_1.8V";
404 regulator-min-microvolt = <1800000>;
405 regulator-max-microvolt = <1800000>;
406 };
407
408 ldo21_reg: LDO21 {
409 regulator-name = "TFLASH_2.8V";
410 regulator-min-microvolt = <2800000>;
411 regulator-max-microvolt = <2800000>;
412 regulator-boot-on;
413 };
414
415 ldo22_reg: LDO22 {
416 /*
417 * Only U3 uses it, so let it define the
418 * constraints
419 */
420 regulator-name = "LDO22";
421 regulator-boot-on;
422 };
423
424 ldo25_reg: LDO25 {
425 regulator-name = "VDDQ_LCD_1.8V";
426 regulator-min-microvolt = <1800000>;
427 regulator-max-microvolt = <1800000>;
428 regulator-always-on;
429 regulator-boot-on;
430 };
431
432 buck1_reg: BUCK1 {
433 regulator-name = "VDD_MIF";
434 regulator-min-microvolt = <900000>;
435 regulator-max-microvolt = <1100000>;
436 regulator-always-on;
437 regulator-boot-on;
438 };
439
440 buck2_reg: BUCK2 {
441 regulator-name = "VDD_ARM";
442 regulator-min-microvolt = <900000>;
443 regulator-max-microvolt = <1350000>;
444 regulator-always-on;
445 regulator-boot-on;
446 };
447
448 buck3_reg: BUCK3 {
449 regulator-name = "VDD_INT";
450 regulator-min-microvolt = <900000>;
451 regulator-max-microvolt = <1050000>;
452 regulator-always-on;
453 regulator-boot-on;
454 };
455
456 buck4_reg: BUCK4 {
457 regulator-name = "VDD_G3D";
458 regulator-min-microvolt = <900000>;
459 regulator-max-microvolt = <1100000>;
460 regulator-microvolt-offset = <50000>;
461 };
462
463 buck5_reg: BUCK5 {
464 regulator-name = "VDDQ_CKEM1_2_1.2V";
465 regulator-min-microvolt = <1200000>;
466 regulator-max-microvolt = <1200000>;
467 regulator-always-on;
468 regulator-boot-on;
469 };
470
471 buck6_reg: BUCK6 {
472 regulator-name = "BUCK6_1.35V";
473 regulator-min-microvolt = <1350000>;
474 regulator-max-microvolt = <1350000>;
475 regulator-always-on;
476 regulator-boot-on;
477 };
478
479 buck7_reg: BUCK7 {
480 regulator-name = "BUCK7_2.0V";
481 regulator-min-microvolt = <2000000>;
482 regulator-max-microvolt = <2000000>;
483 regulator-always-on;
484 };
485
486 buck8_reg: BUCK8 {
487 /*
488 * Constraints set by specific board: X,
489 * X2 and U3.
490 */
491 regulator-name = "BUCK8_2.8V";
492 };
493 };
494 };
495};
496
497&i2c_1 {
498 status = "okay";
499 max98090: audio-codec@10 {
500 compatible = "maxim,max98090";
501 reg = <0x10>;
502 interrupt-parent = <&gpx0>;
503 interrupts = <0 IRQ_TYPE_NONE>;
504 clocks = <&i2s0 CLK_I2S_CDCLK>;
505 clock-names = "mclk";
506 #sound-dai-cells = <0>;
507 };
508};
509
510&i2c_2 {
511 status = "okay";
512};
513
514&i2c_8 {
515 status = "okay";
516};
517
518&i2s0 {
519 pinctrl-0 = <&i2s0_bus>;
520 pinctrl-names = "default";
521 status = "okay";
522 assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
523 assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>;
524};
525
526&mixer {
527 status = "okay";
528};
529
530&mshc_0 {
531 pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>;
532 pinctrl-names = "default";
533 vmmc-supply = <&ldo20_reg>;
534 mmc-pwrseq = <&emmc_pwrseq>;
535 status = "okay";
536
537 broken-cd;
538 card-detect-delay = <200>;
539 mmc-ddr-1_8v;
540 samsung,dw-mshc-ciu-div = <3>;
541 samsung,dw-mshc-sdr-timing = <2 3>;
542 samsung,dw-mshc-ddr-timing = <1 2>;
543 bus-width = <8>;
544 cap-mmc-highspeed;
545};
546
547&rtc {
548 status = "okay";
549 clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>;
550 clock-names = "rtc", "rtc_src";
551};
552
553&sdhci_2 {
554 bus-width = <4>;
555 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>;
556 pinctrl-names = "default";
557 vmmc-supply = <&ldo21_reg>;
558 vqmmc-supply = <&ldo4_reg>;
559 cd-gpios = <&gpk2 2 GPIO_ACTIVE_LOW>;
560 status = "okay";
561};
562
563&serial_0 {
564 status = "okay";
565};
566
567&serial_1 {
568 status = "okay";
569};
570
571&tmu {
572 vtmu-supply = <&ldo10_reg>;
573 status = "okay";
574};