of: base: add API to get maximum ID from given alias
Laxman Dewangan [Fri, 16 Jan 2015 19:54:19 +0000 (00:54 +0530)]
Add API as of_alias_get_max_id() to get the maximum ID from aliases
for given stem.

bug 1585273

Change-Id: Ie7acfff0e1c9728dc0b7df35c355a89878f2efb9
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/673232

drivers/of/base.c
include/linux/of.h

index e0f34b5..db19263 100644 (file)
@@ -1671,6 +1671,31 @@ int of_alias_get_id(struct device_node *np, const char *stem)
 }
 EXPORT_SYMBOL_GPL(of_alias_get_id);
 
+/**
+ * of_alias_get_max_id - Get maximim alias id for the given stem
+ * @stem:      Alias stem of the given device_node
+ *
+ * The function travels the lookup table to get maximum alias id for
+ * the given alias stem.  It returns the maximum alias id if find it.
+ */
+int of_alias_get_max_id(const char *stem)
+{
+       struct alias_prop *app;
+       int id = -ENODEV;
+
+       mutex_lock(&of_aliases_mutex);
+       list_for_each_entry(app, &aliases_lookup, link) {
+               if (strcmp(app->stem, stem) != 0)
+                       continue;
+
+               id = (app->id > id) ? app->id : id;
+       }
+       mutex_unlock(&of_aliases_mutex);
+
+       return id;
+}
+EXPORT_SYMBOL_GPL(of_alias_get_max_id);
+
 const __be32 *of_prop_next_u32(struct property *prop, const __be32 *cur,
                               u32 *pu)
 {
index 1a59131..adac5c5 100644 (file)
@@ -301,6 +301,7 @@ extern void of_phandle_iter_next(struct of_phandle_iter *iter);
 
 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_max_id(const char *stem);
 
 extern int of_machine_is_compatible(const char *compat);
 
@@ -528,6 +529,11 @@ static inline int of_alias_get_id(struct device_node *np, const char *stem)
        return -ENOSYS;
 }
 
+static inline int of_alias_get_max_id(const char *stem)
+{
+       return -ENODEV;
+}
+
 static inline int of_machine_is_compatible(const char *compat)
 {
        return 0;