diff options
author | Simon Glass <sjg@chromium.org> | 2016-07-25 18:59:06 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2016-09-18 21:04:38 -0600 |
commit | c322a850affaf18f3833b3316292c91007c4b5d8 (patch) | |
tree | 385f5b6c8e0debface4164f23ca3c5e9210f7476 /tools/dtoc/fdt.py | |
parent | bc1dea3656e55d91f7a3c1339d53fc9def3bbf31 (diff) | |
download | u-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.py | 41 |
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 |