Hello Peng,

On 26.01.26 02:29, Peng Fan wrote:
On Sat, Jan 24, 2026 at 06:54:48AM +0100, Heiko Schocher wrote:
add logic in board code for detecting the real boot
partition and set a local hush shell variable fallback
which can be used later in boot variables for detecting
a ROMbootloader fallback case.

Typo: ROM bootloader

Fixed



We use the local hush shell variable, as we do not want
to save in any case the fallback variable in U-Boot
Environment, as the default Environment is may saved

Typo: maybe

Fixed


in boards, which are downgraded to older U-Boot versions.

And than the board code does not run, and fallback never
gets the correct value.

Introduce also hush shell variable envvers to value "v2_"
so we can use them in Environment for running different
versions of variables between new and old U-Boot images.

Signed-off-by: Heiko Schocher <[email protected]>
Signed-off-by: Walter Schweizer <[email protected]>
---

board/siemens/capricorn/Kconfig |  2 ++
board/siemens/capricorn/board.c | 43 +++++++++++++++++++++++++++------
2 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/board/siemens/capricorn/Kconfig b/board/siemens/capricorn/Kconfig
index fe230971e97..d6d1aad75b2 100644
--- a/board/siemens/capricorn/Kconfig
+++ b/board/siemens/capricorn/Kconfig
@@ -1,5 +1,7 @@
if TARGET_CAPRICORN

+config HUSH_INIT_VAR
+       def_bool y

config SYS_BOARD
        default "capricorn"
diff --git a/board/siemens/capricorn/board.c b/board/siemens/capricorn/board.c
index 390a7b0d841..d4f26b6ff7f 100644
--- a/board/siemens/capricorn/board.c
+++ b/board/siemens/capricorn/board.c
@@ -5,6 +5,7 @@
  * Copyright 2019 Siemens AG
  *
  */
+#include <cli_hush.h>
#include <command.h>
#include <dm.h>
#include <env.h>
@@ -29,6 +30,7 @@
#include "../common/board.h"
#include "../common/eeprom.h"
#include "../common/factoryset.h"
+#include <firmware/imx/sci/sci.h>

#define GPIO_PAD_CTRL \
                ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | \
@@ -373,23 +375,48 @@ __weak int mmc_map_to_kernel_blk(int dev_no)

void board_late_mmc_env_init(void)
{
-       char cmd[32];
-       char mmcblk[32];
        u32 dev_no = mmc_get_env_dev();

        if (!check_mmc_autodetect())
                return;

        env_set_ulong("mmcdev", dev_no);
+}
+
+#if defined(CONFIG_HUSH_INIT_VAR)
+int hush_init_var(void)
+{
+       sc_misc_bt_t boot_type;

-       /* Set mmcblk env */
-       sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw",
-               mmc_map_to_kernel_blk(dev_no));
-       env_set("mmcroot", mmcblk);
+       if (sc_misc_get_boot_type(-1, &boot_type) != 0) {
+               puts("boottype cannot be retrieved\n");
+               return 0;
+       }
+
+       /*
+        * Set here explicitly a hush shell variable, so if a saveenv
+        * happens, this variable is *not* saved in U-Boot environment.
+        *
+        * This is for devices which are already in the field essential,
+        * as if such a device breaks, the cutsomer gets a new device
+        * with a new U-Boot version (and so a new U-Boot environment).
+        *
+        * But the customer makes a downgrade to an older U-bootversion,

Typo: U-Boot version.

Fixed.



Otherwise:

Reviewed-by: Peng Fan <[email protected]>

Many thanks for your review of all the patches!

I worked in all your comments for the series, try to make a test which Benjamin
requested yesterday for patch:

"env: add w flags for net config in explicit write mode"
https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/

and wait for more comments before I resend v2.

Thanks!

bye,
Heiko


--
Nabla Software Engineering
HRB 40522 Augsburg
Phone: +49 821 45592596
E-Mail: [email protected]
Geschäftsführer : Stefano Babic

Reply via email to