Pratap Nirujogi | 6e75991 | 2018-01-17 17:51:17 +0530 | [diff] [blame] | 1 | #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 | |
| 11 | struct 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 | |
| 19 | struct 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 Tumati | 13e62de | 2018-05-29 10:25:01 +0530 | [diff] [blame] | 29 | struct 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 | |
| 37 | struct 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 Nirujogi | 6e75991 | 2018-01-17 17:51:17 +0530 | [diff] [blame] | 44 | struct 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 Tumati | 13e62de | 2018-05-29 10:25:01 +0530 | [diff] [blame] | 54 | struct msm_sensor_id_info_t32 sensor_id_info; |
Pratap Nirujogi | 6e75991 | 2018-01-17 17:51:17 +0530 | [diff] [blame] | 55 | 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 | |
| 62 | struct 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 | |
| 68 | struct 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 | |
| 77 | struct 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 | |
| 83 | struct 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 | |
| 92 | struct 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 | |
| 98 | struct msm_ir_cut_cfg_data_t32 { |
| 99 | enum msm_ir_cut_cfg_type_t cfg_type; |
| 100 | }; |
| 101 | |
| 102 | struct 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 | |
| 111 | struct eeprom_read_t32 { |
| 112 | compat_uptr_t dbuffer; |
| 113 | uint32_t num_bytes; |
| 114 | }; |
| 115 | |
| 116 | struct eeprom_write_t32 { |
| 117 | compat_uptr_t dbuffer; |
| 118 | uint32_t num_bytes; |
| 119 | }; |
| 120 | |
| 121 | struct 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 | |
| 127 | struct 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 | |
| 139 | struct 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 Nirujogi | 6e75991 | 2018-01-17 17:51:17 +0530 | [diff] [blame] | 146 | struct msm_camera_i2c_array_write_config32 { |
| 147 | struct msm_camera_i2c_reg_setting32 conf_array; |
| 148 | uint16_t slave_addr; |
| 149 | }; |
| 150 | |
| 151 | struct 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 | |
| 159 | struct 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 | |
| 173 | struct 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 | |
| 178 | struct 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 | |
| 187 | struct 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 | |
| 196 | struct 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 | |
| 208 | struct 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 | |
| 216 | struct 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 | |
| 226 | struct 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 | |
| 236 | struct msm_ois_set_info_t32 { |
| 237 | struct msm_ois_params_t32 ois_params; |
| 238 | }; |
| 239 | |
| 240 | struct 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 | |
| 248 | struct 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 | |
| 256 | struct 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 |