Commit 0c1a41b5 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

[media] v4l: vsp1: Move frame sequence number from video node to pipeline

The frame sequence number is global to the pipeline, there's no need to
store copies in each video node.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent ccd3d95a
...@@ -286,6 +286,8 @@ void vsp1_pipeline_frame_end(struct vsp1_pipeline *pipe) ...@@ -286,6 +286,8 @@ void vsp1_pipeline_frame_end(struct vsp1_pipeline *pipe)
if (pipe->frame_end) if (pipe->frame_end)
pipe->frame_end(pipe); pipe->frame_end(pipe);
pipe->sequence++;
} }
/* /*
......
...@@ -67,6 +67,7 @@ enum vsp1_pipeline_state { ...@@ -67,6 +67,7 @@ enum vsp1_pipeline_state {
* @kref: pipeline reference count * @kref: pipeline reference count
* @stream_count: number of streaming video nodes * @stream_count: number of streaming video nodes
* @buffers_ready: bitmask of RPFs and WPFs with at least one buffer available * @buffers_ready: bitmask of RPFs and WPFs with at least one buffer available
* @sequence: frame sequence number
* @num_inputs: number of RPFs * @num_inputs: number of RPFs
* @inputs: array of RPFs in the pipeline (indexed by RPF index) * @inputs: array of RPFs in the pipeline (indexed by RPF index)
* @output: WPF at the output of the pipeline * @output: WPF at the output of the pipeline
...@@ -90,6 +91,7 @@ struct vsp1_pipeline { ...@@ -90,6 +91,7 @@ struct vsp1_pipeline {
struct kref kref; struct kref kref;
unsigned int stream_count; unsigned int stream_count;
unsigned int buffers_ready; unsigned int buffers_ready;
unsigned int sequence;
unsigned int num_inputs; unsigned int num_inputs;
struct vsp1_rwpf *inputs[VSP1_MAX_RPF]; struct vsp1_rwpf *inputs[VSP1_MAX_RPF];
......
...@@ -219,7 +219,7 @@ vsp1_video_complete_buffer(struct vsp1_video *video) ...@@ -219,7 +219,7 @@ vsp1_video_complete_buffer(struct vsp1_video *video)
spin_unlock_irqrestore(&video->irqlock, flags); spin_unlock_irqrestore(&video->irqlock, flags);
done->buf.sequence = video->sequence++; done->buf.sequence = pipe->sequence;
done->buf.vb2_buf.timestamp = ktime_get_ns(); done->buf.vb2_buf.timestamp = ktime_get_ns();
for (i = 0; i < done->buf.vb2_buf.num_planes; ++i) for (i = 0; i < done->buf.vb2_buf.num_planes; ++i)
vb2_set_plane_payload(&done->buf.vb2_buf, i, vb2_set_plane_payload(&done->buf.vb2_buf, i,
...@@ -805,8 +805,6 @@ vsp1_video_streamon(struct file *file, void *fh, enum v4l2_buf_type type) ...@@ -805,8 +805,6 @@ vsp1_video_streamon(struct file *file, void *fh, enum v4l2_buf_type type)
if (video->queue.owner && video->queue.owner != file->private_data) if (video->queue.owner && video->queue.owner != file->private_data)
return -EBUSY; return -EBUSY;
video->sequence = 0;
/* Get a pipeline for the video node and start streaming on it. No link /* Get a pipeline for the video node and start streaming on it. No link
* touching an entity in the pipeline can be activated or deactivated * touching an entity in the pipeline can be activated or deactivated
* once streaming is started. * once streaming is started.
......
...@@ -49,7 +49,6 @@ struct vsp1_video { ...@@ -49,7 +49,6 @@ struct vsp1_video {
void *alloc_ctx; void *alloc_ctx;
spinlock_t irqlock; spinlock_t irqlock;
struct list_head irqqueue; struct list_head irqqueue;
unsigned int sequence;
}; };
static inline struct vsp1_video *to_vsp1_video(struct video_device *vdev) static inline struct vsp1_video *to_vsp1_video(struct video_device *vdev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment