aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/usb/airspy/airspy.c6
-rw-r--r--drivers/media/usb/au0828/au0828-video.c21
-rw-r--r--drivers/media/usb/cpia2/cpia2_v4l.c9
-rw-r--r--drivers/media/usb/cx231xx/cx231xx-video.c28
-rw-r--r--drivers/media/usb/em28xx/em28xx-video.c32
-rw-r--r--drivers/media/usb/go7007/go7007-v4l2.c15
-rw-r--r--drivers/media/usb/gspca/gspca.c6
-rw-r--r--drivers/media/usb/hackrf/hackrf.c14
-rw-r--r--drivers/media/usb/hdpvr/hdpvr-video.c5
-rw-r--r--drivers/media/usb/msi2500/msi2500.c5
-rw-r--r--drivers/media/usb/pvrusb2/pvrusb2-v4l2.c17
-rw-r--r--drivers/media/usb/pwc/pwc-if.c2
-rw-r--r--drivers/media/usb/pwc/pwc-v4l.c3
-rw-r--r--drivers/media/usb/s2255/s2255drv.c5
-rw-r--r--drivers/media/usb/stk1160/stk1160-v4l.c7
-rw-r--r--drivers/media/usb/stkwebcam/stk-webcam.c6
-rw-r--r--drivers/media/usb/tm6000/tm6000-video.c20
-rw-r--r--drivers/media/usb/usbtv/usbtv-video.c5
-rw-r--r--drivers/media/usb/usbvision/usbvision-video.c20
-rw-r--r--drivers/media/usb/zr364xx/zr364xx.c7
20 files changed, 100 insertions, 133 deletions
diff --git a/drivers/media/usb/airspy/airspy.c b/drivers/media/usb/airspy/airspy.c
index 41fa0f93143d..6a3e8be95697 100644
--- a/drivers/media/usb/airspy/airspy.c
+++ b/drivers/media/usb/airspy/airspy.c
@@ -622,10 +622,6 @@ static int airspy_querycap(struct file *file, void *fh,
622 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); 622 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
623 strscpy(cap->card, s->vdev.name, sizeof(cap->card)); 623 strscpy(cap->card, s->vdev.name, sizeof(cap->card));
624 usb_make_path(s->udev, cap->bus_info, sizeof(cap->bus_info)); 624 usb_make_path(s->udev, cap->bus_info, sizeof(cap->bus_info));
625 cap->device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
626 V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
627 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
628
629 return 0; 625 return 0;
630} 626}
631 627
@@ -1066,6 +1062,8 @@ static int airspy_probe(struct usb_interface *intf,
1066 s->v4l2_dev.ctrl_handler = &s->hdl; 1062 s->v4l2_dev.ctrl_handler = &s->hdl;
1067 s->vdev.v4l2_dev = &s->v4l2_dev; 1063 s->vdev.v4l2_dev = &s->v4l2_dev;
1068 s->vdev.lock = &s->v4l2_lock; 1064 s->vdev.lock = &s->v4l2_lock;
1065 s->vdev.device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
1066 V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
1069 1067
1070 ret = video_register_device(&s->vdev, VFL_TYPE_SDR, -1); 1068 ret = video_register_device(&s->vdev, VFL_TYPE_SDR, -1);
1071 if (ret) { 1069 if (ret) {
diff --git a/drivers/media/usb/au0828/au0828-video.c b/drivers/media/usb/au0828/au0828-video.c
index 4bde3db83aa2..981ee08fb05f 100644
--- a/drivers/media/usb/au0828/au0828-video.c
+++ b/drivers/media/usb/au0828/au0828-video.c
@@ -1191,7 +1191,6 @@ static int au0828_set_format(struct au0828_dev *dev, unsigned int cmd,
1191static int vidioc_querycap(struct file *file, void *priv, 1191static int vidioc_querycap(struct file *file, void *priv,
1192 struct v4l2_capability *cap) 1192 struct v4l2_capability *cap)
1193{ 1193{
1194 struct video_device *vdev = video_devdata(file);
1195 struct au0828_dev *dev = video_drvdata(file); 1194 struct au0828_dev *dev = video_drvdata(file);
1196 1195
1197 dprintk(1, "%s called std_set %d dev_state %ld\n", __func__, 1196 dprintk(1, "%s called std_set %d dev_state %ld\n", __func__,
@@ -1202,16 +1201,10 @@ static int vidioc_querycap(struct file *file, void *priv,
1202 usb_make_path(dev->usbdev, cap->bus_info, sizeof(cap->bus_info)); 1201 usb_make_path(dev->usbdev, cap->bus_info, sizeof(cap->bus_info));
1203 1202
1204 /* set the device capabilities */ 1203 /* set the device capabilities */
1205 cap->device_caps = V4L2_CAP_AUDIO | 1204 cap->capabilities =
1206 V4L2_CAP_READWRITE | 1205 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
1207 V4L2_CAP_STREAMING | 1206 V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE |
1208 V4L2_CAP_TUNER; 1207 V4L2_CAP_DEVICE_CAPS;
1209 if (vdev->vfl_type == VFL_TYPE_GRABBER)
1210 cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE;
1211 else
1212 cap->device_caps |= V4L2_CAP_VBI_CAPTURE;
1213 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS |
1214 V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE;
1215 return 0; 1208 return 0;
1216} 1209}
1217 1210
@@ -2000,6 +1993,9 @@ int au0828_analog_register(struct au0828_dev *dev,
2000 dev->vdev.lock = &dev->lock; 1993 dev->vdev.lock = &dev->lock;
2001 dev->vdev.queue = &dev->vb_vidq; 1994 dev->vdev.queue = &dev->vb_vidq;
2002 dev->vdev.queue->lock = &dev->vb_queue_lock; 1995 dev->vdev.queue->lock = &dev->vb_queue_lock;
1996 dev->vdev.device_caps =
1997 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
1998 V4L2_CAP_TUNER | V4L2_CAP_VIDEO_CAPTURE;
2003 strscpy(dev->vdev.name, "au0828a video", sizeof(dev->vdev.name)); 1999 strscpy(dev->vdev.name, "au0828a video", sizeof(dev->vdev.name));
2004 2000
2005 /* Setup the VBI device */ 2001 /* Setup the VBI device */
@@ -2008,6 +2004,9 @@ int au0828_analog_register(struct au0828_dev *dev,
2008 dev->vbi_dev.lock = &dev->lock; 2004 dev->vbi_dev.lock = &dev->lock;
2009 dev->vbi_dev.queue = &dev->vb_vbiq; 2005 dev->vbi_dev.queue = &dev->vb_vbiq;
2010 dev->vbi_dev.queue->lock = &dev->vb_vbi_queue_lock; 2006 dev->vbi_dev.queue->lock = &dev->vb_vbi_queue_lock;
2007 dev->vbi_dev.device_caps =
2008 V4L2_CAP_AUDIO | V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
2009 V4L2_CAP_TUNER | V4L2_CAP_VBI_CAPTURE;
2011 strscpy(dev->vbi_dev.name, "au0828a vbi", sizeof(dev->vbi_dev.name)); 2010 strscpy(dev->vbi_dev.name, "au0828a vbi", sizeof(dev->vbi_dev.name));
2012 2011
2013 /* Init entities at the Media Controller */ 2012 /* Init entities at the Media Controller */
diff --git a/drivers/media/usb/cpia2/cpia2_v4l.c b/drivers/media/usb/cpia2/cpia2_v4l.c
index 45caf78119c4..d3533e9f32a3 100644
--- a/drivers/media/usb/cpia2/cpia2_v4l.c
+++ b/drivers/media/usb/cpia2/cpia2_v4l.c
@@ -259,13 +259,6 @@ static int cpia2_querycap(struct file *file, void *fh, struct v4l2_capability *v
259 259
260 if (usb_make_path(cam->dev, vc->bus_info, sizeof(vc->bus_info)) <0) 260 if (usb_make_path(cam->dev, vc->bus_info, sizeof(vc->bus_info)) <0)
261 memset(vc->bus_info,0, sizeof(vc->bus_info)); 261 memset(vc->bus_info,0, sizeof(vc->bus_info));
262
263 vc->device_caps = V4L2_CAP_VIDEO_CAPTURE |
264 V4L2_CAP_READWRITE |
265 V4L2_CAP_STREAMING;
266 vc->capabilities = vc->device_caps |
267 V4L2_CAP_DEVICE_CAPS;
268
269 return 0; 262 return 0;
270} 263}
271 264
@@ -1161,6 +1154,8 @@ int cpia2_register_camera(struct camera_data *cam)
1161 cam->vdev.lock = &cam->v4l2_lock; 1154 cam->vdev.lock = &cam->v4l2_lock;
1162 cam->vdev.ctrl_handler = hdl; 1155 cam->vdev.ctrl_handler = hdl;
1163 cam->vdev.v4l2_dev = &cam->v4l2_dev; 1156 cam->vdev.v4l2_dev = &cam->v4l2_dev;
1157 cam->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
1158 V4L2_CAP_STREAMING;
1164 1159
1165 reset_camera_struct_v4l(cam); 1160 reset_camera_struct_v4l(cam);
1166 1161
diff --git a/drivers/media/usb/cx231xx/cx231xx-video.c b/drivers/media/usb/cx231xx/cx231xx-video.c
index f8820478d46b..b651ac7713ea 100644
--- a/drivers/media/usb/cx231xx/cx231xx-video.c
+++ b/drivers/media/usb/cx231xx/cx231xx-video.c
@@ -1555,30 +1555,19 @@ static int vidioc_streamoff(struct file *file, void *priv,
1555int cx231xx_querycap(struct file *file, void *priv, 1555int cx231xx_querycap(struct file *file, void *priv,
1556 struct v4l2_capability *cap) 1556 struct v4l2_capability *cap)
1557{ 1557{
1558 struct video_device *vdev = video_devdata(file);
1559 struct cx231xx_fh *fh = priv; 1558 struct cx231xx_fh *fh = priv;
1560 struct cx231xx *dev = fh->dev; 1559 struct cx231xx *dev = fh->dev;
1561 1560
1562 strscpy(cap->driver, "cx231xx", sizeof(cap->driver)); 1561 strscpy(cap->driver, "cx231xx", sizeof(cap->driver));
1563 strscpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card)); 1562 strscpy(cap->card, cx231xx_boards[dev->model].name, sizeof(cap->card));
1564 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 1563 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
1565 1564 cap->capabilities = V4L2_CAP_READWRITE |
1566 if (vdev->vfl_type == VFL_TYPE_RADIO)
1567 cap->device_caps = V4L2_CAP_RADIO;
1568 else {
1569 cap->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
1570 if (vdev->vfl_type == VFL_TYPE_VBI)
1571 cap->device_caps |= V4L2_CAP_VBI_CAPTURE;
1572 else
1573 cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE;
1574 }
1575 if (dev->tuner_type != TUNER_ABSENT)
1576 cap->device_caps |= V4L2_CAP_TUNER;
1577 cap->capabilities = cap->device_caps | V4L2_CAP_READWRITE |
1578 V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE | 1565 V4L2_CAP_VBI_CAPTURE | V4L2_CAP_VIDEO_CAPTURE |
1579 V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS; 1566 V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
1580 if (video_is_registered(&dev->radio_dev)) 1567 if (video_is_registered(&dev->radio_dev))
1581 cap->capabilities |= V4L2_CAP_RADIO; 1568 cap->capabilities |= V4L2_CAP_RADIO;
1569 if (dev->tuner_type != TUNER_ABSENT)
1570 cap->capabilities |= V4L2_CAP_TUNER;
1582 1571
1583 return 0; 1572 return 0;
1584} 1573}
@@ -2234,6 +2223,11 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
2234 dev_err(dev->dev, "failed to initialize video media entity!\n"); 2223 dev_err(dev->dev, "failed to initialize video media entity!\n");
2235#endif 2224#endif
2236 dev->vdev.ctrl_handler = &dev->ctrl_handler; 2225 dev->vdev.ctrl_handler = &dev->ctrl_handler;
2226 dev->vdev.device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
2227 V4L2_CAP_VIDEO_CAPTURE;
2228 if (dev->tuner_type != TUNER_ABSENT)
2229 dev->vdev.device_caps |= V4L2_CAP_TUNER;
2230
2237 /* register v4l2 video video_device */ 2231 /* register v4l2 video video_device */
2238 ret = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, 2232 ret = video_register_device(&dev->vdev, VFL_TYPE_GRABBER,
2239 video_nr[dev->devno]); 2233 video_nr[dev->devno]);
@@ -2262,6 +2256,11 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
2262 dev_err(dev->dev, "failed to initialize vbi media entity!\n"); 2256 dev_err(dev->dev, "failed to initialize vbi media entity!\n");
2263#endif 2257#endif
2264 dev->vbi_dev.ctrl_handler = &dev->ctrl_handler; 2258 dev->vbi_dev.ctrl_handler = &dev->ctrl_handler;
2259 dev->vbi_dev.device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
2260 V4L2_CAP_VBI_CAPTURE;
2261 if (dev->tuner_type != TUNER_ABSENT)
2262 dev->vbi_dev.device_caps |= V4L2_CAP_TUNER;
2263
2265 /* register v4l2 vbi video_device */ 2264 /* register v4l2 vbi video_device */
2266 ret = video_register_device(&dev->vbi_dev, VFL_TYPE_VBI, 2265 ret = video_register_device(&dev->vbi_dev, VFL_TYPE_VBI,
2267 vbi_nr[dev->devno]); 2266 vbi_nr[dev->devno]);
@@ -2277,6 +2276,7 @@ int cx231xx_register_analog_devices(struct cx231xx *dev)
2277 cx231xx_vdev_init(dev, &dev->radio_dev, 2276 cx231xx_vdev_init(dev, &dev->radio_dev,
2278 &cx231xx_radio_template, "radio"); 2277 &cx231xx_radio_template, "radio");
2279 dev->radio_dev.ctrl_handler = &dev->radio_ctrl_handler; 2278 dev->radio_dev.ctrl_handler = &dev->radio_ctrl_handler;
2279 dev->radio_dev.device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
2280 ret = video_register_device(&dev->radio_dev, VFL_TYPE_RADIO, 2280 ret = video_register_device(&dev->radio_dev, VFL_TYPE_RADIO,
2281 radio_nr[dev->devno]); 2281 radio_nr[dev->devno]);
2282 if (ret < 0) { 2282 if (ret < 0) {
diff --git a/drivers/media/usb/em28xx/em28xx-video.c b/drivers/media/usb/em28xx/em28xx-video.c
index f43717ea831d..0512e1959394 100644
--- a/drivers/media/usb/em28xx/em28xx-video.c
+++ b/drivers/media/usb/em28xx/em28xx-video.c
@@ -1984,7 +1984,6 @@ static int vidioc_s_register(struct file *file, void *priv,
1984static int vidioc_querycap(struct file *file, void *priv, 1984static int vidioc_querycap(struct file *file, void *priv,
1985 struct v4l2_capability *cap) 1985 struct v4l2_capability *cap)
1986{ 1986{
1987 struct video_device *vdev = video_devdata(file);
1988 struct em28xx *dev = video_drvdata(file); 1987 struct em28xx *dev = video_drvdata(file);
1989 struct em28xx_v4l2 *v4l2 = dev->v4l2; 1988 struct em28xx_v4l2 *v4l2 = dev->v4l2;
1990 struct usb_device *udev = interface_to_usbdev(dev->intf); 1989 struct usb_device *udev = interface_to_usbdev(dev->intf);
@@ -1993,23 +1992,12 @@ static int vidioc_querycap(struct file *file, void *priv,
1993 strscpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card)); 1992 strscpy(cap->card, em28xx_boards[dev->model].name, sizeof(cap->card));
1994 usb_make_path(udev, cap->bus_info, sizeof(cap->bus_info)); 1993 usb_make_path(udev, cap->bus_info, sizeof(cap->bus_info));
1995 1994
1996 if (vdev->vfl_type == VFL_TYPE_GRABBER) 1995 cap->capabilities = V4L2_CAP_DEVICE_CAPS | V4L2_CAP_READWRITE |
1997 cap->device_caps = V4L2_CAP_READWRITE | 1996 V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
1998 V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
1999 else if (vdev->vfl_type == VFL_TYPE_RADIO)
2000 cap->device_caps = V4L2_CAP_RADIO;
2001 else
2002 cap->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_VBI_CAPTURE;
2003
2004 if (dev->int_audio_type != EM28XX_INT_AUDIO_NONE) 1997 if (dev->int_audio_type != EM28XX_INT_AUDIO_NONE)
2005 cap->device_caps |= V4L2_CAP_AUDIO; 1998 cap->capabilities |= V4L2_CAP_AUDIO;
2006
2007 if (dev->tuner_type != TUNER_ABSENT) 1999 if (dev->tuner_type != TUNER_ABSENT)
2008 cap->device_caps |= V4L2_CAP_TUNER; 2000 cap->capabilities |= V4L2_CAP_TUNER;
2009
2010 cap->capabilities = cap->device_caps |
2011 V4L2_CAP_DEVICE_CAPS | V4L2_CAP_READWRITE |
2012 V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING;
2013 if (video_is_registered(&v4l2->vbi_dev)) 2001 if (video_is_registered(&v4l2->vbi_dev))
2014 cap->capabilities |= V4L2_CAP_VBI_CAPTURE; 2002 cap->capabilities |= V4L2_CAP_VBI_CAPTURE;
2015 if (video_is_registered(&v4l2->radio_dev)) 2003 if (video_is_registered(&v4l2->radio_dev))
@@ -2782,6 +2770,13 @@ static int em28xx_v4l2_init(struct em28xx *dev)
2782 mutex_init(&v4l2->vb_vbi_queue_lock); 2770 mutex_init(&v4l2->vb_vbi_queue_lock);
2783 v4l2->vdev.queue = &v4l2->vb_vidq; 2771 v4l2->vdev.queue = &v4l2->vb_vidq;
2784 v4l2->vdev.queue->lock = &v4l2->vb_queue_lock; 2772 v4l2->vdev.queue->lock = &v4l2->vb_queue_lock;
2773 v4l2->vdev.device_caps = V4L2_CAP_READWRITE | V4L2_CAP_VIDEO_CAPTURE |
2774 V4L2_CAP_STREAMING;
2775 if (dev->int_audio_type != EM28XX_INT_AUDIO_NONE)
2776 v4l2->vdev.device_caps |= V4L2_CAP_AUDIO;
2777 if (dev->tuner_type != TUNER_ABSENT)
2778 v4l2->vdev.device_caps |= V4L2_CAP_TUNER;
2779
2785 2780
2786 /* disable inapplicable ioctls */ 2781 /* disable inapplicable ioctls */
2787 if (dev->is_webcam) { 2782 if (dev->is_webcam) {
@@ -2818,6 +2813,10 @@ static int em28xx_v4l2_init(struct em28xx *dev)
2818 2813
2819 v4l2->vbi_dev.queue = &v4l2->vb_vbiq; 2814 v4l2->vbi_dev.queue = &v4l2->vb_vbiq;
2820 v4l2->vbi_dev.queue->lock = &v4l2->vb_vbi_queue_lock; 2815 v4l2->vbi_dev.queue->lock = &v4l2->vb_vbi_queue_lock;
2816 v4l2->vbi_dev.device_caps = V4L2_CAP_STREAMING |
2817 V4L2_CAP_READWRITE | V4L2_CAP_VBI_CAPTURE;
2818 if (dev->tuner_type != TUNER_ABSENT)
2819 v4l2->vbi_dev.device_caps |= V4L2_CAP_TUNER;
2821 2820
2822 /* disable inapplicable ioctls */ 2821 /* disable inapplicable ioctls */
2823 v4l2_disable_ioctl(&v4l2->vbi_dev, VIDIOC_S_PARM); 2822 v4l2_disable_ioctl(&v4l2->vbi_dev, VIDIOC_S_PARM);
@@ -2845,6 +2844,7 @@ static int em28xx_v4l2_init(struct em28xx *dev)
2845 if (em28xx_boards[dev->model].radio.type == EM28XX_RADIO) { 2844 if (em28xx_boards[dev->model].radio.type == EM28XX_RADIO) {
2846 em28xx_vdev_init(dev, &v4l2->radio_dev, &em28xx_radio_template, 2845 em28xx_vdev_init(dev, &v4l2->radio_dev, &em28xx_radio_template,
2847 "radio"); 2846 "radio");
2847 v4l2->radio_dev.device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
2848 ret = video_register_device(&v4l2->radio_dev, VFL_TYPE_RADIO, 2848 ret = video_register_device(&v4l2->radio_dev, VFL_TYPE_RADIO,
2849 radio_nr[dev->devno]); 2849 radio_nr[dev->devno]);
2850 if (ret < 0) { 2850 if (ret < 0) {
diff --git a/drivers/media/usb/go7007/go7007-v4l2.c b/drivers/media/usb/go7007/go7007-v4l2.c
index bebdfcecf600..ffbbd393bc7e 100644
--- a/drivers/media/usb/go7007/go7007-v4l2.c
+++ b/drivers/media/usb/go7007/go7007-v4l2.c
@@ -287,15 +287,6 @@ static int vidioc_querycap(struct file *file, void *priv,
287 strscpy(cap->driver, "go7007", sizeof(cap->driver)); 287 strscpy(cap->driver, "go7007", sizeof(cap->driver));
288 strscpy(cap->card, go->name, sizeof(cap->card)); 288 strscpy(cap->card, go->name, sizeof(cap->card));
289 strscpy(cap->bus_info, go->bus_info, sizeof(cap->bus_info)); 289 strscpy(cap->bus_info, go->bus_info, sizeof(cap->bus_info));
290
291 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
292 V4L2_CAP_STREAMING;
293
294 if (go->board_info->num_aud_inputs)
295 cap->device_caps |= V4L2_CAP_AUDIO;
296 if (go->board_info->flags & GO7007_BOARD_HAS_TUNER)
297 cap->device_caps |= V4L2_CAP_TUNER;
298 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
299 return 0; 290 return 0;
300} 291}
301 292
@@ -1122,6 +1113,12 @@ int go7007_v4l2_init(struct go7007 *go)
1122 *vdev = go7007_template; 1113 *vdev = go7007_template;
1123 vdev->lock = &go->serialize_lock; 1114 vdev->lock = &go->serialize_lock;
1124 vdev->queue = &go->vidq; 1115 vdev->queue = &go->vidq;
1116 vdev->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
1117 V4L2_CAP_STREAMING;
1118 if (go->board_info->num_aud_inputs)
1119 vdev->device_caps |= V4L2_CAP_AUDIO;
1120 if (go->board_info->flags & GO7007_BOARD_HAS_TUNER)
1121 vdev->device_caps |= V4L2_CAP_TUNER;
1125 video_set_drvdata(vdev, go); 1122 video_set_drvdata(vdev, go);
1126 vdev->v4l2_dev = &go->v4l2_dev; 1123 vdev->v4l2_dev = &go->v4l2_dev;
1127 if (!v4l2_device_has_op(&go->v4l2_dev, 0, video, querystd)) 1124 if (!v4l2_device_has_op(&go->v4l2_dev, 0, video, querystd))
diff --git a/drivers/media/usb/gspca/gspca.c b/drivers/media/usb/gspca/gspca.c
index 4d7517411cc2..d389020b50f9 100644
--- a/drivers/media/usb/gspca/gspca.c
+++ b/drivers/media/usb/gspca/gspca.c
@@ -1218,10 +1218,6 @@ static int vidioc_querycap(struct file *file, void *priv,
1218 } 1218 }
1219 usb_make_path(gspca_dev->dev, (char *) cap->bus_info, 1219 usb_make_path(gspca_dev->dev, (char *) cap->bus_info,
1220 sizeof(cap->bus_info)); 1220 sizeof(cap->bus_info));
1221 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE
1222 | V4L2_CAP_STREAMING
1223 | V4L2_CAP_READWRITE;
1224 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
1225 return 0; 1221 return 0;
1226} 1222}
1227 1223
@@ -1517,6 +1513,8 @@ int gspca_dev_probe2(struct usb_interface *intf,
1517 gspca_dev->empty_packet = -1; /* don't check the empty packets */ 1513 gspca_dev->empty_packet = -1; /* don't check the empty packets */
1518 gspca_dev->vdev = gspca_template; 1514 gspca_dev->vdev = gspca_template;
1519 gspca_dev->vdev.v4l2_dev = &gspca_dev->v4l2_dev; 1515 gspca_dev->vdev.v4l2_dev = &gspca_dev->v4l2_dev;
1516 gspca_dev->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE |
1517 V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
1520 video_set_drvdata(&gspca_dev->vdev, gspca_dev); 1518 video_set_drvdata(&gspca_dev->vdev, gspca_dev);
1521 gspca_dev->module = module; 1519 gspca_dev->module = module;
1522 1520
diff --git a/drivers/media/usb/hackrf/hackrf.c b/drivers/media/usb/hackrf/hackrf.c
index d43785206622..d625263f4984 100644
--- a/drivers/media/usb/hackrf/hackrf.c
+++ b/drivers/media/usb/hackrf/hackrf.c
@@ -905,19 +905,13 @@ static int hackrf_querycap(struct file *file, void *fh,
905{ 905{
906 struct hackrf_dev *dev = video_drvdata(file); 906 struct hackrf_dev *dev = video_drvdata(file);
907 struct usb_interface *intf = dev->intf; 907 struct usb_interface *intf = dev->intf;
908 struct video_device *vdev = video_devdata(file);
909 908
910 dev_dbg(&intf->dev, "\n"); 909 dev_dbg(&intf->dev, "\n");
911 910
912 cap->device_caps = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
913 if (vdev->vfl_dir == VFL_DIR_RX)
914 cap->device_caps |= V4L2_CAP_SDR_CAPTURE | V4L2_CAP_TUNER;
915 else
916 cap->device_caps |= V4L2_CAP_SDR_OUTPUT | V4L2_CAP_MODULATOR;
917
918 cap->capabilities = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_TUNER | 911 cap->capabilities = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_TUNER |
919 V4L2_CAP_SDR_OUTPUT | V4L2_CAP_MODULATOR | 912 V4L2_CAP_SDR_OUTPUT | V4L2_CAP_MODULATOR |
920 V4L2_CAP_DEVICE_CAPS | cap->device_caps; 913 V4L2_CAP_STREAMING | V4L2_CAP_READWRITE |
914 V4L2_CAP_DEVICE_CAPS;
921 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); 915 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
922 strscpy(cap->card, dev->rx_vdev.name, sizeof(cap->card)); 916 strscpy(cap->card, dev->rx_vdev.name, sizeof(cap->card));
923 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 917 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
@@ -1496,6 +1490,8 @@ static int hackrf_probe(struct usb_interface *intf,
1496 dev->rx_vdev.ctrl_handler = &dev->rx_ctrl_handler; 1490 dev->rx_vdev.ctrl_handler = &dev->rx_ctrl_handler;
1497 dev->rx_vdev.lock = &dev->v4l2_lock; 1491 dev->rx_vdev.lock = &dev->v4l2_lock;
1498 dev->rx_vdev.vfl_dir = VFL_DIR_RX; 1492 dev->rx_vdev.vfl_dir = VFL_DIR_RX;
1493 dev->rx_vdev.device_caps = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE |
1494 V4L2_CAP_SDR_CAPTURE | V4L2_CAP_TUNER;
1499 video_set_drvdata(&dev->rx_vdev, dev); 1495 video_set_drvdata(&dev->rx_vdev, dev);
1500 ret = video_register_device(&dev->rx_vdev, VFL_TYPE_SDR, -1); 1496 ret = video_register_device(&dev->rx_vdev, VFL_TYPE_SDR, -1);
1501 if (ret) { 1497 if (ret) {
@@ -1514,6 +1510,8 @@ static int hackrf_probe(struct usb_interface *intf,
1514 dev->tx_vdev.ctrl_handler = &dev->tx_ctrl_handler; 1510 dev->tx_vdev.ctrl_handler = &dev->tx_ctrl_handler;
1515 dev->tx_vdev.lock = &dev->v4l2_lock; 1511 dev->tx_vdev.lock = &dev->v4l2_lock;
1516 dev->tx_vdev.vfl_dir = VFL_DIR_TX; 1512 dev->tx_vdev.vfl_dir = VFL_DIR_TX;
1513 dev->tx_vdev.device_caps = V4L2_CAP_STREAMING | V4L2_CAP_READWRITE |
1514 V4L2_CAP_SDR_OUTPUT | V4L2_CAP_MODULATOR;
1517 video_set_drvdata(&dev->tx_vdev, dev); 1515 video_set_drvdata(&dev->tx_vdev, dev);
1518 ret = video_register_device(&dev->tx_vdev, VFL_TYPE_SDR, -1); 1516 ret = video_register_device(&dev->tx_vdev, VFL_TYPE_SDR, -1);
1519 if (ret) { 1517 if (ret) {
diff --git a/drivers/media/usb/hdpvr/hdpvr-video.c b/drivers/media/usb/hdpvr/hdpvr-video.c
index 3804aa3fb50f..a675506e8939 100644
--- a/drivers/media/usb/hdpvr/hdpvr-video.c
+++ b/drivers/media/usb/hdpvr/hdpvr-video.c
@@ -581,9 +581,6 @@ static int vidioc_querycap(struct file *file, void *priv,
581 strscpy(cap->driver, "hdpvr", sizeof(cap->driver)); 581 strscpy(cap->driver, "hdpvr", sizeof(cap->driver));
582 strscpy(cap->card, "Hauppauge HD PVR", sizeof(cap->card)); 582 strscpy(cap->card, "Hauppauge HD PVR", sizeof(cap->card));
583 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 583 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
584 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO |
585 V4L2_CAP_READWRITE;
586 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
587 return 0; 584 return 0;
588} 585}
589 586
@@ -1154,6 +1151,8 @@ static const struct video_device hdpvr_video_template = {
1154 .release = hdpvr_device_release, 1151 .release = hdpvr_device_release,
1155 .ioctl_ops = &hdpvr_ioctl_ops, 1152 .ioctl_ops = &hdpvr_ioctl_ops,
1156 .tvnorms = V4L2_STD_ALL, 1153 .tvnorms = V4L2_STD_ALL,
1154 .device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO |
1155 V4L2_CAP_READWRITE,
1157}; 1156};
1158 1157
1159static const struct v4l2_ctrl_ops hdpvr_ctrl_ops = { 1158static const struct v4l2_ctrl_ops hdpvr_ctrl_ops = {
diff --git a/drivers/media/usb/msi2500/msi2500.c b/drivers/media/usb/msi2500/msi2500.c
index 10b5b95bee34..384d9bbd6495 100644
--- a/drivers/media/usb/msi2500/msi2500.c
+++ b/drivers/media/usb/msi2500/msi2500.c
@@ -607,9 +607,6 @@ static int msi2500_querycap(struct file *file, void *fh,
607 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver)); 607 strscpy(cap->driver, KBUILD_MODNAME, sizeof(cap->driver));
608 strscpy(cap->card, dev->vdev.name, sizeof(cap->card)); 608 strscpy(cap->card, dev->vdev.name, sizeof(cap->card));
609 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 609 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
610 cap->device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
611 V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
612 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
613 return 0; 610 return 0;
614} 611}
615 612
@@ -1283,6 +1280,8 @@ static int msi2500_probe(struct usb_interface *intf,
1283 dev->v4l2_dev.ctrl_handler = &dev->hdl; 1280 dev->v4l2_dev.ctrl_handler = &dev->hdl;
1284 dev->vdev.v4l2_dev = &dev->v4l2_dev; 1281 dev->vdev.v4l2_dev = &dev->v4l2_dev;
1285 dev->vdev.lock = &dev->v4l2_lock; 1282 dev->vdev.lock = &dev->v4l2_lock;
1283 dev->vdev.device_caps = V4L2_CAP_SDR_CAPTURE | V4L2_CAP_STREAMING |
1284 V4L2_CAP_READWRITE | V4L2_CAP_TUNER;
1286 1285
1287 ret = video_register_device(&dev->vdev, VFL_TYPE_SDR, -1); 1286 ret = video_register_device(&dev->vdev, VFL_TYPE_SDR, -1);
1288 if (ret) { 1287 if (ret) {
diff --git a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
index cb6668580d77..30701ecc84c5 100644
--- a/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
+++ b/drivers/media/usb/pvrusb2/pvrusb2-v4l2.c
@@ -128,17 +128,6 @@ static int pvr2_querycap(struct file *file, void *priv, struct v4l2_capability *
128 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER | 128 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_TUNER |
129 V4L2_CAP_AUDIO | V4L2_CAP_RADIO | 129 V4L2_CAP_AUDIO | V4L2_CAP_RADIO |
130 V4L2_CAP_READWRITE | V4L2_CAP_DEVICE_CAPS; 130 V4L2_CAP_READWRITE | V4L2_CAP_DEVICE_CAPS;
131 switch (fh->pdi->devbase.vfl_type) {
132 case VFL_TYPE_GRABBER:
133 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO;
134 break;
135 case VFL_TYPE_RADIO:
136 cap->device_caps = V4L2_CAP_RADIO;
137 break;
138 default:
139 return -EINVAL;
140 }
141 cap->device_caps |= V4L2_CAP_TUNER | V4L2_CAP_READWRITE;
142 return 0; 131 return 0;
143} 132}
144 133
@@ -1205,6 +1194,8 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
1205 int unit_number; 1194 int unit_number;
1206 struct pvr2_hdw *hdw; 1195 struct pvr2_hdw *hdw;
1207 int *nr_ptr = NULL; 1196 int *nr_ptr = NULL;
1197 u32 caps = V4L2_CAP_TUNER | V4L2_CAP_READWRITE;
1198
1208 dip->v4lp = vp; 1199 dip->v4lp = vp;
1209 1200
1210 hdw = vp->channel.mc_head->hdw; 1201 hdw = vp->channel.mc_head->hdw;
@@ -1215,6 +1206,7 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
1215 dip->config = pvr2_config_mpeg; 1206 dip->config = pvr2_config_mpeg;
1216 dip->minor_type = pvr2_v4l_type_video; 1207 dip->minor_type = pvr2_v4l_type_video;
1217 nr_ptr = video_nr; 1208 nr_ptr = video_nr;
1209 caps |= V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_AUDIO;
1218 if (!dip->stream) { 1210 if (!dip->stream) {
1219 pr_err(KBUILD_MODNAME 1211 pr_err(KBUILD_MODNAME
1220 ": Failed to set up pvrusb2 v4l video dev due to missing stream instance\n"); 1212 ": Failed to set up pvrusb2 v4l video dev due to missing stream instance\n");
@@ -1225,12 +1217,14 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
1225 dip->config = pvr2_config_vbi; 1217 dip->config = pvr2_config_vbi;
1226 dip->minor_type = pvr2_v4l_type_vbi; 1218 dip->minor_type = pvr2_v4l_type_vbi;
1227 nr_ptr = vbi_nr; 1219 nr_ptr = vbi_nr;
1220 caps |= V4L2_CAP_VBI_CAPTURE;
1228 break; 1221 break;
1229 case VFL_TYPE_RADIO: 1222 case VFL_TYPE_RADIO:
1230 dip->stream = &vp->channel.mc_head->video_stream; 1223 dip->stream = &vp->channel.mc_head->video_stream;
1231 dip->config = pvr2_config_mpeg; 1224 dip->config = pvr2_config_mpeg;
1232 dip->minor_type = pvr2_v4l_type_radio; 1225 dip->minor_type = pvr2_v4l_type_radio;
1233 nr_ptr = radio_nr; 1226 nr_ptr = radio_nr;
1227 caps |= V4L2_CAP_RADIO;
1234 break; 1228 break;
1235 default: 1229 default:
1236 /* Bail out (this should be impossible) */ 1230 /* Bail out (this should be impossible) */
@@ -1241,6 +1235,7 @@ static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
1241 dip->devbase = vdev_template; 1235 dip->devbase = vdev_template;
1242 dip->devbase.release = pvr2_video_device_release; 1236 dip->devbase.release = pvr2_video_device_release;
1243 dip->devbase.ioctl_ops = &pvr2_ioctl_ops; 1237 dip->devbase.ioctl_ops = &pvr2_ioctl_ops;
1238 dip->devbase.device_caps = caps;
1244 { 1239 {
1245 int val; 1240 int val;
1246 pvr2_ctrl_get_value( 1241 pvr2_ctrl_get_value(
diff --git a/drivers/media/usb/pwc/pwc-if.c b/drivers/media/usb/pwc/pwc-if.c
index 4e94197094ad..a1bd1cb5924b 100644
--- a/drivers/media/usb/pwc/pwc-if.c
+++ b/drivers/media/usb/pwc/pwc-if.c
@@ -1125,6 +1125,8 @@ static int usb_pwc_probe(struct usb_interface *intf, const struct usb_device_id
1125 pdev->v4l2_dev.ctrl_handler = &pdev->ctrl_handler; 1125 pdev->v4l2_dev.ctrl_handler = &pdev->ctrl_handler;
1126 pdev->vdev.v4l2_dev = &pdev->v4l2_dev; 1126 pdev->vdev.v4l2_dev = &pdev->v4l2_dev;
1127 pdev->vdev.lock = &pdev->v4l2_lock; 1127 pdev->vdev.lock = &pdev->v4l2_lock;
1128 pdev->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
1129 V4L2_CAP_READWRITE;
1128 1130
1129 rc = video_register_device(&pdev->vdev, VFL_TYPE_GRABBER, -1); 1131 rc = video_register_device(&pdev->vdev, VFL_TYPE_GRABBER, -1);
1130 if (rc < 0) { 1132 if (rc < 0) {
diff --git a/drivers/media/usb/pwc/pwc-v4l.c b/drivers/media/usb/pwc/pwc-v4l.c
index bef6e4ef8a7e..85efb433c004 100644
--- a/drivers/media/usb/pwc/pwc-v4l.c
+++ b/drivers/media/usb/pwc/pwc-v4l.c
@@ -495,9 +495,6 @@ static int pwc_querycap(struct file *file, void *fh, struct v4l2_capability *cap
495 strscpy(cap->driver, PWC_NAME, sizeof(cap->driver)); 495 strscpy(cap->driver, PWC_NAME, sizeof(cap->driver));
496 strscpy(cap->card, pdev->vdev.name, sizeof(cap->card)); 496 strscpy(cap->card, pdev->vdev.name, sizeof(cap->card));
497 usb_make_path(pdev->udev, cap->bus_info, sizeof(cap->bus_info)); 497 usb_make_path(pdev->udev, cap->bus_info, sizeof(cap->bus_info));
498 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
499 V4L2_CAP_READWRITE;
500 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
501 return 0; 498 return 0;
502} 499}
503 500
diff --git a/drivers/media/usb/s2255/s2255drv.c b/drivers/media/usb/s2255/s2255drv.c
index 5b3e54b76e9a..15c1cf18266a 100644
--- a/drivers/media/usb/s2255/s2255drv.c
+++ b/drivers/media/usb/s2255/s2255drv.c
@@ -733,9 +733,6 @@ static int vidioc_querycap(struct file *file, void *priv,
733 strscpy(cap->driver, "s2255", sizeof(cap->driver)); 733 strscpy(cap->driver, "s2255", sizeof(cap->driver));
734 strscpy(cap->card, "s2255", sizeof(cap->card)); 734 strscpy(cap->card, "s2255", sizeof(cap->card));
735 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 735 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
736 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
737 V4L2_CAP_READWRITE;
738 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
739 return 0; 736 return 0;
740} 737}
741 738
@@ -1666,6 +1663,8 @@ static int s2255_probe_v4l(struct s2255_dev *dev)
1666 vc->vdev.ctrl_handler = &vc->hdl; 1663 vc->vdev.ctrl_handler = &vc->hdl;
1667 vc->vdev.lock = &dev->lock; 1664 vc->vdev.lock = &dev->lock;
1668 vc->vdev.v4l2_dev = &dev->v4l2_dev; 1665 vc->vdev.v4l2_dev = &dev->v4l2_dev;
1666 vc->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE |
1667 V4L2_CAP_STREAMING | V4L2_CAP_READWRITE;
1669 video_set_drvdata(&vc->vdev, vc); 1668 video_set_drvdata(&vc->vdev, vc);
1670 if (video_nr == -1) 1669 if (video_nr == -1)
1671 ret = video_register_device(&vc->vdev, 1670 ret = video_register_device(&vc->vdev,
diff --git a/drivers/media/usb/stk1160/stk1160-v4l.c b/drivers/media/usb/stk1160/stk1160-v4l.c
index 701ed3d4afe6..166e867b2001 100644
--- a/drivers/media/usb/stk1160/stk1160-v4l.c
+++ b/drivers/media/usb/stk1160/stk1160-v4l.c
@@ -347,11 +347,6 @@ static int vidioc_querycap(struct file *file,
347 strscpy(cap->driver, "stk1160", sizeof(cap->driver)); 347 strscpy(cap->driver, "stk1160", sizeof(cap->driver));
348 strscpy(cap->card, "stk1160", sizeof(cap->card)); 348 strscpy(cap->card, "stk1160", sizeof(cap->card));
349 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 349 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
350 cap->device_caps =
351 V4L2_CAP_VIDEO_CAPTURE |
352 V4L2_CAP_STREAMING |
353 V4L2_CAP_READWRITE;
354 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
355 return 0; 350 return 0;
356} 351}
357 352
@@ -831,6 +826,8 @@ int stk1160_video_register(struct stk1160 *dev)
831 826
832 /* This will be used to set video_device parent */ 827 /* This will be used to set video_device parent */
833 dev->vdev.v4l2_dev = &dev->v4l2_dev; 828 dev->vdev.v4l2_dev = &dev->v4l2_dev;
829 dev->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
830 V4L2_CAP_READWRITE;
834 831
835 /* NTSC is default */ 832 /* NTSC is default */
836 dev->norm = V4L2_STD_NTSC_M; 833 dev->norm = V4L2_STD_NTSC_M;
diff --git a/drivers/media/usb/stkwebcam/stk-webcam.c b/drivers/media/usb/stkwebcam/stk-webcam.c
index cb7d6454bbe1..be8041e3e6b8 100644
--- a/drivers/media/usb/stkwebcam/stk-webcam.c
+++ b/drivers/media/usb/stkwebcam/stk-webcam.c
@@ -798,10 +798,6 @@ static int stk_vidioc_querycap(struct file *filp,
798 strscpy(cap->driver, "stk", sizeof(cap->driver)); 798 strscpy(cap->driver, "stk", sizeof(cap->driver));
799 strscpy(cap->card, "stk", sizeof(cap->card)); 799 strscpy(cap->card, "stk", sizeof(cap->card));
800 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 800 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
801
802 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE
803 | V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
804 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
805 return 0; 801 return 0;
806} 802}
807 803
@@ -1261,6 +1257,8 @@ static int stk_register_video_device(struct stk_camera *dev)
1261 dev->vdev = stk_v4l_data; 1257 dev->vdev = stk_v4l_data;
1262 dev->vdev.lock = &dev->lock; 1258 dev->vdev.lock = &dev->lock;
1263 dev->vdev.v4l2_dev = &dev->v4l2_dev; 1259 dev->vdev.v4l2_dev = &dev->v4l2_dev;
1260 dev->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
1261 V4L2_CAP_STREAMING;
1264 video_set_drvdata(&dev->vdev, dev); 1262 video_set_drvdata(&dev->vdev, dev);
1265 err = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1); 1263 err = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1);
1266 if (err) 1264 if (err)
diff --git a/drivers/media/usb/tm6000/tm6000-video.c b/drivers/media/usb/tm6000/tm6000-video.c
index 072210f5f92f..85fcddfb0202 100644
--- a/drivers/media/usb/tm6000/tm6000-video.c
+++ b/drivers/media/usb/tm6000/tm6000-video.c
@@ -854,22 +854,17 @@ static int vidioc_querycap(struct file *file, void *priv,
854 struct v4l2_capability *cap) 854 struct v4l2_capability *cap)
855{ 855{
856 struct tm6000_core *dev = ((struct tm6000_fh *)priv)->dev; 856 struct tm6000_core *dev = ((struct tm6000_fh *)priv)->dev;
857 struct video_device *vdev = video_devdata(file);
858 857
859 strscpy(cap->driver, "tm6000", sizeof(cap->driver)); 858 strscpy(cap->driver, "tm6000", sizeof(cap->driver));
860 strscpy(cap->card, "Trident TVMaster TM5600/6000/6010", 859 strscpy(cap->card, "Trident TVMaster TM5600/6000/6010",
861 sizeof(cap->card)); 860 sizeof(cap->card));
862 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 861 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
862 cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
863 V4L2_CAP_DEVICE_CAPS;
863 if (dev->tuner_type != TUNER_ABSENT) 864 if (dev->tuner_type != TUNER_ABSENT)
864 cap->device_caps |= V4L2_CAP_TUNER; 865 cap->capabilities |= V4L2_CAP_TUNER;
865 if (vdev->vfl_type == VFL_TYPE_GRABBER) 866 if (dev->caps.has_radio)
866 cap->device_caps |= V4L2_CAP_VIDEO_CAPTURE | 867 cap->capabilities |= V4L2_CAP_RADIO;
867 V4L2_CAP_STREAMING |
868 V4L2_CAP_READWRITE;
869 else
870 cap->device_caps |= V4L2_CAP_RADIO;
871 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS |
872 V4L2_CAP_RADIO | V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE;
873 868
874 return 0; 869 return 0;
875} 870}
@@ -1639,6 +1634,10 @@ int tm6000_v4l2_register(struct tm6000_core *dev)
1639 vdev_init(dev, &dev->vfd, &tm6000_template, "video"); 1634 vdev_init(dev, &dev->vfd, &tm6000_template, "video");
1640 1635
1641 dev->vfd.ctrl_handler = &dev->ctrl_handler; 1636 dev->vfd.ctrl_handler = &dev->ctrl_handler;
1637 dev->vfd.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING |
1638 V4L2_CAP_READWRITE;
1639 if (dev->tuner_type != TUNER_ABSENT)
1640 dev->vfd.device_caps |= V4L2_CAP_TUNER;
1642 1641
1643 /* init video dma queues */ 1642 /* init video dma queues */
1644 INIT_LIST_HEAD(&dev->vidq.active); 1643 INIT_LIST_HEAD(&dev->vidq.active);
@@ -1659,6 +1658,7 @@ int tm6000_v4l2_register(struct tm6000_core *dev)
1659 vdev_init(dev, &dev->radio_dev, &tm6000_radio_template, 1658 vdev_init(dev, &dev->radio_dev, &tm6000_radio_template,
1660 "radio"); 1659 "radio");
1661 dev->radio_dev.ctrl_handler = &dev->radio_ctrl_handler; 1660 dev->radio_dev.ctrl_handler = &dev->radio_ctrl_handler;
1661 dev->radio_dev.device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
1662 ret = video_register_device(&dev->radio_dev, VFL_TYPE_RADIO, 1662 ret = video_register_device(&dev->radio_dev, VFL_TYPE_RADIO,
1663 radio_nr); 1663 radio_nr);
1664 if (ret < 0) { 1664 if (ret < 0) {
diff --git a/drivers/media/usb/usbtv/usbtv-video.c b/drivers/media/usb/usbtv/usbtv-video.c
index 4a1eab711bdc..51f784479e91 100644
--- a/drivers/media/usb/usbtv/usbtv-video.c
+++ b/drivers/media/usb/usbtv/usbtv-video.c
@@ -603,9 +603,6 @@ static int usbtv_querycap(struct file *file, void *priv,
603 strscpy(cap->driver, "usbtv", sizeof(cap->driver)); 603 strscpy(cap->driver, "usbtv", sizeof(cap->driver));
604 strscpy(cap->card, "usbtv", sizeof(cap->card)); 604 strscpy(cap->card, "usbtv", sizeof(cap->card));
605 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info)); 605 usb_make_path(dev->udev, cap->bus_info, sizeof(cap->bus_info));
606 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE;
607 cap->device_caps |= V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
608 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
609 return 0; 606 return 0;
610} 607}
611 608
@@ -942,6 +939,8 @@ int usbtv_video_init(struct usbtv *usbtv)
942 usbtv->vdev.tvnorms = USBTV_TV_STD; 939 usbtv->vdev.tvnorms = USBTV_TV_STD;
943 usbtv->vdev.queue = &usbtv->vb2q; 940 usbtv->vdev.queue = &usbtv->vb2q;
944 usbtv->vdev.lock = &usbtv->v4l2_lock; 941 usbtv->vdev.lock = &usbtv->v4l2_lock;
942 usbtv->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
943 V4L2_CAP_STREAMING;
945 video_set_drvdata(&usbtv->vdev, usbtv); 944 video_set_drvdata(&usbtv->vdev, usbtv);
946 ret = video_register_device(&usbtv->vdev, VFL_TYPE_GRABBER, -1); 945 ret = video_register_device(&usbtv->vdev, VFL_TYPE_GRABBER, -1);
947 if (ret < 0) { 946 if (ret < 0) {
diff --git a/drivers/media/usb/usbvision/usbvision-video.c b/drivers/media/usb/usbvision/usbvision-video.c
index e611052ebf59..bd216c9ff3d1 100644
--- a/drivers/media/usb/usbvision/usbvision-video.c
+++ b/drivers/media/usb/usbvision/usbvision-video.c
@@ -465,24 +465,18 @@ static int vidioc_querycap(struct file *file, void *priv,
465 struct v4l2_capability *vc) 465 struct v4l2_capability *vc)
466{ 466{
467 struct usb_usbvision *usbvision = video_drvdata(file); 467 struct usb_usbvision *usbvision = video_drvdata(file);
468 struct video_device *vdev = video_devdata(file);
469 468
470 strscpy(vc->driver, "USBVision", sizeof(vc->driver)); 469 strscpy(vc->driver, "USBVision", sizeof(vc->driver));
471 strscpy(vc->card, 470 strscpy(vc->card,
472 usbvision_device_data[usbvision->dev_model].model_string, 471 usbvision_device_data[usbvision->dev_model].model_string,
473 sizeof(vc->card)); 472 sizeof(vc->card));
474 usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info)); 473 usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info));
475 vc->device_caps = usbvision->have_tuner ? V4L2_CAP_TUNER : 0; 474 vc->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
476 if (vdev->vfl_type == VFL_TYPE_GRABBER) 475 V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
477 vc->device_caps |= V4L2_CAP_VIDEO_CAPTURE |
478 V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
479 else
480 vc->device_caps |= V4L2_CAP_RADIO;
481
482 vc->capabilities = vc->device_caps | V4L2_CAP_VIDEO_CAPTURE |
483 V4L2_CAP_READWRITE | V4L2_CAP_STREAMING | V4L2_CAP_DEVICE_CAPS;
484 if (usbvision_device_data[usbvision->dev_model].radio) 476 if (usbvision_device_data[usbvision->dev_model].radio)
485 vc->capabilities |= V4L2_CAP_RADIO; 477 vc->capabilities |= V4L2_CAP_RADIO;
478 if (usbvision->have_tuner)
479 vc->capabilities |= V4L2_CAP_TUNER;
486 return 0; 480 return 0;
487} 481}
488 482
@@ -1280,6 +1274,11 @@ static int usbvision_register_video(struct usb_usbvision *usbvision)
1280 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_G_FREQUENCY); 1274 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_G_FREQUENCY);
1281 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_S_TUNER); 1275 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_S_TUNER);
1282 } 1276 }
1277 usbvision->vdev.device_caps = V4L2_CAP_VIDEO_CAPTURE |
1278 V4L2_CAP_READWRITE | V4L2_CAP_STREAMING;
1279 if (usbvision->have_tuner)
1280 usbvision->vdev.device_caps |= V4L2_CAP_TUNER;
1281
1283 if (video_register_device(&usbvision->vdev, VFL_TYPE_GRABBER, video_nr) < 0) 1282 if (video_register_device(&usbvision->vdev, VFL_TYPE_GRABBER, video_nr) < 0)
1284 goto err_exit; 1283 goto err_exit;
1285 printk(KERN_INFO "USBVision[%d]: registered USBVision Video device %s [v4l2]\n", 1284 printk(KERN_INFO "USBVision[%d]: registered USBVision Video device %s [v4l2]\n",
@@ -1290,6 +1289,7 @@ static int usbvision_register_video(struct usb_usbvision *usbvision)
1290 /* usbvision has radio */ 1289 /* usbvision has radio */
1291 usbvision_vdev_init(usbvision, &usbvision->rdev, 1290 usbvision_vdev_init(usbvision, &usbvision->rdev,
1292 &usbvision_radio_template, "USBVision Radio"); 1291 &usbvision_radio_template, "USBVision Radio");
1292 usbvision->rdev.device_caps = V4L2_CAP_RADIO | V4L2_CAP_TUNER;
1293 if (video_register_device(&usbvision->rdev, VFL_TYPE_RADIO, radio_nr) < 0) 1293 if (video_register_device(&usbvision->rdev, VFL_TYPE_RADIO, radio_nr) < 0)
1294 goto err_exit; 1294 goto err_exit;
1295 printk(KERN_INFO "USBVision[%d]: registered USBVision Radio device %s [v4l2]\n", 1295 printk(KERN_INFO "USBVision[%d]: registered USBVision Radio device %s [v4l2]\n",
diff --git a/drivers/media/usb/zr364xx/zr364xx.c b/drivers/media/usb/zr364xx/zr364xx.c
index cd2bc9ed0cd9..87c5663e28bb 100644
--- a/drivers/media/usb/zr364xx/zr364xx.c
+++ b/drivers/media/usb/zr364xx/zr364xx.c
@@ -707,11 +707,6 @@ static int zr364xx_vidioc_querycap(struct file *file, void *priv,
707 strscpy(cap->card, cam->udev->product, sizeof(cap->card)); 707 strscpy(cap->card, cam->udev->product, sizeof(cap->card));
708 strscpy(cap->bus_info, dev_name(&cam->udev->dev), 708 strscpy(cap->bus_info, dev_name(&cam->udev->dev),
709 sizeof(cap->bus_info)); 709 sizeof(cap->bus_info));
710 cap->device_caps = V4L2_CAP_VIDEO_CAPTURE |
711 V4L2_CAP_READWRITE |
712 V4L2_CAP_STREAMING;
713 cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
714
715 return 0; 710 return 0;
716} 711}
717 712
@@ -1338,6 +1333,8 @@ static const struct video_device zr364xx_template = {
1338 .fops = &zr364xx_fops, 1333 .fops = &zr364xx_fops,
1339 .ioctl_ops = &zr364xx_ioctl_ops, 1334 .ioctl_ops = &zr364xx_ioctl_ops,
1340 .release = video_device_release_empty, 1335 .release = video_device_release_empty,
1336 .device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_READWRITE |
1337 V4L2_CAP_STREAMING,
1341}; 1338};
1342 1339
1343 1340