Why you are sending me this change? I'm not responsible for binman, have
not asked to be and I'm not going to review it.

On Wednesday 02 August 2023 09:23:13 Simon Glass wrote:
> 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 <s...@chromium.org>
> ---
> 
>  Makefile                |  6 ++++++
>  tools/binman/cmdline.py |  2 ++
>  tools/binman/control.py |  5 +++++
>  tools/dtoc/fdt.py       | 12 ++++++++----
>  4 files changed, 21 insertions(+), 4 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 41f37714f7e4..b8a9ed818a88 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1328,6 +1328,11 @@ u-boot.ldr:    u-boot
>  # Use 'make BINMAN_VERBOSE=3' to set vebosity level
>  default_dt := $(if 
> $(DEVICE_TREE),$(DEVICE_TREE),$(CONFIG_DEFAULT_DEVICE_TREE))
>  
> +# Temporary workaround for Venice boards
> +ifneq 
> ($(CONFIG_TARGET_IMX8MM_VENICE),$(CONFIG_TARGET_IMX8MN_VENICE),$(CONFIG_TARGET_IMX8MP_VENICE),)
> +ignore_dups := --ignore-dup-phandles
> +endif
> +
>  quiet_cmd_binman = BINMAN  $@
>  cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \
>               $(foreach f,$(BINMAN_TOOLPATHS),--toolpath $(f)) \
> @@ -1349,6 +1354,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
> $(BINMAN_DEBUG),-D) \
>               -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
>               -a tpl-dtb=$(CONFIG_TPL_OF_REAL) \
>               -a pre-load-key-path=${PRE_LOAD_KEY_PATH} \
> +             $(ignore_dups) \
>               $(BINMAN_$(@F))
>  
>  OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
> diff --git a/tools/binman/cmdline.py b/tools/binman/cmdline.py
> index 9632ec115e5d..39c61c2c0322 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 c6d3205b8c25..459489558125 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 5963925146a5..0b20d52f3136 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:
> -- 
> 2.41.0.585.gd2178a4bd4-goog
> 

Reply via email to