mirror of
https://github.com/u-boot/u-boot.git
synced 2025-05-09 03:21:51 +00:00
binman: Add a library to access binman entries
SPL and TPL can access information about binman entries using link-time symbols but this is not available in U-Boot proper. Of course it could be made available, but the intention is to just read the device tree. Add support for this, so that U-Boot can locate entries. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
553cb06887
commit
3c10dc95bd
5 changed files with 114 additions and 0 deletions
48
lib/binman.c
Normal file
48
lib/binman.c
Normal file
|
@ -0,0 +1,48 @@
|
|||
// SPDX-License-Identifier: Intel
|
||||
/*
|
||||
* Access to binman information at runtime
|
||||
*
|
||||
* Copyright 2019 Google LLC
|
||||
* Written by Simon Glass <sjg@chromium.org>
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <binman.h>
|
||||
#include <dm.h>
|
||||
|
||||
struct binman_info {
|
||||
ofnode image;
|
||||
};
|
||||
|
||||
static struct binman_info *binman;
|
||||
|
||||
int binman_entry_find(const char *name, struct binman_entry *entry)
|
||||
{
|
||||
ofnode node;
|
||||
int ret;
|
||||
|
||||
node = ofnode_find_subnode(binman->image, name);
|
||||
if (!ofnode_valid(node))
|
||||
return log_msg_ret("no binman node", -ENOENT);
|
||||
|
||||
ret = ofnode_read_u32(node, "image-pos", &entry->image_pos);
|
||||
if (ret)
|
||||
return log_msg_ret("bad binman node1", ret);
|
||||
ret = ofnode_read_u32(node, "size", &entry->size);
|
||||
if (ret)
|
||||
return log_msg_ret("bad binman node2", ret);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int binman_init(void)
|
||||
{
|
||||
binman = malloc(sizeof(struct binman_info));
|
||||
if (!binman)
|
||||
return log_msg_ret("space for binman", -ENOMEM);
|
||||
binman->image = ofnode_path("/binman");
|
||||
if (!ofnode_valid(binman->image))
|
||||
return log_msg_ret("binman node", -EINVAL);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue