dtoc: Move a few more common functions into fdt.py

Some functions have the same code in the subclasses. Move these into the
superclass to avoid duplication.

Signed-off-by: Simon Glass <sjg@chromium.org>
master
Simon Glass 8 years ago
parent c322a850af
commit f7a2aeeeb8
  1. 57
      tools/dtoc/fdt.py
  2. 16
      tools/dtoc/fdt_fallback.py
  3. 16
      tools/dtoc/fdt_normal.py

@ -164,6 +164,26 @@ class NodeBase:
self.subnodes = []
self.props = {}
def _FindNode(self, name):
"""Find a node given its name
Args:
name: Node name to look for
Returns:
Node object if found, else None
"""
for subnode in self.subnodes:
if subnode.name == name:
return subnode
return None
def Scan(self):
"""Scan the subnodes of a node
This should be implemented by subclasses
"""
raise NotImplementedError()
class Fdt:
"""Provides simple access to a flat device tree blob.
@ -173,3 +193,40 @@ class Fdt:
"""
def __init__(self, fname):
self._fname = fname
def Scan(self, root='/'):
"""Scan a device tree, building up a tree of Node objects
This fills in the self._root property
Args:
root: Ignored
TODO(sjg@chromium.org): Implement the 'root' parameter
"""
self._root = self.Node(self, 0, '/', '/')
self._root.Scan()
def GetRoot(self):
"""Get the root Node of the device tree
Returns:
The root Node object
"""
return self._root
def GetNode(self, path):
"""Look up a node from its path
Args:
path: Path to look up, e.g. '/microcode/update@0'
Returns:
Node object, or None if not found
"""
node = self._root
for part in path.split('/')[1:]:
node = node._FindNode(part)
if not node:
return None
return node

@ -81,22 +81,6 @@ class FdtFallback(Fdt):
def __init__(self, fname):
Fdt.__init__(self, fname)
def Scan(self):
"""Scan a device tree, building up a tree of Node objects
This fills in the self._root property
"""
self._root = Node(self, 0, '/', '/')
self._root.Scan()
def GetRoot(self):
"""Get the root Node of the device tree
Returns:
The root Node object
"""
return self._root
def GetSubNodes(self, node):
"""Returns a list of sub-nodes of a given node

@ -94,22 +94,6 @@ class FdtNormal(Fdt):
"""
return self._fdt
def Scan(self):
"""Scan a device tree, building up a tree of Node objects
This fills in the self._root property
"""
self._root = Node(self, 0, '/', '/')
self._root.Scan()
def GetRoot(self):
"""Get the root Node of the device tree
Returns:
The root Node object
"""
return self._root
def GetProps(self, node):
"""Get all properties from a node.

Loading…
Cancel
Save