1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 * Copyright (c) 2017 Amlogic, Inc. All rights reserved.
6 #include <dt-bindings/gpio/gpio.h>
7 #include <dt-bindings/interrupt-controller/irq.h>
8 #include <dt-bindings/interrupt-controller/arm-gic.h>
9 #include <dt-bindings/clock/axg-clkc.h>
10 #include <dt-bindings/gpio/meson-axg-gpio.h>
11 #include <dt-bindings/reset/amlogic,meson-axg-reset.h>
14 compatible = "amlogic,meson-axg";
16 interrupt-parent = <&gic>;
25 /* 16 MiB reserved for Hardware ROM Firmware */
26 hwrom_reserved: hwrom@0 {
27 reg = <0x0 0x0 0x0 0x1000000>;
31 /* Alternate 3 MiB reserved for ARM Trusted Firmware (BL31) */
32 secmon_reserved: secmon@5000000 {
33 reg = <0x0 0x05000000 0x0 0x300000>;
39 #address-cells = <0x2>;
44 compatible = "arm,cortex-a53", "arm,armv8";
46 enable-method = "psci";
47 next-level-cache = <&l2>;
52 compatible = "arm,cortex-a53", "arm,armv8";
54 enable-method = "psci";
55 next-level-cache = <&l2>;
60 compatible = "arm,cortex-a53", "arm,armv8";
62 enable-method = "psci";
63 next-level-cache = <&l2>;
68 compatible = "arm,cortex-a53", "arm,armv8";
70 enable-method = "psci";
71 next-level-cache = <&l2>;
80 compatible = "arm,cortex-a53-pmu";
81 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
83 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
84 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
85 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
89 compatible = "arm,psci-1.0";
94 compatible = "arm,armv8-timer";
95 interrupts = <GIC_PPI 13
96 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
98 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
100 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
102 (GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
106 compatible = "fixed-clock";
107 clock-frequency = <24000000>;
108 clock-output-names = "xtal";
112 ao_alt_xtal: ao_alt_xtal-clk {
113 compatible = "fixed-clock";
114 clock-frequency = <32000000>;
115 clock-output-names = "ao_alt_xtal";
120 compatible = "simple-bus";
121 #address-cells = <2>;
126 compatible = "simple-bus";
127 reg = <0x0 0xffe00000 0x0 0x200000>;
128 #address-cells = <2>;
130 ranges = <0x0 0x0 0x0 0xffe00000 0x0 0x200000>;
133 compatible = "amlogic,meson-axg-mmc";
134 reg = <0x0 0x5000 0x0 0x2000>;
135 interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>;
137 clocks = <&clkc CLKID_SD_EMMC_B>,
138 <&clkc CLKID_SD_EMMC_B_CLK0>,
139 <&clkc CLKID_FCLK_DIV2>;
140 clock-names = "core", "clkin0", "clkin1";
141 resets = <&reset RESET_SD_EMMC_B>;
144 sd_emmc_c: mmc@7000 {
145 compatible = "amlogic,meson-axg-mmc";
146 reg = <0x0 0x7000 0x0 0x2000>;
147 interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>;
149 clocks = <&clkc CLKID_SD_EMMC_C>,
150 <&clkc CLKID_SD_EMMC_C_CLK0>,
151 <&clkc CLKID_FCLK_DIV2>;
152 clock-names = "core", "clkin0", "clkin1";
153 resets = <&reset RESET_SD_EMMC_C>;
158 compatible = "simple-bus";
159 reg = <0x0 0xffd00000 0x0 0x25000>;
160 #address-cells = <2>;
162 ranges = <0x0 0x0 0x0 0xffd00000 0x0 0x25000>;
164 gpio_intc: interrupt-controller@f080 {
165 compatible = "amlogic,meson-gpio-intc";
166 reg = <0x0 0xf080 0x0 0x10>;
167 interrupt-controller;
168 #interrupt-cells = <2>;
169 amlogic,channel-interrupts = <64 65 66 67 68 69 70 71>;
174 compatible = "amlogic,meson-axg-ee-pwm";
175 reg = <0x0 0x1b000 0x0 0x20>;
181 compatible = "amlogic,meson-axg-ee-pwm";
182 reg = <0x0 0x1a000 0x0 0x20>;
187 reset: reset-controller@1004 {
188 compatible = "amlogic,meson-axg-reset";
189 reg = <0x0 0x01004 0x0 0x9c>;
194 compatible = "amlogic,meson-axg-spicc";
195 reg = <0x0 0x13000 0x0 0x3c>;
196 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
197 clocks = <&clkc CLKID_SPICC0>;
198 clock-names = "core";
199 #address-cells = <1>;
205 compatible = "amlogic,meson-axg-spicc";
206 reg = <0x0 0x15000 0x0 0x3c>;
207 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
208 clocks = <&clkc CLKID_SPICC1>;
209 clock-names = "core";
210 #address-cells = <1>;
216 compatible = "amlogic,meson-axg-i2c";
218 reg = <0x0 0x1f000 0x0 0x20>;
219 interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>,
220 <GIC_SPI 47 IRQ_TYPE_EDGE_RISING>;
221 #address-cells = <1>;
223 clocks = <&clkc CLKID_I2C>;
224 clock-names = "clk_i2c";
228 compatible = "amlogic,meson-axg-i2c";
229 #address-cells = <1>;
231 reg = <0x0 0x1e000 0x0 0x20>;
233 interrupts = <GIC_SPI 214 IRQ_TYPE_EDGE_RISING>,
234 <GIC_SPI 48 IRQ_TYPE_EDGE_RISING>;
235 clocks = <&clkc CLKID_I2C>;
236 clock-names = "clk_i2c";
240 compatible = "amlogic,meson-axg-i2c";
242 reg = <0x0 0x1d000 0x0 0x20>;
243 interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>,
244 <GIC_SPI 49 IRQ_TYPE_EDGE_RISING>;
245 #address-cells = <1>;
247 clocks = <&clkc CLKID_I2C>;
248 clock-names = "clk_i2c";
252 compatible = "amlogic,meson-axg-i2c";
254 reg = <0x0 0x1c000 0x0 0x20>;
255 interrupts = <GIC_SPI 39 IRQ_TYPE_EDGE_RISING>,
256 <GIC_SPI 50 IRQ_TYPE_EDGE_RISING>;
257 #address-cells = <1>;
259 clocks = <&clkc CLKID_I2C>;
260 clock-names = "clk_i2c";
263 uart_A: serial@24000 {
264 compatible = "amlogic,meson-gx-uart";
265 reg = <0x0 0x24000 0x0 0x18>;
266 interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
268 clocks = <&xtal>, <&clkc CLKID_UART0>, <&xtal>;
269 clock-names = "xtal", "pclk", "baud";
272 uart_B: serial@23000 {
273 compatible = "amlogic,meson-gx-uart";
274 reg = <0x0 0x23000 0x0 0x18>;
275 interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
277 clocks = <&xtal>, <&clkc CLKID_UART1>, <&xtal>;
278 clock-names = "xtal", "pclk", "baud";
282 ethmac: ethernet@ff3f0000 {
283 compatible = "amlogic,meson-gxbb-dwmac", "snps,dwmac";
284 reg = <0x0 0xff3f0000 0x0 0x10000
285 0x0 0xff634540 0x0 0x8>;
286 interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>;
287 interrupt-names = "macirq";
288 clocks = <&clkc CLKID_ETH>,
289 <&clkc CLKID_FCLK_DIV2>,
291 clock-names = "stmmaceth", "clkin0", "clkin1";
295 gic: interrupt-controller@ffc01000 {
296 compatible = "arm,gic-400";
297 reg = <0x0 0xffc01000 0 0x1000>,
298 <0x0 0xffc02000 0 0x2000>,
299 <0x0 0xffc04000 0 0x2000>,
300 <0x0 0xffc06000 0 0x2000>;
301 interrupt-controller;
302 interrupts = <GIC_PPI 9
303 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
304 #interrupt-cells = <3>;
305 #address-cells = <0>;
308 hiubus: bus@ff63c000 {
309 compatible = "simple-bus";
310 reg = <0x0 0xff63c000 0x0 0x1c00>;
311 #address-cells = <2>;
313 ranges = <0x0 0x0 0x0 0xff63c000 0x0 0x1c00>;
315 sysctrl: system-controller@0 {
316 compatible = "amlogic,meson-axg-hhi-sysctrl", "syscon", "simple-mfd";
319 clkc: clock-controller {
320 compatible = "amlogic,axg-clkc";
326 mailbox: mailbox@ff63dc00 {
327 compatible = "amlogic,meson-gx-mhu", "amlogic,meson-gxbb-mhu";
328 reg = <0 0xff63dc00 0 0x400>;
329 interrupts = <GIC_SPI 208 IRQ_TYPE_EDGE_RISING>,
330 <GIC_SPI 209 IRQ_TYPE_EDGE_RISING>,
331 <GIC_SPI 210 IRQ_TYPE_EDGE_RISING>;
335 periphs: periphs@ff634000 {
336 compatible = "simple-bus";
337 reg = <0x0 0xff634000 0x0 0x2000>;
338 #address-cells = <2>;
340 ranges = <0x0 0x0 0x0 0xff634000 0x0 0x2000>;
343 compatible = "amlogic,meson-rng";
344 reg = <0x0 0x18 0x0 0x4>;
345 clocks = <&clkc CLKID_RNG0>;
346 clock-names = "core";
349 pinctrl_periphs: pinctrl@480 {
350 compatible = "amlogic,meson-axg-periphs-pinctrl";
351 #address-cells = <2>;
356 reg = <0x0 0x00480 0x0 0x40>,
357 <0x0 0x004e8 0x0 0x14>,
358 <0x0 0x00520 0x0 0x14>,
359 <0x0 0x00430 0x0 0x3c>;
360 reg-names = "mux", "pull", "pull-enable", "gpio";
363 gpio-ranges = <&pinctrl_periphs 0 0 86>;
368 groups = "emmc_nand_d0",
383 emmc_clk_gate_pins: emmc_clk_gate {
386 function = "gpio_periphs";
406 sdio_clk_gate_pins: sdio_clk_gate {
409 function = "gpio_periphs";
417 eth_rmii_x_pins: eth-x-rmii {
419 groups = "eth_mdio_x",
421 "eth_rgmii_rx_clk_x",
432 eth_rmii_y_pins: eth-y-rmii {
434 groups = "eth_mdio_y",
436 "eth_rgmii_rx_clk_y",
447 eth_rgmii_x_pins: eth-x-rgmii {
449 groups = "eth_mdio_x",
451 "eth_rgmii_rx_clk_x",
467 eth_rgmii_y_pins: eth-y-rgmii {
469 groups = "eth_mdio_y",
471 "eth_rgmii_rx_clk_y",
487 pwm_a_a_pins: pwm_a_a {
494 pwm_a_x18_pins: pwm_a_x18 {
496 groups = "pwm_a_x18";
501 pwm_a_x20_pins: pwm_a_x20 {
503 groups = "pwm_a_x20";
508 pwm_a_z_pins: pwm_a_z {
515 pwm_b_a_pins: pwm_b_a {
522 pwm_b_x_pins: pwm_b_x {
529 pwm_b_z_pins: pwm_b_z {
536 pwm_c_a_pins: pwm_c_a {
543 pwm_c_x10_pins: pwm_c_x10 {
545 groups = "pwm_c_x10";
550 pwm_c_x17_pins: pwm_c_x17 {
552 groups = "pwm_c_x17";
557 pwm_d_x11_pins: pwm_d_x11 {
559 groups = "pwm_d_x11";
564 pwm_d_x16_pins: pwm_d_x16 {
566 groups = "pwm_d_x16";
573 groups = "spi0_miso",
580 spi0_ss0_pins: spi0_ss0 {
587 spi0_ss1_pins: spi0_ss1 {
594 spi0_ss2_pins: spi0_ss2 {
602 spi1_a_pins: spi1_a {
604 groups = "spi1_miso_a",
611 spi1_ss0_a_pins: spi1_ss0_a {
613 groups = "spi1_ss0_a";
618 spi1_ss1_pins: spi1_ss1 {
625 spi1_x_pins: spi1_x {
627 groups = "spi1_miso_x",
634 spi1_ss0_x_pins: spi1_ss0_x {
636 groups = "spi1_ss0_x";
649 i2c1_z_pins: i2c1_z {
651 groups = "i2c1_sck_z",
657 i2c1_x_pins: i2c1_x {
659 groups = "i2c1_sck_x",
665 i2c2_x_pins: i2c2_x {
667 groups = "i2c2_sck_x",
673 i2c2_a_pins: i2c2_a {
675 groups = "i2c2_sck_a",
681 i2c3_a6_pins: i2c3_a6 {
683 groups = "i2c3_sda_a6",
689 i2c3_a12_pins: i2c3_a12 {
691 groups = "i2c3_sda_a12",
697 i2c3_a19_pins: i2c3_a19 {
699 groups = "i2c3_sda_a19",
705 uart_a_pins: uart_a {
707 groups = "uart_tx_a",
713 uart_a_cts_rts_pins: uart_a_cts_rts {
715 groups = "uart_cts_a",
721 uart_b_x_pins: uart_b_x {
723 groups = "uart_tx_b_x",
729 uart_b_x_cts_rts_pins: uart_b_x_cts_rts {
731 groups = "uart_cts_b_x",
737 uart_b_z_pins: uart_b_z {
739 groups = "uart_tx_b_z",
745 uart_b_z_cts_rts_pins: uart_b_z_cts_rts {
747 groups = "uart_cts_b_z",
753 uart_ao_b_z_pins: uart_ao_b_z {
755 groups = "uart_ao_tx_b_z",
757 function = "uart_ao_b_z";
761 uart_ao_b_z_cts_rts_pins: uart_ao_b_z_cts_rts {
763 groups = "uart_ao_cts_b_z",
765 function = "uart_ao_b_z";
769 mclk_b_pins: mclk_b {
776 mclk_c_pins: mclk_c {
783 tdma_sclk_pins: tdma_sclk {
785 groups = "tdma_sclk";
790 tdma_sclk_slv_pins: tdma_sclk_slv {
792 groups = "tdma_sclk_slv";
797 tdma_fs_pins: tdma_fs {
804 tdma_fs_slv_pins: tdma_fs_slv {
806 groups = "tdma_fs_slv";
811 tdma_din0_pins: tdma_din0 {
813 groups = "tdma_din0";
818 tdma_dout0_x14_pins: tdma_dout0_x14 {
820 groups = "tdma_dout0_x14";
825 tdma_dout0_x15_pins: tdma_dout0_x15 {
827 groups = "tdma_dout0_x15";
832 tdma_dout1_pins: tdma_dout1 {
834 groups = "tdma_dout1";
839 tdma_din1_pins: tdma_din1 {
841 groups = "tdma_din1";
846 tdmb_sclk_pins: tdmb_sclk {
848 groups = "tdmb_sclk";
853 tdmb_sclk_slv_pins: tdmb_sclk_slv {
855 groups = "tdmb_sclk_slv";
860 tdmb_fs_pins: tdmb_fs {
867 tdmb_fs_slv_pins: tdmb_fs_slv {
869 groups = "tdmb_fs_slv";
874 tdmb_din0_pins: tdmb_din0 {
876 groups = "tdmb_din0";
881 tdmb_dout0_pins: tdmb_dout0 {
883 groups = "tdmb_dout0";
888 tdmb_din1_pins: tdmb_din1 {
890 groups = "tdmb_din1";
895 tdmb_dout1_pins: tdmb_dout1 {
897 groups = "tdmb_dout1";
902 tdmb_din2_pins: tdmb_din2 {
904 groups = "tdmb_din2";
909 tdmb_dout2_pins: tdmb_dout2 {
911 groups = "tdmb_dout2";
916 tdmb_din3_pins: tdmb_din3 {
918 groups = "tdmb_din3";
923 tdmb_dout3_pins: tdmb_dout3 {
925 groups = "tdmb_dout3";
930 tdmc_sclk_pins: tdmc_sclk {
932 groups = "tdmc_sclk";
937 tdmc_sclk_slv_pins: tdmc_sclk_slv {
939 groups = "tdmc_sclk_slv";
944 tdmc_fs_pins: tdmc_fs {
951 tdmc_fs_slv_pins: tdmc_fs_slv {
953 groups = "tdmc_fs_slv";
958 tdmc_din0_pins: tdmc_din0 {
960 groups = "tdmc_din0";
965 tdmc_dout0_pins: tdmc_dout0 {
967 groups = "tdmc_dout0";
972 tdmc_din1_pins: tdmc_din1 {
974 groups = "tdmc_din1";
979 tdmc_dout1_pins: tdmc_dout1 {
981 groups = "tdmc_dout1";
986 tdmc_din2_pins: tdmc_din2 {
988 groups = "tdmc_din2";
993 tdmc_dout2_pins: tdmc_dout2 {
995 groups = "tdmc_dout2";
1000 tdmc_din3_pins: tdmc_din3 {
1002 groups = "tdmc_din3";
1007 tdmc_dout3_pins: tdmc_dout3 {
1009 groups = "tdmc_dout3";
1016 sram: sram@fffc0000 {
1017 compatible = "amlogic,meson-axg-sram", "mmio-sram";
1018 reg = <0x0 0xfffc0000 0x0 0x20000>;
1019 #address-cells = <1>;
1021 ranges = <0 0x0 0xfffc0000 0x20000>;
1023 cpu_scp_lpri: scp-shmem@0 {
1024 compatible = "amlogic,meson-axg-scp-shmem";
1025 reg = <0x13000 0x400>;
1028 cpu_scp_hpri: scp-shmem@200 {
1029 compatible = "amlogic,meson-axg-scp-shmem";
1030 reg = <0x13400 0x400>;
1034 aobus: bus@ff800000 {
1035 compatible = "simple-bus";
1036 reg = <0x0 0xff800000 0x0 0x100000>;
1037 #address-cells = <2>;
1039 ranges = <0x0 0x0 0x0 0xff800000 0x0 0x100000>;
1041 pinctrl_aobus: pinctrl@14 {
1042 compatible = "amlogic,meson-axg-aobus-pinctrl";
1043 #address-cells = <2>;
1048 reg = <0x0 0x00014 0x0 0x8>,
1049 <0x0 0x0002c 0x0 0x4>,
1050 <0x0 0x00024 0x0 0x8>;
1051 reg-names = "mux", "pull", "gpio";
1054 gpio-ranges = <&pinctrl_aobus 0 0 15>;
1057 remote_input_ao_pins: remote_input_ao {
1059 groups = "remote_input_ao";
1060 function = "remote_input_ao";
1064 uart_ao_a_pins: uart_ao_a {
1066 groups = "uart_ao_tx_a",
1068 function = "uart_ao_a";
1072 uart_ao_a_cts_rts_pins: uart_ao_a_cts_rts {
1074 groups = "uart_ao_cts_a",
1076 function = "uart_ao_a";
1080 uart_ao_b_pins: uart_ao_b {
1082 groups = "uart_ao_tx_b",
1084 function = "uart_ao_b";
1088 uart_ao_b_cts_rts_pins: uart_ao_b_cts_rts {
1090 groups = "uart_ao_cts_b",
1092 function = "uart_ao_b";
1097 sec_AO: ao-secure@140 {
1098 compatible = "amlogic,meson-gx-ao-secure", "syscon";
1099 reg = <0x0 0x140 0x0 0x140>;
1100 amlogic,has-chip-id;
1103 pwm_AO_ab: pwm@7000 {
1104 compatible = "amlogic,meson-axg-ao-pwm";
1105 reg = <0x0 0x07000 0x0 0x20>;
1107 status = "disabled";
1110 pwm_AO_cd: pwm@2000 {
1111 compatible = "amlogic,meson-axg-ao-pwm";
1112 reg = <0x0 0x02000 0x0 0x20>;
1114 status = "disabled";
1118 compatible = "amlogic,meson-axg-i2c";
1119 status = "disabled";
1120 reg = <0x0 0x05000 0x0 0x20>;
1121 interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>;
1122 #address-cells = <1>;
1124 clocks = <&clkc CLKID_I2C>;
1125 clock-names = "clk_i2c";
1128 uart_AO: serial@3000 {
1129 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
1130 reg = <0x0 0x3000 0x0 0x18>;
1131 interrupts = <GIC_SPI 193 IRQ_TYPE_EDGE_RISING>;
1132 clocks = <&xtal>, <&clkc CLKID_CLK81>, <&xtal>;
1133 clock-names = "xtal", "pclk", "baud";
1134 status = "disabled";
1137 uart_AO_B: serial@4000 {
1138 compatible = "amlogic,meson-gx-uart", "amlogic,meson-ao-uart";
1139 reg = <0x0 0x4000 0x0 0x18>;
1140 interrupts = <GIC_SPI 197 IRQ_TYPE_EDGE_RISING>;
1141 clocks = <&xtal>, <&clkc CLKID_CLK81>, <&xtal>;
1142 clock-names = "xtal", "pclk", "baud";
1143 status = "disabled";
1147 compatible = "amlogic,meson-gxbb-ir";
1148 reg = <0x0 0x8000 0x0 0x20>;
1149 interrupts = <GIC_SPI 196 IRQ_TYPE_EDGE_RISING>;
1150 status = "disabled";