GNU Linux-libre 6.1.90-gnu
[releases.git] / arch / arm64 / boot / dts / amazon / alpine-v3.dtsi
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright 2020, Amazon.com, Inc. or its affiliates. All Rights Reserved
4  */
5
6 /dts-v1/;
7
8 #include <dt-bindings/interrupt-controller/arm-gic.h>
9
10 / {
11         model = "Amazon's Annapurna Labs Alpine v3";
12         compatible = "amazon,al-alpine-v3";
13
14         interrupt-parent = <&gic>;
15
16         #address-cells = <2>;
17         #size-cells = <2>;
18
19         cpus {
20                 #address-cells = <1>;
21                 #size-cells = <0>;
22
23                 cpu@0 {
24                         device_type = "cpu";
25                         compatible = "arm,cortex-a72";
26                         reg = <0x0>;
27                         enable-method = "psci";
28                         d-cache-size = <0x8000>;
29                         d-cache-line-size = <64>;
30                         d-cache-sets = <256>;
31                         i-cache-size = <0xc000>;
32                         i-cache-line-size = <64>;
33                         i-cache-sets = <256>;
34                         next-level-cache = <&cluster0_l2>;
35                 };
36
37                 cpu@1 {
38                         device_type = "cpu";
39                         compatible = "arm,cortex-a72";
40                         reg = <0x1>;
41                         enable-method = "psci";
42                         d-cache-size = <0x8000>;
43                         d-cache-line-size = <64>;
44                         d-cache-sets = <256>;
45                         i-cache-size = <0xc000>;
46                         i-cache-line-size = <64>;
47                         i-cache-sets = <256>;
48                         next-level-cache = <&cluster0_l2>;
49                 };
50
51                 cpu@2 {
52                         device_type = "cpu";
53                         compatible = "arm,cortex-a72";
54                         reg = <0x2>;
55                         enable-method = "psci";
56                         d-cache-size = <0x8000>;
57                         d-cache-line-size = <64>;
58                         d-cache-sets = <256>;
59                         i-cache-size = <0xc000>;
60                         i-cache-line-size = <64>;
61                         i-cache-sets = <256>;
62                         next-level-cache = <&cluster0_l2>;
63                 };
64
65                 cpu@3 {
66                         device_type = "cpu";
67                         compatible = "arm,cortex-a72";
68                         reg = <0x3>;
69                         enable-method = "psci";
70                         d-cache-size = <0x8000>;
71                         d-cache-line-size = <64>;
72                         d-cache-sets = <256>;
73                         i-cache-size = <0xc000>;
74                         i-cache-line-size = <64>;
75                         i-cache-sets = <256>;
76                         next-level-cache = <&cluster0_l2>;
77                 };
78
79                 cpu@100 {
80                         device_type = "cpu";
81                         compatible = "arm,cortex-a72";
82                         reg = <0x100>;
83                         enable-method = "psci";
84                         d-cache-size = <0x8000>;
85                         d-cache-line-size = <64>;
86                         d-cache-sets = <256>;
87                         i-cache-size = <0xc000>;
88                         i-cache-line-size = <64>;
89                         i-cache-sets = <256>;
90                         next-level-cache = <&cluster1_l2>;
91                 };
92
93                 cpu@101 {
94                         device_type = "cpu";
95                         compatible = "arm,cortex-a72";
96                         reg = <0x101>;
97                         enable-method = "psci";
98                         d-cache-size = <0x8000>;
99                         d-cache-line-size = <64>;
100                         d-cache-sets = <256>;
101                         i-cache-size = <0xc000>;
102                         i-cache-line-size = <64>;
103                         i-cache-sets = <256>;
104                         next-level-cache = <&cluster1_l2>;
105                 };
106
107                 cpu@102 {
108                         device_type = "cpu";
109                         compatible = "arm,cortex-a72";
110                         reg = <0x102>;
111                         enable-method = "psci";
112                         d-cache-size = <0x8000>;
113                         d-cache-line-size = <64>;
114                         d-cache-sets = <256>;
115                         i-cache-size = <0xc000>;
116                         i-cache-line-size = <64>;
117                         i-cache-sets = <256>;
118                         next-level-cache = <&cluster1_l2>;
119                 };
120
121                 cpu@103 {
122                         device_type = "cpu";
123                         compatible = "arm,cortex-a72";
124                         reg = <0x103>;
125                         enable-method = "psci";
126                         d-cache-size = <0x8000>;
127                         d-cache-line-size = <64>;
128                         d-cache-sets = <256>;
129                         i-cache-size = <0xc000>;
130                         i-cache-line-size = <64>;
131                         i-cache-sets = <256>;
132                         next-level-cache = <&cluster1_l2>;
133                 };
134
135                 cpu@200 {
136                         device_type = "cpu";
137                         compatible = "arm,cortex-a72";
138                         reg = <0x200>;
139                         enable-method = "psci";
140                         d-cache-size = <0x8000>;
141                         d-cache-line-size = <64>;
142                         d-cache-sets = <256>;
143                         i-cache-size = <0xc000>;
144                         i-cache-line-size = <64>;
145                         i-cache-sets = <256>;
146                         next-level-cache = <&cluster2_l2>;
147                 };
148
149                 cpu@201 {
150                         device_type = "cpu";
151                         compatible = "arm,cortex-a72";
152                         reg = <0x201>;
153                         enable-method = "psci";
154                         d-cache-size = <0x8000>;
155                         d-cache-line-size = <64>;
156                         d-cache-sets = <256>;
157                         i-cache-size = <0xc000>;
158                         i-cache-line-size = <64>;
159                         i-cache-sets = <256>;
160                         next-level-cache = <&cluster2_l2>;
161                 };
162
163                 cpu@202 {
164                         device_type = "cpu";
165                         compatible = "arm,cortex-a72";
166                         reg = <0x202>;
167                         enable-method = "psci";
168                         d-cache-size = <0x8000>;
169                         d-cache-line-size = <64>;
170                         d-cache-sets = <256>;
171                         i-cache-size = <0xc000>;
172                         i-cache-line-size = <64>;
173                         i-cache-sets = <256>;
174                         next-level-cache = <&cluster2_l2>;
175                 };
176
177                 cpu@203 {
178                         device_type = "cpu";
179                         compatible = "arm,cortex-a72";
180                         reg = <0x203>;
181                         enable-method = "psci";
182                         d-cache-size = <0x8000>;
183                         d-cache-line-size = <64>;
184                         d-cache-sets = <256>;
185                         i-cache-size = <0xc000>;
186                         i-cache-line-size = <64>;
187                         i-cache-sets = <256>;
188                         next-level-cache = <&cluster2_l2>;
189                 };
190
191                 cpu@300 {
192                         device_type = "cpu";
193                         compatible = "arm,cortex-a72";
194                         reg = <0x300>;
195                         enable-method = "psci";
196                         d-cache-size = <0x8000>;
197                         d-cache-line-size = <64>;
198                         d-cache-sets = <256>;
199                         i-cache-size = <0xc000>;
200                         i-cache-line-size = <64>;
201                         i-cache-sets = <256>;
202                         next-level-cache = <&cluster3_l2>;
203                 };
204
205                 cpu@301 {
206                         device_type = "cpu";
207                         compatible = "arm,cortex-a72";
208                         reg = <0x301>;
209                         enable-method = "psci";
210                         d-cache-size = <0x8000>;
211                         d-cache-line-size = <64>;
212                         d-cache-sets = <256>;
213                         i-cache-size = <0xc000>;
214                         i-cache-line-size = <64>;
215                         i-cache-sets = <256>;
216                         next-level-cache = <&cluster3_l2>;
217                 };
218
219                 cpu@302 {
220                         device_type = "cpu";
221                         compatible = "arm,cortex-a72";
222                         reg = <0x302>;
223                         enable-method = "psci";
224                         d-cache-size = <0x8000>;
225                         d-cache-line-size = <64>;
226                         d-cache-sets = <256>;
227                         i-cache-size = <0xc000>;
228                         i-cache-line-size = <64>;
229                         i-cache-sets = <256>;
230                         next-level-cache = <&cluster3_l2>;
231                 };
232
233                 cpu@303 {
234                         device_type = "cpu";
235                         compatible = "arm,cortex-a72";
236                         reg = <0x303>;
237                         enable-method = "psci";
238                         d-cache-size = <0x8000>;
239                         d-cache-line-size = <64>;
240                         d-cache-sets = <256>;
241                         i-cache-size = <0xc000>;
242                         i-cache-line-size = <64>;
243                         i-cache-sets = <256>;
244                         next-level-cache = <&cluster3_l2>;
245                 };
246
247                 cluster0_l2: cache@0 {
248                         compatible = "cache";
249                         cache-size = <0x200000>;
250                         cache-line-size = <64>;
251                         cache-sets = <2048>;
252                         cache-level = <2>;
253                 };
254
255                 cluster1_l2: cache@100 {
256                         compatible = "cache";
257                         cache-size = <0x200000>;
258                         cache-line-size = <64>;
259                         cache-sets = <2048>;
260                         cache-level = <2>;
261                 };
262
263                 cluster2_l2: cache@200 {
264                         compatible = "cache";
265                         cache-size = <0x200000>;
266                         cache-line-size = <64>;
267                         cache-sets = <2048>;
268                         cache-level = <2>;
269                 };
270
271                 cluster3_l2: cache@300 {
272                         compatible = "cache";
273                         cache-size = <0x200000>;
274                         cache-line-size = <64>;
275                         cache-sets = <2048>;
276                         cache-level = <2>;
277                 };
278
279         };
280
281         reserved-memory {
282                 #address-cells = <2>;
283                 #size-cells = <2>;
284                 ranges;
285
286                 secmon@0 {
287                         reg = <0x0 0x0 0x0 0x100000>;
288                         no-map;
289                 };
290         };
291
292         psci {
293                 compatible = "arm,psci-0.2";
294                 method = "smc";
295         };
296
297         timer {
298                 compatible = "arm,armv8-timer";
299                 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
300                              <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
301                              <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
302                              <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
303         };
304
305         pmu {
306                 compatible = "arm,cortex-a72-pmu";
307                 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
308         };
309
310
311         soc {
312                 compatible = "simple-bus";
313                 #address-cells = <2>;
314                 #size-cells = <2>;
315                 ranges;
316
317                 gic: interrupt-controller@f0000000 {
318                         compatible = "arm,gic-v3";
319                         #interrupt-cells = <3>;
320                         interrupt-controller;
321                         reg = <0x0 0xf0800000 0 0x10000>,       /* GICD */
322                               <0x0 0xf0a00000 0 0x200000>,      /* GICR */
323                               <0x0 0xf0000000 0 0x2000>,        /* GICC */
324                               <0x0 0xf0010000 0 0x1000>,        /* GICH */
325                               <0x0 0xf0020000 0 0x2000>;        /* GICV */
326                         interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
327                 };
328
329                 pcie@fbd00000 {
330                         compatible = "pci-host-ecam-generic";
331                         device_type = "pci";
332                         #size-cells = <2>;
333                         #address-cells = <3>;
334                         #interrupt-cells = <1>;
335                         reg = <0x0 0xfbd00000 0x0 0x100000>;
336                         interrupt-map-mask = <0xf800 0 0 7>;
337                         /* 8 x legacy interrupts for SATA only */
338                         interrupt-map = <0x4000 0 0 1 &gic 0 57 IRQ_TYPE_LEVEL_HIGH>,
339                                         <0x4800 0 0 1 &gic 0 58 IRQ_TYPE_LEVEL_HIGH>,
340                                         <0x5000 0 0 1 &gic 0 59 IRQ_TYPE_LEVEL_HIGH>,
341                                         <0x5800 0 0 1 &gic 0 60 IRQ_TYPE_LEVEL_HIGH>,
342                                         <0x6000 0 0 1 &gic 0 61 IRQ_TYPE_LEVEL_HIGH>,
343                                         <0x6800 0 0 1 &gic 0 62 IRQ_TYPE_LEVEL_HIGH>,
344                                         <0x7000 0 0 1 &gic 0 63 IRQ_TYPE_LEVEL_HIGH>,
345                                         <0x7800 0 0 1 &gic 0 64 IRQ_TYPE_LEVEL_HIGH>;
346                         ranges = <0x02000000 0x0 0xfe000000 0x0 0xfe000000 0x0 0x1000000>;
347                         bus-range = <0x00 0x00>;
348                         msi-parent = <&msix>;
349                 };
350
351                 msix: msix@fbe00000 {
352                         compatible = "al,alpine-msix";
353                         reg = <0x0 0xfbe00000 0x0 0x100000>;
354                         msi-controller;
355                         al,msi-base-spi = <336>;
356                         al,msi-num-spis = <959>;
357                         interrupt-parent = <&gic>;
358                 };
359
360                 io-fabric {
361                         compatible = "simple-bus";
362                         #address-cells = <1>;
363                         #size-cells = <1>;
364                         ranges = <0x0 0x0 0xfc000000 0x2000000>;
365
366                         uart0: serial@1883000 {
367                                 compatible = "ns16550a";
368                                 reg = <0x1883000 0x1000>;
369                                 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
370                                 clock-frequency = <0>; /* Filled by firmware */
371                                 reg-shift = <2>;
372                                 reg-io-width = <4>;
373                                 status = "disabled";
374                         };
375
376                         uart1: serial@1884000 {
377                                 compatible = "ns16550a";
378                                 reg = <0x1884000 0x1000>;
379                                 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
380                                 clock-frequency = <0>; /* Filled by firmware */
381                                 reg-shift = <2>;
382                                 reg-io-width = <4>;
383                                 status = "disabled";
384                         };
385
386                         uart2: serial@1885000 {
387                                 compatible = "ns16550a";
388                                 reg = <0x1885000 0x1000>;
389                                 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
390                                 clock-frequency = <0>; /* Filled by firmware */
391                                 reg-shift = <2>;
392                                 reg-io-width = <4>;
393                                 status = "disabled";
394                         };
395
396                         uart3: serial@1886000 {
397                                 compatible = "ns16550a";
398                                 reg = <0x1886000 0x1000>;
399                                 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
400                                 clock-frequency = <0>; /* Filled by firmware */
401                                 reg-shift = <2>;
402                                 reg-io-width = <4>;
403                                 status = "disabled";
404                         };
405                 };
406         };
407 };