Browse Source

pylibfdt: Add support for fdt_subnode_offset()

Add this into the class to simplify use of this function.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
Simon Glass 8 years ago committed by David Gibson
parent
commit
5bed86aee9
  1. 17
      pylibfdt/libfdt.i
  2. 12
      tests/pylibfdt_tests.py

17
pylibfdt/libfdt.i

@ -174,6 +174,23 @@ class Fdt: @@ -174,6 +174,23 @@ class Fdt:
self._fdt = bytearray(data)
check_err(fdt_check_header(self._fdt));

def subnode_offset(self, parentoffset, name, quiet=()):
"""Get the offset of a named subnode

Args:
parentoffset: Offset of the parent node to check
name: Name of the required subnode, e.g. 'subnode@1'
quiet: Errors to ignore (empty to raise on all errors)

Returns:
The node offset of the found node, if any

Raises
FdtException if there is no node with that name, or other error
"""
return check_err(fdt_subnode_offset(self._fdt, parentoffset, name),
quiet)

def path_offset(self, path, quiet=()):
"""Get the offset for a given path


12
tests/pylibfdt_tests.py

@ -118,6 +118,18 @@ class PyLibfdtTests(unittest.TestCase): @@ -118,6 +118,18 @@ class PyLibfdtTests(unittest.TestCase):
fdt = libfdt.Fdt('a string')
self.assertEquals(e.exception.err, -libfdt.BADMAGIC)

def testSubnodeOffset(self):
"""check that we can locate a subnode by name"""
node1 = self.fdt.path_offset('/subnode@1')
self.assertEquals(self.fdt.subnode_offset(0, 'subnode@1'), node1)

with self.assertRaises(FdtException) as e:
self.fdt.subnode_offset(0, 'missing')
self.assertEquals(e.exception.err, -libfdt.NOTFOUND)

node2 = self.fdt.path_offset('/subnode@1/subsubnode')
self.assertEquals(self.fdt.subnode_offset(node1, 'subsubnode'), node2)

def testPathOffset(self):
"""Check that we can find the offset of a node"""
self.assertEquals(self.fdt.path_offset('/'), 0)

Loading…
Cancel
Save