msm: camera: reqmgr: reset the slot on buf_done
Reset the slot with the valid request on receiving the buf_done which is reported on next EPOCH. In case of back to back irqs slot is marked as skip idx it will apply the request and try to reset a slot based on MAX_PD + 1 calculation which might have the request for which we have got a bubble. To make sure this does not happen, reset a slot only on the buf_done for valid request. If STOP ioctl is called from UMD for ISP, it will flush all the lists. But this is not notified to CRM which might have a stale entry of the half applied request, so on STOP ioctl clear all the slots. In case of SAT mode if one of the link has generated bubble, while the sync_link has the sync_request slot reset sync_link will not let the link recover of the bubble. To make sure the recovery sync_mode is set to 0 for two consecutive slots of the link. CRs-Fixed: 2551701 Change-Id: If4b6f8a4a831ffddcef2cae6292d066778c18b04 Signed-off-by: Tejas Prajapati <tpraja@codeaurora.org>
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

parent
bf16c8a8e5
commit
96390653c5
@@ -150,6 +150,18 @@ struct cam_isp_context_state_monitor {
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cam_isp_context_req_id_info - ISP context request id
|
||||
* information for bufdone.
|
||||
*
|
||||
*@last_bufdone_req_id: Last bufdone request id
|
||||
*
|
||||
*/
|
||||
|
||||
struct cam_isp_context_req_id_info {
|
||||
int64_t last_bufdone_req_id;
|
||||
};
|
||||
/**
|
||||
*
|
||||
* struct cam_isp_context - ISP context object
|
||||
*
|
||||
* @base: Common context object pointer
|
||||
@@ -171,6 +183,7 @@ struct cam_isp_context_state_monitor {
|
||||
* will invoke CRM cb at those event.
|
||||
* @last_applied_req_id: Last applied request id
|
||||
* @state_monitor_head: Write index to the state monitoring array
|
||||
* @req_info Request id information about last buf done
|
||||
* @cam_isp_ctx_state_monitor: State monitoring array
|
||||
* @rdi_only_context: Get context type information.
|
||||
* true, if context is rdi only context
|
||||
@@ -204,6 +217,7 @@ struct cam_isp_context {
|
||||
atomic64_t state_monitor_head;
|
||||
struct cam_isp_context_state_monitor cam_isp_ctx_state_monitor[
|
||||
CAM_ISP_CTX_STATE_MONITOR_MAX_ENTRIES];
|
||||
struct cam_isp_context_req_id_info req_info;
|
||||
bool rdi_only_context;
|
||||
bool hw_acquired;
|
||||
bool init_received;
|
||||
|
Reference in New Issue
Block a user