|
@@ -211,15 +211,21 @@ class DtbPlatdata(object):
|
|
|
Number of argument cells is this is a phandle, else None
|
|
|
"""
|
|
|
if prop.name in ['clocks']:
|
|
|
+ if not isinstance(prop.value, list):
|
|
|
+ prop.value = [prop.value]
|
|
|
val = prop.value
|
|
|
- if not isinstance(val, list):
|
|
|
- val = [val]
|
|
|
i = 0
|
|
|
|
|
|
max_args = 0
|
|
|
args = []
|
|
|
while i < len(val):
|
|
|
phandle = fdt_util.fdt32_to_cpu(val[i])
|
|
|
+ # If we get to the end of the list, stop. This can happen
|
|
|
+ # since some nodes have more phandles in the list than others,
|
|
|
+ # but we allocate enough space for the largest list. So those
|
|
|
+ # nodes with shorter lists end up with zeroes at the end.
|
|
|
+ if not phandle:
|
|
|
+ break
|
|
|
target = self._fdt.phandle_to_node.get(phandle)
|
|
|
if not target:
|
|
|
raise ValueError("Cannot parse '%s' in node '%s'" %
|
|
@@ -400,8 +406,6 @@ class DtbPlatdata(object):
|
|
|
continue
|
|
|
info = self.get_phandle_argc(prop, node.name)
|
|
|
if info:
|
|
|
- if not isinstance(prop.value, list):
|
|
|
- prop.value = [prop.value]
|
|
|
# Process the list as pairs of (phandle, id)
|
|
|
pos = 0
|
|
|
for args in info.args:
|