1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 * Copyright (C) 2019 Marvell Technology Group Ltd.
5 * Device Tree file for Marvell Armada AP80x.
8 #include <dt-bindings/interrupt-controller/arm-gic.h>
9 #include <dt-bindings/thermal/thermal.h>
25 compatible = "arm,psci-0.2";
35 * This area matches the mapping done with a
36 * mainline U-Boot, and should be updated by the
41 reg = <0x0 0x4000000 0x0 0x200000>;
46 reg = <0 0x4400000 0 0x1000000>;
54 compatible = "simple-bus";
55 interrupt-parent = <&gic>;
58 config-space@f0000000 {
61 compatible = "simple-bus";
62 ranges = <0x0 0x0 0xf0000000 0x1000000>;
65 compatible = "marvell,ap806-smmu-500", "arm,mmu-500";
66 reg = <0x100000 0x100000>;
69 #global-interrupts = <1>;
70 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
71 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
72 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
73 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
74 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
75 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
76 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
77 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
78 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
82 gic: interrupt-controller@210000 {
83 compatible = "arm,gic-400";
84 #interrupt-cells = <3>;
89 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
90 reg = <0x210000 0x10000>,
95 gic_v2m0: v2m@280000 {
96 compatible = "arm,gic-v2m-frame";
98 reg = <0x280000 0x1000>;
99 arm,msi-base-spi = <160>;
100 arm,msi-num-spis = <32>;
102 gic_v2m1: v2m@290000 {
103 compatible = "arm,gic-v2m-frame";
105 reg = <0x290000 0x1000>;
106 arm,msi-base-spi = <192>;
107 arm,msi-num-spis = <32>;
109 gic_v2m2: v2m@2a0000 {
110 compatible = "arm,gic-v2m-frame";
112 reg = <0x2a0000 0x1000>;
113 arm,msi-base-spi = <224>;
114 arm,msi-num-spis = <32>;
116 gic_v2m3: v2m@2b0000 {
117 compatible = "arm,gic-v2m-frame";
119 reg = <0x2b0000 0x1000>;
120 arm,msi-base-spi = <256>;
121 arm,msi-num-spis = <32>;
126 compatible = "arm,armv8-timer";
127 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
128 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
129 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
130 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
134 compatible = "arm,cortex-a72-pmu";
135 interrupt-parent = <&pic>;
140 compatible = "marvell,odmi-controller";
142 marvell,odmi-frames = <4>;
143 reg = <0x300000 0x4000>,
147 marvell,spi-base = <128>, <136>, <144>, <152>;
151 compatible = "marvell,ap806-gicp";
152 reg = <0x3f0040 0x10>;
153 marvell,spi-ranges = <64 64>, <288 64>;
157 pic: interrupt-controller@3f0100 {
158 compatible = "marvell,armada-8k-pic";
159 reg = <0x3f0100 0x10>;
160 #interrupt-cells = <1>;
161 interrupt-controller;
162 interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
165 sei: interrupt-controller@3f0200 {
166 compatible = "marvell,ap806-sei";
167 reg = <0x3f0200 0x40>;
168 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
169 #interrupt-cells = <1>;
170 interrupt-controller;
175 compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
176 reg = <0x400000 0x1000>,
178 msi-parent = <&gic_v2m0>;
179 clocks = <&ap_clk 3>;
184 compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
185 reg = <0x420000 0x1000>,
187 msi-parent = <&gic_v2m0>;
188 clocks = <&ap_clk 3>;
193 compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
194 reg = <0x440000 0x1000>,
196 msi-parent = <&gic_v2m0>;
197 clocks = <&ap_clk 3>;
202 compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
203 reg = <0x460000 0x1000>,
205 msi-parent = <&gic_v2m0>;
206 clocks = <&ap_clk 3>;
211 compatible = "marvell,armada-380-spi";
212 reg = <0x510600 0x50>;
213 #address-cells = <1>;
215 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
216 clocks = <&ap_clk 3>;
221 compatible = "marvell,mv78230-i2c";
222 reg = <0x511000 0x20>;
223 #address-cells = <1>;
225 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
226 clocks = <&ap_clk 3>;
230 uart0: serial@512000 {
231 compatible = "snps,dw-apb-uart";
232 reg = <0x512000 0x100>;
234 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
236 clocks = <&ap_clk 3>;
240 uart1: serial@512100 {
241 compatible = "snps,dw-apb-uart";
242 reg = <0x512100 0x100>;
244 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
246 clocks = <&ap_clk 3>;
251 watchdog: watchdog@610000 {
252 compatible = "arm,sbsa-gwdt";
253 reg = <0x610000 0x1000>, <0x600000 0x1000>;
254 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
257 ap_sdhci0: mmc@6e0000 {
258 compatible = "marvell,armada-ap806-sdhci";
259 reg = <0x6e0000 0x300>;
260 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
261 clock-names = "core";
262 clocks = <&ap_clk 4>;
264 marvell,xenon-phy-slow-mode;
268 ap_syscon0: system-controller@6f4000 {
269 compatible = "syscon", "simple-mfd";
270 reg = <0x6f4000 0x2000>;
272 ap_pinctrl: pinctrl {
273 compatible = "marvell,ap806-pinctrl";
275 uart0_pins: uart0-pins {
276 marvell,pins = "mpp11", "mpp19";
277 marvell,function = "uart0";
282 compatible = "marvell,armada-8k-gpio";
287 gpio-ranges = <&ap_pinctrl 0 0 20>;
288 marvell,pwm-offset = <0x10c0>;
290 clocks = <&ap_clk 3>;
294 ap_syscon1: system-controller@6f8000 {
295 compatible = "syscon", "simple-mfd";
296 reg = <0x6f8000 0x1000>;
297 #address-cells = <1>;
300 ap_thermal: thermal-sensor@80 {
301 compatible = "marvell,armada-ap806-thermal";
303 interrupt-parent = <&sei>;
305 #thermal-sensor-cells = <1>;
312 * The thermal IP features one internal sensor plus, if applicable, one
313 * remote channel wired to one sensor per CPU.
315 * Only one thermal zone per AP/CP may trigger interrupts at a time, the
316 * first one that will have a critical trip point will be chosen.
319 ap_thermal_ic: ap-ic-thermal {
320 polling-delay-passive = <0>; /* Interrupt driven */
321 polling-delay = <0>; /* Interrupt driven */
323 thermal-sensors = <&ap_thermal 0>;
327 temperature = <100000>; /* mC degrees */
328 hysteresis = <2000>; /* mC degrees */
336 ap_thermal_cpu0: ap-cpu0-thermal {
337 polling-delay-passive = <1000>;
338 polling-delay = <1000>;
340 thermal-sensors = <&ap_thermal 1>;
344 temperature = <85000>;
348 cpu0_emerg: cpu0-emerg {
349 temperature = <95000>;
358 cooling-device = <&cpu0 1 2>,
361 map0_emerg: map0-ermerg {
362 trip = <&cpu0_emerg>;
363 cooling-device = <&cpu0 3 3>,
369 ap_thermal_cpu1: ap-cpu1-thermal {
370 polling-delay-passive = <1000>;
371 polling-delay = <1000>;
373 thermal-sensors = <&ap_thermal 2>;
377 temperature = <85000>;
381 cpu1_emerg: cpu1-emerg {
382 temperature = <95000>;
391 cooling-device = <&cpu0 1 2>,
394 map1_emerg: map1-emerg {
395 trip = <&cpu1_emerg>;
396 cooling-device = <&cpu0 3 3>,
402 ap_thermal_cpu2: ap-cpu2-thermal {
403 polling-delay-passive = <1000>;
404 polling-delay = <1000>;
406 thermal-sensors = <&ap_thermal 3>;
410 temperature = <85000>;
414 cpu2_emerg: cpu2-emerg {
415 temperature = <95000>;
424 cooling-device = <&cpu2 1 2>,
427 map2_emerg: map2-emerg {
428 trip = <&cpu2_emerg>;
429 cooling-device = <&cpu2 3 3>,
435 ap_thermal_cpu3: ap-cpu3-thermal {
436 polling-delay-passive = <1000>;
437 polling-delay = <1000>;
439 thermal-sensors = <&ap_thermal 4>;
443 temperature = <85000>;
447 cpu3_emerg: cpu3-emerg {
448 temperature = <95000>;
455 map3_hot: map3-bhot {
457 cooling-device = <&cpu2 1 2>,
460 map3_emerg: map3-emerg {
461 trip = <&cpu3_emerg>;
462 cooling-device = <&cpu2 3 3>,