€•TŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ2/translations/zh_CN/driver-api/media/v4l2-controls”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/zh_TW/driver-api/media/v4l2-controls”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/it_IT/driver-api/media/v4l2-controls”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/ja_JP/driver-api/media/v4l2-controls”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/ko_KR/driver-api/media/v4l2-controls”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/pt_BR/driver-api/media/v4l2-controls”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ2/translations/sp_SP/driver-api/media/v4l2-controls”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒL/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒ V4L2 Controls”h]”hŒ V4L2 Controls”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Introduction”h]”hŒ Introduction”…”�”}”(hhàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÝh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒåThe V4L2 control API seems simple enough, but quickly becomes very hard to implement correctly in drivers. But much of the code needed to handle controls is actually not driver specific and can be moved to the V4L core framework.”h]”hŒåThe V4L2 control API seems simple enough, but quickly becomes very hard to implement correctly in drivers. But much of the code needed to handle controls is actually not driver specific and can be moved to the V4L core framework.”…”�”}”(hhðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhï)�”}”(hŒEAfter all, the only part that a driver developer is interested in is:”h]”hŒEAfter all, the only part that a driver developer is interested in is:”…”�”}”(hhþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K hhÝh²hubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hŒHow do I add a control?”h]”hï)�”}”(hjh]”hŒHow do I add a control?”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubj)�”}”(hŒ0How do I set the control's value? (i.e. s_ctrl) ”h]”hï)�”}”(hŒ/How do I set the control's value? (i.e. s_ctrl)”h]”hŒ1How do I set the control’s value? (i.e. s_ctrl)”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ)”uh1j hhÝh²hh³hÇh´Kubhï)�”}”(hŒAnd occasionally:”h]”hŒAnd occasionally:”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubj )�”}”(hhh]”(j)�”}”(hŒ8How do I get the control's value? (i.e. g_volatile_ctrl)”h]”hï)�”}”(hj`h]”hŒ:How do I get the control’s value? (i.e. g_volatile_ctrl)”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[h²hh³hÇh´Nubj)�”}”(hŒEHow do I validate the user's proposed control value? (i.e. try_ctrl) ”h]”hï)�”}”(hŒDHow do I validate the user's proposed control value? (i.e. try_ctrl)”h]”hŒFHow do I validate the user’s proposed control value? (i.e. try_ctrl)”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Khjuubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”jHjIjJhjKjLŒstart”Kuh1j hhÝh²hh³hÇh´Kubhï)�”}”(hŒ5All the rest is something that can be done centrally.”h]”hŒ5All the rest is something that can be done centrally.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hŒËThe control framework was created in order to implement all the rules of the V4L2 specification with respect to controls in a central place. And to make life as easy as possible for the driver developer.”h]”hŒËThe control framework was created in order to implement all the rules of the V4L2 specification with respect to controls in a central place. And to make life as easy as possible for the driver developer.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubhï)�”}”(hŒ˜Note that the control framework relies on the presence of a struct :c:type:`v4l2_device` for V4L2 drivers and struct v4l2_subdev for sub-device drivers.”h]”(hŒCNote that the control framework relies on the presence of a struct ”…”�”}”(hj°h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_device`”h]”hŒliteral”“”)�”}”(hjºh]”hŒ v4l2_device”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1j¼hj¸ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/media/v4l2-controls”Œ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰Œ reftarget”Œ v4l2_device”uh1hh³hÇh´Khj°ubhŒ@ for V4L2 drivers and struct v4l2_subdev for sub-device drivers.”…”�”}”(hj°h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KhhÝh²hubeh}”(h]”Œ introduction”ah ]”h"]”Œ introduction”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´KubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒObjects in the framework”h]”hŒObjects in the framework”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjïh²hh³hÇh´K#ubhï)�”}”(hŒThere are two main objects:”h]”hŒThere are two main objects:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K%hjïh²hubhï)�”}”(hŒ›The :c:type:`v4l2_ctrl` object describes the control properties and keeps track of the control's value (both the current value and the proposed new value).”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl`”h]”j½)�”}”(hjh]”hŒ v4l2_ctrl”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jÛŒ v4l2_ctrl”uh1hh³hÇh´K'hjubhŒ† object describes the control properties and keeps track of the control’s value (both the current value and the proposed new value).”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K'hjïh²hubhï)�”}”(hŒ×:c:type:`v4l2_ctrl_handler` is the object that keeps track of controls. It maintains a list of v4l2_ctrl objects that it owns and another list of references to controls, possibly to controls owned by other handlers.”h]”(h)�”}”(hŒ:c:type:`v4l2_ctrl_handler`”h]”j½)�”}”(hjEh]”hŒv4l2_ctrl_handler”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjCubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_handler”uh1hh³hÇh´K+hj?ubhŒ¼ is the object that keeps track of controls. It maintains a list of v4l2_ctrl objects that it owns and another list of references to controls, possibly to controls owned by other handlers.”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K+hjïh²hubeh}”(h]”Œobjects-in-the-framework”ah ]”h"]”Œobjects in the framework”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K#ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ+Basic usage for V4L2 and sub-device drivers”h]”hŒ+Basic usage for V4L2 and sub-device drivers”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjth²hh³hÇh´K1ubj )�”}”(hhh]”j)�”}”(hŒPrepare the driver: ”h]”hï)�”}”(hŒPrepare the driver:”h]”hŒPrepare the driver:”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K3hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj…h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”jHjIjJhjKjLuh1j hjth²hh³hÇh´K3ubhŒ literal_block”“”)�”}”(hŒ#include ”h]”hŒ#include ”…”�”}”hj¨sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒforce”‰Œlanguage”jÉŒhighlight_args”}”uh1j¦h³hÇh´K5hjth²hubhï)�”}”(hŒ71.1) Add the handler to your driver's top-level struct:”h]”hŒ91.1) Add the handler to your driver’s top-level struct:”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K9hjth²hubhï)�”}”(hŒFor V4L2 drivers:”h]”hŒFor V4L2 drivers:”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K;hjth²hubj§)�”}”(hŒ‹struct foo_dev { ... struct v4l2_device v4l2_dev; ... struct v4l2_ctrl_handler ctrl_handler; ... };”h]”hŒ‹struct foo_dev { ... struct v4l2_device v4l2_dev; ... struct v4l2_ctrl_handler ctrl_handler; ... };”…”�”}”hjÖsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´K=hjth²hubhï)�”}”(hŒFor sub-device drivers:”h]”hŒFor sub-device drivers:”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KGhjth²hubj§)�”}”(hŒ…struct foo_dev { ... struct v4l2_subdev sd; ... struct v4l2_ctrl_handler ctrl_handler; ... };”h]”hŒ…struct foo_dev { ... struct v4l2_subdev sd; ... struct v4l2_ctrl_handler ctrl_handler; ... };”…”�”}”hjósbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´KIhjth²hubhï)�”}”(hŒ1.2) Initialize the handler:”h]”hŒ1.2) Initialize the handler:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KShjth²hubj§)�”}”(hŒ;v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls);”h]”hŒ;v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls);”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´KUhjth²hubhï)�”}”(hŒ³The second argument is a hint telling the function how many controls this handler is expected to handle. It will allocate a hashtable based on this information. It is a hint only.”h]”hŒ³The second argument is a hint telling the function how many controls this handler is expected to handle. It will allocate a hashtable based on this information. It is a hint only.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KYhjth²hubhï)�”}”(hŒ.1.3) Hook the control handler into the driver:”h]”hŒ.1.3) Hook the control handler into the driver:”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K]hjth²hubhï)�”}”(hŒFor V4L2 drivers:”h]”hŒFor V4L2 drivers:”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K_hjth²hubj§)�”}”(hŒ0foo->v4l2_dev.ctrl_handler = &foo->ctrl_handler;”h]”hŒ0foo->v4l2_dev.ctrl_handler = &foo->ctrl_handler;”…”�”}”hjIsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Kahjth²hubhï)�”}”(hŒFor sub-device drivers:”h]”hŒFor sub-device drivers:”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kehjth²hubj§)�”}”(hŒ*foo->sd.ctrl_handler = &foo->ctrl_handler;”h]”hŒ*foo->sd.ctrl_handler = &foo->ctrl_handler;”…”�”}”hjfsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Kghjth²hubhï)�”}”(hŒ%1.4) Clean up the handler at the end:”h]”hŒ%1.4) Clean up the handler at the end:”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kkhjth²hubj§)�”}”(hŒ+v4l2_ctrl_handler_free(&foo->ctrl_handler);”h]”hŒ+v4l2_ctrl_handler_free(&foo->ctrl_handler);”…”�”}”hjƒsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Kmhjth²hubhï)�”}”(hŒN:c:func:`v4l2_ctrl_handler_free` does not touch the handler's ``error`` field.”h]”(h)�”}”(hŒ :c:func:`v4l2_ctrl_handler_free`”h]”j½)�”}”(hj˜h]”hŒv4l2_ctrl_handler_free()”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hj–ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_handler_free”uh1hh³hÇh´Kqhj’ubhŒ does not touch the handler’s ”…”�”}”(hj’h²hh³Nh´Nubj½)�”}”(hŒ ``error``”h]”hŒerror”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj’ubhŒ field.”…”�”}”(hj’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kqhjth²hubj )�”}”(hhh]”j)�”}”(hŒAdd controls: ”h]”hï)�”}”(hŒ Add controls:”h]”hŒ Add controls:”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KshjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”jHjIjJhjKjLj“Kuh1j hjth²hh³hÇh´Ksubhï)�”}”(hŒAYou add non-menu controls by calling :c:func:`v4l2_ctrl_new_std`:”h]”(hŒ%You add non-menu controls by calling ”…”�”}”(hjòh²hh³Nh´Nubh)�”}”(hŒ:c:func:`v4l2_ctrl_new_std`”h]”j½)�”}”(hjüh]”hŒv4l2_ctrl_new_std()”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hjúubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std”uh1hh³hÇh´KuhjòubhŒ:”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kuhjth²hubj§)�”}”(hŒ±struct v4l2_ctrl *v4l2_ctrl_new_std(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 min, s32 max, u32 step, s32 def);”h]”hŒ±struct v4l2_ctrl *v4l2_ctrl_new_std(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 min, s32 max, u32 step, s32 def);”…”�”}”hj#sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Kwhjth²hubhï)�”}”(hŒUMenu and integer menu controls are added by calling :c:func:`v4l2_ctrl_new_std_menu`:”h]”(hŒ4Menu and integer menu controls are added by calling ”…”�”}”(hj2h²hh³Nh´Nubh)�”}”(hŒ :c:func:`v4l2_ctrl_new_std_menu`”h]”j½)�”}”(hj<h]”hŒv4l2_ctrl_new_std_menu()”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hj:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std_menu”uh1hh³hÇh´K}hj2ubhŒ:”…”�”}”(hj2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K}hjth²hubj§)�”}”(hŒ²struct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 max, s32 skip_mask, s32 def);”h]”hŒ²struct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 max, s32 skip_mask, s32 def);”…”�”}”hjcsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´K€hjth²hubhï)�”}”(hŒfMenu controls with a driver specific menu are added by calling :c:func:`v4l2_ctrl_new_std_menu_items`:”h]”(hŒ?Menu controls with a driver specific menu are added by calling ”…”�”}”(hjrh²hh³Nh´Nubh)�”}”(hŒ&:c:func:`v4l2_ctrl_new_std_menu_items`”h]”j½)�”}”(hj|h]”hŒv4l2_ctrl_new_std_menu_items()”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hjzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std_menu_items”uh1hh³hÇh´K†hjrubhŒ:”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K†hjth²hubj§)�”}”(hŒästruct v4l2_ctrl *v4l2_ctrl_new_std_menu_items( struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 max, s32 skip_mask, s32 def, const char * const *qmenu);”h]”hŒästruct v4l2_ctrl *v4l2_ctrl_new_std_menu_items( struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 max, s32 skip_mask, s32 def, const char * const *qmenu);”…”�”}”hj£sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´K‰hjth²hubhï)�”}”(hŒXStandard compound controls can be added by calling :c:func:`v4l2_ctrl_new_std_compound`:”h]”(hŒ3Standard compound controls can be added by calling ”…”�”}”(hj²h²hh³Nh´Nubh)�”}”(hŒ$:c:func:`v4l2_ctrl_new_std_compound`”h]”j½)�”}”(hj¼h]”hŒv4l2_ctrl_new_std_compound()”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hjºubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std_compound”uh1hh³hÇh´K�hj²ubhŒ:”…”�”}”(hj²h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K�hjth²hubj§)�”}”(hŒ¶struct v4l2_ctrl *v4l2_ctrl_new_std_compound(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, const union v4l2_ctrl_ptr p_def);”h]”hŒ¶struct v4l2_ctrl *v4l2_ctrl_new_std_compound(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, const union v4l2_ctrl_ptr p_def);”…”�”}”hjãsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´K“hjth²hubhï)�”}”(hŒkInteger menu controls with a driver specific menu can be added by calling :c:func:`v4l2_ctrl_new_int_menu`:”h]”(hŒJInteger menu controls with a driver specific menu can be added by calling ”…”�”}”(hjòh²hh³Nh´Nubh)�”}”(hŒ :c:func:`v4l2_ctrl_new_int_menu`”h]”j½)�”}”(hjüh]”hŒv4l2_ctrl_new_int_menu()”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hjúubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_int_menu”uh1hh³hÇh´K™hjòubhŒ:”…”�”}”(hjòh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K™hjth²hubj§)�”}”(hŒ¹struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 max, s32 def, const s64 *qmenu_int);”h]”hŒ¹struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s32 max, s32 def, const s64 *qmenu_int);”…”�”}”hj#sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Kœhjth²hubhï)�”}”(hŒVThese functions are typically called right after the :c:func:`v4l2_ctrl_handler_init`:”h]”(hŒ5These functions are typically called right after the ”…”�”}”(hj2h²hh³Nh´Nubh)�”}”(hŒ :c:func:`v4l2_ctrl_handler_init`”h]”j½)�”}”(hj<h]”hŒv4l2_ctrl_handler_init()”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hj:ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_handler_init”uh1hh³hÇh´K¢hj2ubhŒ:”…”�”}”(hj2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´K¢hjth²hubj§)�”}”(hX¡static const s64 exp_bias_qmenu[] = { -2, -1, 0, 1, 2 }; static const char * const test_pattern[] = { "Disabled", "Vertical Bars", "Solid Black", "Solid White", }; v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_CONTRAST, 0, 255, 1, 128); v4l2_ctrl_new_std_menu(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_POWER_LINE_FREQUENCY, V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); v4l2_ctrl_new_int_menu(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_EXPOSURE_BIAS, ARRAY_SIZE(exp_bias_qmenu) - 1, ARRAY_SIZE(exp_bias_qmenu) / 2 - 1, exp_bias_qmenu); v4l2_ctrl_new_std_menu_items(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_TEST_PATTERN, ARRAY_SIZE(test_pattern) - 1, 0, 0, test_pattern); ... if (foo->ctrl_handler.error) return v4l2_ctrl_handler_free(&foo->ctrl_handler);”h]”hX¡static const s64 exp_bias_qmenu[] = { -2, -1, 0, 1, 2 }; static const char * const test_pattern[] = { "Disabled", "Vertical Bars", "Solid Black", "Solid White", }; v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_CONTRAST, 0, 255, 1, 128); v4l2_ctrl_new_std_menu(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_POWER_LINE_FREQUENCY, V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); v4l2_ctrl_new_int_menu(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_EXPOSURE_BIAS, ARRAY_SIZE(exp_bias_qmenu) - 1, ARRAY_SIZE(exp_bias_qmenu) / 2 - 1, exp_bias_qmenu); v4l2_ctrl_new_std_menu_items(&foo->ctrl_handler, &foo_ctrl_ops, V4L2_CID_TEST_PATTERN, ARRAY_SIZE(test_pattern) - 1, 0, 0, test_pattern); ... if (foo->ctrl_handler.error) return v4l2_ctrl_handler_free(&foo->ctrl_handler);”…”�”}”hjcsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´K¥hjth²hubhï)�”}”(hŒÃThe :c:func:`v4l2_ctrl_new_std` function returns the v4l2_ctrl pointer to the new control, but if you do not need to access the pointer outside the control ops, then there is no need to store it.”h]”(hŒThe ”…”�”}”(hjrh²hh³Nh´Nubh)�”}”(hŒ:c:func:`v4l2_ctrl_new_std`”h]”j½)�”}”(hj|h]”hŒv4l2_ctrl_new_std()”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hjzubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std”uh1hh³hÇh´KÆhjrubhŒ¤ function returns the v4l2_ctrl pointer to the new control, but if you do not need to access the pointer outside the control ops, then there is no need to store it.”…”�”}”(hjrh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÆhjth²hubhï)�”}”(hXWThe :c:func:`v4l2_ctrl_new_std` function will fill in most fields based on the control ID except for the min, max, step and default values. These are passed in the last four arguments. These values are driver specific while control attributes like type, name, flags are all global. The control's current value will be set to the default value.”h]”(hŒThe ”…”�”}”(hj£h²hh³Nh´Nubh)�”}”(hŒ:c:func:`v4l2_ctrl_new_std`”h]”j½)�”}”(hj­h]”hŒv4l2_ctrl_new_std()”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hj«ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std”uh1hh³hÇh´KÊhj£ubhX: function will fill in most fields based on the control ID except for the min, max, step and default values. These are passed in the last four arguments. These values are driver specific while control attributes like type, name, flags are all global. The control’s current value will be set to the default value.”…”�”}”(hj£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÊhjth²hubhï)�”}”(hXThe :c:func:`v4l2_ctrl_new_std_menu` function is very similar but it is used for menu controls. There is no min argument since that is always 0 for menu controls, and instead of a step there is a skip_mask argument: if bit X is 1, then menu item X is skipped.”h]”(hŒThe ”…”�”}”(hjÔh²hh³Nh´Nubh)�”}”(hŒ :c:func:`v4l2_ctrl_new_std_menu`”h]”j½)�”}”(hjÞh]”hŒv4l2_ctrl_new_std_menu()”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hjÜubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std_menu”uh1hh³hÇh´KÐhjÔubhŒß function is very similar but it is used for menu controls. There is no min argument since that is always 0 for menu controls, and instead of a step there is a skip_mask argument: if bit X is 1, then menu item X is skipped.”…”�”}”(hjÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÐhjth²hubhï)�”}”(hX7The :c:func:`v4l2_ctrl_new_int_menu` function creates a new standard integer menu control with driver-specific items in the menu. It differs from v4l2_ctrl_new_std_menu in that it doesn't have the mask argument and takes as the last argument an array of signed 64-bit integers that form an exact menu item list.”h]”(hŒThe ”…”�”}”(hjh²hh³Nh´Nubh)�”}”(hŒ :c:func:`v4l2_ctrl_new_int_menu`”h]”j½)�”}”(hjh]”hŒv4l2_ctrl_new_int_menu()”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hj ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_int_menu”uh1hh³hÇh´KÕhjubhX function creates a new standard integer menu control with driver-specific items in the menu. It differs from v4l2_ctrl_new_std_menu in that it doesn’t have the mask argument and takes as the last argument an array of signed 64-bit integers that form an exact menu item list.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÕhjth²hubhï)�”}”(hXÇThe :c:func:`v4l2_ctrl_new_std_menu_items` function is very similar to v4l2_ctrl_new_std_menu but takes an extra parameter qmenu, which is the driver specific menu for an otherwise standard menu control. A good example for this control is the test pattern control for capture/display/sensors devices that have the capability to generate test patterns. These test patterns are hardware specific, so the contents of the menu will vary from device to device.”h]”(hŒThe ”…”�”}”(hj6h²hh³Nh´Nubh)�”}”(hŒ&:c:func:`v4l2_ctrl_new_std_menu_items`”h]”j½)�”}”(hj@h]”hŒv4l2_ctrl_new_std_menu_items()”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-func”eh"]”h$]”h&]”uh1j¼hj>ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œfunc”Œ refexplicit”‰Œrefwarn”‰jÛŒv4l2_ctrl_new_std_menu_items”uh1hh³hÇh´KÛhj6ubhX� function is very similar to v4l2_ctrl_new_std_menu but takes an extra parameter qmenu, which is the driver specific menu for an otherwise standard menu control. A good example for this control is the test pattern control for capture/display/sensors devices that have the capability to generate test patterns. These test patterns are hardware specific, so the contents of the menu will vary from device to device.”…”�”}”(hj6h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KÛhjth²hubhï)�”}”(hX'Note that if something fails, the function will return NULL or an error and set ctrl_handler->error to the error code. If ctrl_handler->error was already set, then it will just return and do nothing. This is also true for v4l2_ctrl_handler_init if it cannot allocate the internal data structure.”h]”hX'Note that if something fails, the function will return NULL or an error and set ctrl_handler->error to the error code. If ctrl_handler->error was already set, then it will just return and do nothing. This is also true for v4l2_ctrl_handler_init if it cannot allocate the internal data structure.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kãhjth²hubhï)�”}”(hŒ”This makes it easy to init the handler and just add all controls and only check the error code at the end. Saves a lot of repetitive error checking.”h]”hŒ”This makes it easy to init the handler and just add all controls and only check the error code at the end. Saves a lot of repetitive error checking.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kèhjth²hubhï)�”}”(hŒbIt is recommended to add controls in ascending control ID order: it will be a bit faster that way.”h]”hŒbIt is recommended to add controls in ascending control ID order: it will be a bit faster that way.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Këhjth²hubj )�”}”(hhh]”j)�”}”(hŒ(Optionally force initial control setup: ”h]”hï)�”}”(hŒ'Optionally force initial control setup:”h]”hŒ'Optionally force initial control setup:”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kîhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”jHjIjJhjKjLj“Kuh1j hjth²hh³hÇh´Kîubj§)�”}”(hŒ,v4l2_ctrl_handler_setup(&foo->ctrl_handler);”h]”hŒ,v4l2_ctrl_handler_setup(&foo->ctrl_handler);”…”�”}”hj²sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Kðhjth²hubhï)�”}”(hŒøThis will call s_ctrl for all controls unconditionally. Effectively this initializes the hardware to the default control values. It is recommended that you do this as this ensures that both the internal data structures and the hardware are in sync.”h]”hŒøThis will call s_ctrl for all controls unconditionally. Effectively this initializes the hardware to the default control values. It is recommended that you do this as this ensures that both the internal data structures and the hardware are in sync.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Kôhjth²hubj )�”}”(hhh]”j)�”}”(hŒ/Finally: implement the :c:type:`v4l2_ctrl_ops` ”h]”hï)�”}”(hŒ.Finally: implement the :c:type:`v4l2_ctrl_ops`”h]”(hŒFinally: implement the ”…”�”}”(hjÖh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjàh]”hŒ v4l2_ctrl_ops”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÞubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰jÛŒ v4l2_ctrl_ops”uh1hh³hÇh´KùhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´KùhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”jHjIjJhjKjLj“Kuh1j hjth²hh³hÇh´Kùubj§)�”}”(hŒSstatic const struct v4l2_ctrl_ops foo_ctrl_ops = { .s_ctrl = foo_s_ctrl, };”h]”hŒSstatic const struct v4l2_ctrl_ops foo_ctrl_ops = { .s_ctrl = foo_s_ctrl, };”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Kûhjth²hubhï)�”}”(hŒUsually all you need is s_ctrl:”h]”hŒUsually all you need is s_ctrl:”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjth²hubj§)�”}”(hX‡static int foo_s_ctrl(struct v4l2_ctrl *ctrl) { struct foo *state = container_of(ctrl->handler, struct foo, ctrl_handler); switch (ctrl->id) { case V4L2_CID_BRIGHTNESS: write_reg(0x123, ctrl->val); break; case V4L2_CID_CONTRAST: write_reg(0x456, ctrl->val); break; } return 0; }”h]”hX‡static int foo_s_ctrl(struct v4l2_ctrl *ctrl) { struct foo *state = container_of(ctrl->handler, struct foo, ctrl_handler); switch (ctrl->id) { case V4L2_CID_BRIGHTNESS: write_reg(0x123, ctrl->val); break; case V4L2_CID_CONTRAST: write_reg(0x456, ctrl->val); break; } return 0; }”…”�”}”hj,sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Mhjth²hubhï)�”}”(hŒ¸The control ops are called with the v4l2_ctrl pointer as argument. The new control value has already been validated, so all you need to do is to actually update the hardware registers.”h]”hŒ¸The control ops are called with the v4l2_ctrl pointer as argument. The new control value has already been validated, so all you need to do is to actually update the hardware registers.”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjth²hubhï)�”}”(hŒñYou're done! And this is sufficient for most of the drivers we have. No need to do any validation of control values, or implement QUERYCTRL, QUERY_EXT_CTRL and QUERYMENU. And G/S_CTRL as well as G/TRY/S_EXT_CTRLS are automatically supported.”h]”hŒóYou’re done! And this is sufficient for most of the drivers we have. No need to do any validation of control values, or implement QUERYCTRL, QUERY_EXT_CTRL and QUERYMENU. And G/S_CTRL as well as G/TRY/S_EXT_CTRLS are automatically supported.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjth²hubhŒnote”“”)�”}”(hŒœThe remainder sections deal with more advanced controls topics and scenarios. In practice the basic usage as described above is sufficient for most drivers.”h]”hï)�”}”(hŒœThe remainder sections deal with more advanced controls topics and scenarios. In practice the basic usage as described above is sufficient for most drivers.”h]”hŒœThe remainder sections deal with more advanced controls topics and scenarios. In practice the basic usage as described above is sufficient for most drivers.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MhjYubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjth²hh³hÇh´Nubeh}”(h]”Œ+basic-usage-for-v4l2-and-sub-device-drivers”ah ]”h"]”Œ+basic usage for v4l2 and sub-device drivers”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´K1ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒInheriting Sub-device Controls”h]”hŒInheriting Sub-device Controls”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjyh²hh³hÇh´M$ubhï)�”}”(hX¦When a sub-device is registered with a V4L2 driver by calling v4l2_device_register_subdev() and the ctrl_handler fields of both v4l2_subdev and v4l2_device are set, then the controls of the subdev will become automatically available in the V4L2 driver as well. If the subdev driver contains controls that already exist in the V4L2 driver, then those will be skipped (so a V4L2 driver can always override a subdev control).”h]”hX¦When a sub-device is registered with a V4L2 driver by calling v4l2_device_register_subdev() and the ctrl_handler fields of both v4l2_subdev and v4l2_device are set, then the controls of the subdev will become automatically available in the V4L2 driver as well. If the subdev driver contains controls that already exist in the V4L2 driver, then those will be skipped (so a V4L2 driver can always override a subdev control).”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M&hjyh²hubhï)�”}”(hŒ—What happens here is that v4l2_device_register_subdev() calls v4l2_ctrl_add_handler() adding the controls of the subdev to the controls of v4l2_device.”h]”hŒ—What happens here is that v4l2_device_register_subdev() calls v4l2_ctrl_add_handler() adding the controls of the subdev to the controls of v4l2_device.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M-hjyh²hubeh}”(h]”Œinheriting-sub-device-controls”ah ]”h"]”Œinheriting sub-device controls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M$ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAccessing Control Values”h]”hŒAccessing Control Values”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj®h²hh³hÇh´M3ubhï)�”}”(hŒRThe following union is used inside the control framework to access control values:”h]”hŒRThe following union is used inside the control framework to access control values:”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M5hj®h²hubj§)�”}”(hŒgunion v4l2_ctrl_ptr { s32 *p_s32; s64 *p_s64; char *p_char; void *p; };”h]”hŒgunion v4l2_ctrl_ptr { s32 *p_s32; s64 *p_s64; char *p_char; void *p; };”…”�”}”hjÍsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M8hj®h²hubhï)�”}”(hŒbThe v4l2_ctrl struct contains these fields that can be used to access both current and new values:”h]”hŒbThe v4l2_ctrl struct contains these fields that can be used to access both current and new values:”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MAhj®h²hubj§)�”}”(hŒas32 val; struct { s32 val; } cur; union v4l2_ctrl_ptr p_new; union v4l2_ctrl_ptr p_cur;”h]”hŒas32 val; struct { s32 val; } cur; union v4l2_ctrl_ptr p_new; union v4l2_ctrl_ptr p_cur;”…”�”}”hjêsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´MDhj®h²hubhï)�”}”(hŒ+If the control has a simple s32 type, then:”h]”hŒ+If the control has a simple s32 type, then:”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MOhj®h²hubj§)�”}”(hŒC&ctrl->val == ctrl->p_new.p_s32 &ctrl->cur.val == ctrl->p_cur.p_s32”h]”hŒC&ctrl->val == ctrl->p_new.p_s32 &ctrl->cur.val == ctrl->p_cur.p_s32”…”�”}”hjsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´MQhj®h²hubhï)�”}”(hŒ�For all other types use ctrl->p_cur.p. Basically the val and cur.val fields can be considered an alias since these are used so often.”h]”hŒ�For all other types use ctrl->p_cur.p. Basically the val and cur.val fields can be considered an alias since these are used so often.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MVhj®h²hubhï)�”}”(hŒÃWithin the control ops you can freely use these. The val and cur.val speak for themselves. The p_char pointers point to character buffers of length ctrl->maximum + 1, and are always 0-terminated.”h]”hŒÃWithin the control ops you can freely use these. The val and cur.val speak for themselves. The p_char pointers point to character buffers of length ctrl->maximum + 1, and are always 0-terminated.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MYhj®h²hubhï)�”}”(hX3Unless the control is marked volatile the p_cur field points to the current cached control value. When you create a new control this value is made identical to the default value. After calling v4l2_ctrl_handler_setup() this value is passed to the hardware. It is generally a good idea to call this function.”h]”hX3Unless the control is marked volatile the p_cur field points to the current cached control value. When you create a new control this value is made identical to the default value. After calling v4l2_ctrl_handler_setup() this value is passed to the hardware. It is generally a good idea to call this function.”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M]hj®h²hubhï)�”}”(hXRWhenever a new value is set that new value is automatically cached. This means that most drivers do not need to implement the g_volatile_ctrl() op. The exception is for controls that return a volatile register such as a signal strength read-out that changes continuously. In that case you will need to implement g_volatile_ctrl like this:”h]”hXRWhenever a new value is set that new value is automatically cached. This means that most drivers do not need to implement the g_volatile_ctrl() op. The exception is for controls that return a volatile register such as a signal strength read-out that changes continuously. In that case you will need to implement g_volatile_ctrl like this:”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mchj®h²hubj§)�”}”(hŒÆstatic int foo_g_volatile_ctrl(struct v4l2_ctrl *ctrl) { switch (ctrl->id) { case V4L2_CID_BRIGHTNESS: ctrl->val = read_reg(0x123); break; } }”h]”hŒÆstatic int foo_g_volatile_ctrl(struct v4l2_ctrl *ctrl) { switch (ctrl->id) { case V4L2_CID_BRIGHTNESS: ctrl->val = read_reg(0x123); break; } }”…”�”}”hjNsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Mihj®h²hubhï)�”}”(hŒòNote that you use the 'new value' union as well in g_volatile_ctrl. In general controls that need to implement g_volatile_ctrl are read-only controls. If they are not, a V4L2_EVENT_CTRL_CH_VALUE will not be generated when the control changes.”h]”hŒöNote that you use the ‘new value’ union as well in g_volatile_ctrl. In general controls that need to implement g_volatile_ctrl are read-only controls. If they are not, a V4L2_EVENT_CTRL_CH_VALUE will not be generated when the control changes.”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mthj®h²hubhï)�”}”(hŒFTo mark a control as volatile you have to set V4L2_CTRL_FLAG_VOLATILE:”h]”hŒFTo mark a control as volatile you have to set V4L2_CTRL_FLAG_VOLATILE:”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Myhj®h²hubj§)�”}”(hŒkctrl = v4l2_ctrl_new_std(&sd->ctrl_handler, ...); if (ctrl) ctrl->flags |= V4L2_CTRL_FLAG_VOLATILE;”h]”hŒkctrl = v4l2_ctrl_new_std(&sd->ctrl_handler, ...); if (ctrl) ctrl->flags |= V4L2_CTRL_FLAG_VOLATILE;”…”�”}”hjysbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M{hj®h²hubhï)�”}”(hŒÜFor try/s_ctrl the new values (i.e. as passed by the user) are filled in and you can modify them in try_ctrl or set them in s_ctrl. The 'cur' union contains the current value, which you can use (but not change!) as well.”h]”hŒàFor try/s_ctrl the new values (i.e. as passed by the user) are filled in and you can modify them in try_ctrl or set them in s_ctrl. The ‘cur’ union contains the current value, which you can use (but not change!) as well.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M�hj®h²hubhï)�”}”(hŒgIf s_ctrl returns 0 (OK), then the control framework will copy the new final values to the 'cur' union.”h]”hŒkIf s_ctrl returns 0 (OK), then the control framework will copy the new final values to the ‘cur’ union.”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M…hj®h²hubhï)�”}”(hXWhile in g_volatile/s/try_ctrl you can access the value of all controls owned by the same handler since the handler's lock is held. If you need to access the value of controls owned by other handlers, then you have to be very careful not to introduce deadlocks.”h]”hXWhile in g_volatile/s/try_ctrl you can access the value of all controls owned by the same handler since the handler’s lock is held. If you need to access the value of controls owned by other handlers, then you have to be very careful not to introduce deadlocks.”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mˆhj®h²hubhï)�”}”(hŒ�Outside of the control ops you have to go through to helper functions to get or set a single control value safely in your driver:”h]”hŒ�Outside of the control ops you have to go through to helper functions to get or set a single control value safely in your driver:”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M�hj®h²hubj§)�”}”(hŒds32 v4l2_ctrl_g_ctrl(struct v4l2_ctrl *ctrl); int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val);”h]”hŒds32 v4l2_ctrl_g_ctrl(struct v4l2_ctrl *ctrl); int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val);”…”�”}”hjÀsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M�hj®h²hubhï)�”}”(hŒæThese functions go through the control framework just as VIDIOC_G/S_CTRL ioctls do. Don't use these inside the control ops g_volatile/s/try_ctrl, though, that will result in a deadlock since these helpers lock the handler as well.”h]”hŒèThese functions go through the control framework just as VIDIOC_G/S_CTRL ioctls do. Don’t use these inside the control ops g_volatile/s/try_ctrl, though, that will result in a deadlock since these helpers lock the handler as well.”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M•hj®h²hubhï)�”}”(hŒ,You can also take the handler lock yourself:”h]”hŒ,You can also take the handler lock yourself:”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M™hj®h²hubj§)�”}”(hŒ»mutex_lock(&state->ctrl_handler.lock); pr_info("String value is '%s'\n", ctrl1->p_cur.p_char); pr_info("Integer value is '%s'\n", ctrl2->cur.val); mutex_unlock(&state->ctrl_handler.lock);”h]”hŒ»mutex_lock(&state->ctrl_handler.lock); pr_info("String value is '%s'\n", ctrl1->p_cur.p_char); pr_info("Integer value is '%s'\n", ctrl2->cur.val); mutex_unlock(&state->ctrl_handler.lock);”…”�”}”hjësbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M›hj®h²hubeh}”(h]”Œaccessing-control-values”ah ]”h"]”Œaccessing control values”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M3ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ Menu Controls”h]”hŒ Menu Controls”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´M¤ubhï)�”}”(hŒ)The v4l2_ctrl struct contains this union:”h]”hŒ)The v4l2_ctrl struct contains this union:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M¦hj h²hubj§)�”}”(hŒ8union { u32 step; u32 menu_skip_mask; };”h]”hŒ8union { u32 step; u32 menu_skip_mask; };”…”�”}”hj! sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M¨hj h²hubhï)�”}”(hX9For menu controls menu_skip_mask is used. What it does is that it allows you to easily exclude certain menu items. This is used in the VIDIOC_QUERYMENU implementation where you can return -EINVAL if a certain menu item is not present. Note that VIDIOC_QUERYCTRL always returns a step value of 1 for menu controls.”h]”hX9For menu controls menu_skip_mask is used. What it does is that it allows you to easily exclude certain menu items. This is used in the VIDIOC_QUERYMENU implementation where you can return -EINVAL if a certain menu item is not present. Note that VIDIOC_QUERYCTRL always returns a step value of 1 for menu controls.”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M¯hj h²hubhï)�”}”(hXYA good example is the MPEG Audio Layer II Bitrate menu control where the menu is a list of standardized possible bitrates. But in practice hardware implementations will only support a subset of those. By setting the skip mask you can tell the framework which menu items should be skipped. Setting it to 0 means that all menu items are supported.”h]”hXYA good example is the MPEG Audio Layer II Bitrate menu control where the menu is a list of standardized possible bitrates. But in practice hardware implementations will only support a subset of those. By setting the skip mask you can tell the framework which menu items should be skipped. Setting it to 0 means that all menu items are supported.”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mµhj h²hubhï)�”}”(hŒzYou set this mask either through the v4l2_ctrl_config struct for a custom control, or by calling v4l2_ctrl_new_std_menu().”h]”hŒzYou set this mask either through the v4l2_ctrl_config struct for a custom control, or by calling v4l2_ctrl_new_std_menu().”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M»hj h²hubeh}”(h]”Œ menu-controls”ah ]”h"]”Œ menu controls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M¤ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒCustom Controls”h]”hŒCustom Controls”…”�”}”(hje h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjb h²hh³hÇh´MÀubhï)�”}”(hŒEDriver specific controls can be created using v4l2_ctrl_new_custom():”h]”hŒEDriver specific controls can be created using v4l2_ctrl_new_custom():”…”�”}”(hjs h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÂhjb h²hubj§)�”}”(hXpstatic const struct v4l2_ctrl_config ctrl_filter = { .ops = &ctrl_custom_ops, .id = V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER, .name = "Spatial Filter", .type = V4L2_CTRL_TYPE_INTEGER, .flags = V4L2_CTRL_FLAG_SLIDER, .max = 15, .step = 1, }; ctrl = v4l2_ctrl_new_custom(&foo->ctrl_handler, &ctrl_filter, NULL);”h]”hXpstatic const struct v4l2_ctrl_config ctrl_filter = { .ops = &ctrl_custom_ops, .id = V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER, .name = "Spatial Filter", .type = V4L2_CTRL_TYPE_INTEGER, .flags = V4L2_CTRL_FLAG_SLIDER, .max = 15, .step = 1, }; ctrl = v4l2_ctrl_new_custom(&foo->ctrl_handler, &ctrl_filter, NULL);”…”�”}”hj� sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´MÄhjb h²hubhï)�”}”(hŒWThe last argument is the priv pointer which can be set to driver-specific private data.”h]”hŒWThe last argument is the priv pointer which can be set to driver-specific private data.”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÒhjb h²hubhï)�”}”(hŒHThe v4l2_ctrl_config struct also has a field to set the is_private flag.”h]”hŒHThe v4l2_ctrl_config struct also has a field to set the is_private flag.”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÕhjb h²hubhï)�”}”(hŒ•If the name field is not set, then the framework will assume this is a standard control and will fill in the name, type and flags fields accordingly.”h]”hŒ•If the name field is not set, then the framework will assume this is a standard control and will fill in the name, type and flags fields accordingly.”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M×hjb h²hubeh}”(h]”Œcustom-controls”ah ]”h"]”Œcustom controls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MÀubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒActive and Grabbed Controls”h]”hŒActive and Grabbed Controls”…”�”}”(hjÅ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´MÜubhï)�”}”(hXtIf you get more complex relationships between controls, then you may have to activate and deactivate controls. For example, if the Chroma AGC control is on, then the Chroma Gain control is inactive. That is, you may set it, but the value will not be used by the hardware as long as the automatic gain control is on. Typically user interfaces can disable such input fields.”h]”hXtIf you get more complex relationships between controls, then you may have to activate and deactivate controls. For example, if the Chroma AGC control is on, then the Chroma Gain control is inactive. That is, you may set it, but the value will not be used by the hardware as long as the automatic gain control is on. Typically user interfaces can disable such input fields.”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÞhj h²hubhï)�”}”(hŒçYou can set the 'active' status using v4l2_ctrl_activate(). By default all controls are active. Note that the framework does not check for this flag. It is meant purely for GUIs. The function is typically called from within s_ctrl.”h]”hŒëYou can set the ‘active’ status using v4l2_ctrl_activate(). By default all controls are active. Note that the framework does not check for this flag. It is meant purely for GUIs. The function is typically called from within s_ctrl.”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mähj h²hubhï)�”}”(hŒàThe other flag is the 'grabbed' flag. A grabbed control means that you cannot change it because it is in use by some resource. Typical examples are MPEG bitrate controls that cannot be changed while capturing is in progress.”h]”hŒäThe other flag is the ‘grabbed’ flag. A grabbed control means that you cannot change it because it is in use by some resource. Typical examples are MPEG bitrate controls that cannot be changed while capturing is in progress.”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Méhj h²hubhï)�”}”(hŒîIf a control is set to 'grabbed' using v4l2_ctrl_grab(), then the framework will return -EBUSY if an attempt is made to set this control. The v4l2_ctrl_grab() function is typically called from the driver when it starts or stops streaming.”h]”hŒòIf a control is set to ‘grabbed’ using v4l2_ctrl_grab(), then the framework will return -EBUSY if an attempt is made to set this control. The v4l2_ctrl_grab() function is typically called from the driver when it starts or stops streaming.”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Míhj h²hubeh}”(h]”Œactive-and-grabbed-controls”ah ]”h"]”Œactive and grabbed controls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MÜubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒControl Clusters”h]”hŒControl Clusters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´Môubhï)�”}”(hŒµBy default all controls are independent from the others. But in more complex scenarios you can get dependencies from one control to another. In that case you need to 'cluster' them:”h]”hŒ¹By default all controls are independent from the others. But in more complex scenarios you can get dependencies from one control to another. In that case you need to ‘cluster’ them:”…”�”}”(hj$ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Möhj h²hubj§)�”}”(hX´struct foo { struct v4l2_ctrl_handler ctrl_handler; #define AUDIO_CL_VOLUME (0) #define AUDIO_CL_MUTE (1) struct v4l2_ctrl *audio_cluster[2]; ... }; state->audio_cluster[AUDIO_CL_VOLUME] = v4l2_ctrl_new_std(&state->ctrl_handler, ...); state->audio_cluster[AUDIO_CL_MUTE] = v4l2_ctrl_new_std(&state->ctrl_handler, ...); v4l2_ctrl_cluster(ARRAY_SIZE(state->audio_cluster), state->audio_cluster);”h]”hX´struct foo { struct v4l2_ctrl_handler ctrl_handler; #define AUDIO_CL_VOLUME (0) #define AUDIO_CL_MUTE (1) struct v4l2_ctrl *audio_cluster[2]; ... }; state->audio_cluster[AUDIO_CL_VOLUME] = v4l2_ctrl_new_std(&state->ctrl_handler, ...); state->audio_cluster[AUDIO_CL_MUTE] = v4l2_ctrl_new_std(&state->ctrl_handler, ...); v4l2_ctrl_cluster(ARRAY_SIZE(state->audio_cluster), state->audio_cluster);”…”�”}”hj2 sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Múhj h²hubhï)�”}”(hXFrom now on whenever one or more of the controls belonging to the same cluster is set (or 'gotten', or 'tried'), only the control ops of the first control ('volume' in this example) is called. You effectively create a new composite control. Similar to how a 'struct' works in C.”h]”hX&From now on whenever one or more of the controls belonging to the same cluster is set (or ‘gotten’, or ‘tried’), only the control ops of the first control (‘volume’ in this example) is called. You effectively create a new composite control. Similar to how a ‘struct’ works in C.”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M hj h²hubhï)�”}”(hŒ€So when s_ctrl is called with V4L2_CID_AUDIO_VOLUME as argument, you should set all two controls belonging to the audio_cluster:”h]”hŒ€So when s_ctrl is called with V4L2_CID_AUDIO_VOLUME as argument, you should set all two controls belonging to the audio_cluster:”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhj h²hubj§)�”}”(hXístatic int foo_s_ctrl(struct v4l2_ctrl *ctrl) { struct foo *state = container_of(ctrl->handler, struct foo, ctrl_handler); switch (ctrl->id) { case V4L2_CID_AUDIO_VOLUME: { struct v4l2_ctrl *mute = ctrl->cluster[AUDIO_CL_MUTE]; write_reg(0x123, mute->val ? 0 : ctrl->val); break; } case V4L2_CID_CONTRAST: write_reg(0x456, ctrl->val); break; } return 0; }”h]”hXístatic int foo_s_ctrl(struct v4l2_ctrl *ctrl) { struct foo *state = container_of(ctrl->handler, struct foo, ctrl_handler); switch (ctrl->id) { case V4L2_CID_AUDIO_VOLUME: { struct v4l2_ctrl *mute = ctrl->cluster[AUDIO_CL_MUTE]; write_reg(0x123, mute->val ? 0 : ctrl->val); break; } case V4L2_CID_CONTRAST: write_reg(0x456, ctrl->val); break; } return 0; }”…”�”}”hj] sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Mhj h²hubhï)�”}”(hŒFIn the example above the following are equivalent for the VOLUME case:”h]”hŒFIn the example above the following are equivalent for the VOLUME case:”…”�”}”(hjl h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M&hj h²hubj§)�”}”(hŒ“ctrl == ctrl->cluster[AUDIO_CL_VOLUME] == state->audio_cluster[AUDIO_CL_VOLUME] ctrl->cluster[AUDIO_CL_MUTE] == state->audio_cluster[AUDIO_CL_MUTE]”h]”hŒ“ctrl == ctrl->cluster[AUDIO_CL_VOLUME] == state->audio_cluster[AUDIO_CL_VOLUME] ctrl->cluster[AUDIO_CL_MUTE] == state->audio_cluster[AUDIO_CL_MUTE]”…”�”}”hjz sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M(hj h²hubhï)�”}”(hŒuIn practice using cluster arrays like this becomes very tiresome. So instead the following equivalent method is used:”h]”hŒuIn practice using cluster arrays like this becomes very tiresome. So instead the following equivalent method is used:”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M-hj h²hubj§)�”}”(hŒistruct { /* audio cluster */ struct v4l2_ctrl *volume; struct v4l2_ctrl *mute; };”h]”hŒistruct { /* audio cluster */ struct v4l2_ctrl *volume; struct v4l2_ctrl *mute; };”…”�”}”hj— sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M0hj h²hubhï)�”}”(hŒÈThe anonymous struct is used to clearly 'cluster' these two control pointers, but it serves no other purpose. The effect is the same as creating an array with two control pointers. So you can just do:”h]”hŒÌThe anonymous struct is used to clearly ‘cluster’ these two control pointers, but it serves no other purpose. The effect is the same as creating an array with two control pointers. So you can just do:”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M8hj h²hubj§)�”}”(hŒŸstate->volume = v4l2_ctrl_new_std(&state->ctrl_handler, ...); state->mute = v4l2_ctrl_new_std(&state->ctrl_handler, ...); v4l2_ctrl_cluster(2, &state->volume);”h]”hŒŸstate->volume = v4l2_ctrl_new_std(&state->ctrl_handler, ...); state->mute = v4l2_ctrl_new_std(&state->ctrl_handler, ...); v4l2_ctrl_cluster(2, &state->volume);”…”�”}”hj´ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M<hj h²hubhï)�”}”(hŒHAnd in foo_s_ctrl you can use these pointers directly: state->mute->val.”h]”hŒHAnd in foo_s_ctrl you can use these pointers directly: state->mute->val.”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MBhj h²hubhï)�”}”(hX0Note that controls in a cluster may be NULL. For example, if for some reason mute was never added (because the hardware doesn't support that particular feature), then mute will be NULL. So in that case we have a cluster of 2 controls, of which only 1 is actually instantiated. The only restriction is that the first control of the cluster must always be present, since that is the 'master' control of the cluster. The master control is the one that identifies the cluster and that provides the pointer to the v4l2_ctrl_ops struct that is used for that cluster.”h]”hX6Note that controls in a cluster may be NULL. For example, if for some reason mute was never added (because the hardware doesn’t support that particular feature), then mute will be NULL. So in that case we have a cluster of 2 controls, of which only 1 is actually instantiated. The only restriction is that the first control of the cluster must always be present, since that is the ‘master’ control of the cluster. The master control is the one that identifies the cluster and that provides the pointer to the v4l2_ctrl_ops struct that is used for that cluster.”…”�”}”(hjÑ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MDhj h²hubhï)�”}”(hŒfObviously, all controls in the cluster array must be initialized to either a valid control or to NULL.”h]”hŒfObviously, all controls in the cluster array must be initialized to either a valid control or to NULL.”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MMhj h²hubhï)�”}”(hX»In rare cases you might want to know which controls of a cluster actually were set explicitly by the user. For this you can check the 'is_new' flag of each control. For example, in the case of a volume/mute cluster the 'is_new' flag of the mute control would be set if the user called VIDIOC_S_CTRL for mute only. If the user would call VIDIOC_S_EXT_CTRLS for both mute and volume controls, then the 'is_new' flag would be 1 for both controls.”h]”hXÇIn rare cases you might want to know which controls of a cluster actually were set explicitly by the user. For this you can check the ‘is_new’ flag of each control. For example, in the case of a volume/mute cluster the ‘is_new’ flag of the mute control would be set if the user called VIDIOC_S_CTRL for mute only. If the user would call VIDIOC_S_EXT_CTRLS for both mute and volume controls, then the ‘is_new’ flag would be 1 for both controls.”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MPhj h²hubhï)�”}”(hŒIThe 'is_new' flag is always 1 when called from v4l2_ctrl_handler_setup().”h]”hŒMThe ‘is_new’ flag is always 1 when called from v4l2_ctrl_handler_setup().”…”�”}”(hjû h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MWhj h²hubeh}”(h]”Œcontrol-clusters”ah ]”h"]”Œcontrol clusters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MôubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ7Handling autogain/gain-type Controls with Auto Clusters”h]”hŒ7Handling autogain/gain-type Controls with Auto Clusters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj h²hh³hÇh´M[ubhï)�”}”(hXaA common type of control cluster is one that handles 'auto-foo/foo'-type controls. Typical examples are autogain/gain, autoexposure/exposure, autowhitebalance/red balance/blue balance. In all cases you have one control that determines whether another control is handled automatically by the hardware, or whether it is under manual control from the user.”h]”hXeA common type of control cluster is one that handles ‘auto-foo/foo’-type controls. Typical examples are autogain/gain, autoexposure/exposure, autowhitebalance/red balance/blue balance. In all cases you have one control that determines whether another control is handled automatically by the hardware, or whether it is under manual control from the user.”…”�”}”(hj" h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M]hj h²hubhï)�”}”(hŒøIf the cluster is in automatic mode, then the manual controls should be marked inactive and volatile. When the volatile controls are read the g_volatile_ctrl operation should return the value that the hardware's automatic mode set up automatically.”h]”hŒúIf the cluster is in automatic mode, then the manual controls should be marked inactive and volatile. When the volatile controls are read the g_volatile_ctrl operation should return the value that the hardware’s automatic mode set up automatically.”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mchj h²hubhï)�”}”(hXAIf the cluster is put in manual mode, then the manual controls should become active again and the volatile flag is cleared (so g_volatile_ctrl is no longer called while in manual mode). In addition just before switching to manual mode the current values as determined by the auto mode are copied as the new manual values.”h]”hXAIf the cluster is put in manual mode, then the manual controls should become active again and the volatile flag is cleared (so g_volatile_ctrl is no longer called while in manual mode). In addition just before switching to manual mode the current values as determined by the auto mode are copied as the new manual values.”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhhj h²hubhï)�”}”(hŒ’Finally the V4L2_CTRL_FLAG_UPDATE should be set for the auto control since changing that control affects the control flags of the manual controls.”h]”hŒ’Finally the V4L2_CTRL_FLAG_UPDATE should be set for the auto control since changing that control affects the control flags of the manual controls.”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mnhj h²hubhï)�”}”(hŒRIn order to simplify this a special variation of v4l2_ctrl_cluster was introduced:”h]”hŒRIn order to simplify this a special variation of v4l2_ctrl_cluster was introduced:”…”�”}”(hjZ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mqhj h²hubj§)�”}”(hŒ‹void v4l2_ctrl_auto_cluster(unsigned ncontrols, struct v4l2_ctrl **controls, u8 manual_val, bool set_volatile);”h]”hŒ‹void v4l2_ctrl_auto_cluster(unsigned ncontrols, struct v4l2_ctrl **controls, u8 manual_val, bool set_volatile);”…”�”}”hjh sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Mthj h²hubhï)�”}”(hXThe first two arguments are identical to v4l2_ctrl_cluster. The third argument tells the framework which value switches the cluster into manual mode. The last argument will optionally set V4L2_CTRL_FLAG_VOLATILE for the non-auto controls. If it is false, then the manual controls are never volatile. You would typically use that if the hardware does not give you the option to read back to values as determined by the auto mode (e.g. if autogain is on, the hardware doesn't allow you to obtain the current gain value).”•Æh]”hXThe first two arguments are identical to v4l2_ctrl_cluster. The third argument tells the framework which value switches the cluster into manual mode. The last argument will optionally set V4L2_CTRL_FLAG_VOLATILE for the non-auto controls. If it is false, then the manual controls are never volatile. You would typically use that if the hardware does not give you the option to read back to values as determined by the auto mode (e.g. if autogain is on, the hardware doesn’t allow you to obtain the current gain value).”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Myhj h²hubhï)�”}”(hŒEThe first control of the cluster is assumed to be the 'auto' control.”h]”hŒIThe first control of the cluster is assumed to be the ‘auto’ control.”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M�hj h²hubhï)�”}”(hŒiUsing this function will ensure that you don't need to handle all the complex flag and volatile handling.”h]”hŒkUsing this function will ensure that you don’t need to handle all the complex flag and volatile handling.”…”�”}”(hj“ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mƒhj h²hubeh}”(h]”Œ7handling-autogain-gain-type-controls-with-auto-clusters”ah ]”h"]”Œ7handling autogain/gain-type controls with auto clusters”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M[ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒVIDIOC_LOG_STATUS Support”h]”hŒVIDIOC_LOG_STATUS Support”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj© h²hh³hÇh´Mˆubhï)�”}”(hXCThis ioctl allow you to dump the current status of a driver to the kernel log. The v4l2_ctrl_handler_log_status(ctrl_handler, prefix) can be used to dump the value of the controls owned by the given handler to the log. You can supply a prefix as well. If the prefix didn't end with a space, then ': ' will be added for you.”h]”hXIThis ioctl allow you to dump the current status of a driver to the kernel log. The v4l2_ctrl_handler_log_status(ctrl_handler, prefix) can be used to dump the value of the controls owned by the given handler to the log. You can supply a prefix as well. If the prefix didn’t end with a space, then ‘: ‘ will be added for you.”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MŠhj© h²hubeh}”(h]”Œvidioc-log-status-support”ah ]”h"]”Œvidioc_log_status support”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MˆubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ,Different Handlers for Different Video Nodes”h]”hŒ,Different Handlers for Different Video Nodes”…”�”}”(hjÓ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjÐ h²hh³hÇh´M’ubhï)�”}”(hŒúUsually the V4L2 driver has just one control handler that is global for all video nodes. But you can also specify different control handlers for different video nodes. You can do that by manually setting the ctrl_handler field of struct video_device.”h]”hŒúUsually the V4L2 driver has just one control handler that is global for all video nodes. But you can also specify different control handlers for different video nodes. You can do that by manually setting the ctrl_handler field of struct video_device.”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M”hjÐ h²hubhï)�”}”(hX@That is no problem if there are no subdevs involved but if there are, then you need to block the automatic merging of subdev controls to the global control handler. You do that by simply setting the ctrl_handler field in struct v4l2_device to NULL. Now v4l2_device_register_subdev() will no longer merge subdev controls.”h]”hX@That is no problem if there are no subdevs involved but if there are, then you need to block the automatic merging of subdev controls to the global control handler. You do that by simply setting the ctrl_handler field in struct v4l2_device to NULL. Now v4l2_device_register_subdev() will no longer merge subdev controls.”…”�”}”(hjï h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M™hjÐ h²hubhï)�”}”(hX­After each subdev was added, you will then have to call v4l2_ctrl_add_handler manually to add the subdev's control handler (sd->ctrl_handler) to the desired control handler. This control handler may be specific to the video_device or for a subset of video_device's. For example: the radio device nodes only have audio controls, while the video and vbi device nodes share the same control handler for the audio and video controls.”h]”hX±After each subdev was added, you will then have to call v4l2_ctrl_add_handler manually to add the subdev’s control handler (sd->ctrl_handler) to the desired control handler. This control handler may be specific to the video_device or for a subset of video_device’s. For example: the radio device nodes only have audio controls, while the video and vbi device nodes share the same control handler for the audio and video controls.”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MŸhjÐ h²hubhï)�”}”(hX'If you want to have one handler (e.g. for a radio device node) have a subset of another handler (e.g. for a video device node), then you should first add the controls to the first handler, add the other controls to the second handler and finally add the first handler to the second. For example:”h]”hX'If you want to have one handler (e.g. for a radio device node) have a subset of another handler (e.g. for a video device node), then you should first add the controls to the first handler, add the other controls to the second handler and finally add the first handler to the second. For example:”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M¦hjÐ h²hubj§)�”}”(hX~v4l2_ctrl_new_std(&radio_ctrl_handler, &radio_ops, V4L2_CID_AUDIO_VOLUME, ...); v4l2_ctrl_new_std(&radio_ctrl_handler, &radio_ops, V4L2_CID_AUDIO_MUTE, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &video_ops, V4L2_CID_BRIGHTNESS, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &video_ops, V4L2_CID_CONTRAST, ...); v4l2_ctrl_add_handler(&video_ctrl_handler, &radio_ctrl_handler, NULL);”h]”hX~v4l2_ctrl_new_std(&radio_ctrl_handler, &radio_ops, V4L2_CID_AUDIO_VOLUME, ...); v4l2_ctrl_new_std(&radio_ctrl_handler, &radio_ops, V4L2_CID_AUDIO_MUTE, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &video_ops, V4L2_CID_BRIGHTNESS, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &video_ops, V4L2_CID_CONTRAST, ...); v4l2_ctrl_add_handler(&video_ctrl_handler, &radio_ctrl_handler, NULL);”…”�”}”hj sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M«hjÐ h²hubhï)�”}”(hŒ©The last argument to v4l2_ctrl_add_handler() is a filter function that allows you to filter which controls will be added. Set it to NULL if you want to add all controls.”h]”hŒ©The last argument to v4l2_ctrl_add_handler() is a filter function that allows you to filter which controls will be added. Set it to NULL if you want to add all controls.”…”�”}”(hj( h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M³hjÐ h²hubhï)�”}”(hŒ.Or you can add specific controls to a handler:”h]”hŒ.Or you can add specific controls to a handler:”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M·hjÐ h²hubj§)�”}”(hŒàvolume = v4l2_ctrl_new_std(&video_ctrl_handler, &ops, V4L2_CID_AUDIO_VOLUME, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &ops, V4L2_CID_BRIGHTNESS, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &ops, V4L2_CID_CONTRAST, ...);”h]”hŒàvolume = v4l2_ctrl_new_std(&video_ctrl_handler, &ops, V4L2_CID_AUDIO_VOLUME, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &ops, V4L2_CID_BRIGHTNESS, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &ops, V4L2_CID_CONTRAST, ...);”…”�”}”hjD sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M¹hjÐ h²hubhï)�”}”(hŒTWhat you should not do is make two identical controls for two handlers. For example:”h]”hŒTWhat you should not do is make two identical controls for two handlers. For example:”…”�”}”(hjS h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M¿hjÐ h²hubj§)�”}”(hŒ›v4l2_ctrl_new_std(&radio_ctrl_handler, &radio_ops, V4L2_CID_AUDIO_MUTE, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &video_ops, V4L2_CID_AUDIO_MUTE, ...);”h]”hŒ›v4l2_ctrl_new_std(&radio_ctrl_handler, &radio_ops, V4L2_CID_AUDIO_MUTE, ...); v4l2_ctrl_new_std(&video_ctrl_handler, &video_ops, V4L2_CID_AUDIO_MUTE, ...);”…”�”}”hja sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´MÂhjÐ h²hubhï)�”}”(hŒ This would be bad since muting the radio would not change the video mute control. The rule is to have one control for each hardware 'knob' that you can twiddle.”h]”hŒ¤This would be bad since muting the radio would not change the video mute control. The rule is to have one control for each hardware ‘knob’ that you can twiddle.”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÇhjÐ h²hubeh}”(h]”Œ,different-handlers-for-different-video-nodes”ah ]”h"]”Œ,different handlers for different video nodes”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M’ubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒFinding Controls”h]”hŒFinding Controls”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj† h²hh³hÇh´MÍubhï)�”}”(hŒtNormally you have created the controls yourself and you can store the struct v4l2_ctrl pointer into your own struct.”h]”hŒtNormally you have created the controls yourself and you can store the struct v4l2_ctrl pointer into your own struct.”…”�”}”(hj— h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÏhj† h²hubhï)�”}”(hŒ“But sometimes you need to find a control from another handler that you do not own. For example, if you have to find a volume control from a subdev.”h]”hŒ“But sometimes you need to find a control from another handler that you do not own. For example, if you have to find a volume control from a subdev.”…”�”}”(hj¥ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÒhj† h²hubhï)�”}”(hŒ*You can do that by calling v4l2_ctrl_find:”h]”hŒ*You can do that by calling v4l2_ctrl_find:”…”�”}”(hj³ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÕhj† h²hubj§)�”}”(hŒ\struct v4l2_ctrl *volume; volume = v4l2_ctrl_find(sd->ctrl_handler, V4L2_CID_AUDIO_VOLUME);”h]”hŒ\struct v4l2_ctrl *volume; volume = v4l2_ctrl_find(sd->ctrl_handler, V4L2_CID_AUDIO_VOLUME);”…”�”}”hjÁ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M×hj† h²hubhï)�”}”(hŒySince v4l2_ctrl_find will lock the handler you have to be careful where you use it. For example, this is not a good idea:”h]”hŒySince v4l2_ctrl_find will lock the handler you have to be careful where you use it. For example, this is not a good idea:”…”�”}”(hjÐ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´MÝhj† h²hubj§)�”}”(hŒµstruct v4l2_ctrl_handler ctrl_handler; v4l2_ctrl_new_std(&ctrl_handler, &video_ops, V4L2_CID_BRIGHTNESS, ...); v4l2_ctrl_new_std(&ctrl_handler, &video_ops, V4L2_CID_CONTRAST, ...);”h]”hŒµstruct v4l2_ctrl_handler ctrl_handler; v4l2_ctrl_new_std(&ctrl_handler, &video_ops, V4L2_CID_BRIGHTNESS, ...); v4l2_ctrl_new_std(&ctrl_handler, &video_ops, V4L2_CID_CONTRAST, ...);”…”�”}”hjÞ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Màhj† h²hubhï)�”}”(hŒ...and in video_ops.s_ctrl:”h]”hŒ...and in video_ops.s_ctrl:”…”�”}”(hjí h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mçhj† h²hubj§)�”}”(hŒjcase V4L2_CID_BRIGHTNESS: contrast = v4l2_find_ctrl(&ctrl_handler, V4L2_CID_CONTRAST); ...”h]”hŒjcase V4L2_CID_BRIGHTNESS: contrast = v4l2_find_ctrl(&ctrl_handler, V4L2_CID_CONTRAST); ...”…”�”}”hjû sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Méhj† h²hubhï)�”}”(hŒ™When s_ctrl is called by the framework the ctrl_handler.lock is already taken, so attempting to find another control from the same handler will deadlock.”h]”hŒ™When s_ctrl is called by the framework the ctrl_handler.lock is already taken, so attempting to find another control from the same handler will deadlock.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mïhj† h²hubhï)�”}”(hŒGIt is recommended not to use this function from inside the control ops.”h]”hŒGIt is recommended not to use this function from inside the control ops.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mòhj† h²hubeh}”(h]”Œfinding-controls”ah ]”h"]”Œfinding controls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MÍubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒPreventing Controls inheritance”h]”hŒPreventing Controls inheritance”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj. h²hh³hÇh´Möubhï)�”}”(hX³When one control handler is added to another using v4l2_ctrl_add_handler, then by default all controls from one are merged to the other. But a subdev might have low-level controls that make sense for some advanced embedded system, but not when it is used in consumer-level hardware. In that case you want to keep those low-level controls local to the subdev. You can do this by simply setting the 'is_private' flag of the control to 1:”h]”hX·When one control handler is added to another using v4l2_ctrl_add_handler, then by default all controls from one are merged to the other. But a subdev might have low-level controls that make sense for some advanced embedded system, but not when it is used in consumer-level hardware. In that case you want to keep those low-level controls local to the subdev. You can do this by simply setting the ‘is_private’ flag of the control to 1:”…”�”}”(hj? h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Møhj. h²hubj§)�”}”(hXKstatic const struct v4l2_ctrl_config ctrl_private = { .ops = &ctrl_custom_ops, .id = V4L2_CID_..., .name = "Some Private Control", .type = V4L2_CTRL_TYPE_INTEGER, .max = 15, .step = 1, .is_private = 1, }; ctrl = v4l2_ctrl_new_custom(&foo->ctrl_handler, &ctrl_private, NULL);”h]”hXKstatic const struct v4l2_ctrl_config ctrl_private = { .ops = &ctrl_custom_ops, .id = V4L2_CID_..., .name = "Some Private Control", .type = V4L2_CTRL_TYPE_INTEGER, .max = 15, .step = 1, .is_private = 1, }; ctrl = v4l2_ctrl_new_custom(&foo->ctrl_handler, &ctrl_private, NULL);”…”�”}”hjM sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´Mÿhj. h²hubhï)�”}”(hŒHThese controls will now be skipped when v4l2_ctrl_add_handler is called.”h]”hŒHThese controls will now be skipped when v4l2_ctrl_add_handler is called.”…”�”}”(hj\ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M hj. h²hubeh}”(h]”Œpreventing-controls-inheritance”ah ]”h"]”Œpreventing controls inheritance”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MöubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ"V4L2_CTRL_TYPE_CTRL_CLASS Controls”h]”hŒ"V4L2_CTRL_TYPE_CTRL_CLASS Controls”…”�”}”(hju h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjr h²hh³hÇh´Mubhï)�”}”(hX5Controls of this type can be used by GUIs to get the name of the control class. A fully featured GUI can make a dialog with multiple tabs with each tab containing the controls belonging to a particular control class. The name of each tab can be found by querying a special control with ID .”h]”hX5Controls of this type can be used by GUIs to get the name of the control class. A fully featured GUI can make a dialog with multiple tabs with each tab containing the controls belonging to a particular control class. The name of each tab can be found by querying a special control with ID .”…”�”}”(hjƒ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjr h²hubhï)�”}”(hŒ©Drivers do not have to care about this. The framework will automatically add a control of this type whenever the first control belonging to a new control class is added.”h]”hŒ©Drivers do not have to care about this. The framework will automatically add a control of this type whenever the first control belonging to a new control class is added.”…”�”}”(hj‘ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´Mhjr h²hubeh}”(h]”Œ"v4l2-ctrl-type-ctrl-class-controls”ah ]”h"]”Œ"v4l2_ctrl_type_ctrl_class controls”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒAdding Notify Callbacks”h]”hŒAdding Notify Callbacks”…”�”}”(hjª h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhj§ h²hh³hÇh´Mubhï)�”}”(hŒ¥Sometimes the platform or bridge driver needs to be notified when a control from a sub-device driver changes. You can set a notify callback by calling this function:”h]”hŒ¥Sometimes the platform or bridge driver needs to be notified when a control from a sub-device driver changes. You can set a notify callback by calling this function:”…”�”}”(hj¸ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M hj§ h²hubj§)�”}”(hŒvvoid v4l2_ctrl_notify(struct v4l2_ctrl *ctrl, void (*notify)(struct v4l2_ctrl *ctrl, void *priv), void *priv);”h]”hŒvvoid v4l2_ctrl_notify(struct v4l2_ctrl *ctrl, void (*notify)(struct v4l2_ctrl *ctrl, void *priv), void *priv);”…”�”}”hjÆ sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆj¶‰j·jÉj¸}”uh1j¦h³hÇh´M$hj§ h²hubhï)�”}”(hŒõWhenever the give control changes value the notify callback will be called with a pointer to the control and the priv pointer that was passed with v4l2_ctrl_notify. Note that the control's handler lock is held when the notify function is called.”h]”hŒ÷Whenever the give control changes value the notify callback will be called with a pointer to the control and the priv pointer that was passed with v4l2_ctrl_notify. Note that the control’s handler lock is held when the notify function is called.”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M)hj§ h²hubhï)�”}”(hŒ{There can be only one notify function per control handler. Any attempt to set another notify function will cause a WARN_ON.”h]”hŒ{There can be only one notify function per control handler. Any attempt to set another notify function will cause a WARN_ON.”…”�”}”(hjã h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³hÇh´M.hj§ h²hubeh}”(h]”Œadding-notify-callbacks”ah ]”h"]”Œadding notify callbacks”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´MubhÉ)�”}”(hhh]”(hÎ)�”}”(hŒ'v4l2_ctrl functions and data structures”h]”hŒ'v4l2_ctrl functions and data structures”…”�”}”(hjü h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhjù h²hh³hÇh´M2ubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œv4l2_ctrl_ptr (C union)”Œc.v4l2_ctrl_ptr”hNt”auh1j hjù h²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒdesc_signature_line”“”)�”}”(hŒunion v4l2_ctrl_ptr”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒunion”h]”hŒunion”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1j,hj(h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1j>hj(h²hh³j=h´KubhŒ desc_name”“”)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ desc_sig_name”“”)�”}”(hj$h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1jUhjQubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”hÅhÆuh1jOhj(h²hh³j=h´Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆŒ add_permalink”ˆuh1j&Œsphinx_line_type”Œ declarator”hj"h²hh³j=h´Kubah}”(h]”jah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j h³j=h´Khjh²hubhŒ desc_content”“”)�”}”(hhh]”hï)�”}”(hŒA pointer to a control value.”h]”hŒA pointer to a control value.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Khjƒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh²hh³j=h´Kubeh}”(h]”h ]”(jÉŒunion”eh"]”h$]”h&]”Œdomain”jÉŒobjtype”jžŒdesctype”jžŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jh²hhjù h³Nh´NubhŒ container”“”)�”}”(hX **Definition**:: union v4l2_ctrl_ptr { s32 *p_s32; s64 *p_s64; u8 *p_u8; u16 *p_u16; u32 *p_u32; char *p_char; struct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence; struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture; struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation; struct v4l2_ctrl_fwht_params *p_fwht_params; struct v4l2_ctrl_h264_sps *p_h264_sps; struct v4l2_ctrl_h264_pps *p_h264_pps; struct v4l2_ctrl_h264_scaling_matrix *p_h264_scaling_matrix; struct v4l2_ctrl_h264_slice_params *p_h264_slice_params; struct v4l2_ctrl_h264_decode_params *p_h264_decode_params; struct v4l2_ctrl_h264_pred_weights *p_h264_pred_weights; struct v4l2_ctrl_vp8_frame *p_vp8_frame; struct v4l2_ctrl_hevc_sps *p_hevc_sps; struct v4l2_ctrl_hevc_pps *p_hevc_pps; struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params; struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs; struct v4l2_ctrl_vp9_frame *p_vp9_frame; struct v4l2_ctrl_hdr10_cll_info *p_hdr10_cll; struct v4l2_ctrl_hdr10_mastering_display *p_hdr10_mastering; struct v4l2_area *p_area; struct v4l2_ctrl_av1_sequence *p_av1_sequence; struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry; struct v4l2_ctrl_av1_frame *p_av1_frame; struct v4l2_ctrl_av1_film_grain *p_av1_film_grain; struct v4l2_rect *p_rect; void *p; const void *p_const; }; **Members** ``p_s32`` Pointer to a 32-bit signed value. ``p_s64`` Pointer to a 64-bit signed value. ``p_u8`` Pointer to a 8-bit unsigned value. ``p_u16`` Pointer to a 16-bit unsigned value. ``p_u32`` Pointer to a 32-bit unsigned value. ``p_char`` Pointer to a string. ``p_mpeg2_sequence`` Pointer to a MPEG2 sequence structure. ``p_mpeg2_picture`` Pointer to a MPEG2 picture structure. ``p_mpeg2_quantisation`` Pointer to a MPEG2 quantisation data structure. ``p_fwht_params`` Pointer to a FWHT stateless parameters structure. ``p_h264_sps`` Pointer to a struct v4l2_ctrl_h264_sps. ``p_h264_pps`` Pointer to a struct v4l2_ctrl_h264_pps. ``p_h264_scaling_matrix`` Pointer to a struct v4l2_ctrl_h264_scaling_matrix. ``p_h264_slice_params`` Pointer to a struct v4l2_ctrl_h264_slice_params. ``p_h264_decode_params`` Pointer to a struct v4l2_ctrl_h264_decode_params. ``p_h264_pred_weights`` Pointer to a struct v4l2_ctrl_h264_pred_weights. ``p_vp8_frame`` Pointer to a VP8 frame params structure. ``p_hevc_sps`` Pointer to an HEVC sequence parameter set structure. ``p_hevc_pps`` Pointer to an HEVC picture parameter set structure. ``p_hevc_slice_params`` Pointer to an HEVC slice parameters structure. ``p_vp9_compressed_hdr_probs`` Pointer to a VP9 frame compressed header probs structure. ``p_vp9_frame`` Pointer to a VP9 frame params structure. ``p_hdr10_cll`` Pointer to an HDR10 Content Light Level structure. ``p_hdr10_mastering`` Pointer to an HDR10 Mastering Display structure. ``p_area`` Pointer to an area. ``p_av1_sequence`` Pointer to an AV1 sequence structure. ``p_av1_tile_group_entry`` Pointer to an AV1 tile group entry structure. ``p_av1_frame`` Pointer to an AV1 frame structure. ``p_av1_film_grain`` Pointer to an AV1 film grain structure. ``p_rect`` Pointer to a rectangle. ``p`` Pointer to a compound value. ``p_const`` Pointer to a constant compound value.”h]”(hŒ block_quote”“”)�”}”(hX**Definition**:: union v4l2_ctrl_ptr { s32 *p_s32; s64 *p_s64; u8 *p_u8; u16 *p_u16; u32 *p_u32; char *p_char; struct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence; struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture; struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation; struct v4l2_ctrl_fwht_params *p_fwht_params; struct v4l2_ctrl_h264_sps *p_h264_sps; struct v4l2_ctrl_h264_pps *p_h264_pps; struct v4l2_ctrl_h264_scaling_matrix *p_h264_scaling_matrix; struct v4l2_ctrl_h264_slice_params *p_h264_slice_params; struct v4l2_ctrl_h264_decode_params *p_h264_decode_params; struct v4l2_ctrl_h264_pred_weights *p_h264_pred_weights; struct v4l2_ctrl_vp8_frame *p_vp8_frame; struct v4l2_ctrl_hevc_sps *p_hevc_sps; struct v4l2_ctrl_hevc_pps *p_hevc_pps; struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params; struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs; struct v4l2_ctrl_vp9_frame *p_vp9_frame; struct v4l2_ctrl_hdr10_cll_info *p_hdr10_cll; struct v4l2_ctrl_hdr10_mastering_display *p_hdr10_mastering; struct v4l2_area *p_area; struct v4l2_ctrl_av1_sequence *p_av1_sequence; struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry; struct v4l2_ctrl_av1_frame *p_av1_frame; struct v4l2_ctrl_av1_film_grain *p_av1_film_grain; struct v4l2_rect *p_rect; void *p; const void *p_const; }; ”h]”(hï)�”}”(hŒ**Definition**::”h]”(hŒstrong”“”)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj´ubhŒ:”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K!hj°ubj§)�”}”(hXÅunion v4l2_ctrl_ptr { s32 *p_s32; s64 *p_s64; u8 *p_u8; u16 *p_u16; u32 *p_u32; char *p_char; struct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence; struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture; struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation; struct v4l2_ctrl_fwht_params *p_fwht_params; struct v4l2_ctrl_h264_sps *p_h264_sps; struct v4l2_ctrl_h264_pps *p_h264_pps; struct v4l2_ctrl_h264_scaling_matrix *p_h264_scaling_matrix; struct v4l2_ctrl_h264_slice_params *p_h264_slice_params; struct v4l2_ctrl_h264_decode_params *p_h264_decode_params; struct v4l2_ctrl_h264_pred_weights *p_h264_pred_weights; struct v4l2_ctrl_vp8_frame *p_vp8_frame; struct v4l2_ctrl_hevc_sps *p_hevc_sps; struct v4l2_ctrl_hevc_pps *p_hevc_pps; struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params; struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs; struct v4l2_ctrl_vp9_frame *p_vp9_frame; struct v4l2_ctrl_hdr10_cll_info *p_hdr10_cll; struct v4l2_ctrl_hdr10_mastering_display *p_hdr10_mastering; struct v4l2_area *p_area; struct v4l2_ctrl_av1_sequence *p_av1_sequence; struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry; struct v4l2_ctrl_av1_frame *p_av1_frame; struct v4l2_ctrl_av1_film_grain *p_av1_film_grain; struct v4l2_rect *p_rect; void *p; const void *p_const; };”h]”hXÅunion v4l2_ctrl_ptr { s32 *p_s32; s64 *p_s64; u8 *p_u8; u16 *p_u16; u32 *p_u32; char *p_char; struct v4l2_ctrl_mpeg2_sequence *p_mpeg2_sequence; struct v4l2_ctrl_mpeg2_picture *p_mpeg2_picture; struct v4l2_ctrl_mpeg2_quantisation *p_mpeg2_quantisation; struct v4l2_ctrl_fwht_params *p_fwht_params; struct v4l2_ctrl_h264_sps *p_h264_sps; struct v4l2_ctrl_h264_pps *p_h264_pps; struct v4l2_ctrl_h264_scaling_matrix *p_h264_scaling_matrix; struct v4l2_ctrl_h264_slice_params *p_h264_slice_params; struct v4l2_ctrl_h264_decode_params *p_h264_decode_params; struct v4l2_ctrl_h264_pred_weights *p_h264_pred_weights; struct v4l2_ctrl_vp8_frame *p_vp8_frame; struct v4l2_ctrl_hevc_sps *p_hevc_sps; struct v4l2_ctrl_hevc_pps *p_hevc_pps; struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params; struct v4l2_ctrl_vp9_compressed_hdr *p_vp9_compressed_hdr_probs; struct v4l2_ctrl_vp9_frame *p_vp9_frame; struct v4l2_ctrl_hdr10_cll_info *p_hdr10_cll; struct v4l2_ctrl_hdr10_mastering_display *p_hdr10_mastering; struct v4l2_area *p_area; struct v4l2_ctrl_av1_sequence *p_av1_sequence; struct v4l2_ctrl_av1_tile_group_entry *p_av1_tile_group_entry; struct v4l2_ctrl_av1_frame *p_av1_frame; struct v4l2_ctrl_av1_film_grain *p_av1_film_grain; struct v4l2_rect *p_rect; void *p; const void *p_const; };”…”�”}”hjÓsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¦h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K#hj°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³jÒh´K!hjªubhï)�”}”(hŒ **Members**”h]”j¹)�”}”(hjêh]”hŒMembers”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KFhjªubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ,``p_s32`` Pointer to a 32-bit signed value. ”h]”(hŒterm”“”)�”}”(hŒ ``p_s32``”h]”j½)�”}”(hjh]”hŒp_s32”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KhjubhŒ definition”“”)�”}”(hhh]”hï)�”}”(hŒ!Pointer to a 32-bit signed value.”h]”hŒ!Pointer to a 32-bit signed value.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j$h´Khj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j$h´Khjubj)�”}”(hŒ,``p_s64`` Pointer to a 64-bit signed value. ”h]”(j )�”}”(hŒ ``p_s64``”h]”j½)�”}”(hjJh]”hŒp_s64”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K hjDubj&)�”}”(hhh]”hï)�”}”(hŒ!Pointer to a 64-bit signed value.”h]”hŒ!Pointer to a 64-bit signed value.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j_h´K hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjDubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j_h´K hjubj)�”}”(hŒ,``p_u8`` Pointer to a 8-bit unsigned value. ”h]”(j )�”}”(hŒ``p_u8``”h]”j½)�”}”(hjƒh]”hŒp_u8”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K!hj}ubj&)�”}”(hhh]”hï)�”}”(hŒ"Pointer to a 8-bit unsigned value.”h]”hŒ"Pointer to a 8-bit unsigned value.”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j˜h´K!hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j˜h´K!hjubj)�”}”(hŒ.``p_u16`` Pointer to a 16-bit unsigned value. ”h]”(j )�”}”(hŒ ``p_u16``”h]”j½)�”}”(hj¼h]”hŒp_u16”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K"hj¶ubj&)�”}”(hhh]”hï)�”}”(hŒ#Pointer to a 16-bit unsigned value.”h]”hŒ#Pointer to a 16-bit unsigned value.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÑh´K"hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÑh´K"hjubj)�”}”(hŒ.``p_u32`` Pointer to a 32-bit unsigned value. ”h]”(j )�”}”(hŒ ``p_u32``”h]”j½)�”}”(hjõh]”hŒp_u32”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K#hjïubj&)�”}”(hhh]”hï)�”}”(hŒ#Pointer to a 32-bit unsigned value.”h]”hŒ#Pointer to a 32-bit unsigned value.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j h´K#hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´K#hjubj)�”}”(hŒ ``p_char`` Pointer to a string. ”h]”(j )�”}”(hŒ ``p_char``”h]”j½)�”}”(hj.h]”hŒp_char”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K$hj(ubj&)�”}”(hhh]”hï)�”}”(hŒPointer to a string.”h]”hŒPointer to a string.”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jCh´K$hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jCh´K$hjubj)�”}”(hŒ<``p_mpeg2_sequence`` Pointer to a MPEG2 sequence structure. ”h]”(j )�”}”(hŒ``p_mpeg2_sequence``”h]”j½)�”}”(hjgh]”hŒp_mpeg2_sequence”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K%hjaubj&)�”}”(hhh]”hï)�”}”(hŒ&Pointer to a MPEG2 sequence structure.”h]”hŒ&Pointer to a MPEG2 sequence structure.”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j|h´K%hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjaubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j|h´K%hjubj)�”}”(hŒ:``p_mpeg2_picture`` Pointer to a MPEG2 picture structure. ”h]”(j )�”}”(hŒ``p_mpeg2_picture``”h]”j½)�”}”(hj h]”hŒp_mpeg2_picture”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K&hjšubj&)�”}”(hhh]”hï)�”}”(hŒ%Pointer to a MPEG2 picture structure.”h]”hŒ%Pointer to a MPEG2 picture structure.”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jµh´K&hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jµh´K&hjubj)�”}”(hŒI``p_mpeg2_quantisation`` Pointer to a MPEG2 quantisation data structure. ”h]”(j )�”}”(hŒ``p_mpeg2_quantisation``”h]”j½)�”}”(hjÙh]”hŒp_mpeg2_quantisation”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K'hjÓubj&)�”}”(hhh]”hï)�”}”(hŒ/Pointer to a MPEG2 quantisation data structure.”h]”hŒ/Pointer to a MPEG2 quantisation data structure.”…”�”}”(hjòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jîh´K'hjïubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jîh´K'hjubj)�”}”(hŒD``p_fwht_params`` Pointer to a FWHT stateless parameters structure. ”h]”(j )�”}”(hŒ``p_fwht_params``”h]”j½)�”}”(hjh]”hŒ p_fwht_params”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K(hj ubj&)�”}”(hhh]”hï)�”}”(hŒ1Pointer to a FWHT stateless parameters structure.”h]”hŒ1Pointer to a FWHT stateless parameters structure.”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j'h´K(hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'h´K(hjubj)�”}”(hŒ7``p_h264_sps`` Pointer to a struct v4l2_ctrl_h264_sps. ”h]”(j )�”}”(hŒ``p_h264_sps``”h]”j½)�”}”(hjKh]”hŒ p_h264_sps”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K)hjEubj&)�”}”(hhh]”hï)�”}”(hŒ'Pointer to a struct v4l2_ctrl_h264_sps.”h]”hŒ'Pointer to a struct v4l2_ctrl_h264_sps.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j`h´K)hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j`h´K)hjubj)�”}”(hŒ7``p_h264_pps`` Pointer to a struct v4l2_ctrl_h264_pps. ”h]”(j )�”}”(hŒ``p_h264_pps``”h]”j½)�”}”(hj„h]”hŒ p_h264_pps”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K*hj~ubj&)�”}”(hhh]”hï)�”}”(hŒ'Pointer to a struct v4l2_ctrl_h264_pps.”h]”hŒ'Pointer to a struct v4l2_ctrl_h264_pps.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j™h´K*hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j™h´K*hjubj)�”}”(hŒM``p_h264_scaling_matrix`` Pointer to a struct v4l2_ctrl_h264_scaling_matrix. ”h]”(j )�”}”(hŒ``p_h264_scaling_matrix``”h]”j½)�”}”(hj½h]”hŒp_h264_scaling_matrix”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K+hj·ubj&)�”}”(hhh]”hï)�”}”(hŒ2Pointer to a struct v4l2_ctrl_h264_scaling_matrix.”h]”hŒ2Pointer to a struct v4l2_ctrl_h264_scaling_matrix.”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÒh´K+hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÒh´K+hjubj)�”}”(hŒI``p_h264_slice_params`` Pointer to a struct v4l2_ctrl_h264_slice_params. ”h]”(j )�”}”(hŒ``p_h264_slice_params``”h]”j½)�”}”(hjöh]”hŒp_h264_slice_params”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K,hjðubj&)�”}”(hhh]”hï)�”}”(hŒ0Pointer to a struct v4l2_ctrl_h264_slice_params.”h]”hŒ0Pointer to a struct v4l2_ctrl_h264_slice_params.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j h´K,hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´K,hjubj)�”}”(hŒK``p_h264_decode_params`` Pointer to a struct v4l2_ctrl_h264_decode_params. ”h]”(j )�”}”(hŒ``p_h264_decode_params``”h]”j½)�”}”(hj/h]”hŒp_h264_decode_params”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K-hj)ubj&)�”}”(hhh]”hï)�”}”(hŒ1Pointer to a struct v4l2_ctrl_h264_decode_params.”h]”hŒ1Pointer to a struct v4l2_ctrl_h264_decode_params.”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jDh´K-hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jDh´K-hjubj)�”}”(hŒI``p_h264_pred_weights`` Pointer to a struct v4l2_ctrl_h264_pred_weights. ”h]”(j )�”}”(hŒ``p_h264_pred_weights``”h]”j½)�”}”(hjhh]”hŒp_h264_pred_weights”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K.hjbubj&)�”}”(hhh]”hï)�”}”(hŒ0Pointer to a struct v4l2_ctrl_h264_pred_weights.”h]”hŒ0Pointer to a struct v4l2_ctrl_h264_pred_weights.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j}h´K.hj~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j}h´K.hjubj)�”}”(hŒ9``p_vp8_frame`` Pointer to a VP8 frame params structure. ”h]”(j )�”}”(hŒ``p_vp8_frame``”h]”j½)�”}”(hj¡h]”hŒ p_vp8_frame”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K/hj›ubj&)�”}”(hhh]”hï)�”}”(hŒ(Pointer to a VP8 frame params structure.”h]”hŒ(Pointer to a VP8 frame params structure.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¶h´K/hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¶h´K/hjubj)�”}”(hŒD``p_hevc_sps`` Pointer to an HEVC sequence parameter set structure. ”h]”(j )�”}”(hŒ``p_hevc_sps``”h]”j½)�”}”(hjÚh]”hŒ p_hevc_sps”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K2hjÔubj&)�”}”(hhh]”hï)�”}”(hŒ4Pointer to an HEVC sequence parameter set structure.”h]”hŒ4Pointer to an HEVC sequence parameter set structure.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jïh´K2hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jïh´K2hjubj)�”}”(hŒC``p_hevc_pps`` Pointer to an HEVC picture parameter set structure. ”h]”(j )�”}”(hŒ``p_hevc_pps``”h]”j½)�”}”(hjh]”hŒ p_hevc_pps”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K3hj ubj&)�”}”(hhh]”hï)�”}”(hŒ3Pointer to an HEVC picture parameter set structure.”h]”hŒ3Pointer to an HEVC picture parameter set structure.”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j(h´K3hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j(h´K3hjubj)�”}”(hŒG``p_hevc_slice_params`` Pointer to an HEVC slice parameters structure. ”h]”(j )�”}”(hŒ``p_hevc_slice_params``”h]”j½)�”}”(hjLh]”hŒp_hevc_slice_params”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K4hjFubj&)�”}”(hhh]”hï)�”}”(hŒ.Pointer to an HEVC slice parameters structure.”h]”hŒ.Pointer to an HEVC slice parameters structure.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jah´K4hjbubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjFubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jah´K4hjubj)�”}”(hŒY``p_vp9_compressed_hdr_probs`` Pointer to a VP9 frame compressed header probs structure. ”h]”(j )�”}”(hŒ``p_vp9_compressed_hdr_probs``”h]”j½)�”}”(hj…h]”hŒp_vp9_compressed_hdr_probs”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K0hjubj&)�”}”(hhh]”hï)�”}”(hŒ9Pointer to a VP9 frame compressed header probs structure.”h]”hŒ9Pointer to a VP9 frame compressed header probs structure.”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jšh´K0hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jšh´K0hjubj)�”}”(hŒ9``p_vp9_frame`` Pointer to a VP9 frame params structure. ”h]”(j )�”}”(hŒ``p_vp9_frame``”h]”j½)�”}”(hj¾h]”hŒ p_vp9_frame”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K1hj¸ubj&)�”}”(hhh]”hï)�”}”(hŒ(Pointer to a VP9 frame params structure.”h]”hŒ(Pointer to a VP9 frame params structure.”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÓh´K1hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÓh´K1hjubj)�”}”(hŒC``p_hdr10_cll`` Pointer to an HDR10 Content Light Level structure. ”h]”(j )�”}”(hŒ``p_hdr10_cll``”h]”j½)�”}”(hj÷h]”hŒ p_hdr10_cll”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K5hjñubj&)�”}”(hhh]”hï)�”}”(hŒ2Pointer to an HDR10 Content Light Level structure.”h]”hŒ2Pointer to an HDR10 Content Light Level structure.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j h´K5hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´K5hjubj)�”}”(hŒG``p_hdr10_mastering`` Pointer to an HDR10 Mastering Display structure. ”h]”(j )�”}”(hŒ``p_hdr10_mastering``”h]”j½)�”}”(hj0h]”hŒp_hdr10_mastering”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K6hj*ubj&)�”}”(hhh]”hï)�”}”(hŒ0Pointer to an HDR10 Mastering Display structure.”h]”hŒ0Pointer to an HDR10 Mastering Display structure.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jEh´K6hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jEh´K6hjubj)�”}”(hŒ``p_area`` Pointer to an area. ”h]”(j )�”}”(hŒ ``p_area``”h]”j½)�”}”(hjih]”hŒp_area”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K7hjcubj&)�”}”(hhh]”hï)�”}”(hŒPointer to an area.”h]”hŒPointer to an area.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j~h´K7hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j~h´K7hjubj)�”}”(hŒ9``p_av1_sequence`` Pointer to an AV1 sequence structure. ”h]”(j )�”}”(hŒ``p_av1_sequence``”h]”j½)�”}”(hj¢h]”hŒp_av1_sequence”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K8hjœubj&)�”}”(hhh]”hï)�”}”(hŒ%Pointer to an AV1 sequence structure.”h]”hŒ%Pointer to an AV1 sequence structure.”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j·h´K8hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j·h´K8hjubj)�”}”(hŒI``p_av1_tile_group_entry`` Pointer to an AV1 tile group entry structure. ”h]”(j )�”}”(hŒ``p_av1_tile_group_entry``”h]”j½)�”}”(hjÛh]”hŒp_av1_tile_group_entry”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K9hjÕubj&)�”}”(hhh]”hï)�”}”(hŒ-Pointer to an AV1 tile group entry structure.”h]”hŒ-Pointer to an AV1 tile group entry structure.”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jðh´K9hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jðh´K9hjubj)�”}”(hŒ3``p_av1_frame`` Pointer to an AV1 frame structure. ”h]”(j )�”}”(hŒ``p_av1_frame``”h]”j½)�”}”(hjh]”hŒ p_av1_frame”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K:hjubj&)�”}”(hhh]”hï)�”}”(hŒ"Pointer to an AV1 frame structure.”h]”hŒ"Pointer to an AV1 frame structure.”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j)h´K:hj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j)h´K:hjubj)�”}”(hŒ=``p_av1_film_grain`` Pointer to an AV1 film grain structure. ”h]”(j )�”}”(hŒ``p_av1_film_grain``”h]”j½)�”}”(hjMh]”hŒp_av1_film_grain”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K;hjGubj&)�”}”(hhh]”hï)�”}”(hŒ'Pointer to an AV1 film grain structure.”h]”hŒ'Pointer to an AV1 film grain structure.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jbh´K;hjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbh´K;hjubj)�”}”(hŒ#``p_rect`` Pointer to a rectangle. ”h]”(j )�”}”(hŒ ``p_rect``”h]”j½)�”}”(hj†h]”hŒp_rect”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j h´K=hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!v4l2_ctrl_ptr_create (C function)”Œc.v4l2_ctrl_ptr_create”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ4union v4l2_ctrl_ptr v4l2_ctrl_ptr_create (void *ptr)”h]”j')�”}”(hŒ3union v4l2_ctrl_ptr v4l2_ctrl_ptr_create(void *ptr)”h]”(j-)�”}”(hj0h]”hŒunion”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjNh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kcubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjNh²hh³j_h´Kcubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjnubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”Œ identifier”Œ reftarget”jsŒmodname”NŒ classname”NŒ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”jŒŒ ASTIdentifier”“”)�”}”j‡Œv4l2_ctrl_ptr_create”sbŒc.v4l2_ctrl_ptr_create”†”asbuh1hhjNh²hh³j_h´Kcubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjNh²hh³j_h´KcubjP)�”}”(hŒv4l2_ctrl_ptr_create”h]”jV)�”}”(hj—h]”hŒv4l2_ctrl_ptr_create”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¨ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjNh²hh³j_h´KcubhŒdesc_parameterlist”“”)�”}”(hŒ (void *ptr)”h]”hŒdesc_parameter”“”)�”}”(hŒ void *ptr”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jËhjÇubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÇubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jêhjÇubjV)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÇubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÁubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjNh²hh³j_h´Kcubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjJh²hh³j_h´Kcubah}”(h]”jEah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j_h´KchjGh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ=Helper function to return a v4l2_ctrl_ptr from a void pointer”h]”hŒ=Helper function to return a v4l2_ctrl_ptr from a void pointer”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kchj"h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjGh²hh³j_h´Kcubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j=j¤j=j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒ0**Parameters** ``void *ptr`` The void pointer”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjGh]”hŒ Parameters”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KghjAubj)�”}”(hhh]”j)�”}”(hŒ``void *ptr`` The void pointer”h]”(j )�”}”(hŒ ``void *ptr``”h]”j½)�”}”(hjfh]”hŒ void *ptr”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kihj`ubj&)�”}”(hhh]”hï)�”}”(hŒThe void pointer”h]”hŒThe void pointer”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kehj|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j{h´Kihj]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_ops (C struct)”Œc.v4l2_ctrl_ops”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ v4l2_ctrl_ops”h]”j')�”}”(hŒstruct v4l2_ctrl_ops”h]”(j-)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¼h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kjubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¼h²hh³jÎh´KjubjP)�”}”(hŒ v4l2_ctrl_ops”h]”jV)�”}”(hjºh]”hŒ v4l2_ctrl_ops”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÝubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj¼h²hh³jÎh´Kjubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj¸h²hh³jÎh´Kjubah}”(h]”j³ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jÎh´Kjhjµh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ6The control operations that the driver has to provide.”h]”hŒ6The control operations that the driver has to provide.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kohjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjµh²hh³jÎh´Kjubeh}”(h]”h ]”(jÉŒstruct”eh"]”h$]”h&]”j¢jÉj£jj¤jj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX? **Definition**:: struct v4l2_ctrl_ops { int (*g_volatile_ctrl)(struct v4l2_ctrl *ctrl); int (*try_ctrl)(struct v4l2_ctrl *ctrl); int (*s_ctrl)(struct v4l2_ctrl *ctrl); }; **Members** ``g_volatile_ctrl`` Get a new value for this control. Generally only relevant for volatile (and usually read-only) controls such as a control that returns the current signal strength which changes continuously. If not set, then the currently cached value will be returned. ``try_ctrl`` Test whether the control's value is valid. Only relevant when the usual min/max/step checks are not sufficient. ``s_ctrl`` Actually set the new control value. s_ctrl is compulsory. The ctrl->handler->lock is held when these ops are called, so no one else can access controls owned by that handler.”h]”(j¯)�”}”(hŒÈ**Definition**:: struct v4l2_ctrl_ops { int (*g_volatile_ctrl)(struct v4l2_ctrl *ctrl); int (*try_ctrl)(struct v4l2_ctrl *ctrl); int (*s_ctrl)(struct v4l2_ctrl *ctrl); }; ”h]”(hï)�”}”(hŒ**Definition**::”h]”(j¹)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj'ubhŒ:”…”�”}”(hj'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kshj#ubj§)�”}”(hŒ«struct v4l2_ctrl_ops { int (*g_volatile_ctrl)(struct v4l2_ctrl *ctrl); int (*try_ctrl)(struct v4l2_ctrl *ctrl); int (*s_ctrl)(struct v4l2_ctrl *ctrl); };”h]”hŒ«struct v4l2_ctrl_ops { int (*g_volatile_ctrl)(struct v4l2_ctrl *ctrl); int (*try_ctrl)(struct v4l2_ctrl *ctrl); int (*s_ctrl)(struct v4l2_ctrl *ctrl); };”…”�”}”hjDsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¦h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kuhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³jCh´Kshjubhï)�”}”(hŒ **Members**”h]”j¹)�”}”(hj[h]”hŒMembers”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K{hjubj)�”}”(hhh]”(j)�”}”(hX``g_volatile_ctrl`` Get a new value for this control. Generally only relevant for volatile (and usually read-only) controls such as a control that returns the current signal strength which changes continuously. If not set, then the currently cached value will be returned. ”h]”(j )�”}”(hŒ``g_volatile_ctrl``”h]”j½)�”}”(hjzh]”hŒg_volatile_ctrl”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kvhjtubj&)�”}”(hhh]”hï)�”}”(hŒüGet a new value for this control. Generally only relevant for volatile (and usually read-only) controls such as a control that returns the current signal strength which changes continuously. If not set, then the currently cached value will be returned.”h]”hŒüGet a new value for this control. Generally only relevant for volatile (and usually read-only) controls such as a control that returns the current signal strength which changes continuously. If not set, then the currently cached value will be returned.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Krhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�h´Kvhjqubj)�”}”(hŒ}``try_ctrl`` Test whether the control's value is valid. Only relevant when the usual min/max/step checks are not sufficient. ”h]”(j )�”}”(hŒ ``try_ctrl``”h]”j½)�”}”(hj´h]”hŒtry_ctrl”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kxhj®ubj&)�”}”(hhh]”hï)�”}”(hŒoTest whether the control's value is valid. Only relevant when the usual min/max/step checks are not sufficient.”h]”hŒqTest whether the control’s value is valid. Only relevant when the usual min/max/step checks are not sufficient.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KwhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÉh´Kxhjqubj)�”}”(hŒ¹``s_ctrl`` Actually set the new control value. s_ctrl is compulsory. The ctrl->handler->lock is held when these ops are called, so no one else can access controls owned by that handler.”h]”(j )�”}”(hŒ ``s_ctrl``”h]”j½)�”}”(hjîh]”hŒs_ctrl”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kzhjèubj&)�”}”(hhh]”hï)�”}”(hŒ®Actually set the new control value. s_ctrl is compulsory. The ctrl->handler->lock is held when these ops are called, so no one else can access controls owned by that handler.”h]”hŒ®Actually set the new control value. s_ctrl is compulsory. The ctrl->handler->lock is held when these ops are called, so no one else can access controls owned by that handler.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kyhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Kzhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_type_ops (C struct)”Œc.v4l2_ctrl_type_ops”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒv4l2_ctrl_type_ops”h]”j')�”}”(hŒstruct v4l2_ctrl_type_ops”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjDh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K�ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjDh²hh³jUh´K�ubjP)�”}”(hŒv4l2_ctrl_type_ops”h]”jV)�”}”(hjBh]”hŒv4l2_ctrl_type_ops”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjdubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjDh²hh³jUh´K�ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj@h²hh³jUh´K�ubah}”(h]”j;ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jUh´K�hj=h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ;The control type operations that the driver has to provide.”h]”hŒ;The control type operations that the driver has to provide.”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kƒhj‡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj=h²hh³jUh´K�ubeh}”(h]”h ]”(jÉŒstruct”eh"]”h$]”h&]”j¢jÉj£j¢j¤j¢j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXÿ **Definition**:: struct v4l2_ctrl_type_ops { bool (*equal)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr1, union v4l2_ctrl_ptr ptr2); void (*init)(const struct v4l2_ctrl *ctrl, u32 from_idx, union v4l2_ctrl_ptr ptr); void (*minimum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*maximum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*log)(const struct v4l2_ctrl *ctrl); int (*validate)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr); }; **Members** ``equal`` return true if all ctrl->elems array elements are equal. ``init`` initialize the value for array elements from from_idx to ctrl->elems. ``minimum`` set the value to the minimum value of the control. ``maximum`` set the value to the maximum value of the control. ``log`` log the value. ``validate`` validate the value for ctrl->new_elems array elements. Return 0 on success and a negative value otherwise.”h]”(j¯)�”}”(hX.**Definition**:: struct v4l2_ctrl_type_ops { bool (*equal)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr1, union v4l2_ctrl_ptr ptr2); void (*init)(const struct v4l2_ctrl *ctrl, u32 from_idx, union v4l2_ctrl_ptr ptr); void (*minimum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*maximum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*log)(const struct v4l2_ctrl *ctrl); int (*validate)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr); }; ”• h]”(hï)�”}”(hŒ**Definition**::”h]”(j¹)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj®ubhŒ:”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K‡hjªubj§)�”}”(hX struct v4l2_ctrl_type_ops { bool (*equal)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr1, union v4l2_ctrl_ptr ptr2); void (*init)(const struct v4l2_ctrl *ctrl, u32 from_idx, union v4l2_ctrl_ptr ptr); void (*minimum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*maximum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*log)(const struct v4l2_ctrl *ctrl); int (*validate)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr); };”h]”hX struct v4l2_ctrl_type_ops { bool (*equal)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr1, union v4l2_ctrl_ptr ptr2); void (*init)(const struct v4l2_ctrl *ctrl, u32 from_idx, union v4l2_ctrl_ptr ptr); void (*minimum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*maximum)(const struct v4l2_ctrl *ctrl, u32 idx, union v4l2_ctrl_ptr ptr); void (*log)(const struct v4l2_ctrl *ctrl); int (*validate)(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr); };”…”�”}”hjËsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¦h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K‰hjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³jÊh´K‡hj¦ubhï)�”}”(hŒ **Members**”h]”j¹)�”}”(hjâh]”hŒMembers”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K’hj¦ubj)�”}”(hhh]”(j)�”}”(hŒC``equal`` return true if all ctrl->elems array elements are equal. ”h]”(j )�”}”(hŒ ``equal``”h]”j½)�”}”(hjh]”hŒequal”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K‡hjûubj&)�”}”(hhh]”hï)�”}”(hŒ8return true if all ctrl->elems array elements are equal.”h]”hŒ8return true if all ctrl->elems array elements are equal.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jh´K‡hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjûubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´K‡hjøubj)�”}”(hŒO``init`` initialize the value for array elements from from_idx to ctrl->elems. ”h]”(j )�”}”(hŒ``init``”h]”j½)�”}”(hj:h]”hŒinit”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kˆhj4ubj&)�”}”(hhh]”hï)�”}”(hŒEinitialize the value for array elements from from_idx to ctrl->elems.”h]”hŒEinitialize the value for array elements from from_idx to ctrl->elems.”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jOh´KˆhjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jOh´Kˆhjøubj)�”}”(hŒ?``minimum`` set the value to the minimum value of the control. ”h]”(j )�”}”(hŒ ``minimum``”h]”j½)�”}”(hjsh]”hŒminimum”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K‰hjmubj&)�”}”(hhh]”hï)�”}”(hŒ2set the value to the minimum value of the control.”h]”hŒ2set the value to the minimum value of the control.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jˆh´K‰hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jˆh´K‰hjøubj)�”}”(hŒ?``maximum`` set the value to the maximum value of the control. ”h]”(j )�”}”(hŒ ``maximum``”h]”j½)�”}”(hj¬h]”hŒmaximum”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KŠhj¦ubj&)�”}”(hhh]”hï)�”}”(hŒ2set the value to the maximum value of the control.”h]”hŒ2set the value to the maximum value of the control.”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÁh´KŠhjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÁh´KŠhjøubj)�”}”(hŒ``log`` log the value. ”h]”(j )�”}”(hŒ``log``”h]”j½)�”}”(hjåh]”hŒlog”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjãubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K‹hjßubj&)�”}”(hhh]”hï)�”}”(hŒlog the value.”h]”hŒlog the value.”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³júh´K‹hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjßubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³júh´K‹hjøubj)�”}”(hŒw``validate`` validate the value for ctrl->new_elems array elements. Return 0 on success and a negative value otherwise.”h]”(j )�”}”(hŒ ``validate``”h]”j½)�”}”(hjh]”hŒvalidate”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KŒhjubj&)�”}”(hhh]”hï)�”}”(hŒjvalidate the value for ctrl->new_elems array elements. Return 0 on success and a negative value otherwise.”h]”hŒjvalidate the value for ctrl->new_elems array elements. Return 0 on success and a negative value otherwise.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j3h´KŒhj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j3h´KŒhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_notify_fnc (C macro)”Œc.v4l2_ctrl_notify_fnc”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒv4l2_ctrl_notify_fnc”h]”j')�”}”(hŒv4l2_ctrl_notify_fnc”h]”jP)�”}”(hŒv4l2_ctrl_notify_fnc”h]”jV)�”}”(hjqh]”hŒv4l2_ctrl_notify_fnc”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjwubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjsh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kœubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjoh²hh³jŽh´Kœubah}”(h]”jjah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jŽh´Kœhjlh²hubj‚)�”}”(hhh]”hï)�”}”(hŒr**Typedef**: typedef for a notify argument with a function that should be called when a control value has changed.”h]”(j¹)�”}”(hŒ **Typedef**”h]”hŒTypedef”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjžubhŒg: typedef for a notify argument with a function that should be called when a control value has changed.”…”�”}”(hjžh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kžhj›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjlh²hh³jŽh´Kœubeh}”(h]”h ]”(jÉŒmacro”eh"]”h$]”h&]”j¢jÉj£jÄj¤jÄj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubhï)�”}”(hŒ **Syntax**”h]”j¹)�”}”(hjÊh]”hŒSyntax”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¡hjù h²hubj¯)�”}”(hŒC``void v4l2_ctrl_notify_fnc (struct v4l2_ctrl *ctrl, void *priv)`` ”h]”hï)�”}”(hŒB``void v4l2_ctrl_notify_fnc (struct v4l2_ctrl *ctrl, void *priv)``”h]”j½)�”}”(hjæh]”hŒ>void v4l2_ctrl_notify_fnc (struct v4l2_ctrl *ctrl, void *priv)”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K£hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³jûh´K£hjù h²hubj©)�”}”(hX **Parameters** ``struct v4l2_ctrl *ctrl`` pointer to struct :c:type:`v4l2_ctrl` ``void *priv`` control private data **Description** This typedef definition is used as an argument to v4l2_ctrl_notify() and as an argument at struct :c:type:`v4l2_ctrl_handler`.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjh]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K§hjubj)�”}”(hhh]”(j)�”}”(hŒA``struct v4l2_ctrl *ctrl`` pointer to struct :c:type:`v4l2_ctrl` ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj'h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KŸhj!ubj&)�”}”(hhh]”hï)�”}”(hŒ%pointer to struct :c:type:`v4l2_ctrl`”h]”(hŒpointer to struct ”…”�”}”(hj@h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl`”h]”j½)�”}”(hjJh]”hŒ v4l2_ctrl”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjHubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jŽ)�”}”j‘]”sbjÛŒ v4l2_ctrl”uh1hh³j<h´KŸhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j<h´KŸhj=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j<h´KŸhjubj)�”}”(hŒ$``void *priv`` control private data ”h]”(j )�”}”(hŒ``void *priv``”h]”j½)�”}”(hj‚h]”hŒ void *priv”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K hj|ubj&)�”}”(hhh]”hï)�”}”(hŒcontrol private data”h]”hŒcontrol private data”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j—h´K hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j—h´K hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj½h]”hŒ Description”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¢hjubhï)�”}”(hŒ~This typedef definition is used as an argument to v4l2_ctrl_notify() and as an argument at struct :c:type:`v4l2_ctrl_handler`.”h]”(hŒbThis typedef definition is used as an argument to v4l2_ctrl_notify() and as an argument at struct ”…”�”}”(hjÓh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_handler`”h]”j½)�”}”(hjÝh]”hŒv4l2_ctrl_handler”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¡hjÓubhŒ.”…”�”}”(hjÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³júh´K¡hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl (C struct)”Œ c.v4l2_ctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ v4l2_ctrl”h]”j')�”}”(hŒstruct v4l2_ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj!h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K§ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj!h²hh³j2h´K§ubjP)�”}”(hŒ v4l2_ctrl”h]”jV)�”}”(hjh]”hŒ v4l2_ctrl”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjAubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj!h²hh³j2h´K§ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjh²hh³j2h´K§ubah}”(h]”jah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j2h´K§hjh²hubj‚)�”}”(hhh]”hï)�”}”(hŒThe control structure.”h]”hŒThe control structure.”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¨hjdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh²hh³j2h´K§ubeh}”(h]”h ]”(jÉŒstruct”eh"]”h$]”h&]”j¢jÉj£jj¤jj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX **Definition**:: struct v4l2_ctrl { struct list_head node; struct list_head ev_subs; struct v4l2_ctrl_handler *handler; struct v4l2_ctrl **cluster; unsigned int ncontrols; unsigned int done:1; unsigned int is_new:1; unsigned int has_changed:1; unsigned int is_private:1; unsigned int is_auto:1; unsigned int is_int:1; unsigned int is_string:1; unsigned int is_ptr:1; unsigned int is_array:1; unsigned int is_dyn_array:1; unsigned int has_volatiles:1; unsigned int call_notify:1; unsigned int manual_mode_value:8; const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 minimum, maximum, default_value; u32 elems; u32 elem_size; u32 new_elems; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 nr_of_dims; union { u64 step; u64 menu_skip_mask; }; union { const char * const *qmenu; const s64 *qmenu_int; }; unsigned long flags; void *priv; void *p_array; u32 p_array_alloc_elems; s32 val; struct { s32 val; } cur; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; union v4l2_ctrl_ptr p_new; union v4l2_ctrl_ptr p_cur; }; **Members** ``node`` The list node. ``ev_subs`` The list of control event subscriptions. ``handler`` The handler that owns the control. ``cluster`` Point to start of cluster array. ``ncontrols`` Number of controls in cluster array. ``done`` Internal flag: set for each processed control. ``is_new`` Set when the user specified a new value for this control. It is also set when called from v4l2_ctrl_handler_setup(). Drivers should never set this flag. ``has_changed`` Set when the current value differs from the new value. Drivers should never use this flag. ``is_private`` If set, then this control is private to its handler and it will not be added to any other handlers. Drivers can set this flag. ``is_auto`` If set, then this control selects whether the other cluster members are in 'automatic' mode or 'manual' mode. This is used for autogain/gain type clusters. Drivers should never set this flag directly. ``is_int`` If set, then this control has a simple integer value (i.e. it uses ctrl->val). ``is_string`` If set, then this control has type ``V4L2_CTRL_TYPE_STRING``. ``is_ptr`` If set, then this control is an array and/or has type >= ``V4L2_CTRL_COMPOUND_TYPES`` and/or has type ``V4L2_CTRL_TYPE_STRING``. In other words, :c:type:`struct v4l2_ext_control ` uses field p to point to the data. ``is_array`` If set, then this control contains an N-dimensional array. ``is_dyn_array`` If set, then this control contains a dynamically sized 1-dimensional array. If this is set, then **is_array** is also set. ``has_volatiles`` If set, then one or more members of the cluster are volatile. Drivers should never touch this flag. ``call_notify`` If set, then call the handler's notify function whenever the control's value changes. ``manual_mode_value`` If the is_auto flag is set, then this is the value of the auto control that determines if that control is in manual mode. So if the value of the auto control equals this value, then the whole cluster is in manual mode. Drivers should never set this flag directly. ``ops`` The control ops. ``type_ops`` The control type ops. ``id`` The control ID. ``name`` The control name. ``type`` The control type. ``minimum`` The control's minimum value. ``maximum`` The control's maximum value. ``default_value`` The control's default value. ``elems`` The number of elements in the N-dimensional array. ``elem_size`` The size in bytes of the control. ``new_elems`` The number of elements in p_new. This is the same as **elems**, except for dynamic arrays. In that case it is in the range of 1 to **p_array_alloc_elems**. ``dims`` The size of each dimension. ``nr_of_dims`` The number of dimensions in **dims**. ``{unnamed_union}`` anonymous ``step`` The control's step value for non-menu controls. ``menu_skip_mask`` The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 32 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a u64 or a bit array. ``{unnamed_union}`` anonymous ``qmenu`` A const char * array for all menu items. Array entries that are empty strings ("") correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL. Used only if the **type** is ``V4L2_CTRL_TYPE_MENU``. ``qmenu_int`` A 64-bit integer array for with integer menu items. The size of array must be equal to the menu size, e. g.: :math:`ceil(\frac{maximum - minimum}{step}) + 1`. Used only if the **type** is ``V4L2_CTRL_TYPE_INTEGER_MENU``. ``flags`` The control's flags. ``priv`` The control's private pointer. For use by the driver. It is untouched by the control framework. Note that this pointer is not freed when the control is deleted. Should this be needed then a new internal bitfield can be added to tell the framework to free this pointer. ``p_array`` Pointer to the allocated array. Only valid if **is_array** is true. ``p_array_alloc_elems`` The number of elements in the allocated array for both the cur and new values. So **p_array** is actually sized for 2 * **p_array_alloc_elems** * **elem_size**. Only valid if **is_array** is true. ``val`` The control's new s32 value. ``cur`` Structure to store the current value. ``cur.val`` The control's current value, if the **type** is represented via a u32 integer (see :c:type:`enum v4l2_ctrl_type `). ``p_def`` The control's default value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only). ``p_min`` The control's minimum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only). ``p_max`` The control's maximum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only). ``p_new`` The control's new value represented via a union which provides a standard way of accessing control types through a pointer. ``p_cur`` The control's current value represented via a union which provides a standard way of accessing control types through a pointer.”h]”(j¯)�”}”(hX **Definition**:: struct v4l2_ctrl { struct list_head node; struct list_head ev_subs; struct v4l2_ctrl_handler *handler; struct v4l2_ctrl **cluster; unsigned int ncontrols; unsigned int done:1; unsigned int is_new:1; unsigned int has_changed:1; unsigned int is_private:1; unsigned int is_auto:1; unsigned int is_int:1; unsigned int is_string:1; unsigned int is_ptr:1; unsigned int is_array:1; unsigned int is_dyn_array:1; unsigned int has_volatiles:1; unsigned int call_notify:1; unsigned int manual_mode_value:8; const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 minimum, maximum, default_value; u32 elems; u32 elem_size; u32 new_elems; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 nr_of_dims; union { u64 step; u64 menu_skip_mask; }; union { const char * const *qmenu; const s64 *qmenu_int; }; unsigned long flags; void *priv; void *p_array; u32 p_array_alloc_elems; s32 val; struct { s32 val; } cur; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; union v4l2_ctrl_ptr p_new; union v4l2_ctrl_ptr p_cur; }; ”h]”(hï)�”}”(hŒ**Definition**::”h]”(j¹)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‹ubhŒ:”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¬hj‡ubj§)�”}”(hX�struct v4l2_ctrl { struct list_head node; struct list_head ev_subs; struct v4l2_ctrl_handler *handler; struct v4l2_ctrl **cluster; unsigned int ncontrols; unsigned int done:1; unsigned int is_new:1; unsigned int has_changed:1; unsigned int is_private:1; unsigned int is_auto:1; unsigned int is_int:1; unsigned int is_string:1; unsigned int is_ptr:1; unsigned int is_array:1; unsigned int is_dyn_array:1; unsigned int has_volatiles:1; unsigned int call_notify:1; unsigned int manual_mode_value:8; const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 minimum, maximum, default_value; u32 elems; u32 elem_size; u32 new_elems; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 nr_of_dims; union { u64 step; u64 menu_skip_mask; }; union { const char * const *qmenu; const s64 *qmenu_int; }; unsigned long flags; void *priv; void *p_array; u32 p_array_alloc_elems; s32 val; struct { s32 val; } cur; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; union v4l2_ctrl_ptr p_new; union v4l2_ctrl_ptr p_cur; };”h]”hX�struct v4l2_ctrl { struct list_head node; struct list_head ev_subs; struct v4l2_ctrl_handler *handler; struct v4l2_ctrl **cluster; unsigned int ncontrols; unsigned int done:1; unsigned int is_new:1; unsigned int has_changed:1; unsigned int is_private:1; unsigned int is_auto:1; unsigned int is_int:1; unsigned int is_string:1; unsigned int is_ptr:1; unsigned int is_array:1; unsigned int is_dyn_array:1; unsigned int has_volatiles:1; unsigned int call_notify:1; unsigned int manual_mode_value:8; const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 minimum, maximum, default_value; u32 elems; u32 elem_size; u32 new_elems; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 nr_of_dims; union { u64 step; u64 menu_skip_mask; }; union { const char * const *qmenu; const s64 *qmenu_int; }; unsigned long flags; void *priv; void *p_array; u32 p_array_alloc_elems; s32 val; struct { s32 val; } cur; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; union v4l2_ctrl_ptr p_new; union v4l2_ctrl_ptr p_cur; };”…”�”}”hj¨sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¦h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K®hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³j§h´K¬hjƒubhï)�”}”(hŒ **Members**”h]”j¹)�”}”(hj¿h]”hŒMembers”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kãhjƒubj)�”}”(hhh]”(j)�”}”(hŒ``node`` The list node. ”h]”(j )�”}”(hŒ``node``”h]”j½)�”}”(hjÞh]”hŒnode”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K«hjØubj&)�”}”(hhh]”hï)�”}”(hŒThe list node.”h]”hŒThe list node.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jóh´K«hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jóh´K«hjÕubj)�”}”(hŒ5``ev_subs`` The list of control event subscriptions. ”h]”(j )�”}”(hŒ ``ev_subs``”h]”j½)�”}”(hjh]”hŒev_subs”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¬hjubj&)�”}”(hhh]”hï)�”}”(hŒ(The list of control event subscriptions.”h]”hŒ(The list of control event subscriptions.”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j,h´K¬hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j,h´K¬hjÕubj)�”}”(hŒ/``handler`` The handler that owns the control. ”h]”(j )�”}”(hŒ ``handler``”h]”j½)�”}”(hjPh]”hŒhandler”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K­hjJubj&)�”}”(hhh]”hï)�”}”(hŒ"The handler that owns the control.”h]”hŒ"The handler that owns the control.”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jeh´K­hjfubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jeh´K­hjÕubj)�”}”(hŒ-``cluster`` Point to start of cluster array. ”h]”(j )�”}”(hŒ ``cluster``”h]”j½)�”}”(hj‰h]”hŒcluster”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K®hjƒubj&)�”}”(hhh]”hï)�”}”(hŒ Point to start of cluster array.”h]”hŒ Point to start of cluster array.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jžh´K®hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jžh´K®hjÕubj)�”}”(hŒ3``ncontrols`` Number of controls in cluster array. ”h]”(j )�”}”(hŒ ``ncontrols``”h]”j½)�”}”(hjÂh]”hŒ ncontrols”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¯hj¼ubj&)�”}”(hhh]”hï)�”}”(hŒ$Number of controls in cluster array.”h]”hŒ$Number of controls in cluster array.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j×h´K¯hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j×h´K¯hjÕubj)�”}”(hŒ8``done`` Internal flag: set for each processed control. ”h]”(j )�”}”(hŒ``done``”h]”j½)�”}”(hjûh]”hŒdone”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K°hjõubj&)�”}”(hhh]”hï)�”}”(hŒ.Internal flag: set for each processed control.”h]”hŒ.Internal flag: set for each processed control.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jh´K°hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´K°hjÕubj)�”}”(hŒ¤``is_new`` Set when the user specified a new value for this control. It is also set when called from v4l2_ctrl_handler_setup(). Drivers should never set this flag. ”h]”(j )�”}”(hŒ ``is_new``”h]”j½)�”}”(hj4h]”hŒis_new”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K³hj.ubj&)�”}”(hhh]”hï)�”}”(hŒ˜Set when the user specified a new value for this control. It is also set when called from v4l2_ctrl_handler_setup(). Drivers should never set this flag.”h]”hŒ˜Set when the user specified a new value for this control. It is also set when called from v4l2_ctrl_handler_setup(). Drivers should never set this flag.”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K±hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jIh´K³hjÕubj)�”}”(hŒk``has_changed`` Set when the current value differs from the new value. Drivers should never use this flag. ”h]”(j )�”}”(hŒ``has_changed``”h]”j½)�”}”(hjnh]”hŒ has_changed”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kµhjhubj&)�”}”(hhh]”hï)�”}”(hŒZSet when the current value differs from the new value. Drivers should never use this flag.”h]”hŒZSet when the current value differs from the new value. Drivers should never use this flag.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K´hj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jƒh´KµhjÕubj)�”}”(hŒŽ``is_private`` If set, then this control is private to its handler and it will not be added to any other handlers. Drivers can set this flag. ”h]”(j )�”}”(hŒ``is_private``”h]”j½)�”}”(hj¨h]”hŒ is_private”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¸hj¢ubj&)�”}”(hhh]”hï)�”}”(hŒ~If set, then this control is private to its handler and it will not be added to any other handlers. Drivers can set this flag.”h]”hŒ~If set, then this control is private to its handler and it will not be added to any other handlers. Drivers can set this flag.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¶hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½h´K¸hjÕubj)�”}”(hŒÕ``is_auto`` If set, then this control selects whether the other cluster members are in 'automatic' mode or 'manual' mode. This is used for autogain/gain type clusters. Drivers should never set this flag directly. ”h]”(j )�”}”(hŒ ``is_auto``”h]”j½)�”}”(hjâh]”hŒis_auto”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¼hjÜubj&)�”}”(hhh]”hï)�”}”(hŒÈIf set, then this control selects whether the other cluster members are in 'automatic' mode or 'manual' mode. This is used for autogain/gain type clusters. Drivers should never set this flag directly.”h]”hŒÐIf set, then this control selects whether the other cluster members are in ‘automatic’ mode or ‘manual’ mode. This is used for autogain/gain type clusters. Drivers should never set this flag directly.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¹hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j÷h´K¼hjÕubj)�”}”(hŒZ``is_int`` If set, then this control has a simple integer value (i.e. it uses ctrl->val). ”h]”(j )�”}”(hŒ ``is_int``”h]”j½)�”}”(hj h]”hŒis_int”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¾hj ubj&)�”}”(hhh]”hï)�”}”(hŒNIf set, then this control has a simple integer value (i.e. it uses ctrl->val).”h]”hŒNIf set, then this control has a simple integer value (i.e. it uses ctrl->val).”…”�”}”(hj5 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K½hj2 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j1 h´K¾hjÕubj)�”}”(hŒL``is_string`` If set, then this control has type ``V4L2_CTRL_TYPE_STRING``. ”h]”(j )�”}”(hŒ ``is_string``”h]”j½)�”}”(hjV h]”hŒ is_string”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K¿hjP ubj&)�”}”(hhh]”hï)�”}”(hŒ=If set, then this control has type ``V4L2_CTRL_TYPE_STRING``.”h]”(hŒ#If set, then this control has type ”…”�”}”(hjo h²hh³Nh´Nubj½)�”}”(hŒ``V4L2_CTRL_TYPE_STRING``”h]”hŒV4L2_CTRL_TYPE_STRING”…”�”}”(hjw h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjo ubhŒ.”…”�”}”(hjo h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jk h´K¿hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjP ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jk h´K¿hjÕubj)�”}”(hŒô``is_ptr`` If set, then this control is an array and/or has type >= ``V4L2_CTRL_COMPOUND_TYPES`` and/or has type ``V4L2_CTRL_TYPE_STRING``. In other words, :c:type:`struct v4l2_ext_control ` uses field p to point to the data. ”h]”(j )�”}”(hŒ ``is_ptr``”h]”j½)�”}”(hj¡ h]”hŒis_ptr”…”�”}”(hj£ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŸ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÃhj› ubj&)�”}”(hhh]”hï)�”}”(hŒèIf set, then this control is an array and/or has type >= ``V4L2_CTRL_COMPOUND_TYPES`` and/or has type ``V4L2_CTRL_TYPE_STRING``. In other words, :c:type:`struct v4l2_ext_control ` uses field p to point to the data.”h]”(hŒ9If set, then this control is an array and/or has type >= ”…”�”}”(hjº h²hh³Nh´Nubj½)�”}”(hŒ``V4L2_CTRL_COMPOUND_TYPES``”h]”hŒV4L2_CTRL_COMPOUND_TYPES”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjº ubhŒ and/or has type ”…”�”}”(hjº h²hh³Nh´Nubj½)�”}”(hŒ``V4L2_CTRL_TYPE_STRING``”h]”hŒV4L2_CTRL_TYPE_STRING”…”�”}”(hjÔ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjº ubhŒ. In other words, ”…”�”}”(hjº h²hh³Nh´Nubh)�”}”(hŒ4:c:type:`struct v4l2_ext_control `”h]”j½)�”}”(hjè h]”hŒstruct v4l2_ext_control”…”�”}”(hjê h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjæ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ext_control”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÀhjº ubhŒ# uses field p to point to the data.”…”�”}”(hjº h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j!h´KÀhj· ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj› ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¶ h´KÃhjÕubj)�”}”(hŒH``is_array`` If set, then this control contains an N-dimensional array. ”h]”(j )�”}”(hŒ ``is_array``”h]”j½)�”}”(hj"!h]”hŒis_array”…”�”}”(hj$!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÄhj!ubj&)�”}”(hhh]”hï)�”}”(hŒ:If set, then this control contains an N-dimensional array.”h]”hŒ:If set, then this control contains an N-dimensional array.”…”�”}”(hj;!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j7!h´KÄhj8!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j7!h´KÄhjÕubj)�”}”(hŒŒ``is_dyn_array`` If set, then this control contains a dynamically sized 1-dimensional array. If this is set, then **is_array** is also set. ”h]”(j )�”}”(hŒ``is_dyn_array``”h]”j½)�”}”(hj[!h]”hŒ is_dyn_array”…”�”}”(hj]!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjY!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÆhjU!ubj&)�”}”(hhh]”hï)�”}”(hŒzIf set, then this control contains a dynamically sized 1-dimensional array. If this is set, then **is_array** is also set.”h]”(hŒaIf set, then this control contains a dynamically sized 1-dimensional array. If this is set, then ”…”�”}”(hjt!h²hh³Nh´Nubj¹)�”}”(hŒ **is_array**”h]”hŒis_array”…”�”}”(hj|!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjt!ubhŒ is also set.”…”�”}”(hjt!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÅhjq!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjU!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jp!h´KÆhjÕubj)�”}”(hŒv``has_volatiles`` If set, then one or more members of the cluster are volatile. Drivers should never touch this flag. ”h]”(j )�”}”(hŒ``has_volatiles``”h]”j½)�”}”(hj§!h]”hŒ has_volatiles”…”�”}”(hj©!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¥!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÈhj¡!ubj&)�”}”(hhh]”hï)�”}”(hŒcIf set, then one or more members of the cluster are volatile. Drivers should never touch this flag.”h]”hŒcIf set, then one or more members of the cluster are volatile. Drivers should never touch this flag.”…”�”}”(hjÀ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÇhj½!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¼!h´KÈhjÕubj)�”}”(hŒf``call_notify`` If set, then call the handler's notify function whenever the control's value changes. ”h]”(j )�”}”(hŒ``call_notify``”h]”j½)�”}”(hjá!h]”hŒ call_notify”…”�”}”(hjã!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjß!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÊhjÛ!ubj&)�”}”(hhh]”hï)�”}”(hŒUIf set, then call the handler's notify function whenever the control's value changes.”h]”hŒYIf set, then call the handler’s notify function whenever the control’s value changes.”…”�”}”(hjú!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÉhj÷!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jö!h´KÊhjÕubj)�”}”(hX``manual_mode_value`` If the is_auto flag is set, then this is the value of the auto control that determines if that control is in manual mode. So if the value of the auto control equals this value, then the whole cluster is in manual mode. Drivers should never set this flag directly. ”h]”(j )�”}”(hŒ``manual_mode_value``”h]”j½)�”}”(hj"h]”hŒmanual_mode_value”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÏhj"ubj&)�”}”(hhh]”hï)�”}”(hXIf the is_auto flag is set, then this is the value of the auto control that determines if that control is in manual mode. So if the value of the auto control equals this value, then the whole cluster is in manual mode. Drivers should never set this flag directly.”h]”hXIf the is_auto flag is set, then this is the value of the auto control that determines if that control is in manual mode. So if the value of the auto control equals this value, then the whole cluster is in manual mode. Drivers should never set this flag directly.”…”�”}”(hj4"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KËhj1"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j0"h´KÏhjÕubj)�”}”(hŒ``ops`` The control ops. ”h]”(j )�”}”(hŒ``ops``”h]”j½)�”}”(hjU"h]”hŒops”…”�”}”(hjW"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjS"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÐhjO"ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ops.”h]”hŒThe control ops.”…”�”}”(hjn"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jj"h´KÐhjk"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjO"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jj"h´KÐhjÕubj)�”}”(hŒ#``type_ops`` The control type ops. ”h]”(j )�”}”(hŒ ``type_ops``”h]”j½)�”}”(hjŽ"h]”hŒtype_ops”…”�”}”(hj�"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŒ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÑhjˆ"ubj&)�”}”(hhh]”hï)�”}”(hŒThe control type ops.”h]”hŒThe control type ops.”…”�”}”(hj§"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j£"h´KÑhj¤"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjˆ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j£"h´KÑhjÕubj)�”}”(hŒ``id`` The control ID. ”h]”(j )�”}”(hŒ``id``”h]”j½)�”}”(hjÇ"h]”hŒid”…”�”}”(hjÉ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÒhjÁ"ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hjà"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÜ"h´KÒhjÝ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÁ"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÜ"h´KÒhjÕubj)�”}”(hŒ``name`` The control name. ”h]”(j )�”}”(hŒ``name``”h]”j½)�”}”(hj#h]”hŒname”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjþ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÓhjú"ubj&)�”}”(hhh]”hï)�”}”(hŒThe control name.”h]”hŒThe control name.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j#h´KÓhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjú"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j#h´KÓhjÕubj)�”}”(hŒ``type`` The control type. ”h]”(j )�”}”(hŒ``type``”h]”j½)�”}”(hj9#h]”hŒtype”…”�”}”(hj;#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj7#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÔhj3#ubj&)�”}”(hhh]”hï)�”}”(hŒThe control type.”h]”hŒThe control type.”…”�”}”(hjR#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jN#h´KÔhjO#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj3#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jN#h´KÔhjÕubj)�”}”(hŒ)``minimum`` The control's minimum value. ”h]”(j )�”}”(hŒ ``minimum``”h]”j½)�”}”(hjr#h]”hŒminimum”…”�”}”(hjt#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjp#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÕhjl#ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's minimum value.”h]”hŒThe control’s minimum value.”…”�”}”(hj‹#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‡#h´KÕhjˆ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjl#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‡#h´KÕhjÕubj)�”}”(hŒ)``maximum`` The control's maximum value. ”h]”(j )�”}”(hŒ ``maximum``”h]”j½)�”}”(hj«#h]”hŒmaximum”…”�”}”(hj­#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj©#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÖhj¥#ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's maximum value.”h]”hŒThe control’s maximum value.”…”�”}”(hjÄ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÀ#h´KÖhjÁ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¥#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÀ#h´KÖhjÕubj)�”}”(hŒ/``default_value`` The control's default value. ”h]”(j )�”}”(hŒ``default_value``”h]”j½)�”}”(hjä#h]”hŒ default_value”…”�”}”(hjæ#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjâ#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´K×hjÞ#ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hjý#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jù#h´K×hjú#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jù#h´K×hjÕubj)�”}”(hŒ=``elems`` The number of elements in the N-dimensional array. ”h]”(j )�”}”(hŒ ``elems``”h]”j½)�”}”(hj$h]”hŒelems”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÙhj$ubj&)�”}”(hhh]”hï)�”}”(hŒ2The number of elements in the N-dimensional array.”h]”hŒ2The number of elements in the N-dimensional array.”…”�”}”(hj6$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j2$h´KÙhj3$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j2$h´KÙhjÕubj)�”}”(hŒ0``elem_size`` The size in bytes of the control. ”h]”(j )�”}”(hŒ ``elem_size``”h]”j½)�”}”(hjV$h]”hŒ elem_size”…”�”}”(hjX$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjT$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÚhjP$ubj&)�”}”(hhh]”hï)�”}”(hŒ!The size in bytes of the control.”h]”hŒ!The size in bytes of the control.”…”�”}”(hjo$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jk$h´KÚhjl$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjP$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jk$h´KÚhjÕubj)�”}”(hŒª``new_elems`` The number of elements in p_new. This is the same as **elems**, except for dynamic arrays. In that case it is in the range of 1 to **p_array_alloc_elems**. ”h]”(j )�”}”(hŒ ``new_elems``”h]”j½)�”}”(hj�$h]”hŒ new_elems”…”�”}”(hj‘$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj�$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÝhj‰$ubj&)�”}”(hhh]”hï)�”}”(hŒ›The number of elements in p_new. This is the same as **elems**, except for dynamic arrays. In that case it is in the range of 1 to **p_array_alloc_elems**.”h]”(hŒ5The number of elements in p_new. This is the same as ”…”�”}”(hj¨$h²hh³Nh´Nubj¹)�”}”(hŒ **elems**”h]”hŒelems”…”�”}”(hj°$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¨$ubhŒE, except for dynamic arrays. In that case it is in the range of 1 to ”…”�”}”(hj¨$h²hh³Nh´Nubj¹)�”}”(hŒ**p_array_alloc_elems**”h]”hŒp_array_alloc_elems”…”�”}”(hjÂ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¨$ubhŒ.”…”�”}”(hj¨$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÛhj¥$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‰$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¤$h´KÝhjÕubj)�”}”(hŒ%``dims`` The size of each dimension. ”h]”(j )�”}”(hŒ``dims``”h]”j½)�”}”(hjí$h]”hŒdims”…”�”}”(hjï$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjë$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KÞhjç$ubj&)�”}”(hhh]”hï)�”}”(hŒThe size of each dimension.”h]”hŒThe size of each dimension.”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j%h´KÞhj%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjç$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%h´KÞhjÕubj)�”}”(hŒ5``nr_of_dims`` The number of dimensions in **dims**. ”h]”(j )�”}”(hŒ``nr_of_dims``”h]”j½)�”}”(hj&%h]”hŒ nr_of_dims”…”�”}”(hj(%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj$%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kßhj %ubj&)�”}”(hhh]”hï)�”}”(hŒ%The number of dimensions in **dims**.”h]”(hŒThe number of dimensions in ”…”�”}”(hj?%h²hh³Nh´Nubj¹)�”}”(hŒ**dims**”h]”hŒdims”…”�”}”(hjG%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj?%ubhŒ.”…”�”}”(hj?%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j;%h´Kßhj<%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj %ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j;%h´KßhjÕubj)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j )�”}”(hŒ``{unnamed_union}``”h]”j½)�”}”(hjq%h]”hŒ{unnamed_union}”…”�”}”(hjs%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjo%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Khjk%ubj&)�”}”(hhh]”hï)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hjŠ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j†%h´Khj‡%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjk%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j†%h´KhjÕubj)�”}”(hŒ9``step`` The control's step value for non-menu controls. ”h]”(j )�”}”(hŒ``step``”h]”j½)�”}”(hjª%h]”hŒstep”…”�”}”(hj¬%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¨%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KØhj¤%ubj&)�”}”(hhh]”hï)�”}”(hŒ/The control's step value for non-menu controls.”h]”hŒ1The control’s step value for non-menu controls.”…”�”}”(hjÃ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¿%h´KØhjÀ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¤%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¿%h´KØhjÕubj)�”}”(hXz``menu_skip_mask`` The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 32 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a u64 or a bit array. ”h]”(j )�”}”(hŒ``menu_skip_mask``”h]”j½)�”}”(hjã%h]”hŒmenu_skip_mask”…”�”}”(hjå%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjá%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KåhjÝ%ubj&)�”}”(hhh]”hï)�”}”(hXfThe control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 32 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a u64 or a bit array.”h]”hXhThe control’s skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 32 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a u64 or a bit array.”…”�”}”(hjü%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kàhjù%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÝ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jø%h´KåhjÕubj)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j )�”}”(hŒ``{unnamed_union}``”h]”j½)�”}”(hj&h]”hŒ{unnamed_union}”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Khj&ubj&)�”}”(hhh]”hï)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hj6&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j2&h´Khj3&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j2&h´KhjÕubj)�”}”(hX ``qmenu`` A const char * array for all menu items. Array entries that are empty strings ("") correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL. Used only if the **type** is ``V4L2_CTRL_TYPE_MENU``. ”h]”(j )�”}”(hŒ ``qmenu``”h]”j½)�”}”(hjV&h]”hŒqmenu”…”�”}”(hjX&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjT&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KêhjP&ubj&)�”}”(hhh]”hï)�”}”(hŒþA const char * array for all menu items. Array entries that are empty strings ("") correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL. Used only if the **type** is ``V4L2_CTRL_TYPE_MENU``.”h]”(hŒÞA const char * array for all menu items. Array entries that are empty strings (“â€�) correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL. Used only if the ”…”�”}”(hjo&h²hh³Nh´Nubj¹)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjw&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjo&ubhŒ is ”…”�”}”(hjo&h²hh³Nh´Nubj½)�”}”(hŒ``V4L2_CTRL_TYPE_MENU``”h]”hŒV4L2_CTRL_TYPE_MENU”…”�”}”(hj‰&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjo&ubhŒ.”…”�”}”(hjo&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kæhjl&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjP&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jk&h´KêhjÕubj)�”}”(hŒë``qmenu_int`` A 64-bit integer array for with integer menu items. The size of array must be equal to the menu size, e. g.: :math:`ceil(\frac{maximum - minimum}{step}) + 1`. Used only if the **type** is ``V4L2_CTRL_TYPE_INTEGER_MENU``. ”h]”(j )�”}”(hŒ ``qmenu_int``”h]”j½)�”}”(hj´&h]”hŒ qmenu_int”…”�”}”(hj¶&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj²&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kîhj®&ubj&)�”}”(hhh]”hï)�”}”(hŒÜA 64-bit integer array for with integer menu items. The size of array must be equal to the menu size, e. g.: :math:`ceil(\frac{maximum - minimum}{step}) + 1`. Used only if the **type** is ``V4L2_CTRL_TYPE_INTEGER_MENU``.”h]”(hŒmA 64-bit integer array for with integer menu items. The size of array must be equal to the menu size, e. g.: ”…”�”}”(hjÍ&h²hh³Nh´NubhŒmath”“”)�”}”(hŒ0:math:`ceil(\frac{maximum - minimum}{step}) + 1`”h]”hŒ(ceil(\frac{maximum - minimum}{step}) + 1”…”�”}”(hj×&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jÕ&hjÍ&ubhŒ. Used only if the ”…”�”}”(hjÍ&h²hh³Nh´Nubj¹)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjé&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÍ&ubhŒ is ”…”�”}”(hjÍ&h²hh³Nh´Nubj½)�”}”(hŒ``V4L2_CTRL_TYPE_INTEGER_MENU``”h]”hŒV4L2_CTRL_TYPE_INTEGER_MENU”…”�”}”(hjû&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÍ&ubhŒ.”…”�”}”(hjÍ&h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KëhjÊ&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj®&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÉ&h´KîhjÕubj)�”}”(hŒ``flags`` The control's flags. ”h]”(j )�”}”(hŒ ``flags``”h]”j½)�”}”(hj&'h]”hŒflags”…”�”}”(hj('h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj$'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kïhj 'ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's flags.”h]”hŒThe control’s flags.”…”�”}”(hj?'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j;'h´Kïhj<'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj 'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j;'h´KïhjÕubj)�”}”(hX``priv`` The control's private pointer. For use by the driver. It is untouched by the control framework. Note that this pointer is not freed when the control is deleted. Should this be needed then a new internal bitfield can be added to tell the framework to free this pointer. ”h]”(j )�”}”(hŒ``priv``”h]”j½)�”}”(hj_'h]”hŒpriv”…”�”}”(hja'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj]'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KôhjY'ubj&)�”}”(hhh]”hï)�”}”(hX The control's private pointer. For use by the driver. It is untouched by the control framework. Note that this pointer is not freed when the control is deleted. Should this be needed then a new internal bitfield can be added to tell the framework to free this pointer.”h]”hXThe control’s private pointer. For use by the driver. It is untouched by the control framework. Note that this pointer is not freed when the control is deleted. Should this be needed then a new internal bitfield can be added to tell the framework to free this pointer.”…”�”}”(hjx'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kðhju'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjY'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jt'h´KôhjÕubj)�”}”(hŒP``p_array`` Pointer to the allocated array. Only valid if **is_array** is true. ”h]”(j )�”}”(hŒ ``p_array``”h]”j½)�”}”(hj™'h]”hŒp_array”…”�”}”(hj›'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj—'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kõhj“'ubj&)�”}”(hhh]”hï)�”}”(hŒCPointer to the allocated array. Only valid if **is_array** is true.”h]”(hŒ.Pointer to the allocated array. Only valid if ”…”�”}”(hj²'h²hh³Nh´Nubj¹)�”}”(hŒ **is_array**”h]”hŒis_array”…”�”}”(hjº'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj²'ubhŒ is true.”…”�”}”(hj²'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j®'h´Kõhj¯'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj“'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j®'h´KõhjÕubj)�”}”(hŒÝ``p_array_alloc_elems`` The number of elements in the allocated array for both the cur and new values. So **p_array** is actually sized for 2 * **p_array_alloc_elems** * **elem_size**. Only valid if **is_array** is true. ”h]”(j )�”}”(hŒ``p_array_alloc_elems``”h]”j½)�”}”(hjä'h]”hŒp_array_alloc_elems”…”�”}”(hjæ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjâ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´KùhjÞ'ubj&)�”}”(hhh]”hï)�”}”(hŒÄThe number of elements in the allocated array for both the cur and new values. So **p_array** is actually sized for 2 * **p_array_alloc_elems** * **elem_size**. Only valid if **is_array** is true.”h]”(hŒRThe number of elements in the allocated array for both the cur and new values. So ”…”�”}”(hjý'h²hh³Nh´Nubj¹)�”}”(hŒ **p_array**”h]”hŒp_array”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjý'ubhŒ is actually sized for 2 * ”…”�”}”(hjý'h²hh³Nh´Nubj¹)�”}”(hŒ**p_array_alloc_elems**”h]”hŒp_array_alloc_elems”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjý'ubhŒ * ”…”�”}”(hjý'h²hh³Nh´Nubj¹)�”}”(hŒ **elem_size**”h]”hŒ elem_size”…”�”}”(hj)(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjý'ubhŒ. Only valid if ”…”�”}”(hjý'h²hh³Nh´Nubj¹)�”}”(hŒ **is_array**”h]”hŒis_array”…”�”}”(hj;(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjý'ubhŒ is true.”…”�”}”(hjý'h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Köhjú'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÞ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jù'h´KùhjÕubj)�”}”(hŒ%``val`` The control's new s32 value. ”h]”(j )�”}”(hŒ``val``”h]”j½)�”}”(hjf(h]”hŒval”…”�”}”(hjh(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjd(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kýhj`(ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's new s32 value.”h]”hŒThe control’s new s32 value.”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j{(h´Kýhj|(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj`(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j{(h´KýhjÕubj)�”}”(hŒ.``cur`` Structure to store the current value. ”h]”(j )�”}”(hŒ``cur``”h]”j½)�”}”(hjŸ(h]”hŒcur”…”�”}”(hj¡(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj�(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kúhj™(ubj&)�”}”(hhh]”hï)�”}”(hŒ%Structure to store the current value.”h]”hŒ%Structure to store the current value.”…”�”}”(hj¸(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j´(h´Kúhjµ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj™(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´(h´KúhjÕubj)�”}”(hŒ�``cur.val`` The control's current value, if the **type** is represented via a u32 integer (see :c:type:`enum v4l2_ctrl_type `). ”h]”(j )�”}”(hŒ ``cur.val``”h]”j½)�”}”(hjØ(h]”hŒcur.val”…”�”}”(hjÚ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÖ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”•;h´KühjÒ(ubj&)�”}”(hhh]”hï)�”}”(hŒƒThe control's current value, if the **type** is represented via a u32 integer (see :c:type:`enum v4l2_ctrl_type `).”h]”(hŒ&The control’s current value, if the ”…”�”}”(hjñ(h²hh³Nh´Nubj¹)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hjù(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjñ(ubhŒ' is represented via a u32 integer (see ”…”�”}”(hjñ(h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`enum v4l2_ctrl_type `”h]”j½)�”}”(hj )h]”hŒenum v4l2_ctrl_type”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj )ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_type”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kûhjñ(ubhŒ).”…”�”}”(hjñ(h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j*)h´Kûhjî(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÒ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jí(h´KühjÕubj)�”}”(hŒ§``p_def`` The control's default value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only). ”h]”(j )�”}”(hŒ ``p_def``”h]”j½)�”}”(hjG)h]”hŒp_def”…”�”}”(hjI)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjE)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjA)ubj&)�”}”(hhh]”hï)�”}”(hŒœThe control's default value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only).”h]”hŒžThe control’s default value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only).”…”�”}”(hj`)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Kþhj])ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjA)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j\)h´MhjÕubj)�”}”(hŒ§``p_min`` The control's minimum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only). ”h]”(j )�”}”(hŒ ``p_min``”h]”j½)�”}”(hj�)h]”hŒp_min”…”�”}”(hjƒ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj{)ubj&)�”}”(hhh]”hï)�”}”(hŒœThe control's minimum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only).”h]”hŒžThe control’s minimum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only).”…”�”}”(hjš)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj—)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj{)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j–)h´MhjÕubj)�”}”(hŒ§``p_max`` The control's maximum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only). ”h]”(j )�”}”(hŒ ``p_max``”h]”j½)�”}”(hj»)h]”hŒp_max”…”�”}”(hj½)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¹)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjµ)ubj&)�”}”(hhh]”hï)�”}”(hŒœThe control's maximum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only).”h]”hŒžThe control’s maximum value represented via a union which provides a standard way of accessing control types through a pointer (for compound controls only).”…”�”}”(hjÔ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÑ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjµ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÐ)h´MhjÕubj)�”}”(hŒ†``p_new`` The control's new value represented via a union which provides a standard way of accessing control types through a pointer. ”h]”(j )�”}”(hŒ ``p_new``”h]”j½)�”}”(hjõ)h]”hŒp_new”…”�”}”(hj÷)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjó)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjï)ubj&)�”}”(hhh]”hï)�”}”(hŒ{The control's new value represented via a union which provides a standard way of accessing control types through a pointer.”h]”hŒ}The control’s new value represented via a union which provides a standard way of accessing control types through a pointer.”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjï)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j *h´M hjÕubj)�”}”(hŒ‰``p_cur`` The control's current value represented via a union which provides a standard way of accessing control types through a pointer.”h]”(j )�”}”(hŒ ``p_cur``”h]”j½)�”}”(hj/*h]”hŒp_cur”…”�”}”(hj1*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj-*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj)*ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's current value represented via a union which provides a standard way of accessing control types through a pointer.”h]”hŒ�The control’s current value represented via a union which provides a standard way of accessing control types through a pointer.”…”�”}”(hjH*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjE*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj)*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jD*h´MhjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_ref (C struct)”Œc.v4l2_ctrl_ref”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ v4l2_ctrl_ref”h]”j')�”}”(hŒstruct v4l2_ctrl_ref”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj‰*h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj…*h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—*h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj…*h²hh³j–*h´MubjP)�”}”(hŒ v4l2_ctrl_ref”h]”jV)�”}”(hjƒ*h]”hŒ v4l2_ctrl_ref”…”�”}”(hj©*h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¥*ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj…*h²hh³j–*h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj�*h²hh³j–*h´Mubah}”(h]”j|*ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j–*h´Mhj~*h²hubj‚)�”}”(hhh]”hï)�”}”(hŒThe control reference.”h]”hŒThe control reference.”…”�”}”(hjË*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MHhjÈ*h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj~*h²hh³j–*h´Mubeh}”(h]”h ]”(jÉŒstruct”eh"]”h$]”h&]”j¢jÉj£jã*j¤jã*j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX€ **Definition**:: struct v4l2_ctrl_ref { struct list_head node; struct v4l2_ctrl_ref *next; struct v4l2_ctrl *ctrl; struct v4l2_ctrl_helper *helper; bool from_other_dev; bool req_done; bool p_req_valid; bool p_req_array_enomem; u32 p_req_array_alloc_elems; u32 p_req_elems; union v4l2_ctrl_ptr p_req; }; **Members** ``node`` List node for the sorted list. ``next`` Single-link list node for the hash. ``ctrl`` The actual control information. ``helper`` Pointer to helper struct. Used internally in ``prepare_ext_ctrls`` function at ``v4l2-ctrl.c``. ``from_other_dev`` If true, then **ctrl** was defined in another device than the :c:type:`struct v4l2_ctrl_handler `. ``req_done`` Internal flag: if the control handler containing this control reference is bound to a media request, then this is set when the control has been applied. This prevents applying controls from a cluster with multiple controls twice (when the first control of a cluster is applied, they all are). ``p_req_valid`` If set, then p_req contains the control value for the request. ``p_req_array_enomem`` If set, then p_req is invalid since allocating space for an array failed. Attempting to read this value shall result in ENOMEM. Only valid if ctrl->is_array is true. ``p_req_array_alloc_elems`` The number of elements allocated for the array. Only valid if **p_req_valid** and ctrl->is_array are true. ``p_req_elems`` The number of elements in **p_req**. This is the same as ctrl->elems, except for dynamic arrays. In that case it is in the range of 1 to **p_req_array_alloc_elems**. Only valid if **p_req_valid** is true. ``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 must be applied when the request is executed, or to the value of the control at the time that the request was completed. If **p_req_valid** is false, then this control was never set for this request and the control will not be updated when this request is applied. **Description** 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 is used to link the control in the hash's bucket.”h]”(j¯)�”}”(hXŒ**Definition**:: struct v4l2_ctrl_ref { struct list_head node; struct v4l2_ctrl_ref *next; struct v4l2_ctrl *ctrl; struct v4l2_ctrl_helper *helper; bool from_other_dev; bool req_done; bool p_req_valid; bool p_req_array_enomem; u32 p_req_array_alloc_elems; u32 p_req_elems; union v4l2_ctrl_ptr p_req; }; ”h]”(hï)�”}”(hŒ**Definition**::”h]”(j¹)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjó*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjï*ubhŒ:”…”�”}”(hjï*h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MLhjë*ubj§)�”}”(hX_struct v4l2_ctrl_ref { struct list_head node; struct v4l2_ctrl_ref *next; struct v4l2_ctrl *ctrl; struct v4l2_ctrl_helper *helper; bool from_other_dev; bool req_done; bool p_req_valid; bool p_req_array_enomem; u32 p_req_array_alloc_elems; u32 p_req_elems; union v4l2_ctrl_ptr p_req; };”h]”hX_struct v4l2_ctrl_ref { struct list_head node; struct v4l2_ctrl_ref *next; struct v4l2_ctrl *ctrl; struct v4l2_ctrl_helper *helper; bool from_other_dev; bool req_done; bool p_req_valid; bool p_req_array_enomem; u32 p_req_array_alloc_elems; u32 p_req_elems; union v4l2_ctrl_ptr p_req; };”…”�”}”hj +sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¦h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MNhjë*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³j +h´MLhjç*ubhï)�”}”(hŒ **Members**”h]”j¹)�”}”(hj#+h]”hŒMembers”…”�”}”(hj%+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj!+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M\hjç*ubj)�”}”(hhh]”(j)�”}”(hŒ(``node`` List node for the sorted list. ”h]”(j )�”}”(hŒ``node``”h]”j½)�”}”(hjB+h]”hŒnode”…”�”}”(hjD+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj@+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MKhj<+ubj&)�”}”(hhh]”hï)�”}”(hŒList node for the sorted list.”h]”hŒList node for the sorted list.”…”�”}”(hj[+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jW+h´MKhjX+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj<+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jW+h´MKhj9+ubj)�”}”(hŒ-``next`` Single-link list node for the hash. ”h]”(j )�”}”(hŒ``next``”h]”j½)�”}”(hj{+h]”hŒnext”…”�”}”(hj}+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjy+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MLhju+ubj&)�”}”(hhh]”hï)�”}”(hŒ#Single-link list node for the hash.”h]”hŒ#Single-link list node for the hash.”…”�”}”(hj”+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j�+h´MLhj‘+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hju+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�+h´MLhj9+ubj)�”}”(hŒ)``ctrl`` The actual control information. ”h]”(j )�”}”(hŒ``ctrl``”h]”j½)�”}”(hj´+h]”hŒctrl”…”�”}”(hj¶+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj²+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MMhj®+ubj&)�”}”(hhh]”hï)�”}”(hŒThe actual control information.”h]”hŒThe actual control information.”…”�”}”(hjÍ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÉ+h´MMhjÊ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj®+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÉ+h´MMhj9+ubj)�”}”(hŒk``helper`` Pointer to helper struct. Used internally in ``prepare_ext_ctrls`` function at ``v4l2-ctrl.c``. ”h]”(j )�”}”(hŒ ``helper``”h]”j½)�”}”(hjí+h]”hŒhelper”…”�”}”(hjï+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjë+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MOhjç+ubj&)�”}”(hhh]”hï)�”}”(hŒ_Pointer to helper struct. Used internally in ``prepare_ext_ctrls`` function at ``v4l2-ctrl.c``.”h]”(hŒ-Pointer to helper struct. Used internally in ”…”�”}”(hj,h²hh³Nh´Nubj½)�”}”(hŒ``prepare_ext_ctrls``”h]”hŒprepare_ext_ctrls”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj,ubhŒ function at ”…”�”}”(hj,h²hh³Nh´Nubj½)�”}”(hŒ``v4l2-ctrl.c``”h]”hŒ v4l2-ctrl.c”…”�”}”(hj ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj,ubhŒ.”…”�”}”(hj,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MNhj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjç+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j,h´MOhj9+ubj)�”}”(hŒ‰``from_other_dev`` If true, then **ctrl** was defined in another device than the :c:type:`struct v4l2_ctrl_handler `. ”h]”(j )�”}”(hŒ``from_other_dev``”h]”j½)�”}”(hjK,h]”hŒfrom_other_dev”…”�”}”(hjM,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjI,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MQhjE,ubj&)�”}”(hhh]”hï)�”}”(hŒuIf true, then **ctrl** was defined in another device than the :c:type:`struct v4l2_ctrl_handler `.”h]”(hŒIf true, then ”…”�”}”(hjd,h²hh³Nh´Nubj¹)�”}”(hŒ**ctrl**”h]”hŒctrl”…”�”}”(hjl,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjd,ubhŒ( was defined in another device than the ”…”�”}”(hjd,h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hj€,h]”hŒstruct v4l2_ctrl_handler”…”�”}”(hj‚,h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj~,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MPhjd,ubhŒ.”…”�”}”(hjd,h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j�,h´MPhja,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjE,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j`,h´MQhj9+ubj)�”}”(hX2``req_done`` Internal flag: if the control handler containing this control reference is bound to a media request, then this is set when the control has been applied. This prevents applying controls from a cluster with multiple controls twice (when the first control of a cluster is applied, they all are). ”h]”(j )�”}”(hŒ ``req_done``”h]”j½)�”}”(hjº,h]”hŒreq_done”…”�”}”(hj¼,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¸,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MVhj´,ubj&)�”}”(hhh]”hï)�”}”(hX$Internal flag: if the control handler containing this control reference is bound to a media request, then this is set when the control has been applied. This prevents applying controls from a cluster with multiple controls twice (when the first control of a cluster is applied, they all are).”h]”hX$Internal flag: if the control handler containing this control reference is bound to a media request, then this is set when the control has been applied. This prevents applying controls from a cluster with multiple controls twice (when the first control of a cluster is applied, they all are).”…”�”}”(hjÓ,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MRhjÐ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj´,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÏ,h´MVhj9+ubj)�”}”(hŒO``p_req_valid`` If set, then p_req contains the control value for the request. ”h]”(j )�”}”(hŒ``p_req_valid``”h]”j½)�”}”(hjô,h]”hŒ p_req_valid”…”�”}”(hjö,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjò,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MWhjî,ubj&)�”}”(hhh]”hï)�”}”(hŒ>If set, then p_req contains the control value for the request.”h]”hŒ>If set, then p_req contains the control value for the request.”…”�”}”(hj -h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j -h´MWhj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjî,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j -h´MWhj9+ubj)�”}”(hŒ½``p_req_array_enomem`` If set, then p_req is invalid since allocating space for an array failed. Attempting to read this value shall result in ENOMEM. Only valid if ctrl->is_array is true. ”h]”(j )�”}”(hŒ``p_req_array_enomem``”h]”j½)�”}”(hj--h]”hŒp_req_array_enomem”…”�”}”(hj/-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj+-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MZhj'-ubj&)�”}”(hhh]”hï)�”}”(hŒ¥If set, then p_req is invalid since allocating space for an array failed. Attempting to read this value shall result in ENOMEM. Only valid if ctrl->is_array is true.”h]”hŒ¥If set, then p_req is invalid since allocating space for an array failed. Attempting to read this value shall result in ENOMEM. Only valid if ctrl->is_array is true.”…”�”}”(hjF-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MXhjC-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj'-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jB-h´MZhj9+ubj)�”}”(hŒ‡``p_req_array_alloc_elems`` The number of elements allocated for the array. Only valid if **p_req_valid** and ctrl->is_array are true. ”h]”(j )�”}”(hŒ``p_req_array_alloc_elems``”h]”j½)�”}”(hjg-h]”hŒp_req_array_alloc_elems”…”�”}”(hji-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hje-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M]hja-ubj&)�”}”(hhh]”hï)�”}”(hŒjThe number of elements allocated for the array. Only valid if **p_req_valid** and ctrl->is_array are true.”h]”(hŒ>The number of elements allocated for the array. Only valid if ”…”�”}”(hj€-h²hh³Nh´Nubj¹)�”}”(hŒ**p_req_valid**”h]”hŒ p_req_valid”…”�”}”(hjˆ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj€-ubhŒ and ctrl->is_array are true.”…”�”}”(hj€-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M[hj}-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hja-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j|-h´M]hj9+ubj)�”}”(hŒÝ``p_req_elems`` The number of elements in **p_req**. This is the same as ctrl->elems, except for dynamic arrays. In that case it is in the range of 1 to **p_req_array_alloc_elems**. Only valid if **p_req_valid** is true. ”h]”(j )�”}”(hŒ``p_req_elems``”h]”j½)�”}”(hj³-h]”hŒ p_req_elems”…”�”}”(hjµ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj±-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mahj­-ubj&)�”}”(hhh]”hï)�”}”(hŒÌThe number of elements in **p_req**. This is the same as ctrl->elems, except for dynamic arrays. In that case it is in the range of 1 to **p_req_array_alloc_elems**. Only valid if **p_req_valid** is true.”h]”(hŒThe number of elements in ”…”�”}”(hjÌ-h²hh³Nh´Nubj¹)�”}”(hŒ **p_req**”h]”hŒp_req”…”�”}”(hjÔ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÌ-ubhŒf. This is the same as ctrl->elems, except for dynamic arrays. In that case it is in the range of 1 to ”…”�”}”(hjÌ-h²hh³Nh´Nubj¹)�”}”(hŒ**p_req_array_alloc_elems**”h]”hŒp_req_array_alloc_elems”…”�”}”(hjæ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÌ-ubhŒ. Only valid if ”…”�”}”(hjÌ-h²hh³Nh´Nubj¹)�”}”(hŒ**p_req_valid**”h]”hŒ p_req_valid”…”�”}”(hjø-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÌ-ubhŒ is true.”…”�”}”(hjÌ-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M^hjÉ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj­-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÈ-h´Mahj9+ubj)�”}”(hXœ``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 must be applied when the request is executed, or to the value of the control at the time that the request was completed. If **p_req_valid** is false, then this control was never set for this request and the control will not be updated when this request is applied. ”h]”(j )�”}”(hŒ ``p_req``”h]”j½)�”}”(hj#.h]”hŒp_req”…”�”}”(hj%.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj!.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mihj.ubj&)�”}”(hhh]”hï)�”}”(hX�If the control handler containing this control reference is bound to a media request, then this points to the value of the control that must be applied when the request is executed, or to the value of the control at the time that the request was completed. If **p_req_valid** is false, then this control was never set for this request and the control will not be updated when this request is applied.”h]”(hXIf the control handler containing this control reference is bound to a media request, then this points to the value of the control that must be applied when the request is executed, or to the value of the control at the time that the request was completed. If ”…”�”}”(hj<.h²hh³Nh´Nubj¹)�”}”(hŒ**p_req_valid**”h]”hŒ p_req_valid”…”�”}”(hjD.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj<.ubhŒ} is false, then this control was never set for this request and the control will not be updated when this request is applied.”…”�”}”(hj<.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mbhj9.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j8.h´Mihj9+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjç*ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjq.h]”hŒ Description”…”�”}”(hjs.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjo.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mkhjç*ubhï)�”}”(hŒÂ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 is used to link the control in the hash's bucket.”h]”hŒÄ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 is used to link the control in the hash’s bucket.”…”�”}”(hj‡.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhhjç*ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_handler (C struct)”Œc.v4l2_ctrl_handler”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒv4l2_ctrl_handler”h]”j')�”}”(hŒstruct v4l2_ctrl_handler”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¶.h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj².h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Moubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ.h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj².h²hh³jÃ.h´MoubjP)�”}”(hŒv4l2_ctrl_handler”h]”jV)�”}”(hj°.h]”hŒv4l2_ctrl_handler”…”�”}”(hjÖ.h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÒ.ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj².h²hh³jÃ.h´Moubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj®.h²hh³jÃ.h´Moubah}”(h]”j©.ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jÃ.h´Mohj«.h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ„The control handler keeps track of all the controls: both the controls owned by the handler and those inherited from other handlers.”h]”hŒ„The control handler keeps track of all the controls: both the controls owned by the handler and those inherited from other handlers.”…”�”}”(hjø.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M|hjõ.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj«.h²hh³jÃ.h´Moubeh}”(h]”h ]”(jÉŒstruct”eh"]”h$]”h&]”j¢jÉj£j/j¤j/j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX< **Definition**:: struct v4l2_ctrl_handler { struct mutex _lock; struct mutex *lock; struct list_head ctrls; struct list_head ctrl_refs; struct v4l2_ctrl_ref *cached; struct v4l2_ctrl_ref **buckets; v4l2_ctrl_notify_fnc notify; void *notify_priv; u16 nr_of_buckets; int error; bool request_is_queued; struct list_head requests; struct list_head requests_queued; struct media_request_object req_obj; }; **Members** ``_lock`` Default for "lock". ``lock`` Lock to control access to this handler and its controls. May be replaced by the user right after init. ``ctrls`` The list of controls owned by this handler. ``ctrl_refs`` The list of control references. ``cached`` The last found control reference. It is common that the same control is needed multiple times, so this is a simple optimization. ``buckets`` Buckets for the hashing. Allows for quick control lookup. ``notify`` A notify callback that is called whenever the control changes value. Note that the handler's lock is held when the notify function is called! ``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. ``request_is_queued`` True if the request was queued. ``requests`` List to keep track of open control handler request objects. For the parent control handler (**req_obj.ops** == NULL) this is the list header. When the parent control handler is removed, it has to unbind and put all these requests since they refer to the parent. ``requests_queued`` List of the queued requests. This determines the order in which these controls are applied. Once the request is completed it is removed from this list. ``req_obj`` The :c:type:`struct media_request_object `, used to link into a :c:type:`struct media_request `. This request object has a refcount.”h]”(j¯)�”}”(hX**Definition**:: struct v4l2_ctrl_handler { struct mutex _lock; struct mutex *lock; struct list_head ctrls; struct list_head ctrl_refs; struct v4l2_ctrl_ref *cached; struct v4l2_ctrl_ref **buckets; v4l2_ctrl_notify_fnc notify; void *notify_priv; u16 nr_of_buckets; int error; bool request_is_queued; struct list_head requests; struct list_head requests_queued; struct media_request_object req_obj; }; ”h]”(hï)�”}”(hŒ**Definition**::”h]”(j¹)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj/ubhŒ:”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M€hj/ubj§)�”}”(hXÓstruct v4l2_ctrl_handler { struct mutex _lock; struct mutex *lock; struct list_head ctrls; struct list_head ctrl_refs; struct v4l2_ctrl_ref *cached; struct v4l2_ctrl_ref **buckets; v4l2_ctrl_notify_fnc notify; void *notify_priv; u16 nr_of_buckets; int error; bool request_is_queued; struct list_head requests; struct list_head requests_queued; struct media_request_object req_obj; };”h]”hXÓstruct v4l2_ctrl_handler { struct mutex _lock; struct mutex *lock; struct list_head ctrls; struct list_head ctrl_refs; struct v4l2_ctrl_ref *cached; struct v4l2_ctrl_ref **buckets; v4l2_ctrl_notify_fnc notify; void *notify_priv; u16 nr_of_buckets; int error; bool request_is_queued; struct list_head requests; struct list_head requests_queued; struct media_request_object req_obj; };”…”�”}”hj9/sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¦h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‚hj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³j8/h´M€hj/ubhï)�”}”(hŒ **Members**”h]”j¹)�”}”(hjP/h]”hŒMembers”…”�”}”(hjR/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjN/ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M“hj/ubj)�”}”(hhh]”(j)�”}”(hŒ``_lock`` Default for "lock". ”h]”(j )�”}”(hŒ ``_lock``”h]”j½)�”}”(hjo/h]”hŒ_lock”…”�”}”(hjq/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjm/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hji/ubj&)�”}”(hhh]”hï)�”}”(hŒDefault for "lock".”h]”hŒDefault for “lockâ€�.”…”�”}”(hjˆ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j„/h´M�hj…/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hji/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„/h´M�hjf/ubj)�”}”(hŒp``lock`` Lock to control access to this handler and its controls. May be replaced by the user right after init. ”h]”(j )�”}”(hŒ``lock``”h]”j½)�”}”(hj¨/h]”hŒlock”…”�”}”(hjª/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mƒhj¢/ubj&)�”}”(hhh]”hï)�”}”(hŒfLock to control access to this handler and its controls. May be replaced by the user right after init.”h]”hŒfLock to control access to this handler and its controls. May be replaced by the user right after init.”…”�”}”(hjÁ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‚hj¾/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½/h´Mƒhjf/ubj)�”}”(hŒ6``ctrls`` The list of controls owned by this handler. ”h]”(j )�”}”(hŒ ``ctrls``”h]”j½)�”}”(hjâ/h]”hŒctrls”…”�”}”(hjä/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjà/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M„hjÜ/ubj&)�”}”(hhh]”hï)�”}”(hŒ+The list of controls owned by this handler.”h]”hŒ+The list of controls owned by this handler.”…”�”}”(hjû/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j÷/h´M„hjø/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÜ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j÷/h´M„hjf/ubj)�”}”(hŒ.``ctrl_refs`` The list of control references. ”h]”(j )�”}”(hŒ ``ctrl_refs``”h]”j½)�”}”(hj0h]”hŒ ctrl_refs”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M…hj0ubj&)�”}”(hhh]”hï)�”}”(hŒThe list of control references.”h]”hŒThe list of control references.”…”�”}”(hj40h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j00h´M…hj10ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j00h´M…hjf/ubj)�”}”(hŒŒ``cached`` The last found control reference. It is common that the same control is needed multiple times, so this is a simple optimization. ”h]”(j )�”}”(hŒ ``cached``”h]”j½)�”}”(hjT0h]”hŒcached”…”�”}”(hjV0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjR0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MˆhjN0ubj&)�”}”(hhh]”hï)�”}”(hŒ€The last found control reference. It is common that the same control is needed multiple times, so this is a simple optimization.”h]”hŒ€The last found control reference. It is common that the same control is needed multiple times, so this is a simple optimization.”…”�”}”(hjm0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M†hjj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjN0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ji0h´Mˆhjf/ubj)�”}”(hŒF``buckets`` Buckets for the hashing. Allows for quick control lookup. ”h]”(j )�”}”(hŒ ``buckets``”h]”j½)�”}”(hjŽ0h]”hŒbuckets”…”�”}”(hj�0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŒ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‰hjˆ0ubj&)�”}”(hhh]”hï)�”}”(hŒ9Buckets for the hashing. Allows for quick control lookup.”h]”hŒ9Buckets for the hashing. Allows for quick control lookup.”…”�”}”(hj§0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j£0h´M‰hj¤0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjˆ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j£0h´M‰hjf/ubj)�”}”(hŒ™``notify`` A notify callback that is called whenever the control changes value. Note that the handler's lock is held when the notify function is called! ”h]”(j )�”}”(hŒ ``notify``”h]”j½)�”}”(hjÇ0h]”hŒnotify”…”�”}”(hjÉ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÅ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjÁ0ubj&)�”}”(hhh]”hï)�”}”(hŒ�A notify callback that is called whenever the control changes value. Note that the handler's lock is held when the notify function is called!”h]”hŒ�A notify callback that is called whenever the control changes value. Note that the handler’s lock is held when the notify function is called!”…”�”}”(hjà0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŠhjÝ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÁ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÜ0h´M�hjf/ubj)�”}”(hŒE``notify_priv`` Passed as argument to the v4l2_ctrl notify callback. ”h]”(j )�”}”(hŒ``notify_priv``”h]”j½)�”}”(hj1h]”hŒ notify_priv”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÿ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŽhjû0ubj&)�”}”(hhh]”hï)�”}”(hŒ4Passed as argument to the v4l2_ctrl notify callback.”h]”hŒ4Passed as argument to the v4l2_ctrl notify callback.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j1h´MŽhj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjû0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j1h´MŽhjf/ubj)�”}”(hŒ8``nr_of_buckets`` Total number of buckets in the array. ”h]”(j )�”}”(hŒ``nr_of_buckets``”h]”j½)�”}”(hj:1h]”hŒ nr_of_buckets”…”�”}”(hj<1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj81ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hj41ubj&)�”}”(hhh]”hï)�”}”(hŒ%Total number of buckets in the array.”h]”hŒ%Total number of buckets in the array.”…”�”}”(hjS1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jO1h´M�hjP1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj41ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jO1h´M�hjf/ubj)�”}”(hŒ?``error`` The error code of the first failed control addition. ”h]”(j )�”}”(hŒ ``error``”h]”j½)�”}”(hjs1h]”hŒerror”…”�”}”(hju1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjq1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjm1ubj&)�”}”(hhh]”hï)�”}”(hŒ4The error code of the first failed control addition.”h]”hŒ4The error code of the first failed control addition.”…”�”}”(hjŒ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jˆ1h´M�hj‰1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjm1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jˆ1h´M�hjf/ubj)�”}”(hŒ6``request_is_queued`` True if the request was queued. ”h]”(j )�”}”(hŒ``request_is_queued``”h]”j½)�”}”(hj¬1h]”hŒrequest_is_queued”…”�”}”(hj®1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‘hj¦1ubj&)�”}”(hhh]”hï)�”}”(hŒTrue if the request was queued.”h]”hŒTrue if the request was queued.”…”�”}”(hjÅ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÁ1h´M‘hjÂ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¦1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÁ1h´M‘hjf/ubj)�”}”(hX``requests`` List to keep track of open control handler request objects. For the parent control handler (**req_obj.ops** == NULL) this is the list header. When the parent control handler is removed, it has to unbind and put all these requests since they refer to the parent. ”h]”(j )�”}”(hŒ ``requests``”h]”j½)�”}”(hjå1h]”hŒrequests”…”�”}”(hjç1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjã1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M–hjß1ubj&)�”}”(hhh]”hï)�”}”(hXList to keep track of open control handler request objects. For the parent control handler (**req_obj.ops** == NULL) this is the list header. When the parent control handler is removed, it has to unbind and put all these requests since they refer to the parent.”h]”(hŒ\List to keep track of open control handler request objects. For the parent control handler (”…”�”}”(hjþ1h²hh³Nh´Nubj¹)�”}”(hŒ**req_obj.ops**”h]”hŒ req_obj.ops”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjþ1ubhŒš == NULL) this is the list header. When the parent control handler is removed, it has to unbind and put all these requests since they refer to the parent.”…”�”}”(hjþ1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M’hjû1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjß1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jú1h´M–hjf/ubj)�”}”(hŒ¬``requests_queued`` List of the queued requests. This determines the order in which these controls are applied. Once the request is completed it is removed from this list. ”h]”(j )�”}”(hŒ``requests_queued``”h]”j½)�”}”(hj12h]”hŒrequests_queued”…”�”}”(hj32h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj/2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M™hj+2ubj&)�”}”(hhh]”hï)�”}”(hŒ—List of the queued requests. This determines the order in which these controls are applied. Once the request is completed it is removed from this list.”h]”hŒ—List of the queued requests. This determines the order in which these controls are applied. Once the request is completed it is removed from this list.”…”�”}”(hjJ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M—hjG2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj+2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jF2h´M™hjf/ubj)�”}”(hŒµ``req_obj`` The :c:type:`struct media_request_object `, used to link into a :c:type:`struct media_request `. This request object has a refcount.”h]”(j )�”}”(hŒ ``req_obj``”h]”j½)�”}”(hjk2h]”hŒreq_obj”…”�”}”(hjm2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hji2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mšhje2ubj&)�”}”(hhh]”hï)�”}”(hŒ©The :c:type:`struct media_request_object `, used to link into a :c:type:`struct media_request `. This request object has a refcount.”h]”(hŒThe ”…”�”}”(hj„2h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct media_request_object `”h]”j½)�”}”(hjŽ2h]”hŒstruct media_request_object”…”�”}”(hj�2h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjŒ2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒmedia_request_object”uh1hh³j€2h´Mšhj„2ubhŒ, used to link into a ”…”�”}”(hj„2h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct media_request `”h]”j½)�”}”(hj±2h]”hŒstruct media_request”…”�”}”(hj³2h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj¯2ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ media_request”uh1hh³j€2h´Mšhj„2ubhŒ%. This request object has a refcount.”…”�”}”(hj„2h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j€2h´Mšhj�2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hje2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j€2h´Mšhjf/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj/ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_config (C struct)”Œc.v4l2_ctrl_config”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒv4l2_ctrl_config”h]”j')�”}”(hŒstruct v4l2_ctrl_config”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj 3h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj3h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj3h²hh³j3h´M¡ubjP)�”}”(hŒv4l2_ctrl_config”h]”jV)�”}”(hj3h]”hŒv4l2_ctrl_config”…”�”}”(hj*3h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj&3ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj3h²hh³j3h´M¡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj3h²hh³j3h´M¡ubah}”(h]”jý2ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j3h´M¡hjÿ2h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ Control configuration structure.”h]”hŒ Control configuration structure.”…”�”}”(hjL3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M®hjI3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ2h²hh³j3h´M¡ubeh}”(h]”h ]”(jÉŒstruct”eh"]”h$]”h&]”j¢jÉj£jd3j¤jd3j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXx **Definition**:: struct v4l2_ctrl_config { const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 min; s64 max; u64 step; s64 def; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 elem_size; u32 flags; u64 menu_skip_mask; const char * const *qmenu; const s64 *qmenu_int; unsigned int is_private:1; }; **Members** ``ops`` The control ops. ``type_ops`` The control type ops. Only needed for compound controls. ``id`` The control ID. ``name`` The control name. ``type`` The control type. ``min`` The control's minimum value. ``max`` The control's maximum value. ``step`` The control's step value for non-menu controls. ``def`` The control's default value. ``p_def`` The control's default value for compound controls. ``p_min`` The control's minimum value for compound controls. ``p_max`` The control's maximum value for compound controls. ``dims`` The size of each dimension. ``elem_size`` The size in bytes of the control. ``flags`` The control's flags. ``menu_skip_mask`` The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array. ``qmenu`` A const char * array for all menu items. Array entries that are empty strings ("") correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL. ``qmenu_int`` A const s64 integer array for all menu items of the type V4L2_CTRL_TYPE_INTEGER_MENU. ``is_private`` If set, then this control is private to its handler and it will not be added to any other handlers.”h]”(j¯)�”}”(hXY**Definition**:: struct v4l2_ctrl_config { const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 min; s64 max; u64 step; s64 def; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 elem_size; u32 flags; u64 menu_skip_mask; const char * const *qmenu; const s64 *qmenu_int; unsigned int is_private:1; }; ”h]”(hï)�”}”(hŒ**Definition**::”h]”(j¹)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjt3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjp3ubhŒ:”…”�”}”(hjp3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M²hjl3ubj§)�”}”(hXstruct v4l2_ctrl_config { const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 min; s64 max; u64 step; s64 def; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 elem_size; u32 flags; u64 menu_skip_mask; const char * const *qmenu; const s64 *qmenu_int; unsigned int is_private:1; };”h]”hXstruct v4l2_ctrl_config { const struct v4l2_ctrl_ops *ops; const struct v4l2_ctrl_type_ops *type_ops; u32 id; const char *name; enum v4l2_ctrl_type type; s64 min; s64 max; u64 step; s64 def; union v4l2_ctrl_ptr p_def; union v4l2_ctrl_ptr p_min; union v4l2_ctrl_ptr p_max; u32 dims[V4L2_CTRL_MAX_DIMS]; u32 elem_size; u32 flags; u64 menu_skip_mask; const char * const *qmenu; const s64 *qmenu_int; unsigned int is_private:1; };”…”�”}”hj�3sbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¦h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M´hjl3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j®h³jŒ3h´M²hjh3ubhï)�”}”(hŒ **Members**”h]”j¹)�”}”(hj¤3h]”hŒMembers”…”�”}”(hj¦3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¢3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÊhjh3ubj)�”}”(hhh]”(j)�”}”(hŒ``ops`` The control ops. ”h]”(j )�”}”(hŒ``ops``”h]”j½)�”}”(hjÃ3h]”hŒops”…”�”}”(hjÅ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÁ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M±hj½3ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ops.”h]”hŒThe control ops.”…”�”}”(hjÜ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jØ3h´M±hjÙ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj½3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jØ3h´M±hjº3ubj)�”}”(hŒF``type_ops`` The control type ops. Only needed for compound controls. ”h]”(j )�”}”(hŒ ``type_ops``”h]”j½)�”}”(hjü3h]”hŒtype_ops”…”�”}”(hjþ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjú3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M²hjö3ubj&)�”}”(hhh]”hï)�”}”(hŒ8The control type ops. Only needed for compound controls.”h]”hŒ8The control type ops. Only needed for compound controls.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j4h´M²hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjö3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j4h´M²hjº3ubj)�”}”(hŒ``id`` The control ID. ”h]”(j )�”}”(hŒ``id``”h]”j½)�”}”(hj54h]”hŒid”…”�”}”(hj74h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj34ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M³hj/4ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hjN4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jJ4h´M³hjK4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj/4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jJ4h´M³hjº3ubj)�”}”(hŒ``name`` The control name. ”h]”(j )�”}”(hŒ``name``”h]”j½)�”}”(hjn4h]”hŒname”…”�”}”(hjp4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjl4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M´hjh4ubj&)�”}”(hhh]”hï)�”}”(hŒThe control name.”h]”hŒThe control name.”…”�”}”(hj‡4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jƒ4h´M´hj„4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjh4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jƒ4h´M´hjº3ubj)�”}”(hŒ``type`` The control type. ”h]”(j )�”}”(hŒ``type``”h]”j½)�”}”(hj§4h]”hŒtype”…”�”}”(hj©4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¥4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mµhj¡4ubj&)�”}”(hhh]”hï)�”}”(hŒThe control type.”h]”hŒThe control type.”…”�”}”(hjÀ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¼4h´Mµhj½4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¼4h´Mµhjº3ubj)�”}”(hŒ%``min`` The control's minimum value. ”h]”(j )�”}”(hŒ``min``”h]”j½)�”}”(hjà4h]”hŒmin”…”�”}”(hjâ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÞ4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¶hjÚ4ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's minimum value.”h]”hŒThe control’s minimum value.”…”�”}”(hjù4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jõ4h´M¶hjö4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÚ4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõ4h´M¶hjº3ubj)�”}”(hŒ%``max`` The control's maximum value. ”h]”(j )�”}”(hŒ``max``”h]”j½)�”}”(hj5h]”hŒmax”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M·hj5ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's maximum value.”h]”hŒThe control’s maximum value.”…”�”}”(hj25h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j.5h´M·hj/5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j.5h´M·hjº3ubj)�”}”(hŒ9``step`` The control's step value for non-menu controls. ”h]”(j )�”}”(hŒ``step``”h]”j½)�”}”(hjR5h]”hŒstep”…”�”}”(hjT5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjP5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¸hjL5ubj&)�”}”(hhh]”hï)�”}”(hŒ/The control's step value for non-menu controls.”h]”hŒ1The control’s step value for non-menu controls.”…”�”}”(hjk5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jg5h´M¸hjh5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjL5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jg5h´M¸hjº3ubj)�”}”(hŒ%``def`` The control's default value. ”h]”(j )�”}”(hŒ``def``”h]”j½)�”}”(hj‹5h]”hŒdef”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‰5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¹hj…5ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hj¤5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j 5h´M¹hj¡5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj…5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j 5h´M¹hjº3ubj)�”}”(hŒ=``p_def`` The control's default value for compound controls. ”h]”(j )�”}”(hŒ ``p_def``”h]”j½)�”}”(hjÄ5h]”hŒp_def”…”�”}”(hjÆ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÂ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mºhj¾5ubj&)�”}”(hhh]”hï)�”}”(hŒ2The control's default value for compound controls.”h]”hŒ4The control’s default value for compound controls.”…”�”}”(hjÝ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÙ5h´MºhjÚ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¾5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÙ5h´Mºhjº3ubj)�”}”(hŒ=``p_min`` The control's minimum value for compound controls. ”h]”(j )�”}”(hŒ ``p_min``”h]”j½)�”}”(hjý5h]”hŒp_min”…”�”}”(hjÿ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjû5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M»hj÷5ubj&)�”}”(hhh]”hï)�”}”(hŒ2The control's minimum value for compound controls.”h]”hŒ4The control’s minimum value for compound controls.”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j6h´M»hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj÷5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j6h´M»hjº3ubj)�”}”(hŒ=``p_max`` The control's maximum value for compound controls. ”h]”(j )�”}”(hŒ ``p_max``”h]”j½)�”}”(hj66h]”hŒp_max”…”�”}”(hj86h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj46ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¼hj06ubj&)�”}”(hhh]”hï)�”}”(hŒ2The control's maximum value for compound controls.”h]”hŒ4The control’s maximum value for compound controls.”…”�”}”(hjO6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jK6h´M¼hjL6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj06ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jK6h´M¼hjº3ubj)�”}”(hŒ%``dims`` The size of each dimension. ”h]”(j )�”}”(hŒ``dims``”h]”j½)�”}”(hjo6h]”hŒdims”…”�”}”(hjq6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjm6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M½hji6ubj&)�”}”(hhh]”hï)�”}”(hŒThe size of each dimension.”h]”hŒThe size of each dimension.”…”�”}”(hjˆ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j„6h´M½hj…6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hji6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„6h´M½hjº3ubj)�”}”(hŒ0``elem_size`` The size in bytes of the control. ”h]”(j )�”}”(hŒ ``elem_size``”h]”j½)�”}”(hj¨6h]”hŒ elem_size”…”�”}”(hjª6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¾hj¢6ubj&)�”}”(hhh]”hï)�”}”(hŒ!The size in bytes of the control.”h]”hŒ!The size in bytes of the control.”…”�”}”(hjÁ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j½6h´M¾hj¾6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½6h´M¾hjº3ubj)�”}”(hŒ``flags`` The control's flags. ”h]”(j )�”}”(hŒ ``flags``”h]”j½)�”}”(hjá6h]”hŒflags”…”�”}”(hjã6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjß6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¿hjÛ6ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's flags.”h]”hŒThe control’s flags.”…”�”}”(hjú6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jö6h´M¿hj÷6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jö6h´M¿hjº3ubj)�”}”(hXq``menu_skip_mask`` The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array. ”h]”(j )�”}”(hŒ``menu_skip_mask``”h]”j½)�”}”(hj7h]”hŒmenu_skip_mask”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÅhj7ubj&)�”}”(hhh]”hï)�”}”(hX]The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array.”h]”hX_The control’s skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array.”…”�”}”(hj37h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÀhj07ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j/7h´MÅhjº3ubj)�”}”(hŒÓ``qmenu`` A const char * array for all menu items. Array entries that are empty strings ("") correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL. ”h]”(j )�”}”(hŒ ``qmenu``”h]”j½)�”}”(hjT7h]”hŒqmenu”…”�”}”(hjV7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjR7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÉhjN7ubj&)�”}”(hhh]”hï)�”}”(hŒÈA const char * array for all menu items. Array entries that are empty strings ("") correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL.”h]”hŒÌA const char * array for all menu items. Array entries that are empty strings (“â€�) correspond to non-existing menu items (this is in addition to the menu_skip_mask above). The last entry must be NULL.”…”�”}”(hjm7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÆhjj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjN7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³ji7h´MÉhjº3ubj)�”}”(hŒd``qmenu_int`` A const s64 integer array for all menu items of the type V4L2_CTRL_TYPE_INTEGER_MENU. ”h]”(j )�”}”(hŒ ``qmenu_int``”h]”j½)�”}”(hjŽ7h]”hŒ qmenu_int”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŒ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MËhjˆ7ubj&)�”}”(hhh]”hï)�”}”(hŒUA const s64 integer array for all menu items of the type V4L2_CTRL_TYPE_INTEGER_MENU.”h]”hŒUA const s64 integer array for all menu items of the type V4L2_CTRL_TYPE_INTEGER_MENU.”…”�”}”(hj§7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÊhj¤7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjˆ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j£7h´MËhjº3ubj)�”}”(hŒr``is_private`` If set, then this control is private to its handler and it will not be added to any other handlers.”h]”(j )�”}”(hŒ``is_private``”h]”j½)�”}”(hjÈ7h]”hŒ is_private”…”�”}”(hjÊ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÆ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”•h´MÌhjÂ7ubj&)�”}”(hhh]”hï)�”}”(hŒcIf set, then this control is private to its handler and it will not be added to any other handlers.”h]”hŒcIf set, then this control is private to its handler and it will not be added to any other handlers.”…”�”}”(hjá7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÝ7h´MÌhjÞ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÝ7h´MÌhjº3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjh3ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_fill (C function)”Œc.v4l2_ctrl_fill”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒvoid v4l2_ctrl_fill (u32 id, const char **name, enum v4l2_ctrl_type *type, s64 *min, s64 *max, u64 *step, s64 *def, u32 *flags)”h]”j')�”}”(hŒ~void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, s64 *min, s64 *max, u64 *step, s64 *def, u32 *flags)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj!8h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj8h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Måubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj08h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj8h²hh³j/8h´MåubjP)�”}”(hŒv4l2_ctrl_fill”h]”jV)�”}”(hŒv4l2_ctrl_fill”h]”hŒv4l2_ctrl_fill”…”�”}”(hjB8h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj>8ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj8h²hh³j/8h´MåubjÀ)�”}”(hŒk(u32 id, const char **name, enum v4l2_ctrl_type *type, s64 *min, s64 *max, u64 *step, s64 *def, u32 *flags)”h]”(jÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hja8h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj^8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jc8Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jD8sbŒc.v4l2_ctrl_fill”†”asbuh1hhjZ8ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZ8ubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hj�8h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjZ8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubjÆ)�”}”(hŒconst char **name”h]”(j-)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj¨8h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¤8ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶8h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¤8ubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjÄ8h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj¤8ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒ8h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¤8ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjà8h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¤8ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjí8h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¤8ubjV)�”}”(hŒname”h]”hŒname”…”�”}”(hjú8h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¤8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubjÆ)�”}”(hŒenum v4l2_ctrl_type *type”h]”(j-)�”}”(hŒenum”h]”hŒenum”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj9ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_type”h]”hŒv4l2_ctrl_type”…”�”}”(hj29h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj/9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j49Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j}8Œc.v4l2_ctrl_fill”†”asbuh1hhj9ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj^9h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj9ubjV)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjk9h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubjÆ)�”}”(hŒs64 *min”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj‡9h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj„9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j‰9Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j}8Œc.v4l2_ctrl_fill”†”asbuh1hhj€9ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€9ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj³9h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj€9ubjV)�”}”(hŒmin”h]”hŒmin”…”�”}”(hjÀ9h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj€9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubjÆ)�”}”(hŒs64 *max”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÜ9h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÙ9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÞ9Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j}8Œc.v4l2_ctrl_fill”†”asbuh1hhjÕ9ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú9h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÕ9ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÕ9ubjV)�”}”(hŒmax”h]”hŒmax”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÕ9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubjÆ)�”}”(hŒ u64 *step”h]”(h)�”}”(hhh]”jV)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj1:h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj.:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j3:Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j}8Œc.v4l2_ctrl_fill”†”asbuh1hhj*:ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjO:h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj*:ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj]:h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj*:ubjV)�”}”(hŒstep”h]”hŒstep”…”�”}”(hjj:h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj*:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubjÆ)�”}”(hŒs64 *def”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj†:h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjƒ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jˆ:Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j}8Œc.v4l2_ctrl_fill”†”asbuh1hhj:ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¤:h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj:ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj²:h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj:ubjV)�”}”(hŒdef”h]”hŒdef”…”�”}”(hj¿:h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubjÆ)�”}”(hŒ u32 *flags”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÛ:h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjØ:ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÝ:Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j}8Œc.v4l2_ctrl_fill”†”asbuh1hhjÔ:ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù:h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÔ:ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÔ:ubjV)�”}”(hŒflags”h]”hŒflags”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÔ:ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjV8ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj8h²hh³j/8h´Måubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj8h²hh³j/8h´Måubah}”(h]”j8ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j/8h´Måhj8h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ3Fill in the control fields based on the control ID.”h]”hŒ3Fill in the control fields based on the control ID.”…”�”}”(hj>;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Måhj;;h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj8h²hh³j/8h´Måubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jV;j¤jV;j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXa**Parameters** ``u32 id`` ID of the control ``const char **name`` pointer to be filled with a string with the name of the control ``enum v4l2_ctrl_type *type`` pointer for storing the type of the control ``s64 *min`` pointer for storing the minimum value for the control ``s64 *max`` pointer for storing the maximum value for the control ``u64 *step`` pointer for storing the control step ``s64 *def`` pointer for storing the default value for the control ``u32 *flags`` pointer for storing the flags to be used on the control **Description** This works for all standard V4L2 controls. For non-standard controls it will only fill in the given arguments and **name** content will be set to ``NULL``. This function will overwrite the contents of **name**, **type** and **flags**. The contents of **min**, **max**, **step** and **def** may be modified depending on the type. .. note:: Do not use in drivers! It is used internally for backwards compatibility control handling only. Once all drivers are converted to use the new control framework this function will no longer be exported.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj`;h]”hŒ Parameters”…”�”}”(hjb;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj^;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MéhjZ;ubj)�”}”(hhh]”(j)�”}”(hŒ``u32 id`` ID of the control ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hj;h]”hŒu32 id”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj};ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mçhjy;ubj&)�”}”(hhh]”hï)�”}”(hŒID of the control”h]”hŒID of the control”…”�”}”(hj˜;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j”;h´Mçhj•;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjy;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j”;h´Mçhjv;ubj)�”}”(hŒV``const char **name`` pointer to be filled with a string with the name of the control ”h]”(j )�”}”(hŒ``const char **name``”h]”j½)�”}”(hj¸;h]”hŒconst char **name”…”�”}”(hjº;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¶;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mèhj²;ubj&)�”}”(hhh]”hï)�”}”(hŒ?pointer to be filled with a string with the name of the control”h]”hŒ?pointer to be filled with a string with the name of the control”…”�”}”(hjÑ;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÍ;h´MèhjÎ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj²;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÍ;h´Mèhjv;ubj)�”}”(hŒJ``enum v4l2_ctrl_type *type`` pointer for storing the type of the control ”h]”(j )�”}”(hŒ``enum v4l2_ctrl_type *type``”h]”j½)�”}”(hjñ;h]”hŒenum v4l2_ctrl_type *type”…”�”}”(hjó;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjï;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Méhjë;ubj&)�”}”(hhh]”hï)�”}”(hŒ+pointer for storing the type of the control”h]”hŒ+pointer for storing the type of the control”…”�”}”(hj <h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j<h´Méhj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjë;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j<h´Méhjv;ubj)�”}”(hŒC``s64 *min`` pointer for storing the minimum value for the control ”h]”(j )�”}”(hŒ ``s64 *min``”h]”j½)�”}”(hj*<h]”hŒs64 *min”…”�”}”(hj,<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj(<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mêhj$<ubj&)�”}”(hhh]”hï)�”}”(hŒ5pointer for storing the minimum value for the control”h]”hŒ5pointer for storing the minimum value for the control”…”�”}”(hjC<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j?<h´Mêhj@<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj$<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j?<h´Mêhjv;ubj)�”}”(hŒC``s64 *max`` pointer for storing the maximum value for the control ”h]”(j )�”}”(hŒ ``s64 *max``”h]”j½)�”}”(hjc<h]”hŒs64 *max”…”�”}”(hje<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hja<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mëhj]<ubj&)�”}”(hhh]”hï)�”}”(hŒ5pointer for storing the maximum value for the control”h]”hŒ5pointer for storing the maximum value for the control”…”�”}”(hj|<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jx<h´Mëhjy<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj]<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jx<h´Mëhjv;ubj)�”}”(hŒ3``u64 *step`` pointer for storing the control step ”h]”(j )�”}”(hŒ ``u64 *step``”h]”j½)�”}”(hjœ<h]”hŒ u64 *step”…”�”}”(hjž<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjš<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mìhj–<ubj&)�”}”(hhh]”hï)�”}”(hŒ$pointer for storing the control step”h]”hŒ$pointer for storing the control step”…”�”}”(hjµ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j±<h´Mìhj²<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj–<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j±<h´Mìhjv;ubj)�”}”(hŒC``s64 *def`` pointer for storing the default value for the control ”h]”(j )�”}”(hŒ ``s64 *def``”h]”j½)�”}”(hjÕ<h]”hŒs64 *def”…”�”}”(hj×<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÓ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MíhjÏ<ubj&)�”}”(hhh]”hï)�”}”(hŒ5pointer for storing the default value for the control”h]”hŒ5pointer for storing the default value for the control”…”�”}”(hjî<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jê<h´Míhjë<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÏ<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jê<h´Míhjv;ubj)�”}”(hŒG``u32 *flags`` pointer for storing the flags to be used on the control ”h]”(j )�”}”(hŒ``u32 *flags``”h]”j½)�”}”(hj=h]”hŒ u32 *flags”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj =ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mîhj=ubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer for storing the flags to be used on the control”h]”hŒ7pointer for storing the flags to be used on the control”…”�”}”(hj'=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j#=h´Mîhj$=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j#=h´Mîhjv;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ;ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjI=h]”hŒ Description”…”�”}”(hjK=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjG=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MðhjZ;ubhï)�”}”(hŒ›This works for all standard V4L2 controls. For non-standard controls it will only fill in the given arguments and **name** content will be set to ``NULL``.”h]”(hŒrThis works for all standard V4L2 controls. For non-standard controls it will only fill in the given arguments and ”…”�”}”(hj_=h²hh³Nh´Nubj¹)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hjg=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj_=ubhŒ content will be set to ”…”�”}”(hj_=h²hh³Nh´Nubj½)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjy=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_=ubhŒ.”…”�”}”(hj_=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MïhjZ;ubhï)�”}”(hŒ¬This function will overwrite the contents of **name**, **type** and **flags**. The contents of **min**, **max**, **step** and **def** may be modified depending on the type.”h]”(hŒ-This function will overwrite the contents of ”…”�”}”(hj’=h²hh³Nh´Nubj¹)�”}”(hŒ**name**”h]”hŒname”…”�”}”(hjš=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj’=ubhŒ, ”…”�”}”(hj’=h²hh³Nh´Nubj¹)�”}”(hŒ**type**”h]”hŒtype”…”�”}”(hj¬=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj’=ubhŒ and ”…”�”}”(hj’=h²hh³Nh´Nubj¹)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hj¾=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj’=ubhŒ. The contents of ”…”�”}”(hj’=h²hh³Nh´Nubj¹)�”}”(hŒ**min**”h]”hŒmin”…”�”}”(hjÐ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj’=ubhŒ, ”…”�”}”hj’=sbj¹)�”}”(hŒ**max**”h]”hŒmax”…”�”}”(hjâ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj’=ubhŒ, ”…”�”}”hj’=sbj¹)�”}”(hŒ**step**”h]”hŒstep”…”�”}”(hjô=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj’=ubhŒ and ”…”�”}”hj’=sbj¹)�”}”(hŒ**def**”h]”hŒdef”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj’=ubhŒ' may be modified depending on the type.”…”�”}”(hj’=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MóhjZ;ubjX)�”}”(hŒÉDo not use in drivers! It is used internally for backwards compatibility control handling only. Once all drivers are converted to use the new control framework this function will no longer be exported.”h]”hï)�”}”(hŒÉDo not use in drivers! It is used internally for backwards compatibility control handling only. Once all drivers are converted to use the new control framework this function will no longer be exported.”h]”hŒÉDo not use in drivers! It is used internally for backwards compatibility control handling only. Once all drivers are converted to use the new control framework this function will no longer be exported.”…”�”}”(hj#>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mùhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jWhjZ;ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)v4l2_ctrl_handler_init_class (C function)”Œc.v4l2_ctrl_handler_init_class”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ�int v4l2_ctrl_handler_init_class (struct v4l2_ctrl_handler *hdl, unsigned int nr_of_controls_hint, struct lock_class_key *key, const char *name)”h]”j')�”}”(hŒ�int v4l2_ctrl_handler_init_class(struct v4l2_ctrl_handler *hdl, unsigned int nr_of_controls_hint, struct lock_class_key *key, const char *name)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjX>h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjT>h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg>h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjT>h²hh³jf>h´MubjP)�”}”(hŒv4l2_ctrl_handler_init_class”h]”jV)�”}”(hŒv4l2_ctrl_handler_init_class”h]”hŒv4l2_ctrl_handler_init_class”…”�”}”(hjy>h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhju>ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjT>h²hh³jf>h´MubjÀ)�”}”(hŒo(struct v4l2_ctrl_handler *hdl, unsigned int nr_of_controls_hint, struct lock_class_key *key, const char *name)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj•>h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj‘>ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢>h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‘>ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj³>h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj°>ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jµ>Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j{>sbŒc.v4l2_ctrl_handler_init_class”†”asbuh1hhj‘>ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓ>h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‘>ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjá>h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj‘>ubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjî>h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‘>ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�>ubjÆ)�”}”(hŒ unsigned int nr_of_controls_hint”h]”(jÌ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj?ubjÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj#?h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj?ubjV)�”}”(hŒnr_of_controls_hint”h]”hŒnr_of_controls_hint”…”�”}”(hj??h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�>ubjÆ)�”}”(hŒstruct lock_class_key *key”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjX?h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjT?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hje?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjT?ubh)�”}”(hhh]”jV)�”}”(hŒlock_class_key”h]”hŒlock_class_key”…”�”}”(hjv?h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjs?ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jx?Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jÏ>Œc.v4l2_ctrl_handler_init_class”†”asbuh1hhjT?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjT?ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¢?h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjT?ubjV)�”}”(hŒkey”h]”hŒkey”…”�”}”(hj¯?h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjT?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�>ubjÆ)�”}”(hŒconst char *name”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjÈ?h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÄ?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕ?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÄ?ubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjã?h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjÄ?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ?h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÄ?ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÿ?h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÄ?ubjV)�”}”(hŒname”h]”hŒname”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÄ?ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�>ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjT>h²hh³jf>h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjP>h²hh³jf>h´Mubah}”(h]”jK>ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jf>h´MhjM>h²hubj‚)�”}”(hhh]”hï)�”}”(hŒInitialize the control handler.”h]”hŒInitialize the control handler.”…”�”}”(hj6@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj3@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjM>h²hh³jf>h´Mubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jN@j¤jN@j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX¹**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``unsigned int nr_of_controls_hint`` A hint of how many controls this handler is expected to refer to. This is the total number, so including any inherited controls. It doesn't have to be precise, but if it is way off, then you either waste memory (too many buckets are allocated) or the control lookup becomes slower (not enough buckets are allocated, so there are more slow list lookups). It will always work, though. ``struct lock_class_key *key`` Used by the lock validator if CONFIG_LOCKDEP is set. ``const char *name`` Used by the lock validator if CONFIG_LOCKDEP is set. **Description** .. attention:: Never use this call directly, always use the v4l2_ctrl_handler_init() macro that hides the **key** and **name** arguments. **Return** returns an error if the buckets could not be allocated. This error will also be stored in **hdl->error**.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjX@h]”hŒ Parameters”…”�”}”(hjZ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjV@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjR@ubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjw@h]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjy@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hju@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjq@ubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jŒ@h´Mhj�@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjq@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŒ@h´Mhjn@ubj)�”}”(hX¤``unsigned int nr_of_controls_hint`` A hint of how many controls this handler is expected to refer to. This is the total number, so including any inherited controls. It doesn't have to be precise, but if it is way off, then you either waste memory (too many buckets are allocated) or the control lookup becomes slower (not enough buckets are allocated, so there are more slow list lookups). It will always work, though. ”h]”(j )�”}”(hŒ$``unsigned int nr_of_controls_hint``”h]”j½)�”}”(hj°@h]”hŒ unsigned int nr_of_controls_hint”…”�”}”(hj²@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj®@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjª@ubj&)�”}”(hhh]”hï)�”}”(hX~A hint of how many controls this handler is expected to refer to. This is the total number, so including any inherited controls. It doesn't have to be precise, but if it is way off, then you either waste memory (too many buckets are allocated) or the control lookup becomes slower (not enough buckets are allocated, so there are more slow list lookups). It will always work, though.”h]”hX€A hint of how many controls this handler is expected to refer to. This is the total number, so including any inherited controls. It doesn’t have to be precise, but if it is way off, then you either waste memory (too many buckets are allocated) or the control lookup becomes slower (not enough buckets are allocated, so there are more slow list lookups). It will always work, though.”…”�”}”(hjÉ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÆ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjª@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÅ@h´M hjn@ubj)�”}”(hŒT``struct lock_class_key *key`` Used by the lock validator if CONFIG_LOCKDEP is set. ”h]”(j )�”}”(hŒ``struct lock_class_key *key``”h]”j½)�”}”(hjê@h]”hŒstruct lock_class_key *key”…”�”}”(hjì@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjè@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjä@ubj&)�”}”(hhh]”hï)�”}”(hŒ4Used by the lock validator if CONFIG_LOCKDEP is set.”h]”hŒ4Used by the lock validator if CONFIG_LOCKDEP is set.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÿ@h´M hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjä@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÿ@h´M hjn@ubj)�”}”(hŒJ``const char *name`` Used by the lock validator if CONFIG_LOCKDEP is set. ”h]”(j )�”}”(hŒ``const char *name``”h]”j½)�”}”(hj#Ah]”hŒconst char *name”…”�”}”(hj%Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj!Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjAubj&)�”}”(hhh]”hï)�”}”(hŒ4Used by the lock validator if CONFIG_LOCKDEP is set.”h]”hŒ4Used by the lock validator if CONFIG_LOCKDEP is set.”…”�”}”(hjerror**.”h]”(hŒZreturns an error if the buckets could not be allocated. This error will also be stored in ”…”�”}”(hjËAh²hh³Nh´Nubj¹)�”}”(hŒ**hdl->error**”h]”hŒ hdl->error”…”�”}”(hjÓAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjËAubhŒ.”…”�”}”(hjËAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjR@ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ v4l2_ctrl_handler_init (C macro)”Œc.v4l2_ctrl_handler_init”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒv4l2_ctrl_handler_init”h]”j')�”}”(hŒv4l2_ctrl_handler_init”h]”jP)�”}”(hŒv4l2_ctrl_handler_init”h]”jV)�”}”(hjBh]”hŒv4l2_ctrl_handler_init”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj Bubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjBh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjBh²hh³j#Bh´Mubah}”(h]”jÿAah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j#Bh´MhjBh²hubj‚)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”uh1j�hjBh²hh³j#Bh´Mubeh}”(h]”h ]”(jÉŒmacro”eh"]”h$]”h&]”j¢jÉj£jhj¡Ch²hh³j³Ch´MAubjP)�”}”(hŒv4l2_ctrl_handler_free”h]”jV)�”}”(hŒv4l2_ctrl_handler_free”h]”hŒv4l2_ctrl_handler_free”…”�”}”(hjÆCh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÂCubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj¡Ch²hh³j³Ch´MAubjÀ)�”}”(hŒ(struct v4l2_ctrl_handler *hdl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjâCh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÞCubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïCh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÞCubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjýCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jDŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jÈCsbŒc.v4l2_ctrl_handler_free”†”asbuh1hhjÞCubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÞCubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj.Dh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÞCubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hj;Dh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÞCubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÚCubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj¡Ch²hh³j³Ch´MAubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj�Ch²hh³j³Ch´MAubah}”(h]”j˜Cah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j³Ch´MAhjšCh²hubj‚)�”}”(hhh]”hï)�”}”(hŒAFree all controls owned by the handler and free the control list.”h]”hŒAFree all controls owned by the handler and free the control list.”…”�”}”(hjeDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MAhjbDh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjšCh²hh³j³Ch´MAubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j}Dj¤j}Dj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒ·**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. **Description** Does nothing if **hdl** == NULL. **Return** **hdl**'s error field or 0 if **hdl** is NULL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj‡Dh]”hŒ Parameters”…”�”}”(hj‰Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj…Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MEhj�Dubj)�”}”(hhh]”j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj¦Dh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj¨Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¤Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MChj Dubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hj¿Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j»Dh´MChj¼Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j»Dh´MChj�Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Dubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjáDh]”hŒ Description”…”�”}”(hjãDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjßDubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MEhj�Dubhï)�”}”(hŒ Does nothing if **hdl** == NULL.”h]”(hŒDoes nothing if ”…”�”}”(hj÷Dh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hjÿDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj÷DubhŒ == NULL.”…”�”}”(hj÷Dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MDhj�Dubhï)�”}”(hŒ **Return**”h]”j¹)�”}”(hjEh]”hŒReturn”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjEubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MFhj�Dubhï)�”}”(hŒ.**hdl**'s error field or 0 if **hdl** is NULL.”h]”(j¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hj4Eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj0EubhŒ’s error field or 0 if ”…”�”}”(hj0Eh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hjFEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj0EubhŒ is NULL.”…”�”}”(hj0Eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MGhj�Dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_lock (C function)”Œc.v4l2_ctrl_lock”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ,void v4l2_ctrl_lock (struct v4l2_ctrl *ctrl)”h]”j')�”}”(hŒ+void v4l2_ctrl_lock(struct v4l2_ctrl *ctrl)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj{Eh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MLubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽEh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj{Eh²hh³j�Eh´MLubjP)�”}”(hŒv4l2_ctrl_lock”h]”jV)�”}”(hŒv4l2_ctrl_lock”h]”hŒv4l2_ctrl_lock”…”�”}”(hj Eh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjœEubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj{Eh²hh³j�Eh´MLubjÀ)�”}”(hŒ(struct v4l2_ctrl *ctrl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¼Eh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¸Eubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÉEh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¸Eubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjÚEh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj×Eubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÜEŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j¢EsbŒc.v4l2_ctrl_lock”†”asbuh1hhj¸Eubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúEh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¸Eubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¸EubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¸Eubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj´Eubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj{Eh²hh³j�Eh´MLubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjwEh²hh³j�Eh´MLubah}”(h]”jrEah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j�Eh´MLhjtEh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ@Helper function to lock the handler associated with the control.”h]”hŒ@Helper function to lock the handler associated with the control.”…”�”}”(hj?Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MLhjhjÖFh²hh³jèFh´MVubjP)�”}”(hŒv4l2_ctrl_unlock”h]”jV)�”}”(hŒv4l2_ctrl_unlock”h]”hŒv4l2_ctrl_unlock”…”�”}”(hjûFh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj÷Fubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÖFh²hh³jèFh´MVubjÀ)�”}”(hŒ(struct v4l2_ctrl *ctrl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjGubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$Gh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjGubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj5Gh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj2Gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j7GŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jýFsbŒc.v4l2_ctrl_unlock”†”asbuh1hhjGubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUGh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjGubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjcGh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjGubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjpGh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjGubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÖFh²hh³jèFh´MVubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjÒFh²hh³jèFh´MVubah}”(h]”jÍFah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jèFh´MVhjÏFh²hubj‚)�”}”(hhh]”hï)�”}”(hŒBHelper function to unlock the handler associated with the control.”h]”hŒBHelper function to unlock the handler associated with the control.”…”�”}”(hjšGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MVhj—Gh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÏFh²hh³jèFh´MVubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j²Gj¤j²Gj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒC**Parameters** ``struct v4l2_ctrl *ctrl`` The control to unlock.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¼Gh]”hŒ Parameters”…”�”}”(hj¾Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjºGubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MZhj¶Gubj)�”}”(hhh]”j)�”}”(hŒ1``struct v4l2_ctrl *ctrl`` The control to unlock.”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjÛGh]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjÝGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÙGubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M\hjÕGubj&)�”}”(hhh]”hï)�”}”(hŒThe control to unlock.”h]”hŒThe control to unlock.”…”�”}”(hjôGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MXhjñGubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÕGubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jðGh´M\hjÒGubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶Gubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&__v4l2_ctrl_handler_setup (C function)”Œc.__v4l2_ctrl_handler_setup”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ=int __v4l2_ctrl_handler_setup (struct v4l2_ctrl_handler *hdl)”h]”j')�”}”(hŒhj1Hh²hh³jCHh´M`ubjP)�”}”(hŒ__v4l2_ctrl_handler_setup”h]”jV)�”}”(hŒ__v4l2_ctrl_handler_setup”h]”hŒ__v4l2_ctrl_handler_setup”…”�”}”(hjVHh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjRHubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj1Hh²hh³jCHh´M`ubjÀ)�”}”(hŒ(struct v4l2_ctrl_handler *hdl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjrHh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjnHubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjnHubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj�Hh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�Hubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j’HŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jXHsbŒc.__v4l2_ctrl_handler_setup”†”asbuh1hhjnHubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°Hh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjnHubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¾Hh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjnHubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjËHh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjnHubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjjHubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj1Hh²hh³jCHh´M`ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj-Hh²hh³jCHh´M`ubah}”(h]”j(Hah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jCHh´M`hj*Hh²hubj‚)�”}”(hhh]”hï)�”}”(hŒâCall the s_ctrl op for all controls belonging to the handler to initialize the hardware to the current control values. The caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_handler_setup().”h]”hŒâCall the s_ctrl op for all controls belonging to the handler to initialize the hardware to the current control values. The caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_handler_setup().”…”�”}”(hjõHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M`hjòHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj*Hh²hh³jCHh´M`ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j Ij¤j Ij¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒÅ**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. **Description** Button controls will be skipped, as are read-only controls. If **hdl** == NULL, then this just returns 0.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjIh]”hŒ Parameters”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MdhjIubj)�”}”(hhh]”j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj6Ih]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj8Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj4Iubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mdhj0Iubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjOIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jKIh´MdhjLIubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj0Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jKIh´Mdhj-Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjqIh]”hŒ Description”…”�”}”(hjsIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjoIubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MfhjIubhï)�”}”(hŒ;Button controls will be skipped, as are read-only controls.”h]”hŒ;Button controls will be skipped, as are read-only controls.”…”�”}”(hj‡Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MehjIubhï)�”}”(hŒ-If **hdl** == NULL, then this just returns 0.”h]”(hŒIf ”…”�”}”(hj–Ih²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hjžIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj–IubhŒ# == NULL, then this just returns 0.”…”�”}”(hj–Ih²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MghjIubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$v4l2_ctrl_handler_setup (C function)”Œc.v4l2_ctrl_handler_setup”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ;int v4l2_ctrl_handler_setup (struct v4l2_ctrl_handler *hdl)”h]”j')�”}”(hŒ:int v4l2_ctrl_handler_setup(struct v4l2_ctrl_handler *hdl)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj×Ih²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjÓIh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mmubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæIh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÓIh²hh³jåIh´MmubjP)�”}”(hŒv4l2_ctrl_handler_setup”h]”jV)�”}”(hŒv4l2_ctrl_handler_setup”h]”hŒv4l2_ctrl_handler_setup”…”�”}”(hjøIh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjôIubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÓIh²hh³jåIh´MmubjÀ)�”}”(hŒ(struct v4l2_ctrl_handler *hdl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjJubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Jh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjJubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj2Jh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj/Jubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j4JŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡júIsbŒc.v4l2_ctrl_handler_setup”†”asbuh1hhjJubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRJh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjJubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj`Jh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjJubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjmJh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjJubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj Jubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÓIh²hh³jåIh´Mmubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjÏIh²hh³jåIh´Mmubah}”(h]”jÊIah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jåIh´MmhjÌIh²hubj‚)�”}”(hhh]”hï)�”}”(hŒvCall the s_ctrl op for all controls belonging to the handler to initialize the hardware to the current control values.”h]”hŒvCall the s_ctrl op for all controls belonging to the handler to initialize the hardware to the current control values.”…”�”}”(hj—Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mmhj”Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌIh²hh³jåIh´Mmubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j¯Jj¤j¯Jj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒÅ**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. **Description** Button controls will be skipped, as are read-only controls. If **hdl** == NULL, then this just returns 0.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¹Jh]”hŒ Parameters”…”�”}”(hj»Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj·Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mqhj³Jubj)�”}”(hhh]”j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjØJh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjÚJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÖJubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MohjÒJubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjñJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jíJh´MohjîJubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÒJubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jíJh´MohjÏJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³Jubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjKh]”hŒ Description”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mqhj³Jubhï)�”}”(hŒ;Button controls will be skipped, as are read-only controls.”h]”hŒ;Button controls will be skipped, as are read-only controls.”…”�”}”(hj)Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mphj³Jubhï)�”}”(hŒ-If **hdl** == NULL, then this just returns 0.”h]”(hŒIf ”…”�”}”(hj8Kh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hj@Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj8KubhŒ# == NULL, then this just returns 0.”…”�”}”(hj8Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mrhj³Jubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ)v4l2_ctrl_handler_log_status (C function)”Œc.v4l2_ctrl_handler_log_status”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒUvoid v4l2_ctrl_handler_log_status (struct v4l2_ctrl_handler *hdl, const char *prefix)”h]”j')�”}”(hŒTvoid v4l2_ctrl_handler_log_status(struct v4l2_ctrl_handler *hdl, const char *prefix)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjyKh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjuKh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mxubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆKh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjuKh²hh³j‡Kh´MxubjP)�”}”(hŒv4l2_ctrl_handler_log_status”h]”jV)�”}”(hŒv4l2_ctrl_handler_log_status”h]”hŒv4l2_ctrl_handler_log_status”…”�”}”(hjšKh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj–Kubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjuKh²hh³j‡Kh´MxubjÀ)�”}”(hŒ3(struct v4l2_ctrl_handler *hdl, const char *prefix)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¶Kh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj²Kubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÃKh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj²Kubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjÔKh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÑKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÖKŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jœKsbŒc.v4l2_ctrl_handler_log_status”†”asbuh1hhj²Kubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôKh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj²Kubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj²KubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj²Kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj®KubjÆ)�”}”(hŒconst char *prefix”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj(Lh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj$Lubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Lh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj$LubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjCLh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj$Lubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQLh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj$Lubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj_Lh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj$LubjV)�”}”(hŒprefix”h]”hŒprefix”…”�”}”(hjlLh²hh³Nh´Nubah}”(h]”h ]”jaa•h"]”h$]”h&]”uh1jUhj$Lubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj®Kubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjuKh²hh³j‡Kh´Mxubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjqKh²hh³j‡Kh´Mxubah}”(h]”jlKah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j‡Kh´MxhjnKh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ&Log all controls owned by the handler.”h]”hŒ&Log all controls owned by the handler.”…”�”}”(hj–Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mxhj“Lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjnKh²hh³j‡Kh´Mxubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j®Lj¤j®Lj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXv**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``const char *prefix`` The prefix to use when logging the control values. If the prefix does not end with a space, then ": " will be added after the prefix. If **prefix** == NULL, then no prefix will be used. **Description** For use with VIDIOC_LOG_STATUS. Does nothing if **hdl** == NULL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¸Lh]”hŒ Parameters”…”�”}”(hjºLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¶Lubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M|hj²Lubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj×Lh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjÙLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÕLubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MyhjÑLubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjðLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jìLh´MyhjíLubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÑLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jìLh´MyhjÎLubj)�”}”(hŒÑ``const char *prefix`` The prefix to use when logging the control values. If the prefix does not end with a space, then ": " will be added after the prefix. If **prefix** == NULL, then no prefix will be used. ”h]”(j )�”}”(hŒ``const char *prefix``”h]”j½)�”}”(hjMh]”hŒconst char *prefix”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjMubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M}hj Mubj&)�”}”(hhh]”hï)�”}”(hŒ¹The prefix to use when logging the control values. If the prefix does not end with a space, then ": " will be added after the prefix. If **prefix** == NULL, then no prefix will be used.”h]”(hŒ�The prefix to use when logging the control values. If the prefix does not end with a space, then “: “ will be added after the prefix. If ”…”�”}”(hj)Mh²hh³Nh´Nubj¹)�”}”(hŒ **prefix**”h]”hŒprefix”…”�”}”(hj1Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj)MubhŒ& == NULL, then no prefix will be used.”…”�”}”(hj)Mh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mzhj&Mubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Mubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j%Mh´M}hjÎLubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj²Lubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj^Mh]”hŒ Description”…”�”}”(hj`Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj\Mubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj²Lubhï)�”}”(hŒFor use with VIDIOC_LOG_STATUS.”h]”hŒFor use with VIDIOC_LOG_STATUS.”…”�”}”(hjtMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M~hj²Lubhï)�”}”(hŒ Does nothing if **hdl** == NULL.”h]”(hŒDoes nothing if ”…”�”}”(hjƒMh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hj‹Mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjƒMubhŒ == NULL.”…”�”}”(hjƒMh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M€hj²Lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!v4l2_ctrl_new_custom (C function)”Œc.v4l2_ctrl_new_custom”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒwstruct v4l2_ctrl * v4l2_ctrl_new_custom (struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_config *cfg, void *priv)”h]”j')�”}”(hŒustruct v4l2_ctrl *v4l2_ctrl_new_custom(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_config *cfg, void *priv)”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÄMh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÀMh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒMh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÀMh²hh³jÑMh´M‡ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjãMh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjàMubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jåMŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_new_custom”sbŒc.v4l2_ctrl_new_custom”†”asbuh1hhjÀMh²hh³jÑMh´M‡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÀMh²hh³jÑMh´M‡ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÀMh²hh³jÑMh´M‡ubjP)�”}”(hŒv4l2_ctrl_new_custom”h]”jV)�”}”(hjNh]”hŒv4l2_ctrl_new_custom”…”�”}”(hj#Nh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjNubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÀMh²hh³jÑMh´M‡ubjÀ)�”}”(hŒO(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_config *cfg, void *priv)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj>Nh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj:Nubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKNh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj:Nubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj\Nh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjYNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j^NŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jÿMŒc.v4l2_ctrl_new_custom”†”asbuh1hhj:Nubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzNh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj:Nubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjˆNh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj:NubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hj•Nh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj:Nubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj6NubjÆ)�”}”(hŒ"const struct v4l2_ctrl_config *cfg”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj®Nh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjªNubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»Nh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjªNubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÉNh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjªNubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖNh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjªNubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_config”h]”hŒv4l2_ctrl_config”…”�”}”(hjçNh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjäNubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jéNŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jÿMŒc.v4l2_ctrl_new_custom”†”asbuh1hhjªNubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjªNubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjªNubjV)�”}”(hŒcfg”h]”hŒcfg”…”�”}”(hj Oh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjªNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj6NubjÆ)�”}”(hŒ void *priv”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj9Oh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj5Oubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGOh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj5Oubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjUOh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj5OubjV)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjbOh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj5Oubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj6Nubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÀMh²hh³jÑMh´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj¼Mh²hh³jÑMh´M‡ubah}”(h]”j·Mah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jÑMh´M‡hj¹Mh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ2Allocate and initialize a new custom V4L2 control.”h]”hŒ2Allocate and initialize a new custom V4L2 control.”…”�”}”(hjŒOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‡hj‰Oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¹Mh²hh³jÑMh´M‡ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j¤Oj¤j¤Oj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX{**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``const struct v4l2_ctrl_config *cfg`` The control's configuration data. ``void *priv`` The control's driver-specific private data. **Description** If the :c:type:`v4l2_ctrl` struct could not be allocated then NULL is returned and **hdl->error** is set to the error code (if it wasn't set already).”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj®Oh]”hŒ Parameters”…”�”}”(hj°Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¬Oubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‹hj¨Oubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjÍOh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjÏOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjËOubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŠhjÇOubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjæOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jâOh´MŠhjãOubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÇOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâOh´MŠhjÄOubj)�”}”(hŒI``const struct v4l2_ctrl_config *cfg`` The control's configuration data. ”h]”(j )�”}”(hŒ&``const struct v4l2_ctrl_config *cfg``”h]”j½)�”}”(hjPh]”hŒ"const struct v4l2_ctrl_config *cfg”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‹hjPubj&)�”}”(hhh]”hï)�”}”(hŒ!The control's configuration data.”h]”hŒ#The control’s configuration data.”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jPh´M‹hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jPh´M‹hjÄOubj)�”}”(hŒ;``void *priv`` The control's driver-specific private data. ”h]”(j )�”}”(hŒ``void *priv``”h]”j½)�”}”(hj?Ph]”hŒ void *priv”…”�”}”(hjAPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj=Pubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŒhj9Pubj&)�”}”(hhh]”hï)�”}”(hŒ+The control's driver-specific private data.”h]”hŒ-The control’s driver-specific private data.”…”�”}”(hjXPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jTPh´MŒhjUPubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj9Pubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jTPh´MŒhjÄOubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨Oubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjzPh]”hŒ Description”…”�”}”(hj|Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjxPubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŽhj¨Oubhï)�”}”(hŒ–If the :c:type:`v4l2_ctrl` struct could not be allocated then NULL is returned and **hdl->error** is set to the error code (if it wasn't set already).”h]”(hŒIf the ”…”�”}”(hj�Ph²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl`”h]”j½)�”}”(hjšPh]”hŒ v4l2_ctrl”…”�”}”(hjœPh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj˜Pubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hj�PubhŒ9 struct could not be allocated then NULL is returned and ”…”�”}”(hj�Ph²hh³Nh´Nubj¹)�”}”(hŒ**hdl->error**”h]”hŒ hdl->error”…”�”}”(hj¼Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj�PubhŒ7 is set to the error code (if it wasn’t set already).”…”�”}”(hj�Ph²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j·Ph´M�hj¨Oubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_new_std (C function)”Œc.v4l2_ctrl_new_std”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ’struct v4l2_ctrl * v4l2_ctrl_new_std (struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s64 min, s64 max, u64 step, s64 def)”h]”j')�”}”(hŒ�struct v4l2_ctrl *v4l2_ctrl_new_std(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s64 min, s64 max, u64 step, s64 def)”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjôPh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjðPh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M–ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjðPh²hh³jQh´M–ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jQŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_new_std”sbŒc.v4l2_ctrl_new_std”†”asbuh1hhjðPh²hh³jQh´M–ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Qh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjðPh²hh³jQh´M–ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjBQh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjðPh²hh³jQh´M–ubjP)�”}”(hŒv4l2_ctrl_new_std”h]”jV)�”}”(hj1Qh]”hŒv4l2_ctrl_new_std”…”�”}”(hjSQh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjOQubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjðPh²hh³jQh´M–ubjÀ)�”}”(hŒm(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, s64 min, s64 max, u64 step, s64 def)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjnQh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjjQubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Qh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjjQubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjŒQh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‰Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jŽQŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j/QŒc.v4l2_ctrl_new_std”†”asbuh1hhjjQubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªQh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjjQubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¸Qh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjjQubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjÅQh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjfQubjÆ)�”}”(hŒconst struct v4l2_ctrl_ops *ops”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjÞQh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÚQubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëQh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÚQubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjùQh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÚQubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÚQubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ops”h]”hŒ v4l2_ctrl_ops”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jRŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j/QŒc.v4l2_ctrl_new_std”†”asbuh1hhjÚQubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5Rh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÚQubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjCRh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÚQubjV)�”}”(hŒops”h]”hŒops”…”�”}”(hjPRh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÚQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjfQubjÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjlRh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjiRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jnRŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j/QŒc.v4l2_ctrl_new_std”†”asbuh1hhjeRubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠRh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjeRubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hj˜Rh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjeRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjfQubjÆ)�”}”(hŒs64 min”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj´Rh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj±Rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¶RŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j/QŒc.v4l2_ctrl_new_std”†”asbuh1hhj­Rubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒRh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj­RubjV)�”}”(hŒmin”h]”hŒmin”…”�”}”(hjàRh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj­Rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjfQubjÆ)�”}”(hŒs64 max”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjüRh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjùRubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jþRŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j/QŒc.v4l2_ctrl_new_std”†”asbuh1hhjõRubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjõRubjV)�”}”(hŒmax”h]”hŒmax”…”�”}”(hj(Sh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjõRubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjfQubjÆ)�”}”(hŒu64 step”h]”(h)�”}”(hhh]”jV)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjDSh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjASubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jFSŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j/QŒc.v4l2_ctrl_new_std”†”asbuh1hhj=Subj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbSh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj=SubjV)�”}”(hŒstep”h]”hŒstep”…”�”}”(hjpSh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj=Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjfQubjÆ)�”}”(hŒs64 def”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjŒSh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‰Subah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jŽSŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j/QŒc.v4l2_ctrl_new_std”†”asbuh1hhj…Subj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªSh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj…SubjV)�”}”(hŒdef”h]”hŒdef”…”�”}”(hj¸Sh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj…Subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjfQubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjðPh²hh³jQh´M–ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjìPh²hh³jQh´M–ubah}”(h]”jçPah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jQh´M–hjéPh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ=Allocate and initialize a new standard V4L2 non-menu control.”h]”hŒ=Allocate and initialize a new standard V4L2 non-menu control.”…”�”}”(hjâSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M–hjßSh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjéPh²hh³jQh´M–ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£júSj¤júSj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX¤**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``const struct v4l2_ctrl_ops *ops`` The control ops. ``u32 id`` The control ID. ``s64 min`` The control's minimum value. ``s64 max`` The control's maximum value. ``u64 step`` The control's step value ``s64 def`` The control's default value. **Description** If the :c:type:`v4l2_ctrl` struct could not be allocated, or the control ID is not known, then NULL is returned and **hdl->error** is set to the appropriate error code (if it wasn't set already). If **id** refers to a menu control, then this function will return NULL. Use v4l2_ctrl_new_std_menu() when adding menu controls.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjTh]”hŒ Parameters”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MšhjþSubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj#Th]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj%Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj!Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M™hjTubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjUubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mžhj:Uubj&)�”}”(hhh]”hï)�”}”(hŒThe control's step value”h]”hŒThe control’s step value”…”�”}”(hjYUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jUUh´MžhjVUubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj:Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jUUh´MžhjTubj)�”}”(hŒ)``s64 def`` The control's default value. ”h]”(j )�”}”(hŒ ``s64 def``”h]”j½)�”}”(hjyUh]”hŒs64 def”…”�”}”(hj{Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjwUubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŸhjsUubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hj’Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jŽUh´MŸhj�Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjsUubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŽUh´MŸhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjþSubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj´Uh]”hŒ Description”…”�”}”(hj¶Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj²Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¡hjþSubhï)�”}”(hŒÃIf the :c:type:`v4l2_ctrl` struct could not be allocated, or the control ID is not known, then NULL is returned and **hdl->error** is set to the appropriate error code (if it wasn't set already).”h]”(hŒIf the ”…”�”}”(hjÊUh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl`”h]”j½)�”}”(hjÔUh]”hŒ v4l2_ctrl”…”�”}”(hjÖUh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÒUubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjÊUubhŒZ struct could not be allocated, or the control ID is not known, then NULL is returned and ”…”�”}”(hjÊUh²hh³Nh´Nubj¹)�”}”(hŒ**hdl->error**”h]”hŒ hdl->error”…”�”}”(hjöUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÊUubhŒC is set to the appropriate error code (if it wasn’t set already).”…”�”}”(hjÊUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jñUh´M hjþSubhï)�”}”(hŒHIf **id** refers to a menu control, then this function will return NULL.”h]”(hŒIf ”…”�”}”(hjVh²hh³Nh´Nubj¹)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjVubhŒ? refers to a menu control, then this function will return NULL.”…”�”}”(hjVh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¤hjþSubhï)�”}”(hŒ7Use v4l2_ctrl_new_std_menu() when adding menu controls.”h]”hŒ7Use v4l2_ctrl_new_std_menu() when adding menu controls.”…”�”}”(hj/Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¦hjþSubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_new_std_menu (C function)”Œc.v4l2_ctrl_new_std_menu”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒŒstruct v4l2_ctrl * v4l2_ctrl_new_std_menu (struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, u8 max, u64 mask, u8 def)”h]”j')�”}”(hŒŠstruct v4l2_ctrl *v4l2_ctrl_new_std_menu(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, u8 max, u64 mask, u8 def)”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj^Vh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjZVh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¯ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlVh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZVh²hh³jkVh´M¯ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj}Vh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjzVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jVŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_new_std_menu”sbŒc.v4l2_ctrl_new_std_menu”†”asbuh1hhjZVh²hh³jkVh´M¯ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjžVh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZVh²hh³jkVh´M¯ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¬Vh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjZVh²hh³jkVh´M¯ubjP)�”}”(hŒv4l2_ctrl_new_std_menu”h]”jV)�”}”(hj›Vh]”hŒv4l2_ctrl_new_std_menu”…”�”}”(hj½Vh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¹Vubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjZVh²hh³jkVh´M¯ubjÀ)�”}”(hŒb(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, u8 max, u64 mask, u8 def)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjØVh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÔVubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjåVh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÔVubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjöVh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjóVubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jøVŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j™VŒc.v4l2_ctrl_new_std_menu”†”asbuh1hhjÔVubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÔVubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj"Wh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÔVubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hj/Wh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÔVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÐVubjÆ)�”}”(hŒconst struct v4l2_ctrl_ops *ops”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjHWh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjDWubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjDWubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjcWh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjDWubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjDWubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ops”h]”hŒ v4l2_ctrl_ops”…”�”}”(hj�Wh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj~Wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jƒWŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j™VŒc.v4l2_ctrl_new_std_menu”†”asbuh1hhjDWubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjDWubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj­Wh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjDWubjV)�”}”(hŒops”h]”hŒops”…”�”}”(hjºWh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjDWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÐVubjÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÖWh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÓWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jØWŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j™VŒc.v4l2_ctrl_new_std_menu”†”asbuh1hhjÏWubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôWh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÏWubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÏWubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÐVubjÆ)�”}”(hŒu8 max”h]”(h)�”}”(hhh]”jV)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j XŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j™VŒc.v4l2_ctrl_new_std_menu”†”asbuh1hhjXubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhjXubjV)�”}”(hŒmax”h]”hŒmax”…”�”}”(hjJXh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjXubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÐVubjÆ)�”}”(hŒu64 mask”h]”(h)�”}”(hhh]”jV)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjfXh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjcXubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jhXŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j™VŒc.v4l2_ctrl_new_std_menu”†”asbuh1hhj_Xubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„Xh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj_XubjV)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj’Xh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj_Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÐVubjÆ)�”}”(hŒu8 def”h]”(h)�”}”(hhh]”jV)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj®Xh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj«Xubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j°XŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j™VŒc.v4l2_ctrl_new_std_menu”†”asbuh1hhj§Xubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌXh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj§XubjV)�”}”(hŒdef”h]”hŒdef”…”�”}”(hjÚXh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj§Xubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÐVubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjZVh²hh³jkVh´M¯ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjVVh²hh³jkVh´M¯ubah}”(h]”jQVah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jkVh´M¯hjSVh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ9Allocate and initialize a new standard V4L2 menu control.”h]”hŒ9Allocate and initialize a new standard V4L2 menu control.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¯hjYh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSVh²hh³jkVh´M¯ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jYj¤jYj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXG**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``const struct v4l2_ctrl_ops *ops`` The control ops. ``u32 id`` The control ID. ``u8 max`` The control's maximum value. ``u64 mask`` The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array. ``u8 def`` The control's default value. **Description** Same as v4l2_ctrl_new_std(), but **min** is set to 0 and the **mask** value determines which menu items are to be skipped. If **id** refers to a non-menu control, then this function will return NULL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj&Yh]”hŒ Parameters”…”�”}”(hj(Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj$Yubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M³hj Yubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjEYh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjGYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjCYubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M²hj?Yubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hj^Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jZYh´M²hj[Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj?Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jZYh´M²hjZh´M»hjhj$[h²hh³j5[h´MÈubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjG[h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjD[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jI[Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_new_std_menu_items”sbŒc.v4l2_ctrl_new_std_menu_items”†”asbuh1hhj$[h²hh³j5[h´MÈubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh[h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj$[h²hh³j5[h´MÈubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjv[h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj$[h²hh³j5[h´MÈubjP)�”}”(hŒv4l2_ctrl_new_std_menu_items”h]”jV)�”}”(hje[h]”hŒv4l2_ctrl_new_std_menu_items”…”�”}”(hj‡[h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjƒ[ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj$[h²hh³j5[h´MÈubjÀ)�”}”(hŒ|(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, u8 max, u64 mask, u8 def, const char *const *qmenu)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¢[h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjž[ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯[h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjž[ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjÀ[h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj½[ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÂ[Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jc[Œc.v4l2_ctrl_new_std_menu_items”†”asbuh1hhjž[ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞ[h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjž[ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjì[h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjž[ubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjù[h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjž[ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjš[ubjÆ)�”}”(hŒconst struct v4l2_ctrl_ops *ops”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj\ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\ubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj-\h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj\ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:\h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ops”h]”hŒ v4l2_ctrl_ops”…”�”}”(hjK\h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjH\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jM\Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jc[Œc.v4l2_ctrl_new_std_menu_items”†”asbuh1hhj\ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji\h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjw\h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj\ubjV)�”}”(hŒops”h]”hŒops”…”�”}”(hj„\h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjš[ubjÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj \h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¢\Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jc[Œc.v4l2_ctrl_new_std_menu_items”†”asbuh1hhj™\ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾\h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™\ubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hjÌ\h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj™\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjš[ubjÆ)�”}”(hŒu8 max”h]”(h)�”}”(hhh]”jV)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjè\h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjå\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jê\Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jc[Œc.v4l2_ctrl_new_std_menu_items”†”asbuh1hhjá\ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjá\ubjV)�”}”(hŒmax”h]”hŒmax”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjá\ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjš[ubjÆ)�”}”(hŒu64 mask”h]”(h)�”}”(hhh]”jV)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj0]h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj-]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j2]Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jc[Œc.v4l2_ctrl_new_std_menu_items”†”asbuh1hhj)]ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN]h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj)]ubjV)�”}”(hŒmask”h]”hŒmask”…”�”}”(hj\]h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj)]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjš[ubjÆ)�”}”(hŒu8 def”h]”(h)�”}”(hhh]”jV)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjx]h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhju]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jz]Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jc[Œc.v4l2_ctrl_new_std_menu_items”†”asbuh1hhjq]ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–]h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjq]ubjV)�”}”(hŒdef”h]”hŒdef”…”�”}”(hj¤]h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjq]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjš[ubjÆ)�”}”(hŒconst char *const *qmenu”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj½]h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¹]ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÊ]h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¹]ubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjØ]h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj¹]ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ]h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¹]ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjô]h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¹]ubj-)�”}”(hjª8h]”hŒconst”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¹]ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¹]ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¹]ubjV)�”}”(hŒqmenu”h]”hŒqmenu”…”�”}”(hj)^h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¹]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjš[ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj$[h²hh³j5[h´MÈubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj [h²hh³j5[h´MÈubah}”(h]”jh ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j5[h´MÈhj[h²hubj‚)�”}”(hhh]”hï)�”}”(hŒBCreate a new standard V4L2 menu control with driver specific menu.”h]”hŒBCreate a new standard V4L2 menu control with driver specific menu.”…”�”}”(hjS^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÈhjP^h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj[h²hh³j5[h´MÈubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jk^j¤jk^j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``const struct v4l2_ctrl_ops *ops`` The control ops. ``u32 id`` The control ID. ``u8 max`` The control's maximum value. ``u64 mask`` The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array. ``u8 def`` The control's default value. ``const char * const *qmenu`` The new menu. **Description** Same as v4l2_ctrl_new_std_menu(), but **qmenu** will be the driver specific menu of this control.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hju^h]”hŒ Parameters”…”�”}”(hjw^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjs^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÌhjo^ubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj”^h]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj–^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj’^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MËhjŽ^ubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hj­^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j©^h´MËhjª^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŽ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j©^h´MËhj‹^ubj)�”}”(hŒ5``const struct v4l2_ctrl_ops *ops`` The control ops. ”h]”(j )�”}”(hŒ#``const struct v4l2_ctrl_ops *ops``”h]”j½)�”}”(hjÍ^h]”hŒconst struct v4l2_ctrl_ops *ops”…”�”}”(hjÏ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjË^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÌhjÇ^ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ops.”h]”hŒThe control ops.”…”�”}”(hjæ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jâ^h´MÌhjã^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÇ^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jâ^h´MÌhj‹^ubj)�”}”(hŒ``u32 id`` The control ID. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hj_h]”hŒu32 id”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÍhj_ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j_h´MÍhj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j_h´MÍhj‹^ubj)�”}”(hŒ(``u8 max`` The control's maximum value. ”h]”(j )�”}”(hŒ ``u8 max``”h]”j½)�”}”(hj?_h]”hŒu8 max”…”�”}”(hjA_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj=_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÎhj9_ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's maximum value.”h]”hŒThe control’s maximum value.”…”�”}”(hjX_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jT_h´MÎhjU_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj9_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jT_h´MÎhj‹^ubj)�”}”(hXk``u64 mask`` The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array. ”h]”(j )�”}”(hŒ ``u64 mask``”h]”j½)�”}”(hjx_h]”hŒu64 mask”…”�”}”(hjz_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjv_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÔhjr_ubj&)�”}”(hhh]”hï)�”}”(hX]The control's skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array.”h]”hX_The control’s skip mask for menu controls. This makes it easy to skip menu items that are not valid. If bit X is set, then menu item X is skipped. Of course, this only works for menus with <= 64 menu items. There are no menus that come close to that number, so this is OK. Should we ever need more, then this will have to be extended to a bit array.”…”�”}”(hj‘_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÏhjŽ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjr_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�_h´MÔhj‹^ubj)�”}”(hŒ(``u8 def`` The control's default value. ”h]”(j )�”}”(hŒ ``u8 def``”h]”j½)�”}”(hj²_h]”hŒu8 def”…”�”}”(hj´_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj°_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÕhj¬_ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hjË_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÇ_h´MÕhjÈ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¬_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÇ_h´MÕhj‹^ubj)�”}”(hŒ,``const char * const *qmenu`` The new menu. ”h]”(j )�”}”(hŒ``const char * const *qmenu``”h]”j½)�”}”(hjë_h]”hŒconst char * const *qmenu”…”�”}”(hjí_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjé_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÖhjå_ubj&)�”}”(hhh]”hï)�”}”(hŒ The new menu.”h]”hŒ The new menu.”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j`h´MÖhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjå_ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j`h´MÖhj‹^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjo^ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj&`h]”hŒ Description”…”�”}”(hj(`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj$`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MØhjo^ubhï)�”}”(hŒaSame as v4l2_ctrl_new_std_menu(), but **qmenu** will be the driver specific menu of this control.”h]”(hŒ&Same as v4l2_ctrl_new_std_menu(), but ”…”�”}”(hj<`h²hh³Nh´Nubj¹)�”}”(hŒ **qmenu**”h]”hŒqmenu”…”�”}”(hjD`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj<`ubhŒ2 will be the driver specific menu of this control.”…”�”}”(hj<`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M×hjo^ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'v4l2_ctrl_new_std_compound (C function)”Œc.v4l2_ctrl_new_std_compound”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒÙstruct v4l2_ctrl * v4l2_ctrl_new_std_compound (struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, const union v4l2_ctrl_ptr p_def, const union v4l2_ctrl_ptr p_min, const union v4l2_ctrl_ptr p_max)”h]”j')�”}”(hŒ×struct v4l2_ctrl *v4l2_ctrl_new_std_compound(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, const union v4l2_ctrl_ptr p_def, const union v4l2_ctrl_ptr p_min, const union v4l2_ctrl_ptr p_max)”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj}`h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjy`h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mãubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹`h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjy`h²hh³jŠ`h´Mãubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjœ`h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj™`ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jž`Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_new_std_compound”sbŒc.v4l2_ctrl_new_std_compound”†”asbuh1hhjy`h²hh³jŠ`h´Mãubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½`h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjy`h²hh³jŠ`h´Mãubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjË`h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjy`h²hh³jŠ`h´MãubjP)�”}”(hŒv4l2_ctrl_new_std_compound”h]”jV)�”}”(hjº`h]”hŒv4l2_ctrl_new_std_compound”…”�”}”(hjÜ`h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjØ`ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjy`h²hh³jŠ`h´MãubjÀ)�”}”(hŒ«(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, const union v4l2_ctrl_ptr p_def, const union v4l2_ctrl_ptr p_min, const union v4l2_ctrl_ptr p_max)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj÷`h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjó`ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjó`ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jaŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¸`Œc.v4l2_ctrl_new_std_compound”†”asbuh1hhjó`ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3ah²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjó`ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjAah²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjó`ubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjNah²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjó`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjï`ubjÆ)�”}”(hŒconst struct v4l2_ctrl_ops *ops”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjgah²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjcaubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjtah²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjcaubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj‚ah²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjcaubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ah²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjcaubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ops”h]”hŒ v4l2_ctrl_ops”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¢aŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¸`Œc.v4l2_ctrl_new_std_compound”†”asbuh1hhjcaubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾ah²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjcaubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÌah²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjcaubjV)�”}”(hŒops”h]”hŒops”…”�”}”(hjÙah²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjcaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjï`ubjÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjõah²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjòaubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j÷aŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¸`Œc.v4l2_ctrl_new_std_compound”†”asbuh1hhjîaubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjîaubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hj!bh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjîaubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjï`ubjÆ)�”}”(hŒconst union v4l2_ctrl_ptr p_def”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj:bh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj6bubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGbh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj6bubj-)�”}”(hj0h]”hŒunion”…”�”}”(hjUbh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj6bubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbbh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj6bubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjsbh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjpbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jubŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¸`Œc.v4l2_ctrl_new_std_compound”†”asbuh1hhj6bubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘bh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj6bubjV)�”}”(hŒp_def”h]”hŒp_def”…”�”}”(hjŸbh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj6bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjï`ubjÆ)�”}”(hŒconst union v4l2_ctrl_ptr p_min”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj¸bh²hh³Nh´Nubah•}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj´bubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅbh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj´bubj-)�”}”(hj0h]”hŒunion”…”�”}”(hjÓbh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj´bubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjàbh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj´bubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjñbh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjîbubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jóbŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¸`Œc.v4l2_ctrl_new_std_compound”†”asbuh1hhj´bubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj´bubjV)�”}”(hŒp_min”h]”hŒp_min”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj´bubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjï`ubjÆ)�”}”(hŒconst union v4l2_ctrl_ptr p_max”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj6ch²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj2cubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCch²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj2cubj-)�”}”(hj0h]”hŒunion”…”�”}”(hjQch²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj2cubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj^ch²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj2cubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjoch²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjlcubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jqcŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¸`Œc.v4l2_ctrl_new_std_compound”†”asbuh1hhj2cubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�ch²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj2cubjV)�”}”(hŒp_max”h]”hŒp_max”…”�”}”(hj›ch²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj2cubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjï`ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjy`h²hh³jŠ`h´Mãubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhju`h²hh³jŠ`h´Mãubah}”(h]”jp`ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jŠ`h´Mãhjr`h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ=Allocate and initialize a new standard V4L2 compound control.”h]”hŒ=Allocate and initialize a new standard V4L2 compound control.”…”�”}”(hjÅch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MãhjÂch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjr`h²hh³jŠ`h´Mãubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jÝcj¤jÝcj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX§**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``const struct v4l2_ctrl_ops *ops`` The control ops. ``u32 id`` The control ID. ``const union v4l2_ctrl_ptr p_def`` The control's default value. ``const union v4l2_ctrl_ptr p_min`` The control's minimum value. ``const union v4l2_ctrl_ptr p_max`` The control's maximum value. **Description** Same as v4l2_ctrl_new_std(), but with support for compound controls. To fill in the **p_def**, **p_min** and **p_max** fields, use v4l2_ctrl_ptr_create() to convert a pointer to a const union v4l2_ctrl_ptr. Use v4l2_ctrl_ptr_create(NULL) if you want the default, minimum or maximum value of the compound control to be all zeroes. If the compound control does not set the ``V4L2_CTRL_FLAG_HAS_WHICH_MIN_MAX`` flag, then it does not has minimum and maximum values. In that case just use v4l2_ctrl_ptr_create(NULL) for the **p_min** and **p_max** arguments.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjçch]”hŒ Parameters”…”�”}”(hjéch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjåcubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mçhjácubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjdh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mæhjdubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jdh´Mæhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jdh´Mæhjýcubj)�”}”(hŒ5``const struct v4l2_ctrl_ops *ops`` The control ops. ”h]”(j )�”}”(hŒ#``const struct v4l2_ctrl_ops *ops``”h]”j½)�”}”(hj?dh]”hŒconst struct v4l2_ctrl_ops *ops”…”�”}”(hjAdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj=dubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mçhj9dubj&)�”}”(hhh]”hï)�”}”(hŒThe control ops.”h]”hŒThe control ops.”…”�”}”(hjXdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jTdh´MçhjUdubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj9dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jTdh´Mçhjýcubj)�”}”(hŒ``u32 id`` The control ID. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hjxdh]”hŒu32 id”…”�”}”(hjzdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjvdubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mèhjrdubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hj‘dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j�dh´MèhjŽdubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjrdubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�dh´Mèhjýcubj)�”}”(hŒA``const union v4l2_ctrl_ptr p_def`` The control's default value. ”h]”(j )�”}”(hŒ#``const union v4l2_ctrl_ptr p_def``”h]”j½)�”}”(hj±dh]”hŒconst union v4l2_ctrl_ptr p_def”…”�”}”(hj³dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¯dubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Méhj«dubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hjÊdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÆdh´MéhjÇdubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj«dubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÆdh´Méhjýcubj)�”}”(hŒA``const union v4l2_ctrl_ptr p_min`` The control's minimum value. ”h]”(j )�”}”(hŒ#``const union v4l2_ctrl_ptr p_min``”h]”j½)�”}”(hjêdh]”hŒconst union v4l2_ctrl_ptr p_min”…”�”}”(hjìdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjèdubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mêhjädubj&)�”}”(hhh]”hï)�”}”(hŒThe control's minimum value.”h]”hŒThe control’s minimum value.”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÿdh´Mêhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjädubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÿdh´Mêhjýcubj)�”}”(hŒA``const union v4l2_ctrl_ptr p_max`` The control's maximum value. ”h]”(j )�”}”(hŒ#``const union v4l2_ctrl_ptr p_max``”h]”j½)�”}”(hj#eh]”hŒconst union v4l2_ctrl_ptr p_max”…”�”}”(hj%eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj!eubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mëhjeubj&)�”}”(hhh]”hï)�”}”(hŒThe control's maximum value.”h]”hŒThe control’s maximum value.”…”�”}”(hjhj fh²hh³jfh´Mÿubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj.fh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj+fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j0fŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_new_int_menu”sbŒc.v4l2_ctrl_new_int_menu”†”asbuh1hhj fh²hh³jfh´Mÿubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjOfh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj fh²hh³jfh´Mÿubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj]fh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj fh²hh³jfh´MÿubjP)�”}”(hŒv4l2_ctrl_new_int_menu”h]”jV)�”}”(hjLfh]”hŒv4l2_ctrl_new_int_menu”…”�”}”(hjnfh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjjfubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj fh²hh³jfh´MÿubjÀ)�”}”(hŒn(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ops, u32 id, u8 max, u8 def, const s64 *qmenu_int)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj‰fh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj…fubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–fh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj…fubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj§fh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¤fubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j©fŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jJfŒc.v4l2_ctrl_new_int_menu”†”asbuh1hhj…fubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅfh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj…fubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÓfh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj…fubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjàfh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj…fubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�fubjÆ)�”}”(hŒconst struct v4l2_ctrl_ops *ops”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjùfh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjõfubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjõfubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjõfubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!gh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjõfubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ops”h]”hŒ v4l2_ctrl_ops”…”�”}”(hj2gh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj/gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j4gŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jJfŒc.v4l2_ctrl_new_int_menu”†”asbuh1hhjõfubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPgh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjõfubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj^gh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjõfubjV)�”}”(hŒops”h]”hŒops”…”�”}”(hjkgh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjõfubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�fubjÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‡gh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj„gubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j‰gŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jJfŒc.v4l2_ctrl_new_int_menu”†”asbuh1hhj€gubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥gh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€gubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hj³gh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj€gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�fubjÆ)�”}”(hŒu8 max”h]”(h)�”}”(hhh]”jV)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÏgh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÌgubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÑgŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jJfŒc.v4l2_ctrl_new_int_menu”†”asbuh1hhjÈgubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjígh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÈgubjV)�”}”(hŒmax”h]”hŒmax”…”�”}”(hjûgh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÈgubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�fubjÆ)�”}”(hŒu8 def”h]”(h)�”}”(hhh]”jV)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jhŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jJfŒc.v4l2_ctrl_new_int_menu”†”asbuh1hhjhubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5hh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjhubjV)�”}”(hŒdef”h]”hŒdef”…”�”}”(hjChh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�fubjÆ)�”}”(hŒconst s64 *qmenu_int”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj\hh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjXhubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjihh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjXhubh)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjzhh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjwhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j|hŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jJfŒc.v4l2_ctrl_new_int_menu”†”asbuh1hhjXhubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜hh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjXhubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¦hh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjXhubjV)�”}”(hŒ qmenu_int”h]”hŒ qmenu_int”…”�”}”(hj³hh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjXhubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�fubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj fh²hh³jfh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjfh²hh³jfh´Mÿubah}”(h]”jfah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jfh´Mÿhjfh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ0Create a new standard V4L2 integer menu control.”h]”hŒ0Create a new standard V4L2 integer menu control.”…”�”}”(hjÝhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÿhjÚhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjfh²hh³jfh´Mÿubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jõhj¤jõhj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX-**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``const struct v4l2_ctrl_ops *ops`` The control ops. ``u32 id`` The control ID. ``u8 max`` The control's maximum value. ``u8 def`` The control's default value. ``const s64 *qmenu_int`` The control's menu entries. **Description** Same as v4l2_ctrl_new_std_menu(), but **mask** is set to 0 and it additionally takes as an argument an array of integers determining the menu items. If **id** refers to a non-integer-menu control, then this function will return ``NULL``.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjÿhh]”hŒ Parameters”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjýhubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjùhubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjih]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjiubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hj7ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j3ih´Mhj4iubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j3ih´Mhjiubj)�”}”(hŒ5``const struct v4l2_ctrl_ops *ops`` The control ops. ”h]”(j )�”}”(hŒ#``const struct v4l2_ctrl_ops *ops``”h]”j½)�”}”(hjWih]”hŒconst struct v4l2_ctrl_ops *ops”…”�”}”(hjYih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjUiubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjQiubj&)�”}”(hhh]”hï)�”}”(hŒThe control ops.”h]”hŒThe control ops.”…”�”}”(hjpih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jlih´Mhjmiubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jlih´Mhjiubj)�”}”(hŒ``u32 id`` The control ID. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hj�ih]”hŒu32 id”…”�”}”(hj’ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŽiubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjŠiubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hj©ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¥ih´Mhj¦iubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŠiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¥ih´Mhjiubj)�”}”(hŒ(``u8 max`` The control's maximum value. ”h]”(j )�”}”(hŒ ``u8 max``”h]”j½)�”}”(hjÉih]”hŒu8 max”…”�”}”(hjËih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÇiubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÃiubj&)�”}”(hhh]”hï)�”}”(hŒThe control's maximum value.”h]”hŒThe control’s maximum value.”…”�”}”(hjâih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÞih´Mhjßiubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÃiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÞih´Mhjiubj)�”}”(hŒ(``u8 def`` The control's default value. ”h]”(j )�”}”(hŒ ``u8 def``”h]”j½)�”}”(hjjh]”hŒu8 def”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjüiubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jjh´Mhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjüiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jjh´Mhjiubj)�”}”(hŒ5``const s64 *qmenu_int`` The control's menu entries. ”h]”(j )�”}”(hŒ``const s64 *qmenu_int``”h]”j½)�”}”(hj;jh]”hŒconst s64 *qmenu_int”…”�”}”(hj=jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj9jubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj5jubj&)�”}”(hhh]”hï)�”}”(hŒThe control's menu entries.”h]”hŒThe control’s menu entries.”…”�”}”(hjTjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jPjh´MhjQjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj5jubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jPjh´Mhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjùhubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjvjh]”hŒ Description”…”�”}”(hjxjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjtjubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjùhubhï)�”}”(hŒ”Same as v4l2_ctrl_new_std_menu(), but **mask** is set to 0 and it additionally takes as an argument an array of integers determining the menu items.”h]”(hŒ&Same as v4l2_ctrl_new_std_menu(), but ”…”�”}”(hjŒjh²hh³Nh´Nubj¹)�”}”(hŒ**mask**”h]”hŒmask”…”�”}”(hj”jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjŒjubhŒf is set to 0 and it additionally takes as an argument an array of integers determining the menu items.”…”�”}”(hjŒjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjùhubhï)�”}”(hŒXIf **id** refers to a non-integer-menu control, then this function will return ``NULL``.”h]”(hŒIf ”…”�”}”(hj­jh²hh³Nh´Nubj¹)�”}”(hŒ**id**”h]”hŒid”…”�”}”(hjµjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj­jubhŒF refers to a non-integer-menu control, then this function will return ”…”�”}”(hj­jh²hh³Nh´Nubj½)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÇjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­jubhŒ.”…”�”}”(hj­jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjùhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_filter (C macro)”Œc.v4l2_ctrl_filter”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒv4l2_ctrl_filter”h]”j')�”}”(hŒv4l2_ctrl_filter”h]”jP)�”}”(hŒv4l2_ctrl_filter”h]”jV)�”}”(hjújh]”hŒv4l2_ctrl_filter”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjkubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjüjh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjøjh²hh³jkh´Mubah}”(h]”jójah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jkh´Mhjõjh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ\**Typedef**: Typedef to define the filter function to be used when adding a control handler.”h]”(j¹)�”}”(hŒ **Typedef**”h]”hŒTypedef”…”�”}”(hj+kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj'kubhŒQ: Typedef to define the filter function to be used when adding a control handler.”…”�”}”(hj'kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj$kh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõjh²hh³jkh´Mubeh}”(h]”h ]”(jÉŒmacro”eh"]”h$]”h&]”j¢jÉj£jMkj¤jMkj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubhï)�”}”(hŒ **Syntax**”h]”j¹)�”}”(hjSkh]”hŒSyntax”…”�”}”(hjUkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjQkubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjù h²hubj¯)�”}”(hŒ9``bool v4l2_ctrl_filter (const struct v4l2_ctrl *ctrl)`` ”h]”hï)�”}”(hŒ8``bool v4l2_ctrl_filter (const struct v4l2_ctrl *ctrl)``”h]”j½)�”}”(hjokh]”hŒ4bool v4l2_ctrl_filter (const struct v4l2_ctrl *ctrl)”…”�”}”(hjqkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjmkubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjikubah}”(h]”h ]”h"]”h$]”h&]”uh1j®h³j„kh´Mhjù h²hubj©)�”}”(hŒY**Parameters** ``const struct v4l2_ctrl *ctrl`` pointer to struct :c:type:`v4l2_ctrl`.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj‘kh]”hŒ Parameters”…”�”}”(hj“kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj�kubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj‹kubj)�”}”(hhh]”j)�”}”(hŒG``const struct v4l2_ctrl *ctrl`` pointer to struct :c:type:`v4l2_ctrl`.”h]”(j )�”}”(hŒ ``const struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj°kh]”hŒconst struct v4l2_ctrl *ctrl”…”�”}”(hj²kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj®kubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M!hjªkubj&)�”}”(hhh]”hï)�”}”(hŒ&pointer to struct :c:type:`v4l2_ctrl`.”h]”(hŒpointer to struct ”…”�”}”(hjÉkh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl`”h]”j½)�”}”(hjÓkh]”hŒ v4l2_ctrl”…”�”}”(hjÕkh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÑkubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÉkubhŒ.”…”�”}”(hjÉkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jðkh´MhjÆkubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjªkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÅkh´M!hj§kubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹kubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"v4l2_ctrl_add_handler (C function)”Œc.v4l2_ctrl_add_handler”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ†int v4l2_ctrl_add_handler (struct v4l2_ctrl_handler *hdl, struct v4l2_ctrl_handler *add, v4l2_ctrl_filter filter, bool from_other_dev)”h]”j')�”}”(hŒ…int v4l2_ctrl_add_handler(struct v4l2_ctrl_handler *hdl, struct v4l2_ctrl_handler *add, v4l2_ctrl_filter filter, bool from_other_dev)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj-lh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj)lh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhj)lh²hh³j;lh´MubjP)�”}”(hŒv4l2_ctrl_add_handler”h]”jV)�”}”(hŒv4l2_ctrl_add_handler”h]”hŒv4l2_ctrl_add_handler”…”�”}”(hjNlh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjJlubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj)lh²hh³j;lh´MubjÀ)�”}”(hŒl(struct v4l2_ctrl_handler *hdl, struct v4l2_ctrl_handler *add, v4l2_ctrl_filter filter, bool from_other_dev)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjjlh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjflubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjwlh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjflubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjˆlh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj…lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jŠlŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jPlsbŒc.v4l2_ctrl_add_handler”†”asbuh1hhjflubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨lh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjflubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¶lh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjflubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjÃlh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjflubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjblubjÆ)�”}”(hŒstruct v4l2_ctrl_handler *add”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÜlh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjØlubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjélh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjØlubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjúlh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj÷lubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jülŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¤lŒc.v4l2_ctrl_add_handler”†”asbuh1hhjØlubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjØlubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj&mh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjØlubjV)�”}”(hŒadd”h]”hŒadd”…”�”}”(hj3mh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjØlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjblubjÆ)�”}”(hŒv4l2_ctrl_filter filter”h]”(h)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_filter”h]”hŒv4l2_ctrl_filter”…”�”}”(hjOmh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjLmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jQmŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¤lŒc.v4l2_ctrl_add_handler”†”asbuh1hhjHmubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmmh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjHmubjV)�”}”(hŒfilter”h]”hŒfilter”…”�”}”(hj{mh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjHmubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjblubjÆ)�”}”(hŒbool from_other_dev”h]”(jÌ)�”}”(hŒbool”h]”hŒbool”…”�”}”(hj”mh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj�mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢mh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�mubjV)�”}”(hŒfrom_other_dev”h]”hŒfrom_other_dev”…”�”}”(hj°mh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�mubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjblubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj)lh²hh³j;lh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj%lh²hh³j;lh´Mubah}”(h]”j lah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j;lh´Mhj"lh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ9Add all controls from handler **add** to handler **hdl**.”h]”(hŒAdd all controls from handler ”…”�”}”(hjÚmh²hh³Nh´Nubj¹)�”}”(hŒ**add**”h]”hŒadd”…”�”}”(hjâmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÚmubhŒ to handler ”…”�”}”(hjÚmh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hjômh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÚmubhŒ.”…”�”}”(hjÚmh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj×mh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj"lh²hh³j;lh´Mubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jnj¤jnj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX»**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``struct v4l2_ctrl_handler *add`` The control handler whose controls you want to add to the **hdl** control handler. ``v4l2_ctrl_filter filter`` This function will filter which controls should be added. ``bool from_other_dev`` If true, then the controls in **add** were defined in another device than **hdl**. **Description** Does nothing if either of the two handlers is a NULL pointer. If **filter** is NULL, then all controls are added. Otherwise only those controls for which **filter** returns true will be added. In case of an error **hdl->error** will be set to the error code (if it wasn't set already).”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj nh]”hŒ Parameters”…”�”}”(hj"nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M!hjnubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj?nh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjAnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj=nubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hj9nubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjXnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jTnh´M hjUnubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj9nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jTnh´M hj6nubj)�”}”(hŒu``struct v4l2_ctrl_handler *add`` The control handler whose controls you want to add to the **hdl** control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *add``”h]”j½)�”}”(hjxnh]”hŒstruct v4l2_ctrl_handler *add”…”�”}”(hjznh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjvnubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M"hjrnubj&)�”}”(hhh]”hï)�”}”(hŒRThe control handler whose controls you want to add to the **hdl** control handler.”h]”(hŒ:The control handler whose controls you want to add to the ”…”�”}”(hj‘nh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hj™nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‘nubhŒ control handler.”…”�”}”(hj‘nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M!hjŽnubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjrnubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�nh´M"hj6nubj)�”}”(hŒV``v4l2_ctrl_filter filter`` This function will filter which controls should be added. ”h]”(j )�”}”(hŒ``v4l2_ctrl_filter filter``”h]”j½)�”}”(hjÄnh]”hŒv4l2_ctrl_filter filter”…”�”}”(hjÆnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÂnubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M#hj¾nubj&)�”}”(hhh]”hï)�”}”(hŒ9This function will filter which controls should be added.”h]”hŒ9This function will filter which controls should be added.”…”�”}”(hjÝnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÙnh´M#hjÚnubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¾nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÙnh´M#hj6nubj)�”}”(hŒk``bool from_other_dev`` If true, then the controls in **add** were defined in another device than **hdl**. ”h]”(j )�”}”(hŒ``bool from_other_dev``”h]”j½)�”}”(hjýnh]”hŒbool from_other_dev”…”�”}”(hjÿnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjûnubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M%hj÷nubj&)�”}”(hhh]”hï)�”}”(hŒRIf true, then the controls in **add** were defined in another device than **hdl**.”h]”(hŒIf true, then the controls in ”…”�”}”(hjoh²hh³Nh´Nubj¹)�”}”(hŒ**add**”h]”hŒadd”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjoubhŒ% were defined in another device than ”…”�”}”(hjoh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hj0oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjoubhŒ.”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M$hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj÷nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³joh´M%hj6nubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjnubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj]oh]”hŒ Description”…”�”}”(hj_oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj[oubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M'hjnubhï)�”}”(hXDoes nothing if either of the two handlers is a NULL pointer. If **filter** is NULL, then all controls are added. Otherwise only those controls for which **filter** returns true will be added. In case of an error **hdl->error** will be set to the error code (if it wasn't set already).”h]”(hŒADoes nothing if either of the two handlers is a NULL pointer. If ”…”�”}”(hjsoh²hh³Nh´Nubj¹)�”}”(hŒ **filter**”h]”hŒfilter”…”�”}”(hj{oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjsoubhŒO is NULL, then all controls are added. Otherwise only those controls for which ”…”�”}”(hjsoh²hh³Nh´Nubj¹)�”}”(hŒ **filter**”h]”hŒfilter”…”�”}”(hj�oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjsoubhŒ1 returns true will be added. In case of an error ”…”�”}”(hjsoh²hh³Nh´Nubj¹)�”}”(hŒ**hdl->error**”h]”hŒ hdl->error”…”�”}”(hjŸoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjsoubhŒ< will be set to the error code (if it wasn’t set already).”…”�”}”(hjsoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M&hjnubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_radio_filter (C function)”Œc.v4l2_ctrl_radio_filter”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ:bool v4l2_ctrl_radio_filter (const struct v4l2_ctrl *ctrl)”h]”j')�”}”(hŒ9bool v4l2_ctrl_radio_filter(const struct v4l2_ctrl *ctrl)”h]”(jÌ)�”}”(hj–mh]”hŒbool”…”�”}”(hjØoh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjÔoh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M3ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæoh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÔoh²hh³jåoh´M3ubjP)�”}”(hŒv4l2_ctrl_radio_filter”h]”jV)�”}”(hŒv4l2_ctrl_radio_filter”h]”hŒv4l2_ctrl_radio_filter”…”�”}”(hjøoh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjôoubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÔoh²hh³jåoh´M3ubjÀ)�”}”(hŒ(const struct v4l2_ctrl *ctrl)”h]”jÆ)�”}”(hŒconst struct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjpubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!ph²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjpubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj/ph²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjpubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjhjpubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjMph²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjJpubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jOpŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡júosbŒc.v4l2_ctrl_radio_filter”†”asbuh1hhjpubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmph²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjpubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj{ph²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjpubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjˆph²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjpubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj pubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÔoh²hh³jåoh´M3ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjÐoh²hh³jåoh´M3ubah}”(h]”jËoah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jåoh´M3hjÍoh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ#Standard filter for radio controls.”h]”hŒ#Standard filter for radio controls.”…”�”}”(hj²ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M3hj¯ph²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÍoh²hh³jåoh´M3ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jÊpj¤jÊpj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXF**Parameters** ``const struct v4l2_ctrl *ctrl`` The control that is filtered. **Description** This will return true for any controls that are valid for radio device nodes. Those are all of the V4L2_CID_AUDIO_* user controls and all FM transmitter class controls. This function is to be used with v4l2_ctrl_add_handler().”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjÔph]”hŒ Parameters”…”�”}”(hjÖph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÒpubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M7hjÎpubj)�”}”(hhh]”j)�”}”(hŒ?``const struct v4l2_ctrl *ctrl`` The control that is filtered. ”h]”(j )�”}”(hŒ ``const struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjóph]”hŒconst struct v4l2_ctrl *ctrl”…”�”}”(hjõph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjñpubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M5hjípubj&)�”}”(hhh]”hï)�”}”(hŒThe control that is filtered.”h]”hŒThe control that is filtered.”…”�”}”(hj qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jqh´M5hj qubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjípubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jqh´M5hjêpubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎpubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj.qh]”hŒ Description”…”�”}”(hj0qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj,qubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M7hjÎpubhï)�”}”(hŒ¨This will return true for any controls that are valid for radio device nodes. Those are all of the V4L2_CID_AUDIO_* user controls and all FM transmitter class controls.”h]”hŒ¨This will return true for any controls that are valid for radio device nodes. Those are all of the V4L2_CID_AUDIO_* user controls and all FM transmitter class controls.”…”�”}”(hjDqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M6hjÎpubhï)�”}”(hŒ9This function is to be used with v4l2_ctrl_add_handler().”h]”hŒ9This function is to be used with v4l2_ctrl_add_handler().”…”�”}”(hjSqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M:hjÎpubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_cluster (C function)”Œc.v4l2_ctrl_cluster”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒLvoid v4l2_ctrl_cluster (unsigned int ncontrols, struct v4l2_ctrl **controls)”h]”j')�”}”(hŒKvoid v4l2_ctrl_cluster(unsigned int ncontrols, struct v4l2_ctrl **controls)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‚qh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj~qh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M@ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘qh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj~qh²hh³j�qh´M@ubjP)�”}”(hŒv4l2_ctrl_cluster”h]”jV)�”}”(hŒv4l2_ctrl_cluster”h]”hŒv4l2_ctrl_cluster”…”�”}”(hj£qh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjŸqubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj~qh²hh³j�qh´M@ubjÀ)�”}”(hŒ5(unsigned int ncontrols, struct v4l2_ctrl **controls)”h]”(jÆ)�”}”(hŒunsigned int ncontrols”h]”(jÌ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj¿qh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj»qubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍqh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj»qubjÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjÛqh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj»qubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéqh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj»qubjV)�”}”(hŒ ncontrols”h]”hŒ ncontrols”…”�”}”(hj÷qh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj»qubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj·qubjÆ)�”}”(hŒstruct v4l2_ctrl **controls”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj rubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj rubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj.rh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj+rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j0rŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j¥qsbŒc.v4l2_ctrl_cluster”†”asbuh1hhj rubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjNrh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj rubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj\rh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj rubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjirh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj rubjV)�”}”(hŒcontrols”h]”hŒcontrols”…”�”}”(hjvrh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj rubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj·qubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj~qh²hh³j�qh´M@ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjzqh²hh³j�qh´M@ubah}”(h]”juqah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j�qh´M@hjwqh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ>Mark all controls in the cluster as belonging to that cluster.”h]”hŒ>Mark all controls in the cluster as belonging to that cluster.”…”�”}”(hj rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M@hj�rh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjwqh²hh³j�qh´M@ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j¸rj¤j¸rj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒ¨**Parameters** ``unsigned int ncontrols`` The number of controls in this cluster. ``struct v4l2_ctrl **controls`` The cluster control array of size **ncontrols**.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjÂrh]”hŒ Parameters”…”�”}”(hjÄrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÀrubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MDhj¼rubj)�”}”(hhh]”(j)�”}”(hŒC``unsigned int ncontrols`` The number of controls in this cluster. ”h]”(j )�”}”(hŒ``unsigned int ncontrols``”h]”j½)�”}”(hjárh]”hŒunsigned int ncontrols”…”�”}”(hjãrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjßrubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MChjÛrubj&)�”}”(hhh]”hï)�”}”(hŒ'The number of controls in this cluster.”h]”hŒ'The number of controls in this cluster.”…”�”}”(hjúrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jörh´MChj÷rubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jörh´MChjØrubj)�”}”(hŒP``struct v4l2_ctrl **controls`` The cluster control array of size **ncontrols**.”h]”(j )�”}”(hŒ``struct v4l2_ctrl **controls``”h]”j½)�”}”(hjsh]”hŒstruct v4l2_ctrl **controls”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MEhjsubj&)�”}”(hhh]”hï)�”}”(hŒ0The cluster control array of size **ncontrols**.”h]”(hŒ"The cluster control array of size ”…”�”}”(hj3sh²hh³Nh´Nubj¹)�”}”(hŒ **ncontrols**”h]”hŒ ncontrols”…”�”}”(hj;sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj3subhŒ.”…”�”}”(hj3sh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MDhj0subah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjsubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j/sh´MEhjØrubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_auto_cluster (C function)”Œc.v4l2_ctrl_auto_cluster”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒsvoid v4l2_ctrl_auto_cluster (unsigned int ncontrols, struct v4l2_ctrl **controls, u8 manual_val, bool set_volatile)”h]”j')�”}”(hŒrvoid v4l2_ctrl_auto_cluster(unsigned int ncontrols, struct v4l2_ctrl **controls, u8 manual_val, bool set_volatile)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj†sh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj‚sh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MJubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•sh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‚sh²hh³j”sh´MJubjP)�”}”(hŒv4l2_ctrl_auto_cluster”h]”jV)�”}”(hŒv4l2_ctrl_auto_cluster”h]”hŒv4l2_ctrl_auto_cluster”…”�”}”(hj§sh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj£subah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj‚sh²hh³j”sh´MJubjÀ)�”}”(hŒW(unsigned int ncontrols, struct v4l2_ctrl **controls, u8 manual_val, bool set_volatile)”h]”(jÆ)�”}”(hŒunsigned int ncontrols”h]”(jÌ)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÃsh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj¿subj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑsh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¿subjÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjßsh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj¿subj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjísh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¿subjV)�”}”(hŒ ncontrols”h]”hŒ ncontrols”…”�”}”(hjûsh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¿subeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj»subjÆ)�”}”(hŒstruct v4l2_ctrl **controls”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjtubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!th²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjtubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj2th²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj/tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j4tŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j©ssbŒc.v4l2_ctrl_auto_cluster”†”asbuh1hhjtubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRth²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjtubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj`th²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjtubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjmth²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjtubjV)�”}”(hŒcontrols”h]”hŒcontrols”…”�”}”(hjzth²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjtubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj»subjÆ)�”}”(hŒ u8 manual_val”h]”(h)�”}”(hhh]”jV)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj–th²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj“tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j˜tŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jNtŒc.v4l2_ctrl_auto_cluster”†”asbuh1hhj�tubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´th²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�tubjV)�”}”(hŒ manual_val”h]”hŒ manual_val”…”�”}”(hjÂth²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj»subjÆ)�”}”(hŒbool set_volatile”h]”(jÌ)�”}”(hj–mh]”hŒbool”…”�”}”(hjÛth²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj×tubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèth²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj×tubjV)�”}”(hŒ set_volatile”h]”hŒ set_volatile”…”�”}”(hjöth²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj×tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj»subeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj‚sh²hh³j”sh´MJubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj~sh²hh³j”sh´MJubah}”(h]”jysah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j”sh´MJhj{sh²hubj‚)�”}”(hhh]”hï)�”}”(hŒjMark all controls in the cluster as belonging to that cluster and set it up for autofoo/foo-type handling.”h]”hŒjMark all controls in the cluster as belonging to that cluster and set it up for autofoo/foo-type handling.”…”�”}”(hj uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MJhjuh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj{sh²hh³j”sh´MJubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j8uj¤j8uj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``unsigned int ncontrols`` The number of controls in this cluster. ``struct v4l2_ctrl **controls`` The cluster control array of size **ncontrols**. The first control must be the 'auto' control (e.g. autogain, autoexposure, etc.) ``u8 manual_val`` The value for the first control in the cluster that equals the manual setting. ``bool set_volatile`` If true, then all controls except the first auto control will be volatile. **Description** Use for control groups where one control selects some automatic feature and the other controls are only active whenever the automatic feature is turned off (manual mode). Typical examples: autogain vs gain, auto-whitebalance vs red and blue balance, etc. The behavior of such controls is as follows: When the autofoo control is set to automatic, then any manual controls are set to inactive and any reads will call g_volatile_ctrl (if the control was marked volatile). When the autofoo control is set to manual, then any manual controls will be marked active, and any reads will just return the current value without going through g_volatile_ctrl. In addition, this function will set the ``V4L2_CTRL_FLAG_UPDATE`` flag on the autofoo control and ``V4L2_CTRL_FLAG_INACTIVE`` on the foo control(s) if autofoo is in auto mode.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjBuh]”hŒ Parameters”…”�”}”(hjDuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj@uubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MNhjhjývh²hh³jwh´Mnubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj wh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j"wŒmodname”NŒ classname”Nj‹jŽ)�”•}”j‘]”j”)�”}”j‡Œv4l2_ctrl_find”sbŒc.v4l2_ctrl_find”†”asbuh1hhjývh²hh³jwh´Mnubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAwh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjývh²hh³jwh´Mnubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjOwh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjývh²hh³jwh´MnubjP)�”}”(hŒv4l2_ctrl_find”h]”jV)�”}”(hj>wh]”hŒv4l2_ctrl_find”…”�”}”(hj`wh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj\wubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjývh²hh³jwh´MnubjÀ)�”}”(hŒ'(struct v4l2_ctrl_handler *hdl, u32 id)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj{wh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjwwubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjˆwh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjwwubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj™wh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj–wubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j›wŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jhjwwubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÅwh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjwwubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjÒwh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjwwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjswubjÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjîwh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjëwubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jðwŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jhjçwubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hjxh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjçwubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjswubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjývh²hh³jwh´Mnubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjùvh²hh³jwh´Mnubah}”(h]”jôvah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jwh´Mnhjövh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ!Find a control with the given ID.”h]”hŒ!Find a control with the given ID.”…”�”}”(hjDxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MnhjAxh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjövh²hh³jwh´Mnubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j\xj¤j\xj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒû**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler. ``u32 id`` The control ID to find. **Description** If **hdl** == NULL this will return NULL as well. Will lock the handler so do not use from inside :c:type:`v4l2_ctrl_ops`.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjfxh]”hŒ Parameters”…”�”}”(hjhxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjdxubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mrhj`xubj)�”}”(hhh]”(j)�”}”(hŒ7``struct v4l2_ctrl_handler *hdl`` The control handler. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj…xh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj‡xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjƒxubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mphjxubj&)�”}”(hhh]”hï)�”}”(hŒThe control handler.”h]”hŒThe control handler.”…”�”}”(hjžxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jšxh´Mphj›xubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjxubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jšxh´Mphj|xubj)�”}”(hŒ#``u32 id`` The control ID to find. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hj¾xh]”hŒu32 id”…”�”}”(hjÀxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¼xubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mqhj¸xubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID to find.”h]”hŒThe control ID to find.”…”�”}”(hj×xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÓxh´MqhjÔxubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¸xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÓxh´Mqhj|xubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj`xubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjùxh]”hŒ Description”…”�”}”(hjûxh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj÷xubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mshj`xubhï)�”}”(hŒzIf **hdl** == NULL this will return NULL as well. Will lock the handler so do not use from inside :c:type:`v4l2_ctrl_ops`.”h]”(hŒIf ”…”�”}”(hjyh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjyubhŒX == NULL this will return NULL as well. Will lock the handler so do not use from inside ”…”�”}”(hjyh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hj+yh]”hŒ v4l2_ctrl_ops”…”�”}”(hj-yh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj)yubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MrhjyubhŒ.”…”�”}”(hjyh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jHyh´Mrhj`xubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_activate (C function)”Œc.v4l2_ctrl_activate”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ=void v4l2_ctrl_activate (struct v4l2_ctrl *ctrl, bool active)”h]”j')�”}”(hŒhjoyh²hh³j�yh´MyubjP)�”}”(hŒv4l2_ctrl_activate”h]”jV)�”}”(hŒv4l2_ctrl_activate”h]”hŒv4l2_ctrl_activate”…”�”}”(hj”yh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�yubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjoyh²hh³j�yh´MyubjÀ)�”}”(hŒ%(struct v4l2_ctrl *ctrl, bool active)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj°yh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¬yubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½yh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬yubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjÎyh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjËyubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÐyŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j–ysbŒc.v4l2_ctrl_activate”†”asbuh1hhj¬yubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjîyh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬yubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjüyh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¬yubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj zh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¬yubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj¨yubjÆ)�”}”(hŒ bool active”h]”(jÌ)�”}”(hj–mh]”hŒbool”…”�”}”(hj"zh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjzubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/zh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjzubjV)�”}”(hŒactive”h]”hŒactive”…”�”}”(hj=zh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj¨yubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjoyh²hh³j�yh´Myubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjkyh²hh³j�yh´Myubah}”(h]”jfyah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j�yh´Myhjhyh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ$Make the control active or inactive.”h]”hŒ$Make the control active or inactive.”…”�”}”(hjgzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Myhjdzh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjhyh²hh³j�yh´Myubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jzj¤jzj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX¥**Parameters** ``struct v4l2_ctrl *ctrl`` The control to (de)activate. ``bool active`` True if the control should become active. **Description** This sets or clears the V4L2_CTRL_FLAG_INACTIVE flag atomically. Does nothing if **ctrl** == NULL. This will usually be called from within the s_ctrl op. The V4L2_EVENT_CTRL event will be generated afterwards. This function assumes that the control handler is locked.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj‰zh]”hŒ Parameters”…”�”}”(hj‹zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‡zubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M}hjƒzubj)�”}”(hhh]”(j)�”}”(hŒ8``struct v4l2_ctrl *ctrl`` The control to (de)activate. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj¨zh]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjªzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦zubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mzhj¢zubj&)�”}”(hhh]”hï)�”}”(hŒThe control to (de)activate.”h]”hŒThe control to (de)activate.”…”�”}”(hjÁzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j½zh´Mzhj¾zubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢zubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½zh´MzhjŸzubj)�”}”(hŒ:``bool active`` True if the control should become active. ”h]”(j )�”}”(hŒ``bool active``”h]”j½)�”}”(hjázh]”hŒ bool active”…”�”}”(hjãzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjßzubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M{hjÛzubj&)�”}”(hhh]”hï)�”}”(hŒ)True if the control should become active.”h]”hŒ)True if the control should become active.”…”�”}”(hjúzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jözh´M{hj÷zubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jözh´M{hjŸzubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒzubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj{h]”hŒ Description”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M}hjƒzubhï)�”}”(hŒÑThis sets or clears the V4L2_CTRL_FLAG_INACTIVE flag atomically. Does nothing if **ctrl** == NULL. This will usually be called from within the s_ctrl op. The V4L2_EVENT_CTRL event will be generated afterwards.”h]”(hŒQThis sets or clears the V4L2_CTRL_FLAG_INACTIVE flag atomically. Does nothing if ”…”�”}”(hj2{h²hh³Nh´Nubj¹)�”}”(hŒ**ctrl**”h]”hŒctrl”…”�”}”(hj:{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj2{ubhŒx == NULL. This will usually be called from within the s_ctrl op. The V4L2_EVENT_CTRL event will be generated afterwards.”…”�”}”(hj2{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M|hjƒzubhï)�”}”(hŒ9This function assumes that the control handler is locked.”h]”hŒ9This function assumes that the control handler is locked.”…”�”}”(hjS{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjƒzubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ__v4l2_ctrl_grab (C function)”Œc.__v4l2_ctrl_grab”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒhj~{h²hh³j�{h´M‡ubjP)�”}”(hŒ__v4l2_ctrl_grab”h]”jV)�”}”(hŒ__v4l2_ctrl_grab”h]”hŒ__v4l2_ctrl_grab”…”�”}”(hj£{h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjŸ{ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj~{h²hh³j�{h´M‡ubjÀ)�”}”(hŒ&(struct v4l2_ctrl *ctrl, bool grabbed)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¿{h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj»{ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌ{h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj»{ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjÝ{h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÚ{ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jß{Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j¥{sbŒc.__v4l2_ctrl_grab”†”asbuh1hhj»{ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý{h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj»{ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj |h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj»{ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj»{ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj·{ubjÆ)�”}”(hŒ bool grabbed”h]”(jÌ)�”}”(hj–mh]”hŒbool”…”�”}”(hj1|h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj-|ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>|h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj-|ubjV)�”}”(hŒgrabbed”h]”hŒgrabbed”…”�”}”(hjL|h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj-|ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj·{ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj~{h²hh³j�{h´M‡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjz{h²hh³j�{h´M‡ubah}”(h]”ju{ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j�{h´M‡hjw{h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ#Unlocked variant of v4l2_ctrl_grab.”h]”hŒ#Unlocked variant of v4l2_ctrl_grab.”…”�”}”(hjv|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‡hjs|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjw{h²hh³j�{h´M‡ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jŽ|j¤jŽ|j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXÌ**Parameters** ``struct v4l2_ctrl *ctrl`` The control to (de)activate. ``bool grabbed`` True if the control should become grabbed. **Description** This sets or clears the V4L2_CTRL_FLAG_GRABBED flag atomically. Does nothing if **ctrl** == NULL. The V4L2_EVENT_CTRL event will be generated afterwards. This will usually be called when starting or stopping streaming in the driver. This function assumes that the control handler is locked by the caller.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj˜|h]”hŒ Parameters”…”�”}”(hjš|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj–|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‹hj’|ubj)�”}”(hhh]”(j)�”}”(hŒ8``struct v4l2_ctrl *ctrl`` The control to (de)activate. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj·|h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hj¹|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjµ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‰hj±|ubj&)�”}”(hhh]”hï)�”}”(hŒThe control to (de)activate.”h]”hŒThe control to (de)activate.”…”�”}”(hjÐ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÌ|h´M‰hjÍ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj±|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÌ|h´M‰hj®|ubj)�”}”(hŒ<``bool grabbed`` True if the control should become grabbed. ”h]”(j )�”}”(hŒ``bool grabbed``”h]”j½)�”}”(hjð|h]”hŒ bool grabbed”…”�”}”(hjò|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjî|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŠhjê|ubj&)�”}”(hhh]”hï)�”}”(hŒ*True if the control should become grabbed.”h]”hŒ*True if the control should become grabbed.”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j}h´MŠhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjê|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j}h´MŠhj®|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj’|ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj+}h]”hŒ Description”…”�”}”(hj-}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj)}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŒhj’|ubhï)�”}”(hŒèThis sets or clears the V4L2_CTRL_FLAG_GRABBED flag atomically. Does nothing if **ctrl** == NULL. The V4L2_EVENT_CTRL event will be generated afterwards. This will usually be called when starting or stopping streaming in the driver.”h]”(hŒPThis sets or clears the V4L2_CTRL_FLAG_GRABBED flag atomically. Does nothing if ”…”�”}”(hjA}h²hh³Nh´Nubj¹)�”}”(hŒ**ctrl**”h]”hŒctrl”…”�”}”(hjI}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjA}ubhŒ� == NULL. The V4L2_EVENT_CTRL event will be generated afterwards. This will usually be called when starting or stopping streaming in the driver.”…”�”}”(hjA}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‹hj’|ubhï)�”}”(hŒGThis function assumes that the control handler is locked by the caller.”h]”hŒGThis function assumes that the control handler is locked by the caller.”…”�”}”(hjb}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‘hj’|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_grab (C function)”Œc.v4l2_ctrl_grab”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ:void v4l2_ctrl_grab (struct v4l2_ctrl *ctrl, bool grabbed)”h]”j')�”}”(hŒ9void v4l2_ctrl_grab(struct v4l2_ctrl *ctrl, bool grabbed)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj‘}h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj�}h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M—ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj }h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�}h²hh³jŸ}h´M—ubjP)�”}”(hŒv4l2_ctrl_grab”h]”jV)�”}”(hŒv4l2_ctrl_grab”h]”hŒv4l2_ctrl_grab”…”�”}”(hj²}h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj®}ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj�}h²hh³jŸ}h´M—ubjÀ)�”}”(hŒ&(struct v4l2_ctrl *ctrl, bool grabbed)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÎ}h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÊ}ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛ}h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÊ}ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjì}h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjé}ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jî}Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j´}sbŒc.v4l2_ctrl_grab”†”asbuh1hhjÊ}ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ~h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÊ}ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÊ}ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj'~h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÊ}ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÆ}ubjÆ)�”}”(hŒ bool grabbed”h]”(jÌ)�”}”(hj–mh]”hŒbool”…”�”}”(hj@~h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj<~ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjM~h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj<~ubjV)�”}”(hŒgrabbed”h]”hŒgrabbed”…”�”}”(hj[~h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj<~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÆ}ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj�}h²hh³jŸ}h´M—ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj‰}h²hh³jŸ}h´M—ubah}”(h]”j„}ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jŸ}h´M—hj†}h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ+Mark the control as grabbed or not grabbed.”h]”hŒ+Mark the control as grabbed or not grabbed.”…”�”}”(hj…~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M—hj‚~h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj†}h²hh³jŸ}h´M—ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j�~j¤j�~j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXà**Parameters** ``struct v4l2_ctrl *ctrl`` The control to (de)activate. ``bool grabbed`` True if the control should become grabbed. **Description** This sets or clears the V4L2_CTRL_FLAG_GRABBED flag atomically. Does nothing if **ctrl** == NULL. The V4L2_EVENT_CTRL event will be generated afterwards. This will usually be called when starting or stopping streaming in the driver. This function assumes that the control handler is not locked and will take the lock itself.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj§~h]”hŒ Parameters”…”�”}”(hj©~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¥~ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M›hj¡~ubj)�”}”(hhh]”(j)�”}”(hŒ8``struct v4l2_ctrl *ctrl`` The control to (de)activate. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjÆ~h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjÈ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÄ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M™hjÀ~ubj&)�”}”(hhh]”hï)�”}”(hŒThe control to (de)activate.”h]”hŒThe control to (de)activate.”…”�”}”(hjß~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÛ~h´M™hjÜ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÀ~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÛ~h´M™hj½~ubj)�”}”(hŒ<``bool grabbed`` True if the control should become grabbed. ”h]”(j )�”}”(hŒ``bool grabbed``”h]”j½)�”}”(hjÿ~h]”hŒ bool grabbed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjý~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mšhjù~ubj&)�”}”(hhh]”hï)�”}”(hŒ*True if the control should become grabbed.”h]”hŒ*True if the control should become grabbed.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jh´Mšhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjù~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh´Mšhj½~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¡~ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj:h]”hŒ Description”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mœhj¡~ubhï)�”}”(hŒèThis sets or clears the V4L2_CTRL_FLAG_GRABBED flag atomically. Does nothing if **ctrl** == NULL. The V4L2_EVENT_CTRL event will be generated afterwards. This will usually be called when starting or stopping streaming in the driver.”h]”(hŒPThis sets or clears the V4L2_CTRL_FLAG_GRABBED flag atomically. Does nothing if ”…”�”}”(hjPh²hh³Nh´Nubj¹)�”}”(hŒ**ctrl**”h]”hŒctrl”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjPubhŒ� == NULL. The V4L2_EVENT_CTRL event will be generated afterwards. This will usually be called when starting or stopping streaming in the driver.”…”�”}”(hjPh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M›hj¡~ubhï)�”}”(hŒ[This function assumes that the control handler is not locked and will take the lock itself.”h]”hŒ[This function assumes that the control handler is not locked and will take the lock itself.”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¡hj¡~ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%__v4l2_ctrl_modify_range (C function)”Œc.__v4l2_ctrl_modify_range”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒZint __v4l2_ctrl_modify_range (struct v4l2_ctrl *ctrl, s64 min, s64 max, u64 step, s64 def)”h]”j')�”}”(hŒYint __v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl, s64 min, s64 max, u64 step, s64 def)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjœh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M°ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjœh²hh³j®h´M°ubjP)�”}”(hŒ__v4l2_ctrl_modify_range”h]”jV)�”}”(hŒ__v4l2_ctrl_modify_range”h]”hŒ__v4l2_ctrl_modify_range”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj½ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjœh²hh³j®h´M°ubjÀ)�”}”(hŒ=(struct v4l2_ctrl *ctrl, s64 min, s64 max, u64 step, s64 def)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÙubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÙubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jýŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jÃsbŒc.__v4l2_ctrl_modify_range”†”asbuh1hhjÙubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÙubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj)€h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÙubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj6€h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÕubjÆ)�”}”(hŒs64 min”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjR€h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjO€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jT€Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j€Œc.__v4l2_ctrl_modify_range”†”asbuh1hhjK€ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp€h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjK€ubjV)�”}”(hŒmin”h]”hŒmin”…”�”}”(hj~€h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjK€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÕubjÆ)�”}”(hŒs64 max”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjš€h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj—€ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jœ€Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j€Œc.__v4l2_ctrl_modify_range”†”asbuh1hhj“€ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¸€h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj“€ubjV)�”}”(hŒmax”h]”hŒmax”…”�”}”(hjÆ€h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj“€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÕubjÆ)�”}”(hŒu64 step”h]”(h)�”}”(hhh]”jV)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjâ€h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj߀ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j䀌modname”NŒ classname”Nj‹jŽ)�”}”j‘]”j€Œc.__v4l2_ctrl_modify_range”†”asbuh1hhjÛ€ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÛ€ubjV)�”}”(hŒstep”h]”hŒstep”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÛ€ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÕubjÆ)�”}”(hŒs64 def”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj*�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj'�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j,�Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j€Œc.__v4l2_ctrl_modify_range”†”asbuh1hhj#�ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj#�ubjV)�”}”(hŒdef”h]”hŒdef”…”�”}”(hjV�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj#�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÕubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjœh²hh³j®h´M°ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj˜h²hh³j®h´M°ubah}”(h]”j“ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j®h´M°hj•h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ,Unlocked variant of v4l2_ctrl_modify_range()”h]”hŒ,Unlocked variant of v4l2_ctrl_modify_range()”…”�”}”(hj€�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M°hj}�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•h²hh³j®h´M°ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j˜�j¤j˜�j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX†**Parameters** ``struct v4l2_ctrl *ctrl`` The control to update. ``s64 min`` The control's minimum value. ``s64 max`` The control's maximum value. ``u64 step`` The control's step value ``s64 def`` The control's default value. **Description** Update the range of a control on the fly. This works for control types INTEGER, BOOLEAN, MENU, INTEGER MENU and BITMASK. For menu controls the **step** value is interpreted as a menu_skip_mask. An error is returned if one of the range arguments is invalid for this control type. The caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_modify_range().”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¢�h]”hŒ Parameters”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M´hjœ�ubj)�”}”(hhh]”(j)�”}”(hŒ2``struct v4l2_ctrl *ctrl`` The control to update. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjÁ�h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjÃ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¿�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M²hj»�ubj&)�”}”(hhh]”hï)�”}”(hŒThe control to update.”h]”hŒThe control to update.”…”�”}”(hjÚ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÖ�h´M²hj×�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÖ�h´M²hj¸�ubj)�”}”(hŒ)``s64 min`` The control's minimum value. ”h]”(j )�”}”(hŒ ``s64 min``”h]”j½)�”}”(hjú�h]”hŒs64 min”…”�”}”(hjü�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjø�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M³hjô�ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's minimum value.”h]”hŒThe control’s minimum value.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‚h´M³hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjô�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‚h´M³hj¸�ubj)�”}”(hŒ)``s64 max`` The control's maximum value. ”h]”(j )�”}”(hŒ ``s64 max``”h]”j½)�”}”(hj3‚h]”hŒs64 max”…”�”}”(hj5‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj1‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M´hj-‚ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's maximum value.”h]”hŒThe control’s maximum value.”…”�”}”(hjL‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jH‚h´M´hjI‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj-‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jH‚h´M´hj¸�ubj)�”}”(hŒ&``u64 step`` The control's step value ”h]”(j )�”}”(hŒ ``u64 step``”h]”j½)�”}”(hjl‚h]”hŒu64 step”…”�”}”(hjn‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mµhjf‚ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's step value”h]”hŒThe control’s step value”…”�”}”(hj…‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j�‚h´Mµhj‚‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjf‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�‚h´Mµhj¸�ubj)�”}”(hŒ)``s64 def`` The control's default value. ”h]”(j )�”}”(hŒ ``s64 def``”h]”j½)�”}”(hj¥‚h]”hŒs64 def”…”�”}”(hj§‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj£‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¶hjŸ‚ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hj¾‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jº‚h´M¶hj»‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jº‚h´M¶hj¸�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ�ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjà‚h]”hŒ Description”…”�”}”(hjâ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÞ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¸hjœ�ubhï)�”}”(hŒÁUpdate the range of a control on the fly. This works for control types INTEGER, BOOLEAN, MENU, INTEGER MENU and BITMASK. For menu controls the **step** value is interpreted as a menu_skip_mask.”h]”(hŒ�Update the range of a control on the fly. This works for control types INTEGER, BOOLEAN, MENU, INTEGER MENU and BITMASK. For menu controls the ”…”�”}”(hjö‚h²hh³Nh´Nubj¹)�”}”(hŒ**step**”h]”hŒstep”…”�”}”(hjþ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjö‚ubhŒ* value is interpreted as a menu_skip_mask.”…”�”}”(hjö‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M·hjœ�ubhï)�”}”(hŒTAn error is returned if one of the range arguments is invalid for this control type.”h]”hŒTAn error is returned if one of the range arguments is invalid for this control type.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M»hjœ�ubhï)�”}”(hŒjThe caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_modify_range().”h]”hŒjThe caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_modify_range().”…”�”}”(hj&ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¾hjœ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_modify_range (C function)”Œc.v4l2_ctrl_modify_range”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒXint v4l2_ctrl_modify_range (struct v4l2_ctrl *ctrl, s64 min, s64 max, u64 step, s64 def)”h]”j')�”}”(hŒWint v4l2_ctrl_modify_range(struct v4l2_ctrl *ctrl, s64 min, s64 max, u64 step, s64 def)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjUƒh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjQƒh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÆubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjdƒh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjQƒh²hh³jcƒh´MÆubjP)�”}”(hŒv4l2_ctrl_modify_range”h]”jV)�”}”(hŒv4l2_ctrl_modify_range”h]”hŒv4l2_ctrl_modify_range”…”�”}”(hjvƒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjrƒubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjQƒh²hh³jcƒh´MÆubjÀ)�”}”(hŒ=(struct v4l2_ctrl *ctrl, s64 min, s64 max, u64 step, s64 def)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj’ƒh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjŽƒubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸƒh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjŽƒubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj°ƒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj­ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j²ƒŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jxƒsbŒc.v4l2_ctrl_modify_range”†”asbuh1hhjŽƒubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjЃh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjŽƒubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÞƒh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjŽƒubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjëƒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjŽƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjŠƒubjÆ)�”}”(hŒs64 min”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j „Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j̃Œc.v4l2_ctrl_modify_range”†”asbuh1hhj„ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj%„h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj„ubjV)�”}”(hŒmin”h]”hŒmin”…”�”}”(hj3„h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjŠƒubjÆ)�”}”(hŒs64 max”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjO„h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjL„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jQ„Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j̃Œc.v4l2_ctrl_modify_range”†”asbuh1hhjH„ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjm„h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjH„ubjV)�”}”(hŒmax”h]”hŒmax”…”�”}”(hj{„h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjH„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjŠƒubjÆ)�”}”(hŒu64 step”h]”(h)�”}”(hhh]”jV)�”}”(hŒu64”h]”hŒu64”…”�”}”(hj—„h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj”„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j™„Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j̃Œc.v4l2_ctrl_modify_range”†”asbuh1hhj�„ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ„h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�„ubjV)�”}”(hŒstep”h]”hŒstep”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjŠƒubjÆ)�”}”(hŒs64 def”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjß„h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÜ„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jᄌmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j̃Œc.v4l2_ctrl_modify_range”†”asbuh1hhjØ„ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjý„h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjØ„ubjV)�”}”(hŒdef”h]”hŒdef”…”�”}”(hj …h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjØ„ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjŠƒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjQƒh²hh³jcƒh´MÆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjMƒh²hh³jcƒh´MÆubah}”(h]”jHƒah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jcƒh´MÆhjJƒh²hubj‚)�”}”(hhh]”hï)�”}”(hŒUpdate the range of a control.”h]”hŒUpdate the range of a control.”…”�”}”(hj5…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÆhj2…h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjJƒh²hh³jcƒh´MÆubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jM…j¤jM…j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXw**Parameters** ``struct v4l2_ctrl *ctrl`` The control to update. ``s64 min`` The control's minimum value. ``s64 max`` The control's maximum value. ``u64 step`` The control's step value ``s64 def`` The control's default value. **Description** Update the range of a control on the fly. This works for control types INTEGER, BOOLEAN, MENU, INTEGER MENU and BITMASK. For menu controls the **step** value is interpreted as a menu_skip_mask. An error is returned if one of the range arguments is invalid for this control type. This function assumes that the control handler is not locked and will take the lock itself.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjW…h]”hŒ Parameters”…”�”}”(hjY…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjU…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÊhjQ…ubj)�”}”(hhh]”(j)�”}”(hŒ2``struct v4l2_ctrl *ctrl`` The control to update. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjv…h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjx…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjt…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÈhjp…ubj&)�”}”(hhh]”hï)�”}”(hŒThe control to update.”h]”hŒThe control to update.”…”�”}”(hj�…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‹…h´MÈhjŒ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjp…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‹…h´MÈhjm…ubj)�”}”(hŒ)``s64 min`` The control's minimum value. ”h]”(j )�”}”(hŒ ``s64 min``”h]”j½)�”}”(hj¯…h]”hŒs64 min”…”�”}”(hj±…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj­…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÉhj©…ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's minimum value.”h]”hŒThe control’s minimum value.”…”�”}”(hjÈ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÄ…h´MÉhjÅ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj©…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÄ…h´MÉhjm…ubj)�”}”(hŒ)``s64 max`` The control's maximum value. ”h]”(j )�”}”(hŒ ``s64 max``”h]”j½)�”}”(hjè…h]”hŒs64 max”…”�”}”(hjê…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjæ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÊhjâ…ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's maximum value.”h]”hŒThe control’s maximum value.”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jý…h´MÊhjþ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjâ…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jý…h´MÊhjm…ubj)�”}”(hŒ&``u64 step`` The control's step value ”h]”(j )�”}”(hŒ ``u64 step``”h]”j½)�”}”(hj!†h]”hŒu64 step”…”�”}”(hj#†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MËhj†ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's step value”h]”hŒThe control’s step value”…”�”}”(hj:†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j6†h´MËhj7†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j6†h´MËhjm…ubj)�”}”(hŒ)``s64 def`` The control's default value. ”h]”(j )�”}”(hŒ ``s64 def``”h]”j½)�”}”(hjZ†h]”hŒs64 def”…”�”}”(hj\†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjX†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÌhjT†ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's default value.”h]”hŒThe control’s default value.”…”�”}”(hjs†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jo†h´MÌhjp†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjT†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jo†h´MÌhjm…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ…ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj•†h]”hŒ Description”…”�”}”(hj—†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj“†ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÎhjQ…ubhï)�”}”(hŒÁUpdate the range of a control on the fly. This works for control types INTEGER, BOOLEAN, MENU, INTEGER MENU and BITMASK. For menu controls the **step** value is interpreted as a menu_skip_mask.”h]”(hŒ�Update the range of a control on the fly. This works for control types INTEGER, BOOLEAN, MENU, INTEGER MENU and BITMASK. For menu controls the ”…”�”}”(hj«†h²hh³Nh´Nubj¹)�”}”(hŒ**step**”h]”hŒstep”…”�”}”(hj³†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj«†ubhŒ* value is interpreted as a menu_skip_mask.”…”�”}”(hj«†h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÍhjQ…ubhï)�”}”(hŒTAn error is returned if one of the range arguments is invalid for this control type.”h]”hŒTAn error is returned if one of the range arguments is invalid for this control type.”…”�”}”(hj̆h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÑhjQ…ubhï)�”}”(hŒ[This function assumes that the control handler is not locked and will take the lock itself.”h]”hŒ[This function assumes that the control handler is not locked and will take the lock itself.”…”�”}”(hjÛ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÔhjQ…ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ*__v4l2_ctrl_modify_dimensions (C function)”Œc.__v4l2_ctrl_modify_dimensions”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒXint __v4l2_ctrl_modify_dimensions (struct v4l2_ctrl *ctrl, u32 dims[V4L2_CTRL_MAX_DIMS])”h]”j')�”}”(hŒWint __v4l2_ctrl_modify_dimensions(struct v4l2_ctrl *ctrl, u32 dims[V4L2_CTRL_MAX_DIMS])”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj‡h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Måubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‡h²hh³j‡h´MåubjP)�”}”(hŒ__v4l2_ctrl_modify_dimensions”h]”jV)�”}”(hŒ__v4l2_ctrl_modify_dimensions”h]”hŒ__v4l2_ctrl_modify_dimensions”…”�”}”(hj+‡h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj'‡ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj‡h²hh³j‡h´MåubjÀ)�”}”(hŒ6(struct v4l2_ctrl *ctrl, u32 dims[V4L2_CTRL_MAX_DIMS])”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjG‡h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjC‡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjT‡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjC‡ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hje‡h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjb‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jg‡Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j-‡sbŒc.__v4l2_ctrl_modify_dimensions”†”asbuh1hhjC‡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…‡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjC‡ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj“‡h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjC‡ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj ‡h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjC‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj?‡ubjÆ)�”}”(hŒu32 dims[V4L2_CTRL_MAX_DIMS]”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¼‡h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¹‡ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¾‡Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j�‡Œc.__v4l2_ctrl_modify_dimensions”†”asbuh1hhjµ‡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ‡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjµ‡ubjV)�”}”(hŒdims”h]”hŒdims”…”�”}”(hjè‡h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjµ‡ubjë)�”}”(hŒ[”h]”hŒ[”…”�”}”(hjö‡h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjµ‡ubh)�”}”(hhh]”jV)�”}”(hŒV4L2_CTRL_MAX_DIMS”h]”hŒV4L2_CTRL_MAX_DIMS”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j ˆŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j�‡Œc.__v4l2_ctrl_modify_dimensions”†”asbuh1hhjµ‡ubjë)�”}”(hŒ]”h]”hŒ]”…”�”}”(hj%ˆh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjµ‡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj?‡ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj‡h²hh³j‡h´Måubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj‡h²hh³j‡h´Måubah}”(h]”jý†ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j‡h´Måhjÿ†h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ1Unlocked variant of v4l2_ctrl_modify_dimensions()”h]”hŒ1Unlocked variant of v4l2_ctrl_modify_dimensions()”…”�”}”(hjOˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MåhjLˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÿ†h²hh³j‡h´Måubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jgˆj¤jgˆj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX½**Parameters** ``struct v4l2_ctrl *ctrl`` The control to update. ``u32 dims[V4L2_CTRL_MAX_DIMS]`` The control's new dimensions. **Description** Update the dimensions of an array control on the fly. The elements of the array are reset to their default value, even if the dimensions are unchanged. An error is returned if **dims** is invalid for this control. The caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_modify_dimensions(). **Note** calling this function when the same control is used in pending requests is untested. It should work (a request with the wrong size of the control will drop that control silently), but it will be very confusing.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjqˆh]”hŒ Parameters”…”�”}”(hjsˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjoˆubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Méhjkˆubj)�”}”(hhh]”(j)�”}”(hŒ2``struct v4l2_ctrl *ctrl`` The control to update. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj�ˆh]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hj’ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŽˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MçhjŠˆubj&)�”}”(hhh]”hï)�”}”(hŒThe control to update.”h]”hŒThe control to update.”…”�”}”(hj©ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¥ˆh´Mçhj¦ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŠˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¥ˆh´Mçhj‡ˆubj)�”}”(hŒ?``u32 dims[V4L2_CTRL_MAX_DIMS]`` The control's new dimensions. ”h]”(j )�”}”(hŒ ``u32 dims[V4L2_CTRL_MAX_DIMS]``”h]”j½)�”}”(hjɈh]”hŒu32 dims[V4L2_CTRL_MAX_DIMS]”…”�”}”(hjˈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjLjubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MèhjÈubj&)�”}”(hhh]”hï)�”}”(hŒThe control's new dimensions.”h]”hŒThe control’s new dimensions.”…”�”}”(hjâˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÞˆh´Mèhj߈ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÞˆh´Mèhj‡ˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjkˆubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj‰h]”hŒ Description”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mêhjkˆubhï)�”}”(hŒ—Update the dimensions of an array control on the fly. The elements of the array are reset to their default value, even if the dimensions are unchanged.”h]”hŒ—Update the dimensions of an array control on the fly. The elements of the array are reset to their default value, even if the dimensions are unchanged.”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Méhjkˆubhï)�”}”(hŒ=An error is returned if **dims** is invalid for this control.”h]”(hŒAn error is returned if ”…”�”}”(hj)‰h²hh³Nh´Nubj¹)�”}”(hŒ**dims**”h]”hŒdims”…”�”}”(hj1‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj)‰ubhŒ is invalid for this control.”…”�”}”(hj)‰h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Míhjkˆubhï)�”}”(hŒoThe caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_modify_dimensions().”h]”hŒoThe caller is responsible for acquiring the control handler mutex on behalf of __v4l2_ctrl_modify_dimensions().”…”�”}”(hjJ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mïhjkˆubhï)�”}”(hŒ**Note**”h]”j¹)�”}”(hj[‰h]”hŒNote”…”�”}”(hj]‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjY‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mòhjkˆubhï)�”}”(hŒÒcalling this function when the same control is used in pending requests is untested. It should work (a request with the wrong size of the control will drop that control silently), but it will be very confusing.”h]”hŒÒcalling this function when the same control is used in pending requests is untested. It should work (a request with the wrong size of the control will drop that control silently), but it will be very confusing.”…”�”}”(hjq‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Móhjkˆubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(v4l2_ctrl_modify_dimensions (C function)”Œc.v4l2_ctrl_modify_dimensions”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒVint v4l2_ctrl_modify_dimensions (struct v4l2_ctrl *ctrl, u32 dims[V4L2_CTRL_MAX_DIMS])”h]”j')�”}”(hŒUint v4l2_ctrl_modify_dimensions(struct v4l2_ctrl *ctrl, u32 dims[V4L2_CTRL_MAX_DIMS])”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjœ‰h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mûubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯‰h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjœ‰h²hh³j®‰h´MûubjP)�”}”(hŒv4l2_ctrl_modify_dimensions”h]”jV)�”}”(hŒv4l2_ctrl_modify_dimensions”h]”hŒv4l2_ctrl_modify_dimensions”…”�”}”(hjÁ‰h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj½‰ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjœ‰h²hh³j®‰h´MûubjÀ)�”}”(hŒ6(struct v4l2_ctrl *ctrl, u32 dims[V4L2_CTRL_MAX_DIMS])”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj݉h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÙ‰ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjê‰h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÙ‰ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjû‰h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjø‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jý‰Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jÉsbŒc.v4l2_ctrl_modify_dimensions”†”asbuh1hhjÙ‰ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÙ‰ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj)Šh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÙ‰ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj6Šh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÙ‰ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÕ‰ubjÆ)�”}”(hŒu32 dims[V4L2_CTRL_MAX_DIMS]”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjRŠh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjOŠubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jTŠŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jŠŒc.v4l2_ctrl_modify_dimensions”†”asbuh1hhjKŠubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpŠh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjKŠubjV)�”}”(hŒdims”h]”hŒdims”…”�”}”(hj~Šh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjKŠubjë)�”}”(hjø‡h]”hŒ[”…”�”}”(hjŒŠh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjKŠubh)�”}”(hhh]”jV)�”}”(hŒV4L2_CTRL_MAX_DIMS”h]”hŒV4L2_CTRL_MAX_DIMS”…”�”}”(hjœŠh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj™Šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jžŠŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jŠŒc.v4l2_ctrl_modify_dimensions”†”asbuh1hhjKŠubjë)�”}”(hj'ˆh]”hŒ]”…”�”}”(hjºŠh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjKŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÕ‰ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjœ‰h²hh³j®‰h´Mûubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj˜‰h²hh³j®‰h´Mûubah}”(h]”j“‰ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j®‰h´Mûhj•‰h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ*Update the dimensions of an array control.”h]”hŒ*Update the dimensions of an array control.”…”�”}”(hjãŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MûhjàŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj•‰h²hh³j®‰h´Mûubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jûŠj¤jûŠj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX®**Parameters** ``struct v4l2_ctrl *ctrl`` The control to update. ``u32 dims[V4L2_CTRL_MAX_DIMS]`` The control's new dimensions. **Description** Update the dimensions of an array control on the fly. The elements of the array are reset to their default value, even if the dimensions are unchanged. An error is returned if **dims** is invalid for this control type. This function assumes that the control handler is not locked and will take the lock itself. **Note** calling this function when the same control is used in pending requests is untested. It should work (a request with the wrong size of the control will drop that control silently), but it will be very confusing.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj‹h]”hŒ Parameters”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÿhjÿŠubj)�”}”(hhh]”(j)�”}”(hŒ2``struct v4l2_ctrl *ctrl`` The control to update. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj$‹h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hj&‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj"‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mýhj‹ubj&)�”}”(hhh]”hï)�”}”(hŒThe control to update.”h]”hŒThe control to update.”…”�”}”(hj=‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j9‹h´Mýhj:‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j9‹h´Mýhj‹ubj)�”}”(hŒ?``u32 dims[V4L2_CTRL_MAX_DIMS]`` The control's new dimensions. ”h]”(j )�”}”(hŒ ``u32 dims[V4L2_CTRL_MAX_DIMS]``”h]”j½)�”}”(hj]‹h]”hŒu32 dims[V4L2_CTRL_MAX_DIMS]”…”�”}”(hj_‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj[‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MþhjW‹ubj&)�”}”(hhh]”hï)�”}”(hŒThe control's new dimensions.”h]”hŒThe control’s new dimensions.”…”�”}”(hjv‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jr‹h´Mþhjs‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjW‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jr‹h´Mþhj‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÿŠubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj˜‹h]”hŒ Description”…”�”}”(hjš‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj–‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÿŠubhï)�”}”(hŒ—Update the dimensions of an array control on the fly. The elements of the array are reset to their default value, even if the dimensions are unchanged.”h]”hŒ—Update the dimensions of an array control on the fly. The elements of the array are reset to their default value, even if the dimensions are unchanged.”…”�”}”(hj®‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÿhjÿŠubhï)�”}”(hŒBAn error is returned if **dims** is invalid for this control type.”h]”(hŒAn error is returned if ”…”�”}”(hj½‹h²hh³Nh´Nubj¹)�”}”(hŒ**dims**”h]”hŒdims”…”�”}”(hjÅ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj½‹ubhŒ" is invalid for this control type.”…”�”}”(hj½‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÿŠubhï)�”}”(hŒ[This function assumes that the control handler is not locked and will take the lock itself.”h]”hŒ[This function assumes that the control handler is not locked and will take the lock itself.”…”�”}”(hjÞ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”•h´MhjÿŠubhï)�”}”(hŒ**Note**”h]”j¹)�”}”(hjï‹h]”hŒNote”…”�”}”(hjñ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjí‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÿŠubhï)�”}”(hŒÒcalling this function when the same control is used in pending requests is untested. It should work (a request with the wrong size of the control will drop that control silently), but it will be very confusing.”h]”hŒÒcalling this function when the same control is used in pending requests is untested. It should work (a request with the wrong size of the control will drop that control silently), but it will be very confusing.”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjÿŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_notify (C function)”Œc.v4l2_ctrl_notify”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒWvoid v4l2_ctrl_notify (struct v4l2_ctrl *ctrl, v4l2_ctrl_notify_fnc notify, void *priv)”h]”j')�”}”(hŒVvoid v4l2_ctrl_notify(struct v4l2_ctrl *ctrl, v4l2_ctrl_notify_fnc notify, void *priv)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj4Œh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj0Œh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjCŒh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj0Œh²hh³jBŒh´MubjP)�”}”(hŒv4l2_ctrl_notify”h]”jV)�”}”(hŒv4l2_ctrl_notify”h]”hŒv4l2_ctrl_notify”…”�”}”(hjUŒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjQŒubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj0Œh²hh³jBŒh´MubjÀ)�”}”(hŒA(struct v4l2_ctrl *ctrl, v4l2_ctrl_notify_fnc notify, void *priv)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjqŒh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjmŒubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~Œh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjmŒubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj�Œh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjŒŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j‘ŒŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jWŒsbŒc.v4l2_ctrl_notify”†”asbuh1hhjmŒubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯Œh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjmŒubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj½Œh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjmŒubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjÊŒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjmŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjiŒubjÆ)�”}”(hŒv4l2_ctrl_notify_fnc notify”h]”(h)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_notify_fnc”h]”hŒv4l2_ctrl_notify_fnc”…”�”}”(hjæŒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjãŒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j茌modname”NŒ classname”Nj‹jŽ)�”}”j‘]”j«ŒŒc.v4l2_ctrl_notify”†”asbuh1hhjߌubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjߌubjV)�”}”(hŒnotify”h]”hŒnotify”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjߌubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjiŒubjÆ)�”}”(hŒ void *priv”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj+�h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj'�ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj'�ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjG�h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj'�ubjV)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj'�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjiŒubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj0Œh²hh³jBŒh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj,Œh²hh³jBŒh´Mubah}”(h]”j'Œah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jBŒh´Mhj)Œh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ0Function to set a notify callback for a control.”h]”hŒ0Function to set a notify callback for a control.”…”�”}”(hj~�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj{�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj)Œh²hh³jBŒh´Mubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j–�j¤j–�j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXù**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``v4l2_ctrl_notify_fnc notify`` The callback function. ``void *priv`` The callback private handle, passed as argument to the callback. **Description** This function sets a callback function for the control. If **ctrl** is NULL, then it will do nothing. If **notify** is NULL, then the notify callback will be removed. There can be only one notify. If another already exists, then a WARN_ON will be issued and the function will do nothing.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj �h]”hŒ Parameters”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjž�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjš�ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj¿�h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjÁ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj½�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj¹�ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hjØ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÔ�h´MhjÕ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¹�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÔ�h´Mhj¶�ubj)�”}”(hŒ7``v4l2_ctrl_notify_fnc notify`` The callback function. ”h]”(j )�”}”(hŒ``v4l2_ctrl_notify_fnc notify``”h]”j½)�”}”(hjø�h]”hŒv4l2_ctrl_notify_fnc notify”…”�”}”(hjú�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjö�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjò�ubj&)�”}”(hhh]”hï)�”}”(hŒThe callback function.”h]”hŒThe callback function.”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j Žh´MhjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjò�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j Žh´Mhj¶�ubj)�”}”(hŒP``void *priv`` The callback private handle, passed as argument to the callback. ”h]”(j )�”}”(hŒ``void *priv``”h]”j½)�”}”(hj1Žh]”hŒ void *priv”…”�”}”(hj3Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj/Žubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj+Žubj&)�”}”(hhh]”hï)�”}”(hŒ@The callback private handle, passed as argument to the callback.”h]”hŒ@The callback private handle, passed as argument to the callback.”…”�”}”(hjJŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jFŽh´MhjGŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj+Žubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jFŽh´Mhj¶�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjš�ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjlŽh]”hŒ Description”…”�”}”(hjnŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjš�ubhï)�”}”(hŒ¦This function sets a callback function for the control. If **ctrl** is NULL, then it will do nothing. If **notify** is NULL, then the notify callback will be removed.”h]”(hŒ;This function sets a callback function for the control. If ”…”�”}”(hj‚Žh²hh³Nh´Nubj¹)�”}”(hŒ**ctrl**”h]”hŒctrl”…”�”}”(hjŠŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‚ŽubhŒ& is NULL, then it will do nothing. If ”…”�”}”(hj‚Žh²hh³Nh´Nubj¹)�”}”(hŒ **notify**”h]”hŒnotify”…”�”}”(hjœŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‚ŽubhŒ3 is NULL, then the notify callback will be removed.”…”�”}”(hj‚Žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjš�ubhï)�”}”(hŒxThere can be only one notify. If another already exists, then a WARN_ON will be issued and the function will do nothing.”h]”hŒxThere can be only one notify. If another already exists, then a WARN_ON will be issued and the function will do nothing.”…”�”}”(hjµŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M#hjš�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_get_name (C function)”Œc.v4l2_ctrl_get_name”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ(const char * v4l2_ctrl_get_name (u32 id)”h]”j')�”}”(hŒ&const char *v4l2_ctrl_get_name(u32 id)”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjäŽh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjàŽh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M+ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòŽh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjàŽh²hh³jñŽh´M+ubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjàŽh²hh³jñŽh´M+ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjàŽh²hh³jñŽh´M+ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjàŽh²hh³jñŽh´M+ubjP)�”}”(hŒv4l2_ctrl_get_name”h]”jV)�”}”(hŒv4l2_ctrl_get_name”h]”hŒv4l2_ctrl_get_name”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj)�ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjàŽh²hh³jñŽh´M+ubjÀ)�”}”(hŒ(u32 id)”h]”jÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjL�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjI�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jN�Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j/�sbŒc.v4l2_ctrl_get_name”†”asbuh1hhjE�ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjl�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjE�ubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hjz�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjE�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjA�ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjàŽh²hh³jñŽh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjÜŽh²hh³jñŽh´M+ubah}”(h]”j׎ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jñŽh´M+hjÙŽh²hubj‚)�”}”(hhh]”hï)�”}”(hŒGet the name of the control”h]”hŒGet the name of the control”…”�”}”(hj¤�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M+hj¡�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÙŽh²hh³jñŽh´M+ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j¼�j¤j¼�j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒš**Parameters** ``u32 id`` The control ID. **Description** This function returns the name of the given control ID or NULL if it isn't a known control.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjÆ�h]”hŒ Parameters”…”�”}”(hjÈ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÄ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M/hjÀ�ubj)�”}”(hhh]”j)�”}”(hŒ``u32 id`` The control ID. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hjå�h]”hŒu32 id”…”�”}”(hjç�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjã�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M-hjß�ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hjþ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jú�h´M-hjû�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjß�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jú�h´M-hjÜ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀ�ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj �h]”hŒ Description”…”�”}”(hj"�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M/hjÀ�ubhï)�”}”(hŒ[This function returns the name of the given control ID or NULL if it isn't a known control.”h]”hŒ]This function returns the name of the given control ID or NULL if it isn’t a known control.”…”�”}”(hj6�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M.hjÀ�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_get_menu (C function)”Œc.v4l2_ctrl_get_menu”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ0const char * const * v4l2_ctrl_get_menu (u32 id)”h]”j')�”}”(hŒ-const char *const *v4l2_ctrl_get_menu(u32 id)”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hje�h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hja�h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M5ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hja�h²hh³jr�h´M5ubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhja�h²hh³jr�h´M5ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hja�h²hh³jr�h´M5ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhja�h²hh³jr�h´M5ubj-)�”}”(hjª8h]”hŒconst”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hja�h²hh³jr�h´M5ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·�h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hja�h²hh³jr�h´M5ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÅ�h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhja�h²hh³jr�h´M5ubjP)�”}”(hŒv4l2_ctrl_get_menu”h]”jV)�”}”(hŒv4l2_ctrl_get_menu”h]”hŒv4l2_ctrl_get_menu”…”�”}”(hjÖ�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÒ�ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhja�h²hh³jr�h´M5ubjÀ)�”}”(hŒ(u32 id)”h]”jÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjõ�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjò�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j÷�Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jØ�sbŒc.v4l2_ctrl_get_menu”†”asbuh1hhjî�ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjî�ubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hj#‘h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjî�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjê�ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hja�h²hh³jr�h´M5ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj]�h²hh³jr�h´M5ubah}”(h]”jX�ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jr�h´M5hjZ�h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ(Get the menu string array of the control”h]”hŒ(Get the menu string array of the control”…”�”}”(hjM‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M5hjJ‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjZ�h²hh³jr�h´M5ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£je‘j¤je‘j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒÁ**Parameters** ``u32 id`` The control ID. **Description** This function returns the NULL-terminated menu string array name of the given control ID or NULL if it isn't a known menu control.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjo‘h]”hŒ Parameters”…”�”}”(hjq‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjm‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M9hji‘ubj)�”}”(hhh]”j)�”}”(hŒ``u32 id`` The control ID. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hjŽ‘h]”hŒu32 id”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŒ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M7hjˆ‘ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hj§‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j£‘h´M7hj¤‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjˆ‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j£‘h´M7hj…‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhji‘ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjÉ‘h]”hŒ Description”…”�”}”(hjË‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÇ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M9hji‘ubhï)�”}”(hŒ‚This function returns the NULL-terminated menu string array name of the given control ID or NULL if it isn't a known menu control.”h]”hŒ„This function returns the NULL-terminated menu string array name of the given control ID or NULL if it isn’t a known menu control.”…”�”}”(hjß‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M8hji‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_get_int_menu (C function)”Œc.v4l2_ctrl_get_int_menu”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ5const s64 * v4l2_ctrl_get_int_menu (u32 id, u32 *len)”h]”j')�”}”(hŒ3const s64 *v4l2_ctrl_get_int_menu(u32 id, u32 *len)”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj ’h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ’h²hh³j’h´M?ubh)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj-’h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj*’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j/’Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_get_int_menu”sbŒc.v4l2_ctrl_get_int_menu”†”asbuh1hhj ’h²hh³j’h´M?ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjN’h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ’h²hh³j’h´M?ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj\’h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj ’h²hh³j’h´M?ubjP)�”}”(hŒv4l2_ctrl_get_int_menu”h]”jV)�”}”(hjK’h]”hŒv4l2_ctrl_get_int_menu”…”�”}”(hjm’h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhji’ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj ’h²hh³j’h´M?ubjÀ)�”}”(hŒ(u32 id, u32 *len)”h]”(jÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj‹’h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjˆ’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j�’Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jI’Œc.v4l2_ctrl_get_int_menu”†”asbuh1hhj„’ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj©’h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj„’ubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hj·’h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj„’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj€’ubjÆ)�”}”(hŒu32 *len”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÓ’h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÐ’ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÕ’Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jI’Œc.v4l2_ctrl_get_int_menu”†”asbuh1hhjÌ’ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñ’h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÌ’ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÿ’h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÌ’ubjV)�”}”(hŒlen”h]”hŒlen”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÌ’ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj€’ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj ’h²hh³j’h´M?ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj’h²hh³j’h´M?ubah}”(h]”j’ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j’h´M?hj’h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ)Get the integer menu array of the control”h]”hŒ)Get the integer menu array of the control”…”�”}”(hj6“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M?hj3“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj’h²hh³j’h´M?ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jN“j¤jN“j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒå**Parameters** ``u32 id`` The control ID. ``u32 *len`` The size of the integer array. **Description** This function returns the integer array of the given control ID or NULL if it if it isn't a known integer menu control.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjX“h]”hŒ Parameters”…”�”}”(hjZ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjV“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MChjR“ubj)�”}”(hhh]”(j)�”}”(hŒ``u32 id`` The control ID. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hjw“h]”hŒu32 id”…”�”}”(hjy“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hju“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MAhjq“ubj&)�”}”(hhh]”hï)�”}”(hŒThe control ID.”h]”hŒThe control ID.”…”�”}”(hj�“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jŒ“h´MAhj�“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjq“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŒ“h´MAhjn“ubj)�”}”(hŒ,``u32 *len`` The size of the integer array. ”h]”(j )�”}”(hŒ ``u32 *len``”h]”j½)�”}”(hj°“h]”hŒu32 *len”…”�”}”(hj²“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj®“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MBhjª“ubj&)�”}”(hhh]”hï)�”}”(hŒThe size of the integer array.”h]”hŒThe size of the integer array.”…”�”}”(hjÉ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÅ“h´MBhjÆ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjª“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÅ“h´MBhjn“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjR“ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjë“h]”hŒ Description”…”�”}”(hjí“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjé“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MDhjR“ubhï)�”}”(hŒwThis function returns the integer array of the given control ID or NULL if it if it isn't a known integer menu control.”h]”hŒyThis function returns the integer array of the given control ID or NULL if it if it isn’t a known integer menu control.”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MChjR“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_g_ctrl (C function)”Œc.v4l2_ctrl_g_ctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ-s32 v4l2_ctrl_g_ctrl (struct v4l2_ctrl *ctrl)”h]”j')�”}”(hŒ,s32 v4l2_ctrl_g_ctrl(struct v4l2_ctrl *ctrl)”h]”(h)�”}”(hhh]”jV)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj3”h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj0”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j5”Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_g_ctrl”sbŒc.v4l2_ctrl_g_ctrl”†”asbuh1hhj,”h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MJubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU”h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj,”h²hh³jT”h´MJubjP)�”}”(hŒv4l2_ctrl_g_ctrl”h]”jV)�”}”(hjQ”h]”hŒv4l2_ctrl_g_ctrl”…”�”}”(hjg”h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjc”ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj,”h²hh³jT”h´MJubjÀ)�”}”(hŒ(struct v4l2_ctrl *ctrl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj‚”h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj~”ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�”h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj~”ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj ”h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�”ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¢”Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jO”Œc.v4l2_ctrl_g_ctrl”†”asbuh1hhj~”ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾”h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj~”ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÌ”h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj~”ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjÙ”h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj~”ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjz”ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj,”h²hh³jT”h´MJubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj(”h²hh³jT”h´MJubah}”(h]”j#”ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jT”h´MJhj%”h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ@Helper function to get the control's value from within a driver.”h]”hŒBHelper function to get the control’s value from within a driver.”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MJhj•h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj%”h²hh³jT”h´MJubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j•j¤j•j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXD**Parameters** ``struct v4l2_ctrl *ctrl`` The control. **Description** This returns the control's value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for integer type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj%•h]”hŒ Parameters”…”�”}”(hj'•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj#•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MNhj•ubj)�”}”(hhh]”j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjD•h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjF•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjB•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MMhj>•ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hj]•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jY•h´MMhjZ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj>•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jY•h´MMhj;•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj•h]”hŒ Description”…”�”}”(hj�•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj}•ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MOhj•ubhï)�”}”(hŒÆThis returns the control's value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ¨This returns the control’s value safely by going through the control framework. This function will lock the control’s handler, so it cannot be used from within the ”…”�”}”(hj••h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjŸ•h]”hŒ v4l2_ctrl_ops”…”�”}”(hj¡•h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj�•ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MNhj••ubhŒ functions.”…”�”}”(hj••h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¼•h´MNhj•ubhï)�”}”(hŒ0This function is for integer type controls only.”h]”hŒ0This function is for integer type controls only.”…”�”}”(hjÇ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MRhj•ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ__v4l2_ctrl_s_ctrl (C function)”Œc.__v4l2_ctrl_s_ctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ8int __v4l2_ctrl_s_ctrl (struct v4l2_ctrl *ctrl, s32 val)”h]”j')�”}”(hŒ7int __v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjö•h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjò•h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MXubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjò•h²hh³j–h´MXubjP)�”}”(hŒ__v4l2_ctrl_s_ctrl”h]”jV)�”}”(hŒ__v4l2_ctrl_s_ctrl”h]”hŒ__v4l2_ctrl_s_ctrl”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj–ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjò•h²hh³j–h´MXubjÀ)�”}”(hŒ!(struct v4l2_ctrl *ctrl, s32 val)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj3–h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj/–ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@–h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj/–ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjQ–h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjN–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jS–Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j–sbŒc.__v4l2_ctrl_s_ctrl”†”asbuh1hhj/–ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjq–h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj/–ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj/–ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjŒ–h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj/–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj+–ubjÆ)�”}”(hŒs32 val”h]”(h)�”}”(hhh]”jV)�”}”(hŒs32”h]”hŒs32”…”�”}”(hj¨–h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¥–ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jª–Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jm–Œc.__v4l2_ctrl_s_ctrl”†”asbuh1hhj¡–ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ–h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¡–ubjV)�”}”(hŒval”h]”hŒval”…”�”}”(hjÔ–h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¡–ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj+–ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjò•h²hh³j–h´MXubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjî•h²hh³j–h´MXubah}”(h]”jé•ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j–h´MXhjë•h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ'Unlocked variant of v4l2_ctrl_s_ctrl().”h]”hŒ'Unlocked variant of v4l2_ctrl_s_ctrl().”…”�”}”(hjþ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MXhjû–h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjë•h²hh³j–h´MXubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j—j¤j—j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXu**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``s32 val`` The new value. **Description** This sets the control's new value safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for integer type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj —h]”hŒ Parameters”…”�”}”(hj"—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M\hj—ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj?—h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjA—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj=—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MZhj9—ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hjX—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jT—h´MZhjU—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj9—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jT—h´MZhj6—ubj)�”}”(hŒ``s32 val`` The new value. ”h]”(j )�”}”(hŒ ``s32 val``”h]”j½)�”}”(hjx—h]”hŒs32 val”…”�”}”(hjz—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjv—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M[hjr—ubj&)�”}”(hhh]”hï)�”}”(hŒThe new value.”h]”hŒThe new value.”…”�”}”(hj‘—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j�—h´M[hjŽ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjr—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�—h´M[hj6—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj—ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj³—h]”hŒ Description”…”�”}”(hjµ—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj±—ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M]hj—ubhï)�”}”(hŒÙThis sets the control's new value safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ»This sets the control’s new value safely by going through the control framework. This function assumes the control’s handler is already locked, allowing it to be used from within the ”…”�”}”(hjÉ—h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjÓ—h]”hŒ v4l2_ctrl_ops”…”�”}”(hjÕ—h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÑ—ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M\hjÉ—ubhŒ functions.”…”�”}”(hjÉ—h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jð—h´M\hj—ubhï)�”}”(hŒ0This function is for integer type controls only.”h]”hŒ0This function is for integer type controls only.”…”�”}”(hjû—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M`hj—ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_s_ctrl (C function)”Œc.v4l2_ctrl_s_ctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ6int v4l2_ctrl_s_ctrl (struct v4l2_ctrl *ctrl, s32 val)”h]”j')�”}”(hŒ5int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj*˜h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj&˜h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mfubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9˜h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj&˜h²hh³j8˜h´MfubjP)�”}”(hŒv4l2_ctrl_s_ctrl”h]”jV)�”}”(hŒv4l2_ctrl_s_ctrl”h]”hŒv4l2_ctrl_s_ctrl”…”�”}”(hjK˜h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjG˜ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj&˜h²hh³j8˜h´MfubjÀ)�”}”(hŒ!(struct v4l2_ctrl *ctrl, s32 val)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjg˜h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjc˜ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjt˜h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjc˜ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj…˜h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‚˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j‡˜Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jM˜sbŒc.v4l2_ctrl_s_ctrl”†”asbuh1hhjc˜ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¥˜h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjc˜ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj³˜h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjc˜ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjÀ˜h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjc˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj_˜ubjÆ)�”}”(hŒs32 val”h]”(h)�”}”(hhh]”jV)�”}”(hŒs32”h]”hŒs32”…”�”}”(hjܘh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÙ˜ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÞ˜Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¡˜Œc.v4l2_ctrl_s_ctrl”†”asbuh1hhjÕ˜ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú˜h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÕ˜ubjV)�”}”(hŒval”h]”hŒval”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÕ˜ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj_˜ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj&˜h²hh³j8˜h´Mfubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj"˜h²hh³j8˜h´Mfubah}”(h]”j˜ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j8˜h´Mfhj˜h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ@Helper function to set the control's value from within a driver.”h]”hŒBHelper function to set the control’s value from within a driver.”…”�”}”(hj2™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mfhj/™h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj˜h²hh³j8˜h´Mfubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jJ™j¤jJ™j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXc**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``s32 val`` The new value. **Description** This sets the control's new value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for integer type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjT™h]”hŒ Parameters”…”�”}”(hjV™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjR™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MjhjN™ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjs™h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hju™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjq™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhhjm™ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hjŒ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jˆ™h´Mhhj‰™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjm™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jˆ™h´Mhhjj™ubj)�”}”(hŒ``s32 val`` The new value. ”h]”(j )�”}”(hŒ ``s32 val``”h]”j½)�”}”(hj¬™h]”hŒs32 val”…”�”}”(hj®™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjª™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mihj¦™ubj&)�”}”(hhh]”hï)�”}”(hŒThe new value.”h]”hŒThe new value.”…”�”}”(hjÅ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÁ™h´Mihj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¦™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÁ™h´Mihjj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjN™ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjç™h]”hŒ Description”…”�”}”(hjé™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjå™ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MkhjN™ubhï)�”}”(hŒÇThis sets the control's new value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ©This sets the control’s new value safely by going through the control framework. This function will lock the control’s handler, so it cannot be used from within the ”…”�”}”(hjý™h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjšh]”hŒ v4l2_ctrl_ops”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjšubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mjhjý™ubhŒ functions.”…”�”}”(hjý™h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j$šh´MjhjN™ubhï)�”}”(hŒ0This function is for integer type controls only.”h]”hŒ0This function is for integer type controls only.”…”�”}”(hj/šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MnhjN™ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_g_ctrl_int64 (C function)”Œc.v4l2_ctrl_g_ctrl_int64”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ3s64 v4l2_ctrl_g_ctrl_int64 (struct v4l2_ctrl *ctrl)”h]”j')�”}”(hŒ2s64 v4l2_ctrl_g_ctrl_int64(struct v4l2_ctrl *ctrl)”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjašh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj^šubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jcšŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_g_ctrl_int64”sbŒc.v4l2_ctrl_g_ctrl_int64”†”asbuh1hhjZšh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M}ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjƒšh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjZšh²hh³j‚šh´M}ubjP)�”}”(hŒv4l2_ctrl_g_ctrl_int64”h]”jV)�”}”(hjšh]”hŒv4l2_ctrl_g_ctrl_int64”…”�”}”(hj•šh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‘šubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjZšh²hh³j‚šh´M}ubjÀ)�”}”(hŒ(struct v4l2_ctrl *ctrl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj°šh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¬šubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½šh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬šubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjΚh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjËšubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jКŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j}šŒc.v4l2_ctrl_g_ctrl_int64”†”asbuh1hhj¬šubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìšh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬šubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjúšh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¬šubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¬šubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj¨šubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjZšh²hh³j‚šh´M}ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjVšh²hh³j‚šh´M}ubah}”(h]”jQšah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j‚šh´M}hjSšh²hubj‚)�”}”(hhh]”hï)�”}”(hŒEHelper function to get a 64-bit control's value from within a driver.”h]”hŒGHelper function to get a 64-bit control’s value from within a driver.”…”�”}”(hj1›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M}hj.›h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjSšh²hh³j‚šh´M}ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jI›j¤jI›j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXK**Parameters** ``struct v4l2_ctrl *ctrl`` The control. **Description** This returns the control's value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for 64-bit integer type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjS›h]”hŒ Parameters”…”�”}”(hjU›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjQ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjM›ubj)�”}”(hhh]”j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjr›h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjt›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjp›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M€hjl›ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hj‹›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‡›h´M€hjˆ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjl›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‡›h´M€hji›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM›ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj­›h]”hŒ Description”…”�”}”(hj¯›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj«›ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‚hjM›ubhï)�”}”(hŒÆThis returns the control's value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ¨This returns the control’s value safely by going through the control framework. This function will lock the control’s handler, so it cannot be used from within the ”…”�”}”(hjÛh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjÍ›h]”hŒ v4l2_ctrl_ops”…”�”}”(hjÏ›h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjË›ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjÛubhŒ functions.”…”�”}”(hjÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jê›h´M�hjM›ubhï)�”}”(hŒ7This function is for 64-bit integer type controls only.”h]”hŒ7This function is for 64-bit integer type controls only.”…”�”}”(hjõ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M…hjM›ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ%__v4l2_ctrl_s_ctrl_int64 (C function)”Œc.__v4l2_ctrl_s_ctrl_int64”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ>int __v4l2_ctrl_s_ctrl_int64 (struct v4l2_ctrl *ctrl, s64 val)”h]”j')�”}”(hŒ=int __v4l2_ctrl_s_ctrl_int64(struct v4l2_ctrl *ctrl, s64 val)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj$œh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj œh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‹ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj3œh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj œh²hh³j2œh´M‹ubjP)�”}”(hŒ__v4l2_ctrl_s_ctrl_int64”h]”jV)�”}”(hŒ__v4l2_ctrl_s_ctrl_int64”h]”hŒ__v4l2_ctrl_s_ctrl_int64”…”�”}”(hjEœh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjAœubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj œh²hh³j2œh´M‹ubjÀ)�”}”(hŒ!(struct v4l2_ctrl *ctrl, s64 val)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjaœh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj]œubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjnœh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj]œubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj|œubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j�œŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jGœsbŒc.__v4l2_ctrl_s_ctrl_int64”†”asbuh1hhj]œubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸœh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj]œubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj­œh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj]œubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjºœh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj]œubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjYœubjÆ)�”}”(hŒs64 val”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hjÖœh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÓœubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jØœŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j›œŒc.__v4l2_ctrl_s_ctrl_int64”†”asbuh1hhjÏœubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôœh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÏœubjV)�”}”(hŒval”h]”hŒval”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÏœubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjYœubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj œh²hh³j2œh´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjœh²hh³j2œh´M‹ubah}”(h]”jœah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j2œh´M‹hjœh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ-Unlocked variant of v4l2_ctrl_s_ctrl_int64().”h]”hŒ-Unlocked variant of v4l2_ctrl_s_ctrl_int64().”…”�”}”(hj,�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‹hj)�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjœh²hh³j2œh´M‹ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jD�j¤jD�j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX|**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``s64 val`` The new value. **Description** This sets the control's new value safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for 64-bit integer type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjN�h]”hŒ Parameters”…”�”}”(hjP�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjL�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjH�ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjm�h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjk�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjg�ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‚�h´M�hjƒ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjg�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‚�h´M�hjd�ubj)�”}”(hŒ``s64 val`` The new value. ”h]”(j )�”}”(hŒ ``s64 val``”h]”j½)�”}”(hj¦�h]”hŒs64 val”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¤�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŽhj �ubj&)�”}”(hhh]”hï)�”}”(hŒThe new value.”h]”hŒThe new value.”…”�”}”(hj¿�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j»�h´MŽhj¼�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj �ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j»�h´MŽhjd�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjH�ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjá�h]”hŒ Description”…”�”}”(hjã�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjß�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjH�ubhï)�”}”(hŒÙThis sets the control's new value safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ»This sets the control’s new value safely by going through the control framework. This function assumes the control’s handler is already locked, allowing it to be used from within the ”…”�”}”(hj÷�h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjžh]”hŒ v4l2_ctrl_ops”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÿ�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hj÷�ubhŒ functions.”…”�”}”(hj÷�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jžh´M�hjH�ubhï)�”}”(hŒ7This function is for 64-bit integer type controls only.”h]”hŒ7This function is for 64-bit integer type controls only.”…”�”}”(hj)žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M“hjH�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_s_ctrl_int64 (C function)”Œc.v4l2_ctrl_s_ctrl_int64”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒhjTžh²hh³jfžh´M™ubjP)�”}”(hŒv4l2_ctrl_s_ctrl_int64”h]”jV)�”}”(hŒv4l2_ctrl_s_ctrl_int64”h]”hŒv4l2_ctrl_s_ctrl_int64”…”�”}”(hjyžh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjužubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjTžh²hh³jfžh´M™ubjÀ)�”}”(hŒ!(struct v4l2_ctrl *ctrl, s64 val)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj•žh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj‘žubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢žh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‘žubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj³žh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj°žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jµžŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j{žsbŒc.v4l2_ctrl_s_ctrl_int64”†”asbuh1hhj‘žubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÓžh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‘žubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjážh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj‘žubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjîžh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‘žubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�žubjÆ)�”}”(hŒs64 val”h]”(h)�”}”(hhh]”jV)�”}”(hŒs64”h]”hŒs64”…”�”}”(hj Ÿh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjŸubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j ŸŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jÏžŒc.v4l2_ctrl_s_ctrl_int64”†”asbuh1hhjŸubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(Ÿh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjŸubjV)�”}”(hŒval”h]”hŒval”…”�”}”(hj6Ÿh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjŸubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj�žubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjTžh²hh³jfžh´M™ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjPžh²hh³jfžh´M™ubah}”(h]”jKžah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jfžh´M™hjMžh²hubj‚)�”}”(hhh]”hï)�”}”(hŒEHelper function to set a 64-bit control's value from within a driver.”h]”hŒGHelper function to set a 64-bit control’s value from within a driver.”…”�”}”(hj`Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M™hj]Ÿh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjMžh²hh³jfžh´M™ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jxŸj¤jxŸj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXj**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``s64 val`` The new value. **Description** This sets the control's new value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for 64-bit integer type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj‚Ÿh]”hŒ Parameters”…”�”}”(hj„Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj€Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hj|Ÿubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj¡Ÿh]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hj£Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŸŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mœhj›Ÿubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hjºŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¶Ÿh´Mœhj·Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj›Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¶Ÿh´Mœhj˜Ÿubj)�”}”(hŒ``s64 val`` The new value. ”h]”(j )�”}”(hŒ ``s64 val``”h]”j½)�”}”(hjÚŸh]”hŒs64 val”…”�”}”(hjÜŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjØŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M�hjÔŸubj&)�”}”(hhh]”hï)�”}”(hŒThe new value.”h]”hŒThe new value.”…”�”}”(hjóŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jïŸh´M�hjðŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÔŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jïŸh´M�hj˜Ÿubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj|Ÿubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŸhj|Ÿubhï)�”}”(hŒÇThis sets the control's new value safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ©This sets the control’s new value safely by going through the control framework. This function will lock the control’s handler, so it cannot be used from within the ”…”�”}”(hj+ h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hj5 h]”hŒ v4l2_ctrl_ops”…”�”}”(hj7 h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj3 ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mžhj+ ubhŒ functions.”…”�”}”(hj+ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jR h´Mžhj|Ÿubhï)�”}”(hŒ7This function is for 64-bit integer type controls only.”h]”hŒ7This function is for 64-bit integer type controls only.”…”�”}”(hj] h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¢hj|Ÿubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&__v4l2_ctrl_s_ctrl_string (C function)”Œc.__v4l2_ctrl_s_ctrl_string”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒEint __v4l2_ctrl_s_ctrl_string (struct v4l2_ctrl *ctrl, const char *s)”h]”j')�”}”(hŒDint __v4l2_ctrl_s_ctrl_string(struct v4l2_ctrl *ctrl, const char *s)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒ h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjˆ h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M±ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjˆ h²hh³jš h´M±ubjP)�”}”(hŒ__v4l2_ctrl_s_ctrl_string”h]”jV)�”}”(hŒ__v4l2_ctrl_s_ctrl_string”h]”hŒ__v4l2_ctrl_s_ctrl_string”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj© ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjˆ h²hh³jš h´M±ubjÀ)�”}”(hŒ'(struct v4l2_ctrl *ctrl, const char *s)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÉ h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÅ ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÅ ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjä ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jé Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”•)�”}”j‡j¯ sbŒc.__v4l2_ctrl_s_ctrl_string”†”asbuh1hhjÅ ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÅ ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÅ ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj"¡h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÅ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÁ ubjÆ)�”}”(hŒ const char *s”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj;¡h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj7¡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjH¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj7¡ubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjV¡h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj7¡ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjd¡h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj7¡ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjr¡h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj7¡ubjV)�”}”(hŒs”h]”hŒs”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj7¡ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÁ ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjˆ h²hh³jš h´M±ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj„ h²hh³jš h´M±ubah}”(h]”j ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jš h´M±hj� h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ.Unlocked variant of v4l2_ctrl_s_ctrl_string().”h]”hŒ.Unlocked variant of v4l2_ctrl_s_ctrl_string().”…”�”}”(hj©¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M±hj¦¡h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj� h²hh³jš h´M±ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jÁ¡j¤jÁ¡j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX|**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``const char *s`` The new string. **Description** This sets the control's new string safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for string type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjË¡h]”hŒ Parameters”…”�”}”(hjÍ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÉ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MµhjÅ¡ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjê¡h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjì¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjè¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M³hjä¡ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÿ¡h´M³hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjä¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÿ¡h´M³hjá¡ubj)�”}”(hŒ"``const char *s`` The new string. ”h]”(j )�”}”(hŒ``const char *s``”h]”j½)�”}”(hj#¢h]”hŒ const char *s”…”�”}”(hj%¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj!¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M´hj¢ubj&)�”}”(hhh]”hï)�”}”(hŒThe new string.”h]”hŒThe new string.”…”�”}”(hj<¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j8¢h´M´hj9¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j8¢h´M´hjá¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÅ¡ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj^¢h]”hŒ Description”…”�”}”(hj`¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj\¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¶hjÅ¡ubhï)�”}”(hŒÚThis sets the control's new string safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ¼This sets the control’s new string safely by going through the control framework. This function assumes the control’s handler is already locked, allowing it to be used from within the ”…”�”}”(hjt¢h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hj~¢h]”hŒ v4l2_ctrl_ops”…”�”}”(hj€¢h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj|¢ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mµhjt¢ubhŒ functions.”…”�”}”(hjt¢h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j›¢h´MµhjÅ¡ubhï)�”}”(hŒ/This function is for string type controls only.”h]”hŒ/This function is for string type controls only.”…”�”}”(hj¦¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¹hjÅ¡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$v4l2_ctrl_s_ctrl_string (C function)”Œc.v4l2_ctrl_s_ctrl_string”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒCint v4l2_ctrl_s_ctrl_string (struct v4l2_ctrl *ctrl, const char *s)”h]”j')�”}”(hŒBint v4l2_ctrl_s_ctrl_string(struct v4l2_ctrl *ctrl, const char *s)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjÕ¢h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjÑ¢h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¿ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä¢h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÑ¢h²hh³jã¢h´M¿ubjP)�”}”(hŒv4l2_ctrl_s_ctrl_string”h]”jV)�”}”(hŒv4l2_ctrl_s_ctrl_string”h]”hŒv4l2_ctrl_s_ctrl_string”…”�”}”(hjö¢h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjò¢ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÑ¢h²hh³jã¢h´M¿ubjÀ)�”}”(hŒ'(struct v4l2_ctrl *ctrl, const char *s)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj£ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj£ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj0£h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj-£ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j2£Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jø¢sbŒc.v4l2_ctrl_s_ctrl_string”†”asbuh1hhj£ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP£h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj£ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj^£h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj£ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjk£h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj £ubjÆ)�”}”(hŒ const char *s”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj„£h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj€£ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘£h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€£ubjÌ)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjŸ£h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj€£ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­£h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj€£ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj»£h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj€£ubjV)�”}”(hj�¡h]”hŒs”…”�”}”(hjÈ£h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj€£ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj £ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÑ¢h²hh³jã¢h´M¿ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjÍ¢h²hh³jã¢h´M¿ubah}”(h]”jÈ¢ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jã¢h´M¿hjÊ¢h²hubj‚)�”}”(hhh]”hï)�”}”(hŒEHelper function to set a control's string value from within a driver.”h]”hŒGHelper function to set a control’s string value from within a driver.”…”�”}”(hjñ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¿hjî£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊ¢h²hh³jã¢h´M¿ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j ¤j¤j ¤j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXj**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``const char *s`` The new string. **Description** This sets the control's new string safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for string type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¤h]”hŒ Parameters”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÃhj ¤ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj2¤h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hj4¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj0¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÂhj,¤ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hjK¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jG¤h´MÂhjH¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj,¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jG¤h´MÂhj)¤ubj)�”}”(hŒ"``const char *s`` The new string. ”h]”(j )�”}”(hŒ``const char *s``”h]”j½)�”}”(hjk¤h]”hŒ const char *s”…”�”}”(hjm¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hji¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÃhje¤ubj&)�”}”(hhh]”hï)�”}”(hŒThe new string.”h]”hŒThe new string.”…”�”}”(hj„¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j€¤h´MÃhj�¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hje¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j€¤h´MÃhj)¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj ¤ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj¦¤h]”hŒ Description”…”�”}”(hj¨¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¤¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÅhj ¤ubhï)�”}”(hŒÈThis sets the control's new string safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒªThis sets the control’s new string safely by going through the control framework. This function will lock the control’s handler, so it cannot be used from within the ”…”�”}”(hj¼¤h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjƤh]”hŒ v4l2_ctrl_ops”…”�”}”(hjȤh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjĤubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÄhj¼¤ubhŒ functions.”…”�”}”(hj¼¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jã¤h´MÄhj ¤ubhï)�”}”(hŒ/This function is for string type controls only.”h]”hŒ/This function is for string type controls only.”…”�”}”(hjî¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÈhj ¤ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(__v4l2_ctrl_s_ctrl_compound (C function)”Œc.__v4l2_ctrl_s_ctrl_compound”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒaint __v4l2_ctrl_s_ctrl_compound (struct v4l2_ctrl *ctrl, enum v4l2_ctrl_type type, const void *p)”h]”j')�”}”(hŒ`int __v4l2_ctrl_s_ctrl_compound(struct v4l2_ctrl *ctrl, enum v4l2_ctrl_type type, const void *p)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj¥h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M×ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,¥h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¥h²hh³j+¥h´M×ubjP)�”}”(hŒ__v4l2_ctrl_s_ctrl_compound”h]”jV)�”}”(hŒ__v4l2_ctrl_s_ctrl_compound”h]”hŒ__v4l2_ctrl_s_ctrl_compound”…”�”}”(hj>¥h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj:¥ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj¥h²hh³j+¥h´M×ubjÀ)�”}”(hŒA(struct v4l2_ctrl *ctrl, enum v4l2_ctrl_type type, const void *p)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjZ¥h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjV¥ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg¥h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjV¥ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjx¥h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhju¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jz¥Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j@¥sbŒc.__v4l2_ctrl_s_ctrl_compound”†”asbuh1hhjV¥ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜¥h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjV¥ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¦¥h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjV¥ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj³¥h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjV¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjR¥ubjÆ)�”}”(hŒenum v4l2_ctrl_type type”h]”(j-)�”}”(hj9h]”hŒenum”…”�”}”(hjÌ¥h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÈ¥ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ¥h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÈ¥ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_type”h]”hŒv4l2_ctrl_type”…”�”}”(hjê¥h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjç¥ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j쥌modname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”¥Œc.__v4l2_ctrl_s_ctrl_compound”†”asbuh1hhjÈ¥ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÈ¥ubjV)�”}”(hŒtype”h]”hŒtype”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÈ¥ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjR¥ubjÆ)�”}”(hŒ const void *p”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj/¦h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj+¦ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<¦h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj+¦ubjÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjJ¦h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj+¦ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjX¦h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj+¦ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjf¦h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj+¦ubjV)�”}”(hj÷h]”hŒp”…”�”}”(hjs¦h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj+¦ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjR¥ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj¥h²hh³j+¥h´M×ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj¥h²hh³j+¥h´M×ubah}”(h]”j¥ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j+¥h´M×hj¥h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ*Unlocked variant to set a compound control”h]”hŒ*Unlocked variant to set a compound control”…”�”}”(hjœ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M×hj™¦h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¥h²hh³j+¥h´M×ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j´¦j¤j´¦j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXÈ**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``enum v4l2_ctrl_type type`` The type of the data. ``const void *p`` The new compound payload. **Description** This sets the control's new compound payload safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for compound type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¾¦h]”hŒ Parameters”…”�”}”(hjÀ¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¼¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÛhj¸¦ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjݦh]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjߦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÛ¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÙhjצubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hjö¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jò¦h´MÙhjó¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjצubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jò¦h´MÙhjÔ¦ubj)�”}”(hŒ3``enum v4l2_ctrl_type type`` The type of the data. ”h]”(j )�”}”(hŒ``enum v4l2_ctrl_type type``”h]”j½)�”}”(hj§h]”hŒenum v4l2_ctrl_type type”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÚhj§ubj&)�”}”(hhh]”hï)�”}”(hŒThe type of the data.”h]”hŒThe type of the data.”…”�”}”(hj/§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j+§h´MÚhj,§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j+§h´MÚhjÔ¦ubj)�”}”(hŒ,``const void *p`` The new compound payload. ”h]”(j )�”}”(hŒ``const void *p``”h]”j½)�”}”(hjO§h]”hŒ const void *p”…”�”}”(hjQ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjM§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÛhjI§ubj&)�”}”(hhh]”hï)�”}”(hŒThe new compound payload.”h]”hŒThe new compound payload.”…”�”}”(hjh§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jd§h´MÛhje§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjI§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jd§h´MÛhjÔ¦ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸¦ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjЧh]”hŒ Description”…”�”}”(hjŒ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjˆ§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÝhj¸¦ubhï)�”}”(hŒäThis sets the control's new compound payload safely by going through the control framework. This function assumes the control's handler is already locked, allowing it to be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒÆThis sets the control’s new compound payload safely by going through the control framework. This function assumes the control’s handler is already locked, allowing it to be used from within the ”…”�”}”(hj §h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjª§h]”hŒ v4l2_ctrl_ops”…”�”}”(hj¬§h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj¨§ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÜhj §ubhŒ functions.”…”�”}”(hj §h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jǧh´MÜhj¸¦ubhï)�”}”(hŒ1This function is for compound type controls only.”h]”hŒ1This function is for compound type controls only.”…”�”}”(hjÒ§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Màhj¸¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&v4l2_ctrl_s_ctrl_compound (C function)”Œc.v4l2_ctrl_s_ctrl_compound”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ_int v4l2_ctrl_s_ctrl_compound (struct v4l2_ctrl *ctrl, enum v4l2_ctrl_type type, const void *p)”h]”j')�”}”(hŒ^int v4l2_ctrl_s_ctrl_compound(struct v4l2_ctrl *ctrl, enum v4l2_ctrl_type type, const void *p)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjý§h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mçubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjý§h²hh³j¨h´MçubjP)�”}”(hŒv4l2_ctrl_s_ctrl_compound”h]”jV)�”}”(hŒv4l2_ctrl_s_ctrl_compound”h]”hŒv4l2_ctrl_s_ctrl_compound”…”�”}”(hj"¨h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¨ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjý§h²hh³j¨h´MçubjÀ)�”}”(hŒA(struct v4l2_ctrl *ctrl, enum v4l2_ctrl_type type, const void *p)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj>¨h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj:¨ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjK¨h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj:¨ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj\¨h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjY¨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j^¨Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j$¨sbŒc.v4l2_ctrl_s_ctrl_compound”†”asbuh1hhj:¨ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|¨h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj:¨ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjЍh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj:¨ubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj—¨h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj:¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj6¨ubjÆ)�”}”(hŒenum v4l2_ctrl_type type”h]”(j-)�”}”(hj9h]”hŒenum”…”�”}”(hj°¨h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¬¨ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½¨h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬¨ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_type”h]”hŒv4l2_ctrl_type”…”�”}”(hjΨh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj˨ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jШŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jx¨Œc.v4l2_ctrl_s_ctrl_compound”†”asbuh1hhj¬¨ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì¨h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬¨ubjV)�”}”(hŒtype”h]”hŒtype”…”�”}”(hjú¨h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¬¨ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj6¨ubjÆ)�”}”(hŒ const void *p”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj©ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ©h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj©ubjÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj.©h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj©ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<©h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj©ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjJ©h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj©ubjV)�”}”(hj÷h]”hŒp”…”�”}”(hjW©h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj©ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj6¨ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjý§h²hh³j¨h´Mçubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjù§h²hh³j¨h´Mçubah}”(h]”jô§ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j¨h´Mçhjö§h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ?Helper function to set a compound control from within a driver.”h]”hŒ?Helper function to set a compound control from within a driver.”…”�”}”(hj€©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mçhj}©h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjö§h²hh³j¨h´Mçubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j˜©j¤j˜©j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX¶**Parameters** ``struct v4l2_ctrl *ctrl`` The control. ``enum v4l2_ctrl_type type`` The type of the data. ``const void *p`` The new compound payload. **Description** This sets the control's new compound payload safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions. This function is for compound type controls only.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¢©h]”hŒ Parameters”…”�”}”(hj¤©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj ©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mëhjœ©ubj)�”}”(hhh]”(j)�”}”(hŒ(``struct v4l2_ctrl *ctrl`` The control. ”h]”(j )�”}”(hŒ``struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjÁ©h]”hŒstruct v4l2_ctrl *ctrl”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¿©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mêhj»©ubj&)�”}”(hhh]”hï)�”}”(hŒ The control.”h]”hŒ The control.”…”�”}”(hjÚ©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÖ©h´Mêhjשubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj»©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÖ©h´Mêhj¸©ubj)�”}”(hŒ3``enum v4l2_ctrl_type type`` The type of the data. ”h]”(j )�”}”(hŒ``enum v4l2_ctrl_type type``”h]”j½)�”}”(hjú©h]”hŒenum v4l2_ctrl_type type”…”�”}”(hjü©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjø©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mëhjô©ubj&)�”}”(hhh]”hï)�”}”(hŒThe type of the data.”h]”hŒThe type of the data.”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jªh´Mëhjªubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjô©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jªh´Mëhj¸©ubj)�”}”(hŒ,``const void *p`` The new compound payload. ”h]”(j )�”}”(hŒ``const void *p``”h]”j½)�”}”(hj3ªh]”hŒ const void *p”…”�”}”(hj5ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj1ªubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mìhj-ªubj&)�”}”(hhh]”hï)�”}”(hŒThe new compound payload.”h]”hŒThe new compound payload.”…”�”}”(hjLªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jHªh´MìhjIªubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj-ªubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jHªh´Mìhj¸©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjœ©ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjnªh]”hŒ Description”…”�”}”(hjpªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjlªubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mîhjœ©ubhï)�”}”(hŒÒThis sets the control's new compound payload safely by going through the control framework. This function will lock the control's handler, so it cannot be used from within the :c:type:`v4l2_ctrl_ops` functions.”h]”(hŒ´This sets the control’s new compound payload safely by going through the control framework. This function will lock the control’s handler, so it cannot be used from within the ”…”�”}”(hj„ªh²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_ctrl_ops`”h]”j½)�”}”(hjŽªh]”hŒ v4l2_ctrl_ops”…”�”}”(hj�ªh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjŒªubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Míhj„ªubhŒ functions.”…”�”}”(hj„ªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j«ªh´Míhjœ©ubhï)�”}”(hŒ1This function is for compound type controls only.”h]”hŒ1This function is for compound type controls only.”…”�”}”(hj¶ªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mñhjœ©ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_replace (C function)”Œc.v4l2_ctrl_replace”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒMvoid v4l2_ctrl_replace (struct v4l2_event *old, const struct v4l2_event *new)”h]”j')�”}”(hŒLvoid v4l2_ctrl_replace(struct v4l2_event *old, const struct v4l2_event *new)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjåªh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjáªh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôªh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjáªh²hh³jóªh´M ubjP)�”}”(hŒv4l2_ctrl_replace”h]”jV)�”}”(hŒv4l2_ctrl_replace”h]”hŒv4l2_ctrl_replace”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj«ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjáªh²hh³jóªh´M ubjÀ)�”}”(hŒ6(struct v4l2_event *old, const struct v4l2_event *new)”h]”(jÆ)�”}”(hŒstruct v4l2_event *old”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj"«h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj«ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/«h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj«ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_event”h]”hŒ v4l2_event”…”�”}”(hj@«h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj=«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jB«Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j«sbŒc.v4l2_ctrl_replace”†”asbuh1hhj«ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`«h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj«ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjn«h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj«ubjV)�”}”(hŒold”h]”hŒold”…”�”}”(hj{«h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj«ubjÆ)�”}”(hŒconst struct v4l2_event *new”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj”«h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj�«ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡«h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�«ubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¯«h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj�«ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼«h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�«ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_event”h]”hŒ v4l2_event”…”�”}”(hjÍ«h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÊ«ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÏ«Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j\«Œc.v4l2_ctrl_replace”†”asbuh1hhj�«ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjë«h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj�«ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjù«h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj�«ubjV)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�«ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj«ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjáªh²hh³jóªh´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjݪh²hh³jóªh´M ubah}”(h]”jتah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jóªh´M hjÚªh²hubj‚)�”}”(hhh]”hï)�”}”(hŒwFunction to be used as a callback to :c:type:`struct v4l2_subscribed_event_ops ` replace\(\)”h]”(hŒ%Function to be used as a callback to ”…”�”}”(hj0¬h²hh³Nh´Nubh)�”}”(hŒF:c:type:`struct v4l2_subscribed_event_ops `”h]”j½)�”}”(hj:¬h]”hŒ struct v4l2_subscribed_event_ops”…”�”}”(hj<¬h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj8¬ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jŽ)�”}”j‘]”j\«Œc.v4l2_ctrl_replace”†”asbjÛŒv4l2_subscribed_event_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Khj0¬ubhŒ replace()”…”�”}”(hj0¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hj-¬h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÚªh²hh³jóªh´M ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jq¬j¤jq¬j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒÔ**Parameters** ``struct v4l2_event *old`` pointer to struct :c:type:`v4l2_event` with the reported event; ``const struct v4l2_event *new`` pointer to struct :c:type:`v4l2_event` with the modified event;”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj{¬h]”hŒ Parameters”…”�”}”(hj}¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjy¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhju¬ubj)�”}”(hhh]”(j)�”}”(hŒ[``struct v4l2_event *old`` pointer to struct :c:type:`v4l2_event` with the reported event; ”h]”(j )�”}”(hŒ``struct v4l2_event *old``”h]”j½)�”}”(hjš¬h]”hŒstruct v4l2_event *old”…”�”}”(hjœ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj˜¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj”¬ubj&)�”}”(hhh]”hï)�”}”(hŒ?pointer to struct :c:type:`v4l2_event` with the reported event;”h]”(hŒpointer to struct ”…”�”}”(hj³¬h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_event`”h]”j½)�”}”(hj½¬h]”hŒ v4l2_event”…”�”}”(hj¿¬h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj»¬ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_event”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj³¬ubhŒ with the reported event;”…”�”}”(hj³¬h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÚ¬h´Mhj°¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj”¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¯¬h´Mhj‘¬ubj)�”}”(hŒ```const struct v4l2_event *new`` pointer to struct :c:type:`v4l2_event` with the modified event;”h]”(j )�”}”(hŒ ``const struct v4l2_event *new``”h]”j½)�”}”(hj÷¬h]”hŒconst struct v4l2_event *new”…”�”}”(hjù¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjõ¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjñ¬ubj&)�”}”(hhh]”hï)�”}”(hŒ?pointer to struct :c:type:`v4l2_event` with the modified event;”h]”(hŒpointer to struct ”…”�”}”(hj­h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_event`”h]”j½)�”}”(hj­h]”hŒ v4l2_event”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj­ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_event”uh1hh³j ­h´Mhj­ubhŒ with the modified event;”…”�”}”(hj­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j ­h´Mhj ­ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j ­h´Mhj‘¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhju¬ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_merge (C function)”Œc.v4l2_ctrl_merge”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒKvoid v4l2_ctrl_merge (const struct v4l2_event *old, struct v4l2_event *new)”h]”j')�”}”(hŒJvoid v4l2_ctrl_merge(const struct v4l2_event *old, struct v4l2_event *new)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjs­h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjo­h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‚­h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjo­h²hh³j�­h´MubjP)�”}”(hŒv4l2_ctrl_merge”h]”jV)�”}”(hŒv4l2_ctrl_merge”h]”hŒv4l2_ctrl_merge”…”�”}”(hj”­h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj�­ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjo­h²hh³j�­h´MubjÀ)�”}”(hŒ6(const struct v4l2_event *old, struct v4l2_event *new)”h]”(jÆ)�”}”(hŒconst struct v4l2_event *old”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj°­h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¬­ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½­h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬­ubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjË­h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¬­ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØ­h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬­ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_event”h]”hŒ v4l2_event”…”�”}”(hjé­h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjæ­ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jë­Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j–­sbŒc.v4l2_ctrl_merge”†”asbuh1hhj¬­ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ®h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¬­ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¬­ubjV)�”}”(hŒold”h]”hŒold”…”�”}”(hj$®h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¬­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj¨­ubjÆ)�”}”(hŒstruct v4l2_event *new”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj=®h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj9®ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ®h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9®ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_event”h]”hŒ v4l2_event”…”�”}”(hj[®h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjX®ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j]®Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j®Œc.v4l2_ctrl_merge”†”asbuh1hhj9®ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjy®h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9®ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj‡®h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj9®ubjV)�”}”(hŒnew”h]”hŒnew”…”�”}”(hj”®h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj9®ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj¨­ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjo­h²hh³j�­h´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjk­h²hh³j�­h´Mubah}”(h]”jf­ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j�­h´Mhjh­h²hubj‚)�”}”(hhh]”hï)�”}”(hŒtFunction to be used as a callback to :c:type:`struct v4l2_subscribed_event_ops ` merge(\)”h]”(hŒ%Function to be used as a callback to ”…”�”}”(hj¾®h²hh³Nh´Nubh)�”}”(hŒF:c:type:`struct v4l2_subscribed_event_ops `”h]”j½)�”}”(hjÈ®h]”hŒ struct v4l2_subscribed_event_ops”…”�”}”(hjÊ®h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÆ®ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jŽ)�”}”j‘]”j®Œc.v4l2_ctrl_merge”†”asbjÛŒv4l2_subscribed_event_ops”uh1hh³j\¬h´Khj¾®ubhŒ merge()”…”�”}”(hj¾®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj»®h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjh­h²hh³j�­h´Mubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jþ®j¤jþ®j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒÒ**Parameters** ``const struct v4l2_event *old`` pointer to struct :c:type:`v4l2_event` with the reported event; ``struct v4l2_event *new`` pointer to struct :c:type:`v4l2_event` with the merged event;”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj¯h]”hŒ Parameters”…”�”}”(hj ¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj¯ubj)�”}”(hhh]”(j)�”}”(hŒa``const struct v4l2_event *old`` pointer to struct :c:type:`v4l2_event` with the reported event; ”h]”(j )�”}”(hŒ ``const struct v4l2_event *old``”h]”j½)�”}”(hj'¯h]”hŒconst struct v4l2_event *old”…”�”}”(hj)¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj%¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj!¯ubj&)�”}”(hhh]”hï)�”}”(hŒ?pointer to struct :c:type:`v4l2_event` with the reported event;”h]”(hŒpointer to struct ”…”�”}”(hj@¯h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_event`”h]”j½)�”}”(hjJ¯h]”hŒ v4l2_event”…”�”}”(hjL¯h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjH¯ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_event”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj@¯ubhŒ with the reported event;”…”�”}”(hj@¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jg¯h´Mhj=¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj!¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j<¯h´Mhj¯ubj)�”}”(hŒX``struct v4l2_event *new`` pointer to struct :c:type:`v4l2_event` with the merged event;”h]”(j )�”}”(hŒ``struct v4l2_event *new``”h]”j½)�”}”(hj„¯h]”hŒstruct v4l2_event *new”…”�”}”(hj†¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj‚¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj~¯ubj&)�”}”(hhh]”hï)�”}”(hŒ=pointer to struct :c:type:`v4l2_event` with the merged event;”h]”(hŒpointer to struct ”…”�”}”(hj�¯h²hh³Nh´Nubh)�”}”(hŒ:c:type:`v4l2_event`”h]”j½)�”}”(hj§¯h]”hŒ v4l2_event”…”�”}”(hj©¯h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj¥¯ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j‹jfjÛŒ v4l2_event”uh1hh³j™¯h´Mhj�¯ubhŒ with the merged event;”…”�”}”(hj�¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j™¯h´Mhjš¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj~¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j™¯h´Mhj¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ!v4l2_ctrl_log_status (C function)”Œc.v4l2_ctrl_log_status”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ8int v4l2_ctrl_log_status (struct file *file, void *priv)”h]”j')�”}”(hŒ7int v4l2_ctrl_log_status(struct file *file, void *priv)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjü¯h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M!ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjü¯h²hh³j°h´M!ubjP)�”}”(hŒv4l2_ctrl_log_status”h]”jV)�”}”(hŒv4l2_ctrl_log_status”h]”hŒv4l2_ctrl_log_status”…”�”}”(hj!°h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj°ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjü¯h²hh³j°h´M!ubjÀ)�”}”(hŒ(struct file *file, void *priv)”h]”(jÆ)�”}”(hŒstruct file *file”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj=°h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj9°ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJ°h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9°ubh)�”}”(hhh]”jV)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj[°h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjX°ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j]°Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j#°sbŒc.v4l2_ctrl_log_status”†”asbuh1hhj9°ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{°h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj9°ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj‰°h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj9°ubjV)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj–°h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj9°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj5°ubjÆ)�”}”(hŒ void *priv”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¯°h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj«°ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj½°h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj«°ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj˰h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj«°ubjV)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjذh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj«°ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj5°ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjü¯h²hh³j°h´M!ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjø¯h²hh³j°h´M!ubah}”(h]”jó¯ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j°h´M!hjõ¯h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ8helper function to implement ``VIDIOC_LOG_STATUS`` ioctl”h]”(hŒhelper function to implement ”…”�”}”(hj±h²hh³Nh´Nubj½)�”}”(hŒ``VIDIOC_LOG_STATUS``”h]”hŒVIDIOC_LOG_STATUS”…”�”}”(hj ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj±ubhŒ ioctl”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M!hjÿ°h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjõ¯h²hh³j°h´M!ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j,±j¤j,±j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXQ**Parameters** ``struct file *file`` pointer to struct file ``void *priv`` unused. Kept just to be compatible to the arguments expected by :c:type:`struct v4l2_ioctl_ops `.vidioc_log_status. **Description** Can be used as a vidioc_log_status function that just dumps all controls associated with the filehandle.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj6±h]”hŒ Parameters”…”�”}”(hj8±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj4±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M%hj0±ubj)�”}”(hhh]”(j)�”}”(hŒ-``struct file *file`` pointer to struct file ”h]”(j )�”}”(hŒ``struct file *file``”h]”j½)�”}”(hjU±h]”hŒstruct file *file”…”�”}”(hjW±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjS±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M#hjO±ubj&)�”}”(hhh]”hï)�”}”(hŒpointer to struct file”h]”hŒpointer to struct file”…”�”}”(hjn±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jj±h´M#hjk±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjO±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jj±h´M#hjL±ubj)�”}”(hŒ“``void *priv`` unused. Kept just to be compatible to the arguments expected by :c:type:`struct v4l2_ioctl_ops `.vidioc_log_status. ”h]”(j )�”}”(hŒ``void *priv``”h]”j½)�”}”(hjޱh]”hŒ void *priv”…”�”}”(hj�±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŒ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M%hjˆ±ubj&)�”}”(hhh]”hï)�”}”(hŒƒunused. Kept just to be compatible to the arguments expected by :c:type:`struct v4l2_ioctl_ops `.vidioc_log_status.”h]”(hŒ@unused. Kept just to be compatible to the arguments expected by ”…”�”}”(hj§±h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct v4l2_ioctl_ops `”h]”j½)�”}”(hj±±h]”hŒstruct v4l2_ioctl_ops”…”�”}”(hj³±h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj¯±ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ioctl_ops”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M$hj§±ubhŒ.vidioc_log_status.”…”�”}”(hj§±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jαh´M$hj¤±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjˆ±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j£±h´M%hjL±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj0±ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjí±h]”hŒ Description”…”�”}”(hjï±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjë±ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M'hj0±ubhï)�”}”(hŒhCan be used as a vidioc_log_status function that just dumps all controls associated with the filehandle.”h]”hŒhCan be used as a vidioc_log_status function that just dumps all controls associated with the filehandle.”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M&hj0±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&v4l2_ctrl_subscribe_event (C function)”Œc.v4l2_ctrl_subscribe_event”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ]int v4l2_ctrl_subscribe_event (struct v4l2_fh *fh, const struct v4l2_event_subscription *sub)”h]”j')�”}”(hŒ\int v4l2_ctrl_subscribe_event(struct v4l2_fh *fh, const struct v4l2_event_subscription *sub)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj2²h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj.²h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M-ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjA²h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj.²h²hh³j@²h´M-ubjP)�”}”(hŒv4l2_ctrl_subscribe_event”h]”jV)�”}”(hŒv4l2_ctrl_subscribe_event”h]”hŒv4l2_ctrl_subscribe_event”…”�”}”(hjS²h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjO²ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj.²h²hh³j@²h´M-ubjÀ)�”}”(hŒ?(struct v4l2_fh *fh, const struct v4l2_event_subscription *sub)”h]”(jÆ)�”}”(hŒstruct v4l2_fh *fh”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjo²h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjk²ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|²h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjk²ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_fh”h]”hŒv4l2_fh”…”�”}”(hj�²h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjвubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j�²Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jU²sbŒc.v4l2_ctrl_subscribe_event”†”asbuh1hhjk²ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj­²h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjk²ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj»²h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjk²ubjV)�”}”(hŒfh”h]”hŒfh”…”�”}”(hjȲh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjk²ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjg²ubjÆ)�”}”(hŒ)const struct v4l2_event_subscription *sub”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjá²h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjݲubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjî²h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjݲubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjü²h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjݲubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj ³h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjݲubh)�”}”(hhh]”jV)�”}”(hŒv4l2_event_subscription”h]”hŒv4l2_event_subscription”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj³ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j³Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j©²Œc.v4l2_ctrl_subscribe_event”†”asbuh1hhjݲubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8³h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjݲubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjF³h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjݲubjV)�”}”(hŒsub”h]”hŒsub”…”�”}”(hjS³h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjݲubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjg²ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj.²h²hh³j@²h´M-ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj*²h²hh³j@²h´M-ubah}”(h]”j%²ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j@²h´M-hj'²h²hubj‚)�”}”(hhh]”hï)�”}”(hŒSubscribes to an event”h]”hŒSubscribes to an event”…”�”}”(hj}³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M-hjz³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj'²h²hh³j@²h´M-ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j•³j¤j•³j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX)**Parameters** ``struct v4l2_fh *fh`` pointer to struct v4l2_fh ``const struct v4l2_event_subscription *sub`` pointer to :c:type:`struct v4l2_event_subscription ` **Description** Can be used as a vidioc_subscribe_event function that just subscribes control events.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjŸ³h]”hŒ Parameters”…”�”}”(hj¡³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj�³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M1hj™³ubj)�”}”(hhh]”(j)�”}”(hŒ1``struct v4l2_fh *fh`` pointer to struct v4l2_fh ”h]”(j )�”}”(hŒ``struct v4l2_fh *fh``”h]”j½)�”}”(hj¾³h]”hŒstruct v4l2_fh *fh”…”�”}”(hjÀ³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¼³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M0hj¸³ubj&)�”}”(hhh]”hï)�”}”(hŒpointer to struct v4l2_fh”h]”hŒpointer to struct v4l2_fh”…”�”}”(hj׳h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÓ³h´M0hjÔ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¸³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÓ³h´M0hjµ³ubj)�”}”(hŒ|``const struct v4l2_event_subscription *sub`` pointer to :c:type:`struct v4l2_event_subscription ` ”h]”(j )�”}”(hŒ-``const struct v4l2_event_subscription *sub``”h]”j½)�”}”(hj÷³h]”hŒ)const struct v4l2_event_subscription *sub”…”�”}”(hjù³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjõ³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M1hjñ³ubj&)�”}”(hhh]”hï)�”}”(hŒMpointer to :c:type:`struct v4l2_event_subscription `”h]”(hŒ pointer to ”…”�”}”(hj´h²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct v4l2_event_subscription `”h]”j½)�”}”(hj´h]”hŒstruct v4l2_event_subscription”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj´ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_event_subscription”uh1hh³j ´h´M1hj´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j ´h´M1hj ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñ³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j ´h´M1hjµ³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj™³ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjQ´h]”hŒ Description”…”�”}”(hjS´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjO´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M3hj™³ubhï)�”}”(hŒUCan be used as a vidioc_subscribe_event function that just subscribes control events.”h]”hŒUCan be used as a vidioc_subscribe_event function that just subscribes control events.”…”�”}”(hjg´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M.hj™³ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_ctrl_poll (C function)”Œc.v4l2_ctrl_poll”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒK__poll_t v4l2_ctrl_poll (struct file *file, struct poll_table_struct *wait)”h]”j')�”}”(hŒJ__poll_t v4l2_ctrl_poll(struct file *file, struct poll_table_struct *wait)”h]”(h)�”}”(hhh]”jV)�”}”(hŒ__poll_t”h]”hŒ__poll_t”…”�”}”(hj™´h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj–´ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j›´Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_poll”sbŒc.v4l2_ctrl_poll”†”asbuh1hhj’´h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M:ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»´h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj’´h²hh³jº´h´M:ubjP)�”}”(hŒv4l2_ctrl_poll”h]”jV)�”}”(hj·´h]”hŒv4l2_ctrl_poll”…”�”}”(hjÍ´h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÉ´ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj’´h²hh³jº´h´M:ubjÀ)�”}”(hŒ3(struct file *file, struct poll_table_struct *wait)”h]”(jÆ)�”}”(hŒstruct file *file”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjè´h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjä´ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjõ´h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjä´ubh)�”}”(hhh]”jV)�”}”(hŒfile”h]”hŒfile”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jµŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jµ´Œc.v4l2_ctrl_poll”†”asbuh1hhjä´ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$µh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjä´ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj2µh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjä´ubjV)�”}”(hŒfile”h]”hŒfile”…”�”}”(hj?µh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjä´ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjà´ubjÆ)�”}”(hŒstruct poll_table_struct *wait”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjXµh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjTµubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeµh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjTµubh)�”}”(hhh]”jV)�”}”(hŒpoll_table_struct”h]”hŒpoll_table_struct”…”�”}”(hjvµh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjsµubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jxµŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jµ´Œc.v4l2_ctrl_poll”†”asbuh1hhjTµubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”µh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjTµubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¢µh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjTµubjV)�”}”(hŒwait”h]”hŒwait”…”�”}”(hj¯µh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjTµubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjà´ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj’´h²hh³jº´h´M:ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjŽ´h²hh³jº´h´M:ubah}”(h]”j‰´ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jº´h´M:hj‹´h²hubj‚)�”}”(hhh]”hï)�”}”(hŒSfunction to be used as a callback to the poll() That just polls for control events.”h]”hŒSfunction to be used as a callback to the poll() That just polls for control events.”…”�”}”(hjÙµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M:hjÖµh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj‹´h²hh³jº´h´M:ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jñµj¤jñµj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒˆ**Parameters** ``struct file *file`` pointer to struct file ``struct poll_table_struct *wait`` pointer to struct poll_table_struct”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjûµh]”hŒ Parameters”…”�”}”(hjýµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjùµubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M>hjõµubj)�”}”(hhh]”(j)�”}”(hŒ-``struct file *file`` pointer to struct file ”h]”(j )�”}”(hŒ``struct file *file``”h]”j½)�”}”(hj¶h]”hŒstruct file *file”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M=hj¶ubj&)�”}”(hhh]”hï)�”}”(hŒpointer to struct file”h]”hŒpointer to struct file”…”�”}”(hj3¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j/¶h´M=hj0¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j/¶h´M=hj¶ubj)�”}”(hŒF``struct poll_table_struct *wait`` pointer to struct poll_table_struct”h]”(j )�”}”(hŒ"``struct poll_table_struct *wait``”h]”j½)�”}”(hjS¶h]”hŒstruct poll_table_struct *wait”…”�”}”(hjU¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjQ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M?hjM¶ubj&)�”}”(hhh]”hï)�”}”(hŒ#pointer to struct poll_table_struct”h]”hŒ#pointer to struct poll_table_struct”…”�”}”(hjl¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M>hji¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjM¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jh¶h´M?hj¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjõµubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$v4l2_ctrl_request_setup (C function)”Œc.v4l2_ctrl_request_setup”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒYint v4l2_ctrl_request_setup (struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”j')�”}”(hŒXint v4l2_ctrl_request_setup(struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj­¶h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj©¶h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”•h´MCubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼¶h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj©¶h²hh³j»¶h´MCubjP)�”}”(hŒv4l2_ctrl_request_setup”h]”jV)�”}”(hŒv4l2_ctrl_request_setup”h]”hŒv4l2_ctrl_request_setup”…”�”}”(hjζh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjʶubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj©¶h²hh³j»¶h´MCubjÀ)�”}”(hŒ=(struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”(jÆ)�”}”(hŒstruct media_request *req”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjê¶h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjæ¶ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷¶h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjæ¶ubh)�”}”(hhh]”jV)�”}”(hŒ media_request”h]”hŒ media_request”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j ·Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jжsbŒc.v4l2_ctrl_request_setup”†”asbuh1hhjæ¶ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(·h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjæ¶ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj6·h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjæ¶ubjV)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjC·h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjæ¶ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjâ¶ubjÆ)�”}”(hŒ struct v4l2_ctrl_handler *parent”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj\·h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjX·ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji·h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjX·ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjz·h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjw·ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j|·Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j$·Œc.v4l2_ctrl_request_setup”†”asbuh1hhjX·ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜·h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjX·ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¦·h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjX·ubjV)�”}”(hŒparent”h]”hŒparent”…”�”}”(hj³·h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjX·ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjâ¶ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj©¶h²hh³j»¶h´MCubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj¥¶h²hh³j»¶h´MCubah}”(h]”j ¶ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j»¶h´MChj¢¶h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ4helper function to apply control values in a request”h]”hŒ4helper function to apply control values in a request”…”�”}”(hjÝ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MChjÚ·h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¢¶h²hh³j»¶h´MCubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jõ·j¤jõ·j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX¥**Parameters** ``struct media_request *req`` The request ``struct v4l2_ctrl_handler *parent`` The parent control handler ('priv' in media_request_object_find()) **Description** This is a helper function to call the control handler's s_ctrl callback with the control values contained in the request. Do note that this approach of applying control values in a request is only applicable to memory-to-memory devices.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjÿ·h]”hŒ Parameters”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjý·ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MGhjù·ubj)�”}”(hhh]”(j)�”}”(hŒ*``struct media_request *req`` The request ”h]”(j )�”}”(hŒ``struct media_request *req``”h]”j½)�”}”(hj¸h]”hŒstruct media_request *req”…”�”}”(hj ¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MEhj¸ubj&)�”}”(hhh]”hï)�”}”(hŒ The request”h]”hŒ The request”…”�”}”(hj7¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j3¸h´MEhj4¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j3¸h´MEhj¸ubj)�”}”(hŒh``struct v4l2_ctrl_handler *parent`` The parent control handler ('priv' in media_request_object_find()) ”h]”(j )�”}”(hŒ$``struct v4l2_ctrl_handler *parent``”h]”j½)�”}”(hjW¸h]”hŒ struct v4l2_ctrl_handler *parent”…”�”}”(hjY¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjU¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MFhjQ¸ubj&)�”}”(hhh]”hï)�”}”(hŒBThe parent control handler ('priv' in media_request_object_find())”h]”hŒFThe parent control handler (‘priv’ in media_request_object_find())”…”�”}”(hjp¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jl¸h´MFhjm¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjQ¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jl¸h´MFhj¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjù·ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj’¸h]”hŒ Description”…”�”}”(hj”¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj�¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MHhjù·ubhï)�”}”(hŒìThis is a helper function to call the control handler's s_ctrl callback with the control values contained in the request. Do note that this approach of applying control values in a request is only applicable to memory-to-memory devices.”h]”hŒîThis is a helper function to call the control handler’s s_ctrl callback with the control values contained in the request. Do note that this approach of applying control values in a request is only applicable to memory-to-memory devices.”…”�”}”(hj¨¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MGhjù·ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'v4l2_ctrl_request_complete (C function)”Œc.v4l2_ctrl_request_complete”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ]void v4l2_ctrl_request_complete (struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”j')�”}”(hŒ\void v4l2_ctrl_request_complete(struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj׸h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjÓ¸h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MQubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæ¸h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÓ¸h²hh³jå¸h´MQubjP)�”}”(hŒv4l2_ctrl_request_complete”h]”jV)�”}”(hŒv4l2_ctrl_request_complete”h]”hŒv4l2_ctrl_request_complete”…”�”}”(hjø¸h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjô¸ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÓ¸h²hh³jå¸h´MQubjÀ)�”}”(hŒ=(struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”(jÆ)�”}”(hŒstruct media_request *req”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¹ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!¹h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¹ubh)�”}”(hhh]”jV)�”}”(hŒ media_request”h]”hŒ media_request”…”�”}”(hj2¹h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj/¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j4¹Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jú¸sbŒc.v4l2_ctrl_request_complete”†”asbuh1hhj¹ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR¹h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¹ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj`¹h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¹ubjV)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjm¹h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj ¹ubjÆ)�”}”(hŒ struct v4l2_ctrl_handler *parent”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj†¹h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj‚¹ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“¹h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‚¹ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj¤¹h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¡¹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¦¹Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jN¹Œc.v4l2_ctrl_request_complete”†”asbuh1hhj‚¹ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‚¹ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjйh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj‚¹ubjV)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjݹh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‚¹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj ¹ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÓ¸h²hh³jå¸h´MQubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjϸh²hh³jå¸h´MQubah}”(h]”jʸah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jå¸h´MQhj̸h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ)Complete a control handler request object”h]”hŒ)Complete a control handler request object”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MQhjºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj̸h²hh³jå¸h´MQubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jºj¤jºj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct media_request *req`` The request ``struct v4l2_ctrl_handler *parent`` The parent control handler ('priv' in media_request_object_find()) **Description** This function is to be called on each control handler that may have had a request object associated with it, i.e. control handlers of a driver that supports requests. The function first obtains the values of any volatile controls in the control handler and attach them to the request. Then, the function completes the request object.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj)ºh]”hŒ Parameters”…”�”}”(hj+ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj'ºubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MUhj#ºubj)�”}”(hhh]”(j)�”}”(hŒ*``struct media_request *req`` The request ”h]”(j )�”}”(hŒ``struct media_request *req``”h]”j½)�”}”(hjHºh]”hŒstruct media_request *req”…”�”}”(hjJºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjFºubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MShjBºubj&)�”}”(hhh]”hï)�”}”(hŒ The request”h]”hŒ The request”…”�”}”(hjaºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j]ºh´MShj^ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjBºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j]ºh´MShj?ºubj)�”}”(hŒh``struct v4l2_ctrl_handler *parent`` The parent control handler ('priv' in media_request_object_find()) ”h]”(j )�”}”(hŒ$``struct v4l2_ctrl_handler *parent``”h]”j½)�”}”(hj�ºh]”hŒ struct v4l2_ctrl_handler *parent”…”�”}”(hjƒºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MThj{ºubj&)�”}”(hhh]”hï)�”}”(hŒBThe parent control handler ('priv' in media_request_object_find())”h]”hŒFThe parent control handler (‘priv’ in media_request_object_find())”…”�”}”(hjšºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j–ºh´MThj—ºubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj{ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j–ºh´MThj?ºubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ºubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj¼ºh]”hŒ Description”…”�”}”(hj¾ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjººubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MVhj#ºubhï)�”}”(hŒ¦This function is to be called on each control handler that may have had a request object associated with it, i.e. control handlers of a driver that supports requests.”h]”hŒ¦This function is to be called on each control handler that may have had a request object associated with it, i.e. control handlers of a driver that supports requests.”…”�”}”(hjÒºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MUhj#ºubhï)�”}”(hŒ¦The function first obtains the values of any volatile controls in the control handler and attach them to the request. Then, the function completes the request object.”h]”hŒ¦The function first obtains the values of any volatile controls in the control handler and attach them to the request. Then, the function completes the request object.”…”�”}”(hjáºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MYhj#ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'v4l2_ctrl_request_hdl_find (C function)”Œc.v4l2_ctrl_request_hdl_find”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒsstruct v4l2_ctrl_handler * v4l2_ctrl_request_hdl_find (struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”j')�”}”(hŒqstruct v4l2_ctrl_handler *v4l2_ctrl_request_hdl_find(struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj »h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mbubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj »h²hh³j»h´Mbubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj/»h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj,»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j1»Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_request_hdl_find”sbŒc.v4l2_ctrl_request_hdl_find”†”asbuh1hhj »h²hh³j»h´Mbubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP»h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj »h²hh³j»h´Mbubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj^»h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj »h²hh³j»h´MbubjP)�”}”(hŒv4l2_ctrl_request_hdl_find”h]”jV)�”}”(hjM»h]”hŒv4l2_ctrl_request_hdl_find”…”�”}”(hjo»h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjk»ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj »h²hh³j»h´MbubjÀ)�”}”(hŒ=(struct media_request *req, struct v4l2_ctrl_handler *parent)”h]”(jÆ)�”}”(hŒstruct media_request *req”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjŠ»h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj†»ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—»h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj†»ubh)�”}”(hhh]”jV)�”}”(hŒ media_request”h]”hŒ media_request”…”�”}”(hj¨»h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¥»ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jª»Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jK»Œc.v4l2_ctrl_request_hdl_find”†”asbuh1hhj†»ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ»h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj†»ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÔ»h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj†»ubjV)�”}”(hŒreq”h]”hŒreq”…”�”}”(hjá»h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj†»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj‚»ubjÆ)�”}”(hŒ struct v4l2_ctrl_handler *parent”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjú»h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjö»ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjö»ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¼ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¼Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jK»Œc.v4l2_ctrl_request_hdl_find”†”asbuh1hhjö»ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6¼h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjö»ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjD¼h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjö»ubjV)�”}”(hŒparent”h]”hŒparent”…”�”}”(hjQ¼h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjö»ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj‚»ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj »h²hh³j»h´Mbubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj»h²hh³j»h´Mbubah}”(h]”j»ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j»h´Mbhj»h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ'Find the control handler in the request”h]”hŒ'Find the control handler in the request”…”�”}”(hj{¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mbhjx¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj»h²hh³j»h´Mbubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j“¼j¤j“¼j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX€**Parameters** ``struct media_request *req`` The request ``struct v4l2_ctrl_handler *parent`` The parent control handler ('priv' in media_request_object_find()) **Description** This function finds the control handler in the request. It may return NULL if not found. When done, you must call v4l2_ctrl_request_hdl_put() with the returned handler pointer. If the request is not in state VALIDATING or QUEUED, then this function will always return NULL. Note that in state VALIDATING the req_queue_mutex is held, so no objects can be added or deleted from the request. In state QUEUED it is the driver that will have to ensure this.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj�¼h]”hŒ Parameters”…”�”}”(hjŸ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj›¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mfhj—¼ubj)�”}”(hhh]”(j)�”}”(hŒ*``struct media_request *req`` The request ”h]”(j )�”}”(hŒ``struct media_request *req``”h]”j½)�”}”(hj¼¼h]”hŒstruct media_request *req”…”�”}”(hj¾¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjº¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mdhj¶¼ubj&)�”}”(hhh]”hï)�”}”(hŒ The request”h]”hŒ The request”…”�”}”(hjÕ¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jѼh´MdhjÒ¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¶¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jѼh´Mdhj³¼ubj)�”}”(hŒh``struct v4l2_ctrl_handler *parent`` The parent control handler ('priv' in media_request_object_find()) ”h]”(j )�”}”(hŒ$``struct v4l2_ctrl_handler *parent``”h]”j½)�”}”(hjõ¼h]”hŒ struct v4l2_ctrl_handler *parent”…”�”}”(hj÷¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjó¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mehjï¼ubj&)�”}”(hhh]”hï)�”}”(hŒBThe parent control handler ('priv' in media_request_object_find())”h]”hŒFThe parent control handler (‘priv’ in media_request_object_find())”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j ½h´Mehj ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjï¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j ½h´Mehj³¼ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj—¼ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj0½h]”hŒ Description”…”�”}”(hj2½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj.½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mghj—¼ubhï)�”}”(hŒ°This function finds the control handler in the request. It may return NULL if not found. When done, you must call v4l2_ctrl_request_hdl_put() with the returned handler pointer.”h]”hŒ°This function finds the control handler in the request. It may return NULL if not found. When done, you must call v4l2_ctrl_request_hdl_put() with the returned handler pointer.”…”�”}”(hjF½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mfhj—¼ubhï)�”}”(hŒ`If the request is not in state VALIDATING or QUEUED, then this function will always return NULL.”h]”hŒ`If the request is not in state VALIDATING or QUEUED, then this function will always return NULL.”…”�”}”(hjU½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mjhj—¼ubhï)�”}”(hŒrNote that in state VALIDATING the req_queue_mutex is held, so no objects can be added or deleted from the request.”h]”hŒrNote that in state VALIDATING the req_queue_mutex is held, so no objects can be added or deleted from the request.”…”�”}”(hjd½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mmhj—¼ubhï)�”}”(hŒ?In state QUEUED it is the driver that will have to ensure this.”h]”hŒ?In state QUEUED it is the driver that will have to ensure this.”…”�”}”(hjs½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mphj—¼ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ&v4l2_ctrl_request_hdl_put (C function)”Œc.v4l2_ctrl_request_hdl_put”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ>void v4l2_ctrl_request_hdl_put (struct v4l2_ctrl_handler *hdl)”h]”j')�”}”(hŒ=void v4l2_ctrl_request_hdl_put(struct v4l2_ctrl_handler *hdl)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¢½h²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjž½h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mwubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±½h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjž½h²hh³j°½h´MwubjP)�”}”(hŒv4l2_ctrl_request_hdl_put”h]”jV)�”}”(hŒv4l2_ctrl_request_hdl_put”h]”hŒv4l2_ctrl_request_hdl_put”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¿½ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjž½h²hh³j°½h´MwubjÀ)�”}”(hŒ(struct v4l2_ctrl_handler *hdl)”h]”jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjß½h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÛ½ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjì½h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÛ½ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjý½h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjú½ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÿ½Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jŽsbŒc.v4l2_ctrl_request_hdl_put”†”asbuh1hhjÛ½ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÛ½ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj+¾h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÛ½ubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hj8¾h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÛ½ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj×½ubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjž½h²hh³j°½h´Mwubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjš½h²hh³j°½h´Mwubah}”(h]”j•½ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j°½h´Mwhj—½h²hubj‚)�”}”(hhh]”hï)�”}”(hŒPut the control handler”h]”hŒPut the control handler”…”�”}”(hjb¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mwhj_¾h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj—½h²hh³j°½h´Mwubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jz¾j¤jz¾j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒÁ**Parameters** ``struct v4l2_ctrl_handler *hdl`` Put this control handler **Description** This function released the control handler previously obtained from' v4l2_ctrl_request_hdl_find().”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj„¾h]”hŒ Parameters”…”�”}”(hj†¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj‚¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M{hj~¾ubj)�”}”(hhh]”j)�”}”(hŒ;``struct v4l2_ctrl_handler *hdl`` Put this control handler ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj£¾h]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj¥¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¡¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Myhj�¾ubj&)�”}”(hhh]”hï)�”}”(hŒPut this control handler”h]”hŒPut this control handler”…”�”}”(hj¼¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¸¾h´Myhj¹¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj�¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¸¾h´Myhjš¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj~¾ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjÞ¾h]”hŒ Description”…”�”}”(hjà¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjܾubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M{hj~¾ubhï)�”}”(hŒbThis function released the control handler previously obtained from' v4l2_ctrl_request_hdl_find().”h]”hŒdThis function released the control handler previously obtained from’ v4l2_ctrl_request_hdl_find().”…”�”}”(hjô¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mzhj~¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ,v4l2_ctrl_request_hdl_ctrl_find (C function)”Œ!c.v4l2_ctrl_request_hdl_ctrl_find”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒZstruct v4l2_ctrl * v4l2_ctrl_request_hdl_ctrl_find (struct v4l2_ctrl_handler *hdl, u32 id)”h]”j')�”}”(hŒXstruct v4l2_ctrl *v4l2_ctrl_request_hdl_ctrl_find(struct v4l2_ctrl_handler *hdl, u32 id)”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj#¿h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¿h²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M…ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1¿h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¿h²hh³j0¿h´M…ubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjB¿h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj?¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jD¿Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡Œv4l2_ctrl_request_hdl_ctrl_find”sbŒ!c.v4l2_ctrl_request_hdl_ctrl_find”†”asbuh1hhj¿h²hh³j0¿h´M…ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjc¿h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¿h²hh³j0¿h´M…ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjq¿h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¿h²hh³j0¿h´M…ubjP)�”}”(hŒv4l2_ctrl_request_hdl_ctrl_find”h]”jV)�”}”(hj`¿h]”hŒv4l2_ctrl_request_hdl_ctrl_find”…”�”}”(hj‚¿h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj~¿ubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj¿h²hh³j0¿h´M…ubjÀ)�”}”(hŒ'(struct v4l2_ctrl_handler *hdl, u32 id)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj�¿h²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj™¿ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª¿h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™¿ubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj»¿h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¸¿ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j½¿Œmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j^¿Œ!c.v4l2_ctrl_request_hdl_ctrl_find”†”asbuh1hhj™¿ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÙ¿h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™¿ubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjç¿h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj™¿ubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjô¿h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj™¿ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj•¿ubjÆ)�”}”(hŒu32 id”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj Àubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÀŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j^¿Œ!c.v4l2_ctrl_request_hdl_ctrl_find”†”asbuh1hhj Àubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.Àh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj ÀubjV)�”}”(hŒid”h]”hŒid”…”�”}”(hj<Àh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj Àubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj•¿ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj¿h²hh³j0¿h´M…ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj¿h²hh³j0¿h´M…ubah}”(h]”j¿ah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j0¿h´M…hj¿h²hubj‚)�”}”(hhh]”hï)�”}”(hŒ!Find a control with the given ID.”h]”hŒ!Find a control with the given ID.”…”�”}”(hjfÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M…hjcÀh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj¿h²hh³j0¿h´M…ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j~Àj¤j~Àj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct v4l2_ctrl_handler *hdl`` The control handler from the request. ``u32 id`` The ID of the control to find. **Description** This function returns a pointer to the control if this control is part of the request or NULL otherwise.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjˆÀh]”hŒ Parameters”…”�”}”(hjŠÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj†Àubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‰hj‚Àubj)�”}”(hhh]”(j)�”}”(hŒH``struct v4l2_ctrl_handler *hdl`` The control handler from the request. ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj§Àh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj©Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¥Àubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‡hj¡Àubj&)�”}”(hhh]”hï)�”}”(hŒ%The control handler from the request.”h]”hŒ%The control handler from the request.”…”�”}”(hjÀÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¼Àh´M‡hj½Àubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¼Àh´M‡hjžÀubj)�”}”(hŒ*``u32 id`` The ID of the control to find. ”h]”(j )�”}”(hŒ ``u32 id``”h]”j½)�”}”(hjàÀh]”hŒu32 id”…”�”}”(hjâÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÞÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MˆhjÚÀubj&)�”}”(hhh]”hï)�”}”(hŒThe ID of the control to find.”h]”hŒThe ID of the control to find.”…”�”}”(hjùÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jõÀh´MˆhjöÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÚÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõÀh´MˆhjžÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚Àubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjÁh]”hŒ Description”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MŠhj‚Àubhï)�”}”(hŒhThis function returns a pointer to the control if this control is part of the request or NULL otherwise.”h]”hŒhThis function returns a pointer to the control if this control is part of the request or NULL otherwise.”…”�”}”(hj1Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M‰hj‚Àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_queryctrl (C function)”Œc.v4l2_queryctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒMint v4l2_queryctrl (struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc)”h]”j')�”}”(hŒLint v4l2_queryctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj`Áh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj\Áh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M“ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjoÁh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\Áh²hh³jnÁh´M“ubjP)�”}”(hŒv4l2_queryctrl”h]”jV)�”}”(hŒv4l2_queryctrl”h]”hŒv4l2_queryctrl”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj}Áubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj\Áh²hh³jnÁh´M“ubjÀ)�”}”(hŒ:(struct v4l2_ctrl_handler *hdl, struct v4l2_queryctrl *qc)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj�Áh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj™Áubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÁh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™Áubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj»Áh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¸Áubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j½ÁŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jƒÁsbŒc.v4l2_queryctrl”†”asbuh1hhj™Áubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÛÁh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™Áubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjéÁh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj™ÁubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjöÁh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj™Áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj•ÁubjÆ)�”}”(hŒstruct v4l2_queryctrl *qc”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj Âubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj Âubh)�”}”(hhh]”jV)�”}”(hŒv4l2_queryctrl”h]”hŒv4l2_queryctrl”…”�”}”(hj-Âh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj*Âubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j/ÂŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j×ÁŒc.v4l2_queryctrl”†”asbuh1hhj Âubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKÂh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj Âubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjYÂh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj ÂubjV)�”}”(hŒqc”h]”hŒqc”…”�”}”(hjfÂh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj Âubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj•Áubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj\Áh²hh³jnÁh´M“ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjXÁh²hh³jnÁh´M“ubah}”(h]”jSÁah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jnÁh´M“hjUÁh²hubj‚)�”}”(hhh]”hï)�”}”(hŒMHelper function to implement :ref:`VIDIOC_QUERYCTRL ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hj�Âh²hh³Nh´Nubh)�”}”(hŒ*:ref:`VIDIOC_QUERYCTRL `”h]”hŒinline”“”)�”}”(hjšÂh]”hŒVIDIOC_QUERYCTRL”…”�”}”(hjžÂh²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhj˜Âubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”j¨ÂŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒvidioc_queryctrl”uh1hh³j\¬h´Khj�ÂubhŒ ioctl”…”�”}”(hj�Âh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M“hj�Âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjUÁh²hh³jnÁh´M“ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jÎÂj¤jÎÂj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct v4l2_queryctrl *qc`` pointer to :c:type:`struct v4l2_queryctrl ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjØÂh]”hŒ Parameters”…”�”}”(hjÚÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÖÂubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M—hjÒÂubj)�”}”(hhh]”(j)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj÷Âh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjùÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjõÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M–hjñÂubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hjÃh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjÃh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjÃh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÃubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³j Ãh´M–hjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j Ãh´M–hj Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j Ãh´M–hjîÂubj)�”}”(hŒZ``struct v4l2_queryctrl *qc`` pointer to :c:type:`struct v4l2_queryctrl ` ”h]”(j )�”}”(hŒ``struct v4l2_queryctrl *qc``”h]”j½)�”}”(hjOÃh]”hŒstruct v4l2_queryctrl *qc”…”�”}”(hjQÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjMÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M—hjIÃubj&)�”}”(hhh]”hï)�”}”(hŒ;pointer to :c:type:`struct v4l2_queryctrl `”h]”(hŒ pointer to ”…”�”}”(hjhÃh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct v4l2_queryctrl `”h]”j½)�”}”(hjrÃh]”hŒstruct v4l2_queryctrl”…”�”}”(hjtÃh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjpÃubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_queryctrl”uh1hh³jdÃh´M—hjhÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jdÃh´M—hjeÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jdÃh´M—hjîÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒÂubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj©Ãh]”hŒ Description”…”�”}”(hj«Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj§Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M™hjÒÂubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hj¿Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M˜hjÒÂubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ2v4l2_query_ext_ctrl_to_v4l2_queryctrl (C function)”Œ'c.v4l2_query_ext_ctrl_to_v4l2_queryctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒnvoid v4l2_query_ext_ctrl_to_v4l2_queryctrl (struct v4l2_queryctrl *to, const struct v4l2_query_ext_ctrl *from)”h]”j')�”}”(hŒmvoid v4l2_query_ext_ctrl_to_v4l2_queryctrl(struct v4l2_queryctrl *to, const struct v4l2_query_ext_ctrl *from)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjîÃh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjêÃh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mžubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÃh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjêÃh²hh³jüÃh´MžubjP)�”}”(hŒ%v4l2_query_ext_ctrl_to_v4l2_queryctrl”h]”jV)�”}”(hŒ%v4l2_query_ext_ctrl_to_v4l2_queryctrl”h]”hŒ%v4l2_query_ext_ctrl_to_v4l2_queryctrl”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj Äubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjêÃh²hh³jüÃh´MžubjÀ)�”}”(hŒC(struct v4l2_queryctrl *to, const struct v4l2_query_ext_ctrl *from)”h]”(jÆ)�”}”(hŒstruct v4l2_queryctrl *to”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj+Äh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj'Äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8Äh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj'Äubh)�”}”(hhh]”jV)�”}”(hŒv4l2_queryctrl”h]”hŒv4l2_queryctrl”…”�”}”(hjIÄh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjFÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jKÄŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jÄsbŒ'c.v4l2_query_ext_ctrl_to_v4l2_queryctrl”†”asbuh1hhj'Äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiÄh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj'Äubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjwÄh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj'ÄubjV)�”}”(hŒto”h]”hŒto”…”�”}”(hj„Äh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj'Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj#ÄubjÆ)�”}”(hŒ&const struct v4l2_query_ext_ctrl *from”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj�Äh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj™Äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÄh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™Äubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¸Äh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj™Äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅÄh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™Äubh)�”}”(hhh]”jV)�”}”(hŒv4l2_query_ext_ctrl”h]”hŒv4l2_query_ext_ctrl”…”�”}”(hjÖÄh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÓÄubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jØÄŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jeÄŒ'c.v4l2_query_ext_ctrl_to_v4l2_queryctrl”†”asbuh1hhj™Äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôÄh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj™Äubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj™ÄubjV)�”}”(hŒfrom”h]”hŒfrom”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj™Äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj#Äubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjêÃh²hh³jüÃh´Mžubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjæÃh²hh³jüÃh´Mžubah}”(h]”jáÃah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jüÃh´MžhjãÃh²hubj‚)�”}”(hhh]”hï)�”}”(hŒConvert a qec to qe.”h]”hŒConvert a qec to qe.”…”�”}”(hj9Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mžhj6Åh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjãÃh²hh³jüÃh´Mžubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jQÅj¤jQÅj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct v4l2_queryctrl *to`` The v4l2_queryctrl to write to. ``const struct v4l2_query_ext_ctrl *from`` The v4l2_query_ext_ctrl to read from. **Description** This function is a helper to convert a v4l2_query_ext_ctrl into a v4l2_queryctrl.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj[Åh]”hŒ Parameters”…”�”}”(hj]Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjYÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¢hjUÅubj)�”}”(hhh]”(j)�”}”(hŒ>``struct v4l2_queryctrl *to`` The v4l2_queryctrl to write to. ”h]”(j )�”}”(hŒ``struct v4l2_queryctrl *to``”h]”j½)�”}”(hjzÅh]”hŒstruct v4l2_queryctrl *to”…”�”}”(hj|Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjxÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjtÅubj&)�”}”(hhh]”hï)�”}”(hŒThe v4l2_queryctrl to write to.”h]”hŒThe v4l2_queryctrl to write to.”…”�”}”(hj“Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j�Åh´M hj�Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjtÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j�Åh´M hjqÅubj)�”}”(hŒQ``const struct v4l2_query_ext_ctrl *from`` The v4l2_query_ext_ctrl to read from. ”h]”(j )�”}”(hŒ*``const struct v4l2_query_ext_ctrl *from``”h]”j½)�”}”(hj³Åh]”hŒ&const struct v4l2_query_ext_ctrl *from”…”�”}”(hjµÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj±Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¡hj­Åubj&)�”}”(hhh]”hï)�”}”(hŒ%The v4l2_query_ext_ctrl to read from.”h]”hŒ%The v4l2_query_ext_ctrl to read from.”…”�”}”(hjÌÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÈÅh´M¡hjÉÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj­Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÈÅh´M¡hjqÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjUÅubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjîÅh]”hŒ Description”…”�”}”(hjðÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjìÅubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M£hjUÅubhï)�”}”(hŒQThis function is a helper to convert a v4l2_query_ext_ctrl into a v4l2_queryctrl.”h]”hŒQThis function is a helper to convert a v4l2_query_ext_ctrl into a v4l2_queryctrl.”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¢hjUÅubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ v4l2_query_ext_ctrl (C function)”Œc.v4l2_query_ext_ctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒWint v4l2_query_ext_ctrl (struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctrl *qc)”h]”j')�”}”(hŒVint v4l2_query_ext_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctrl *qc)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj3Æh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj/Æh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mªubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBÆh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj/Æh²hh³jAÆh´MªubjP)�”}”(hŒv4l2_query_ext_ctrl”h]”jV)�”}”(hŒv4l2_query_ext_ctrl”h]”hŒv4l2_query_ext_ctrl”…”�”}”(hjTÆh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjPÆubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj/Æh²hh³jAÆh´MªubjÀ)�”}”(hŒ?(struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctrl *qc)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjpÆh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjlÆubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}Æh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjlÆubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjŽÆh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‹Æubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j�ÆŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jVÆsbŒc.v4l2_query_ext_ctrl”†”asbuh1hhjlÆubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®Æh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjlÆubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¼Æh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjlÆubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjÉÆh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjlÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjhÆubjÆ)�”}”(hŒstruct v4l2_query_ext_ctrl *qc”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjâÆh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÞÆubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïÆh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÞÆubh)�”}”(hhh]”jV)�”}”(hŒv4l2_query_ext_ctrl”h]”hŒv4l2_query_ext_ctrl”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjýÆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÇŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jªÆŒc.v4l2_query_ext_ctrl”†”asbuh1hhjÞÆubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÞÆubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj,Çh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÞÆubjV)�”}”(hŒqc”h]”hŒqc”…”�”}”(hj9Çh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÞÆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjhÆubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj/Æh²hh³jAÆh´Mªubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj+Æh²hh³jAÆh´Mªubah}”(h]”j&Æah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jAÆh´Mªhj(Æh²hubj‚)�”}”(hhh]”hï)�”}”(hŒRHelper function to implement :ref:`VIDIOC_QUERY_EXT_CTRL ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hjcÇh²hh³Nh´Nubh)�”}”(hŒ/:ref:`VIDIOC_QUERY_EXT_CTRL `”h]”j�Â)�”}”(hjmÇh]”hŒVIDIOC_QUERY_EXT_CTRL”…”�”}”(hjoÇh²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhjkÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jyÇŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒvidioc_queryctrl”uh1hh³j\¬h´KhjcÇubhŒ ioctl”…”�”}”(hjcÇh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mªhj`Çh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj(Æh²hh³jAÆh´Mªubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jŸÇj¤jŸÇj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX%**Parameters** ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct v4l2_query_ext_ctrl *qc`` pointer to :c:type:`struct v4l2_query_ext_ctrl ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj©Çh]”hŒ Parameters”…”�”}”(hj«Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj§Çubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M®hj£Çubj)�”}”(hhh]”(j)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjÈÇh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjÊÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÆÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M­hjÂÇubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hjáÇh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjëÇh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjíÇh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjéÇubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³jÝÇh´M­hjáÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÝÇh´M­hjÞÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÂÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÝÇh´M­hj¿Çubj)�”}”(hŒi``struct v4l2_query_ext_ctrl *qc`` pointer to :c:type:`struct v4l2_query_ext_ctrl ` ”h]”(j )�”}”(hŒ"``struct v4l2_query_ext_ctrl *qc``”h]”j½)�”}”(hj Èh]”hŒstruct v4l2_query_ext_ctrl *qc”…”�”}”(hj"Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M®hjÈubj&)�”}”(hhh]”hï)�”}”(hŒEpointer to :c:type:`struct v4l2_query_ext_ctrl `”h]”(hŒ pointer to ”…”�”}”(hj9Èh²hh³Nh´Nubh)�”}”(hŒ::c:type:`struct v4l2_query_ext_ctrl `”h]”j½)�”}”(hjCÈh]”hŒstruct v4l2_query_ext_ctrl”…”�”}”(hjEÈh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjAÈubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_query_ext_ctrl”uh1hh³j5Èh´M®hj9Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j5Èh´M®hj6Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j5Èh´M®hj¿Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj£Çubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjzÈh]”hŒ Description”…”�”}”(hj|Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjxÈubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M°hj£Çubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hj�Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¯hj£Çubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_querymenu (C function)”Œc.v4l2_querymenu”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒMint v4l2_querymenu (struct v4l2_ctrl_handler *hdl, struct v4l2_querymenu *qm)”h]”j')�”}”(hŒLint v4l2_querymenu(struct v4l2_ctrl_handler *hdl, struct v4l2_querymenu *qm)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj¿Èh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj»Èh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¶ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÎÈh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj»Èh²hh³jÍÈh´M¶ubjP)�”}”(hŒv4l2_querymenu”h]”jV)�”}”(hŒv4l2_querymenu”h]”hŒv4l2_querymenu”…”�”}”(hjàÈh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÜÈubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj»Èh²hh³jÍÈh´M¶ubjÀ)�”}”(hŒ:(struct v4l2_ctrl_handler *hdl, struct v4l2_querymenu *qm)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjüÈh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjøÈubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjøÈubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÉŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jâÈsbŒc.v4l2_querymenu”†”asbuh1hhjøÈubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Éh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjøÈubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjHÉh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjøÈubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjUÉh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjøÈubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjôÈubjÆ)�”}”(hŒstruct v4l2_querymenu *qm”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjnÉh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjjÉubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{Éh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjjÉubh)�”}”(hhh]”jV)�”}”(hŒv4l2_querymenu”h]”hŒv4l2_querymenu”…”�”}”(hjŒÉh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‰Éubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jŽÉŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j6ÉŒc.v4l2_querymenu”†”asbuh1hhjjÉubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªÉh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjjÉubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¸Éh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjjÉubjV)�”}”(hŒqm”h]”hŒqm”…”�”}”(hjÅÉh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjjÉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjôÈubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj»Èh²hh³jÍÈh´M¶ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj·Èh²hh³jÍÈh´M¶ubah}”(h]”j²Èah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jÍÈh´M¶hj´Èh²hubj‚)�”}”(hhh]”hï)�”}”(hŒMHelper function to implement :ref:`VIDIOC_QUERYMENU ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hjïÉh²hh³Nh´Nubh)�”}”(hŒ*:ref:`VIDIOC_QUERYMENU `”h]”j�Â)�”}”(hjùÉh]”hŒVIDIOC_QUERYMENU”…”�”}”(hjûÉh²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhj÷Éubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÊŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒvidioc_queryctrl”uh1hh³j\¬h´KhjïÉubhŒ ioctl”…”�”}”(hjïÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¶hjìÉh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj´Èh²hh³jÍÈh´M¶ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j+Êj¤j+Êj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct v4l2_querymenu *qm`` pointer to :c:type:`struct v4l2_querymenu ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj5Êh]”hŒ Parameters”…”�”}”(hj7Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj3Êubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mºhj/Êubj)�”}”(hhh]”(j)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjTÊh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjVÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjRÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¹hjNÊubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hjmÊh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjwÊh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjyÊh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjuÊubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³jiÊh´M¹hjmÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jiÊh´M¹hjjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjNÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jiÊh´M¹hjKÊubj)�”}”(hŒZ``struct v4l2_querymenu *qm`` pointer to :c:type:`struct v4l2_querymenu ` ”h]”(j )�”}”(hŒ``struct v4l2_querymenu *qm``”h]”j½)�”}”(hj¬Êh]”hŒstruct v4l2_querymenu *qm”…”�”}”(hj®Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjªÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mºhj¦Êubj&)�”}”(hhh]”hï)�”}”(hŒ;pointer to :c:type:`struct v4l2_querymenu `”h]”(hŒ pointer to ”…”�”}”(hjÅÊh²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct v4l2_querymenu `”h]”j½)�”}”(hjÏÊh]”hŒstruct v4l2_querymenu”…”�”}”(hjÑÊh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÍÊubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_querymenu”uh1hh³jÁÊh´MºhjÅÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÁÊh´MºhjÂÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¦Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÁÊh´MºhjKÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj/Êubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjËh]”hŒ Description”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjËubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M¼hj/Êubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M»hj/Êubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_g_ctrl (C function)”Œ c.v4l2_g_ctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒJint v4l2_g_ctrl (struct v4l2_ctrl_handler *hdl, struct v4l2_control *ctrl)”h]”j')�”}”(hŒIint v4l2_g_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_control *ctrl)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjKËh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjGËh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÁubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZËh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjGËh²hh³jYËh´MÁubjP)�”}”(hŒ v4l2_g_ctrl”h]”jV)�”}”(hŒ v4l2_g_ctrl”h]”hŒ v4l2_g_ctrl”…”�”}”(hjlËh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjhËubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjGËh²hh³jYËh´MÁubjÀ)�”}”(hŒ:(struct v4l2_ctrl_handler *hdl, struct v4l2_control *ctrl)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjˆËh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj„Ëubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•Ëh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj„Ëubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj¦Ëh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj£Ëubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”•j‡Œ reftarget”j¨ËŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jnËsbŒ c.v4l2_g_ctrl”†”asbuh1hhj„Ëubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆËh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj„Ëubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÔËh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj„ËubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjáËh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj„Ëubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj€ËubjÆ)�”}”(hŒstruct v4l2_control *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjúËh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjöËubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjöËubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_control”h]”hŒ v4l2_control”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÌŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jÂËŒ c.v4l2_g_ctrl”†”asbuh1hhjöËubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj6Ìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjöËubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjDÌh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjöËubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjQÌh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjöËubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj€Ëubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjGËh²hh³jYËh´MÁubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjCËh²hh³jYËh´MÁubah}”(h]”j>Ëah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jYËh´MÁhj@Ëh²hubj‚)�”}”(hhh]”hï)�”}”(hŒGHelper function to implement :ref:`VIDIOC_G_CTRL ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hj{Ìh²hh³Nh´Nubh)�”}”(hŒ$:ref:`VIDIOC_G_CTRL `”h]”j�Â)�”}”(hj…Ìh]”hŒ VIDIOC_G_CTRL”…”�”}”(hj‡Ìh²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhjƒÌubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”j‘ÌŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒ vidioc_g_ctrl”uh1hh³j\¬h´Khj{ÌubhŒ ioctl”…”�”}”(hj{Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÁhjxÌh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj@Ëh²hh³jYËh´MÁubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j·Ìj¤j·Ìj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct v4l2_control *ctrl`` pointer to :c:type:`struct v4l2_control ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjÁÌh]”hŒ Parameters”…”�”}”(hjÃÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¿Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÅhj»Ìubj)�”}”(hhh]”(j)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjàÌh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjâÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÞÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÄhjÚÌubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hjùÌh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjÍh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÍubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³jõÌh´MÄhjùÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jõÌh´MÄhjöÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÚÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jõÌh´MÄhj×Ìubj)�”}”(hŒV``struct v4l2_control *ctrl`` pointer to :c:type:`struct v4l2_control ` ”h]”(j )�”}”(hŒ``struct v4l2_control *ctrl``”h]”j½)�”}”(hj8Íh]”hŒstruct v4l2_control *ctrl”…”�”}”(hj:Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj6Íubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÅhj2Íubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct v4l2_control `”h]”(hŒ pointer to ”…”�”}”(hjQÍh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct v4l2_control `”h]”j½)�”}”(hj[Íh]”hŒstruct v4l2_control”…”�”}”(hj]Íh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjYÍubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ v4l2_control”uh1hh³jMÍh´MÅhjQÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jMÍh´MÅhjNÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj2Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jMÍh´MÅhj×Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj»Ìubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hj’Íh]”hŒ Description”…”�”}”(hj”Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj�Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÇhj»Ìubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hj¨Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÆhj»Ìubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_s_ctrl (C function)”Œ c.v4l2_s_ctrl”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ^int v4l2_s_ctrl (struct v4l2_fh *fh, struct v4l2_ctrl_handler *hdl, struct v4l2_control *ctrl)”h]”j')�”}”(hŒ]int v4l2_s_ctrl(struct v4l2_fh *fh, struct v4l2_ctrl_handler *hdl, struct v4l2_control *ctrl)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj×Íh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjÓÍh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÌubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjæÍh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÓÍh²hh³jåÍh´MÌubjP)�”}”(hŒ v4l2_s_ctrl”h]”jV)�”}”(hŒ v4l2_s_ctrl”h]”hŒ v4l2_s_ctrl”…”�”}”(hjøÍh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjôÍubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÓÍh²hh³jåÍh´MÌubjÀ)�”}”(hŒN(struct v4l2_fh *fh, struct v4l2_ctrl_handler *hdl, struct v4l2_control *ctrl)”h]”(jÆ)�”}”(hŒstruct v4l2_fh *fh”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÎubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Îh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÎubh)�”}”(hhh]”jV)�”}”(hŒv4l2_fh”h]”hŒv4l2_fh”…”�”}”(hj2Îh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj/Îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j4ÎŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡júÍsbŒ c.v4l2_s_ctrl”†”asbuh1hhjÎubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRÎh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÎubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj`Îh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÎubjV)�”}”(hŒfh”h]”hŒfh”…”�”}”(hjmÎh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj ÎubjÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj†Îh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj‚Îubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“Îh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‚Îubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj¤Îh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¡Îubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¦ÎŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jNÎŒ c.v4l2_s_ctrl”†”asbuh1hhj‚Îubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÂÎh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj‚Îubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÐÎh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj‚ÎubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjÝÎh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj‚Îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj ÎubjÆ)�”}”(hŒstruct v4l2_control *ctrl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjöÎh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjòÎubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjòÎubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_control”h]”hŒ v4l2_control”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÏŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jNÎŒ c.v4l2_s_ctrl”†”asbuh1hhjòÎubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2Ïh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjòÎubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj@Ïh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjòÎubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjMÏh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjòÎubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj Îubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÓÍh²hh³jåÍh´MÌubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjÏÍh²hh³jåÍh´MÌubah}”(h]”jÊÍah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jåÍh´MÌhjÌÍh²hubj‚)�”}”(hhh]”hï)�”}”(hŒGHelper function to implement :ref:`VIDIOC_S_CTRL ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hjwÏh²hh³Nh´Nubh)�”}”(hŒ$:ref:`VIDIOC_S_CTRL `”h]”j�Â)�”}”(hj�Ïh]”hŒ VIDIOC_S_CTRL”…”�”}”(hjƒÏh²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhjÏubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”j�ÏŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒ vidioc_g_ctrl”uh1hh³j\¬h´KhjwÏubhŒ ioctl”…”�”}”(hjwÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÌhjtÏh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÌÍh²hh³jåÍh´MÌubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j³Ïj¤j³Ïj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXZ**Parameters** ``struct v4l2_fh *fh`` pointer to :c:type:`struct v4l2_fh ` ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct v4l2_control *ctrl`` pointer to :c:type:`struct v4l2_control ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj½Ïh]”hŒ Parameters”…”�”}”(hj¿Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj»Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÐhj·Ïubj)�”}”(hhh]”(j)�”}”(hŒE``struct v4l2_fh *fh`` pointer to :c:type:`struct v4l2_fh ` ”h]”(j )�”}”(hŒ``struct v4l2_fh *fh``”h]”j½)�”}”(hjÜÏh]”hŒstruct v4l2_fh *fh”…”�”}”(hjÞÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÚÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÏhjÖÏubj&)�”}”(hhh]”hï)�”}”(hŒ-pointer to :c:type:`struct v4l2_fh `”h]”(hŒ pointer to ”…”�”}”(hjõÏh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct v4l2_fh `”h]”j½)�”}”(hjÿÏh]”hŒstruct v4l2_fh”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjýÏubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_fh”uh1hh³jñÏh´MÏhjõÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jñÏh´MÏhjòÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÖÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jñÏh´MÏhjÓÏubj)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj4Ðh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj6Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj2Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÐhj.Ðubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hjMÐh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjWÐh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjYÐh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjUÐubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³jIÐh´MÐhjMÐubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jIÐh´MÐhjJÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj.Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jIÐh´MÐhjÓÏubj)�”}”(hŒV``struct v4l2_control *ctrl`` pointer to :c:type:`struct v4l2_control ` ”h]”(j )�”}”(hŒ``struct v4l2_control *ctrl``”h]”j½)�”}”(hjŒÐh]”hŒstruct v4l2_control *ctrl”…”�”}”(hjŽÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjŠÐubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÒhj†Ðubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct v4l2_control `”h]”(hŒ pointer to ”…”�”}”(hj¥Ðh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct v4l2_control `”h]”j½)�”}”(hj¯Ðh]”hŒstruct v4l2_control”…”�”}”(hj±Ðh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj­Ðubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ v4l2_control”uh1hh³j¡Ðh´MÒhj¥Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¡Ðh´MÒhj¢Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj†Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¡Ðh´MÒhjÓÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj·Ïubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjæÐh]”hŒ Description”…”�”}”(hjèÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjäÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÔhj·Ïubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hjüÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÓhj·Ïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_g_ext_ctrls (C function)”Œc.v4l2_g_ext_ctrls”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ‡int v4l2_g_ext_ctrls (struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”j')�”}”(hŒ†int v4l2_g_ext_ctrls(struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hj+Ñh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj'Ñh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÚubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:Ñh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj'Ñh²hh³j9Ñh´MÚubjP)�”}”(hŒv4l2_g_ext_ctrls”h]”jV)�”}”(hŒv4l2_g_ext_ctrls”h]”hŒv4l2_g_ext_ctrls”…”�”}”(hjLÑh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjHÑubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj'Ñh²hh³j9Ñh´MÚubjÀ)�”}”(hŒr(struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjhÑh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjdÑubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjuÑh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjdÑubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj†Ñh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjƒÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jˆÑŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jNÑsbŒc.v4l2_g_ext_ctrls”†”asbuh1hhjdÑubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦Ñh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjdÑubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj´Ñh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjdÑubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjÁÑh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjdÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj`ÑubjÆ)�”}”(hŒstruct video_device *vdev”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÚÑh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÖÑubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçÑh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÖÑubh)�”}”(hhh]”jV)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjøÑh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjõÑubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”júÑŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¢ÑŒc.v4l2_g_ext_ctrls”†”asbuh1hhjÖÑubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÖÑubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj$Òh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÖÑubjV)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj1Òh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÖÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj`ÑubjÆ)�”}”(hŒstruct media_device *mdev”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjJÒh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjFÒubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWÒh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjFÒubh)�”}”(hhh]”jV)�”}”(hŒ media_device”h]”hŒ media_device”…”�”}”(hjhÒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjeÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jjÒŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¢ÑŒc.v4l2_g_ext_ctrls”†”asbuh1hhjFÒubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†Òh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjFÒubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj”Òh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjFÒubjV)�”}”(hŒmdev”h]”hŒmdev”…”�”}”(hj¡Òh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjFÒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj`ÑubjÆ)�”}”(hŒstruct v4l2_ext_controls *c”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjºÒh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¶Òubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇÒh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¶Òubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ext_controls”h]”hŒv4l2_ext_controls”…”�”}”(hjØÒh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÕÒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÚÒŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j¢ÑŒc.v4l2_g_ext_ctrls”†”asbuh1hhj¶Òubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöÒh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¶Òubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¶ÒubjV)�”}”(hjÉh]”hŒc”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¶Òubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj`Ñubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj'Ñh²hh³j9Ñh´MÚubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj#Ñh²hh³j9Ñh´MÚubah}”(h]”jÑah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j9Ñh´MÚhj Ñh²hubj‚)�”}”(hhh]”hï)�”}”(hŒQHelper function to implement :ref:`VIDIOC_G_EXT_CTRLS ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hj:Óh²hh³Nh´Nubh)�”}”(hŒ.:ref:`VIDIOC_G_EXT_CTRLS `”h]”j�Â)�”}”(hjDÓh]”hŒVIDIOC_G_EXT_CTRLS”…”�”}”(hjFÓh²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhjBÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jPÓŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒvidioc_g_ext_ctrls”uh1hh³j\¬h´Khj:ÓubhŒ ioctl”…”�”}”(hj:Óh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÚhj7Óh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj Ñh²hh³j9Ñh´MÚubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jvÓj¤jvÓj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXÐ**Parameters** ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ``struct media_device *mdev`` pointer to :c:type:`struct media_device ` ``struct v4l2_ext_controls *c`` pointer to :c:type:`struct v4l2_ext_controls ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj€Óh]”hŒ Parameters”…”�”}”(hj‚Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj~Óubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÞhjzÓubj)�”}”(hhh]”(j)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjŸÓh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj¡Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj�Óubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÝhj™Óubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hj¸Óh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjÂÓh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjÄÓh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÀÓubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³j´Óh´MÝhj¸Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j´Óh´MÝhjµÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj™Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j´Óh´MÝhj–Óubj)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(j )�”}”(hŒ``struct video_device *vdev``”h]”j½)�”}”(hj÷Óh]”hŒstruct video_device *vdev”…”�”}”(hjùÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjõÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÞhjñÓubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hjÔh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”j½)�”}”(hjÔh]”hŒstruct video_device”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÔubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ video_device”uh1hh³j Ôh´MÞhjÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j Ôh´MÞhj Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjñÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j Ôh´MÞhj–Óubj)�”}”(hŒV``struct media_device *mdev`` pointer to :c:type:`struct media_device ` ”h]”(j )�”}”(hŒ``struct media_device *mdev``”h]”j½)�”}”(hjOÔh]”hŒstruct media_device *mdev”…”�”}”(hjQÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjMÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MßhjIÔubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct media_device `”h]”(hŒ pointer to ”…”�”}”(hjhÔh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct media_device `”h]”j½)�”}”(hjrÔh]”hŒstruct media_device”…”�”}”(hjtÔh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjpÔubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ media_device”uh1hh³jdÔh´MßhjhÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jdÔh´MßhjeÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjIÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jdÔh´Mßhj–Óubj)�”}”(hŒb``struct v4l2_ext_controls *c`` pointer to :c:type:`struct v4l2_ext_controls ` ”h]”(j )�”}”(hŒ``struct v4l2_ext_controls *c``”h]”j½)�”}”(hj§Ôh]”hŒstruct v4l2_ext_controls *c”…”�”}”(hj©Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¥Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Màhj¡Ôubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ext_controls `”h]”(hŒ pointer to ”…”�”}”(hjÀÔh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ext_controls `”h]”j½)�”}”(hjÊÔh]”hŒstruct v4l2_ext_controls”…”�”}”(hjÌÔh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÈÔubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ext_controls”uh1hh³j¼Ôh´MàhjÀÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j¼Ôh´Màhj½Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¡Ôubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j¼Ôh´Màhj–Óubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjzÓubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjÕh]”hŒ Description”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÿÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MâhjzÓubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MáhjzÓubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_try_ext_ctrls (C function)”Œc.v4l2_try_ext_ctrls”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ‰int v4l2_try_ext_ctrls (struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”j')�”}”(hŒˆint v4l2_try_ext_ctrls(struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjFÕh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjBÕh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mèubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUÕh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjBÕh²hh³jTÕh´MèubjP)�”}”(hŒv4l2_try_ext_ctrls”h]”jV)�”}”(hŒv4l2_try_ext_ctrls”h]”hŒv4l2_try_ext_ctrls”…”�”}”(hjgÕh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjcÕubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjBÕh²hh³jTÕh´MèubjÀ)�”}”(hŒr(struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjƒÕh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÕubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Õh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÕubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj¡Õh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjžÕubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j£ÕŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jiÕsbŒc.v4l2_try_ext_ctrls”†”asbuh1hhjÕubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÕh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÕubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÏÕh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÕubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjÜÕh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj{ÕubjÆ)�”}”(hŒstruct video_device *vdev”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjõÕh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjñÕubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjñÕubh)�”}”(hhh]”jV)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÖŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j½ÕŒc.v4l2_try_ext_ctrls”†”asbuh1hhjñÕubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1Öh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjñÕubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj?Öh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjñÕubjV)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hjLÖh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjñÕubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj{ÕubjÆ)�”}”(hŒstruct media_device *mdev”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjeÖh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjaÖubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrÖh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjaÖubh)�”}”(hhh]”jV)�”}”(hŒ media_device”h]”hŒ media_device”…”�”}”(hjƒÖh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj€Öubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j…ÖŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j½ÕŒc.v4l2_try_ext_ctrls”†”asbuh1hhjaÖubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡Öh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjaÖubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¯Öh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjaÖubjV)�”}”(hŒmdev”h]”hŒmdev”…”�”}”(hj¼Öh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjaÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj{ÕubjÆ)�”}”(hŒstruct v4l2_ext_controls *c”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÕÖh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÑÖubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâÖh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÑÖubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ext_controls”h]”hŒv4l2_ext_controls”…”�”}”(hjóÖh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjðÖubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jõÖŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j½ÕŒc.v4l2_try_ext_ctrls”†”asbuh1hhjÑÖubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÑÖubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjÑÖubjV)�”}”(hjÉh]”hŒc”…”�”}”(hj,×h²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÑÖubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj{Õubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjBÕh²hh³jTÕh´Mèubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj>Õh²hh³jTÕh´Mèubah}”(h]”j9Õah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jTÕh´Mèhj;Õh²hubj‚)�”}”(hhh]”hï)�”}”(hŒSHelper function to implement :ref:`VIDIOC_TRY_EXT_CTRLS ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hjU×h²hh³Nh´Nubh)�”}”(hŒ0:ref:`VIDIOC_TRY_EXT_CTRLS `”h]”j�Â)�”}”(hj_×h]”hŒVIDIOC_TRY_EXT_CTRLS”…”�”}”(hja×h²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhj]×ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jk׌reftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒvidioc_g_ext_ctrls”uh1hh³j\¬h´KhjU×ubhŒ ioctl”…”�”}”(hjU×h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MèhjR×h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj;Õh²hh³jTÕh´Mèubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j‘×j¤j‘×j¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXÐ**Parameters** ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ``struct media_device *mdev`` pointer to :c:type:`struct media_device ` ``struct v4l2_ext_controls *c`` pointer to :c:type:`struct v4l2_ext_controls ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj›×h]”hŒ Parameters”…”�”}”(hj�×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj™×ubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mìhj•×ubj)�”}”(hhh]”(j)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjº×h]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hj¼×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¸×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mëhj´×ubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hjÓ×h²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjÝ×h]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjß×h²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÛ×ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³jÏ×h´MëhjÓ×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÏ×h´MëhjÐ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj´×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÏ×h´Mëhj±×ubj)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(j )�”}”(hŒ``struct video_device *vdev``”h]”j½)�”}”(hjØh]”hŒstruct video_device *vdev”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjØubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mìhj Øubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hj+Øh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”j½)�”}”(hj5Øh]”hŒstruct video_device”…”�”}”(hj7Øh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj3Øubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ video_device”uh1hh³j'Øh´Mìhj+Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j'Øh´Mìhj(Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j'Øh´Mìhj±×ubj)�”}”(hŒV``struct media_device *mdev`` pointer to :c:type:`struct media_device ` ”h]”(j )�”}”(hŒ``struct media_device *mdev``”h]”j½)�”}”(hjjØh]”hŒstruct media_device *mdev”…”�”}”(hjlØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjhØubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MíhjdØubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct media_device `”h]”(hŒ pointer to ”…”�”}”(hjƒØh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct media_device `”h]”j½)�”}”(hj�Øh]”hŒstruct media_device”…”�”}”(hj�Øh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj‹Øubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ media_device”uh1hh³jØh´MíhjƒØubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jØh´Míhj€Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjdØubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jØh´Míhj±×ubj)�”}”(hŒb``struct v4l2_ext_controls *c`` pointer to :c:type:`struct v4l2_ext_controls ` ”h]”(j )�”}”(hŒ``struct v4l2_ext_controls *c``”h]”j½)�”}”(hjÂØh]”hŒstruct v4l2_ext_controls *c”…”�”}”(hjÄØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjÀØubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mîhj¼Øubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ext_controls `”h]”(hŒ pointer to ”…”�”}”(hjÛØh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ext_controls `”h]”j½)�”}”(hjåØh]”hŒstruct v4l2_ext_controls”…”�”}”(hjçØh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjãØubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ext_controls”uh1hh³jרh´MîhjÛØubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jרh´MîhjØØubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¼Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jרh´Mîhj±×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj•×ubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjÙh]”hŒ Description”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjÙubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mðhj•×ubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hj2Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mïhj•×ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒv4l2_s_ext_ctrls (C function)”Œc.v4l2_s_ext_ctrls”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ›int v4l2_s_ext_ctrls (struct v4l2_fh *fh, struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”j')�”}”(hŒšint v4l2_s_ext_ctrls(struct v4l2_fh *fh, struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjaÙh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj]Ùh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Møubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpÙh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj]Ùh²hh³joÙh´MøubjP)�”}”(hŒv4l2_s_ext_ctrls”h]”jV)�”}”(hŒv4l2_s_ext_ctrls”h]”hŒv4l2_s_ext_ctrls”…”�”}”(hj‚Ùh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj~Ùubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj]Ùh²hh³joÙh´MøubjÀ)�”}”(hŒ†(struct v4l2_fh *fh, struct v4l2_ctrl_handler *hdl, struct video_device *vdev, struct media_device *mdev, struct v4l2_ext_controls *c)”h]”(jÆ)�”}”(hŒstruct v4l2_fh *fh”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjžÙh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjšÙubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«Ùh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšÙubh)�”}”(hhh]”jV)�”}”(hŒv4l2_fh”h]”hŒv4l2_fh”…”�”}”(hj¼Ùh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¹Ùubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¾ÙŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j„ÙsbŒc.v4l2_s_ext_ctrls”†”asbuh1hhjšÙubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜÙh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšÙubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjêÙh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjšÙubjV)�”}”(hŒfh”h]”hŒfh”…”�”}”(hj÷Ùh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjšÙubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj–ÙubjÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj Úubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj Úubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hj.Úh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj+Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j0ÚŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jØÙŒc.v4l2_s_ext_ctrls”†”asbuh1hhj Úubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLÚh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj Úubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjZÚh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj ÚubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hjgÚh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj–ÙubjÆ)�”}”(hŒstruct video_device *vdev”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj€Úh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj|Úubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�Úh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj|Úubh)�”}”(hhh]”jV)�”}”(hŒ video_device”h]”hŒ video_device”…”�”}”(hjžÚh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj›Úubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j ÚŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jØÙŒc.v4l2_s_ext_ctrls”†”asbuh1hhj|Úubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Úh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj|Úubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÊÚh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj|ÚubjV)�”}”(hŒvdev”h]”hŒvdev”…”�”}”(hj×Úh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj|Úubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj–ÙubjÆ)�”}”(hŒstruct media_device *mdev”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjðÚh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjìÚubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýÚh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjìÚubh)�”}”(hhh]”jV)�”}”(hŒ media_device”h]”hŒ media_device”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj Ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÛŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jØÙŒc.v4l2_s_ext_ctrls”†”asbuh1hhjìÚubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,Ûh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjìÚubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj:Ûh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjìÚubjV)�”}”(hŒmdev”h]”hŒmdev”…”�”}”(hjGÛh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjìÚubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj–ÙubjÆ)�”}”(hŒstruct v4l2_ext_controls *c”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj`Ûh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj\Ûubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmÛh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\Ûubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ext_controls”h]”hŒv4l2_ext_controls”…”�”}”(hj~Ûh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj{Ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j€ÛŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jØÙŒc.v4l2_s_ext_ctrls”†”asbuh1hhj\Ûubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœÛh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj\Ûubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjªÛh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj\ÛubjV)�”}”(hjÉh]”hŒc”…”�”}”(hj·Ûh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj\Ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj–Ùubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj]Ùh²hh³joÙh´Møubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjYÙh²hh³joÙh´Møubah}”(h]”jTÙah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³joÙh´MøhjVÙh²hubj‚)�”}”(hhh]”hï)�”}”(hŒQHelper function to implement :ref:`VIDIOC_S_EXT_CTRLS ` ioctl”h]”(hŒHelper function to implement ”…”�”}”(hjàÛh²hh³Nh´Nubh)�”}”(hŒ.:ref:`VIDIOC_S_EXT_CTRLS `”h]”j�Â)�”}”(hjêÛh]”hŒVIDIOC_S_EXT_CTRLS”…”�”}”(hjìÛh²hh³Nh´Nubah}”(h]”h ]”(jÈŒstd”Œstd-ref”eh"]”h$]”h&]”uh1jœÂhjèÛubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jöÛŒreftype”Œref”Œ refexplicit”ˆŒrefwarn”ˆjÛŒvidioc_g_ext_ctrls”uh1hh³j\¬h´KhjàÛubhŒ ioctl”…”�”}”(hjàÛh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MøhjÝÛh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVÙh²hh³joÙh´Møubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jÜj¤jÜj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX**Parameters** ``struct v4l2_fh *fh`` pointer to :c:type:`struct v4l2_fh ` ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ``struct media_device *mdev`` pointer to :c:type:`struct media_device ` ``struct v4l2_ext_controls *c`` pointer to :c:type:`struct v4l2_ext_controls ` **Description** If hdl == NULL then they will all return -EINVAL.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj&Üh]”hŒ Parameters”…”�”}”(hj(Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj$Üubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mühj Üubj)�”}”(hhh]”(j)�”}”(hŒE``struct v4l2_fh *fh`` pointer to :c:type:`struct v4l2_fh ` ”h]”(j )�”}”(hŒ``struct v4l2_fh *fh``”h]”j½)�”}”(hjEÜh]”hŒstruct v4l2_fh *fh”…”�”}”(hjGÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjCÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mûhj?Üubj&)�”}”(hhh]”hï)�”}”(hŒ-pointer to :c:type:`struct v4l2_fh `”h]”(hŒ pointer to ”…”�”}”(hj^Üh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct v4l2_fh `”h]”j½)�”}”(hjhÜh]”hŒstruct v4l2_fh”…”�”}”(hjjÜh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjfÜubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_fh”uh1hh³jZÜh´Mûhj^Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jZÜh´Mûhj[Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj?Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jZÜh´Mûhj<Üubj)�”}”(hŒd``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hj�Üh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjŸÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj›Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mühj—Üubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ctrl_handler `”h]”(hŒ pointer to ”…”�”}”(hj¶Üh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hjÀÜh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hjÂÜh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj¾Üubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³j²Üh´Mühj¶Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j²Üh´Mühj³Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj—Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j²Üh´Mühj<Üubj)�”}”(hŒV``struct video_device *vdev`` pointer to :c:type:`struct video_device ` ”h]”(j )�”}”(hŒ``struct video_device *vdev``”h]”j½)�”}”(hjõÜh]”hŒstruct video_device *vdev”…”�”}”(hj÷Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjóÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MýhjïÜubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct video_device `”h]”(hŒ pointer to ”…”�”}”(hjÝh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct video_device `”h]”j½)�”}”(hjÝh]”hŒstruct video_device”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ video_device”uh1hh³j Ýh´MýhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j Ýh´Mýhj Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjïÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j Ýh´Mýhj<Üubj)�”}”(hŒV``struct media_device *mdev`` pointer to :c:type:`struct media_device ` ”h]”(j )�”}”(hŒ``struct media_device *mdev``”h]”j½)�”}”(hjMÝh]”hŒstruct media_device *mdev”…”�”}”(hjOÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjKÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MþhjGÝubj&)�”}”(hhh]”hï)�”}”(hŒ7pointer to :c:type:`struct media_device `”h]”(hŒ pointer to ”…”�”}”(hjfÝh²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct media_device `”h]”j½)�”}”(hjpÝh]”hŒstruct media_device”…”�”}”(hjrÝh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjnÝubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ media_device”uh1hh³jbÝh´MþhjfÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jbÝh´MþhjcÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjGÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbÝh´Mþhj<Üubj)�”}”(hŒb``struct v4l2_ext_controls *c`` pointer to :c:type:`struct v4l2_ext_controls ` ”h]”(j )�”}”(hŒ``struct v4l2_ext_controls *c``”h]”j½)�”}”(hj¥Ýh]”hŒstruct v4l2_ext_controls *c”…”�”}”(hj§Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj£Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MÿhjŸÝubj&)�”}”(hhh]”hï)�”}”(hŒApointer to :c:type:`struct v4l2_ext_controls `”h]”(hŒ pointer to ”…”�”}”(hj¾Ýh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ext_controls `”h]”j½)�”}”(hjÈÝh]”hŒstruct v4l2_ext_controls”…”�”}”(hjÊÝh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÆÝubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ext_controls”uh1hh³jºÝh´Mÿhj¾Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jºÝh´Mÿhj»Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jºÝh´Mÿhj<Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj Üubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjÿÝh]”hŒ Description”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjýÝubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj Üubhï)�”}”(hŒ1If hdl == NULL then they will all return -EINVAL.”h]”hŒ1If hdl == NULL then they will all return -EINVAL.”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj Üubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ-v4l2_ctrl_subdev_subscribe_event (C function)”Œ"c.v4l2_ctrl_subdev_subscribe_event”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒvint v4l2_ctrl_subdev_subscribe_event (struct v4l2_subdev *sd, struct v4l2_fh *fh, struct v4l2_event_subscription *sub)”h]”j')�”}”(hŒuint v4l2_ctrl_subdev_subscribe_event(struct v4l2_subdev *sd, struct v4l2_fh *fh, struct v4l2_event_subscription *sub)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjDÞh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj@Þh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSÞh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj@Þh²hh³jRÞh´M ubjP)�”}”(hŒ v4l2_ctrl_subdev_subscribe_event”h]”jV)�”}”(hŒ v4l2_ctrl_subdev_subscribe_event”h]”hŒ v4l2_ctrl_subdev_subscribe_event”…”�”}”(hjeÞh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjaÞubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj@Þh²hh³jRÞh´M ubjÀ)�”}”(hŒQ(struct v4l2_subdev *sd, struct v4l2_fh *fh, struct v4l2_event_subscription *sub)”h]”(jÆ)�”}”(hŒstruct v4l2_subdev *sd”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj�Þh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj}Þubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽÞh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj}Þubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_subdev”h]”hŒ v4l2_subdev”…”�”}”(hjŸÞh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjœÞubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¡ÞŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jgÞsbŒ"c.v4l2_ctrl_subdev_subscribe_event”†”asbuh1hhj}Þubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¿Þh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj}Þubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÍÞh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj}ÞubjV)�”}”(hŒsd”h]”hŒsd”…”�”}”(hjÚÞh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj}Þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjyÞubjÆ)�”}”(hŒstruct v4l2_fh *fh”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjóÞh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjïÞubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjïÞubh)�”}”(hhh]”jV)�”}”(hŒv4l2_fh”h]”hŒv4l2_fh”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jߌmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j»ÞŒ"c.v4l2_ctrl_subdev_subscribe_event”†”asbuh1hhjïÞubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ßh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjïÞubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj=ßh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjïÞubjV)�”}”(hŒfh”h]”hŒfh”…”�”}”(hjJßh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjïÞubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjyÞubjÆ)�”}”(hŒ#struct v4l2_event_subscription *sub”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjcßh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj_ßubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpßh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj_ßubh)�”}”(hhh]”jV)�”}”(hŒv4l2_event_subscription”h]”hŒv4l2_event_subscription”…”�”}”(hj�ßh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj~ßubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jƒßŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j»ÞŒ"c.v4l2_ctrl_subdev_subscribe_event”†”asbuh1hhj_ßubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸßh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj_ßubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj­ßh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj_ßubjV)�”}”(hŒsub”h]”hŒsub”…”�”}”(hjºßh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj_ßubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjyÞubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj@Þh²hh³jRÞh´M ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj<Þh²hh³jRÞh´M ubah}”(h]”j7Þah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jRÞh´M hj9Þh²hubj‚)�”}”(hhh]”hï)�”}”(hŒœHelper function to implement as a :c:type:`struct v4l2_subdev_core_ops ` subscribe_event function that just subscribes control events.”h]”(hŒ"Helper function to implement as a ”…”�”}”(hjäßh²hh³Nh´Nubh)�”}”(hŒ<:c:type:`struct v4l2_subdev_core_ops `”h]”j½)�”}”(hjîßh]”hŒstruct v4l2_subdev_core_ops”…”�”}”(hjðßh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjìßubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jŽ)�”}”j‘]”j»ÞŒ"c.v4l2_ctrl_subdev_subscribe_event”†”asbjÛŒv4l2_subdev_core_ops”uh1hh³j\¬h´KhjäßubhŒ> subscribe_event function that just subscribes control events.”…”�”}”(hjäßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjáßh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj9Þh²hh³jRÞh´M ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j$àj¤j$àj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hX#**Parameters** ``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev ` ``struct v4l2_fh *fh`` pointer to :c:type:`struct v4l2_fh ` ``struct v4l2_event_subscription *sub`` pointer to :c:type:`struct v4l2_event_subscription `”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj.àh]”hŒ Parameters”…”�”}”(hj0àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj,àubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hj(àubj)�”}”(hhh]”(j)�”}”(hŒQ``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev ` ”h]”(j )�”}”(hŒ``struct v4l2_subdev *sd``”h]”j½)�”}”(hjMàh]”hŒstruct v4l2_subdev *sd”…”�”}”(hjOàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjKàubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjGàubj&)�”}”(hhh]”hï)�”}”(hŒ5pointer to :c:type:`struct v4l2_subdev `”h]”(hŒ pointer to ”…”�”}”(hjfàh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct v4l2_subdev `”h]”j½)�”}”(hjpàh]”hŒstruct v4l2_subdev”…”�”}”(hjràh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjnàubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ v4l2_subdev”uh1hh³jbàh´M hjfàubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jbàh´M hjcàubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjGàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jbàh´M hjDàubj)�”}”(hŒE``struct v4l2_fh *fh`` pointer to :c:type:`struct v4l2_fh ` ”h]”(j )�”}”(hŒ``struct v4l2_fh *fh``”h]”j½)�”}”(hj¥àh]”hŒstruct v4l2_fh *fh”…”�”}”(hj§àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj£àubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjŸàubj&)�”}”(hhh]”hï)�”}”(hŒ-pointer to :c:type:`struct v4l2_fh `”h]”(hŒ pointer to ”…”�”}”(hj¾àh²hh³Nh´Nubh)�”}”(hŒ":c:type:`struct v4l2_fh `”h]”j½)�”}”(hjÈàh]”hŒstruct v4l2_fh”…”�”}”(hjÊàh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjÆàubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_fh”uh1hh³jºàh´Mhj¾àubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jºàh´Mhj»àubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjŸàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jºàh´MhjDàubj)�”}”(hŒu``struct v4l2_event_subscription *sub`` pointer to :c:type:`struct v4l2_event_subscription `”h]”(j )�”}”(hŒ'``struct v4l2_event_subscription *sub``”h]”j½)�”}”(hjýàh]”hŒ#struct v4l2_event_subscription *sub”…”�”}”(hjÿàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjûàubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj÷àubj&)�”}”(hhh]”hï)�”}”(hŒMpointer to :c:type:`struct v4l2_event_subscription `”h]”(hŒ pointer to ”…”�”}”(hjáh²hh³Nh´Nubh)�”}”(hŒB:c:type:`struct v4l2_event_subscription `”h]”j½)�”}”(hj áh]”hŒstruct v4l2_event_subscription”…”�”}”(hj"áh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjáubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_event_subscription”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j=áh´Mhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj÷àubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jáh´MhjDàubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj(àubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ(v4l2_ctrl_subdev_log_status (C function)”Œc.v4l2_ctrl_subdev_log_status”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ8int v4l2_ctrl_subdev_log_status (struct v4l2_subdev *sd)”h]”j')�”}”(hŒ7int v4l2_ctrl_subdev_log_status(struct v4l2_subdev *sd)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjváh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjráh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…áh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjráh²hh³j„áh´MubjP)�”}”(hŒv4l2_ctrl_subdev_log_status”h]”jV)�”}”(hŒv4l2_ctrl_subdev_log_status”h]”hŒv4l2_ctrl_subdev_log_status”…”�”}”(hj—áh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj“áubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjráh²hh³j„áh´MubjÀ)�”}”(hŒ(struct v4l2_subdev *sd)”h]”jÆ)�”}”(hŒstruct v4l2_subdev *sd”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj³áh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¯áubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀáh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¯áubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_subdev”h]”hŒ v4l2_subdev”…”�”}”(hjÑáh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÎáubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÓáŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j™ásbŒc.v4l2_ctrl_subdev_log_status”†”asbuh1hhj¯áubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjñáh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¯áubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjÿáh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj¯áubjV)�”}”(hŒsd”h]”hŒsd”…”�”}”(hj âh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¯áubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj«áubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjráh²hh³j„áh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjnáh²hh³j„áh´Mubah}”(h]”jiáah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j„áh´Mhjkáh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ3Log all controls owned by subdev's control handler.”h]”h•¸Œ5Log all controls owned by subdev’s control handler.”…”�”}”(hj6âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj3âh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjkáh²hh³j„áh´Mubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jNâj¤jNâj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒb**Parameters** ``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev `”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjXâh]”hŒ Parameters”…”�”}”(hjZâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjVâubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjRâubj)�”}”(hhh]”j)�”}”(hŒP``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev `”h]”(j )�”}”(hŒ``struct v4l2_subdev *sd``”h]”j½)�”}”(hjwâh]”hŒstruct v4l2_subdev *sd”…”�”}”(hjyâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjuâubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhjqâubj&)�”}”(hhh]”hï)�”}”(hŒ5pointer to :c:type:`struct v4l2_subdev `”h]”(hŒ pointer to ”…”�”}”(hj�âh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct v4l2_subdev `”h]”j½)�”}”(hjšâh]”hŒstruct v4l2_subdev”…”�”}”(hjœâh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj˜âubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ v4l2_subdev”uh1hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mhj�âubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j·âh´Mhj�âubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjqâubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jŒâh´Mhjnâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjRâubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ,v4l2_ctrl_new_fwnode_properties (C function)”Œ!c.v4l2_ctrl_new_fwnode_properties”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ˜int v4l2_ctrl_new_fwnode_properties (struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ctrl_ops, const struct v4l2_fwnode_device_properties *p)”h]”j')�”}”(hŒ—int v4l2_ctrl_new_fwnode_properties(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ctrl_ops, const struct v4l2_fwnode_device_properties *p)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjðâh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjìâh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´Mubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÿâh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjìâh²hh³jþâh´MubjP)�”}”(hŒv4l2_ctrl_new_fwnode_properties”h]”jV)�”}”(hŒv4l2_ctrl_new_fwnode_properties”h]”hŒv4l2_ctrl_new_fwnode_properties”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj ãubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjìâh²hh³jþâh´MubjÀ)�”}”(hŒt(struct v4l2_ctrl_handler *hdl, const struct v4l2_ctrl_ops *ctrl_ops, const struct v4l2_fwnode_device_properties *p)”h]”(jÆ)�”}”(hŒstruct v4l2_ctrl_handler *hdl”h]”(j-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj-ãh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj)ãubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:ãh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj)ãubh)�”}”(hhh]”jV)�”}”(hŒv4l2_ctrl_handler”h]”hŒv4l2_ctrl_handler”…”�”}”(hjKãh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjHãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jMãŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jãsbŒ!c.v4l2_ctrl_new_fwnode_properties”†”asbuh1hhj)ãubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkãh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj)ãubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjyãh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj)ãubjV)�”}”(hŒhdl”h]”hŒhdl”…”�”}”(hj†ãh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj)ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj%ãubjÆ)�”}”(hŒ$const struct v4l2_ctrl_ops *ctrl_ops”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjŸãh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj›ãubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬ãh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj›ãubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjºãh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj›ãubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇãh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj›ãubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ops”h]”hŒ v4l2_ctrl_ops”…”�”}”(hjØãh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÕãubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÚãŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jgãŒ!c.v4l2_ctrl_new_fwnode_properties”†”asbuh1hhj›ãubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöãh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj›ãubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj›ãubjV)�”}”(hŒctrl_ops”h]”hŒctrl_ops”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj›ãubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj%ãubjÆ)�”}”(hŒ-const struct v4l2_fwnode_device_properties *p”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj*äh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj&äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7äh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj&äubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjEäh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj&äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjRäh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj&äubh)�”}”(hhh]”jV)�”}”(hŒv4l2_fwnode_device_properties”h]”hŒv4l2_fwnode_device_properties”…”�”}”(hjcäh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj`äubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jeäŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jgãŒ!c.v4l2_ctrl_new_fwnode_properties”†”asbuh1hhj&äubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj&äubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj&äubjV)�”}”(hj÷h]”hŒp”…”�”}”(hjœäh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj&äubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj%ãubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjìâh²hh³jþâh´Mubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjèâh²hh³jþâh´Mubah}”(h]”jãâah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jþâh´Mhjåâh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ+Register controls for the device properties”h]”hŒ+Register controls for the device properties”…”�”}”(hjÅäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MhjÂäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjåâh²hh³jþâh´Mubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jÝäj¤jÝäj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hXR**Parameters** ``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` to register controls on ``const struct v4l2_ctrl_ops *ctrl_ops`` pointer to :c:type:`struct v4l2_ctrl_ops ` to register controls with ``const struct v4l2_fwnode_device_properties *p`` pointer to :c:type:`struct v4l2_fwnode_device_properties ` **Description** This function registers controls associated to device properties, using the property values contained in **p** parameter, if the property has been set to a value. Currently the following v4l2 controls are parsed and registered: - V4L2_CID_CAMERA_ORIENTATION - V4L2_CID_CAMERA_SENSOR_ROTATION; Controls already registered by the caller with the **hdl** control handler are not overwritten. Callers should register the controls they want to handle themselves before calling this function. This function will set the control handler's error field on failure, just as other functions adding controls to the handler. **Return** 0 on success, a negative error code on failure.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjçäh]”hŒ Parameters”…”�”}”(hjéäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjåäubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M!hjáäubj)�”}”(hhh]”(j)�”}”(hŒ|``struct v4l2_ctrl_handler *hdl`` pointer to :c:type:`struct v4l2_ctrl_handler ` to register controls on ”h]”(j )�”}”(hŒ!``struct v4l2_ctrl_handler *hdl``”h]”j½)�”}”(hjåh]”hŒstruct v4l2_ctrl_handler *hdl”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M hjåubj&)�”}”(hhh]”hï)�”}”(hŒYpointer to :c:type:`struct v4l2_ctrl_handler ` to register controls on”h]”(hŒ pointer to ”…”�”}”(hjåh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`struct v4l2_ctrl_handler `”h]”j½)�”}”(hj)åh]”hŒstruct v4l2_ctrl_handler”…”�”}”(hj+åh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hj'åubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_ctrl_handler”uh1hh³jåh´M hjåubhŒ to register controls on”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jåh´M hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jåh´M hjýäubj)�”}”(hŒ}``const struct v4l2_ctrl_ops *ctrl_ops`` pointer to :c:type:`struct v4l2_ctrl_ops ` to register controls with ”h]”(j )�”}”(hŒ(``const struct v4l2_ctrl_ops *ctrl_ops``”h]”j½)�”}”(hjbåh]”hŒ$const struct v4l2_ctrl_ops *ctrl_ops”…”�”}”(hjdåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj`åubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M!hj\åubj&)�”}”(hhh]”hï)�”}”(hŒSpointer to :c:type:`struct v4l2_ctrl_ops ` to register controls with”h]”(hŒ pointer to ”…”�”}”(hj{åh²hh³Nh´Nubh)�”}”(hŒ.:c:type:`struct v4l2_ctrl_ops `”h]”j½)�”}”(hj…åh]”hŒstruct v4l2_ctrl_ops”…”�”}”(hj‡åh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjƒåubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒ v4l2_ctrl_ops”uh1hh³jwåh´M!hj{åubhŒ to register controls with”…”�”}”(hj{åh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jwåh´M!hjxåubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj\åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jwåh´M!hjýäubj)�”}”(hŒŒ``const struct v4l2_fwnode_device_properties *p`` pointer to :c:type:`struct v4l2_fwnode_device_properties ` ”h]”(j )�”}”(hŒ1``const struct v4l2_fwnode_device_properties *p``”h]”j½)�”}”(hj¾åh]”hŒ-const struct v4l2_fwnode_device_properties *p”…”�”}”(hjÀåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¼åubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M"hj¸åubj&)�”}”(hhh]”hï)�”}”(hŒYpointer to :c:type:`struct v4l2_fwnode_device_properties `”h]”(hŒ pointer to ”…”�”}”(hj×åh²hh³Nh´Nubh)�”}”(hŒN:c:type:`struct v4l2_fwnode_device_properties `”h]”j½)�”}”(hjáåh]”hŒ$struct v4l2_fwnode_device_properties”…”�”}”(hjãåh²hh³Nh´Nubah}”(h]”h ]”(jÈjÉŒc-type”eh"]”h$]”h&]”uh1j¼hjßåubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jÕŒ refdomain”jÉŒreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j‹jfjÛŒv4l2_fwnode_device_properties”uh1hh³jÓåh´M"hj×åubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÓåh´M"hjÔåubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¸åubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÓåh´M"hjýäubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjáäubhï)�”}”(hŒ**Description**”h]”j¹)�”}”(hjæh]”hŒ Description”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjæubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M$hjáäubhï)�”}”(hŒ¢This function registers controls associated to device properties, using the property values contained in **p** parameter, if the property has been set to a value.”h]”(hŒiThis function registers controls associated to device properties, using the property values contained in ”…”�”}”(hj.æh²hh³Nh´Nubj¹)�”}”(hŒ**p**”h]”hŒp”…”�”}”(hj6æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj.æubhŒ4 parameter, if the property has been set to a value.”…”�”}”(hj.æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M#hjáäubhï)�”}”(hŒ�Currently the following v4l2 controls are parsed and registered: - V4L2_CID_CAMERA_ORIENTATION - V4L2_CID_CAMERA_SENSOR_ROTATION;”h]”hŒ�Currently the following v4l2 controls are parsed and registered: - V4L2_CID_CAMERA_ORIENTATION - V4L2_CID_CAMERA_SENSOR_ROTATION;”…”�”}”(hjOæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M'hjáäubhï)�”}”(hŒÁControls already registered by the caller with the **hdl** control handler are not overwritten. Callers should register the controls they want to handle themselves before calling this function.”h]”(hŒ3Controls already registered by the caller with the ”…”�”}”(hj^æh²hh³Nh´Nubj¹)�”}”(hŒ**hdl**”h]”hŒhdl”…”�”}”(hjfæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj^æubhŒ‡ control handler are not overwritten. Callers should register the controls they want to handle themselves before calling this function.”…”�”}”(hj^æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M+hjáäubhï)�”}”(hŒ|This function will set the control handler's error field on failure, just as other functions adding controls to the handler.”h]”hŒ~This function will set the control handler’s error field on failure, just as other functions adding controls to the handler.”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M/hjáäubhï)�”}”(hŒ **Return**”h]”j¹)�”}”(hj�æh]”hŒReturn”…”�”}”(hj’æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjŽæubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M2hjáäubhï)�”}”(hŒ/0 on success, a negative error code on failure.”h]”hŒ/0 on success, a negative error code on failure.”…”�”}”(hj¦æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M3hjáäubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ$v4l2_ctrl_type_op_equal (C function)”Œc.v4l2_ctrl_type_op_equal”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒobool v4l2_ctrl_type_op_equal (const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr1, union v4l2_ctrl_ptr ptr2)”h]”j')�”}”(hŒnbool v4l2_ctrl_type_op_equal(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr1, union v4l2_ctrl_ptr ptr2)”h]”(jÌ)�”}”(hj–mh]”hŒbool”…”�”}”(hjÕæh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjÑæh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M:ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjãæh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÑæh²hh³jâæh´M:ubjP)�”}”(hŒv4l2_ctrl_type_op_equal”h]”jV)�”}”(hŒv4l2_ctrl_type_op_equal”h]”hŒv4l2_ctrl_type_op_equal”…”�”}”(hjõæh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjñæubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjÑæh²hh³jâæh´M:ubjÀ)�”}”(hŒR(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr1, union v4l2_ctrl_ptr ptr2)”h]”(jÆ)�”}”(hŒconst struct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj çubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj çubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj,çh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj çubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9çh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj çubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjJçh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjGçubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jLçŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j÷æsbŒc.v4l2_ctrl_type_op_equal”†”asbuh1hhj çubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjçh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj çubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjxçh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj çubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj…çh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj çubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj çubjÆ)�”}”(hŒunion v4l2_ctrl_ptr ptr1”h]”(j-)�”}”(hj0h]”hŒunion”…”�”}”(hjžçh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjšçubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«çh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšçubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hj¼çh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¹çubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j¾çŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jfçŒc.v4l2_ctrl_type_op_equal”†”asbuh1hhjšçubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚçh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšçubjV)�”}”(hŒptr1”h]”hŒptr1”…”�”}”(hjèçh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjšçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj çubjÆ)�”}”(hŒunion v4l2_ctrl_ptr ptr2”h]”(j-)�”}”(hj0h]”hŒunion”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjýçubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjýçubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjèubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j!èŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”jfçŒc.v4l2_ctrl_type_op_equal”†”asbuh1hhjýçubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=èh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjýçubjV)�”}”(hŒptr2”h]”hŒptr2”…”�”}”(hjKèh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjýçubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj çubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjÑæh²hh³jâæh´M:ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjÍæh²hh³jâæh´M:ubah}”(h]”jÈæah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³jâæh´M:hjÊæh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ*Default v4l2_ctrl_type_ops equal callback.”h]”hŒ*Default v4l2_ctrl_type_ops equal callback.”…”�”}”(hjuèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M:hjrèh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjÊæh²hh³jâæh´M:ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£j�èj¤j�èj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒí**Parameters** ``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. ``union v4l2_ctrl_ptr ptr1`` A v4l2 control value. ``union v4l2_ctrl_ptr ptr2`` A v4l2 control value. **Return** true if values are equal, otherwise false.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj—èh]”hŒ Parameters”…”�”}”(hj™èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj•èubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M>hj‘èubj)�”}”(hhh]”(j)�”}”(hŒ8``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. ”h]”(j )�”}”(hŒ ``const struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj¶èh]”hŒconst struct v4l2_ctrl *ctrl”…”�”}”(hj¸èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj´èubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M<hj°èubj&)�”}”(hhh]”hï)�”}”(hŒThe v4l2_ctrl pointer.”h]”hŒThe v4l2_ctrl pointer.”…”�”}”(hjÏèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jËèh´M<hjÌèubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj°èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jËèh´M<hj­èubj)�”}”(hŒ3``union v4l2_ctrl_ptr ptr1`` A v4l2 control value. ”h]”(j )�”}”(hŒ``union v4l2_ctrl_ptr ptr1``”h]”j½)�”}”(hjïèh]”hŒunion v4l2_ctrl_ptr ptr1”…”�”}”(hjñèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjíèubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M=hjéèubj&)�”}”(hhh]”hï)�”}”(hŒA v4l2 control value.”h]”hŒA v4l2 control value.”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jéh´M=hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjéèubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jéh´M=hj­èubj)�”}”(hŒ3``union v4l2_ctrl_ptr ptr2`` A v4l2 control value. ”h]”(j )�”}”(hŒ``union v4l2_ctrl_ptr ptr2``”h]”j½)�”}”(hj(éh]”hŒunion v4l2_ctrl_ptr ptr2”…”�”}”(hj*éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj&éubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M>hj"éubj&)�”}”(hhh]”hï)�”}”(hŒA v4l2 control value.”h]”hŒA v4l2 control value.”…”�”}”(hjAéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j=éh´M>hj>éubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj"éubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j=éh´M>hj­èubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘èubhï)�”}”(hŒ **Return**”h]”j¹)�”}”(hjcéh]”hŒReturn”…”�”}”(hjeéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjaéubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M@hj‘èubhï)�”}”(hŒ*true if values are equal, otherwise false.”h]”hŒ*true if values are equal, otherwise false.”…”�”}”(hjyéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M@hj‘èubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ#v4l2_ctrl_type_op_init (C function)”Œc.v4l2_ctrl_type_op_init”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒavoid v4l2_ctrl_type_op_init (const struct v4l2_ctrl *ctrl, u32 from_idx, union v4l2_ctrl_ptr ptr)”h]”j')�”}”(hŒ`void v4l2_ctrl_type_op_init(const struct v4l2_ctrl *ctrl, u32 from_idx, union v4l2_ctrl_ptr ptr)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¨éh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj¤éh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MFubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·éh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¤éh²hh³j¶éh´MFubjP)�”}”(hŒv4l2_ctrl_type_op_init”h]”jV)�”}”(hŒv4l2_ctrl_type_op_init”h]”hŒv4l2_ctrl_type_op_init”…”�”}”(hjÉéh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÅéubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj¤éh²hh³j¶éh´MFubjÀ)�”}”(hŒE(const struct v4l2_ctrl *ctrl, u32 from_idx, union v4l2_ctrl_ptr ptr)”h]”(jÆ)�”}”(hŒconst struct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjåéh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjáéubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjòéh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjáéubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjáéubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj êh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjáéubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”j êŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡jËésbŒc.v4l2_ctrl_type_op_init”†”asbuh1hhjáéubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>êh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjáéubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjLêh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjáéubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjYêh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjáéubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÝéubjÆ)�”}”(hŒ u32 from_idx”h]”(h)�”}”(hhh]”jV)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjuêh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjrêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jwêŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j:êŒc.v4l2_ctrl_type_op_init”†”asbuh1hhjnêubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“êh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjnêubjV)�”}”(hŒfrom_idx”h]”hŒfrom_idx”…”�”}”(hj¡êh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjnêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÝéubjÆ)�”}”(hŒunion v4l2_ctrl_ptr ptr”h]”(j-)�”}”(hj0h]”hŒunion”…”�”}”(hjºêh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj¶êubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇêh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¶êubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjØêh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÕêubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÚêŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j:êŒc.v4l2_ctrl_type_op_init”†”asbuh1hhj¶êubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjöêh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj¶êubjV)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj¶êubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhjÝéubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj¤éh²hh³j¶éh´MFubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhj éh²hh³j¶éh´MFubah}”(h]”j›éah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j¶éh´MFhj�éh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ)Default v4l2_ctrl_type_ops init callback.”h]”hŒ)Default v4l2_ctrl_type_ops init callback.”…”�”}”(hj.ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MFhj+ëh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hj�éh²hh³j¶éh´MFubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jFëj¤jFëj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒ¾**Parameters** ``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. ``u32 from_idx`` Starting element index. ``union v4l2_ctrl_ptr ptr`` The v4l2 control value. **Return** void”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hjPëh]”hŒ Parameters”…”�”}”(hjRëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjNëubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MJhjJëubj)�”}”(hhh]”(j)�”}”(hŒ8``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. ”h]”(j )�”}”(hŒ ``const struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hjoëh]”hŒconst struct v4l2_ctrl *ctrl”…”�”}”(hjqëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjmëubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MHhjiëubj&)�”}”(hhh]”hï)�”}”(hŒThe v4l2_ctrl pointer.”h]”hŒThe v4l2_ctrl pointer.”…”�”}”(hjˆëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j„ëh´MHhj…ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjiëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j„ëh´MHhjfëubj)�”}”(hŒ)``u32 from_idx`` Starting element index. ”h]”(j )�”}”(hŒ``u32 from_idx``”h]”j½)�”}”(hj¨ëh]”hŒ u32 from_idx”…”�”}”(hjªëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj¦ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MIhj¢ëubj&)�”}”(hhh]”hï)�”}”(hŒStarting element index.”h]”hŒStarting element index.”…”�”}”(hjÁëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j½ëh´MIhj¾ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¢ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j½ëh´MIhjfëubj)�”}”(hŒ4``union v4l2_ctrl_ptr ptr`` The v4l2 control value. ”h]”(j )�”}”(hŒ``union v4l2_ctrl_ptr ptr``”h]”j½)�”}”(hjáëh]”hŒunion v4l2_ctrl_ptr ptr”…”�”}”(hjãëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjßëubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MJhjÛëubj&)�”}”(hhh]”hï)�”}”(hŒThe v4l2 control value.”h]”hŒThe v4l2 control value.”…”�”}”(hjúëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jöëh´MJhj÷ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjÛëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jöëh´MJhjfëubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjJëubhï)�”}”(hŒ **Return**”h]”j¹)�”}”(hjìh]”hŒReturn”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MLhjJëubhï)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj2ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MLhjJëubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ"v4l2_ctrl_type_op_log (C function)”Œc.v4l2_ctrl_type_op_log”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒ9void v4l2_ctrl_type_op_log (const struct v4l2_ctrl *ctrl)”h]”j')�”}”(hŒ8void v4l2_ctrl_type_op_log(const struct v4l2_ctrl *ctrl)”h]”(jÌ)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjaìh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhj]ìh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MRubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjpìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj]ìh²hh³joìh´MRubjP)�”}”(hŒv4l2_ctrl_type_op_log”h]”jV)�”}”(hŒv4l2_ctrl_type_op_log”h]”hŒv4l2_ctrl_type_op_log”…”�”}”(hj‚ìh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj~ìubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhj]ìh²hh³joìh´MRubjÀ)�”}”(hŒ(const struct v4l2_ctrl *ctrl)”h]”jÆ)�”}”(hŒconst struct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hjžìh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjšìubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«ìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšìubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hj¹ìh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjšìubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšìubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hj×ìh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÔìubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jÙìŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j„ìsbŒc.v4l2_ctrl_type_op_log”†”asbuh1hhjšìubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷ìh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjšìubjë)�”}”(hjîh]”hŒ*”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhjšìubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjšìubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj–ìubah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hj]ìh²hh³joìh´MRubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjYìh²hh³joìh´MRubah}”(h]”jTìah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³joìh´MRhjVìh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ(Default v4l2_ctrl_type_ops log callback.”h]”hŒ(Default v4l2_ctrl_type_ops log callback.”…”�”}”(hj<íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MRhj9íh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjVìh²hh³joìh´MRubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jTíj¤jTíj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒ[**Parameters** ``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. **Return** void”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj^íh]”hŒ Parameters”…”�”}”(hj`íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj\íubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MVhjXíubj)�”}”(hhh]”j)�”}”(hŒ8``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. ”h]”(j )�”}”(hŒ ``const struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj}íh]”hŒconst struct v4l2_ctrl *ctrl”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj{íubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MThjwíubj&)�”}”(hhh]”hï)�”}”(hŒThe v4l2_ctrl pointer.”h]”hŒThe v4l2_ctrl pointer.”…”�”}”(hj–íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j’íh´MThj“íubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjwíubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j’íh´MThjtíubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjXíubhï)�”}”(hŒ **Return**”h]”j¹)�”}”(hj¸íh]”hŒReturn”…”�”}”(hjºíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj¶íubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MVhjXíubhï)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÎíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´MVhjXíubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubj )�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jŒ'v4l2_ctrl_type_op_validate (C function)”Œc.v4l2_ctrl_type_op_validate”hNt”auh1j hjù h²hh³Nh´Nubj)�”}”(hhh]”(j!)�”}”(hŒVint v4l2_ctrl_type_op_validate (const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr)”h]”j')�”}”(hŒUint v4l2_ctrl_type_op_validate(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr)”h]”(jÌ)�”}”(hŒint”h]”hŒint”…”�”}”(hjýíh²hh³Nh´Nubah}”(h]”h ]”jØah"]”h$]”h&]”uh1jËhjùíh²hh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M[ubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj îh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjùíh²hh³j îh´M[ubjP)�”}”(hŒv4l2_ctrl_type_op_validate”h]”jV)�”}”(hŒv4l2_ctrl_type_op_validate”h]”hŒv4l2_ctrl_type_op_validate”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjîubah}”(h]”h ]”(jhjieh"]”h$]”h&]”hÅhÆuh1jOhjùíh²hh³j îh´M[ubjÀ)�”}”(hŒ7(const struct v4l2_ctrl *ctrl, union v4l2_ctrl_ptr ptr)”h]”(jÆ)�”}”(hŒconst struct v4l2_ctrl *ctrl”h]”(j-)�”}”(hjª8h]”hŒconst”…”�”}”(hj:îh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj6îubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjGîh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj6îubj-)�”}”(hjÂh]”hŒstruct”…”�”}”(hjUîh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hj6îubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjbîh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj6îubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl”h]”hŒ v4l2_ctrl”…”�”}”(hjsîh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjpîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”juîŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j”)�”}”j‡j îsbŒc.v4l2_ctrl_type_op_validate”†”asbuh1hhj6îubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj“îh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hj6îubjë)�”}”(hjîh]”hŒ*”…”�”}”(hj¡îh²hh³Nh´Nubah}”(h]”h ]”j÷ah"]”h$]”h&]”uh1jêhj6îubjV)�”}”(hŒctrl”h]”hŒctrl”…”�”}”(hj®îh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhj6îubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj2îubjÆ)�”}”(hŒunion v4l2_ctrl_ptr ptr”h]”(j-)�”}”(hj0h]”hŒunion”…”�”}”(hjÇîh²hh³Nh´Nubah}”(h]”h ]”j9ah"]”h$]”h&]”uh1j,hjÃîubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÔîh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÃîubh)�”}”(hhh]”jV)�”}”(hŒ v4l2_ctrl_ptr”h]”hŒ v4l2_ctrl_ptr”…”�”}”(hjåîh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjâîubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”jÉŒreftype”j‡Œ reftarget”jçîŒmodname”NŒ classname”Nj‹jŽ)�”}”j‘]”j�îŒc.v4l2_ctrl_type_op_validate”†”asbuh1hhjÃîubj?)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jKah"]”h$]”h&]”uh1j>hjÃîubjV)�”}”(hŒptr”h]”hŒptr”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”jaah"]”h$]”h&]”uh1jUhjÃîubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆhÅhÆuh1jÅhj2îubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1j¿hjùíh²hh³j îh´M[ubeh}”(h]”h ]”h"]”h$]”h&]”hÅhÆjsˆuh1j&jtjuhjõíh²hh³j îh´M[ubah}”(h]”jðíah ]”(jyjzeh"]”h$]”h&]”j~ˆj)j€huh1j h³j îh´M[hjòíh²hubj‚)�”}”(hhh]”hï)�”}”(hŒ-Default v4l2_ctrl_type_ops validate callback.”h]”hŒ-Default v4l2_ctrl_type_ops validate callback.”…”�”}”(hj;ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M[hj8ïh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1j�hjòíh²hh³j îh´M[ubeh}”(h]”h ]”(jÉŒfunction”eh"]”h$]”h&]”j¢jÉj£jSïj¤jSïj¥‰j¦‰j§‰uh1jh²hhjù h³Nh´Nubj©)�”}”(hŒ½**Parameters** ``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. ``union v4l2_ctrl_ptr ptr`` The v4l2 control value. **Return** 0 on success, a negative error code on failure.”h]”(hï)�”}”(hŒ**Parameters**”h]”j¹)�”}”(hj]ïh]”hŒ Parameters”…”�”}”(hj_ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hj[ïubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M_hjWïubj)�”}”(hhh]”(j)�”}”(hŒ8``const struct v4l2_ctrl *ctrl`` The v4l2_ctrl pointer. ”h]”(j )�”}”(hŒ ``const struct v4l2_ctrl *ctrl``”h]”j½)�”}”(hj|ïh]”hŒconst struct v4l2_ctrl *ctrl”…”�”}”(hj~ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hjzïubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M]hjvïubj&)�”}”(hhh]”hï)�”}”(hŒThe v4l2_ctrl pointer.”h]”hŒThe v4l2_ctrl pointer.”…”�”}”(hj•ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³j‘ïh´M]hj’ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hjvïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³j‘ïh´M]hjsïubj)�”}”(hŒ4``union v4l2_ctrl_ptr ptr`` The v4l2 control value. ”h]”(j )�”}”(hŒ``union v4l2_ctrl_ptr ptr``”h]”j½)�”}”(hjµïh]”hŒunion v4l2_ctrl_ptr ptr”…”�”}”(hj·ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¼hj³ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j h³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M^hj¯ïubj&)�”}”(hhh]”hï)�”}”(hŒThe v4l2 control value.”h]”hŒThe v4l2 control value.”…”�”}”(hjÎïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³jÊïh´M^hjËïubah}”(h]”h ]”h"]”h$]”h&]”uh1j%hj¯ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jh³jÊïh´M^hjsïubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhjWïubhï)�”}”(hŒ **Return**”h]”j¹)�”}”(hjðïh]”hŒReturn”…”�”}”(hjòïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j¸hjîïubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M`hjWïubhï)�”}”(hŒ/0 on success, a negative error code on failure.”h]”hŒ/0 on success, a negative error code on failure.”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîh³Œj/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-controls:820: ./include/media/v4l2-ctrls.h”h´M`hjWïubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1j¨hjù h²hh³Nh´Nubeh}”(h]”Œ'v4l2-ctrl-functions-and-data-structures”ah ]”h"]”Œ'v4l2_ctrl functions and data structures”ah$]”h&]”uh1hÈhhÊh²hh³hÇh´M2ubeh}”(h]”Œ v4l2-controls”ah ]”h"]”Œ v4l2 controls”ah$]”h&]”uh1hÈhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÍNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jOðŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j)ðj&ðjìjéjqjnjvjsj«j¨jÿjüj_ j\ j¿ j¼ j j j j j¦ j£ jÍ jÊ jƒ j€ j+ j( jo jl j¤ j¡ jö jó j!ðjðuŒ nametypes”}”(j)ð‰jì‰jq‰jv‰j«‰jÿ‰j_ ‰j¿ ‰j ‰j ‰j¦ ‰jÍ ‰jƒ ‰j+ ‰jo ‰j¤ ‰jö ‰j!ð‰uh}”(j&ðhÊjéhÝjnjïjsjtj¨jyjüj®j\ j j¼ jb j j j j j£ j jÊ j© j€ jÐ j( j† jl j. j¡ jr jó j§ jðjù jj"jEjJj³j¸j;j@jjjojjj|*j�*j©.j®.jý2j3j8j8jK>jP>jÿAjBj˜Cj�CjrEjwEjÍFjÒFj(Hj-HjÊIjÏIjlKjqKj·Mj¼MjçPjìPjQVjVVj [jp`ju`jfjfjójjøjj lj%ljËojÐojuqjzqjysj~sjôvjùvjfyjkyju{jz{j„}j‰}j“j˜jHƒjMƒjý†j‡j“‰j˜‰j'Œj,Œj׎jÜŽjX�j]�j’j’j#”j(”jé•jî•j˜j"˜jQšjVšjœjœjKžjPžj j„ jÈ¢jÍ¢j¥j¥jô§jù§jتjݪjf­jk­jó¯jø¯j%²j*²j‰´jŽ´j ¶j¥¶jʸjϸj»j»j•½jš½j¿j¿jSÁjXÁjáÃjæÃj&Æj+Æj²Èj·Èj>ËjCËjÊÍjÏÍjÑj#Ñj9Õj>ÕjTÙjYÙj7Þj<ÞjiájnájãâjèâjÈæjÍæj›éj éjTìjYìjðíjõíuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”(hŒsystem_message”“”)�”}”(hhh]”hï)�”}”(hŒ:Enumerated list start value not ordinal-1: "3" (ordinal 3)”h]”hŒ>Enumerated list start value not ordinal-1: “3â€� (ordinal 3)”…”�”}”(hj¶ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhj³ðubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1j±ðhhÝh²hh³hÇh´Kubj²ð)�”}”(hhh]”hï)�”}”(hŒ:Enumerated list start value not ordinal-1: "2" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “2â€� (ordinal 2)”…”�”}”(hjÒðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjÏðubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÌðŒsource”hÇŒline”Kuh1j±ðhjth²hh³hÇh´Ksubj²ð)�”}”(hhh]”hï)�”}”(hŒ:Enumerated list start value not ordinal-1: "3" (ordinal 3)”h]”hŒ>Enumerated list start value not ordinal-1: “3â€� (ordinal 3)”…”�”}”(hjíðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjêðubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÌðŒsource”hÇŒline”Kuh1j±ðhjth²hh³hÇh´Kîubj²ð)�”}”(hhh]”hï)�”}”(hŒ:Enumerated list start value not ordinal-1: "4" (ordinal 4)”h]”hŒ>Enumerated list start value not ordinal-1: “4â€� (ordinal 4)”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hîhjñubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jÌðŒsource”hÇŒline”Kuh1j±ðhjth²hh³hÇh´KùubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.