All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly
@ 2021-08-06 22:09 Daniel Scally
  2021-08-06 22:09 ` [PATCH RESEND v3 1/2] device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint() Daniel Scally
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Daniel Scally @ 2021-08-06 22:09 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-acpi, gregkh, rafael, andriy.shevchenko, laurent.pinchart

Hello all

A while ago I patched fwnode_graph_get_endpoint_by_id() to check for endpoints
against fwnode->secondary if none was found against the primary. It's actually
better to do this in fwnode_graph_get_next_endpoint() instead, since that
function is called by fwnode_graph_get_endpoint_by_id() and also directly called
in a bunch of other places (primarily sensor drivers checking that they have
endpoints connected during probe). This small series just adds the equivalent
functionality to fwnode_graph_get_next_endpoint() and reverts the earlier
commit.

Resending with +CC linux-acpi

Thanks
Dan


Daniel Scally (2):
  device property: Check fwnode->secondary in
    fwnode_graph_get_next_endpoint()
  Revert "media: device property: Call fwnode_graph_get_endpoint_by_id()
    for fwnode->secondary"

 drivers/base/property.c | 30 +++++++++++++++++++++---------
 1 file changed, 21 insertions(+), 9 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH RESEND v3 1/2] device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint()
  2021-08-06 22:09 [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly Daniel Scally
@ 2021-08-06 22:09 ` Daniel Scally
  2021-08-06 22:09 ` [PATCH RESEND v3 2/2] Revert "media: device property: Call fwnode_graph_get_endpoint_by_id() for fwnode->secondary" Daniel Scally
  2021-08-16 16:36 ` [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly Rafael J. Wysocki
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Scally @ 2021-08-06 22:09 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-acpi, gregkh, rafael, andriy.shevchenko, laurent.pinchart

Sensor drivers often check for an endpoint to make sure that they're
connected to a consuming device like a CIO2 during .probe(). Some of
those endpoints might be in the form of software_nodes assigned as
a secondary to the device's fwnode_handle. Account for this possibility
in fwnode_graph_get_next_endpoint() to avoid having to do it in the
sensor drivers themselves.

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Daniel Scally <djrscally@gmail.com>
---
 drivers/base/property.c | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index 1421e9548857..fb0e852dad5f 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -1036,7 +1036,26 @@ struct fwnode_handle *
 fwnode_graph_get_next_endpoint(const struct fwnode_handle *fwnode,
 			       struct fwnode_handle *prev)
 {
-	return fwnode_call_ptr_op(fwnode, graph_get_next_endpoint, prev);
+	const struct fwnode_handle *parent;
+	struct fwnode_handle *ep;
+
+	/*
+	 * If this function is in a loop and the previous iteration returned
+	 * an endpoint from fwnode->secondary, then we need to use the secondary
+	 * as parent rather than @fwnode.
+	 */
+	if (prev)
+		parent = fwnode_graph_get_port_parent(prev);
+	else
+		parent = fwnode;
+
+	ep = fwnode_call_ptr_op(parent, graph_get_next_endpoint, prev);
+
+	if (IS_ERR_OR_NULL(ep) &&
+	    !IS_ERR_OR_NULL(parent) && !IS_ERR_OR_NULL(parent->secondary))
+		ep = fwnode_graph_get_next_endpoint(parent->secondary, NULL);
+
+	return ep;
 }
 EXPORT_SYMBOL_GPL(fwnode_graph_get_next_endpoint);
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH RESEND v3 2/2] Revert "media: device property: Call fwnode_graph_get_endpoint_by_id() for fwnode->secondary"
  2021-08-06 22:09 [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly Daniel Scally
  2021-08-06 22:09 ` [PATCH RESEND v3 1/2] device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint() Daniel Scally
@ 2021-08-06 22:09 ` Daniel Scally
  2021-08-16 16:36 ` [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly Rafael J. Wysocki
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel Scally @ 2021-08-06 22:09 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-acpi, gregkh, rafael, andriy.shevchenko, laurent.pinchart

This reverts commit acd418bfcfc415cf5e6414b6d1c6acfec850f290. Checking for
endpoints against fwnode->secondary in fwnode_graph_get_next_endpoint() is
a better way to do this since that function is also used in a bunch of
other places, for instance sensor drivers checking that they do have an
endpoint connected during probe.

This reversion depends on the previous patch in this series, "device property:
Check fwnode->secondary in fwnode_graph_get_next_endpoint()".

Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Daniel Scally <djrscally@gmail.com>
---

Changes in v3:

	- specified that this patch depends on 1/2 (Greg)

 drivers/base/property.c | 9 +--------
 1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index fb0e852dad5f..c6bb3d453c57 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -1234,14 +1234,7 @@ fwnode_graph_get_endpoint_by_id(const struct fwnode_handle *fwnode,
 		best_ep_id = fwnode_ep.id;
 	}
 
-	if (best_ep)
-		return best_ep;
-
-	if (fwnode && !IS_ERR_OR_NULL(fwnode->secondary))
-		return fwnode_graph_get_endpoint_by_id(fwnode->secondary, port,
-						       endpoint, flags);
-
-	return NULL;
+	return best_ep;
 }
 EXPORT_SYMBOL_GPL(fwnode_graph_get_endpoint_by_id);
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly
  2021-08-06 22:09 [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly Daniel Scally
  2021-08-06 22:09 ` [PATCH RESEND v3 1/2] device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint() Daniel Scally
  2021-08-06 22:09 ` [PATCH RESEND v3 2/2] Revert "media: device property: Call fwnode_graph_get_endpoint_by_id() for fwnode->secondary" Daniel Scally
@ 2021-08-16 16:36 ` Rafael J. Wysocki
  2 siblings, 0 replies; 4+ messages in thread
From: Rafael J. Wysocki @ 2021-08-16 16:36 UTC (permalink / raw)
  To: Daniel Scally
  Cc: Linux Kernel Mailing List, ACPI Devel Maling List,
	Greg Kroah-Hartman, Rafael J. Wysocki, Andy Shevchenko,
	Laurent Pinchart

On Sat, Aug 7, 2021 at 12:09 AM Daniel Scally <djrscally@gmail.com> wrote:
>
> Hello all
>
> A while ago I patched fwnode_graph_get_endpoint_by_id() to check for endpoints
> against fwnode->secondary if none was found against the primary. It's actually
> better to do this in fwnode_graph_get_next_endpoint() instead, since that
> function is called by fwnode_graph_get_endpoint_by_id() and also directly called
> in a bunch of other places (primarily sensor drivers checking that they have
> endpoints connected during probe). This small series just adds the equivalent
> functionality to fwnode_graph_get_next_endpoint() and reverts the earlier
> commit.
>
> Resending with +CC linux-acpi

Both patches applied as 5.15 material, thanks!

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-08-16 16:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-06 22:09 [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly Daniel Scally
2021-08-06 22:09 ` [PATCH RESEND v3 1/2] device property: Check fwnode->secondary in fwnode_graph_get_next_endpoint() Daniel Scally
2021-08-06 22:09 ` [PATCH RESEND v3 2/2] Revert "media: device property: Call fwnode_graph_get_endpoint_by_id() for fwnode->secondary" Daniel Scally
2021-08-16 16:36 ` [PATCH RESEND v3 0/2] Check for endpoints in fwnode->secondary more sensibly Rafael J. Wysocki

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.