drivers: media: platform: rockchip: cif: fix pingpong mode issue

fix following problem when using pingpong mode
rkcif: Bad frame, pp irq:0x20b frmst:0xda900000 size:1600x600

Signed-off-by: Wang Panzhenzhuan <randy.wang@rock-chips.com>
Signed-off-by: Allon Huang <allon.huang@rock-chips.com>
Change-Id: Iaf9222d5465a966047c26b7a7518bbc419cd5748
This commit is contained in:
Wang Panzhenzhuan
2020-06-05 09:36:32 +08:00
committed by Tao Huang
parent bc28e06c42
commit 6459ce336d

View File

@@ -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))) {