scripts: kconfig: size/addr by nodelabel

Add new devicetree kconfig function to get a node size or addr by
nodelabel.

Signed-off-by: Jordan Yates <jordan.yates@data61.csiro.au>
This commit is contained in:
Jordan Yates 2023-07-30 13:33:33 +10:00 committed by Carles Cufí
commit 999afdc728
2 changed files with 30 additions and 0 deletions

View file

@ -47,6 +47,10 @@ while the ``*_hex`` version returns a hexadecimal value starting with ``0x``.
$(dt_node_reg_addr_hex,<node path>[,<index>,<unit>])
$(dt_node_reg_size_int,<node path>[,<index>,<unit>])
$(dt_node_reg_size_hex,<node path>[,<index>,<unit>])
$(dt_nodelabel_reg_addr_int,<node label>[,<index>,<unit>])
$(dt_nodelabel_reg_addr_hex,<node label>[,<index>,<unit>])
$(dt_nodelabel_reg_size_int,<node label>[,<index>,<unit>])
$(dt_nodelabel_reg_size_hex,<node label>[,<index>,<unit>])
$(dt_compat_enabled,<compatible string>)
$(dt_chosen_enabled,<property in /chosen>)
$(dt_node_bool_prop,<node path>,<prop>)

View file

@ -375,6 +375,28 @@ def dt_node_reg(kconf, name, path, index=0, unit=None):
if name == "dt_node_reg_addr_hex":
return hex(_dt_node_reg_addr(kconf, path, index, unit))
def dt_nodelabel_reg(kconf, name, label, index=0, unit=None):
"""
This function is like dt_node_reg(), but the 'label' argument
should be a node label, like "foo" is here:
foo: some-node { ... };
"""
if doc_mode or edt is None:
node = None
else:
node = edt.label2node.get(label)
if name == "dt_nodelabel_reg_size_int":
return str(_dt_node_reg_size(kconf, node.path, index, unit)) if node else "0"
if name == "dt_nodelabel_reg_size_hex":
return hex(_dt_node_reg_size(kconf, node.path, index, unit)) if node else "0x0"
if name == "dt_nodelabel_reg_addr_int":
return str(_dt_node_reg_addr(kconf, node.path, index, unit)) if node else "0"
if name == "dt_nodelabel_reg_addr_hex":
return hex(_dt_node_reg_addr(kconf, node.path, index, unit)) if node else "0x0"
def _dt_node_bool_prop_generic(node_search_function, search_arg, prop):
"""
This function takes the 'node_search_function' and uses it to search for
@ -764,6 +786,10 @@ functions = {
"dt_node_reg_addr_hex": (dt_node_reg, 1, 3),
"dt_node_reg_size_int": (dt_node_reg, 1, 3),
"dt_node_reg_size_hex": (dt_node_reg, 1, 3),
"dt_nodelabel_reg_addr_int": (dt_nodelabel_reg, 1, 3),
"dt_nodelabel_reg_addr_hex": (dt_nodelabel_reg, 1, 3),
"dt_nodelabel_reg_size_int": (dt_nodelabel_reg, 1, 3),
"dt_nodelabel_reg_size_hex": (dt_nodelabel_reg, 1, 3),
"dt_node_bool_prop": (dt_node_bool_prop, 2, 2),
"dt_nodelabel_bool_prop": (dt_nodelabel_bool_prop, 2, 2),
"dt_chosen_bool_prop": (dt_chosen_bool_prop, 2, 2),