From: Furquan Shaikh <furquan@chromium.org> To: "Rafael J . Wysocki" <rjw@rjwysocki.net>, Mark Brown <broonie@kernel.org> Cc: Liam Girdwood <lgirdwood@gmail.com>, Tony Lindgren <tony@atomide.com>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, Len Brown <lenb@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Hanjun Guo <hanjun.guo@linaro.org>, Will Deacon <will.deacon@arm.com>, Rob Herring <robh@kernel.org>, Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>, Heikki Krogerus <heikki.krogerus@linux.intel.com>, Adam Thomson <Adam.Thomson.Opensource@diasemi.com>, Linus Walleij <linus.walleij@linaro.org>, Alexandre Courbot <gnurou@gmail.com>, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Dmitry Torokhov <dtor@chromium.org>, Furquan Shaikh <furquan@> Subject: [PATCH 3/7] device property: introduce fwnode_for_each_child() Date: Tue, 24 Jan 2017 16:06:37 -0800 [thread overview] Message-ID: <20170125000641.25520-4-furquan@chromium.org> (raw) In-Reply-To: <20170125000641.25520-1-furquan@chromium.org> From: Dmitry Torokhov <dtor@chromium.org> Generic code, that wishes to work with ACPI, device tree, and pset properties needs iterator that can work with fwnode_handle. Signed-off-by: Dmitry Torokhov <dtor@chromium.org> Signed-off-by: Furquan Shaikh <furquan@chromium.org> --- drivers/base/property.c | 33 +++++++++++++++++++++++---------- include/linux/fwnode.h | 7 +++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/drivers/base/property.c b/drivers/base/property.c index f2f8220534c4..fbb05a4a7595 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -867,6 +867,28 @@ int device_add_properties(struct device *dev, struct property_entry *properties) EXPORT_SYMBOL_GPL(device_add_properties); /** + * fwnode_get_next_child_node - Return the next child node handle for a device + * @node: Node to find the next child node for. + * @child: Handle to one of the device's child nodes or a null handle. + */ +struct fwnode_handle *fwnode_get_next_child_node(struct fwnode_handle *node, + struct fwnode_handle *child) +{ + if (IS_ENABLED(CONFIG_OF) && is_of_node(node)) { + struct device_node *np; + + np = of_get_next_available_child(to_of_node(node), + to_of_node(child)); + if (np) + return &np->fwnode; + } else if (IS_ENABLED(CONFIG_ACPI) && is_acpi_node(node)) { + return acpi_get_next_subnode(node, child); + } + return NULL; +} +EXPORT_SYMBOL_GPL(fwnode_get_next_child_node); + +/** * device_get_next_child_node - Return the next child node handle for a device * @dev: Device to find the next child node for. * @child: Handle to one of the device's child nodes or a null handle. @@ -874,16 +896,7 @@ EXPORT_SYMBOL_GPL(device_add_properties); struct fwnode_handle *device_get_next_child_node(struct device *dev, struct fwnode_handle *child) { - if (IS_ENABLED(CONFIG_OF) && dev->of_node) { - struct device_node *node; - - node = of_get_next_available_child(dev->of_node, to_of_node(child)); - if (node) - return &node->fwnode; - } else if (IS_ENABLED(CONFIG_ACPI)) { - return acpi_get_next_subnode(dev->fwnode, child); - } - return NULL; + return fwnode_get_next_child_node(dev_fwnode(dev), child); } EXPORT_SYMBOL_GPL(device_get_next_child_node); diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h index 8bd28ce6d76e..b4efe2a088ae 100644 --- a/include/linux/fwnode.h +++ b/include/linux/fwnode.h @@ -27,4 +27,11 @@ struct fwnode_handle { struct fwnode_handle *secondary; }; +struct fwnode_handle *fwnode_get_next_child_node(struct fwnode_handle *node, + struct fwnode_handle *child); + +#define fwnode_for_each_child_node(node, child) \ + for (child = fwnode_get_next_child_node(node, NULL); child; \ + child = fwnode_get_next_child_node(node, child)) + #endif -- 2.11.0.483.g087da7b7c-goog
WARNING: multiple messages have this Message-ID (diff)
From: Furquan Shaikh <furquan@chromium.org> To: "Rafael J . Wysocki" <rjw@rjwysocki.net>, Mark Brown <broonie@kernel.org> Cc: Liam Girdwood <lgirdwood@gmail.com>, Tony Lindgren <tony@atomide.com>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, Len Brown <lenb@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Hanjun Guo <hanjun.guo@linaro.org>, Will Deacon <will.deacon@arm.com>, Rob Herring <robh@kernel.org>, Sathyanarayana Nujella <sathyanarayana.nujella@intel.com>, Heikki Krogerus <heikki.krogerus@linux.intel.com>, Adam Thomson <Adam.Thomson.Opensource@diasemi.com>, Linus Walleij <linus.walleij@linaro.org>, Alexandre Courbot <gnurou@gmail.com>, linux-gpio@vger.kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org, Dmitry Torokhov <dtor@chromium.org>, Furquan Shaikh <furquan@chromium.org> Subject: [PATCH 3/7] device property: introduce fwnode_for_each_child() Date: Tue, 24 Jan 2017 16:06:37 -0800 [thread overview] Message-ID: <20170125000641.25520-4-furquan@chromium.org> (raw) In-Reply-To: <20170125000641.25520-1-furquan@chromium.org> From: Dmitry Torokhov <dtor@chromium.org> Generic code, that wishes to work with ACPI, device tree, and pset properties needs iterator that can work with fwnode_handle. Signed-off-by: Dmitry Torokhov <dtor@chromium.org> Signed-off-by: Furquan Shaikh <furquan@chromium.org> --- drivers/base/property.c | 33 +++++++++++++++++++++++---------- include/linux/fwnode.h | 7 +++++++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/drivers/base/property.c b/drivers/base/property.c index f2f8220534c4..fbb05a4a7595 100644 --- a/drivers/base/property.c +++ b/drivers/base/property.c @@ -867,6 +867,28 @@ int device_add_properties(struct device *dev, struct property_entry *properties) EXPORT_SYMBOL_GPL(device_add_properties); /** + * fwnode_get_next_child_node - Return the next child node handle for a device + * @node: Node to find the next child node for. + * @child: Handle to one of the device's child nodes or a null handle. + */ +struct fwnode_handle *fwnode_get_next_child_node(struct fwnode_handle *node, + struct fwnode_handle *child) +{ + if (IS_ENABLED(CONFIG_OF) && is_of_node(node)) { + struct device_node *np; + + np = of_get_next_available_child(to_of_node(node), + to_of_node(child)); + if (np) + return &np->fwnode; + } else if (IS_ENABLED(CONFIG_ACPI) && is_acpi_node(node)) { + return acpi_get_next_subnode(node, child); + } + return NULL; +} +EXPORT_SYMBOL_GPL(fwnode_get_next_child_node); + +/** * device_get_next_child_node - Return the next child node handle for a device * @dev: Device to find the next child node for. * @child: Handle to one of the device's child nodes or a null handle. @@ -874,16 +896,7 @@ EXPORT_SYMBOL_GPL(device_add_properties); struct fwnode_handle *device_get_next_child_node(struct device *dev, struct fwnode_handle *child) { - if (IS_ENABLED(CONFIG_OF) && dev->of_node) { - struct device_node *node; - - node = of_get_next_available_child(dev->of_node, to_of_node(child)); - if (node) - return &node->fwnode; - } else if (IS_ENABLED(CONFIG_ACPI)) { - return acpi_get_next_subnode(dev->fwnode, child); - } - return NULL; + return fwnode_get_next_child_node(dev_fwnode(dev), child); } EXPORT_SYMBOL_GPL(device_get_next_child_node); diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h index 8bd28ce6d76e..b4efe2a088ae 100644 --- a/include/linux/fwnode.h +++ b/include/linux/fwnode.h @@ -27,4 +27,11 @@ struct fwnode_handle { struct fwnode_handle *secondary; }; +struct fwnode_handle *fwnode_get_next_child_node(struct fwnode_handle *node, + struct fwnode_handle *child); + +#define fwnode_for_each_child_node(node, child) \ + for (child = fwnode_get_next_child_node(node, NULL); child; \ + child = fwnode_get_next_child_node(node, child)) + #endif -- 2.11.0.483.g087da7b7c-goog
next prev parent reply other threads:[~2017-01-25 0:06 UTC|newest] Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-01-25 0:06 [PATCH 0/7] Implement generic regulator constraints parsing for ACPI and OF Furquan Shaikh 2017-01-25 0:06 ` [PATCH 1/7] drivers/regulator: Rename of_map_mode to map_mode in regulator desc Furquan Shaikh 2017-01-25 0:06 ` [PATCH 2/7] ACPI / property: have acpi_get_next_subnode take fwnode_handle Furquan Shaikh 2017-01-25 0:06 ` Furquan Shaikh 2017-01-25 11:00 ` kbuild test robot 2017-01-25 11:00 ` kbuild test robot 2017-01-25 0:06 ` Furquan Shaikh [this message] 2017-01-25 0:06 ` [PATCH 3/7] device property: introduce fwnode_for_each_child() Furquan Shaikh 2017-01-25 0:06 ` [PATCH 4/7] device property: introduce fwnode_get_named_child_node() Furquan Shaikh 2017-01-25 0:06 ` Furquan Shaikh 2017-01-25 0:06 ` [PATCH 5/7] device property: Export dev_fwnode Furquan Shaikh 2017-01-25 0:06 ` [PATCH 6/7] drivers/gpio: Add and export gpiod_lookup[_index] Furquan Shaikh 2017-01-25 0:06 ` Furquan Shaikh 2017-01-25 11:18 ` kbuild test robot 2017-01-25 11:18 ` kbuild test robot 2017-01-26 15:24 ` Linus Walleij 2017-01-26 15:24 ` Linus Walleij 2017-01-25 0:06 ` [PATCH 7/7] drivers/regulator: Initialize regulator init data for ACPI regulators Furquan Shaikh 2017-01-25 12:29 ` [PATCH 0/7] Implement generic regulator constraints parsing for ACPI and OF Lorenzo Pieralisi 2017-01-25 12:49 ` Mark Brown 2017-01-25 12:49 ` Mark Brown 2017-01-25 12:55 ` Rafael J. Wysocki 2017-01-25 12:55 ` Rafael J. Wysocki 2017-01-25 16:56 ` Furquan Shaikh 2017-01-25 16:56 ` Furquan Shaikh 2017-01-25 18:23 ` Mark Rutland 2017-01-25 18:23 ` Mark Rutland 2017-01-25 18:29 ` Mark Brown 2017-01-25 18:29 ` Mark Brown 2017-01-25 18:34 ` Mark Rutland 2017-01-25 18:34 ` Mark Rutland 2017-01-25 18:49 ` Mark Brown 2017-01-25 18:49 ` Mark Brown 2017-01-25 19:39 ` Mark Rutland 2017-01-25 19:39 ` Mark Rutland 2017-01-25 18:44 ` Dmitry Torokhov 2017-01-25 18:44 ` Dmitry Torokhov 2017-01-25 19:27 ` Dmitry Torokhov 2017-01-25 19:27 ` Dmitry Torokhov 2017-01-25 20:39 ` Mark Brown 2017-01-25 20:39 ` Mark Brown 2017-01-25 21:17 ` Dmitry Torokhov 2017-01-25 21:17 ` Dmitry Torokhov 2017-01-25 21:30 ` Mark Brown 2017-01-25 21:30 ` Mark Brown 2017-01-25 22:05 ` Dmitry Torokhov 2017-01-25 22:05 ` Dmitry Torokhov 2017-01-25 22:25 ` Mark Brown 2017-01-25 22:25 ` Mark Brown 2017-01-25 21:44 ` Al Stone 2017-01-25 21:44 ` Al Stone 2017-01-25 23:27 ` Dmitry Torokhov 2017-01-25 23:27 ` Dmitry Torokhov 2017-01-26 0:15 ` Al Stone 2017-01-26 0:15 ` Al Stone 2017-01-26 0:33 ` Dmitry Torokhov 2017-01-26 0:33 ` Dmitry Torokhov 2017-01-26 10:35 ` Rafael J. Wysocki 2017-01-26 10:35 ` Rafael J. Wysocki 2017-02-04 16:08 ` Mark Brown 2017-02-04 16:08 ` Mark Brown 2017-01-25 19:21 ` Lorenzo Pieralisi 2017-01-25 19:21 ` Lorenzo Pieralisi 2017-01-25 20:40 ` Mark Brown 2017-01-25 20:40 ` Mark Brown 2017-01-25 18:25 ` Mark Brown 2017-01-25 18:25 ` Mark Brown
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170125000641.25520-4-furquan@chromium.org \ --to=furquan@chromium.org \ --cc=Adam.Thomson.Opensource@diasemi.com \ --cc=broonie@kernel.org \ --cc=dmitry.torokhov@gmail.com \ --cc=dtor@chromium.org \ --cc=gnurou@gmail.com \ --cc=gregkh@linuxfoundation.org \ --cc=hanjun.guo@linaro.org \ --cc=heikki.krogerus@linux.intel.com \ --cc=lenb@kernel.org \ --cc=lgirdwood@gmail.com \ --cc=linus.walleij@linaro.org \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-gpio@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=rjw@rjwysocki.net \ --cc=robh@kernel.org \ --cc=sathyanarayana.nujella@intel.com \ --cc=tony@atomide.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.