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.name = name
|
||||||
self.value = None
|
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):
|
def BytesToValue(self, bytes):
|
||||||
"""Converts a string of bytes into a type and value
|
"""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(' ')]
|
for byte in byte_list_str.strip().split(' ')]
|
||||||
self.type, self.value = self.BytesToValue(''.join(self.bytes))
|
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):
|
class Node(NodeBase):
|
||||||
"""A device tree node
|
"""A device tree node
|
||||||
|
@ -38,48 +38,6 @@ class Prop(PropBase):
|
|||||||
return
|
return
|
||||||
self.type, self.value = self.BytesToValue(bytes)
|
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):
|
class Node(NodeBase):
|
||||||
"""A device tree node
|
"""A device tree node
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user