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: Tejas Prajapati <tpraja@codeaurora.org>
This commit is contained in:
Tejas Prajapati 2021-04-27 16:39:24 +05:30
commit c4d768fad0

View file

@ -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,41 +3085,31 @@ 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);
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));
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_offset[i] = 0;
}
CAM_DBG(CAM_ISP, "WM:%d image address 0x%X",
wm_data->index, reg_val_pair[j-1]);
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);
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));
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]);
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);
CAM_DBG(CAM_ISP, "WM:%d frame_inc %d",