V4L/DVB (10313): saa7146: fix VIDIOC_ENUMSTD.
authorHans Verkuil <hverkuil@xs4all.nl>
Mon, 26 Jan 2009 22:13:05 +0000 (19:13 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:42:27 +0000 (12:42 -0300)
The previous conversion to video_ioctl2 broke VIDIOC_ENUMSTD. This
is now fixed.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/saa7146_fops.c

index 4a27d4eda628efe4dff0c27332a91fadab81d907..fec799d2600faa3924f4fba8aca0365ab65a07fe 100644 (file)
@@ -511,6 +511,7 @@ int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev,
        struct saa7146_vv *vv = dev->vv_data;
        struct video_device *vfd;
        int err;
+       int i;
 
        DEB_EE(("dev:%p, name:'%s', type:%d\n",dev,name,type));
 
@@ -520,9 +521,11 @@ int saa7146_register_device(struct video_device **vid, struct saa7146_dev* dev,
                return -ENOMEM;
 
        vfd->fops = &video_fops;
-       vfd->ioctl_ops = dev->ext_vv_data ? &dev->ext_vv_data->ops :
-                                               &saa7146_video_ioctl_ops;
+       vfd->ioctl_ops = &dev->ext_vv_data->ops;
        vfd->release = video_device_release;
+       vfd->tvnorms = 0;
+       for (i = 0; i < dev->ext_vv_data->num_stds; i++)
+               vfd->tvnorms |= dev->ext_vv_data->stds[i].id;
        strlcpy(vfd->name, name, sizeof(vfd->name));
        video_set_drvdata(vfd, dev);