aboutsummaryrefslogtreecommitdiff
path: root/common/spl/spl.c
diff options
context:
space:
mode:
authorKever Yang <kever.yang@rock-chips.com>2018-08-23 17:17:59 +0800
committerPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>2018-10-04 21:15:46 +0200
commit70fe2876352939194ccd9091379453a5ddb64ddb (patch)
tree7b471009ef30f1a5d52f0b720a9bb669f1e76d5c /common/spl/spl.c
parentf00273a3a300d4f67bd4fa65cfc3da7b3e23819a (diff)
downloadu-boot-70fe2876352939194ccd9091379453a5ddb64ddb.zip
u-boot-70fe2876352939194ccd9091379453a5ddb64ddb.tar.gz
u-boot-70fe2876352939194ccd9091379453a5ddb64ddb.tar.bz2
spl: add support to booting with OP-TEE
OP-TEE is an open source trusted OS, in armv7, its loading and running are like this: loading: - SPL load both OP-TEE and U-Boot running: - SPL run into OP-TEE in secure mode; - OP-TEE run into U-Boot in non-secure mode; To make code simple, it would be fine to use IH_OS_TEE for the os tyle in TPL(just like IH_OS_LINUX is using both in SPL and U-Boot). Here is the diagram for SPL loading OP-TEE, IH_OS_TEE:(make u-boot.itb for SPL) Non-Secure Secure BootROM | v SPL | v --------- OP-TEE | v U-Boot | V Linux For other two king of OP-TEE loading/booting, see commit message: 45b55712d4 image: Add IH_OS_TEE for TEE chain-load boot More detail: https://github.com/OP-TEE/optee_os and search for 'boot arguments' for detail entry parameter in: core/arch/arm/kernel/generic_entry_a32.S Signed-off-by: Kever Yang <kever.yang@rock-chips.com> Cc: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Diffstat (limited to 'common/spl/spl.c')
-rw-r--r--common/spl/spl.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/common/spl/spl.c b/common/spl/spl.c
index 038f2b0..292e659 100644
--- a/common/spl/spl.c
+++ b/common/spl/spl.c
@@ -536,6 +536,13 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
spl_invoke_atf(&spl_image);
break;
#endif
+#if CONFIG_IS_ENABLED(OPTEE)
+ case IH_OS_TEE:
+ debug("Jumping to U-Boot via OP-TEE\n");
+ spl_optee_entry(NULL, NULL, spl_image.fdt_addr,
+ (void *)spl_image.entry_point);
+ break;
+#endif
#ifdef CONFIG_SPL_OS_BOOT
case IH_OS_LINUX:
debug("Jumping to Linux\n");