diff options
author | Simon Glass <sjg@chromium.org> | 2025-01-10 17:00:28 -0700 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2025-01-22 17:08:24 -0600 |
commit | aacc05b07d28e01bbbaf9037b3e8e1275e48701f (patch) | |
tree | 4af4bd71b7f85f818ed1defb81f60e037d6735b2 /drivers/core/ofnode.c | |
parent | ff698f2ddbcce5601a19fd61bef45aedd3d59cc6 (diff) |
dm: core: Provide ofnode_name_eq_unit() to accept a unit address
When a unit-address is provided, use it to match against the node
name.
Since this increases code size, put it into a separate function.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/core/ofnode.c')
-rw-r--r-- | drivers/core/ofnode.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c index 83c60069cb3..373c7840eef 100644 --- a/drivers/core/ofnode.c +++ b/drivers/core/ofnode.c @@ -309,6 +309,29 @@ bool ofnode_name_eq(ofnode node, const char *name) return (strlen(name) == len) && !strncmp(node_name, name, len); } +bool ofnode_name_eq_unit(ofnode node, const char *name) +{ + const char *node_name, *p; + int len; + + assert(ofnode_valid(node)); + + node_name = ofnode_get_name(node); + + /* check the whole name */ + if (!strcmp(node_name, name)) + return true; + + /* if @name has no unit address, try the node name without it */ + len = strlen(name); + p = strchr(node_name, '@'); + if (p && !strchr(name, '@') && len == p - node_name && + !strncmp(node_name, name, len)) + return true; + + return false; +} + int ofnode_read_u8(ofnode node, const char *propname, u8 *outp) { const u8 *cell; |