summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-17 14:14:30 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-23 14:54:53 +0100
commit81fc57de35c529840c90028254d26766ec75b98e (patch)
treec775d2c22324836f1a82e285060ac626fa707c08
parent44fca38058e84442940cad05a0a53696f2744729 (diff)
linux/of.h: Add of_find_node_by_path()
Update #3277.
-rw-r--r--rtemsbsd/powerpc/include/linux/of.h3
-rw-r--r--rtemsbsd/sys/powerpc/compat.c16
2 files changed, 19 insertions, 0 deletions
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
@@ -90,6 +90,22 @@ 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)
+{
+ 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)
{