[media] tlg2300: fix querycap
authorHans Verkuil <hans.verkuil@cisco.com>
Thu, 31 Jan 2013 09:42:03 +0000 (06:42 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 5 Mar 2013 13:45:12 +0000 (10:45 -0300)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Huang Shijie <shijie8@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/usb/tlg2300/pd-video.c

index 312809a..8ab2894 100644 (file)
@@ -142,17 +142,23 @@ static int get_audio_std(v4l2_std_id v4l2_std)
 static int vidioc_querycap(struct file *file, void *fh,
                        struct v4l2_capability *cap)
 {
+       struct video_device *vdev = video_devdata(file);
+       struct poseidon *p = video_get_drvdata(vdev);
        struct front_face *front = fh;
-       struct poseidon *p = front->pd;
 
        logs(front);
 
        strcpy(cap->driver, "tele-video");
        strcpy(cap->card, "Telegent Poseidon");
        usb_make_path(p->udev, cap->bus_info, sizeof(cap->bus_info));
-       cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER |
-                               V4L2_CAP_AUDIO | V4L2_CAP_STREAMING |
-                               V4L2_CAP_READWRITE | V4L2_CAP_VBI_CAPTURE;
+       cap->device_caps = V4L2_CAP_TUNER | V4L2_CAP_AUDIO |
+                       V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
+       if (vdev->vfl_type == VFL_TYPE_VBI)
+               cap->device_caps |= V4L2_CAP_VBI_CAPTURE;
+       else
+               cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE;
+       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS |
+               V4L2_CAP_RADIO | V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE;
        return 0;
 }