blob: c0efd09494ed53eddbf16c4361c5479da9c86a16 [file] [log] [blame]
Andre Przywaraeb5cb802020-08-03 12:54:58 +01001// SPDX-License-Identifier: (GPL-2.0 or BSD-3-Clause)
2/*
3 * Copyright (c) 2020, Arm Limited. All rights reserved.
4 *
5 * Devicetree for the Arm Ltd. FPGA platform
6 * Number and kind of CPU cores differs from image to image, so the
7 * topology is auto-detected by BL31, and the /cpus node is created and
8 * populated accordingly at runtime.
9 */
10
11#include <dt-bindings/interrupt-controller/arm-gic.h>
12
13/dts-v1/;
14
15/ {
16 model = "ARM FPGA";
17 compatible = "arm,fpga", "arm,vexpress";
18 interrupt-parent = <&gic>;
19 #address-cells = <2>;
20 #size-cells = <2>;
21
22 aliases {
23 serial0 = &dbg_uart;
24 };
25
26 chosen {
27 stdout-path = "serial0:38400n8";
28 bootargs = "console=ttyAMA0,38400n8 earlycon";
29 /* Allow to upload a generous 100MB initrd payload. */
30 linux,initrd-start = <0x0 0x84000000>;
Andre Przywarac6988882021-05-05 13:00:23 +010031 linux,initrd-end = <0x0 0x8a400000>;
Andre Przywaraeb5cb802020-08-03 12:54:58 +010032 };
33
34 /* /cpus node will be added by BL31 at runtime. */
35
36 psci {
37 compatible = "arm,psci-0.2";
38 method = "smc";
39 };
40
41 timer {
42 compatible = "arm,armv8-timer";
Andre Przywaraeb5cb802020-08-03 12:54:58 +010043 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
44 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
45 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
46 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
47 };
48
49 pmu {
50 compatible = "arm,armv8-pmuv3";
51 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
52 };
53
54 /* This node will be removed at runtime on cores without SPE. */
55 spe-pmu {
56 compatible = "arm,statistical-profiling-extension-v1";
57 interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
58 };
59
60 memory@80000000 {
61 device_type = "memory";
62 reg = <0x0 0x80000000 0x0 0x80000000>,
63 <0x8 0x80000000 0x1 0x80000000>;
64 };
65
66
67 bus_refclk: refclk {
68 compatible = "fixed-clock";
69 #clock-cells = <0>;
70 clock-frequency = <100000000>;
71 clock-output-names = "apb_pclk";
72 };
73
74 uartclk: baudclock {
75 compatible = "fixed-clock";
76 #clock-cells = <0>;
77 clock-frequency = <10000000>;
78 clock-output-names = "uartclk";
79 };
80
81 dbg_uart: serial@7ff80000 {
82 compatible = "arm,pl011", "arm,primecell";
83 reg = <0x0 0x7ff80000 0x0 0x00001000>;
Andre Przywara5617bd52021-05-14 16:13:55 +010084 interrupts = <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywaraeb5cb802020-08-03 12:54:58 +010085 clocks = <&uartclk>, <&bus_refclk>;
86 clock-names = "uartclk", "apb_pclk";
87 };
88
89 gic: interrupt-controller@30000000 {
90 compatible = "arm,gic-v3";
91 #address-cells = <2>;
92 #interrupt-cells = <3>;
93 #size-cells = <2>;
94 ranges;
95 interrupt-controller;
96 reg = <0x0 0x30000000 0x0 0x00010000>, /* GICD */
97 /* The GICR size will be adjusted at runtime to match the cores. */
98 <0x0 0x30040000 0x0 0x00020000>; /* GICR for one core */
99 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
Andre Przywara43c3ac52021-07-20 20:05:38 +0100100
101 its: msi-controller@30040000 {
102 compatible = "arm,gic-v3-its";
103 reg = <0x0 0x30040000 0x0 0x40000>;
104 #msi-cells = <1>;
105 msi-controller;
106 };
Andre Przywaraeb5cb802020-08-03 12:54:58 +0100107 };
108};