[PATCH v2 01/10] dm: core: Add function to get child count of ofnode or device

Chunfeng Yun chunfeng.yun at mediatek.com
Tue Mar 24 04:57:48 CET 2020


On Mon, 2020-03-23 at 09:36 -0600, Simon Glass wrote:
> Hi Chunfeng,
> 
> On Sat, 21 Mar 2020 at 02:52, Chunfeng Yun <chunfeng.yun at mediatek.com> wrote:
> >
> > This patch add function used to get the child count of
> > a ofnode or a device
> >
> > Signed-off-by: Chunfeng Yun <chunfeng.yun at mediatek.com>
> > ---
> > v2:
> >     1. move ofnode_get_child_count() into ofnode.c suggested by Simon
> >     2. add a new macro dev_get_child_count()
> > ---
> >  drivers/core/ofnode.c | 11 +++++++++++
> >  include/dm/ofnode.h   |  8 ++++++++
> >  include/dm/read.h     |  9 +++++++++
> >  3 files changed, 28 insertions(+)
> >
> 
> Looks good so far, but please see below.
> 
> > diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
> > index 96a5dd20bd..6f4eb422a4 100644
> > --- a/drivers/core/ofnode.c
> > +++ b/drivers/core/ofnode.c
> > @@ -453,6 +453,17 @@ ofnode ofnode_get_chosen_node(const char *name)
> >         return ofnode_path(prop);
> >  }
> >
> > +int ofnode_get_child_count(ofnode parent)
> > +{
> > +       ofnode child;
> > +       int num = 0;
> > +
> > +       ofnode_for_each_subnode(child, parent)
> > +               num++;
> > +
> > +       return num;
> > +}
> > +
> >  static int decode_timing_property(ofnode node, const char *name,
> >                                   struct timing_entry *result)
> >  {
> > diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h
> > index b5a50e8849..3fe8fcdc5d 100644
> > --- a/include/dm/ofnode.h
> > +++ b/include/dm/ofnode.h
> > @@ -793,6 +793,14 @@ ofnode ofnode_by_prop_value(ofnode from, const char *propname,
> >              ofnode_valid(node); \
> >              node = ofnode_next_subnode(node))
> >
> > +/**
> > + * ofnode_get_child_count() - get the child count of a ofnode
> > + *
> > + * @node:      valid node ot get its child count
> 
> to get
will fix it
> 
> > + * @return the count of child subnode
> 
> the number of subnodes
will fix it
> 
> > + */
> > +int ofnode_get_child_count(ofnode parent);
> > +
> >  /**
> >   * ofnode_translate_address() - Translate a device-tree address
> >   *
> > diff --git a/include/dm/read.h b/include/dm/read.h
> > index da8c7f25e7..0b7dec4c83 100644
> > --- a/include/dm/read.h
> > +++ b/include/dm/read.h
> > @@ -901,4 +901,13 @@ static inline int dev_read_alias_highest_id(const char *stem)
> >              ofnode_valid(subnode); \
> >              subnode = ofnode_next_subnode(subnode))
> >
> > +/**
> > + * dev_get_child_count() - get the child count of a device
> > + *
> > + * @dev: device to use for interation (struct udevice *)
> > + * @return the count of child subnode
> > + */
> > +#define dev_get_child_count(dev) \
> > +       ofnode_get_child_count(dev_ofnode(dev))
> > +
> 
> Please use static inline for this one.
> 
> Also add a non-inline vresion above, inside #ifndef
> CONFIG_DM_READ_INLINE with impl in read.c. See other functions for
> examples.
Ok, will do it, thanks a lot
> 
> >  #endif
> > --
> > 2.25.1
> 
> Regards,
> Simon



More information about the U-Boot mailing list