From patchwork Thu Mar 24 12:38:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sughosh Ganu X-Patchwork-Id: 553905 Delivered-To: patch@linaro.org Received: by 2002:a05:7000:1248:0:0:0:0 with SMTP id z8csp4370523mag; Thu, 24 Mar 2022 05:39:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxWY59g9HUWqAIqmcDhfOCR6C/UfcSAbdi0wrKClxfAXMamKLp0KyWJlUr+C9uIp2FpvQsM X-Received: by 2002:a05:6402:7c9:b0:419:30b:e3e6 with SMTP id u9-20020a05640207c900b00419030be3e6mr6459827edy.399.1648125588800; Thu, 24 Mar 2022 05:39:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648125588; cv=none; d=google.com; s=arc-20160816; b=AzgE0cqwdMIzvBL62p/x2V+UyUDxuaG9HHzAgJRwetGnEfVEZK0rXaZb6CemxCor8T nglOG+bl7LeXgyp48C5LhG3xs8VXobhPG/XTuAiYXh8LS10/xb+euLmPPZ5D/I6muqLR gw0iiqMC+j6vrw7o1byknaV/ZYtfnTcD8Mig95wtbi8VgDTJtYC0lMwqA6FNm0XFlmn6 yiOP9/Di179DrSYWuV3t743CnfQ7Jzr+koRiw4J7BXP5NHElUiYWTE2LCmcZKtolk8NK ChpcziGdw6wXj6UKxvInZQ9vP8GCSr+5UmWiw7iA0w+iyr6Wy6soHz8uW/CwCPB73Och CpNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=MBvTsZlClmjPmZNJc1U98Joz4vwfUvHvpqbPrO1s15A=; b=evxxE+FjP/azKArAkS9jHXldfwKwnSTyIDOqw1ovq/G7BfZhy4b3ZMNr3gQTYkt8D+ 2aLpEXrb7LT3t/h4uzEdkuqn+bqpKfX6Rg3PzJwwbh92ctgyu2lp1ohC2HJn1xbzkmL9 +r1vnZTMY6nd1U7v8CpMXS8Q6RFgtlkRsn+Vy+h4ANCn9SaDh2aYpEJjYAa47L/Y/Yj3 2CkF7IBBhaC2jMKT1M//D7bIkqKyLbE3jC4zX3xgkIMrdn0jqiMjqy9GbLmZRvSpnkn0 YoYv6Y67HCyHPtHcE/hyUV4boDhlk7a8nboLzleOBiURmVDbvYWlYSXj/BJ7ZeBgf+d0 XV9g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [85.214.62.61]) by mx.google.com with ESMTPS id v3-20020a50a443000000b00418c2b5bd90si19190476edb.114.2022.03.24.05.39.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Mar 2022 05:39:48 -0700 (PDT) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) client-ip=85.214.62.61; Authentication-Results: mx.google.com; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 85.214.62.61 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5C4BD840AA; Thu, 24 Mar 2022 13:39:41 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Received: by phobos.denx.de (Postfix, from userid 109) id 86277840A9; Thu, 24 Mar 2022 13:39:40 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_SOFTFAIL,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by phobos.denx.de (Postfix) with ESMTP id 225578405B for ; Thu, 24 Mar 2022 13:39:36 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=fail smtp.mailfrom=sughosh.ganu@linaro.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8760DD6E; Thu, 24 Mar 2022 05:39:35 -0700 (PDT) Received: from a076522.blr.arm.com (a076522.blr.arm.com [10.162.16.44]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6D7B03F73D; Thu, 24 Mar 2022 05:39:31 -0700 (PDT) From: Sughosh Ganu To: u-boot@lists.denx.de Cc: Heinrich Schuchardt , Ilias Apalodimas , AKASHI Takahiro , Ying-Chun Liu , Tuomas Tynkkynen , Heiko Thiery , Frieder Schrempf , Michael Walle , Masami Hiramatsu , Jassi Brar , Michal Simek , Michal Simek , Sughosh Ganu Subject: [RFC PATCH 1/6] capsule: Add Image GUIDs for platforms using capsule updates Date: Thu, 24 Mar 2022 18:08:56 +0530 Message-Id: <20220324123901.429472-2-sughosh.ganu@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220324123901.429472-1-sughosh.ganu@linaro.org> References: <20220324123901.429472-1-sughosh.ganu@linaro.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean Currently, all platforms that enable capsule updates do so using either EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID or EFI_FIRMWARE_IMAGE_TYPE_UBOOT_FIT_GUID. This is based on the Firmware Management Protocol(FMP) instance used on the platform. However, this means that all platforms that enable a particular FMP instance have the same GUID value for all the updatable images, either the FIT image GUID or the raw image GUID, and that an image for some platform can be updated on any other platform which uses the same FMP instance. Another issue with this implementation is that the ESRT table shows the same GUID value for all images on the platform and also across platforms, which is not in compliance with the UEFI specification. Fix this by defining image GUID values and firmware names for individual images per platform. The GetImageInfo FMP hook would then populate these values in the image descriptor array. Signed-off-by: Sughosh Ganu --- .../imx8mp_rsb3720a1/imx8mp_rsb3720a1.c | 19 +++++++++++++++ .../imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c | 18 +++++++++++++++ board/emulation/qemu-arm/qemu-arm.c | 20 ++++++++++++++++ board/kontron/pitx_imx8m/pitx_imx8m.c | 15 +++++++++++- board/kontron/sl-mx8mm/sl-mx8mm.c | 14 +++++++++++ board/kontron/sl28/sl28.c | 14 +++++++++++ board/sandbox/sandbox.c | 17 ++++++++++++++ board/socionext/developerbox/developerbox.c | 23 +++++++++++++++++++ board/xilinx/common/board.h | 18 +++++++++++++++ board/xilinx/zynq/board.c | 18 +++++++++++++++ board/xilinx/zynqmp/zynqmp.c | 18 +++++++++++++++ include/configs/imx8mm-cl-iot-gate.h | 10 ++++++++ include/configs/imx8mp_rsb3720.h | 10 ++++++++ include/configs/kontron-sl-mx8mm.h | 6 +++++ include/configs/kontron_pitx_imx8m.h | 6 +++++ include/configs/kontron_sl28.h | 6 +++++ include/configs/qemu-arm.h | 10 ++++++++ include/configs/sandbox.h | 10 ++++++++ include/configs/synquacer.h | 14 +++++++++++ include/efi_loader.h | 15 ++++++++++++ 20 files changed, 280 insertions(+), 1 deletion(-) diff --git a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c b/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c index 16566092bd..6b534660fe 100644 --- a/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c +++ b/board/advantech/imx8mp_rsb3720a1/imx8mp_rsb3720a1.c @@ -6,6 +6,8 @@ #include #include +#include +#include #include #include #include @@ -21,6 +23,7 @@ #include #include #include +#include #include DECLARE_GLOBAL_DATA_PTR; @@ -44,6 +47,22 @@ static void setup_gpmi_nand(void) } #endif +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { +#if defined(CONFIG_TARGET_IMX8MP_RSB3720A1_4G) + .image_type_id = IMX8MP_RSB3720A1_4G_FIT_IMAGE_GUID, +#elif defined(CONFIG_TARGET_IMX8MP_RSB3720A1_6G) + .image_type_id = IMX8MP_RSB3720A1_6G_FIT_IMAGE_GUID, +#endif + .fw_name = u"IMX8MP-RSB3720-FIT" + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + + int board_early_init_f(void) { struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR; diff --git a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c index 7e2d88f449..ec73d75db3 100644 --- a/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c +++ b/board/compulab/imx8mm-cl-iot-gate/imx8mm-cl-iot-gate.c @@ -5,6 +5,8 @@ */ #include +#include +#include #include #include #include @@ -21,11 +23,27 @@ #include #include #include +#include #include "ddr/ddr.h" DECLARE_GLOBAL_DATA_PTR; +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { +#if defined(CONFIG_TARGET_IMX8MM_CL_IOT_GATE) + .image_type_id = IMX8MM_CL_IOT_GATE_FIT_IMAGE_GUID, +#elif defined(CONFIG_TARGET_IMX8MM_CL_IOT_GATE_OPTEE) + .image_type_id = IMX8MM_CL_IOT_GATE_OPTEE_FIT_IMAGE_GUID, +#endif + .fw_name = u"IMX8MM-CL-IOT-GATE-FIT", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + int board_phys_sdram_size(phys_size_t *size) { struct lpddr4_tcm_desc *lpddr4_tcm_desc = diff --git a/board/emulation/qemu-arm/qemu-arm.c b/board/emulation/qemu-arm/qemu-arm.c index 16d5a97167..99872ce0b8 100644 --- a/board/emulation/qemu-arm/qemu-arm.c +++ b/board/emulation/qemu-arm/qemu-arm.c @@ -6,15 +6,35 @@ #include #include #include +#include +#include +#include #include #include #include #include #include +#include + #ifdef CONFIG_ARM64 #include +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { +#if defined(CONFIG_TARGET_QEMU_ARM_32BIT) + .image_type_id = QEMU_ARM_UBOOT_IMAGE_GUID, +#elif defined(CONFIG_TARGET_QEMU_ARM_64BIT) + .image_type_id = QEMU_ARM64_UBOOT_IMAGE_GUID, +#endif + .fw_name = u"Qemu-Arm-UBOOT", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + static struct mm_region qemu_arm64_mem_map[] = { { /* Flash */ diff --git a/board/kontron/pitx_imx8m/pitx_imx8m.c b/board/kontron/pitx_imx8m/pitx_imx8m.c index d655fe099b..c3af951b14 100644 --- a/board/kontron/pitx_imx8m/pitx_imx8m.c +++ b/board/kontron/pitx_imx8m/pitx_imx8m.c @@ -2,6 +2,8 @@ #include "pitx_misc.h" #include +#include +#include #include #include #include @@ -12,7 +14,7 @@ #include #include #include - +#include DECLARE_GLOBAL_DATA_PTR; @@ -30,6 +32,17 @@ static iomux_v3_cfg_t const uart_pads[] = { IMX8MQ_PAD_ECSPI1_MISO__UART3_CTS_B | MUX_PAD_CTRL(UART_PAD_CTRL), }; +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { + .image_type_id = KONTRON_PITX_IMX8M_FIT_IMAGE_GUID, + .fw_name = u"KONTRON-PITX-IMX8M-UBOOT", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + int board_early_init_f(void) { struct wdog_regs *wdog = (struct wdog_regs *)WDOG1_BASE_ADDR; diff --git a/board/kontron/sl-mx8mm/sl-mx8mm.c b/board/kontron/sl-mx8mm/sl-mx8mm.c index 48376cb826..4d25618895 100644 --- a/board/kontron/sl-mx8mm/sl-mx8mm.c +++ b/board/kontron/sl-mx8mm/sl-mx8mm.c @@ -6,12 +6,26 @@ #include #include #include +#include +#include #include #include +#include #include DECLARE_GLOBAL_DATA_PTR; +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { + .image_type_id = KONTRON_SL_MX8MM_FIT_IMAGE_GUID, + .fw_name = u"KONTROL-SL-MX8MM-UBOOT", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + int board_phys_sdram_size(phys_size_t *size) { u32 ddr_size = readl(M4_BOOTROM_BASE_ADDR); diff --git a/board/kontron/sl28/sl28.c b/board/kontron/sl28/sl28.c index 3c48a9141d..a4985df4ea 100644 --- a/board/kontron/sl28/sl28.c +++ b/board/kontron/sl28/sl28.c @@ -3,11 +3,14 @@ #include #include #include +#include +#include #include #include #include #include #include +#include #include #include #include @@ -23,6 +26,17 @@ DECLARE_GLOBAL_DATA_PTR; +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { + .image_type_id = KONTRON_SL28_FIT_IMAGE_GUID, + .fw_name = u"KONTRON-SL28-FIT", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + int board_early_init_f(void) { fsl_lsch3_early_init_f(); diff --git a/board/sandbox/sandbox.c b/board/sandbox/sandbox.c index 5d9a945d64..8b0f3de1ea 100644 --- a/board/sandbox/sandbox.c +++ b/board/sandbox/sandbox.c @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include #include #include @@ -25,6 +27,21 @@ */ gd_t *gd; +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { + .image_type_id = SANDBOX_UBOOT_IMAGE_GUID, + .fw_name = u"SANDBOX-UBOOT", + }, + { + .image_type_id = SANDBOX_UBOOT_ENV_IMAGE_GUID, + .fw_name = u"SANDBOX-UBOOT-ENV", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + #if !CONFIG_IS_ENABLED(OF_PLATDATA) /* * Add a simple GPIO device (don't use with of-platdata as it interferes with diff --git a/board/socionext/developerbox/developerbox.c b/board/socionext/developerbox/developerbox.c index 9552bfcdc3..4df26f4019 100644 --- a/board/socionext/developerbox/developerbox.c +++ b/board/socionext/developerbox/developerbox.c @@ -10,10 +10,33 @@ #include #include #include +#include +#include #include #include #include +#include + +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { + .image_type_id = DEVELOPERBOX_UBOOT_IMAGE_GUID, + .fw_name = u"DEVELOPERBOX-UBOOT", + }, + { + .image_type_id = DEVELOPERBOX_FIP_IMAGE_GUID, + .fw_name = u"DEVELOPERBOX-FIP", + }, + { + .image_type_id = DEVELOPERBOX_OPTEE_IMAGE_GUID, + .fw_name = u"DEVELOPERBOX-OPTEE", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + static struct mm_region sc2a11_mem_map[] = { { .virt = 0x0UL, diff --git a/board/xilinx/common/board.h b/board/xilinx/common/board.h index 69e642429b..9bcac14946 100644 --- a/board/xilinx/common/board.h +++ b/board/xilinx/common/board.h @@ -7,6 +7,24 @@ #ifndef _BOARD_XILINX_COMMON_BOARD_H #define _BOARD_XILINX_COMMON_BOARD_H +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define ZYNQ_BOOT_IMAGE_GUID \ + EFI_GUID(0x1ba29a15, 0x9969, 0x40aa, 0xb4, 0x24, \ + 0xe8, 0x61, 0x21, 0x61, 0x86, 0x64) + +#define ZYNQ_UBOOT_IMAGE_GUID \ + EFI_GUID(0x1a5178f0, 0x87d3, 0x4f36, 0xac, 0x63, \ + 0x3b, 0x31, 0xa2, 0x3b, 0xe3, 0x05) + +#define ZYNQMP_BOOT_IMAGE_GUID \ + EFI_GUID(0xde6066e8, 0x0256, 0x4fad, 0x82, 0x38, \ + 0xe4, 0x06, 0xe2, 0x74, 0xc4, 0xcf) + +#define ZYNQMP_UBOOT_IMAGE_GUID \ + EFI_GUID(0xcf9ecfd4, 0x938b, 0x41c5, 0x85, 0x51, \ + 0x1f, 0x88, 0x3a, 0xb7, 0xdc, 0x18) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + int board_late_init_xilinx(void); int xilinx_read_eeprom(void); diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c index 26ef048835..0aa51a3e6d 100644 --- a/board/xilinx/zynq/board.c +++ b/board/xilinx/zynq/board.c @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include #include #include @@ -21,10 +23,26 @@ #include #include #include +#include #include "../common/board.h" DECLARE_GLOBAL_DATA_PTR; +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { + .image_type_id = ZYNQ_BOOT_IMAGE_GUID, + .fw_name = u"ZYNQ-BOOT-IMAGE", + }, + { + .image_type_id = ZYNQ_UBOOT_IMAGE_GUID, + .fw_name = u"ZYNQ-UBOOT", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + #if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_DEBUG_UART_BOARD_INIT) void board_debug_uart_init(void) { diff --git a/board/xilinx/zynqmp/zynqmp.c b/board/xilinx/zynqmp/zynqmp.c index 70b3c81f12..b232f7ac4f 100644 --- a/board/xilinx/zynqmp/zynqmp.c +++ b/board/xilinx/zynqmp/zynqmp.c @@ -9,6 +9,8 @@ #include #include #include +#include +#include #include #include #include @@ -40,6 +42,7 @@ #include #include #include +#include #include "../common/board.h" #include "pm_cfg_obj.h" @@ -54,6 +57,21 @@ DECLARE_GLOBAL_DATA_PTR; +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +struct efi_fw_images fw_images[] = { + { + .image_type_id = ZYNQMP_BOOT_IMAGE_GUID, + .fw_name = u"ZYNQMP-BOOT-IMAGE", + }, + { + .image_type_id = ZYNQMP_UBOOT_IMAGE_GUID, + .fw_name = u"ZYNQMP-UBOOT", + }, +}; + +u8 num_image_type_guids = ARRAY_SIZE(fw_images); +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + #if CONFIG_IS_ENABLED(FPGA) && defined(CONFIG_FPGA_ZYNQMPPL) static xilinx_desc zynqmppl = XILINX_ZYNQMP_DESC; diff --git a/include/configs/imx8mm-cl-iot-gate.h b/include/configs/imx8mm-cl-iot-gate.h index 7e6be6050c..35df2e755e 100644 --- a/include/configs/imx8mm-cl-iot-gate.h +++ b/include/configs/imx8mm-cl-iot-gate.h @@ -31,6 +31,16 @@ #endif +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define IMX8MM_CL_IOT_GATE_FIT_IMAGE_GUID \ + EFI_GUID(0x7a32a939, 0xab92, 0x467b, 0x91, 0x52, \ + 0x74, 0x77, 0x1b, 0x95, 0xe6, 0x46) + +#define IMX8MM_CL_IOT_GATE_OPTEE_FIT_IMAGE_GUID \ + EFI_GUID(0x0bf1165c, 0x1831, 0x4864, 0x94, 0x5e, \ + 0xac, 0x3d, 0x38, 0x48, 0xf4, 0x99) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + #if CONFIG_IS_ENABLED(CMD_MMC) # define BOOT_TARGET_MMC(func) \ func(MMC, mmc, 2) \ diff --git a/include/configs/imx8mp_rsb3720.h b/include/configs/imx8mp_rsb3720.h index ac4a7d0cb3..a5a845c2da 100644 --- a/include/configs/imx8mp_rsb3720.h +++ b/include/configs/imx8mp_rsb3720.h @@ -21,6 +21,16 @@ #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1 #define CONFIG_SYS_UBOOT_BASE (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512) +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define IMX8MP_RSB3720A1_4G_FIT_IMAGE_GUID \ + EFI_GUID(0xb1251e89, 0x384a, 0x4635, 0xa8, 0x06, \ + 0x3a, 0xa0, 0xb0, 0xe9, 0xf9, 0x65) + +#define IMX8MP_RSB3720A1_6G_FIT_IMAGE_GUID \ + EFI_GUID(0xb5fb6f08, 0xe142, 0x4db1, 0x97, 0xea, \ + 0x5f, 0xd3, 0x6b, 0x9b, 0xe5, 0xb9) +#endif /* EFI_HAVE_CAPSULE_SUPPORT*/ + #ifdef CONFIG_SPL_BUILD #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.lds" #define CONFIG_SPL_STACK 0x960000 diff --git a/include/configs/kontron-sl-mx8mm.h b/include/configs/kontron-sl-mx8mm.h index 788ae77cd3..aff1b90010 100644 --- a/include/configs/kontron-sl-mx8mm.h +++ b/include/configs/kontron-sl-mx8mm.h @@ -38,6 +38,12 @@ #define CONFIG_USB_MAX_CONTROLLER_COUNT 2 #endif +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define KONTRON_SL_MX8MM_FIT_IMAGE_GUID \ + EFI_GUID(0xd488e45a, 0x4929, 0x4b55, 0x8c, 0x14, \ + 0x86, 0xce, 0xa2, 0xcd, 0x66, 0x29) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + #ifndef CONFIG_SPL_BUILD #define BOOT_TARGET_DEVICES(func) \ func(MMC, mmc, 1) \ diff --git a/include/configs/kontron_pitx_imx8m.h b/include/configs/kontron_pitx_imx8m.h index 0f96b905ab..678364e367 100644 --- a/include/configs/kontron_pitx_imx8m.h +++ b/include/configs/kontron_pitx_imx8m.h @@ -14,6 +14,12 @@ #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300 +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define KONTRON_PITX_IMX8M_FIT_IMAGE_GUID \ + EFI_GUID(0xc898e959, 0x5b1f, 0x4e6d, 0x88, 0xe0, \ + 0x40, 0xd4, 0x5c, 0xca, 0x13, 0x99) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + #ifdef CONFIG_SPL_BUILD #define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.lds" #define CONFIG_SPL_STACK 0x187FF0 diff --git a/include/configs/kontron_sl28.h b/include/configs/kontron_sl28.h index 448749a7f8..97d0d365f6 100644 --- a/include/configs/kontron_sl28.h +++ b/include/configs/kontron_sl28.h @@ -57,6 +57,12 @@ #define CONFIG_SYS_SPL_MALLOC_START 0x80200000 #define CONFIG_SYS_MONITOR_LEN (1024 * 1024) +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define KONTRON_SL28_FIT_IMAGE_GUID \ + EFI_GUID(0x86ebd44f, 0xfeb8, 0x466f, 0x8b, 0xb8, \ + 0x89, 0x06, 0x18, 0x45, 0x6d, 0x8b) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + /* environment */ /* see include/configs/ti_armv7_common.h */ #define ENV_MEM_LAYOUT_SETTINGS \ diff --git a/include/configs/qemu-arm.h b/include/configs/qemu-arm.h index d45f606860..2f2abc746d 100644 --- a/include/configs/qemu-arm.h +++ b/include/configs/qemu-arm.h @@ -17,6 +17,16 @@ #define CONFIG_SYS_BOOTM_LEN SZ_64M +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define QEMU_ARM_UBOOT_IMAGE_GUID \ + EFI_GUID(0xf885b085, 0x99f8, 0x45af, 0x84, 0x7d, \ + 0xd5, 0x14, 0x10, 0x7a, 0x4a, 0x2c) + +#define QEMU_ARM64_UBOOT_IMAGE_GUID \ + EFI_GUID(0x058b7d83, 0x50d5, 0x4c47, 0xa1, 0x95, \ + 0x60, 0xd8, 0x6a, 0xd3, 0x41, 0xc4) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + /* For timer, QEMU emulates an ARMv7/ARMv8 architected timer */ /* Environment options */ diff --git a/include/configs/sandbox.h b/include/configs/sandbox.h index 75efbf3448..d06c3de2e0 100644 --- a/include/configs/sandbox.h +++ b/include/configs/sandbox.h @@ -14,6 +14,16 @@ #define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buffer Size */ +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define SANDBOX_UBOOT_IMAGE_GUID \ + EFI_GUID(0x09d7cf52, 0x0720, 0x4710, 0x91, 0xd1, \ + 0x08, 0x46, 0x9b, 0x7f, 0xe9, 0xc8) + +#define SANDBOX_UBOOT_ENV_IMAGE_GUID \ + EFI_GUID(0x5a7021f5, 0xfef2, 0x48b4, 0xaa, 0xba, \ + 0x83, 0x2e, 0x77, 0x74, 0x18, 0xc0) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + /* Size of our emulated memory */ #define SB_CONCAT(x, y) x ## y #define SB_TO_UL(s) SB_CONCAT(s, UL) diff --git a/include/configs/synquacer.h b/include/configs/synquacer.h index 8dd092fc59..07e1f56e3d 100644 --- a/include/configs/synquacer.h +++ b/include/configs/synquacer.h @@ -51,6 +51,20 @@ "fip.bin raw 180000 78000;" \ "optee.bin raw 500000 100000\0" +#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT) +#define DEVELOPERBOX_UBOOT_IMAGE_GUID \ + EFI_GUID(0x53a92e83, 0x4ef4, 0x473a, 0x8b, 0x0d, \ + 0xb5, 0xd8, 0xc7, 0xb2, 0xd6, 0x00) + +#define DEVELOPERBOX_FIP_IMAGE_GUID \ + EFI_GUID(0x880866e9, 0x84ba, 0x4793, 0xa9, 0x08, \ + 0x33, 0xe0, 0xb9, 0x16, 0xf3, 0x98) + +#define DEVELOPERBOX_OPTEE_IMAGE_GUID \ + EFI_GUID(0xc1b629f1, 0xce0e, 0x4894, 0x82, 0xbf, \ + 0xf0, 0xa3, 0x83, 0x87, 0xe6, 0x30) +#endif /* EFI_HAVE_CAPSULE_SUPPORT */ + /* Distro boot settings */ #ifndef CONFIG_SPL_BUILD #ifdef CONFIG_CMD_USB diff --git a/include/efi_loader.h b/include/efi_loader.h index af36639ec6..1965b5a28f 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -979,6 +979,21 @@ efi_status_t efi_capsule_authenticate(const void *capsule, #define EFI_CAPSULE_DIR u"\\EFI\\UpdateCapsule\\" +/** + * struct efi_fw_images - List of firmware images updatable through capsule + * update + * + * This structure gives information about the firmware images on the platform + * which can be updated through the capsule update mechanism + * + * @image_type_id: Image GUID. Same value is to be used in the capsule + * @fw_name: Name of the firmware image + */ +struct efi_fw_images { + efi_guid_t image_type_id; + const u16 *fw_name; +}; + /** * Install the ESRT system table. *