GNU Linux-libre 4.14.266-gnu1
[releases.git] / arch / arm / boot / dts / versatile-ab.dts
1 // SPDX-License-Identifier: GPL-2.0
2 /dts-v1/;
3 /include/ "skeleton.dtsi"
4
5 / {
6         model = "ARM Versatile AB";
7         compatible = "arm,versatile-ab";
8         #address-cells = <1>;
9         #size-cells = <1>;
10         interrupt-parent = <&vic>;
11
12         aliases {
13                 serial0 = &uart0;
14                 serial1 = &uart1;
15                 serial2 = &uart2;
16                 i2c0 = &i2c0;
17         };
18
19         chosen {
20                 stdout-path = &uart0;
21         };
22
23         memory {
24                 reg = <0x0 0x08000000>;
25         };
26
27         xtal24mhz: xtal24mhz@24M {
28                 #clock-cells = <0>;
29                 compatible = "fixed-clock";
30                 clock-frequency = <24000000>;
31         };
32
33         core-module@10000000 {
34                 compatible = "arm,core-module-versatile", "syscon", "simple-mfd";
35                 reg = <0x10000000 0x200>;
36
37                 led@08.0 {
38                         compatible = "register-bit-led";
39                         offset = <0x08>;
40                         mask = <0x01>;
41                         label = "versatile:0";
42                         linux,default-trigger = "heartbeat";
43                         default-state = "on";
44                 };
45                 led@08.1 {
46                         compatible = "register-bit-led";
47                         offset = <0x08>;
48                         mask = <0x02>;
49                         label = "versatile:1";
50                         linux,default-trigger = "mmc0";
51                         default-state = "off";
52                 };
53                 led@08.2 {
54                         compatible = "register-bit-led";
55                         offset = <0x08>;
56                         mask = <0x04>;
57                         label = "versatile:2";
58                         linux,default-trigger = "cpu0";
59                         default-state = "off";
60                 };
61                 led@08.3 {
62                         compatible = "register-bit-led";
63                         offset = <0x08>;
64                         mask = <0x08>;
65                         label = "versatile:3";
66                         default-state = "off";
67                 };
68                 led@08.4 {
69                         compatible = "register-bit-led";
70                         offset = <0x08>;
71                         mask = <0x10>;
72                         label = "versatile:4";
73                         default-state = "off";
74                 };
75                 led@08.5 {
76                         compatible = "register-bit-led";
77                         offset = <0x08>;
78                         mask = <0x20>;
79                         label = "versatile:5";
80                         default-state = "off";
81                 };
82                 led@08.6 {
83                         compatible = "register-bit-led";
84                         offset = <0x08>;
85                         mask = <0x40>;
86                         label = "versatile:6";
87                         default-state = "off";
88                 };
89                 led@08.7 {
90                         compatible = "register-bit-led";
91                         offset = <0x08>;
92                         mask = <0x80>;
93                         label = "versatile:7";
94                         default-state = "off";
95                 };
96
97                 /* OSC1 on AB, OSC4 on PB */
98                 osc1: cm_aux_osc@24M {
99                         #clock-cells = <0>;
100                         compatible = "arm,versatile-cm-auxosc";
101                         clocks = <&xtal24mhz>;
102                 };
103
104                 /* The timer clock is the 24 MHz oscillator divided to 1MHz */
105                 timclk: timclk@1M {
106                         #clock-cells = <0>;
107                         compatible = "fixed-factor-clock";
108                         clock-div = <24>;
109                         clock-mult = <1>;
110                         clocks = <&xtal24mhz>;
111                 };
112
113                 pclk: pclk@24M {
114                         #clock-cells = <0>;
115                         compatible = "fixed-factor-clock";
116                         clock-div = <1>;
117                         clock-mult = <1>;
118                         clocks = <&xtal24mhz>;
119                 };
120         };
121
122         flash@34000000 {
123                 /* 64 MiB NOR flash in non-interleaved chips */
124                 compatible = "arm,versatile-flash", "cfi-flash";
125                 reg = <0x34000000 0x04000000>;
126                 bank-width = <4>;
127         };
128
129         i2c0: i2c@10002000 {
130                 #address-cells = <1>;
131                 #size-cells = <0>;
132                 compatible = "arm,versatile-i2c";
133                 reg = <0x10002000 0x1000>;
134
135                 rtc@68 {
136                         compatible = "dallas,ds1338";
137                         reg = <0x68>;
138                 };
139         };
140
141         net@10010000 {
142                 compatible = "smsc,lan91c111";
143                 reg = <0x10010000 0x10000>;
144                 interrupts = <25>;
145         };
146
147         lcd@10008000 {
148                 compatible = "arm,versatile-lcd";
149                 reg = <0x10008000 0x1000>;
150         };
151
152         amba {
153                 compatible = "simple-bus";
154                 #address-cells = <1>;
155                 #size-cells = <1>;
156                 ranges;
157
158                 vic: interrupt-controller@10140000 {
159                         compatible = "arm,versatile-vic";
160                         interrupt-controller;
161                         #interrupt-cells = <1>;
162                         reg = <0x10140000 0x1000>;
163                         valid-mask = <0xffffffff>;
164                 };
165
166                 sic: interrupt-controller@10003000 {
167                         compatible = "arm,versatile-sic";
168                         interrupt-controller;
169                         #interrupt-cells = <1>;
170                         reg = <0x10003000 0x1000>;
171                         interrupt-parent = <&vic>;
172                         interrupts = <31>; /* Cascaded to vic */
173                         clear-mask = <0xffffffff>;
174                         /*
175                          * Valid interrupt lines mask according to
176                          * table 4-36 page 4-50 of ARM DUI 0225D
177                          */
178                         valid-mask = <0x0760031b>;
179                 };
180
181                 dma@10130000 {
182                         compatible = "arm,pl081", "arm,primecell";
183                         reg = <0x10130000 0x1000>;
184                         interrupts = <17>;
185                         clocks = <&pclk>;
186                         clock-names = "apb_pclk";
187                 };
188
189                 uart0: uart@101f1000 {
190                         compatible = "arm,pl011", "arm,primecell";
191                         reg = <0x101f1000 0x1000>;
192                         interrupts = <12>;
193                         clocks = <&xtal24mhz>, <&pclk>;
194                         clock-names = "uartclk", "apb_pclk";
195                 };
196
197                 uart1: uart@101f2000 {
198                         compatible = "arm,pl011", "arm,primecell";
199                         reg = <0x101f2000 0x1000>;
200                         interrupts = <13>;
201                         clocks = <&xtal24mhz>, <&pclk>;
202                         clock-names = "uartclk", "apb_pclk";
203                 };
204
205                 uart2: uart@101f3000 {
206                         compatible = "arm,pl011", "arm,primecell";
207                         reg = <0x101f3000 0x1000>;
208                         interrupts = <14>;
209                         clocks = <&xtal24mhz>, <&pclk>;
210                         clock-names = "uartclk", "apb_pclk";
211                 };
212
213                 smc@10100000 {
214                         compatible = "arm,primecell";
215                         reg = <0x10100000 0x1000>;
216                         clocks = <&pclk>;
217                         clock-names = "apb_pclk";
218                 };
219
220                 mpmc@10110000 {
221                         compatible = "arm,primecell";
222                         reg = <0x10110000 0x1000>;
223                         clocks = <&pclk>;
224                         clock-names = "apb_pclk";
225                 };
226
227                 display@10120000 {
228                         compatible = "arm,pl110", "arm,primecell";
229                         reg = <0x10120000 0x1000>;
230                         interrupts = <16>;
231                         clocks = <&osc1>, <&pclk>;
232                         clock-names = "clcd", "apb_pclk";
233                 };
234
235                 sctl@101e0000 {
236                         compatible = "arm,primecell";
237                         reg = <0x101e0000 0x1000>;
238                         clocks = <&pclk>;
239                         clock-names = "apb_pclk";
240                 };
241
242                 watchdog@101e1000 {
243                         compatible = "arm,primecell";
244                         reg = <0x101e1000 0x1000>;
245                         interrupts = <0>;
246                         clocks = <&pclk>;
247                         clock-names = "apb_pclk";
248                 };
249
250                 timer@101e2000 {
251                         compatible = "arm,sp804", "arm,primecell";
252                         reg = <0x101e2000 0x1000>;
253                         interrupts = <4>;
254                         clocks = <&timclk>, <&timclk>, <&pclk>;
255                         clock-names = "timer0", "timer1", "apb_pclk";
256                 };
257
258                 timer@101e3000 {
259                         compatible = "arm,sp804", "arm,primecell";
260                         reg = <0x101e3000 0x1000>;
261                         interrupts = <5>;
262                         clocks = <&timclk>, <&timclk>, <&pclk>;
263                         clock-names = "timer0", "timer1", "apb_pclk";
264                 };
265
266                 gpio0: gpio@101e4000 {
267                         compatible = "arm,pl061", "arm,primecell";
268                         reg = <0x101e4000 0x1000>;
269                         gpio-controller;
270                         interrupts = <6>;
271                         #gpio-cells = <2>;
272                         interrupt-controller;
273                         #interrupt-cells = <2>;
274                         clocks = <&pclk>;
275                         clock-names = "apb_pclk";
276                 };
277
278                 gpio1: gpio@101e5000 {
279                         compatible = "arm,pl061", "arm,primecell";
280                         reg = <0x101e5000 0x1000>;
281                         interrupts = <7>;
282                         gpio-controller;
283                         #gpio-cells = <2>;
284                         interrupt-controller;
285                         #interrupt-cells = <2>;
286                         clocks = <&pclk>;
287                         clock-names = "apb_pclk";
288                 };
289
290                 rtc@101e8000 {
291                         compatible = "arm,pl030", "arm,primecell";
292                         reg = <0x101e8000 0x1000>;
293                         interrupts = <10>;
294                         clocks = <&pclk>;
295                         clock-names = "apb_pclk";
296                 };
297
298                 sci@101f0000 {
299                         compatible = "arm,primecell";
300                         reg = <0x101f0000 0x1000>;
301                         interrupts = <15>;
302                         clocks = <&pclk>;
303                         clock-names = "apb_pclk";
304                 };
305
306                 spi@101f4000 {
307                         compatible = "arm,pl022", "arm,primecell";
308                         reg = <0x101f4000 0x1000>;
309                         interrupts = <11>;
310                         clocks = <&xtal24mhz>, <&pclk>;
311                         clock-names = "SSPCLK", "apb_pclk";
312                 };
313
314                 fpga {
315                         compatible = "arm,versatile-fpga", "simple-bus";
316                         #address-cells = <1>;
317                         #size-cells = <1>;
318                         ranges = <0 0x10000000 0x10000>;
319
320                         sysreg@0 {
321                                 compatible = "arm,versatile-sysreg", "syscon";
322                                 reg = <0x00000 0x1000>;
323                         };
324
325                         aaci@4000 {
326                                 compatible = "arm,primecell";
327                                 reg = <0x4000 0x1000>;
328                                 interrupts = <24>;
329                                 clocks = <&pclk>;
330                                 clock-names = "apb_pclk";
331                         };
332                         mmc@5000 {
333                                 compatible = "arm,pl180", "arm,primecell";
334                                 reg = <0x5000 0x1000>;
335                                 interrupts-extended = <&vic 22 &sic 1>;
336                                 clocks = <&xtal24mhz>, <&pclk>;
337                                 clock-names = "mclk", "apb_pclk";
338                         };
339                         kmi@6000 {
340                                 compatible = "arm,pl050", "arm,primecell";
341                                 reg = <0x6000 0x1000>;
342                                 interrupt-parent = <&sic>;
343                                 interrupts = <3>;
344                                 clocks = <&xtal24mhz>, <&pclk>;
345                                 clock-names = "KMIREFCLK", "apb_pclk";
346                         };
347                         kmi@7000 {
348                                 compatible = "arm,pl050", "arm,primecell";
349                                 reg = <0x7000 0x1000>;
350                                 interrupt-parent = <&sic>;
351                                 interrupts = <4>;
352                                 clocks = <&xtal24mhz>, <&pclk>;
353                                 clock-names = "KMIREFCLK", "apb_pclk";
354                         };
355                 };
356         };
357 };