@@ -831,6 +831,30 @@ class DtbPlatdata(object):
return
+ def test_del_node(self):
+ """Test the support of node deletion'
+
+ This function tests the support of node removal by deleting a specific
+ node name
+ """
+ for n in self._fdt.GetRoot().subnodes:
+ print('Name', n.name)
+ #print('Props', n.props)
+ if n.name == 'board-detect':
+ n.DelNode()
+ #self._fdt.GetRoot().subnodes.remove(n)
+ self._fdt.Scan()
+ print('')
+ for n in self._fdt.GetRoot().subnodes:
+ print('Name', n.name)
+ #print('Props', n.props)
+ if n.name == 'serial':
+ self._fdt.GetRoot().subnodes.remove(n)
+
+ self._fdt.Pack()
+ self._fdt.Flush()
+ self._fdt.Sync()
+
def run_steps(args, dtb_file, config_file, include_disabled, output):
"""Run all the steps of the dtoc tool
@@ -848,6 +872,8 @@ def run_steps(args, dtb_file, config_file, include_disabled, output):
skip_scan = False
if args == ['shrink']:
skip_scan = True
+ if args == ['test_del_node']:
+ skip_scan = True
plat = DtbPlatdata(dtb_file, config_file, include_disabled)
plat.scan_drivers()
@@ -867,6 +893,8 @@ def run_steps(args, dtb_file, config_file, include_disabled, output):
plat.generate_tables()
elif cmd == 'shrink':
plat.shrink()
+ elif cmd == 'test_del_node':
+ plat.test_del_node()
else:
raise ValueError("Unknown command '%s': (use: struct, platdata)" %
cmd)
@@ -502,6 +502,9 @@ class Node:
for prop in prop_list:
prop.Sync(auto_resize)
+ def DelNode(self):
+ fdt_obj = self._fdt._fdt_obj
+ fdt_obj.del_node(self._offset)
class Fdt:
"""Provides simple access to a flat device tree blob using libfdts.
This patch introduce a test for deleting DTB nodes using Python library. Signed-off-by: Walter Lozano <walter.lozano at collabora.com> --- tools/dtoc/dtb_platdata.py | 28 ++++++++++++++++++++++++++++ tools/dtoc/fdt.py | 3 +++ 2 files changed, 31 insertions(+)