aboutsummaryrefslogtreecommitdiff
path: root/tools/binman/control.py
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2018-09-14 04:57:20 -0600
committerSimon Glass <sjg@chromium.org>2018-09-28 11:09:01 -0600
commit2a72cc72ca29fb14a61dd50a60ffcd096a0be317 (patch)
treef0055eaf05007ba0a97da8ab7a0ff54335e7af9c /tools/binman/control.py
parentc55a50f558f13c6c018c0e5cc0f0d765711a3828 (diff)
downloadu-boot-2a72cc72ca29fb14a61dd50a60ffcd096a0be317.zip
u-boot-2a72cc72ca29fb14a61dd50a60ffcd096a0be317.tar.gz
u-boot-2a72cc72ca29fb14a61dd50a60ffcd096a0be317.tar.bz2
binman: Move state logic into the state module
Rather than reaching into this module from control, move the code that needs this info into state. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/binman/control.py')
-rw-r--r--tools/binman/control.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/tools/binman/control.py b/tools/binman/control.py
index 00dcb8a..fd8b779 100644
--- a/tools/binman/control.py
+++ b/tools/binman/control.py
@@ -121,8 +121,6 @@ def Binman(options, args):
outfd.write(infd.read())
dtb = fdt.FdtScan(fname)
- # Note the file so that GetFdt() can find it
- state.fdt_files['u-boot.dtb'] = dtb
node = _FindBinmanNode(dtb)
if not node:
raise ValueError("Device tree '%s' does not have a 'binman' "
@@ -139,6 +137,8 @@ def Binman(options, args):
if skip:
print 'Skipping images: %s\n' % ', '.join(skip)
+ state.Prepare(dtb)
+
# Prepare the device tree by making sure that any missing
# properties are added (e.g. 'pos' and 'size'). The values of these
# may not be correct yet, but we add placeholders so that the
@@ -151,9 +151,10 @@ def Binman(options, args):
image.AddMissingProperties()
image.ProcessFdt(dtb)
- dtb.Sync(auto_resize=True)
- dtb.Pack()
- dtb.Flush()
+ for dtb_item in state.GetFdts():
+ dtb_item.Sync(auto_resize=True)
+ dtb_item.Pack()
+ dtb_item.Flush()
for image in images.values():
# Perform all steps for this image, including checking and
@@ -168,14 +169,18 @@ def Binman(options, args):
image.SetImagePos()
if options.update_fdt:
image.SetCalculatedProperties()
- dtb.Sync()
+ for dtb_item in state.GetFdts():
+ dtb_item.Sync()
image.ProcessEntryContents()
image.WriteSymbols()
image.BuildImage()
if options.map:
image.WriteMap()
- with open(fname, 'wb') as outfd:
- outfd.write(dtb.GetContents())
+
+ # Write the updated FDTs to our output files
+ for dtb_item in state.GetFdts():
+ tools.WriteFile(dtb_item._fname, dtb_item.GetContents())
+
finally:
tools.FinaliseOutputDir()
finally: