1 // SPDX-License-Identifier: (GPL-2.0 OR MIT)
3 * Copyright (C) 2020 MediaTek Inc.
4 * Author: Seiya Wang <seiya.wang@mediatek.com>
8 #include <dt-bindings/clock/mt8192-clk.h>
9 #include <dt-bindings/interrupt-controller/arm-gic.h>
10 #include <dt-bindings/interrupt-controller/irq.h>
11 #include <dt-bindings/pinctrl/mt8192-pinfunc.h>
14 compatible = "mediatek,mt8192";
15 interrupt-parent = <&gic>;
20 compatible = "fixed-clock";
22 clock-frequency = <26000000>;
23 clock-output-names = "clk26m";
27 compatible = "fixed-clock";
29 clock-frequency = <32768>;
30 clock-output-names = "clk32k";
39 compatible = "arm,cortex-a55";
41 enable-method = "psci";
42 clock-frequency = <1701000000>;
43 cpu-idle-states = <&cpuoff_l &clusteroff_l>;
44 next-level-cache = <&l2_0>;
45 capacity-dmips-mhz = <530>;
50 compatible = "arm,cortex-a55";
52 enable-method = "psci";
53 clock-frequency = <1701000000>;
54 cpu-idle-states = <&cpuoff_l &clusteroff_l>;
55 next-level-cache = <&l2_0>;
56 capacity-dmips-mhz = <530>;
61 compatible = "arm,cortex-a55";
63 enable-method = "psci";
64 clock-frequency = <1701000000>;
65 cpu-idle-states = <&cpuoff_l &clusteroff_l>;
66 next-level-cache = <&l2_0>;
67 capacity-dmips-mhz = <530>;
72 compatible = "arm,cortex-a55";
74 enable-method = "psci";
75 clock-frequency = <1701000000>;
76 cpu-idle-states = <&cpuoff_l &clusteroff_l>;
77 next-level-cache = <&l2_0>;
78 capacity-dmips-mhz = <530>;
83 compatible = "arm,cortex-a76";
85 enable-method = "psci";
86 clock-frequency = <2171000000>;
87 cpu-idle-states = <&cpuoff_b &clusteroff_b>;
88 next-level-cache = <&l2_1>;
89 capacity-dmips-mhz = <1024>;
94 compatible = "arm,cortex-a76";
96 enable-method = "psci";
97 clock-frequency = <2171000000>;
98 cpu-idle-states = <&cpuoff_b &clusteroff_b>;
99 next-level-cache = <&l2_1>;
100 capacity-dmips-mhz = <1024>;
105 compatible = "arm,cortex-a76";
107 enable-method = "psci";
108 clock-frequency = <2171000000>;
109 cpu-idle-states = <&cpuoff_b &clusteroff_b>;
110 next-level-cache = <&l2_1>;
111 capacity-dmips-mhz = <1024>;
116 compatible = "arm,cortex-a76";
118 enable-method = "psci";
119 clock-frequency = <2171000000>;
120 cpu-idle-states = <&cpuoff_b &clusteroff_b>;
121 next-level-cache = <&l2_1>;
122 capacity-dmips-mhz = <1024>;
158 compatible = "cache";
159 next-level-cache = <&l3_0>;
163 compatible = "cache";
164 next-level-cache = <&l3_0>;
168 compatible = "cache";
172 entry-method = "arm,psci";
174 compatible = "arm,idle-state";
175 arm,psci-suspend-param = <0x00010001>;
177 entry-latency-us = <55>;
178 exit-latency-us = <140>;
179 min-residency-us = <780>;
182 compatible = "arm,idle-state";
183 arm,psci-suspend-param = <0x00010001>;
185 entry-latency-us = <35>;
186 exit-latency-us = <145>;
187 min-residency-us = <720>;
189 clusteroff_l: clusteroff_l {
190 compatible = "arm,idle-state";
191 arm,psci-suspend-param = <0x01010002>;
193 entry-latency-us = <60>;
194 exit-latency-us = <155>;
195 min-residency-us = <860>;
197 clusteroff_b: clusteroff_b {
198 compatible = "arm,idle-state";
199 arm,psci-suspend-param = <0x01010002>;
201 entry-latency-us = <40>;
202 exit-latency-us = <155>;
203 min-residency-us = <780>;
209 compatible = "arm,cortex-a55-pmu";
210 interrupt-parent = <&gic>;
211 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster0>;
215 compatible = "arm,cortex-a76-pmu";
216 interrupt-parent = <&gic>;
217 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_cluster1>;
221 compatible = "arm,psci-1.0";
226 compatible = "arm,armv8-timer";
227 interrupt-parent = <&gic>;
228 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH 0>,
229 <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH 0>,
230 <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH 0>,
231 <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH 0>;
232 clock-frequency = <13000000>;
236 #address-cells = <2>;
238 compatible = "simple-bus";
241 gic: interrupt-controller@c000000 {
242 compatible = "arm,gic-v3";
243 #interrupt-cells = <4>;
244 #redistributor-regions = <1>;
245 interrupt-parent = <&gic>;
246 interrupt-controller;
247 reg = <0 0x0c000000 0 0x40000>,
248 <0 0x0c040000 0 0x200000>;
249 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
252 ppi_cluster0: interrupt-partition-0 {
253 affinity = <&cpu0 &cpu1 &cpu2 &cpu3>;
255 ppi_cluster1: interrupt-partition-1 {
256 affinity = <&cpu4 &cpu5 &cpu6 &cpu7>;
261 topckgen: syscon@10000000 {
262 compatible = "mediatek,mt8192-topckgen", "syscon";
263 reg = <0 0x10000000 0 0x1000>;
267 infracfg: syscon@10001000 {
268 compatible = "mediatek,mt8192-infracfg", "syscon";
269 reg = <0 0x10001000 0 0x1000>;
273 pericfg: syscon@10003000 {
274 compatible = "mediatek,mt8192-pericfg", "syscon";
275 reg = <0 0x10003000 0 0x1000>;
279 pio: pinctrl@10005000 {
280 compatible = "mediatek,mt8192-pinctrl";
281 reg = <0 0x10005000 0 0x1000>,
282 <0 0x11c20000 0 0x1000>,
283 <0 0x11d10000 0 0x1000>,
284 <0 0x11d30000 0 0x1000>,
285 <0 0x11d40000 0 0x1000>,
286 <0 0x11e20000 0 0x1000>,
287 <0 0x11e70000 0 0x1000>,
288 <0 0x11ea0000 0 0x1000>,
289 <0 0x11f20000 0 0x1000>,
290 <0 0x11f30000 0 0x1000>,
291 <0 0x1000b000 0 0x1000>;
292 reg-names = "iocfg0", "iocfg_rm", "iocfg_bm",
293 "iocfg_bl", "iocfg_br", "iocfg_lm",
294 "iocfg_lb", "iocfg_rt", "iocfg_lt",
298 gpio-ranges = <&pio 0 0 220>;
299 interrupt-controller;
300 interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH 0>;
301 #interrupt-cells = <2>;
304 apmixedsys: syscon@1000c000 {
305 compatible = "mediatek,mt8192-apmixedsys", "syscon";
306 reg = <0 0x1000c000 0 0x1000>;
310 systimer: timer@10017000 {
311 compatible = "mediatek,mt8192-timer",
312 "mediatek,mt6765-timer";
313 reg = <0 0x10017000 0 0x1000>;
314 interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH 0>;
316 clock-names = "clk13m";
319 scp_adsp: clock-controller@10720000 {
320 compatible = "mediatek,mt8192-scp_adsp";
321 reg = <0 0x10720000 0 0x1000>;
325 uart0: serial@11002000 {
326 compatible = "mediatek,mt8192-uart",
327 "mediatek,mt6577-uart";
328 reg = <0 0x11002000 0 0x1000>;
329 interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH 0>;
330 clocks = <&clk26m>, <&clk26m>;
331 clock-names = "baud", "bus";
335 uart1: serial@11003000 {
336 compatible = "mediatek,mt8192-uart",
337 "mediatek,mt6577-uart";
338 reg = <0 0x11003000 0 0x1000>;
339 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
340 clocks = <&clk26m>, <&clk26m>;
341 clock-names = "baud", "bus";
345 imp_iic_wrap_c: clock-controller@11007000 {
346 compatible = "mediatek,mt8192-imp_iic_wrap_c";
347 reg = <0 0x11007000 0 0x1000>;
352 compatible = "mediatek,mt8192-spi",
353 "mediatek,mt6765-spi";
354 #address-cells = <1>;
356 reg = <0 0x1100a000 0 0x1000>;
357 interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH 0>;
361 clock-names = "parent-clk", "sel-clk", "spi-clk";
366 compatible = "mediatek,mt8192-spi",
367 "mediatek,mt6765-spi";
368 #address-cells = <1>;
370 reg = <0 0x11010000 0 0x1000>;
371 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH 0>;
375 clock-names = "parent-clk", "sel-clk", "spi-clk";
380 compatible = "mediatek,mt8192-spi",
381 "mediatek,mt6765-spi";
382 #address-cells = <1>;
384 reg = <0 0x11012000 0 0x1000>;
385 interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH 0>;
389 clock-names = "parent-clk", "sel-clk", "spi-clk";
394 compatible = "mediatek,mt8192-spi",
395 "mediatek,mt6765-spi";
396 #address-cells = <1>;
398 reg = <0 0x11013000 0 0x1000>;
399 interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH 0>;
403 clock-names = "parent-clk", "sel-clk", "spi-clk";
408 compatible = "mediatek,mt8192-spi",
409 "mediatek,mt6765-spi";
410 #address-cells = <1>;
412 reg = <0 0x11018000 0 0x1000>;
413 interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH 0>;
417 clock-names = "parent-clk", "sel-clk", "spi-clk";
422 compatible = "mediatek,mt8192-spi",
423 "mediatek,mt6765-spi";
424 #address-cells = <1>;
426 reg = <0 0x11019000 0 0x1000>;
427 interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH 0>;
431 clock-names = "parent-clk", "sel-clk", "spi-clk";
436 compatible = "mediatek,mt8192-spi",
437 "mediatek,mt6765-spi";
438 #address-cells = <1>;
440 reg = <0 0x1101d000 0 0x1000>;
441 interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH 0>;
445 clock-names = "parent-clk", "sel-clk", "spi-clk";
450 compatible = "mediatek,mt8192-spi",
451 "mediatek,mt6765-spi";
452 #address-cells = <1>;
454 reg = <0 0x1101e000 0 0x1000>;
455 interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH 0>;
459 clock-names = "parent-clk", "sel-clk", "spi-clk";
463 nor_flash: spi@11234000 {
464 compatible = "mediatek,mt8192-nor";
465 reg = <0 0x11234000 0 0xe0>;
466 interrupts = <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH 0>;
470 clock-names = "spi", "sf", "axi";
471 #address-cells = <1>;
476 audsys: clock-controller@11210000 {
477 compatible = "mediatek,mt8192-audsys", "syscon";
478 reg = <0 0x11210000 0 0x1000>;
483 compatible = "mediatek,mt8192-i2c";
484 reg = <0 0x11cb0000 0 0x1000>,
485 <0 0x10217300 0 0x80>;
486 interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH 0>;
487 clocks = <&clk26m>, <&clk26m>;
488 clock-names = "main", "dma";
490 #address-cells = <1>;
495 imp_iic_wrap_e: clock-controller@11cb1000 {
496 compatible = "mediatek,mt8192-imp_iic_wrap_e";
497 reg = <0 0x11cb1000 0 0x1000>;
502 compatible = "mediatek,mt8192-i2c";
503 reg = <0 0x11d00000 0 0x1000>,
504 <0 0x10217600 0 0x180>;
505 interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH 0>;
506 clocks = <&clk26m>, <&clk26m>;
507 clock-names = "main", "dma";
509 #address-cells = <1>;
515 compatible = "mediatek,mt8192-i2c";
516 reg = <0 0x11d01000 0 0x1000>,
517 <0 0x10217780 0 0x180>;
518 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH 0>;
519 clocks = <&clk26m>, <&clk26m>;
520 clock-names = "main", "dma";
522 #address-cells = <1>;
528 compatible = "mediatek,mt8192-i2c";
529 reg = <0 0x11d02000 0 0x1000>,
530 <0 0x10217900 0 0x180>;
531 interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH 0>;
532 clocks = <&clk26m>, <&clk26m>;
533 clock-names = "main", "dma";
535 #address-cells = <1>;
540 imp_iic_wrap_s: clock-controller@11d03000 {
541 compatible = "mediatek,mt8192-imp_iic_wrap_s";
542 reg = <0 0x11d03000 0 0x1000>;
547 compatible = "mediatek,mt8192-i2c";
548 reg = <0 0x11d20000 0 0x1000>,
549 <0 0x10217100 0 0x80>;
550 interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH 0>;
551 clocks = <&clk26m>, <&clk26m>;
552 clock-names = "main", "dma";
554 #address-cells = <1>;
560 compatible = "mediatek,mt8192-i2c";
561 reg = <0 0x11d21000 0 0x1000>,
562 <0 0x10217180 0 0x180>;
563 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH 0>;
564 clocks = <&clk26m>, <&clk26m>;
565 clock-names = "main", "dma";
567 #address-cells = <1>;
573 compatible = "mediatek,mt8192-i2c";
574 reg = <0 0x11d22000 0 0x1000>,
575 <0 0x10217380 0 0x180>;
576 interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>;
577 clocks = <&clk26m>, <&clk26m>;
578 clock-names = "main", "dma";
580 #address-cells = <1>;
585 imp_iic_wrap_ws: clock-controller@11d23000 {
586 compatible = "mediatek,mt8192-imp_iic_wrap_ws";
587 reg = <0 0x11d23000 0 0x1000>;
592 compatible = "mediatek,mt8192-i2c";
593 reg = <0 0x11e00000 0 0x1000>,
594 <0 0x10217500 0 0x80>;
595 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH 0>;
596 clocks = <&clk26m>, <&clk26m>;
597 clock-names = "main", "dma";
599 #address-cells = <1>;
604 imp_iic_wrap_w: clock-controller@11e01000 {
605 compatible = "mediatek,mt8192-imp_iic_wrap_w";
606 reg = <0 0x11e01000 0 0x1000>;
611 compatible = "mediatek,mt8192-i2c";
612 reg = <0 0x11f00000 0 0x1000>,
613 <0 0x10217080 0 0x80>;
614 interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH 0>;
615 clocks = <&clk26m>, <&clk26m>;
616 clock-names = "main", "dma";
618 #address-cells = <1>;
624 compatible = "mediatek,mt8192-i2c";
625 reg = <0 0x11f01000 0 0x1000>,
626 <0 0x10217580 0 0x80>;
627 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>;
628 clocks = <&clk26m>, <&clk26m>;
629 clock-names = "main", "dma";
631 #address-cells = <1>;
636 imp_iic_wrap_n: clock-controller@11f02000 {
637 compatible = "mediatek,mt8192-imp_iic_wrap_n";
638 reg = <0 0x11f02000 0 0x1000>;
642 msdc_top: clock-controller@11f10000 {
643 compatible = "mediatek,mt8192-msdc_top";
644 reg = <0 0x11f10000 0 0x1000>;
648 msdc: clock-controller@11f60000 {
649 compatible = "mediatek,mt8192-msdc";
650 reg = <0 0x11f60000 0 0x1000>;
654 mfgcfg: clock-controller@13fbf000 {
655 compatible = "mediatek,mt8192-mfgcfg";
656 reg = <0 0x13fbf000 0 0x1000>;
660 mmsys: syscon@14000000 {
661 compatible = "mediatek,mt8192-mmsys", "syscon";
662 reg = <0 0x14000000 0 0x1000>;
666 imgsys: clock-controller@15020000 {
667 compatible = "mediatek,mt8192-imgsys";
668 reg = <0 0x15020000 0 0x1000>;
672 imgsys2: clock-controller@15820000 {
673 compatible = "mediatek,mt8192-imgsys2";
674 reg = <0 0x15820000 0 0x1000>;
678 vdecsys_soc: clock-controller@1600f000 {
679 compatible = "mediatek,mt8192-vdecsys_soc";
680 reg = <0 0x1600f000 0 0x1000>;
684 vdecsys: clock-controller@1602f000 {
685 compatible = "mediatek,mt8192-vdecsys";
686 reg = <0 0x1602f000 0 0x1000>;
690 vencsys: clock-controller@17000000 {
691 compatible = "mediatek,mt8192-vencsys";
692 reg = <0 0x17000000 0 0x1000>;
696 camsys: clock-controller@1a000000 {
697 compatible = "mediatek,mt8192-camsys";
698 reg = <0 0x1a000000 0 0x1000>;
702 camsys_rawa: clock-controller@1a04f000 {
703 compatible = "mediatek,mt8192-camsys_rawa";
704 reg = <0 0x1a04f000 0 0x1000>;
708 camsys_rawb: clock-controller@1a06f000 {
709 compatible = "mediatek,mt8192-camsys_rawb";
710 reg = <0 0x1a06f000 0 0x1000>;
714 camsys_rawc: clock-controller@1a08f000 {
715 compatible = "mediatek,mt8192-camsys_rawc";
716 reg = <0 0x1a08f000 0 0x1000>;
720 ipesys: clock-controller@1b000000 {
721 compatible = "mediatek,mt8192-ipesys";
722 reg = <0 0x1b000000 0 0x1000>;
726 mdpsys: clock-controller@1f000000 {
727 compatible = "mediatek,mt8192-mdpsys";
728 reg = <0 0x1f000000 0 0x1000>;