Переглянути джерело

msm: camera: reqmgr: Fix frame drop issue

When the req id of a slot is -1, we don't update the
last applied idx for this slot, if a bubble issue is
reported on previous slot, then we won't reset its
status to ADDED, then we will force reset it during
moving to new slot, then this slot will be reset, its
status will be NO_REQ after reset, then wr idx will be
increased even though the wr idx isn't equal to rd idx.
This change updates the wr idx only when wr idx is equal
to rd idx, and always update last applied idx.

CRs-Fixed: 3157732
Change-Id: I9e6cae019f93c7c12e81708a84e1ac28bf64bbc8
Signed-off-by: Depeng Shao <[email protected]>
Depeng Shao 3 роки тому
батько
коміт
92f47b510a
1 змінених файлів з 3 додано та 3 видалено
  1. 3 3
      drivers/cam_req_mgr/cam_req_mgr_core.c

+ 3 - 3
drivers/cam_req_mgr/cam_req_mgr_core.c

@@ -842,7 +842,8 @@ static int __cam_req_mgr_check_next_req_slot(
 		if (in_q->wr_idx != idx)
 		if (in_q->wr_idx != idx)
 			CAM_WARN(CAM_CRM,
 			CAM_WARN(CAM_CRM,
 				"CHECK here wr %d, rd %d", in_q->wr_idx, idx);
 				"CHECK here wr %d, rd %d", in_q->wr_idx, idx);
-		__cam_req_mgr_inc_idx(&in_q->wr_idx, 1, in_q->num_slots);
+		else
+			__cam_req_mgr_inc_idx(&in_q->wr_idx, 1, in_q->num_slots);
 	}
 	}
 
 
 	return rc;
 	return rc;
@@ -2032,8 +2033,7 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link,
 				}
 				}
 			}
 			}
 
 
-			if (slot->req_id > 0)
-				in_q->last_applied_idx = idx;
+			in_q->last_applied_idx = idx;
 
 
 			__cam_req_mgr_dec_idx(
 			__cam_req_mgr_dec_idx(
 				&idx, reset_step + 1,
 				&idx, reset_step + 1,