mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 00:00:00 -04:00
Merge "msm: camera: reqmgr: Mask re-apply for SHDR usecase" into camera-kernel.lnx.4.0
This commit is contained in:
commit
1be56029ed
2 changed files with 24 additions and 11 deletions
|
|
@ -3069,6 +3069,17 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
|
|||
struct cam_isp_context *ctx_isp = NULL;
|
||||
struct cam_hw_config_args cfg = {0};
|
||||
|
||||
ctx_isp = (struct cam_isp_context *) ctx->ctx_priv;
|
||||
|
||||
if (apply->re_apply)
|
||||
if (apply->request_id <= ctx_isp->last_applied_req_id) {
|
||||
CAM_INFO_RATE_LIMIT(CAM_ISP,
|
||||
"ctx_id:%d Trying to reapply the same request %llu again",
|
||||
ctx->ctx_id,
|
||||
apply->request_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (list_empty(&ctx->pending_req_list)) {
|
||||
CAM_ERR_RATE_LIMIT(CAM_ISP,
|
||||
"ctx_id:%d No available request for Apply id %lld",
|
||||
|
|
@ -3084,8 +3095,6 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
|
|||
* The maximum number of request allowed to be outstanding is 2.
|
||||
*
|
||||
*/
|
||||
ctx_isp = (struct cam_isp_context *) ctx->ctx_priv;
|
||||
|
||||
if (atomic_read(&ctx_isp->process_bubble)) {
|
||||
CAM_INFO_RATE_LIMIT(CAM_ISP,
|
||||
"ctx_id:%d Processing bubble cannot apply Request Id %llu",
|
||||
|
|
@ -3095,15 +3104,6 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
|
|||
goto end;
|
||||
}
|
||||
|
||||
if (apply->re_apply)
|
||||
if (apply->request_id <= ctx_isp->last_applied_req_id) {
|
||||
CAM_INFO_RATE_LIMIT(CAM_ISP,
|
||||
"ctx_id:%d Trying to reapply the same request %llu again",
|
||||
ctx->ctx_id,
|
||||
apply->request_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
spin_lock_bh(&ctx->lock);
|
||||
req = list_first_entry(&ctx->pending_req_list, struct cam_ctx_request,
|
||||
list);
|
||||
|
|
|
|||
|
|
@ -929,6 +929,19 @@ static int __cam_req_mgr_send_req(struct cam_req_mgr_core_link *link,
|
|||
apply_req.report_if_bubble =
|
||||
in_q->slot[idx].recover;
|
||||
|
||||
/*
|
||||
* If it is dual trigger usecase, need to tell
|
||||
* devices that the req is re-applied, then the
|
||||
* devices need to skip applying if the req has
|
||||
* been handled.
|
||||
* e.x. ISP device
|
||||
*/
|
||||
if (link->retry_cnt > 0) {
|
||||
if (!apply_req.report_if_bubble &&
|
||||
link->dual_trigger)
|
||||
apply_req.re_apply = true;
|
||||
}
|
||||
|
||||
if ((slot->ops.dev_hdl == dev->dev_hdl) &&
|
||||
(slot->ops.is_applied)) {
|
||||
slot->ops.is_applied = false;
|
||||
|
|
|
|||
Loading…
Reference in a new issue