scripts/make_fit: Move dtb processing into a function

Since build_fit() is getting quite long, move the dtb processing into a
separate function.

Change the double quotes in the write() call to single, to match the
rest of the script.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Nicolas Schier <nsc@kernel.org>
Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Link: https://patch.msgid.link/20260106162738.2605574-4-sjg@chromium.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
This commit is contained in:
Simon Glass 2026-01-06 09:27:33 -07:00 committed by Nathan Chancellor
parent 26428e7dd6
commit 873c283698
No known key found for this signature in database
GPG key ID: 1D6B269171C01A96

View file

@ -277,6 +277,47 @@ def process_dtb(fname, args):
return (model, compat, files)
def _process_dtbs(args, fsw, entries, fdts):
"""Process all DTB files and add them to the FIT
Args:
args: Program arguments
fsw: FIT writer object
entries: List to append entries to
fdts: Dictionary of processed DTBs
Returns:
tuple:
Number of files processed
Total size of files processed
"""
seq = 0
size = 0
for fname in args.dtbs:
# Ignore non-DTB (*.dtb) files
if os.path.splitext(fname)[1] != '.dtb':
continue
try:
(model, compat, files) = process_dtb(fname, args)
except Exception as e:
sys.stderr.write(f'Error processing {fname}:\n')
raise e
for fn in files:
if fn not in fdts:
seq += 1
size += os.path.getsize(fn)
output_dtb(fsw, seq, fn, args.arch, args.compress)
fdts[fn] = seq
files_seq = [fdts[fn] for fn in files]
entries.append([model, compat, files_seq])
return seq, size
def build_fit(args):
"""Build the FIT from the provided files and arguments
@ -289,7 +330,6 @@ def build_fit(args):
int: Number of configurations generated
size: Total uncompressed size of data
"""
seq = 0
size = 0
fsw = libfdt.FdtSw()
setup_fit(fsw, args.name)
@ -310,34 +350,15 @@ def build_fit(args):
size += len(data)
write_ramdisk(fsw, data, args)
for fname in args.dtbs:
# Ignore non-DTB (*.dtb) files
if os.path.splitext(fname)[1] != '.dtb':
continue
try:
(model, compat, files) = process_dtb(fname, args)
except Exception as e:
sys.stderr.write(f"Error processing {fname}:\n")
raise e
for fn in files:
if fn not in fdts:
seq += 1
size += os.path.getsize(fn)
output_dtb(fsw, seq, fn, args.arch, args.compress)
fdts[fn] = seq
files_seq = [fdts[fn] for fn in files]
entries.append([model, compat, files_seq])
count, fdt_size = _process_dtbs(args, fsw, entries, fdts)
size += fdt_size
finish_fit(fsw, entries, bool(args.ramdisk))
# Include the kernel itself in the returned file count
fdt = fsw.as_fdt()
fdt.pack()
return fdt.as_bytearray(), seq + 1 + bool(args.ramdisk), size
return fdt.as_bytearray(), count + 1 + bool(args.ramdisk), size
def run_make_fit():