Revert "scripts: gen_defines: re-work write_bus() with augmented nodes"
This reverts commit 3939556fc3
.
Reverted as the changes to gen_defines.py break things.
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This commit is contained in:
parent
22342bec9d
commit
98ae26f689
1 changed files with 84 additions and 15 deletions
|
@ -730,18 +730,8 @@ def write_bus(node):
|
||||||
if node.bus_node.label is None:
|
if node.bus_node.label is None:
|
||||||
err(f"missing 'label' property on bus node {node.bus_node!r}")
|
err(f"missing 'label' property on bus node {node.bus_node!r}")
|
||||||
|
|
||||||
primary_macro = None
|
# #define DT_<DEV-IDENT>_BUS_NAME <BUS-LABEL>
|
||||||
def write_bus_node_for_ident(node, ident):
|
out_node_s(node, "BUS_NAME", str2ident(node.bus_node.label))
|
||||||
# #define DT_<IDENT>_BUS_NAME <BUS-LABEL>
|
|
||||||
|
|
||||||
nonlocal primary_macro
|
|
||||||
if primary_macro is None:
|
|
||||||
primary_macro = out(f"{ident}_BUS_NAME",
|
|
||||||
quote_str(str2ident(node.bus_node.label)))
|
|
||||||
else:
|
|
||||||
out(f"{ident}_BUS_NAME", primary_macro)
|
|
||||||
|
|
||||||
for_each_ident(node, write_bus_node_for_ident)
|
|
||||||
|
|
||||||
for compat in node.compats:
|
for compat in node.compats:
|
||||||
# #define DT_<COMPAT>_BUS_<BUS-TYPE> 1
|
# #define DT_<COMPAT>_BUS_<BUS-TYPE> 1
|
||||||
|
@ -785,6 +775,45 @@ def node_ident(node):
|
||||||
return ident
|
return ident
|
||||||
|
|
||||||
|
|
||||||
|
def node_aliases(node):
|
||||||
|
# Returns a list of aliases for 'node', used e.g. when building macro names
|
||||||
|
|
||||||
|
return node_path_aliases(node) + node_instance_aliases(node)
|
||||||
|
|
||||||
|
|
||||||
|
def node_path_aliases(node):
|
||||||
|
# Returns a list of aliases for 'node', based on the aliases registered for
|
||||||
|
# it in the /aliases node. Used e.g. when building macro names.
|
||||||
|
|
||||||
|
if node.matching_compat is None:
|
||||||
|
return []
|
||||||
|
|
||||||
|
compat_s = str2ident(node.matching_compat)
|
||||||
|
|
||||||
|
aliases = []
|
||||||
|
for alias in node.aliases:
|
||||||
|
aliases.append(f"ALIAS_{str2ident(alias)}")
|
||||||
|
# TODO: See if we can remove or deprecate this form
|
||||||
|
aliases.append(f"{compat_s}_{str2ident(alias)}")
|
||||||
|
|
||||||
|
return aliases
|
||||||
|
|
||||||
|
|
||||||
|
def node_instance_aliases(node):
|
||||||
|
# Returns a list of aliases for 'node', based on the compatible string and
|
||||||
|
# the instance number (each node with a particular compatible gets its own
|
||||||
|
# instance number, starting from zero).
|
||||||
|
#
|
||||||
|
# This is a list since a node can have multiple 'compatible' strings, each
|
||||||
|
# with their own instance number.
|
||||||
|
|
||||||
|
res = []
|
||||||
|
for compat in node.compats:
|
||||||
|
instance_no = node.edt.compat2enabled[compat].index(node)
|
||||||
|
res.append(f"INST_{instance_no}_{str2ident(compat)}")
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
def write_addr_size(edt, prop_name, prefix):
|
def write_addr_size(edt, prop_name, prefix):
|
||||||
# Writes <prefix>_BASE_ADDRESS and <prefix>_SIZE for the node pointed at by
|
# Writes <prefix>_BASE_ADDRESS and <prefix>_SIZE for the node pointed at by
|
||||||
# the /chosen property named 'prop_name', if it exists
|
# the /chosen property named 'prop_name', if it exists
|
||||||
|
@ -1101,6 +1130,47 @@ def str2ident(s):
|
||||||
.upper()
|
.upper()
|
||||||
|
|
||||||
|
|
||||||
|
def out_node(node, ident, val, name_alias=None, deprecation_msg=None):
|
||||||
|
# Writes a
|
||||||
|
#
|
||||||
|
# <node prefix>_<ident> = <val>
|
||||||
|
#
|
||||||
|
# assignment, along with a set of
|
||||||
|
#
|
||||||
|
# <node alias>_<ident>
|
||||||
|
#
|
||||||
|
# aliases, for each path/instance alias for the node. If 'name_alias' (a
|
||||||
|
# string) is passed, then these additional aliases are generated:
|
||||||
|
#
|
||||||
|
# <node prefix>_<name alias>
|
||||||
|
# <node alias>_<name alias> (for each node alias)
|
||||||
|
#
|
||||||
|
# 'name_alias' is used for reg-names and the like.
|
||||||
|
#
|
||||||
|
# If a 'deprecation_msg' string is passed, the generated identifiers will
|
||||||
|
# generate a warning if used, via __WARN(<deprecation_msg>)).
|
||||||
|
#
|
||||||
|
# Returns the identifier used for the macro that provides the value
|
||||||
|
# for 'ident' within 'node', e.g. DT_MFG_MODEL_CTL_GPIOS_PIN.
|
||||||
|
|
||||||
|
node_prefix = node_ident(node)
|
||||||
|
|
||||||
|
aliases = [f"{alias}_{ident}" for alias in node_aliases(node)]
|
||||||
|
if name_alias is not None:
|
||||||
|
aliases.append(f"{node_prefix}_{name_alias}")
|
||||||
|
aliases += [f"{alias}_{name_alias}" for alias in node_aliases(node)]
|
||||||
|
|
||||||
|
return out(f"{node_prefix}_{ident}", val, aliases, deprecation_msg)
|
||||||
|
|
||||||
|
|
||||||
|
def out_node_s(node, ident, s, name_alias=None, deprecation_msg=None):
|
||||||
|
# Like out_node(), but emits 's' as a string literal
|
||||||
|
#
|
||||||
|
# Returns the generated macro name for 'ident'.
|
||||||
|
|
||||||
|
return out_node(node, ident, quote_str(s), name_alias, deprecation_msg)
|
||||||
|
|
||||||
|
|
||||||
def out_s(ident, val):
|
def out_s(ident, val):
|
||||||
# Like out(), but puts quotes around 'val' and escapes any double
|
# Like out(), but puts quotes around 'val' and escapes any double
|
||||||
# quotes and backslashes within it
|
# quotes and backslashes within it
|
||||||
|
@ -1118,8 +1188,7 @@ def out(ident, val, aliases=(), deprecation_msg=None):
|
||||||
# header, these look like '#define <alias> <ident>'. For the configuration
|
# header, these look like '#define <alias> <ident>'. For the configuration
|
||||||
# file, the value is just repeated as '<alias>=<val>' for each alias.
|
# file, the value is just repeated as '<alias>=<val>' for each alias.
|
||||||
#
|
#
|
||||||
# If a 'deprecation_msg' string is passed, the generated identifiers will
|
# See out_node() for the meaning of 'deprecation_msg'.
|
||||||
# generate a warning if used, via __WARN(<deprecation_msg>)).
|
|
||||||
#
|
#
|
||||||
# Returns the generated macro name for 'ident'.
|
# Returns the generated macro name for 'ident'.
|
||||||
|
|
||||||
|
@ -1146,7 +1215,7 @@ def out(ident, val, aliases=(), deprecation_msg=None):
|
||||||
|
|
||||||
|
|
||||||
def out_define(ident, val, deprecation_msg, out_file):
|
def out_define(ident, val, deprecation_msg, out_file):
|
||||||
# out() helper for writing a #define. See out() for the meaning of
|
# out() helper for writing a #define. See out_node() for the meaning of
|
||||||
# 'deprecation_msg'.
|
# 'deprecation_msg'.
|
||||||
|
|
||||||
s = f"#define DT_{ident:40}"
|
s = f"#define DT_{ident:40}"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue