From 97ffe01bcdad07bce5561ffbe153388b376094c7 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Sat, 26 Mar 2022 16:54:55 +0800 Subject: [PATCH] media: rockchip: isp: isp32 fix frame id to dvbm Change-Id: Ied1cc94a147832b9c4ccd73cb544bc5083529a9d Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/csi.c | 1 - drivers/media/platform/rockchip/isp/dev.h | 1 - drivers/media/platform/rockchip/isp/dmarx.c | 2 +- drivers/media/platform/rockchip/isp/rkisp.c | 15 +++++---------- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/media/platform/rockchip/isp/csi.c b/drivers/media/platform/rockchip/isp/csi.c index db22a1c20d88..8cc82369189d 100644 --- a/drivers/media/platform/rockchip/isp/csi.c +++ b/drivers/media/platform/rockchip/isp/csi.c @@ -654,7 +654,6 @@ int rkisp_csi_config_patch(struct rkisp_device *dev) rkisp_unite_set_bits(dev, CTRL_SWS_CFG, 0, ISP3X_SW_ACK_FRM_PRO_DIS, true, dev->hw_dev->is_unite); - memset(dev->filt_state, 0, sizeof(dev->filt_state)); dev->rdbk_cnt = -1; dev->rdbk_cnt_x1 = -1; dev->rdbk_cnt_x2 = -1; diff --git a/drivers/media/platform/rockchip/isp/dev.h b/drivers/media/platform/rockchip/isp/dev.h index 8f9fb64317dc..eb5455501bb4 100644 --- a/drivers/media/platform/rockchip/isp/dev.h +++ b/drivers/media/platform/rockchip/isp/dev.h @@ -228,7 +228,6 @@ struct rkisp_device { int rdbk_cnt_x2; int rdbk_cnt_x3; u32 rd_mode; - u8 filt_state[RDBK_F_MAX]; struct rkisp_rx_buf_pool pv_pool[RKISP_RX_BUF_POOL_MAX]; diff --git a/drivers/media/platform/rockchip/isp/dmarx.c b/drivers/media/platform/rockchip/isp/dmarx.c index dda46feeb4ed..cb486f5f84e0 100644 --- a/drivers/media/platform/rockchip/isp/dmarx.c +++ b/drivers/media/platform/rockchip/isp/dmarx.c @@ -389,7 +389,7 @@ static void update_rawrd(struct rkisp_stream *stream) }; if (!vbuf->sequence) - trigger.frame_id = atomic_inc_return(&dev->isp_sdev.frm_sync_seq); + trigger.frame_id = atomic_inc_return(&dev->isp_sdev.frm_sync_seq) - 1; rkisp_rdbk_trigger_event(dev, T_CMD_QUEUE, &trigger); } } else if (dev->dmarx_dev.trigger == T_AUTO) { diff --git a/drivers/media/platform/rockchip/isp/rkisp.c b/drivers/media/platform/rockchip/isp/rkisp.c index e57fe14aee97..c41ab2cad4c7 100644 --- a/drivers/media/platform/rockchip/isp/rkisp.c +++ b/drivers/media/platform/rockchip/isp/rkisp.c @@ -669,9 +669,6 @@ void rkisp_trigger_read_back(struct rkisp_device *dev, u8 dma2frm, u32 mode, boo if (is_3dlut_upd) rkisp_write(dev, ISP_3DLUT_UPDATE, 1, true); - memset(dev->filt_state, 0, sizeof(dev->filt_state)); - dev->filt_state[RDBK_F_VS] = dma2frm; - val = rkisp_read(dev, CSI2RX_CTRL0, true); val &= ~SW_IBUF_OP_MODE(0xf); tmp = SW_IBUF_OP_MODE(dev->rd_mode); @@ -2584,6 +2581,7 @@ static int rkisp_isp_sd_s_stream(struct v4l2_subdev *sd, int on) rkisp_isp_stop(isp_dev); atomic_dec(&hw_dev->refcnt); rkisp_params_stream_stop(&isp_dev->params_vdev); + atomic_set(&isp_dev->isp_sdev.frm_sync_seq, 0); return 0; } @@ -2595,7 +2593,6 @@ static int rkisp_isp_sd_s_stream(struct v4l2_subdev *sd, int on) return -EINVAL; } - atomic_set(&isp_dev->isp_sdev.frm_sync_seq, 0); rkisp_config_cif(isp_dev); rkisp_isp_start(isp_dev); rkisp_global_update_mi(isp_dev); @@ -3268,7 +3265,7 @@ int rkisp_register_isp_subdev(struct rkisp_device *isp_dev, rkisp_isp_sd_init_default_fmt(isp_sdev); isp_dev->hdr.sensor = NULL; isp_dev->isp_state = ISP_STOP; - + atomic_set(&isp_sdev->frm_sync_seq, 0); rkisp_monitor_init(isp_dev); return 0; err_cleanup_media_entity: @@ -3515,11 +3512,7 @@ void rkisp_isp_isr(unsigned int isp_mis, if (!completion_done(&dev->hw_dev->monitor.cmpl)) complete(&dev->hw_dev->monitor.cmpl); } - /* last vsync to config next buf */ - if (!dev->filt_state[RDBK_F_VS]) - rkisp_stream_frame_start(dev, isp_mis); - else - dev->filt_state[RDBK_F_VS]--; + if (IS_HDR_RDBK(dev->hdr.op_mode)) { /* read 3d lut at isp readback */ if (!dev->hw_dev->is_single) @@ -3553,6 +3546,7 @@ void rkisp_isp_isr(unsigned int isp_mis, if (dev->vs_irq < 0 && !sof_event_later) { dev->isp_sdev.frm_timestamp = ktime_get_ns(); rkisp_isp_queue_event_sof(&dev->isp_sdev); + rkisp_stream_frame_start(dev, isp_mis); } vs_skip: writel(CIF_ISP_V_START, base + CIF_ISP_ICR); @@ -3671,6 +3665,7 @@ vs_skip: if (dev->vs_irq < 0 && sof_event_later) { dev->isp_sdev.frm_timestamp = ktime_get_ns(); rkisp_isp_queue_event_sof(&dev->isp_sdev); + rkisp_stream_frame_start(dev, isp_mis); } if (isp_mis & CIF_ISP_FRAME_IN)