1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 * Copyright (c) 2016 Andreas Färber
5 * Copyright (c) 2016 BayLibre, SAS.
6 * Author: Neil Armstrong <narmstrong@baylibre.com>
8 * Copyright (c) 2016 Endless Computers, Inc.
9 * Author: Carlo Caione <carlo@endlessm.com>
12 #include <dt-bindings/gpio/gpio.h>
13 #include <dt-bindings/interrupt-controller/irq.h>
14 #include <dt-bindings/interrupt-controller/arm-gic.h>
15 #include <dt-bindings/power/meson-gxbb-power.h>
16 #include <dt-bindings/thermal/thermal.h>
19 interrupt-parent = <&gic>;
24 mmc0 = &sd_emmc_b; /* SD card */
25 mmc1 = &sd_emmc_c; /* eMMC */
26 mmc2 = &sd_emmc_a; /* SDIO */
34 /* 16 MiB reserved for Hardware ROM Firmware */
35 hwrom_reserved: hwrom@0 {
36 reg = <0x0 0x0 0x0 0x1000000>;
40 /* 2 MiB reserved for ARM Trusted Firmware (BL31) */
41 secmon_reserved: secmon@10000000 {
42 reg = <0x0 0x10000000 0x0 0x200000>;
46 /* Alternate 3 MiB reserved for ARM Trusted Firmware (BL31) */
47 secmon_reserved_alt: secmon@5000000 {
48 reg = <0x0 0x05000000 0x0 0x300000>;
52 /* 32 MiB reserved for ARM Trusted Firmware (BL32) */
53 secmon_reserved_bl32: secmon@5300000 {
54 reg = <0x0 0x05300000 0x0 0x2000000>;
59 compatible = "shared-dma-pool";
61 size = <0x0 0x10000000>;
62 alignment = <0x0 0x400000>;
72 simplefb_cvbs: framebuffer-cvbs {
73 compatible = "amlogic,simple-framebuffer",
75 amlogic,pipeline = "vpu-cvbs";
76 power-domains = <&pwrc PWRC_GXBB_VPU_ID>;
80 simplefb_hdmi: framebuffer-hdmi {
81 compatible = "amlogic,simple-framebuffer",
83 amlogic,pipeline = "vpu-hdmi";
84 power-domains = <&pwrc PWRC_GXBB_VPU_ID>;
90 #address-cells = <0x2>;
95 compatible = "arm,cortex-a53";
97 enable-method = "psci";
98 next-level-cache = <&l2>;
99 clocks = <&scpi_dvfs 0>;
100 #cooling-cells = <2>;
105 compatible = "arm,cortex-a53";
107 enable-method = "psci";
108 next-level-cache = <&l2>;
109 clocks = <&scpi_dvfs 0>;
110 #cooling-cells = <2>;
115 compatible = "arm,cortex-a53";
117 enable-method = "psci";
118 next-level-cache = <&l2>;
119 clocks = <&scpi_dvfs 0>;
120 #cooling-cells = <2>;
125 compatible = "arm,cortex-a53";
127 enable-method = "psci";
128 next-level-cache = <&l2>;
129 clocks = <&scpi_dvfs 0>;
130 #cooling-cells = <2>;
134 compatible = "cache";
141 polling-delay-passive = <250>; /* milliseconds */
142 polling-delay = <1000>; /* milliseconds */
144 thermal-sensors = <&scpi_sensors 0>;
147 cpu_passive: cpu-passive {
148 temperature = <80000>; /* millicelsius */
149 hysteresis = <2000>; /* millicelsius */
154 temperature = <90000>; /* millicelsius */
155 hysteresis = <2000>; /* millicelsius */
159 cpu_critical: cpu-critical {
160 temperature = <110000>; /* millicelsius */
161 hysteresis = <2000>; /* millicelsius */
166 cpu_cooling_maps: cooling-maps {
168 trip = <&cpu_passive>;
169 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
170 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
171 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
172 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
177 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
178 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
179 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
180 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
187 compatible = "arm,cortex-a53-pmu";
188 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
189 <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
190 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
191 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
192 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
196 compatible = "arm,psci-0.2";
201 compatible = "arm,armv8-timer";
202 interrupts = <GIC_PPI 13
203 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
205 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
207 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
209 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
213 compatible = "fixed-clock";
214 clock-frequency = <24000000>;
215 clock-output-names = "xtal";
221 compatible = "amlogic,meson-gx-sm", "amlogic,meson-gxbb-sm";
226 compatible = "amlogic,meson-gx-efuse", "amlogic,meson-gxbb-efuse";
227 #address-cells = <1>;
230 secure-monitor = <&sm>;
236 eth_mac: eth_mac@34 {
246 compatible = "amlogic,meson-gxbb-scpi", "arm,scpi-pre-1.0";
247 mboxes = <&mailbox 1 &mailbox 2>;
248 shmem = <&cpu_scp_lpri &cpu_scp_hpri>;
250 scpi_clocks: clocks {
251 compatible = "arm,scpi-clocks";
253 scpi_dvfs: scpi_clocks@0 {
254 compatible = "arm,scpi-dvfs-clocks";
257 clock-output-names = "vcpu";
261 scpi_sensors: sensors {
262 compatible = "amlogic,meson-gxbb-scpi-sensors", "arm,scpi-sensors";
263 #thermal-sensor-cells = <1>;
268 compatible = "simple-bus";
269 #address-cells = <2>;
274 compatible = "simple-bus";
275 reg = <0x0 0xc1100000 0x0 0x100000>;
276 #address-cells = <2>;
278 ranges = <0x0 0x0 0x0 0xc1100000 0x0 0x100000>;
280 gpio_intc: interrupt-controller@9880 {
281 compatible = "amlogic,meson-gpio-intc";
282 reg = <0x0 0x9880 0x0 0x10>;
283 interrupt-controller;
284 #interrupt-cells = <2>;
285 amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>;
289 reset: reset-controller@4404 {
290 compatible = "amlogic,meson-gxbb-reset";
291 reg = <0x0 0x04404 0x0 0x9c>;
295 aiu: audio-controller@5400 {
296 compatible = "amlogic,aiu";
297 #sound-dai-cells = <2>;
298 sound-name-prefix = "AIU";
299 reg = <0x0 0x5400 0x0 0x2ac>;
300 interrupts = <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>,
301 <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
302 interrupt-names = "i2s", "spdif";
306 uart_A: serial@84c0 {
307 compatible = "amlogic,meson-gx-uart";
308 reg = <0x0 0x84c0 0x0 0x18>;
309 interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
314 uart_B: serial@84dc {
315 compatible = "amlogic,meson-gx-uart";
316 reg = <0x0 0x84dc 0x0 0x18>;
317 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
322 compatible = "amlogic,meson-gxbb-i2c";
323 reg = <0x0 0x08500 0x0 0x20>;
324 interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>;
325 #address-cells = <1>;
331 compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
332 reg = <0x0 0x08550 0x0 0x10>;
338 compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
339 reg = <0x0 0x08650 0x0 0x10>;
345 compatible = "amlogic,meson-saradc";
346 reg = <0x0 0x8680 0x0 0x34>;
347 #io-channel-cells = <1>;
348 interrupts = <GIC_SPI 73 IRQ_TYPE_EDGE_RISING>;
353 compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
354 reg = <0x0 0x086c0 0x0 0x10>;
359 uart_C: serial@8700 {
360 compatible = "amlogic,meson-gx-uart";
361 reg = <0x0 0x8700 0x0 0x18>;
362 interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
367 compatible = "amlogic,meson-gx-clk-measure";
368 reg = <0x0 0x8758 0x0 0x10>;
372 compatible = "amlogic,meson-gxbb-i2c";
373 reg = <0x0 0x087c0 0x0 0x20>;
374 interrupts = <GIC_SPI 214 IRQ_TYPE_EDGE_RISING>;
375 #address-cells = <1>;
381 compatible = "amlogic,meson-gxbb-i2c";
382 reg = <0x0 0x087e0 0x0 0x20>;
383 interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>;
384 #address-cells = <1>;
390 compatible = "amlogic,meson-gx-spicc";
391 reg = <0x0 0x08d80 0x0 0x80>;
392 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
393 #address-cells = <1>;
399 compatible = "amlogic,meson-gxbb-spifc";
400 reg = <0x0 0x08c80 0x0 0x80>;
401 #address-cells = <1>;
407 compatible = "amlogic,meson-gxbb-wdt";
408 reg = <0x0 0x098d0 0x0 0x10>;
413 gic: interrupt-controller@c4301000 {
414 compatible = "arm,gic-400";
415 reg = <0x0 0xc4301000 0 0x1000>,
416 <0x0 0xc4302000 0 0x2000>,
417 <0x0 0xc4304000 0 0x2000>,
418 <0x0 0xc4306000 0 0x2000>;
419 interrupt-controller;
420 interrupts = <GIC_PPI 9
421 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
422 #interrupt-cells = <3>;
423 #address-cells = <0>;
426 sram: sram@c8000000 {
427 compatible = "mmio-sram";
428 reg = <0x0 0xc8000000 0x0 0x14000>;
430 #address-cells = <1>;
432 ranges = <0 0x0 0xc8000000 0x14000>;
434 cpu_scp_lpri: scp-sram@0 {
435 compatible = "amlogic,meson-gxbb-scp-shmem";
436 reg = <0x13000 0x400>;
439 cpu_scp_hpri: scp-sram@200 {
440 compatible = "amlogic,meson-gxbb-scp-shmem";
441 reg = <0x13400 0x400>;
445 aobus: bus@c8100000 {
446 compatible = "simple-bus";
447 reg = <0x0 0xc8100000 0x0 0x100000>;
448 #address-cells = <2>;
450 ranges = <0x0 0x0 0x0 0xc8100000 0x0 0x100000>;
452 sysctrl_AO: sys-ctrl@0 {
453 compatible = "amlogic,meson-gx-ao-sysctrl", "simple-mfd", "syscon";
454 reg = <0x0 0x0 0x0 0x100>;
456 clkc_AO: clock-controller {
457 compatible = "amlogic,meson-gx-aoclkc";
464 compatible = "amlogic,meson-gx-ao-cec";
465 reg = <0x0 0x00100 0x0 0x14>;
466 interrupts = <GIC_SPI 199 IRQ_TYPE_EDGE_RISING>;
470 sec_AO: ao-secure@140 {
471 compatible = "amlogic,meson-gx-ao-secure", "syscon";
472 reg = <0x0 0x140 0x0 0x140>;
476 uart_AO: serial@4c0 {
477 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
478 reg = <0x0 0x004c0 0x0 0x18>;
479 interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
483 uart_AO_B: serial@4e0 {
484 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
485 reg = <0x0 0x004e0 0x0 0x18>;
486 interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
491 compatible = "amlogic,meson-gxbb-i2c";
492 reg = <0x0 0x500 0x0 0x20>;
493 interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>;
494 #address-cells = <1>;
500 compatible = "amlogic,meson-gx-ao-pwm", "amlogic,meson-gxbb-ao-pwm";
501 reg = <0x0 0x00550 0x0 0x10>;
507 compatible = "amlogic,meson-gx-ir", "amlogic,meson-gxbb-ir";
508 reg = <0x0 0x00580 0x0 0x40>;
509 interrupts = <GIC_SPI 196 IRQ_TYPE_EDGE_RISING>;
514 vdec: video-codec@c8820000 {
515 compatible = "amlogic,gx-vdec";
516 reg = <0x0 0xc8820000 0x0 0x10000>,
517 <0x0 0xc110a580 0x0 0xe4>;
518 reg-names = "dos", "esparser";
520 interrupts = <GIC_SPI 44 IRQ_TYPE_EDGE_RISING>,
521 <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
522 interrupt-names = "vdec", "esparser";
524 amlogic,ao-sysctrl = <&sysctrl_AO>;
525 amlogic,canvas = <&canvas>;
528 periphs: bus@c8834000 {
529 compatible = "simple-bus";
530 reg = <0x0 0xc8834000 0x0 0x2000>;
531 #address-cells = <2>;
533 ranges = <0x0 0x0 0x0 0xc8834000 0x0 0x2000>;
536 compatible = "amlogic,meson-rng";
537 reg = <0x0 0x0 0x0 0x4>;
541 dmcbus: bus@c8838000 {
542 compatible = "simple-bus";
543 reg = <0x0 0xc8838000 0x0 0x400>;
544 #address-cells = <2>;
546 ranges = <0x0 0x0 0x0 0xc8838000 0x0 0x400>;
548 canvas: video-lut@48 {
549 compatible = "amlogic,canvas";
550 reg = <0x0 0x48 0x0 0x14>;
554 hiubus: bus@c883c000 {
555 compatible = "simple-bus";
556 reg = <0x0 0xc883c000 0x0 0x2000>;
557 #address-cells = <2>;
559 ranges = <0x0 0x0 0x0 0xc883c000 0x0 0x2000>;
561 sysctrl: system-controller@0 {
562 compatible = "amlogic,meson-gx-hhi-sysctrl", "simple-mfd", "syscon";
565 pwrc: power-controller {
566 compatible = "amlogic,meson-gxbb-pwrc";
567 #power-domain-cells = <1>;
568 amlogic,ao-sysctrl = <&sysctrl_AO>;
572 mailbox: mailbox@404 {
573 compatible = "amlogic,meson-gxbb-mhu";
574 reg = <0 0x404 0 0x4c>;
575 interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>,
576 <GIC_SPI 209 IRQ_TYPE_EDGE_RISING>,
577 <GIC_SPI 210 IRQ_TYPE_EDGE_RISING>;
582 ethmac: ethernet@c9410000 {
583 compatible = "amlogic,meson-gxbb-dwmac",
586 reg = <0x0 0xc9410000 0x0 0x10000>,
587 <0x0 0xc8834540 0x0 0x4>;
588 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
589 interrupt-names = "macirq";
590 rx-fifo-depth = <4096>;
591 tx-fifo-depth = <2048>;
592 power-domains = <&pwrc PWRC_GXBB_ETHERNET_MEM_ID>;
597 compatible = "simple-bus";
598 reg = <0x0 0xd0000000 0x0 0x200000>;
599 #address-cells = <2>;
601 ranges = <0x0 0x0 0x0 0xd0000000 0x0 0x200000>;
603 sd_emmc_a: mmc@70000 {
604 compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
605 reg = <0x0 0x70000 0x0 0x800>;
606 interrupts = <GIC_SPI 216 IRQ_TYPE_LEVEL_HIGH>;
610 sd_emmc_b: mmc@72000 {
611 compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
612 reg = <0x0 0x72000 0x0 0x800>;
613 interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>;
617 sd_emmc_c: mmc@74000 {
618 compatible = "amlogic,meson-gx-mmc", "amlogic,meson-gxbb-mmc";
619 reg = <0x0 0x74000 0x0 0x800>;
620 interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>;
626 compatible = "amlogic,meson-gx-vpu";
627 reg = <0x0 0xd0100000 0x0 0x100000>,
628 <0x0 0xc883c000 0x0 0x1000>;
629 reg-names = "vpu", "hhi";
630 interrupts = <GIC_SPI 3 IRQ_TYPE_EDGE_RISING>;
631 #address-cells = <1>;
633 amlogic,canvas = <&canvas>;
635 /* CVBS VDAC output port */
636 cvbs_vdac_port: port@0 {
640 /* HDMI-TX output port */
641 hdmi_tx_port: port@1 {
644 hdmi_tx_out: endpoint {
645 remote-endpoint = <&hdmi_tx_in>;
650 hdmi_tx: hdmi-tx@c883a000 {
651 compatible = "amlogic,meson-gx-dw-hdmi";
652 reg = <0x0 0xc883a000 0x0 0x1c>;
653 interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
654 #address-cells = <1>;
656 #sound-dai-cells = <0>;
657 sound-name-prefix = "HDMITX";
661 hdmi_tx_venc_port: port@0 {
664 hdmi_tx_in: endpoint {
665 remote-endpoint = <&hdmi_tx_out>;
670 hdmi_tx_tmds_port: port@1 {