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