From 81fc57de35c529840c90028254d26766ec75b98e Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 17 Jan 2018 14:14:30 +0100 Subject: linux/of.h: Add of_find_node_by_path() Update #3277. --- rtemsbsd/powerpc/include/linux/of.h | 3 +++ rtemsbsd/sys/powerpc/compat.c | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/rtemsbsd/powerpc/include/linux/of.h b/rtemsbsd/powerpc/include/linux/of.h index 8ef04697..e91baaaf 100644 --- a/rtemsbsd/powerpc/include/linux/of.h +++ b/rtemsbsd/powerpc/include/linux/of.h @@ -88,6 +88,9 @@ bool of_device_is_available(const struct device_node *dn); int of_device_is_compatible(const struct device_node *dn, const char *name); +struct device_node *of_find_node_by_path(struct device_node *dns, + const char *path); + struct device_node *of_find_compatible_node(struct device_node *dns, const struct device_node *dn, const char *type, const char *compatible); diff --git a/rtemsbsd/sys/powerpc/compat.c b/rtemsbsd/sys/powerpc/compat.c index 400eac57..c0fdebbd 100644 --- a/rtemsbsd/sys/powerpc/compat.c +++ b/rtemsbsd/sys/powerpc/compat.c @@ -89,6 +89,22 @@ of_device_is_compatible(const struct device_node *dn, const char *name) return (fdt_node_check_compatible(fdt, dn->offset, name) == 0); } +struct device_node * +of_find_node_by_path(struct device_node *dns, const char *path) +{ + const void *fdt = bsp_fdt_get(); + int node; + + memset(dns, 0, sizeof(*dns)); + + node = fdt_path_offset(fdt, path); + if (node < 0) + return (NULL); + + dns->offset = node; + return (dns); +} + struct device_node * of_find_compatible_node(struct device_node *dns, const struct device_node *dn, const char *type, const char *compatible) -- cgit v1.2.3