diff options
-rw-r--r-- | drivers/media/usb/airspy/airspy.c | 6 | ||||
-rw-r--r-- | drivers/media/usb/au0828/au0828-video.c | 21 | ||||
-rw-r--r-- | drivers/media/usb/cpia2/cpia2_v4l.c | 9 | ||||
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-video.c | 28 | ||||
-rw-r--r-- | drivers/media/usb/em28xx/em28xx-video.c | 32 | ||||
-rw-r--r-- | drivers/media/usb/go7007/go7007-v4l2.c | 15 | ||||
-rw-r--r-- | drivers/media/usb/gspca/gspca.c | 6 | ||||
-rw-r--r-- | drivers/media/usb/hackrf/hackrf.c | 14 | ||||
-rw-r--r-- | drivers/media/usb/hdpvr/hdpvr-video.c | 5 | ||||
-rw-r--r-- | drivers/media/usb/msi2500/msi2500.c | 5 | ||||
-rw-r--r-- | drivers/media/usb/pvrusb2/pvrusb2-v4l2.c | 17 | ||||
-rw-r--r-- | drivers/media/usb/pwc/pwc-if.c | 2 | ||||
-rw-r--r-- | drivers/media/usb/pwc/pwc-v4l.c | 3 | ||||
-rw-r--r-- | drivers/media/usb/s2255/s2255drv.c | 5 | ||||
-rw-r--r-- | drivers/media/usb/stk1160/stk1160-v4l.c | 7 | ||||
-rw-r--r-- | drivers/media/usb/stkwebcam/stk-webcam.c | 6 | ||||
-rw-r--r-- | drivers/media/usb/tm6000/tm6000-video.c | 20 | ||||
-rw-r--r-- | drivers/media/usb/usbtv/usbtv-video.c | 5 | ||||
-rw-r--r-- | drivers/media/usb/usbvision/usbvision-video.c | 20 | ||||
-rw-r--r-- | drivers/media/usb/zr364xx/zr364xx.c | 7 |
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, | |||
1191 | static int vidioc_querycap(struct file *file, void *priv, | 1191 | static 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, | |||
1555 | int cx231xx_querycap(struct file *file, void *priv, | 1555 | int 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, | |||
1984 | static int vidioc_querycap(struct file *file, void *priv, | 1984 | static 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 | ||
1159 | static const struct v4l2_ctrl_ops hdpvr_ctrl_ops = { | 1158 | static 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 | ||