Lines Matching full:control

29  * union v4l2_ctrl_ptr - A pointer to a control value.
101 * struct v4l2_ctrl_ops - The control operations that the driver has to provide.
103 * @g_volatile_ctrl: Get a new value for this control. Generally only relevant
104 * for volatile (and usually read-only) controls such as a control
108 * @try_ctrl: Test whether the control's value is valid. Only relevant when
110 * @s_ctrl: Actually set the new control value. s_ctrl is compulsory. The
121 * struct v4l2_ctrl_type_ops - The control type operations that the driver
141 * that should be called when a control value has changed.
144 * @priv: control private data
152 * struct v4l2_ctrl - The control structure.
155 * @ev_subs: The list of control event subscriptions.
156 * @handler: The handler that owns the control.
159 * @done: Internal flag: set for each processed control.
160 * @is_new: Set when the user specified a new value for this control. It
165 * @is_private: If set, then this control is private to its handler and it
168 * @is_auto: If set, then this control selects whether the other cluster
172 * @is_int: If set, then this control has a simple integer value (i.e. it
174 * @is_string: If set, then this control has type %V4L2_CTRL_TYPE_STRING.
175 * @is_ptr: If set, then this control is an array and/or has type >=
179 * @is_array: If set, then this control contains an N-dimensional array.
180 * @is_dyn_array: If set, then this control contains a dynamically sized 1-dimensional array.
185 * control's value changes.
187 * of the auto control that determines if that control is in
188 * manual mode. So if the value of the auto control equals this
191 * @ops: The control ops.
192 * @type_ops: The control type ops.
193 * @id: The control ID.
194 * @name: The control name.
195 * @type: The control type.
196 * @minimum: The control's minimum value.
197 * @maximum: The control's maximum value.
198 * @default_value: The control's default value.
199 * @step: The control's step value for non-menu controls.
201 * @elem_size: The size in bytes of the control.
207 * @menu_skip_mask: The control's skip mask for menu controls. This makes it
222 * @flags: The control's flags.
223 * @priv: The control's private pointer. For use by the driver. It is
224 * untouched by the control framework. Note that this pointer is
225 * not freed when the control is deleted. Should this be needed
234 * @cur.val: The control's current value, if the @type is represented via
236 * @val: The control's new s32 value.
237 * @p_def: The control's default value represented via a union which
238 * provides a standard way of accessing control types
240 * @p_cur: The control's current value represented via a union which
241 * provides a standard way of accessing control types
243 * @p_new: The control's new value represented via a union which provides
244 * a standard way of accessing control types
304 * struct v4l2_ctrl_ref - The control reference.
308 * @ctrl: The actual control information.
313 * @req_done: Internal flag: if the control handler containing this control
315 * the control has been applied. This prevents applying controls
317 * control of a cluster is applied, they all are).
318 * @p_req_valid: If set, then p_req contains the control value for the request.
329 * @p_req: If the control handler containing this control reference
331 * value of the control that must be applied when the request
332 * is executed, or to the value of the control at the time
334 * then this control was never set for this request and the
335 * control will not be updated when this request is applied.
337 * Each control handler has a list of these refs. The list_head is used to
338 * keep a sorted-by-control-ID list of all controls, while the next pointer
339 * is used to link the control in the hash's bucket.
356 * struct v4l2_ctrl_handler - The control handler keeps track of all the
361 * @lock: Lock to control access to this handler and its controls.
364 * @ctrl_refs: The list of control references.
365 * @cached: The last found control reference. It is common that the same
366 * control is needed multiple times, so this is a simple
368 * @buckets: Buckets for the hashing. Allows for quick control lookup.
369 * @notify: A notify callback that is called whenever the control changes
375 * @error: The error code of the first failed control addition.
377 * @requests: List to keep track of open control handler request objects.
378 * For the parent control handler (@req_obj.ops == NULL) this
379 * is the list header. When the parent control handler is
406 * struct v4l2_ctrl_config - Control configuration structure.
408 * @ops: The control ops.
409 * @type_ops: The control type ops. Only needed for compound controls.
410 * @id: The control ID.
411 * @name: The control name.
412 * @type: The control type.
413 * @min: The control's minimum value.
414 * @max: The control's maximum value.
415 * @step: The control's step value for non-menu controls.
416 * @def: The control's default value.
417 * @p_def: The control's default value for compound controls.
419 * @elem_size: The size in bytes of the control.
420 * @flags: The control's flags.
421 * @menu_skip_mask: The control's skip mask for menu controls. This makes it
433 * @is_private: If set, then this control is private to its handler and it
457 * v4l2_ctrl_fill - Fill in the control fields based on the control ID.
459 * @id: ID of the control
460 * @name: pointer to be filled with a string with the name of the control
461 * @type: pointer for storing the type of the control
462 * @min: pointer for storing the minimum value for the control
463 * @max: pointer for storing the maximum value for the control
464 * @step: pointer for storing the control step
465 * @def: pointer for storing the default value for the control
466 * @flags: pointer for storing the flags to be used on the control
479 * control handling only. Once all drivers are converted to use the new
480 * control framework this function will no longer be exported.
487 * v4l2_ctrl_handler_init_class() - Initialize the control handler.
488 * @hdl: The control handler.
493 * are allocated) or the control lookup becomes slower (not enough
517 * @hdl: The control handler.
522 * are allocated) or the control lookup becomes slower (not enough
530 * Use this helper function to initialize a control handler.
550 * the control list.
551 * @hdl: The control handler.
559 * associated with the control.
560 * @ctrl: The control to lock.
569 * associated with the control.
570 * @ctrl: The control to unlock.
579 * to the handler to initialize the hardware to the current control values. The
580 * caller is responsible for acquiring the control handler mutex on behalf of
582 * @hdl: The control handler.
592 * to the handler to initialize the hardware to the current control values.
593 * @hdl: The control handler.
603 * @hdl: The control handler.
604 * @prefix: The prefix to use when logging the control values. If the
618 * control.
620 * @hdl: The control handler.
621 * @cfg: The control's configuration data.
622 * @priv: The control's driver-specific private data.
633 * control.
635 * @hdl: The control handler.
636 * @ops: The control ops.
637 * @id: The control ID.
638 * @min: The control's minimum value.
639 * @max: The control's maximum value.
640 * @step: The control's step value
641 * @def: The control's default value.
643 * If the &v4l2_ctrl struct could not be allocated, or the control
647 * If @id refers to a menu control, then this function will return NULL.
658 * menu control.
660 * @hdl: The control handler.
661 * @ops: The control ops.
662 * @id: The control ID.
663 * @max: The control's maximum value.
664 * @mask: The control's skip mask for menu controls. This makes it
670 * @def: The control's default value.
675 * If @id refers to a non-menu control, then this function will return NULL.
682 * v4l2_ctrl_new_std_menu_items() - Create a new standard V4L2 menu control
685 * @hdl: The control handler.
686 * @ops: The control ops.
687 * @id: The control ID.
688 * @max: The control's maximum value.
689 * @mask: The control's skip mask for menu controls. This makes it
695 * @def: The control's default value.
699 * menu of this control.
710 * compound control.
712 * @hdl: The control handler.
713 * @ops: The control ops.
714 * @id: The control ID.
715 * @p_def: The control's default value.
720 * compound control should be all zeroes.
729 * v4l2_ctrl_new_int_menu() - Create a new standard V4L2 integer menu control.
731 * @hdl: The control handler.
732 * @ops: The control ops.
733 * @id: The control ID.
734 * @max: The control's maximum value.
735 * @def: The control's default value.
736 * @qmenu_int: The control's menu entries.
741 * If @id refers to a non-integer-menu control, then this function will
751 * used when adding a control handler.
762 * @hdl: The control handler.
763 * @add: The control handler whose controls you want to add to
764 * the @hdl control handler.
783 * @ctrl: The control that is filtered.
798 * @controls: The cluster control array of size @ncontrols.
808 * @controls: The cluster control array of size @ncontrols. The first control
809 * must be the 'auto' control (e.g. autogain, autoexposure, etc.)
810 * @manual_val: The value for the first control in the cluster that equals the
812 * @set_volatile: If true, then all controls except the first auto control will
815 * Use for control groups where one control selects some automatic feature and
822 * When the autofoo control is set to automatic, then any manual controls
823 * are set to inactive and any reads will call g_volatile_ctrl (if the control
826 * When the autofoo control is set to manual, then any manual controls will
831 * on the autofoo control and %V4L2_CTRL_FLAG_INACTIVE on the foo control(s)
840 * v4l2_ctrl_find() - Find a control with the given ID.
842 * @hdl: The control handler.
843 * @id: The control ID to find.
851 * v4l2_ctrl_activate() - Make the control active or inactive.
852 * @ctrl: The control to (de)activate.
853 * @active: True if the control should become active.
860 * This function assumes that the control handler is locked.
867 * @ctrl: The control to (de)activate.
868 * @grabbed: True if the control should become grabbed.
876 * This function assumes that the control handler is locked by the caller.
881 * v4l2_ctrl_grab() - Mark the control as grabbed or not grabbed.
883 * @ctrl: The control to (de)activate.
884 * @grabbed: True if the control should become grabbed.
892 * This function assumes that the control handler is not locked and will
908 * @ctrl: The control to update.
909 * @min: The control's minimum value.
910 * @max: The control's maximum value.
911 * @step: The control's step value
912 * @def: The control's default value.
914 * Update the range of a control on the fly. This works for control types
919 * control type.
921 * The caller is responsible for acquiring the control handler mutex on behalf
928 * v4l2_ctrl_modify_range() - Update the range of a control.
930 * @ctrl: The control to update.
931 * @min: The control's minimum value.
932 * @max: The control's maximum value.
933 * @step: The control's step value
934 * @def: The control's default value.
936 * Update the range of a control on the fly. This works for control types
941 * control type.
943 * This function assumes that the control handler is not locked and will
961 * @ctrl: The control to update.
962 * @dims: The control's new dimensions.
964 * Update the dimensions of an array control on the fly. The elements of the
968 * An error is returned if @dims is invalid for this control.
970 * The caller is responsible for acquiring the control handler mutex on behalf
973 * Note: calling this function when the same control is used in pending requests
974 * is untested. It should work (a request with the wrong size of the control
975 * will drop that control silently), but it will be very confusing.
981 * v4l2_ctrl_modify_dimensions() - Update the dimensions of an array control.
983 * @ctrl: The control to update.
984 * @dims: The control's new dimensions.
986 * Update the dimensions of an array control on the fly. The elements of the
990 * An error is returned if @dims is invalid for this control type.
992 * This function assumes that the control handler is not locked and will
995 * Note: calling this function when the same control is used in pending requests
996 * is untested. It should work (a request with the wrong size of the control
997 * will drop that control silently), but it will be very confusing.
1012 * v4l2_ctrl_notify() - Function to set a notify callback for a control.
1014 * @ctrl: The control.
1018 * This function sets a callback function for the control. If @ctrl is NULL,
1029 * v4l2_ctrl_get_name() - Get the name of the control
1031 * @id: The control ID.
1033 * This function returns the name of the given control ID or NULL if it isn't
1034 * a known control.
1039 * v4l2_ctrl_get_menu() - Get the menu string array of the control
1041 * @id: The control ID.
1044 * given control ID or NULL if it isn't a known menu control.
1049 * v4l2_ctrl_get_int_menu() - Get the integer menu array of the control
1051 * @id: The control ID.
1054 * This function returns the integer array of the given control ID or NULL if it
1055 * if it isn't a known integer menu control.
1060 * v4l2_ctrl_g_ctrl() - Helper function to get the control's value from
1063 * @ctrl: The control.
1065 * This returns the control's value safely by going through the control
1066 * framework. This function will lock the control's handler, so it cannot be
1076 * @ctrl: The control.
1079 * This sets the control's new value safely by going through the control
1080 * framework. This function assumes the control's handler is already locked,
1088 * v4l2_ctrl_s_ctrl() - Helper function to set the control's value from
1090 * @ctrl: The control.
1093 * This sets the control's new value safely by going through the control
1094 * framework. This function will lock the control's handler, so it cannot be
1111 * v4l2_ctrl_g_ctrl_int64() - Helper function to get a 64-bit control's value
1114 * @ctrl: The control.
1116 * This returns the control's value safely by going through the control
1117 * framework. This function will lock the control's handler, so it cannot be
1127 * @ctrl: The control.
1130 * This sets the control's new value safely by going through the control
1131 * framework. This function assumes the control's handler is already locked,
1139 * v4l2_ctrl_s_ctrl_int64() - Helper function to set a 64-bit control's value
1142 * @ctrl: The control.
1145 * This sets the control's new value safely by going through the control
1146 * framework. This function will lock the control's handler, so it cannot be
1165 * @ctrl: The control.
1168 * This sets the control's new string safely by going through the control
1169 * framework. This function assumes the control's handler is already locked,
1177 * v4l2_ctrl_s_ctrl_string() - Helper function to set a control's string value
1180 * @ctrl: The control.
1183 * This sets the control's new string safely by going through the control
1184 * framework. This function will lock the control's handler, so it cannot be
1201 * __v4l2_ctrl_s_ctrl_compound() - Unlocked variant to set a compound control
1203 * @ctrl: The control.
1207 * This sets the control's new compound payload safely by going through the
1208 * control framework. This function assumes the control's handler is already
1217 * v4l2_ctrl_s_ctrl_compound() - Helper function to set a compound control
1220 * @ctrl: The control.
1224 * This sets the control's new compound payload safely by going through the
1225 * control framework. This function will lock the control's handler, so it
1249 /* Internal helper functions that deal with control events. */
1294 * control events.
1301 * That just polls for control events.
1309 * v4l2_ctrl_request_setup - helper function to apply control values in a request
1312 * @parent: The parent control handler ('priv' in media_request_object_find())
1314 * This is a helper function to call the control handler's s_ctrl callback with
1315 * the control values contained in the request. Do note that this approach of
1316 * applying control values in a request is only applicable to memory-to-memory
1323 * v4l2_ctrl_request_complete - Complete a control handler request object
1326 * @parent: The parent control handler ('priv' in media_request_object_find())
1328 * This function is to be called on each control handler that may have had a
1329 * request object associated with it, i.e. control handlers of a driver that
1332 * The function first obtains the values of any volatile controls in the control
1340 * v4l2_ctrl_request_hdl_find - Find the control handler in the request
1343 * @parent: The parent control handler ('priv' in media_request_object_find())
1345 * This function finds the control handler in the request. It may return
1361 * v4l2_ctrl_request_hdl_put - Put the control handler
1363 * @hdl: Put this control handler
1365 * This function released the control handler previously obtained from'
1375 * v4l2_ctrl_request_hdl_ctrl_find() - Find a control with the given ID.
1377 * @hdl: The control handler from the request.
1378 * @id: The ID of the control to find.
1380 * This function returns a pointer to the control if this control is
1497 * that just subscribes control events.
1507 * v4l2_ctrl_subdev_log_status - Log all controls owned by subdev's control
1530 * Controls already registered by the caller with the @hdl control handler are
1544 * @ptr1: A v4l2 control value.
1545 * @ptr2: A v4l2 control value.
1557 * @ptr: The v4l2 control value.
1577 * @ptr: The v4l2 control value.