mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-18 13:11:31 +00:00
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: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
da5f74998b
commit
babdbde68f
3 changed files with 32 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue