mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 22:20:45 +00:00
armv8: fsl-layerscape: Fix automatic setting of bootmcd with TF-A
When booting from TF-A there is a logic that attempt to detect if the default environment is used, if this is the case it then set the `bootcmd` and `mcinitcmd` depending of the device we booted from. This detection logic is dubious as it access internals of the env implementation and it doesn't always work correctly. First of all it detect any valid environment as not being the default, so after running `env default -a && saveenv` the board doesn't boot anymore as `bootcmd` is then empty. But it also fails in some other ways, for example it always detect a default environment when redundant env is enabled on MMC, so in that case `bootcmd` is overwritten on every boot. Instead of increasing the complexity of the detection just check if `bootcmd` and `mcinitcmd` are set in the environment and set them if they are not. Signed-off-by: Alban Bedel <alban.bedel@aerq.com> Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
This commit is contained in:
parent
164941c2c4
commit
cbf77d2018
1 changed files with 4 additions and 23 deletions
|
@ -33,13 +33,10 @@
|
|||
#include <fsl_validate.h>
|
||||
#endif
|
||||
#include <fsl_immap.h>
|
||||
#ifdef CONFIG_TFABOOT
|
||||
#include <env_internal.h>
|
||||
#endif
|
||||
#include <dm.h>
|
||||
#include <dm/device_compat.h>
|
||||
#include <linux/err.h>
|
||||
#if defined(CONFIG_TFABOOT) || defined(CONFIG_GIC_V3_ITS)
|
||||
#ifdef CONFIG_GIC_V3_ITS
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
#endif
|
||||
|
||||
|
@ -956,28 +953,12 @@ int board_late_init(void)
|
|||
#endif
|
||||
#ifdef CONFIG_TFABOOT
|
||||
/*
|
||||
* check if gd->env_addr is default_environment; then setenv bootcmd
|
||||
* and mcinitcmd.
|
||||
* Set bootcmd and mcinitcmd if they don't exist in the environment.
|
||||
*/
|
||||
#ifdef CONFIG_SYS_RELOC_GD_ENV_ADDR
|
||||
if (gd->env_addr == (ulong)&default_environment[0]) {
|
||||
#else
|
||||
if (gd->env_addr + gd->reloc_off == (ulong)&default_environment[0]) {
|
||||
#endif
|
||||
if (!env_get("bootcmd"))
|
||||
fsl_setenv_bootcmd();
|
||||
if (!env_get("mcinitcmd"))
|
||||
fsl_setenv_mcinitcmd();
|
||||
}
|
||||
|
||||
/*
|
||||
* If the boot mode is secure, default environment is not present then
|
||||
* setenv command needs to be run by default
|
||||
*/
|
||||
#ifdef CONFIG_CHAIN_OF_TRUST
|
||||
if ((fsl_check_boot_mode_secure() == 1)) {
|
||||
fsl_setenv_bootcmd();
|
||||
fsl_setenv_mcinitcmd();
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_QSPI_AHB_INIT
|
||||
qspi_ahb_init();
|
||||
|
|
Loading…
Reference in a new issue