blob: cd3287c95f1a38d0cdc3ba7b3de62c4d39abdcb5 [file] [log] [blame]
Antoine Tenart374ddcb2014-03-18 15:32:45 +01001/*
2 * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
3 *
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2. This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
7 */
8
Alexandre Belloni414dcf82014-05-12 22:07:35 +02009#include <dt-bindings/clock/berlin2q.h>
Antoine Tenart374ddcb2014-03-18 15:32:45 +010010#include <dt-bindings/interrupt-controller/arm-gic.h>
11
12#include "skeleton.dtsi"
13
14/ {
15 model = "Marvell Armada 1500 pro (BG2-Q) SoC";
16 compatible = "marvell,berlin2q", "marvell,berlin";
17
18 cpus {
19 #address-cells = <1>;
20 #size-cells = <0>;
21
22 cpu@0 {
23 compatible = "arm,cortex-a9";
24 device_type = "cpu";
25 next-level-cache = <&l2>;
26 reg = <0>;
27 };
28
29 cpu@1 {
30 compatible = "arm,cortex-a9";
31 device_type = "cpu";
32 next-level-cache = <&l2>;
33 reg = <1>;
34 };
35
36 cpu@2 {
37 compatible = "arm,cortex-a9";
38 device_type = "cpu";
39 next-level-cache = <&l2>;
40 reg = <2>;
41 };
42
43 cpu@3 {
44 compatible = "arm,cortex-a9";
45 device_type = "cpu";
46 next-level-cache = <&l2>;
47 reg = <3>;
48 };
49 };
50
Alexandre Belloni414dcf82014-05-12 22:07:35 +020051 refclk: oscillator {
Antoine Tenart374ddcb2014-03-18 15:32:45 +010052 compatible = "fixed-clock";
53 #clock-cells = <0>;
54 clock-frequency = <25000000>;
55 };
56
Antoine Tenart374ddcb2014-03-18 15:32:45 +010057 soc {
58 compatible = "simple-bus";
59 #address-cells = <1>;
60 #size-cells = <1>;
61
62 ranges = <0 0xf7000000 0x1000000>;
63 interrupt-parent = <&gic>;
64
65 l2: l2-cache-controller@ac0000 {
66 compatible = "arm,pl310-cache";
67 reg = <0xac0000 0x1000>;
68 cache-level = <2>;
69 };
70
Sebastian Hesselbarth0bd4b342014-03-13 13:32:34 +010071 scu: snoop-control-unit@ad0000 {
72 compatible = "arm,cortex-a9-scu";
73 reg = <0xad0000 0x58>;
74 };
75
Antoine Tenart374ddcb2014-03-18 15:32:45 +010076 local-timer@ad0600 {
77 compatible = "arm,cortex-a9-twd-timer";
78 reg = <0xad0600 0x20>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +020079 clocks = <&chip CLKID_TWD>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +010080 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
81 };
82
83 gic: interrupt-controller@ad1000 {
84 compatible = "arm,cortex-a9-gic";
85 reg = <0xad1000 0x1000>, <0xad0100 0x100>;
86 interrupt-controller;
87 #interrupt-cells = <3>;
88 };
89
90 apb@e80000 {
91 compatible = "simple-bus";
92 #address-cells = <1>;
93 #size-cells = <1>;
94
95 ranges = <0 0xe80000 0x10000>;
96 interrupt-parent = <&aic>;
97
Antoine Tenartcedf57f2014-04-16 21:18:41 +020098 gpio0: gpio@0400 {
99 compatible = "snps,dw-apb-gpio";
100 reg = <0x0400 0x400>;
101 #address-cells = <1>;
102 #size-cells = <0>;
103
104 porta: gpio-port@0 {
105 compatible = "snps,dw-apb-gpio-port";
106 gpio-controller;
107 #gpio-cells = <2>;
108 snps,nr-gpios = <32>;
109 reg = <0>;
110 interrupt-controller;
111 #interrupt-cells = <2>;
112 interrupts = <0>;
113 };
114 };
115
116 gpio1: gpio@0800 {
117 compatible = "snps,dw-apb-gpio";
118 reg = <0x0800 0x400>;
119 #address-cells = <1>;
120 #size-cells = <0>;
121
122 portb: gpio-port@1 {
123 compatible = "snps,dw-apb-gpio-port";
124 gpio-controller;
125 #gpio-cells = <2>;
126 snps,nr-gpios = <32>;
127 reg = <0>;
128 interrupt-controller;
129 #interrupt-cells = <2>;
130 interrupts = <1>;
131 };
132 };
133
134 gpio2: gpio@0c00 {
135 compatible = "snps,dw-apb-gpio";
136 reg = <0x0c00 0x400>;
137 #address-cells = <1>;
138 #size-cells = <0>;
139
140 portc: gpio-port@2 {
141 compatible = "snps,dw-apb-gpio-port";
142 gpio-controller;
143 #gpio-cells = <2>;
144 snps,nr-gpios = <32>;
145 reg = <0>;
146 interrupt-controller;
147 #interrupt-cells = <2>;
148 interrupts = <2>;
149 };
150 };
151
152 gpio3: gpio@1000 {
153 compatible = "snps,dw-apb-gpio";
154 reg = <0x1000 0x400>;
155 #address-cells = <1>;
156 #size-cells = <0>;
157
158 portd: gpio-port@3 {
159 compatible = "snps,dw-apb-gpio-port";
160 gpio-controller;
161 #gpio-cells = <2>;
162 snps,nr-gpios = <32>;
163 reg = <0>;
164 interrupt-controller;
165 #interrupt-cells = <2>;
166 interrupts = <3>;
167 };
168 };
169
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100170 timer0: timer@2c00 {
171 compatible = "snps,dw-apb-timer";
172 reg = <0x2c00 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200173 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100174 clock-names = "timer";
175 interrupts = <8>;
176 };
177
178 timer1: timer@2c14 {
179 compatible = "snps,dw-apb-timer";
180 reg = <0x2c14 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200181 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100182 clock-names = "timer";
183 status = "disabled";
184 };
185
186 timer2: timer@2c28 {
187 compatible = "snps,dw-apb-timer";
188 reg = <0x2c28 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200189 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100190 clock-names = "timer";
191 status = "disabled";
192 };
193
194 timer3: timer@2c3c {
195 compatible = "snps,dw-apb-timer";
196 reg = <0x2c3c 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200197 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100198 clock-names = "timer";
199 status = "disabled";
200 };
201
202 timer4: timer@2c50 {
203 compatible = "snps,dw-apb-timer";
204 reg = <0x2c50 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200205 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100206 clock-names = "timer";
207 status = "disabled";
208 };
209
210 timer5: timer@2c64 {
211 compatible = "snps,dw-apb-timer";
212 reg = <0x2c64 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200213 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100214 clock-names = "timer";
215 status = "disabled";
216 };
217
218 timer6: timer@2c78 {
219 compatible = "snps,dw-apb-timer";
220 reg = <0x2c78 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200221 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100222 clock-names = "timer";
223 status = "disabled";
224 };
225
226 timer7: timer@2c8c {
227 compatible = "snps,dw-apb-timer";
228 reg = <0x2c8c 0x14>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200229 clocks = <&chip CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100230 clock-names = "timer";
231 status = "disabled";
232 };
233
234 aic: interrupt-controller@3800 {
235 compatible = "snps,dw-apb-ictl";
236 reg = <0x3800 0x30>;
237 interrupt-controller;
238 #interrupt-cells = <1>;
239 interrupt-parent = <&gic>;
240 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
241 };
Antoine Tenartcedf57f2014-04-16 21:18:41 +0200242
243 gpio4: gpio@5000 {
244 compatible = "snps,dw-apb-gpio";
245 reg = <0x5000 0x400>;
246 #address-cells = <1>;
247 #size-cells = <0>;
248
249 porte: gpio-port@4 {
250 compatible = "snps,dw-apb-gpio-port";
251 gpio-controller;
252 #gpio-cells = <2>;
253 snps,nr-gpios = <32>;
254 reg = <0>;
255 };
256 };
257
258 gpio5: gpio@c000 {
259 compatible = "snps,dw-apb-gpio";
260 reg = <0xc000 0x400>;
261 #address-cells = <1>;
262 #size-cells = <0>;
263
264 portf: gpio-port@5 {
265 compatible = "snps,dw-apb-gpio-port";
266 gpio-controller;
267 #gpio-cells = <2>;
268 snps,nr-gpios = <32>;
269 reg = <0>;
270 };
271 };
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100272 };
273
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200274 chip: chip-control@ea0000 {
275 compatible = "marvell,berlin2q-chip-ctrl";
276 #clock-cells = <1>;
277 reg = <0xea0000 0x400>, <0xdd0170 0x10>;
278 clocks = <&refclk>;
279 clock-names = "refclk";
Sebastian Hesselbarth0bd4b342014-03-13 13:32:34 +0100280 };
281
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100282 apb@fc0000 {
283 compatible = "simple-bus";
284 #address-cells = <1>;
285 #size-cells = <1>;
286
287 ranges = <0 0xfc0000 0x10000>;
288 interrupt-parent = <&sic>;
289
290 uart0: uart@9000 {
291 compatible = "snps,dw-apb-uart";
292 reg = <0x9000 0x100>;
293 interrupt-parent = <&sic>;
294 interrupts = <8>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200295 clocks = <&refclk>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100296 reg-shift = <2>;
297 status = "disabled";
298 };
299
300 uart1: uart@a000 {
301 compatible = "snps,dw-apb-uart";
302 reg = <0xa000 0x100>;
303 interrupt-parent = <&sic>;
304 interrupts = <9>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200305 clocks = <&refclk>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100306 reg-shift = <2>;
307 status = "disabled";
308 };
309
310 sic: interrupt-controller@e000 {
311 compatible = "snps,dw-apb-ictl";
312 reg = <0xe000 0x30>;
313 interrupt-controller;
314 #interrupt-cells = <1>;
315 interrupt-parent = <&gic>;
316 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
317 };
318 };
319 };
320};