Re: [PATCH 1/2] of: base: add function to get highest id of an alias stem

2015-03-28 Thread Grant Likely
On Wed, 18 Mar 2015 13:46:31 +0100
, Wolfram Sang 
 wrote:
> On Thu, Mar 12, 2015 at 05:17:58PM +0100, Wolfram Sang wrote:
> > I2C supports adding adapters using either a dynamic or fixed id. The
> > latter is provided by aliases in the DT case. To prevent id collisions
> > of those two types, install this function which gives us the highest
> > fixed id, so we can then let the dynamically created ones come after
> > this highest number.
> > 
> > Signed-off-by: Wolfram Sang 
> 
> Applied to for-next, thanks!

Looks good to me to. Thanks for doing this. It should also be useful for
other devices.

g.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 1/2] of: base: add function to get highest id of an alias stem

2015-03-18 Thread Wolfram Sang
On Thu, Mar 12, 2015 at 05:17:58PM +0100, Wolfram Sang wrote:
> I2C supports adding adapters using either a dynamic or fixed id. The
> latter is provided by aliases in the DT case. To prevent id collisions
> of those two types, install this function which gives us the highest
> fixed id, so we can then let the dynamically created ones come after
> this highest number.
> 
> Signed-off-by: Wolfram Sang 

Applied to for-next, thanks!



signature.asc
Description: Digital signature


Re: [PATCH 1/2] of: base: add function to get highest id of an alias stem

2015-03-12 Thread Rob Herring
On Thu, Mar 12, 2015 at 11:17 AM, Wolfram Sang  wrote:
> I2C supports adding adapters using either a dynamic or fixed id. The
> latter is provided by aliases in the DT case. To prevent id collisions
> of those two types, install this function which gives us the highest
> fixed id, so we can then let the dynamically created ones come after
> this highest number.
>
> Signed-off-by: Wolfram Sang 

Acked-by: Rob Herring 

> ---
>
> Because this function is so similar to of_alias_get_id(), I thought of merging
> them into __of_alias_get_id(np, stem, bool get_highest) and have two call
> wrappers but then decided the decreased readability is not worth the hazzle.
>
>  drivers/of/base.c  | 26 ++
>  include/linux/of.h |  6 ++
>  2 files changed, 32 insertions(+)
>
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index 0a8aeb8523fe7d..63cba04aacf686 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -1958,6 +1958,32 @@ int of_alias_get_id(struct device_node *np, const char 
> *stem)
>  }
>  EXPORT_SYMBOL_GPL(of_alias_get_id);
>
> +/**
> + * of_alias_get_highest_id - Get highest alias id for the given stem
> + * @stem:  Alias stem to be examined
> + *
> + * The function travels the lookup table to get the highest alias id for the
> + * given alias stem.  It returns the alias id if found.
> + */
> +int of_alias_get_highest_id(const char *stem)
> +{
> +   struct alias_prop *app;
> +   int id = -ENODEV;
> +
> +   mutex_lock(&of_mutex);
> +   list_for_each_entry(app, &aliases_lookup, link) {
> +   if (strcmp(app->stem, stem) != 0)
> +   continue;
> +
> +   if (app->id > id)
> +   id = app->id;
> +   }
> +   mutex_unlock(&of_mutex);
> +
> +   return id;
> +}
> +EXPORT_SYMBOL_GPL(of_alias_get_highest_id);
> +
>  const __be32 *of_prop_next_u32(struct property *prop, const __be32 *cur,
>u32 *pu)
>  {
> diff --git a/include/linux/of.h b/include/linux/of.h
> index dfde07e77a632b..9bfcc18ceab3bf 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -332,6 +332,7 @@ extern int of_count_phandle_with_args(const struct 
> device_node *np,
>
>  extern void of_alias_scan(void * (*dt_alloc)(u64 size, u64 align));
>  extern int of_alias_get_id(struct device_node *np, const char *stem);
> +extern int of_alias_get_highest_id(const char *stem);
>
>  extern int of_machine_is_compatible(const char *compat);
>
> @@ -594,6 +595,11 @@ static inline int of_alias_get_id(struct device_node 
> *np, const char *stem)
> return -ENOSYS;
>  }
>
> +static inline int of_alias_get_highest_id(const char *stem)
> +{
> +   return -ENOSYS;
> +}
> +
>  static inline int of_machine_is_compatible(const char *compat)
>  {
> return 0;
> --
> 2.1.4
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/