[media] au0828: enable VBI timeout when calling read() without streamon()
authorDevin Heitmueller <dheitmueller@kernellabs.com>
Sat, 9 Oct 2010 18:09:17 +0000 (15:09 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 29 Dec 2010 10:16:35 +0000 (08:16 -0200)
Because some clients (e.g. tvtime) will just open the filehandle and call
read() instead of explicitly calling streamon first, we need to make sure the
VBI timeout routine gets enabled in this case.

Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/au0828/au0828-video.c

index cf8fc627471313d00878f76dee51dc82beb28fe9..48682af911fa16e70bb8e18e9927b4a52f552142 100644 (file)
@@ -1116,6 +1116,13 @@ static ssize_t au0828_v4l2_read(struct file *filp, char __user *buf,
                if (!res_get(fh, AU0828_RESOURCE_VBI))
                        return -EBUSY;
 
+               if (dev->vbi_timeout_running == 0) {
+                       /* Handle case where caller tries to read without
+                          calling streamon first */
+                       dev->vbi_timeout_running = 1;
+                       mod_timer(&dev->vbi_timeout, jiffies + (HZ / 10));
+               }
+
                return videobuf_read_stream(&fh->vb_vbiq, buf, count, pos, 0,
                                            filp->f_flags & O_NONBLOCK);
        }