From patchwork Wed Jul 8 03:32:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 240964 List-Id: U-Boot discussion From: sjg at chromium.org (Simon Glass) Date: Tue, 7 Jul 2020 21:32:03 -0600 Subject: [PATCH v2 02/44] binman: Refactor binman_entry_find() to allow other nodes In-Reply-To: <20200708033246.2626378-1-sjg@chromium.org> References: <20200708033246.2626378-1-sjg@chromium.org> Message-ID: <20200708033246.2626378-3-sjg@chromium.org> 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 Reviewed-by: Bin Meng --- Changes in v2: - Rename binman_entry_find_() lib/binman.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/lib/binman.c b/lib/binman.c index dc3a880882..9098a1dffa 100644 --- a/lib/binman.c +++ b/lib/binman.c @@ -29,25 +29,32 @@ struct binman_info { 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; - node = ofnode_find_subnode(binman->image, name); 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); 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); if (ret) - return log_msg_ret("bad binman node2", ret); + return log_msg_ret("size", ret); 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) { binman->rom_offset = rom_offset;