blob: be4449cb923d8502d9704e8a7303d9496e2642b3 [file] [log] [blame]
Iliyan Malchev94a144e2009-04-30 12:29:52 -07001/****************************************************************************
2 ****************************************************************************
3 ***
4 *** This header was automatically generated from a Linux kernel header
5 *** of the same name, to make information necessary for userspace to
6 *** call into the kernel available to libc. It contains only constants,
7 *** structures, and macros generated from the original header, and thus,
8 *** contains no copyrightable information.
9 ***
10 ****************************************************************************
11 ****************************************************************************/
12#ifndef __LINUX_MSM_CAMERA_H
13#define __LINUX_MSM_CAMERA_H
Ben Cheng4b29af02012-03-07 16:14:53 -080014
Iliyan Malchev94a144e2009-04-30 12:29:52 -070015#include <linux/types.h>
16#include <asm/sizes.h>
17#include <linux/ioctl.h>
Ben Cheng4b29af02012-03-07 16:14:53 -080018
Iliyan Malchev94a144e2009-04-30 12:29:52 -070019#define MSM_CAM_IOCTL_MAGIC 'm'
Ben Cheng4b29af02012-03-07 16:14:53 -080020
Iliyan Malchev07116002009-06-23 20:08:10 -070021#define MSM_CAM_IOCTL_GET_SENSOR_INFO _IOR(MSM_CAM_IOCTL_MAGIC, 1, struct msm_camsensor_info *)
Ben Cheng4b29af02012-03-07 16:14:53 -080022
Iliyan Malchev07116002009-06-23 20:08:10 -070023#define MSM_CAM_IOCTL_REGISTER_PMEM _IOW(MSM_CAM_IOCTL_MAGIC, 2, struct msm_pmem_info *)
Ben Cheng4b29af02012-03-07 16:14:53 -080024
Iliyan Malchev07116002009-06-23 20:08:10 -070025#define MSM_CAM_IOCTL_UNREGISTER_PMEM _IOW(MSM_CAM_IOCTL_MAGIC, 3, unsigned)
Ben Cheng4b29af02012-03-07 16:14:53 -080026
Iliyan Malchev07116002009-06-23 20:08:10 -070027#define MSM_CAM_IOCTL_CTRL_COMMAND _IOW(MSM_CAM_IOCTL_MAGIC, 4, struct msm_ctrl_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080028
Iliyan Malchev07116002009-06-23 20:08:10 -070029#define MSM_CAM_IOCTL_CONFIG_VFE _IOW(MSM_CAM_IOCTL_MAGIC, 5, struct msm_camera_vfe_cfg_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080030
Iliyan Malchev07116002009-06-23 20:08:10 -070031#define MSM_CAM_IOCTL_GET_STATS _IOR(MSM_CAM_IOCTL_MAGIC, 6, struct msm_camera_stats_event_ctrl *)
Ben Cheng4b29af02012-03-07 16:14:53 -080032
Iliyan Malchev07116002009-06-23 20:08:10 -070033#define MSM_CAM_IOCTL_GETFRAME _IOR(MSM_CAM_IOCTL_MAGIC, 7, struct msm_camera_get_frame *)
Ben Cheng4b29af02012-03-07 16:14:53 -080034
Iliyan Malchev07116002009-06-23 20:08:10 -070035#define MSM_CAM_IOCTL_ENABLE_VFE _IOW(MSM_CAM_IOCTL_MAGIC, 8, struct camera_enable_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080036
Iliyan Malchev07116002009-06-23 20:08:10 -070037#define MSM_CAM_IOCTL_CTRL_CMD_DONE _IOW(MSM_CAM_IOCTL_MAGIC, 9, struct camera_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080038
Iliyan Malchev07116002009-06-23 20:08:10 -070039#define MSM_CAM_IOCTL_CONFIG_CMD _IOW(MSM_CAM_IOCTL_MAGIC, 10, struct camera_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080040
Iliyan Malchev07116002009-06-23 20:08:10 -070041#define MSM_CAM_IOCTL_DISABLE_VFE _IOW(MSM_CAM_IOCTL_MAGIC, 11, struct camera_enable_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080042
Iliyan Malchev07116002009-06-23 20:08:10 -070043#define MSM_CAM_IOCTL_PAD_REG_RESET2 _IOW(MSM_CAM_IOCTL_MAGIC, 12, struct camera_enable_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080044
Iliyan Malchev07116002009-06-23 20:08:10 -070045#define MSM_CAM_IOCTL_VFE_APPS_RESET _IOW(MSM_CAM_IOCTL_MAGIC, 13, struct camera_enable_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080046
Iliyan Malchev07116002009-06-23 20:08:10 -070047#define MSM_CAM_IOCTL_RELEASE_FRAME_BUFFER _IOW(MSM_CAM_IOCTL_MAGIC, 14, struct camera_enable_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080048
Iliyan Malchev07116002009-06-23 20:08:10 -070049#define MSM_CAM_IOCTL_RELEASE_STATS_BUFFER _IOW(MSM_CAM_IOCTL_MAGIC, 15, struct msm_stats_buf *)
Ben Cheng4b29af02012-03-07 16:14:53 -080050
Iliyan Malchev07116002009-06-23 20:08:10 -070051#define MSM_CAM_IOCTL_AXI_CONFIG _IOW(MSM_CAM_IOCTL_MAGIC, 16, struct msm_camera_vfe_cfg_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080052
Iliyan Malchev07116002009-06-23 20:08:10 -070053#define MSM_CAM_IOCTL_GET_PICTURE _IOW(MSM_CAM_IOCTL_MAGIC, 17, struct msm_camera_ctrl_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080054
Iliyan Malchev07116002009-06-23 20:08:10 -070055#define MSM_CAM_IOCTL_SET_CROP _IOW(MSM_CAM_IOCTL_MAGIC, 18, struct crop_info *)
Ben Cheng4b29af02012-03-07 16:14:53 -080056
Iliyan Malchev0e24d2c2009-10-13 20:28:29 -070057#define MSM_CAM_IOCTL_PP _IOW(MSM_CAM_IOCTL_MAGIC, 19, uint8_t *)
Ben Cheng4b29af02012-03-07 16:14:53 -080058
Iliyan Malchev0e24d2c2009-10-13 20:28:29 -070059#define MSM_CAM_IOCTL_PP_DONE _IOW(MSM_CAM_IOCTL_MAGIC, 20, struct msm_snapshot_pp_status *)
Ben Cheng4b29af02012-03-07 16:14:53 -080060
Iliyan Malchev07116002009-06-23 20:08:10 -070061#define MSM_CAM_IOCTL_SENSOR_IO_CFG _IOW(MSM_CAM_IOCTL_MAGIC, 21, struct sensor_cfg_data *)
Ben Cheng4b29af02012-03-07 16:14:53 -080062
Iliyan Malchev94a144e2009-04-30 12:29:52 -070063#define MSM_CAMERA_LED_OFF 0
64#define MSM_CAMERA_LED_LOW 1
65#define MSM_CAMERA_LED_HIGH 2
Ben Cheng4b29af02012-03-07 16:14:53 -080066
Iliyan Malchev07116002009-06-23 20:08:10 -070067#define MSM_CAM_IOCTL_FLASH_LED_CFG _IOW(MSM_CAM_IOCTL_MAGIC, 22, unsigned *)
Ben Cheng4b29af02012-03-07 16:14:53 -080068
Iliyan Malchev07116002009-06-23 20:08:10 -070069#define MSM_CAM_IOCTL_UNBLOCK_POLL_FRAME _IO(MSM_CAM_IOCTL_MAGIC, 23)
Ben Cheng4b29af02012-03-07 16:14:53 -080070
Iliyan Malchev07116002009-06-23 20:08:10 -070071#define MSM_CAM_IOCTL_CTRL_COMMAND_2 _IOW(MSM_CAM_IOCTL_MAGIC, 24, struct msm_ctrl_cmd *)
Ben Cheng4b29af02012-03-07 16:14:53 -080072
Iliyan Malchevcdcc2642010-01-31 17:22:25 -080073#define MSM_CAM_IOCTL_ENABLE_OUTPUT_IND _IOW(MSM_CAM_IOCTL_MAGIC, 25, uint32_t *)
Ben Cheng4b29af02012-03-07 16:14:53 -080074
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -070075#define MSM_CAM_IOCTL_AF_CTRL _IOR(MSM_CAM_IOCTL_MAGIC, 26, struct msm_ctrl_cmt_t *)
76#define MSM_CAM_IOCTL_AF_CTRL_DONE _IOW(MSM_CAM_IOCTL_MAGIC, 27, struct msm_ctrl_cmt_t *)
Ben Cheng4b29af02012-03-07 16:14:53 -080077
Iliyan Malchev94a144e2009-04-30 12:29:52 -070078#define MAX_SENSOR_NUM 3
79#define MAX_SENSOR_NAME 32
Ben Cheng4b29af02012-03-07 16:14:53 -080080
Iliyan Malchev82420122009-09-11 00:29:59 -070081#define PP_SNAP 1
82#define PP_RAW_SNAP (1<<1)
83#define PP_PREV (1<<2)
84#define PP_MASK (PP_SNAP|PP_RAW_SNAP|PP_PREV)
Ben Cheng4b29af02012-03-07 16:14:53 -080085
Iliyan Malchev94a144e2009-04-30 12:29:52 -070086#define MSM_CAM_CTRL_CMD_DONE 0
87#define MSM_CAM_SENSOR_VFE_CMD 1
Ben Cheng4b29af02012-03-07 16:14:53 -080088
Iliyan Malchevbf8709f2009-06-04 11:55:53 -070089struct msm_ctrl_cmd {
Iliyan Malchev94a144e2009-04-30 12:29:52 -070090 uint16_t type;
91 uint16_t length;
92 void *value;
93 uint16_t status;
94 uint32_t timeout_ms;
95 int resp_fd;
96};
Ben Cheng4b29af02012-03-07 16:14:53 -080097
Iliyan Malchevbf8709f2009-06-04 11:55:53 -070098struct msm_vfe_evt_msg {
Iliyan Malchev94a144e2009-04-30 12:29:52 -070099 unsigned short type;
100 unsigned short msg_id;
101 unsigned int len;
102 void *data;
103};
Ben Cheng4b29af02012-03-07 16:14:53 -0800104
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700105#define MSM_CAM_RESP_CTRL 0
106#define MSM_CAM_RESP_STAT_EVT_MSG 1
107#define MSM_CAM_RESP_V4L2 2
108#define MSM_CAM_RESP_MAX 3
Ben Cheng4b29af02012-03-07 16:14:53 -0800109
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700110struct msm_stats_event_ctrl {
Ben Cheng4b29af02012-03-07 16:14:53 -0800111
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700112 int resptype;
113 int timeout_ms;
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700114 struct msm_ctrl_cmd ctrl_cmd;
Ben Cheng4b29af02012-03-07 16:14:53 -0800115
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700116 struct msm_vfe_evt_msg stats_event;
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700117};
Ben Cheng4b29af02012-03-07 16:14:53 -0800118
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700119struct msm_camera_cfg_cmd {
Ben Cheng4b29af02012-03-07 16:14:53 -0800120
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700121 uint16_t cfg_type;
Ben Cheng4b29af02012-03-07 16:14:53 -0800122
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700123 uint16_t cmd_type;
124 uint16_t queue;
125 uint16_t length;
126 void *value;
127};
Ben Cheng4b29af02012-03-07 16:14:53 -0800128
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700129#define CMD_GENERAL 0
130#define CMD_AXI_CFG_OUT1 1
131#define CMD_AXI_CFG_SNAP_O1_AND_O2 2
132#define CMD_AXI_CFG_OUT2 3
133#define CMD_PICT_T_AXI_CFG 4
134#define CMD_PICT_M_AXI_CFG 5
135#define CMD_RAW_PICT_AXI_CFG 6
136#define CMD_STATS_AXI_CFG 7
137#define CMD_STATS_AF_AXI_CFG 8
138#define CMD_FRAME_BUF_RELEASE 9
139#define CMD_PREV_BUF_CFG 10
140#define CMD_SNAP_BUF_RELEASE 11
141#define CMD_SNAP_BUF_CFG 12
142#define CMD_STATS_DISABLE 13
Iliyan Malchev82420122009-09-11 00:29:59 -0700143#define CMD_STATS_AEC_AWB_ENABLE 14
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700144#define CMD_STATS_AF_ENABLE 15
145#define CMD_STATS_BUF_RELEASE 16
146#define CMD_STATS_AF_BUF_RELEASE 17
Iliyan Malchev82420122009-09-11 00:29:59 -0700147#define CMD_STATS_ENABLE 18
148#define UPDATE_STATS_INVALID 19
Ben Cheng4b29af02012-03-07 16:14:53 -0800149
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700150#define CMD_STATS_AEC_ENABLE 20
151#define CMD_STATS_AWB_ENABLE 21
152#define CMD_STATS_AEC_AXI_CFG 22
153#define CMD_STATS_AWB_AXI_CFG 23
154#define CMD_STATS_RS_AXI_CFG 24
155#define CMD_STATS_CS_AXI_CFG 25
156#define CMD_STATS_IHIST_AXI_CFG 26
157#define CMD_STATS_SKIN_AXI_CFG 27
158#define CMD_STATS_AEC_BUF_RELEASE 28
159#define CMD_STATS_AWB_BUF_RELEASE 29
160#define CMD_STATS_RS_BUF_RELEASE 30
161#define CMD_STATS_CS_BUF_RELEASE 31
162#define CMD_STATS_IHIST_BUF_RELEASE 32
163#define CMD_STATS_SKIN_BUF_RELEASE 33
Ben Cheng4b29af02012-03-07 16:14:53 -0800164
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700165#define CMD_AXI_CFG_SNAP_GEMINI 34
166#define CMD_AXI_CFG_SNAP 35
167#define CMD_AXI_CFG_PREVIEW 36
168#define CMD_AXI_CFG_VIDEO 37
Ben Cheng4b29af02012-03-07 16:14:53 -0800169
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700170#define CMD_STATS_IHIST_ENABLE 38
171#define CMD_STATS_RS_ENABLE 39
172#define CMD_STATS_CS_ENABLE 40
Wu-cheng Li7ed132a2010-07-27 14:26:21 -0700173#define CMD_AXI_CFG_O1_AND_O2 41
Ben Cheng4b29af02012-03-07 16:14:53 -0800174
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700175struct msm_vfe_cfg_cmd {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700176 int cmd_type;
177 uint16_t length;
178 void *value;
179};
Ben Cheng4b29af02012-03-07 16:14:53 -0800180
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700181#define MAX_CAMERA_ENABLE_NAME_LEN 32
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700182struct camera_enable_cmd {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700183 char name[MAX_CAMERA_ENABLE_NAME_LEN];
184};
Ben Cheng4b29af02012-03-07 16:14:53 -0800185
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700186#define MSM_PMEM_OUTPUT1 0
187#define MSM_PMEM_OUTPUT2 1
188#define MSM_PMEM_OUTPUT1_OUTPUT2 2
Iliyan Malchev82420122009-09-11 00:29:59 -0700189#define MSM_PMEM_THUMBNAIL 3
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700190#define MSM_PMEM_MAINIMG 4
191#define MSM_PMEM_RAW_MAINIMG 5
192#define MSM_PMEM_AEC_AWB 6
193#define MSM_PMEM_AF 7
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700194#define MSM_PMEM_AEC 8
195#define MSM_PMEM_AWB 9
196#define MSM_PMEM_RS 10
197#define MSM_PMEM_CS 11
198#define MSM_PMEM_IHIST 12
199#define MSM_PMEM_SKIN 13
200#define MSM_PMEM_VIDEO 14
201#define MSM_PMEM_PREVIEW 15
202#define MSM_PMEM_MAX 16
Ben Cheng4b29af02012-03-07 16:14:53 -0800203
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700204#define FRAME_PREVIEW_OUTPUT1 0
205#define FRAME_PREVIEW_OUTPUT2 1
206#define FRAME_SNAPSHOT 2
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700207#define FRAME_THUMBNAIL 3
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700208#define FRAME_RAW_SNAPSHOT 4
209#define FRAME_MAX 5
Ben Cheng4b29af02012-03-07 16:14:53 -0800210
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700211struct msm_pmem_info {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700212 int type;
213 int fd;
214 void *vaddr;
Iliyan Malchev07116002009-06-23 20:08:10 -0700215 uint32_t offset;
216 uint32_t len;
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700217 uint32_t y_off;
218 uint32_t cbcr_off;
Iliyan Malchevcdcc2642010-01-31 17:22:25 -0800219 uint8_t vfe_can_write;
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700220};
Ben Cheng4b29af02012-03-07 16:14:53 -0800221
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700222struct outputCfg {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700223 uint32_t height;
224 uint32_t width;
Ben Cheng4b29af02012-03-07 16:14:53 -0800225
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700226 uint32_t window_height_firstline;
227 uint32_t window_height_lastline;
228};
Ben Cheng4b29af02012-03-07 16:14:53 -0800229
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700230#define OUTPUT_1 0
231#define OUTPUT_2 1
232#define OUTPUT_1_AND_2 2
233#define CAMIF_TO_AXI_VIA_OUTPUT_2 3
234#define OUTPUT_1_AND_CAMIF_TO_AXI_VIA_OUTPUT_2 4
235#define OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 5
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700236#define OUTPUT_1_AND_3 6
237#define LAST_AXI_OUTPUT_MODE_ENUM = OUTPUT_1_AND_3 7
Ben Cheng4b29af02012-03-07 16:14:53 -0800238
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700239#define MSM_FRAME_PREV_1 0
240#define MSM_FRAME_PREV_2 1
241#define MSM_FRAME_ENC 2
Ben Cheng4b29af02012-03-07 16:14:53 -0800242
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700243#define OUTPUT_TYPE_P 1
244#define OUTPUT_TYPE_T 2
245#define OUTPUT_TYPE_S 3
246#define OUTPUT_TYPE_V 4
Ben Cheng4b29af02012-03-07 16:14:53 -0800247
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700248struct msm_frame {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700249 int path;
250 unsigned long buffer;
251 uint32_t y_off;
252 uint32_t cbcr_off;
253 int fd;
Ben Cheng4b29af02012-03-07 16:14:53 -0800254
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700255 void *cropinfo;
256 int croplen;
257};
Ben Cheng4b29af02012-03-07 16:14:53 -0800258
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700259#define STAT_AEAW 0
260#define STAT_AF 1
Wu-cheng Li9d1f5af2010-07-12 10:32:11 -0700261#define STAT_AEC 2
262#define STAT_AWB 3
263#define STAT_RS 4
264#define STAT_CS 5
265#define STAT_IHIST 6
266#define STAT_SKIN 7
267#define STAT_MAX 8
Ben Cheng4b29af02012-03-07 16:14:53 -0800268
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700269struct msm_stats_buf {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700270 int type;
271 unsigned long buffer;
272 int fd;
273};
Ben Cheng4b29af02012-03-07 16:14:53 -0800274
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700275#define MSM_V4L2_VID_CAP_TYPE 0
276#define MSM_V4L2_STREAM_ON 1
277#define MSM_V4L2_STREAM_OFF 2
278#define MSM_V4L2_SNAPSHOT 3
279#define MSM_V4L2_QUERY_CTRL 4
280#define MSM_V4L2_GET_CTRL 5
281#define MSM_V4L2_SET_CTRL 6
282#define MSM_V4L2_QUERY 7
283#define MSM_V4L2_MAX 8
Ben Cheng4b29af02012-03-07 16:14:53 -0800284
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700285struct crop_info {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700286 void *info;
287 int len;
288};
Ben Cheng4b29af02012-03-07 16:14:53 -0800289
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700290struct msm_postproc {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700291 int ftnum;
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700292 struct msm_frame fthumnail;
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700293 int fmnum;
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700294 struct msm_frame fmain;
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700295};
Ben Cheng4b29af02012-03-07 16:14:53 -0800296
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700297struct msm_snapshot_pp_status {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700298 void *status;
299};
Ben Cheng4b29af02012-03-07 16:14:53 -0800300
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700301#define CFG_SET_MODE 0
302#define CFG_SET_EFFECT 1
303#define CFG_START 2
304#define CFG_PWR_UP 3
305#define CFG_PWR_DOWN 4
306#define CFG_WRITE_EXPOSURE_GAIN 5
307#define CFG_SET_DEFAULT_FOCUS 6
308#define CFG_MOVE_FOCUS 7
309#define CFG_REGISTER_TO_REAL_GAIN 8
310#define CFG_REAL_TO_REGISTER_GAIN 9
311#define CFG_SET_FPS 10
312#define CFG_SET_PICT_FPS 11
313#define CFG_SET_BRIGHTNESS 12
314#define CFG_SET_CONTRAST 13
315#define CFG_SET_ZOOM 14
316#define CFG_SET_EXPOSURE_MODE 15
317#define CFG_SET_WB 16
318#define CFG_SET_ANTIBANDING 17
319#define CFG_SET_EXP_GAIN 18
320#define CFG_SET_PICT_EXP_GAIN 19
321#define CFG_SET_LENS_SHADING 20
322#define CFG_GET_PICT_FPS 21
323#define CFG_GET_PREV_L_PF 22
324#define CFG_GET_PREV_P_PL 23
325#define CFG_GET_PICT_L_PF 24
326#define CFG_GET_PICT_P_PL 25
327#define CFG_GET_AF_MAX_STEPS 26
328#define CFG_GET_PICT_MAX_EXP_LC 27
329#define CFG_MAX 28
Ben Cheng4b29af02012-03-07 16:14:53 -0800330
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700331#define MOVE_NEAR 0
332#define MOVE_FAR 1
Ben Cheng4b29af02012-03-07 16:14:53 -0800333
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700334#define SENSOR_PREVIEW_MODE 0
335#define SENSOR_SNAPSHOT_MODE 1
336#define SENSOR_RAW_SNAPSHOT_MODE 2
Ben Cheng4b29af02012-03-07 16:14:53 -0800337
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700338#define SENSOR_QTR_SIZE 0
339#define SENSOR_FULL_SIZE 1
340#define SENSOR_INVALID_SIZE 2
Ben Cheng4b29af02012-03-07 16:14:53 -0800341
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700342#define CAMERA_EFFECT_OFF 0
343#define CAMERA_EFFECT_MONO 1
344#define CAMERA_EFFECT_NEGATIVE 2
345#define CAMERA_EFFECT_SOLARIZE 3
346#define CAMERA_EFFECT_PASTEL 4
347#define CAMERA_EFFECT_MOSAIC 5
348#define CAMERA_EFFECT_RESIZE 6
349#define CAMERA_EFFECT_SEPIA 7
350#define CAMERA_EFFECT_POSTERIZE 8
351#define CAMERA_EFFECT_WHITEBOARD 9
352#define CAMERA_EFFECT_BLACKBOARD 10
353#define CAMERA_EFFECT_AQUA 11
354#define CAMERA_EFFECT_MAX 12
Ben Cheng4b29af02012-03-07 16:14:53 -0800355
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700356struct sensor_pict_fps {
357 uint16_t prevfps;
358 uint16_t pictfps;
359};
Ben Cheng4b29af02012-03-07 16:14:53 -0800360
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700361struct exp_gain_cfg {
362 uint16_t gain;
363 uint32_t line;
364};
Ben Cheng4b29af02012-03-07 16:14:53 -0800365
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700366struct focus_cfg {
367 int32_t steps;
368 int dir;
369};
Ben Cheng4b29af02012-03-07 16:14:53 -0800370
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700371struct fps_cfg {
372 uint16_t f_mult;
373 uint16_t fps_div;
374 uint32_t pict_fps_div;
375};
Ben Cheng4b29af02012-03-07 16:14:53 -0800376
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700377struct sensor_cfg_data {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700378 int cfgtype;
379 int mode;
380 int rs;
381 uint8_t max_steps;
Ben Cheng4b29af02012-03-07 16:14:53 -0800382
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700383 union {
384 int8_t effect;
385 uint8_t lens_shading;
386 uint16_t prevl_pf;
387 uint16_t prevp_pl;
388 uint16_t pictl_pf;
389 uint16_t pictp_pl;
390 uint32_t pict_max_exp_lc;
391 uint16_t p_fps;
392 struct sensor_pict_fps gfps;
393 struct exp_gain_cfg exp_gain;
394 struct focus_cfg focus;
395 struct fps_cfg fps;
396 } cfg;
397};
Ben Cheng4b29af02012-03-07 16:14:53 -0800398
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700399#define GET_NAME 0
400#define GET_PREVIEW_LINE_PER_FRAME 1
401#define GET_PREVIEW_PIXELS_PER_LINE 2
402#define GET_SNAPSHOT_LINE_PER_FRAME 3
403#define GET_SNAPSHOT_PIXELS_PER_LINE 4
404#define GET_SNAPSHOT_FPS 5
405#define GET_SNAPSHOT_MAX_EP_LINE_CNT 6
Ben Cheng4b29af02012-03-07 16:14:53 -0800406
Iliyan Malchevbf8709f2009-06-04 11:55:53 -0700407struct msm_camsensor_info {
Iliyan Malchev94a144e2009-04-30 12:29:52 -0700408 char name[MAX_SENSOR_NAME];
409 uint8_t flash_enabled;
410};
411#endif
Ben Cheng4b29af02012-03-07 16:14:53 -0800412