media: rockchip: isp: support soft dvbm for vepu

Add interruption every quarter frame to trigger vepu.

Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Signed-off-by: Cai YiWei <cyw@rock-chips.com>
Change-Id: I57bc0476677f325902224a7dfda3acc2f83c0424
This commit is contained in:
Yandong Lin
2022-04-02 11:30:55 +08:00
committed by Tao Huang
parent 0e80bdc8bb
commit fa60562f7a
2 changed files with 31 additions and 0 deletions

View File

@@ -82,6 +82,15 @@ int rkisp_dvbm_event(struct rkisp_device *dev, u32 event)
case CIF_ISP_V_START:
cmd = DVBM_ISP_FRM_START;
break;
case ISP3X_OUT_FRM_QUARTER:
cmd = DVBM_ISP_FRM_QUARTER;
break;
case ISP3X_OUT_FRM_HALF:
cmd = DVBM_ISP_FRM_QUARTER;
break;
case ISP3X_OUT_FRM_END:
cmd = DVBM_ISP_FRM_QUARTER;
break;
case CIF_MI_MP_FRAME:
cmd = DVBM_ISP_FRM_END;
break;

View File

@@ -1529,6 +1529,15 @@ 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;
if (dev->cap_dev.wrap_line) {
irq_mask |= ISP3X_OUT_FRM_QUARTER | ISP3X_OUT_FRM_HALF |
ISP3X_OUT_FRM_END;
/* line to irq */
rkisp_write(dev, ISP32_ISP_IRQ_CFG0,
(in_crop->height / 2) << 16 | in_crop->height / 4, false);
rkisp_write(dev, ISP32_ISP_IRQ_CFG1,
in_crop->height / 4 * 3, false);
}
if (dev->isp_ver == ISP_V20 || dev->isp_ver == ISP_V21 ||
dev->isp_ver == ISP_V30 || dev->isp_ver == ISP_V32)
irq_mask |= ISP2X_LSC_LUT_ERR;
@@ -3734,6 +3743,19 @@ vs_skip:
rkisp_stream_frame_start(dev, isp_mis);
}
if (isp_mis & ISP3X_OUT_FRM_QUARTER) {
writel(ISP3X_OUT_FRM_QUARTER, base + CIF_ISP_ICR);
rkisp_dvbm_event(dev, ISP3X_OUT_FRM_QUARTER);
}
if (isp_mis & ISP3X_OUT_FRM_HALF) {
writel(ISP3X_OUT_FRM_HALF, base + CIF_ISP_ICR);
rkisp_dvbm_event(dev, ISP3X_OUT_FRM_HALF);
}
if (isp_mis & ISP3X_OUT_FRM_END) {
writel(ISP3X_OUT_FRM_END, base + CIF_ISP_ICR);
rkisp_dvbm_event(dev, ISP3X_OUT_FRM_END);
}
if (isp_mis & CIF_ISP_FRAME_IN)
rkisp_check_idle(dev, ISP_FRAME_IN);
if (isp_mis & CIF_ISP_FRAME)