|
@@ -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:
|
|
* Unlock node before returning result; will be one of:
|
|
* -ENOENT : index is for empty phandle
|
|
* -ENOENT : index is for empty phandle
|
|
* -EINVAL : parsing error on data
|
|
* -EINVAL : parsing error on data
|
|
- * [1..n] : Number of phandle (count mode; when index = -1)
|
|
|
|
*/
|
|
*/
|
|
- if (rc == -ENOENT && index < 0)
|
|
|
|
- rc = cur_index;
|
|
|
|
|
|
|
|
err:
|
|
err:
|
|
if (it.node)
|
|
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,
|
|
int of_count_phandle_with_args(const struct device_node *np, const char *list_name,
|
|
const char *cells_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);
|
|
EXPORT_SYMBOL(of_count_phandle_with_args);
|
|
|
|
|