summaryrefslogtreecommitdiff
path: root/tools/binman
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2019-07-08 14:25:51 -0600
committerSimon Glass <sjg@chromium.org>2019-07-24 12:54:08 -0700
commit3a9c252583785c3aabce834e8f9a54fa94685ee8 (patch)
treecf22b8d2d4cbc0b6ee10b05de600aab0583137e4 /tools/binman
parentf667e45b1c0a7f21d433ee8f3ec18858d87dd2e5 (diff)
downloadu-boot-3a9c252583785c3aabce834e8f9a54fa94685ee8.tar.gz
binman: Support reading from CBFS entries
CBFS is a bit like a section but with a custom format. Provide the list of entries and the compression type to binman so that it can extract the data from the CBFS, just like any other part of the image. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/binman')
-rw-r--r--tools/binman/cbfs_util.py14
-rw-r--r--tools/binman/etype/cbfs.py7
2 files changed, 21 insertions, 0 deletions
diff --git a/tools/binman/cbfs_util.py b/tools/binman/cbfs_util.py
index 4691be4aee..45e16da0aa 100644
--- a/tools/binman/cbfs_util.py
+++ b/tools/binman/cbfs_util.py
@@ -142,6 +142,20 @@ def find_compress(find_name):
return compress
return None
+def compress_name(compress):
+ """Look up the name of a compression algorithm
+
+ Args:
+ compress: Compression algorithm number to find (COMPRESS_...)
+
+ Returns:
+ Compression algorithm name (string)
+
+ Raises:
+ KeyError if the algorithm number is invalid
+ """
+ return COMPRESS_NAMES[compress]
+
def align_int(val, align):
"""Align a value up to the given alignment
diff --git a/tools/binman/etype/cbfs.py b/tools/binman/etype/cbfs.py
index 953d6f4868..edf2189fd2 100644
--- a/tools/binman/etype/cbfs.py
+++ b/tools/binman/etype/cbfs.py
@@ -238,6 +238,10 @@ class Entry_cbfs(Entry):
entry.AddMissingProperties()
if entry._cbfs_compress:
state.AddZeroProp(entry._node, 'uncomp-size')
+ # Store the 'compress' property, since we don't look at
+ # 'cbfs-compress' in Entry.ReadData()
+ state.AddString(entry._node, 'compress',
+ cbfs_util.compress_name(entry._cbfs_compress))
def SetCalculatedProperties(self):
"""Set the value of device-tree properties calculated by binman"""
@@ -254,3 +258,6 @@ class Entry_cbfs(Entry):
Entry.ListEntries(self, entries, indent)
for entry in self._cbfs_entries.values():
entry.ListEntries(entries, indent + 1)
+
+ def GetEntries(self):
+ return self._cbfs_entries