mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-28 09:31:32 +00:00
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>
This commit is contained in:
parent
c322a850af
commit
f7a2aeeeb8
3 changed files with 57 additions and 32 deletions
|
@ -164,6 +164,26 @@ class NodeBase:
|
||||||
self.subnodes = []
|
self.subnodes = []
|
||||||
self.props = {}
|
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:
|
class Fdt:
|
||||||
"""Provides simple access to a flat device tree blob.
|
"""Provides simple access to a flat device tree blob.
|
||||||
|
|
||||||
|
@ -173,3 +193,40 @@ class Fdt:
|
||||||
"""
|
"""
|
||||||
def __init__(self, fname):
|
def __init__(self, fname):
|
||||||
self._fname = 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):
|
def __init__(self, fname):
|
||||||
Fdt.__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):
|
def GetSubNodes(self, node):
|
||||||
"""Returns a list of sub-nodes of a given node
|
"""Returns a list of sub-nodes of a given node
|
||||||
|
|
||||||
|
|
|
@ -94,22 +94,6 @@ class FdtNormal(Fdt):
|
||||||
"""
|
"""
|
||||||
return self._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):
|
def GetProps(self, node):
|
||||||
"""Get all properties from a node.
|
"""Get all properties from a node.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue