2018-05-06 21:58:06 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0+ */
|
2010-12-15 17:02:08 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2010-2011 Freescale Semiconductor, Inc.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __FSL_SECURE_BOOT_H
|
|
|
|
#define __FSL_SECURE_BOOT_H
|
2015-02-27 04:16:17 +00:00
|
|
|
#include <asm/config_mpc85xx.h>
|
|
|
|
|
2019-11-07 16:11:39 +00:00
|
|
|
#ifdef CONFIG_NXP_ESBC
|
2010-12-15 17:02:08 +00:00
|
|
|
#if defined(CONFIG_FSL_CORENET)
|
2022-11-16 18:10:41 +00:00
|
|
|
#define CFG_SYS_PBI_FLASH_BASE 0xc0000000
|
2010-12-15 17:02:08 +00:00
|
|
|
#else
|
2022-11-16 18:10:41 +00:00
|
|
|
#define CFG_SYS_PBI_FLASH_BASE 0xce000000
|
2010-12-15 17:02:08 +00:00
|
|
|
#endif
|
2022-11-16 18:10:41 +00:00
|
|
|
#define CFG_SYS_PBI_FLASH_WINDOW 0xcff80000
|
2010-12-15 17:02:08 +00:00
|
|
|
|
2022-06-17 20:24:34 +00:00
|
|
|
#if defined(CONFIG_TARGET_T2080QDS) || \
|
2016-12-28 16:43:37 +00:00
|
|
|
defined(CONFIG_TARGET_T2080RDB) || \
|
2016-11-21 19:25:26 +00:00
|
|
|
defined(CONFIG_TARGET_T1042D4RDB) || \
|
2016-11-18 21:01:34 +00:00
|
|
|
defined(CONFIG_ARCH_T1024)
|
2022-11-16 18:10:41 +00:00
|
|
|
#undef CFG_SYS_INIT_L3_ADDR
|
|
|
|
#define CFG_SYS_INIT_L3_ADDR 0xbff00000
|
2014-03-18 18:10:26 +00:00
|
|
|
#endif
|
|
|
|
|
2015-06-16 05:06:00 +00:00
|
|
|
#if defined(CONFIG_RAMBOOT_PBL)
|
2022-11-16 18:10:41 +00:00
|
|
|
#undef CFG_SYS_INIT_L3_ADDR
|
|
|
|
#ifdef CFG_SYS_INIT_L3_VADDR
|
|
|
|
#define CFG_SYS_INIT_L3_ADDR \
|
|
|
|
(CFG_SYS_INIT_L3_VADDR & ~0xFFF00000) | \
|
2016-07-14 16:27:52 +00:00
|
|
|
0xbff00000
|
|
|
|
#else
|
2022-11-16 18:10:41 +00:00
|
|
|
#define CFG_SYS_INIT_L3_ADDR 0xbff00000
|
2016-07-14 16:27:52 +00:00
|
|
|
#endif
|
2015-06-16 05:06:00 +00:00
|
|
|
#endif
|
2019-11-07 16:11:39 +00:00
|
|
|
#endif /* #ifdef CONFIG_NXP_ESBC */
|
secure_boot: split the secure boot functionality in two parts
There are two phases in Secure Boot
1. ISBC: In BootROM, validate the BootLoader (U-Boot).
2. ESBC: In U-Boot, continuing the Chain of Trust by
validating and booting LINUX.
For ESBC phase, there is no difference in SoC's based on ARM or
PowerPC cores.
But the exit conditions after ISBC phase i.e. entry conditions for
U-Boot are different for ARM and PowerPC.
PowerPC:
If Secure Boot is executed, a separate U-Boot target is required
which must be compiled with a diffrent Text Base as compared to
Non-Secure Boot. There are some LAW and TLB settings which are
required specifically for Secure Boot scenario.
ARM:
ARM based SoC's have a fixed memory map and exit conditions from
BootROM are same irrespective of boot mode (Secure or Non-Secure).
Thus the current Secure Boot functionlity has been split into
two parts:
CONFIG_CHAIN_OF_TRUST
This will have the following functionality as part of U-Boot:
1. Enable commands like esbc_validate, esbc_halt
2. Change the environment settings based on bootmode, determined
at run time:
- If bootmode is non-secure, no change
- If bootmode is secure, set the following:
- bootdelay = 0 (Don't give boot prompt)
- bootcmd = Validate and execute the bootscript.
CONFIG_SECURE_BOOT
This is defined only for creating a different compile time target
for secure boot.
Traditionally, both these functionalities were defined under
CONFIG_SECURE_BOOT. This patch is aimed at removing the requirement
for a separate Secure Boot target for ARM based SoC's.
CONFIG_CHAIN_OF_TRUST will be defined and boot mode will be
determine at run time.
Another Security Requirement for running CHAIN_OF_TRUST is that
U-Boot environemnt must not be picked from flash/external memory.
This cannot be done based on bootmode at run time in current U-Boot
architecture. Once this dependency is resolved, no separate
SECURE_BOOT target will be required for ARM based SoC's.
Currently, the only code under CONFIG_SECURE_BOOT for ARM SoC's is
defining CONFIG_ENV_IS_NOWHERE
Signed-off-by: Aneesh Bansal <aneesh.bansal@nxp.com>
Acked-by: Ruchika Gupta <ruchika.gupta@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
2016-01-22 11:07:24 +00:00
|
|
|
|
|
|
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
2016-09-13 05:18:23 +00:00
|
|
|
#ifdef CONFIG_SPL_BUILD
|
2016-07-14 16:27:51 +00:00
|
|
|
/*
|
|
|
|
* PPAACT and SPAACT table for PAMU must be placed on DDR after DDR init
|
|
|
|
* due to space crunch on CPC and thus malloc will not work.
|
|
|
|
*/
|
2023-01-10 16:19:45 +00:00
|
|
|
#define CFG_SPL_PPAACT_ADDR 0x2e000000
|
|
|
|
#define CFG_SPL_SPAACT_ADDR 0x2f000000
|
|
|
|
#define CFG_SPL_JR0_LIODN_S 454
|
|
|
|
#define CFG_SPL_JR0_LIODN_NS 458
|
2016-07-14 16:27:51 +00:00
|
|
|
#endif /* ifdef CONFIG_SPL_BUILD */
|
|
|
|
|
|
|
|
#ifndef CONFIG_SPL_BUILD
|
secure_boot: split the secure boot functionality in two parts
There are two phases in Secure Boot
1. ISBC: In BootROM, validate the BootLoader (U-Boot).
2. ESBC: In U-Boot, continuing the Chain of Trust by
validating and booting LINUX.
For ESBC phase, there is no difference in SoC's based on ARM or
PowerPC cores.
But the exit conditions after ISBC phase i.e. entry conditions for
U-Boot are different for ARM and PowerPC.
PowerPC:
If Secure Boot is executed, a separate U-Boot target is required
which must be compiled with a diffrent Text Base as compared to
Non-Secure Boot. There are some LAW and TLB settings which are
required specifically for Secure Boot scenario.
ARM:
ARM based SoC's have a fixed memory map and exit conditions from
BootROM are same irrespective of boot mode (Secure or Non-Secure).
Thus the current Secure Boot functionlity has been split into
two parts:
CONFIG_CHAIN_OF_TRUST
This will have the following functionality as part of U-Boot:
1. Enable commands like esbc_validate, esbc_halt
2. Change the environment settings based on bootmode, determined
at run time:
- If bootmode is non-secure, no change
- If bootmode is secure, set the following:
- bootdelay = 0 (Don't give boot prompt)
- bootcmd = Validate and execute the bootscript.
CONFIG_SECURE_BOOT
This is defined only for creating a different compile time target
for secure boot.
Traditionally, both these functionalities were defined under
CONFIG_SECURE_BOOT. This patch is aimed at removing the requirement
for a separate Secure Boot target for ARM based SoC's.
CONFIG_CHAIN_OF_TRUST will be defined and boot mode will be
determine at run time.
Another Security Requirement for running CHAIN_OF_TRUST is that
U-Boot environemnt must not be picked from flash/external memory.
This cannot be done based on bootmode at run time in current U-Boot
architecture. Once this dependency is resolved, no separate
SECURE_BOOT target will be required for ARM based SoC's.
Currently, the only code under CONFIG_SECURE_BOOT for ARM SoC's is
defining CONFIG_ENV_IS_NOWHERE
Signed-off-by: Aneesh Bansal <aneesh.bansal@nxp.com>
Acked-by: Ruchika Gupta <ruchika.gupta@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
2016-01-22 11:07:24 +00:00
|
|
|
#include <config_fsl_chain_trust.h>
|
2016-07-14 16:27:51 +00:00
|
|
|
#endif /* #ifndef CONFIG_SPL_BUILD */
|
secure_boot: split the secure boot functionality in two parts
There are two phases in Secure Boot
1. ISBC: In BootROM, validate the BootLoader (U-Boot).
2. ESBC: In U-Boot, continuing the Chain of Trust by
validating and booting LINUX.
For ESBC phase, there is no difference in SoC's based on ARM or
PowerPC cores.
But the exit conditions after ISBC phase i.e. entry conditions for
U-Boot are different for ARM and PowerPC.
PowerPC:
If Secure Boot is executed, a separate U-Boot target is required
which must be compiled with a diffrent Text Base as compared to
Non-Secure Boot. There are some LAW and TLB settings which are
required specifically for Secure Boot scenario.
ARM:
ARM based SoC's have a fixed memory map and exit conditions from
BootROM are same irrespective of boot mode (Secure or Non-Secure).
Thus the current Secure Boot functionlity has been split into
two parts:
CONFIG_CHAIN_OF_TRUST
This will have the following functionality as part of U-Boot:
1. Enable commands like esbc_validate, esbc_halt
2. Change the environment settings based on bootmode, determined
at run time:
- If bootmode is non-secure, no change
- If bootmode is secure, set the following:
- bootdelay = 0 (Don't give boot prompt)
- bootcmd = Validate and execute the bootscript.
CONFIG_SECURE_BOOT
This is defined only for creating a different compile time target
for secure boot.
Traditionally, both these functionalities were defined under
CONFIG_SECURE_BOOT. This patch is aimed at removing the requirement
for a separate Secure Boot target for ARM based SoC's.
CONFIG_CHAIN_OF_TRUST will be defined and boot mode will be
determine at run time.
Another Security Requirement for running CHAIN_OF_TRUST is that
U-Boot environemnt must not be picked from flash/external memory.
This cannot be done based on bootmode at run time in current U-Boot
architecture. Once this dependency is resolved, no separate
SECURE_BOOT target will be required for ARM based SoC's.
Currently, the only code under CONFIG_SECURE_BOOT for ARM SoC's is
defining CONFIG_ENV_IS_NOWHERE
Signed-off-by: Aneesh Bansal <aneesh.bansal@nxp.com>
Acked-by: Ruchika Gupta <ruchika.gupta@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
2016-01-22 11:07:24 +00:00
|
|
|
#endif /* #ifdef CONFIG_CHAIN_OF_TRUST */
|
2013-08-21 06:20:21 +00:00
|
|
|
#endif
|