mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-29 22:43:10 +00:00
fff7f5e978
CONFIG_SPL_OPTEE_IMAGE option is used during DRAM size detection for Rockchip ARM platform to indicate that an OP-TEE binary was already loaded and a Trusted Execution Environment (TEE) is available in order to block/reserve a memory-region for it. This adds a bunch of new `#if's` to u-boot-rockchip.dtsi to include the OP-TEE binary in the FIT image for ARM SOCs if CONFIG_SPL_OPTEE_IMAGE is selected. That makes it a little harder to read, but I opted for that, because all the duplicates in an extra ARM-OP-TEE-specfic .dtsi would be the greater evil, IMHO. Besides it's more likley being "forgotten" to sync when changes in u-boot-rockchip.dtsi are made. The no longer required rockchip-optee.dtsi and it's inclusions are dropped. The hardcoded load address is common across all OP-TEE implemenations for Rockchip (vendor and upstream). The OP-TEE-binary is non-optional if CONFIG_SPL_OPTEE_IMAGE is selected and there will be an error if the file does not exist and/or `TEE=` build option is missing. Signed-off-by: Alex Bee <knaerzche@gmail.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
198 lines
3.5 KiB
Text
198 lines
3.5 KiB
Text
// SPDX-License-Identifier: GPL-2.0+
|
|
/*
|
|
* Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
|
|
*/
|
|
|
|
#include <config.h>
|
|
|
|
/ {
|
|
binman: binman {
|
|
multiple-images;
|
|
};
|
|
};
|
|
|
|
#ifdef CONFIG_SPL
|
|
&binman {
|
|
simple-bin {
|
|
filename = "u-boot-rockchip.bin";
|
|
pad-byte = <0xff>;
|
|
|
|
mkimage {
|
|
filename = "idbloader.img";
|
|
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
|
|
multiple-data-files;
|
|
|
|
#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
|
|
rockchip-tpl {
|
|
};
|
|
#elif defined(CONFIG_TPL)
|
|
u-boot-tpl {
|
|
};
|
|
#endif
|
|
u-boot-spl {
|
|
};
|
|
};
|
|
|
|
#if defined(CONFIG_SPL_FIT) && (defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE))
|
|
fit: fit {
|
|
#ifdef CONFIG_ARM64
|
|
description = "FIT image for U-Boot with bl31 (TF-A)";
|
|
#else
|
|
description = "FIT image with OP-TEE";
|
|
#endif
|
|
#address-cells = <1>;
|
|
fit,fdt-list = "of-list";
|
|
filename = "u-boot.itb";
|
|
fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
|
|
fit,align = <512>;
|
|
offset = <CONFIG_SPL_PAD_TO>;
|
|
images {
|
|
u-boot {
|
|
description = "U-Boot";
|
|
type = "standalone";
|
|
os = "U-Boot";
|
|
#ifdef CONFIG_ARM64
|
|
arch = "arm64";
|
|
#else
|
|
arch = "arm";
|
|
#endif
|
|
compression = "none";
|
|
load = <CONFIG_TEXT_BASE>;
|
|
entry = <CONFIG_TEXT_BASE>;
|
|
u-boot-nodtb {
|
|
};
|
|
#ifdef CONFIG_SPL_FIT_SIGNATURE
|
|
hash {
|
|
algo = "sha256";
|
|
};
|
|
#endif
|
|
};
|
|
|
|
#ifdef CONFIG_ARM64
|
|
@atf-SEQ {
|
|
fit,operation = "split-elf";
|
|
description = "ARM Trusted Firmware";
|
|
type = "firmware";
|
|
arch = "arm64";
|
|
os = "arm-trusted-firmware";
|
|
compression = "none";
|
|
fit,load;
|
|
fit,entry;
|
|
fit,data;
|
|
|
|
atf-bl31 {
|
|
};
|
|
#ifdef CONFIG_SPL_FIT_SIGNATURE
|
|
hash {
|
|
algo = "sha256";
|
|
};
|
|
#endif
|
|
};
|
|
@tee-SEQ {
|
|
fit,operation = "split-elf";
|
|
description = "TEE";
|
|
type = "tee";
|
|
arch = "arm64";
|
|
os = "tee";
|
|
compression = "none";
|
|
fit,load;
|
|
fit,entry;
|
|
fit,data;
|
|
|
|
tee-os {
|
|
optional;
|
|
};
|
|
#ifdef CONFIG_SPL_FIT_SIGNATURE
|
|
hash {
|
|
algo = "sha256";
|
|
};
|
|
#endif
|
|
};
|
|
#else
|
|
op-tee {
|
|
description = "OP-TEE";
|
|
type = "tee";
|
|
arch = "arm";
|
|
os = "tee";
|
|
compression = "none";
|
|
load = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
|
|
entry = <(CFG_SYS_SDRAM_BASE + 0x8400000)>;
|
|
|
|
tee-os {
|
|
};
|
|
#ifdef CONFIG_SPL_FIT_SIGNATURE
|
|
hash {
|
|
algo = "sha256";
|
|
};
|
|
#endif
|
|
};
|
|
#endif
|
|
|
|
@fdt-SEQ {
|
|
description = "fdt-NAME";
|
|
compression = "none";
|
|
type = "flat_dt";
|
|
#ifdef CONFIG_SPL_FIT_SIGNATURE
|
|
hash {
|
|
algo = "sha256";
|
|
};
|
|
#endif
|
|
};
|
|
};
|
|
|
|
configurations {
|
|
default = "@config-DEFAULT-SEQ";
|
|
@config-SEQ {
|
|
description = "NAME.dtb";
|
|
fdt = "fdt-SEQ";
|
|
#ifdef CONFIG_ARM64
|
|
fit,firmware = "atf-1", "u-boot";
|
|
#else
|
|
fit,firmware = "op-tee", "u-boot";
|
|
#endif
|
|
fit,loadables;
|
|
};
|
|
};
|
|
};
|
|
#else
|
|
u-boot-img {
|
|
offset = <CONFIG_SPL_PAD_TO>;
|
|
};
|
|
#endif
|
|
};
|
|
|
|
#ifdef CONFIG_ROCKCHIP_SPI_IMAGE
|
|
simple-bin-spi {
|
|
filename = "u-boot-rockchip-spi.bin";
|
|
pad-byte = <0xff>;
|
|
|
|
mkimage {
|
|
filename = "idbloader-spi.img";
|
|
args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
|
|
multiple-data-files;
|
|
|
|
#ifdef CONFIG_ROCKCHIP_EXTERNAL_TPL
|
|
rockchip-tpl {
|
|
};
|
|
#elif defined(CONFIG_TPL)
|
|
u-boot-tpl {
|
|
};
|
|
#endif
|
|
u-boot-spl {
|
|
};
|
|
};
|
|
|
|
#if defined(CONFIG_ARM64) || defined(CONFIG_SPL_OPTEE_IMAGE)
|
|
fit {
|
|
type = "blob";
|
|
filename = "u-boot.itb";
|
|
#else
|
|
u-boot-img {
|
|
#endif
|
|
/* Sync with u-boot,spl-payload-offset if present */
|
|
offset = <CONFIG_SYS_SPI_U_BOOT_OFFS>;
|
|
};
|
|
};
|
|
#endif /* CONFIG_ROCKCHIP_SPI_IMAGE */
|
|
};
|
|
#endif /* CONFIG_SPL */
|