armv8: fsl-layerscape: bootcmd identification for TFABOOT
Adds bootcmd identificaton on basis on boot source, valid in TFABOOT configuration. Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> Signed-off-by: Pankit Garg <pankit.garg@nxp.com> [YS: remove unnecessary braces] Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
b6c97f4d94
commit
2141d250f5
@ -33,6 +33,9 @@
|
|||||||
|
|
||||||
#ifdef CONFIG_TFABOOT
|
#ifdef CONFIG_TFABOOT
|
||||||
#include <environment.h>
|
#include <environment.h>
|
||||||
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
|
#include <fsl_validate.h>
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
@ -741,6 +744,14 @@ enum env_location env_get_location(enum env_operation op, int prio)
|
|||||||
if (prio)
|
if (prio)
|
||||||
return ENVL_UNKNOWN;
|
return ENVL_UNKNOWN;
|
||||||
|
|
||||||
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
|
/* Check Boot Mode
|
||||||
|
* If Boot Mode is Secure, return ENVL_NOWHERE
|
||||||
|
*/
|
||||||
|
if (fsl_check_boot_mode_secure() == 1)
|
||||||
|
goto done;
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (src) {
|
switch (src) {
|
||||||
case BOOT_SOURCE_IFC_NOR:
|
case BOOT_SOURCE_IFC_NOR:
|
||||||
env_loc = ENVL_FLASH;
|
env_loc = ENVL_FLASH;
|
||||||
@ -768,6 +779,9 @@ enum env_location env_get_location(enum env_operation op, int prio)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
|
done:
|
||||||
|
#endif
|
||||||
return env_loc;
|
return env_loc;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_TFABOOT */
|
#endif /* CONFIG_TFABOOT */
|
||||||
|
@ -24,6 +24,10 @@
|
|||||||
#include <fsl_validate.h>
|
#include <fsl_validate.h>
|
||||||
#endif
|
#endif
|
||||||
#include <fsl_immap.h>
|
#include <fsl_immap.h>
|
||||||
|
#ifdef CONFIG_TFABOOT
|
||||||
|
#include <environment.h>
|
||||||
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
#endif
|
||||||
|
|
||||||
bool soc_has_dp_ddr(void)
|
bool soc_has_dp_ddr(void)
|
||||||
{
|
{
|
||||||
@ -679,12 +683,85 @@ int qspi_ahb_init(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_TFABOOT
|
||||||
|
#define MAX_BOOTCMD_SIZE 256
|
||||||
|
|
||||||
|
int fsl_setenv_bootcmd(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
enum boot_src src = get_boot_src();
|
||||||
|
char bootcmd_str[MAX_BOOTCMD_SIZE];
|
||||||
|
|
||||||
|
switch (src) {
|
||||||
|
#ifdef IFC_NOR_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_IFC_NOR:
|
||||||
|
sprintf(bootcmd_str, IFC_NOR_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef QSPI_NOR_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_QSPI_NOR:
|
||||||
|
sprintf(bootcmd_str, QSPI_NOR_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef XSPI_NOR_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_XSPI_NOR:
|
||||||
|
sprintf(bootcmd_str, XSPI_NOR_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef IFC_NAND_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_IFC_NAND:
|
||||||
|
sprintf(bootcmd_str, IFC_NAND_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef QSPI_NAND_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_QSPI_NAND:
|
||||||
|
sprintf(bootcmd_str, QSPI_NAND_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef XSPI_NAND_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_XSPI_NAND:
|
||||||
|
sprintf(bootcmd_str, XSPI_NAND_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef SD_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_SD_MMC:
|
||||||
|
sprintf(bootcmd_str, SD_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
#ifdef SD2_BOOTCOMMAND
|
||||||
|
case BOOT_SOURCE_SD_MMC2:
|
||||||
|
sprintf(bootcmd_str, SD2_BOOTCOMMAND);
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
#ifdef QSPI_NOR_BOOTCOMMAND
|
||||||
|
sprintf(bootcmd_str, QSPI_NOR_BOOTCOMMAND);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = env_set("bootcmd", bootcmd_str);
|
||||||
|
if (ret) {
|
||||||
|
printf("Failed to set bootcmd: ret = %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_BOARD_LATE_INIT
|
#ifdef CONFIG_BOARD_LATE_INIT
|
||||||
int board_late_init(void)
|
int board_late_init(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_CHAIN_OF_TRUST
|
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||||
fsl_setenv_chain_of_trust();
|
fsl_setenv_chain_of_trust();
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_TFABOOT
|
||||||
|
/*
|
||||||
|
* check if gd->env_addr is default_environment; then setenv bootcmd
|
||||||
|
*/
|
||||||
|
if (gd->env_addr + gd->reloc_off == (ulong)&default_environment[0])
|
||||||
|
fsl_setenv_bootcmd();
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_QSPI_AHB_INIT
|
#ifdef CONFIG_QSPI_AHB_INIT
|
||||||
qspi_ahb_init();
|
qspi_ahb_init();
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user