Merge tag 'media/v5.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[platform/kernel/linux-rpi.git] / drivers / media / usb / pvrusb2 / pvrusb2-v4l2.c
index aa4fbc3..0aff2f3 100644 (file)
@@ -118,17 +118,6 @@ static int pvr2_querycap(struct file *file, void *priv, struct v4l2_capability *
        cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER |
                            V4L2_CAP_AUDIO | V4L2_CAP_RADIO |
                            V4L2_CAP_READWRITE | V4L2_CAP_DEVICE_CAPS;
-       switch (fh->pdi->devbase.vfl_type) {
-       case VFL_TYPE_GRABBER:
-               cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO;
-               break;
-       case VFL_TYPE_RADIO:
-               cap->device_caps = V4L2_CAP_RADIO;
-               break;
-       default:
-               return -EINVAL;
-       }
-       cap->device_caps |= V4L2_CAP_TUNER | V4L2_CAP_READWRITE;
        return 0;
 }
 
@@ -1195,6 +1184,8 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
        int unit_number;
        struct pvr2_hdw *hdw;
        int *nr_ptr = NULL;
+       u32 caps = V4L2_CAP_TUNER | V4L2_CAP_READWRITE;
+
        dip->v4lp = vp;
 
        hdw = vp->channel.mc_head->hdw;
@@ -1205,6 +1196,7 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
                dip->config = pvr2_config_mpeg;
                dip->minor_type = pvr2_v4l_type_video;
                nr_ptr = video_nr;
+               caps |= V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO;
                if (!dip->stream) {
                        pr_err(KBUILD_MODNAME
                                ": Failed to set up pvrusb2 v4l video dev due to missing stream instance\n");
@@ -1215,12 +1207,14 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
                dip->config = pvr2_config_vbi;
                dip->minor_type = pvr2_v4l_type_vbi;
                nr_ptr = vbi_nr;
+               caps |= V4L2_CAP_VBI_CAPTURE;
                break;
        case VFL_TYPE_RADIO:
                dip->stream = &vp->channel.mc_head->video_stream;
                dip->config = pvr2_config_mpeg;
                dip->minor_type = pvr2_v4l_type_radio;
                nr_ptr = radio_nr;
+               caps |= V4L2_CAP_RADIO;
                break;
        default:
                /* Bail out (this should be impossible) */
@@ -1231,6 +1225,7 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
        dip->devbase = vdev_template;
        dip->devbase.release = pvr2_video_device_release;
        dip->devbase.ioctl_ops = &pvr2_ioctl_ops;
+       dip->devbase.device_caps = caps;
        {
                int val;
                pvr2_ctrl_get_value(