blob: 380fa18a050e13d6e0e1dcee530e34517c22bdd1 [file] [log] [blame]
Antoine Tenart374ddcb2014-03-18 15:32:45 +01001/*
2 * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
3 *
Antoine Tenartaf989452015-04-27 21:39:46 +02004 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
7 * whole.
8 *
9 * a) This file is licensed under the terms of the GNU General Public
10 * License version 2. This program is licensed "as is" without any
11 * warranty of any kind, whether express or implied.
12 *
13 * Or, alternatively,
14 *
15 * b) Permission is hereby granted, free of charge, to any person
16 * obtaining a copy of this software and associated documentation
17 * files (the "Software"), to deal in the Software without
18 * restriction, including without limitation the rights to use,
19 * copy, modify, merge, publish, distribute, sublicense, and/or
20 * sell copies of the Software, and to permit persons to whom the
21 * Software is furnished to do so, subject to the following
22 * conditions:
23 *
24 * The above copyright notice and this permission notice shall be
25 * included in all copies or substantial portions of the Software.
26 *
27 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
29 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
31 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
32 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
33 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
34 * OTHER DEALINGS IN THE SOFTWARE.
Antoine Tenart374ddcb2014-03-18 15:32:45 +010035 */
36
Alexandre Belloni414dcf82014-05-12 22:07:35 +020037#include <dt-bindings/clock/berlin2q.h>
Antoine Tenart374ddcb2014-03-18 15:32:45 +010038#include <dt-bindings/interrupt-controller/arm-gic.h>
39
40#include "skeleton.dtsi"
41
42/ {
43 model = "Marvell Armada 1500 pro (BG2-Q) SoC";
44 compatible = "marvell,berlin2q", "marvell,berlin";
45
Jisheng Zhang487eacb2015-09-14 14:42:12 +080046 aliases {
47 serial0 = &uart0;
48 serial1 = &uart1;
49 };
50
Antoine Tenart374ddcb2014-03-18 15:32:45 +010051 cpus {
52 #address-cells = <1>;
53 #size-cells = <0>;
Antoine Ténartd19c9362014-06-04 18:03:46 +020054 enable-method = "marvell,berlin-smp";
Antoine Tenart374ddcb2014-03-18 15:32:45 +010055
56 cpu@0 {
57 compatible = "arm,cortex-a9";
58 device_type = "cpu";
59 next-level-cache = <&l2>;
60 reg = <0>;
61 };
62
63 cpu@1 {
64 compatible = "arm,cortex-a9";
65 device_type = "cpu";
66 next-level-cache = <&l2>;
67 reg = <1>;
68 };
69
70 cpu@2 {
71 compatible = "arm,cortex-a9";
72 device_type = "cpu";
73 next-level-cache = <&l2>;
74 reg = <2>;
75 };
76
77 cpu@3 {
78 compatible = "arm,cortex-a9";
79 device_type = "cpu";
80 next-level-cache = <&l2>;
81 reg = <3>;
82 };
83 };
84
Alexandre Belloni414dcf82014-05-12 22:07:35 +020085 refclk: oscillator {
Antoine Tenart374ddcb2014-03-18 15:32:45 +010086 compatible = "fixed-clock";
87 #clock-cells = <0>;
88 clock-frequency = <25000000>;
89 };
90
Antoine Tenart374ddcb2014-03-18 15:32:45 +010091 soc {
92 compatible = "simple-bus";
93 #address-cells = <1>;
94 #size-cells = <1>;
95
96 ranges = <0 0xf7000000 0x1000000>;
97 interrupt-parent = <&gic>;
98
Jisheng Zhangd4ce8042014-12-26 16:57:59 +080099 pmu {
100 compatible = "arm,cortex-a9-pmu";
101 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
102 <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
103 <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
104 <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
105 };
106
Antoine Tenart0d859a62014-05-19 22:03:00 +0200107 sdhci0: sdhci@ab0000 {
108 compatible = "mrvl,pxav3-mmc";
109 reg = <0xab0000 0x200>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200110 clocks = <&chip_clk CLKID_SDIO1XIN>;
Antoine Tenart0d859a62014-05-19 22:03:00 +0200111 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
112 status = "disabled";
113 };
114
115 sdhci1: sdhci@ab0800 {
116 compatible = "mrvl,pxav3-mmc";
117 reg = <0xab0800 0x200>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200118 clocks = <&chip_clk CLKID_SDIO1XIN>;
Antoine Tenart0d859a62014-05-19 22:03:00 +0200119 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
120 status = "disabled";
121 };
122
123 sdhci2: sdhci@ab1000 {
124 compatible = "mrvl,pxav3-mmc";
125 reg = <0xab1000 0x200>;
126 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200127 clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_NFC>;
Jisheng Zhang96ed6042014-12-31 16:57:50 +0800128 clock-names = "io", "core";
Antoine Tenart0d859a62014-05-19 22:03:00 +0200129 status = "disabled";
130 };
131
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100132 l2: l2-cache-controller@ac0000 {
133 compatible = "arm,pl310-cache";
134 reg = <0xac0000 0x1000>;
135 cache-level = <2>;
Jisheng Zhang44991eb2014-06-12 17:38:40 +0800136 arm,data-latency = <2 2 2>;
137 arm,tag-latency = <2 2 2>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100138 };
139
Sebastian Hesselbarth0bd4b342014-03-13 13:32:34 +0100140 scu: snoop-control-unit@ad0000 {
141 compatible = "arm,cortex-a9-scu";
142 reg = <0xad0000 0x58>;
143 };
144
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100145 local-timer@ad0600 {
146 compatible = "arm,cortex-a9-twd-timer";
147 reg = <0xad0600 0x20>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200148 clocks = <&chip_clk CLKID_TWD>;
Jisheng Zhang2356d2f2014-12-26 16:58:00 +0800149 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100150 };
151
152 gic: interrupt-controller@ad1000 {
153 compatible = "arm,cortex-a9-gic";
154 reg = <0xad1000 0x1000>, <0xad0100 0x100>;
155 interrupt-controller;
156 #interrupt-cells = <3>;
157 };
158
Antoine Tenartc5397112014-11-17 14:35:44 +0100159 usb_phy2: phy@a2f400 {
160 compatible = "marvell,berlin2-usb-phy";
161 reg = <0xa2f400 0x128>;
162 #phy-cells = <0>;
Antoine Tenart43225722015-05-16 00:50:40 +0200163 resets = <&chip_rst 0x104 14>;
Antoine Tenartc5397112014-11-17 14:35:44 +0100164 status = "disabled";
165 };
166
167 usb2: usb@a30000 {
168 compatible = "chipidea,usb2";
169 reg = <0xa30000 0x10000>;
170 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200171 clocks = <&chip_clk CLKID_USB2>;
Antoine Tenartc5397112014-11-17 14:35:44 +0100172 phys = <&usb_phy2>;
173 phy-names = "usb-phy";
174 status = "disabled";
175 };
176
177 usb_phy0: phy@b74000 {
178 compatible = "marvell,berlin2-usb-phy";
179 reg = <0xb74000 0x128>;
180 #phy-cells = <0>;
Antoine Tenart43225722015-05-16 00:50:40 +0200181 resets = <&chip_rst 0x104 12>;
Antoine Tenartc5397112014-11-17 14:35:44 +0100182 status = "disabled";
183 };
184
185 usb_phy1: phy@b78000 {
186 compatible = "marvell,berlin2-usb-phy";
187 reg = <0xb78000 0x128>;
188 #phy-cells = <0>;
Antoine Tenart43225722015-05-16 00:50:40 +0200189 resets = <&chip_rst 0x104 13>;
Antoine Tenartc5397112014-11-17 14:35:44 +0100190 status = "disabled";
191 };
192
Antoine Ténartbdc06cd2014-09-30 16:28:15 +0200193 eth0: ethernet@b90000 {
194 compatible = "marvell,pxa168-eth";
195 reg = <0xb90000 0x10000>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200196 clocks = <&chip_clk CLKID_GETH0>;
Antoine Ténartbdc06cd2014-09-30 16:28:15 +0200197 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
198 /* set by bootloader */
199 local-mac-address = [00 00 00 00 00 00];
200 #address-cells = <1>;
201 #size-cells = <0>;
Antoine Ténartf5799dc2014-10-22 20:26:51 +0200202 phy-connection-type = "mii";
Antoine Ténartbdc06cd2014-09-30 16:28:15 +0200203 phy-handle = <&ethphy0>;
204 status = "disabled";
205
206 ethphy0: ethernet-phy@0 {
207 reg = <0>;
208 };
209 };
210
Antoine Ténartd19c9362014-06-04 18:03:46 +0200211 cpu-ctrl@dd0000 {
212 compatible = "marvell,berlin-cpu-ctrl";
213 reg = <0xdd0000 0x10000>;
214 };
215
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100216 apb@e80000 {
217 compatible = "simple-bus";
218 #address-cells = <1>;
219 #size-cells = <1>;
220
221 ranges = <0 0xe80000 0x10000>;
222 interrupt-parent = <&aic>;
223
Antoine Tenartcedf57f2014-04-16 21:18:41 +0200224 gpio0: gpio@0400 {
225 compatible = "snps,dw-apb-gpio";
226 reg = <0x0400 0x400>;
227 #address-cells = <1>;
228 #size-cells = <0>;
229
230 porta: gpio-port@0 {
231 compatible = "snps,dw-apb-gpio-port";
232 gpio-controller;
233 #gpio-cells = <2>;
234 snps,nr-gpios = <32>;
235 reg = <0>;
236 interrupt-controller;
237 #interrupt-cells = <2>;
238 interrupts = <0>;
239 };
240 };
241
242 gpio1: gpio@0800 {
243 compatible = "snps,dw-apb-gpio";
244 reg = <0x0800 0x400>;
245 #address-cells = <1>;
246 #size-cells = <0>;
247
248 portb: gpio-port@1 {
249 compatible = "snps,dw-apb-gpio-port";
250 gpio-controller;
251 #gpio-cells = <2>;
252 snps,nr-gpios = <32>;
253 reg = <0>;
254 interrupt-controller;
255 #interrupt-cells = <2>;
256 interrupts = <1>;
257 };
258 };
259
260 gpio2: gpio@0c00 {
261 compatible = "snps,dw-apb-gpio";
262 reg = <0x0c00 0x400>;
263 #address-cells = <1>;
264 #size-cells = <0>;
265
266 portc: gpio-port@2 {
267 compatible = "snps,dw-apb-gpio-port";
268 gpio-controller;
269 #gpio-cells = <2>;
270 snps,nr-gpios = <32>;
271 reg = <0>;
272 interrupt-controller;
273 #interrupt-cells = <2>;
274 interrupts = <2>;
275 };
276 };
277
278 gpio3: gpio@1000 {
279 compatible = "snps,dw-apb-gpio";
280 reg = <0x1000 0x400>;
281 #address-cells = <1>;
282 #size-cells = <0>;
283
284 portd: gpio-port@3 {
285 compatible = "snps,dw-apb-gpio-port";
286 gpio-controller;
287 #gpio-cells = <2>;
288 snps,nr-gpios = <32>;
289 reg = <0>;
290 interrupt-controller;
291 #interrupt-cells = <2>;
292 interrupts = <3>;
293 };
294 };
295
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200296 i2c0: i2c@1400 {
297 compatible = "snps,designware-i2c";
298 #address-cells = <1>;
299 #size-cells = <0>;
300 reg = <0x1400 0x100>;
301 interrupt-parent = <&aic>;
302 interrupts = <4>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200303 clocks = <&chip_clk CLKID_CFG>;
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200304 pinctrl-0 = <&twsi0_pmux>;
305 pinctrl-names = "default";
306 status = "disabled";
307 };
308
309 i2c1: i2c@1800 {
310 compatible = "snps,designware-i2c";
311 #address-cells = <1>;
312 #size-cells = <0>;
313 reg = <0x1800 0x100>;
314 interrupt-parent = <&aic>;
315 interrupts = <5>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200316 clocks = <&chip_clk CLKID_CFG>;
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200317 pinctrl-0 = <&twsi1_pmux>;
318 pinctrl-names = "default";
319 status = "disabled";
320 };
321
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100322 timer0: timer@2c00 {
323 compatible = "snps,dw-apb-timer";
324 reg = <0x2c00 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200325 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100326 clock-names = "timer";
327 interrupts = <8>;
328 };
329
330 timer1: timer@2c14 {
331 compatible = "snps,dw-apb-timer";
332 reg = <0x2c14 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200333 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100334 clock-names = "timer";
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100335 };
336
337 timer2: timer@2c28 {
338 compatible = "snps,dw-apb-timer";
339 reg = <0x2c28 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200340 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100341 clock-names = "timer";
342 status = "disabled";
343 };
344
345 timer3: timer@2c3c {
346 compatible = "snps,dw-apb-timer";
347 reg = <0x2c3c 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200348 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100349 clock-names = "timer";
350 status = "disabled";
351 };
352
353 timer4: timer@2c50 {
354 compatible = "snps,dw-apb-timer";
355 reg = <0x2c50 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200356 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100357 clock-names = "timer";
358 status = "disabled";
359 };
360
361 timer5: timer@2c64 {
362 compatible = "snps,dw-apb-timer";
363 reg = <0x2c64 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200364 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100365 clock-names = "timer";
366 status = "disabled";
367 };
368
369 timer6: timer@2c78 {
370 compatible = "snps,dw-apb-timer";
371 reg = <0x2c78 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200372 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100373 clock-names = "timer";
374 status = "disabled";
375 };
376
377 timer7: timer@2c8c {
378 compatible = "snps,dw-apb-timer";
379 reg = <0x2c8c 0x14>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200380 clocks = <&chip_clk CLKID_CFG>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100381 clock-names = "timer";
382 status = "disabled";
383 };
384
385 aic: interrupt-controller@3800 {
386 compatible = "snps,dw-apb-ictl";
387 reg = <0x3800 0x30>;
388 interrupt-controller;
389 #interrupt-cells = <1>;
390 interrupt-parent = <&gic>;
391 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
392 };
393 };
394
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200395 chip: chip-control@ea0000 {
Antoine Tenartf3f94f72015-05-16 01:54:58 +0200396 compatible = "simple-mfd", "syscon";
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200397 reg = <0xea0000 0x400>, <0xdd0170 0x10>;
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200398
Antoine Tenarta457b862015-05-16 01:48:21 +0200399 chip_clk: clock {
400 compatible = "marvell,berlin2q-clk";
401 #clock-cells = <1>;
402 clocks = <&refclk>;
403 clock-names = "refclk";
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200404 };
405
Antoine Tenart630c9862015-05-16 01:18:07 +0200406 soc_pinctrl: pin-controller {
407 compatible = "marvell,berlin2q-soc-pinctrl";
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200408
Antoine Tenart630c9862015-05-16 01:18:07 +0200409 twsi0_pmux: twsi0-pmux {
410 groups = "G6";
411 function = "twsi0";
412 };
413
414 twsi1_pmux: twsi1-pmux {
415 groups = "G7";
416 function = "twsi1";
417 };
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200418 };
Antoine Tenart43225722015-05-16 00:50:40 +0200419
420 chip_rst: reset {
421 compatible = "marvell,berlin2-reset";
422 #reset-cells = <2>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200423 };
Sebastian Hesselbarth0bd4b342014-03-13 13:32:34 +0100424 };
425
Antoine Ténart70a2b712014-07-30 20:14:00 +0200426 ahci: sata@e90000 {
427 compatible = "marvell,berlin2q-ahci", "generic-ahci";
428 reg = <0xe90000 0x1000>;
429 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200430 clocks = <&chip_clk CLKID_SATA>;
Antoine Ténart70a2b712014-07-30 20:14:00 +0200431 #address-cells = <1>;
432 #size-cells = <0>;
433
434 sata0: sata-port@0 {
435 reg = <0>;
436 phys = <&sata_phy 0>;
437 status = "disabled";
438 };
439
440 sata1: sata-port@1 {
441 reg = <1>;
442 phys = <&sata_phy 1>;
443 status = "disabled";
444 };
445 };
446
447 sata_phy: phy@e900a0 {
448 compatible = "marvell,berlin2q-sata-phy";
449 reg = <0xe900a0 0x200>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200450 clocks = <&chip_clk CLKID_SATA>;
Antoine Ténart70a2b712014-07-30 20:14:00 +0200451 #address-cells = <1>;
452 #size-cells = <0>;
453 #phy-cells = <1>;
454 status = "disabled";
455
456 sata-phy@0 {
457 reg = <0>;
458 };
459
460 sata-phy@1 {
461 reg = <1>;
462 };
463 };
464
Antoine Tenartc5397112014-11-17 14:35:44 +0100465 usb0: usb@ed0000 {
466 compatible = "chipidea,usb2";
467 reg = <0xed0000 0x10000>;
468 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200469 clocks = <&chip_clk CLKID_USB0>;
Antoine Tenartc5397112014-11-17 14:35:44 +0100470 phys = <&usb_phy0>;
471 phy-names = "usb-phy";
472 status = "disabled";
473 };
474
475 usb1: usb@ee0000 {
476 compatible = "chipidea,usb2";
477 reg = <0xee0000 0x10000>;
478 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
Antoine Tenarta457b862015-05-16 01:48:21 +0200479 clocks = <&chip_clk CLKID_USB1>;
Antoine Tenartc5397112014-11-17 14:35:44 +0100480 phys = <&usb_phy1>;
481 phy-names = "usb-phy";
482 status = "disabled";
483 };
484
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100485 apb@fc0000 {
486 compatible = "simple-bus";
487 #address-cells = <1>;
488 #size-cells = <1>;
489
490 ranges = <0 0xfc0000 0x10000>;
491 interrupt-parent = <&sic>;
492
Jisheng Zhang5138d5c2014-12-26 16:58:01 +0800493 sm_gpio1: gpio@5000 {
494 compatible = "snps,dw-apb-gpio";
495 reg = <0x5000 0x400>;
496 #address-cells = <1>;
497 #size-cells = <0>;
498
499 portf: gpio-port@5 {
500 compatible = "snps,dw-apb-gpio-port";
501 gpio-controller;
502 #gpio-cells = <2>;
503 snps,nr-gpios = <32>;
504 reg = <0>;
505 };
506 };
507
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200508 i2c2: i2c@7000 {
509 compatible = "snps,designware-i2c";
510 #address-cells = <1>;
511 #size-cells = <0>;
512 reg = <0x7000 0x100>;
513 interrupt-parent = <&sic>;
514 interrupts = <6>;
515 clocks = <&refclk>;
516 pinctrl-0 = <&twsi2_pmux>;
517 pinctrl-names = "default";
518 status = "disabled";
519 };
520
521 i2c3: i2c@8000 {
522 compatible = "snps,designware-i2c";
523 #address-cells = <1>;
524 #size-cells = <0>;
525 reg = <0x8000 0x100>;
526 interrupt-parent = <&sic>;
527 interrupts = <7>;
528 clocks = <&refclk>;
529 pinctrl-0 = <&twsi3_pmux>;
530 pinctrl-names = "default";
531 status = "disabled";
532 };
533
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100534 uart0: uart@9000 {
535 compatible = "snps,dw-apb-uart";
536 reg = <0x9000 0x100>;
537 interrupt-parent = <&sic>;
538 interrupts = <8>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200539 clocks = <&refclk>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100540 reg-shift = <2>;
Antoine Tenart50cc24f2014-05-18 20:15:57 +0200541 pinctrl-0 = <&uart0_pmux>;
542 pinctrl-names = "default";
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100543 status = "disabled";
544 };
545
546 uart1: uart@a000 {
547 compatible = "snps,dw-apb-uart";
548 reg = <0xa000 0x100>;
549 interrupt-parent = <&sic>;
550 interrupts = <9>;
Alexandre Belloni414dcf82014-05-12 22:07:35 +0200551 clocks = <&refclk>;
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100552 reg-shift = <2>;
Antoine Tenart50cc24f2014-05-18 20:15:57 +0200553 pinctrl-0 = <&uart1_pmux>;
554 pinctrl-names = "default";
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100555 status = "disabled";
556 };
557
Jisheng Zhang5138d5c2014-12-26 16:58:01 +0800558 sm_gpio0: gpio@c000 {
559 compatible = "snps,dw-apb-gpio";
560 reg = <0xc000 0x400>;
561 #address-cells = <1>;
562 #size-cells = <0>;
563
564 porte: gpio-port@4 {
565 compatible = "snps,dw-apb-gpio-port";
566 gpio-controller;
567 #gpio-cells = <2>;
568 snps,nr-gpios = <32>;
569 reg = <0>;
570 };
571 };
572
Antoine Tenart50cc24f2014-05-18 20:15:57 +0200573 sysctrl: pin-controller@d000 {
Antoine Tenartf3f94f72015-05-16 01:54:58 +0200574 compatible = "simple-mfd", "syscon";
Antoine Tenart50cc24f2014-05-18 20:15:57 +0200575 reg = <0xd000 0x100>;
576
Antoine Tenart630c9862015-05-16 01:18:07 +0200577 sys_pinctrl: pin-controller {
578 compatible = "marvell,berlin2q-system-pinctrl";
Antoine Tenart50cc24f2014-05-18 20:15:57 +0200579
Antoine Tenart630c9862015-05-16 01:18:07 +0200580 uart0_pmux: uart0-pmux {
581 groups = "GSM12";
582 function = "uart0";
583 };
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200584
Antoine Tenart630c9862015-05-16 01:18:07 +0200585 uart1_pmux: uart1-pmux {
586 groups = "GSM14";
587 function = "uart1";
588 };
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200589
Antoine Tenart630c9862015-05-16 01:18:07 +0200590 twsi2_pmux: twsi2-pmux {
591 groups = "GSM13";
592 function = "twsi2";
593 };
594
595 twsi3_pmux: twsi3-pmux {
596 groups = "GSM14";
597 function = "twsi3";
598 };
Antoine Tenart50cc24f2014-05-18 20:15:57 +0200599 };
600
Antoine Tenart5be23612015-05-18 11:19:20 +0200601 adc: adc {
602 compatible = "marvell,berlin2-adc";
603 interrupts = <12>, <14>;
604 interrupt-names = "adc", "tsen";
Antoine Ténart99f3deb2014-06-03 09:33:09 +0200605 };
Antoine Tenart50cc24f2014-05-18 20:15:57 +0200606 };
607
Antoine Tenart374ddcb2014-03-18 15:32:45 +0100608 sic: interrupt-controller@e000 {
609 compatible = "snps,dw-apb-ictl";
610 reg = <0xe000 0x30>;
611 interrupt-controller;
612 #interrupt-cells = <1>;
613 interrupt-parent = <&gic>;
614 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
615 };
616 };
617 };
618};