From: Abdellatif El Khlifi <abdellatif.elkhl...@arm.com> Implement set_image() using efi_firmware_raw_set_image()
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhl...@arm.com> Signed-off-by: Davidson kumaresan <davidson.kumare...@arm.com> Cc: Heinrich Schuchardt <xypron.g...@gmx.de> Cc: Sughosh Ganu <sughosh.g...@linaro.org> Cc: Tom Rini <tr...@konsulko.com> Cc: Ilias Apalodimas <ilias.apalodi...@linaro.org> Cc: Simon Glass <s...@chromium.org> Cc: Michal Simek <michal.si...@amd.com> Cc: Marek Vasut <marek.vasut+rene...@mailbox.org> Cc: Casey Connolly <casey.conno...@linaro.org> Cc: Adriano Cordova <adria...@gmail.com> --- Changelog of changes: =========================== v5: * As suggested by Ilias: Use efi_fill_image_desc_array() for PSA instead of changing efi_firmware_get_image_info() v2: * Following Heinrich comment: The changes at efi_firmware_raw_set_image() simplified by removing the "else" so it is clear we are just adding FWU_ARM_PSA support and skipping the use of DFU in case of FWU_ARM_PSA v1: * Add set_image and get_image_info support for FWU_ARM_PSA lib/efi_loader/efi_firmware.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/efi_loader/efi_firmware.c b/lib/efi_loader/efi_firmware.c index 75501e21557..46d500966ad 100644 --- a/lib/efi_loader/efi_firmware.c +++ b/lib/efi_loader/efi_firmware.c @@ -14,6 +14,7 @@ #include <efi_variable.h> #include <env.h> #include <fwu.h> +#include <fwu_arm_psa.h> #include <image.h> #include <signatures.h> @@ -312,14 +313,13 @@ static efi_status_t efi_gen_capsule_guids(void) * * Return status code */ -static efi_status_t efi_fill_image_desc_array( - 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) +efi_status_t __weak efi_fill_image_desc_array(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) { size_t total_size; struct efi_fw_image *fw_array; @@ -749,6 +749,15 @@ efi_status_t EFIAPI efi_firmware_raw_set_image( if (status != EFI_SUCCESS) return EFI_EXIT(status); + if (IS_ENABLED(CONFIG_FWU_ARM_PSA)) { + if (fwu_update_image(image, image_index, image_size)) + return EFI_EXIT(EFI_DEVICE_ERROR); + + efi_firmware_set_fmp_state_var(&state, image_index); + + return EFI_EXIT(EFI_SUCCESS); + } + /* * dfu_alt_num is assigned from 0 while image_index starts from 1. * dfu_alt_num is calculated by (image_index - 1) when multi bank update -- 2.43.0