
Hi Simon,
On Wed, May 13, 2020 at 10:24 PM Simon Glass sjg@chromium.org wrote:
Currently we support reading a file from CBFS given the address of the end of the ROM. Sometimes we only know the start of the CBFS. Add a function to find a file given that.
Signed-off-by: Simon Glass sjg@chromium.org
fs/cbfs/cbfs.c | 13 +++++++++++++ include/cbfs.h | 11 +++++++++++ 2 files changed, 24 insertions(+)
diff --git a/fs/cbfs/cbfs.c b/fs/cbfs/cbfs.c index 76613fa871..1603409a8f 100644 --- a/fs/cbfs/cbfs.c +++ b/fs/cbfs/cbfs.c @@ -413,6 +413,19 @@ int file_cbfs_find_uncached(ulong end_of_rom, const char *name, return find_uncached(&priv, name, start, node); }
+int file_cbfs_find_uncached_base(ulong base, const char *name,
struct cbfs_cachenode *node)
+{
struct cbfs_priv priv;
int ret;
ret = cbfs_load_header_ptr(&priv, base);
if (ret)
return ret;
return find_uncached(&priv, name, (u8 *)base, node);
(void *)base
+}
const char *file_cbfs_name(const struct cbfs_cachenode *file) { cbfs_s.result = CBFS_SUCCESS; diff --git a/include/cbfs.h b/include/cbfs.h index 4dd3c0795d..b1a8d2cad2 100644 --- a/include/cbfs.h +++ b/include/cbfs.h @@ -173,6 +173,17 @@ int cbfs_init_mem(ulong base, ulong size, struct cbfs_priv **privp); int file_cbfs_find_uncached(ulong end_of_rom, const char *name, struct cbfs_cachenode *node);
+/**
- file_cbfs_find_uncached() - Find a file in CBFS without using the heap
file_cbfs_find_uncached_base(), and the description is wrong
- @base: Points to the base of the CBFS
- @name: The name to search for
- @node: Returns the node if found
- @return 0 on success, -ENOENT if not found, -EFAULT on bad header
- */
+int file_cbfs_find_uncached_base(ulong base, const char *name,
struct cbfs_cachenode *node);
/**
- file_cbfs_name() - Get the name of a file in CBFS.
Regards, Bin