• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 */
25 enum {
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
41 enum {
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 
64 struct ovcamchip_control {
65 	__u32 id;
66 	__s32 value;
67 };
68 
69 struct 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