diff mbox series

[v2] xilinx: zynqmp: Save multiboot as variable

Message ID 96556221443489c952717bcb340b4707901c9bdd.1635149450.git.michal.simek@xilinx.com
State Accepted
Commit e8b43c6409a064429285e8c2bf6e1a27879f995a
Delegated to: Michal Simek
Headers show
Series [v2] xilinx: zynqmp: Save multiboot as variable | expand

Commit Message

Michal Simek Oct. 25, 2021, 8:10 a.m. UTC
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>
---

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

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

Comments

Oleksandr Suvorov Oct. 25, 2021, 8:19 a.m. UTC | #1
On Mon, Oct 25, 2021 at 11:11 AM Michal Simek <michal.simek@xilinx.com> wrote:
>
> 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>

> ---
>
> Changes in v2:
> - Handle also error values from mult_boot() - Reported by Oleksandr Suvorov <oleksandr.suvorov@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
>
Michal Simek Oct. 29, 2021, 11:01 a.m. UTC | #2
On 10/25/21 10:10, Michal Simek wrote:
> 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>
> ---
> 
> Changes in v2:
> - Handle also error values from mult_boot() - Reported by Oleksandr Suvorov <oleksandr.suvorov@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()) {
> 

Applied,
Michal
diff mbox series

Patch

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()) {