summaryrefslogtreecommitdiff
path: root/common/spl/spl_fit.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/spl/spl_fit.c')
-rw-r--r--common/spl/spl_fit.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
index faf4ddbd1f6..db436268cbc 100644
--- a/common/spl/spl_fit.c
+++ b/common/spl/spl_fit.c
@@ -15,6 +15,15 @@
#define CONFIG_SYS_BOOTM_LEN (64 << 20)
#endif
+__weak void board_spl_fit_post_load(ulong load_addr, size_t length)
+{
+}
+
+__weak ulong board_spl_fit_size_align(ulong size)
+{
+ return size;
+}
+
/**
* spl_fit_get_image_name(): By using the matching configuration subnode,
* retrieve the name of an image, specified by a property name and an index
@@ -350,6 +359,7 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
*/
size = fdt_totalsize(fit);
size = (size + 3) & ~3;
+ size = board_spl_fit_size_align(size);
base_offset = (size + 3) & ~3;
/*
@@ -373,8 +383,9 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
fit = spl_get_load_buffer(-hsize, hsize);
sectors = get_aligned_image_size(info, size, 0);
count = info->read(info, sector, sectors, fit);
- debug("fit read sector %lx, sectors=%d, dst=%p, count=%lu\n",
- sector, sectors, fit, count);
+ debug("fit read sector %lx, sectors=%d, dst=%p, count=%lu, size=0x%lx\n",
+ sector, sectors, fit, count, size);
+
if (count == 0)
return -EIO;
@@ -510,5 +521,11 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
if (spl_image->entry_point == FDT_ERROR || spl_image->entry_point == 0)
spl_image->entry_point = spl_image->load_addr;
+ spl_image->flags |= SPL_FIT_FOUND;
+
+#ifdef CONFIG_SECURE_BOOT
+ board_spl_fit_post_load((ulong)fit, size);
+#endif
+
return 0;
}