Thread (33 messages) 33 messages, 5 authors, 2013-12-16

[PATCHv6+ 01/13] of: introduce of_property_for_earch_phandle_with_args()

From: Hiroshi Doyu <hidden>
Date: 2013-12-12 12:15:22
Also in: linux-devicetree, linux-iommu, linux-tegra, lkml

Grant Likely [off-list ref] wrote @ Thu, 12 Dec 2013 12:34:17 +0100:
On Wed, 11 Dec 2013 14:33:38 +0100, Hiroshi Doyu [off-list ref] wrote:
quoted
Hi Grant,

Grant Likely [off-list ref] wrote @ Wed, 11 Dec 2013 14:28:45 +0100:
quoted
On Thu, 21 Nov 2013 11:57:00 -0700, Stephen Warren [off-list ref] wrote:
quoted
On 11/21/2013 10:17 AM, Hiroshi Doyu wrote:
quoted
Iterating over a property containing a list of phandles with arguments
is a common operation for device drivers. This patch adds a new
of_property_for_each_phandle_with_args() macro to make the iteration
simpler.

Signed-off-by: Hiroshi Doyu <redacted>
---
v6+:
Use the description, which Grant Likely proposed, to be full enough
that a future reader can figure out why a patch was written.
  http://lists.linuxfoundation.org/pipermail/iommu/2013-November/007062.html
...
quoted
That's right, I forgot I said that. Yes please fix the implementation.
Here's the latest. I'll include this with the next v7 series.

Can I get your Acked-by with this?

--8<----

From 8f7c0404aa68f0e8dbe0babc240590f6528ecc1f Mon Sep 17 00:00:00 2001
From: Hiroshi Doyu <redacted>
Date: Fri, 15 Nov 2013 10:52:53 +0200
Subject: [PATCH] of: introduce of_property_for_each_phandle_with_args()

Iterating over a property containing a list of phandles with arguments
is a common operation for device drivers. This patch adds a new
of_property_for_each_phandle_with_args() macro to make the iteration
simpler.

Signed-off-by: Hiroshi Doyu <redacted>
Cc: Rob Herring <redacted>
---
v7:
Fixed some minors pointed by Rob and Stephen.

v6++++:
Iterate without intrducing a new struct.

v6+++:
Introduced a new struct "of_phandle_iter" to keep the state when
iterating over the list.

v6++:
Optimized to avoid O(n^2), suggested by Stephen Warren.
http://lists.linuxfoundation.org/pipermail/iommu/2013-November/007066.html

I didn't introduce any struct to hold params and state here.

v6+:
Use the description, which Grant Likely proposed, to be full enough
that a future reader can figure out why a patch was written.

v5:
New patch for v5.

Signed-off-by: Hiroshi Doyu <redacted>
---
 drivers/of/base.c  | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/of.h | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 78 insertions(+)
diff --git a/drivers/of/base.c b/drivers/of/base.c
index f807d0e..cd4ab05 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -1201,6 +1201,52 @@ void of_print_phandle_args(const char *msg, const struct of_phandle_args *args)
      printk("\n");
 }

+const __be32 *of_phandle_iter_next(const char *cells_name, int cell_count,
+                                const __be32 *cur, const __be32 *end,
+                                struct of_phandle_args *out_args)
Having to pass in cells_name, cell_count, cur and end each time seems a
little odd. Can a state structure be used instead?

struct of_phandle_iter_state {
        const char *cells_name;
        int cells_count;
        const __be32 *cur;
        const __be32 *end;
        struct of_phandle_args out_args;
}

Make the caller provide one of those and fill it in with the init
function.
I rewrote this a few times and so now I have a few version of this
implementations :-) The above proposal is similar to the version v6+++
mentioned in the above patch note:
quoted
v6+++:
Introduced a new struct "of_phandle_iter" to keep the state when
iterating over the list.
which is:

  [RFC][PATCHv6+++ 01/13] of: introduce of_property_for_earch_phandle_with_args()
    http://lists.linuxfoundation.org/pipermail/iommu/2013-November/007087.html

Stephen seemed to prefer the version without state struct. I like the
idea to not pass the same arguments repeatly. Instead, wrapping them
in a struct with state may look better.

So if Stephen agrees, I'll rewrite the version with state struct
again.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help