Loading drivers/media/platform/msm/camera/cam_sensor_module/cam_actuator/cam_actuator_core.c +42 −16 Original line number Diff line number Diff line Loading @@ -269,7 +269,10 @@ int32_t cam_actuator_apply_settings(struct cam_actuator_ctrl_t *a_ctrl, CAM_ERR(CAM_ACTUATOR, "Failed to apply settings: %d", rc); return rc; } else { CAM_DBG(CAM_ACTUATOR, "Success:request ID: %d", i2c_set->request_id); } } Loading Loading @@ -359,6 +362,28 @@ int32_t cam_actuator_establish_link( return 0; } static void cam_actuator_update_req_mgr( struct cam_actuator_ctrl_t *a_ctrl, struct cam_packet *csl_packet) { struct cam_req_mgr_add_request add_req; add_req.link_hdl = a_ctrl->bridge_intf.link_hdl; add_req.req_id = csl_packet->header.request_id; add_req.dev_hdl = a_ctrl->bridge_intf.device_hdl; add_req.skip_before_applying = 0; if (a_ctrl->bridge_intf.crm_cb && a_ctrl->bridge_intf.crm_cb->add_req) { a_ctrl->bridge_intf.crm_cb->add_req(&add_req); CAM_DBG(CAM_ACTUATOR, "Request Id: %lld added to CRM", add_req.req_id); } else { CAM_ERR(CAM_ACTUATOR, "Can't add Request ID: %lld to CRM", csl_packet->header.request_id); } } int32_t cam_actuator_publish_dev_info(struct cam_req_mgr_device_info *info) { if (!info) { Loading @@ -368,7 +393,7 @@ int32_t cam_actuator_publish_dev_info(struct cam_req_mgr_device_info *info) info->dev_id = CAM_REQ_MGR_DEVICE_ACTUATOR; strlcpy(info->name, CAM_ACTUATOR_NAME, sizeof(info->name)); info->p_delay = 0; info->p_delay = 1; info->trigger = CAM_TRIGGER_POINT_SOF; return 0; Loading @@ -391,7 +416,6 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, struct i2c_data_settings *i2c_data = NULL; struct i2c_settings_array *i2c_reg_settings = NULL; struct cam_cmd_buf_desc *cmd_desc = NULL; struct cam_req_mgr_add_request add_req; struct cam_actuator_soc_private *soc_private = NULL; struct cam_sensor_power_ctrl_t *power_info = NULL; Loading Loading @@ -555,6 +579,7 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, "Auto move lens parsing failed: %d", rc); return rc; } cam_actuator_update_req_mgr(a_ctrl, csl_packet); break; case CAM_ACTUATOR_PACKET_MANUAL_MOVE_LENS: if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) { Loading @@ -564,11 +589,13 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, a_ctrl->cam_act_state); return rc; } a_ctrl->setting_apply_state = ACT_APPLY_SETTINGS_LATER; i2c_data = &(a_ctrl->i2c_data); i2c_reg_settings = &i2c_data->per_frame[ csl_packet->header.request_id % MAX_PER_FRAME_ARRAY]; i2c_data->init_settings.request_id = i2c_reg_settings->request_id = csl_packet->header.request_id; i2c_reg_settings->is_settings_valid = 1; offset = (uint32_t *)&csl_packet->payload; Loading @@ -583,20 +610,19 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, "Manual move lens parsing failed: %d", rc); return rc; } cam_actuator_update_req_mgr(a_ctrl, csl_packet); break; case CAM_PKT_NOP_OPCODE: if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) { CAM_WARN(CAM_ACTUATOR, "Received NOP packets in invalid state: %d", a_ctrl->cam_act_state); return -EINVAL; } if ((csl_packet->header.op_code & 0xFFFFFF) != CAM_ACTUATOR_PACKET_OPCODE_INIT) { add_req.link_hdl = a_ctrl->bridge_intf.link_hdl; add_req.req_id = csl_packet->header.request_id; add_req.dev_hdl = a_ctrl->bridge_intf.device_hdl; add_req.skip_before_applying = 0; if (a_ctrl->bridge_intf.crm_cb && a_ctrl->bridge_intf.crm_cb->add_req) a_ctrl->bridge_intf.crm_cb->add_req(&add_req); CAM_DBG(CAM_ACTUATOR, "Req Id: %lld added to Bridge", add_req.req_id); cam_actuator_update_req_mgr(a_ctrl, csl_packet); break; } return rc; Loading Loading
drivers/media/platform/msm/camera/cam_sensor_module/cam_actuator/cam_actuator_core.c +42 −16 Original line number Diff line number Diff line Loading @@ -269,7 +269,10 @@ int32_t cam_actuator_apply_settings(struct cam_actuator_ctrl_t *a_ctrl, CAM_ERR(CAM_ACTUATOR, "Failed to apply settings: %d", rc); return rc; } else { CAM_DBG(CAM_ACTUATOR, "Success:request ID: %d", i2c_set->request_id); } } Loading Loading @@ -359,6 +362,28 @@ int32_t cam_actuator_establish_link( return 0; } static void cam_actuator_update_req_mgr( struct cam_actuator_ctrl_t *a_ctrl, struct cam_packet *csl_packet) { struct cam_req_mgr_add_request add_req; add_req.link_hdl = a_ctrl->bridge_intf.link_hdl; add_req.req_id = csl_packet->header.request_id; add_req.dev_hdl = a_ctrl->bridge_intf.device_hdl; add_req.skip_before_applying = 0; if (a_ctrl->bridge_intf.crm_cb && a_ctrl->bridge_intf.crm_cb->add_req) { a_ctrl->bridge_intf.crm_cb->add_req(&add_req); CAM_DBG(CAM_ACTUATOR, "Request Id: %lld added to CRM", add_req.req_id); } else { CAM_ERR(CAM_ACTUATOR, "Can't add Request ID: %lld to CRM", csl_packet->header.request_id); } } int32_t cam_actuator_publish_dev_info(struct cam_req_mgr_device_info *info) { if (!info) { Loading @@ -368,7 +393,7 @@ int32_t cam_actuator_publish_dev_info(struct cam_req_mgr_device_info *info) info->dev_id = CAM_REQ_MGR_DEVICE_ACTUATOR; strlcpy(info->name, CAM_ACTUATOR_NAME, sizeof(info->name)); info->p_delay = 0; info->p_delay = 1; info->trigger = CAM_TRIGGER_POINT_SOF; return 0; Loading @@ -391,7 +416,6 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, struct i2c_data_settings *i2c_data = NULL; struct i2c_settings_array *i2c_reg_settings = NULL; struct cam_cmd_buf_desc *cmd_desc = NULL; struct cam_req_mgr_add_request add_req; struct cam_actuator_soc_private *soc_private = NULL; struct cam_sensor_power_ctrl_t *power_info = NULL; Loading Loading @@ -555,6 +579,7 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, "Auto move lens parsing failed: %d", rc); return rc; } cam_actuator_update_req_mgr(a_ctrl, csl_packet); break; case CAM_ACTUATOR_PACKET_MANUAL_MOVE_LENS: if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) { Loading @@ -564,11 +589,13 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, a_ctrl->cam_act_state); return rc; } a_ctrl->setting_apply_state = ACT_APPLY_SETTINGS_LATER; i2c_data = &(a_ctrl->i2c_data); i2c_reg_settings = &i2c_data->per_frame[ csl_packet->header.request_id % MAX_PER_FRAME_ARRAY]; i2c_data->init_settings.request_id = i2c_reg_settings->request_id = csl_packet->header.request_id; i2c_reg_settings->is_settings_valid = 1; offset = (uint32_t *)&csl_packet->payload; Loading @@ -583,20 +610,19 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl, "Manual move lens parsing failed: %d", rc); return rc; } cam_actuator_update_req_mgr(a_ctrl, csl_packet); break; case CAM_PKT_NOP_OPCODE: if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) { CAM_WARN(CAM_ACTUATOR, "Received NOP packets in invalid state: %d", a_ctrl->cam_act_state); return -EINVAL; } if ((csl_packet->header.op_code & 0xFFFFFF) != CAM_ACTUATOR_PACKET_OPCODE_INIT) { add_req.link_hdl = a_ctrl->bridge_intf.link_hdl; add_req.req_id = csl_packet->header.request_id; add_req.dev_hdl = a_ctrl->bridge_intf.device_hdl; add_req.skip_before_applying = 0; if (a_ctrl->bridge_intf.crm_cb && a_ctrl->bridge_intf.crm_cb->add_req) a_ctrl->bridge_intf.crm_cb->add_req(&add_req); CAM_DBG(CAM_ACTUATOR, "Req Id: %lld added to Bridge", add_req.req_id); cam_actuator_update_req_mgr(a_ctrl, csl_packet); break; } return rc; Loading