gl860.h revision 0c0d06cac63ee327ceaab4b5ffe2206574ab86bd
1/* GSPCA subdrivers for Genesys Logic webcams with the GL860 chip
2 * Subdriver declarations
3 *
4 * 2009/10/14 Olivier LORIN <o.lorin@laposte.net>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 */
19#ifndef GL860_DEV_H
20#define GL860_DEV_H
21
22#include "gspca.h"
23
24#define MODULE_NAME "gspca_gl860"
25#define DRIVER_VERSION "0.9d10"
26
27#define ctrl_in  gl860_RTx
28#define ctrl_out gl860_RTx
29
30#define ID_MI1320   1
31#define ID_OV2640   2
32#define ID_OV9655   4
33#define ID_MI2020   8
34
35#define _MI1320_  (((struct sd *) gspca_dev)->sensor == ID_MI1320)
36#define _MI2020_  (((struct sd *) gspca_dev)->sensor == ID_MI2020)
37#define _OV2640_  (((struct sd *) gspca_dev)->sensor == ID_OV2640)
38#define _OV9655_  (((struct sd *) gspca_dev)->sensor == ID_OV9655)
39
40#define IMAGE_640   0
41#define IMAGE_800   1
42#define IMAGE_1280  2
43#define IMAGE_1600  3
44
45struct sd_gl860 {
46	u16 backlight;
47	u16 brightness;
48	u16 sharpness;
49	u16 contrast;
50	u16 gamma;
51	u16 hue;
52	u16 saturation;
53	u16 whitebal;
54	u8  mirror;
55	u8  flip;
56	u8  AC50Hz;
57};
58
59/* Specific webcam descriptor */
60struct sd {
61	struct gspca_dev gspca_dev;	/* !! must be the first item */
62
63	struct sd_gl860 vcur;
64	struct sd_gl860 vold;
65	struct sd_gl860 vmax;
66
67	int  (*dev_configure_alt)  (struct gspca_dev *);
68	int  (*dev_init_at_startup)(struct gspca_dev *);
69	int  (*dev_init_pre_alt)   (struct gspca_dev *);
70	void (*dev_post_unset_alt) (struct gspca_dev *);
71	int  (*dev_camera_settings)(struct gspca_dev *);
72
73	u8   swapRB;
74	u8   mirrorMask;
75	u8   sensor;
76	s32  nbIm;
77	s32  nbRightUp;
78	u8   waitSet;
79};
80
81struct validx {
82	u16 val;
83	u16 idx;
84};
85
86struct idxdata {
87	u8 idx;
88	u8 data[3];
89};
90
91int fetch_validx(struct gspca_dev *gspca_dev, struct validx *tbl, int len);
92int keep_on_fetching_validx(struct gspca_dev *gspca_dev, struct validx *tbl,
93				int len, int n);
94void fetch_idxdata(struct gspca_dev *gspca_dev, struct idxdata *tbl, int len);
95
96int gl860_RTx(struct gspca_dev *gspca_dev,
97			unsigned char pref, u32 req, u16 val, u16 index,
98			s32 len, void *pdata);
99
100void mi1320_init_settings(struct gspca_dev *);
101void ov2640_init_settings(struct gspca_dev *);
102void ov9655_init_settings(struct gspca_dev *);
103void mi2020_init_settings(struct gspca_dev *);
104
105#endif
106