diff options
Diffstat (limited to 'meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch')
-rw-r--r-- | meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch new file mode 100644 index 0000000000..29fce5eb65 --- /dev/null +++ b/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/files/corstone1000/0010-Platform-corstone1000-Adds-compiler-flags-to-FWU-age.patch @@ -0,0 +1,273 @@ +From 11f6af40dc322630031511146763cc9059bdb805 Mon Sep 17 00:00:00 2001 +From: Emekcan Aras <emekcan.aras@arm.com> +Date: Fri, 14 Apr 2023 16:35:55 +0100 +Subject: [PATCH] Platform: corstone1000: Adds compiler flags to FWU agent for + BL1 + +Adds compiler flags for BL1 to fwu_agent.c functions to not use GPT parser and +IO libraries in BL1 rom code. + +Upstream-Status: Submitted [https://review.trustedfirmware.org/c/TF-M/trusted-firmware-m/+/20559] +Signed-off-by: Emekcan Aras <emekcan.aras@arm.com> +--- + .../corstone1000/fw_update_agent/fwu_agent.c | 176 +++++++++++++++++- + 1 file changed, 174 insertions(+), 2 deletions(-) + +diff --git a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c +index 8ecb03d157..afd8d66e42 100644 +--- a/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c ++++ b/platform/ext/target/arm/corstone1000/fw_update_agent/fwu_agent.c +@@ -14,8 +14,6 @@ + #include "region_defs.h" + #include "uefi_capsule_parser.h" + #include "flash_common.h" +-#include "partition.h" +-#include "platform.h" + #include "platform_base_address.h" + #include "platform_description.h" + #include "tfm_plat_nv_counters.h" +@@ -23,6 +21,10 @@ + #include "uefi_fmp.h" + #include "uart_stdout.h" + #include "soft_crc.h" ++#if !BL1 ++#include "partition.h" ++#include "platform.h" ++#endif + + /* Properties of image in a bank */ + struct fwu_image_properties { +@@ -145,6 +147,30 @@ extern ARM_DRIVER_FLASH FWU_METADATA_FLASH_DEV; + + #define HOST_ACK_TIMEOUT_SEC (6 * 60) /* ~seconds, not exact */ + ++#if BL1 ++static enum fwu_agent_error_t private_metadata_read( ++ struct fwu_private_metadata* p_metadata) ++{ ++ int ret; ++ ++ FWU_LOG_MSG("%s: enter\n\r", __func__); ++ ++ if (!p_metadata) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET, p_metadata, ++ sizeof(struct fwu_private_metadata)); ++ if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ FWU_LOG_MSG("%s: success: boot_index = %u\n\r", __func__, ++ p_metadata->boot_index); ++ ++ return FWU_AGENT_SUCCESS; ++} ++#elif + static enum fwu_agent_error_t private_metadata_read( + struct fwu_private_metadata* p_metadata) + { +@@ -175,7 +201,36 @@ static enum fwu_agent_error_t private_metadata_read( + + return FWU_AGENT_SUCCESS; + } ++#endif + ++#if BL1 ++static enum fwu_agent_error_t private_metadata_write( ++ struct fwu_private_metadata* p_metadata) ++{ ++ int ret; ++ ++ FWU_LOG_MSG("%s: enter: boot_index = %u\n\r", __func__, ++ p_metadata->boot_index); ++ ++ if (!p_metadata) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET); ++ if (ret != ARM_DRIVER_OK) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_PRIVATE_METADATA_REPLICA_1_OFFSET, ++ p_metadata, sizeof(struct fwu_private_metadata)); ++ if (ret < 0 || ret != sizeof(struct fwu_private_metadata)) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ FWU_LOG_MSG("%s: success\n\r", __func__); ++ return FWU_AGENT_SUCCESS; ++} ++#elif + static enum fwu_agent_error_t private_metadata_write( + struct fwu_private_metadata* p_metadata) + { +@@ -210,6 +265,7 @@ static enum fwu_agent_error_t private_metadata_write( + FWU_LOG_MSG("%s: success\n\r", __func__); + return FWU_AGENT_SUCCESS; + } ++#endif + + static enum fwu_agent_error_t metadata_validate(struct fwu_metadata *p_metadata) + { +@@ -235,6 +291,30 @@ static enum fwu_agent_error_t metadata_validate(struct fwu_metadata *p_metadata) + return FWU_AGENT_SUCCESS; + } + ++#if BL1 ++static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metadata *p_metadata) ++{ ++ int ret; ++ ++ FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__, ++ FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata)); ++ ++ if (!p_metadata) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_METADATA_REPLICA_1_OFFSET, ++ p_metadata, sizeof(struct fwu_metadata)); ++ if (ret < 0 || ret != sizeof(struct fwu_metadata)) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__, ++ p_metadata->active_index, p_metadata->previous_active_index); ++ ++ return FWU_AGENT_SUCCESS; ++} ++#elif + static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metadata *p_metadata) + { + uuid_t metadata_uuid = FWU_METADATA_TYPE_UUID; +@@ -266,7 +346,36 @@ static enum fwu_agent_error_t metadata_read_without_validation(struct fwu_metada + + return FWU_AGENT_SUCCESS; + } ++#endif ++ ++#if BL1 ++static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata) ++{ ++ int ret; + ++ FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__, ++ FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata)); ++ ++ if (!p_metadata) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.ReadData(FWU_METADATA_REPLICA_1_OFFSET, ++ p_metadata, sizeof(struct fwu_metadata)); ++ if (ret < 0 || ret != sizeof(struct fwu_metadata)) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ if (metadata_validate(p_metadata) != FWU_AGENT_SUCCESS) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__, ++ p_metadata->active_index, p_metadata->previous_active_index); ++ ++ return FWU_AGENT_SUCCESS; ++} ++#elif + static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata) + { + uuid_t metadata_uuid = FWU_METADATA_TYPE_UUID; +@@ -301,7 +410,66 @@ static enum fwu_agent_error_t metadata_read(struct fwu_metadata *p_metadata) + + return FWU_AGENT_SUCCESS; + } ++#endif ++ + ++#if BL1 ++static enum fwu_agent_error_t metadata_write( ++ struct fwu_metadata *p_metadata) ++{ ++ int ret; ++ ++ FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__, ++ FWU_METADATA_REPLICA_1_OFFSET, sizeof(struct fwu_metadata)); ++ ++ if (!p_metadata) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_1_OFFSET); ++ if (ret != ARM_DRIVER_OK) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_1_OFFSET, ++ p_metadata, sizeof(struct fwu_metadata)); ++ if (ret < 0 || ret != sizeof(struct fwu_metadata)) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__, ++ FWU_METADATA_REPLICA_2_OFFSET, sizeof(struct fwu_metadata)); ++ ++ ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_2_OFFSET); ++ if (ret != ARM_DRIVER_OK) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_2_OFFSET, ++ p_metadata, sizeof(struct fwu_metadata)); ++ if (ret < 0 || ret != sizeof(struct fwu_metadata)) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ FWU_LOG_MSG("%s: enter: flash addr = %u, size = %d\n\r", __func__, ++ FWU_METADATA_REPLICA_2_OFFSET, sizeof(struct fwu_metadata)); ++ ++ ret = FWU_METADATA_FLASH_DEV.EraseSector(FWU_METADATA_REPLICA_2_OFFSET); ++ if (ret != ARM_DRIVER_OK) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ ret = FWU_METADATA_FLASH_DEV.ProgramData(FWU_METADATA_REPLICA_2_OFFSET, ++ p_metadata, sizeof(struct fwu_metadata)); ++ if (ret < 0 || ret != sizeof(struct fwu_metadata)) { ++ return FWU_AGENT_ERROR; ++ } ++ ++ FWU_LOG_MSG("%s: success: active = %u, previous = %d\n\r", __func__, ++ p_metadata->active_index, p_metadata->previous_active_index); ++ return FWU_AGENT_SUCCESS; ++} ++#elif + static enum fwu_agent_error_t metadata_write( + struct fwu_metadata *p_metadata) + { +@@ -371,6 +539,8 @@ static enum fwu_agent_error_t metadata_write( + p_metadata->active_index, p_metadata->previous_active_index); + return FWU_AGENT_SUCCESS; + } ++#endif ++ + + enum fwu_agent_error_t fwu_metadata_init(void) + { +@@ -418,8 +588,10 @@ enum fwu_agent_error_t fwu_metadata_provision(void) + + FWU_LOG_MSG("%s: enter\n\r", __func__); + ++#if !BL1 + plat_io_storage_init(); + partition_init(PLATFORM_GPT_IMAGE); ++#endif + + ret = fwu_metadata_init(); + if (ret) { +-- +2.17.1 + |