media: rockchip: isp: fix 3a error for multi sensor only vpss output

Change-Id: I35a7b8a1838497055c8c9f700173fe8ca25a1e92
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
This commit is contained in:
Cai YiWei
2025-08-08 09:06:56 +08:00
parent ef6778784a
commit 1f04733d07
2 changed files with 14 additions and 10 deletions

View File

@@ -407,7 +407,7 @@ rkisp_stats_info2ddr(struct rkisp_isp_stats_vdev *stats_vdev,
}
static void
rkisp_stats_send_meas_fe(struct rkisp_isp_stats_vdev *stats_vdev)
rkisp_stats_send_meas_fe(struct rkisp_isp_stats_vdev *stats_vdev, u32 w3a_ris)
{
struct rkisp_isp_params_vdev *params_vdev = &stats_vdev->dev->params_vdev;
struct rkisp_isp_params_val_v35 *priv = params_vdev->priv_val;
@@ -537,14 +537,14 @@ rkisp_stats_send_meas_fe(struct rkisp_isp_stats_vdev *stats_vdev)
vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
}
v4l2_dbg(4, rkisp_debug, &stats_vdev->dev->v4l2_dev,
"%s seq:%d params_id:%d ris:0x%x buf:0x%x meas_type:0x%x\n",
__func__, cur_frame_id, params_vdev->cur_fe_frame_id, ris,
"%s seq:%d params_id:%d ris:0x%x w3a:0x%x buf:0x%x meas_type:0x%x\n",
__func__, cur_frame_id, params_vdev->cur_fe_frame_id, ris, w3a_ris,
!cur_buf ? -1 : cur_buf->buff_addr[0],
!stat_buf ? 0 : stat_buf->meas_type);
}
static void
rkisp_stats_send_meas(struct rkisp_isp_stats_vdev *stats_vdev)
rkisp_stats_send_meas(struct rkisp_isp_stats_vdev *stats_vdev, u32 w3a_ris)
{
struct rkisp_isp_params_vdev *params_vdev = &stats_vdev->dev->params_vdev;
struct rkisp_isp_params_val_v35 *priv = params_vdev->priv_val;
@@ -745,8 +745,8 @@ rkisp_stats_send_meas(struct rkisp_isp_stats_vdev *stats_vdev)
vb2_buffer_done(&cur_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
}
v4l2_dbg(4, rkisp_debug, &stats_vdev->dev->v4l2_dev,
"%s seq:%d params_id:%d ris:0x%x buf:0x%x meas_type:0x%x\n",
__func__, cur_frame_id, params_vdev->cur_frame_id, ris,
"%s seq:%d params_id:%d ris:0x%x w3a:0x%x buf:0x%x meas_type:0x%x\n",
__func__, cur_frame_id, params_vdev->cur_frame_id, ris, w3a_ris,
!cur_buf ? -1 : cur_buf->buff_addr[0],
!cur_stat_buf ? 0 : cur_stat_buf->meas_type);
}
@@ -760,15 +760,16 @@ rkisp_stats_isr_v35(struct rkisp_isp_stats_vdev *stats_vdev,
rkisp_pdaf_isr(stats_vdev->dev);
w3a_ris = rkisp_read(stats_vdev->dev, ISP39_W3A_INT_STAT, true);
if (w3a_ris & ISP39_W3A_INT_ERR_MASK) {
v4l2_err(&stats_vdev->dev->v4l2_dev, "w3a error 0x%x\n", w3a_ris);
if (w3a_ris) {
rkisp_write(stats_vdev->dev, ISP39_W3A_INT_STAT, w3a_ris, true);
if (w3a_ris & ISP39_W3A_INT_ERR_MASK)
v4l2_err(&stats_vdev->dev->v4l2_dev, "w3a error 0x%x\n", w3a_ris);
}
if (isp_ris & ISP3X_BAY3D_FRM_END)
rkisp_stats_send_meas_fe(stats_vdev);
rkisp_stats_send_meas_fe(stats_vdev, w3a_ris);
if (isp_ris & ISP3X_FRAME)
rkisp_stats_send_meas(stats_vdev);
rkisp_stats_send_meas(stats_vdev, w3a_ris);
}
static void

View File

@@ -2569,6 +2569,9 @@ static int rkisp_isp_start(struct rkisp_device *dev)
rkisp_unite_write(dev, CIF_ISP_CTRL, val, is_direct);
rkisp_clear_reg_cache_bits(dev, CIF_ISP_CTRL, upd);
val = CIF_MI_CTRL_INIT_BASE_EN | CIF_MI_CTRL_INIT_OFFSET_EN;
rkisp_unite_set_bits(dev, CIF_MI_CTRL, 0, val, false);
dev->isp_err_cnt = 0;
dev->isp_isr_cnt = 0;
dev->irq_ends_mask |= ISP_FRAME_END;