dm: ofnode: add ofnode_device_is_compatible() helper
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 19 Apr 2018 03:14:02 +0000 (12:14 +0900)
committerTom Rini <trini@konsulko.com>
Mon, 7 May 2018 19:49:51 +0000 (15:49 -0400)
device_is_compatible() takes udevice, but there is no such a helper
that takes ofnode.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
drivers/core/device.c
drivers/core/ofnode.c
include/dm/ofnode.h

index 1a329565680e0fe77cdac73881a84baa3a06d96c..e048e1a65951c531750b168659d0f37e2b0adb26 100644 (file)
@@ -708,13 +708,7 @@ int device_set_name(struct udevice *dev, const char *name)
 
 bool device_is_compatible(struct udevice *dev, const char *compat)
 {
-       const void *fdt = gd->fdt_blob;
-       ofnode node = dev_ofnode(dev);
-
-       if (ofnode_is_np(node))
-               return of_device_is_compatible(ofnode_to_np(node), compat, NULL, NULL);
-       else
-               return !fdt_node_check_compatible(fdt, ofnode_to_offset(node), compat);
+       return ofnode_device_is_compatible(dev_ofnode(dev), compat);
 }
 
 bool of_machine_is_compatible(const char *compat)
index 4cd10032ddb19a0e707f2203ee8be0399335874d..3cf3205a2f1d192c0354c6996e2190465c2b6bf5 100644 (file)
@@ -686,3 +686,14 @@ u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr)
        else
                return fdt_translate_address(gd->fdt_blob, ofnode_to_offset(node), in_addr);
 }
+
+int ofnode_device_is_compatible(ofnode node, const char *compat)
+{
+       if (ofnode_is_np(node))
+               return of_device_is_compatible(ofnode_to_np(node), compat,
+                                              NULL, NULL);
+       else
+               return !fdt_node_check_compatible(gd->fdt_blob,
+                                                 ofnode_to_offset(node),
+                                                 compat);
+}
index be3f25d46de8fb4974c75abfbc214148e07f6145..5af6b7e616ad6b1ac99ae1112b640877025965a1 100644 (file)
@@ -680,4 +680,15 @@ int ofnode_read_resource_byname(ofnode node, const char *name,
  * @return the translated address; OF_BAD_ADDR on error
  */
 u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr);
+
+/**
+ * ofnode_device_is_compatible() - check if the node is compatible with compat
+ *
+ * This allows to check whether the node is comaptible with the compat.
+ *
+ * @node:      Device tree node for which compatible needs to be verified.
+ * @compat:    Compatible string which needs to verified in the given node.
+ * @return true if OK, false if the compatible is not found
+ */
+int ofnode_device_is_compatible(ofnode node, const char *compat);
 #endif