2012-02-11 17:22:23

by Dong Aisheng

[permalink] [raw]
Subject: [PATCH V3 1/1] dt: add of_get_child_count helper function

Currently most code to get child count in kernel are almost same,
add a helper to implement this function for dt to use.

Signed-off-by: Dong Aisheng <[email protected]>
Cc: Grant Likely <[email protected]>
Cc: Rob Herring <[email protected]>

---
Hi Rob,

Since my imx pinctrl driver series still depends on the pinctrl core dt
binding patch which is still not in mainline, i'd like this pure dt patch
go separately first in case others want to use.

changes v2->v3:
Addressed some people's comments:
* do not use assignment as expression
* return 0 for non-dt case

Changes v1->v2:
* change the name from of_get_child_number to of_get_child_count
---
include/linux/of.h | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/include/linux/of.h b/include/linux/of.h
index a75a831..ae242ef 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -195,6 +195,17 @@ extern struct device_node *of_get_next_child(const struct device_node *node,
for (child = of_get_next_child(parent, NULL); child != NULL; \
child = of_get_next_child(parent, child))

+static inline int of_get_child_count(const struct device_node *np)
+{
+ struct device_node *child = NULL;
+ int num = 0;
+
+ while ((child = of_get_next_child(np, child)) != NULL)
+ num++;
+
+ return num;
+}
+
extern struct device_node *of_find_node_with_property(
struct device_node *from, const char *prop_name);
#define for_each_node_with_property(dn, prop_name) \
@@ -268,6 +279,11 @@ static inline bool of_have_populated_dt(void)
#define for_each_child_of_node(parent, child) \
while (0)

+static inline int of_get_child_count(const struct device_node *np)
+{
+ return 0;
+}
+
static inline int of_device_is_compatible(const struct device_node *device,
const char *name)
{
--
1.7.5.4


2012-02-11 20:39:04

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH V3 1/1] dt: add of_get_child_count helper function

Hello.

On 11-02-2012 21:22, Dong Aisheng wrote:

> Currently most code to get child count in kernel are almost same,
> add a helper to implement this function for dt to use.

> Signed-off-by: Dong Aisheng<[email protected]>
> Cc: Grant Likely<[email protected]>
> Cc: Rob Herring<[email protected]>

> ---
> Hi Rob,

> Since my imx pinctrl driver series still depends on the pinctrl core dt
> binding patch which is still not in mainline, i'd like this pure dt patch
> go separately first in case others want to use.

> changes v2->v3:
> Addressed some people's comments:
> * do not use assignment as expression
> * return 0 for non-dt case

> Changes v1->v2:
> * change the name from of_get_child_number to of_get_child_count
> ---
> include/linux/of.h | 16 ++++++++++++++++
> 1 files changed, 16 insertions(+), 0 deletions(-)

> diff --git a/include/linux/of.h b/include/linux/of.h
> index a75a831..ae242ef 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -195,6 +195,17 @@ extern struct device_node *of_get_next_child(const struct device_node *node,
> for (child = of_get_next_child(parent, NULL); child != NULL; \
> child = of_get_next_child(parent, child))
>
> +static inline int of_get_child_count(const struct device_node *np)
> +{
> + struct device_node *child = NULL;
> + int num = 0;
> +
> + while ((child = of_get_next_child(np, child)) != NULL)

Doesn't scripts/checkpatch.pl complain here?

> + num++;
> +
> + return num;
> +}
> +

WBR, Sergei

2012-02-12 06:50:47

by Dong Aisheng

[permalink] [raw]
Subject: Re: [PATCH V3 1/1] dt: add of_get_child_count helper function

On Sun, Feb 12, 2012 at 12:37:46AM +0400, Sergei Shtylyov wrote:
> >diff --git a/include/linux/of.h b/include/linux/of.h
> >index a75a831..ae242ef 100644
> >--- a/include/linux/of.h
> >+++ b/include/linux/of.h
> >@@ -195,6 +195,17 @@ extern struct device_node *of_get_next_child(const struct device_node *node,
> > for (child = of_get_next_child(parent, NULL); child != NULL; \
> > child = of_get_next_child(parent, child))
> >
> >+static inline int of_get_child_count(const struct device_node *np)
> >+{
> >+ struct device_node *child = NULL;
> >+ int num = 0;
> >+
> >+ while ((child = of_get_next_child(np, child)) != NULL)
>
> Doesn't scripts/checkpatch.pl complain here?
>
That complain actually is not caused by this patch.
I have already sent a patch to fix that issue.
But seemed to get a NACK.
Please refer to:
https://lkml.org/lkml/2011/12/20/236

Regards
Dong Aisheng

2012-02-12 20:22:19

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH V3 1/1] dt: add of_get_child_count helper function

On 02/11/2012 11:22 AM, Dong Aisheng wrote:
> Currently most code to get child count in kernel are almost same,
> add a helper to implement this function for dt to use.
>
> Signed-off-by: Dong Aisheng <[email protected]>
> Cc: Grant Likely <[email protected]>
> Cc: Rob Herring <[email protected]>
>
> ---
> Hi Rob,
>
> Since my imx pinctrl driver series still depends on the pinctrl core dt
> binding patch which is still not in mainline, i'd like this pure dt patch
> go separately first in case others want to use.
>

Applied for 3.4.

Rob

> changes v2->v3:
> Addressed some people's comments:
> * do not use assignment as expression
> * return 0 for non-dt case
>
> Changes v1->v2:
> * change the name from of_get_child_number to of_get_child_count
> ---
> include/linux/of.h | 16 ++++++++++++++++
> 1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/of.h b/include/linux/of.h
> index a75a831..ae242ef 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -195,6 +195,17 @@ extern struct device_node *of_get_next_child(const struct device_node *node,
> for (child = of_get_next_child(parent, NULL); child != NULL; \
> child = of_get_next_child(parent, child))
>
> +static inline int of_get_child_count(const struct device_node *np)
> +{
> + struct device_node *child = NULL;
> + int num = 0;
> +
> + while ((child = of_get_next_child(np, child)) != NULL)
> + num++;
> +
> + return num;
> +}
> +
> extern struct device_node *of_find_node_with_property(
> struct device_node *from, const char *prop_name);
> #define for_each_node_with_property(dn, prop_name) \
> @@ -268,6 +279,11 @@ static inline bool of_have_populated_dt(void)
> #define for_each_child_of_node(parent, child) \
> while (0)
>
> +static inline int of_get_child_count(const struct device_node *np)
> +{
> + return 0;
> +}
> +
> static inline int of_device_is_compatible(const struct device_node *device,
> const char *name)
> {

2012-02-13 00:04:41

by Grant Likely

[permalink] [raw]
Subject: Re: [PATCH V3 1/1] dt: add of_get_child_count helper function

On Sat, Feb 11, 2012 at 10:22 AM, Dong Aisheng <[email protected]> wrote:
> Currently most code to get child count in kernel are almost same,
> add a helper to implement this function for dt to use.
>
> Signed-off-by: Dong Aisheng <[email protected]>
> Cc: Grant Likely <[email protected]>
> Cc: Rob Herring <[email protected]>
>
> ---
> Hi Rob,
>
> Since my imx pinctrl driver series still depends on the pinctrl core dt
> binding patch which is still not in mainline, i'd like this pure dt patch
> go separately first in case others want to use.
>
> changes v2->v3:
> ?Addressed some people's comments:
> ?* do not use assignment as expression
> ?* return 0 for non-dt case
>
> Changes v1->v2:
> ?* change the name from of_get_child_number to of_get_child_count
> ---
> ?include/linux/of.h | ? 16 ++++++++++++++++
> ?1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/of.h b/include/linux/of.h
> index a75a831..ae242ef 100644
> --- a/include/linux/of.h
> +++ b/include/linux/of.h
> @@ -195,6 +195,17 @@ extern struct device_node *of_get_next_child(const struct device_node *node,
> ? ? ? ?for (child = of_get_next_child(parent, NULL); child != NULL; \
> ? ? ? ? ? ? child = of_get_next_child(parent, child))
>
> +static inline int of_get_child_count(const struct device_node *np)
> +{
> + ? ? ? struct device_node *child = NULL;
> + ? ? ? int num = 0;
> +
> + ? ? ? while ((child = of_get_next_child(np, child)) != NULL)
> + ? ? ? ? ? ? ? num++;

Use for_each_child_of_node()

g.