]> xenbits.xensource.com Git - xen.git/commitdiff
xen/device-tree: Make dt_match_node match props
authorEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Fri, 23 Sep 2016 18:53:20 +0000 (20:53 +0200)
committerStefano Stabellini <sstabellini@kernel.org>
Wed, 28 Sep 2016 01:27:35 +0000 (18:27 -0700)
Make dt_match_node match for a single existing property.
We only search for the existence of the property, not
for specific values.

Acked-by: Julien Grall <julien.grall@arm.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
xen/common/device_tree.c
xen/include/xen/device_tree.h

index b39c8caf8d4d1fbe50e5ead8a058fd03b5314acf..1be074b3a84f49115c241ad606b66bffe1d49a68 100644 (file)
@@ -319,7 +319,7 @@ dt_match_node(const struct dt_device_match *matches,
         return NULL;
 
     while ( matches->path || matches->type ||
-            matches->compatible || matches->not_available )
+            matches->compatible || matches->not_available || matches->prop)
     {
         bool_t match = 1;
 
@@ -335,6 +335,9 @@ dt_match_node(const struct dt_device_match *matches,
         if ( matches->not_available )
             match &= !dt_device_is_available(node);
 
+        if ( matches->prop )
+            match &= dt_find_property(node, matches->prop, NULL) != NULL;
+
         if ( match )
             return matches;
         matches++;
index da153a55608e67d9aca030c995ccc92d2af02328..0aecbe0b2c60b3e99c180cd26493c8502938f272 100644 (file)
@@ -29,6 +29,11 @@ struct dt_device_match {
     const char *type;
     const char *compatible;
     const bool_t not_available;
+    /*
+     * Property name to search for. We only search for the property's
+     * existence.
+     */
+    const char *prop;
     const void *data;
 };
 
@@ -36,11 +41,13 @@ struct dt_device_match {
 #define __DT_MATCH_TYPE(typ)            .type = typ
 #define __DT_MATCH_COMPATIBLE(compat)   .compatible = compat
 #define __DT_MATCH_NOT_AVAILABLE()      .not_available = 1
+#define __DT_MATCH_PROP(p)              .prop = p
 
 #define DT_MATCH_PATH(p)                { __DT_MATCH_PATH(p) }
 #define DT_MATCH_TYPE(typ)              { __DT_MATCH_TYPE(typ) }
 #define DT_MATCH_COMPATIBLE(compat)     { __DT_MATCH_COMPATIBLE(compat) }
 #define DT_MATCH_NOT_AVAILABLE()        { __DT_MATCH_NOT_AVAILABLE() }
+#define DT_MATCH_PROP(p)                { __DT_MATCH_PROP(p) }
 
 typedef u32 dt_phandle;