[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 03/12] xen/dt: Extend dt_device_match to possibly store data



On Fri, 16 Jan 2015, Julien Grall wrote:
> Some drivers may want to configure differently the device depending on
> the compatible string.
> 
> Also modify the return type of dt_match_node to return the matching
> structure.
> 
> Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
> ---
>  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;

Why are you adding this field? It doesn't seem to be required by the
changes to dt_match_node you are making in this patch.


>  };
>  
>  #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

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.