From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Date: Mon, 29 Mar 2021 20:43:14 +1300 Subject: [PATCH 5/7] spl: fit: Support loading FPGA images from list of "loadables" In-Reply-To: <20210310180442.746517-6-mr.nuke.me@gmail.com> References: <20210310180442.746517-1-mr.nuke.me@gmail.com> <20210310180442.746517-6-mr.nuke.me@gmail.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Alexandru, On Thu, 11 Mar 2021 at 07:04, Alexandru Gagniuc 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 > --- > 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