On Sun, 24 Oct 2021 at 02:26, Simon Glass <s...@chromium.org> wrote: > > At present we support reading a string list a string at a time. Apart > from being inefficient, this makes it impossible to separate reading of > the devicetree into the of_to_plat() method where it belongs, since any > code which needs access to the string must read it from the devicetree. > > Add a function which returns the string property as an array of pointers > to the strings, which is easily used by clients. > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > (no changes since v1) > > drivers/core/ofnode.c | 26 ++++++++++++++++++++++++++ > drivers/core/read.c | 6 ++++++ > include/dm/ofnode.h | 20 ++++++++++++++++++++ > include/dm/read.h | 28 ++++++++++++++++++++++++++++ > test/dm/ofnode.c | 20 ++++++++++++++++++++ > 5 files changed, 100 insertions(+) > > diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c > index 08705ef8d99..709bea272a6 100644 > --- a/drivers/core/ofnode.c > +++ b/drivers/core/ofnode.c > @@ -456,6 +456,32 @@ int ofnode_read_string_count(ofnode node, const char > *property) > } > } > > +int ofnode_read_string_list(ofnode node, const char *property, > + const char ***listp) > +{ > + const char **prop; > + int count; > + int i; > + > + *listp = NULL; > + count = ofnode_read_string_count(node, property); > + if (count < 0) > + return count; > + if (!count) > + return 0;
Those can fold into a single if and always return 'count'. if (count <= 0) return count; > + > + prop = calloc(count + 1, sizeof(char *)); [...] Regards /Ilias