1f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* Copyright (c) 2009-2013, The Linux Foundation. All rights reserved.
2d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *
3d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * This program is free software; you can redistribute it and/or modify
4d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * it under the terms of the GNU General Public License version 2 and
5d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * only version 2 as published by the Free Software Foundation.
6d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *
7d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * This program is distributed in the hope that it will be useful,
8d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * but WITHOUT ANY WARRANTY; without even the implied warranty of
9d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * GNU General Public License for more details.
11d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *
12d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */
13d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifndef __LINUX_MSM_CAMERA_H
14d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define __LINUX_MSM_CAMERA_H
15d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
16d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifdef MSM_CAMERA_BIONIC
17d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <sys/types.h>
18d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif
19f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#include <linux/videodev2.h>
20d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/types.h>
21d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/ioctl.h>
22d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifdef __KERNEL__
23d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/cdev.h>
24d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif
25d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#ifdef MSM_CAMERA_GCC
26d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <time.h>
27d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#else
28d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/time.h>
29d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif
30d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
31d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#include <linux/msm_ion.h>
32d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
33d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define BIT(nr)   (1UL << (nr))
34d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
35d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_MAGIC 'm'
36d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
37f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MAX_SERVER_PAYLOAD_LENGTH 8192
38f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
39d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_SENSOR_INFO \
40d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 1, struct msm_camsensor_info *)
41d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
42d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_REGISTER_PMEM \
43d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 2, struct msm_pmem_info *)
44d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
45d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNREGISTER_PMEM \
46d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 3, unsigned)
47d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
48d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CTRL_COMMAND \
49d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 4, struct msm_ctrl_cmd *)
50d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
51d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CONFIG_VFE  \
52d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 5, struct msm_camera_vfe_cfg_cmd *)
53d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
54d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_STATS \
55d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 6, struct msm_camera_stats_event_ctrl *)
56d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
57d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GETFRAME \
58d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 7, struct msm_camera_get_frame *)
59d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
60d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ENABLE_VFE \
61d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 8, struct camera_enable_cmd *)
62d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
63d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CTRL_CMD_DONE \
64d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 9, struct camera_cmd *)
65d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
66d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CONFIG_CMD \
67d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 10, struct camera_cmd *)
68d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
69d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_DISABLE_VFE \
70d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 11, struct camera_enable_cmd *)
71d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
72d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PAD_REG_RESET2 \
73d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 12, struct camera_enable_cmd *)
74d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
75d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_VFE_APPS_RESET \
76d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 13, struct camera_enable_cmd *)
77d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
78d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_FRAME_BUFFER \
79d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 14, struct camera_enable_cmd *)
80d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
81d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_STATS_BUFFER \
82d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 15, struct msm_stats_buf *)
83d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
84d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AXI_CONFIG \
85d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 16, struct msm_camera_vfe_cfg_cmd *)
86d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
87d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_PICTURE \
88d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 17, struct msm_frame *)
89d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
90d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_CROP \
91d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 18, struct crop_info *)
92d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
93d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PICT_PP \
94d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 19, uint8_t *)
95d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
96d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PICT_PP_DONE \
97d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 20, struct msm_snapshot_pp_status *)
98d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
99d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SENSOR_IO_CFG \
100d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 21, struct sensor_cfg_data *)
101d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
102d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_FLASH_LED_CFG \
103d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 22, unsigned *)
104d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
105d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNBLOCK_POLL_FRAME \
106d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IO(MSM_CAM_IOCTL_MAGIC, 23)
107d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
108d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CTRL_COMMAND_2 \
109d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 24, struct msm_ctrl_cmd *)
110d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
111d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AF_CTRL \
112d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 25, struct msm_ctrl_cmt_t *)
113d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
114d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AF_CTRL_DONE \
115d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 26, struct msm_ctrl_cmt_t *)
116d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
117d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_CONFIG_VPE \
118d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 27, struct msm_camera_vpe_cfg_cmd *)
119d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
120d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_AXI_VPE_CONFIG \
121d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 28, struct msm_camera_vpe_cfg_cmd *)
122d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
123d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STROBE_FLASH_CFG \
124d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 29, uint32_t *)
125d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
126d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STROBE_FLASH_CHARGE \
127d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 30, uint32_t *)
128d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
129d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STROBE_FLASH_RELEASE \
130d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IO(MSM_CAM_IOCTL_MAGIC, 31)
131d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
132d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_FLASH_CTRL \
133d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 32, struct flash_ctrl_data *)
134d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
135d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ERROR_CONFIG \
136d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 33, uint32_t *)
137d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
138d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ABORT_CAPTURE \
139d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IO(MSM_CAM_IOCTL_MAGIC, 34)
140d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
141d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_FD_ROI \
142d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 35, struct fd_roi_info *)
143d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
144d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_CAMERA_INFO \
145d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 36, struct msm_camera_info *)
146d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
147d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNBLOCK_POLL_PIC_FRAME \
148d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IO(MSM_CAM_IOCTL_MAGIC, 37)
149d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
150d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_PIC_BUFFER \
151d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 38, struct camera_enable_cmd *)
152d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
153d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PUT_ST_FRAME \
154d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 39, struct msm_camera_st_frame *)
155d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
156d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_V4L2_EVT_NOTIFY \
157f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOW(MSM_CAM_IOCTL_MAGIC, 40, struct v4l2_event_and_payload)
158d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
159d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_MEM_MAP_INFO \
160d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 41, struct msm_mem_map_info *)
161d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
162d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ACTUATOR_IO_CFG \
163d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 42, struct msm_actuator_cfg_data *)
164d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
165d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_MCTL_POST_PROC \
166d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 43, struct msm_mctl_post_proc_cmd *)
167d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
168d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RESERVE_FREE_FRAME \
169d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 44, struct msm_cam_evt_divert_frame *)
170d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
171d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_RELEASE_FREE_FRAME \
172d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 45, struct msm_cam_evt_divert_frame *)
173d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
174d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_PICT_PP_DIVERT_DONE \
175d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 46, struct msm_pp_frame *)
176d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
177d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SENSOR_V4l2_S_CTRL \
178d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 47, struct v4l2_control)
179d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
180d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SENSOR_V4l2_QUERY_CTRL \
181d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 48, struct v4l2_queryctrl)
182d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
183d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_KERNEL_SYSTEM_TIME \
184d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 49, struct timeval *)
185d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
186d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_VFE_OUTPUT_TYPE \
187d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 50, uint32_t *)
188d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
189d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_MCTL_DIVERT_DONE \
190d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 51, struct msm_cam_evt_divert_frame *)
191d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
192d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_ACTUATOR_INFO \
193d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 52, struct msm_actuator_cfg_data *)
194d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
195d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_EEPROM_IO_CFG \
196d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 53, struct msm_eeprom_cfg_data *)
197d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
198d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_ISPIF_IO_CFG \
199d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 54, struct ispif_cfg_data *)
200d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
201d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_REQBUF \
202d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 55, struct msm_stats_reqbuf *)
203d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
204d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_ENQUEUEBUF \
205d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 56, struct msm_stats_buf_info *)
206d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
207d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_FLUSH_BUFQ \
208d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 57, struct msm_stats_flush_bufq *)
209d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
210d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SET_MCTL_SDEV \
211d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 58, struct msm_mctl_set_sdev_data *)
212d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
213d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_UNSET_MCTL_SDEV \
214d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOW(MSM_CAM_IOCTL_MAGIC, 59, struct msm_mctl_set_sdev_data *)
215d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
216d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_GET_INST_HANDLE \
217d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 60, uint32_t *)
218d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
219d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_STATS_UNREG_BUF \
220d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOR(MSM_CAM_IOCTL_MAGIC, 61, struct msm_stats_flush_bufq *)
221d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
222f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_CSIC_IO_CFG \
223f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOWR(MSM_CAM_IOCTL_MAGIC, 62, struct csic_cfg_data *)
224f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
225f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_CSID_IO_CFG \
226f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOWR(MSM_CAM_IOCTL_MAGIC, 63, struct csid_cfg_data *)
227f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
228f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_CSIPHY_IO_CFG \
229f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOR(MSM_CAM_IOCTL_MAGIC, 64, struct csiphy_cfg_data *)
230f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
231f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_OEM \
232f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOW(MSM_CAM_IOCTL_MAGIC, 65, struct sensor_cfg_data *)
233f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
234f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_AXI_INIT \
235f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOWR(MSM_CAM_IOCTL_MAGIC, 66, uint8_t *)
236f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
237f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_IOCTL_AXI_RELEASE \
238f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IO(MSM_CAM_IOCTL_MAGIC, 67)
239f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
240f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct v4l2_event_and_payload {
241f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct v4l2_event evt;
242f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t payload_length;
243f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t transaction_id;
244f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	void *payload;
245f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
246f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
247d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_reqbuf {
248d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int num_buf;		/* how many buffers requested */
249f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int stats_type;	/* stats type */
250d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
251d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
252d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_flush_bufq {
253f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int stats_type;	/* enum msm_stats_enum_type */
254d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
255d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
256d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_pp_cmd {
257f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int32_t  id;
258d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t length;
259f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	void     *value;
260d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
261d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
262d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_post_proc_cmd {
263d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int32_t type;
264d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_mctl_pp_cmd cmd;
265d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
266d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
267d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_OFF  0
268d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_LOW  1
269d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_HIGH 2
270d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_INIT 3
271d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_LED_RELEASE 4
272d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
273d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_STROBE_FLASH_NONE 0
274d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_STROBE_FLASH_XENON 1
275d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
276d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MAX_CAMERA_SENSORS  5
277d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_SENSOR_NAME 32
278d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_CAM_NAME_SIZE 32
279d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACT_MOD_NAME_SIZE 32
280d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACT_NAME_SIZE 32
281d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define NUM_ACTUATOR_DIR 2
282d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_SCENARIO 8
283d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_REGION 5
284d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_INIT_SET 12
285d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_TYPE_SIZE 32
286d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_ACTUATOR_REG_TBL_SIZE 8
287d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
288f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
289d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MAX_CAMERA_CONFIGS 2
290d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
291d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_SNAP  0x01
292d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_RAW_SNAP ((0x01)<<1)
293d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_PREV  ((0x01)<<2)
294d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_THUMB ((0x01)<<3)
295d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PP_MASK		(PP_SNAP|PP_RAW_SNAP|PP_PREV|PP_THUMB)
296d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
297d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_CTRL_CMD_DONE  0
298d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_SENSOR_VFE_CMD 1
299d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
300d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Should be same as VIDEO_MAX_PLANES in videodev2.h */
301d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_PLANES 8
302d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
303d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/*****************************************************
304d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *  structure
305d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *****************************************************/
306d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
307d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* define five type of structures for userspace <==> kernel
308d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * space communication:
309d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * command 1 - 2 are from userspace ==> kernel
310d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * command 3 - 4 are from kernel ==> userspace
311d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *
312d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * 1. control command: control command(from control thread),
313d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *                     control status (from config thread);
314d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */
315d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ctrl_cmd {
316d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t type;
317d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t length;
318d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *value;
319d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t status;
320d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t timeout_ms;
321f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int resp_fd; /* FIXME: to be used by the kernel, pass-through for now */
322f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int vnode_id;  /* video dev id. Can we overload resp_fd? */
323d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int queue_idx;
324d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t evt_id;
325f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t stream_type; /* used to pass value to qcamera server */
326f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int config_ident; /*used as identifier for config node*/
327d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
328d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
329d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cam_evt_msg {
330d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short type;	/* 1 == event (RPC), 0 == message (adsp) */
331d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short msg_id;
332d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned int len;	/* size in, number of bytes out */
333d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t frame_id;
334d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *data;
335d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct timespec timestamp;
336d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
337d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
338d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pp_frame_sp {
339d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* phy addr of the buffer */
340f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	unsigned long  phy_addr;
341f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       y_off;
342f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       cbcr_off;
343d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* buffer length */
344f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       length;
345f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int32_t        fd;
346f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       addr_offset;
347d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* mapped addr */
348f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	unsigned long  vaddr;
349d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
350d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
351d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pp_frame_mp {
352d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* phy addr of the plane */
353f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	unsigned long  phy_addr;
354d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* offset of plane data */
355f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       data_offset;
356d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* plane length */
357f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       length;
358f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int32_t        fd;
359f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       addr_offset;
360d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* mapped addr */
361f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	unsigned long  vaddr;
362d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
363d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
364d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pp_frame {
365f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       handle; /* stores vb cookie */
366f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t       frame_id;
367d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short buf_idx;
368f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int            path;
369d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short image_type;
370f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	unsigned short num_planes; /* 1 for sp */
371d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct timeval timestamp;
372d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
373d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_pp_frame_sp sp;
374d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_pp_frame_mp mp[MAX_PLANES];
375d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	};
376d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int node_type;
377d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t inst_handle;
378d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
379d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
380f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_pp_crop {
381f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  src_x;
382f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  src_y;
383f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  src_w;
384f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  src_h;
385f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  dst_x;
386f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  dst_y;
387f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  dst_w;
388f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t  dst_h;
389f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t update_flag;
390f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
391f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
392f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_mctl_pp_frame_cmd {
393f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t cookie;
394f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t  vpe_output_action;
395f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_pp_frame src_frame;
396f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_pp_frame dest_frame;
397f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_pp_crop crop;
398f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int path;
399f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
400f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
401d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cam_evt_divert_frame {
402d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short image_mode;
403d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short op_mode;
404d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short inst_idx;
405d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short node_idx;
406d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_pp_frame frame;
407f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int            do_pp;
408d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
409d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
410d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_pp_cmd_ack_event {
411f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t cmd;        /* VPE_CMD_ZOOM? */
412f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int      status;     /* 0 done, < 0 err */
413f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t cookie;     /* daemon's cookie */
414d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
415d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
416d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_pp_event_info {
417f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int32_t  event;
418d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
419d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_mctl_pp_cmd_ack_event ack;
420d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	};
421d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
422d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
423d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_isp_event_ctrl {
424d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned short resptype;
425d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
426d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_cam_evt_msg isp_msg;
427d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_ctrl_cmd ctrl;
428d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_cam_evt_divert_frame div_frame;
429d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_mctl_pp_event_info pp_event_info;
430d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	} isp_data;
431d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
432d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
433d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_CTRL              0
434d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_STAT_EVT_MSG      1
435d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_STEREO_OP_1       2
436d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_STEREO_OP_2       3
437d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_V4L2              4
438d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_DIV_FRAME_EVT_MSG 5
439d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_DONE_EVENT        6
440d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_MCTL_PP_EVENT     7
441d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_RESP_MAX               8
442d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
443d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_APP_NOTIFY_EVENT  0
444d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_APP_NOTIFY_ERROR_EVENT  1
445d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
446d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* this one is used to send ctrl/status up to config thread */
447d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
448d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_event_ctrl {
449d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* 0 - ctrl_cmd from control thread,
450d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * 1 - stats/event kernel,
451d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * 2 - V4L control or read request */
452d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int resptype;
453d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int timeout_ms;
454d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_ctrl_cmd ctrl_cmd;
455d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* struct  vfe_event_t  stats_event; */
456d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_cam_evt_msg stats_event;
457d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
458d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
459d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* 2. config command: config command(from config thread); */
460d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_cfg_cmd {
461d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* what to config:
462d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * 1 - sensor config, 2 - vfe config */
463d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t cfg_type;
464d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
465d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* sensor config type */
466d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t cmd_type;
467d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t queue;
468d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t length;
469d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *value;
470d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
471d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
472d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_GENERAL			0
473d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_OUT1		1
474d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_O1_AND_O2	2
475d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_OUT2		3
476d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_PICT_T_AXI_CFG		4
477d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_PICT_M_AXI_CFG		5
478d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_RAW_PICT_AXI_CFG		6
479d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
480d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_FRAME_BUF_RELEASE		7
481d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_PREV_BUF_CFG		8
482d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_SNAP_BUF_RELEASE		9
483d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_SNAP_BUF_CFG		10
484d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_DISABLE		11
485d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_AWB_ENABLE	12
486d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AF_ENABLE		13
487d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_ENABLE		14
488d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AWB_ENABLE		15
489d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_ENABLE  		16
490d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
491d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AXI_CFG		17
492d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_AXI_CFG		18
493d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AF_AXI_CFG 		19
494d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AWB_AXI_CFG		20
495d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_RS_AXI_CFG		21
496d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_CS_AXI_CFG		22
497d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_IHIST_AXI_CFG		23
498d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_SKIN_AXI_CFG		24
499d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
500d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BUF_RELEASE		25
501d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AEC_BUF_RELEASE	26
502d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AF_BUF_RELEASE	27
503d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_AWB_BUF_RELEASE	28
504d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_RS_BUF_RELEASE	29
505d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_CS_BUF_RELEASE	30
506d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_IHIST_BUF_RELEASE	31
507d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_SKIN_BUF_RELEASE	32
508d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
509d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define UPDATE_STATS_INVALID		33
510d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_GEMINI		34
511d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP		35
512d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_PREVIEW		36
513d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_VIDEO		37
514d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
515d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_IHIST_ENABLE 38
516d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_RS_ENABLE 39
517d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_CS_ENABLE 40
518d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_VPE 41
519d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_VPE 42
520d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_ZSL 43
521d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_VPE 44
522d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SNAP_THUMB_VPE 45
523d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
524d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_CONFIG_PING_ADDR 46
525d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_CONFIG_PONG_ADDR 47
526d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_CONFIG_FREE_BUF_ADDR 48
527d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_ZSL_ALL_CHNLS 49
528d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_VIDEO_ALL_CHNLS 50
529d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_VFE_BUFFER_RELEASE 51
530d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_VFE_PROCESS_IRQ 52
531d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BG_ENABLE 53
532d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BF_ENABLE 54
533d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BHIST_ENABLE 55
534d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BG_BUF_RELEASE 56
535d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BF_BUF_RELEASE 57
536d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_STATS_BHIST_BUF_RELEASE 58
537f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_VFE_PIX_SOF_COUNT_UPDATE 59
538f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_VFE_COUNT_PIX_SOF_ENABLE 60
539f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_STATS_BE_ENABLE 61
540f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_STATS_BE_BUF_RELEASE 62
541d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
542d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_PRIM               BIT(8)
543d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_PRIM_ALL_CHNLS     BIT(9)
544d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SEC                BIT(10)
545d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_SEC_ALL_CHNLS      BIT(11)
546d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_TERT1              BIT(12)
547d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_CFG_TERT2              BIT(13)
548d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
549d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_START  0xE1
550d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_STOP   0xE2
551d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CMD_AXI_RESET  0xE3
552f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CMD_AXI_ABORT  0xE4
553f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
554f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
555d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
556d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_PREVIEW      BIT(0)
557d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_CAPTURE      BIT(1)
558d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_RECORD       BIT(2)
559d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_ZSL          BIT(3)
560d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_RAW_CAPTURE  BIT(4)
561d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define AXI_CMD_LIVESHOT     BIT(5)
562d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
563d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* vfe config command: config command(from config thread)*/
564d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_vfe_cfg_cmd {
565d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int cmd_type;
566d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t length;
567d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *value;
568d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
569d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
570d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_vpe_cfg_cmd {
571d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int cmd_type;
572d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t length;
573d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *value;
574d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
575d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
576d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_CAMERA_ENABLE_NAME_LEN 32
577d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct camera_enable_cmd {
578d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	char name[MAX_CAMERA_ENABLE_NAME_LEN];
579d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
580d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
581d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_OUTPUT1		0
582d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_OUTPUT2		1
583d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_OUTPUT1_OUTPUT2	2
584d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_THUMBNAIL		3
585d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_MAINIMG		4
586d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_RAW_MAINIMG		5
587d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AEC_AWB		6
588d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AF			7
589d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AEC			8
590d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_AWB			9
591d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_RS			10
592d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_CS			11
593d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_IHIST			12
594d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_SKIN			13
595d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_VIDEO			14
596d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_PREVIEW		15
597d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_VIDEO_VPE		16
598d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_C2D			17
599d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_MAINIMG_VPE    18
600d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_THUMBNAIL_VPE  19
601d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_BAYER_GRID		20
602d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_BAYER_FOCUS	21
603d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PMEM_BAYER_HIST		22
604f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_PMEM_BAYER_EXPOSURE 23
605f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_PMEM_MAX            24
606d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
607d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AEAW			0
608d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AEC			1
609d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AF				2
610d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_AWB			3
611d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_RS				4
612d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_CS				5
613d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_IHIST			6
614d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_SKIN			7
615d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_BG				8
616d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define STAT_BF				9
617f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define STAT_BE				10
618f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define STAT_BHIST			11
619f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define STAT_MAX			12
620d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
621d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_PREVIEW_OUTPUT1		0
622d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_PREVIEW_OUTPUT2		1
623d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_SNAPSHOT			2
624d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_THUMBNAIL			3
625d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_RAW_SNAPSHOT		4
626d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define FRAME_MAX			5
627d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
628d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_stats_enum_type {
629f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_AEC, /* legacy based AEC */
630f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_AF,  /* legacy based AF */
631f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_AWB, /* legacy based AWB */
632f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_RS,  /* legacy based RS */
633f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_CS,  /* legacy based CS */
634f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_IHIST,   /* legacy based HIST */
635f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_SKIN,    /* legacy based SKIN */
636f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_BG,  /* Bayer Grids */
637f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_BF,  /* Bayer Focus */
638f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_BE,  /* Bayer Exposure*/
639f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_BHIST,   /* Bayer Hist */
640f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_AE_AW,   /* legacy stats for vfe 2.x*/
641f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_COMP, /* Composite stats */
642f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_STATS_TYPE_MAX  /* MAX */
643d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
644d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
645d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_buf_info {
646f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int type; /* msm_stats_enum_type */
647d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int fd;
648d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *vaddr;
649d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t offset;
650d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t len;
651d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t y_off;
652d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t cbcr_off;
653d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar0_off;
654d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar1_off;
655d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar2_off;
656d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t active;
657d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int buf_idx;
658d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
659d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
660d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_pmem_info {
661d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int type;
662d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int fd;
663d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *vaddr;
664d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t offset;
665d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t len;
666d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t y_off;
667d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t cbcr_off;
668d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar0_off;
669d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar1_off;
670d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar2_off;
671d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t active;
672d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
673d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
674d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct outputCfg {
675d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t height;
676d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t width;
677d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
678d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t window_height_firstline;
679d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t window_height_lastline;
680d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
681d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
682d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDEO_NODE 0
683d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MCTL_NODE 1
684d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
685d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_1	0
686d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_2	1
687f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_1_AND_2            2   /* snapshot only */
688f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_1_AND_3            3   /* video */
689d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMIF_TO_AXI_VIA_OUTPUT_2 4
690d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_1_AND_CAMIF_TO_AXI_VIA_OUTPUT_2 5
691d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 6
692d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_1_2_AND_3 7
693d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_ALL_CHNLS 8
694d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_VIDEO_ALL_CHNLS 9
695d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_ZSL_ALL_CHNLS 10
696d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define LAST_AXI_OUTPUT_MODE_ENUM = OUTPUT_ZSL_ALL_CHNLS
697d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
698d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_PRIM              BIT(8)
699d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_PRIM_ALL_CHNLS    BIT(9)
700d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_SEC               BIT(10)
701d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_SEC_ALL_CHNLS     BIT(11)
702d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TERT1             BIT(12)
703d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TERT2             BIT(13)
704d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
705f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
706f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
707d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_FRAME_PREV_1	0
708d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_FRAME_PREV_2	1
709d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_FRAME_ENC		2
710d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
711d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_P    BIT(0)
712d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_T    BIT(1)
713d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_S    BIT(2)
714d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_V    BIT(3)
715d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_L    BIT(4)
716d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_ST_L BIT(5)
717d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_ST_R BIT(6)
718d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_ST_D BIT(7)
719d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_R    BIT(8)
720d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define OUTPUT_TYPE_R1   BIT(9)
721f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_SAEC   BIT(10)
722f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_SAFC   BIT(11)
723f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_SAWB   BIT(12)
724f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_IHST   BIT(13)
725f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define OUTPUT_TYPE_CSTA   BIT(14)
726d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
727d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct fd_roi_info {
728d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *info;
729d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int info_len;
730d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
731d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
732d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mem_map_info {
733d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t cookie;
734d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t length;
735d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t mem_type;
736d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
737d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
738d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MEM_MMAP		0
739d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_MEM_USERPTR		1
740d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PLANE_MAX		8
741d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PLANE_Y			0
742d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_PLANE_UV		1
743d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
744d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_frame {
745d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct timespec ts;
746d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int path;
747d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int type;
748d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned long buffer;
749d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t phy_offset;
750d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t y_off;
751d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t cbcr_off;
752d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar0_off;
753d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar1_off;
754d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t planar2_off;
755d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int fd;
756d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
757d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *cropinfo;
758d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int croplen;
759d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t error_code;
760d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct fd_roi_info roi_info;
761d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t frame_id;
762d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int stcam_quality_ind;
763d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t stcam_conv_value;
764d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
765d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct ion_allocation_data ion_alloc;
766d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct ion_fd_data fd_data;
767d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int ion_dev_fd;
768d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
769d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
770d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_st_frame_packing {
771d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	SIDE_BY_SIDE_HALF,
772d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	SIDE_BY_SIDE_FULL,
773d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	TOP_DOWN_HALF,
774d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	TOP_DOWN_FULL,
775d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
776d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
777d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_st_crop {
778d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t in_w;
779d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t in_h;
780d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t out_w;
781d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t out_h;
782d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
783d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
784d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_st_half {
785d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t buf_p0_off;
786d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t buf_p1_off;
787d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t buf_p0_stride;
788d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t buf_p1_stride;
789d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t pix_x_off;
790d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t pix_y_off;
791d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_st_crop stCropInfo;
792d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
793d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
794d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_st_frame {
795d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_frame buf_info;
796d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int type;
797d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum msm_st_frame_packing packing;
798d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_st_half L;
799d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_st_half R;
800d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int frame_id;
801d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
802d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
803d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAMERA_ERR_MASK (0xFFFFFFFF & 1)
804d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
805d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct stats_buff {
806d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned long buff;
807d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int fd;
808d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
809d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
810d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_stats_buf {
811d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t awb_ymin;
812d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct stats_buff aec;
813d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct stats_buff awb;
814d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct stats_buff af;
815f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct stats_buff be;
816d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct stats_buff ihist;
817d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct stats_buff rs;
818d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct stats_buff cs;
819d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct stats_buff skin;
820d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int type;
821d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t status_bits;
822d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned long buffer;
823d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int fd;
824d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int length;
825d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct ion_handle *handle;
826d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t frame_id;
827d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int buf_idx;
828d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
829d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT 0
830d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* video capture mode in VIDIOC_S_PARM */
831d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_PREVIEW \
832d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+1)
833d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* extendedmode for video recording in VIDIOC_S_PARM */
834d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_VIDEO \
835d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+2)
836d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* extendedmode for the full size main image in VIDIOC_S_PARM */
837d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_MAIN (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+3)
838d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* extendedmode for the thumb nail image in VIDIOC_S_PARM */
839d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EXT_CAPTURE_MODE_THUMBNAIL \
840d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+4)
841f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* ISP_PIX_OUTPUT1: no pp, directly send output1 buf to user */
842f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_ISP_PIX_OUTPUT1 \
843d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+5)
844f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* ISP_PIX_OUTPUT2: no pp, directly send output2 buf to user */
845f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_ISP_PIX_OUTPUT2 \
846d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+6)
847f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* raw image type */
848f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RAW \
849d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+7)
850f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* RDI dump */
851f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RDI \
852d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+8)
853f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* RDI dump 1 */
854f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RDI1 \
855d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+9)
856f2be60f5864338ca33d569f0086dac301b7066afDevin Kim/* RDI dump 2 */
857f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RDI2 \
858d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+10)
859f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_AEC \
860d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+11)
861f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_AWB \
862d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+12)
863f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_AF \
864d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+13)
865f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_IHIST \
866d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+14)
867f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_CS \
868f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+15)
869f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_RS \
870f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+16)
871f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_CSTA \
872f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+17)
873f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_V2X_LIVESHOT \
874f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	(MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+18)
875f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_EXT_CAPTURE_MODE_MAX (MSM_V4L2_EXT_CAPTURE_MODE_DEFAULT+19)
876f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
877d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
878d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_MOTION_ISO              V4L2_CID_PRIVATE_BASE
879d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_EFFECT                 (V4L2_CID_PRIVATE_BASE+1)
880d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_HJR                    (V4L2_CID_PRIVATE_BASE+2)
881d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_LED_MODE               (V4L2_CID_PRIVATE_BASE+3)
882d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_PREP_SNAPSHOT          (V4L2_CID_PRIVATE_BASE+4)
883d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_EXP_METERING           (V4L2_CID_PRIVATE_BASE+5)
884d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_ISO                    (V4L2_CID_PRIVATE_BASE+6)
885d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_CAM_MODE               (V4L2_CID_PRIVATE_BASE+7)
886d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_LUMA_ADAPTATION	    (V4L2_CID_PRIVATE_BASE+8)
887d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_BEST_SHOT              (V4L2_CID_PRIVATE_BASE+9)
888d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_FOCUS_MODE	            (V4L2_CID_PRIVATE_BASE+10)
889d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_BL_DETECTION           (V4L2_CID_PRIVATE_BASE+11)
890d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_SNOW_DETECTION         (V4L2_CID_PRIVATE_BASE+12)
891d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_CTRL_CMD               (V4L2_CID_PRIVATE_BASE+13)
892d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_EVT_SUB_INFO           (V4L2_CID_PRIVATE_BASE+14)
893d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_STROBE_FLASH           (V4L2_CID_PRIVATE_BASE+15)
894d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_INST_HANDLE            (V4L2_CID_PRIVATE_BASE+16)
895d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_MMAP_INST              (V4L2_CID_PRIVATE_BASE+17)
896d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_PP_PLANE_INFO          (V4L2_CID_PRIVATE_BASE+18)
897d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_PID_MAX                    MSM_V4L2_PID_PP_PLANE_INFO
898d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
899d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for video recording - two frame output queues */
900d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_DEFAULT         0
901d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for video recording - two frame output queues */
902d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_PREVIEW         (MSM_V4L2_CAM_OP_DEFAULT+1)
903d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for video recording - two frame output queues */
904d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_VIDEO           (MSM_V4L2_CAM_OP_DEFAULT+2)
905d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for standard shapshot - two frame output queues */
906d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_CAPTURE         (MSM_V4L2_CAM_OP_DEFAULT+3)
907d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for zsl shapshot - three output queues */
908d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_ZSL             (MSM_V4L2_CAM_OP_DEFAULT+4)
909d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for raw snapshot - one frame output queue */
910d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_RAW             (MSM_V4L2_CAM_OP_DEFAULT+5)
911d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* camera operation mode for jpeg snapshot - one frame output queue */
912d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CAM_OP_JPEG_CAPTURE    (MSM_V4L2_CAM_OP_DEFAULT+6)
913d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
914f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
915d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_VID_CAP_TYPE	0
916d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_STREAM_ON		1
917d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_STREAM_OFF		2
918d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SNAPSHOT		3
919d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_QUERY_CTRL		4
920d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_GET_CTRL		5
921d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SET_CTRL		6
922d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_QUERY			7
923d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_GET_CROP		8
924d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SET_CROP		9
925d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_OPEN			10
926d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_CLOSE			11
927d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_SET_CTRL_CMD	12
928d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_V4L2_EVT_SUB_MASK	13
929f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_PRIVATE_CMD    14
930f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_V4L2_MAX			15
931d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_CAMERA_EXIT		43
932d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
933d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct crop_info {
934d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *info;
935d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int len;
936d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
937d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
938d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_postproc {
939d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int ftnum;
940d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_frame fthumnail;
941d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int fmnum;
942d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_frame fmain;
943d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
944d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
945d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_snapshot_pp_status {
946d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *status;
947d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
948d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
949d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_MODE			0
950d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EFFECT			1
951d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_START			2
952d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_PWR_UP			3
953d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_PWR_DOWN			4
954d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_WRITE_EXPOSURE_GAIN		5
955d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_DEFAULT_FOCUS		6
956d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_MOVE_FOCUS			7
957d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_REGISTER_TO_REAL_GAIN	8
958d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_REAL_TO_REGISTER_GAIN	9
959d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_FPS			10
960d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_PICT_FPS		11
961d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_BRIGHTNESS		12
962d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_CONTRAST		13
963d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ZOOM			14
964d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EXPOSURE_MODE		15
965d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_WB			16
966d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ANTIBANDING		17
967d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EXP_GAIN		18
968d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_PICT_EXP_GAIN		19
969d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_LENS_SHADING		20
970d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_FPS		21
971d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PREV_L_PF		22
972d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PREV_P_PL		23
973d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_L_PF		24
974d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_P_PL		25
975d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_AF_MAX_STEPS		26
976d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_PICT_MAX_EXP_LC		27
977d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SEND_WB_INFO    28
978d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SENSOR_INIT    29
979d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_3D_CALI_DATA 30
980d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_CALIB_DATA		31
981d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_OUTPUT_INFO		32
982d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_EEPROM_INFO		33
983d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_EEPROM_DATA		34
984d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ACTUATOR_INFO		35
985d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_ACTUATOR_INFO           36
986d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* TBD: QRD */
987d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_SATURATION            37
988d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_SHARPNESS             38
989d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_TOUCHAEC              39
990d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_AUTO_FOCUS            40
991d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_AUTOFLASH             41
992d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_EXPOSURE_COMPENSATION 42
993d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_SET_ISO                   43
994d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_START_STREAM              44
995d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_STOP_STREAM               45
996d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CFG_GET_CSI_PARAMS            46
997f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_POWER_UP                  47
998f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_POWER_DOWN                48
999f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_WRITE_I2C_ARRAY           49
1000f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_READ_I2C_ARRAY            50
1001f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_PCLK_CHANGE               51
1002f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_CONFIG_VREG_ARRAY         52
1003f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_CONFIG_CLK_ARRAY          53
1004f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_GPIO_OP                   54
1005f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CFG_MAX                       55
1006f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1007d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1008d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MOVE_NEAR	0
1009d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MOVE_FAR	1
1010d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1011d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_PREVIEW_MODE		0
1012d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_SNAPSHOT_MODE		1
1013d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_RAW_SNAPSHOT_MODE	2
1014d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_HFR_60FPS_MODE 3
1015d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_HFR_90FPS_MODE 4
1016d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_HFR_120FPS_MODE 5
1017d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1018d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_QTR_SIZE			0
1019d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_FULL_SIZE		1
1020d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_QVGA_SIZE		2
1021d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SENSOR_INVALID_SIZE		3
1022d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1023d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_OFF		0
1024d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_MONO		1
1025d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_NEGATIVE		2
1026d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_SOLARIZE		3
1027d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_SEPIA		4
1028d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_POSTERIZE		5
1029d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_WHITEBOARD	6
1030d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_BLACKBOARD	7
1031d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_AQUA		8
1032d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_EMBOSS		9
1033d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_SKETCH		10
1034d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_NEON		11
1035f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_FADED		12
1036f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_VINTAGECOOL	13
1037f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_VINTAGEWARM	14
1038f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_ACCENT_BLUE       15
1039f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_ACCENT_GREEN      16
1040f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_ACCENT_ORANGE     17
1041f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CAMERA_EFFECT_MAX               18
1042d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1043d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* QRD */
1044d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_BW		10
1045d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_BLUISH	12
1046d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_REDDISH	13
1047d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EFFECT_GREENISH	14
1048d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1049d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* QRD */
1050d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_OFF		0
1051d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_50HZ		2
1052d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_60HZ		1
1053d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ANTIBANDING_AUTO		3
1054d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1055d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV0			0
1056d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV1			1
1057d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV2			2
1058d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV3			3
1059d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV4			4
1060d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV5			5
1061d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV6			6
1062d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV7			7
1063d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV8			8
1064d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_CONTRAST_LV9			9
1065d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1066d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV0			0
1067d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV1			1
1068d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV2			2
1069d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV3			3
1070d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV4			4
1071d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV5			5
1072d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV6			6
1073d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV7			7
1074d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_BRIGHTNESS_LV8			8
1075d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1076f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1077d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV0			0
1078d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV1			1
1079d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV2			2
1080d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV3			3
1081d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV4			4
1082d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV5			5
1083d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV6			6
1084d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV7			7
1085d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SATURATION_LV8			8
1086d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1087d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV0		0
1088d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV1		3
1089d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV2		6
1090d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV3		9
1091d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV4		12
1092d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV5		15
1093d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV6		18
1094d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV7		21
1095d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV8		24
1096d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV9		27
1097d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SHARPNESS_LV10		30
1098d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1099d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SETAE_AVERAGE		0
1100d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_SETAE_CENWEIGHT	1
1101d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1102f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define  CAMERA_WB_AUTO               1 /* This list must match aeecamera.h */
1103d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define  CAMERA_WB_CUSTOM             2
1104d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define  CAMERA_WB_INCANDESCENT       3
1105d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define  CAMERA_WB_FLUORESCENT        4
1106d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define  CAMERA_WB_DAYLIGHT           5
1107d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define  CAMERA_WB_CLOUDY_DAYLIGHT    6
1108d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define  CAMERA_WB_TWILIGHT           7
1109d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define  CAMERA_WB_SHADE              8
1110d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1111d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV0			12
1112d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV1			6
1113d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV2			0
1114d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV3			-6
1115d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_EXPOSURE_COMPENSATION_LV4			-12
1116d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1117d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_saturation_level {
1118d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L0,
1119d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L1,
1120d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L2,
1121d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L3,
1122d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L4,
1123d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L5,
1124d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L6,
1125d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L7,
1126d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L8,
1127d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L9,
1128d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SATURATION_L10,
1129d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1130d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1131d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_contrast_level {
1132d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L0,
1133d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L1,
1134d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L2,
1135d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L3,
1136d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L4,
1137d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L5,
1138d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L6,
1139d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L7,
1140d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L8,
1141d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L9,
1142d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_CONTRAST_L10,
1143d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1144d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1145f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1146d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_exposure_level {
1147d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXPOSURE_N2,
1148d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXPOSURE_N1,
1149d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXPOSURE_D,
1150d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXPOSURE_P1,
1151d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXPOSURE_P2,
1152d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1153d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1154d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_sharpness_level {
1155d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SHARPNESS_L0,
1156d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SHARPNESS_L1,
1157d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SHARPNESS_L2,
1158d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SHARPNESS_L3,
1159d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SHARPNESS_L4,
1160d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SHARPNESS_L5,
1161d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_SHARPNESS_L6,
1162d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1163d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1164d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_expo_metering_mode {
1165d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXP_FRAME_AVERAGE,
1166d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXP_CENTER_WEIGHTED,
1167d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EXP_SPOT_METERING,
1168d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1169d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1170d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_iso_mode {
1171d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_ISO_AUTO = 0,
1172d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_ISO_DEBLUR,
1173d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_ISO_100,
1174d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_ISO_200,
1175d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_ISO_400,
1176d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_ISO_800,
1177d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_ISO_1600,
1178d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1179d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1180d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_wb_mode {
1181d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_WB_OFF,
1182f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_V4L2_WB_AUTO ,
1183d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_WB_CUSTOM,
1184d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_WB_INCANDESCENT,
1185d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_WB_FLUORESCENT,
1186d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_WB_DAYLIGHT,
1187d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_WB_CLOUDY_DAYLIGHT,
1188d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1189d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1190d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_special_effect {
1191d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_OFF,
1192d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_MONO,
1193d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_NEGATIVE,
1194d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_SOLARIZE,
1195d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_SEPIA,
1196d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_POSTERAIZE,
1197d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_WHITEBOARD,
1198d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_BLACKBOARD,
1199d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_AQUA,
1200d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_EMBOSS,
1201d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_SKETCH,
1202d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_NEON,
1203d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_EFFECT_MAX,
1204d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1205d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1206d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_v4l2_power_line_frequency {
1207d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_POWER_LINE_OFF,
1208d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_POWER_LINE_60HZ,
1209d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_POWER_LINE_50HZ,
1210d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_V4L2_POWER_LINE_AUTO,
1211d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1212d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1213d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_AUTO           0
1214d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMEAR_ISO_TYPE_HJR            1
1215d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMEAR_ISO_TYPE_100            2
1216d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_200            3
1217d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_400            4
1218d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMEAR_ISO_TYPE_800            5
1219d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CAMERA_ISO_TYPE_1600           6
1220d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1221d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_pict_fps {
1222d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t prevfps;
1223d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t pictfps;
1224d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1225d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1226d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct exp_gain_cfg {
1227d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gain;
1228d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t line;
1229d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1230d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1231d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct focus_cfg {
1232d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int32_t steps;
1233d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int dir;
1234d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1235d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1236d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct fps_cfg {
1237d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t f_mult;
1238d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t fps_div;
1239d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t pict_fps_div;
1240d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1241d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct wb_info_cfg {
1242d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t red_gain;
1243d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t green_gain;
1244d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t blue_gain;
1245d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1246d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_3d_exp_cfg {
1247d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gain;
1248d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t line;
1249d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t r_gain;
1250d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t b_gain;
1251d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gr_gain;
1252d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gb_gain;
1253d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gain_adjust;
1254d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1255f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct sensor_3d_cali_data_t{
1256d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned char left_p_matrix[3][4][8];
1257d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned char right_p_matrix[3][4][8];
1258d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned char square_len[8];
1259d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned char focal_len[8];
1260d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned char pixel_pitch[8];
1261d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_r;
1262d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_b;
1263d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_gb;
1264d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_af_far;
1265d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_af_mid;
1266d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_af_short;
1267d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_af_5um;
1268d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_af_50up;
1269d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t left_af_50down;
1270d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_r;
1271d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_b;
1272d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_gb;
1273d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_af_far;
1274d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_af_mid;
1275d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_af_short;
1276d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_af_5um;
1277d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_af_50up;
1278d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t right_af_50down;
1279d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1280d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_init_cfg {
1281d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t prev_res;
1282d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t pict_res;
1283d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1284d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1285d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_calib_data {
1286d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* Color Related Measurements */
1287d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t r_over_g;
1288d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t b_over_g;
1289d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gr_over_gb;
1290d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1291d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* Lens Related Measurements */
1292d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t macro_2_inf;
1293d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t inf_2_macro;
1294d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t stroke_amt;
1295d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t af_pos_1m;
1296d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t af_pos_inf;
1297d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1298d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1299d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_sensor_resolution_t {
1300d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_FULL,
1301d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_QTR,
1302d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_2,
1303d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_3,
1304d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_4,
1305d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_5,
1306d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_6,
1307d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_RES_7,
1308d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_SENSOR_INVALID_RES,
1309d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1310d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1311d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_sensor_output_info_t {
1312d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t x_output;
1313d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t y_output;
1314d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t line_length_pclk;
1315d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t frame_length_lines;
1316d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t vt_pixel_clk;
1317d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t op_pixel_clk;
1318d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t binning_factor;
1319d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1320d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1321d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_output_info_t {
1322d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_sensor_output_info_t *output_info;
1323d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t num_info;
1324d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1325d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1326f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_sensor_exp_gain_info_t {
1327f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t coarse_int_time_addr;
1328f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t global_gain_addr;
1329f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t vert_offset;
1330f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1331f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1332f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_sensor_output_reg_addr_t {
1333f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t x_output;
1334f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t y_output;
1335f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t line_length_pclk;
1336f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t frame_length_lines;
1337f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1338f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1339f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct sensor_driver_params_type {
1340f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_i2c_reg_setting *init_settings;
1341f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t init_settings_size;
1342f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_i2c_reg_setting *mode_settings;
1343f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t mode_settings_size;
1344f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_sensor_output_reg_addr_t *sensor_output_reg_addr;
1345f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_i2c_reg_setting *start_settings;
1346f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_i2c_reg_setting *stop_settings;
1347f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_i2c_reg_setting *groupon_settings;
1348f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_i2c_reg_setting *groupoff_settings;
1349f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_sensor_exp_gain_info_t *sensor_exp_gain_info;
1350f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_sensor_output_info_t *output_info;
1351f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1352f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1353d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct mirror_flip {
1354d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int32_t x_mirror;
1355d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int32_t y_flip;
1356d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1357d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1358d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct cord {
1359d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t x;
1360d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t y;
1361d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1362d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1363d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_eeprom_data_t {
1364d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	void *eeprom_data;
1365d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t index;
1366d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1367d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1368d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_csid_vc_cfg {
1369d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t cid;
1370d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t dt;
1371d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t decode_format;
1372d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1373d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1374d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct csi_lane_params_t {
1375f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t csi_lane_assign;
1376d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t csi_lane_mask;
1377d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t csi_if;
1378f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t csid_core[2];
1379f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t csi_phy_sel;
1380f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1381f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1382f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csid_lut_params {
1383f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t num_cid;
1384f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_csid_vc_cfg *vc_cfg;
1385f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1386f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1387f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csid_params {
1388f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t lane_cnt;
1389f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t lane_assign;
1390f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t phy_sel;
1391f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_csid_lut_params lut_params;
1392f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1393f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1394f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csiphy_params {
1395f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t lane_cnt;
1396f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t settle_cnt;
1397f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t lane_mask;
1398f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t combo_mode;
1399d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t csid_core;
1400f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1401f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1402f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csi2_params {
1403f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_csid_params csid_params;
1404f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_csiphy_params csiphy_params;
1405f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1406f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1407f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_csi_data_format {
1408f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSI_8BIT,
1409f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSI_10BIT,
1410f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSI_12BIT,
1411f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1412f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1413f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csi_params {
1414f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum msm_camera_csi_data_format data_format;
1415f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t lane_cnt;
1416f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t lane_assign;
1417f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t settle_cnt;
1418f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t dpcm_scheme;
1419f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1420f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1421f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum csic_cfg_type_t {
1422f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSIC_INIT,
1423f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSIC_CFG,
1424f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1425f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1426f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct csic_cfg_data {
1427f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum csic_cfg_type_t cfgtype;
1428f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_csi_params *csic_params;
1429f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1430f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1431f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum csid_cfg_type_t {
1432f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSID_INIT,
1433f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSID_CFG,
1434f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1435f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1436f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct csid_cfg_data {
1437f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum csid_cfg_type_t cfgtype;
1438f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	union {
1439f2be60f5864338ca33d569f0086dac301b7066afDevin Kim		uint32_t csid_version;
1440f2be60f5864338ca33d569f0086dac301b7066afDevin Kim		struct msm_camera_csid_params *csid_params;
1441f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	} cfg;
1442f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1443f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1444f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum csiphy_cfg_type_t {
1445f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSIPHY_INIT,
1446f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CSIPHY_CFG,
1447f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1448f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1449f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct csiphy_cfg_data {
1450f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum csiphy_cfg_type_t cfgtype;
1451f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_csiphy_params *csiphy_params;
1452d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1453d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1454d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_EMBED_DATA 0x12
1455d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RESERVED_DATA_0 0x13
1456d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_YUV422_8  0x1E
1457d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RAW8    0x2A
1458d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RAW10   0x2B
1459d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_RAW12   0x2C
1460d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1461d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_6BIT 0
1462d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_8BIT 1
1463d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_10BIT 2
1464d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CSI_DECODE_DPCM_10_8_10 5
1465d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1466d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_STREAM(intf, action, vfe) (((intf)<<ISPIF_S_STREAM_SHIFT)+\
1467d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(action)+((vfe)<<ISPIF_VFE_INTF_SHIFT))
1468d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_ON_FRAME_BOUNDARY   (0x01 << 0)
1469d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_OFF_FRAME_BOUNDARY  (0x01 << 1)
1470d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_OFF_IMMEDIATELY     (0x01 << 2)
1471d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_S_STREAM_SHIFT      4
1472d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define ISPIF_VFE_INTF_SHIFT      12
1473d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1474d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PIX_0 (0x01 << 0)
1475d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define RDI_0 (0x01 << 1)
1476d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define PIX_1 (0x01 << 2)
1477d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define RDI_1 (0x01 << 3)
1478d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define RDI_2 (0x01 << 4)
1479d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1480d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_vfe_intf {
1481d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VFE0,
1482d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VFE1,
1483d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VFE_MAX,
1484d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1485d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1486d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_intftype {
1487d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	PIX0,
1488d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	RDI0,
1489d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	PIX1,
1490d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	RDI1,
1491d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	RDI2,
1492d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	INTF_MAX,
1493d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1494d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1495d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_vc {
1496d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VC0,
1497d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VC1,
1498d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VC2,
1499d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VC3,
1500d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1501d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1502d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_ispif_cid {
1503d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID0,
1504d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID1,
1505d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID2,
1506d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID3,
1507d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID4,
1508d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID5,
1509d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID6,
1510d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID7,
1511d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID8,
1512d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID9,
1513d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID10,
1514d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID11,
1515d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID12,
1516d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID13,
1517d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID14,
1518d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CID15,
1519d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1520d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1521d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ispif_params {
1522d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t intftype;
1523d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t cid_mask;
1524d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t csid;
1525d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t vfe_intf;
1526d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1527d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1528d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ispif_params_list {
1529d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t len;
1530d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_ispif_params params[4];
1531d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1532d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1533d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum ispif_cfg_type_t {
1534d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ISPIF_INIT,
1535d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ISPIF_SET_CFG,
1536d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ISPIF_SET_ON_FRAME_BOUNDARY,
1537d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ISPIF_SET_OFF_FRAME_BOUNDARY,
1538d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ISPIF_SET_OFF_IMMEDIATELY,
1539d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ISPIF_RELEASE,
1540d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1541d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1542d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct ispif_cfg_data {
1543d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum ispif_cfg_type_t cfgtype;
1544d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
1545d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint32_t csid_version;
1546d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		int cmd;
1547d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_ispif_params_list ispif_params;
1548d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	} cfg;
1549d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1550d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1551f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_i2c_reg_addr_type {
1552f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_BYTE_ADDR = 1,
1553f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_WORD_ADDR,
1554f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_3B_ADDR,
1555f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1556f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1557f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_i2c_reg_array {
1558f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t reg_addr;
1559f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t reg_data;
1560f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1561f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1562f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_i2c_data_type {
1563f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_BYTE_DATA = 1,
1564f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_WORD_DATA,
1565f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_SET_BYTE_MASK,
1566f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_UNSET_BYTE_MASK,
1567f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_SET_WORD_MASK,
1568f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_UNSET_WORD_MASK,
1569f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	MSM_CAMERA_I2C_SET_BYTE_WRITE_MASK_DATA,
1570f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1571f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1572f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_i2c_reg_setting {
1573f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_camera_i2c_reg_array *reg_setting;
1574f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t size;
1575f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum msm_camera_i2c_reg_addr_type addr_type;
1576f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum msm_camera_i2c_data_type data_type;
1577f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t delay;
1578f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1579f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1580f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum oem_setting_type {
1581f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	I2C_READ = 1,
1582f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	I2C_WRITE,
1583f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	GPIO_OP,
1584f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	EEPROM_READ,
1585f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	VREG_SET,
1586f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CLK_SET,
1587f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1588f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1589f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct sensor_oem_setting {
1590f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum oem_setting_type type;
1591f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	void *data;
1592f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1593f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1594f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum camera_vreg_type {
1595f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	REG_LDO,
1596f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	REG_VS,
1597f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	REG_GPIO,
1598f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1599f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1600f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum msm_camera_vreg_name_t {
1601f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CAM_VDIG,
1602f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CAM_VIO,
1603f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CAM_VANA,
1604f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CAM_VAF,
1605f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	CAM_VREG_MAX,
1606f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1607f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1608f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_csi_lane_params {
1609f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t csi_lane_assign;
1610f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t csi_lane_mask;
1611f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1612f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1613f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct camera_vreg_t {
1614f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	const char *reg_name;
1615f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum camera_vreg_type type;
1616f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int min_voltage;
1617f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int max_voltage;
1618f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int op_mode;
1619f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t delay;
1620f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1621f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1622f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_camera_vreg_setting {
1623f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct camera_vreg_t *cam_vreg;
1624f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t num_vreg;
1625f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t enable;
1626f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1627f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1628f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_cam_clk_info {
1629f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	const char *clk_name;
1630f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	long clk_rate;
1631f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t delay;
1632f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1633f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1634f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_cam_clk_setting {
1635f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_cam_clk_info *clk_info;
1636f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint16_t num_clk_info;
1637f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t enable;
1638f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1639f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1640d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_cfg_data {
1641d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int cfgtype;
1642d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int mode;
1643d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int rs;
1644d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t max_steps;
1645d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1646d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
1647d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		int8_t effect;
1648d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint8_t lens_shading;
1649d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint16_t prevl_pf;
1650d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint16_t prevp_pl;
1651d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint16_t pictl_pf;
1652d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint16_t pictp_pl;
1653d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint32_t pict_max_exp_lc;
1654d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint16_t p_fps;
1655d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint8_t iso_type;
1656d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct sensor_init_cfg init_info;
1657d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct sensor_pict_fps gfps;
1658d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct exp_gain_cfg exp_gain;
1659d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct focus_cfg focus;
1660d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct fps_cfg fps;
1661d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct wb_info_cfg wb_info;
1662d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct sensor_3d_exp_cfg sensor_3d_exp;
1663d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct sensor_calib_data calib_info;
1664d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct sensor_output_info_t output_info;
1665d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_eeprom_data_t eeprom_data;
1666d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct csi_lane_params_t csi_lane_params;
1667d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		/* QRD */
1668d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint16_t antibanding;
1669d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint8_t contrast;
1670d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint8_t saturation;
1671d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint8_t sharpness;
1672d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		int8_t brightness;
1673d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		int ae_mode;
1674d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		uint8_t wb_val;
1675d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		int8_t exp_compensation;
1676f2be60f5864338ca33d569f0086dac301b7066afDevin Kim		uint32_t pclk;
1677d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct cord aec_cord;
1678d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		int is_autoflash;
1679d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct mirror_flip mirror_flip;
1680f2be60f5864338ca33d569f0086dac301b7066afDevin Kim		void *setting;
1681d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	} cfg;
1682d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1683d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1684f2be60f5864338ca33d569f0086dac301b7066afDevin Kimenum gpio_operation_type {
1685f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	GPIO_REQUEST,
1686f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	GPIO_FREE,
1687f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	GPIO_SET_DIRECTION_OUTPUT,
1688f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	GPIO_SET_DIRECTION_INPUT,
1689f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	GPIO_GET_VALUE,
1690f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	GPIO_SET_VALUE,
1691f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1692f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1693f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_cam_gpio_operation {
1694f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	enum gpio_operation_type op_type;
1695f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	unsigned address;
1696f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	int value;
1697f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	const char *tag;
1698f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1699f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1700d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct damping_params_t {
1701d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t damping_step;
1702d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t damping_delay;
1703d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t hw_params;
1704d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1705d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1706d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum actuator_type {
1707d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_VCM,
1708d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_PIEZO,
1709d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1710d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1711d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_actuator_data_type {
1712d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_ACTUATOR_BYTE_DATA = 1,
1713d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_ACTUATOR_WORD_DATA,
1714d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1715d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1716d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_actuator_addr_type {
1717d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_ACTUATOR_BYTE_ADDR = 1,
1718d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_ACTUATOR_WORD_ADDR,
1719d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1720d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1721d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_actuator_write_type {
1722d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_ACTUATOR_WRITE_HW_DAMP,
1723d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_ACTUATOR_WRITE_DAC,
1724d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1725d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1726d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_reg_params_t {
1727d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum msm_actuator_write_type reg_write_type;
1728d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t hw_mask;
1729d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t reg_addr;
1730d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t hw_shift;
1731d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t data_shift;
1732d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1733d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1734d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct reg_settings_t {
1735d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t reg_addr;
1736d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t reg_data;
1737d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1738d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1739d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct region_params_t {
1740d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* [0] = ForwardDirection Macro boundary
1741d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	   [1] = ReverseDirection Inf boundary
1742d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 */
1743d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t step_bound[2];
1744d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t code_per_step;
1745d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1746d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1747d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_move_params_t {
1748d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int8_t dir;
1749d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int8_t sign_dir;
1750d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int16_t dest_step_pos;
1751d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int32_t num_steps;
1752d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct damping_params_t *ringing_params;
1753d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1754d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1755d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_tuning_params_t {
1756d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int16_t initial_code;
1757d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t pwd_step;
1758d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t region_size;
1759d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t total_steps;
1760d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct region_params_t *region_params;
1761d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1762d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1763d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_params_t {
1764d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum actuator_type act_type;
1765d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t reg_tbl_size;
1766d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t data_size;
1767d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t init_setting_size;
1768d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t i2c_addr;
1769d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum msm_actuator_addr_type i2c_addr_type;
1770d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum msm_actuator_data_type i2c_data_type;
1771d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_actuator_reg_params_t *reg_tbl_params;
1772d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct reg_settings_t *init_settings;
1773d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1774d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1775d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_set_info_t {
1776d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_actuator_params_t actuator_params;
1777d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_actuator_tuning_params_t af_tuning_params;
1778d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1779d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1780d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_get_info_t {
1781d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t focal_length_num;
1782d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t focal_length_den;
1783d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t f_number_num;
1784d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t f_number_den;
1785d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t f_pix_num;
1786d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t f_pix_den;
1787d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t total_f_dist_num;
1788d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t total_f_dist_den;
1789d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t hor_view_angle_num;
1790d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t hor_view_angle_den;
1791d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t ver_view_angle_num;
1792d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t ver_view_angle_den;
1793d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1794d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1795d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum af_camera_name {
1796d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_MAIN_CAM_0,
1797d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_MAIN_CAM_1,
1798d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_MAIN_CAM_2,
1799d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_MAIN_CAM_3,
1800d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_MAIN_CAM_4,
1801d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_MAIN_CAM_5,
1802d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_WEB_CAM_0,
1803d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_WEB_CAM_1,
1804d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_WEB_CAM_2,
1805d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1806d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1807d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_actuator_cfg_data {
1808d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int cfgtype;
1809d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t is_af_supported;
1810d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
1811d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_actuator_move_params_t move;
1812d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_actuator_set_info_t set_info;
1813d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_actuator_get_info_t get_info;
1814d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		enum af_camera_name cam_name;
1815d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	} cfg;
1816d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1817d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1818d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_eeprom_support {
1819d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t is_supported;
1820d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t size;
1821d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t index;
1822d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t qvalue;
1823d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1824d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1825d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_wb {
1826d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t r_over_g;
1827d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t b_over_g;
1828d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gr_over_gb;
1829d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1830d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1831d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_af {
1832d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t macro_dac;
1833d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t inf_dac;
1834d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t start_dac;
1835d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1836d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1837d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_lsc {
1838d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t r_gain[221];
1839d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t b_gain[221];
1840d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gr_gain[221];
1841d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t gb_gain[221];
1842d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1843d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1844d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct pixel_t {
1845d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int x;
1846d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int y;
1847d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1848d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1849d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_calib_dpc {
1850d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t validcount;
1851d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct pixel_t snapshot_coord[128];
1852d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct pixel_t preview_coord[128];
1853d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct pixel_t video_coord[128];
1854d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1855d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1856f2be60f5864338ca33d569f0086dac301b7066afDevin Kimstruct msm_calib_raw {
1857f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t *data;
1858f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t size;
1859f2be60f5864338ca33d569f0086dac301b7066afDevin Kim};
1860f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
1861d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_eeprom_info_t {
1862d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_eeprom_support af;
1863d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_eeprom_support wb;
1864d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_eeprom_support lsc;
1865d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_eeprom_support dpc;
1866f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	struct msm_eeprom_support raw;
1867d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1868d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1869d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_eeprom_cfg_data {
1870d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int cfgtype;
1871d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t is_eeprom_supported;
1872d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
1873d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_eeprom_data_t get_data;
1874d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct msm_camera_eeprom_info_t get_info;
1875d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	} cfg;
1876d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1877d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1878d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct sensor_large_data {
1879d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int cfgtype;
1880d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
1881d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct sensor_3d_cali_data_t sensor_3d_cali_data;
1882d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	} data;
1883d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1884d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1885d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum sensor_type_t {
1886d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	BAYER,
1887d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	YUV,
1888d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	JPEG_SOC,
1889d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1890d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1891d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum flash_type {
1892d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	LED_FLASH,
1893d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	STROBE_FLASH,
1894d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1895d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1896d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum strobe_flash_ctrl_type {
1897d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	STROBE_FLASH_CTRL_INIT,
1898d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	STROBE_FLASH_CTRL_CHARGE,
1899d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	STROBE_FLASH_CTRL_RELEASE
1900d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1901d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1902d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct strobe_flash_ctrl_data {
1903d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum strobe_flash_ctrl_type type;
1904d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int charge_en;
1905d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1906d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1907d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_info {
1908d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int num_cameras;
1909d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t has_3d_support[MSM_MAX_CAMERA_SENSORS];
1910d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t is_internal_cam[MSM_MAX_CAMERA_SENSORS];
1911d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t s_mount_angle[MSM_MAX_CAMERA_SENSORS];
1912d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	const char *video_dev_name[MSM_MAX_CAMERA_SENSORS];
1913d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum sensor_type_t sensor_type[MSM_MAX_CAMERA_SENSORS];
1914d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1915d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1916d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cam_config_dev_info {
1917d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int num_config_nodes;
1918d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	const char *config_dev_name[MSM_MAX_CAMERA_CONFIGS];
1919d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int config_dev_id[MSM_MAX_CAMERA_CONFIGS];
1920d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1921d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1922d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_node_info {
1923d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int num_mctl_nodes;
1924d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	const char *mctl_node_name[MSM_MAX_CAMERA_SENSORS];
1925d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1926d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1927d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct flash_ctrl_data {
1928d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int flashtype;
1929d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	union {
1930d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		int led_state;
1931d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi		struct strobe_flash_ctrl_data strobe_ctrl;
1932d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	} ctrl_data;
1933d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1934d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1935d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_NAME			0
1936d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_PREVIEW_LINE_PER_FRAME	1
1937d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_PREVIEW_PIXELS_PER_LINE	2
1938d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_LINE_PER_FRAME	3
1939d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_PIXELS_PER_LINE	4
1940d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_FPS		5
1941d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_SNAPSHOT_MAX_EP_LINE_CNT	6
1942d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1943d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camsensor_info {
1944d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	char name[MAX_SENSOR_NAME];
1945d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t flash_enabled;
1946d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t strobe_flash_enabled;
1947d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t actuator_enabled;
1948d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t ispif_supported;
1949d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int8_t total_steps;
1950d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t support_3d;
1951d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum flash_type flashtype;
1952d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum sensor_type_t sensor_type;
1953f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t pxlcode; /* enum v4l2_mbus_pixelcode */
1954f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t camera_type; /* msm_camera_type */
1955d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int mount_angle;
1956d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t max_width;
1957d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t max_height;
1958d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1959d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1960d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_SINGLE_PLANE	0
1961d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_Y	0
1962d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_CBCR	1
1963d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_CB	1
1964d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_MULTI_PLANE_CR	2
1965d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1966d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct plane_data {
1967d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int plane_id;
1968d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t offset;
1969d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned long size;
1970d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1971d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1972d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct img_plane_info {
1973d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t width;
1974d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t height;
1975d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t pixelformat;
1976f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t buffer_type; /*Single/Multi planar*/
1977d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t output_port;
1978d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t ext_mode;
1979d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint8_t num_planes;
1980d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct plane_data plane[MAX_PLANES];
1981d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t sp_y_offset;
1982d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t inst_handle;
1983d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
1984d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1985d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_NAME "qcamera"
1986d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_SERVER_NAME "qcamera_server"
1987d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_DEVICE_GROUP_ID 1
1988d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define QCAMERA_VNODE_GROUP_ID 2
1989d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
1990d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_cam_subdev_type {
1991d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CSIPHY_DEV,
1992d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CSID_DEV,
1993d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CSIC_DEV,
1994d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ISPIF_DEV,
1995d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VFE_DEV,
1996d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	AXI_DEV,
1997d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	VPE_DEV,
1998d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	SENSOR_DEV,
1999d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	ACTUATOR_DEV,
2000d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	EEPROM_DEV,
2001d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	GESTURE_DEV,
2002d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	IRQ_ROUTER_DEV,
2003d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CPP_DEV,
2004d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CCI_DEV,
2005f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	FLASH_DEV,
2006d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2007d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2008d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_mctl_set_sdev_data {
2009d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t revision;
2010d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum msm_cam_subdev_type sdev_type;
2011d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2012d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2013d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_CAMERA_INFO \
2014d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct msm_camera_v4l2_ioctl_t)
2015d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2016d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_CONFIG_INFO \
2017d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct msm_camera_v4l2_ioctl_t)
2018d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2019d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_MCTL_INFO \
2020d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct msm_camera_v4l2_ioctl_t)
2021d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2022d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_CTRL_CMD_DONE \
2023d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct msm_camera_v4l2_ioctl_t)
2024d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2025d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_GET_EVENT_PAYLOAD \
2026d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct msm_camera_v4l2_ioctl_t)
2027d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2028d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_IOCTL_SEND_EVENT \
2029d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct v4l2_event)
2030d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2031d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_CFG_VPE \
2032d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 7, struct msm_vpe_cfg_cmd)
2033d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2034d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_PRIVATE_S_CTRL \
2035d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_camera_v4l2_ioctl_t)
2036d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2037d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_CAM_V4L2_IOCTL_PRIVATE_G_CTRL \
2038d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 9, struct msm_camera_v4l2_ioctl_t)
2039d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2040f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define MSM_CAM_V4L2_IOCTL_PRIVATE_GENERAL \
2041f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOW('V', BASE_VIDIOC_PRIVATE + 10, struct msm_camera_v4l2_ioctl_t)
2042f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
2043d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VPE_INIT \
2044d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IO('V', BASE_VIDIOC_PRIVATE + 15)
2045d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2046d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VPE_RELEASE \
2047d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IO('V', BASE_VIDIOC_PRIVATE + 16)
2048d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2049d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VPE_CFG \
2050d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 17, struct msm_mctl_pp_params *)
2051d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2052d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_INIT \
2053f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOWR('V', BASE_VIDIOC_PRIVATE + 18, uint8_t *)
2054d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2055d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_RELEASE \
2056d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IO('V', BASE_VIDIOC_PRIVATE + 19)
2057d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2058d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_CFG \
2059d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 20, void *)
2060d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2061d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_IRQ \
2062d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 21, void *)
2063d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2064d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_AXI_BUF_CFG \
2065d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 22, void *)
2066d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2067f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define VIDIOC_MSM_AXI_RDI_COUNT_UPDATE \
2068f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IOWR('V', BASE_VIDIOC_PRIVATE + 23, struct rdi_count_msg)
2069f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
2070d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VFE_INIT \
2071f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IO('V', BASE_VIDIOC_PRIVATE + 24)
2072d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2073d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_VFE_RELEASE \
2074f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	_IO('V', BASE_VIDIOC_PRIVATE + 25)
2075d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2076d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_v4l2_ioctl_t {
2077d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t id;
2078d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t len;
2079f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint32_t trans_code;
2080f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	void __user *ioctl_ptr;
2081d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2082d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2083d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_vfe_params_t {
2084d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t operation_mode;
2085d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t capture_count;
2086f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t  skip_reset;
2087f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t  stop_immediately;
2088d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t port_info;
2089d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t inst_handle;
2090d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint16_t cmd_type;
2091d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2092d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2093d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_camss_irq_idx {
2094d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_0,
2095d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_1,
2096d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_2,
2097d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_3,
2098d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_4,
2099d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_5,
2100d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_6,
2101d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_7,
2102d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_8,
2103d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_9,
2104d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_10,
2105d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_11,
2106d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_12,
2107d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	CAMERA_SS_IRQ_MAX
2108d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2109d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2110d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_cam_hw_idx {
2111d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_MICRO,
2112d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_CCI,
2113d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_CSI0,
2114d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_CSI1,
2115d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_CSI2,
2116d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_CSI3,
2117d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_ISPIF,
2118d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_CPP,
2119d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_VFE0,
2120d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_VFE1,
2121d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_JPEG0,
2122d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_JPEG1,
2123d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_JPEG2,
2124d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CAM_HW_MAX
2125d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2126d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2127d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_camera_irq_cfg {
2128d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* Bit mask of all the camera hardwares that needs to
2129d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * be composited into a single IRQ to the MSM.
2130d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * Current usage: (may be updated based on hw changes)
2131d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * Bits 31:13 - Reserved.
2132d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * Bits 12:0
2133d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * 12 - MSM_CAM_HW_JPEG2
2134d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * 11 - MSM_CAM_HW_JPEG1
2135d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * 10 - MSM_CAM_HW_JPEG0
2136d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  9 - MSM_CAM_HW_VFE1
2137d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  8 - MSM_CAM_HW_VFE0
2138d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  7 - MSM_CAM_HW_CPP
2139d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  6 - MSM_CAM_HW_ISPIF
2140d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  5 - MSM_CAM_HW_CSI3
2141d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  4 - MSM_CAM_HW_CSI2
2142d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  3 - MSM_CAM_HW_CSI1
2143d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  2 - MSM_CAM_HW_CSI0
2144d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  1 - MSM_CAM_HW_CCI
2145d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 *  0 - MSM_CAM_HW_MICRO
2146d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 */
2147d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t cam_hw_mask;
2148f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t  irq_idx;
2149f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	uint8_t  num_hwcore;
2150d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2151d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2152d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MSM_IRQROUTER_CFG_COMPIRQ \
2153d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE, void __user *)
2154d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2155d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define MAX_NUM_CPP_STRIPS 8
2156d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2157d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choienum msm_cpp_frame_type {
2158d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CPP_OFFLINE_FRAME,
2159d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	MSM_CPP_REALTIME_FRAME,
2160d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2161d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2162d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cpp_frame_strip_info {
2163d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int scale_v_en;
2164d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int scale_h_en;
2165d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2166d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int upscale_v_en;
2167d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int upscale_h_en;
2168d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2169d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int src_start_x;
2170d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int src_end_x;
2171d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int src_start_y;
2172d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int src_end_y;
2173d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2174d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	/* Padding is required for upscaler because it does not
2175d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * pad internally like other blocks, also needed for rotation
2176d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * rotation expects all the blocks in the stripe to be the same size
2177d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * Padding is done such that all the extra padded pixels
2178d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	 * are on the right and bottom
2179f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	*/
2180d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int pad_bottom;
2181d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int pad_top;
2182d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int pad_right;
2183d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int pad_left;
2184d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2185d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int v_init_phase;
2186d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int h_init_phase;
2187d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int h_phase_step;
2188d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int v_phase_step;
2189d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2190d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int prescale_crop_width_first_pixel;
2191d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int prescale_crop_width_last_pixel;
2192d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int prescale_crop_height_first_line;
2193d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int prescale_crop_height_last_line;
2194d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2195d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int postscale_crop_height_first_line;
2196d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int postscale_crop_height_last_line;
2197d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int postscale_crop_width_first_pixel;
2198d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int postscale_crop_width_last_pixel;
2199d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2200d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int dst_start_x;
2201d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int dst_end_x;
2202d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int dst_start_y;
2203d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int dst_end_y;
2204d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2205d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int bytes_per_pixel;
2206d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned int source_address;
2207d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned int destination_address;
2208d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned int src_stride;
2209d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	unsigned int dst_stride;
2210d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int rotate_270;
2211d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int horizontal_flip;
2212d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int vertical_flip;
2213d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int scale_output_width;
2214d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int scale_output_height;
2215d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2216d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2217d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_cpp_frame_info_t {
2218d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	int32_t frame_id;
2219d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t inst_id;
2220d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t client_id;
2221d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	enum msm_cpp_frame_type frame_type;
2222d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t num_strips;
2223d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	struct msm_cpp_frame_strip_info *strip_info;
2224d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2225d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2226d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choistruct msm_ver_num_info {
2227d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t main;
2228d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t minor;
2229d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	uint32_t rev;
2230d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi};
2231d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2232d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_CPP_CFG \
2233d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE, struct msm_camera_v4l2_ioctl_t)
2234d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2235d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_CPP_GET_EVENTPAYLOAD \
2236d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct msm_camera_v4l2_ioctl_t)
2237d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2238d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define VIDIOC_MSM_CPP_GET_INST_INFO \
2239d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	_IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct msm_camera_v4l2_ioctl_t)
2240d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2241d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define V4L2_EVENT_CPP_FRAME_DONE  (V4L2_EVENT_PRIVATE_START + 0)
2242d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2243d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi/* Instance Handle - inst_handle
2244d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Data bundle containing the information about where
2245d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * to get a buffer for a particular camera instance.
2246d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * This is a bitmask containing the following data:
2247d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi * Buffer Handle Bitmask:
2248d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      ------------------------------------
2249d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      Bits    :  Purpose
2250d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      ------------------------------------
2251f2be60f5864338ca33d569f0086dac301b7066afDevin Kim *      31      :  is Dev ID valid?
2252f2be60f5864338ca33d569f0086dac301b7066afDevin Kim *      30 - 24 :  Dev ID.
2253d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      23      :  is Image mode valid?
2254d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      22 - 16 :  Image mode.
2255d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      15      :  is MCTL PP inst idx valid?
2256d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      14 - 8  :  MCTL PP inst idx.
2257d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      7       :  is Video inst idx valid?
2258d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi *      6 - 0   :  Video inst idx.
2259d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi */
2260f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define CLR_DEVID_MODE(handle)	(handle &= 0x00FFFFFF)
2261f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define SET_DEVID_MODE(handle, data)	\
2262f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	(handle |= ((0x1 << 31) | ((data & 0x7F) << 24)))
2263f2be60f5864338ca33d569f0086dac301b7066afDevin Kim#define GET_DEVID_MODE(handle)	\
2264f2be60f5864338ca33d569f0086dac301b7066afDevin Kim	((handle & 0x80000000) ? ((handle & 0x7F000000) >> 24) : 0xFF)
2265f2be60f5864338ca33d569f0086dac301b7066afDevin Kim
2266d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CLR_IMG_MODE(handle)	(handle &= 0xFF00FFFF)
2267d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SET_IMG_MODE(handle, data)	\
2268d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(handle |= ((0x1 << 23) | ((data & 0x7F) << 16)))
2269d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_IMG_MODE(handle)	\
2270d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	((handle & 0x800000) ? ((handle & 0x7F0000) >> 16) : 0xFF)
2271d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2272d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CLR_MCTLPP_INST_IDX(handle)	(handle &= 0xFFFF00FF)
2273d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SET_MCTLPP_INST_IDX(handle, data)	\
2274d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(handle |= ((0x1 << 15) | ((data & 0x7F) << 8)))
2275d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_MCTLPP_INST_IDX(handle)	\
2276d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	((handle & 0x8000) ? ((handle & 0x7F00) >> 8) : 0xFF)
2277d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2278d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define CLR_VIDEO_INST_IDX(handle)	(handle &= 0xFFFFFF00)
2279d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define GET_VIDEO_INST_IDX(handle)	\
2280d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	((handle & 0x80) ? (handle & 0x7F) : 0xFF)
2281d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#define SET_VIDEO_INST_IDX(handle, data)	\
2282d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi	(handle |= (0x1 << 7) | (data & 0x7F))
2283d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi
2284d52bbf4ee8348a98804a62d150740dbd78bf14a2Sungmin Choi#endif /* __LINUX_MSM_CAMERA_H */
2285