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