Lines Matching full:control
17 * Include the stateless codec compound control definitions.
35 * union v4l2_ctrl_ptr - A pointer to a control value.
103 * struct v4l2_ctrl_ops - The control operations that the driver has to provide.
105 * @g_volatile_ctrl: Get a new value for this control. Generally only relevant
106 * for volatile (and usually read-only) controls such as a control
110 * @try_ctrl: Test whether the control's value is valid. Only relevant when
112 * @s_ctrl: Actually set the new control value. s_ctrl is compulsory. The
123 * struct v4l2_ctrl_type_ops - The control type operations that the driver
145 * that should be called when a control value has changed.
148 * @priv: control private data
156 * struct v4l2_ctrl - The control structure.
159 * @ev_subs: The list of control event subscriptions.
160 * @handler: The handler that owns the control.
163 * @done: Internal flag: set for each processed control.
164 * @is_new: Set when the user specified a new value for this control. It
169 * @is_private: If set, then this control is private to its handler and it
172 * @is_auto: If set, then this control selects whether the other cluster
176 * @is_int: If set, then this control has a simple integer value (i.e. it
178 * @is_string: If set, then this control has type %V4L2_CTRL_TYPE_STRING.
179 * @is_ptr: If set, then this control is an array and/or has type >=
183 * @is_array: If set, then this control contains an N-dimensional array.
187 * control's value changes.
189 * of the auto control that determines if that control is in
190 * manual mode. So if the value of the auto control equals this
193 * @ops: The control ops.
194 * @type_ops: The control type ops.
195 * @id: The control ID.
196 * @name: The control name.
197 * @type: The control type.
198 * @minimum: The control's minimum value.
199 * @maximum: The control's maximum value.
200 * @default_value: The control's default value.
201 * @step: The control's step value for non-menu controls.
203 * @elem_size: The size in bytes of the control.
206 * @menu_skip_mask: The control's skip mask for menu controls. This makes it
221 * @flags: The control's flags.
223 * @cur.val: The control's current value, if the @type is represented via
225 * @val: The control's new s32 value.
226 * @priv: The control's private pointer. For use by the driver. It is
227 * untouched by the control framework. Note that this pointer is
228 * not freed when the control is deleted. Should this be needed
231 * @p_def: The control's default value represented via a union which
232 * provides a standard way of accessing control types
234 * @p_cur: The control's current value represented via a union which
235 * provides a standard way of accessing control types
237 * @p_new: The control's new value represented via a union which provides
238 * a standard way of accessing control types
294 * struct v4l2_ctrl_ref - The control reference.
298 * @ctrl: The actual control information.
303 * @req_done: Internal flag: if the control handler containing this control
305 * the control has been applied. This prevents applying controls
307 * control of a cluster is applied, they all are).
308 * @valid_p_req: If set, then p_req contains the control value for the request.
309 * @p_req: If the control handler containing this control reference
311 * value of the control that must be applied when the request
312 * is executed, or to the value of the control at the time
314 * then this control was never set for this request and the
315 * control will not be updated when this request is applied.
317 * Each control handler has a list of these refs. The list_head is used to
318 * keep a sorted-by-control-ID list of all controls, while the next pointer
319 * is used to link the control in the hash's bucket.
333 * struct v4l2_ctrl_handler - The control handler keeps track of all the
338 * @lock: Lock to control access to this handler and its controls.
341 * @ctrl_refs: The list of control references.
342 * @cached: The last found control reference. It is common that the same
343 * control is needed multiple times, so this is a simple
345 * @buckets: Buckets for the hashing. Allows for quick control lookup.
346 * @notify: A notify callback that is called whenever the control changes
352 * @error: The error code of the first failed control addition.
354 * @requests: List to keep track of open control handler request objects.
355 * For the parent control handler (@req_obj.ops == NULL) this
356 * is the list header. When the parent control handler is
383 * struct v4l2_ctrl_config - Control configuration structure.
385 * @ops: The control ops.
386 * @type_ops: The control type ops. Only needed for compound controls.
387 * @id: The control ID.
388 * @name: The control name.
389 * @type: The control type.
390 * @min: The control's minimum value.
391 * @max: The control's maximum value.
392 * @step: The control's step value for non-menu controls.
393 * @def: The control's default value.
394 * @p_def: The control's default value for compound controls.
396 * @elem_size: The size in bytes of the control.
397 * @flags: The control's flags.
398 * @menu_skip_mask: The control's skip mask for menu controls. This makes it
410 * @is_private: If set, then this control is private to its handler and it
434 * v4l2_ctrl_fill - Fill in the control fields based on the control ID.
436 * @id: ID of the control
437 * @name: pointer to be filled with a string with the name of the control
438 * @type: pointer for storing the type of the control
439 * @min: pointer for storing the minimum value for the control
440 * @max: pointer for storing the maximum value for the control
441 * @step: pointer for storing the control step
442 * @def: pointer for storing the default value for the control
443 * @flags: pointer for storing the flags to be used on the control
456 * control handling only. Once all drivers are converted to use the new
457 * control framework this function will no longer be exported.
464 * v4l2_ctrl_handler_init_class() - Initialize the control handler.
465 * @hdl: The control handler.
470 * are allocated) or the control lookup becomes slower (not enough
494 * @hdl: The control handler.
499 * are allocated) or the control lookup becomes slower (not enough
507 * Use this helper function to initialize a control handler.
527 * the control list.
528 * @hdl: The control handler.
536 * associated with the control.
537 * @ctrl: The control to lock.
546 * associated with the control.
547 * @ctrl: The control to unlock.
556 * to the handler to initialize the hardware to the current control values. The
557 * caller is responsible for acquiring the control handler mutex on behalf of
559 * @hdl: The control handler.
569 * to the handler to initialize the hardware to the current control values.
570 * @hdl: The control handler.
580 * @hdl: The control handler.
581 * @prefix: The prefix to use when logging the control values. If the
595 * control.
597 * @hdl: The control handler.
598 * @cfg: The control's configuration data.
599 * @priv: The control's driver-specific private data.
610 * control.
612 * @hdl: The control handler.
613 * @ops: The control ops.
614 * @id: The control ID.
615 * @min: The control's minimum value.
616 * @max: The control's maximum value.
617 * @step: The control's step value
618 * @def: The control's default value.
620 * If the &v4l2_ctrl struct could not be allocated, or the control
624 * If @id refers to a menu control, then this function will return NULL.
635 * menu control.
637 * @hdl: The control handler.
638 * @ops: The control ops.
639 * @id: The control ID.
640 * @max: The control's maximum value.
641 * @mask: The control's skip mask for menu controls. This makes it
647 * @def: The control's default value.
652 * If @id refers to a non-menu control, then this function will return NULL.
659 * v4l2_ctrl_new_std_menu_items() - Create a new standard V4L2 menu control
662 * @hdl: The control handler.
663 * @ops: The control ops.
664 * @id: The control ID.
665 * @max: The control's maximum value.
666 * @mask: The control's skip mask for menu controls. This makes it
672 * @def: The control's default value.
676 * menu of this control.
687 * compound control.
689 * @hdl: The control handler.
690 * @ops: The control ops.
691 * @id: The control ID.
692 * @p_def: The control's default value.
697 * compound control should be all zeroes.
706 * v4l2_ctrl_new_int_menu() - Create a new standard V4L2 integer menu control.
708 * @hdl: The control handler.
709 * @ops: The control ops.
710 * @id: The control ID.
711 * @max: The control's maximum value.
712 * @def: The control's default value.
713 * @qmenu_int: The control's menu entries.
718 * If @id refers to a non-integer-menu control, then this function will
728 * used when adding a control handler.
739 * @hdl: The control handler.
740 * @add: The control handler whose controls you want to add to
741 * the @hdl control handler.
760 * @ctrl: The control that is filtered.
775 * @controls: The cluster control array of size @ncontrols.
785 * @controls: The cluster control array of size @ncontrols. The first control
786 * must be the 'auto' control (e.g. autogain, autoexposure, etc.)
787 * @manual_val: The value for the first control in the cluster that equals the
789 * @set_volatile: If true, then all controls except the first auto control will
792 * Use for control groups where one control selects some automatic feature and
799 * When the autofoo control is set to automatic, then any manual controls
800 * are set to inactive and any reads will call g_volatile_ctrl (if the control
803 * When the autofoo control is set to manual, then any manual controls will
808 * on the autofoo control and %V4L2_CTRL_FLAG_INACTIVE on the foo control(s)
817 * v4l2_ctrl_find() - Find a control with the given ID.
819 * @hdl: The control handler.
820 * @id: The control ID to find.
828 * v4l2_ctrl_activate() - Make the control active or inactive.
829 * @ctrl: The control to (de)activate.
830 * @active: True if the control should become active.
837 * This function assumes that the control handler is locked.
844 * @ctrl: The control to (de)activate.
845 * @grabbed: True if the control should become grabbed.
853 * This function assumes that the control handler is locked by the caller.
858 * v4l2_ctrl_grab() - Mark the control as grabbed or not grabbed.
860 * @ctrl: The control to (de)activate.
861 * @grabbed: True if the control should become grabbed.
869 * This function assumes that the control handler is not locked and will
885 * @ctrl: The control to update.
886 * @min: The control's minimum value.
887 * @max: The control's maximum value.
888 * @step: The control's step value
889 * @def: The control's default value.
891 * Update the range of a control on the fly. This works for control types
896 * control type.
898 * The caller is responsible for acquiring the control handler mutex on behalf
905 * v4l2_ctrl_modify_range() - Update the range of a control.
907 * @ctrl: The control to update.
908 * @min: The control's minimum value.
909 * @max: The control's maximum value.
910 * @step: The control's step value
911 * @def: The control's default value.
913 * Update the range of a control on the fly. This works for control types
918 * control type.
920 * This function assumes that the control handler is not locked and will
936 * v4l2_ctrl_notify() - Function to set a notify callback for a control.
938 * @ctrl: The control.
942 * This function sets a callback function for the control. If @ctrl is NULL,
953 * v4l2_ctrl_get_name() - Get the name of the control
955 * @id: The control ID.
957 * This function returns the name of the given control ID or NULL if it isn't
958 * a known control.
963 * v4l2_ctrl_get_menu() - Get the menu string array of the control
965 * @id: The control ID.
968 * given control ID or NULL if it isn't a known menu control.
973 * v4l2_ctrl_get_int_menu() - Get the integer menu array of the control
975 * @id: The control ID.
978 * This function returns the integer array of the given control ID or NULL if it
979 * if it isn't a known integer menu control.
984 * v4l2_ctrl_g_ctrl() - Helper function to get the control's value from
987 * @ctrl: The control.
989 * This returns the control's value safely by going through the control
990 * framework. This function will lock the control's handler, so it cannot be
1000 * @ctrl: The control.
1003 * This sets the control's new value safely by going through the control
1004 * framework. This function assumes the control's handler is already locked,
1012 * v4l2_ctrl_s_ctrl() - Helper function to set the control's value from
1014 * @ctrl: The control.
1017 * This sets the control's new value safely by going through the control
1018 * framework. This function will lock the control's handler, so it cannot be
1035 * v4l2_ctrl_g_ctrl_int64() - Helper function to get a 64-bit control's value
1038 * @ctrl: The control.
1040 * This returns the control's value safely by going through the control
1041 * framework. This function will lock the control's handler, so it cannot be
1051 * @ctrl: The control.
1054 * This sets the control's new value safely by going through the control
1055 * framework. This function assumes the control's handler is already locked,
1063 * v4l2_ctrl_s_ctrl_int64() - Helper function to set a 64-bit control's value
1066 * @ctrl: The control.
1069 * This sets the control's new value safely by going through the control
1070 * framework. This function will lock the control's handler, so it cannot be
1089 * @ctrl: The control.
1092 * This sets the control's new string safely by going through the control
1093 * framework. This function assumes the control's handler is already locked,
1101 * v4l2_ctrl_s_ctrl_string() - Helper function to set a control's string value
1104 * @ctrl: The control.
1107 * This sets the control's new string safely by going through the control
1108 * framework. This function will lock the control's handler, so it cannot be
1125 * __v4l2_ctrl_s_ctrl_compound() - Unlocked variant to set a compound control
1127 * @ctrl: The control.
1131 * This sets the control's new compound payload safely by going through the
1132 * control framework. This function assumes the control's handler is already
1141 * v4l2_ctrl_s_ctrl_compound() - Helper function to set a compound control
1144 * @ctrl: The control.
1148 * This sets the control's new compound payload safely by going through the
1149 * control framework. This function will lock the control's handler, so it
1173 /* Internal helper functions that deal with control events. */
1218 * control events.
1225 * That just polls for control events.
1233 * v4l2_ctrl_request_setup - helper function to apply control values in a request
1236 * @parent: The parent control handler ('priv' in media_request_object_find())
1238 * This is a helper function to call the control handler's s_ctrl callback with
1239 * the control values contained in the request. Do note that this approach of
1240 * applying control values in a request is only applicable to memory-to-memory
1247 * v4l2_ctrl_request_complete - Complete a control handler request object
1250 * @parent: The parent control handler ('priv' in media_request_object_find())
1252 * This function is to be called on each control handler that may have had a
1253 * request object associated with it, i.e. control handlers of a driver that
1256 * The function first obtains the values of any volatile controls in the control
1264 * v4l2_ctrl_request_hdl_find - Find the control handler in the request
1267 * @parent: The parent control handler ('priv' in media_request_object_find())
1269 * This function finds the control handler in the request. It may return
1285 * v4l2_ctrl_request_hdl_put - Put the control handler
1287 * @hdl: Put this control handler
1289 * This function released the control handler previously obtained from'
1299 * v4l2_ctrl_request_hdl_ctrl_find() - Find a control with the given ID.
1301 * @hdl: The control handler from the request.
1302 * @id: The ID of the control to find.
1304 * This function returns a pointer to the control if this control is
1421 * that just subscribes control events.
1431 * v4l2_ctrl_subdev_log_status - Log all controls owned by subdev's control
1454 * Controls already registered by the caller with the @hdl control handler are