blob: 54cd27bfe39ecacb927d3df8caadcaba8d8ffd27 [file] [log] [blame]
Pratap Nirujogi6e759912018-01-17 17:51:17 +05301#ifndef __LINUX_MSM_CAM_SENSOR_H
2#define __LINUX_MSM_CAM_SENSOR_H
3
4#include <uapi/media/msm_cam_sensor.h>
5#include <uapi/media/msm_camsensor_sdk.h>
6
7#include <linux/compat.h>
8
9#ifdef CONFIG_COMPAT
10
11struct msm_sensor_power_setting32 {
12 enum msm_sensor_power_seq_type_t seq_type;
13 uint16_t seq_val;
14 compat_uint_t config_val;
15 uint16_t delay;
16 compat_uptr_t data[10];
17};
18
19struct msm_sensor_power_setting_array32 {
20 struct msm_sensor_power_setting32 power_setting_a[MAX_POWER_CONFIG];
21 compat_uptr_t power_setting;
22 uint16_t size;
23 struct msm_sensor_power_setting32
24 power_down_setting_a[MAX_POWER_CONFIG];
25 compat_uptr_t power_down_setting;
26 uint16_t size_down;
27};
28
Vijay kumar Tumati13e62de2018-05-29 10:25:01 +053029struct msm_camera_i2c_reg_setting32 {
30 compat_uptr_t reg_setting;
31 uint16_t size;
32 enum msm_camera_i2c_reg_addr_type addr_type;
33 enum msm_camera_i2c_data_type data_type;
34 uint16_t delay;
35};
36
37struct msm_sensor_id_info_t32 {
38 unsigned short sensor_id_reg_addr;
39 unsigned short sensor_id;
40 unsigned short sensor_id_mask;
41 struct msm_camera_i2c_reg_setting32 setting;
42};
43
Pratap Nirujogi6e759912018-01-17 17:51:17 +053044struct msm_camera_sensor_slave_info32 {
45 char sensor_name[32];
46 char eeprom_name[32];
47 char actuator_name[32];
48 char ois_name[32];
49 char flash_name[32];
50 enum msm_sensor_camera_id_t camera_id;
51 uint16_t slave_addr;
52 enum i2c_freq_mode_t i2c_freq_mode;
53 enum msm_camera_i2c_reg_addr_type addr_type;
Vijay kumar Tumati13e62de2018-05-29 10:25:01 +053054 struct msm_sensor_id_info_t32 sensor_id_info;
Pratap Nirujogi6e759912018-01-17 17:51:17 +053055 struct msm_sensor_power_setting_array32 power_setting_array;
56 uint8_t is_init_params_valid;
57 struct msm_sensor_init_params sensor_init_params;
58 enum msm_sensor_output_format_t output_format;
59 uint8_t bypass_video_node_creation;
60};
61
62struct msm_camera_csid_lut_params32 {
63 uint8_t num_cid;
64 struct msm_camera_csid_vc_cfg vc_cfg_a[MAX_CID];
65 compat_uptr_t vc_cfg[MAX_CID];
66};
67
68struct msm_camera_csid_params32 {
69 uint8_t lane_cnt;
70 uint16_t lane_assign;
71 uint8_t phy_sel;
72 uint32_t csi_clk;
73 struct msm_camera_csid_lut_params32 lut_params;
74 uint8_t csi_3p_sel;
75};
76
77struct msm_camera_csi2_params32 {
78 struct msm_camera_csid_params32 csid_params;
79 struct msm_camera_csiphy_params csiphy_params;
80 uint8_t csi_clk_scale_enable;
81};
82
83struct csid_cfg_data32 {
84 enum csid_cfg_type_t cfgtype;
85 union {
86 uint32_t csid_version;
87 compat_uptr_t csid_params;
88 compat_uptr_t csid_testmode_params;
89 } cfg;
90};
91
92struct msm_ir_led_cfg_data_t32 {
93 enum msm_ir_led_cfg_type_t cfg_type;
94 int32_t pwm_duty_on_ns;
95 int32_t pwm_period_ns;
96};
97
98struct msm_ir_cut_cfg_data_t32 {
99 enum msm_ir_cut_cfg_type_t cfg_type;
100};
101
102struct msm_laser_led_cfg_data_t32 {
103 enum msm_laser_led_cfg_type_t cfg_type;
104 compat_uptr_t setting;
105 compat_uptr_t debug_reg;
106 uint32_t debug_reg_size;
107 uint16_t i2c_addr;
108 enum i2c_freq_mode_t i2c_freq_mode;
109};
110
111struct eeprom_read_t32 {
112 compat_uptr_t dbuffer;
113 uint32_t num_bytes;
114};
115
116struct eeprom_write_t32 {
117 compat_uptr_t dbuffer;
118 uint32_t num_bytes;
119};
120
121struct msm_eeprom_info_t32 {
122 compat_uptr_t power_setting_array;
123 enum i2c_freq_mode_t i2c_freq_mode;
124 compat_uptr_t mem_map_array;
125};
126
127struct msm_eeprom_cfg_data32 {
128 enum eeprom_cfg_type_t cfgtype;
129 uint8_t is_supported;
130 union {
131 char eeprom_name[MAX_SENSOR_NAME];
132 struct eeprom_get_t get_data;
133 struct eeprom_read_t32 read_data;
134 struct eeprom_write_t32 write_data;
135 struct msm_eeprom_info_t32 eeprom_info;
136 } cfg;
137};
138
139struct msm_camera_i2c_seq_reg_setting32 {
140 compat_uptr_t reg_setting;
141 uint16_t size;
142 enum msm_camera_i2c_reg_addr_type addr_type;
143 uint16_t delay;
144};
145
Pratap Nirujogi6e759912018-01-17 17:51:17 +0530146struct msm_camera_i2c_array_write_config32 {
147 struct msm_camera_i2c_reg_setting32 conf_array;
148 uint16_t slave_addr;
149};
150
151struct msm_actuator_tuning_params_t32 {
152 int16_t initial_code;
153 uint16_t pwd_step;
154 uint16_t region_size;
155 uint32_t total_steps;
156 compat_uptr_t region_params;
157};
158
159struct msm_actuator_params_t32 {
160 enum actuator_type act_type;
161 uint8_t reg_tbl_size;
162 uint16_t data_size;
163 uint16_t init_setting_size;
164 uint32_t i2c_addr;
165 enum i2c_freq_mode_t i2c_freq_mode;
166 enum msm_camera_i2c_reg_addr_type i2c_addr_type;
167 enum msm_camera_i2c_data_type i2c_data_type;
168 compat_uptr_t reg_tbl_params;
169 compat_uptr_t init_settings;
170 struct park_lens_data_t park_lens;
171};
172
173struct msm_actuator_set_info_t32 {
174 struct msm_actuator_params_t32 actuator_params;
175 struct msm_actuator_tuning_params_t32 af_tuning_params;
176};
177
178struct sensor_init_cfg_data32 {
179 enum msm_sensor_init_cfg_type_t cfgtype;
180 struct msm_sensor_info_t probed_info;
181 char entity_name[MAX_SENSOR_NAME];
182 union {
183 compat_uptr_t setting;
184 } cfg;
185};
186
187struct msm_actuator_move_params_t32 {
188 int8_t dir;
189 int8_t sign_dir;
190 int16_t dest_step_pos;
191 int32_t num_steps;
192 uint16_t curr_lens_pos;
193 compat_uptr_t ringing_params;
194};
195
196struct msm_actuator_cfg_data32 {
197 int cfgtype;
198 uint8_t is_af_supported;
199 union {
200 struct msm_actuator_move_params_t32 move;
201 struct msm_actuator_set_info_t32 set_info;
202 struct msm_actuator_get_info_t get_info;
203 struct msm_actuator_set_position_t setpos;
204 enum af_camera_name cam_name;
205 } cfg;
206};
207
208struct csiphy_cfg_data32 {
209 enum csiphy_cfg_type_t cfgtype;
210 union {
211 compat_uptr_t csiphy_params;
212 compat_uptr_t csi_lane_params;
213 } cfg;
214};
215
216struct sensorb_cfg_data32 {
217 int cfgtype;
218 union {
219 struct msm_sensor_info_t sensor_info;
220 struct msm_sensor_init_params sensor_init_params;
221 compat_uptr_t setting;
222 struct msm_sensor_i2c_sync_params sensor_i2c_sync_params;
223 } cfg;
224};
225
226struct msm_ois_params_t32 {
227 uint16_t data_size;
228 uint16_t setting_size;
229 uint32_t i2c_addr;
230 enum i2c_freq_mode_t i2c_freq_mode;
231 enum msm_camera_i2c_reg_addr_type i2c_addr_type;
232 enum msm_camera_i2c_data_type i2c_data_type;
233 compat_uptr_t settings;
234};
235
236struct msm_ois_set_info_t32 {
237 struct msm_ois_params_t32 ois_params;
238};
239
240struct msm_ois_cfg_data32 {
241 int cfgtype;
242 union {
243 struct msm_ois_set_info_t32 set_info;
244 compat_uptr_t settings;
245 } cfg;
246};
247
248struct msm_flash_init_info_t32 {
249 enum msm_flash_driver_type flash_driver_type;
250 uint32_t slave_addr;
251 enum i2c_freq_mode_t i2c_freq_mode;
252 compat_uptr_t power_setting_array;
253 compat_uptr_t settings;
254};
255
256struct msm_flash_cfg_data_t32 {
257 enum msm_flash_cfg_type_t cfg_type;
258 int32_t flash_current[MAX_LED_TRIGGERS];
259 int32_t flash_duration[MAX_LED_TRIGGERS];
260 union {
261 compat_uptr_t flash_init_info;
262 compat_uptr_t settings;
263 } cfg;
264};
265
266#define VIDIOC_MSM_ACTUATOR_CFG32 \
267 _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct msm_actuator_cfg_data32)
268
269#define VIDIOC_MSM_SENSOR_INIT_CFG32 \
270 _IOWR('V', BASE_VIDIOC_PRIVATE + 10, struct sensor_init_cfg_data32)
271
272#define VIDIOC_MSM_CSIPHY_IO_CFG32 \
273 _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct csiphy_cfg_data32)
274
275#define VIDIOC_MSM_SENSOR_CFG32 \
276 _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct sensorb_cfg_data32)
277
278#define VIDIOC_MSM_EEPROM_CFG32 \
279 _IOWR('V', BASE_VIDIOC_PRIVATE + 8, struct msm_eeprom_cfg_data32)
280
281#define VIDIOC_MSM_OIS_CFG32 \
282 _IOWR('V', BASE_VIDIOC_PRIVATE + 11, struct msm_ois_cfg_data32)
283
284#define VIDIOC_MSM_CSID_IO_CFG32 \
285 _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct csid_cfg_data32)
286
287#define VIDIOC_MSM_FLASH_CFG32 \
288 _IOWR('V', BASE_VIDIOC_PRIVATE + 13, struct msm_flash_cfg_data_t32)
289
290#define VIDIOC_MSM_IR_LED_CFG32 \
291 _IOWR('V', BASE_VIDIOC_PRIVATE + 14, struct msm_ir_led_cfg_data_t32)
292
293#define VIDIOC_MSM_IR_CUT_CFG32 \
294 _IOWR('V', BASE_VIDIOC_PRIVATE + 15, struct msm_ir_cut_cfg_data_t32)
295
296#define VIDIOC_MSM_LASER_LED_CFG32 \
297 _IOWR('V', BASE_VIDIOC_PRIVATE + 16, struct msm_laser_led_cfg_data_t32)
298
299#endif
300
301#endif