
On 22. 03. 19 15:39, Jean-Jacques Hiblot wrote:
To allow for dynamic allocation of the area where the image will be loaded, adapt spl_load_fit_image() to be able to get the size of the image without doing to the actual load.
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
common/spl/spl_fit.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-)
diff --git a/common/spl/spl_fit.c b/common/spl/spl_fit.c index db436268cb..90bf458ee8 100644 --- a/common/spl/spl_fit.c +++ b/common/spl/spl_fit.c @@ -164,12 +164,15 @@ static int get_aligned_image_size(struct spl_load_info *info, int data_size,
If the FIT node does not contain a "load" (address) property,
the image gets loaded to the address pointed to by the
load_addr member in this struct.
- @no_load: If true, the data is not loaded from the medium. Used to get
the size of the data in the case of a dynamic allocation of
*/
the memory.
- Return: 0 on success or a negative error number.
static int spl_load_fit_image(struct spl_load_info *info, ulong sector, void *fit, ulong base_offset, int node,
struct spl_image_info *image_info)
struct spl_image_info *image_info, bool no_load)
{ int offset; size_t length; @@ -216,7 +219,20 @@ static int spl_load_fit_image(struct spl_load_info *info, ulong sector,
load_ptr = (load_addr + align_len) & ~align_len; length = len;
} else {
/* Embedded data */
if (fit_image_get_data(fit, node, &data, &length)) {
puts("Cannot get image data/size\n");
return -ENOENT;
}
}
if (no_load && image_info) {
image_info->size = length;
return 0;
}
This is return you size of image in FIT but not size of image after uncompression. There is SPL_GZIP support and that's the size you should work with.
M