Merge commit 'main-jb-2012.08.03-B4' into t114-0806
[linux-2.6.git] / include / media / ov9726.h
1 /*
2 * ov9726.h
3 *
4 * Copyright (c) 2011, NVIDIA, All Rights Reserved.
5 *
6 * This file is licensed under the terms of the GNU General Public License
7 * version 2. This program is licensed "as is" without any warranty of any
8 * kind, whether express or implied.
9 */
10
11 #ifndef __OV9726_H__
12 #define __OV9726_H__
13
14 #include <linux/ioctl.h>
15
16 #define OV9726_I2C_ADDR                 0x20
17
18 #define OV9726_IOCTL_SET_MODE           _IOW('o', 1, struct ov9726_mode)
19 #define OV9726_IOCTL_SET_FRAME_LENGTH   _IOW('o', 2, __u32)
20 #define OV9726_IOCTL_SET_COARSE_TIME    _IOW('o', 3, __u32)
21 #define OV9726_IOCTL_SET_GAIN           _IOW('o', 4, __u16)
22 #define OV9726_IOCTL_GET_STATUS _IOR('o', 5, __u8)
23 #define OV9726_IOCTL_SET_GROUP_HOLD     _IOW('o', 6, struct ov9726_ae)
24
25 struct ov9726_mode {
26         int     mode_id;
27         int     xres;
28         int     yres;
29         __u32   frame_length;
30         __u32   coarse_time;
31         __u16   gain;
32 };
33
34 struct ov9726_ae {
35         __u32 frame_length;
36         __u32 coarse_time;
37         __u16 gain;
38         __u8 frame_length_enable;
39         __u8 coarse_time_enable;
40         __u8 gain_enable;
41 };
42
43 struct ov9726_reg {
44         __u16   addr;
45         __u16   val;
46 };
47
48 #ifdef __KERNEL__
49 #define OV9726_REG_FRAME_LENGTH_HI      0x340
50 #define OV9726_REG_FRAME_LENGTH_LO      0x341
51 #define OV9726_REG_COARSE_TIME_HI       0x202
52 #define OV9726_REG_COARSE_TIME_LO       0x203
53 #define OV9726_REG_GAIN_HI              0x204
54 #define OV9726_REG_GAIN_LO              0x205
55
56 #define OV9726_MAX_RETRIES              3
57
58 #define OV9726_TABLE_WAIT_MS            0
59 #define OV9726_TABLE_END                1
60
61 struct ov9726_platform_data {
62         int     (*power_on)(void);
63         int     (*power_off)(void);
64         unsigned    gpio_rst;
65         bool        rst_low_active;
66         unsigned    gpio_pwdn;
67         bool        pwdn_low_active;
68 };
69 #endif /* __KERNEL__ */
70
71 #endif  /* __OV9726_H__ */
72