mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
binman: Add binman support to spl_ram.c
SPL supports reading U-Boot from a RAM location. At present this is hard-coded to the U-Boot text base address. Use binman to allow this to come from the image file, if binman is used. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
8bee2d251a
commit
dfce1799e7
1 changed files with 15 additions and 4 deletions
|
@ -11,6 +11,8 @@
|
|||
* SPDX-License-Identifier: GPL-2.0+
|
||||
*/
|
||||
#include <common.h>
|
||||
#include <binman_sym.h>
|
||||
#include <mapmem.h>
|
||||
#include <spl.h>
|
||||
#include <libfdt.h>
|
||||
|
||||
|
@ -48,15 +50,24 @@ static int spl_ram_load_image(struct spl_image_info *spl_image,
|
|||
load.read = spl_ram_load_read;
|
||||
spl_load_simple_fit(spl_image, &load, 0, header);
|
||||
} else {
|
||||
ulong u_boot_pos = binman_sym(ulong, u_boot_any, pos);
|
||||
|
||||
debug("Legacy image\n");
|
||||
/*
|
||||
* Get the header. It will point to an address defined by
|
||||
* handoff which will tell where the image located inside
|
||||
* the flash. For now, it will temporary fixed to address
|
||||
* pointed by U-Boot.
|
||||
* the flash.
|
||||
*/
|
||||
header = (struct image_header *)
|
||||
(CONFIG_SYS_TEXT_BASE - sizeof(struct image_header));
|
||||
debug("u_boot_pos = %lx\n", u_boot_pos);
|
||||
if (u_boot_pos == BINMAN_SYM_MISSING) {
|
||||
/*
|
||||
* No binman support or no information. For now, fix it
|
||||
* to the address pointed to by U-Boot.
|
||||
*/
|
||||
u_boot_pos = CONFIG_SYS_TEXT_BASE -
|
||||
sizeof(struct image_header);
|
||||
}
|
||||
header = (struct image_header *)map_sysmem(u_boot_pos, 0);
|
||||
|
||||
spl_parse_image_header(spl_image, header);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue