Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0b798d0f authored by Depeng Shao's avatar Depeng Shao
Browse files

msm: camera: reqmgr: Reset the status for next req if bubble



If req#N in slot idx, and this req meets bubble issue,
then the req#(N+1) in slot (idx+1) may also be applied,
and its status is APPLIED. If req#(N+1) applies failed
after finishing bubble recovery due to some reasons,
but we still can move to next slot since the status of
slot (idx+1) is already APPLIED. This change resets
the status of slot (idx+1) to ADDED if it is APPLIED
during processing error.

CRs-Fixed: 2902809
Change-Id: I32f318569ad8f24fdf0f324603f4ea0036867e98
Signed-off-by: default avatarDepeng Shao <depengs@codeaurora.org>
parent 3649ffdc
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2747,6 +2747,14 @@ int cam_req_mgr_process_error(void *priv, void *data)
			in_q->rd_idx = idx;
			in_q->slot[idx].status = CRM_SLOT_STATUS_REQ_ADDED;

			/* The next req may also be applied */
			idx = in_q->rd_idx;
			__cam_req_mgr_inc_idx(&idx, 1,
				link->req.l_tbl->num_slots);

			if (in_q->slot[idx].status == CRM_SLOT_STATUS_REQ_APPLIED)
				in_q->slot[idx].status = CRM_SLOT_STATUS_REQ_ADDED;

			spin_lock_bh(&link->link_state_spin_lock);
			link->state = CAM_CRM_LINK_STATE_ERR;
			spin_unlock_bh(&link->link_state_spin_lock);