hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/media/platform/rockchip/isp/capture_v30.c
....@@ -977,6 +977,15 @@
977977 struct vb2_buffer *vb2_buf = &buf->vb.vb2_buf;
978978 u64 ns = 0;
979979
980
+ if (stream->skip_frame) {
981
+ spin_lock_irqsave(&stream->vbq_lock, lock_flags);
982
+ list_add_tail(&buf->queue, &stream->buf_queue);
983
+ spin_unlock_irqrestore(&stream->vbq_lock, lock_flags);
984
+ if (stream->skip_frame)
985
+ stream->skip_frame--;
986
+ goto end;
987
+ }
988
+
980989 /* Dequeue a filled buffer */
981990 for (i = 0; i < isp_fmt->mplanes; i++) {
982991 u32 payload_size = stream->out_fmt.plane_fmt[i].sizeimage;
....@@ -987,10 +996,10 @@
987996 rkisp_dmarx_get_frame(dev, &i, NULL, &ns, true);
988997 buf->vb.sequence = i;
989998 if (!ns)
990
- ns = ktime_get_ns();
999
+ ns = rkisp_time_get_ns(dev);
9911000 vb2_buf->timestamp = ns;
9921001
993
- ns = ktime_get_ns();
1002
+ ns = rkisp_time_get_ns(dev);
9941003 stream->dbg.interval = ns - stream->dbg.timestamp;
9951004 stream->dbg.timestamp = ns;
9961005 stream->dbg.id = buf->vb.sequence;
....@@ -1097,7 +1106,7 @@
10971106
10981107 stream->ops->enable_mi(stream);
10991108 stream->streaming = true;
1100
-
1109
+ stream->skip_frame = 0;
11011110 return 0;
11021111 }
11031112