public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Fix bug in au0828 VBI streaming
@ 2011-01-23 22:12 Devin Heitmueller
  2011-02-02 13:58 ` [PATCH RESEND] " Devin Heitmueller
  0 siblings, 1 reply; 4+ messages in thread
From: Devin Heitmueller @ 2011-01-23 22:12 UTC (permalink / raw)
  To: Linux Media Mailing List

[-- Attachment #1: Type: text/plain, Size: 337 bytes --]

Attached is a patch for a V4L2 spec violation with regards to the
au0828 not working in streaming mode.

This was just an oversight on my part when I did the original VBI
support for this bridge, as libzvbi was silently falling back to using
the read() interface.

Devin

-- 
Devin J. Heitmueller - Kernel Labs
http://www.kernellabs.com

[-- Attachment #2: au0828_vbi_streaming.patch --]
[-- Type: text/x-patch, Size: 2201 bytes --]

au0828: fix VBI handling when in V4L2 streaming mode

From: Devin Heitmueller <dheitmueller@kernellabs.com>

It turns up V4L2 streaming mode (a.k.a mmap) was broken for VBI streaming.
This was causing libzvbi to fall back to V4L1 capture mode, and is a blatent
violation of the V4L2 specification.

Make the implementation work properly in this mode.

Priority: high

Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> 

--- media_build/linux/drivers/media/video/au0828/au0828-video.c	2011-01-10 10:24:45.000000000 -0500
+++ media_build_950qfixes//linux/drivers/media/video/au0828/au0828-video.c	2011-01-23 17:05:08.461107569 -0500
@@ -1758,7 +1758,12 @@
 	if (rc < 0)
 		return rc;
 
-	return videobuf_reqbufs(&fh->vb_vidq, rb);
+	if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
+		rc = videobuf_reqbufs(&fh->vb_vidq, rb);
+	else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE)
+		rc = videobuf_reqbufs(&fh->vb_vbiq, rb);
+
+	return rc;
 }
 
 static int vidioc_querybuf(struct file *file, void *priv,
@@ -1772,7 +1777,12 @@
 	if (rc < 0)
 		return rc;
 
-	return videobuf_querybuf(&fh->vb_vidq, b);
+	if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
+		rc = videobuf_querybuf(&fh->vb_vidq, b);
+	else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE)
+		rc = videobuf_querybuf(&fh->vb_vbiq, b);
+
+	return rc;
 }
 
 static int vidioc_qbuf(struct file *file, void *priv, struct v4l2_buffer *b)
@@ -1785,7 +1795,12 @@
 	if (rc < 0)
 		return rc;
 
-	return videobuf_qbuf(&fh->vb_vidq, b);
+	if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
+		rc = videobuf_qbuf(&fh->vb_vidq, b);
+	else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE)
+		rc = videobuf_qbuf(&fh->vb_vbiq, b);
+
+	return rc;
 }
 
 static int vidioc_dqbuf(struct file *file, void *priv, struct v4l2_buffer *b)
@@ -1806,7 +1821,12 @@
 		dev->greenscreen_detected = 0;
 	}
 
-	return videobuf_dqbuf(&fh->vb_vidq, b, file->f_flags & O_NONBLOCK);
+	if (fh->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
+		rc = videobuf_dqbuf(&fh->vb_vidq, b, file->f_flags & O_NONBLOCK);
+	else if (fh->type == V4L2_BUF_TYPE_VBI_CAPTURE)
+		rc = videobuf_dqbuf(&fh->vb_vbiq, b, file->f_flags & O_NONBLOCK);
+
+	return rc;
 }
 
 static struct v4l2_file_operations au0828_v4l_fops = {

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-02-04  0:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-23 22:12 [PATCH] Fix bug in au0828 VBI streaming Devin Heitmueller
2011-02-02 13:58 ` [PATCH RESEND] " Devin Heitmueller
2011-02-03 23:38   ` Devin Heitmueller
2011-02-04  0:03     ` Mauro Carvalho Chehab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox