Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: uvcvideo: Report V4L2 device caps through the video_device structure

The V4L2 core populates the struct v4l2_capability device_caps field
from the same field in video_device. There's no need to handle that
manually in the driver.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com>
Tested-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>

authored by

Laurent Pinchart and committed by
Mauro Carvalho Chehab
94c53e26 31a96f4c

+11 -4
+11
drivers/media/usb/uvc/uvc_driver.c
··· 1921 1921 vdev->vfl_dir = VFL_DIR_TX; 1922 1922 else 1923 1923 vdev->vfl_dir = VFL_DIR_RX; 1924 + 1925 + switch (type) { 1926 + case V4L2_BUF_TYPE_VIDEO_CAPTURE: 1927 + default: 1928 + vdev->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 1929 + break; 1930 + case V4L2_BUF_TYPE_VIDEO_OUTPUT: 1931 + vdev->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING; 1932 + break; 1933 + } 1934 + 1924 1935 strlcpy(vdev->name, dev->name, sizeof vdev->name); 1925 1936 1926 1937 /*
-4
drivers/media/usb/uvc/uvc_v4l2.c
··· 568 568 usb_make_path(stream->dev->udev, cap->bus_info, sizeof(cap->bus_info)); 569 569 cap->capabilities = V4L2_CAP_DEVICE_CAPS | V4L2_CAP_STREAMING 570 570 | chain->caps; 571 - if (stream->type == V4L2_BUF_TYPE_VIDEO_CAPTURE) 572 - cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_STREAMING; 573 - else 574 - cap->device_caps = V4L2_CAP_VIDEO_OUTPUT | V4L2_CAP_STREAMING; 575 571 576 572 return 0; 577 573 }