Commit | Line | Data |
---|---|---|
292816a6 | 1 | // SPDX-License-Identifier: (GPL-2.0+ OR MIT) |
ec7e5a56 TP |
2 | /* |
3 | * Copyright (C) 2016 Marvell Technology Group Ltd. | |
4 | * | |
ec7e5a56 TP |
5 | * Device Tree file for Marvell Armada AP806. |
6 | */ | |
7 | ||
8 | #include <dt-bindings/interrupt-controller/arm-gic.h> | |
3be14851 | 9 | #include <dt-bindings/thermal/thermal.h> |
ec7e5a56 TP |
10 | |
11 | /dts-v1/; | |
12 | ||
13 | / { | |
14 | model = "Marvell Armada AP806"; | |
15 | compatible = "marvell,armada-ap806"; | |
16 | #address-cells = <2>; | |
17 | #size-cells = <2>; | |
18 | ||
bf151162 TP |
19 | aliases { |
20 | serial0 = &uart0; | |
21 | serial1 = &uart1; | |
63dac0f4 | 22 | gpio0 = &ap_gpio; |
e2a393c6 | 23 | spi0 = &spi0; |
bf151162 TP |
24 | }; |
25 | ||
ec7e5a56 TP |
26 | psci { |
27 | compatible = "arm,psci-0.2"; | |
28 | method = "smc"; | |
29 | }; | |
30 | ||
8ed46368 | 31 | cpus { |
32 | #address-cells = <1>; | |
33 | #size-cells = <0>; | |
34 | ||
35 | idle_states { | |
36 | entry_method = "arm,pcsi"; | |
37 | ||
38 | CPU_SLEEP_0: cpu-sleep-0 { | |
39 | compatible = "arm,idle-state"; | |
40 | local-timer-stop; | |
41 | arm,psci-suspend-param = <0x0010000>; | |
42 | entry-latency-us = <80>; | |
43 | exit-latency-us = <160>; | |
44 | min-residency-us = <320>; | |
45 | }; | |
46 | ||
47 | CLUSTER_SLEEP_0: cluster-sleep-0 { | |
48 | compatible = "arm,idle-state"; | |
49 | local-timer-stop; | |
50 | arm,psci-suspend-param = <0x1010000>; | |
51 | entry-latency-us = <500>; | |
52 | exit-latency-us = <1000>; | |
53 | min-residency-us = <2500>; | |
54 | }; | |
55 | }; | |
56 | }; | |
57 | ||
ec7e5a56 TP |
58 | ap806 { |
59 | #address-cells = <2>; | |
60 | #size-cells = <2>; | |
61 | compatible = "simple-bus"; | |
62 | interrupt-parent = <&gic>; | |
63 | ranges; | |
64 | ||
70347888 | 65 | config-space@f0000000 { |
ec7e5a56 TP |
66 | #address-cells = <1>; |
67 | #size-cells = <1>; | |
68 | compatible = "simple-bus"; | |
69 | ranges = <0x0 0x0 0xf0000000 0x1000000>; | |
70 | ||
71 | gic: interrupt-controller@210000 { | |
72 | compatible = "arm,gic-400"; | |
73 | #interrupt-cells = <3>; | |
74 | #address-cells = <1>; | |
75 | #size-cells = <1>; | |
76 | ranges; | |
77 | interrupt-controller; | |
78 | interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; | |
79 | reg = <0x210000 0x10000>, | |
80 | <0x220000 0x20000>, | |
81 | <0x240000 0x20000>, | |
82 | <0x260000 0x20000>; | |
83 | ||
84 | gic_v2m0: v2m@280000 { | |
85 | compatible = "arm,gic-v2m-frame"; | |
86 | msi-controller; | |
87 | reg = <0x280000 0x1000>; | |
88 | arm,msi-base-spi = <160>; | |
89 | arm,msi-num-spis = <32>; | |
90 | }; | |
91 | gic_v2m1: v2m@290000 { | |
92 | compatible = "arm,gic-v2m-frame"; | |
93 | msi-controller; | |
94 | reg = <0x290000 0x1000>; | |
95 | arm,msi-base-spi = <192>; | |
96 | arm,msi-num-spis = <32>; | |
97 | }; | |
98 | gic_v2m2: v2m@2a0000 { | |
99 | compatible = "arm,gic-v2m-frame"; | |
100 | msi-controller; | |
101 | reg = <0x2a0000 0x1000>; | |
102 | arm,msi-base-spi = <224>; | |
103 | arm,msi-num-spis = <32>; | |
104 | }; | |
105 | gic_v2m3: v2m@2b0000 { | |
106 | compatible = "arm,gic-v2m-frame"; | |
107 | msi-controller; | |
108 | reg = <0x2b0000 0x1000>; | |
109 | arm,msi-base-spi = <256>; | |
110 | arm,msi-num-spis = <32>; | |
111 | }; | |
112 | }; | |
113 | ||
114 | timer { | |
115 | compatible = "arm,armv8-timer"; | |
f2a89d3b MZ |
116 | interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, |
117 | <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, | |
118 | <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, | |
119 | <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; | |
ec7e5a56 TP |
120 | }; |
121 | ||
98e45c16 TP |
122 | pmu { |
123 | compatible = "arm,cortex-a72-pmu"; | |
124 | interrupt-parent = <&pic>; | |
125 | interrupts = <17>; | |
126 | }; | |
127 | ||
ec7e5a56 TP |
128 | odmi: odmi@300000 { |
129 | compatible = "marvell,odmi-controller"; | |
130 | interrupt-controller; | |
131 | msi-controller; | |
132 | marvell,odmi-frames = <4>; | |
133 | reg = <0x300000 0x4000>, | |
134 | <0x304000 0x4000>, | |
135 | <0x308000 0x4000>, | |
136 | <0x30C000 0x4000>; | |
137 | marvell,spi-base = <128>, <136>, <144>, <152>; | |
138 | }; | |
139 | ||
6ef84a82 TP |
140 | gicp: gicp@3f0040 { |
141 | compatible = "marvell,ap806-gicp"; | |
142 | reg = <0x3f0040 0x10>; | |
143 | marvell,spi-ranges = <64 64>, <288 64>; | |
144 | msi-controller; | |
145 | }; | |
146 | ||
98e45c16 TP |
147 | pic: interrupt-controller@3f0100 { |
148 | compatible = "marvell,armada-8k-pic"; | |
149 | reg = <0x3f0100 0x10>; | |
150 | #interrupt-cells = <1>; | |
151 | interrupt-controller; | |
152 | interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>; | |
153 | }; | |
154 | ||
b9a5950f MR |
155 | sei: interrupt-controller@3f0200 { |
156 | compatible = "marvell,ap806-sei"; | |
157 | reg = <0x3f0200 0x40>; | |
158 | interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; | |
159 | #interrupt-cells = <1>; | |
160 | interrupt-controller; | |
161 | msi-controller; | |
162 | }; | |
163 | ||
1093e5f6 | 164 | xor@400000 { |
7eec6594 | 165 | compatible = "marvell,armada-7k-xor", "marvell,xor-v2"; |
b5ebfad8 TP |
166 | reg = <0x400000 0x1000>, |
167 | <0x410000 0x1000>; | |
168 | msi-parent = <&gic_v2m0>; | |
a6d8bd91 | 169 | clocks = <&ap_clk 3>; |
b5ebfad8 TP |
170 | dma-coherent; |
171 | }; | |
172 | ||
1093e5f6 | 173 | xor@420000 { |
7eec6594 | 174 | compatible = "marvell,armada-7k-xor", "marvell,xor-v2"; |
b5ebfad8 TP |
175 | reg = <0x420000 0x1000>, |
176 | <0x430000 0x1000>; | |
177 | msi-parent = <&gic_v2m0>; | |
a6d8bd91 | 178 | clocks = <&ap_clk 3>; |
b5ebfad8 TP |
179 | dma-coherent; |
180 | }; | |
181 | ||
1093e5f6 | 182 | xor@440000 { |
7eec6594 | 183 | compatible = "marvell,armada-7k-xor", "marvell,xor-v2"; |
b5ebfad8 TP |
184 | reg = <0x440000 0x1000>, |
185 | <0x450000 0x1000>; | |
186 | msi-parent = <&gic_v2m0>; | |
a6d8bd91 | 187 | clocks = <&ap_clk 3>; |
b5ebfad8 TP |
188 | dma-coherent; |
189 | }; | |
190 | ||
1093e5f6 | 191 | xor@460000 { |
7eec6594 | 192 | compatible = "marvell,armada-7k-xor", "marvell,xor-v2"; |
b5ebfad8 TP |
193 | reg = <0x460000 0x1000>, |
194 | <0x470000 0x1000>; | |
195 | msi-parent = <&gic_v2m0>; | |
a6d8bd91 | 196 | clocks = <&ap_clk 3>; |
b5ebfad8 TP |
197 | dma-coherent; |
198 | }; | |
199 | ||
ec7e5a56 TP |
200 | spi0: spi@510600 { |
201 | compatible = "marvell,armada-380-spi"; | |
202 | reg = <0x510600 0x50>; | |
203 | #address-cells = <1>; | |
204 | #size-cells = <0>; | |
ec7e5a56 | 205 | interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; |
3675fb59 | 206 | clocks = <&ap_clk 3>; |
ec7e5a56 TP |
207 | status = "disabled"; |
208 | }; | |
209 | ||
210 | i2c0: i2c@511000 { | |
d8b330a3 | 211 | compatible = "marvell,mv78230-i2c"; |
ec7e5a56 TP |
212 | reg = <0x511000 0x20>; |
213 | #address-cells = <1>; | |
214 | #size-cells = <0>; | |
215 | interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; | |
216 | timeout-ms = <1000>; | |
3675fb59 | 217 | clocks = <&ap_clk 3>; |
ec7e5a56 TP |
218 | status = "disabled"; |
219 | }; | |
220 | ||
037ad463 | 221 | uart0: serial@512000 { |
ec7e5a56 TP |
222 | compatible = "snps,dw-apb-uart"; |
223 | reg = <0x512000 0x100>; | |
224 | reg-shift = <2>; | |
225 | interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>; | |
226 | reg-io-width = <1>; | |
3675fb59 | 227 | clocks = <&ap_clk 3>; |
ec7e5a56 TP |
228 | status = "disabled"; |
229 | }; | |
230 | ||
037ad463 | 231 | uart1: serial@512100 { |
ec7e5a56 TP |
232 | compatible = "snps,dw-apb-uart"; |
233 | reg = <0x512100 0x100>; | |
234 | reg-shift = <2>; | |
235 | interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; | |
236 | reg-io-width = <1>; | |
3675fb59 | 237 | clocks = <&ap_clk 3>; |
ec7e5a56 TP |
238 | status = "disabled"; |
239 | ||
240 | }; | |
241 | ||
d3ce06b4 | 242 | watchdog: watchdog@610000 { |
e34ffe32 BS |
243 | compatible = "arm,sbsa-gwdt"; |
244 | reg = <0x610000 0x1000>, <0x600000 0x1000>; | |
245 | interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>; | |
246 | }; | |
247 | ||
910b4c5c GC |
248 | ap_sdhci0: sdhci@6e0000 { |
249 | compatible = "marvell,armada-ap806-sdhci"; | |
250 | reg = <0x6e0000 0x300>; | |
251 | interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>; | |
252 | clock-names = "core"; | |
3675fb59 | 253 | clocks = <&ap_clk 4>; |
910b4c5c GC |
254 | dma-coherent; |
255 | marvell,xenon-phy-slow-mode; | |
256 | status = "disabled"; | |
257 | }; | |
258 | ||
bb233a93 | 259 | ap_syscon: system-controller@6f4000 { |
3675fb59 | 260 | compatible = "syscon", "simple-mfd"; |
9e7460fc | 261 | reg = <0x6f4000 0x2000>; |
3675fb59 GC |
262 | |
263 | ap_clk: clock { | |
264 | compatible = "marvell,ap806-clock"; | |
265 | #clock-cells = <1>; | |
266 | }; | |
ae701b60 GC |
267 | |
268 | ap_pinctrl: pinctrl { | |
269 | compatible = "marvell,ap806-pinctrl"; | |
9e83bbdb TP |
270 | |
271 | uart0_pins: uart0-pins { | |
272 | marvell,pins = "mpp11", "mpp19"; | |
273 | marvell,function = "uart0"; | |
274 | }; | |
ae701b60 | 275 | }; |
63dac0f4 | 276 | |
9e7460fc | 277 | ap_gpio: gpio@1040 { |
63dac0f4 GC |
278 | compatible = "marvell,armada-8k-gpio"; |
279 | offset = <0x1040>; | |
a0ac89b5 | 280 | ngpios = <20>; |
63dac0f4 GC |
281 | gpio-controller; |
282 | #gpio-cells = <2>; | |
a0ac89b5 | 283 | gpio-ranges = <&ap_pinctrl 0 0 20>; |
63dac0f4 | 284 | }; |
d2b78fb6 | 285 | }; |
4cada038 | 286 | |
0863e01c MR |
287 | ap_syscon1: system-controller@6f8000 { |
288 | compatible = "syscon", "simple-mfd"; | |
289 | reg = <0x6f8000 0x1000>; | |
290 | #address-cells = <1>; | |
291 | #size-cells = <1>; | |
292 | ||
293 | ap_thermal: thermal-sensor@80 { | |
294 | compatible = "marvell,armada-ap806-thermal"; | |
295 | reg = <0x80 0x10>; | |
3be14851 | 296 | #thermal-sensor-cells = <1>; |
0863e01c | 297 | }; |
4cada038 | 298 | }; |
ec7e5a56 TP |
299 | }; |
300 | }; | |
3be14851 MR |
301 | |
302 | /* | |
303 | * The thermal IP features one internal sensor plus, if applicable, one | |
304 | * remote channel wired to one sensor per CPU. | |
305 | * | |
306 | * The cooling maps are always empty as there are no cooling devices. | |
307 | */ | |
308 | thermal-zones { | |
309 | ap_thermal_ic: ap-thermal-ic { | |
310 | polling-delay-passive = <1000>; | |
311 | polling-delay = <1000>; | |
312 | ||
313 | thermal-sensors = <&ap_thermal 0>; | |
314 | ||
315 | trips { }; | |
316 | cooling-maps { }; | |
317 | }; | |
318 | ||
319 | ap_thermal_cpu1: ap-thermal-cpu1 { | |
320 | polling-delay-passive = <1000>; | |
321 | polling-delay = <1000>; | |
322 | ||
323 | thermal-sensors = <&ap_thermal 1>; | |
324 | ||
325 | trips { }; | |
326 | cooling-maps { }; | |
327 | }; | |
328 | ||
329 | ap_thermal_cpu2: ap-thermal-cpu2 { | |
330 | polling-delay-passive = <1000>; | |
331 | polling-delay = <1000>; | |
332 | ||
333 | thermal-sensors = <&ap_thermal 2>; | |
334 | ||
335 | trips { }; | |
336 | cooling-maps { }; | |
337 | }; | |
338 | ||
339 | ap_thermal_cpu3: ap-thermal-cpu3 { | |
340 | polling-delay-passive = <1000>; | |
341 | polling-delay = <1000>; | |
342 | ||
343 | thermal-sensors = <&ap_thermal 3>; | |
344 | ||
345 | trips { }; | |
346 | cooling-maps { }; | |
347 | }; | |
348 | ||
349 | ap_thermal_cpu4: ap-thermal-cpu4 { | |
350 | polling-delay-passive = <1000>; | |
351 | polling-delay = <1000>; | |
352 | ||
353 | thermal-sensors = <&ap_thermal 4>; | |
354 | ||
355 | trips { }; | |
356 | cooling-maps { }; | |
357 | }; | |
358 | }; | |
ec7e5a56 | 359 | }; |