summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-08-02 18:23:13 +0300
committerSimon Glass <sjg@chromium.org>2023-08-02 21:05:57 +0300
commit288ae53cb73605500b7fc01e5919753c878466be (patch)
tree43e41eb7334175c9b273afdd37128539de2b6051 /tools
parent0236642212f87c8d589f9e16cc29503b476a45c5 (diff)
downloadu-boot-288ae53cb73605500b7fc01e5919753c878466be.tar.xz
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.py2
-rw-r--r--tools/binman/control.py5
-rw-r--r--tools/dtoc/fdt.py12
3 files changed, 15 insertions, 4 deletions
diff --git a/tools/binman/cmdline.py b/tools/binman/cmdline.py
index 9632ec115e..39c61c2c03 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 c6d3205b8c..4594895581 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 5963925146..0b20d52f31 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: