bootstd: Set the distro_bootpart env var with scripts
authorSimon Glass <sjg@chromium.org>
Tue, 17 Jan 2023 17:47:58 +0000 (10:47 -0700)
committerTom Rini <trini@konsulko.com>
Mon, 23 Jan 2023 23:11:40 +0000 (18:11 -0500)
This environment variable is supposed to be set so that the script knows
which partition holds the script. Set it before invoking the script.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/bootmeth_script.c
include/bootflow.h

index 3a3907d..7050e45 100644 (file)
@@ -126,6 +126,8 @@ static int script_boot(struct udevice *dev, struct bootflow *bflow)
        if (!ret)
                ret = env_set_hex("devnum", desc->devnum);
        if (!ret)
+               ret = env_set_hex("distro_bootpart", bflow->part);
+       if (!ret)
                ret = env_set("prefix", bflow->subdir);
        if (!ret && IS_ENABLED(CONFIG_ARCH_SUNXI) &&
            !strcmp("mmc", blk_get_devtype(bflow->blk)))
@@ -135,6 +137,7 @@ static int script_boot(struct udevice *dev, struct bootflow *bflow)
 
        log_debug("devtype: %s\n", env_get("devtype"));
        log_debug("devnum: %s\n", env_get("devnum"));
+       log_debug("distro_bootpart: %s\n", env_get("distro_bootpart"));
        log_debug("prefix: %s\n", env_get("prefix"));
        log_debug("mmc_bootdev: %s\n", env_get("mmc_bootdev"));
 
index bf71b09..ed9b61f 100644 (file)
@@ -144,6 +144,8 @@ enum bootflow_flags_t {
  *     appear first, then the global ones, if any
  * @doing_global: true if we are iterating through the global bootmeths (which
  *     happens before the normal ones)
+ * @method_flags: flags controlling which methods should be used for this @dev
+ * (enum bootflow_meth_flags_t)
  */
 struct bootflow_iter {
        int flags;
@@ -161,6 +163,7 @@ struct bootflow_iter {
        int first_glob_method;
        struct udevice **method_order;
        bool doing_global;
+       int method_flags;
 };
 
 /**