Hi Alexandru, On Thu, 11 Mar 2021 at 07:04, Alexandru Gagniuc <mr.nuke...@gmail.com> wrote: > > Commit 4afc4f37c70e ("doc: FIT image: Clarify format and simplify > syntax") and delegated FPGA images to be added via the list of > "loadables" in lieu of the "fpga" property. Now actually implement > this in code. > > Note that the "compatible" property is ignored for the time being, as > implementing "compatible" loading is beyond the scope of this change. > However, "u-boot,fpga-legacy" is accepted without warning. > > Signed-off-by: Alexandru Gagniuc <mr.nuke...@gmail.com> > --- > common/spl/spl_fit.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c > index 68f29c0026..ca6be6a839 100644 > --- a/common/spl/spl_fit.c > +++ b/common/spl/spl_fit.c > @@ -477,6 +477,20 @@ static int spl_fit_record_loadable(const struct > spl_fit_info *ctx, int index, > return ret; > } > > +static int spl_fit_image_is_fpga(const void *fit, int node) > +{ > + const char *type; > + > + if (!IS_ENABLED(CONFIG_SPL_FPGA)) > + return 0; > + > + type = fdt_getprop(fit, node, FIT_TYPE_PROP, NULL); > + if (!type) > + return 0; > + > + return !strcmp(type, "fpga"); > +} > + > static int spl_fit_image_get_os(const void *fit, int noffset, uint8_t *os) > { > if (!CONFIG_IS_ENABLED(FIT_IMAGE_TINY) || CONFIG_IS_ENABLED(OS_BOOT)) > @@ -536,11 +550,18 @@ static void warn_deprecated(const char *msg) > static int spl_fit_upload_fpga(struct spl_fit_info *ctx, int node, > struct spl_image_info *fpga_image) > { > + const char *compatible; > int ret; > > debug("FPGA bitstream at: %x, size: %x\n", > (u32)fpga_image->load_addr, fpga_image->size); > > + compatible = fdt_getprop(ctx->fit, node, "compatible", NULL); > + if (!compatible) > + warn_deprecated("'fpga' image without 'compatible' property"); > + else if (strcmp(compatible, "u-boot,fpga-legacy")) > + printf("Ignoring compatible = %s property\n", compatible); > + > ret = fpga_load(0, (void *)fpga_image->load_addr, fpga_image->size, > BIT_FULL); > if (ret) { > @@ -739,6 +760,9 @@ int spl_load_simple_fit(struct spl_image_info *spl_image, > return ret; > } > > + if (spl_fit_image_is_fpga(ctx.fit, node)) > + spl_fit_upload_fpga(&ctx, node, &image_info); > +
Given the code-size increase I think a new Kconfig option for SPL FPGA FIT support would be useful. > if (!spl_fit_image_get_os(ctx.fit, node, &os_type)) > debug("Loadable is %s\n", > genimg_get_os_name(os_type)); > > -- > 2.26.2 > Regards, Simon