[PATCHv6+ 01/13] of: introduce of_property_for_earch_phandle_with_args()
From: Stephen Warren <hidden>
Date: 2013-12-16 17:14:50
Also in:
linux-devicetree, linux-iommu, linux-tegra, lkml
On 12/14/2013 08:51 AM, Hiroshi Doyu wrote:
Hiroshi Doyu [off-list ref] wrote @ Thu, 12 Dec 2013 14:14:04 +0200 (EET):quoted
quoted
quoted
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>....quoted
quoted
quoted
--- 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
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.Stephen, let me know what you think.
It's hard to follow there have been so many revisions. As long as the result is reasonable, I'll be OK with it. IIRC, I objected to using a state structure for values that weren't needed by both functions, but if both functions need the values, that's fine. I suppose even if they don't both need the values, putting them in a state structure is OK too if it means the patch gets finished!