|
|
|
@ -12,12 +12,7 @@ import sys |
|
|
|
|
import fdt |
|
|
|
|
from fdt import Fdt, NodeBase, PropBase |
|
|
|
|
import fdt_util |
|
|
|
|
try: |
|
|
|
|
import libfdt |
|
|
|
|
legacy = False |
|
|
|
|
except ImportError: |
|
|
|
|
import libfdt_legacy as libfdt |
|
|
|
|
legacy = True |
|
|
|
|
import libfdt |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# This deals with a device tree, presenting it as a list of Node and Prop |
|
|
|
@ -92,10 +87,7 @@ class Node(NodeBase): |
|
|
|
|
offset = libfdt.fdt_first_subnode(self._fdt.GetFdt(), self.Offset()) |
|
|
|
|
while offset >= 0: |
|
|
|
|
sep = '' if self.path[-1] == '/' else '/' |
|
|
|
|
if legacy: |
|
|
|
|
name = libfdt.Name(self._fdt.GetFdt(), offset) |
|
|
|
|
else: |
|
|
|
|
name = self._fdt._fdt_obj.get_name(offset) |
|
|
|
|
name = self._fdt._fdt_obj.get_name(offset) |
|
|
|
|
path = self.path + sep + name |
|
|
|
|
node = Node(self._fdt, offset, name, path) |
|
|
|
|
self.subnodes.append(node) |
|
|
|
@ -148,8 +140,7 @@ class FdtNormal(Fdt): |
|
|
|
|
|
|
|
|
|
with open(self._fname) as fd: |
|
|
|
|
self._fdt = bytearray(fd.read()) |
|
|
|
|
if not legacy: |
|
|
|
|
self._fdt_obj = libfdt.Fdt(self._fdt) |
|
|
|
|
self._fdt_obj = libfdt.Fdt(self._fdt) |
|
|
|
|
|
|
|
|
|
def GetFdt(self): |
|
|
|
|
"""Get the contents of the FDT |
|
|
|
@ -186,18 +177,11 @@ class FdtNormal(Fdt): |
|
|
|
|
props_dict = {} |
|
|
|
|
poffset = libfdt.fdt_first_property_offset(self._fdt, node._offset) |
|
|
|
|
while poffset >= 0: |
|
|
|
|
if legacy: |
|
|
|
|
dprop, plen = libfdt.fdt_get_property_by_offset(self._fdt, |
|
|
|
|
poffset) |
|
|
|
|
prop = Prop(node, poffset, |
|
|
|
|
libfdt.String(self._fdt, dprop.nameoff), |
|
|
|
|
libfdt.Data(dprop)) |
|
|
|
|
else: |
|
|
|
|
p = self._fdt_obj.get_property_by_offset(poffset) |
|
|
|
|
prop = Prop(node, poffset, p.name, p.value) |
|
|
|
|
props_dict[prop.name] = prop |
|
|
|
|
|
|
|
|
|
poffset = libfdt.fdt_next_property_offset(self._fdt, poffset) |
|
|
|
|
p = self._fdt_obj.get_property_by_offset(poffset) |
|
|
|
|
prop = Prop(node, poffset, p.name, p.value) |
|
|
|
|
props_dict[prop.name] = prop |
|
|
|
|
|
|
|
|
|
poffset = libfdt.fdt_next_property_offset(self._fdt, poffset) |
|
|
|
|
return props_dict |
|
|
|
|
|
|
|
|
|
def Invalidate(self): |
|
|
|
|