media: video: tegra: ov5640: move MCLK into sensor
[linux-3.10.git] / include / media / imx135.h
1 /**
2  * Copyright (c) 2012-2013, NVIDIA Corporation.  All rights reserved.
3  *
4  * NVIDIA Corporation and its licensors retain all intellectual property
5  * and proprietary rights in and to this software and related documentation
6  * and any modifications thereto.  Any use, reproduction, disclosure or
7  * distribution of this software and related documentation without an express
8  * license agreement from NVIDIA Corporation is strictly prohibited.
9  */
10
11 #ifndef __IMX135_H__
12 #define __IMX135_H__
13
14 #include <linux/ioctl.h>  /* For IOCTL macros */
15 #include <media/nvc.h>
16 #include <media/nvc_image.h>
17
18 #define IMX135_IOCTL_SET_MODE           _IOW('o', 1, struct imx135_mode)
19 #define IMX135_IOCTL_GET_STATUS         _IOR('o', 2, __u8)
20 #define IMX135_IOCTL_SET_FRAME_LENGTH   _IOW('o', 3, __u32)
21 #define IMX135_IOCTL_SET_COARSE_TIME    _IOW('o', 4, __u32)
22 #define IMX135_IOCTL_SET_GAIN           _IOW('o', 5, __u16)
23 #define IMX135_IOCTL_GET_SENSORDATA     _IOR('o', 6, struct imx135_sensordata)
24 #define IMX135_IOCTL_SET_GROUP_HOLD     _IOW('o', 7, struct imx135_ae)
25 #define IMX135_IOCTL_SET_HDR_COARSE_TIME        _IOW('o', 8, struct imx135_hdr)
26 #define IMX135_IOCTL_SET_POWER          _IOW('o', 20, __u32)
27 #define IMX135_IOCTL_GET_FLASH_CAP      _IOR('o', 30, __u32)
28 #define IMX135_IOCTL_SET_FLASH_MODE     _IOW('o', 31, \
29                                                 struct imx135_flash_control)
30
31 struct imx135_mode {
32         int xres;
33         int yres;
34         __u32 frame_length;
35         __u32 coarse_time;
36         __u32 coarse_time_short;
37         __u16 gain;
38         __u8 hdr_en;
39 };
40
41 struct imx135_hdr {
42         __u32 coarse_time_long;
43         __u32 coarse_time_short;
44 };
45
46 struct imx135_ae {
47         __u32 frame_length;
48         __u8  frame_length_enable;
49         __u32 coarse_time;
50         __u32 coarse_time_short;
51         __u8  coarse_time_enable;
52         __s32 gain;
53         __u8  gain_enable;
54 };
55
56 struct imx135_sensordata {
57         __u32 fuse_id_size;
58         __u8  fuse_id[16];
59 };
60
61 struct imx135_flash_control {
62         u8 enable;
63         u8 edge_trig_en;
64         u8 start_edge;
65         u8 repeat;
66         u16 delay_frm;
67 };
68
69
70 #ifdef __KERNEL__
71 struct imx135_power_rail {
72         struct regulator *dvdd;
73         struct regulator *avdd;
74         struct regulator *iovdd;
75 };
76
77 struct imx135_platform_data {
78         struct imx135_flash_control flash_cap;
79         const char *mclk_name; /* NULL for default default_mclk */
80         int (*power_on)(struct imx135_power_rail *pw);
81         int (*power_off)(struct imx135_power_rail *pw);
82 };
83 #endif /* __KERNEL__ */
84
85 #endif  /* __IMX135_H__ */