[media] au0828: fix querycap
authorHans Verkuil <hans.verkuil@cisco.com>
Fri, 15 Feb 2013 11:11:04 +0000 (08:11 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 25 Mar 2013 18:10:00 +0000 (15:10 -0300)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Reviewed-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/usb/au0828/au0828-video.c

index 79f1d510cc2ec82b225cf2ea5d1766cd8ff7d31b..ba90ffb3d9211b6bcb37a866776d1b79a18009df 100644 (file)
@@ -1241,20 +1241,25 @@ static int vidioc_queryctrl(struct file *file, void *priv,
 static int vidioc_querycap(struct file *file, void  *priv,
                           struct v4l2_capability *cap)
 {
-       struct au0828_fh *fh  = priv;
+       struct video_device *vdev = video_devdata(file);
+       struct au0828_fh *fh = priv;
        struct au0828_dev *dev = fh->dev;
 
        strlcpy(cap->driver, "au0828", sizeof(cap->driver));
        strlcpy(cap->card, dev->board.name, sizeof(cap->card));
-       strlcpy(cap->bus_info, dev->v4l2_dev.name, sizeof(cap->bus_info));
+       usb_make_path(dev->usbdev, cap->bus_info, sizeof(cap->bus_info));
 
-       /*set the device capabilities */
-       cap->capabilities = V4L2_CAP_VIDEO_CAPTURE |
-               V4L2_CAP_VBI_CAPTURE |
-               V4L2_CAP_AUDIO |
+       /* set the device capabilities */
+       cap->device_caps = V4L2_CAP_AUDIO |
                V4L2_CAP_READWRITE |
                V4L2_CAP_STREAMING |
                V4L2_CAP_TUNER;
+       if (vdev->vfl_type == VFL_TYPE_GRABBER)
+               cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE;
+       else
+               cap->device_caps |= V4L2_CAP_VBI_CAPTURE;
+       cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS |
+               V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE;
        return 0;
 }