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.si...@xilinx.com>
---

Changes in v2:
- Handle also error values from mult_boot() - Reported by Oleksandr Suvorov 
<oleksandr.suvo...@foundries.io>

 board/xilinx/zynqmp/zynqmp.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c
index 5a1f8153409c..dfb5dab7afa3 100644
--- a/board/xilinx/zynqmp/zynqmp.c
+++ b/board/xilinx/zynqmp/zynqmp.c
@@ -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()) {
-- 
2.33.1

Reply via email to