Merge "msm: camera: isp: Register dump for first request id" into camera-kernel.lnx.4.0

This commit is contained in:
Camera Software Integration 2020-02-07 15:13:41 -08:00 • committed by Gerrit - the friendly Code Review server
commit d5fa77dbdd
2 changed files with 32 additions and 5 deletions

View file

@ -248,9 +248,11 @@ static int __cam_isp_ctx_enqueue_init_request(
struct cam_context *ctx, struct cam_ctx_request *req)
{
int rc = 0;
struct cam_ctx_request *req_old;
struct cam_isp_ctx_req *req_isp_old;
struct cam_isp_ctx_req *req_isp_new;
struct cam_ctx_request *req_old;
struct cam_isp_ctx_req *req_isp_old;
struct cam_isp_ctx_req *req_isp_new;
struct cam_isp_prepare_hw_update_data *req_update_old;
struct cam_isp_prepare_hw_update_data *req_update_new;
spin_lock_bh(&ctx->lock);
if (list_empty(&ctx->pending_req_list)) {
@ -302,6 +304,17 @@ static int __cam_isp_ctx_enqueue_init_request(
memcpy(&req_old->pf_data, &req->pf_data,
sizeof(struct cam_hw_mgr_dump_pf_data));
if (req_isp_new->hw_update_data.num_reg_dump_buf) {
req_update_new = &req_isp_new->hw_update_data;
req_update_old = &req_isp_old->hw_update_data;
memcpy(&req_update_old->reg_dump_buf_desc,
&req_update_new->reg_dump_buf_desc,
sizeof(struct cam_cmd_buf_desc) *
req_update_new->num_reg_dump_buf);
req_update_old->num_reg_dump_buf =
req_update_new->num_reg_dump_buf;
}
req_old->request_id = req->request_id;
list_add_tail(&req->list, &ctx->free_req_list);

View file

@ -2778,6 +2778,7 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
acquire_args->ctxt_to_hw_map = ife_ctx;
ife_ctx->ctx_in_use = 1;
ife_ctx->num_reg_dump_buf = 0;
acquire_args->valid_acquired_hw =
acquire_hw_info->num_inputs;
@ -3021,6 +3022,7 @@ static int cam_ife_mgr_acquire_dev(void *hw_mgr_priv, void *acquire_hw_args)
acquire_args->ctxt_to_hw_map = ife_ctx;
ife_ctx->ctx_in_use = 1;
ife_ctx->num_reg_dump_buf = 0;
CAM_INFO(CAM_ISP,
"Acquire HW success with total_pix: %u total_rdi: %u is_dual: %u in ctx: %u",
@ -4185,6 +4187,7 @@ static int cam_ife_mgr_release_hw(void *hw_mgr_priv,
ctx->is_rdi_only_context = 0;
ctx->cdm_handle = 0;
ctx->cdm_ops = NULL;
ctx->num_reg_dump_buf = 0;
atomic_set(&ctx->overflow_pending, 0);
for (i = 0; i < CAM_IFE_HW_NUM_MAX; i++) {
ctx->sof_cnt[i] = 0;
@ -5655,13 +5658,24 @@ static int cam_ife_mgr_prepare_hw_update(void *hw_mgr_priv,
if (((prepare->packet->header.op_code + 1) & 0xF) ==
CAM_ISP_PACKET_INIT_DEV) {
prepare_hw_data->packet_opcode_type = CAM_ISP_PACKET_INIT_DEV;
if ((prepare->num_reg_dump_buf) && (prepare->num_reg_dump_buf <
CAM_REG_DUMP_MAX_BUF_ENTRIES)) {
if ((!prepare->num_reg_dump_buf) || (prepare->num_reg_dump_buf >
CAM_REG_DUMP_MAX_BUF_ENTRIES))
goto end;
if (!ctx->num_reg_dump_buf) {
ctx->num_reg_dump_buf = prepare->num_reg_dump_buf;
memcpy(ctx->reg_dump_buf_desc,
prepare->reg_dump_buf_desc,
sizeof(struct cam_cmd_buf_desc) *
prepare->num_reg_dump_buf);
} else {
prepare_hw_data->num_reg_dump_buf =
prepare->num_reg_dump_buf;
memcpy(prepare_hw_data->reg_dump_buf_desc,
prepare->reg_dump_buf_desc,
sizeof(struct cam_cmd_buf_desc) *
prepare_hw_data->num_reg_dump_buf);
}
goto end;