Loading drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_core.c +8 −3 Original line number Original line Diff line number Diff line Loading @@ -351,7 +351,8 @@ static void __cam_req_mgr_reset_req_slot(struct cam_req_mgr_core_link *link, CAM_DBG(CAM_CRM, "RESET: idx: %d: slot->status %d", idx, slot->status); CAM_DBG(CAM_CRM, "RESET: idx: %d: slot->status %d", idx, slot->status); /* Check if CSL has already pushed new request*/ /* Check if CSL has already pushed new request*/ if (slot->status == CRM_SLOT_STATUS_REQ_ADDED) if (slot->status == CRM_SLOT_STATUS_REQ_ADDED || in_q->last_applied_idx == idx) return; return; /* Reset input queue slot */ /* Reset input queue slot */ Loading Loading @@ -512,9 +513,11 @@ static int __cam_req_mgr_send_req(struct cam_req_mgr_core_link *link, } } if (link->req.apply_data[pd].skip_idx || if (link->req.apply_data[pd].skip_idx || link->req.apply_data[pd].req_id < 0) { link->req.apply_data[pd].req_id < 0) { CAM_DBG(CAM_CRM, "skip %d req_id %lld", CAM_DBG(CAM_CRM, "skip %d req_id %lld pd %d dev_name %s", link->req.apply_data[pd].skip_idx, link->req.apply_data[pd].skip_idx, link->req.apply_data[pd].req_id); link->req.apply_data[pd].req_id, pd, dev->dev_info.name); continue; continue; } } if (!(dev->dev_info.trigger & trigger)) if (!(dev->dev_info.trigger & trigger)) Loading Loading @@ -1129,6 +1132,8 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link, slot->req_id, slot->req_id, link->link_hdl); link->link_hdl); idx = in_q->rd_idx; idx = in_q->rd_idx; if (slot->req_id > 0) in_q->last_applied_idx = idx; reset_step = link->max_delay; reset_step = link->max_delay; if (link->sync_link) { if (link->sync_link) { if ((link->in_msync_mode) && if ((link->in_msync_mode) && Loading drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_core.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -233,12 +233,14 @@ struct cam_req_mgr_slot { * @slot : request slot holding incoming request id and bubble info. * @slot : request slot holding incoming request id and bubble info. * @rd_idx : indicates slot index currently in process. * @rd_idx : indicates slot index currently in process. * @wr_idx : indicates slot index to hold new upcoming req. * @wr_idx : indicates slot index to hold new upcoming req. * @last_applied_idx : indicates slot index last applied successfully. */ */ struct cam_req_mgr_req_queue { struct cam_req_mgr_req_queue { int32_t num_slots; int32_t num_slots; struct cam_req_mgr_slot slot[MAX_REQ_SLOTS]; struct cam_req_mgr_slot slot[MAX_REQ_SLOTS]; int32_t rd_idx; int32_t rd_idx; int32_t wr_idx; int32_t wr_idx; int32_t last_applied_idx; }; }; /** /** Loading Loading
drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_core.c +8 −3 Original line number Original line Diff line number Diff line Loading @@ -351,7 +351,8 @@ static void __cam_req_mgr_reset_req_slot(struct cam_req_mgr_core_link *link, CAM_DBG(CAM_CRM, "RESET: idx: %d: slot->status %d", idx, slot->status); CAM_DBG(CAM_CRM, "RESET: idx: %d: slot->status %d", idx, slot->status); /* Check if CSL has already pushed new request*/ /* Check if CSL has already pushed new request*/ if (slot->status == CRM_SLOT_STATUS_REQ_ADDED) if (slot->status == CRM_SLOT_STATUS_REQ_ADDED || in_q->last_applied_idx == idx) return; return; /* Reset input queue slot */ /* Reset input queue slot */ Loading Loading @@ -512,9 +513,11 @@ static int __cam_req_mgr_send_req(struct cam_req_mgr_core_link *link, } } if (link->req.apply_data[pd].skip_idx || if (link->req.apply_data[pd].skip_idx || link->req.apply_data[pd].req_id < 0) { link->req.apply_data[pd].req_id < 0) { CAM_DBG(CAM_CRM, "skip %d req_id %lld", CAM_DBG(CAM_CRM, "skip %d req_id %lld pd %d dev_name %s", link->req.apply_data[pd].skip_idx, link->req.apply_data[pd].skip_idx, link->req.apply_data[pd].req_id); link->req.apply_data[pd].req_id, pd, dev->dev_info.name); continue; continue; } } if (!(dev->dev_info.trigger & trigger)) if (!(dev->dev_info.trigger & trigger)) Loading Loading @@ -1129,6 +1132,8 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link, slot->req_id, slot->req_id, link->link_hdl); link->link_hdl); idx = in_q->rd_idx; idx = in_q->rd_idx; if (slot->req_id > 0) in_q->last_applied_idx = idx; reset_step = link->max_delay; reset_step = link->max_delay; if (link->sync_link) { if (link->sync_link) { if ((link->in_msync_mode) && if ((link->in_msync_mode) && Loading
drivers/media/platform/msm/camera/cam_req_mgr/cam_req_mgr_core.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -233,12 +233,14 @@ struct cam_req_mgr_slot { * @slot : request slot holding incoming request id and bubble info. * @slot : request slot holding incoming request id and bubble info. * @rd_idx : indicates slot index currently in process. * @rd_idx : indicates slot index currently in process. * @wr_idx : indicates slot index to hold new upcoming req. * @wr_idx : indicates slot index to hold new upcoming req. * @last_applied_idx : indicates slot index last applied successfully. */ */ struct cam_req_mgr_req_queue { struct cam_req_mgr_req_queue { int32_t num_slots; int32_t num_slots; struct cam_req_mgr_slot slot[MAX_REQ_SLOTS]; struct cam_req_mgr_slot slot[MAX_REQ_SLOTS]; int32_t rd_idx; int32_t rd_idx; int32_t wr_idx; int32_t wr_idx; int32_t last_applied_idx; }; }; /** /** Loading