media: rockchip: isp: fix first params config two times for readback mode

Change-Id: Ia6209e60fc75a039ca06d1aa0d5d64e4c9515b9e
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2021-11-19 10:02:32 +08:00
committed by Tao Huang
parent dde2f927c2
commit 8230e776cd
3 changed files with 9 additions and 7 deletions

View File

@@ -150,6 +150,7 @@ static void rkisp_params_vb2_buf_queue(struct vb2_buffer *vb)
vb2_buffer_done(&params_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
params_vdev->first_params = false;
wake_up(&params_vdev->dev->sync_onoff);
dev_info(params_vdev->dev->dev, "first params buf queue\n");
return;
}
@@ -210,6 +211,7 @@ rkisp_params_vb2_start_streaming(struct vb2_queue *queue, unsigned int count)
struct rkisp_isp_params_vdev *params_vdev = queue->drv_priv;
unsigned long flags;
params_vdev->is_first_cfg = true;
params_vdev->hdrtmo_en = false;
params_vdev->cur_buf = NULL;
spin_lock_irqsave(&params_vdev->config_lock, flags);
@@ -340,6 +342,9 @@ void rkisp_params_first_cfg(struct rkisp_isp_params_vdev *params_vdev,
struct ispsd_in_fmt *in_fmt,
enum v4l2_quantization quantization)
{
if (!params_vdev->is_first_cfg)
return;
params_vdev->is_first_cfg = false;
params_vdev->quantization = quantization;
params_vdev->raw_type = in_fmt->bayer_pat;
params_vdev->in_mbus_code = in_fmt->mbus_code;

View File

@@ -83,6 +83,7 @@ struct rkisp_isp_params_vdev {
struct sensor_exposure_cfg exposure;
bool is_subs_evt;
bool is_first_cfg;
};
static inline void

View File

@@ -555,11 +555,8 @@ void rkisp_trigger_read_back(struct rkisp_device *dev, u8 dma2frm, u32 mode, boo
}
dev->rd_mode = rd_mode;
/* configure hdr params in rdbk mode */
if (is_upd || cur_frame_id == 0)
rkisp_params_first_cfg(&dev->params_vdev,
&dev->isp_sdev.in_fmt,
dev->isp_sdev.quantization);
rkisp_params_first_cfg(&dev->params_vdev, &dev->isp_sdev.in_fmt,
dev->isp_sdev.quantization);
rkisp_params_cfg(params_vdev, cur_frame_id);
rkisp_config_cmsk(dev);
if (!hw->is_single && !is_try) {
@@ -685,8 +682,7 @@ static void rkisp_rdbk_trigger_handle(struct rkisp_device *dev, u32 cmd)
if (max) {
v4l2_dbg(2, rkisp_debug, &dev->v4l2_dev,
"handle isp%d, trigger fifo len:%d\n",
id, max);
"trigger fifo len:%d\n", max);
isp = hw->isp[id];
rkisp_rdbk_trigger_event(isp, T_CMD_DEQUEUE, &t);
isp->dmarx_dev.pre_frame = isp->dmarx_dev.cur_frame;