From 5af2ff07902429552029c36902d5639006c85cbd Mon Sep 17 00:00:00 2001 From: Wojciech Bieganski Date: Tue, 15 Apr 2014 10:27:04 +0200 Subject: media: image from analog cameras is back to full speed This commit restores the full framerate (25 FPS), after a drop to 16 FPS caused by a l4t-r16-r4 merge. --- drivers/media/video/tegra_v4l2_camera.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/media/video/tegra_v4l2_camera.c b/drivers/media/video/tegra_v4l2_camera.c index e5cbb3a582dc..f4e33817241a 100644 --- a/drivers/media/video/tegra_v4l2_camera.c +++ b/drivers/media/video/tegra_v4l2_camera.c @@ -1178,6 +1178,13 @@ static int tegra_camera_capture_frame(struct tegra_camera_dev *pcdev) if (pcdev->active) tegra_camera_capture_setup(pcdev); } + + /* drop the first interlaced frame */ + if (IS_INTERLACED && (pcdev->num_frames == 0)) { + pcdev->num_frames++; + return err; + } + spin_lock_irq(&pcdev->videobuf_queue_lock); do_gettimeofday(&vb->v4l2_buf.timestamp); vb->v4l2_buf.field = pcdev->field; @@ -1186,11 +1193,8 @@ static int tegra_camera_capture_frame(struct tegra_camera_dev *pcdev) else if (port == TEGRA_CAMERA_PORT_CSI_B) vb->v4l2_buf.sequence = pcdev->sequence_b++; - if (IS_INTERLACED && pcdev->num_frames == 0) - /* if we're dealing with interlaced frames, tell V4L to remove the frame from the queue */ - vb2_buffer_done(vb, VB2_BUF_STATE_DEQUEUED); - else - vb2_buffer_done(vb, (err != 0) ? VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE); + vb2_buffer_done(vb, (err != 0) ? VB2_BUF_STATE_ERROR : VB2_BUF_STATE_DONE); + list_del_init(&buf->queue); pcdev->num_frames++; -- cgit v1.2.3