From 1bf5842fe3b61d2dbbced96dbd27ad26fe93444a Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Tue, 3 May 2011 08:57:40 -0300 Subject: [media] cx18: Clean up mmap() support for raw YUV The initial version of this patch (commit d5976931639176bb6777755d96b9f8d959f79e9e) had some issues: * It didn't correctly calculate the size of the YUV buffer for 4:2:2, resulting in capture sometimes being offset by 1/3rd of a picture. * There were a lot of variables duplicating information the driver already knew, which have been removed. * There was an in-kernel format conversion - libv4l can do this one, and is the right place to do format conversions anyway. * Some magic numbers weren't properly explained. Fix all these issues, leaving just the move from videobuf to videobuf2 to do. Signed-off-by: Simon Farnsworth Acked-by: Andy Walls Signed-off-by: Mauro Carvalho Chehab --- drivers/media/video/cx18/cx18-mailbox.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) (limited to 'drivers/media/video/cx18/cx18-mailbox.c') diff --git a/drivers/media/video/cx18/cx18-mailbox.c b/drivers/media/video/cx18/cx18-mailbox.c index d4d88738d893..5ecae931ac36 100644 --- a/drivers/media/video/cx18/cx18-mailbox.c +++ b/drivers/media/video/cx18/cx18-mailbox.c @@ -177,7 +177,7 @@ static void cx18_mdl_send_to_videobuf(struct cx18_stream *s, if (list_empty(&s->vb_capture)) goto out; - vb_buf = list_entry(s->vb_capture.next, struct cx18_videobuf_buffer, + vb_buf = list_first_entry(&s->vb_capture, struct cx18_videobuf_buffer, vb.queue); p = videobuf_to_vmalloc(&vb_buf->vb); @@ -202,25 +202,14 @@ static void cx18_mdl_send_to_videobuf(struct cx18_stream *s, vb_buf->bytes_used = 0; } - /* */ if (dispatch) { - - if (s->pixelformat == V4L2_PIX_FMT_YUYV) { - /* UYVY to YUYV */ - for (i = 0; i < (720 * 480 * 2); i += 2) { - u = *(p + i); - *(p + i) = *(p + i + 1); - *(p + i + 1) = u; - } - } - - do_gettimeofday(&vb_buf->vb.ts); + ktime_get_ts(&vb_buf->vb.ts); list_del(&vb_buf->vb.queue); vb_buf->vb.state = VIDEOBUF_DONE; wake_up(&vb_buf->vb.done); } - mod_timer(&s->vb_timeout, jiffies + (HZ / 10)); + mod_timer(&s->vb_timeout, msecs_to_jiffies(2000) + jiffies); out: spin_unlock(&s->vb_lock); -- cgit v1.2.3