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:
19
lib/binman.c
19
lib/binman.c
@@ -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;
|
||||||
|
Reference in New Issue
Block a user