Commit abdaa77b authored by Joerg Roedel's avatar Joerg Roedel Committed by Rob Herring

of: Introduce of_phandle_iterator_args()

This helper function can be used to copy the arguments of a
phandle to an array.
Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent f623ce95
......@@ -1534,6 +1534,23 @@ int of_phandle_iterator_next(struct of_phandle_iterator *it)
return -EINVAL;
}
int of_phandle_iterator_args(struct of_phandle_iterator *it,
uint32_t *args,
int size)
{
int i, count;
count = it->cur_count;
if (WARN_ON(size < count))
count = size;
for (i = 0; i < count; i++)
args[i] = be32_to_cpup(it->cur++);
return count;
}
static int __of_parse_phandle_with_args(const struct device_node *np,
const char *list_name,
const char *cells_name,
......@@ -1557,13 +1574,13 @@ static int __of_parse_phandle_with_args(const struct device_node *np,
goto err;
if (out_args) {
int i;
if (WARN_ON(it.cur_count > MAX_PHANDLE_ARGS))
it.cur_count = MAX_PHANDLE_ARGS;
int c;
c = of_phandle_iterator_args(&it,
out_args->args,
MAX_PHANDLE_ARGS);
out_args->np = it.node;
out_args->args_count = it.cur_count;
for (i = 0; i < it.cur_count; i++)
out_args->args[i] = be32_to_cpup(it.cur++);
out_args->args_count = c;
} else {
of_node_put(it.node);
}
......
......@@ -359,6 +359,9 @@ extern int of_phandle_iterator_init(struct of_phandle_iterator *it,
int cell_count);
extern int of_phandle_iterator_next(struct of_phandle_iterator *it);
extern int of_phandle_iterator_args(struct of_phandle_iterator *it,
uint32_t *args,
int size);
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);
......@@ -648,6 +651,13 @@ static inline int of_phandle_iterator_next(struct of_phandle_iterator *it)
return -ENOSYS;
}
static inline int of_phandle_iterator_args(struct of_phandle_iterator *it,
uint32_t *args,
int size)
{
return 0;
}
static inline int of_alias_get_id(struct device_node *np, const char *stem)
{
return -ENOSYS;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment