提交 babdbde6 编写于 作者: S Simon Glass

dtoc: Support finding the offset of a property

Add a way to find the byte offset of a property within the device tree. This
is only supported with the normal libfdt implementation since fdtget does
not provide this information.
Signed-off-by: NSimon Glass <sjg@chromium.org>
上级 da5f7499
......@@ -108,3 +108,6 @@ int fdt_delprop(void *fdt, int nodeoffset, const char *name);
const char *fdt_strerror(int errval);
int fdt_pack(void *fdt);
int fdt_totalsize(const void *fdt);
int fdt_off_dt_struct(const void *fdt);
......@@ -144,6 +144,17 @@ class PropBase:
else:
return True
def GetOffset(self):
"""Get the offset of a property
This can be implemented by subclasses.
Returns:
The offset of the property (struct fdt_property) within the
file, or None if not known.
"""
return None
class NodeBase:
"""A device tree node
......
......@@ -43,6 +43,14 @@ class Prop(PropBase):
return
self.type, self.value = self.BytesToValue(bytes)
def GetOffset(self):
"""Get the offset of a property
Returns:
The offset of the property (struct fdt_property) within the file
"""
return self._node._fdt.GetStructOffset(self._offset)
class Node(NodeBase):
"""A device tree node
......@@ -193,6 +201,16 @@ class FdtNormal(Fdt):
"""Refresh the offset cache"""
self._root.Refresh(0)
def GetStructOffset(self, offset):
"""Get the file offset of a given struct offset
Args:
offset: Offset within the 'struct' region of the device tree
Returns:
Position of @offset within the device tree binary
"""
return libfdt.fdt_off_dt_struct(self._fdt) + offset
@classmethod
def Node(self, fdt, offset, name, path):
"""Create a new node
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册