Merge "msm: camera: isp: Add handling for flush in flushed state" into camera-kernel.lnx.4.0

This commit is contained in:
Camera Software Integration 2021-10-11 11:34:30 -07:00 committed by Gerrit - the friendly Code Review server
commit 981b2405f2

View File

@ -3541,6 +3541,19 @@ hw_dump:
return rc; return rc;
} }
static int __cam_isp_ctx_flush_req_in_flushed_state(
struct cam_context *ctx,
struct cam_req_mgr_flush_request *flush_req)
{
if (flush_req->type == CAM_REQ_MGR_FLUSH_TYPE_ALL) {
CAM_INFO(CAM_ISP, "Flush in flushed state req id %lld ctx_id:%d",
flush_req->req_id, ctx->ctx_id);
ctx->last_flush_req = flush_req->req_id;
}
return 0;
}
static int __cam_isp_ctx_flush_req(struct cam_context *ctx, static int __cam_isp_ctx_flush_req(struct cam_context *ctx,
struct list_head *req_list, struct cam_req_mgr_flush_request *flush_req) struct list_head *req_list, struct cam_req_mgr_flush_request *flush_req)
{ {
@ -4637,6 +4650,14 @@ static int __cam_isp_ctx_config_dev_in_top_state(
packet->header.request_id); packet->header.request_id);
rc = -EBADR; rc = -EBADR;
goto free_req; goto free_req;
} else if ((packet_opcode == CAM_ISP_PACKET_INIT_DEV)
&& (packet->header.request_id <= ctx->last_flush_req)
&& ctx->last_flush_req && packet->header.request_id) {
CAM_WARN(CAM_ISP,
"last flushed req is %lld, config dev(init) for req %lld",
ctx->last_flush_req, packet->header.request_id);
rc = -EBADR;
goto free_req;
} }
cfg.packet = packet; cfg.packet = packet;
@ -5927,6 +5948,7 @@ static struct cam_ctx_ops
.crm_ops = { .crm_ops = {
.unlink = __cam_isp_ctx_unlink_in_ready, .unlink = __cam_isp_ctx_unlink_in_ready,
.process_evt = __cam_isp_ctx_process_evt, .process_evt = __cam_isp_ctx_process_evt,
.flush_req = __cam_isp_ctx_flush_req_in_flushed_state,
}, },
.irq_ops = NULL, .irq_ops = NULL,
.pagefault_ops = cam_isp_context_dump_requests, .pagefault_ops = cam_isp_context_dump_requests,