Loading drivers/media/platform/msm/camera/cam_isp/cam_isp_context.c +1 −0 Original line number Diff line number Diff line Loading @@ -935,6 +935,7 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( notify.dev_hdl = ctx->dev_hdl; notify.frame_id = ctx_isp->frame_id; notify.trigger = CAM_TRIGGER_POINT_SOF; notify.req_id = ctx_isp->req_info.last_bufdone_req_id; notify.sof_timestamp_val = ctx_isp->sof_timestamp_val; ctx->ctx_crm_intf->notify_trigger(¬ify); Loading drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_core.c +21 −5 Original line number Diff line number Diff line Loading @@ -356,7 +356,8 @@ static void __cam_req_mgr_reset_req_slot(struct cam_req_mgr_core_link *link, /* Check if CSL has already pushed new request*/ if (slot->status == CRM_SLOT_STATUS_REQ_ADDED || in_q->last_applied_idx == idx) in_q->last_applied_idx == idx || idx < 0) return; /* Reset input queue slot */ Loading Loading @@ -1311,10 +1312,6 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link, if (slot->req_id > 0) { last_app_idx = in_q->last_applied_idx; in_q->last_applied_idx = idx; if (abs(last_app_idx - idx) >= reset_step + 1) __cam_req_mgr_reset_req_slot(link, last_app_idx); } __cam_req_mgr_dec_idx( Loading Loading @@ -2203,6 +2200,12 @@ int cam_req_mgr_process_error(void *priv, void *data) __cam_req_mgr_tbl_set_all_skip_cnt(&link->req.l_tbl); in_q->rd_idx = idx; in_q->slot[idx].status = CRM_SLOT_STATUS_REQ_ADDED; if (link->sync_link) { in_q->slot[idx].sync_mode = 0; __cam_req_mgr_inc_idx(&idx, 1, link->req.l_tbl->num_slots); in_q->slot[idx].sync_mode = 0; } spin_lock_bh(&link->link_state_spin_lock); link->state = CAM_CRM_LINK_STATE_ERR; spin_unlock_bh(&link->link_state_spin_lock); Loading @@ -2227,6 +2230,7 @@ int cam_req_mgr_process_error(void *priv, void *data) static int cam_req_mgr_process_trigger(void *priv, void *data) { int rc = 0; int32_t idx = -1; struct cam_req_mgr_trigger_notify *trigger_data = NULL; struct cam_req_mgr_core_link *link = NULL; struct cam_req_mgr_req_queue *in_q = NULL; Loading @@ -2249,6 +2253,17 @@ static int cam_req_mgr_process_trigger(void *priv, void *data) in_q = link->req.in_q; mutex_lock(&link->req.lock); if (trigger_data->trigger == CAM_TRIGGER_POINT_SOF) { idx = __cam_req_mgr_find_slot_for_req(in_q, trigger_data->req_id); if (idx >= 0) { if (idx == in_q->last_applied_idx) in_q->last_applied_idx = -1; __cam_req_mgr_reset_req_slot(link, idx); } } /* * Check if current read index is in applied state, if yes make it free * and increment read index to next slot. Loading Loading @@ -2515,6 +2530,7 @@ static int cam_req_mgr_cb_notify_trigger( notify_trigger->link_hdl = trigger_data->link_hdl; notify_trigger->dev_hdl = trigger_data->dev_hdl; notify_trigger->trigger = trigger_data->trigger; notify_trigger->req_id = trigger_data->req_id; notify_trigger->sof_timestamp_val = trigger_data->sof_timestamp_val; task->process_cb = &cam_req_mgr_process_trigger; rc = cam_req_mgr_workq_enqueue_task(task, link, CRM_TASK_PRIORITY_0); Loading drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_interface.h +2 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ enum cam_req_mgr_link_evt_type { * @trigger : trigger point of this notification, CRM will send apply * only to the devices which subscribe to this point. * @sof_timestamp_val: Captured time stamp value at sof hw event * @req_id : req id which returned buf_done */ struct cam_req_mgr_trigger_notify { int32_t link_hdl; Loading @@ -214,6 +215,7 @@ struct cam_req_mgr_trigger_notify { int64_t frame_id; uint32_t trigger; uint64_t sof_timestamp_val; uint64_t req_id; }; /** Loading Loading
drivers/media/platform/msm/camera/cam_isp/cam_isp_context.c +1 −0 Original line number Diff line number Diff line Loading @@ -935,6 +935,7 @@ static int __cam_isp_ctx_notify_sof_in_activated_state( notify.dev_hdl = ctx->dev_hdl; notify.frame_id = ctx_isp->frame_id; notify.trigger = CAM_TRIGGER_POINT_SOF; notify.req_id = ctx_isp->req_info.last_bufdone_req_id; notify.sof_timestamp_val = ctx_isp->sof_timestamp_val; ctx->ctx_crm_intf->notify_trigger(¬ify); Loading
drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_core.c +21 −5 Original line number Diff line number Diff line Loading @@ -356,7 +356,8 @@ static void __cam_req_mgr_reset_req_slot(struct cam_req_mgr_core_link *link, /* Check if CSL has already pushed new request*/ if (slot->status == CRM_SLOT_STATUS_REQ_ADDED || in_q->last_applied_idx == idx) in_q->last_applied_idx == idx || idx < 0) return; /* Reset input queue slot */ Loading Loading @@ -1311,10 +1312,6 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link, if (slot->req_id > 0) { last_app_idx = in_q->last_applied_idx; in_q->last_applied_idx = idx; if (abs(last_app_idx - idx) >= reset_step + 1) __cam_req_mgr_reset_req_slot(link, last_app_idx); } __cam_req_mgr_dec_idx( Loading Loading @@ -2203,6 +2200,12 @@ int cam_req_mgr_process_error(void *priv, void *data) __cam_req_mgr_tbl_set_all_skip_cnt(&link->req.l_tbl); in_q->rd_idx = idx; in_q->slot[idx].status = CRM_SLOT_STATUS_REQ_ADDED; if (link->sync_link) { in_q->slot[idx].sync_mode = 0; __cam_req_mgr_inc_idx(&idx, 1, link->req.l_tbl->num_slots); in_q->slot[idx].sync_mode = 0; } spin_lock_bh(&link->link_state_spin_lock); link->state = CAM_CRM_LINK_STATE_ERR; spin_unlock_bh(&link->link_state_spin_lock); Loading @@ -2227,6 +2230,7 @@ int cam_req_mgr_process_error(void *priv, void *data) static int cam_req_mgr_process_trigger(void *priv, void *data) { int rc = 0; int32_t idx = -1; struct cam_req_mgr_trigger_notify *trigger_data = NULL; struct cam_req_mgr_core_link *link = NULL; struct cam_req_mgr_req_queue *in_q = NULL; Loading @@ -2249,6 +2253,17 @@ static int cam_req_mgr_process_trigger(void *priv, void *data) in_q = link->req.in_q; mutex_lock(&link->req.lock); if (trigger_data->trigger == CAM_TRIGGER_POINT_SOF) { idx = __cam_req_mgr_find_slot_for_req(in_q, trigger_data->req_id); if (idx >= 0) { if (idx == in_q->last_applied_idx) in_q->last_applied_idx = -1; __cam_req_mgr_reset_req_slot(link, idx); } } /* * Check if current read index is in applied state, if yes make it free * and increment read index to next slot. Loading Loading @@ -2515,6 +2530,7 @@ static int cam_req_mgr_cb_notify_trigger( notify_trigger->link_hdl = trigger_data->link_hdl; notify_trigger->dev_hdl = trigger_data->dev_hdl; notify_trigger->trigger = trigger_data->trigger; notify_trigger->req_id = trigger_data->req_id; notify_trigger->sof_timestamp_val = trigger_data->sof_timestamp_val; task->process_cb = &cam_req_mgr_process_trigger; rc = cam_req_mgr_workq_enqueue_task(task, link, CRM_TASK_PRIORITY_0); Loading
drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_interface.h +2 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ enum cam_req_mgr_link_evt_type { * @trigger : trigger point of this notification, CRM will send apply * only to the devices which subscribe to this point. * @sof_timestamp_val: Captured time stamp value at sof hw event * @req_id : req id which returned buf_done */ struct cam_req_mgr_trigger_notify { int32_t link_hdl; Loading @@ -214,6 +215,7 @@ struct cam_req_mgr_trigger_notify { int64_t frame_id; uint32_t trigger; uint64_t sof_timestamp_val; uint64_t req_id; }; /** Loading