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