linux-renesas-soc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] media: i2c: ov772x: Enable BT656 mode and test pattern support
@ 2020-07-24 15:08 Lad Prabhakar
  2020-07-24 15:08 ` [PATCH 1/2] media: i2c: ov772x: Add support for BT656 mode Lad Prabhakar
  2020-07-24 15:08 ` [PATCH 2/2] media: i2c: ov772x: Add test pattern control Lad Prabhakar
  0 siblings, 2 replies; 5+ messages in thread
From: Lad Prabhakar @ 2020-07-24 15:08 UTC (permalink / raw)
  To: Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
	Kieran Bingham
  Cc: linux-renesas-soc, linux-kernel, Biju Das, Prabhakar, Lad Prabhakar

Hi All,

This patch series adds support for BT656 mode in the ov772x sensor
and also enables color bar test pattern control.

Cheers,
Prabhakar

Lad Prabhakar (2):
  media: i2c: ov772x: Add support for BT656 mode
  media: i2c: ov772x: Add test pattern control

 drivers/media/i2c/ov772x.c | 48 +++++++++++++++++++++++++++++++++++++++++++---
 include/media/i2c/ov772x.h |  1 +
 2 files changed, 46 insertions(+), 3 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] media: i2c: ov772x: Add support for BT656 mode
  2020-07-24 15:08 [PATCH 0/2] media: i2c: ov772x: Enable BT656 mode and test pattern support Lad Prabhakar
@ 2020-07-24 15:08 ` Lad Prabhakar
  2020-07-31 16:02   ` Sakari Ailus
  2020-07-24 15:08 ` [PATCH 2/2] media: i2c: ov772x: Add test pattern control Lad Prabhakar
  1 sibling, 1 reply; 5+ messages in thread
From: Lad Prabhakar @ 2020-07-24 15:08 UTC (permalink / raw)
  To: Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
	Kieran Bingham
  Cc: linux-renesas-soc, linux-kernel, Biju Das, Prabhakar, Lad Prabhakar

Add support to read the bus-type and enable BT656 mode if needed.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/media/i2c/ov772x.c | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
index 2cc6a67..3b7dfba 100644
--- a/drivers/media/i2c/ov772x.c
+++ b/drivers/media/i2c/ov772x.c
@@ -31,6 +31,7 @@
 #include <media/v4l2-ctrls.h>
 #include <media/v4l2-device.h>
 #include <media/v4l2-event.h>
+#include <media/v4l2-fwnode.h>
 #include <media/v4l2-image-sizes.h>
 #include <media/v4l2-subdev.h>
 
@@ -434,6 +435,7 @@ struct ov772x_priv {
 #ifdef CONFIG_MEDIA_CONTROLLER
 	struct media_pad pad;
 #endif
+	struct v4l2_fwnode_endpoint ep;
 };
 
 /*
@@ -585,7 +587,6 @@ static int ov772x_s_stream(struct v4l2_subdev *sd, int enable)
 				 enable ? 0 : SOFT_SLEEP_MODE);
 	if (ret)
 		goto done;
-
 	if (enable) {
 		dev_dbg(&client->dev, "format %d, win %s\n",
 			priv->cfmt->code, priv->win->name);
@@ -1104,7 +1105,10 @@ static int ov772x_set_params(struct ov772x_priv *priv,
 		goto ov772x_set_fmt_error;
 
 	/* COM7: Sensor resolution and output format control. */
-	ret = regmap_write(priv->regmap, COM7, win->com7_bit | cfmt->com7);
+	val = win->com7_bit | cfmt->com7;
+	if (priv->ep.bus_type == V4L2_MBUS_BT656)
+		val |= ITU656_ON_OFF;
+	ret = regmap_write(priv->regmap, COM7, val);
 	if (ret < 0)
 		goto ov772x_set_fmt_error;
 
@@ -1354,6 +1358,7 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = {
 
 static int ov772x_probe(struct i2c_client *client)
 {
+	struct fwnode_handle *endpoint;
 	struct ov772x_priv	*priv;
 	int			ret;
 	static const struct regmap_config ov772x_regmap_config = {
@@ -1415,6 +1420,20 @@ static int ov772x_probe(struct i2c_client *client)
 		goto error_clk_put;
 	}
 
+	endpoint = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev),
+						  NULL);
+	if (!endpoint) {
+		dev_err(&client->dev, "endpoint node not found\n");
+		goto error_clk_put;
+	}
+
+	ret = v4l2_fwnode_endpoint_parse(endpoint, &priv->ep);
+	fwnode_handle_put(endpoint);
+	if (ret) {
+		dev_err(&client->dev, "Could not parse endpoint\n");
+		goto error_clk_put;
+	}
+
 	ret = ov772x_video_probe(priv);
 	if (ret < 0)
 		goto error_gpio_put;
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] media: i2c: ov772x: Add test pattern control
  2020-07-24 15:08 [PATCH 0/2] media: i2c: ov772x: Enable BT656 mode and test pattern support Lad Prabhakar
  2020-07-24 15:08 ` [PATCH 1/2] media: i2c: ov772x: Add support for BT656 mode Lad Prabhakar
@ 2020-07-24 15:08 ` Lad Prabhakar
  1 sibling, 0 replies; 5+ messages in thread
From: Lad Prabhakar @ 2020-07-24 15:08 UTC (permalink / raw)
  To: Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
	Kieran Bingham
  Cc: linux-renesas-soc, linux-kernel, Biju Das, Prabhakar, Lad Prabhakar

Add support for test pattern control supported by the sensor.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
---
 drivers/media/i2c/ov772x.c | 25 ++++++++++++++++++++++++-
 include/media/i2c/ov772x.h |  1 +
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
index 3b7dfba..bdee2a8 100644
--- a/drivers/media/i2c/ov772x.c
+++ b/drivers/media/i2c/ov772x.c
@@ -227,7 +227,7 @@
 
 /* COM3 */
 #define SWAP_MASK       (SWAP_RGB | SWAP_YUV | SWAP_ML)
-#define IMG_MASK        (VFLIP_IMG | HFLIP_IMG)
+#define IMG_MASK        (VFLIP_IMG | HFLIP_IMG | SCOLOR_TEST)
 
 #define VFLIP_IMG       0x80	/* Vertical flip image ON/OFF selection */
 #define HFLIP_IMG       0x40	/* Horizontal mirror image ON/OFF selection */
@@ -425,6 +425,7 @@ struct ov772x_priv {
 	const struct ov772x_win_size     *win;
 	struct v4l2_ctrl		 *vflip_ctrl;
 	struct v4l2_ctrl		 *hflip_ctrl;
+	unsigned int			  test_pattern;
 	/* band_filter = COM8[5] ? 256 - BDBASE : 0 */
 	struct v4l2_ctrl		 *band_filter_ctrl;
 	unsigned int			  fps;
@@ -540,6 +541,11 @@ static const struct ov772x_win_size ov772x_win_sizes[] = {
 	},
 };
 
+static const char * const ov772x_test_pattern_menu[] = {
+	"Disabled",
+	"Vertical Color Bar Type 1",
+};
+
 /*
  * frame rate settings lists
  */
@@ -754,6 +760,13 @@ static int ov772x_s_frame_interval(struct v4l2_subdev *sd,
 	return ret;
 }
 
+static int ov772x_enable_test_pattern(struct ov772x_priv *priv, u32 pattern)
+{
+	priv->test_pattern = pattern;
+	return regmap_update_bits(priv->regmap, COM3, SCOLOR_TEST,
+				  pattern ? SCOLOR_TEST : 0x00);
+}
+
 static int ov772x_s_ctrl(struct v4l2_ctrl *ctrl)
 {
 	struct ov772x_priv *priv = container_of(ctrl->handler,
@@ -801,6 +814,8 @@ static int ov772x_s_ctrl(struct v4l2_ctrl *ctrl)
 		}
 
 		return ret;
+	case V4L2_CID_TEST_PATTERN:
+		return ov772x_enable_test_pattern(priv, ctrl->val);
 	}
 
 	return -EINVAL;
@@ -1095,10 +1110,14 @@ static int ov772x_set_params(struct ov772x_priv *priv,
 		val |= VFLIP_IMG;
 	if (priv->info && (priv->info->flags & OV772X_FLAG_HFLIP))
 		val |= HFLIP_IMG;
+	if (priv->info && (priv->info->flags & OV772X_FLAG_TEST_PATTERN))
+		val |= SCOLOR_TEST;
 	if (priv->vflip_ctrl->val)
 		val ^= VFLIP_IMG;
 	if (priv->hflip_ctrl->val)
 		val ^= HFLIP_IMG;
+	if (priv->test_pattern)
+		val ^= SCOLOR_TEST;
 
 	ret = regmap_update_bits(priv->regmap, COM3, SWAP_MASK | IMG_MASK, val);
 	if (ret < 0)
@@ -1399,6 +1418,10 @@ static int ov772x_probe(struct i2c_client *client)
 	priv->band_filter_ctrl = v4l2_ctrl_new_std(&priv->hdl, &ov772x_ctrl_ops,
 						   V4L2_CID_BAND_STOP_FILTER,
 						   0, 256, 1, 0);
+	v4l2_ctrl_new_std_menu_items(&priv->hdl, &ov772x_ctrl_ops,
+				     V4L2_CID_TEST_PATTERN,
+				     ARRAY_SIZE(ov772x_test_pattern_menu) - 1,
+				     0, 0, ov772x_test_pattern_menu);
 	priv->subdev.ctrl_handler = &priv->hdl;
 	if (priv->hdl.error) {
 		ret = priv->hdl.error;
diff --git a/include/media/i2c/ov772x.h b/include/media/i2c/ov772x.h
index a1702d4..65e6f8d 100644
--- a/include/media/i2c/ov772x.h
+++ b/include/media/i2c/ov772x.h
@@ -12,6 +12,7 @@
 /* for flags */
 #define OV772X_FLAG_VFLIP	(1 << 0) /* Vertical flip image */
 #define OV772X_FLAG_HFLIP	(1 << 1) /* Horizontal flip image */
+#define OV772X_FLAG_TEST_PATTERN	(1 << 2) /* Test pattern */
 
 /*
  * for Edge ctrl
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] media: i2c: ov772x: Add support for BT656 mode
  2020-07-24 15:08 ` [PATCH 1/2] media: i2c: ov772x: Add support for BT656 mode Lad Prabhakar
@ 2020-07-31 16:02   ` Sakari Ailus
  2020-08-01  8:54     ` Lad, Prabhakar
  0 siblings, 1 reply; 5+ messages in thread
From: Sakari Ailus @ 2020-07-31 16:02 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
	Kieran Bingham, linux-renesas-soc, linux-kernel, Biju Das,
	Prabhakar

Hi Prabhakar,

On Fri, Jul 24, 2020 at 04:08:15PM +0100, Lad Prabhakar wrote:
> Add support to read the bus-type and enable BT656 mode if needed.
> 
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>

The DT bindings should also be changed.

The default should be parallel, I guess, since the type hasn't been
documented. Parsing should be also updated so the driver can set meaningful
defaults for the flags --- this btw. also applies to the corresponding
ov5640 patch.

-- 
Sakari Ailus

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] media: i2c: ov772x: Add support for BT656 mode
  2020-07-31 16:02   ` Sakari Ailus
@ 2020-08-01  8:54     ` Lad, Prabhakar
  0 siblings, 0 replies; 5+ messages in thread
From: Lad, Prabhakar @ 2020-08-01  8:54 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: Lad Prabhakar, Jacopo Mondi, Mauro Carvalho Chehab, Hans Verkuil,
	linux-media, Kieran Bingham, Linux-Renesas, LKML, Biju Das

Hi Sakari,

Thank you for the review.

On Fri, Jul 31, 2020 at 5:03 PM Sakari Ailus <sakari.ailus@iki.fi> wrote:
>
> Hi Prabhakar,
>
> On Fri, Jul 24, 2020 at 04:08:15PM +0100, Lad Prabhakar wrote:
> > Add support to read the bus-type and enable BT656 mode if needed.
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
>
> The DT bindings should also be changed.
>
I'll get this done in V2.

> The default should be parallel, I guess, since the type hasn't been
> documented. Parsing should be also updated so the driver can set meaningful
> defaults for the flags --- this btw. also applies to the corresponding
> ov5640 patch.
>
Agreed, will do.

Cheers,
Prabhakar
> --
> Sakari Ailus

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-08-01  8:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-24 15:08 [PATCH 0/2] media: i2c: ov772x: Enable BT656 mode and test pattern support Lad Prabhakar
2020-07-24 15:08 ` [PATCH 1/2] media: i2c: ov772x: Add support for BT656 mode Lad Prabhakar
2020-07-31 16:02   ` Sakari Ailus
2020-08-01  8:54     ` Lad, Prabhakar
2020-07-24 15:08 ` [PATCH 2/2] media: i2c: ov772x: Add test pattern control Lad Prabhakar

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 NNTP newsgroup(s).