Signed-off-by: Kuninori Morimoto <morimoto.kunin...@renesas.com>
---
This patch is 1st step for extra settings

 drivers/media/video/ov772x.c |   34 ++++++++++++++++++++++++++++++++++
 include/media/ov772x.h       |   25 +++++++++++++++++++++++++
 2 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/drivers/media/video/ov772x.c b/drivers/media/video/ov772x.c
index 34c9819..a951327 100644
--- a/drivers/media/video/ov772x.c
+++ b/drivers/media/video/ov772x.c
@@ -358,6 +358,15 @@
 #define VOSZ_VGA        0xF0
 #define VOSZ_QVGA       0x78
 
+/* EDGE CTRL
+ * see alse
+ *    ov772x.h :: for Edge ctrl
+ */
+#define EDGE0CTRL(param) (((param) >> 24) & 0x1F)
+#define EDGE1CTRL(param) (((param) >> 16) & 0x0F)
+#define EDGE2CTRL(param) (((param) >>  8) & 0xFF)
+#define EDGE3CTRL(param) (((param) >>  0) & 0xFF)
+
 /*
  * ID
  */
@@ -816,6 +825,31 @@ static int ov772x_set_params(struct ov772x_priv *priv, u32 
width, u32 height,
        ov772x_reset(priv->client);
 
        /*
+        * set Edge Ctrl if platform has edgectrl
+        */
+       if (priv->info->edgectrl & OV772X_EDGECTRL_ENABLE) {
+               ret = ov772x_mask_set(priv->client,
+                               EDGE0, 0x1F, EDGE0CTRL(priv->info->edgectrl));
+               if (ret < 0)
+                       goto ov772x_set_fmt_error;
+
+               ret = ov772x_mask_set(priv->client,
+                               EDGE1, 0x0F, EDGE1CTRL(priv->info->edgectrl));
+               if (ret < 0)
+                       goto ov772x_set_fmt_error;
+
+               ret = ov772x_mask_set(priv->client,
+                               EDGE2, 0xFF, EDGE2CTRL(priv->info->edgectrl));
+               if (ret < 0)
+                       goto ov772x_set_fmt_error;
+
+               ret = ov772x_mask_set(priv->client,
+                               EDGE3, 0xFF, EDGE3CTRL(priv->info->edgectrl));
+               if (ret < 0)
+                       goto ov772x_set_fmt_error;
+       }
+
+       /*
         * set size format
         */
        ret = ov772x_write_array(priv->client, priv->win->regs);
diff --git a/include/media/ov772x.h b/include/media/ov772x.h
index 57db48d..5b083dc 100644
--- a/include/media/ov772x.h
+++ b/include/media/ov772x.h
@@ -17,9 +17,34 @@
 #define OV772X_FLAG_VFLIP     0x00000001 /* Vertical flip image */
 #define OV772X_FLAG_HFLIP     0x00000002 /* Horizontal flip image */
 
+/*
+ * for Edge ctrl
+ *
+ * strength  : (for EDGE0) Edge enhancement strength control
+ * threshold : (for EDGE1) Edge enhancement threshold control
+ * low       : (for EDGE2) Edge enhancement strength Low point control
+ * high      : (for EDGE3) Edge enhancement strength High point control
+ *
+ * Meaning of edgectrl bit
+ *
+ * Exx0 0000 xxxx 1111 2222 2222 3333 3333
+ *
+ * E: use edgectrl or not (OV772X_EDGECTRL_ENABLE)
+ * 0: for Edge0 ctrl
+ * 1: for Edge1 ctrl
+ * 2: for Edge2 ctrl
+ * 3: for Edge3 ctrl
+ */
+#define OV772X_EDGECTRL_ENABLE 0x80000000
+#define OV772X_EDGECTRL(strength, threshold, low, high) \
+       (OV772X_EDGECTRL_ENABLE | \
+        (strength & 0x1F) << 24 | (threshold & 0x0F) << 16 | \
+        (low & 0xFF) << 8 | (high & 0xFF) << 0)
+
 struct ov772x_camera_info {
        unsigned long          buswidth;
        unsigned long          flags;
+       unsigned long          edgectrl;
        struct soc_camera_link link;
 };
 
-- 
1.5.6.3

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to