mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
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:
@@ -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))
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user