
Hi Sanghosh
On 11/25/21 8:01 AM, Sughosh Ganu wrote:
Add helper functions needed for accessing the metadata which contains information on the updatable images. These functions have been added for the STM32MP157C-DK2 board which has the updatable images on the uSD card, formatted as GPT partitions.
Signed-off-by: Sughosh Ganu sughosh.ganu@linaro.org
board/st/stm32mp1/stm32mp1.c | 63 ++++++++++++++++++++++++++++++++++++ include/fwu_metadata.h | 3 ++ 2 files changed, 66 insertions(+)
diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index 84592677e4..a6884d2772 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -7,6 +7,7 @@
#include <common.h> #include <adc.h> +#include <blk.h> #include <bootm.h> #include <clk.h> #include <config.h> @@ -14,6 +15,7 @@ #include <env.h> #include <env_internal.h> #include <fdt_support.h> +#include <fwu_metadata.h> #include <g_dnl.h> #include <generic-phy.h> #include <hang.h> @@ -23,6 +25,7 @@ #include <log.h> #include <malloc.h> #include <misc.h> +#include <mmc.h> #include <mtd_node.h> #include <net.h> #include <netdev.h> @@ -938,3 +941,63 @@ static void board_copro_image_process(ulong fw_image, size_t fw_size) }
U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_COPRO, board_copro_image_process);
+#ifdef CONFIG_FWU_MULTI_BANK_UPDATE
+int fwu_plat_get_update_index(u32 *update_idx) +{
- int ret;
- u32 active_idx;
- ret = fwu_get_active_index(&active_idx);
- if (ret < 0)
return -1;
- *update_idx = active_idx ^= 0x1;
- return ret;
+}
+int fwu_plat_get_blk_desc(struct blk_desc **desc) +{
- int ret;
- struct mmc *mmc;
- struct udevice *dev;
- /*
* Initial support is being added for the DK2
* platform
*/
- if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) &&
(of_machine_is_compatible("st,stm32mp157c-dk2"))) {
ret = uclass_get_device(UCLASS_MMC, 0, &dev);
if (ret)
return -1;
mmc = mmc_get_mmc_dev(dev);
if (!mmc)
return -1;
if (mmc_init(mmc))
return -1;
*desc = mmc_get_blk_desc(mmc);
if (!*desc)
return -1;
- }
- return 0;
+}
+struct fwu_metadata_ops *get_plat_fwu_metadata_ops(void) +{
- if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) &&
(of_machine_is_compatible("st,stm32mp157c-dk2"))) {
return &fwu_gpt_blk_ops;
- }
- return NULL;
+}
+#endif /* CONFIG_FWU_MULTI_BANK_UPDATE */ diff --git a/include/fwu_metadata.h b/include/fwu_metadata.h index e692ef7506..6a5e814ab6 100644 --- a/include/fwu_metadata.h +++ b/include/fwu_metadata.h @@ -122,4 +122,7 @@ int fwu_accept_image(efi_guid_t *img_type_id); int fwu_clear_accept_image(efi_guid_t *img_type_id, u32 bank); int fwu_get_metadata(struct fwu_metadata **metadata);
+int fwu_plat_get_update_index(u32 *update_idx); +int fwu_plat_get_blk_desc(struct blk_desc **desc);
- #endif /* _FWU_METADATA_H_ */
One general question:
How we can handle the EV1 board with 2 MMC devices => eMMC (mmc1) / SDCard (mmc0)
and how to managed HW partition of eMMC boot1 / boot2
=> for eMMC boot, the TF-A BL2 is located in these eMMC hw partition.
in the serie, I see only support for partition > 0 => partition in GPT but not the update of eMMC boot partition.
Regards
Patrick