]> git.dujemihanovic.xyz Git - u-boot.git/commit
binman: Add support for alternative FDTs
authorSimon Glass <sjg@chromium.org>
Sat, 20 Jul 2024 10:49:45 +0000 (11:49 +0100)
committerSimon Glass <sjg@chromium.org>
Mon, 29 Jul 2024 14:42:18 +0000 (08:42 -0600)
commit7081a94ea46df42dcef77c902d16c38685739719
tree2fe448b329d47f66d2c5db6b0020dca0b75ebc29
parentdaed9b42b42cee1d0ea33a568707fb9eef423f9f
binman: Add support for alternative FDTs

FIT provides a way to select between different devicetree blobs
depending on the model. This works fine for U-Boot proper and allows SPL
to select the correct blob for the current board at runtime. The boot
sequence (SPL->U-Boot proper) is therefore covered by the existing
feature set.

The first boot phase (typically TPL) cannot use FIT since SoC boot ROMs
don't currently support it. Therefore the TPL image must be specific to
each model it boots on.

To support booting on mulitple models, binman must therefore produce a
separate TPL image for each model, even if the images for the rest of
the phases are identical.

TPL needs to be packaged as an executable binary along with a reduced
devicetree. When multiple models are supported, a reduced devicetree
must be provided for each model.

U-Boot's build system is designed to build a single devicetree for SPL
builds, so does not support this requirement.

Add a new 'alternatives' feature to Binman, allowing it to automatically
subset a devicetree to produce the reduced devicetree for a particular
phase for each supported model. With this it is possible to produce a
separate TPL image for each of the models. The correct one can then be
loaded onto a board, along with the common FIT image(s).

Signed-off-by: Simon Glass <sjg@chromium.org>
14 files changed:
tools/binman/btool/fdtgrep.py
tools/binman/control.py
tools/binman/entries.rst
tools/binman/entry.py
tools/binman/etype/alternates_fdt.py [new file with mode: 0644]
tools/binman/ftest.py
tools/binman/image.py
tools/binman/test/328_alternates_fdt.dts [new file with mode: 0644]
tools/binman/test/329_alternates_fdtgrep.dts [new file with mode: 0644]
tools/binman/test/330_alternates_vpl.dts [new file with mode: 0644]
tools/binman/test/331_alternates_spl.dts [new file with mode: 0644]
tools/binman/test/332_alternates_inval.dts [new file with mode: 0644]
tools/binman/test/alt_dts/model1.dts [new file with mode: 0644]
tools/binman/test/alt_dts/model2.dts [new file with mode: 0644]