diff options
Diffstat (limited to 'original-kernel-headers/media/msm_cam_sensor.h')
-rw-r--r-- | original-kernel-headers/media/msm_cam_sensor.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/original-kernel-headers/media/msm_cam_sensor.h b/original-kernel-headers/media/msm_cam_sensor.h index cead64d..527aa59 100644 --- a/original-kernel-headers/media/msm_cam_sensor.h +++ b/original-kernel-headers/media/msm_cam_sensor.h @@ -42,6 +42,10 @@ #define MAX_ACTUATOR_REG_TBL_SIZE 8 #define MAX_ACTUATOR_AF_TOTAL_STEPS 1024 +#define MAX_OIS_MOD_NAME_SIZE 32 +#define MAX_OIS_NAME_SIZE 32 +#define MAX_OIS_REG_SETTINGS 800 + #define MOVE_NEAR 0 #define MOVE_FAR 1 @@ -76,6 +80,7 @@ enum msm_camera_i2c_reg_addr_type { enum msm_camera_i2c_data_type { MSM_CAMERA_I2C_BYTE_DATA = 1, MSM_CAMERA_I2C_WORD_DATA, + MSM_CAMERA_I2C_DWORD_DATA, MSM_CAMERA_I2C_SET_BYTE_MASK, MSM_CAMERA_I2C_UNSET_BYTE_MASK, MSM_CAMERA_I2C_SET_WORD_MASK, @@ -149,6 +154,7 @@ enum sensor_sub_module_t { SUB_MODULE_CSID_3D, SUB_MODULE_CSIPHY, SUB_MODULE_CSIPHY_3D, + SUB_MODULE_OIS, SUB_MODULE_MAX, }; @@ -433,6 +439,7 @@ struct msm_camera_sensor_slave_info { char sensor_name[32]; char eeprom_name[32]; char actuator_name[32]; + char ois_name[32]; enum msm_sensor_camera_id_t camera_id; uint16_t slave_addr; enum i2c_freq_mode_t i2c_freq_mode; @@ -551,6 +558,62 @@ enum msm_actuator_cfg_type_t { CFG_DIRECT_I2C_WRITE, /*to support non-trivial actuators*/ }; +enum msm_ois_cfg_type_t { + CFG_OIS_INIT, + CFG_GET_OIS_INFO, + CFG_OIS_POWERDOWN, + CFG_OIS_INI_SET, + CFG_OIS_ENABLE, + CFG_OIS_DISABLE, + CFG_OIS_SET_MOVIE_MODE, + CFG_OIS_SET_STILL_MODE, + CFG_OIS_SET_CENTERING_ON, + CFG_OIS_SET_PANTILT_ON, + CFG_OIS_POWERUP, + CFG_OIS_I2C_WRITE_SEQ_TABLE, +}; + +enum msm_ois_i2c_operation { + MSM_OIS_WRITE = 0, + MSM_OIS_POLL, +}; + +struct reg_settings_ois_t { + uint16_t reg_addr; + enum msm_camera_i2c_reg_addr_type addr_type; + uint32_t reg_data; + enum msm_camera_i2c_data_type data_type; + enum msm_ois_i2c_operation i2c_operation; + uint32_t delay; +}; + +struct msm_ois_params_t { + uint16_t data_size; + uint16_t init_setting_size; + uint16_t enable_ois_setting_size; + uint16_t disable_ois_setting_size; + uint16_t movie_mode_ois_setting_size; + uint16_t still_mode_ois_setting_size; + uint16_t centering_on_ois_setting_size; + uint16_t centering_off_ois_setting_size; + uint16_t pantilt_on_ois_setting_size; + uint32_t i2c_addr; + enum msm_camera_i2c_reg_addr_type i2c_addr_type; + enum msm_camera_i2c_data_type i2c_data_type; + struct reg_settings_ois_t *init_settings; + struct reg_settings_ois_t *enable_ois_settings; + struct reg_settings_ois_t *disable_ois_settings; + struct reg_settings_ois_t *movie_mode_ois_settings; + struct reg_settings_ois_t *still_mode_ois_settings; + struct reg_settings_ois_t *centering_on_ois_settings; + struct reg_settings_ois_t *centering_off_ois_settings; + struct reg_settings_ois_t *pantilt_on_ois_settings; +}; + +struct msm_ois_set_info_t { + struct msm_ois_params_t ois_params; +}; + enum actuator_type { ACTUATOR_VCM, ACTUATOR_PIEZO, @@ -664,6 +727,15 @@ enum af_camera_name { ACTUATOR_WEB_CAM_2, }; +struct msm_ois_cfg_data { + int cfgtype; + uint8_t is_ois_supported; + union { + uint8_t enable_centering_ois; + struct msm_ois_set_info_t set_info; + struct msm_camera_i2c_seq_reg_setting *settings; + } cfg; +}; struct msm_actuator_set_position_t { uint16_t number_of_steps; @@ -768,6 +840,9 @@ struct sensor_init_cfg_data { #define VIDIOC_MSM_SENSOR_INIT_CFG \ _IOWR('V', BASE_VIDIOC_PRIVATE + 10, struct sensor_init_cfg_data) +#define VIDIOC_MSM_OIS_CFG \ + _IOWR('V', BASE_VIDIOC_PRIVATE + 11, struct msm_ois_cfg_data) + #define MSM_V4L2_PIX_FMT_META v4l2_fourcc('M', 'E', 'T', 'A') /* META */ #endif /* __LINUX_MSM_CAM_SENSOR_H */ |