--- 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 8ef046975..e91baaafd 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 400eac578..c0fdebbd5 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) { -- 2.12.3 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel