mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
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:
@@ -150,6 +150,7 @@ static void rkisp_params_vb2_buf_queue(struct vb2_buffer *vb)
|
||||
vb2_buffer_done(¶ms_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
|
||||
params_vdev->first_params = false;
|
||||
wake_up(¶ms_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(¶ms_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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user