From 9ed21d58a98fc0c53ec10e4eca4fb17df0f746d5 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Sat, 11 Sep 2021 10:25:24 +0800 Subject: [PATCH] media: rockchip: ispp: add frame loss info to procfs Change-Id: I413608060c2245809a4b1f9d908511531901608d Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/ispp/procfs.c | 5 ++-- drivers/media/platform/rockchip/ispp/stream.c | 28 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/drivers/media/platform/rockchip/ispp/procfs.c b/drivers/media/platform/rockchip/ispp/procfs.c index 93c890f6c54d..a2ebb5c31480 100644 --- a/drivers/media/platform/rockchip/ispp/procfs.c +++ b/drivers/media/platform/rockchip/ispp/procfs.c @@ -50,7 +50,7 @@ static int ispp_show(struct seq_file *p, void *v) stream = &dev->stream_vdev.stream[val]; if (!stream->streaming) continue; - seq_printf(p, "%-10s %s Format:%c%c%c%c Size:%dx%d (frame:%d rate:%dms delay:%dms)\n", + seq_printf(p, "%-10s %s Format:%c%c%c%c Size:%dx%d (frame:%d rate:%dms delay:%dms frameloss:%d)\n", "Output", stream->vnode.vdev.name, stream->out_fmt.pixelformat, @@ -61,7 +61,8 @@ static int ispp_show(struct seq_file *p, void *v) stream->out_fmt.height, stream->dbg.id, stream->dbg.interval / 1000 / 1000, - stream->dbg.delay / 1000 / 1000); + stream->dbg.delay / 1000 / 1000, + stream->dbg.frameloss); } val = rkispp_read(dev, RKISPP_TNR_CORE_CTRL); diff --git a/drivers/media/platform/rockchip/ispp/stream.c b/drivers/media/platform/rockchip/ispp/stream.c index 2cda6d352429..cae472cf0697 100644 --- a/drivers/media/platform/rockchip/ispp/stream.c +++ b/drivers/media/platform/rockchip/ispp/stream.c @@ -489,17 +489,25 @@ static int rkispp_frame_end(struct rkispp_stream *stream, u32 state) stream->dbg.id = stream->curr_buf->vb.sequence; stream->curr_buf = NULL; - } else if (stream->is_reg_withstream && - (fmt->wr_fmt & FMT_FBC || fmt->wr_fmt == FMT_YUV420)) { - u32 frame_id; + } else { + u32 frame_id = dev->ispp_sdev.frm_sync_seq; - frame_id = dev->ispp_sdev.frm_sync_seq; - rkispp_find_regbuf_by_id(dev, ®_buf, dev->dev_id, frame_id); - if (reg_buf) { - rkispp_release_regbuf(dev, reg_buf); - v4l2_info(&dev->v4l2_dev, - "%s: current frame use dummy buffer(dev_id %d, sequence %d)\n", - __func__, dev->dev_id, frame_id); + if (stream->is_cfg) { + stream->dbg.frameloss++; + v4l2_dbg(0, rkispp_debug, &dev->v4l2_dev, + "stream:%d no buf, lost frame:%d\n", + stream->id, frame_id); + } + + if (stream->is_reg_withstream && + (fmt->wr_fmt & FMT_FBC || fmt->wr_fmt == FMT_YUV420)) { + rkispp_find_regbuf_by_id(dev, ®_buf, dev->dev_id, frame_id); + if (reg_buf) { + rkispp_release_regbuf(dev, reg_buf); + v4l2_info(&dev->v4l2_dev, + "%s: current frame use dummy buffer(dev_id %d, sequence %d)\n", + __func__, dev->dev_id, frame_id); + } } }