Add basic support for Raspberry Pi 4
authorAndre Przywara <andre.przywara@arm.com>
Tue, 9 Jul 2019 10:25:57 +0000 (11:25 +0100)
committerAndre Przywara <andre.przywara@arm.com>
Wed, 25 Sep 2019 10:45:35 +0000 (11:45 +0100)
commitf5cb15b0c886afaa41c5d3dad8e859b6a41f76ab
tree3bd561794095e0338d46e69aaedf500d06c4eb32
parent7c0a1877e76b5dc7b6326e3cb670c5156d4d4383
Add basic support for Raspberry Pi 4

The Raspberry Pi 4 is a single board computer with four Cortex-A72
cores. From a TF-A perspective it is quite similar to the Raspberry Pi
3, although it comes with more memory (up to 4GB) and has a GIC.

This initial port though differs quite a lot from the existing rpi3
platform port, mainly due to taking a much simpler and more robust
approach to loading the non-secure payload:
The GPU firmware of the SoC, which is responsible for initial platform
setup (including DRAM initialisation), already loads the kernel, device
tree and the "armstub" into DRAM. We take advantage of this, by placing
just a BL31 component into the armstub8.bin component, which will be
executed first, in AArch64 EL3.
The non-secure payload can be a kernel or a boot loader (U-Boot or
EDK-2), disguised as the "kernel" image and loaded by the GPU firmware.

So this is just a BL31-only port, which directly drops into EL2
and executes whatever has been loaded as the "kernel" image, handing
over the DTB address in x0.

Change-Id: I636f4d1f661821566ad9e341d69ba36f6bbfb546
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
plat/rpi/rpi4/aarch64/plat_helpers.S [new file with mode: 0644]
plat/rpi/rpi4/include/plat_macros.S [new file with mode: 0644]
plat/rpi/rpi4/include/platform_def.h [new file with mode: 0644]
plat/rpi/rpi4/include/rpi_hw.h [new file with mode: 0644]
plat/rpi/rpi4/platform.mk [new file with mode: 0644]
plat/rpi/rpi4/rpi4_bl31_setup.c [new file with mode: 0644]