xilinx: zynqmp: Save multiboot as variable
authorMichal Simek <michal.simek@xilinx.com>
Mon, 25 Oct 2021 08:10:52 +0000 (10:10 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Fri, 29 Oct 2021 11:00:52 +0000 (13:00 +0200)
Save multiboot register as u-boot variable. And use it as primary source
for composing dfu_alt_info for capsule update. If variable is not defined

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov@foundries.io>
Link: https://lore.kernel.org/r/96556221443489c952717bcb340b4707901c9bdd.1635149450.git.michal.simek@xilinx.com
board/xilinx/zynqmp/zynqmp.c

index 6335184..6c17b92 100644 (file)
@@ -640,7 +640,7 @@ int board_late_init(void)
        const char *mode;
        char *new_targets;
        char *env_targets;
-       int ret;
+       int ret, multiboot;
 
 #if defined(CONFIG_USB_ETHER) && !defined(CONFIG_USB_GADGET_DOWNLOAD)
        usb_ether_init();
@@ -658,6 +658,10 @@ int board_late_init(void)
        if (ret)
                return ret;
 
+       multiboot = multi_boot();
+       if (multiboot >= 0)
+               env_set_hex("multiboot", multiboot);
+
        bootmode = zynqmp_get_bootmode();
 
        puts("Bootmode: ");
@@ -864,6 +868,10 @@ void set_dfu_alt_info(char *interface, char *devstr)
        memset(buf, 0, sizeof(buf));
 
        multiboot = multi_boot();
+       if (multiboot < 0)
+               multiboot = 0;
+
+       multiboot = env_get_hex("multiboot", multiboot);
        debug("Multiboot: %d\n", multiboot);
 
        switch (zynqmp_get_bootmode()) {