]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
of: Remove counting special case from __of_parse_phandle_with_args()
authorJoerg Roedel <jroedel@suse.de>
Mon, 4 Apr 2016 15:49:19 +0000 (17:49 +0200)
committerRob Herring <robh@kernel.org>
Tue, 19 Apr 2016 22:25:14 +0000 (17:25 -0500)
The index = -1 case in __of_parse_phandle_with_args() is
used to just return the number of phandles. That special
case needs extra handling, so move it to the place where it
is needed: of_count_phandle_with_args().

This allows to further simplify __of_parse_phandle_with_args()
later on.

Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Rob Herring <robh@kernel.org>
drivers/of/base.c

index 69286ec206f7abf80490a6d2879606093e90d2ef..fcff2b62ec10a0fffee7370bed2b57c0ac9cf558 100644 (file)
@@ -1584,10 +1584,7 @@ static int __of_parse_phandle_with_args(const struct device_node *np,
         * Unlock node before returning result; will be one of:
         * -ENOENT : index is for empty phandle
         * -EINVAL : parsing error on data
-        * [1..n]  : Number of phandle (count mode; when index = -1)
         */
-       if (rc == -ENOENT && index < 0)
-               rc = cur_index;
 
  err:
        if (it.node)
@@ -1723,8 +1720,20 @@ EXPORT_SYMBOL(of_parse_phandle_with_fixed_args);
 int of_count_phandle_with_args(const struct device_node *np, const char *list_name,
                                const char *cells_name)
 {
-       return __of_parse_phandle_with_args(np, list_name, cells_name, 0, -1,
-                                           NULL);
+       struct of_phandle_iterator it;
+       int rc, cur_index = 0;
+
+       rc = of_phandle_iterator_init(&it, np, list_name, cells_name, 0);
+       if (rc)
+               return rc;
+
+       while ((rc = of_phandle_iterator_next(&it)) == 0)
+               cur_index += 1;
+
+       if (rc != -ENOENT)
+               return rc;
+
+       return cur_index;
 }
 EXPORT_SYMBOL(of_count_phandle_with_args);