Skip to content

Commit 999afdc

Browse files
Jordan Yatescarlescufi
authored andcommitted
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 <[email protected]>
1 parent d5f6fe4 commit 999afdc

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

doc/build/kconfig/preprocessor-functions.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ while the ``*_hex`` version returns a hexadecimal value starting with ``0x``.
4747
$(dt_node_reg_addr_hex,<node path>[,<index>,<unit>])
4848
$(dt_node_reg_size_int,<node path>[,<index>,<unit>])
4949
$(dt_node_reg_size_hex,<node path>[,<index>,<unit>])
50+
$(dt_nodelabel_reg_addr_int,<node label>[,<index>,<unit>])
51+
$(dt_nodelabel_reg_addr_hex,<node label>[,<index>,<unit>])
52+
$(dt_nodelabel_reg_size_int,<node label>[,<index>,<unit>])
53+
$(dt_nodelabel_reg_size_hex,<node label>[,<index>,<unit>])
5054
$(dt_compat_enabled,<compatible string>)
5155
$(dt_chosen_enabled,<property in /chosen>)
5256
$(dt_node_bool_prop,<node path>,<prop>)

scripts/kconfig/kconfigfunctions.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,28 @@ def dt_node_reg(kconf, name, path, index=0, unit=None):
375375
if name == "dt_node_reg_addr_hex":
376376
return hex(_dt_node_reg_addr(kconf, path, index, unit))
377377

378+
def dt_nodelabel_reg(kconf, name, label, index=0, unit=None):
379+
"""
380+
This function is like dt_node_reg(), but the 'label' argument
381+
should be a node label, like "foo" is here:
382+
383+
foo: some-node { ... };
384+
"""
385+
if doc_mode or edt is None:
386+
node = None
387+
else:
388+
node = edt.label2node.get(label)
389+
390+
if name == "dt_nodelabel_reg_size_int":
391+
return str(_dt_node_reg_size(kconf, node.path, index, unit)) if node else "0"
392+
if name == "dt_nodelabel_reg_size_hex":
393+
return hex(_dt_node_reg_size(kconf, node.path, index, unit)) if node else "0x0"
394+
if name == "dt_nodelabel_reg_addr_int":
395+
return str(_dt_node_reg_addr(kconf, node.path, index, unit)) if node else "0"
396+
if name == "dt_nodelabel_reg_addr_hex":
397+
return hex(_dt_node_reg_addr(kconf, node.path, index, unit)) if node else "0x0"
398+
399+
378400
def _dt_node_bool_prop_generic(node_search_function, search_arg, prop):
379401
"""
380402
This function takes the 'node_search_function' and uses it to search for
@@ -764,6 +786,10 @@ def shields_list_contains(kconf, _, shield):
764786
"dt_node_reg_addr_hex": (dt_node_reg, 1, 3),
765787
"dt_node_reg_size_int": (dt_node_reg, 1, 3),
766788
"dt_node_reg_size_hex": (dt_node_reg, 1, 3),
789+
"dt_nodelabel_reg_addr_int": (dt_nodelabel_reg, 1, 3),
790+
"dt_nodelabel_reg_addr_hex": (dt_nodelabel_reg, 1, 3),
791+
"dt_nodelabel_reg_size_int": (dt_nodelabel_reg, 1, 3),
792+
"dt_nodelabel_reg_size_hex": (dt_nodelabel_reg, 1, 3),
767793
"dt_node_bool_prop": (dt_node_bool_prop, 2, 2),
768794
"dt_nodelabel_bool_prop": (dt_nodelabel_bool_prop, 2, 2),
769795
"dt_chosen_bool_prop": (dt_chosen_bool_prop, 2, 2),

0 commit comments

Comments
 (0)