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>
This commit is contained in:
Simon Glass 2019-07-08 14:25:51 -06:00
parent f667e45b1c
commit 3a9c252583
2 changed files with 21 additions and 0 deletions

View File

@ -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

View File

@ -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