summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorG S Niteesh Babu <niteesh.gs@gmail.com>2021-03-13 16:32:00 +0530
committerChristian Mauderer <oss@c-mauderer.de>2021-03-21 12:30:47 +0100
commitfc7129067d7b94b620302378677c5a48a47cdbad (patch)
tree5900769313afc71b51549e9fe30ffc7190f31692
parent65ab1cda10f26935cad2ba01426077079cd96af3 (diff)
bsps/shared/ofw: Add rtems_ofw_is_node_compatible
This patch extends the RTEMS OFW API by adding rtems_ofw_find_device_by_compat This function checks if a node has the expected compatible property.
-rw-r--r--bsps/include/ofw/ofw.h17
-rw-r--r--bsps/shared/ofw/ofw.c12
2 files changed, 29 insertions, 0 deletions
diff --git a/bsps/include/ofw/ofw.h b/bsps/include/ofw/ofw.h
index 411010be89..bfd91d20ea 100644
--- a/bsps/include/ofw/ofw.h
+++ b/bsps/include/ofw/ofw.h
@@ -541,6 +541,23 @@ bool rtems_ofw_node_status( phandle_t node );
*/
phandle_t rtems_ofw_find_device_by_compat( const char *compat );
+/**
+ * @brief check a nodes compatible property.
+ *
+ * This routine is local to RTEMS OFW and does not have an corresponding
+ * FreeBSD OFW pair.
+ *
+ * Return true if @a compat equals @a node compatible property
+ *
+ * @param[in] node phandle of node
+ * @param[in] compat Compatible string
+ *
+ * @retval 1 If node contains the @a compat as a element in compatible
+ * property.
+ * @retval 0 Otherwise.
+ */
+bool rtems_ofw_is_node_compatible( phandle_t node, const char *compat );
+
#ifdef __cplusplus
}
#endif
diff --git a/bsps/shared/ofw/ofw.c b/bsps/shared/ofw/ofw.c
index 1c3a81785d..f4b8b63931 100644
--- a/bsps/shared/ofw/ofw.c
+++ b/bsps/shared/ofw/ofw.c
@@ -690,3 +690,15 @@ phandle_t rtems_ofw_find_device_by_compat( const char *compat )
offset = fdt_node_offset_by_compatible(fdtp, -1, compat);
return rtems_fdt_offset_to_phandle(offset);
}
+
+bool rtems_ofw_is_node_compatible(
+ phandle_t node,
+ const char *compat
+)
+{
+ int offset;
+
+ offset = rtems_fdt_phandle_to_offset(node);
+
+ return fdt_node_check_compatible(fdtp, offset, compat) == 0;
+}