1/* OmniVision* camera chip driver API
2 *
3 * Copyright (c) 1999-2004 Mark McClelland
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License as published by the
7 * Free Software Foundation; either version 2 of the License, or (at your
8 * option) any later version. NO WARRANTY OF ANY KIND is expressed or implied.
9 *
10 * * OmniVision is a trademark of OmniVision Technologies, Inc. This driver
11 * is not sponsored or developed by them.
12 */
13
14#ifndef __LINUX_OVCAMCHIP_H
15#define __LINUX_OVCAMCHIP_H
16
17#include <linux/videodev.h>
18#include <media/v4l2-common.h>
19
20/* --------------------------------- */
21/*           ENUMERATIONS            */
22/* --------------------------------- */
23
24/* Controls */
25enum {
26	OVCAMCHIP_CID_CONT,		/* Contrast */
27	OVCAMCHIP_CID_BRIGHT,		/* Brightness */
28	OVCAMCHIP_CID_SAT,		/* Saturation */
29	OVCAMCHIP_CID_HUE,		/* Hue */
30	OVCAMCHIP_CID_EXP,		/* Exposure */
31	OVCAMCHIP_CID_FREQ,		/* Light frequency */
32	OVCAMCHIP_CID_BANDFILT,		/* Banding filter */
33	OVCAMCHIP_CID_AUTOBRIGHT,	/* Auto brightness */
34	OVCAMCHIP_CID_AUTOEXP,		/* Auto exposure */
35	OVCAMCHIP_CID_BACKLIGHT,	/* Back light compensation */
36	OVCAMCHIP_CID_MIRROR,		/* Mirror horizontally */
37};
38
39/* Chip types */
40#define NUM_CC_TYPES	9
41enum {
42	CC_UNKNOWN,
43	CC_OV76BE,
44	CC_OV7610,
45	CC_OV7620,
46	CC_OV7620AE,
47	CC_OV6620,
48	CC_OV6630,
49	CC_OV6630AE,
50	CC_OV6630AF,
51};
52
53/* --------------------------------- */
54/*           I2C ADDRESSES           */
55/* --------------------------------- */
56
57#define OV7xx0_SID   (0x42 >> 1)
58#define OV6xx0_SID   (0xC0 >> 1)
59
60/* --------------------------------- */
61/*                API                */
62/* --------------------------------- */
63
64struct ovcamchip_control {
65	__u32 id;
66	__s32 value;
67};
68
69struct ovcamchip_window {
70	int x;
71	int y;
72	int width;
73	int height;
74	int format;
75	int quarter;		/* Scale width and height down 2x */
76
77	/* This stuff will be removed eventually */
78	int clockdiv;		/* Clock divisor setting */
79};
80
81/* Commands */
82#define OVCAMCHIP_CMD_Q_SUBTYPE     _IOR  (0x88, 0x00, int)
83#define OVCAMCHIP_CMD_INITIALIZE    _IOW  (0x88, 0x01, int)
84/* You must call OVCAMCHIP_CMD_INITIALIZE before any of commands below! */
85#define OVCAMCHIP_CMD_S_CTRL        _IOW  (0x88, 0x02, struct ovcamchip_control)
86#define OVCAMCHIP_CMD_G_CTRL        _IOWR (0x88, 0x03, struct ovcamchip_control)
87#define OVCAMCHIP_CMD_S_MODE        _IOW  (0x88, 0x04, struct ovcamchip_window)
88#define OVCAMCHIP_MAX_CMD           _IO   (0x88, 0x3f)
89
90#endif
91