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

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

V4L/DVB (10650): uvcvideo: Initialize streaming parameters with the probe control value



The UVC specification requires SET_CUR requests on the streaming commit control
to use values retrieved from a successful GET_CUR request on the probe control.
Initialize streaming parameters with the probe control current value to make
sure the driver always complies.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@skynet.be>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 4a5aa62b
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -1026,11 +1026,20 @@ int uvc_video_init(struct uvc_video_device *video)
	 */
	usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);

	/* Some webcams don't suport GET_DEF requests on the probe control. We
	 * fall back to GET_CUR if GET_DEF fails.
	/* Set the streaming probe control with default streaming parameters
	 * retrieved from the device. Webcams that don't suport GET_DEF
	 * requests on the probe control will just keep their current streaming
	 * parameters.
	 */
	if ((ret = uvc_get_video_ctrl(video, probe, 1, GET_DEF)) < 0 &&
	    (ret = uvc_get_video_ctrl(video, probe, 1, GET_CUR)) < 0)
	if (uvc_get_video_ctrl(video, probe, 1, GET_DEF) == 0)
		uvc_set_video_ctrl(video, probe, 1);

	/* Initialize the streaming parameters with the probe control current
	 * value. This makes sure SET_CUR requests on the streaming commit
	 * control will always use values retrieved from a successful GET_CUR
	 * request on the probe control, as required by the UVC specification.
	 */
	if ((ret = uvc_get_video_ctrl(video, probe, 1, GET_CUR)) < 0)
		return ret;

	/* Check if the default format descriptor exists. Use the first