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

Commit 52beeddb authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

media: v4l2-ctrls: prepare internal structs for request API



Embed and initialize a media_request_object in struct v4l2_ctrl_handler.

Add a p_req field to struct v4l2_ctrl_ref that will store the
request value.

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarAlexandre Courbot <acourbot@chromium.org>
Reviewed-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent da1b1aea
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1901,6 +1901,7 @@ int v4l2_ctrl_handler_init_class(struct v4l2_ctrl_handler *hdl,
				      sizeof(hdl->buckets[0]),
				      GFP_KERNEL | __GFP_ZERO);
	hdl->error = hdl->buckets ? 0 : -ENOMEM;
	media_request_object_init(&hdl->req_obj);
	return hdl->error;
}
EXPORT_SYMBOL(v4l2_ctrl_handler_init_class);
+10 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@
#include <linux/list.h>
#include <linux/mutex.h>
#include <linux/videodev2.h>
#include <media/media-request.h>

/* forward references */
struct file;
@@ -249,6 +250,11 @@ struct v4l2_ctrl {
 *		``prepare_ext_ctrls`` function at ``v4l2-ctrl.c``.
 * @from_other_dev: If true, then @ctrl was defined in another
 *		device than the &struct v4l2_ctrl_handler.
 * @p_req:	If the control handler containing this control reference
 *		is bound to a media request, then this points to the
 *		value of the control that should be applied when the request
 *		is executed, or to the value of the control at the time
 *		that the request was completed.
 *
 * Each control handler has a list of these refs. The list_head is used to
 * keep a sorted-by-control-ID list of all controls, while the next pointer
@@ -260,6 +266,7 @@ struct v4l2_ctrl_ref {
	struct v4l2_ctrl *ctrl;
	struct v4l2_ctrl_helper *helper;
	bool from_other_dev;
	union v4l2_ctrl_ptr p_req;
};

/**
@@ -283,6 +290,8 @@ struct v4l2_ctrl_ref {
 * @notify_priv: Passed as argument to the v4l2_ctrl notify callback.
 * @nr_of_buckets: Total number of buckets in the array.
 * @error:	The error code of the first failed control addition.
 * @req_obj:	The &struct media_request_object, used to link into a
 *		&struct media_request. This request object has a refcount.
 */
struct v4l2_ctrl_handler {
	struct mutex _lock;
@@ -295,6 +304,7 @@ struct v4l2_ctrl_handler {
	void *notify_priv;
	u16 nr_of_buckets;
	int error;
	struct media_request_object req_obj;
};

/**