@@ -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 */
@@ -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_ */
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(+)