From: Kever Yang <kever.yang@rock-chips.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC PATCH 04/11] SPL: FIT: allow loading multiple images
Date: Sun, 22 Jan 2017 15:08:18 +0800 [thread overview]
Message-ID: <58845A62.60408@rock-chips.com> (raw)
In-Reply-To: <1484877211-19332-5-git-send-email-andre.przywara@arm.com>
Hi Andre,
Thanks for your patches, this is great help for enable ATF on
U-Boot SPL.
For ATF use case, we would like to identify which one is bl31 for we need to
get entry point for it while we only need load address for other image.
Any idea on get this information from different "loadables"?
Thanks,
- Kever
On 01/20/2017 09:53 AM, Andre Przywara wrote:
> So far we were not using the FIT image format to its full potential:
> The SPL FIT loader was just loading the first image from the /images
> node plus one of the listed DTBs.
> Now with the refactored loader code it's easy to load an arbitrary
> number of images in addition to the two mentioned above.
> As described in the FIT image source file format description, iterate
> over all images listed at the "loadables" property in the configuration
> node and load every image at its desired location.
> This allows to load any kind of images:
> - firmware images to execute before U-Boot proper (for instance
> ARM Trusted Firmware (ATF))
> - firmware images for management processors (SCP, arisc, ...)
> - firmware images for devices like WiFi controllers
> - bit files for FPGAs
> - additional configuration data
> - kernels and/or ramdisks
> The actual usage of this feature would be platform and/or board specific.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
> common/spl/spl_fit.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c
> index d4149c5..18269f7 100644
> --- a/common/spl/spl_fit.c
> +++ b/common/spl/spl_fit.c
> @@ -190,6 +190,7 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
> struct spl_image_info image_info;
> int node, images;
> int base_offset, align_len = ARCH_DMA_MINALIGN - 1;
> + int index = 0;
>
> /*
> * Figure out where the external images start. This is the base for the
> @@ -234,6 +235,11 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
> if (node < 0) {
> debug("could not find firmware image, trying loadables...\n");
> node = spl_fit_get_image_node(fit, images, "loadables", 0);
> + /*
> + * If we pick the U-Boot image from "loadables", start at
> + * the second image when later loading additional images.
> + */
> + index = 1;
> }
> if (node < 0) {
> debug("%s: Cannot find u-boot image node: %d\n",
> @@ -259,5 +265,26 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
> image_info.load_addr = spl_image->load_addr + spl_image->size;
> spl_load_fit_image(info, sector, fit, base_offset, node, &image_info);
>
> + /* Now check if there are more images for us to load */
> + for (; ; index++) {
> + node = spl_fit_get_image_node(fit, images, "loadables", index);
> + if (node < 0)
> + break;
> +
> + spl_load_fit_image(info, sector, fit, base_offset, node,
> + &image_info);
> +
> + /*
> + * If the "firmware" image did not provide an entry point,
> + * use the first valid entry point from the loadables.
> + */
> + if (spl_image->entry_point == -1U &&
> + image_info.entry_point != -1U)
> + spl_image->entry_point = image_info.entry_point;
> + }
> +
> + if (spl_image->entry_point == -1U || spl_image->entry_point == 0)
> + spl_image->entry_point = spl_image->load_addr;
> +
> return 0;
> }
next prev parent reply other threads:[~2017-01-22 7:08 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-20 1:53 [U-Boot] [RFC PATCH 00/11] extend FIT loading support (plus Pine64/ATF support) Andre Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 01/11] SPL: FIT: refactor FDT loading Andre Przywara
2017-01-23 8:56 ` Lokesh Vutla
2017-01-27 21:29 ` Simon Glass
2017-01-28 0:38 ` André Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 02/11] SPL: FIT: rework U-Boot image loading Andre Przywara
2017-01-23 8:56 ` Lokesh Vutla
2017-01-27 21:29 ` Simon Glass
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 03/11] SPL: FIT: factor out spl_load_fit_image() Andre Przywara
2017-01-22 7:16 ` Kever Yang
2017-01-22 10:42 ` André Przywara
2017-01-23 2:37 ` Kever Yang
2017-01-23 8:53 ` Lokesh Vutla
2017-01-23 12:58 ` Tom Rini
2017-01-23 13:31 ` Lokesh Vutla
2017-01-23 13:50 ` Tom Rini
2017-01-23 23:07 ` André Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 04/11] SPL: FIT: allow loading multiple images Andre Przywara
2017-01-22 7:08 ` Kever Yang [this message]
2017-01-22 10:58 ` André Przywara
2017-01-23 2:49 ` Kever Yang
2017-01-23 12:47 ` Michal Simek
2017-01-23 23:52 ` André Przywara
2017-01-23 8:57 ` Lokesh Vutla
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 05/11] tools: mksunxiboot: allow larger SPL binaries Andre Przywara
2017-01-21 4:24 ` Siarhei Siamashka
2017-01-21 11:17 ` André Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 06/11] sunxi: A64: SPL: allow large SPL binary Andre Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 07/11] sunxi: A64: move SPL stack to end of SRAM A2 Andre Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 08/11] sunxi: SPL: add FIT config selector for Pine64 boards Andre Przywara
2017-01-20 21:35 ` Maxime Ripard
2017-01-20 21:55 ` André Przywara
2017-01-21 2:16 ` [U-Boot] [linux-sunxi] " Icenowy Zheng
2017-01-21 2:16 ` Icenowy Zheng
2017-01-21 4:05 ` [U-Boot] " Siarhei Siamashka
2017-01-21 15:15 ` André Przywara
2017-01-23 17:29 ` Maxime Ripard
2017-01-23 22:55 ` André Przywara
2017-01-26 10:55 ` Maxime Ripard
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 09/11] sunxi: Pine64: defconfig: enable SPL FIT support Andre Przywara
2017-01-20 21:36 ` Maxime Ripard
2017-01-20 21:55 ` André Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 10/11] sunxi: Pine64: add FIT image source Andre Przywara
2017-01-20 1:53 ` [U-Boot] [RFC PATCH 11/11] SPL: SPI: sunxi: add SPL FIT image support Andre Przywara
2017-01-20 21:37 ` Maxime Ripard
2017-01-20 21:58 ` André Przywara
2017-01-20 17:02 ` [U-Boot] [RFC PATCH 00/11] extend FIT loading support (plus Pine64/ATF support) Andrew F. Davis
2017-01-20 17:17 ` Andre Przywara
2017-01-20 17:35 ` Andrew F. Davis
2017-01-20 17:48 ` Andre Przywara
2017-01-20 19:07 ` [U-Boot] [linux-sunxi] " Icenowy Zheng
2017-01-20 22:21 ` [U-Boot] " André Przywara
2017-01-27 21:29 ` Simon Glass
2017-01-28 1:47 ` André Przywara
2017-02-06 15:33 ` Simon Glass
2017-02-06 16:09 ` Andre Przywara
2017-02-06 16:17 ` Andrew F. Davis
2017-02-06 16:32 ` Andre Przywara
2017-02-06 16:37 ` Andrew F. Davis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=58845A62.60408@rock-chips.com \
--to=kever.yang@rock-chips.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.