diff options
author | Simon Glass <sjg@chromium.org> | 2023-07-18 16:24:03 +0300 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2023-07-20 23:10:58 +0300 |
commit | 55e1278d5eca233421c92122e7fe2361eb010710 (patch) | |
tree | e154c101d2e6609036ee8257c7f049161cc68928 /tools/dtoc/fdt.py | |
parent | 4df457b657b6d0c10031ab4b1eb414e3ea6c3819 (diff) | |
download | u-boot-55e1278d5eca233421c92122e7fe2361eb010710.tar.xz |
dtoc: Allow inserting a list of nodes into another
Provide a way to specify a phandle list of nodes which are to be inserted
into an existing node.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/dtoc/fdt.py')
-rw-r--r-- | tools/dtoc/fdt.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tools/dtoc/fdt.py b/tools/dtoc/fdt.py index f4d84083e4..fd0f3e94f5 100644 --- a/tools/dtoc/fdt.py +++ b/tools/dtoc/fdt.py @@ -748,6 +748,28 @@ class Node: dst.copy_node(node) return dst + def copy_subnodes_from_phandles(self, phandle_list): + """Copy subnodes of a list of nodes into another node + + Args: + phandle_list (list of int): List of phandles of nodes to copy + + For each node in the phandle list, its subnodes and their properties are + copied recursively. Note that it does not copy the node itself, nor its + properties. + """ + # Process in reverse order, since new nodes are inserted at the start of + # the destination's node list. We want them to appear in order of the + # phandle list + for phandle in phandle_list.__reversed__(): + parent = self.GetFdt().LookupPhandle(phandle) + tout.debug(f'adding template {parent.path} to node {self.path}') + for node in parent.subnodes.__reversed__(): + dst = self.copy_node(node) + + tout.debug(f'merge props from {parent.path} to {dst.path}') + self.merge_props(parent) + class Fdt: """Provides simple access to a flat device tree blob using libfdts. |