linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 0/3] media: i2c: ov772x: Enable BT.656 mode and test pattern support
@ 2020-09-17 17:42 Lad Prabhakar
  2020-09-17 17:42 ` [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties Lad Prabhakar
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Lad Prabhakar @ 2020-09-17 17:42 UTC (permalink / raw)
  To: Jacopo Mondi, Sakari Ailus, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc, Lad Prabhakar,
	Biju Das, Lad, Prabhakar

Hi All,

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

Cheers,
Prabhakar

v5->v6
* Introduced new function ov772x_parse_dt()
* Moved the backward compatibility comment from 1/3 to 2/3

v4->v5:
* Put the ep instance back using fwnode_handle_put()
* Renamed BT656 to BT.656
* Correctly handled backward compatibility case falling
  back to parallel mode.

v3->v4:
* New patch 1/3 to fallback in parallel mode.
* Switched to v4l2_fwnode_endpoint_alloc_parse() for parsing the ep.
* Dropped support for pdat for test pattern control.
* DT documentation patches [1].

v2->v3:
* Dropped DT binding documentation patch as this is handled by Jacopo.
* Fixed review comments pointed by Jacopo.

v2:
 https://patchwork.kernel.org/project/linux-renesas-soc/
 list/?series=328133

 v1:
https://patchwork.kernel.org/project/linux-renesas-soc/
list/?series=323807

[1] https://patchwork.kernel.org/project/
    linux-renesas-soc/list/?series=346809

Lad Prabhakar (3):
  media: i2c: ov772x: Parse endpoint properties
  media: i2c: ov772x: Add support for BT.656 mode
  media: i2c: ov772x: Add test pattern control

 drivers/media/i2c/ov772x.c | 70 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 69 insertions(+), 1 deletion(-)

-- 
2.17.1


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

* [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties
  2020-09-17 17:42 [PATCH v6 0/3] media: i2c: ov772x: Enable BT.656 mode and test pattern support Lad Prabhakar
@ 2020-09-17 17:42 ` Lad Prabhakar
  2020-09-30 10:30   ` Jacopo Mondi
  2020-09-30 11:45   ` Sakari Ailus
  2020-09-17 17:42 ` [PATCH v6 2/3] media: i2c: ov772x: Add support for BT.656 mode Lad Prabhakar
  2020-09-17 17:42 ` [PATCH v6 3/3] media: i2c: ov772x: Add test pattern control Lad Prabhakar
  2 siblings, 2 replies; 9+ messages in thread
From: Lad Prabhakar @ 2020-09-17 17:42 UTC (permalink / raw)
  To: Jacopo Mondi, Sakari Ailus, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc, Lad Prabhakar,
	Biju Das, Lad, Prabhakar

Parse endpoint properties using v4l2_fwnode_endpoint_alloc_parse()
to determine the bus type and store it in the driver structure.

Set bus_type to V4L2_MBUS_PARALLEL as it's the only supported one

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/media/i2c/ov772x.c | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
index 2cc6a678069a..f61a3f09ad64 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
+	enum v4l2_mbus_type		  bus_type;
 };
 
 /*
@@ -1348,6 +1350,34 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = {
 	.pad	= &ov772x_subdev_pad_ops,
 };
 
+static int ov772x_parse_dt(struct i2c_client *client,
+			   struct ov772x_priv *priv)
+{
+	struct v4l2_fwnode_endpoint bus_cfg;
+	struct fwnode_handle *ep;
+	int ret;
+
+	ep = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev),
+					    NULL);
+	if (!ep) {
+		dev_err(&client->dev, "Endpoint node not found\n");
+		return -EINVAL;
+	}
+
+	bus_cfg.bus_type = V4L2_MBUS_PARALLEL;
+	ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
+	if (ret)
+		goto error_fwnode_put;
+
+	priv->bus_type = bus_cfg.bus_type;
+	v4l2_fwnode_endpoint_free(&bus_cfg);
+
+error_fwnode_put:
+	fwnode_handle_put(ep);
+
+	return ret;
+}
+
 /*
  * i2c_driver function
  */
@@ -1415,6 +1445,10 @@ static int ov772x_probe(struct i2c_client *client)
 		goto error_clk_put;
 	}
 
+	ret = ov772x_parse_dt(client, priv);
+	if (ret)
+		goto error_clk_put;
+
 	ret = ov772x_video_probe(priv);
 	if (ret < 0)
 		goto error_gpio_put;
-- 
2.17.1


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

* [PATCH v6 2/3] media: i2c: ov772x: Add support for BT.656 mode
  2020-09-17 17:42 [PATCH v6 0/3] media: i2c: ov772x: Enable BT.656 mode and test pattern support Lad Prabhakar
  2020-09-17 17:42 ` [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties Lad Prabhakar
@ 2020-09-17 17:42 ` Lad Prabhakar
  2020-09-30 10:32   ` Jacopo Mondi
  2020-09-17 17:42 ` [PATCH v6 3/3] media: i2c: ov772x: Add test pattern control Lad Prabhakar
  2 siblings, 1 reply; 9+ messages in thread
From: Lad Prabhakar @ 2020-09-17 17:42 UTC (permalink / raw)
  To: Jacopo Mondi, Sakari Ailus, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc, Lad Prabhakar,
	Biju Das, Lad, Prabhakar

Add support to read the bus-type for V4L2_MBUS_BT656 and enable BT.656
mode in the sensor if needed.

For backward compatibility with older DTS where the bus-type property was
not mandatory, assume V4L2_MBUS_PARALLEL as it was the only supported bus
at the time. v4l2_fwnode_endpoint_alloc_parse() will not fail if
'bus-type' is not specified.

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 f61a3f09ad64..fe48b5881ad9 100644
--- a/drivers/media/i2c/ov772x.c
+++ b/drivers/media/i2c/ov772x.c
@@ -583,6 +583,13 @@ static int ov772x_s_stream(struct v4l2_subdev *sd, int enable)
 	if (priv->streaming == enable)
 		goto done;
 
+	if (priv->bus_type == V4L2_MBUS_BT656) {
+		ret = regmap_update_bits(priv->regmap, COM7, ITU656_ON_OFF,
+					 enable ? ITU656_ON_OFF : ~ITU656_ON_OFF);
+		if (ret)
+			goto done;
+	}
+
 	ret = regmap_update_bits(priv->regmap, COM2, SOFT_SLEEP_MODE,
 				 enable ? 0 : SOFT_SLEEP_MODE);
 	if (ret)
@@ -1364,10 +1371,22 @@ static int ov772x_parse_dt(struct i2c_client *client,
 		return -EINVAL;
 	}
 
+	/*
+	 * For backward compatibility with older DTS where the
+	 * bus-type property was not mandatory, assume
+	 * V4L2_MBUS_PARALLEL as it was the only supported bus at the
+	 * time. v4l2_fwnode_endpoint_alloc_parse() will not fail if
+	 * 'bus-type' is not specified.
+	 */
 	bus_cfg.bus_type = V4L2_MBUS_PARALLEL;
 	ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
-	if (ret)
-		goto error_fwnode_put;
+	if (ret) {
+		bus_cfg = (struct v4l2_fwnode_endpoint)
+			  { .bus_type = V4L2_MBUS_BT656 };
+		ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
+		if (ret)
+			goto error_fwnode_put;
+	}
 
 	priv->bus_type = bus_cfg.bus_type;
 	v4l2_fwnode_endpoint_free(&bus_cfg);
-- 
2.17.1


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

* [PATCH v6 3/3] media: i2c: ov772x: Add test pattern control
  2020-09-17 17:42 [PATCH v6 0/3] media: i2c: ov772x: Enable BT.656 mode and test pattern support Lad Prabhakar
  2020-09-17 17:42 ` [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties Lad Prabhakar
  2020-09-17 17:42 ` [PATCH v6 2/3] media: i2c: ov772x: Add support for BT.656 mode Lad Prabhakar
@ 2020-09-17 17:42 ` Lad Prabhakar
  2 siblings, 0 replies; 9+ messages in thread
From: Lad Prabhakar @ 2020-09-17 17:42 UTC (permalink / raw)
  To: Jacopo Mondi, Sakari Ailus, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc, Lad Prabhakar,
	Biju Das, 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>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
---
 drivers/media/i2c/ov772x.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
index fe48b5881ad9..c3d36e003cad 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
  */
@@ -809,6 +815,9 @@ static int ov772x_s_ctrl(struct v4l2_ctrl *ctrl)
 		}
 
 		return ret;
+	case V4L2_CID_TEST_PATTERN:
+		priv->test_pattern = ctrl->val;
+		return 0;
 	}
 
 	return -EINVAL;
@@ -1107,6 +1116,8 @@ static int ov772x_set_params(struct ov772x_priv *priv,
 		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)
@@ -1443,6 +1454,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;
-- 
2.17.1


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

* Re: [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties
  2020-09-17 17:42 ` [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties Lad Prabhakar
@ 2020-09-30 10:30   ` Jacopo Mondi
  2020-09-30 11:45   ` Sakari Ailus
  1 sibling, 0 replies; 9+ messages in thread
From: Jacopo Mondi @ 2020-09-30 10:30 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Sakari Ailus, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab, linux-media, linux-kernel,
	linux-renesas-soc, Biju Das, Lad, Prabhakar

Hi

On Thu, Sep 17, 2020 at 06:42:22PM +0100, Lad Prabhakar wrote:
> Parse endpoint properties using v4l2_fwnode_endpoint_alloc_parse()
> to determine the bus type and store it in the driver structure.
>
> Set bus_type to V4L2_MBUS_PARALLEL as it's the only supported one
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>

Looks good!

Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>

Thanks
   j

> ---
>  drivers/media/i2c/ov772x.c | 34 ++++++++++++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
>
> diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
> index 2cc6a678069a..f61a3f09ad64 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
> +	enum v4l2_mbus_type		  bus_type;
>  };
>
>  /*
> @@ -1348,6 +1350,34 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = {
>  	.pad	= &ov772x_subdev_pad_ops,
>  };
>
> +static int ov772x_parse_dt(struct i2c_client *client,
> +			   struct ov772x_priv *priv)
> +{
> +	struct v4l2_fwnode_endpoint bus_cfg;
> +	struct fwnode_handle *ep;
> +	int ret;
> +
> +	ep = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev),
> +					    NULL);
> +	if (!ep) {
> +		dev_err(&client->dev, "Endpoint node not found\n");
> +		return -EINVAL;
> +	}
> +
> +	bus_cfg.bus_type = V4L2_MBUS_PARALLEL;
> +	ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
> +	if (ret)
> +		goto error_fwnode_put;
> +
> +	priv->bus_type = bus_cfg.bus_type;
> +	v4l2_fwnode_endpoint_free(&bus_cfg);
> +
> +error_fwnode_put:
> +	fwnode_handle_put(ep);
> +
> +	return ret;
> +}
> +
>  /*
>   * i2c_driver function
>   */
> @@ -1415,6 +1445,10 @@ static int ov772x_probe(struct i2c_client *client)
>  		goto error_clk_put;
>  	}
>
> +	ret = ov772x_parse_dt(client, priv);
> +	if (ret)
> +		goto error_clk_put;
> +
>  	ret = ov772x_video_probe(priv);
>  	if (ret < 0)
>  		goto error_gpio_put;
> --
> 2.17.1
>

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

* Re: [PATCH v6 2/3] media: i2c: ov772x: Add support for BT.656 mode
  2020-09-17 17:42 ` [PATCH v6 2/3] media: i2c: ov772x: Add support for BT.656 mode Lad Prabhakar
@ 2020-09-30 10:32   ` Jacopo Mondi
  0 siblings, 0 replies; 9+ messages in thread
From: Jacopo Mondi @ 2020-09-30 10:32 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Sakari Ailus, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab, linux-media, linux-kernel,
	linux-renesas-soc, Biju Das, Lad, Prabhakar

Hello,

On Thu, Sep 17, 2020 at 06:42:23PM +0100, Lad Prabhakar wrote:
> Add support to read the bus-type for V4L2_MBUS_BT656 and enable BT.656
> mode in the sensor if needed.
>
> For backward compatibility with older DTS where the bus-type property was
> not mandatory, assume V4L2_MBUS_PARALLEL as it was the only supported bus
> at the time. v4l2_fwnode_endpoint_alloc_parse() will not fail if
> 'bus-type' is not specified.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>

Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>

Thanks
  j

> ---
>  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 f61a3f09ad64..fe48b5881ad9 100644
> --- a/drivers/media/i2c/ov772x.c
> +++ b/drivers/media/i2c/ov772x.c
> @@ -583,6 +583,13 @@ static int ov772x_s_stream(struct v4l2_subdev *sd, int enable)
>  	if (priv->streaming == enable)
>  		goto done;
>
> +	if (priv->bus_type == V4L2_MBUS_BT656) {
> +		ret = regmap_update_bits(priv->regmap, COM7, ITU656_ON_OFF,
> +					 enable ? ITU656_ON_OFF : ~ITU656_ON_OFF);
> +		if (ret)
> +			goto done;
> +	}
> +
>  	ret = regmap_update_bits(priv->regmap, COM2, SOFT_SLEEP_MODE,
>  				 enable ? 0 : SOFT_SLEEP_MODE);
>  	if (ret)
> @@ -1364,10 +1371,22 @@ static int ov772x_parse_dt(struct i2c_client *client,
>  		return -EINVAL;
>  	}
>
> +	/*
> +	 * For backward compatibility with older DTS where the
> +	 * bus-type property was not mandatory, assume
> +	 * V4L2_MBUS_PARALLEL as it was the only supported bus at the
> +	 * time. v4l2_fwnode_endpoint_alloc_parse() will not fail if
> +	 * 'bus-type' is not specified.
> +	 */
>  	bus_cfg.bus_type = V4L2_MBUS_PARALLEL;
>  	ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
> -	if (ret)
> -		goto error_fwnode_put;
> +	if (ret) {
> +		bus_cfg = (struct v4l2_fwnode_endpoint)
> +			  { .bus_type = V4L2_MBUS_BT656 };
> +		ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
> +		if (ret)
> +			goto error_fwnode_put;
> +	}
>
>  	priv->bus_type = bus_cfg.bus_type;
>  	v4l2_fwnode_endpoint_free(&bus_cfg);
> --
> 2.17.1
>

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

* Re: [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties
  2020-09-17 17:42 ` [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties Lad Prabhakar
  2020-09-30 10:30   ` Jacopo Mondi
@ 2020-09-30 11:45   ` Sakari Ailus
  2020-09-30 12:19     ` Lad, Prabhakar
  1 sibling, 1 reply; 9+ messages in thread
From: Sakari Ailus @ 2020-09-30 11:45 UTC (permalink / raw)
  To: Lad Prabhakar
  Cc: Jacopo Mondi, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab, linux-media, linux-kernel,
	linux-renesas-soc, Biju Das, Lad, Prabhakar

Hi Prabhakar,

On Thu, Sep 17, 2020 at 06:42:22PM +0100, Lad Prabhakar wrote:
> Parse endpoint properties using v4l2_fwnode_endpoint_alloc_parse()
> to determine the bus type and store it in the driver structure.
> 
> Set bus_type to V4L2_MBUS_PARALLEL as it's the only supported one
> 
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
>  drivers/media/i2c/ov772x.c | 34 ++++++++++++++++++++++++++++++++++
>  1 file changed, 34 insertions(+)
> 
> diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
> index 2cc6a678069a..f61a3f09ad64 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
> +	enum v4l2_mbus_type		  bus_type;
>  };
>  
>  /*
> @@ -1348,6 +1350,34 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = {
>  	.pad	= &ov772x_subdev_pad_ops,
>  };
>  
> +static int ov772x_parse_dt(struct i2c_client *client,
> +			   struct ov772x_priv *priv)
> +{
> +	struct v4l2_fwnode_endpoint bus_cfg;
> +	struct fwnode_handle *ep;
> +	int ret;
> +
> +	ep = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev),
> +					    NULL);
> +	if (!ep) {
> +		dev_err(&client->dev, "Endpoint node not found\n");
> +		return -EINVAL;
> +	}
> +
> +	bus_cfg.bus_type = V4L2_MBUS_PARALLEL;

Please zero the entire struct, i.e. do this assignment in the declaration.

You can also use v4l2_fwnode_endpoint_parse() if you're not using the link
frequencies --- sensor drivers generally should but you could only add them
as optional at this point (out of scope of this patch).

> +	ret = v4l2_fwnode_endpoint_alloc_parse(ep, &bus_cfg);
> +	if (ret)
> +		goto error_fwnode_put;
> +
> +	priv->bus_type = bus_cfg.bus_type;
> +	v4l2_fwnode_endpoint_free(&bus_cfg);
> +
> +error_fwnode_put:
> +	fwnode_handle_put(ep);
> +
> +	return ret;
> +}
> +
>  /*
>   * i2c_driver function
>   */
> @@ -1415,6 +1445,10 @@ static int ov772x_probe(struct i2c_client *client)
>  		goto error_clk_put;
>  	}
>  
> +	ret = ov772x_parse_dt(client, priv);
> +	if (ret)
> +		goto error_clk_put;
> +
>  	ret = ov772x_video_probe(priv);
>  	if (ret < 0)
>  		goto error_gpio_put;
> -- 
> 2.17.1
> 

-- 
Sakari Ailus

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

* Re: [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties
  2020-09-30 11:45   ` Sakari Ailus
@ 2020-09-30 12:19     ` Lad, Prabhakar
  2020-10-01 19:34       ` Sakari Ailus
  0 siblings, 1 reply; 9+ messages in thread
From: Lad, Prabhakar @ 2020-09-30 12:19 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: Lad Prabhakar, Jacopo Mondi, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab, linux-media, LKML, Linux-Renesas,
	Biju Das

HI Sakari,

Thank you for the review.

On Wed, Sep 30, 2020 at 12:45 PM Sakari Ailus
<sakari.ailus@linux.intel.com> wrote:
>
> Hi Prabhakar,
>
> On Thu, Sep 17, 2020 at 06:42:22PM +0100, Lad Prabhakar wrote:
> > Parse endpoint properties using v4l2_fwnode_endpoint_alloc_parse()
> > to determine the bus type and store it in the driver structure.
> >
> > Set bus_type to V4L2_MBUS_PARALLEL as it's the only supported one
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > ---
> >  drivers/media/i2c/ov772x.c | 34 ++++++++++++++++++++++++++++++++++
> >  1 file changed, 34 insertions(+)
> >
> > diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
> > index 2cc6a678069a..f61a3f09ad64 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
> > +     enum v4l2_mbus_type               bus_type;
> >  };
> >
> >  /*
> > @@ -1348,6 +1350,34 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = {
> >       .pad    = &ov772x_subdev_pad_ops,
> >  };
> >
> > +static int ov772x_parse_dt(struct i2c_client *client,
> > +                        struct ov772x_priv *priv)
> > +{
> > +     struct v4l2_fwnode_endpoint bus_cfg;
> > +     struct fwnode_handle *ep;
> > +     int ret;
> > +
> > +     ep = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev),
> > +                                         NULL);
> > +     if (!ep) {
> > +             dev_err(&client->dev, "Endpoint node not found\n");
> > +             return -EINVAL;
> > +     }
> > +
> > +     bus_cfg.bus_type = V4L2_MBUS_PARALLEL;
>
> Please zero the entire struct, i.e. do this assignment in the declaration.
>
Agreed, but instead at the declaration I would prefer here as below,
since patch 2/3 has a comment related to backward compatibility with
the bindings. Is this OK with you ?
    bus_cfg = (struct v4l2_fwnode_endpoint)
          { .bus_type = V4L2_MBUS_PARALLEL };

> You can also use v4l2_fwnode_endpoint_parse() if you're not using the link
> frequencies --- sensor drivers generally should but you could only add them
> as optional at this point (out of scope of this patch).
>
will stick with this for now :)

Cheers,
Prabhakar

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

* Re: [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties
  2020-09-30 12:19     ` Lad, Prabhakar
@ 2020-10-01 19:34       ` Sakari Ailus
  0 siblings, 0 replies; 9+ messages in thread
From: Sakari Ailus @ 2020-10-01 19:34 UTC (permalink / raw)
  To: Lad, Prabhakar
  Cc: Lad Prabhakar, Jacopo Mondi, Hans Verkuil, Laurent Pinchart,
	Mauro Carvalho Chehab, linux-media, LKML, Linux-Renesas,
	Biju Das

On Wed, Sep 30, 2020 at 01:19:40PM +0100, Lad, Prabhakar wrote:
> HI Sakari,
> 
> Thank you for the review.
> 
> On Wed, Sep 30, 2020 at 12:45 PM Sakari Ailus
> <sakari.ailus@linux.intel.com> wrote:
> >
> > Hi Prabhakar,
> >
> > On Thu, Sep 17, 2020 at 06:42:22PM +0100, Lad Prabhakar wrote:
> > > Parse endpoint properties using v4l2_fwnode_endpoint_alloc_parse()
> > > to determine the bus type and store it in the driver structure.
> > >
> > > Set bus_type to V4L2_MBUS_PARALLEL as it's the only supported one
> > >
> > > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > > ---
> > >  drivers/media/i2c/ov772x.c | 34 ++++++++++++++++++++++++++++++++++
> > >  1 file changed, 34 insertions(+)
> > >
> > > diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
> > > index 2cc6a678069a..f61a3f09ad64 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
> > > +     enum v4l2_mbus_type               bus_type;
> > >  };
> > >
> > >  /*
> > > @@ -1348,6 +1350,34 @@ static const struct v4l2_subdev_ops ov772x_subdev_ops = {
> > >       .pad    = &ov772x_subdev_pad_ops,
> > >  };
> > >
> > > +static int ov772x_parse_dt(struct i2c_client *client,
> > > +                        struct ov772x_priv *priv)
> > > +{
> > > +     struct v4l2_fwnode_endpoint bus_cfg;
> > > +     struct fwnode_handle *ep;
> > > +     int ret;
> > > +
> > > +     ep = fwnode_graph_get_next_endpoint(dev_fwnode(&client->dev),
> > > +                                         NULL);
> > > +     if (!ep) {
> > > +             dev_err(&client->dev, "Endpoint node not found\n");
> > > +             return -EINVAL;
> > > +     }
> > > +
> > > +     bus_cfg.bus_type = V4L2_MBUS_PARALLEL;
> >
> > Please zero the entire struct, i.e. do this assignment in the declaration.
> >
> Agreed, but instead at the declaration I would prefer here as below,
> since patch 2/3 has a comment related to backward compatibility with
> the bindings. Is this OK with you ?
>     bus_cfg = (struct v4l2_fwnode_endpoint)
>           { .bus_type = V4L2_MBUS_PARALLEL };

Why not in variable declaration?

-- 
Sakari Ailus

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

end of thread, other threads:[~2020-10-01 19:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-17 17:42 [PATCH v6 0/3] media: i2c: ov772x: Enable BT.656 mode and test pattern support Lad Prabhakar
2020-09-17 17:42 ` [PATCH v6 1/3] media: i2c: ov772x: Parse endpoint properties Lad Prabhakar
2020-09-30 10:30   ` Jacopo Mondi
2020-09-30 11:45   ` Sakari Ailus
2020-09-30 12:19     ` Lad, Prabhakar
2020-10-01 19:34       ` Sakari Ailus
2020-09-17 17:42 ` [PATCH v6 2/3] media: i2c: ov772x: Add support for BT.656 mode Lad Prabhakar
2020-09-30 10:32   ` Jacopo Mondi
2020-09-17 17:42 ` [PATCH v6 3/3] 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).