msm_cam_sensor.h revision a8dacd55667c4b495110f04338067794a6d50ee2
1537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#ifndef __LINUX_MSM_CAM_SENSOR_H
2537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define __LINUX_MSM_CAM_SENSOR_H
3537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
4537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#ifdef MSM_CAMERA_BIONIC
5537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <sys/types.h>
6537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#endif
7537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <linux/types.h>
8537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <linux/v4l2-mediabus.h>
9537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#include <linux/i2c.h>
10537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
11537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define I2C_SEQ_REG_SETTING_MAX   5
12537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define I2C_SEQ_REG_DATA_MAX      20
13537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_CID                   16
14537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
15537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_SENSOR_MCLK_8HZ   8000000
16537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_SENSOR_MCLK_16HZ  16000000
17537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_SENSOR_MCLK_24HZ  24000000
18537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
19537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define GPIO_OUT_LOW          (0 << 1)
20537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define GPIO_OUT_HIGH         (1 << 1)
21537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
22537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_EMBED_DATA        0x12
23537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RESERVED_DATA_0   0x13
24537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_YUV422_8          0x1E
25537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RAW8              0x2A
26537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RAW10             0x2B
27537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_RAW12             0x2C
28537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
29537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_6BIT         0
30537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_8BIT         1
31537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_10BIT        2
32537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define CSI_DECODE_DPCM_10_8_10 5
33537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
34537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_SENSOR_NAME 32
35537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
36537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACT_MOD_NAME_SIZE 32
37537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACT_NAME_SIZE 32
38537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define NUM_ACTUATOR_DIR 2
39537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_SCENARIO 8
40537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_REGION 5
41537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_INIT_SET 12
42537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_ACTUATOR_REG_TBL_SIZE 8
43537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
44537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MOVE_NEAR 0
45537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MOVE_FAR  1
46537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
47537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MAX_EEPROM_NAME 32
48537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
49537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_i2c_reg_addr_type {
50537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_BYTE_ADDR = 1,
51537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_WORD_ADDR,
52537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_3B_ADDR,
53537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
54537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
55537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_i2c_data_type {
56537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_BYTE_DATA = 1,
57537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_WORD_DATA,
58537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_SET_BYTE_MASK,
59537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_UNSET_BYTE_MASK,
60537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_SET_WORD_MASK,
61537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_UNSET_WORD_MASK,
62537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_I2C_SET_BYTE_WRITE_MASK_DATA,
63537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
64537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
65537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_power_seq_type_t {
66537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_CLK,
67537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_GPIO,
68537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_VREG,
69537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_I2C_MUX,
70537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
71537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
72537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_clk_type_t {
73537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_CAM_MCLK,
74537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_CAM_CLK,
75537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_CAM_CLK_MAX,
76537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
77537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
78537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_power_seq_gpio_t {
79537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_GPIO_RESET,
80537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_GPIO_STANDBY,
81b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi	SENSOR_GPIO_VANA,
82b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi	SENSOR_GPIO_VDIG,
83b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi	SENSOR_GPIO_VIO,
84b8950166b8e6eb29e0711d2f6d92cad4096a5b36insup.choi	SENSOR_GPIO_VCM,
85537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SENSOR_GPIO_MAX,
86537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
87537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
88537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_vreg_name_t {
89537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAM_VDIG,
90537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAM_VIO,
91537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAM_VANA,
92537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAM_VAF,
93537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAM_VREG_MAX,
94537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
95537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
96537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_resolution_t {
97537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_FULL,
98537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_QTR,
99537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_2,
100537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_3,
101537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_4,
102537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_5,
103537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_6,
104537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_RES_7,
105537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_SENSOR_INVALID_RES,
106537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
107537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
108537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum sensor_sub_module_t {
109537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_SENSOR,
110537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_CHROMATIX,
111537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_ACTUATOR,
112537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_EEPROM,
113537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_LED_FLASH,
114537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_STROBE_FLASH,
115537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_CSID,
116537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_CSID_3D,
117537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_CSIPHY,
118537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_CSIPHY_3D,
119537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	SUB_MODULE_MAX,
120537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
121537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
122537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum csid_cfg_type_t {
123537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CSID_INIT,
124537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CSID_CFG,
125537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CSID_RELEASE,
126537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
127537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
128537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum csiphy_cfg_type_t {
129537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CSIPHY_INIT,
130537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CSIPHY_CFG,
131537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CSIPHY_RELEASE,
132537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
133537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
134537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum camera_vreg_type {
135537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	REG_LDO,
136537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	REG_VS,
137537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	REG_GPIO,
138537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
139537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
140537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_power_setting {
141537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_sensor_power_seq_type_t seq_type;
142537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t seq_val;
143537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	long config_val;
144537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t delay;
145537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	void *data[10];
146537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
147537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
148537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_power_setting_array {
149537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_sensor_power_setting *power_setting;
150537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t size;
151537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
152537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
153537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_id_info_t {
154537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t sensor_id_reg_addr;
155537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t sensor_id;
156537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
157537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
158537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_sensor_slave_info {
159537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t slave_addr;
160537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_camera_i2c_reg_addr_type addr_type;
161537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_sensor_id_info_t sensor_id_info;
162537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_sensor_power_setting_array power_setting_array;
163537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
164537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
165537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_reg_array {
166537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t reg_addr;
167537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t reg_data;
168537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
169537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
170537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_reg_setting {
171537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_camera_i2c_reg_array *reg_setting;
172537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t size;
173537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_camera_i2c_reg_addr_type addr_type;
174537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_camera_i2c_data_type data_type;
175537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t delay;
176537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
177537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
178537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_seq_reg_array {
179537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t reg_addr;
180537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t reg_data[I2C_SEQ_REG_DATA_MAX];
181537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t reg_data_size;
182537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
183537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
184537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_i2c_seq_reg_setting {
185537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_camera_i2c_seq_reg_array *reg_setting;
186537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t size;
187537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_camera_i2c_reg_addr_type addr_type;
188537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t delay;
189537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
190537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
191a8dacd55667c4b495110f04338067794a6d50ee2Devin Kimstruct msm_camera_i2c_array_write_config {
192a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	struct msm_camera_i2c_reg_setting conf_array;
193a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	uint16_t slave_addr;
194a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim};
195a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim
196a8dacd55667c4b495110f04338067794a6d50ee2Devin Kimstruct msm_camera_i2c_read_config {
197a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	uint16_t slave_addr;
198a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	uint16_t reg_addr;
199a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	enum msm_camera_i2c_data_type data_type;
200a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	uint16_t *data;
201a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim};
202a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim
203537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csid_vc_cfg {
204537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t cid;
205537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t dt;
206537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t decode_format;
207537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
208537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
209537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csid_lut_params {
210537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t num_cid;
211537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_camera_csid_vc_cfg *vc_cfg[MAX_CID];
212537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
213537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
214537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csid_params {
215537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t lane_cnt;
216537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t lane_assign;
217537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t phy_sel;
218537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_camera_csid_lut_params lut_params;
219537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
220537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
221537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csiphy_params {
222537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t lane_cnt;
223537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t settle_cnt;
224537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t lane_mask;
225537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t combo_mode;
226537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t csid_core;
227537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
228537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
229537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csi2_params {
230537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_camera_csid_params csid_params;
231537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_camera_csiphy_params csiphy_params;
232537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
233537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
234537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_csi_lane_params {
235537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t csi_lane_assign;
236537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t csi_lane_mask;
237537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
238537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
239537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct csi_lane_params_t {
240537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t csi_lane_assign;
241537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t csi_lane_mask;
242537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t csi_if;
243537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t csid_core[2];
244537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t csi_phy_sel;
245537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
246537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
247537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_info_t {
248537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	char sensor_name[MAX_SENSOR_NAME];
249537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int32_t    session_id;
250537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int32_t     subdev_id[SUB_MODULE_MAX];
251537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
252537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
253537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct camera_vreg_t {
254537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	const char *reg_name;
255537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum camera_vreg_type type;
256537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int min_voltage;
257537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int max_voltage;
258537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int op_mode;
259537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t delay;
260537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
261537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
262537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum camb_position_t {
263537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	BACK_CAMERA_B,
264537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	FRONT_CAMERA_B,
265537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
266537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
267537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum camerab_mode_t {
268537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMERA_MODE_2D_B = (1<<0),
269537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CAMERA_MODE_3D_B = (1<<1)
270537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
271537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
272537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_sensor_init_params {
273537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/* mask of modes supported: 2D, 3D */
274537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int                 modes_supported;
275537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/* sensor position: front, back */
276537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum camb_position_t position;
277537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/* sensor mount angle */
278537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t            sensor_mount_angle;
279537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
280537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
281537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct sensorb_cfg_data {
282537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int cfgtype;
283537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
284537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_sensor_info_t      sensor_info;
285537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_sensor_init_params sensor_init_params;
286537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		void                         *setting;
287537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} cfg;
288537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
289537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
290537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct csid_cfg_data {
291537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum csid_cfg_type_t cfgtype;
292537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
293537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		uint32_t csid_version;
294537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_camera_csid_params *csid_params;
295537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} cfg;
296537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
297537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
298537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct csiphy_cfg_data {
299537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum csiphy_cfg_type_t cfgtype;
300537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
301537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_camera_csiphy_params *csiphy_params;
302537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_camera_csi_lane_params *csi_lane_params;
303537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} cfg;
304537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
305537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
306537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum eeprom_cfg_type_t {
307537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_EEPROM_GET_INFO,
30892b8da1af686c72bde47254e7fcd4b17e39be634Ajay Dudani	CFG_EEPROM_GET_CAL_DATA,
30992b8da1af686c72bde47254e7fcd4b17e39be634Ajay Dudani	CFG_EEPROM_READ_CAL_DATA,
310537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_EEPROM_WRITE_DATA,
311537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
312537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct eeprom_get_t {
313537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t num_bytes;
314537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
315537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
316537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct eeprom_read_t {
317537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t *dbuffer;
318537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t num_bytes;
319537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
320537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
321537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct eeprom_write_t {
322537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t *dbuffer;
323537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t num_bytes;
324537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
325537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
326537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_eeprom_cfg_data {
327537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum eeprom_cfg_type_t cfgtype;
328537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t is_supported;
329537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
330537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		char eeprom_name[MAX_SENSOR_NAME];
331537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct eeprom_get_t get_data;
332537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct eeprom_read_t read_data;
333537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct eeprom_write_t write_data;
334537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} cfg;
335537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
336537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
337537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_sensor_cfg_type_t {
338537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_SLAVE_INFO,
339a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	CFG_SLAVE_READ_I2C,
340537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_WRITE_I2C_ARRAY,
341a8dacd55667c4b495110f04338067794a6d50ee2Devin Kim	CFG_SLAVE_WRITE_I2C_ARRAY,
342537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_WRITE_I2C_SEQ_ARRAY,
343537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_POWER_UP,
344537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_POWER_DOWN,
345537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_STOP_STREAM_SETTING,
346537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_GET_SENSOR_INFO,
347537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_GET_SENSOR_INIT_PARAMS,
348537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_INIT_SETTING,
349537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_RESOLUTION,
350537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_STOP_STREAM,
351537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_START_STREAM,
352537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
353537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
354537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_cfg_type_t {
355537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_GET_ACTUATOR_INFO,
356537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_ACTUATOR_INFO,
357537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_SET_DEFAULT_FOCUS,
358537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	CFG_MOVE_FOCUS,
359537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
360537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
361537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum actuator_type {
362537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_VCM,
363537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_PIEZO,
364537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
365537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
366537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_data_type {
367537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ACTUATOR_BYTE_DATA = 1,
368537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ACTUATOR_WORD_DATA,
369537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
370537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
371537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_addr_type {
372537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ACTUATOR_BYTE_ADDR = 1,
373537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ACTUATOR_WORD_ADDR,
374537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
375537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
376537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct reg_settings_t {
377537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t reg_addr;
378537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t reg_data;
379537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
380537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
381537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct region_params_t {
382537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	/* [0] = ForwardDirection Macro boundary
383537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	   [1] = ReverseDirection Inf boundary
384537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani        */
385537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t step_bound[2];
386537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t code_per_step;
387537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
388537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
389537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct damping_params_t {
390537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t damping_step;
391537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t damping_delay;
392537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t hw_params;
393537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
394537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
395537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_move_params_t {
396537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int8_t dir;
397537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int8_t sign_dir;
398537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int16_t dest_step_pos;
399537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int32_t num_steps;
400537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct damping_params_t *ringing_params;
401537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
402537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
403537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_tuning_params_t {
404537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int16_t initial_code;
405537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t pwd_step;
406537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t region_size;
407537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t total_steps;
408537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct region_params_t *region_params;
409537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
410537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
411537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_params_t {
412537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum actuator_type act_type;
413537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t reg_tbl_size;
414537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t data_size;
415537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t init_setting_size;
416537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t i2c_addr;
417537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_actuator_addr_type i2c_addr_type;
418537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_actuator_data_type i2c_data_type;
419537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_actuator_reg_params_t *reg_tbl_params;
420537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct reg_settings_t *init_settings;
421537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
422537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
423537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_set_info_t {
424537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_actuator_params_t actuator_params;
425537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	struct msm_actuator_tuning_params_t af_tuning_params;
426537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
427537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
428537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_get_info_t {
429537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t focal_length_num;
430537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t focal_length_den;
431537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t f_number_num;
432537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t f_number_den;
433537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t f_pix_num;
434537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t f_pix_den;
435537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t total_f_dist_num;
436537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t total_f_dist_den;
437537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t hor_view_angle_num;
438537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t hor_view_angle_den;
439537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t ver_view_angle_num;
440537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t ver_view_angle_den;
441537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
442537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
443537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum af_camera_name {
444537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_MAIN_CAM_0,
445537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_MAIN_CAM_1,
446537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_MAIN_CAM_2,
447537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_MAIN_CAM_3,
448537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_MAIN_CAM_4,
449537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_MAIN_CAM_5,
450537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_WEB_CAM_0,
451537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_WEB_CAM_1,
452537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	ACTUATOR_WEB_CAM_2,
453537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
454537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
455537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_cfg_data {
456537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	int cfgtype;
457537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint8_t is_af_supported;
458537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	union {
459537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_actuator_move_params_t move;
460537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_actuator_set_info_t set_info;
461537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		struct msm_actuator_get_info_t get_info;
462537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani		enum af_camera_name cam_name;
463537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	} cfg;
464537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
465537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
466537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_actuator_write_type {
467537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ACTUATOR_WRITE_HW_DAMP,
468537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_ACTUATOR_WRITE_DAC,
469537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
470537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
471537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_actuator_reg_params_t {
472537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_actuator_write_type reg_write_type;
473537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint32_t hw_mask;
474537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t reg_addr;
475537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t hw_shift;
476537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	uint16_t data_shift;
477537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
478537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
479537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanienum msm_camera_led_config_t {
480537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_LED_OFF,
481537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_LED_LOW,
482537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_LED_HIGH,
483537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_LED_INIT,
484537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	MSM_CAMERA_LED_RELEASE,
485537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
486537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
487537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudanistruct msm_camera_led_cfg_t {
488537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	enum msm_camera_led_config_t cfgtype;
489537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani};
490537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
491537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_SENSOR_CFG \
492537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct sensorb_cfg_data)
493537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
494537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_SENSOR_RELEASE \
495537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IO('V', BASE_VIDIOC_PRIVATE + 2)
496537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
497537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_SENSOR_GET_SUBDEV_ID \
498537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE + 3, uint32_t)
499537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
500537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_CSIPHY_IO_CFG \
501537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct csid_cfg_data)
502537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
503537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_CSID_IO_CFG \
504537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct csiphy_cfg_data)
505537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
506537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_ACTUATOR_CFG \
507537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct msm_actuator_cfg_data)
508537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
509537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_FLASH_LED_DATA_CFG \
510537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE + 7, struct msm_camera_led_cfg_t)
511537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
512537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define VIDIOC_MSM_EEPROM_CFG \
513537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani	_IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_eeprom_cfg_data)
514537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
515537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A') /* META */
516537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani
517537a84edd4d8369012dbe56730096d1eb3e0401dAjay Dudani#endif /* __LINUX_MSM_CAM_SENSOR_H */
518