Linux-Media Archive mirror
 help / color / mirror / Atom feed
From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
To: "Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
	"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>
Cc: Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
	linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org
Subject: [PATCH 00/19] media: renesas: rcar-csi2: Support multiple streams
Date: Tue, 30 Apr 2024 12:39:36 +0200	[thread overview]
Message-ID: <20240430103956.60190-1-jacopo.mondi@ideasonboard.com> (raw)

Hello this series implements multi-stream support for R-Car CSI-2 and the
two CSI-2 devices that are available on Renesas dev-boards which are mainline
supported (the ADV748x HDMI decoder and the MAX9286 GMSL deserializer).

The net gain in feature is:
- ADV748x: Select on which MIPI CSI-2 VC to send the stream on
- MAX9286: Paves the way for run-time selection of active links

Both features are realized by controlling the devices routing tables.
The max9286 routing support is not implemented, but these patches are needed
in order to maintain the current version compatible with R-Car CSI-2.

The R-Car CSI-2 driver needs to be updated in order to support multiplexed
transmitters, in particular:

- Use LINK_FREQ to compute the lane bandwidth
- Support subdev_active state
- Configure DT and VC handling by using the remote's frame_desc

A separate fix for VIN sits at the top of the series to re-enable YUYV capture
operations.

The series needs to activate streams in v4l2-subdev to work correctly:

--- a/drivers/media/v4l2-core/v4l2-subdev.c
+++ b/drivers/media/v4l2-core/v4l2-subdev.c
@@ -32,7 +32,7 @@
  * 'v4l2_subdev_enable_streams_api' to 1 below.
  */

-static bool v4l2_subdev_enable_streams_api;
+static bool v4l2_subdev_enable_streams_api = 1;
 #endif


Test scripts, based on vin-tests are available at:
https://git.uk.ideasonboard.com/jmondi/vin-tests

A note for Sakari: patch
"media: max9286: Implement support for LINK_FREQ"

Could actually use your new
"media: v4l: Support passing sub-device argument to v4l2_get_link_freq()"

I kept it as it is for this version waiting for your patch to get in.

A note for Niklas:
I think this series paves the way to actually moving the control of which
VC goes to which VIN using a routing table instead of using link enablement.

Currently the setup is as it follows: routing within R-Car CSI-2 is fixed, sink
stream 0/X goes to source stream X+1/0 and each source pad represents a VC.
Which VC gets sent to which VIN is controlled by link enablement.

A more natural way of handling this would be to make the routing table
within CSI-2 configurable and have media-links immutable between the CSI-2
source pad. A CSI-2 source pad would then represent a 'channel' between
CSI-2 and VIN and not the VC which is sent on it.

This setup would better represent the current implementation, with VIN's VCSEL
fixed channel routing and with the CSI-2 routing table controlling which VC gets
sent on which channel. What do you think ?

Jacopo Mondi (19):
  media: adv748x: Add support for active state
  media: adv748x: Add flags to adv748x_subdev_init()
  media: adv748x: Use V4L2 streams
  media: adv748x: Propagate format to opposite stream
  media: adv748x: Implement set_routing()
  media: adv748x: Use routes to configure VC
  media: adv748x: Implement .get_frame_desc()
  media: max9286: Add support for subdev active state
  media: max9286: Fix enum_mbus_code
  media: max9286: Use frame interval from subdev state
  media: max9286: Use V4L2 Streams
  media: max9286: Implement .get_frame_desc()
  media: max9286: Implement support for LINK_FREQ
  media: max9286: Implement .get_mbus_config()
  media: rcar-csi2: Add support for multiplexed streams
  media: rcar-csi2: Support multiplexed transmitters
  media: rcar-csi2: Store format in the subdev state
  media: rcar-csi2: Implement set_routing
  media: rcar-vin: Fix YUYV8_1X16 handling for CSI-2

 drivers/media/i2c/adv748x/adv748x-afe.c       |   2 +-
 drivers/media/i2c/adv748x/adv748x-core.c      |  12 +-
 drivers/media/i2c/adv748x/adv748x-csi2.c      | 251 +++++++---
 drivers/media/i2c/adv748x/adv748x-hdmi.c      |   2 +-
 drivers/media/i2c/adv748x/adv748x.h           |   4 +-
 drivers/media/i2c/max9286.c                   | 457 ++++++++++++------
 drivers/media/platform/renesas/rcar-csi2.c    | 442 ++++++++++++-----
 .../platform/renesas/rcar-vin/rcar-dma.c      |  16 +-
 8 files changed, 834 insertions(+), 352 deletions(-)

--
2.44.0


             reply	other threads:[~2024-04-30 10:40 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-30 10:39 Jacopo Mondi [this message]
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
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=20240430103956.60190-1-jacopo.mondi@ideasonboard.com \
    --to=jacopo.mondi@ideasonboard.com \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=laurent.pinchart@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).