From 5e21d795b45dc21e33dcd9c8453d6f4ca923ce3a Mon Sep 17 00:00:00 2001 From: Soby Mathew <soby.mathew@arm.com> Date: Wed, 14 Sep 2016 15:51:44 +0100 Subject: [PATCH] AArch32: Update user-guide and add DTBs This patch adds necessary updates for building and running Trusted Firmware for AArch32 to user-guide.md. The instructions for running on both `FVP_Base_AEMv8A-AEMv8A` in AArch32 mode and `FVP_Base_Cortex-A32x4` models are added. The device tree files for AArch32 Linux kernel are also added in the `fdts` folder. Change-Id: I0023b6b03e05f32637cb5765fdeda8c8df2d0d3e --- docs/user-guide.md | 178 ++++++++++++-- fdts/fvp-base-gicv2-psci-aarch32.dtb | Bin 0 -> 10336 bytes fdts/fvp-base-gicv2-psci-aarch32.dts | 331 ++++++++++++++++++++++++++ fdts/fvp-base-gicv3-psci-aarch32.dtb | Bin 0 -> 10803 bytes fdts/fvp-base-gicv3-psci-aarch32.dts | 340 +++++++++++++++++++++++++++ 5 files changed, 834 insertions(+), 15 deletions(-) create mode 100644 fdts/fvp-base-gicv2-psci-aarch32.dtb create mode 100644 fdts/fvp-base-gicv2-psci-aarch32.dts create mode 100644 fdts/fvp-base-gicv3-psci-aarch32.dtb create mode 100644 fdts/fvp-base-gicv3-psci-aarch32.dts diff --git a/docs/user-guide.md b/docs/user-guide.md index a07185d49..051f92009 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -89,23 +89,50 @@ Download the Trusted Firmware source code from Github: --------------------------------- * Before building Trusted Firmware, the environment variable `CROSS_COMPILE` - must point to the Linaro cross compiler: + must point to the Linaro cross compiler. + + For AArch64: export CROSS_COMPILE=<path-to-aarch64-gcc>/bin/aarch64-linux-gnu- -* Change to the root directory of the Trusted Firmware source tree and build: + For AArch32: + + export CROSS_COMPILE=<path-to-aarch32-gcc>/bin/arm-linux-gnueabihf- + +* Change to the root directory of the Trusted Firmware source tree and build. + + For AArch64: make PLAT=<platform> all - Notes: + For AArch32: + + make PLAT=<platform> ARCH=aarch32 AARCH32_SP=sp_min all + + + Notes: * If `PLAT` is not specified, `fvp` is assumed by default. See the "Summary of build options" for more information on available build options. - * The TSP (Test Secure Payload), corresponding to the BL32 image, is not - compiled in by default. Refer to the "Building the Test Secure Payload" - section below. + * (AArch32 only) Currently only `PLAT=fvp` is supported. Please note that + AArch32 support for Normal world boot loader (BL33), like U-boot or + UEFI, on FVP is not available upstream. Hence custom solutions are + required to allow Linux boot on FVP. The build instructions below + assume such a custom boot loader (BL33) is available. + + * (AArch32 only) `AARCH32_SP` is the AArch32 EL3 Runtime Software and it + corresponds to the BL32 image. A minimal `AARCH32_SP`, sp_min, is + provided by ARM Trusted Firmware to demonstrate how PSCI Library can + be integrated with an AArch32 EL3 Runtime Software. Some AArch32 EL3 + Runtime Software may include other runtime services, for example + Trusted OS services. A guide to integrate PSCI library with AArch32 + EL3 Runtime Software can be found [here][PSCI Lib Integration]. + + * (AArch64 only) The TSP (Test Secure Payload), corresponding to the BL32 + image, is not compiled in by default. Refer to the "Building the Test + Secure Payload" section below. * By default this produces a release version of the build. To produce a debug version instead, refer to the "Debugging options" section below. @@ -117,7 +144,8 @@ Download the Trusted Firmware source code from Github: * `build/<platform>/<build-type>/bl1.bin` * `build/<platform>/<build-type>/bl2.bin` - * `build/<platform>/<build-type>/bl31.bin` + * `build/<platform>/<build-type>/bl31.bin` (AArch64 only) + * `build/<platform>/<build-type>/bl32.bin` (mandatory for AArch32) where `<platform>` is the name of the chosen platform and `<build-type>` is either `debug` or `release`. The actual number of images might differ @@ -238,6 +266,12 @@ performed. entrypoint) or 1 (CPU reset to BL31 entrypoint). The default value is 0. +* `RESET_TO_SP_MIN`: SP_MIN is the minimal AArch32 Secure Payload provided in + ARM Trusted Firmware. This flag configures SP_MIN entrypoint as the CPU + reset vector instead of the BL1 entrypoint. It can take the value 0 (CPU + reset to BL1 entrypoint) or 1 (CPU reset to SP_MIN entrypoint). The default + value is 0. + * `CRASH_REPORTING`: A non-zero value enables a console dump of processor register state when an unexpected exception occurs during execution of BL31. This option defaults to the value of `DEBUG` - i.e. by default @@ -600,7 +634,6 @@ An additional boot loader binary file is created in the `build` directory: `build/<platform>/<build-type>/bl32.bin` - ### Checking source code style When making changes to the source for submission to the project, the source @@ -1042,8 +1075,8 @@ JTAG on Juno. 9. Running the software on FVP ------------------------------- -This version of the ARM Trusted Firmware has been tested on the following ARM -FVPs (64-bit versions only). +The AArch64 build of this version of ARM Trusted Firmware has been tested on +the following ARM FVPs (64-bit host machine only). * `Foundation_Platform` (Version 10.1, Build 10.1.32) * `FVP_Base_AEMv8A-AEMv8A` (Version 7.7, Build 0.8.7701) @@ -1051,6 +1084,12 @@ FVPs (64-bit versions only). * `FVP_Base_Cortex-A57x1-A53x1` (Version 7.7, Build 0.8.7701) * `FVP_Base_Cortex-A57x2-A53x4` (Version 7.7, Build 0.8.7701) +The AArch32 build of this version of ARM Trusted Firmware has been tested on +the following ARM FVPs (64-bit host machine only). + +* `FVP_Base_AEMv8A-AEMv8A` (Version 7.7, Build 0.8.7701) +* `FVP_Base_Cortex-A32x4` (Version 10.1, Build 10.1.32) + NOTE: The build numbers quoted above are those reported by launching the FVP with the `--version` parameter. @@ -1082,11 +1121,21 @@ all FDTs are available from there. For use with both AEMv8 and Cortex-A57-A53 Base FVPs with Base memory map configuration. +* `fvp-base-gicv2-psci-aarch32.dtb` + + For use with AEMv8 and Cortex-A32 Base FVPs running Linux in AArch32 state + with Base memory map configuration. + * `fvp-base-gicv3-psci.dtb` (Default) For use with both AEMv8 and Cortex-A57-A53 Base FVPs with Base memory map configuration and Linux GICv3 support. +* `fvp-base-gicv3-psci-aarch32.dtb` + + For use with AEMv8 and Cortex-A32 Base FVPs running Linux in AArch32 state + with Base memory map configuration and Linux GICv3 support. + * `fvp-foundation-gicv2-psci.dtb` For use with Foundation FVP with Base memory map configuration. @@ -1099,7 +1148,7 @@ all FDTs are available from there. ### Running on the Foundation FVP with reset to BL1 entrypoint The following `Foundation_Platform` parameters should be used to boot Linux with -4 CPUs using the ARM Trusted Firmware. +4 CPUs using the AArch64 build of ARM Trusted Firmware. <path-to>/Foundation_Platform \ --cores=4 \ @@ -1124,7 +1173,7 @@ Notes: ### Running on the AEMv8 Base FVP with reset to BL1 entrypoint The following `FVP_Base_AEMv8A-AEMv8A` parameters should be used to boot Linux -with 8 CPUs using the ARM Trusted Firmware. +with 8 CPUs using the AArch64 build of ARM Trusted Firmware. <path-to>/FVP_Base_AEMv8A-AEMv8A \ -C pctl.startup=0.0.0.0 \ @@ -1139,10 +1188,36 @@ with 8 CPUs using the ARM Trusted Firmware. --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ -C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>" +### Running on the AEMv8 Base FVP (AArch32) with reset to BL1 entrypoint + +The following `FVP_Base_AEMv8A-AEMv8A` parameters should be used to boot Linux +with 8 CPUs using the AArch32 build of ARM Trusted Firmware. + + <path-to>/FVP_Base_AEMv8A-AEMv8A \ + -C pctl.startup=0.0.0.0 \ + -C bp.secure_memory=1 \ + -C bp.tzc_400.diagnostics=1 \ + -C cluster0.NUM_CORES=4 \ + -C cluster1.NUM_CORES=4 \ + -C cache_state_modelled=1 \ + -C cluster0.cpu0.CONFIG64=0 \ + -C cluster0.cpu1.CONFIG64=0 \ + -C cluster0.cpu2.CONFIG64=0 \ + -C cluster0.cpu3.CONFIG64=0 \ + -C cluster1.cpu0.CONFIG64=0 \ + -C cluster1.cpu1.CONFIG64=0 \ + -C cluster1.cpu2.CONFIG64=0 \ + -C cluster1.cpu3.CONFIG64=0 \ + -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ + -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ + --data cluster0.cpu0="<path-to>/<fdt>"@0x83000000 \ + --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ + -C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>" + ### Running on the Cortex-A57-A53 Base FVP with reset to BL1 entrypoint The following `FVP_Base_Cortex-A57x4-A53x4` model parameters should be used to -boot Linux with 8 CPUs using the ARM Trusted Firmware. +boot Linux with 8 CPUs using the AArch64 build of ARM Trusted Firmware. <path-to>/FVP_Base_Cortex-A57x4-A53x4 \ -C pctl.startup=0.0.0.0 \ @@ -1155,10 +1230,26 @@ boot Linux with 8 CPUs using the ARM Trusted Firmware. --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ -C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>" +### Running on the Cortex-A32 Base FVP (AArch32) with reset to BL1 entrypoint + +The following `FVP_Base_Cortex-A32x4` model parameters should be used to +boot Linux with 4 CPUs using the AArch32 build of ARM Trusted Firmware. + + <path-to>/FVP_Base_Cortex-A32x4 \ + -C pctl.startup=0.0.0.0 \ + -C bp.secure_memory=1 \ + -C bp.tzc_400.diagnostics=1 \ + -C cache_state_modelled=1 \ + -C bp.secureflashloader.fname="<path-to>/<bl1-binary>" \ + -C bp.flashloader0.fname="<path-to>/<FIP-binary>" \ + --data cluster0.cpu0="<path-to>/<fdt>"@0x83000000 \ + --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ + -C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>" + ### Running on the AEMv8 Base FVP with reset to BL31 entrypoint The following `FVP_Base_AEMv8A-AEMv8A` parameters should be used to boot Linux -with 8 CPUs using the ARM Trusted Firmware. +with 8 CPUs using the AArch64 build of ARM Trusted Firmware. <path-to>/FVP_Base_AEMv8A-AEMv8A \ -C pctl.startup=0.0.0.0 \ @@ -1199,10 +1290,47 @@ Notes: `--data="<path-to><bl32-binary>"@<base-address-of-bl32>` to the new value of `BL32_BASE`. +### Running on the AEMv8 Base FVP (AArch32) with reset to SP_MIN entrypoint + +The following `FVP_Base_AEMv8A-AEMv8A` parameters should be used to boot Linux +with 8 CPUs using the AArch32 build of ARM Trusted Firmware. + + <path-to>/FVP_Base_AEMv8A-AEMv8A \ + -C pctl.startup=0.0.0.0 \ + -C bp.secure_memory=1 \ + -C bp.tzc_400.diagnostics=1 \ + -C cluster0.NUM_CORES=4 \ + -C cluster1.NUM_CORES=4 \ + -C cache_state_modelled=1 \ + -C cluster0.cpu0.CONFIG64=0 \ + -C cluster0.cpu1.CONFIG64=0 \ + -C cluster0.cpu2.CONFIG64=0 \ + -C cluster0.cpu3.CONFIG64=0 \ + -C cluster1.cpu0.CONFIG64=0 \ + -C cluster1.cpu1.CONFIG64=0 \ + -C cluster1.cpu2.CONFIG64=0 \ + -C cluster1.cpu3.CONFIG64=0 \ + -C cluster0.cpu0.RVBAR=0x04001000 \ + -C cluster0.cpu1.RVBAR=0x04001000 \ + -C cluster0.cpu2.RVBAR=0x04001000 \ + -C cluster0.cpu3.RVBAR=0x04001000 \ + -C cluster1.cpu0.RVBAR=0x04001000 \ + -C cluster1.cpu1.RVBAR=0x04001000 \ + -C cluster1.cpu2.RVBAR=0x04001000 \ + -C cluster1.cpu3.RVBAR=0x04001000 \ + --data cluster0.cpu0="<path-to>/<bl32-binary>"@0x04001000 \ + --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ + --data cluster0.cpu0="<path-to>/<fdt>"@0x83000000 \ + --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ + -C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>" + +Note: The load address of `<bl32-binary>` depends on the value `BL32_BASE`. +It should match the address programmed into the RVBAR register as well. + ### Running on the Cortex-A57-A53 Base FVP with reset to BL31 entrypoint The following `FVP_Base_Cortex-A57x4-A53x4` model parameters should be used to -boot Linux with 8 CPUs using the ARM Trusted Firmware. +boot Linux with 8 CPUs using the AArch64 build of ARM Trusted Firmware. <path-to>/FVP_Base_Cortex-A57x4-A53x4 \ -C pctl.startup=0.0.0.0 \ @@ -1224,6 +1352,25 @@ boot Linux with 8 CPUs using the ARM Trusted Firmware. --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ -C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>" +### Running on the Cortex-A32 Base FVP (AArch32) with reset to SP_MIN entrypoint + +The following `FVP_Base_Cortex-A32x4` model parameters should be used to +boot Linux with 4 CPUs using the AArch32 build of ARM Trusted Firmware. + + <path-to>/FVP_Base_Cortex-A32x4 \ + -C pctl.startup=0.0.0.0 \ + -C bp.secure_memory=1 \ + -C bp.tzc_400.diagnostics=1 \ + -C cache_state_modelled=1 \ + -C cluster0.cpu0.RVBARADDR=0x04001000 \ + -C cluster0.cpu1.RVBARADDR=0x04001000 \ + -C cluster0.cpu2.RVBARADDR=0x04001000 \ + -C cluster0.cpu3.RVBARADDR=0x04001000 \ + --data cluster0.cpu0="<path-to>/<bl32-binary>"@0x04001000 \ + --data cluster0.cpu0="<path-to>/<bl33-binary>"@0x88000000 \ + --data cluster0.cpu0="<path-to>/<fdt>"@0x83000000 \ + --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ + -C bp.virtioblockdevice.image_path="<path-to>/<file-system-image>" 10. Running the software on Juno --------------------------------- @@ -1280,3 +1427,4 @@ _Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved._ [PSCI]: http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdf "Power State Coordination Interface PDD (ARM DEN 0022C)" [Trusted Board Boot]: trusted-board-boot.md [Firmware Update]: ./firmware-update.md +[PSCI Lib Integration]: ./psci-lib-integration-guide.md diff --git a/fdts/fvp-base-gicv2-psci-aarch32.dtb b/fdts/fvp-base-gicv2-psci-aarch32.dtb new file mode 100644 index 0000000000000000000000000000000000000000..b044a769b07e2d04da2a0012b4e9f93843994313 GIT binary patch literal 10336 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 literal 0 HcmV?d00001 diff --git a/fdts/fvp-base-gicv2-psci-aarch32.dts b/fdts/fvp-base-gicv2-psci-aarch32.dts new file mode 100644 index 000000000..3a6007de7 --- /dev/null +++ b/fdts/fvp-base-gicv2-psci-aarch32.dts @@ -0,0 +1,331 @@ +/* + * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of ARM nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/dts-v1/; + +/memreserve/ 0x80000000 0x00010000; + +/ { +}; + +/ { + model = "FVP Base"; + compatible = "arm,vfp-base", "arm,vexpress"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + chosen { }; + + aliases { + serial0 = &v2m_serial0; + serial1 = &v2m_serial1; + serial2 = &v2m_serial2; + serial3 = &v2m_serial3; + }; + + psci { + compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci"; + method = "smc"; + cpu_suspend = <0x84000001>; + cpu_off = <0x84000002>; + cpu_on = <0x84000003>; + sys_poweroff = <0x84000008>; + sys_reset = <0x84000009>; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu-map { + cluster0 { + core0 { + cpu = <&CPU0>; + }; + core1 { + cpu = <&CPU1>; + }; + core2 { + cpu = <&CPU2>; + }; + core3 { + cpu = <&CPU3>; + }; + }; + + cluster1 { + core0 { + cpu = <&CPU4>; + }; + core1 { + cpu = <&CPU5>; + }; + core2 { + cpu = <&CPU6>; + }; + core3 { + cpu = <&CPU7>; + }; + }; + }; + + idle-states { + entry-method = "arm,psci"; + + CPU_SLEEP_0: cpu-sleep-0 { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; + entry-latency-us = <40>; + exit-latency-us = <100>; + min-residency-us = <150>; + }; + + CLUSTER_SLEEP_0: cluster-sleep-0 { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; + entry-latency-us = <500>; + exit-latency-us = <1000>; + min-residency-us = <2500>; + }; + }; + + CPU0:cpu@0 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU1:cpu@1 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x1>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU2:cpu@2 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x2>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU3:cpu@3 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x3>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU4:cpu@100 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x100>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU5:cpu@101 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x101>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU6:cpu@102 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x102>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU7:cpu@103 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x103>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + L2_0: l2-cache0 { + compatible = "cache"; + }; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x00000000 0x80000000 0 0x7F000000>, + <0x00000008 0x80000000 0 0x80000000>; + }; + + gic: interrupt-controller@2f000000 { + compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + reg = <0x0 0x2f000000 0 0x10000>, + <0x0 0x2c000000 0 0x2000>, + <0x0 0x2c010000 0 0x2000>, + <0x0 0x2c02F000 0 0x2000>; + interrupts = <1 9 0xf04>; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = <1 13 0xff01>, + <1 14 0xff01>, + <1 11 0xff01>, + <1 10 0xff01>; + clock-frequency = <100000000>; + }; + + timer@2a810000 { + compatible = "arm,armv7-timer-mem"; + reg = <0x0 0x2a810000 0x0 0x10000>; + clock-frequency = <100000000>; + #address-cells = <2>; + #size-cells = <2>; + ranges; + frame@2a830000 { + frame-number = <1>; + interrupts = <0 26 4>; + reg = <0x0 0x2a830000 0x0 0x10000>; + }; + }; + + pmu { + compatible = "arm,armv8-pmuv3"; + interrupts = <0 60 4>, + <0 61 4>, + <0 62 4>, + <0 63 4>; + }; + + smb { + compatible = "simple-bus"; + + #address-cells = <2>; + #size-cells = <1>; + ranges = <0 0 0 0x08000000 0x04000000>, + <1 0 0 0x14000000 0x04000000>, + <2 0 0 0x18000000 0x04000000>, + <3 0 0 0x1c000000 0x04000000>, + <4 0 0 0x0c000000 0x04000000>, + <5 0 0 0x10000000 0x04000000>; + + #interrupt-cells = <1>; + interrupt-map-mask = <0 0 63>; + interrupt-map = <0 0 0 &gic 0 0 4>, + <0 0 1 &gic 0 1 4>, + <0 0 2 &gic 0 2 4>, + <0 0 3 &gic 0 3 4>, + <0 0 4 &gic 0 4 4>, + <0 0 5 &gic 0 5 4>, + <0 0 6 &gic 0 6 4>, + <0 0 7 &gic 0 7 4>, + <0 0 8 &gic 0 8 4>, + <0 0 9 &gic 0 9 4>, + <0 0 10 &gic 0 10 4>, + <0 0 11 &gic 0 11 4>, + <0 0 12 &gic 0 12 4>, + <0 0 13 &gic 0 13 4>, + <0 0 14 &gic 0 14 4>, + <0 0 15 &gic 0 15 4>, + <0 0 16 &gic 0 16 4>, + <0 0 17 &gic 0 17 4>, + <0 0 18 &gic 0 18 4>, + <0 0 19 &gic 0 19 4>, + <0 0 20 &gic 0 20 4>, + <0 0 21 &gic 0 21 4>, + <0 0 22 &gic 0 22 4>, + <0 0 23 &gic 0 23 4>, + <0 0 24 &gic 0 24 4>, + <0 0 25 &gic 0 25 4>, + <0 0 26 &gic 0 26 4>, + <0 0 27 &gic 0 27 4>, + <0 0 28 &gic 0 28 4>, + <0 0 29 &gic 0 29 4>, + <0 0 30 &gic 0 30 4>, + <0 0 31 &gic 0 31 4>, + <0 0 32 &gic 0 32 4>, + <0 0 33 &gic 0 33 4>, + <0 0 34 &gic 0 34 4>, + <0 0 35 &gic 0 35 4>, + <0 0 36 &gic 0 36 4>, + <0 0 37 &gic 0 37 4>, + <0 0 38 &gic 0 38 4>, + <0 0 39 &gic 0 39 4>, + <0 0 40 &gic 0 40 4>, + <0 0 41 &gic 0 41 4>, + <0 0 42 &gic 0 42 4>; + + /include/ "rtsm_ve-motherboard.dtsi" + }; + + panels { + panel@0 { + compatible = "panel"; + mode = "XVGA"; + refresh = <60>; + xres = <1024>; + yres = <768>; + pixclock = <15748>; + left_margin = <152>; + right_margin = <48>; + upper_margin = <23>; + lower_margin = <3>; + hsync_len = <104>; + vsync_len = <4>; + sync = <0>; + vmode = "FB_VMODE_NONINTERLACED"; + tim2 = "TIM2_BCD", "TIM2_IPC"; + cntl = "CNTL_LCDTFT", "CNTL_BGR", "CNTL_LCDVCOMP(1)"; + caps = "CLCD_CAP_5551", "CLCD_CAP_565", "CLCD_CAP_888"; + bpp = <16>; + }; + }; +}; diff --git a/fdts/fvp-base-gicv3-psci-aarch32.dtb b/fdts/fvp-base-gicv3-psci-aarch32.dtb new file mode 100644 index 0000000000000000000000000000000000000000..474b18885c3e4bafe236889a5d39bfc0da469b59 GIT binary patch literal 10803 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 literal 0 HcmV?d00001 diff --git a/fdts/fvp-base-gicv3-psci-aarch32.dts b/fdts/fvp-base-gicv3-psci-aarch32.dts new file mode 100644 index 000000000..ab699151c --- /dev/null +++ b/fdts/fvp-base-gicv3-psci-aarch32.dts @@ -0,0 +1,340 @@ +/* + * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of ARM nor the names of its contributors may be used + * to endorse or promote products derived from this software without specific + * prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/dts-v1/; + +/memreserve/ 0x80000000 0x00010000; + +/ { +}; + +/ { + model = "FVP Base"; + compatible = "arm,vfp-base", "arm,vexpress"; + interrupt-parent = <&gic>; + #address-cells = <2>; + #size-cells = <2>; + + chosen { }; + + aliases { + serial0 = &v2m_serial0; + serial1 = &v2m_serial1; + serial2 = &v2m_serial2; + serial3 = &v2m_serial3; + }; + + psci { + compatible = "arm,psci-1.0", "arm,psci-0.2", "arm,psci"; + method = "smc"; + cpu_suspend = <0x84000001>; + cpu_off = <0x84000002>; + cpu_on = <0x84000003>; + sys_poweroff = <0x84000008>; + sys_reset = <0x84000009>; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu-map { + cluster0 { + core0 { + cpu = <&CPU0>; + }; + core1 { + cpu = <&CPU1>; + }; + core2 { + cpu = <&CPU2>; + }; + core3 { + cpu = <&CPU3>; + }; + }; + + cluster1 { + core0 { + cpu = <&CPU4>; + }; + core1 { + cpu = <&CPU5>; + }; + core2 { + cpu = <&CPU6>; + }; + core3 { + cpu = <&CPU7>; + }; + }; + }; + + idle-states { + entry-method = "arm,psci"; + + CPU_SLEEP_0: cpu-sleep-0 { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x0010000>; + entry-latency-us = <40>; + exit-latency-us = <100>; + min-residency-us = <150>; + }; + + CLUSTER_SLEEP_0: cluster-sleep-0 { + compatible = "arm,idle-state"; + local-timer-stop; + arm,psci-suspend-param = <0x1010000>; + entry-latency-us = <500>; + exit-latency-us = <1000>; + min-residency-us = <2500>; + }; + }; + + CPU0:cpu@0 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x0>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU1:cpu@1 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x1>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU2:cpu@2 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x2>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU3:cpu@3 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x3>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU4:cpu@100 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x100>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU5:cpu@101 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x101>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU6:cpu@102 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x102>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + CPU7:cpu@103 { + device_type = "cpu"; + compatible = "arm,armv8"; + reg = <0x103>; + enable-method = "psci"; + cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>; + next-level-cache = <&L2_0>; + }; + + L2_0: l2-cache0 { + compatible = "cache"; + }; + }; + + memory@80000000 { + device_type = "memory"; + reg = <0x00000000 0x80000000 0 0x7F000000>, + <0x00000008 0x80000000 0 0x80000000>; + }; + + gic: interrupt-controller@2f000000 { + compatible = "arm,gic-v3"; + #interrupt-cells = <3>; + #address-cells = <2>; + #size-cells = <2>; + ranges; + interrupt-controller; + reg = <0x0 0x2f000000 0 0x10000>, // GICD + <0x0 0x2f100000 0 0x200000>, // GICR + <0x0 0x2c000000 0 0x2000>, // GICC + <0x0 0x2c010000 0 0x2000>, // GICH + <0x0 0x2c02f000 0 0x2000>; // GICV + interrupts = <1 9 4>; + + its: its@2f020000 { + compatible = "arm,gic-v3-its"; + msi-controller; + reg = <0x0 0x2f020000 0x0 0x20000>; // GITS + }; + }; + + timer { + compatible = "arm,armv8-timer"; + interrupts = <1 13 0xff01>, + <1 14 0xff01>, + <1 11 0xff01>, + <1 10 0xff01>; + clock-frequency = <100000000>; + }; + + timer@2a810000 { + compatible = "arm,armv7-timer-mem"; + reg = <0x0 0x2a810000 0x0 0x10000>; + clock-frequency = <100000000>; + #address-cells = <2>; + #size-cells = <2>; + ranges; + frame@2a830000 { + frame-number = <1>; + interrupts = <0 26 4>; + reg = <0x0 0x2a830000 0x0 0x10000>; + }; + }; + + pmu { + compatible = "arm,armv8-pmuv3"; + interrupts = <0 60 4>, + <0 61 4>, + <0 62 4>, + <0 63 4>; + }; + + smb { + compatible = "simple-bus"; + + #address-cells = <2>; + #size-cells = <1>; + ranges = <0 0 0 0x08000000 0x04000000>, + <1 0 0 0x14000000 0x04000000>, + <2 0 0 0x18000000 0x04000000>, + <3 0 0 0x1c000000 0x04000000>, + <4 0 0 0x0c000000 0x04000000>, + <5 0 0 0x10000000 0x04000000>; + + #interrupt-cells = <1>; + interrupt-map-mask = <0 0 63>; + interrupt-map = <0 0 0 &gic 0 0 0 0 4>, + <0 0 1 &gic 0 0 0 1 4>, + <0 0 2 &gic 0 0 0 2 4>, + <0 0 3 &gic 0 0 0 3 4>, + <0 0 4 &gic 0 0 0 4 4>, + <0 0 5 &gic 0 0 0 5 4>, + <0 0 6 &gic 0 0 0 6 4>, + <0 0 7 &gic 0 0 0 7 4>, + <0 0 8 &gic 0 0 0 8 4>, + <0 0 9 &gic 0 0 0 9 4>, + <0 0 10 &gic 0 0 0 10 4>, + <0 0 11 &gic 0 0 0 11 4>, + <0 0 12 &gic 0 0 0 12 4>, + <0 0 13 &gic 0 0 0 13 4>, + <0 0 14 &gic 0 0 0 14 4>, + <0 0 15 &gic 0 0 0 15 4>, + <0 0 16 &gic 0 0 0 16 4>, + <0 0 17 &gic 0 0 0 17 4>, + <0 0 18 &gic 0 0 0 18 4>, + <0 0 19 &gic 0 0 0 19 4>, + <0 0 20 &gic 0 0 0 20 4>, + <0 0 21 &gic 0 0 0 21 4>, + <0 0 22 &gic 0 0 0 22 4>, + <0 0 23 &gic 0 0 0 23 4>, + <0 0 24 &gic 0 0 0 24 4>, + <0 0 25 &gic 0 0 0 25 4>, + <0 0 26 &gic 0 0 0 26 4>, + <0 0 27 &gic 0 0 0 27 4>, + <0 0 28 &gic 0 0 0 28 4>, + <0 0 29 &gic 0 0 0 29 4>, + <0 0 30 &gic 0 0 0 30 4>, + <0 0 31 &gic 0 0 0 31 4>, + <0 0 32 &gic 0 0 0 32 4>, + <0 0 33 &gic 0 0 0 33 4>, + <0 0 34 &gic 0 0 0 34 4>, + <0 0 35 &gic 0 0 0 35 4>, + <0 0 36 &gic 0 0 0 36 4>, + <0 0 37 &gic 0 0 0 37 4>, + <0 0 38 &gic 0 0 0 38 4>, + <0 0 39 &gic 0 0 0 39 4>, + <0 0 40 &gic 0 0 0 40 4>, + <0 0 41 &gic 0 0 0 41 4>, + <0 0 42 &gic 0 0 0 42 4>; + + /include/ "rtsm_ve-motherboard.dtsi" + }; + + panels { + panel@0 { + compatible = "panel"; + mode = "XVGA"; + refresh = <60>; + xres = <1024>; + yres = <768>; + pixclock = <15748>; + left_margin = <152>; + right_margin = <48>; + upper_margin = <23>; + lower_margin = <3>; + hsync_len = <104>; + vsync_len = <4>; + sync = <0>; + vmode = "FB_VMODE_NONINTERLACED"; + tim2 = "TIM2_BCD", "TIM2_IPC"; + cntl = "CNTL_LCDTFT", "CNTL_BGR", "CNTL_LCDVCOMP(1)"; + caps = "CLCD_CAP_5551", "CLCD_CAP_565", "CLCD_CAP_888"; + bpp = <16>; + }; + }; +}; -- GitLab