Skip to content

Commit

Permalink
kconfig: Add dt_compat_any_not_has_prop function
Browse files Browse the repository at this point in the history
Add preprocessor function that returns 'y' if any enabled node with
compat does NOT have a certain property. This is different from using
dt_compat_any_has_prop to check that they ALL don't have the property.

Signed-off-by: Declan Snyder <[email protected]>
  • Loading branch information
decsny authored and kartben committed Dec 16, 2024
1 parent 7989a7b commit cc620a3
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions scripts/kconfig/kconfigfunctions.py
Original file line number Diff line number Diff line change
Expand Up @@ -772,6 +772,23 @@ def dt_compat_any_has_prop(kconf, _, compat, prop, value=None):
return "y"
return "n"

def dt_compat_any_not_has_prop(kconf, _, compat, prop):
"""
This function takes a 'compat', and a 'prop'.
The function returns "y" if any enabled node with compatible 'compat'
does NOT contain the property 'prop'.
It returns "n" otherwise.
"""
if doc_mode or edt is None:
return "n"

if compat in edt.compat2okay:
for node in edt.compat2okay[compat]:
if prop not in node.props:
return "y"

return "n"

def dt_nodelabel_has_compat(kconf, _, label, compat):
"""
This function takes a 'label' and looks for an EDT node with that label.
Expand Down Expand Up @@ -1006,6 +1023,7 @@ def inc_dec(kconf, name, *args):
"dt_compat_enabled": (dt_compat_enabled, 1, 1),
"dt_compat_on_bus": (dt_compat_on_bus, 2, 2),
"dt_compat_any_has_prop": (dt_compat_any_has_prop, 2, 3),
"dt_compat_any_not_has_prop": (dt_compat_any_not_has_prop, 2, 2),
"dt_chosen_label": (dt_chosen_label, 1, 1),
"dt_chosen_enabled": (dt_chosen_enabled, 1, 1),
"dt_chosen_path": (dt_chosen_path, 1, 1),
Expand Down

0 comments on commit cc620a3

Please sign in to comment.