From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 03 Jan 2024 09:43:39 +0000 Subject: [PATCH] update kernel to 5.10.198 --- kernel/drivers/media/platform/rockchip/isp/capture_v21.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-) diff --git a/kernel/drivers/media/platform/rockchip/isp/capture_v21.c b/kernel/drivers/media/platform/rockchip/isp/capture_v21.c index 67cb9f6..7aeef97 100644 --- a/kernel/drivers/media/platform/rockchip/isp/capture_v21.c +++ b/kernel/drivers/media/platform/rockchip/isp/capture_v21.c @@ -1150,7 +1150,8 @@ if (!ret) { denominator = sensor->fi.interval.denominator; numerator = sensor->fi.interval.numerator; - time = numerator * 1000 / denominator * 1000 * 1000; + if (denominator) + time = numerator * 1000 / denominator * 1000 * 1000; if (numerator) fps = denominator / numerator; } @@ -1225,6 +1226,15 @@ struct vb2_buffer *vb2_buf = &stream->curr_buf->vb.vb2_buf; u64 ns = 0; + if (stream->skip_frame) { + spin_lock_irqsave(&stream->vbq_lock, lock_flags); + list_add_tail(&stream->curr_buf->queue, &stream->buf_queue); + spin_unlock_irqrestore(&stream->vbq_lock, lock_flags); + if (stream->skip_frame) + stream->skip_frame--; + goto end; + } + /* Dequeue a filled buffer */ for (i = 0; i < isp_fmt->mplanes; i++) { u32 payload_size = @@ -1241,10 +1251,10 @@ atomic_read(&stream->sequence) - 1; } if (!ns) - ns = ktime_get_ns(); + ns = rkisp_time_get_ns(dev); vb2_buf->timestamp = ns; - ns = ktime_get_ns(); + ns = rkisp_time_get_ns(dev); stream->dbg.interval = ns - stream->dbg.timestamp; stream->dbg.timestamp = ns; stream->dbg.id = stream->curr_buf->vb.sequence; @@ -1287,6 +1297,7 @@ stream->curr_buf = NULL; } +end: if (!interlaced || (stream->curr_buf == stream->next_buf && stream->u.sp.field == RKISP_FIELD_ODD)) { @@ -1505,7 +1516,7 @@ if (stream->id == RKISP_STREAM_MP || stream->id == RKISP_STREAM_SP) hdr_config_dmatx(dev); stream->streaming = true; - + stream->skip_frame = 0; return 0; } -- Gitblit v1.6.2