1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
4 */
5
6#include <dt-bindings/interrupt-controller/irq.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h>
8#include <dt-bindings/gpio/meson-a1-gpio.h>
9
10/ {
11	compatible = "amlogic,a1";
12
13	interrupt-parent = <&gic>;
14	#address-cells = <2>;
15	#size-cells = <2>;
16
17	cpus {
18		#address-cells = <2>;
19		#size-cells = <0>;
20
21		cpu0: cpu@0 {
22			device_type = "cpu";
23			compatible = "arm,cortex-a35";
24			reg = <0x0 0x0>;
25			enable-method = "psci";
26			next-level-cache = <&l2>;
27		};
28
29		cpu1: cpu@1 {
30			device_type = "cpu";
31			compatible = "arm,cortex-a35";
32			reg = <0x0 0x1>;
33			enable-method = "psci";
34			next-level-cache = <&l2>;
35		};
36
37		l2: l2-cache0 {
38			compatible = "cache";
39			cache-level = <2>;
40		};
41	};
42
43	psci {
44		compatible = "arm,psci-1.0";
45		method = "smc";
46	};
47
48	reserved-memory {
49		#address-cells = <2>;
50		#size-cells = <2>;
51		ranges;
52
53		linux,cma {
54			compatible = "shared-dma-pool";
55			reusable;
56			size = <0x0 0x800000>;
57			alignment = <0x0 0x400000>;
58			linux,cma-default;
59		};
60	};
61
62	sm: secure-monitor {
63		compatible = "amlogic,meson-gxbb-sm";
64
65		pwrc: power-controller {
66			compatible = "amlogic,meson-a1-pwrc";
67			#power-domain-cells = <1>;
68			status = "okay";
69		};
70	};
71
72	soc {
73		compatible = "simple-bus";
74		#address-cells = <2>;
75		#size-cells = <2>;
76		ranges;
77
78		apb: bus@fe000000 {
79			compatible = "simple-bus";
80			reg = <0x0 0xfe000000 0x0 0x1000000>;
81			#address-cells = <2>;
82			#size-cells = <2>;
83			ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x1000000>;
84
85
86			reset: reset-controller@0 {
87				compatible = "amlogic,meson-a1-reset";
88				reg = <0x0 0x0 0x0 0x8c>;
89				#reset-cells = <1>;
90			};
91
92			periphs_pinctrl: pinctrl@400 {
93				compatible = "amlogic,meson-a1-periphs-pinctrl";
94				#address-cells = <2>;
95				#size-cells = <2>;
96				ranges;
97
98				gpio: bank@400 {
99					reg = <0x0 0x0400 0x0 0x003c>,
100					      <0x0 0x0480 0x0 0x0118>;
101					reg-names = "mux", "gpio";
102					gpio-controller;
103					#gpio-cells = <2>;
104					gpio-ranges = <&periphs_pinctrl 0 0 62>;
105				};
106
107			};
108
109			uart_AO: serial@1c00 {
110				compatible = "amlogic,meson-gx-uart",
111					     "amlogic,meson-ao-uart";
112				reg = <0x0 0x1c00 0x0 0x18>;
113				interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
114				clocks = <&xtal>, <&xtal>, <&xtal>;
115				clock-names = "xtal", "pclk", "baud";
116				status = "disabled";
117			};
118
119			uart_AO_B: serial@2000 {
120				compatible = "amlogic,meson-gx-uart",
121					     "amlogic,meson-ao-uart";
122				reg = <0x0 0x2000 0x0 0x18>;
123				interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
124				clocks = <&xtal>, <&xtal>, <&xtal>;
125				clock-names = "xtal", "pclk", "baud";
126				status = "disabled";
127			};
128
129			gpio_intc: interrupt-controller@0440 {
130				compatible = "amlogic,meson-a1-gpio-intc",
131					     "amlogic,meson-gpio-intc";
132				reg = <0x0 0x0440 0x0 0x14>;
133				interrupt-controller;
134				#interrupt-cells = <2>;
135				amlogic,channel-interrupts =
136					<49 50 51 52 53 54 55 56>;
137			};
138		};
139
140		gic: interrupt-controller@ff901000 {
141			compatible = "arm,gic-400";
142			reg = <0x0 0xff901000 0x0 0x1000>,
143			      <0x0 0xff902000 0x0 0x2000>,
144			      <0x0 0xff904000 0x0 0x2000>,
145			      <0x0 0xff906000 0x0 0x2000>;
146			interrupt-controller;
147			interrupts = <GIC_PPI 9
148				(GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
149			#interrupt-cells = <3>;
150			#address-cells = <0>;
151		};
152	};
153
154	timer {
155		compatible = "arm,armv8-timer";
156		interrupts = <GIC_PPI 13
157			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
158			     <GIC_PPI 14
159			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
160			     <GIC_PPI 11
161			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>,
162			     <GIC_PPI 10
163			(GIC_CPU_MASK_RAW(0xff) | IRQ_TYPE_LEVEL_LOW)>;
164	};
165
166	xtal: xtal-clk {
167		compatible = "fixed-clock";
168		clock-frequency = <24000000>;
169		clock-output-names = "xtal";
170		#clock-cells = <0>;
171	};
172};
173