summaryrefslogtreecommitdiff
path: root/tools/dtoc/fdt.py
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2016-07-25 18:59:06 -0600
committerSimon Glass <sjg@chromium.org>2016-09-18 21:04:38 -0600
commitc322a850affaf18f3833b3316292c91007c4b5d8 (patch)
tree385f5b6c8e0debface4164f23ca3c5e9210f7476 /tools/dtoc/fdt.py
parentbc1dea3656e55d91f7a3c1339d53fc9def3bbf31 (diff)
downloadu-boot-c322a850affaf18f3833b3316292c91007c4b5d8.tar.gz
u-boot-c322a850affaf18f3833b3316292c91007c4b5d8.tar.bz2
u-boot-c322a850affaf18f3833b3316292c91007c4b5d8.zip
dtoc: Move Widen() and GetPhandle() into the base class
These functions are identical in both subclasses. Move them into the base class. Note: In fact there is a bug in one version, which was fixed by this patch: https://patchwork.ozlabs.org/patch/651697/ Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'tools/dtoc/fdt.py')
-rw-r--r--tools/dtoc/fdt.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/tools/dtoc/fdt.py b/tools/dtoc/fdt.py
index 329d03cc6b..964ef7cbb4 100644
--- a/tools/dtoc/fdt.py
+++ b/tools/dtoc/fdt.py
@@ -40,6 +40,47 @@ class PropBase:
self.name = name
self.value = None
+ def GetPhandle(self):
+ """Get a (single) phandle value from a property
+
+ Gets the phandle valuie from a property and returns it as an integer
+ """
+ return fdt_util.fdt32_to_cpu(self.value[:4])
+
+ def Widen(self, newprop):
+ """Figure out which property type is more general
+
+ Given a current property and a new property, this function returns the
+ one that is less specific as to type. The less specific property will
+ be ble to represent the data in the more specific property. This is
+ used for things like:
+
+ node1 {
+ compatible = "fred";
+ value = <1>;
+ };
+ node1 {
+ compatible = "fred";
+ value = <1 2>;
+ };
+
+ He we want to use an int array for 'value'. The first property
+ suggests that a single int is enough, but the second one shows that
+ it is not. Calling this function with these two propertes would
+ update the current property to be like the second, since it is less
+ specific.
+ """
+ if newprop.type < self.type:
+ self.type = newprop.type
+
+ if type(newprop.value) == list and type(self.value) != list:
+ self.value = [self.value]
+
+ if type(self.value) == list and len(newprop.value) > len(self.value):
+ val = self.GetEmpty(self.type)
+ while len(self.value) < len(newprop.value):
+ self.value.append(val)
+
def BytesToValue(self, bytes):
"""Converts a string of bytes into a type and value