From 34fadec4f659248a6020676f5894895977ccf79d Mon Sep 17 00:00:00 2001
From: Vishnu Banavath <vishnu.banavath@arm.com>
Date: Fri, 17 Dec 2021 19:50:25 +0000
Subject: [PATCH 23/27] efi_firmware: add get_image_info for corstone1000

This change is to populate get_image_info which eventually
will be populated in ESRT table

Signed-off-by: Vishnu Banavath <vishnu.banavath@arm.com>

%% original patch: 0047-efi_firmware-add-get_image_info-for-corstone1000.patch

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
---
 lib/efi_loader/efi_firmware.c | 64 ++++++++++++++++++++++++++++++++++-
 1 file changed, 63 insertions(+), 1 deletion(-)

diff --git a/lib/efi_loader/efi_firmware.c b/lib/efi_loader/efi_firmware.c
index a5ff32f121f4..9eb89849b28d 100644
--- a/lib/efi_loader/efi_firmware.c
+++ b/lib/efi_loader/efi_firmware.c
@@ -241,6 +241,7 @@ const efi_guid_t efi_firmware_image_type_uboot_fit =
  *
  * Return		status code
  */
+
 static
 efi_status_t EFIAPI efi_firmware_fit_get_image_info(
 	struct efi_firmware_management_protocol *this,
@@ -332,6 +333,56 @@ const struct efi_firmware_management_protocol efi_fmp_fit = {
 const efi_guid_t efi_firmware_image_type_uboot_raw =
 	EFI_FIRMWARE_IMAGE_TYPE_UBOOT_RAW_GUID;
 
+#if CONFIG_IS_ENABLED(TARGET_CORSTONE1000)
+static efi_status_t efi_corstone1000_img_info_get (
+	efi_uintn_t *image_info_size,
+	struct efi_firmware_image_descriptor *image_info,
+	u32 *descriptor_version,
+	u8 *descriptor_count,
+	efi_uintn_t *descriptor_size,
+	u32 *package_version,
+	u16 **package_version_name,
+	const efi_guid_t *image_type)
+{
+	int i = 0;
+
+	*image_info_size = sizeof(*image_info);
+	*descriptor_version = EFI_FIRMWARE_IMAGE_DESCRIPTOR_VERSION;
+	*descriptor_count = 1;//dfu_num;
+	*descriptor_size = sizeof(*image_info);
+	if (package_version)
+		*package_version = 0xffffffff; /* not supported */
+	if(package_version_name)
+		*package_version_name = NULL; /* not supported */
+
+	if(image_info == NULL) {
+		log_warning("image_info is null\n");
+		return EFI_BUFFER_TOO_SMALL;
+	}
+
+	image_info[i].image_index = i;
+	image_info[i].image_type_id = *image_type;
+	image_info[i].image_id = 0;
+	image_info[i].image_id_name = "wic";
+	image_info[i].version = 1;
+	image_info[i].version_name = NULL;
+	image_info[i].size = 0x1000;
+	image_info[i].attributes_supported = IMAGE_ATTRIBUTE_IMAGE_UPDATABLE |
+					     IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED;
+	image_info[i].attributes_setting = IMAGE_ATTRIBUTE_IMAGE_UPDATABLE;
+	/* Check if the capsule authentication is enabled */
+	if (IS_ENABLED(CONFIG_EFI_CAPSULE_AUTHENTICATE))
+		image_info[0].attributes_setting |=
+			IMAGE_ATTRIBUTE_AUTHENTICATION_REQUIRED;
+	image_info[i].lowest_supported_image_version = 0;
+	image_info[i].last_attempt_version = 0;
+	image_info[i].last_attempt_status = LAST_ATTEMPT_STATUS_SUCCESS;
+	image_info[i].hardware_instance = 1;
+	image_info[i].dependencies = NULL;
+
+	return EFI_SUCCESS;
+}
+#endif
 /**
  * efi_firmware_raw_get_image_info - return information about the current
 				     firmware image
@@ -376,12 +427,20 @@ efi_status_t EFIAPI efi_firmware_raw_get_image_info(
 	     !descriptor_size || !package_version || !package_version_name))
 		return EFI_EXIT(EFI_INVALID_PARAMETER);
 
-	ret = efi_get_dfu_info(image_info_size, image_info,
+#if CONFIG_IS_ENABLED(TARGET_CORSTONE1000)
+	ret = efi_corstone1000_img_info_get(image_info_size, image_info,
 			       descriptor_version, descriptor_count,
 			       descriptor_size,
 			       package_version, package_version_name,
 			       &efi_firmware_image_type_uboot_raw);
+#else
 
+	ret = efi_get_dfu_info(image_info_size, image_info,
+			       descriptor_version, descriptor_count,
+			       descriptor_size,
+			       package_version, package_version_name,
+			       &efi_firmware_image_type_uboot_raw);
+#endif
 	return EFI_EXIT(ret);
 }
 
@@ -462,6 +521,9 @@ efi_status_t EFIAPI efi_firmware_raw_set_image(
 
 	}
 
+#if CONFIG_IS_ENABLED(TARGET_CORSTONE1000)
+	return EFI_EXIT(EFI_SUCCESS);
+#endif
 	if (dfu_write_by_alt(image_index - 1, (void *)image, image_size,
 			     NULL, NULL))
 		return EFI_EXIT(EFI_DEVICE_ERROR);
-- 
2.30.2

