sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget//translations/zh_CN/driver-api/media/v4l2-asyncmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/zh_TW/driver-api/media/v4l2-asyncmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/it_IT/driver-api/media/v4l2-asyncmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/ja_JP/driver-api/media/v4l2-asyncmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/ko_KR/driver-api/media/v4l2-asyncmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/sp_SP/driver-api/media/v4l2-asyncmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhI/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async.rsthKubhsection)}(hhh](htitle)}(hV4L2 async kAPIh]hV4L2 async kAPI}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlev4l2_async_match_type (C enum)c.v4l2_async_match_typehNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(hv4l2_async_match_typeh]hdesc_signature_line)}(henum v4l2_async_match_typeh](hdesc_sig_keyword)}(henumh]henum}(hhhhhNhNubah}(h]h ]kah"]h$]h&]uh1hhhhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubhdesc_sig_space)}(h h]h }(hhhhhNhNubah}(h]h ]wah"]h$]h&]uh1hhhhhhhhKubh desc_name)}(hv4l2_async_match_typeh]h desc_sig_name)}(hhh]hv4l2_async_match_type}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhhhhhhhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1hsphinx_line_type declaratorhhhhhhhKubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhhhKhhhhubh desc_content)}(hhh]h paragraph)}(hLtype of asynchronous subdevice logic to be used in order to identify a matchh]hLtype of asynchronous subdevice logic to be used in order to identify a match}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjBhhubah}(h]h ]h"]h$]h&]uh1j@hhhhhhhKubeh}(h]h ](cenumeh"]h$]h&]domainj_objtypej`desctypej`noindex noindexentrynocontentsentryuh1hhhhhhNhNubh container)}(h**Constants** ``V4L2_ASYNC_MATCH_TYPE_I2C`` Match will check for I2C adapter ID and address ``V4L2_ASYNC_MATCH_TYPE_FWNODE`` Match will use firmware nodeh](jF)}(h **Constants**h]hstrong)}(hjrh]h Constants}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjpubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjlubhdefinition_list)}(hhh](hdefinition_list_item)}(hN``V4L2_ASYNC_MATCH_TYPE_I2C`` Match will check for I2C adapter ID and address h](hterm)}(h``V4L2_ASYNC_MATCH_TYPE_I2C``h]hliteral)}(hjh]hV4L2_ASYNC_MATCH_TYPE_I2C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubh definition)}(hhh]jF)}(h/Match will check for I2C adapter ID and addressh]h/Match will check for I2C adapter ID and address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h=``V4L2_ASYNC_MATCH_TYPE_FWNODE`` Match will use firmware nodeh](j)}(h ``V4L2_ASYNC_MATCH_TYPE_FWNODE``h]j)}(hjh]hV4L2_ASYNC_MATCH_TYPE_FWNODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(hMatch will use firmware nodeh]hMatch will use firmware node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjlubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubjF)}(h**Description**h]ju)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK#hhhhubjF)}(hThis enum is used by the asynchronous connection logic to define the algorithm that will be used to match an asynchronous device.h]hThis enum is used by the asynchronous connection logic to define the algorithm that will be used to match an asynchronous device.}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌ v4l2_async_match_desc (C struct)c.v4l2_async_match_deschNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_match_desch]h)}(hstruct v4l2_async_match_desch](h)}(hstructh]hstruct}(hjWhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjShhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK"ubh)}(h h]h }(hjfhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjShhhjehK"ubj)}(hv4l2_async_match_desch]j)}(hjQh]hv4l2_async_match_desc}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjtubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjShhhjehK"ubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjOhhhjehK"ubah}(h]jJah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjehK"hjLhhubjA)}(hhh]jF)}(h"async connection match informationh]h"async connection match information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK%hjhhubah}(h]h ]h"]h$]h&]uh1j@hjLhhhjehK"ubeh}(h]h ](j_structeh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(hX**Definition**:: struct v4l2_async_match_desc { enum v4l2_async_match_type type; union { struct fwnode_handle *fwnode; struct { int adapter_id; unsigned short address; } i2c; }; }; **Members** ``type`` type of match that will be used ``{unnamed_union}`` anonymous ``fwnode`` pointer to :c:type:`struct fwnode_handle ` to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_FWNODE``. ``i2c`` embedded struct with I2C parameters to be matched. Both **match.i2c.adapter_id** and **match.i2c.address** should be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``. ``i2c.adapter_id`` I2C adapter ID to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``. ``i2c.address`` I2C address to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``.h](jF)}(h**Definition**::h](ju)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK)hjubh literal_block)}(hstruct v4l2_async_match_desc { enum v4l2_async_match_type type; union { struct fwnode_handle *fwnode; struct { int adapter_id; unsigned short address; } i2c; }; };h]hstruct v4l2_async_match_desc { enum v4l2_async_match_type type; union { struct fwnode_handle *fwnode; struct { int adapter_id; unsigned short address; } i2c; }; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK+hjubjF)}(h **Members**h]ju)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK6hjubj)}(hhh](j)}(h)``type`` type of match that will be used h](j)}(h``type``h]j)}(hj h]htype}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK(hjubj)}(hhh]jF)}(htype of match that will be usedh]htype of match that will be used}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK(hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK(hjubj)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j)}(hjBh]h{unnamed_union}}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK+hj<ubj)}(hhh]jF)}(h anonymoush]h anonymous}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjWhK+hjXubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhjWhK+hjubj)}(h``fwnode`` pointer to :c:type:`struct fwnode_handle ` to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_FWNODE``. h](j)}(h ``fwnode``h]j)}(hj{h]hfwnode}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK*hjuubj)}(hhh]jF)}(hpointer to :c:type:`struct fwnode_handle ` to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_FWNODE``.h](h pointer to }(hjhhhNhNubh)}(h.:c:type:`struct fwnode_handle `h]j)}(hjh]hstruct fwnode_handle}(hjhhhNhNubah}(h]h ](xrefj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocdriver-api/media/v4l2-async refdomainj_reftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sb reftarget fwnode_handleuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK)hjubh to be matched. Used if }(hjhhhNhNubju)}(h**match_type**h]h match_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh is }(hjhhhNhNubj)}(h ``V4L2_ASYNC_MATCH_TYPE_FWNODE``h]hV4L2_ASYNC_MATCH_TYPE_FWNODE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhjhK)hjubah}(h]h ]h"]h$]h&]uh1jhjuubeh}(h]h ]h"]h$]h&]uh1jhjhK*hjubj)}(h``i2c`` embedded struct with I2C parameters to be matched. Both **match.i2c.adapter_id** and **match.i2c.address** should be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``. h](j)}(h``i2c``h]j)}(hjh]hi2c}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK.hjubj)}(hhh]jF)}(hembedded struct with I2C parameters to be matched. Both **match.i2c.adapter_id** and **match.i2c.address** should be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``.h](h8embedded struct with I2C parameters to be matched. Both }(hj hhhNhNubju)}(h**match.i2c.adapter_id**h]hmatch.i2c.adapter_id}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubh and }(hj hhhNhNubju)}(h**match.i2c.address**h]hmatch.i2c.address}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubh should be matched. Used if }(hj hhhNhNubju)}(h**match_type**h]h match_type}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubh is }(hj hhhNhNubj)}(h``V4L2_ASYNC_MATCH_TYPE_I2C``h]hV4L2_ASYNC_MATCH_TYPE_I2C}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK+hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK.hjubj)}(hj``i2c.adapter_id`` I2C adapter ID to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``. h](j)}(h``i2c.adapter_id``h]j)}(hjh]hi2c.adapter_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK0hjubj)}(hhh]jF)}(hVI2C adapter ID to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``.h](h&I2C adapter ID to be matched. Used if }(hjhhhNhNubju)}(h**match_type**h]h match_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh is }(hjhhhNhNubj)}(h``V4L2_ASYNC_MATCH_TYPE_I2C``h]hV4L2_ASYNC_MATCH_TYPE_I2C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK/hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK0hjubj)}(hc``i2c.address`` I2C address to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``.h](j)}(h``i2c.address``h]j)}(hjh]h i2c.address}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK2hjubj)}(hhh]jF)}(hSI2C address to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``.h](h#I2C address to be matched. Used if }(hjhhhNhNubju)}(h**match_type**h]h match_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh is }(hjhhhNhNubj)}(h``V4L2_ASYNC_MATCH_TYPE_I2C``h]hV4L2_ASYNC_MATCH_TYPE_I2C}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhjhK2hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK2hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌ v4l2_async_connection (C struct)c.v4l2_async_connectionhNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_connectionh]h)}(hstruct v4l2_async_connectionh](h)}(hjYh]hstruct}(hjdhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj`hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK9ubh)}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj`hhhjqhK9ubj)}(hv4l2_async_connectionh]j)}(hj^h]hv4l2_async_connection}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj`hhhjqhK9ubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj\hhhjqhK9ubah}(h]jWah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjqhK9hjYhhubjA)}(hhh]jF)}(h6sub-device connection descriptor, as known to a bridgeh]h6sub-device connection descriptor, as known to a bridge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKAhjhhubah}(h]h ]h"]h$]h&]uh1j@hjYhhhjqhK9ubeh}(h]h ](j_structeh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(hXh**Definition**:: struct v4l2_async_connection { struct v4l2_async_match_desc match; struct v4l2_async_notifier *notifier; struct list_head asc_entry; struct list_head asc_subdev_entry; struct v4l2_subdev *sd; }; **Members** ``match`` struct of match type and per-bus type matching data sets ``notifier`` the async notifier the connection is related to ``asc_entry`` used to add struct v4l2_async_connection objects to the notifier **waiting_list** or **done_list** ``asc_subdev_entry`` entry in struct v4l2_async_subdev.asc_list list ``sd`` the related sub-deviceh](jF)}(h**Definition**::h](ju)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKEhjubj)}(hstruct v4l2_async_connection { struct v4l2_async_match_desc match; struct v4l2_async_notifier *notifier; struct list_head asc_entry; struct list_head asc_subdev_entry; struct v4l2_subdev *sd; };h]hstruct v4l2_async_connection { struct v4l2_async_match_desc match; struct v4l2_async_notifier *notifier; struct list_head asc_entry; struct list_head asc_subdev_entry; struct v4l2_subdev *sd; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKGhjubjF)}(h **Members**h]ju)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKOhjubj)}(hhh](j)}(hC``match`` struct of match type and per-bus type matching data sets h](j)}(h ``match``h]j)}(hjh]hmatch}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKEhj ubj)}(hhh]jF)}(h8struct of match type and per-bus type matching data setsh]h8struct of match type and per-bus type matching data sets}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj(hKEhj)ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj(hKEhj ubj)}(h=``notifier`` the async notifier the connection is related to h](j)}(h ``notifier``h]j)}(hjLh]hnotifier}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKFhjFubj)}(hhh]jF)}(h/the async notifier the connection is related toh]h/the async notifier the connection is related to}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjahKFhjbubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(h]h ]h"]h$]h&]uh1jhjahKFhj ubj)}(hq``asc_entry`` used to add struct v4l2_async_connection objects to the notifier **waiting_list** or **done_list** h](j)}(h ``asc_entry``h]j)}(hjh]h asc_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKHhjubj)}(hhh]jF)}(hbused to add struct v4l2_async_connection objects to the notifier **waiting_list** or **done_list**h](hAused to add struct v4l2_async_connection objects to the notifier }(hjhhhNhNubju)}(h**waiting_list**h]h waiting_list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh or }(hjhhhNhNubju)}(h **done_list**h]h done_list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKGhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKHhj ubj)}(hE``asc_subdev_entry`` entry in struct v4l2_async_subdev.asc_list list h](j)}(h``asc_subdev_entry``h]j)}(hjh]hasc_subdev_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKIhjubj)}(hhh]jF)}(h/entry in struct v4l2_async_subdev.asc_list listh]h/entry in struct v4l2_async_subdev.asc_list list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhKIhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKIhj ubj)}(h``sd`` the related sub-deviceh](j)}(h``sd``h]j)}(hjh]hsd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKIhjubj)}(hhh]jF)}(hthe related sub-deviceh]hthe related sub-device}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKJhj.ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj-hKIhj ubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubjF)}(h**Description**h]ju)}(hj[h]h Description}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jthjYubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKMhhhhubjF)}(hWhen this struct is used as a member in a driver specific struct, the driver specific struct shall contain the :c:type:`struct v4l2_async_connection ` as its first member.h](hoWhen this struct is used as a member in a driver specific struct, the driver specific struct shall contain the }(hjqhhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hj{h]hstruct v4l2_async_connection}(hj}hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKKhjqubh as its first member.}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhjhKKhhhhubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌)v4l2_async_notifier_operations (C struct) c.v4l2_async_notifier_operationshNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_notifier_operationsh]h)}(h%struct v4l2_async_notifier_operationsh](h)}(hjYh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKRubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKRubj)}(hv4l2_async_notifier_operationsh]j)}(hjh]hv4l2_async_notifier_operations}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhjhKRubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhKRubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhKRhjhhubjA)}(hhh]jF)}(h%Asynchronous V4L2 notifier operationsh]h%Asynchronous V4L2 notifier operations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKXhjhhubah}(h]h ]h"]h$]h&]uh1j@hjhhhjhKRubeh}(h]h ](j_structeh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(hX**Definition**:: struct v4l2_async_notifier_operations { int (*bound)(struct v4l2_async_notifier *notifier,struct v4l2_subdev *subdev, struct v4l2_async_connection *asc); int (*complete)(struct v4l2_async_notifier *notifier); void (*unbind)(struct v4l2_async_notifier *notifier,struct v4l2_subdev *subdev, struct v4l2_async_connection *asc); void (*destroy)(struct v4l2_async_connection *asc); }; **Members** ``bound`` a sub-device has been bound by the given connection ``complete`` All connections have been bound successfully. The complete callback is only executed for the root notifier. ``unbind`` a subdevice is leaving ``destroy`` the asc is about to be freedh](jF)}(h**Definition**::h](ju)}(h**Definition**h]h Definition}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK\hjubj)}(hXstruct v4l2_async_notifier_operations { int (*bound)(struct v4l2_async_notifier *notifier,struct v4l2_subdev *subdev, struct v4l2_async_connection *asc); int (*complete)(struct v4l2_async_notifier *notifier); void (*unbind)(struct v4l2_async_notifier *notifier,struct v4l2_subdev *subdev, struct v4l2_async_connection *asc); void (*destroy)(struct v4l2_async_connection *asc); };h]hXstruct v4l2_async_notifier_operations { int (*bound)(struct v4l2_async_notifier *notifier,struct v4l2_subdev *subdev, struct v4l2_async_connection *asc); int (*complete)(struct v4l2_async_notifier *notifier); void (*unbind)(struct v4l2_async_notifier *notifier,struct v4l2_subdev *subdev, struct v4l2_async_connection *asc); void (*destroy)(struct v4l2_async_connection *asc); };}hj;sbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK^hjubjF)}(h **Members**h]ju)}(hjLh]hMembers}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjJubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKehjubj)}(hhh](j)}(h>``bound`` a sub-device has been bound by the given connection h](j)}(h ``bound``h]j)}(hjkh]hbound}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKZhjeubj)}(hhh]jF)}(h3a sub-device has been bound by the given connectionh]h3a sub-device has been bound by the given connection}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhKZhjubah}(h]h ]h"]h$]h&]uh1jhjeubeh}(h]h ]h"]h$]h&]uh1jhjhKZhjbubj)}(hy``complete`` All connections have been bound successfully. The complete callback is only executed for the root notifier. h](j)}(h ``complete``h]j)}(hjh]hcomplete}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK\hjubj)}(hhh]jF)}(hkAll connections have been bound successfully. The complete callback is only executed for the root notifier.h]hkAll connections have been bound successfully. The complete callback is only executed for the root notifier.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK[hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK\hjbubj)}(h"``unbind`` a subdevice is leaving h](j)}(h ``unbind``h]j)}(hjh]hunbind}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK]hjubj)}(hhh]jF)}(ha subdevice is leavingh]ha subdevice is leaving}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhK]hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK]hjbubj)}(h(``destroy`` the asc is about to be freedh](j)}(h ``destroy``h]j)}(hj h]hdestroy}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK]hj ubj)}(hhh]jF)}(hthe asc is about to be freedh]hthe asc is about to be freed}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK^hj- ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj, hK]hjbubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌v4l2_async_notifier (C struct)c.v4l2_async_notifierhNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_notifierh]h)}(hstruct v4l2_async_notifierh](h)}(hjYh]hstruct}(hjq hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjm hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKdubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjm hhhj~ hKdubj)}(hv4l2_async_notifierh]j)}(hjk h]hv4l2_async_notifier}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjm hhhj~ hKdubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hji hhhj~ hKdubah}(h]jd ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj~ hKdhjf hhubjA)}(hhh]jF)}(hv4l2_device notifier datah]hv4l2_device notifier data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKkhj hhubah}(h]h ]h"]h$]h&]uh1j@hjf hhhj~ hKdubeh}(h]h ](j_structeh"]h$]h&]jdj_jej jfj jgjhjiuh1hhhhhhNhNubjk)}(hX**Definition**:: struct v4l2_async_notifier { const struct v4l2_async_notifier_operations *ops; struct v4l2_device *v4l2_dev; struct v4l2_subdev *sd; struct v4l2_async_notifier *parent; struct list_head waiting_list; struct list_head done_list; struct list_head notifier_entry; }; **Members** ``ops`` notifier operations ``v4l2_dev`` v4l2_device of the root notifier, NULL otherwise ``sd`` sub-device that registered the notifier, NULL otherwise ``parent`` parent notifier ``waiting_list`` list of struct v4l2_async_connection, waiting for their drivers ``done_list`` list of struct v4l2_subdev, already probed ``notifier_entry`` member in a global list of notifiersh](jF)}(h**Definition**::h](ju)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKohj ubj)}(hX#struct v4l2_async_notifier { const struct v4l2_async_notifier_operations *ops; struct v4l2_device *v4l2_dev; struct v4l2_subdev *sd; struct v4l2_async_notifier *parent; struct list_head waiting_list; struct list_head done_list; struct list_head notifier_entry; };h]hX#struct v4l2_async_notifier { const struct v4l2_async_notifier_operations *ops; struct v4l2_device *v4l2_dev; struct v4l2_subdev *sd; struct v4l2_async_notifier *parent; struct list_head waiting_list; struct list_head done_list; struct list_head notifier_entry; };}hj sbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKqhj ubjF)}(h **Members**h]ju)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK{hj ubj)}(hhh](j)}(h``ops`` notifier operations h](j)}(h``ops``h]j)}(hj h]hops}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKnhj ubj)}(hhh]jF)}(hnotifier operationsh]hnotifier operations}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj5 hKnhj6 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj5 hKnhj ubj)}(h>``v4l2_dev`` v4l2_device of the root notifier, NULL otherwise h](j)}(h ``v4l2_dev``h]j)}(hjY h]hv4l2_dev}(hj[ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKohjS ubj)}(hhh]jF)}(h0v4l2_device of the root notifier, NULL otherwiseh]h0v4l2_device of the root notifier, NULL otherwise}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjn hKohjo ubah}(h]h ]h"]h$]h&]uh1jhjS ubeh}(h]h ]h"]h$]h&]uh1jhjn hKohj ubj)}(h?``sd`` sub-device that registered the notifier, NULL otherwise h](j)}(h``sd``h]j)}(hj h]hsd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKphj ubj)}(hhh]jF)}(h7sub-device that registered the notifier, NULL otherwiseh]h7sub-device that registered the notifier, NULL otherwise}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj hKphj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKphj ubj)}(h``parent`` parent notifier h](j)}(h ``parent``h]j)}(hj h]hparent}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKqhj ubj)}(hhh]jF)}(hparent notifierh]hparent notifier}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj hKqhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKqhj ubj)}(hQ``waiting_list`` list of struct v4l2_async_connection, waiting for their drivers h](j)}(h``waiting_list``h]j)}(hj h]h waiting_list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKshj ubj)}(hhh]jF)}(h?list of struct v4l2_async_connection, waiting for their driversh]h?list of struct v4l2_async_connection, waiting for their drivers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKrhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKshj ubj)}(h9``done_list`` list of struct v4l2_subdev, already probed h](j)}(h ``done_list``h]j)}(hj> h]h done_list}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj< ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKthj8 ubj)}(hhh]jF)}(h*list of struct v4l2_subdev, already probedh]h*list of struct v4l2_subdev, already probed}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjS hKthjT ubah}(h]h ]h"]h$]h&]uh1jhj8 ubeh}(h]h ]h"]h$]h&]uh1jhjS hKthj ubj)}(h7``notifier_entry`` member in a global list of notifiersh](j)}(h``notifier_entry``h]j)}(hjw h]hnotifier_entry}(hjy hhhNhNubah}(h]h ]h"]h$]h&]uh1jhju ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKthjq ubj)}(hhh]jF)}(h$member in a global list of notifiersh]h$member in a global list of notifiers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKuhj ubah}(h]h ]h"]h$]h&]uh1jhjq ubeh}(h]h ]h"]h$]h&]uh1jhj hKthj ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌%v4l2_async_subdev_endpoint (C struct)c.v4l2_async_subdev_endpointhNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_subdev_endpointh]h)}(h!struct v4l2_async_subdev_endpointh](h)}(hjYh]hstruct}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK{ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hK{ubj)}(hv4l2_async_subdev_endpointh]j)}(hj h]hv4l2_async_subdev_endpoint}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj hhhj hK{ubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj hhhj hK{ubah}(h]j ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj hK{hj hhubjA)}(hhh]jF)}(h!Entry in sub-device's fwnode listh]h#Entry in sub-device’s fwnode list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj hhubah}(h]h ]h"]h$]h&]uh1j@hj hhhj hK{ubeh}(h]h ](j_structeh"]h$]h&]jdj_jej+ jfj+ jgjhjiuh1hhhhhhNhNubjk)}(hXb**Definition**:: struct v4l2_async_subdev_endpoint { struct list_head async_subdev_endpoint_entry; struct fwnode_handle *endpoint; }; **Members** ``async_subdev_endpoint_entry`` An entry in async_subdev_endpoint_list of :c:type:`struct v4l2_subdev ` ``endpoint`` Endpoint fwnode agains which to match the sub-deviceh](jF)}(h**Definition**::h](ju)}(h**Definition**h]h Definition}(hj7 hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj3 ubh:}(hj3 hhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj/ ubj)}(h|struct v4l2_async_subdev_endpoint { struct list_head async_subdev_endpoint_entry; struct fwnode_handle *endpoint; };h]h|struct v4l2_async_subdev_endpoint { struct list_head async_subdev_endpoint_entry; struct fwnode_handle *endpoint; };}hjP sbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj/ ubjF)}(h **Members**h]ju)}(hja h]hMembers}(hjc hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj_ ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj/ ubj)}(hhh](j)}(hu``async_subdev_endpoint_entry`` An entry in async_subdev_endpoint_list of :c:type:`struct v4l2_subdev ` h](j)}(h``async_subdev_endpoint_entry``h]j)}(hj h]hasync_subdev_endpoint_entry}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjz ubj)}(hhh]jF)}(hTAn entry in async_subdev_endpoint_list of :c:type:`struct v4l2_subdev `h](h*An entry in async_subdev_endpoint_list of }(hj hhhNhNubh)}(h*:c:type:`struct v4l2_subdev `h]j)}(hj h]hstruct v4l2_subdev}(hj hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj ubeh}(h]h ]h"]h$]h&]uh1jEhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjz ubeh}(h]h ]h"]h$]h&]uh1jhj hKhjw ubj)}(hA``endpoint`` Endpoint fwnode agains which to match the sub-deviceh](j)}(h ``endpoint``h]j)}(hj h]hendpoint}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj ubj)}(hhh]jF)}(h4Endpoint fwnode agains which to match the sub-deviceh]h4Endpoint fwnode agains which to match the sub-device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhjw ubeh}(h]h ]h"]h$]h&]uh1jhj/ ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌"v4l2_async_debug_init (C function)c.v4l2_async_debug_inithNtauh1hhhhhhNhNubh)}(hhh](h)}(h7void v4l2_async_debug_init (struct dentry *debugfs_dir)h]h)}(h6void v4l2_async_debug_init(struct dentry *debugfs_dir)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hj5 hhhNhNubah}(h]h ]ktah"]h$]h&]uh1j3 hj/ hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubh)}(h h]h }(hjE hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj/ hhhjD hKubj)}(hv4l2_async_debug_inith]j)}(hv4l2_async_debug_inith]hv4l2_async_debug_init}(hjW hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjS ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj/ hhhjD hKubhdesc_parameterlist)}(h(struct dentry *debugfs_dir)h]hdesc_parameter)}(hstruct dentry *debugfs_dirh](h)}(hjYh]hstruct}(hjw hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjs ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjs ubh)}(hhh]j)}(hdentryh]hdentry}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainj_reftype identifier reftargetj modnameN classnameNjj)}j]j ASTIdentifier)}j jY sbc.v4l2_async_debug_initasbuh1hhjs ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjs ubhdesc_sig_punctuation)}(h*h]h*}(hj hhhNhNubah}(h]h ]pah"]h$]h&]uh1j hjs ubj)}(h debugfs_dirh]h debugfs_dir}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjs ubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjm ubah}(h]h ]h"]h$]h&]hhuh1jk hj/ hhhjD hKubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj+ hhhjD hKubah}(h]j& ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjD hKhj( hhubjA)}(hhh]jF)}(hInitialize debugging tools.h]hInitialize debugging tools.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj hhubah}(h]h ]h"]h$]h&]uh1j@hj( hhhjD hKubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(ho**Parameters** ``struct dentry *debugfs_dir`` pointer to the parent debugfs :c:type:`struct dentry `h](jF)}(h**Parameters**h]ju)}(hj#h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj!ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]j)}(h]``struct dentry *debugfs_dir`` pointer to the parent debugfs :c:type:`struct dentry `h](j)}(h``struct dentry *debugfs_dir``h]j)}(hjBh]hstruct dentry *debugfs_dir}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj<ubj)}(hhh]jF)}(h>pointer to the parent debugfs :c:type:`struct dentry `h](hpointer to the parent debugfs }(hj[hhhNhNubh)}(h :c:type:`struct dentry `h]j)}(hjeh]h struct dentry}(hjghhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjdentryuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj[ubeh}(h]h ]h"]h$]h&]uh1jEhjhKhjXubah}(h]h ]h"]h$]h&]uh1jhj<ubeh}(h]h ]h"]h$]h&]uh1jhjWhKhj9ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌v4l2_async_nf_init (C function)c.v4l2_async_nf_inithNtauh1hhhhhhNhNubh)}(hhh](h)}(h\void v4l2_async_nf_init (struct v4l2_async_notifier *notifier, struct v4l2_device *v4l2_dev)h]h)}(h[void v4l2_async_nf_init(struct v4l2_async_notifier *notifier, struct v4l2_device *v4l2_dev)h](j4 )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hv4l2_async_nf_inith]j)}(hv4l2_async_nf_inith]hv4l2_async_nf_init}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhjhKubjl )}(hD(struct v4l2_async_notifier *notifier, struct v4l2_device *v4l2_dev)h](jr )}(h$struct v4l2_async_notifier *notifierh](h)}(hjYh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(hv4l2_async_notifierh]hv4l2_async_notifier}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjmodnameN classnameNjj)}j]j )}j jsbc.v4l2_async_nf_initasbuh1hhjubh)}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj )}(hj h]h*}(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hnotifierh]hnotifier}(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjubjr )}(hstruct v4l2_device *v4l2_devh](h)}(hjYh]hstruct}(hjjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjfubh)}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjfubh)}(hhh]j)}(h v4l2_deviceh]h v4l2_device}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjmodnameN classnameNjj)}j]j2c.v4l2_async_nf_initasbuh1hhjfubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjfubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjfubj)}(hv4l2_devh]hv4l2_dev}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjubeh}(h]h ]h"]h$]h&]hhuh1jk hjhhhjhKubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhKubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhKhjhhubjA)}(hhh]jF)}(hInitialize a notifier.h]hInitialize a notifier.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjhhubah}(h]h ]h"]h$]h&]uh1j@hjhhhjhKubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(hX**Parameters** ``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier ` ``struct v4l2_device *v4l2_dev`` pointer to :c:type:`struct v4l2_device ` **Description** This function initializes the notifier **asc_entry**. It must be called before adding a subdevice to a notifier, using one of: v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().h](jF)}(h**Parameters**h]ju)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh](j)}(ho``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier ` h](j)}(h(``struct v4l2_async_notifier *notifier``h]j)}(hj,h]h$struct v4l2_async_notifier *notifier}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj&ubj)}(hhh]jF)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjEhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjOh]hstruct v4l2_async_notifier}(hjQhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjAhKhjEubeh}(h]h ]h"]h$]h&]uh1jEhjAhKhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhKhj#ubj)}(hW``struct v4l2_device *v4l2_dev`` pointer to :c:type:`struct v4l2_device ` h](j)}(h ``struct v4l2_device *v4l2_dev``h]j)}(hjh]hstruct v4l2_device *v4l2_dev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj~ubj)}(hhh]jF)}(h5pointer to :c:type:`struct v4l2_device `h](h pointer to }(hjhhhNhNubh)}(h*:c:type:`struct v4l2_device `h]j)}(hjh]hstruct v4l2_device}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj v4l2_deviceuh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj#ubeh}(h]h ]h"]h$]h&]uh1jhjubjF)}(h**Description**h]ju)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(hThis function initializes the notifier **asc_entry**. It must be called before adding a subdevice to a notifier, using one of: v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().h](h'This function initializes the notifier }(hjhhhNhNubju)}(h **asc_entry**h]h asc_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubh. It must be called before adding a subdevice to a notifier, using one of: v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌&v4l2_async_subdev_nf_init (C function)c.v4l2_async_subdev_nf_inithNtauh1hhhhhhNhNubh)}(hhh](h)}(h]void v4l2_async_subdev_nf_init (struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd)h]h)}(h\void v4l2_async_subdev_nf_init(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd)h](j4 )}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hj1hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubh)}(h h]h }(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj1hhhjChKubj)}(hv4l2_async_subdev_nf_inith]j)}(hv4l2_async_subdev_nf_inith]hv4l2_async_subdev_nf_init}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjRubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj1hhhjChKubjl )}(h>(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd)h](jr )}(h$struct v4l2_async_notifier *notifierh](h)}(hjYh]hstruct}(hjrhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjnubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjnubh)}(hhh]j)}(hv4l2_async_notifierh]hv4l2_async_notifier}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjmodnameN classnameNjj)}j]j )}j jXsbc.v4l2_async_subdev_nf_initasbuh1hhjnubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjnubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnubj)}(hnotifierh]hnotifier}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjjubjr )}(hstruct v4l2_subdev *sdh](h)}(hjYh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjmodnameN classnameNjj)}j]jc.v4l2_async_subdev_nf_initasbuh1hhjubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj )}(hj h]h*}(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hsdh]hsd}(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjjubeh}(h]h ]h"]h$]h&]hhuh1jk hj1hhhjChKubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj-hhhjChKubah}(h]j(ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjChKhj*hhubjA)}(hhh]jF)}(h!Initialize a sub-device notifier.h]h!Initialize a sub-device notifier.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjbhhubah}(h]h ]h"]h$]h&]uh1j@hj*hhhjChKubeh}(h]h ](j_functioneh"]h$]h&]jdj_jej}jfj}jgjhjiuh1hhhhhhNhNubjk)}(hX**Parameters** ``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier ` ``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev ` **Description** This function initializes the notifier **asc_list**. It must be called before adding a subdevice to a notifier, using one of: v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().h](jF)}(h**Parameters**h]ju)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh](j)}(ho``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier ` h](j)}(h(``struct v4l2_async_notifier *notifier``h]j)}(hjh]h$struct v4l2_async_notifier *notifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjh]hstruct v4l2_async_notifier}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hQ``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev ` h](j)}(h``struct v4l2_subdev *sd``h]j)}(hjh]hstruct v4l2_subdev *sd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(h5pointer to :c:type:`struct v4l2_subdev `h](h pointer to }(hjhhhNhNubh)}(h*:c:type:`struct v4l2_subdev `h]j)}(hj!h]hstruct v4l2_subdev}(hj#hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubjF)}(h**Description**h]ju)}(hjXh]h Description}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjVubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(hThis function initializes the notifier **asc_list**. It must be called before adding a subdevice to a notifier, using one of: v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().h](h'This function initializes the notifier }(hjnhhhNhNubju)}(h **asc_list**h]hasc_list}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjnubh. It must be called before adding a subdevice to a notifier, using one of: v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌"v4l2_async_nf_add_fwnode (C macro)c.v4l2_async_nf_add_fwnodehNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_nf_add_fwnodeh]h)}(hv4l2_async_nf_add_fwnodeh]j)}(hv4l2_async_nf_add_fwnodeh]j)}(hjh]hv4l2_async_nf_add_fwnode}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubah}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhKubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhKhjhhubjA)}(hhh]h}(h]h ]h"]h$]h&]uh1j@hjhhhjhKubeh}(h]h ](j_macroeh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjF)}(h5``v4l2_async_nf_add_fwnode (notifier, fwnode, type)``h]j)}(hjh]h1v4l2_async_nf_add_fwnode (notifier, fwnode, type)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhhhhubh block_quote)}(hJAllocate and add a fwnode async subdev to the notifier's master asc_list. h]jF)}(hIAllocate and add a fwnode async subdev to the notifier's master asc_list.h]hKAllocate and add a fwnode async subdev to the notifier’s master asc_list.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhhhhubjk)}(hX**Parameters** ``notifier`` pointer to :c:type:`struct v4l2_async_notifier ` ``fwnode`` fwnode handle of the sub-device to be matched, pointer to :c:type:`struct fwnode_handle ` ``type`` Type of the driver's async sub-device or connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async struct, i.e. both begin at the same memory address. **Description** Allocate a fwnode-matched asc of size asc_struct_size, and add it to the notifiers **asc_list**. The function also gets a reference of the fwnode which is released later at notifier cleanup time.h](jF)}(h**Parameters**h]ju)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh](j)}(hS``notifier`` pointer to :c:type:`struct v4l2_async_notifier ` h](j)}(h ``notifier``h]j)}(hj;h]hnotifier}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj5ubj)}(hhh]jF)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjThhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hj^h]hstruct v4l2_async_notifier}(hj`hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjPhKhjTubeh}(h]h ]h"]h$]h&]uh1jEhjPhKhjQubah}(h]h ]h"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]uh1jhjPhKhj2ubj)}(ht``fwnode`` fwnode handle of the sub-device to be matched, pointer to :c:type:`struct fwnode_handle ` h](j)}(h ``fwnode``h]j)}(hjh]hfwnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(hhfwnode handle of the sub-device to be matched, pointer to :c:type:`struct fwnode_handle `h](h:fwnode handle of the sub-device to be matched, pointer to }(hjhhhNhNubh)}(h.:c:type:`struct fwnode_handle `h]j)}(hjh]hstruct fwnode_handle}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj fwnode_handleuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj2ubj)}(h``type`` Type of the driver's async sub-device or connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async struct, i.e. both begin at the same memory address. h](j)}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(hType of the driver's async sub-device or connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async struct, i.e. both begin at the same memory address.h](hBType of the driver’s async sub-device or connection struct. The }(hjhhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hjh]hstruct v4l2_async_connection}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubhf shall be the first member of the driver’s async struct, i.e. both begin at the same memory address.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhj,hKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj2ubeh}(h]h ]h"]h$]h&]uh1jhjubjF)}(h**Description**h]ju)}(hjKh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjIubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(hAllocate a fwnode-matched asc of size asc_struct_size, and add it to the notifiers **asc_list**. The function also gets a reference of the fwnode which is released later at notifier cleanup time.h](hSAllocate a fwnode-matched asc of size asc_struct_size, and add it to the notifiers }(hjahhhNhNubju)}(h **asc_list**h]hasc_list}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jthjaubhd. The function also gets a reference of the fwnode which is released later at notifier cleanup time.}(hjahhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌)v4l2_async_nf_add_fwnode_remote (C macro)!c.v4l2_async_nf_add_fwnode_remotehNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_nf_add_fwnode_remoteh]h)}(hv4l2_async_nf_add_fwnode_remoteh]j)}(hv4l2_async_nf_add_fwnode_remoteh]j)}(hjh]hv4l2_async_nf_add_fwnode_remote}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubah}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhKubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhKhjhhubjA)}(hhh]h}(h]h ]h"]h$]h&]uh1j@hjhhhjhKubeh}(h]h ](j_macroeh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjF)}(h8``v4l2_async_nf_add_fwnode_remote (notifier, ep, type)``h]j)}(hjh]h4v4l2_async_nf_add_fwnode_remote (notifier, ep, type)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhhhhubj)}(hQAllocate and add a fwnode remote async subdev to the notifier's master asc_list. h]jF)}(hPAllocate and add a fwnode remote async subdev to the notifier's master asc_list.h]hRAllocate and add a fwnode remote async subdev to the notifier’s master asc_list.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhhhhubjk)}(hXe**Parameters** ``notifier`` pointer to :c:type:`struct v4l2_async_notifier ` ``ep`` local endpoint pointing to the remote connection to be matched, pointer to :c:type:`struct fwnode_handle ` ``type`` Type of the driver's async connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async connection struct, i.e. both begin at the same memory address. **Description** Gets the remote endpoint of a given local endpoint, set it up for fwnode matching and adds the async connection to the notifier's **asc_list**. The function also gets a reference of the fwnode which is released later at notifier cleanup time. This is just like v4l2_async_nf_add_fwnode(), but with the exception that the fwnode refers to a local endpoint, not the remote one.h](jF)}(h**Parameters**h]ju)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh](j)}(hS``notifier`` pointer to :c:type:`struct v4l2_async_notifier ` h](j)}(h ``notifier``h]j)}(hj,h]hnotifier}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj&ubj)}(hhh]jF)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjEhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjOh]hstruct v4l2_async_notifier}(hjQhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjAhKhjEubeh}(h]h ]h"]h$]h&]uh1jEhjAhKhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhKhj#ubj)}(h``ep`` local endpoint pointing to the remote connection to be matched, pointer to :c:type:`struct fwnode_handle ` h](j)}(h``ep``h]j)}(hjh]hep}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj~ubj)}(hhh]jF)}(hylocal endpoint pointing to the remote connection to be matched, pointer to :c:type:`struct fwnode_handle `h](hKlocal endpoint pointing to the remote connection to be matched, pointer to }(hjhhhNhNubh)}(h.:c:type:`struct fwnode_handle `h]j)}(hjh]hstruct fwnode_handle}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj fwnode_handleuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj#ubj)}(h``type`` Type of the driver's async connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async connection struct, i.e. both begin at the same memory address. h](j)}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(hType of the driver's async connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async connection struct, i.e. both begin at the same memory address.h](h4Type of the driver’s async connection struct. The }(hjhhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hjh]hstruct v4l2_async_connection}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubhq shall be the first member of the driver’s async connection struct, i.e. both begin at the same memory address.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj#ubeh}(h]h ]h"]h$]h&]uh1jhjubjF)}(h**Description**h]ju)}(hj<h]h Description}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj:ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(hGets the remote endpoint of a given local endpoint, set it up for fwnode matching and adds the async connection to the notifier's **asc_list**. The function also gets a reference of the fwnode which is released later at notifier cleanup time.h](hGets the remote endpoint of a given local endpoint, set it up for fwnode matching and adds the async connection to the notifier’s }(hjRhhhNhNubju)}(h **asc_list**h]hasc_list}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjRubhd. The function also gets a reference of the fwnode which is released later at notifier cleanup time.}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(hThis is just like v4l2_async_nf_add_fwnode(), but with the exception that the fwnode refers to a local endpoint, not the remote one.h]hThis is just like v4l2_async_nf_add_fwnode(), but with the exception that the fwnode refers to a local endpoint, not the remote one.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌v4l2_async_nf_add_i2c (C macro)c.v4l2_async_nf_add_i2chNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_nf_add_i2ch]h)}(hv4l2_async_nf_add_i2ch]j)}(hv4l2_async_nf_add_i2ch]j)}(hjh]hv4l2_async_nf_add_i2c}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubah}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhKubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhKhjhhubjA)}(hhh]h}(h]h ]h"]h$]h&]uh1j@hjhhhjhKubeh}(h]h ](j_macroeh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjF)}(h<``v4l2_async_nf_add_i2c (notifier, adapter, address, type)``h]j)}(hjh]h8v4l2_async_nf_add_i2c (notifier, adapter, address, type)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhhhhubj)}(hHAllocate and add an i2c async subdev to the notifier's master asc_list. h]jF)}(hGAllocate and add an i2c async subdev to the notifier's master asc_list.h]hIAllocate and add an i2c async subdev to the notifier’s master asc_list.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhhhhubjk)}(hX **Parameters** ``notifier`` pointer to :c:type:`struct v4l2_async_notifier ` ``adapter`` I2C adapter ID to be matched ``address`` I2C address of connection to be matched ``type`` Type of the driver's async connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async connection struct, i.e. both begin at the same memory address. **Description** Same as v4l2_async_nf_add_fwnode() but for I2C matched connections.h](jF)}(h**Parameters**h]ju)}(hj h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthj ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh](j)}(hS``notifier`` pointer to :c:type:`struct v4l2_async_notifier ` h](j)}(h ``notifier``h]j)}(hj,h]hnotifier}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj&ubj)}(hhh]jF)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjEhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjOh]hstruct v4l2_async_notifier}(hjQhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjAhKhjEubeh}(h]h ]h"]h$]h&]uh1jEhjAhKhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhKhj#ubj)}(h)``adapter`` I2C adapter ID to be matched h](j)}(h ``adapter``h]j)}(hjh]hadapter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj~ubj)}(hhh]jF)}(hI2C adapter ID to be matchedh]hI2C adapter ID to be matched}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj~ubeh}(h]h ]h"]h$]h&]uh1jhjhKhj#ubj)}(h4``address`` I2C address of connection to be matched h](j)}(h ``address``h]j)}(hjh]haddress}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(h'I2C address of connection to be matchedh]h'I2C address of connection to be matched}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj#ubj)}(h``type`` Type of the driver's async connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async connection struct, i.e. both begin at the same memory address. h](j)}(h``type``h]j)}(hjh]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(hType of the driver's async connection struct. The :c:type:`struct v4l2_async_connection ` shall be the first member of the driver's async connection struct, i.e. both begin at the same memory address.h](h4Type of the driver’s async connection struct. The }(hjhhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hjh]hstruct v4l2_async_connection}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubhq shall be the first member of the driver’s async connection struct, i.e. both begin at the same memory address.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhj6hKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhj#ubeh}(h]h ]h"]h$]h&]uh1jhjubjF)}(h**Description**h]ju)}(hjUh]h Description}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjSubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(hCSame as v4l2_async_nf_add_fwnode() but for I2C matched connections.h]hCSame as v4l2_async_nf_add_fwnode() but for I2C matched connections.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌+v4l2_async_subdev_endpoint_add (C function) c.v4l2_async_subdev_endpoint_addhNtauh1hhhhhhNhNubh)}(hhh](h)}(hYint v4l2_async_subdev_endpoint_add (struct v4l2_subdev *sd, struct fwnode_handle *fwnode)h]h)}(hXint v4l2_async_subdev_endpoint_add(struct v4l2_subdev *sd, struct fwnode_handle *fwnode)h](j4 )}(hinth]hint}(hjhhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj)}(hv4l2_async_subdev_endpoint_addh]j)}(hv4l2_async_subdev_endpoint_addh]hv4l2_async_subdev_endpoint_add}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhjhMubjl )}(h6(struct v4l2_subdev *sd, struct fwnode_handle *fwnode)h](jr )}(hstruct v4l2_subdev *sdh](h)}(hjYh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjmodnameN classnameNjj)}j]j )}j jsb c.v4l2_async_subdev_endpoint_addasbuh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj )}(hj h]h*}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hsdh]hsd}(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjubjr )}(hstruct fwnode_handle *fwnodeh](h)}(hjYh]hstruct}(hjIhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjEubh)}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubh)}(hhh]j)}(h fwnode_handleh]h fwnode_handle}(hjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjimodnameN classnameNjj)}j]j c.v4l2_async_subdev_endpoint_addasbuh1hhjEubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjEubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEubj)}(hfwnodeh]hfwnode}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjEubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjubeh}(h]h ]h"]h$]h&]hhuh1jk hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhMubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhMhjhhubjA)}(hhh]jF)}(h8Add an endpoint fwnode to async sub-device matching listh]h8Add an endpoint fwnode to async sub-device matching list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjhhubah}(h]h ]h"]h$]h&]uh1j@hjhhhjhMubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(hX**Parameters** ``struct v4l2_subdev *sd`` the sub-device ``struct fwnode_handle *fwnode`` the endpoint fwnode to match **Description** Add a fwnode to the async sub-device's matching list. This allows registering multiple async sub-devices from a single device. Note that calling v4l2_subdev_cleanup() as part of the sub-device's cleanup if endpoints have been added to the sub-device's fwnode matching list. Returns an error on failure, 0 on success.h](jF)}(h**Parameters**h]ju)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh](j)}(h*``struct v4l2_subdev *sd`` the sub-device h](j)}(h``struct v4l2_subdev *sd``h]j)}(hj h]hstruct v4l2_subdev *sd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubj)}(hhh]jF)}(hthe sub-deviceh]hthe sub-device}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj hKhj!ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hKhjubj)}(h>``struct fwnode_handle *fwnode`` the endpoint fwnode to match h](j)}(h ``struct fwnode_handle *fwnode``h]j)}(hjDh]hstruct fwnode_handle *fwnode}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj>ubj)}(hhh]jF)}(hthe endpoint fwnode to matchh]hthe endpoint fwnode to match}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhjYhKhjZubah}(h]h ]h"]h$]h&]uh1jhj>ubeh}(h]h ]h"]h$]h&]uh1jhjYhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubjF)}(h**Description**h]ju)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthj}ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(h~Add a fwnode to the async sub-device's matching list. This allows registering multiple async sub-devices from a single device.h]hAdd a fwnode to the async sub-device’s matching list. This allows registering multiple async sub-devices from a single device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjF)}(hNote that calling v4l2_subdev_cleanup() as part of the sub-device's cleanup if endpoints have been added to the sub-device's fwnode matching list.h]hNote that calling v4l2_subdev_cleanup() as part of the sub-device’s cleanup if endpoints have been added to the sub-device’s fwnode matching list.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjubjF)}(h*Returns an error on failure, 0 on success.h]h*Returns an error on failure, 0 on success.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌)v4l2_async_connection_unique (C function)c.v4l2_async_connection_uniquehNtauh1hhhhhhNhNubh)}(hhh](h)}(hTstruct v4l2_async_connection * v4l2_async_connection_unique (struct v4l2_subdev *sd)h]h)}(hRstruct v4l2_async_connection *v4l2_async_connection_unique(struct v4l2_subdev *sd)h](h)}(hjYh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubh)}(hhh]j)}(hv4l2_async_connectionh]hv4l2_async_connection}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjmodnameN classnameNjj)}j]j )}j v4l2_async_connection_uniquesbc.v4l2_async_connection_uniqueasbuh1hhjhhhjhMubh)}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj )}(hj h]h*}(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj)}(hv4l2_async_connection_uniqueh]j)}(hjh]hv4l2_async_connection_unique}(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj=ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhjhMubjl )}(h(struct v4l2_subdev *sd)h]jr )}(hstruct v4l2_subdev *sdh](h)}(hjYh]hstruct}(hj\hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjXubh)}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetj|modnameN classnameNjj)}j]jc.v4l2_async_connection_uniqueasbuh1hhjXubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjXubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjXubj)}(hsdh]hsd}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjXubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjTubah}(h]h ]h"]h$]h&]hhuh1jk hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhMubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhMhjhhubjA)}(hhh]jF)}(h_return a unique :c:type:`struct v4l2_async_connection ` for a sub-deviceh](hreturn a unique }(hjhhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hjh]hstruct v4l2_async_connection}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjj)}j]jc.v4l2_async_connection_uniqueasbjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubh for a sub-device}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM hjhhubah}(h]h ]h"]h$]h&]uh1j@hjhhhjhMubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(h**Parameters** ``struct v4l2_subdev *sd`` the sub-device **Description** Return an async connection for a sub-device, when there is a single one only.h](jF)}(h**Parameters**h]ju)}(hj(h]h Parameters}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj&ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhj"ubj)}(hhh]j)}(h*``struct v4l2_subdev *sd`` the sub-device h](j)}(h``struct v4l2_subdev *sd``h]j)}(hjGh]hstruct v4l2_subdev *sd}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM hjAubj)}(hhh]jF)}(hthe sub-deviceh]hthe sub-device}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj\hM hj]ubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1jhj\hM hj>ubah}(h]h ]h"]h$]h&]uh1jhj"ubjF)}(h**Description**h]ju)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhj"ubjF)}(hMReturn an async connection for a sub-device, when there is a single one only.h]hMReturn an async connection for a sub-device, when there is a single one only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌#v4l2_async_nf_register (C function)c.v4l2_async_nf_registerhNtauh1hhhhhhNhNubh)}(hhh](h)}(hAint v4l2_async_nf_register (struct v4l2_async_notifier *notifier)h]h)}(h@int v4l2_async_nf_register(struct v4l2_async_notifier *notifier)h](j4 )}(hinth]hint}(hjhhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhMubj)}(hv4l2_async_nf_registerh]j)}(hv4l2_async_nf_registerh]hv4l2_async_nf_register}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjhhhjhMubjl )}(h&(struct v4l2_async_notifier *notifier)h]jr )}(h$struct v4l2_async_notifier *notifierh](h)}(hjYh]hstruct}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(hv4l2_async_notifierh]hv4l2_async_notifier}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetj$modnameN classnameNjj)}j]j )}j jsbc.v4l2_async_nf_registerasbuh1hhjubh)}(h h]h }(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj )}(hj h]h*}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hnotifierh]hnotifier}(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjubah}(h]h ]h"]h$]h&]hhuh1jk hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjhhhjhMubah}(h]jah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjhMhjhhubjA)}(hhh]jF)}(h+registers a subdevice asynchronous notifierh]h+registers a subdevice asynchronous notifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j@hjhhhjhMubeh}(h]h ](j_functioneh"]h$]h&]jdj_jejjfjjgjhjiuh1hhhhhhNhNubjk)}(h**Parameters** ``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier `h](jF)}(h**Parameters**h]ju)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jthjubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjubj)}(hhh]j)}(hn``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier `h](j)}(h(``struct v4l2_async_notifier *notifier``h]j)}(hjh]h$struct v4l2_async_notifier *notifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjubj)}(hhh]jF)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjh]hstruct v4l2_async_notifier}(hjhhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjubeh}(h]h ]h"]h$]h&]uh1jEhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌%v4l2_async_nf_unregister (C function)c.v4l2_async_nf_unregisterhNtauh1hhhhhhNhNubh)}(hhh](h)}(hDvoid v4l2_async_nf_unregister (struct v4l2_async_notifier *notifier)h]h)}(hCvoid v4l2_async_nf_unregister(struct v4l2_async_notifier *notifier)h](j4 )}(hvoidh]hvoid}(hjAhhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hj=hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM!ubh)}(h h]h }(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj=hhhjOhM!ubj)}(hv4l2_async_nf_unregisterh]j)}(hv4l2_async_nf_unregisterh]hv4l2_async_nf_unregister}(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj^ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj=hhhjOhM!ubjl )}(h&(struct v4l2_async_notifier *notifier)h]jr )}(h$struct v4l2_async_notifier *notifierh](h)}(hjYh]hstruct}(hj~hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjzubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjzubh)}(hhh]j)}(hv4l2_async_notifierh]hv4l2_async_notifier}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetjmodnameN classnameNjj)}j]j )}j jdsbc.v4l2_async_nf_unregisterasbuh1hhjzubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjzubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj)}(hnotifierh]hnotifier}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjvubah}(h]h ]h"]h$]h&]hhuh1jk hj=hhhjOhM!ubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj9hhhjOhM!ubah}(h]j4ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjOhM!hj6hhubjA)}(hhh]jF)}(h-unregisters a subdevice asynchronous notifierh]h-unregisters a subdevice asynchronous notifier}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjhhubah}(h]h ]h"]h$]h&]uh1j@hj6hhhjOhM!ubeh}(h]h ](j_functioneh"]h$]h&]jdj_jej jfj jgjhjiuh1hhhhhhNhNubjk)}(h**Parameters** ``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier `h](jF)}(h**Parameters**h]ju)}(hj# h]h Parameters}(hj% hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj! ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM hj ubj)}(hhh]j)}(hn``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier `h](j)}(h(``struct v4l2_async_notifier *notifier``h]j)}(hjB h]h$struct v4l2_async_notifier *notifier}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM"hj< ubj)}(hhh]jF)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hj[ hhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hje h]hstruct v4l2_async_notifier}(hjg hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjc ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhj[ ubeh}(h]h ]h"]h$]h&]uh1jEhj hMhjX ubah}(h]h ]h"]h$]h&]uh1jhj< ubeh}(h]h ]h"]h$]h&]uh1jhjW hM"hj9 ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌"v4l2_async_nf_cleanup (C function)c.v4l2_async_nf_cleanuphNtauh1hhhhhhNhNubh)}(hhh](h)}(hAvoid v4l2_async_nf_cleanup (struct v4l2_async_notifier *notifier)h]h)}(h@void v4l2_async_nf_cleanup(struct v4l2_async_notifier *notifier)h](j4 )}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM1ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hM1ubj)}(hv4l2_async_nf_cleanuph]j)}(hv4l2_async_nf_cleanuph]hv4l2_async_nf_cleanup}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj hhhj hM1ubjl )}(h&(struct v4l2_async_notifier *notifier)h]jr )}(h$struct v4l2_async_notifier *notifierh](h)}(hjYh]hstruct}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj ubh)}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j)}(hv4l2_async_notifierh]hv4l2_async_notifier}(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetj!modnameN classnameNjj)}j]j )}j j sbc.v4l2_async_nf_cleanupasbuh1hhj ubh)}(h h]h }(hj6!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj )}(hj h]h*}(hjD!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj)}(hnotifierh]hnotifier}(hjQ!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hj ubah}(h]h ]h"]h$]h&]hhuh1jk hj hhhj hM1ubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj hhhj hM1ubah}(h]j ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj hM1hj hhubjA)}(hhh]jF)}(hclean up notifier resourcesh]hclean up notifier resources}(hj{!hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM$hjx!hhubah}(h]h ]h"]h$]h&]uh1j@hj hhhj hM1ubeh}(h]h ](j_functioneh"]h$]h&]jdj_jej!jfj!jgjhjiuh1hhhhhhNhNubjk)}(hXY**Parameters** ``struct v4l2_async_notifier *notifier`` the notifier the resources of which are to be cleaned up **Description** Release memory resources related to a notifier, including the async connections allocated for the purposes of the notifier but not the notifier itself. The user is responsible for calling this function to clean up the notifier after calling v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c(). There is no harm from calling v4l2_async_nf_cleanup() in other cases as long as its memory has been zeroed after it has been allocated.h](jF)}(h**Parameters**h]ju)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj!ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM(hj!ubj)}(hhh]j)}(hb``struct v4l2_async_notifier *notifier`` the notifier the resources of which are to be cleaned up h](j)}(h(``struct v4l2_async_notifier *notifier``h]j)}(hj!h]h$struct v4l2_async_notifier *notifier}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM%hj!ubj)}(hhh]jF)}(h8the notifier the resources of which are to be cleaned uph]h8the notifier the resources of which are to be cleaned up}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhj!hM%hj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj!hM%hj!ubah}(h]h ]h"]h$]h&]uh1jhj!ubjF)}(h**Description**h]ju)}(hj!h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj!ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM'hj!ubjF)}(hXJRelease memory resources related to a notifier, including the async connections allocated for the purposes of the notifier but not the notifier itself. The user is responsible for calling this function to clean up the notifier after calling v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().h]hXJRelease memory resources related to a notifier, including the async connections allocated for the purposes of the notifier but not the notifier itself. The user is responsible for calling this function to clean up the notifier after calling v4l2_async_nf_add_fwnode_remote(), v4l2_async_nf_add_fwnode() or v4l2_async_nf_add_i2c().}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM'hj!ubjF)}(hThere is no harm from calling v4l2_async_nf_cleanup() in other cases as long as its memory has been zeroed after it has been allocated.h]hThere is no harm from calling v4l2_async_nf_cleanup() in other cases as long as its memory has been zeroed after it has been allocated.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM-hj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌$v4l2_async_register_subdev (C macro)c.v4l2_async_register_subdevhNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_register_subdevh]h)}(hv4l2_async_register_subdevh]j)}(hv4l2_async_register_subdevh]j)}(hjE"h]hv4l2_async_register_subdev}(hjO"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjK"ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjG"hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM9ubah}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjC"hhhjb"hM9ubah}(h]j>"ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhjb"hM9hj@"hhubjA)}(hhh]h}(h]h ]h"]h$]h&]uh1j@hj@"hhhjb"hM9ubeh}(h]h ](j_macroeh"]h$]h&]jdj_jej{"jfj{"jgjhjiuh1hhhhhhNhNubjF)}(h#``v4l2_async_register_subdev (sd)``h]j)}(hj"h]hv4l2_async_register_subdev (sd)}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM;hhhhubj)}(h?registers a sub-device to the asynchronous subdevice framework h]jF)}(h>registers a sub-device to the asynchronous subdevice frameworkh]h>registers a sub-device to the asynchronous subdevice framework}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM4hj"ubah}(h]h ]h"]h$]h&]uh1jhj"hM4hhhhubjk)}(hN**Parameters** ``sd`` pointer to :c:type:`struct v4l2_subdev `h](jF)}(h**Parameters**h]ju)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj"ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM8hj"ubj)}(hhh]j)}(h<``sd`` pointer to :c:type:`struct v4l2_subdev `h](j)}(h``sd``h]j)}(hj"h]hsd}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM:hj"ubj)}(hhh]jF)}(h5pointer to :c:type:`struct v4l2_subdev `h](h pointer to }(hj"hhhNhNubh)}(h*:c:type:`struct v4l2_subdev `h]j)}(hj"h]hstruct v4l2_subdev}(hj"hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM7hj"ubeh}(h]h ]h"]h$]h&]uh1jEhj#hM7hj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ]h"]h$]h&]uh1jhj"hM:hj"ubah}(h]h ]h"]h$]h&]uh1jhj"ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌.v4l2_async_register_subdev_sensor (C function)#c.v4l2_async_register_subdev_sensorhNtauh1hhhhhhNhNubh)}(hhh](h)}(h>int v4l2_async_register_subdev_sensor (struct v4l2_subdev *sd)h]h)}(h=int v4l2_async_register_subdev_sensor(struct v4l2_subdev *sd)h](j4 )}(hinth]hint}(hjN#hhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hjJ#hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMPubh)}(h h]h }(hj]#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjJ#hhhj\#hMPubj)}(h!v4l2_async_register_subdev_sensorh]j)}(h!v4l2_async_register_subdev_sensorh]h!v4l2_async_register_subdev_sensor}(hjo#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjk#ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhjJ#hhhj\#hMPubjl )}(h(struct v4l2_subdev *sd)h]jr )}(hstruct v4l2_subdev *sdh](h)}(hjYh]hstruct}(hj#hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj#ubh)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetj#modnameN classnameNjj)}j]j )}j jq#sb#c.v4l2_async_register_subdev_sensorasbuh1hhj#ubh)}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubj )}(hj h]h*}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj)}(hsdh]hsd}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hj#ubah}(h]h ]h"]h$]h&]hhuh1jk hjJ#hhhj\#hMPubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hjF#hhhj\#hMPubah}(h]jA#ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj\#hMPhjC#hhubjA)}(hhh]jF)}(huregisters a sensor sub-device to the asynchronous sub-device framework and parse set up common sensor related devicesh]huregisters a sensor sub-device to the asynchronous sub-device framework and parse set up common sensor related devices}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM>hj $hhubah}(h]h ]h"]h$]h&]uh1j@hjC#hhhj\#hMPubeh}(h]h ](j_functioneh"]h$]h&]jdj_jej&$jfj&$jgjhjiuh1hhhhhhNhNubjk)}(hX0**Parameters** ``struct v4l2_subdev *sd`` pointer to struct :c:type:`v4l2_subdev` **Description** This function is just like v4l2_async_register_subdev() with the exception that calling it will also parse firmware interfaces for remote references using v4l2_async_nf_parse_fwnode_sensor() and registers the async sub-devices. The sub-device is similarly unregistered by calling v4l2_async_unregister_subdev(). While registered, the subdev module is marked as in-use. An error is returned if the module is no longer loaded on any attempts to register it.h](jF)}(h**Parameters**h]ju)}(hj0$h]h Parameters}(hj2$hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj.$ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMBhj*$ubj)}(hhh]j)}(hC``struct v4l2_subdev *sd`` pointer to struct :c:type:`v4l2_subdev` h](j)}(h``struct v4l2_subdev *sd``h]j)}(hjO$h]hstruct v4l2_subdev *sd}(hjQ$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM$ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMChjI$ubj)}(hhh]jF)}(h'pointer to struct :c:type:`v4l2_subdev`h](hpointer to struct }(hjh$hhhNhNubh)}(h:c:type:`v4l2_subdev`h]j)}(hjr$h]h v4l2_subdev}(hjt$hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhjp$ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhjd$hMChjh$ubeh}(h]h ]h"]h$]h&]uh1jEhjd$hMChje$ubah}(h]h ]h"]h$]h&]uh1jhjI$ubeh}(h]h ]h"]h$]h&]uh1jhjd$hMChjF$ubah}(h]h ]h"]h$]h&]uh1jhj*$ubjF)}(h**Description**h]ju)}(hj$h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj$ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMEhj*$ubjF)}(hX7This function is just like v4l2_async_register_subdev() with the exception that calling it will also parse firmware interfaces for remote references using v4l2_async_nf_parse_fwnode_sensor() and registers the async sub-devices. The sub-device is similarly unregistered by calling v4l2_async_unregister_subdev().h]hX7This function is just like v4l2_async_register_subdev() with the exception that calling it will also parse firmware interfaces for remote references using v4l2_async_nf_parse_fwnode_sensor() and registers the async sub-devices. The sub-device is similarly unregistered by calling v4l2_async_unregister_subdev().}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMEhj*$ubjF)}(h8While registered, the subdev module is marked as in-use.h]h8While registered, the subdev module is marked as in-use.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMKhj*$ubjF)}(hVAn error is returned if the module is no longer loaded on any attempts to register it.h]hVAn error is returned if the module is no longer loaded on any attempts to register it.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMMhj*$ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h֌)v4l2_async_unregister_subdev (C function)c.v4l2_async_unregister_subdevhNtauh1hhhhhhNhNubh)}(hhh](h)}(h:void v4l2_async_unregister_subdev (struct v4l2_subdev *sd)h]h)}(h9void v4l2_async_unregister_subdev(struct v4l2_subdev *sd)h](j4 )}(hvoidh]hvoid}(hj %hhhNhNubah}(h]h ]j@ ah"]h$]h&]uh1j3 hj%hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMYubh)}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj%hhhj%hMYubj)}(hv4l2_async_unregister_subdevh]j)}(hv4l2_async_unregister_subdevh]hv4l2_async_unregister_subdev}(hj-%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhj)%ubah}(h]h ](j'j(eh"]h$]h&]hhuh1jhj%hhhj%hMYubjl )}(h(struct v4l2_subdev *sd)h]jr )}(hstruct v4l2_subdev *sdh](h)}(hjYh]hstruct}(hjI%hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjE%ubh)}(h h]h }(hjV%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjE%ubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hjg%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjd%ubah}(h]h ]h"]h$]h&] refdomainj_reftypej reftargetji%modnameN classnameNjj)}j]j )}j j/%sbc.v4l2_async_unregister_subdevasbuh1hhjE%ubh)}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjE%ubj )}(hj h]h*}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjE%ubj)}(hsdh]hsd}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1jhjE%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jq hjA%ubah}(h]h ]h"]h$]h&]hhuh1jk hj%hhhj%hMYubeh}(h]h ]h"]h$]h&]hhj2uh1hj3j4hj%hhhj%hMYubah}(h]j$ah ](j8j9eh"]h$]h&]j=j>)j?huh1hhj%hMYhj%hhubjA)}(hhh]jF)}(h@unregisters a sub-device to the asynchronous subdevice frameworkh]h@unregisters a sub-device to the asynchronous subdevice framework}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMThj%hhubah}(h]h ]h"]h$]h&]uh1j@hj%hhhj%hMYubeh}(h]h ](j_functioneh"]h$]h&]jdj_jej%jfj%jgjhjiuh1hhhhhhNhNubjk)}(hb**Parameters** ``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev `h](jF)}(h**Parameters**h]ju)}(hj%h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jthj%ubah}(h]h ]h"]h$]h&]uh1jEhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMXhj%ubj)}(hhh]j)}(hP``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev `h](j)}(h``struct v4l2_subdev *sd``h]j)}(hj &h]hstruct v4l2_subdev *sd}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj &ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMZhj&ubj)}(hhh]jF)}(h5pointer to :c:type:`struct v4l2_subdev `h](h pointer to }(hj&&hhhNhNubh)}(h*:c:type:`struct v4l2_subdev `h]j)}(hj0&h]hstruct v4l2_subdev}(hj2&hhhNhNubah}(h]h ](jj_c-typeeh"]h$]h&]uh1jhj.&ubah}(h]h ]h"]h$]h&]refdocj refdomainj_reftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMWhj&&ubeh}(h]h ]h"]h$]h&]uh1jEhjM&hMWhj#&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj"&hMZhj&ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1jjhhhhhNhNubeh}(h]v4l2-async-kapiah ]h"]v4l2 async kapiah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj&error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}jr&jo&s nametypes}jr&sh}(jo&hhhjJjOjWj\jjjd ji j j j& j+ jjj(j-jjjjjjjjjjjjj4j9j j j>"jC"jA#jF#j$j%u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.