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

Commit c4d768fa authored by Tejas Prajapati's avatar Tejas Prajapati
Browse files

msm: camera: ife: Program image addr for once in RDI batch mode



For RDI only batch mode use case the image address needs to
be programmed only once the consecutive image address is
taken from the frame increament address and image address
we have provided.

CRs-Fixed: 2948881
Change-Id: I94bce9522aaace00b567b023bba1cc3443d849ef
Signed-off-by: default avatarTejas Prajapati <tpraja@codeaurora.org>
parent f9f491b8
Loading
Loading
Loading
Loading
+23 −34
Original line number Diff line number Diff line
@@ -2954,9 +2954,8 @@ static int cam_vfe_bus_ver3_update_wm(void *priv, void *cmd_args,
	struct cam_vfe_bus_ver3_wm_resource_data *wm_data = NULL;
	struct cam_vfe_bus_ver3_reg_offset_ubwc_client *ubwc_client = NULL;
	uint32_t *reg_val_pair;
	uint32_t  i, j, k, size = 0;
	uint32_t  i, j, size = 0;
	uint32_t  frame_inc = 0, val;
	uint32_t loop_size = 0;

	bus_priv = (struct cam_vfe_bus_ver3_priv  *) priv;
	update_buf =  (struct cam_isp_hw_get_cmd_update *) cmd_args;
@@ -3086,40 +3085,30 @@ static int cam_vfe_bus_ver3_update_wm(void *priv, void *cmd_args,
				wm_data->index, reg_val_pair[j-1]);
		}

		if ((!bus_priv->common_data.is_lite && wm_data->index > 22) ||
			bus_priv->common_data.is_lite)
			loop_size = wm_data->irq_subsample_period + 1;
		else
			loop_size = 1;

		/* WM Image address */
		for (k = 0; k < loop_size; k++) {
		if (wm_data->en_ubwc) {
			CAM_VFE_ADD_REG_VAL_PAIR(reg_val_pair, j,
				wm_data->hw_regs->image_addr,
				update_buf->wm_update->image_buf[i] +
					io_cfg->planes[i].meta_size +
					k * frame_inc);
				io_cfg->planes[i].meta_size);
			update_buf->wm_update->image_buf_offset[i] =
				io_cfg->planes[i].meta_size;
		} else if (wm_data->en_cfg & (0x3 << 16)) {
			CAM_VFE_ADD_REG_VAL_PAIR(reg_val_pair, j,
				wm_data->hw_regs->image_addr,
				(update_buf->wm_update->image_buf[i] +
					wm_data->offset + k * frame_inc));
				wm_data->offset));
			update_buf->wm_update->image_buf_offset[i] =
				wm_data->offset;
		} else {
			CAM_VFE_ADD_REG_VAL_PAIR(reg_val_pair, j,
				wm_data->hw_regs->image_addr,
					(update_buf->wm_update->image_buf[i] +
					k * frame_inc));
				update_buf->wm_update->image_buf[i]);
			update_buf->wm_update->image_buf_offset[i] = 0;
		}

		CAM_DBG(CAM_ISP, "WM:%d image address 0x%X",
			wm_data->index, reg_val_pair[j-1]);
		}

		CAM_VFE_ADD_REG_VAL_PAIR(reg_val_pair, j,
			wm_data->hw_regs->frame_incr, frame_inc);