All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	linux-media@vger.kernel.org
Cc: linux-renesas-soc@vger.kernel.org,
	tomoharu.fukawa.eb@renesas.com,
	"Kieran Bingham" <kieran.bingham@ideasonboard.com>,
	"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
Subject: [PATCH v12 17/33] rcar-vin: cache video standard
Date: Wed,  7 Mar 2018 23:04:55 +0100	[thread overview]
Message-ID: <20180307220511.9826-18-niklas.soderlund+renesas@ragnatech.se> (raw)
In-Reply-To: <20180307220511.9826-1-niklas.soderlund+renesas@ragnatech.se>

At stream on time the driver should not query the subdevice for which
standard are used. Instead it should be cached when userspace sets the
standard and used at stream on time.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
 drivers/media/platform/rcar-vin/rcar-core.c |  6 ++++++
 drivers/media/platform/rcar-vin/rcar-dma.c  |  7 ++-----
 drivers/media/platform/rcar-vin/rcar-v4l2.c | 10 ++++++++--
 drivers/media/platform/rcar-vin/rcar-vin.h  |  2 ++
 4 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c
index cc863e4ec9a4d4b3..ae0339d4ec104e8c 100644
--- a/drivers/media/platform/rcar-vin/rcar-core.c
+++ b/drivers/media/platform/rcar-vin/rcar-core.c
@@ -96,6 +96,12 @@ static int rvin_digital_subdevice_attach(struct rvin_dev *vin,
 	if (ret < 0 && ret != -ENOIOCTLCMD && ret != -ENODEV)
 		return ret;
 
+	/* Read standard */
+	vin->std = V4L2_STD_UNKNOWN;
+	ret = v4l2_subdev_call(subdev, video, g_std, &vin->std);
+	if (ret < 0 && ret != -ENOIOCTLCMD)
+		return ret;
+
 	/* Add the controls */
 	ret = v4l2_ctrl_handler_init(&vin->ctrl_handler, 16);
 	if (ret < 0)
diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c
index c8831e189d362c8b..7c64f1f8ec63bcf4 100644
--- a/drivers/media/platform/rcar-vin/rcar-dma.c
+++ b/drivers/media/platform/rcar-vin/rcar-dma.c
@@ -592,7 +592,6 @@ void rvin_crop_scale_comp(struct rvin_dev *vin)
 static int rvin_setup(struct rvin_dev *vin)
 {
 	u32 vnmc, dmr, dmr2, interrupts;
-	v4l2_std_id std;
 	bool progressive = false, output_is_yuv = false, input_is_yuv = false;
 
 	switch (vin->format.field) {
@@ -606,10 +605,8 @@ static int rvin_setup(struct rvin_dev *vin)
 		/* Default to TB */
 		vnmc = VNMC_IM_FULL;
 		/* Use BT if video standard can be read and is 60 Hz format */
-		if (!v4l2_subdev_call(vin_to_source(vin), video, g_std, &std)) {
-			if (std & V4L2_STD_525_60)
-				vnmc = VNMC_IM_FULL | VNMC_FOC;
-		}
+		if (vin->std & V4L2_STD_525_60)
+			vnmc = VNMC_IM_FULL | VNMC_FOC;
 		break;
 	case V4L2_FIELD_INTERLACED_TB:
 		vnmc = VNMC_IM_FULL;
diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c b/drivers/media/platform/rcar-vin/rcar-v4l2.c
index c4be0bcb8b16f941..43370c57d4b6239a 100644
--- a/drivers/media/platform/rcar-vin/rcar-v4l2.c
+++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c
@@ -477,6 +477,8 @@ static int rvin_s_std(struct file *file, void *priv, v4l2_std_id a)
 	if (ret < 0)
 		return ret;
 
+	vin->std = a;
+
 	/* Changing the standard will change the width/height */
 	return rvin_reset_format(vin);
 }
@@ -484,9 +486,13 @@ static int rvin_s_std(struct file *file, void *priv, v4l2_std_id a)
 static int rvin_g_std(struct file *file, void *priv, v4l2_std_id *a)
 {
 	struct rvin_dev *vin = video_drvdata(file);
-	struct v4l2_subdev *sd = vin_to_source(vin);
 
-	return v4l2_subdev_call(sd, video, g_std, a);
+	if (v4l2_subdev_has_op(vin_to_source(vin), pad, dv_timings_cap))
+		return -ENOIOCTLCMD;
+
+	*a = vin->std;
+
+	return 0;
 }
 
 static int rvin_subscribe_event(struct v4l2_fh *fh,
diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h b/drivers/media/platform/rcar-vin/rcar-vin.h
index 7fcf984f21466855..458373af9e60ea07 100644
--- a/drivers/media/platform/rcar-vin/rcar-vin.h
+++ b/drivers/media/platform/rcar-vin/rcar-vin.h
@@ -119,6 +119,7 @@ struct rvin_info {
  * @crop:		active cropping
  * @compose:		active composing
  * @source:		active size of the video source
+ * @std:		active video standard of the video source
  */
 struct rvin_dev {
 	struct device *dev;
@@ -146,6 +147,7 @@ struct rvin_dev {
 	struct v4l2_rect crop;
 	struct v4l2_rect compose;
 	struct v4l2_rect source;
+	v4l2_std_id std;
 };
 
 #define vin_to_source(vin)		((vin)->digital->subdev)
-- 
2.16.2

  parent reply	other threads:[~2018-03-07 22:05 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-07 22:04 [PATCH v12 00/33] rcar-vin: Add Gen3 with media controller Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 01/33] dt-bindings: media: rcar_vin: Reverse SoC part number list Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 02/33] dt-bindings: media: rcar_vin: add device tree support for r8a774[35] Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 03/33] rcar-vin: add Gen3 devicetree bindings documentation Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 04/33] rcar-vin: rename poorly named initialize and cleanup functions Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 05/33] rcar-vin: unregister video device on driver removal Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 06/33] rcar-vin: move subdevice handling to async callbacks Niklas Söderlund
2018-03-09 15:16   ` Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 07/33] rcar-vin: move model information to own struct Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 08/33] rcar-vin: move max width and height information to chip information Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 09/33] rcar-vin: move functions regarding scaling Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 10/33] rcar-vin: all Gen2 boards can scale simplify logic Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 11/33] rcar-vin: set a default field to fallback on Niklas Söderlund
2018-03-09 15:25   ` Hans Verkuil
2018-03-09 16:17     ` Niklas Söderlund
2018-03-09 16:17       ` Niklas Söderlund
2018-03-09 16:28       ` Hans Verkuil
2018-03-09 17:07         ` Niklas Söderlund
2018-03-09 17:07           ` Niklas Söderlund
2018-03-09 17:13           ` Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 12/33] rcar-vin: fix handling of single field frames (top, bottom and alternate fields) Niklas Söderlund
2018-03-09 15:28   ` Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 13/33] rcar-vin: update bytesperline and sizeimage calculation Niklas Söderlund
2018-03-09 15:29   ` Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 14/33] rcar-vin: align pixelformat check Niklas Söderlund
2018-03-09 15:30   ` Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 15/33] rcar-vin: break out format alignment and checking Niklas Söderlund
2018-03-09 15:30   ` Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 16/33] rcar-vin: simplify how formats are set and reset Niklas Söderlund
2018-03-09 15:34   ` Hans Verkuil
2018-03-07 22:04 ` Niklas Söderlund [this message]
2018-03-09 15:39   ` [PATCH v12 17/33] rcar-vin: cache video standard Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 18/33] rcar-vin: move media bus configuration to struct rvin_dev Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 19/33] rcar-vin: enable Gen3 hardware configuration Niklas Söderlund
2018-03-07 22:04 ` [PATCH v12 20/33] rcar-vin: add function to manipulate Gen3 chsel value Niklas Söderlund
2018-03-09 15:40   ` Hans Verkuil
2018-03-07 22:04 ` [PATCH v12 21/33] rcar-vin: add flag to switch to media controller mode Niklas Söderlund
2018-03-07 22:05 ` [PATCH v12 22/33] rcar-vin: use different v4l2 operations in " Niklas Söderlund
2018-03-07 22:05 ` [PATCH v12 23/33] rcar-vin: force default colorspace for media centric mode Niklas Söderlund
2018-03-09 15:41   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 24/33] rcar-vin: prepare for media controller mode initialization Niklas Söderlund
2018-03-07 22:05 ` [PATCH v12 25/33] rcar-vin: add group allocator functions Niklas Söderlund
2018-03-09 15:42   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 26/33] rcar-vin: change name of video device Niklas Söderlund
2018-03-09 15:43   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 27/33] rcar-vin: add chsel information to rvin_info Niklas Söderlund
2018-03-09 15:43   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 28/33] rcar-vin: parse Gen3 OF and setup media graph Niklas Söderlund
2018-03-09 15:45   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 29/33] rcar-vin: add link notify for Gen3 Niklas Söderlund
2018-03-09 15:46   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 30/33] rcar-vin: extend {start,stop}_streaming to work with media controller Niklas Söderlund
2018-03-09 15:47   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 31/33] rcar-vin: enable support for r8a7795 Niklas Söderlund
2018-03-09 15:47   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 32/33] rcar-vin: enable support for r8a7796 Niklas Söderlund
2018-03-09 15:48   ` Hans Verkuil
2018-03-07 22:05 ` [PATCH v12 33/33] rcar-vin: enable support for r8a77970 Niklas Söderlund
2018-03-09 15:48   ` Hans Verkuil

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=20180307220511.9826-18-niklas.soderlund+renesas@ragnatech.se \
    --to=niklas.soderlund+renesas@ragnatech.se \
    --cc=hverkuil@xs4all.nl \
    --cc=kieran.bingham@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=tomoharu.fukawa.eb@renesas.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 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.