blob: 71e4bfcc9e8128ff2c6a0ce358e7cc55941e6d3e [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2015 Marvell Technology Group Ltd.
4 *
5 * Author: Jisheng Zhang <jszhang@marvell.com>
6 */
7
8#include <dt-bindings/interrupt-controller/arm-gic.h>
9
10/ {
11 compatible = "marvell,berlin4ct", "marvell,berlin";
12 interrupt-parent = <&gic>;
13 #address-cells = <2>;
14 #size-cells = <2>;
15
16 aliases {
17 serial0 = &uart0;
18 };
19
20 psci {
21 compatible = "arm,psci-1.0", "arm,psci-0.2";
22 method = "smc";
23 };
24
25 cpus {
26 #address-cells = <1>;
27 #size-cells = <0>;
28
29 cpu0: cpu@0 {
30 compatible = "arm,cortex-a53";
31 device_type = "cpu";
32 reg = <0x0>;
33 enable-method = "psci";
34 next-level-cache = <&l2>;
35 cpu-idle-states = <&CPU_SLEEP_0>;
36 };
37
38 cpu1: cpu@1 {
39 compatible = "arm,cortex-a53";
40 device_type = "cpu";
41 reg = <0x1>;
42 enable-method = "psci";
43 next-level-cache = <&l2>;
44 cpu-idle-states = <&CPU_SLEEP_0>;
45 };
46
47 cpu2: cpu@2 {
48 compatible = "arm,cortex-a53";
49 device_type = "cpu";
50 reg = <0x2>;
51 enable-method = "psci";
52 next-level-cache = <&l2>;
53 cpu-idle-states = <&CPU_SLEEP_0>;
54 };
55
56 cpu3: cpu@3 {
57 compatible = "arm,cortex-a53";
58 device_type = "cpu";
59 reg = <0x3>;
60 enable-method = "psci";
61 next-level-cache = <&l2>;
62 cpu-idle-states = <&CPU_SLEEP_0>;
63 };
64
65 l2: cache {
66 compatible = "cache";
67 cache-level = <2>;
68 cache-unified;
69 };
70
71 idle-states {
72 entry-method = "psci";
73 CPU_SLEEP_0: cpu-sleep-0 {
74 compatible = "arm,idle-state";
75 local-timer-stop;
76 arm,psci-suspend-param = <0x0010000>;
77 entry-latency-us = <75>;
78 exit-latency-us = <155>;
79 min-residency-us = <1000>;
80 };
81 };
82 };
83
84 osc: osc {
85 compatible = "fixed-clock";
86 #clock-cells = <0>;
87 clock-frequency = <25000000>;
88 };
89
90 pmu {
Tom Rini762f85b2024-07-20 11:15:10 -060091 compatible = "arm,cortex-a53-pmu";
Tom Rini53633a82024-02-29 12:33:36 -050092 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
93 <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
94 <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
95 <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
96 interrupt-affinity = <&cpu0>,
97 <&cpu1>,
98 <&cpu2>,
99 <&cpu3>;
100 };
101
102 timer {
103 compatible = "arm,armv8-timer";
104 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
105 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
106 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
107 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
108 };
109
110 soc@f7000000 {
111 compatible = "simple-bus";
112 #address-cells = <1>;
113 #size-cells = <1>;
114 ranges = <0 0 0xf7000000 0x1000000>;
115
116 gic: interrupt-controller@901000 {
117 compatible = "arm,gic-400";
118 #interrupt-cells = <3>;
119 interrupt-controller;
120 reg = <0x901000 0x1000>,
121 <0x902000 0x2000>,
122 <0x904000 0x2000>,
123 <0x906000 0x2000>;
124 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
125 };
126
127 apb@e80000 {
128 compatible = "simple-bus";
129 #address-cells = <1>;
130 #size-cells = <1>;
131
132 ranges = <0 0xe80000 0x10000>;
133 interrupt-parent = <&aic>;
134
135 gpio0: gpio@400 {
136 compatible = "snps,dw-apb-gpio";
137 reg = <0x0400 0x400>;
138 #address-cells = <1>;
139 #size-cells = <0>;
140
141 porta: gpio-port@0 {
142 compatible = "snps,dw-apb-gpio-port";
143 gpio-controller;
144 #gpio-cells = <2>;
145 ngpios = <32>;
146 reg = <0>;
147 interrupt-controller;
148 #interrupt-cells = <2>;
149 interrupts = <0>;
150 };
151 };
152
153 gpio1: gpio@800 {
154 compatible = "snps,dw-apb-gpio";
155 reg = <0x0800 0x400>;
156 #address-cells = <1>;
157 #size-cells = <0>;
158
159 portb: gpio-port@1 {
160 compatible = "snps,dw-apb-gpio-port";
161 gpio-controller;
162 #gpio-cells = <2>;
163 ngpios = <32>;
164 reg = <0>;
165 interrupt-controller;
166 #interrupt-cells = <2>;
167 interrupts = <1>;
168 };
169 };
170
171 gpio2: gpio@c00 {
172 compatible = "snps,dw-apb-gpio";
173 reg = <0x0c00 0x400>;
174 #address-cells = <1>;
175 #size-cells = <0>;
176
177 portc: gpio-port@2 {
178 compatible = "snps,dw-apb-gpio-port";
179 gpio-controller;
180 #gpio-cells = <2>;
181 ngpios = <32>;
182 reg = <0>;
183 interrupt-controller;
184 #interrupt-cells = <2>;
185 interrupts = <2>;
186 };
187 };
188
189 gpio3: gpio@1000 {
190 compatible = "snps,dw-apb-gpio";
191 reg = <0x1000 0x400>;
192 #address-cells = <1>;
193 #size-cells = <0>;
194
195 portd: gpio-port@3 {
196 compatible = "snps,dw-apb-gpio-port";
197 gpio-controller;
198 #gpio-cells = <2>;
199 ngpios = <32>;
200 reg = <0>;
201 interrupt-controller;
202 #interrupt-cells = <2>;
203 interrupts = <3>;
204 };
205 };
206
207 aic: interrupt-controller@3800 {
208 compatible = "snps,dw-apb-ictl";
209 reg = <0x3800 0x30>;
210 interrupt-controller;
211 #interrupt-cells = <1>;
212 interrupt-parent = <&gic>;
213 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
214 };
215 };
216
217 soc_pinctrl: pin-controller@ea8000 {
218 compatible = "marvell,berlin4ct-soc-pinctrl";
219 reg = <0xea8000 0x14>;
220 };
221
222 avio_pinctrl: pin-controller@ea8400 {
223 compatible = "marvell,berlin4ct-avio-pinctrl";
224 reg = <0xea8400 0x8>;
225 };
226
227 apb@fc0000 {
228 compatible = "simple-bus";
229 #address-cells = <1>;
230 #size-cells = <1>;
231 ranges = <0 0xfc0000 0x10000>;
232 interrupt-parent = <&sic>;
233
234 sic: interrupt-controller@1000 {
235 compatible = "snps,dw-apb-ictl";
236 reg = <0x1000 0x30>;
237 interrupt-controller;
238 #interrupt-cells = <1>;
239 interrupt-parent = <&gic>;
240 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
241 };
242
243 wdt0: watchdog@3000 {
244 compatible = "snps,dw-wdt";
245 reg = <0x3000 0x100>;
246 clocks = <&osc>;
247 interrupts = <0>;
248 };
249
250 wdt1: watchdog@4000 {
251 compatible = "snps,dw-wdt";
252 reg = <0x4000 0x100>;
253 clocks = <&osc>;
254 interrupts = <1>;
255 };
256
257 wdt2: watchdog@5000 {
258 compatible = "snps,dw-wdt";
259 reg = <0x5000 0x100>;
260 clocks = <&osc>;
261 interrupts = <2>;
262 };
263
264 sm_gpio0: gpio@8000 {
265 compatible = "snps,dw-apb-gpio";
266 reg = <0x8000 0x400>;
267 #address-cells = <1>;
268 #size-cells = <0>;
269
270 porte: gpio-port@4 {
271 compatible = "snps,dw-apb-gpio-port";
272 gpio-controller;
273 #gpio-cells = <2>;
274 ngpios = <32>;
275 reg = <0>;
276 };
277 };
278
279 sm_gpio1: gpio@9000 {
280 compatible = "snps,dw-apb-gpio";
281 reg = <0x9000 0x400>;
282 #address-cells = <1>;
283 #size-cells = <0>;
284
285 portf: gpio-port@5 {
286 compatible = "snps,dw-apb-gpio-port";
287 gpio-controller;
288 #gpio-cells = <2>;
289 ngpios = <32>;
290 reg = <0>;
291 };
292 };
293
294 uart0: serial@d000 {
295 compatible = "snps,dw-apb-uart";
296 reg = <0xd000 0x100>;
297 interrupts = <8>;
298 clocks = <&osc>;
299 reg-shift = <2>;
300 status = "disabled";
301 pinctrl-0 = <&uart0_pmux>;
302 pinctrl-names = "default";
303 };
304 };
305
306 system_pinctrl: pin-controller@fe2200 {
307 compatible = "marvell,berlin4ct-system-pinctrl";
308 reg = <0xfe2200 0xc>;
309
310 uart0_pmux: uart0-pmux {
311 groups = "SM_URT0_TXD", "SM_URT0_RXD";
312 function = "uart0";
313 };
314 };
315 };
316};