Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[sfrench/cifs-2.6.git] / arch / arm / boot / dts / berlin2.dtsi
1 /*
2  * Device Tree Include file for Marvell Armada 1500 (Berlin BG2) SoC
3  *
4  * Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
5  *
6  * based on GPL'ed 2.6 kernel sources
7  *  (c) Marvell International Ltd.
8  *
9  * 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
14 #include "skeleton.dtsi"
15 #include <dt-bindings/clock/berlin2.h>
16 #include <dt-bindings/interrupt-controller/arm-gic.h>
17
18 / {
19         model = "Marvell Armada 1500 (BG2) SoC";
20         compatible = "marvell,berlin2", "marvell,berlin";
21
22         cpus {
23                 #address-cells = <1>;
24                 #size-cells = <0>;
25                 enable-method = "marvell,berlin-smp";
26
27                 cpu@0 {
28                         compatible = "marvell,pj4b";
29                         device_type = "cpu";
30                         next-level-cache = <&l2>;
31                         reg = <0>;
32                 };
33
34                 cpu@1 {
35                         compatible = "marvell,pj4b";
36                         device_type = "cpu";
37                         next-level-cache = <&l2>;
38                         reg = <1>;
39                 };
40         };
41
42         refclk: oscillator {
43                 compatible = "fixed-clock";
44                 #clock-cells = <0>;
45                 clock-frequency = <25000000>;
46         };
47
48         soc {
49                 compatible = "simple-bus";
50                 #address-cells = <1>;
51                 #size-cells = <1>;
52                 interrupt-parent = <&gic>;
53
54                 ranges = <0 0xf7000000 0x1000000>;
55
56                 l2: l2-cache-controller@ac0000 {
57                         compatible = "marvell,tauros3-cache", "arm,pl310-cache";
58                         reg = <0xac0000 0x1000>;
59                         cache-unified;
60                         cache-level = <2>;
61                 };
62
63                 scu: snoop-control-unit@ad0000 {
64                         compatible = "arm,cortex-a9-scu";
65                         reg = <0xad0000 0x58>;
66                 };
67
68                 gic: interrupt-controller@ad1000 {
69                         compatible = "arm,cortex-a9-gic";
70                         reg = <0xad1000 0x1000>, <0xad0100 0x0100>;
71                         interrupt-controller;
72                         #interrupt-cells = <3>;
73                 };
74
75                 local-timer@ad0600 {
76                         compatible = "arm,cortex-a9-twd-timer";
77                         reg = <0xad0600 0x20>;
78                         interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
79                         clocks = <&chip CLKID_TWD>;
80                 };
81
82                 cpu-ctrl@dd0000 {
83                         compatible = "marvell,berlin-cpu-ctrl";
84                         reg = <0xdd0000 0x10000>;
85                 };
86
87                 apb@e80000 {
88                         compatible = "simple-bus";
89                         #address-cells = <1>;
90                         #size-cells = <1>;
91
92                         ranges = <0 0xe80000 0x10000>;
93                         interrupt-parent = <&aic>;
94
95                         gpio0: gpio@0400 {
96                                 compatible = "snps,dw-apb-gpio";
97                                 reg = <0x0400 0x400>;
98                                 #address-cells = <1>;
99                                 #size-cells = <0>;
100
101                                 porta: gpio-port@0 {
102                                         compatible = "snps,dw-apb-gpio-port";
103                                         gpio-controller;
104                                         #gpio-cells = <2>;
105                                         snps,nr-gpios = <8>;
106                                         reg = <0>;
107                                         interrupt-controller;
108                                         #interrupt-cells = <2>;
109                                         interrupts = <0>;
110                                 };
111                         };
112
113                         gpio1: gpio@0800 {
114                                 compatible = "snps,dw-apb-gpio";
115                                 reg = <0x0800 0x400>;
116                                 #address-cells = <1>;
117                                 #size-cells = <0>;
118
119                                 portb: gpio-port@1 {
120                                         compatible = "snps,dw-apb-gpio-port";
121                                         gpio-controller;
122                                         #gpio-cells = <2>;
123                                         snps,nr-gpios = <8>;
124                                         reg = <0>;
125                                         interrupt-controller;
126                                         #interrupt-cells = <2>;
127                                         interrupts = <1>;
128                                 };
129                         };
130
131                         gpio2: gpio@0c00 {
132                                 compatible = "snps,dw-apb-gpio";
133                                 reg = <0x0c00 0x400>;
134                                 #address-cells = <1>;
135                                 #size-cells = <0>;
136
137                                 portc: gpio-port@2 {
138                                         compatible = "snps,dw-apb-gpio-port";
139                                         gpio-controller;
140                                         #gpio-cells = <2>;
141                                         snps,nr-gpios = <8>;
142                                         reg = <0>;
143                                         interrupt-controller;
144                                         #interrupt-cells = <2>;
145                                         interrupts = <2>;
146                                 };
147                         };
148
149                         gpio3: gpio@1000 {
150                                 compatible = "snps,dw-apb-gpio";
151                                 reg = <0x1000 0x400>;
152                                 #address-cells = <1>;
153                                 #size-cells = <0>;
154
155                                 portd: gpio-port@3 {
156                                         compatible = "snps,dw-apb-gpio-port";
157                                         gpio-controller;
158                                         #gpio-cells = <2>;
159                                         snps,nr-gpios = <8>;
160                                         reg = <0>;
161                                         interrupt-controller;
162                                         #interrupt-cells = <2>;
163                                         interrupts = <3>;
164                                 };
165                         };
166
167                         timer0: timer@2c00 {
168                                 compatible = "snps,dw-apb-timer";
169                                 reg = <0x2c00 0x14>;
170                                 interrupts = <8>;
171                                 clocks = <&chip CLKID_CFG>;
172                                 clock-names = "timer";
173                                 status = "okay";
174                         };
175
176                         timer1: timer@2c14 {
177                                 compatible = "snps,dw-apb-timer";
178                                 reg = <0x2c14 0x14>;
179                                 interrupts = <9>;
180                                 clocks = <&chip CLKID_CFG>;
181                                 clock-names = "timer";
182                                 status = "okay";
183                         };
184
185                         timer2: timer@2c28 {
186                                 compatible = "snps,dw-apb-timer";
187                                 reg = <0x2c28 0x14>;
188                                 interrupts = <10>;
189                                 clocks = <&chip CLKID_CFG>;
190                                 clock-names = "timer";
191                                 status = "disabled";
192                         };
193
194                         timer3: timer@2c3c {
195                                 compatible = "snps,dw-apb-timer";
196                                 reg = <0x2c3c 0x14>;
197                                 interrupts = <11>;
198                                 clocks = <&chip CLKID_CFG>;
199                                 clock-names = "timer";
200                                 status = "disabled";
201                         };
202
203                         timer4: timer@2c50 {
204                                 compatible = "snps,dw-apb-timer";
205                                 reg = <0x2c50 0x14>;
206                                 interrupts = <12>;
207                                 clocks = <&chip CLKID_CFG>;
208                                 clock-names = "timer";
209                                 status = "disabled";
210                         };
211
212                         timer5: timer@2c64 {
213                                 compatible = "snps,dw-apb-timer";
214                                 reg = <0x2c64 0x14>;
215                                 interrupts = <13>;
216                                 clocks = <&chip CLKID_CFG>;
217                                 clock-names = "timer";
218                                 status = "disabled";
219                         };
220
221                         timer6: timer@2c78 {
222                                 compatible = "snps,dw-apb-timer";
223                                 reg = <0x2c78 0x14>;
224                                 interrupts = <14>;
225                                 clocks = <&chip CLKID_CFG>;
226                                 clock-names = "timer";
227                                 status = "disabled";
228                         };
229
230                         timer7: timer@2c8c {
231                                 compatible = "snps,dw-apb-timer";
232                                 reg = <0x2c8c 0x14>;
233                                 interrupts = <15>;
234                                 clocks = <&chip CLKID_CFG>;
235                                 clock-names = "timer";
236                                 status = "disabled";
237                         };
238
239                         aic: interrupt-controller@3000 {
240                                 compatible = "snps,dw-apb-ictl";
241                                 reg = <0x3000 0xc00>;
242                                 interrupt-controller;
243                                 #interrupt-cells = <1>;
244                                 interrupt-parent = <&gic>;
245                                 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
246                         };
247                 };
248
249                 chip: chip-control@ea0000 {
250                         compatible = "marvell,berlin2-chip-ctrl";
251                         #clock-cells = <1>;
252                         reg = <0xea0000 0x400>;
253                         clocks = <&refclk>;
254                         clock-names = "refclk";
255                 };
256
257                 apb@fc0000 {
258                         compatible = "simple-bus";
259                         #address-cells = <1>;
260                         #size-cells = <1>;
261
262                         ranges = <0 0xfc0000 0x10000>;
263                         interrupt-parent = <&sic>;
264
265                         sm_gpio1: gpio@5000 {
266                                 compatible = "snps,dw-apb-gpio";
267                                 reg = <0x5000 0x400>;
268                                 #address-cells = <1>;
269                                 #size-cells = <0>;
270
271                                 portf: gpio-port@5 {
272                                         compatible = "snps,dw-apb-gpio-port";
273                                         gpio-controller;
274                                         #gpio-cells = <2>;
275                                         snps,nr-gpios = <8>;
276                                         reg = <0>;
277                                 };
278                         };
279
280                         sm_gpio0: gpio@c000 {
281                                 compatible = "snps,dw-apb-gpio";
282                                 reg = <0xc000 0x400>;
283                                 #address-cells = <1>;
284                                 #size-cells = <0>;
285
286                                 porte: gpio-port@4 {
287                                         compatible = "snps,dw-apb-gpio-port";
288                                         gpio-controller;
289                                         #gpio-cells = <2>;
290                                         snps,nr-gpios = <8>;
291                                         reg = <0>;
292                                         interrupt-controller;
293                                         #interrupt-cells = <2>;
294                                         interrupts = <11>;
295                                 };
296                         };
297
298                         uart0: serial@9000 {
299                                 compatible = "snps,dw-apb-uart";
300                                 reg = <0x9000 0x100>;
301                                 reg-shift = <2>;
302                                 reg-io-width = <1>;
303                                 interrupts = <8>;
304                                 clocks = <&refclk>;
305                                 pinctrl-0 = <&uart0_pmux>;
306                                 pinctrl-names = "default";
307                                 status = "disabled";
308                         };
309
310                         uart1: serial@a000 {
311                                 compatible = "snps,dw-apb-uart";
312                                 reg = <0xa000 0x100>;
313                                 reg-shift = <2>;
314                                 reg-io-width = <1>;
315                                 interrupts = <9>;
316                                 clocks = <&refclk>;
317                                 pinctrl-0 = <&uart1_pmux>;
318                                 pinctrl-names = "default";
319                                 status = "disabled";
320                         };
321
322                         uart2: serial@b000 {
323                                 compatible = "snps,dw-apb-uart";
324                                 reg = <0xb000 0x100>;
325                                 reg-shift = <2>;
326                                 reg-io-width = <1>;
327                                 interrupts = <10>;
328                                 clocks = <&refclk>;
329                                 pinctrl-0 = <&uart2_pmux>;
330                                 pinctrl-names = "default";
331                                 status = "disabled";
332                         };
333
334                         sysctrl: system-controller@d000 {
335                                 compatible = "marvell,berlin2-system-ctrl";
336                                 reg = <0xd000 0x100>;
337
338                                 uart0_pmux: uart0-pmux {
339                                         groups = "GSM4";
340                                         function = "uart0";
341                                 };
342
343                                 uart1_pmux: uart1-pmux {
344                                         groups = "GSM5";
345                                         function = "uart1";
346                                 };
347
348                                 uart2_pmux: uart2-pmux {
349                                         groups = "GSM3";
350                                         function = "uart2";
351                                 };
352                         };
353
354                         sic: interrupt-controller@e000 {
355                                 compatible = "snps,dw-apb-ictl";
356                                 reg = <0xe000 0x400>;
357                                 interrupt-controller;
358                                 #interrupt-cells = <1>;
359                                 interrupt-parent = <&gic>;
360                                 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
361                         };
362                 };
363         };
364 };