From fc7129067d7b94b620302378677c5a48a47cdbad Mon Sep 17 00:00:00 2001 From: G S Niteesh Babu Date: Sat, 13 Mar 2021 16:32:00 +0530 Subject: 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. --- bsps/include/ofw/ofw.h | 17 +++++++++++++++++ bsps/shared/ofw/ofw.c | 12 ++++++++++++ 2 files changed, 29 insertions(+) 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; +} -- cgit v1.2.3