mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-28 07:30:26 +09:00
dtoc: Output the struct values in a separate function
Reduce the length of output_node() futher by moving the struct-output functionality into a two separate functions. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
221ddc1158
commit
161dac1dd8
@ -652,6 +652,39 @@ class DtbPlatdata():
|
||||
self.buf('};\n')
|
||||
self.buf('\n')
|
||||
|
||||
def _output_prop(self, node, prop):
|
||||
"""Output a line containing the value of a struct member
|
||||
|
||||
Args:
|
||||
node (Node): Node being output
|
||||
prop (Prop): Prop object to output
|
||||
"""
|
||||
if prop.name in PROP_IGNORE_LIST or prop.name[0] == '#':
|
||||
return
|
||||
member_name = conv_name_to_c(prop.name)
|
||||
self.buf('\t%s= ' % tab_to(3, '.' + member_name))
|
||||
|
||||
# Special handling for lists
|
||||
if isinstance(prop.value, list):
|
||||
self._output_list(node, prop)
|
||||
else:
|
||||
self.buf(get_value(prop.type, prop.value))
|
||||
self.buf(',\n')
|
||||
|
||||
def _output_values(self, var_name, struct_name, node):
|
||||
"""Output the definition of a device's struct values
|
||||
|
||||
Args:
|
||||
var_name (str): C name for the node
|
||||
struct_name (str): Name for the dt struct associated with the node
|
||||
node (Node): Node being output
|
||||
"""
|
||||
self.buf('static struct %s%s %s%s = {\n' %
|
||||
(STRUCT_PREFIX, struct_name, VAL_PREFIX, var_name))
|
||||
for pname in sorted(node.props):
|
||||
self._output_prop(node, node.props[pname])
|
||||
self.buf('};\n')
|
||||
|
||||
def output_node(self, node):
|
||||
"""Output the C code for a node
|
||||
|
||||
@ -661,23 +694,8 @@ class DtbPlatdata():
|
||||
struct_name, _ = self.get_normalized_compat_name(node)
|
||||
var_name = conv_name_to_c(node.name)
|
||||
self.buf('/* Node %s index %d */\n' % (node.path, node.idx))
|
||||
self.buf('static struct %s%s %s%s = {\n' %
|
||||
(STRUCT_PREFIX, struct_name, VAL_PREFIX, var_name))
|
||||
for pname in sorted(node.props):
|
||||
prop = node.props[pname]
|
||||
if pname in PROP_IGNORE_LIST or pname[0] == '#':
|
||||
continue
|
||||
member_name = conv_name_to_c(prop.name)
|
||||
self.buf('\t%s= ' % tab_to(3, '.' + member_name))
|
||||
|
||||
# Special handling for lists
|
||||
if isinstance(prop.value, list):
|
||||
self._output_list(node, prop)
|
||||
else:
|
||||
self.buf(get_value(prop.type, prop.value))
|
||||
self.buf(',\n')
|
||||
self.buf('};\n')
|
||||
|
||||
self._output_values(var_name, struct_name, node)
|
||||
self._declare_device(var_name, struct_name, node.parent)
|
||||
|
||||
self.out(''.join(self.get_buf()))
|
||||
|
Loading…
Reference in New Issue
Block a user