[PATCH v2 13/41] dm: core: Add a way to obtain a string list
Simon Glass
sjg at chromium.org
Wed Nov 24 23:23:04 CET 2021
Hi Ilias,
On Tue, 26 Oct 2021 at 13:21, Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> On Sun, 24 Oct 2021 at 02:26, Simon Glass <sjg at 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 <sjg at 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;
Yes, but I prefer to deal with errors separately. The first case is an error.
>
> > +
> > + prop = calloc(count + 1, sizeof(char *));
> [...]
Regards,
Simon
More information about the U-Boot
mailing list