diff options
author | Simon Glass | 2023-08-02 09:23:13 -0600 |
---|---|---|
committer | Simon Glass | 2023-08-02 12:05:57 -0600 |
commit | 288ae53cb73605500b7fc01e5919753c878466be (patch) | |
tree | 43e41eb7334175c9b273afdd37128539de2b6051 /tools | |
parent | 0236642212f87c8d589f9e16cc29503b476a45c5 (diff) |
binman: Add a temporary hack for duplicate phandles
Three boards use a phandle in a FIT generator and the maintainer is
away. For now, add a hack to allow this.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/binman/cmdline.py | 2 | ||||
-rw-r--r-- | tools/binman/control.py | 5 | ||||
-rw-r--r-- | tools/dtoc/fdt.py | 12 |
3 files changed, 15 insertions, 4 deletions
diff --git a/tools/binman/cmdline.py b/tools/binman/cmdline.py index 9632ec115e5..39c61c2c032 100644 --- a/tools/binman/cmdline.py +++ b/tools/binman/cmdline.py @@ -126,6 +126,8 @@ controlled by a description in the board device tree.''' help='Comma-separated list of bintools to consider missing (for testing)') build_parser.add_argument('-i', '--image', type=str, action='append', help='Image filename to build (if not specified, build all)') + build_parser.add_argument('--ignore-dup-phandles', action='store_true', + help='Temporary option to ignore duplicate phandles') build_parser.add_argument('-I', '--indir', action='append', help='Add a path to the list of directories to use for input files') build_parser.add_argument('-m', '--map', action='store_true', diff --git a/tools/binman/control.py b/tools/binman/control.py index c6d3205b8c2..45948955812 100644 --- a/tools/binman/control.py +++ b/tools/binman/control.py @@ -22,6 +22,7 @@ from binman import bintool from binman import cbfs_util from binman import elf from binman import entry +from dtoc import fdt from dtoc import fdt_util from u_boot_pylib import command from u_boot_pylib import tools @@ -816,6 +817,10 @@ def Binman(args): cbfs_util.VERBOSE = args.verbosity > 2 state.use_fake_dtb = args.fake_dtb + # Temporary hack + if args.ignore_dup_phandles: # pragma: no cover + fdt.IGNORE_DUP_PHANDLES = True + # Normally we replace the 'u-boot' etype with 'u-boot-expanded', etc. # When running tests this can be disabled using this flag. When not # updating the FDT in image, it is not needed by binman, but we use it diff --git a/tools/dtoc/fdt.py b/tools/dtoc/fdt.py index 5963925146a..0b20d52f313 100644 --- a/tools/dtoc/fdt.py +++ b/tools/dtoc/fdt.py @@ -15,6 +15,9 @@ from libfdt import QUIET_NOTFOUND from u_boot_pylib import tools from u_boot_pylib import tout +# Temporary hack +IGNORE_DUP_PHANDLES = False + # This deals with a device tree, presenting it as an assortment of Node and # Prop objects, representing nodes and properties, respectively. This file # contains the base classes and defines the high-level API. You can use @@ -339,10 +342,11 @@ class Node: if phandle: dup = self._fdt.phandle_to_node.get(phandle) if dup: - raise ValueError( - f'Duplicate phandle {phandle} in nodes {dup.path} and {self.path}') - - self._fdt.phandle_to_node[phandle] = self + if not IGNORE_DUP_PHANDLES: + raise ValueError( + f'Duplicate phandle {phandle} in nodes {dup.path} and {self.path}') + else: + self._fdt.phandle_to_node[phandle] = self offset = fdt_obj.first_subnode(self.Offset(), QUIET_NOTFOUND) while offset >= 0: |