On Mon, 23 Mar 2009, Kuninori Morimoto wrote:
>
> Signed-off-by: Kuninori Morimoto <[email protected]>
> ---
> I used flags to judge though
> I said I use edge_threshold un-used 4 bit.
>
> v1 -> v2
> o add struct ov772x_edge_ctrl
> o add new flags
>
> drivers/media/video/ov772x.c | 31 +++++++++++++++++++++++++++++++
> include/media/ov772x.h | 26 +++++++++++++++++++++++---
> 2 files changed, 54 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/media/video/ov772x.c b/drivers/media/video/ov772x.c
> index 34c9819..ae832e6 100644
> --- a/drivers/media/video/ov772x.c
> +++ b/drivers/media/video/ov772x.c
> @@ -816,6 +816,37 @@ static int ov772x_set_params(struct ov772x_priv *priv,
> u32 width, u32 height,
> ov772x_reset(priv->client);
>
> /*
> + * set Edge Ctrl
> + */
> + if (priv->info->flags & OV772X_FLAG_EDGE_STRENGTH) {
> + ret = ov772x_mask_set(priv->client, EDGE0, 0x1F,
> + priv->info->edgectrl.strength);
> + if (ret < 0)
> + goto ov772x_set_fmt_error;
> + }
> +
> + if (priv->info->flags & OV772X_FLAG_EDGE_THRESHOLD) {
> + ret = ov772x_mask_set(priv->client, EDGE1, 0x0F,
> + priv->info->edgectrl.threshold);
> + if (ret < 0)
> + goto ov772x_set_fmt_error;
> + }
> +
> + if (priv->info->flags & OV772X_FLAG_EDGE_LOW) {
> + ret = ov772x_mask_set(priv->client, EDGE2, 0xFF,
> + priv->info->edgectrl.low);
> + if (ret < 0)
> + goto ov772x_set_fmt_error;
> + }
> +
> + if (priv->info->flags & OV772X_FLAG_EDGE_HIGH) {
> + ret = ov772x_mask_set(priv->client, EDGE3, 0xFF,
> + priv->info->edgectrl.high);
> + if (ret < 0)
> + goto ov772x_set_fmt_error;
> + }
No idea, does it really make sense to set low edge without setting high?
or to set threshold without strength?
> +
> + /*
> * 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..c5051c7 100644
> --- a/include/media/ov772x.h
> +++ b/include/media/ov772x.h
> @@ -13,14 +13,34 @@
>
> #include <media/soc_camera.h>
>
> -/* for flags */
> -#define OV772X_FLAG_VFLIP 0x00000001 /* Vertical flip image */
> -#define OV772X_FLAG_HFLIP 0x00000002 /* Horizontal flip image */
> +/*
> + * for flags
> + */
> +#define OV772X_FLAG_VFLIP (1 << 0) /* Vertical flip image */
> +#define OV772X_FLAG_HFLIP (1 << 1) /* Horizontal flip image */
> +#define OV772X_FLAG_EDGE_STRENGTH (1 << 2) /* Edge Ctrl strength */
> +#define OV772X_FLAG_EDGE_THRESHOLD (1 << 3) /* Edge ctrl threshold */
> +#define OV772X_FLAG_EDGE_LOW (1 << 4) /* Edge ctrl low */
> +#define OV772X_FLAG_EDGE_HIGH (1 << 5) /* Edge ctrl high */
>
> +/*
> + * for Edge ctrl
> + */
Please, explain in the comment what this edge controls are good for, at
least approximately, so people without the datasheet have a chance to
understand what's going on here.
> +struct ov772x_edge_ctrl {
> + unsigned char strength; /* strength control */
> + unsigned char threshold; /* threshold control */
> + unsigned char low; /* strength Low point control */
> + unsigned char high; /* strength High point control */
> +};
> +
> +/*
> + * ov772x camera info
> + */
> struct ov772x_camera_info {
> unsigned long buswidth;
> unsigned long flags;
> struct soc_camera_link link;
> + struct ov772x_edge_ctrl edgectrl;
> };
>
> #endif /* __OV772X_H__ */
> --
> 1.5.6.3
>
Thanks
Guennadi
---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html