From: Wasim Khan <wasim.k...@nxp.com>

NXP platforms expect bootcmd and mcinitcmd to be updated
as per boot source.

commit cbf77d201870f2d12227e2d95718a416b16ec98b breaks this
behaviour.
Revert commit cbf77d201870f2d12227e2d95718a416b16ec98b

Signed-off-by: Wasim Khan <wasim.k...@nxp.com>
---
 arch/arm/cpu/armv8/fsl-layerscape/soc.c | 27 +++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/arch/arm/cpu/armv8/fsl-layerscape/soc.c 
b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
index 7553b5bce2..ad209bde33 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/soc.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/soc.c
@@ -33,10 +33,13 @@
 #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>
-#ifdef CONFIG_GIC_V3_ITS
+#if defined(CONFIG_TFABOOT) || defined(CONFIG_GIC_V3_ITS)
 DECLARE_GLOBAL_DATA_PTR;
 #endif
 
@@ -953,12 +956,28 @@ int board_late_init(void)
 #endif
 #ifdef CONFIG_TFABOOT
        /*
-        * Set bootcmd and mcinitcmd if they don't exist in the environment.
+        * check if gd->env_addr is default_environment; then setenv bootcmd
+        * and mcinitcmd.
+        */
+#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
+               fsl_setenv_bootcmd();
+               fsl_setenv_mcinitcmd();
+       }
+
+       /*
+        * If the boot mode is secure, default environment is not present then
+        * setenv command needs to be run by default
         */
-       if (!env_get("bootcmd"))
+#ifdef CONFIG_CHAIN_OF_TRUST
+       if ((fsl_check_boot_mode_secure() == 1)) {
                fsl_setenv_bootcmd();
-       if (!env_get("mcinitcmd"))
                fsl_setenv_mcinitcmd();
+       }
+#endif
 #endif
 #ifdef CONFIG_QSPI_AHB_INIT
        qspi_ahb_init();
-- 
2.25.1

Reply via email to