From: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
To: linux-media@vger.kernel.org, Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: linux-renesas-soc@vger.kernel.org,
"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
"Kieran Bingham" <kieran.bingham+renesas@ideasonboard.com>,
"Jacopo Mondi" <jacopo+renesas@jmondi.org>,
"Benoit Parrot" <bparrot@ti.com>,
"Maxime Ripard" <maxime.ripard@free-electrons.com>,
"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
Subject: [PATCH/RFC v2 08/15] rcar-csi2: add get_routing support
Date: Thu, 14 Dec 2017 20:08:28 +0100 [thread overview]
Message-ID: <20171214190835.7672-9-niklas.soderlund+renesas@ragnatech.se> (raw)
In-Reply-To: <20171214190835.7672-1-niklas.soderlund+renesas@ragnatech.se>
To support multiplexed streams the internal routing between the
rcar-csi2 sink pad and its source pads needs to be described.
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
drivers/media/platform/rcar-vin/rcar-csi2.c | 54 +++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/drivers/media/platform/rcar-vin/rcar-csi2.c b/drivers/media/platform/rcar-vin/rcar-csi2.c
index 2dd7d03d622d5510..fd1133e72482fc19 100644
--- a/drivers/media/platform/rcar-vin/rcar-csi2.c
+++ b/drivers/media/platform/rcar-vin/rcar-csi2.c
@@ -334,6 +334,14 @@ static int rcar_csi2_pad_to_vc(unsigned int pad)
return pad - RCAR_CSI2_SOURCE_VC0;
}
+static int rcar_csi2_vc_to_pad(unsigned int vc)
+{
+ if (vc > 3)
+ return -EINVAL;
+
+ return vc + RCAR_CSI2_SOURCE_VC0;
+}
+
struct rcar_csi2_info {
const struct phypll_hsfreqrange *hsfreqrange;
const struct phtw_testdin_data *testdin_data;
@@ -752,9 +760,55 @@ static int rcar_csi2_get_pad_format(struct v4l2_subdev *sd,
return 0;
}
+static int rcar_csi2_get_routing(struct v4l2_subdev *sd,
+ struct v4l2_subdev_routing *routing)
+{
+ struct rcar_csi2 *priv = sd_to_csi2(sd);
+ struct v4l2_mbus_frame_desc fd;
+ struct v4l2_subdev_route *r = routing->routes;
+ struct v4l2_subdev *rsubdev;
+ unsigned int i, rpad;
+ int ret;
+
+ /* Get information about multiplexed link */
+ ret = rcar_csi2_get_source_info(priv, &rsubdev, &rpad, &fd);
+ if (ret)
+ return ret;
+
+ if (routing->num_routes < fd.num_entries) {
+ routing->num_routes = fd.num_entries;
+ return -ENOSPC;
+ }
+
+ routing->num_routes = fd.num_entries;
+
+ for (i = 0; i < fd.num_entries; i++) {
+ struct v4l2_mbus_frame_desc_entry *entry = &fd.entry[i];
+ int source_pad;
+
+ source_pad = rcar_csi2_vc_to_pad(entry->bus.csi2.channel);
+ if (source_pad < 0) {
+ dev_err(priv->dev, "Virtual Channel out of range: %u\n",
+ entry->bus.csi2.channel);
+ return -ENOSPC;
+ }
+
+ r->sink_pad = RCAR_CSI2_SINK;
+ r->sink_stream = entry->stream;
+ r->source_pad = source_pad;
+ r->source_stream = 0;
+ r->flags = V4L2_SUBDEV_ROUTE_FL_ACTIVE |
+ V4L2_SUBDEV_ROUTE_FL_IMMUTABLE;
+ r++;
+ }
+
+ return 0;
+}
+
static const struct v4l2_subdev_pad_ops rcar_csi2_pad_ops = {
.set_fmt = rcar_csi2_set_pad_format,
.get_fmt = rcar_csi2_get_pad_format,
+ .get_routing = rcar_csi2_get_routing,
.s_stream = rcar_csi2_s_stream,
};
--
2.15.1
next prev parent reply other threads:[~2017-12-14 19:09 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-14 19:08 [PATCH/RFC v2 00/15] Add multiplexed pad streaming support Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 01/15] v4l2-subdev.h: add pad and stream aware s_stream Niklas Söderlund
2017-12-15 11:51 ` Sakari Ailus
2017-12-18 23:06 ` Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 02/15] rcar-vin: use pad as the starting point for a pipeline Niklas Söderlund
2017-12-15 11:54 ` Sakari Ailus
2017-12-18 23:08 ` Niklas Söderlund
2017-12-27 15:28 ` Sakari Ailus
2017-12-14 19:08 ` [PATCH/RFC v2 03/15] rcar-vin: use the pad and stream aware s_stream Niklas Söderlund
2017-12-15 12:07 ` Sakari Ailus
2017-12-18 23:24 ` Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 04/15] rcar-csi2: switch to " Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 05/15] rcar-csi2: count usage for each source pad Niklas Söderlund
2017-12-15 12:25 ` Sakari Ailus
2017-12-18 23:38 ` Niklas Söderlund
2017-12-29 11:23 ` Sakari Ailus
2017-12-14 19:08 ` [PATCH/RFC v2 06/15] rcar-csi2: use frame description information when propagating .s_stream() Niklas Söderlund
2017-12-15 13:19 ` Sakari Ailus
2017-12-18 23:59 ` Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 07/15] rcar-csi2: use frame description information to configure CSI-2 bus Niklas Söderlund
2017-12-15 14:15 ` jacopo mondi
2017-12-19 0:05 ` Niklas Söderlund
2017-12-14 19:08 ` Niklas Söderlund [this message]
2017-12-14 19:08 ` [PATCH/RFC v2 09/15] adv748x: csi2: add module param for virtual channel Niklas Söderlund
2017-12-14 22:19 ` Kieran Bingham
2017-12-18 22:44 ` Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 10/15] adv748x: csi2: add translation from pixelcode to CSI-2 datatype Niklas Söderlund
2017-12-14 22:25 ` Kieran Bingham
2017-12-15 14:37 ` jacopo mondi
2017-12-14 19:08 ` [PATCH/RFC v2 11/15] adv748x: csi2: implement get_frame_desc Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 12/15] adv748x: csi2: switch to pad and stream aware s_stream Niklas Söderlund
2017-12-14 23:12 ` Kieran Bingham
2017-12-14 19:08 ` [PATCH/RFC v2 13/15] adv748x: csi2: only allow formats on sink pads Niklas Söderlund
2017-12-14 23:16 ` Kieran Bingham
2017-12-18 22:25 ` Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 14/15] adv748x: csi2: add get_routing support Niklas Söderlund
2017-12-14 23:27 ` Kieran Bingham
2017-12-18 22:58 ` Niklas Söderlund
2017-12-14 19:08 ` [PATCH/RFC v2 15/15] adv748x: afe: add routing support Niklas Söderlund
2017-12-14 22:56 ` Kieran Bingham
2017-12-14 22:59 ` Kieran Bingham
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=20171214190835.7672-9-niklas.soderlund+renesas@ragnatech.se \
--to=niklas.soderlund+renesas@ragnatech.se \
--cc=bparrot@ti.com \
--cc=jacopo+renesas@jmondi.org \
--cc=kieran.bingham+renesas@ideasonboard.com \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=maxime.ripard@free-electrons.com \
--cc=sakari.ailus@linux.intel.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