[U-Boot] [PATCH v2] dtoc: make ScanTree recurse into subnodes

Previously, dtoc could only process the top-level nodes which led to device nodes in hierarchical trees to be ignored. E.g. the mmc0 node in the following example would be ignored, as only the soc node was processed:
/ { soc { mmc0 { /* ... */ }; }; };
This introduces a recursive helper method ScanNode, which is used by ScanTree to recursively parse the entire tree hierarchy.
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com --- tools/dtoc/dtoc.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/tools/dtoc/dtoc.py b/tools/dtoc/dtoc.py index 6df7b0d..fe8b0c2 100755 --- a/tools/dtoc/dtoc.py +++ b/tools/dtoc/dtoc.py @@ -170,6 +170,21 @@ class DtbPlatdata: """ self.fdt = fdt_select.FdtScan(self._dtb_fname)
+ def ScanNode(self, root): + for node in root.subnodes: + if 'compatible' in node.props: + status = node.props.get('status') + if (not options.include_disabled and not status or + status.value != 'disabled'): + self._valid_nodes.append(node) + phandle_prop = node.props.get('phandle') + if phandle_prop: + phandle = phandle_prop.GetPhandle() + self._phandle_node[phandle] = node + + # recurse to handle any subnodes + self.ScanNode(node); + def ScanTree(self): """Scan the device tree for useful information
@@ -178,8 +193,10 @@ class DtbPlatdata: _valid_nodes: A list of nodes we wish to consider include in the platform data """ - node_list = [] self._phandle_node = {} + self._valid_nodes = [] + return self.ScanNode(self.fdt.GetRoot()); + for node in self.fdt.GetRoot().subnodes: if 'compatible' in node.props: status = node.props.get('status')

On 22 February 2017 at 11:06, Philipp Tomsich philipp.tomsich@theobroma-systems.com wrote:
Previously, dtoc could only process the top-level nodes which led to device nodes in hierarchical trees to be ignored. E.g. the mmc0 node in the following example would be ignored, as only the soc node was processed:
/ { soc { mmc0 { /* ... */ }; }; };
This introduces a recursive helper method ScanNode, which is used by ScanTree to recursively parse the entire tree hierarchy.
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
tools/dtoc/dtoc.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org

On 22 February 2017 at 19:23, Simon Glass sjg@chromium.org wrote:
On 22 February 2017 at 11:06, Philipp Tomsich philipp.tomsich@theobroma-systems.com wrote:
Previously, dtoc could only process the top-level nodes which led to device nodes in hierarchical trees to be ignored. E.g. the mmc0 node in the following example would be ignored, as only the soc node was processed:
/ { soc { mmc0 { /* ... */ }; }; };
This introduces a recursive helper method ScanNode, which is used by ScanTree to recursively parse the entire tree hierarchy.
Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
tools/dtoc/dtoc.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm, thanks!
participants (2)
-
Philipp Tomsich
-
Simon Glass