mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-23 13:36:05 +00:00
Merge pull request #1232 from masahir0y/uniphier
uniphier: migrate to BL2-AT-EL3
This commit is contained in:
commit
f478253da8
7 changed files with 73 additions and 156 deletions
|
@ -3,26 +3,28 @@ ARM Trusted Firmware for Socionext UniPhier SoCs
|
||||||
|
|
||||||
|
|
||||||
Socionext UniPhier ARMv8-A SoCs use ARM Trusted Firmware as the secure world
|
Socionext UniPhier ARMv8-A SoCs use ARM Trusted Firmware as the secure world
|
||||||
firmware, supporting BL1, BL2, and BL31.
|
firmware, supporting BL2 and BL31.
|
||||||
|
|
||||||
UniPhier SoC family implements its internal boot ROM, so BL1 is used as pseudo
|
UniPhier SoC family implements its internal boot ROM, which loads 64KB [1]_
|
||||||
ROM (i.e. runs in RAM). The internal boot ROM loads 64KB [1]_ image from a
|
image from a non-volatile storage to the on-chip SRAM, and jumps over to it.
|
||||||
non-volatile storage to the on-chip SRAM. Unfortunately, BL1 does not fit in
|
ARM Trusted Firmware provides a special mode, BL2-AT-EL3, which enables BL2 to
|
||||||
the 64KB limit if `Trusted Board Boot`_ (TBB) is enabled. To solve this problem,
|
execute at EL3. It is useful for platforms with non-TF boot ROM, like UniPhier.
|
||||||
Socionext provides a first stage loader called `UniPhier BL`_. This loader runs
|
Here, a problem is BL2 does not fit in the 64KB limit if `Trusted Board Boot`_
|
||||||
in the on-chip SRAM, initializes the DRAM, expands BL1 there, and hands the
|
(TBB) is enabled. To solve this issue, Socionext provides a first stage loader
|
||||||
control over to it. Therefore, all images of ARM Trusted Firmware run in DRAM.
|
called `UniPhier BL`_. This loader runs in the on-chip SRAM, initializes the
|
||||||
|
DRAM, expands BL2 there, and hands the control over to it. Therefore, all images
|
||||||
|
of ARM Trusted Firmware run in DRAM.
|
||||||
|
|
||||||
The UniPhier platform works with/without TBB. See below for the build process
|
The UniPhier platform works with/without TBB. See below for the build process
|
||||||
of each case. The image authentication for the UniPhier platform fully
|
of each case. The image authentication for the UniPhier platform fully
|
||||||
complies with the Trusted Board Boot Requirements (TBBR) specification.
|
complies with the Trusted Board Boot Requirements (TBBR) specification.
|
||||||
|
|
||||||
The UniPhier BL does not implement the authentication functionality, that is,
|
The UniPhier BL does not implement the authentication functionality, that is,
|
||||||
it can not verify the BL1 image by itself. Instead, the UniPhier BL assures
|
it can not verify the BL2 image by itself. Instead, the UniPhier BL assures
|
||||||
the BL1 validity in a different way; BL1 is GZIP-compressed and appended to
|
the BL2 validity in a different way; BL2 is GZIP-compressed and appended to
|
||||||
the UniPhier BL. The concatenation of the UniPhier BL and the compressed BL1
|
the UniPhier BL. The concatenation of the UniPhier BL and the compressed BL2
|
||||||
fits in the 64KB limit. The concatenated image is loaded by the boot ROM
|
fits in the 64KB limit. The concatenated image is loaded by the internal boot
|
||||||
(and verified if the chip fuses are blown).
|
ROM (and verified if the chip fuses are blown).
|
||||||
|
|
||||||
|
|
||||||
Boot Flow
|
Boot Flow
|
||||||
|
@ -31,32 +33,32 @@ Boot Flow
|
||||||
1. The Boot ROM
|
1. The Boot ROM
|
||||||
|
|
||||||
This is hard-wired ROM, so never corrupted. It loads the UniPhier BL (with
|
This is hard-wired ROM, so never corrupted. It loads the UniPhier BL (with
|
||||||
compressed-BL1 appended) into the on-chip SRAM. If the SoC fuses are blown,
|
compressed-BL2 appended) into the on-chip SRAM. If the SoC fuses are blown,
|
||||||
the image is verified by the SoC's own method.
|
the image is verified by the SoC's own method.
|
||||||
|
|
||||||
2. UniPhier BL
|
2. UniPhier BL
|
||||||
|
|
||||||
This runs in the on-chip SRAM. After the minimum SoC initialization and DRAM
|
This runs in the on-chip SRAM. After the minimum SoC initialization and DRAM
|
||||||
setup, it decompresses the appended BL1 image into the DRAM, then jumps to
|
setup, it decompresses the appended BL2 image into the DRAM, then jumps to
|
||||||
the BL1 entry.
|
the BL2 entry.
|
||||||
|
|
||||||
3. BL1
|
3. BL2 (at EL3)
|
||||||
|
|
||||||
This runs in the DRAM. It extracts BL2 from FIP (Firmware Image Package).
|
This runs in the DRAM. It extracts more images such as BL31, BL33 (optionally
|
||||||
If TBB is enabled, the BL2 is authenticated by the standard mechanism of ARM
|
SCP_BL2, BL32 as well) from Firmware Image Package (FIP). If TBB is enabled,
|
||||||
Trusted Firmware.
|
they are all authenticated by the standard mechanism of ARM Trusted Firmware.
|
||||||
|
After loading all the images, it jumps to the BL31 entry.
|
||||||
|
|
||||||
4. BL2, BL31, and more
|
4. BL31, BL32, and BL33
|
||||||
|
|
||||||
They all run in the DRAM, and are authenticated by the standard mechanism if
|
They all run in the DRAM. See `Firmware Design`_ for details.
|
||||||
TBB is enabled. See `Firmware Design`_ for details.
|
|
||||||
|
|
||||||
|
|
||||||
Basic Build
|
Basic Build
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
BL1 must be compressed for the reason above. The UniPhier's platform makefile
|
BL2 must be compressed for the reason above. The UniPhier's platform makefile
|
||||||
provides a build target ``bl1_gzip`` for this.
|
provides a build target ``bl2_gzip`` for this.
|
||||||
|
|
||||||
For a non-secure boot loader (aka BL33), U-Boot is well supported for UniPhier
|
For a non-secure boot loader (aka BL33), U-Boot is well supported for UniPhier
|
||||||
SoCs. The U-Boot image (``u-boot.bin``) must be built in advance. For the build
|
SoCs. The U-Boot image (``u-boot.bin``) must be built in advance. For the build
|
||||||
|
@ -64,11 +66,11 @@ procedure of U-Boot, refer to the document in the `U-Boot`_ project.
|
||||||
|
|
||||||
To build minimum functionality for UniPhier (without TBB)::
|
To build minimum functionality for UniPhier (without TBB)::
|
||||||
|
|
||||||
make CROSS_COMPILE=<gcc-prefix> PLAT=uniphier BL33=<path-to-BL33> bl1_gzip fip
|
make CROSS_COMPILE=<gcc-prefix> PLAT=uniphier BL33=<path-to-BL33> bl2_gzip fip
|
||||||
|
|
||||||
Output images:
|
Output images:
|
||||||
|
|
||||||
- ``bl1.bin.gzip``
|
- ``bl2.bin.gz``
|
||||||
- ``fip.bin``
|
- ``fip.bin``
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -27,29 +27,20 @@
|
||||||
#define PLAT_MAX_OFF_STATE 2
|
#define PLAT_MAX_OFF_STATE 2
|
||||||
#define PLAT_MAX_RET_STATE 1
|
#define PLAT_MAX_RET_STATE 1
|
||||||
|
|
||||||
#define UNIPHIER_SEC_DRAM_BASE 0x81000000
|
#define UNIPHIER_SEC_DRAM_BASE 0x80000000
|
||||||
#define UNIPHIER_SEC_DRAM_LIMIT 0x82000000
|
#define UNIPHIER_SEC_DRAM_LIMIT 0x82000000
|
||||||
#define UNIPHIER_SEC_DRAM_SIZE ((UNIPHIER_SEC_DRAM_LIMIT) - \
|
#define UNIPHIER_SEC_DRAM_SIZE ((UNIPHIER_SEC_DRAM_LIMIT) - \
|
||||||
(UNIPHIER_SEC_DRAM_BASE))
|
(UNIPHIER_SEC_DRAM_BASE))
|
||||||
|
|
||||||
#define BL1_RO_BASE 0x80000000
|
#define BL2_BASE (UNIPHIER_SEC_DRAM_BASE)
|
||||||
#define BL1_RO_LIMIT 0x80018000
|
#define BL2_LIMIT ((BL2_BASE) + 0x00020000)
|
||||||
#define BL1_RW_LIMIT (UNIPHIER_SEC_DRAM_LIMIT)
|
|
||||||
#define BL1_RW_BASE ((BL1_RW_LIMIT) - 0x00040000)
|
|
||||||
|
|
||||||
#define BL2_LIMIT (BL1_RW_BASE)
|
#define BL31_BASE (BL2_LIMIT)
|
||||||
#define BL2_BASE ((BL2_LIMIT) - 0x00040000)
|
|
||||||
|
|
||||||
#define BL31_BASE (UNIPHIER_SEC_DRAM_BASE)
|
|
||||||
#define BL31_LIMIT ((BL31_BASE) + 0x00080000)
|
#define BL31_LIMIT ((BL31_BASE) + 0x00080000)
|
||||||
|
|
||||||
#define BL32_BASE (BL31_LIMIT)
|
#define BL32_BASE (BL31_LIMIT)
|
||||||
#define BL32_LIMIT (UNIPHIER_SEC_DRAM_LIMIT)
|
#define BL32_LIMIT (UNIPHIER_SEC_DRAM_LIMIT)
|
||||||
|
|
||||||
#define UNIPHIER_BLOCK_BUF_SIZE 0x00400000
|
|
||||||
#define UNIPHIER_BLOCK_BUF_BASE ((BL2_BASE) - \
|
|
||||||
(UNIPHIER_BLOCK_BUF_SIZE))
|
|
||||||
|
|
||||||
#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
|
#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
|
||||||
#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
|
#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
|
||||||
|
|
||||||
|
@ -63,7 +54,6 @@
|
||||||
|
|
||||||
#define TSP_SEC_MEM_BASE (BL32_BASE)
|
#define TSP_SEC_MEM_BASE (BL32_BASE)
|
||||||
#define TSP_SEC_MEM_SIZE ((BL32_LIMIT) - (BL32_BASE))
|
#define TSP_SEC_MEM_SIZE ((BL32_LIMIT) - (BL32_BASE))
|
||||||
#define TSP_PROGBITS_LIMIT (UNIPHIER_BLOCK_BUF_BASE)
|
|
||||||
#define TSP_IRQ_SEC_PHY_TIMER 29
|
#define TSP_IRQ_SEC_PHY_TIMER 29
|
||||||
|
|
||||||
#endif /* __PLATFORM_DEF_H__ */
|
#endif /* __PLATFORM_DEF_H__ */
|
||||||
|
|
|
@ -1,15 +1,17 @@
|
||||||
#
|
#
|
||||||
# Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
# Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: BSD-3-Clause
|
# SPDX-License-Identifier: BSD-3-Clause
|
||||||
#
|
#
|
||||||
|
|
||||||
override COLD_BOOT_SINGLE_CPU := 1
|
override BL2_AT_EL3 := 1
|
||||||
override ENABLE_PLAT_COMPAT := 0
|
override COLD_BOOT_SINGLE_CPU := 1
|
||||||
override LOAD_IMAGE_V2 := 1
|
override ENABLE_PLAT_COMPAT := 0
|
||||||
override USE_COHERENT_MEM := 1
|
override LOAD_IMAGE_V2 := 1
|
||||||
override USE_TBBR_DEFS := 1
|
override PROGRAMMABLE_RESET_ADDRESS := 1
|
||||||
override ENABLE_SVE_FOR_NS := 0
|
override USE_COHERENT_MEM := 1
|
||||||
|
override USE_TBBR_DEFS := 1
|
||||||
|
override ENABLE_SVE_FOR_NS := 0
|
||||||
|
|
||||||
# Cortex-A53 revision r0p4-51rel0
|
# Cortex-A53 revision r0p4-51rel0
|
||||||
# needed for LD20, unneeded for LD11, PXs3 (no ACE)
|
# needed for LD20, unneeded for LD11, PXs3 (no ACE)
|
||||||
|
@ -27,18 +29,7 @@ include lib/xlat_tables_v2/xlat_tables.mk
|
||||||
PLAT_PATH := plat/socionext/uniphier
|
PLAT_PATH := plat/socionext/uniphier
|
||||||
PLAT_INCLUDES := -I$(PLAT_PATH)/include
|
PLAT_INCLUDES := -I$(PLAT_PATH)/include
|
||||||
|
|
||||||
# IO sources for BL1, BL2
|
# common sources for BL2, BL31 (and BL32 if SPD=tspd)
|
||||||
IO_SOURCES := drivers/io/io_block.c \
|
|
||||||
drivers/io/io_fip.c \
|
|
||||||
drivers/io/io_memmap.c \
|
|
||||||
drivers/io/io_storage.c \
|
|
||||||
$(PLAT_PATH)/uniphier_boot_device.c \
|
|
||||||
$(PLAT_PATH)/uniphier_emmc.c \
|
|
||||||
$(PLAT_PATH)/uniphier_io_storage.c \
|
|
||||||
$(PLAT_PATH)/uniphier_nand.c \
|
|
||||||
$(PLAT_PATH)/uniphier_usb.c
|
|
||||||
|
|
||||||
# common sources for BL1, BL2, BL31
|
|
||||||
PLAT_BL_COMMON_SOURCES += drivers/console/aarch64/console.S \
|
PLAT_BL_COMMON_SOURCES += drivers/console/aarch64/console.S \
|
||||||
$(PLAT_PATH)/uniphier_console.S \
|
$(PLAT_PATH)/uniphier_console.S \
|
||||||
$(PLAT_PATH)/uniphier_helpers.S \
|
$(PLAT_PATH)/uniphier_helpers.S \
|
||||||
|
@ -46,17 +37,21 @@ PLAT_BL_COMMON_SOURCES += drivers/console/aarch64/console.S \
|
||||||
$(PLAT_PATH)/uniphier_xlat_setup.c \
|
$(PLAT_PATH)/uniphier_xlat_setup.c \
|
||||||
${XLAT_TABLES_LIB_SRCS}
|
${XLAT_TABLES_LIB_SRCS}
|
||||||
|
|
||||||
BL1_SOURCES += lib/cpus/aarch64/cortex_a53.S \
|
|
||||||
lib/cpus/aarch64/cortex_a72.S \
|
|
||||||
$(PLAT_PATH)/uniphier_bl1_helpers.S \
|
|
||||||
$(PLAT_PATH)/uniphier_bl1_setup.c \
|
|
||||||
$(IO_SOURCES)
|
|
||||||
|
|
||||||
BL2_SOURCES += common/desc_image_load.c \
|
BL2_SOURCES += common/desc_image_load.c \
|
||||||
|
drivers/io/io_block.c \
|
||||||
|
drivers/io/io_fip.c \
|
||||||
|
drivers/io/io_memmap.c \
|
||||||
|
drivers/io/io_storage.c \
|
||||||
|
lib/cpus/aarch64/cortex_a53.S \
|
||||||
|
lib/cpus/aarch64/cortex_a72.S \
|
||||||
$(PLAT_PATH)/uniphier_bl2_setup.c \
|
$(PLAT_PATH)/uniphier_bl2_setup.c \
|
||||||
|
$(PLAT_PATH)/uniphier_boot_device.c \
|
||||||
|
$(PLAT_PATH)/uniphier_emmc.c \
|
||||||
$(PLAT_PATH)/uniphier_image_desc.c \
|
$(PLAT_PATH)/uniphier_image_desc.c \
|
||||||
|
$(PLAT_PATH)/uniphier_io_storage.c \
|
||||||
|
$(PLAT_PATH)/uniphier_nand.c \
|
||||||
$(PLAT_PATH)/uniphier_scp.c \
|
$(PLAT_PATH)/uniphier_scp.c \
|
||||||
$(IO_SOURCES)
|
$(PLAT_PATH)/uniphier_usb.c
|
||||||
|
|
||||||
BL31_SOURCES += drivers/arm/cci/cci.c \
|
BL31_SOURCES += drivers/arm/cci/cci.c \
|
||||||
drivers/arm/gic/common/gic_common.c \
|
drivers/arm/gic/common/gic_common.c \
|
||||||
|
@ -82,7 +77,7 @@ include drivers/auth/mbedtls/mbedtls_x509.mk
|
||||||
|
|
||||||
PLAT_INCLUDES += -Iinclude/common/tbbr
|
PLAT_INCLUDES += -Iinclude/common/tbbr
|
||||||
|
|
||||||
TBB_SOURCES := drivers/auth/auth_mod.c \
|
BL2_SOURCES += drivers/auth/auth_mod.c \
|
||||||
drivers/auth/crypto_mod.c \
|
drivers/auth/crypto_mod.c \
|
||||||
drivers/auth/img_parser_mod.c \
|
drivers/auth/img_parser_mod.c \
|
||||||
drivers/auth/tbbr/tbbr_cot.c \
|
drivers/auth/tbbr/tbbr_cot.c \
|
||||||
|
@ -90,14 +85,10 @@ TBB_SOURCES := drivers/auth/auth_mod.c \
|
||||||
$(PLAT_PATH)/uniphier_rotpk.S \
|
$(PLAT_PATH)/uniphier_rotpk.S \
|
||||||
$(PLAT_PATH)/uniphier_tbbr.c
|
$(PLAT_PATH)/uniphier_tbbr.c
|
||||||
|
|
||||||
BL1_SOURCES += $(TBB_SOURCES)
|
|
||||||
BL2_SOURCES += $(TBB_SOURCES)
|
|
||||||
|
|
||||||
ROT_KEY = $(BUILD_PLAT)/rot_key.pem
|
ROT_KEY = $(BUILD_PLAT)/rot_key.pem
|
||||||
ROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin
|
ROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin
|
||||||
|
|
||||||
$(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"'))
|
$(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"'))
|
||||||
$(BUILD_PLAT)/bl1/uniphier_rotpk.o: $(ROTPK_HASH)
|
|
||||||
$(BUILD_PLAT)/bl2/uniphier_rotpk.o: $(ROTPK_HASH)
|
$(BUILD_PLAT)/bl2/uniphier_rotpk.o: $(ROTPK_HASH)
|
||||||
|
|
||||||
certificates: $(ROT_KEY)
|
certificates: $(ROT_KEY)
|
||||||
|
@ -112,8 +103,8 @@ $(ROTPK_HASH): $(ROT_KEY)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: bl1_gzip
|
.PHONY: bl2_gzip
|
||||||
bl1_gzip: $(BUILD_PLAT)/bl1.bin.gzip
|
bl2_gzip: $(BUILD_PLAT)/bl2.bin.gz
|
||||||
%.gzip: %
|
%.gz: %
|
||||||
@echo " GZIP $@"
|
@echo " GZIP $@"
|
||||||
$(Q)gzip -n -f -9 $< --stdout > $@
|
$(Q)gzip -n -f -9 $< --stdout > $@
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -67,7 +67,9 @@ void uniphier_gic_pcpu_init(void);
|
||||||
unsigned int uniphier_calc_core_pos(u_register_t mpidr);
|
unsigned int uniphier_calc_core_pos(u_register_t mpidr);
|
||||||
|
|
||||||
#define UNIPHIER_NS_DRAM_BASE 0x84000000
|
#define UNIPHIER_NS_DRAM_BASE 0x84000000
|
||||||
#define UNIPHIER_NS_DRAM_SIZE 0x01000000
|
#define UNIPHIER_NS_DRAM_LIMIT 0x85000000
|
||||||
|
#define UNIPHIER_NS_DRAM_SIZE ((UNIPHIER_NS_DRAM_LIMIT) - \
|
||||||
|
(UNIPHIER_NS_DRAM_BASE))
|
||||||
|
|
||||||
#define UNIPHIER_BL33_BASE (UNIPHIER_NS_DRAM_BASE)
|
#define UNIPHIER_BL33_BASE (UNIPHIER_NS_DRAM_BASE)
|
||||||
#define UNIPHIER_BL33_MAX_SIZE 0x00100000
|
#define UNIPHIER_BL33_MAX_SIZE 0x00100000
|
||||||
|
@ -76,4 +78,9 @@ unsigned int uniphier_calc_core_pos(u_register_t mpidr);
|
||||||
(UNIPHIER_BL33_MAX_SIZE))
|
(UNIPHIER_BL33_MAX_SIZE))
|
||||||
#define UNIPHIER_SCP_MAX_SIZE 0x00020000
|
#define UNIPHIER_SCP_MAX_SIZE 0x00020000
|
||||||
|
|
||||||
|
#define UNIPHIER_BLOCK_BUF_BASE ((UNIPHIER_SCP_BASE) + \
|
||||||
|
(UNIPHIER_SCP_MAX_SIZE))
|
||||||
|
#define UNIPHIER_BLOCK_BUF_SIZE ((UNIPHIER_NS_DRAM_LIMIT) - \
|
||||||
|
(UNIPHIER_BLOCK_BUF_BASE))
|
||||||
|
|
||||||
#endif /* __UNIPHIER_H__ */
|
#endif /* __UNIPHIER_H__ */
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <arch.h>
|
|
||||||
#include <asm_macros.S>
|
|
||||||
|
|
||||||
.globl plat_get_my_entrypoint
|
|
||||||
|
|
||||||
func plat_get_my_entrypoint
|
|
||||||
mov x0, #0
|
|
||||||
ret
|
|
||||||
endfunc plat_get_my_entrypoint
|
|
|
@ -1,56 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <arch_helpers.h>
|
|
||||||
#include <bl_common.h>
|
|
||||||
#include <console.h>
|
|
||||||
#include <debug.h>
|
|
||||||
#include <errno.h>
|
|
||||||
#include <platform.h>
|
|
||||||
#include <platform_def.h>
|
|
||||||
#include <xlat_mmu_helpers.h>
|
|
||||||
|
|
||||||
#include "uniphier.h"
|
|
||||||
|
|
||||||
void bl1_early_platform_setup(void)
|
|
||||||
{
|
|
||||||
uniphier_console_setup();
|
|
||||||
}
|
|
||||||
|
|
||||||
void bl1_plat_arch_setup(void)
|
|
||||||
{
|
|
||||||
uniphier_mmap_setup(UNIPHIER_SEC_DRAM_BASE, UNIPHIER_SEC_DRAM_SIZE,
|
|
||||||
NULL);
|
|
||||||
enable_mmu_el3(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void bl1_platform_setup(void)
|
|
||||||
{
|
|
||||||
unsigned int soc;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
soc = uniphier_get_soc_id();
|
|
||||||
if (soc == UNIPHIER_SOC_UNKNOWN) {
|
|
||||||
ERROR("unsupported SoC\n");
|
|
||||||
plat_error_handler(-ENOTSUP);
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = uniphier_io_setup(soc);
|
|
||||||
if (ret) {
|
|
||||||
ERROR("failed to setup io devices\n");
|
|
||||||
plat_error_handler(ret);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static meminfo_t uniphier_tzram_layout = {
|
|
||||||
.total_base = UNIPHIER_SEC_DRAM_BASE,
|
|
||||||
.total_size = UNIPHIER_SEC_DRAM_SIZE,
|
|
||||||
};
|
|
||||||
|
|
||||||
meminfo_t *bl1_plat_sec_mem_layout(void)
|
|
||||||
{
|
|
||||||
return &uniphier_tzram_layout;
|
|
||||||
}
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
|
* Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
* SPDX-License-Identifier: BSD-3-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -15,13 +15,11 @@
|
||||||
|
|
||||||
#include "uniphier.h"
|
#include "uniphier.h"
|
||||||
|
|
||||||
static meminfo_t uniphier_bl2_tzram_layout __aligned(CACHE_WRITEBACK_GRANULE);
|
|
||||||
static int uniphier_bl2_kick_scp;
|
static int uniphier_bl2_kick_scp;
|
||||||
|
|
||||||
void bl2_early_platform_setup(meminfo_t *mem_layout)
|
void bl2_el3_early_platform_setup(u_register_t x0, u_register_t x1,
|
||||||
|
u_register_t x2, u_register_t x3)
|
||||||
{
|
{
|
||||||
uniphier_bl2_tzram_layout = *mem_layout;
|
|
||||||
|
|
||||||
uniphier_console_setup();
|
uniphier_console_setup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +30,7 @@ static const struct mmap_region uniphier_bl2_mmap[] = {
|
||||||
{ .size = 0 },
|
{ .size = 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
void bl2_plat_arch_setup(void)
|
void bl2_el3_plat_arch_setup(void)
|
||||||
{
|
{
|
||||||
unsigned int soc;
|
unsigned int soc;
|
||||||
int skip_scp = 0;
|
int skip_scp = 0;
|
||||||
|
@ -40,7 +38,7 @@ void bl2_plat_arch_setup(void)
|
||||||
|
|
||||||
uniphier_mmap_setup(UNIPHIER_SEC_DRAM_BASE, UNIPHIER_SEC_DRAM_SIZE,
|
uniphier_mmap_setup(UNIPHIER_SEC_DRAM_BASE, UNIPHIER_SEC_DRAM_SIZE,
|
||||||
uniphier_bl2_mmap);
|
uniphier_bl2_mmap);
|
||||||
enable_mmu_el1(0);
|
enable_mmu_el3(0);
|
||||||
|
|
||||||
soc = uniphier_get_soc_id();
|
soc = uniphier_get_soc_id();
|
||||||
if (soc == UNIPHIER_SOC_UNKNOWN) {
|
if (soc == UNIPHIER_SOC_UNKNOWN) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue