From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Cc: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>,
"Sakari Ailus" <sakari.ailus@linux.intel.com>,
"Kieran Bingham" <kieran.bingham+renesas@ideasonboard.com>,
"Tomi Valkeinen" <tomi.valkeinen@ideasonboard.com>,
linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH 11/19] media: max9286: Use V4L2 Streams
Date: Thu, 2 May 2024 21:25:26 +0300 [thread overview]
Message-ID: <20240502182526.GR15807@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20240430103956.60190-12-jacopo.mondi@ideasonboard.com>
Hi Jacopo,
Thank you for the patch.
On Tue, Apr 30, 2024 at 12:39:47PM +0200, Jacopo Mondi wrote:
> Use V4L2 streams by introducing a static route table that reports
> how the enabled source links are routed through the CSI-2 source pad.
>
> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
> ---
> drivers/media/i2c/max9286.c | 43 +++++++++++++++++++++++--------------
> 1 file changed, 27 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
> index ae1b73fde832..f203e4527257 100644
> --- a/drivers/media/i2c/max9286.c
> +++ b/drivers/media/i2c/max9286.c
> @@ -800,7 +800,7 @@ static int max9286_s_stream(struct v4l2_subdev *sd, int enable)
> * Get the format from the first used sink pad, as all sink
> * formats must be identical.
> */
> - format = v4l2_subdev_state_get_format(state, source_idx);
> + format = v4l2_subdev_state_get_format(state, source_idx, 0);
>
> max9286_set_video_format(priv, format);
> max9286_set_fsync_period(priv, state);
> @@ -918,13 +918,14 @@ static int max9286_set_fmt(struct v4l2_subdev *sd,
> if (i == ARRAY_SIZE(max9286_formats))
> format->format.code = max9286_formats[0].code;
>
> - *v4l2_subdev_state_get_format(state, format->pad) = format->format;
> + *v4l2_subdev_state_get_format(state, format->pad, 0) = format->format;
>
> /*
> - * Apply the same format on the source pad: all links must have the
> + * Apply the same format on the opposite stream: all links must have the
> * same format.
> */
> - *v4l2_subdev_state_get_format(state, MAX9286_SRC_PAD) = format->format;
> + *v4l2_subdev_state_get_opposite_stream_format(state, format->pad, 0) =
> + format->format;
This would look nicer with an intermediate local variable.
>
> return 0;
> }
> @@ -957,23 +958,32 @@ static const struct v4l2_mbus_framefmt max9286_default_format = {
> .xfer_func = V4L2_XFER_FUNC_DEFAULT,
> };
>
> -static void max9286_init_format(struct v4l2_mbus_framefmt *fmt)
> -{
> - *fmt = max9286_default_format;
> -}
> -
> static int max9286_init_state(struct v4l2_subdev *sd,
> struct v4l2_subdev_state *state)
> {
> - struct v4l2_mbus_framefmt *format;
> - unsigned int i;
> + struct v4l2_subdev_route routes[MAX9286_N_SINKS];
> + struct max9286_priv *priv = sd_to_max9286(sd);
> + struct max9286_source *source;
> + unsigned int num_routes = 0;
>
> - for (i = 0; i < MAX9286_N_SINKS; i++) {
> - format = v4l2_subdev_state_get_format(state, i);
> - max9286_init_format(format);
> + for_each_source(priv, source) {
> + struct v4l2_subdev_route *route = &routes[num_routes++];
> + unsigned int index = to_index(priv, source);
> +
> + route->sink_pad = index;
> + route->sink_stream = 0;
> + route->source_pad = MAX9286_SRC_PAD;
> + route->source_stream = index;
> + route->flags = V4L2_SUBDEV_ROUTE_FL_ACTIVE;
> }
>
> - return 0;
> + struct v4l2_subdev_krouting routing = {
> + .num_routes = num_routes,
You need to set .len_routes too (the field will appear in v6.10, it's in
the stage tree already).
> + .routes = routes,
> + };
> +
> + return v4l2_subdev_set_routing_with_fmt(sd, state, &routing,
> + &max9286_default_format);
> }
>
> static const struct v4l2_subdev_internal_ops max9286_subdev_internal_ops = {
> @@ -1014,7 +1024,8 @@ static int max9286_v4l2_register(struct max9286_priv *priv)
> /* Configure V4L2 for the MAX9286 itself */
> v4l2_i2c_subdev_init(&priv->sd, priv->client, &max9286_subdev_ops);
> priv->sd.internal_ops = &max9286_subdev_internal_ops;
> - priv->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
> + priv->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE |
> + V4L2_SUBDEV_FL_STREAMS;
>
> v4l2_ctrl_handler_init(&priv->ctrls, 1);
> priv->pixelrate_ctrl = v4l2_ctrl_new_std(&priv->ctrls,
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2024-05-02 18:25 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-30 10:39 [PATCH 00/19] media: renesas: rcar-csi2: Support multiple streams Jacopo Mondi
2024-04-30 10:39 ` [PATCH 01/19] media: adv748x: Add support for active state Jacopo Mondi
2024-05-02 17:34 ` Laurent Pinchart
2024-05-03 7:55 ` Jacopo Mondi
2024-05-03 8:24 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 02/19] media: adv748x: Add flags to adv748x_subdev_init() Jacopo Mondi
2024-05-02 17:37 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 03/19] media: adv748x: Use V4L2 streams Jacopo Mondi
2024-05-02 17:40 ` Laurent Pinchart
2024-05-03 7:59 ` Jacopo Mondi
2024-05-03 8:31 ` Laurent Pinchart
2024-05-03 8:46 ` Tomi Valkeinen
2024-04-30 10:39 ` [PATCH 04/19] media: adv748x: Propagate format to opposite stream Jacopo Mondi
2024-05-02 17:41 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 05/19] media: adv748x: Implement set_routing() Jacopo Mondi
2024-05-02 17:49 ` Laurent Pinchart
2024-05-03 8:02 ` Jacopo Mondi
2024-04-30 10:39 ` [PATCH 06/19] media: adv748x: Use routes to configure VC Jacopo Mondi
2024-05-02 17:51 ` Laurent Pinchart
2024-05-02 17:52 ` Laurent Pinchart
2024-05-03 8:05 ` Jacopo Mondi
2024-04-30 10:39 ` [PATCH 07/19] media: adv748x: Implement .get_frame_desc() Jacopo Mondi
2024-05-02 17:57 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 08/19] media: max9286: Add support for subdev active state Jacopo Mondi
2024-05-02 18:10 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 09/19] media: max9286: Fix enum_mbus_code Jacopo Mondi
2024-05-02 18:14 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 10/19] media: max9286: Use frame interval from subdev state Jacopo Mondi
2024-05-02 18:23 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 11/19] media: max9286: Use V4L2 Streams Jacopo Mondi
2024-05-02 18:25 ` Laurent Pinchart [this message]
2024-04-30 10:39 ` [PATCH 12/19] media: max9286: Implement .get_frame_desc() Jacopo Mondi
2024-05-02 18:32 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 13/19] media: max9286: Implement support for LINK_FREQ Jacopo Mondi
2024-05-02 18:36 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 14/19] media: max9286: Implement .get_mbus_config() Jacopo Mondi
2024-05-02 18:37 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 15/19] media: rcar-csi2: Add support for multiplexed streams Jacopo Mondi
2024-05-02 14:23 ` Niklas Söderlund
2024-05-02 18:41 ` Laurent Pinchart
2024-05-03 8:05 ` Jacopo Mondi
2024-04-30 10:39 ` [PATCH 16/19] media: rcar-csi2: Support multiplexed transmitters Jacopo Mondi
2024-05-02 14:30 ` Niklas Söderlund
2024-05-02 21:56 ` Laurent Pinchart
2024-05-03 8:07 ` Jacopo Mondi
2024-04-30 10:39 ` [PATCH 17/19] media: rcar-csi2: Store format in the subdev state Jacopo Mondi
2024-05-02 14:32 ` Niklas Söderlund
2024-05-02 22:00 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 18/19] media: rcar-csi2: Implement set_routing Jacopo Mondi
2024-05-02 22:16 ` Laurent Pinchart
2024-04-30 10:39 ` [PATCH 19/19] media: rcar-vin: Fix YUYV8_1X16 handling for CSI-2 Jacopo Mondi
2024-05-02 14:33 ` Niklas Söderlund
2024-05-02 22:16 ` Laurent Pinchart
2024-04-30 11:17 ` [PATCH 00/19] media: renesas: rcar-csi2: Support multiple streams Niklas Söderlund
2024-04-30 11:51 ` Jacopo Mondi
2024-05-02 17:35 ` Laurent Pinchart
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=20240502182526.GR15807@pendragon.ideasonboard.com \
--to=laurent.pinchart@ideasonboard.com \
--cc=jacopo.mondi@ideasonboard.com \
--cc=kieran.bingham+renesas@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=niklas.soderlund+renesas@ragnatech.se \
--cc=sakari.ailus@linux.intel.com \
--cc=tomi.valkeinen@ideasonboard.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).