Message ID | 1473231377-7800-5-git-send-email-edgar.iglesias@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Edgar, On 07/09/2016 08:56, Edgar E. Iglesias wrote: > From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com> > > Make dt_match_node match for existing properties. > We only search for the existence of the properties, not > for specific values. > > Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> > --- > xen/common/device_tree.c | 5 ++++- > xen/include/xen/device_tree.h | 7 +++++++ > 2 files changed, 11 insertions(+), 1 deletion(-) > > diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c > index b39c8ca..1be074b 100644 > --- a/xen/common/device_tree.c > +++ b/xen/common/device_tree.c > @@ -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++; > diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h > index da153a5..c71ddb9 100644 > --- a/xen/include/xen/device_tree.h > +++ b/xen/include/xen/device_tree.h > @@ -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 properties NIT: s/the properties/the property/ I think same. I think this also apply for the commit message? The rest of the patch looks good to me: Acked-by: Julien Grall <julien.grall@arm.com> Regards, > + * 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; > >
On Fri, Sep 16, 2016 at 04:28:20PM +0200, Julien Grall wrote: > Hi Edgar, > > On 07/09/2016 08:56, Edgar E. Iglesias wrote: > >From: "Edgar E. Iglesias" <edgar.iglesias@xilinx.com> > > > >Make dt_match_node match for existing properties. > >We only search for the existence of the properties, not > >for specific values. > > > >Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> > >--- > > xen/common/device_tree.c | 5 ++++- > > xen/include/xen/device_tree.h | 7 +++++++ > > 2 files changed, 11 insertions(+), 1 deletion(-) > > > >diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c > >index b39c8ca..1be074b 100644 > >--- a/xen/common/device_tree.c > >+++ b/xen/common/device_tree.c > >@@ -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++; > >diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h > >index da153a5..c71ddb9 100644 > >--- a/xen/include/xen/device_tree.h > >+++ b/xen/include/xen/device_tree.h > >@@ -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 properties > > NIT: s/the properties/the property/ I think same. > I think this also apply for the commit message? OK, I've changed the commit message to: xen/device-tree: Make dt_match_node match props Make dt_match_node match for a single existing property. We only search for the existence of the property, not for specific values. And I've changed the comment to say "the property's existence" which I think is correct but I'm not a native English speaker.. Cheers, Edgar > > The rest of the patch looks good to me: > > Acked-by: Julien Grall <julien.grall@arm.com> > > Regards, > > >+ * 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; > > > > > > -- > Julien Grall
diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c index b39c8ca..1be074b 100644 --- a/xen/common/device_tree.c +++ b/xen/common/device_tree.c @@ -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++; diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h index da153a5..c71ddb9 100644 --- a/xen/include/xen/device_tree.h +++ b/xen/include/xen/device_tree.h @@ -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 properties + * 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;