Unverified Commit 873c2836 authored by Simon Glass's avatar Simon Glass Committed by Nathan Chancellor
Browse files

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: default avatarSimon Glass <sjg@chromium.org>
Reviewed-by: default avatarNicolas Schier <nsc@kernel.org>
Reviewed-by: default avatarAhmad Fatoum <a.fatoum@pengutronix.de>
Reviewed-by: default avatarChen-Yu Tsai <wenst@chromium.org>
Link: https://patch.msgid.link/20260106162738.2605574-4-sjg@chromium.org


Signed-off-by: default avatarNathan Chancellor <nathan@kernel.org>
parent 26428e7d
Loading
Loading
Loading
Loading
+44 −23
Original line number Diff line number Diff line
@@ -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():