[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 03/13] xen/dt: Extend dt_device_match to possibly store data
On Fri, 30 Jan 2015, Julien Grall wrote: > Some drivers may want to configure differently the device depending on > the compatible string. For this purpose, add a new field in the > dt_device_match to store the data. > > Also modify the return type of dt_match_node to return the matching > structure. > > Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > --- > Changes in v3: > - Make clear in the commit message that we add a new field... > --- > xen/arch/arm/platform.c | 2 +- > xen/common/device_tree.c | 12 ++++++------ > xen/include/xen/device_tree.h | 6 ++++-- > 3 files changed, 11 insertions(+), 9 deletions(-) > > diff --git a/xen/arch/arm/platform.c b/xen/arch/arm/platform.c > index cb4cda8..a79a098 100644 > --- a/xen/arch/arm/platform.c > +++ b/xen/arch/arm/platform.c > @@ -157,7 +157,7 @@ bool_t platform_device_is_blacklisted(const struct > dt_device_node *node) > if ( platform && platform->blacklist_dev ) > blacklist = platform->blacklist_dev; > > - return dt_match_node(blacklist, node); > + return (dt_match_node(blacklist, node) != NULL); > } > > unsigned int platform_dom0_evtchn_ppi(void) > diff --git a/xen/common/device_tree.c b/xen/common/device_tree.c > index f72b2e9..34a1b9e 100644 > --- a/xen/common/device_tree.c > +++ b/xen/common/device_tree.c > @@ -290,11 +290,12 @@ struct dt_device_node *dt_find_node_by_alias(const char > *alias) > return NULL; > } > > -bool_t dt_match_node(const struct dt_device_match *matches, > - const struct dt_device_node *node) > +const struct dt_device_match * > +dt_match_node(const struct dt_device_match *matches, > + const struct dt_device_node *node) > { > if ( !matches ) > - return 0; > + return NULL; > > while ( matches->path || matches->type || > matches->compatible || matches->not_available ) > @@ -314,12 +315,11 @@ bool_t dt_match_node(const struct dt_device_match > *matches, > match &= !dt_device_is_available(node); > > if ( match ) > - return match; > - > + return matches; > matches++; > } > > - return 0; > + return NULL; > } > > const struct dt_device_node *dt_get_parent(const struct dt_device_node *node) > diff --git a/xen/include/xen/device_tree.h b/xen/include/xen/device_tree.h > index 08db8bc..6502369 100644 > --- a/xen/include/xen/device_tree.h > +++ b/xen/include/xen/device_tree.h > @@ -28,6 +28,7 @@ struct dt_device_match { > const char *type; > const char *compatible; > const bool_t not_available; > + const void *data; > }; > > #define DT_MATCH_PATH(p) { .path = p } > @@ -547,8 +548,9 @@ bool_t dt_device_is_available(const struct dt_device_node > *device); > * > * Returns true if the device node match one of dt_device_match. > */ > -bool_t dt_match_node(const struct dt_device_match *matches, > - const struct dt_device_node *node); > +const struct dt_device_match * > +dt_match_node(const struct dt_device_match *matches, > + const struct dt_device_node *node); > > /** > * dt_find_matching_node - Find a node based on an dt_device_match match > table > -- > 2.1.4 > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |