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

Commit c5247f62 authored by Ravikishore Pampana's avatar Ravikishore Pampana Committed by Gerrit - the friendly Code Review server
Browse files

msm: camera: isp: Register dump for first request id



First request id not getting dump if early pcr is on.
If early pcr is on need to store the parsed register dump descriptor
for first request id which comes as init packet.

CRs-Fixed: 2595702
Change-Id: Icbf94d65b5c35cdf47044d770c7db7093001d506
Signed-off-by: default avatarRavikishore Pampana <rpampana@codeaurora.org>
parent 205af5a1
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -424,6 +424,8 @@ static int __cam_isp_ctx_enqueue_init_request(
	struct cam_isp_ctx_req                *req_isp_old;
	struct cam_isp_ctx_req                *req_isp_new;
	struct cam_isp_prepare_hw_update_data *hw_update_data;
	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)) {
@@ -482,6 +484,17 @@ static int __cam_isp_ctx_enqueue_init_request(
			req_isp_old->hw_update_data.frame_header_cpu_addr =
				hw_update_data->frame_header_cpu_addr;

			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);
+16 −2
Original line number Diff line number Diff line
@@ -2928,6 +2928,7 @@ static int cam_ife_mgr_acquire_hw(void *hw_mgr_priv, void *acquire_hw_args)
	acquire_args->custom_enabled = ife_ctx->custom_enabled;
	acquire_args->use_frame_header_ts = ife_ctx->use_frame_header_ts;
	ife_ctx->ctx_in_use = 1;
	ife_ctx->num_reg_dump_buf = 0;

	acquire_args->valid_acquired_hw =
		acquire_hw_info->num_inputs;
@@ -3172,6 +3173,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",
@@ -4334,6 +4336,7 @@ static int cam_ife_mgr_release_hw(void *hw_mgr_priv,
	ctx->cdm_ops = NULL;
	ctx->custom_enabled = false;
	ctx->use_frame_header_ts = false;
	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;
@@ -5907,13 +5910,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;