blob: c0efd09494ed53eddbf16c4361c5479da9c86a16 [file] [log] [blame]
// SPDX-License-Identifier: (GPL-2.0 or BSD-3-Clause)
/*
* Copyright (c) 2020, Arm Limited. All rights reserved.
*
* Devicetree for the Arm Ltd. FPGA platform
* Number and kind of CPU cores differs from image to image, so the
* topology is auto-detected by BL31, and the /cpus node is created and
* populated accordingly at runtime.
*/
#include <dt-bindings/interrupt-controller/arm-gic.h>
/dts-v1/;
/ {
model = "ARM FPGA";
compatible = "arm,fpga", "arm,vexpress";
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
aliases {
serial0 = &dbg_uart;
};
chosen {
stdout-path = "serial0:38400n8";
bootargs = "console=ttyAMA0,38400n8 earlycon";
/* Allow to upload a generous 100MB initrd payload. */
linux,initrd-start = <0x0 0x84000000>;
linux,initrd-end = <0x0 0x8a400000>;
};
/* /cpus node will be added by BL31 at runtime. */
psci {
compatible = "arm,psci-0.2";
method = "smc";
};
timer {
compatible = "arm,armv8-timer";
interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
<GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
};
pmu {
compatible = "arm,armv8-pmuv3";
interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
};
/* This node will be removed at runtime on cores without SPE. */
spe-pmu {
compatible = "arm,statistical-profiling-extension-v1";
interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
};
memory@80000000 {
device_type = "memory";
reg = <0x0 0x80000000 0x0 0x80000000>,
<0x8 0x80000000 0x1 0x80000000>;
};
bus_refclk: refclk {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <100000000>;
clock-output-names = "apb_pclk";
};
uartclk: baudclock {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <10000000>;
clock-output-names = "uartclk";
};
dbg_uart: serial@7ff80000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x0 0x7ff80000 0x0 0x00001000>;
interrupts = <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&uartclk>, <&bus_refclk>;
clock-names = "uartclk", "apb_pclk";
};
gic: interrupt-controller@30000000 {
compatible = "arm,gic-v3";
#address-cells = <2>;
#interrupt-cells = <3>;
#size-cells = <2>;
ranges;
interrupt-controller;
reg = <0x0 0x30000000 0x0 0x00010000>, /* GICD */
/* The GICR size will be adjusted at runtime to match the cores. */
<0x0 0x30040000 0x0 0x00020000>; /* GICR for one core */
interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
its: msi-controller@30040000 {
compatible = "arm,gic-v3-its";
reg = <0x0 0x30040000 0x0 0x40000>;
#msi-cells = <1>;
msi-controller;
};
};
};