All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
To: linux-media@vger.kernel.org
Subject: [PATCH 14/59] V4L: ov6650: support the new mbus-config subdev ops
Date: Fri, 29 Jul 2011 12:56:14 +0200	[thread overview]
Message-ID: <1311937019-29914-15-git-send-email-g.liakhovetski@gmx.de> (raw)
In-Reply-To: <1311937019-29914-1-git-send-email-g.liakhovetski@gmx.de>

Extend the driver to also support [gs]_mbus_config() subdevice video
operations.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
---
 drivers/media/video/ov6650.c |   53 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 52 insertions(+), 1 deletions(-)

diff --git a/drivers/media/video/ov6650.c b/drivers/media/video/ov6650.c
index 456d9ad..a26734d 100644
--- a/drivers/media/video/ov6650.c
+++ b/drivers/media/video/ov6650.c
@@ -30,9 +30,9 @@
 #include <linux/slab.h>
 
 #include <media/soc_camera.h>
+#include <media/soc_mediabus.h>
 #include <media/v4l2-chip-ident.h>
 
-
 /* Register definitions */
 #define REG_GAIN		0x00	/* range 00 - 3F */
 #define REG_BLUE		0x01
@@ -1111,6 +1111,55 @@ static struct v4l2_subdev_core_ops ov6650_core_ops = {
 #endif
 };
 
+static int ov6650_g_mbus_config(struct v4l2_subdev *sd,
+				struct v4l2_mbus_config *cfg)
+{
+	struct i2c_client *client = v4l2_get_subdevdata(sd);
+	struct soc_camera_device *icd = client->dev.platform_data;
+	struct soc_camera_link *icl = to_soc_camera_link(icd);
+
+	cfg->flags = V4L2_MBUS_MASTER |
+		V4L2_MBUS_PCLK_SAMPLE_RISING | V4L2_MBUS_PCLK_SAMPLE_FALLING |
+		V4L2_MBUS_HSYNC_ACTIVE_HIGH | V4L2_MBUS_HSYNC_ACTIVE_LOW |
+		V4L2_MBUS_VSYNC_ACTIVE_HIGH | V4L2_MBUS_VSYNC_ACTIVE_LOW |
+		V4L2_MBUS_DATA_ACTIVE_HIGH;
+	cfg->type = V4L2_MBUS_PARALLEL;
+	cfg->flags = soc_camera_apply_board_flags(icl, cfg);
+
+	return 0;
+}
+
+static int ov6650_s_mbus_config(struct v4l2_subdev *sd,
+				const struct v4l2_mbus_config *cfg)
+{
+	struct i2c_client *client = v4l2_get_subdevdata(sd);
+	struct soc_camera_device *icd = client->dev.platform_data;
+	struct soc_camera_link *icl = to_soc_camera_link(icd);
+	unsigned long flags = soc_camera_apply_board_flags(icl, cfg);
+	int ret;
+
+	if (flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
+		ret = ov6650_reg_rmw(client, REG_COMJ, COMJ_PCLK_RISING, 0);
+	else
+		ret = ov6650_reg_rmw(client, REG_COMJ, 0, COMJ_PCLK_RISING);
+	if (ret)
+		return ret;
+
+	if (flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
+		ret = ov6650_reg_rmw(client, REG_COMF, COMF_HREF_LOW, 0);
+	else
+		ret = ov6650_reg_rmw(client, REG_COMF, 0, COMF_HREF_LOW);
+	if (ret)
+		return ret;
+
+	if (flags & V4L2_MBUS_VSYNC_ACTIVE_HIGH)
+		ret = ov6650_reg_rmw(client, REG_COMJ, COMJ_VSYNC_HIGH, 0);
+	else
+		ret = ov6650_reg_rmw(client, REG_COMJ, 0, COMJ_VSYNC_HIGH);
+
+	return ret;
+}
+
 static struct v4l2_subdev_video_ops ov6650_video_ops = {
 	.s_stream	= ov6650_s_stream,
 	.g_mbus_fmt	= ov6650_g_fmt,
@@ -1122,6 +1171,8 @@ static struct v4l2_subdev_video_ops ov6650_video_ops = {
 	.s_crop		= ov6650_s_crop,
 	.g_parm		= ov6650_g_parm,
 	.s_parm		= ov6650_s_parm,
+	.g_mbus_config	= ov6650_g_mbus_config,
+	.s_mbus_config	= ov6650_s_mbus_config,
 };
 
 static struct v4l2_subdev_ops ov6650_subdev_ops = {
-- 
1.7.2.5


  parent reply	other threads:[~2011-07-29 10:57 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-29 10:56 [PATCH 00/59] Convert soc-camera to .[gs]_mbus_config() subdev operations Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 01/59] V4L: sh_mobile_ceu_camera: output image sizes must be a multiple of 4 Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 02/59] V4L: sh_mobile_ceu_camera: don't try to improve client scaling, if perfect Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 03/59] V4L: sh_mobile_ceu_camera: fix field addresses in interleaved mode Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 04/59] V4L: sh_mobile_ceu_camera: remove duplicated code Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 05/59] V4L: imx074: support the new mbus-config subdev ops Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 06/59] V4L: soc-camera: add helper functions for new bus configuration type Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 07/59] V4L: mt9m001: support the new mbus-config subdev ops Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 08/59] V4L: mt9m111: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 09/59] V4L: mt9t031: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 10/59] V4L: mt9t112: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 11/59] V4L: mt9v022: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 12/59] V4L: ov2640: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 13/59] V4L: ov5642: " Guennadi Liakhovetski
2011-07-29 10:56 ` Guennadi Liakhovetski [this message]
2011-07-29 10:56 ` [PATCH 15/59] V4L: ov772x: rename macros to not pollute the global namespace Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 16/59] V4L: ov772x: support the new mbus-config subdev ops Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 17/59] V4L: ov9640: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 18/59] V4L: ov9740: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 19/59] V4L: rj54n1cb0c: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 20/59] ARM: ap4evb: switch imx074 configuration to default number of lanes Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 21/59] V4L: sh_mobile_csi2: verify client compatibility Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 22/59] V4L: sh_mobile_csi2: support the new mbus-config subdev ops Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 23/59] V4L: tw9910: remove a not really implemented cropping support Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 24/59] V4L: tw9910: support the new mbus-config subdev ops Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 25/59] V4L: soc_camera_platform: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 26/59] V4L: soc-camera: compatible bus-width flags Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 27/59] ARM: mach-shmobile: convert mackerel to mediabus flags Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 28/59] sh: convert ap325rxa " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 29/59] ARM: PXA: use gpio_set_value_cansleep() on pcm990 Guennadi Liakhovetski
     [not found]   ` <CAMPhdO8V=y+se-vuozXW2_w6Y2cP2L7FVpiG7zXWS_WBcQvgqQ@mail.gmail.com>
2011-08-03 16:37     ` Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 30/59] V4L: atmel-isi: convert to the new mbus-config subdev operations Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 31/59] V4L: mx1_camera: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 32/59] V4L: mx2_camera: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 33/59] V4L: ov2640: remove undefined struct Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 34/59] V4L: mx3_camera: convert to the new mbus-config subdev operations Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 35/59] V4L: mt9m001, mt9v022: add a clarifying comment Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 36/59] V4L: omap1_camera: convert to the new mbus-config subdev operations Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 37/59] V4L: pxa_camera: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 38/59] V4L: sh_mobile_ceu_camera: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 39/59] V4L: soc-camera: camera client operations no longer compulsory Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 40/59] V4L: mt9m001: remove superfluous soc-camera client operations Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 41/59] V4L: mt9m111: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 42/59] V4L: imx074: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 43/59] V4L: mt9t031: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 44/59] V4L: mt9t112: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 45/59] V4L: mt9v022: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 46/59] V4L: ov2640: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 47/59] V4L: ov5642: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 48/59] V4L: ov6650: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 49/59] sh: ap3rxa: remove redundant soc-camera platform data fields Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 50/59] sh: migor: remove unused ov772x buswidth flag Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 51/59] V4L: ov772x: remove superfluous soc-camera client operations Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 52/59] V4L: ov9640: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 53/59] V4L: ov9740: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 54/59] V4L: rj54n1cb0c: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 55/59] V4L: sh_mobile_csi2: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 56/59] ARM: mach-shmobile: mackerel doesn't need legacy SOCAM_* flags anymore Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 57/59] V4L: soc_camera_platform: remove superfluous soc-camera client operations Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 58/59] V4L: tw9910: " Guennadi Liakhovetski
2011-07-29 10:56 ` [PATCH 59/59] V4L: soc-camera: remove soc-camera client bus-param operations and supporting code Guennadi Liakhovetski
2011-08-01 10:51 ` [PATCH 00/59] Convert soc-camera to .[gs]_mbus_config() subdev operations Janusz Krzysztofik

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=1311937019-29914-15-git-send-email-g.liakhovetski@gmx.de \
    --to=g.liakhovetski@gmx.de \
    --cc=linux-media@vger.kernel.org \
    /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.