From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: "Niklas Söderlund" <niklas.soderlund@ragnatech.se>,
"Jacopo Mondi" <jacopo.mondi@ideasonboard.com>,
linux-media@vger.kernel.org,
"Philipp Zabel" <p.zabel@pengutronix.de>,
hverkuil@xs4all.nl, "Francesco Dolcini" <francesco@dolcini.it>,
aishwarya.kothari@toradex.com, "Robert Foss" <rfoss@kernel.org>,
"Todor Tomov" <todor.too@gmail.com>,
"Hyun Kwon" <hyun.kwon@xilinx.com>
Subject: Re: [PATCH 03/18] media: v4l: async: Simplify async sub-device fwnode matching
Date: Tue, 25 Apr 2023 04:37:42 +0300 [thread overview]
Message-ID: <20230425013742.GL4921@pendragon.ideasonboard.com> (raw)
In-Reply-To: <ZEbZcvaAp7ExU7KA@kekkonen.localdomain>
Hi Sakari,
On Mon, Apr 24, 2023 at 10:33:06PM +0300, Sakari Ailus wrote:
> On Mon, Apr 24, 2023 at 09:20:22PM +0200, Niklas Söderlund wrote:
> > On 2023-04-14 14:07:40 +0300, Sakari Ailus wrote:
> > > On Thu, Apr 13, 2023 at 06:50:04PM +0200, Jacopo Mondi wrote:
> > > > On Thu, Mar 30, 2023 at 02:58:38PM +0300, Sakari Ailus wrote:
> > > > > V4L2 async sub-device matching originally used the device nodes only.
> > > > > Endpoint nodes were taken into use instead as using the device nodes was
> > > > > problematic for it was in some cases ambiguous which link might have been
> > > > > in question.
> > > > >
> > > > > There is however no need to use endpoint nodes on both sides, as the async
> > > > > sub-device's fwnode can always be trivially obtained using
> > > > > fwnode_graph_get_remote_endpoint() when needed while what counts is
> > > > > whether or not the link is between two device nodes, i.e. the device nodes
> > > > > match.
> > > >
> > > > As you know I'm a bit debated.
> > > >
> > > > Strict endpoint-matching requires one subdev to be registed per each
> > > > endpoint, and this is tedious for drivers that have to register a
> > > > subdev for each of its endpoints
> > > >
> > > > Allowing a subdev to be matched multiple times on different endpoints
> > > > gives a way for lazy drivers to take a shortcut and simplify their
> > > > topologies to a single subdev, when they would actually need more.
> > >
> > > I'd say this is really about interface design, not being "lazy". It depends
> > > on the sub-device. Ideally the framework should be also as easy for drivers
> > > drivers to use as possible.
> > >
> > > What is not supported, though, is multiple sub-devices with a single device
> > > node. Do we need that? At least I don't think I came across a driver that
> > > would.
> >
> > If I understand you correctly about multiple sub-device from a single
> > device node, this exists today. The ADV748x driver have a single device
> > node in DT and register multiple sub-devices, one for each source
> > endpoint.
> >
> > The ADV748x have two CSI-2 transmitters, one 4-lane and one 1-lane as
> > well as two different video capture "ports" one HDMI and one CVBS. Both
> > capture ports can be active at the same time and routed internally
> > inside the ADV748x to the two different CSI-2 transmitters.
> >
> > In order todo this the ADV748x register multiple subdevices and modifies
> > the fwnode to be the endpoint instead of the device node. So the change
> > in this patch for ADV748x driver would break that driver.
>
> Ah, indeed. I guess I'll need to support that case as well then. It doesn't
> seem to be troublesome to implement, but I'm tempted making it a special
> case: every other driver would apparently be fine matching with device
> fwnode whereas doing endpoint-to-endpoint matching adds complexity to the
> drivers. This patch removes about 100 lines of rather ugly code largely
> from v4l2-async.
It's only 50 lines from v4l2-async, and I don't think the code is uglier
than the rest of the file :-) In general, I prefer implementing tricky
code in the framework and simplifying drivers. I think our goals align
there, the framework should do the right thing by default for the
majority of cases. However, as Niklas pointed out, endpoint matching is
needed for drivers that register multiple subdevs with external
connections (such as the adv742x), and that's exactly why endpoint
matching was added in the first place. I think this needs to be kept.
> There are other issues in the set with connection-subdev relations, I'll
> post v2 to address those as well.
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2023-04-25 1:37 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-30 11:58 [PATCH 00/18] Separate links and async sub-devices Sakari Ailus
2023-03-30 11:58 ` [PATCH 01/18] media: v4l: async: Return async sub-devices to subnotifier list Sakari Ailus
2023-04-13 16:49 ` Jacopo Mondi
2023-04-25 1:28 ` Laurent Pinchart
2023-04-25 8:32 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 02/18] media: v4l: async: Add some debug prints Sakari Ailus
2023-04-13 16:49 ` Jacopo Mondi
2023-04-14 10:46 ` Sakari Ailus
2023-04-21 8:18 ` Laurent Pinchart
2023-04-27 9:18 ` Sakari Ailus
2023-04-27 17:27 ` Laurent Pinchart
2023-04-28 7:29 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 03/18] media: v4l: async: Simplify async sub-device fwnode matching Sakari Ailus
2023-04-13 16:50 ` Jacopo Mondi
2023-04-14 11:07 ` Sakari Ailus
2023-04-24 19:20 ` Niklas Söderlund
2023-04-24 19:33 ` Sakari Ailus
2023-04-25 1:37 ` Laurent Pinchart [this message]
2023-04-27 9:23 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 04/18] media: v4l: async: Make V4L2 async match information a struct Sakari Ailus
2023-04-13 16:51 ` Jacopo Mondi
2023-04-27 10:47 ` Sakari Ailus
2023-04-25 1:10 ` Laurent Pinchart
2023-04-27 10:36 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 05/18] media: v4l: async: Clean testing for duplicated async subdevs Sakari Ailus
2023-04-13 16:58 ` Jacopo Mondi
2023-04-14 11:16 ` Sakari Ailus
2023-04-25 1:15 ` Laurent Pinchart
2023-04-27 11:06 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 06/18] media: v4l: async: Only pass match information for async subdev validation Sakari Ailus
2023-04-14 7:15 ` Jacopo Mondi
2023-04-14 11:39 ` Sakari Ailus
2023-04-25 1:24 ` Laurent Pinchart
2023-04-27 11:45 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 07/18] media: v4l: async: Clean up list heads and entries Sakari Ailus
2023-04-14 7:26 ` Jacopo Mondi
2023-04-14 11:54 ` Sakari Ailus
2023-04-25 0:49 ` Laurent Pinchart
2023-04-27 11:52 ` Sakari Ailus
2023-04-27 17:36 ` Laurent Pinchart
2023-04-28 7:37 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 08/18] media: v4l: async: Rename v4l2_async_subdev as v4l2_async_connection Sakari Ailus
2023-04-14 8:22 ` Jacopo Mondi
2023-04-14 12:17 ` Sakari Ailus
2023-04-25 0:59 ` Laurent Pinchart
2023-04-28 9:33 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 09/18] media: v4l: async: Differentiate connecting and creating sub-devices Sakari Ailus
2023-04-14 8:52 ` Jacopo Mondi
2023-04-14 13:35 ` Sakari Ailus
2023-04-25 2:14 ` Laurent Pinchart
2023-04-28 9:46 ` Sakari Ailus
2023-04-28 10:29 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 10/18] media: pxa_camera: Register V4L2 device early, fix probe error handling Sakari Ailus
2023-04-25 0:25 ` Laurent Pinchart
2023-04-28 11:21 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 11/18] media: marvell: cafe: Register V4L2 device earlier Sakari Ailus
2023-04-25 0:27 ` Laurent Pinchart
2023-04-28 11:22 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 12/18] media: am437x-vpfe: Register V4L2 device early Sakari Ailus
2023-03-30 11:58 ` [PATCH 13/18] media: omap3isp: Initialise V4L2 async notifier later Sakari Ailus
2023-03-30 11:58 ` [PATCH 14/18] media: xilinx-vipp: Init async notifier after registering V4L2 device Sakari Ailus
2023-04-25 0:31 ` Laurent Pinchart
2023-03-30 11:58 ` [PATCH 15/18] media: davinci: " Sakari Ailus
2023-03-30 11:58 ` [PATCH 16/18] media: qcom: Initialise V4L2 async notifier later Sakari Ailus
2023-03-30 11:58 ` [PATCH 17/18] media: v4l: async: Set v4l2_device in async notifier init Sakari Ailus
2023-04-25 0:35 ` Laurent Pinchart
2023-04-25 2:00 ` Laurent Pinchart
2023-04-28 10:35 ` Sakari Ailus
2023-04-28 10:33 ` Sakari Ailus
2023-03-30 11:58 ` [PATCH 18/18] Documentation: media: Document sub-device notifiers Sakari Ailus
2023-04-14 9:14 ` [PATCH 19/18] media: v4l: Drop v4l2_async_nf_parse_fwnode_endpoints() Jacopo Mondi
2023-04-25 1:06 ` Laurent Pinchart
2023-04-28 11:30 ` Sakari Ailus
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=20230425013742.GL4921@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=aishwarya.kothari@toradex.com \
--cc=francesco@dolcini.it \
--cc=hverkuil@xs4all.nl \
--cc=hyun.kwon@xilinx.com \
--cc=jacopo.mondi@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=niklas.soderlund@ragnatech.se \
--cc=p.zabel@pengutronix.de \
--cc=rfoss@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=todor.too@gmail.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: 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