Skip to content
Snippets Groups Projects
Commit 55bc080e authored by Philipp Tomsich's avatar Philipp Tomsich Committed by Simon Glass
Browse files

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: default avatarPhilipp Tomsich <philipp.tomsich@theobroma-systems.com>
Reviewed-by: default avatarSimon Glass <sjg@chromium.org>
parent b06a381a
No related branches found
No related tags found
Loading
...@@ -172,6 +172,21 @@ class DtbPlatdata: ...@@ -172,6 +172,21 @@ class DtbPlatdata:
""" """
self.fdt = fdt_select.FdtScan(self._dtb_fname) 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): def ScanTree(self):
"""Scan the device tree for useful information """Scan the device tree for useful information
...@@ -180,8 +195,10 @@ class DtbPlatdata: ...@@ -180,8 +195,10 @@ class DtbPlatdata:
_valid_nodes: A list of nodes we wish to consider include in the _valid_nodes: A list of nodes we wish to consider include in the
platform data platform data
""" """
node_list = []
self._phandle_node = {} self._phandle_node = {}
self._valid_nodes = []
return self.ScanNode(self.fdt.GetRoot());
for node in self.fdt.GetRoot().subnodes: for node in self.fdt.GetRoot().subnodes:
if 'compatible' in node.props: if 'compatible' in node.props:
status = node.props.get('status') status = node.props.get('status')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment