media: rockchip: isp: report 3A stats only one time in a frame

Camerahal cannot accept too many stats report in one frame now,
so report 3A stats only one time in a frame

Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
Change-Id: I69dd96c08b60900c4b7549d47f7689534f25057d
This commit is contained in:
Hu Kejun
2020-03-04 09:50:46 +08:00
committed by Tao Huang
parent 08e812ab4e
commit 97ceacbe20
2 changed files with 7 additions and 15 deletions

View File

@@ -1336,12 +1336,15 @@ rkisp_stats_isr_v2x(struct rkisp_isp_stats_vdev *stats_vdev,
ISP2X_3A_RAWAF_LUM | ISP2X_3A_RAWAF | ISP2X_3A_RAWAWB;
u32 hdl_ris, hdl_3aris, unhdl_ris, unhdl_3aris;
u32 wr_buf_idx;
u32 temp_isp_ris, temp_isp3a_ris;
#ifdef LOG_ISR_EXE_TIME
ktime_t in_t = ktime_get();
#endif
spin_lock(&stats_vdev->irq_lock);
temp_isp_ris = readl(stats_vdev->dev->base_addr + ISP_ISP_RIS);
temp_isp3a_ris = readl(stats_vdev->dev->base_addr + ISP_ISP3A_RIS);
isp_mis_tmp = isp_ris & iq_isr_mask;
if (isp_mis_tmp) {
writel(isp_mis_tmp,
@@ -1379,8 +1382,6 @@ rkisp_stats_isr_v2x(struct rkisp_isp_stats_vdev *stats_vdev,
stats_vdev->dev->base_addr + MI_SWS_3A_WR_BASE);
}
hdl_ris = isp_ris;
hdl_3aris = isp3a_ris;
unhdl_ris = 0;
unhdl_3aris = 0;
if (stats_vdev->rdbk_mode) {
@@ -1392,11 +1393,11 @@ rkisp_stats_isr_v2x(struct rkisp_isp_stats_vdev *stats_vdev,
stats_vdev->isp3a_rdbk |= hdl_3aris;
}
if ((hdl_ris & iq_isr_mask) || (hdl_3aris & iq_3a_mask)) {
if (isp_ris & CIF_ISP_FRAME) {
work.readout = RKISP_ISP_READOUT_MEAS;
work.frame_id = cur_frame_id;
work.isp_ris = hdl_ris;
work.isp3a_ris = hdl_3aris;
work.isp_ris = temp_isp_ris | isp_ris;
work.isp3a_ris = temp_isp3a_ris;
work.timestamp = ktime_get_ns();
if (!kfifo_is_full(&stats_vdev->rd_kfifo))

View File

@@ -501,17 +501,8 @@ static int rkisp_config_isp(struct rkisp_device *dev)
/* interrupt mask */
irq_mask |= CIF_ISP_FRAME | CIF_ISP_V_START | CIF_ISP_PIC_SIZE_ERROR |
CIF_ISP_FRAME_IN | CIF_ISP_AWB_DONE | CIF_ISP_AFM_FIN;
CIF_ISP_FRAME_IN;
writel(irq_mask, base + CIF_ISP_IMSC);
if (dev->isp_ver == ISP_V20) {
irq_mask = ISP2X_3A_RAWAE_BIG | ISP2X_3A_RAWAE_CH0 |
ISP2X_3A_RAWAE_CH1 | ISP2X_3A_RAWAE_CH2 |
ISP2X_3A_RAWHIST_BIG | ISP2X_3A_RAWHIST_CH0 |
ISP2X_3A_RAWHIST_CH1 | ISP2X_3A_RAWHIST_CH2 |
ISP2X_3A_RAWAWB | ISP2X_3A_RAWAF | ISP2X_3A_RAWAF_SUM |
ISP2X_3A_RAWAF_LUM;
writel(irq_mask, base + ISP_ISP3A_IMSC);
}
if (out_fmt->fmt_type == FMT_BAYER)
rkisp_params_disable_isp(&dev->params_vdev);