mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 09:34:18 +00:00

About a year ago there was a change in the underlying Arm platform design framework, which lead to a reorganisation of the interrupt map (to make room for multi-chip designs). This lead to the PL011 debug UART interrupt to move from SPI 115 to SPI 415. Unfortunately there is not a good or easy way to auto-detect this change: Flooding the TX FIFO and checking GICD_ISPENDR registers might be possible, but sounds a bit over the top for BL31. So we would need to break one group of images: newer ones, as we do right now, or older ones. By now every interesting FPGA image seems to use the newer IRQ, so in the interest of having a smooth experience for most users, lets switch to this IRQ. When people are interested in older images, they can either change the number back in the .dts file, or provide a patched DTB on the FPGA command line. Change-Id: I3c7e7b711f5142813bd94eecde3095a4fc555bb3 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
102 lines
2.5 KiB
Text
102 lines
2.5 KiB
Text
// 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";
|
|
clock-frequency = <10000000>;
|
|
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>;
|
|
};
|
|
};
|