add boot_get_loadables() to load listed images

Added a trimmed down instance of boot_get_<thing>() to satisfy the
minimum requierments of the added feature.  The function follows the
normal patterns set by other boot_get<thing>'s, which should make it a
bit easier to combine them all together into one boot_get_image()
function in a later refactor.

Documentation for the new function can be found in source:
  include/image.h

Signed-off-by: Karl Apsite <Karl.Apsite@dornerworks.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Karl Apsite
2015-05-21 09:52:48 -04:00
committed by Tom Rini
parent ecf8cd6535
commit 84a07dbfd8
5 changed files with 129 additions and 2 deletions

View File

@@ -244,6 +244,7 @@ struct lmb;
#define IH_TYPE_SOCFPGAIMAGE 19 /* Altera SOCFPGA Preloader */
#define IH_TYPE_X86_SETUP 20 /* x86 setup.bin Image */
#define IH_TYPE_LPC32XXIMAGE 21 /* x86 setup.bin Image */
#define IH_TYPE_LOADABLE 22 /* A list of typeless images */
/*
* Compression Types
@@ -455,7 +456,31 @@ ulong genimg_get_image(ulong img_addr);
int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
uint8_t arch, ulong *rd_start, ulong *rd_end);
#endif
/**
* boot_get_loadable - routine to load a list of binaries to memory
* @argc: Ignored Argument
* @argv: Ignored Argument
* @images: pointer to the bootm images structure
* @arch: expected architecture for the image
* @ld_start: Ignored Argument
* @ld_len: Ignored Argument
*
* boot_get_loadable() will take the given FIT configuration, and look
* for a field named "loadables". Loadables, is a list of elements in
* the FIT given as strings. exe:
* loadables = "linux_kernel@1", "fdt@2";
* this function will attempt to parse each string, and load the
* corresponding element from the FIT into memory. Once placed,
* no aditional actions are taken.
*
* @return:
* 0, if only valid images or no images are found
* error code, if an error occurs during fit_image_load
*/
int boot_get_loadable(int argc, char * const argv[], bootm_headers_t *images,
uint8_t arch, const ulong *ld_start, ulong * const ld_len);
#endif /* !USE_HOSTCC */
int boot_get_setup_fit(bootm_headers_t *images, uint8_t arch,
ulong *setup_start, ulong *setup_len);