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>
This commit is contained in:
parent
bc1dea3656
commit
c322a850af
@ -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
|
||||
|
||||
|
@ -37,47 +37,6 @@ class Prop(PropBase):
|
||||
for byte in byte_list_str.strip().split(' ')]
|
||||
self.type, self.value = self.BytesToValue(''.join(self.bytes))
|
||||
|
||||
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 = newprop.value
|
||||
|
||||
if type(self.value) == list and len(newprop.value) > len(self.value):
|
||||
val = fdt_util.GetEmpty(self.type)
|
||||
while len(self.value) < len(newprop.value):
|
||||
self.value.append(val)
|
||||
|
||||
|
||||
class Node(NodeBase):
|
||||
"""A device tree node
|
||||
|
@ -38,48 +38,6 @@ class Prop(PropBase):
|
||||
return
|
||||
self.type, self.value = self.BytesToValue(bytes)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
class Node(NodeBase):
|
||||
"""A device tree node
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user