diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 493b0e4fe0ea..70bec91a0ac7 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -2543,7 +2543,7 @@ void rkcif_irq_pingpong(struct rkcif_device *cif_dev) stream->frame_idx++; } } else { - u32 lastline, lastpix, ctl, cif_frmst; + u32 lastline, lastpix, ctl, cif_frmst, frmid; struct rkcif_stream *stream; intstat = rkcif_read_register(cif_dev, CIF_REG_DVP_INTSTAT); @@ -2590,6 +2590,14 @@ void rkcif_irq_pingpong(struct rkcif_device *cif_dev) return; } + frmid = CIF_GET_FRAME_ID(cif_frmst); + if ((cif_frmst == 0xfffd0002) || (cif_frmst == 0xfffe0002)) { + v4l2_info(&cif_dev->v4l2_dev, "frmid:%d, frmstat:0x%x\n", + frmid, cif_frmst); + rkcif_write_register(cif_dev, CIF_REG_DVP_FRAME_STATUS, + FRAME_STAT_CLS); + } + if (lastline != stream->pixm.height || (!(cif_frmst & CIF_F0_READY) && !(cif_frmst & CIF_F1_READY))) {