The simple FIT loader lacks support for full image verification (CONFIG_SPL_FIT_FULL_CHECK). The full parser (spl_load_fit_image) provides this feature.
Enable it when CONFIG_SPL_LOAD_FIT_FULL is selected. If the full load fails, fall back to the simple loader to preserve compatibility. Signed-off-by: Nikita Shubin <[email protected]> --- common/spl/spl_ram.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/common/spl/spl_ram.c b/common/spl/spl_ram.c index 0c501cf02f2..8f63a46373f 100644 --- a/common/spl/spl_ram.c +++ b/common/spl/spl_ram.c @@ -81,11 +81,22 @@ static int spl_ram_load_image(struct spl_image_info *spl_image, if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) && image_get_magic(header) == FDT_MAGIC) { - struct spl_load_info load; - debug("Found FIT\n"); - spl_load_init(&load, spl_ram_load_read, NULL, 1); - ret = spl_load_simple_fit(spl_image, &load, 0, header); + /* by default, assume failure and fall back to simple FIT */ + int ret = -1; + + if (CONFIG_IS_ENABLED(LOAD_FIT_FULL)) { + ret = spl_load_fit_image(spl_image, header); + if (ret) + debug("Loading FULL FIT failed, trying SIMPLE FIT\n"); + } + + if (ret) { + struct spl_load_info load; + + spl_load_init(&load, spl_ram_load_read, NULL, 1); + ret = spl_load_simple_fit(spl_image, &load, 0, header); + } } else { ulong u_boot_pos = spl_get_image_pos(); -- 2.54.0
