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

Simon Glass sjg at chromium.org
Mon Mar 23 16:36:58 CET 2020


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

> + * @return the count of child subnode

the number of subnodes

> + */
> +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.

>  #endif
> --
> 2.25.1

Regards,
Simon


More information about the U-Boot mailing list