mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
Tundra: support 2nd gyro compatible
detail: Dongwoon OIS compatible 2nd gyro kernel. Change-Id: I9cc4918032534a1fa56037a46ccedbff19dc8a6c Signed-off-by: huqian4 <huqian4@motorola.com> Reviewed-on: https://gerrit.mot.com/2244554 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Long Cheng <chengl1@motorola.com> Reviewed-by: Wang Liu <liuwang2@lenovo.com> Reviewed-by: Zhichao Chen <chenzc2@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
aacc836319
commit
c5923c96a5
4 changed files with 45 additions and 1 deletions
|
|
@ -965,6 +965,41 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||
return rc;
|
||||
}
|
||||
break;
|
||||
case CAM_OIS_PACKET_OPCODE_OIS_GYRO_OFFSET:
|
||||
if (o_ctrl->cam_ois_state < CAM_OIS_CONFIG) {
|
||||
rc = -EINVAL;
|
||||
CAM_WARN(CAM_OIS,
|
||||
"Not in right state to control OIS: %d",
|
||||
o_ctrl->cam_ois_state);
|
||||
return rc;
|
||||
}
|
||||
offset = (uint32_t *)&csl_packet->payload;
|
||||
offset += (csl_packet->cmd_buf_offset / sizeof(uint32_t));
|
||||
cmd_desc = (struct cam_cmd_buf_desc *)(offset);
|
||||
i2c_reg_settings = &(o_ctrl->i2c_gyro_data);
|
||||
i2c_reg_settings->is_settings_valid = 1;
|
||||
i2c_reg_settings->request_id = 0;
|
||||
rc = cam_sensor_i2c_command_parser(&o_ctrl->io_master_info,
|
||||
i2c_reg_settings,
|
||||
cmd_desc, 1, NULL);
|
||||
if (rc < 0) {
|
||||
CAM_ERR(CAM_OIS, "OIS pkt parsing failed: %d", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = cam_ois_apply_settings(o_ctrl, i2c_reg_settings);
|
||||
if (rc < 0) {
|
||||
CAM_ERR(CAM_OIS, "Cannot apply gyro offset settings");
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = delete_request(i2c_reg_settings);
|
||||
if (rc < 0) {
|
||||
CAM_ERR(CAM_OIS,
|
||||
"Fail deleting gyro offset data: rc: %d", rc);
|
||||
return rc;
|
||||
}
|
||||
break;
|
||||
case CAM_OIS_PACKET_OPCODE_READ: {
|
||||
struct cam_buf_io_cfg *io_cfg;
|
||||
struct i2c_settings_array i2c_read_settings;
|
||||
|
|
@ -1541,6 +1576,9 @@ void cam_ois_shutdown(struct cam_ois_ctrl_t *o_ctrl)
|
|||
if (o_ctrl->i2c_mode_data.is_settings_valid == 1)
|
||||
delete_request(&o_ctrl->i2c_mode_data);
|
||||
|
||||
if (o_ctrl->i2c_gyro_data.is_settings_valid == 1)
|
||||
delete_request(&o_ctrl->i2c_gyro_data);
|
||||
|
||||
if (o_ctrl->i2c_calib_data.is_settings_valid == 1)
|
||||
delete_request(&o_ctrl->i2c_calib_data);
|
||||
|
||||
|
|
@ -1668,6 +1706,9 @@ int cam_ois_driver_cmd(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||
if (o_ctrl->i2c_mode_data.is_settings_valid == 1)
|
||||
delete_request(&o_ctrl->i2c_mode_data);
|
||||
|
||||
if (o_ctrl->i2c_gyro_data.is_settings_valid == 1)
|
||||
delete_request(&o_ctrl->i2c_gyro_data);
|
||||
|
||||
if (o_ctrl->i2c_calib_data.is_settings_valid == 1)
|
||||
delete_request(&o_ctrl->i2c_calib_data);
|
||||
|
||||
|
|
|
|||
|
|
@ -490,6 +490,7 @@ static int cam_ois_component_bind(struct device *dev,
|
|||
INIT_LIST_HEAD(&(o_ctrl->i2c_calib_data.list_head));
|
||||
INIT_LIST_HEAD(&(o_ctrl->i2c_postcalib_data.list_head));
|
||||
INIT_LIST_HEAD(&(o_ctrl->i2c_mode_data.list_head));
|
||||
INIT_LIST_HEAD(&(o_ctrl->i2c_gyro_data.list_head));
|
||||
mutex_init(&(o_ctrl->ois_mutex));
|
||||
rc = cam_ois_driver_soc_init(o_ctrl);
|
||||
if (rc) {
|
||||
|
|
|
|||
|
|
@ -148,6 +148,7 @@ struct cam_ois_ctrl_t {
|
|||
struct i2c_settings_array i2c_calib_data;
|
||||
struct i2c_settings_array i2c_postcalib_data;
|
||||
struct i2c_settings_array i2c_mode_data;
|
||||
struct i2c_settings_array i2c_gyro_data;
|
||||
struct i2c_settings_array i2c_time_data;
|
||||
enum msm_camera_device_type_t ois_device_type;
|
||||
enum cam_ois_state cam_ois_state;
|
||||
|
|
|
|||
|
|
@ -177,7 +177,8 @@ enum cam_ois_packet_opcodes {
|
|||
CAM_OIS_PACKET_OPCODE_WRITE_TIME,
|
||||
CAM_OIS_PACKET_OPCODE_ACTIVE_OIS_ROHM,
|
||||
CAM_OIS_PACKET_OPCODE_ACTIVE_OIS_DONGWOON,
|
||||
CAM_OIS_PACKET_OPCODE_ACTIVE_OIS_DONGWOON_QTIMER
|
||||
CAM_OIS_PACKET_OPCODE_ACTIVE_OIS_DONGWOON_QTIMER,
|
||||
CAM_OIS_PACKET_OPCODE_OIS_GYRO_OFFSET
|
||||
};
|
||||
|
||||
enum msm_bus_perf_setting {
|
||||
|
|
|
|||
Loading…
Reference in a new issue