From: Sasha Levin <sashal@kernel.org>
To: stable@vger.kernel.org
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
"Rafael J. Wysocki (Intel)" <rafael@kernel.org>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Danilo Krummrich <dakr@kernel.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.10.y 8/8] device property: Allow secondary lookup in fwnode_get_next_child_node()
Date: Tue, 17 Mar 2026 13:19:54 -0400 [thread overview]
Message-ID: <20260317171954.238398-8-sashal@kernel.org> (raw)
In-Reply-To: <20260317171954.238398-1-sashal@kernel.org>
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
[ Upstream commit 2692c614f8f05929d692b3dbfd3faef1f00fbaf0 ]
When device_get_child_node_count() got split to the fwnode and device
respective APIs, the fwnode didn't inherit the ability to traverse over
the secondary fwnode. Hence any user, that switches from device to fwnode
API misses this feature. In particular, this was revealed by the commit
1490cbb9dbfd ("device property: Split fwnode_get_child_node_count()")
that effectively broke the GPIO enumeration on Intel Galileo boards.
Fix this by moving the secondary lookup from device to fwnode API.
Note, in general no device_*() API should go into the depth of the fwnode
implementation.
Fixes: 114dbb4fa7c4 ("drivers property: When no children in primary, try secondary")
Cc: stable@vger.kernel.org
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Link: https://patch.msgid.link/20260210135822.47335-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/base/property.c | 27 +++++++++++++--------------
1 file changed, 13 insertions(+), 14 deletions(-)
diff --git a/drivers/base/property.c b/drivers/base/property.c
index ed767dc2630d0..2577d0e9bfbd7 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -740,7 +740,18 @@ struct fwnode_handle *
fwnode_get_next_child_node(const struct fwnode_handle *fwnode,
struct fwnode_handle *child)
{
- return fwnode_call_ptr_op(fwnode, get_next_child_node, child);
+ struct fwnode_handle *next;
+
+ if (IS_ERR_OR_NULL(fwnode))
+ return NULL;
+
+ /* Try to find a child in primary fwnode */
+ next = fwnode_call_ptr_op(fwnode, get_next_child_node, child);
+ if (next)
+ return next;
+
+ /* When no more children in primary, continue with secondary */
+ return fwnode_call_ptr_op(fwnode->secondary, get_next_child_node, child);
}
EXPORT_SYMBOL_GPL(fwnode_get_next_child_node);
@@ -778,19 +789,7 @@ EXPORT_SYMBOL_GPL(fwnode_get_next_available_child_node);
struct fwnode_handle *device_get_next_child_node(struct device *dev,
struct fwnode_handle *child)
{
- const struct fwnode_handle *fwnode = dev_fwnode(dev);
- struct fwnode_handle *next;
-
- if (IS_ERR_OR_NULL(fwnode))
- return NULL;
-
- /* Try to find a child in primary fwnode */
- next = fwnode_get_next_child_node(fwnode, child);
- if (next)
- return next;
-
- /* When no more children in primary, continue with secondary */
- return fwnode_get_next_child_node(fwnode->secondary, child);
+ return fwnode_get_next_child_node(dev_fwnode(dev), child);
}
EXPORT_SYMBOL_GPL(device_get_next_child_node);
--
2.51.0
prev parent reply other threads:[~2026-03-17 17:20 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-17 11:35 FAILED: patch "[PATCH] device property: Allow secondary lookup in" failed to apply to 5.10-stable tree gregkh
2026-03-17 17:19 ` [PATCH 5.10.y 1/8] device property: Add fwnode_is_ancestor_of() and fwnode_get_next_parent_dev() Sasha Levin
2026-03-17 17:19 ` [PATCH 5.10.y 2/8] media: device property: Return true in fwnode_device_is_available for NULL ops Sasha Levin
2026-03-17 17:19 ` [PATCH 5.10.y 3/8] device property: Retrieve fwnode from of_node via accessor Sasha Levin
2026-03-17 17:19 ` [PATCH 5.10.y 4/8] device property: Unify access to of_node Sasha Levin
2026-03-17 17:19 ` [PATCH 5.10.y 5/8] device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint() Sasha Levin
2026-03-17 17:19 ` [PATCH 5.10.y 6/8] device property: Check fwnode->secondary when finding properties Sasha Levin
2026-03-17 17:19 ` [PATCH 5.10.y 7/8] device property: Allow error pointer to be passed to fwnode APIs Sasha Levin
2026-03-17 17:19 ` Sasha Levin [this message]
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=20260317171954.238398-8-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=dakr@kernel.org \
--cc=rafael@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=stable@vger.kernel.org \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox