blob: 24581f7410aae50f4595d8d281429c937b87caf6 [file] [log] [blame]
Julien Massoncfa0e162023-12-04 11:48:55 +01001// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * (C) 2018 MediaTek Inc.
4 * Copyright (C) 2022 BayLibre SAS
5 * Fabien Parent <fparent@baylibre.com>
6 * Bernhard Rosenkränzer <bero@baylibre.com>
7 */
8#include <dt-bindings/clock/mediatek,mt8365-clk.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/interrupt-controller/irq.h>
11#include <dt-bindings/phy/phy.h>
12#include <dt-bindings/power/mediatek,mt8365-power.h>
13
14/ {
15 compatible = "mediatek,mt8365";
16 interrupt-parent = <&sysirq>;
17 #address-cells = <2>;
18 #size-cells = <2>;
19
20 cpus {
21 #address-cells = <1>;
22 #size-cells = <0>;
23
24 cluster0_opp: opp-table-0 {
25 compatible = "operating-points-v2";
26 opp-shared;
27
28 opp-850000000 {
29 opp-hz = /bits/ 64 <850000000>;
30 opp-microvolt = <650000>;
31 };
32
33 opp-918000000 {
34 opp-hz = /bits/ 64 <918000000>;
35 opp-microvolt = <668750>;
36 };
37
38 opp-987000000 {
39 opp-hz = /bits/ 64 <987000000>;
40 opp-microvolt = <687500>;
41 };
42
43 opp-1056000000 {
44 opp-hz = /bits/ 64 <1056000000>;
45 opp-microvolt = <706250>;
46 };
47
48 opp-1125000000 {
49 opp-hz = /bits/ 64 <1125000000>;
50 opp-microvolt = <725000>;
51 };
52
53 opp-1216000000 {
54 opp-hz = /bits/ 64 <1216000000>;
55 opp-microvolt = <750000>;
56 };
57
58 opp-1308000000 {
59 opp-hz = /bits/ 64 <1308000000>;
60 opp-microvolt = <775000>;
61 };
62
63 opp-1400000000 {
64 opp-hz = /bits/ 64 <1400000000>;
65 opp-microvolt = <800000>;
66 };
67
68 opp-1466000000 {
69 opp-hz = /bits/ 64 <1466000000>;
70 opp-microvolt = <825000>;
71 };
72
73 opp-1533000000 {
74 opp-hz = /bits/ 64 <1533000000>;
75 opp-microvolt = <850000>;
76 };
77
78 opp-1633000000 {
79 opp-hz = /bits/ 64 <1633000000>;
80 opp-microvolt = <887500>;
81 };
82
83 opp-1700000000 {
84 opp-hz = /bits/ 64 <1700000000>;
85 opp-microvolt = <912500>;
86 };
87
88 opp-1767000000 {
89 opp-hz = /bits/ 64 <1767000000>;
90 opp-microvolt = <937500>;
91 };
92
93 opp-1834000000 {
94 opp-hz = /bits/ 64 <1834000000>;
95 opp-microvolt = <962500>;
96 };
97
98 opp-1917000000 {
99 opp-hz = /bits/ 64 <1917000000>;
100 opp-microvolt = <993750>;
101 };
102
103 opp-2001000000 {
104 opp-hz = /bits/ 64 <2001000000>;
105 opp-microvolt = <1025000>;
106 };
107 };
108
109 cpu-map {
110 cluster0 {
111 core0 {
112 cpu = <&cpu0>;
113 };
114 core1 {
115 cpu = <&cpu1>;
116 };
117 core2 {
118 cpu = <&cpu2>;
119 };
120 core3 {
121 cpu = <&cpu3>;
122 };
123 };
124 };
125
126 cpu0: cpu@0 {
127 device_type = "cpu";
128 compatible = "arm,cortex-a53";
129 reg = <0x0>;
130 #cooling-cells = <2>;
131 enable-method = "psci";
132 cpu-idle-states = <&CPU_MCDI &CLUSTER_MCDI &CLUSTER_DPIDLE>;
133 i-cache-size = <0x8000>;
134 i-cache-line-size = <64>;
135 i-cache-sets = <256>;
136 d-cache-size = <0x8000>;
137 d-cache-line-size = <64>;
138 d-cache-sets = <256>;
139 next-level-cache = <&l2>;
140 clocks = <&mcucfg CLK_MCU_BUS_SEL>,
141 <&apmixedsys CLK_APMIXED_MAINPLL>;
142 clock-names = "cpu", "intermediate";
143 operating-points-v2 = <&cluster0_opp>;
144 };
145
146 cpu1: cpu@1 {
147 device_type = "cpu";
148 compatible = "arm,cortex-a53";
149 reg = <0x1>;
150 #cooling-cells = <2>;
151 enable-method = "psci";
152 cpu-idle-states = <&CPU_MCDI &CLUSTER_MCDI &CLUSTER_DPIDLE>;
153 i-cache-size = <0x8000>;
154 i-cache-line-size = <64>;
155 i-cache-sets = <256>;
156 d-cache-size = <0x8000>;
157 d-cache-line-size = <64>;
158 d-cache-sets = <256>;
159 next-level-cache = <&l2>;
160 clocks = <&mcucfg CLK_MCU_BUS_SEL>,
161 <&apmixedsys CLK_APMIXED_MAINPLL>;
162 clock-names = "cpu", "intermediate", "armpll";
163 operating-points-v2 = <&cluster0_opp>;
164 };
165
166 cpu2: cpu@2 {
167 device_type = "cpu";
168 compatible = "arm,cortex-a53";
169 reg = <0x2>;
170 #cooling-cells = <2>;
171 enable-method = "psci";
172 cpu-idle-states = <&CPU_MCDI &CLUSTER_MCDI &CLUSTER_DPIDLE>;
173 i-cache-size = <0x8000>;
174 i-cache-line-size = <64>;
175 i-cache-sets = <256>;
176 d-cache-size = <0x8000>;
177 d-cache-line-size = <64>;
178 d-cache-sets = <256>;
179 next-level-cache = <&l2>;
180 clocks = <&mcucfg CLK_MCU_BUS_SEL>,
181 <&apmixedsys CLK_APMIXED_MAINPLL>;
182 clock-names = "cpu", "intermediate", "armpll";
183 operating-points-v2 = <&cluster0_opp>;
184 };
185
186 cpu3: cpu@3 {
187 device_type = "cpu";
188 compatible = "arm,cortex-a53";
189 reg = <0x3>;
190 #cooling-cells = <2>;
191 enable-method = "psci";
192 cpu-idle-states = <&CPU_MCDI &CLUSTER_MCDI &CLUSTER_DPIDLE>;
193 i-cache-size = <0x8000>;
194 i-cache-line-size = <64>;
195 i-cache-sets = <256>;
196 d-cache-size = <0x8000>;
197 d-cache-line-size = <64>;
198 d-cache-sets = <256>;
199 next-level-cache = <&l2>;
200 clocks = <&mcucfg CLK_MCU_BUS_SEL>,
201 <&apmixedsys CLK_APMIXED_MAINPLL>;
202 clock-names = "cpu", "intermediate", "armpll";
203 operating-points-v2 = <&cluster0_opp>;
204 };
205
206 idle-states {
207 entry-method = "psci";
208
209 CPU_MCDI: cpu-mcdi {
210 compatible = "arm,idle-state";
211 local-timer-stop;
212 arm,psci-suspend-param = <0x00010001>;
213 entry-latency-us = <300>;
214 exit-latency-us = <200>;
215 min-residency-us = <1000>;
216 };
217
218 CLUSTER_MCDI: cluster-mcdi {
219 compatible = "arm,idle-state";
220 local-timer-stop;
221 arm,psci-suspend-param = <0x01010001>;
222 entry-latency-us = <350>;
223 exit-latency-us = <250>;
224 min-residency-us = <1200>;
225 };
226
227 CLUSTER_DPIDLE: cluster-dpidle {
228 compatible = "arm,idle-state";
229 local-timer-stop;
230 arm,psci-suspend-param = <0x01010004>;
231 entry-latency-us = <300>;
232 exit-latency-us = <800>;
233 min-residency-us = <3300>;
234 };
235 };
236
237 l2: l2-cache {
238 compatible = "cache";
239 cache-level = <2>;
240 cache-size = <0x80000>;
241 cache-line-size = <64>;
242 cache-sets = <512>;
243 cache-unified;
244 };
245 };
246
247 clk26m: oscillator {
248 compatible = "fixed-clock";
249 #clock-cells = <0>;
250 clock-frequency = <26000000>;
251 clock-output-names = "clk26m";
252 };
253
254 psci {
255 compatible = "arm,psci-1.0";
256 method = "smc";
257 };
258
259 soc {
260 #address-cells = <2>;
261 #size-cells = <2>;
262 compatible = "simple-bus";
263 ranges;
264
265 gic: interrupt-controller@c000000 {
266 compatible = "arm,gic-v3";
267 #interrupt-cells = <3>;
268 interrupt-parent = <&gic>;
269 interrupt-controller;
270 reg = <0 0x0c000000 0 0x10000>, /* GICD */
271 <0 0x0c080000 0 0x80000>, /* GICR */
272 <0 0x0c400000 0 0x2000>, /* GICC */
273 <0 0x0c410000 0 0x1000>, /* GICH */
274 <0 0x0c420000 0 0x2000>; /* GICV */
275
276 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
277 };
278
279 topckgen: syscon@10000000 {
280 compatible = "mediatek,mt8365-topckgen", "syscon";
281 reg = <0 0x10000000 0 0x1000>;
282 #clock-cells = <1>;
283 };
284
285 infracfg: syscon@10001000 {
286 compatible = "mediatek,mt8365-infracfg", "syscon";
287 reg = <0 0x10001000 0 0x1000>;
288 #clock-cells = <1>;
289 };
290
291 pericfg: syscon@10003000 {
292 compatible = "mediatek,mt8365-pericfg", "syscon";
293 reg = <0 0x10003000 0 0x1000>;
294 #clock-cells = <1>;
295 };
296
297 syscfg_pctl: syscfg-pctl@10005000 {
298 compatible = "mediatek,mt8365-syscfg", "syscon";
299 reg = <0 0x10005000 0 0x1000>;
300 };
301
302 scpsys: syscon@10006000 {
303 compatible = "mediatek,mt8365-syscfg", "syscon", "simple-mfd";
304 reg = <0 0x10006000 0 0x1000>;
305 #power-domain-cells = <1>;
306
307 /* System Power Manager */
308 spm: power-controller {
309 compatible = "mediatek,mt8365-power-controller";
310 #address-cells = <1>;
311 #size-cells = <0>;
312 #power-domain-cells = <1>;
313
314 /* power domains of the SoC */
315 power-domain@MT8365_POWER_DOMAIN_MM {
316 reg = <MT8365_POWER_DOMAIN_MM>;
317 clocks = <&topckgen CLK_TOP_MM_SEL>,
318 <&mmsys CLK_MM_MM_SMI_COMMON>,
319 <&mmsys CLK_MM_MM_SMI_COMM0>,
320 <&mmsys CLK_MM_MM_SMI_COMM1>,
321 <&mmsys CLK_MM_MM_SMI_LARB0>;
322 clock-names = "mm", "mm-0", "mm-1",
323 "mm-2", "mm-3";
324 #power-domain-cells = <0>;
325 mediatek,infracfg = <&infracfg>;
326 mediatek,infracfg-nao = <&infracfg_nao>;
327 #address-cells = <1>;
328 #size-cells = <0>;
329
330 power-domain@MT8365_POWER_DOMAIN_CAM {
331 reg = <MT8365_POWER_DOMAIN_CAM>;
332 clocks = <&camsys CLK_CAM_LARB2>,
333 <&camsys CLK_CAM_SENIF>,
334 <&camsys CLK_CAMSV0>,
335 <&camsys CLK_CAMSV1>,
336 <&camsys CLK_CAM_FDVT>,
337 <&camsys CLK_CAM_WPE>;
338 clock-names = "cam-0", "cam-1",
339 "cam-2", "cam-3",
340 "cam-4", "cam-5";
341 #power-domain-cells = <0>;
342 mediatek,infracfg = <&infracfg>;
343 mediatek,smi = <&smi_common>;
344 };
345
346 power-domain@MT8365_POWER_DOMAIN_VDEC {
347 reg = <MT8365_POWER_DOMAIN_VDEC>;
348 #power-domain-cells = <0>;
349 mediatek,smi = <&smi_common>;
350 };
351
352 power-domain@MT8365_POWER_DOMAIN_VENC {
353 reg = <MT8365_POWER_DOMAIN_VENC>;
354 #power-domain-cells = <0>;
355 mediatek,smi = <&smi_common>;
356 };
357
358 power-domain@MT8365_POWER_DOMAIN_APU {
359 reg = <MT8365_POWER_DOMAIN_APU>;
360 clocks = <&infracfg CLK_IFR_APU_AXI>,
361 <&apu CLK_APU_IPU_CK>,
362 <&apu CLK_APU_AXI>,
363 <&apu CLK_APU_JTAG>,
364 <&apu CLK_APU_IF_CK>,
365 <&apu CLK_APU_EDMA>,
366 <&apu CLK_APU_AHB>;
367 clock-names = "apu", "apu-0",
368 "apu-1", "apu-2",
369 "apu-3", "apu-4",
370 "apu-5";
371 #power-domain-cells = <0>;
372 mediatek,infracfg = <&infracfg>;
373 mediatek,smi = <&smi_common>;
374 };
375 };
376
377 power-domain@MT8365_POWER_DOMAIN_CONN {
378 reg = <MT8365_POWER_DOMAIN_CONN>;
379 clocks = <&topckgen CLK_TOP_CONN_32K>,
380 <&topckgen CLK_TOP_CONN_26M>;
381 clock-names = "conn", "conn1";
382 #power-domain-cells = <0>;
383 mediatek,infracfg = <&infracfg>;
384 };
385
386 power-domain@MT8365_POWER_DOMAIN_MFG {
387 reg = <MT8365_POWER_DOMAIN_MFG>;
388 clocks = <&topckgen CLK_TOP_MFG_SEL>;
389 clock-names = "mfg";
390 #power-domain-cells = <0>;
391 mediatek,infracfg = <&infracfg>;
392 };
393
394 power-domain@MT8365_POWER_DOMAIN_AUDIO {
395 reg = <MT8365_POWER_DOMAIN_AUDIO>;
396 clocks = <&topckgen CLK_TOP_AUD_INTBUS_SEL>,
397 <&infracfg CLK_IFR_AUDIO>,
398 <&infracfg CLK_IFR_AUD_26M_BK>;
399 clock-names = "audio", "audio1", "audio2";
400 #power-domain-cells = <0>;
401 mediatek,infracfg = <&infracfg>;
402 };
403
404 power-domain@MT8365_POWER_DOMAIN_DSP {
405 reg = <MT8365_POWER_DOMAIN_DSP>;
406 clocks = <&topckgen CLK_TOP_DSP_SEL>,
407 <&topckgen CLK_TOP_DSP_26M>;
408 clock-names = "dsp", "dsp1";
409 #power-domain-cells = <0>;
410 mediatek,infracfg = <&infracfg>;
411 };
412 };
413 };
414
415 watchdog: watchdog@10007000 {
416 compatible = "mediatek,mt8365-wdt", "mediatek,mt6589-wdt";
417 reg = <0 0x10007000 0 0x100>;
418 #reset-cells = <1>;
419 };
420
421 pio: pinctrl@1000b000 {
422 compatible = "mediatek,mt8365-pinctrl";
423 reg = <0 0x1000b000 0 0x1000>;
424 mediatek,pctl-regmap = <&syscfg_pctl>;
425 gpio-controller;
426 #gpio-cells = <2>;
427 interrupt-controller;
428 #interrupt-cells = <2>;
429 interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
430 };
431
432 apmixedsys: syscon@1000c000 {
433 compatible = "mediatek,mt8365-apmixedsys", "syscon";
434 reg = <0 0x1000c000 0 0x1000>;
435 #clock-cells = <1>;
436 };
437
438 pwrap: pwrap@1000d000 {
439 compatible = "mediatek,mt8365-pwrap";
440 reg = <0 0x1000d000 0 0x1000>;
441 reg-names = "pwrap";
442 interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
443 clocks = <&infracfg CLK_IFR_PWRAP_SPI>,
444 <&infracfg CLK_IFR_PMIC_AP>,
445 <&infracfg CLK_IFR_PWRAP_SYS>,
446 <&infracfg CLK_IFR_PWRAP_TMR>;
447 clock-names = "spi", "wrap", "sys", "tmr";
448 };
449
450 keypad: keypad@10010000 {
451 compatible = "mediatek,mt6779-keypad";
452 reg = <0 0x10010000 0 0x1000>;
453 wakeup-source;
454 interrupts = <GIC_SPI 124 IRQ_TYPE_EDGE_FALLING>;
455 clocks = <&clk26m>;
456 clock-names = "kpd";
457 status = "disabled";
458 };
459
460 mcucfg: syscon@10200000 {
461 compatible = "mediatek,mt8365-mcucfg", "syscon";
462 reg = <0 0x10200000 0 0x2000>;
463 #clock-cells = <1>;
464 };
465
466 sysirq: interrupt-controller@10200a80 {
467 compatible = "mediatek,mt8365-sysirq", "mediatek,mt6577-sysirq";
468 interrupt-controller;
469 #interrupt-cells = <3>;
470 interrupt-parent = <&gic>;
471 reg = <0 0x10200a80 0 0x20>;
472 };
473
474 iommu: iommu@10205000 {
475 compatible = "mediatek,mt8365-m4u";
476 reg = <0 0x10205000 0 0x1000>;
477 interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_LOW>;
478 mediatek,larbs = <&larb0>, <&larb1>, <&larb2>, <&larb3>;
479 #iommu-cells = <1>;
480 };
481
482 infracfg_nao: infracfg@1020e000 {
483 compatible = "mediatek,mt8365-infracfg", "syscon";
484 reg = <0 0x1020e000 0 0x1000>;
485 #clock-cells = <1>;
486 };
487
488 rng: rng@1020f000 {
489 compatible = "mediatek,mt8365-rng", "mediatek,mt7623-rng";
490 reg = <0 0x1020f000 0 0x100>;
491 clocks = <&infracfg CLK_IFR_TRNG>;
492 clock-names = "rng";
493 };
494
495 apdma: dma-controller@11000280 {
496 compatible = "mediatek,mt8365-uart-dma", "mediatek,mt6577-uart-dma";
497 reg = <0 0x11000280 0 0x80>,
498 <0 0x11000300 0 0x80>,
499 <0 0x11000380 0 0x80>,
500 <0 0x11000400 0 0x80>,
501 <0 0x11000580 0 0x80>,
502 <0 0x11000600 0 0x80>;
503 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_LOW>,
504 <GIC_SPI 46 IRQ_TYPE_LEVEL_LOW>,
505 <GIC_SPI 47 IRQ_TYPE_LEVEL_LOW>,
506 <GIC_SPI 48 IRQ_TYPE_LEVEL_LOW>,
507 <GIC_SPI 51 IRQ_TYPE_LEVEL_LOW>,
508 <GIC_SPI 52 IRQ_TYPE_LEVEL_LOW>;
509 dma-requests = <6>;
510 clocks = <&infracfg CLK_IFR_AP_DMA>;
511 clock-names = "apdma";
512 #dma-cells = <1>;
513 };
514
515 uart0: serial@11002000 {
516 compatible = "mediatek,mt8365-uart", "mediatek,mt6577-uart";
517 reg = <0 0x11002000 0 0x1000>;
518 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_LOW>;
519 clocks = <&clk26m>, <&infracfg CLK_IFR_UART0>;
520 clock-names = "baud", "bus";
521 dmas = <&apdma 0>, <&apdma 1>;
522 dma-names = "tx", "rx";
523 status = "disabled";
524 };
525
526 uart1: serial@11003000 {
527 compatible = "mediatek,mt8365-uart", "mediatek,mt6577-uart";
528 reg = <0 0x11003000 0 0x1000>;
529 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_LOW>;
530 clocks = <&clk26m>, <&infracfg CLK_IFR_UART1>;
531 clock-names = "baud", "bus";
532 dmas = <&apdma 2>, <&apdma 3>;
533 dma-names = "tx", "rx";
534 status = "disabled";
535 };
536
537 uart2: serial@11004000 {
538 compatible = "mediatek,mt8365-uart", "mediatek,mt6577-uart";
539 reg = <0 0x11004000 0 0x1000>;
540 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_LOW>;
541 clocks = <&clk26m>, <&infracfg CLK_IFR_UART2>;
542 clock-names = "baud", "bus";
543 dmas = <&apdma 4>, <&apdma 5>;
544 dma-names = "tx", "rx";
545 status = "disabled";
546 };
547
548 pwm: pwm@11006000 {
549 compatible = "mediatek,mt8365-pwm";
550 reg = <0 0x11006000 0 0x1000>;
551 #pwm-cells = <2>;
552 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_LOW>;
553 clocks = <&infracfg CLK_IFR_PWM_HCLK>,
554 <&infracfg CLK_IFR_PWM>,
555 <&infracfg CLK_IFR_PWM1>,
556 <&infracfg CLK_IFR_PWM2>,
557 <&infracfg CLK_IFR_PWM3>;
558 clock-names = "top", "main", "pwm1", "pwm2", "pwm3";
559 };
560
561 i2c0: i2c@11007000 {
562 compatible = "mediatek,mt8365-i2c", "mediatek,mt8168-i2c";
563 reg = <0 0x11007000 0 0xa0>, <0 0x11000080 0 0x80>;
564 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_LOW>;
565 clock-div = <1>;
566 clocks = <&infracfg CLK_IFR_I2C0_AXI>, <&infracfg CLK_IFR_AP_DMA>;
567 clock-names = "main", "dma";
568 #address-cells = <1>;
569 #size-cells = <0>;
570 status = "disabled";
571 };
572
573 i2c1: i2c@11008000 {
574 compatible = "mediatek,mt8365-i2c", "mediatek,mt8168-i2c";
575 reg = <0 0x11008000 0 0xa0>, <0 0x11000100 0 0x80>;
576 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_LOW>;
577 clock-div = <1>;
578 clocks = <&infracfg CLK_IFR_I2C1_AXI>, <&infracfg CLK_IFR_AP_DMA>;
579 clock-names = "main", "dma";
580 #address-cells = <1>;
581 #size-cells = <0>;
582 status = "disabled";
583 };
584
585 i2c2: i2c@11009000 {
586 compatible = "mediatek,mt8365-i2c", "mediatek,mt8168-i2c";
587 reg = <0 0x11009000 0 0xa0>, <0 0x11000180 0 0x80>;
588 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_LOW>;
589 clock-div = <1>;
590 clocks = <&infracfg CLK_IFR_I2C2_AXI>, <&infracfg CLK_IFR_AP_DMA>;
591 clock-names = "main", "dma";
592 #address-cells = <1>;
593 #size-cells = <0>;
594 status = "disabled";
595 };
596
597 spi: spi@1100a000 {
598 compatible = "mediatek,mt8365-spi", "mediatek,mt7622-spi";
599 reg = <0 0x1100a000 0 0x100>;
600 #address-cells = <1>;
601 #size-cells = <0>;
602 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_LOW>;
603 clocks = <&topckgen CLK_TOP_UNIVPLL2_D4>,
604 <&topckgen CLK_TOP_SPI_SEL>,
605 <&infracfg CLK_IFR_SPI0>;
606 clock-names = "parent-clk", "sel-clk", "spi-clk";
607 status = "disabled";
608 };
609
610 i2c3: i2c@1100f000 {
611 compatible = "mediatek,mt8365-i2c", "mediatek,mt8168-i2c";
612 reg = <0 0x1100f000 0 0xa0>, <0 0x11000200 0 0x80>;
613 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_LOW>;
614 clock-div = <1>;
615 clocks = <&infracfg CLK_IFR_I2C3_AXI>, <&infracfg CLK_IFR_AP_DMA>;
616 clock-names = "main", "dma";
617 #address-cells = <1>;
618 #size-cells = <0>;
619 status = "disabled";
620 };
621
622 ssusb: usb@11201000 {
623 compatible = "mediatek,mt8365-mtu3", "mediatek,mtu3";
624 reg = <0 0x11201000 0 0x2e00>, <0 0x11203e00 0 0x0100>;
625 reg-names = "mac", "ippc";
626 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_LOW>;
627 phys = <&u2port0 PHY_TYPE_USB2>,
628 <&u2port1 PHY_TYPE_USB2>;
629 clocks = <&topckgen CLK_TOP_SSUSB_TOP_CK_EN>,
630 <&infracfg CLK_IFR_SSUSB_REF>,
631 <&infracfg CLK_IFR_SSUSB_SYS>,
632 <&infracfg CLK_IFR_ICUSB>;
633 clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck";
634 #address-cells = <2>;
635 #size-cells = <2>;
636 ranges;
637 status = "disabled";
638
639 usb_host: usb@11200000 {
640 compatible = "mediatek,mt8365-xhci", "mediatek,mtk-xhci";
641 reg = <0 0x11200000 0 0x1000>;
642 reg-names = "mac";
643 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_LOW>;
644 clocks = <&topckgen CLK_TOP_SSUSB_TOP_CK_EN>,
645 <&infracfg CLK_IFR_SSUSB_REF>,
646 <&infracfg CLK_IFR_SSUSB_SYS>,
647 <&infracfg CLK_IFR_ICUSB>,
648 <&infracfg CLK_IFR_SSUSB_XHCI>;
649 clock-names = "sys_ck", "ref_ck", "mcu_ck",
650 "dma_ck", "xhci_ck";
651 status = "disabled";
652 };
653 };
654
655 mmc0: mmc@11230000 {
656 compatible = "mediatek,mt8365-mmc", "mediatek,mt8183-mmc";
657 reg = <0 0x11230000 0 0x1000>,
658 <0 0x11cd0000 0 0x1000>;
659 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_LOW>;
660 clocks = <&topckgen CLK_TOP_MSDC50_0_SEL>,
661 <&infracfg CLK_IFR_MSDC0_HCLK>,
662 <&infracfg CLK_IFR_MSDC0_SRC>;
663 clock-names = "source", "hclk", "source_cg";
664 status = "disabled";
665 };
666
667 mmc1: mmc@11240000 {
668 compatible = "mediatek,mt8365-mmc", "mediatek,mt8183-mmc";
669 reg = <0 0x11240000 0 0x1000>,
670 <0 0x11c90000 0 0x1000>;
671 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_LOW>;
672 clocks = <&topckgen CLK_TOP_MSDC30_1_SEL>,
673 <&infracfg CLK_IFR_MSDC1_HCLK>,
674 <&infracfg CLK_IFR_MSDC1_SRC>;
675 clock-names = "source", "hclk", "source_cg";
676 status = "disabled";
677 };
678
679 mmc2: mmc@11250000 {
680 compatible = "mediatek,mt8365-mmc", "mediatek,mt8183-mmc";
681 reg = <0 0x11250000 0 0x1000>,
682 <0 0x11c60000 0 0x1000>;
683 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_LOW>;
684 clocks = <&topckgen CLK_TOP_MSDC50_2_SEL>,
685 <&infracfg CLK_IFR_MSDC2_HCLK>,
686 <&infracfg CLK_IFR_MSDC2_SRC>,
687 <&infracfg CLK_IFR_MSDC2_BK>,
688 <&infracfg CLK_IFR_AP_MSDC0>;
689 clock-names = "source", "hclk", "source_cg",
690 "bus_clk", "sys_cg";
691 status = "disabled";
692 };
693
694 ethernet: ethernet@112a0000 {
695 compatible = "mediatek,mt8365-eth";
696 reg = <0 0x112a0000 0 0x1000>;
697 mediatek,pericfg = <&infracfg>;
698 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
699 clocks = <&topckgen CLK_TOP_ETH_SEL>,
700 <&infracfg CLK_IFR_NIC_AXI>,
701 <&infracfg CLK_IFR_NIC_SLV_AXI>;
702 clock-names = "core", "reg", "trans";
703 status = "disabled";
704 };
705
706 u3phy: t-phy@11cc0000 {
707 compatible = "mediatek,mt8365-tphy", "mediatek,generic-tphy-v2";
708 #address-cells = <1>;
709 #size-cells = <1>;
710 ranges = <0 0 0x11cc0000 0x9000>;
711
712 u2port0: usb-phy@0 {
713 reg = <0x0 0x400>;
714 clocks = <&topckgen CLK_TOP_SSUSB_PHY_CK_EN>,
715 <&topckgen CLK_TOP_USB20_48M_EN>;
716 clock-names = "ref", "da_ref";
717 #phy-cells = <1>;
718 };
719
720 u2port1: usb-phy@1000 {
721 reg = <0x1000 0x400>;
722 clocks = <&topckgen CLK_TOP_SSUSB_PHY_CK_EN>,
723 <&topckgen CLK_TOP_USB20_48M_EN>;
724 clock-names = "ref", "da_ref";
725 #phy-cells = <1>;
726 };
727 };
728
729 mmsys: syscon@14000000 {
730 compatible = "mediatek,mt8365-mmsys", "syscon";
731 reg = <0 0x14000000 0 0x1000>;
732 #clock-cells = <1>;
733 };
734
735 smi_common: smi@14002000 {
736 compatible = "mediatek,mt8365-smi-common";
737 reg = <0 0x14002000 0 0x1000>;
738 clocks = <&mmsys CLK_MM_MM_SMI_COMMON>,
739 <&mmsys CLK_MM_MM_SMI_COMMON>,
740 <&mmsys CLK_MM_MM_SMI_COMM0>,
741 <&mmsys CLK_MM_MM_SMI_COMM1>;
742 clock-names = "apb", "smi", "gals0", "gals1";
743 power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
744 };
745
746 larb0: larb@14003000 {
747 compatible = "mediatek,mt8365-smi-larb",
748 "mediatek,mt8186-smi-larb";
749 reg = <0 0x14003000 0 0x1000>;
750 mediatek,smi = <&smi_common>;
751 clocks = <&mmsys CLK_MM_MM_SMI_LARB0>,
752 <&mmsys CLK_MM_MM_SMI_LARB0>;
753 clock-names = "apb", "smi";
754 power-domains = <&spm MT8365_POWER_DOMAIN_MM>;
755 mediatek,larb-id = <0>;
756 };
757
758 camsys: syscon@15000000 {
759 compatible = "mediatek,mt8365-imgsys", "syscon";
760 reg = <0 0x15000000 0 0x1000>;
761 #clock-cells = <1>;
762 };
763
764 larb2: larb@15001000 {
765 compatible = "mediatek,mt8365-smi-larb",
766 "mediatek,mt8186-smi-larb";
767 reg = <0 0x15001000 0 0x1000>;
768 mediatek,smi = <&smi_common>;
769 clocks = <&mmsys CLK_MM_MM_SMI_IMG>,
770 <&camsys CLK_CAM_LARB2>;
771 clock-names = "apb", "smi";
772 power-domains = <&spm MT8365_POWER_DOMAIN_CAM>;
773 mediatek,larb-id = <2>;
774 };
775
776 vdecsys: syscon@16000000 {
777 compatible = "mediatek,mt8365-vdecsys", "syscon";
778 reg = <0 0x16000000 0 0x1000>;
779 #clock-cells = <1>;
780 };
781
782 larb3: larb@16010000 {
783 compatible = "mediatek,mt8365-smi-larb",
784 "mediatek,mt8186-smi-larb";
785 reg = <0 0x16010000 0 0x1000>;
786 mediatek,smi = <&smi_common>;
787 clocks = <&vdecsys CLK_VDEC_LARB1>,
788 <&vdecsys CLK_VDEC_LARB1>;
789 clock-names = "apb", "smi";
790 power-domains = <&spm MT8365_POWER_DOMAIN_VDEC>;
791 mediatek,larb-id = <3>;
792 };
793
794 vencsys: syscon@17000000 {
795 compatible = "mediatek,mt8365-vencsys", "syscon";
796 reg = <0 0x17000000 0 0x1000>;
797 #clock-cells = <1>;
798 };
799
800 larb1: larb@17010000 {
801 compatible = "mediatek,mt8365-smi-larb",
802 "mediatek,mt8186-smi-larb";
803 reg = <0 0x17010000 0 0x1000>;
804 mediatek,smi = <&smi_common>;
805 clocks = <&vencsys CLK_VENC>, <&vencsys CLK_VENC>;
806 clock-names = "apb", "smi";
807 power-domains = <&spm MT8365_POWER_DOMAIN_VENC>;
808 mediatek,larb-id = <1>;
809 };
810
811 apu: syscon@19020000 {
812 compatible = "mediatek,mt8365-apu", "syscon";
813 reg = <0 0x19020000 0 0x1000>;
814 #clock-cells = <1>;
815 };
816 };
817
818 timer {
819 compatible = "arm,armv8-timer";
820 interrupt-parent = <&gic>;
821 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
822 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
823 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
824 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
825 };
826
827 system_clk: dummy13m {
828 compatible = "fixed-clock";
829 clock-frequency = <13000000>;
830 #clock-cells = <0>;
831 };
832
833 systimer: timer@10017000 {
834 compatible = "mediatek,mt8365-systimer", "mediatek,mt6765-timer";
835 reg = <0 0x10017000 0 0x100>;
836 interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
837 clocks = <&system_clk>;
838 clock-names = "clk13m";
839 };
840};