mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 18:41:58 +09:00
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:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user