Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f887e99a authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

[media] uvcvideo: Set device_caps in VIDIOC_QUERYCAP



Set the capabilities field to global capabilities, and the device_caps
field to the video node capabilities.
This issue was found by the v4l2-compliance tool.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 815adc46
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1741,6 +1741,11 @@ static int uvc_register_video(struct uvc_device *dev,
		return ret;
	}

	if (stream->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
		stream->chain->caps |= V4L2_CAP_VIDEO_CAPTURE;
	else
		stream->chain->caps |= V4L2_CAP_VIDEO_OUTPUT;

	atomic_inc(&dev->nstreams);
	return 0;
}
+6 −4
Original line number Diff line number Diff line
@@ -565,11 +565,13 @@ static long uvc_v4l2_do_ioctl(struct file *file, unsigned int cmd, void *arg)
		usb_make_path(stream->dev->udev,
			      cap->bus_info, sizeof(cap->bus_info));
		cap->version = LINUX_VERSION_CODE;
		cap->capabilities = V4L2_CAP_DEVICE_CAPS | V4L2_CAP_STREAMING
				  | chain->caps;
		if (stream->type == V4L2_BUF_TYPE_VIDEO_CAPTURE)
			cap->capabilities = V4L2_CAP_VIDEO_CAPTURE
			cap->device_caps = V4L2_CAP_VIDEO_CAPTURE
					 | V4L2_CAP_STREAMING;
		else
			cap->capabilities = V4L2_CAP_VIDEO_OUTPUT
			cap->device_caps = V4L2_CAP_VIDEO_OUTPUT
					 | V4L2_CAP_STREAMING;
		break;
	}
+2 −0
Original line number Diff line number Diff line
@@ -371,6 +371,8 @@ struct uvc_video_chain {
	struct uvc_entity *selector;		/* Selector unit */

	struct mutex ctrl_mutex;		/* Protects ctrl.info */

	u32 caps;				/* V4L2 chain-wide caps */
};

struct uvc_stats_frame {