rockpi4: board: Add firmware image information for capsule updates
Add information that will be needed for enabling the UEFI capsule
update feature on the RockPi4 boards. With the feature enabled, it
would be possible to update the idbloader and u-boot.itb images on the
RockPi4B and RockPi4C variants.
Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
diff --git a/board/rockchip/evb_rk3399/evb-rk3399.c b/board/rockchip/evb_rk3399/evb-rk3399.c
index abb7658..f56b379 100644
--- a/board/rockchip/evb_rk3399/evb-rk3399.c
+++ b/board/rockchip/evb_rk3399/evb-rk3399.c
@@ -5,11 +5,25 @@
#include <common.h>
#include <dm.h>
+#include <efi_loader.h>
#include <init.h>
#include <log.h>
#include <asm/arch-rockchip/periph.h>
+#include <linux/kernel.h>
#include <power/regulator.h>
+#define ROCKPI4_UPDATABLE_IMAGES 2
+
+#if CONFIG_IS_ENABLED(EFI_HAVE_CAPSULE_SUPPORT)
+static struct efi_fw_image fw_images[ROCKPI4_UPDATABLE_IMAGES] = {0};
+
+struct efi_capsule_update_info update_info = {
+ .images = fw_images,
+};
+
+u8 num_image_type_guids = ROCKPI4_UPDATABLE_IMAGES;
+#endif
+
#ifndef CONFIG_SPL_BUILD
int board_early_init_f(void)
{
@@ -29,4 +43,43 @@
out:
return 0;
}
-#endif
+
+#if defined(CONFIG_EFI_HAVE_CAPSULE_SUPPORT) && defined(CONFIG_EFI_PARTITION)
+static bool board_is_rockpi_4b(void)
+{
+ return CONFIG_IS_ENABLED(TARGET_EVB_RK3399) &&
+ of_machine_is_compatible("radxa,rockpi4b");
+}
+
+static bool board_is_rockpi_4c(void)
+{
+ return CONFIG_IS_ENABLED(TARGET_EVB_RK3399) &&
+ of_machine_is_compatible("radxa,rockpi4c");
+}
+
+void rockchip_capsule_update_board_setup(void)
+{
+ if (board_is_rockpi_4b()) {
+ efi_guid_t idbldr_image_type_guid =
+ ROCKPI_4B_IDBLOADER_IMAGE_GUID;
+ efi_guid_t uboot_image_type_guid = ROCKPI_4B_UBOOT_IMAGE_GUID;
+
+ guidcpy(&fw_images[0].image_type_id, &idbldr_image_type_guid);
+ guidcpy(&fw_images[1].image_type_id, &uboot_image_type_guid);
+
+ fw_images[0].fw_name = u"ROCKPI4B-IDBLOADER";
+ fw_images[1].fw_name = u"ROCKPI4B-UBOOT";
+ } else if (board_is_rockpi_4c()) {
+ efi_guid_t idbldr_image_type_guid =
+ ROCKPI_4C_IDBLOADER_IMAGE_GUID;
+ efi_guid_t uboot_image_type_guid = ROCKPI_4C_UBOOT_IMAGE_GUID;
+
+ guidcpy(&fw_images[0].image_type_id, &idbldr_image_type_guid);
+ guidcpy(&fw_images[1].image_type_id, &uboot_image_type_guid);
+
+ fw_images[0].fw_name = u"ROCKPI4C-IDBLOADER";
+ fw_images[1].fw_name = u"ROCKPI4C-UBOOT";
+ }
+}
+#endif /* CONFIG_EFI_HAVE_CAPSULE_SUPPORT && CONFIG_EFI_PARTITION */
+#endif /* !CONFIG_SPL_BUILD */