summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil-cisco@xs4all.nl>2019-06-04 07:19:53 -0400
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-06-05 08:24:49 -0400
commit8c3854d03bd7b86e8f36e6d9b07b4a6bc20deccd (patch)
tree61c61149adad3b110f65dd27341053dd32214856
parente83ce3005db16243e1085925251fd0776bb60d09 (diff)
media: media/usb: set device_caps in struct video_device
Instead of filling in the struct v4l2_capability device_caps field, fill in the struct video_device device_caps field. That way the V4L2 core knows what the capabilities of the video device are. But this only really works if all drivers use this, so convert all usb drivers in this patch. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
-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