On Tue, 18 Feb 2014 15:57:29 +0800, Kevin Hao <haoke...@gmail.com> wrote:
> This reverts commit 06b29e76a74b2373e6f8b5a7938b3630b9ae98b2.
> As pointed out by Grant Likely, we should also take the type and name
> into account when searching the best compatible match. That means the
> match with compatible, type and name should be better than the match
> just with the same compatible string. So revert this and we will
> implement another method to find the best match entry.
> 
> Signed-off-by: Kevin Hao <haoke...@gmail.com>

Acked-by: Grant Likely <grant.lik...@linaro.org>

> ---
>  drivers/of/base.c | 43 +------------------------------------------
>  1 file changed, 1 insertion(+), 42 deletions(-)
> 
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index 10b51106c854..ba195fbce4c6 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -730,49 +730,13 @@ out:
>  }
>  EXPORT_SYMBOL(of_find_node_with_property);
>  
> -static const struct of_device_id *
> -of_match_compatible(const struct of_device_id *matches,
> -                     const struct device_node *node)
> -{
> -     const char *cp;
> -     int cplen, l;
> -     const struct of_device_id *m;
> -
> -     cp = __of_get_property(node, "compatible", &cplen);
> -     while (cp && (cplen > 0)) {
> -             m = matches;
> -             while (m->name[0] || m->type[0] || m->compatible[0]) {
> -                     /* Only match for the entries without type and name */
> -                     if (m->name[0] || m->type[0] ||
> -                             of_compat_cmp(m->compatible, cp,
> -                                      strlen(m->compatible)))
> -                             m++;
> -                     else
> -                             return m;
> -             }
> -
> -             /* Get node's next compatible string */
> -             l = strlen(cp) + 1;
> -             cp += l;
> -             cplen -= l;
> -     }
> -
> -     return NULL;
> -}
> -
>  static
>  const struct of_device_id *__of_match_node(const struct of_device_id 
> *matches,
>                                          const struct device_node *node)
>  {
> -     const struct of_device_id *m;
> -
>       if (!matches)
>               return NULL;
>  
> -     m = of_match_compatible(matches, node);
> -     if (m)
> -             return m;
> -
>       while (matches->name[0] || matches->type[0] || matches->compatible[0]) {
>               int match = 1;
>               if (matches->name[0])
> @@ -796,12 +760,7 @@ const struct of_device_id *__of_match_node(const struct 
> of_device_id *matches,
>   *   @matches:       array of of device match structures to search in
>   *   @node:          the of device structure to match against
>   *
> - *   Low level utility function used by device matching. We have two ways
> - *   of matching:
> - *   - Try to find the best compatible match by comparing each compatible
> - *     string of device node with all the given matches respectively.
> - *   - If the above method failed, then try to match the compatible by using
> - *     __of_device_is_compatible() besides the match in type and name.
> + *   Low level utility function used by device matching.
>   */
>  const struct of_device_id *of_match_node(const struct of_device_id *matches,
>                                        const struct device_node *node)
> -- 
> 1.8.5.3
> 

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to