diff options
author | Tom Rini <trini@konsulko.com> | 2018-09-18 20:42:37 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-09-18 20:42:37 -0400 |
commit | 4e710ebb4463c8e031eb269c012fbadb2479608b (patch) | |
tree | f334518436bc0262b483308026fbba413a45493e /drivers/core/of_access.c | |
parent | b57f1895b669e3fbdca486e7c40dfea00f22bb93 (diff) | |
parent | 75629a25087cd9897305375421abe2248bc40e72 (diff) |
Merge git://git.denx.de/u-boot-dm
- MPC83xx device tree additions (CPU and RAM)
- Fix sandbox build error
- Sync bitrev with Linux
- Various ofnode/DT improvements
Diffstat (limited to 'drivers/core/of_access.c')
-rw-r--r-- | drivers/core/of_access.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/core/of_access.c b/drivers/core/of_access.c index 0729dfcdb3b..14c020a687b 100644 --- a/drivers/core/of_access.c +++ b/drivers/core/of_access.c @@ -376,6 +376,33 @@ struct device_node *of_find_compatible_node(struct device_node *from, return np; } +static int of_device_has_prop_value(const struct device_node *device, + const char *propname, const void *propval, + int proplen) +{ + struct property *prop = of_find_property(device, propname, NULL); + + if (!prop || !prop->value || prop->length != proplen) + return 0; + return !memcmp(prop->value, propval, proplen); +} + +struct device_node *of_find_node_by_prop_value(struct device_node *from, + const char *propname, + const void *propval, int proplen) +{ + struct device_node *np; + + for_each_of_allnodes_from(from, np) { + if (of_device_has_prop_value(np, propname, propval, proplen) && + of_node_get(np)) + break; + } + of_node_put(from); + + return np; +} + struct device_node *of_find_node_by_phandle(phandle handle) { struct device_node *np; |