Do not generate dfu_alt_info string for capsule update but directly fill value to update_info.dfu_string based on origin logic.
Signed-off-by: Michal Simek <[email protected]> --- Hi Jon, can you please include this to your series "EFI Capsule update explicitly sets dfu_alt_info" or you will break all our boards. Thanks, Michal --- board/xilinx/common/board.h | 3 +++ board/xilinx/versal/board.c | 15 ++++++++------- board/xilinx/zynq/board.c | 15 ++++++++------- board/xilinx/zynqmp/zynqmp.c | 15 ++++++++------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/board/xilinx/common/board.h b/board/xilinx/common/board.h index 64d657673e92..cb86c4c5b91b 100644 --- a/board/xilinx/common/board.h +++ b/board/xilinx/common/board.h @@ -18,4 +18,7 @@ bool board_detection(void); char *soc_name_decode(void); bool soc_detection(void); + +void configure_capsule_updates(void); + #endif /* BOARD_XILINX_COMMON_BOARD_H */ diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c index b4483d00ad15..789eb81824f6 100644 --- a/board/xilinx/versal/board.c +++ b/board/xilinx/versal/board.c @@ -8,6 +8,7 @@ #include <cpu_func.h> #include <dfu.h> #include <env.h> +#include <efi_loader.h> #include <fdtdec.h> #include <init.h> #include <env_internal.h> @@ -280,6 +281,9 @@ int board_late_init(void) { int ret; + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + configure_capsule_updates(); + if (!(gd->flags & GD_FLG_ENV_DEFAULT)) { debug("Saved variables - Skipping\n"); return 0; @@ -356,7 +360,7 @@ enum env_location env_get_location(enum env_operation op, int prio) } #endif -#if defined(CONFIG_SET_DFU_ALT_INFO) +#if defined(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) #define DFU_ALT_BUF_LEN SZ_1K @@ -385,7 +389,7 @@ static void mtd_found_part(u32 *base, u32 *size) } } -void set_dfu_alt_info(char *interface, char *devstr) +void configure_capsule_updates(void) { int bootseq = 0, len = 0; u32 multiboot = versal_multi_boot(); @@ -393,9 +397,6 @@ void set_dfu_alt_info(char *interface, char *devstr) ALLOC_CACHE_ALIGN_BUFFER(char, buf, DFU_ALT_BUF_LEN); - if (env_get("dfu_alt_info")) - return; - memset(buf, 0, sizeof(buf)); multiboot = env_get_hex("multiboot", multiboot); @@ -436,7 +437,7 @@ void set_dfu_alt_info(char *interface, char *devstr) return; } - env_set("dfu_alt_info", buf); - puts("DFU alt info setting: done\n"); + update_info.dfu_string = strdup(buf); + debug("Capsule DFU: %s\n", update_info.dfu_string); } #endif diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c index 8dbfa5604231..c4a15e1657a9 100644 --- a/board/xilinx/zynq/board.c +++ b/board/xilinx/zynq/board.c @@ -7,6 +7,7 @@ #include <config.h> #include <debug_uart.h> #include <dfu.h> +#include <efi_loader.h> #include <init.h> #include <log.h> #include <dm/uclass.h> @@ -52,6 +53,9 @@ int board_late_init(void) char *new_targets; char *env_targets; + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + configure_capsule_updates(); + if (!(gd->flags & GD_FLG_ENV_DEFAULT)) { debug("Saved variables - Skipping\n"); return 0; @@ -165,17 +169,14 @@ enum env_location env_get_location(enum env_operation op, int prio) } } -#if defined(CONFIG_SET_DFU_ALT_INFO) +#if defined(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) #define DFU_ALT_BUF_LEN SZ_1K -void set_dfu_alt_info(char *interface, char *devstr) +void configure_capsule_updates(void) { ALLOC_CACHE_ALIGN_BUFFER(char, buf, DFU_ALT_BUF_LEN); - if (env_get("dfu_alt_info")) - return; - memset(buf, 0, sizeof(buf)); switch ((zynq_slcr_get_boot_mode()) & ZYNQ_BM_MASK) { @@ -199,7 +200,7 @@ void set_dfu_alt_info(char *interface, char *devstr) return; } - env_set("dfu_alt_info", buf); - puts("DFU alt info setting: done\n"); + update_info.dfu_string = strdup(buf); + debug("Capsule DFU: %s\n", update_info.dfu_string); } #endif diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c index 820fb252a3f3..1d7626e9f39d 100644 --- a/board/xilinx/zynqmp/zynqmp.c +++ b/board/xilinx/zynqmp/zynqmp.c @@ -11,6 +11,7 @@ #include <dfu.h> #include <env.h> #include <env_internal.h> +#include <efi_loader.h> #include <init.h> #include <log.h> #include <net.h> @@ -526,6 +527,9 @@ int board_late_init(void) usb_ether_init(); #endif + if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) + configure_capsule_updates(); + multiboot = multi_boot(); if (multiboot >= 0) env_set_hex("multiboot", multiboot); @@ -631,7 +635,7 @@ enum env_location env_get_location(enum env_operation op, int prio) } #endif -#if defined(CONFIG_SET_DFU_ALT_INFO) +#if IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) #define DFU_ALT_BUF_LEN SZ_1K @@ -660,15 +664,12 @@ static void mtd_found_part(u32 *base, u32 *size) } } -void set_dfu_alt_info(char *interface, char *devstr) +void configure_capsule_updates(void) { int multiboot, bootseq = 0, len = 0; ALLOC_CACHE_ALIGN_BUFFER(char, buf, DFU_ALT_BUF_LEN); - if (env_get("dfu_alt_info")) - return; - memset(buf, 0, sizeof(buf)); multiboot = multi_boot(); @@ -732,8 +733,8 @@ void set_dfu_alt_info(char *interface, char *devstr) return; } - env_set("dfu_alt_info", buf); - puts("DFU alt info setting: done\n"); + update_info.dfu_string = strdup(buf); + debug("Capsule DFU: %s\n", update_info.dfu_string); } #endif -- 2.43.0

