Message ID | 1584780715-29632-2-git-send-email-chunfeng.yun@mediatek.com |
---|---|
State | New |
Headers | show |
Series | Add support for MediaTek xHCI host controller | expand |
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
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
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 + * @return the count of child subnode + */ +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)) + #endif
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(+)