1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-25 04:21:18 +02:00

binman: Refactor binman_entry_find() to allow other nodes

At present we can only read from a top-level binman node entry. Refactor
this function to produce a second local function which supports reading
from any node.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass
2020-07-07 21:32:03 -06:00
committed by Bin Meng
parent db6fb7d152
commit 956a9082d3

View File

@@ -29,25 +29,32 @@ struct binman_info {
static struct binman_info *binman; static struct binman_info *binman;
int binman_entry_find(const char *name, struct binman_entry *entry) static int binman_entry_find_internal(ofnode node, const char *name,
struct binman_entry *entry)
{ {
ofnode node;
int ret; int ret;
node = ofnode_find_subnode(binman->image, name);
if (!ofnode_valid(node)) if (!ofnode_valid(node))
return log_msg_ret("no binman node", -ENOENT); node = binman->image;
node = ofnode_find_subnode(node, name);
if (!ofnode_valid(node))
return log_msg_ret("node", -ENOENT);
ret = ofnode_read_u32(node, "image-pos", &entry->image_pos); ret = ofnode_read_u32(node, "image-pos", &entry->image_pos);
if (ret) if (ret)
return log_msg_ret("bad binman node1", ret); return log_msg_ret("import-pos", ret);
ret = ofnode_read_u32(node, "size", &entry->size); ret = ofnode_read_u32(node, "size", &entry->size);
if (ret) if (ret)
return log_msg_ret("bad binman node2", ret); return log_msg_ret("size", ret);
return 0; return 0;
} }
int binman_entry_find(const char *name, struct binman_entry *entry)
{
return binman_entry_find_internal(binman->image, name, entry);
}
void binman_set_rom_offset(int rom_offset) void binman_set_rom_offset(int rom_offset)
{ {
binman->rom_offset = rom_offset; binman->rom_offset = rom_offset;