%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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget//translations/pt_BR/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}(hjhhhNhNubah}(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 }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhhhhhjhKubh desc_name)}(hv4l2_async_match_typeh]h desc_sig_name)}(hhh]hv4l2_async_match_type}(hj*hhhNhNubah}(h]h ]nah"]h$]h&]uh1j(hj$ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j"hhhhhjhKubeh}(h]h ]h"]h$]h&]hhƌ add_permalinkuh1hsphinx_line_type declaratorhhhhhjhKubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhjhKhhhhubh 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}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjVhhubah}(h]h ]h"]h$]h&]uh1jThhhhhjhKubeh}(h]h ](cenumeh"]h$]h&]domainjsobjtypejtdesctypejtnoindex 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](jZ)}(h **Constants**h]hstrong)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubhdefinition_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]jZ)}(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&]uh1jYhjhKhjubah}(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]jZ)}(hMatch will use firmware nodeh]hMatch will use firmware node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/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&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubjZ)}(h**Description**h]j)}(hj-h]h Description}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK"hhhhubjZ)}(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.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/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](j)}(hstructh]hstruct}(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjghhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK!ubj)}(h h]h }(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjghhhjyhK!ubj#)}(hv4l2_async_match_desch]j))}(hjeh]hv4l2_async_match_desc}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjghhhjyhK!ubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjchhhjyhK!ubah}(h]j^ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjyhK!hj`hhubjU)}(hhh]jZ)}(h"async connection match informationh]h"async connection match information}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK%hjhhubah}(h]h ]h"]h$]h&]uh1jThj`hhhjyhK!ubeh}(h]h ](jsstructeh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/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+hjubjZ)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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)}(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.hhK(hjubj)}(hhh]jZ)}(htype of match that will be usedh]htype of match that will be used}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhj2hK(hj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj2hK(hjubj)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j)}(hjVh]h{unnamed_union}}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjPubj)}(hhh]jZ)}(h anonymoush]h anonymous}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjkhKhjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKhjubj)}(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)}(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.hhK*hjubj)}(hhh]jZ)}(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 ](xrefjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocdriver-api/media/v4l2-async refdomainjsreftypetype 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 }(hjhhhNhNubj)}(h**match_type**h]h match_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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&]uh1jYhjhK)hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(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}(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]jZ)}(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 }(hj4hhhNhNubj)}(h**match.i2c.adapter_id**h]hmatch.i2c.adapter_id}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh and }(hj4hhhNhNubj)}(h**match.i2c.address**h]hmatch.i2c.address}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh should be matched. Used if }(hj4hhhNhNubj)}(h**match_type**h]h match_type}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh is }(hj4hhhNhNubj)}(h``V4L2_ASYNC_MATCH_TYPE_I2C``h]hV4L2_ASYNC_MATCH_TYPE_I2C}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK+hj1ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj0hK.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]jZ)}(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 }(hjhhhNhNubj)}(h**match_type**h]h match_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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&]uh1jYhe/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]jZ)}(hSI2C address to be matched. Used if **match_type** is ``V4L2_ASYNC_MATCH_TYPE_I2C``.h](h#I2C address to be matched. Used if }(hjhhhNhNubj)}(h**match_type**h]h match_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is }(hjhhhNhNubj)}(h``V4L2_ASYNC_MATCH_TYPE_I2C``h]hV4L2_ASYNC_MATCH_TYPE_I2C}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhjhK2hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhK2hjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](j)}(hjmh]hstruct}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjthhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK9ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjthhhjhK9ubj#)}(hv4l2_async_connectionh]j))}(hjrh]hv4l2_async_connection}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjthhhjhK9ubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjphhhjhK9ubah}(h]jkah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhK9hjmhhubjU)}(hhh]jZ)}(h6sub-device connection descriptor, as known to a bridgeh]h6sub-device connection descriptor, as known to a bridge}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKAhjhhubah}(h]h ]h"]h$]h&]uh1jThjmhhhjhK9ubeh}(h]h ](jsstructeh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/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.hhKGhjubjZ)}(h **Members**h]j)}(hjh]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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)}(hj'h]hmatch}(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.hhKEhj!ubj)}(hhh]jZ)}(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&]uh1jYhj<hKEhj=ubah}(h]h ]h"]h$]h&]uh1jhj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hKEhjubj)}(h=``notifier`` the async notifier the connection is related to h](j)}(h ``notifier``h]j)}(hj`h]hnotifier}(hjbhhhNhNubah}(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.hhKFhjZubj)}(hhh]jZ)}(h/the async notifier the connection is related toh]h/the async notifier the connection is related to}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjuhKFhjvubah}(h]h ]h"]h$]h&]uh1jhjZubeh}(h]h ]h"]h$]h&]uh1jhjuhKFhjubj)}(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]jZ)}(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 }(hjhhhNhNubj)}(h**waiting_list**h]h waiting_list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh or }(hjhhhNhNubj)}(h **done_list**h]h done_list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jYhe/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&]uh1jhjhKHhjubj)}(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]jZ)}(h/entry in struct v4l2_async_subdev.asc_list listh]h/entry in struct v4l2_async_subdev.asc_list list}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjhKIhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKIhjubj)}(h``sd`` the related sub-deviceh](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.hhKIhj&ubj)}(hhh]jZ)}(hthe related sub-deviceh]hthe related sub-device}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKJhjBubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhjAhKIhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubjZ)}(h**Description**h]j)}(hjoh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKMhhhhubjZ)}(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 }(hjhhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hjh]hstruct v4l2_async_connection}(hjhhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKJhjubh as its first member.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhjhKJhhhhubh)}(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](j)}(hjmh]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKQubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKQubj#)}(hv4l2_async_notifier_operationsh]j))}(hjh]hv4l2_async_notifier_operations}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhjhKQubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhKQubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhKQhjhhubjU)}(hhh]jZ)}(h%Asynchronous V4L2 notifier operationsh]h%Asynchronous V4L2 notifier operations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKXhjhhubah}(h]h ]h"]h$]h&]uh1jThjhhhjhKQubeh}(h]h ](jsstructeh"]h$]h&]jxjsjyj*jzj*j{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubh:}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK\hj.ubj)}(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); };}hjOsbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK^hj.ubjZ)}(h **Members**h]j)}(hj`h]hMembers}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKehj.ubj)}(hhh](j)}(h>``bound`` a sub-device has been bound by the given connection h](j)}(h ``bound``h]j)}(hjh]hbound}(hjhhhNhNubah}(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.hhKZhjyubj)}(hhh]jZ)}(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&]uh1jYhjhKZhjubah}(h]h ]h"]h$]h&]uh1jhjyubeh}(h]h ]h"]h$]h&]uh1jhjhKZhjvubj)}(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]jZ)}(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&]uh1jYhe/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\hjvubj)}(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]jZ)}(ha subdevice is leavingh]ha subdevice is leaving}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhj hK]hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj hK]hjvubj)}(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]jZ)}(hthe asc is about to be freedh]hthe asc is about to be freed}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK^hjA ubah}(h]h ]h"]h$]h&]uh1jhj% ubeh}(h]h ]h"]h$]h&]uh1jhj@ hK]hjvubeh}(h]h ]h"]h$]h&]uh1jhj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hv4l2_async_notifier (C struct)c.v4l2_async_notifierhNtauh1hhhhhhNhNubh)}(hhh](h)}(hv4l2_async_notifierh]h)}(hstruct v4l2_async_notifierh](j)}(hjmh]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKdubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKdubj#)}(hv4l2_async_notifierh]j))}(hj h]hv4l2_async_notifier}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj ubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hj hhhj hKdubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhj} hhhj hKdubah}(h]jx ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhj hKdhjz hhubjU)}(hhh]jZ)}(hv4l2_device notifier datah]hv4l2_device notifier data}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKkhj hhubah}(h]h ]h"]h$]h&]uh1jThjz hhhj hKdubeh}(h]h ](jsstructeh"]h$]h&]jxjsjyj jzj j{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/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 ubjZ)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jYhe/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)}(hj4 h]hops}(hj6 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2 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]jZ)}(hnotifier operationsh]hnotifier operations}(hjM hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjI hKnhjJ ubah}(h]h ]h"]h$]h&]uh1jhj. ubeh}(h]h ]h"]h$]h&]uh1jhjI hKnhj+ ubj)}(h>``v4l2_dev`` v4l2_device of the root notifier, NULL otherwise h](j)}(h ``v4l2_dev``h]j)}(hjm h]hv4l2_dev}(hjo hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKohjg ubj)}(hhh]jZ)}(h0v4l2_device of the root notifier, NULL otherwiseh]h0v4l2_device of the root notifier, NULL otherwise}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhj hKohj ubah}(h]h ]h"]h$]h&]uh1jhjg ubeh}(h]h ]h"]h$]h&]uh1jhj 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]jZ)}(h7sub-device that registered the notifier, NULL otherwiseh]h7sub-device that registered the notifier, NULL otherwise}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhj 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]jZ)}(hparent notifierh]hparent notifier}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhj 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]jZ)}(h?list of struct v4l2_async_connection, waiting for their driversh]h?list of struct v4l2_async_connection, waiting for their drivers}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/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)}(hjR h]h done_list}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjP ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKthjL ubj)}(hhh]jZ)}(h*list of struct v4l2_subdev, already probedh]h*list of struct v4l2_subdev, already probed}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjg hKthjh ubah}(h]h ]h"]h$]h&]uh1jhjL ubeh}(h]h ]h"]h$]h&]uh1jhjg hKthj+ ubj)}(h7``notifier_entry`` member in a global list of notifiersh](j)}(h``notifier_entry``h]j)}(hj h]hnotifier_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.hhKthj ubj)}(hhh]jZ)}(h$member in a global list of notifiersh]h$member in a global list of notifiers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKuhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKthj+ ubeh}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](j)}(hjmh]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhK{ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hK{ubj#)}(hv4l2_async_subdev_endpointh]j))}(hj h]hv4l2_async_subdev_endpoint}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj ubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hj hhhj hK{ubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhj hhhj hK{ubah}(h]j ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhj hK{hj hhubjU)}(hhh]jZ)}(h!Entry in sub-device's fwnode listh]h#Entry in sub-device’s fwnode list}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj$ hhubah}(h]h ]h"]h$]h&]uh1jThj hhhj hK{ubeh}(h]h ](jsstructeh"]h$]h&]jxjsjyj? jzj? j{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG ubh:}(hjG hhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjC 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; };}hjd sbah}(h]h ]h"]h$]h&]hhuh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjC ubjZ)}(h **Members**h]j)}(hju h]hMembers}(hjw hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjC 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.hhKhj ubj)}(hhh]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype 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&]uh1jYhj hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj hKhj 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]jZ)}(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&]uh1jYhe/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 hKhj ubeh}(h]h ]h"]h$]h&]uh1jhjC ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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}(hjI hhhNhNubah}(h]h ]ktah"]h$]h&]uh1jG hjC hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubj)}(h h]h }(hjY hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjC hhhjX hKubj#)}(hv4l2_async_debug_inith]j))}(hv4l2_async_debug_inith]hv4l2_async_debug_init}(hjk hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjg ubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjC hhhjX hKubhdesc_parameterlist)}(h(struct dentry *debugfs_dir)h]hdesc_parameter)}(hstruct dentry *debugfs_dirh](j)}(hjmh]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j))}(hdentryh]hdentry}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj ubah}(h]h ]h"]h$]h&] refdomainjsreftype identifier reftargetj modnameN classnameNjj)}j]j ASTIdentifier)}j jm sbc.v4l2_async_debug_initasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubhdesc_sig_punctuation)}(h*h]h*}(hj hhhNhNubah}(h]h ]pah"]h$]h&]uh1j hj ubj))}(h debugfs_dirh]h debugfs_dir}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj ubah}(h]h ]h"]h$]h&]hhuh1j hjC hhhjX hKubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhj? hhhjX hKubah}(h]j: ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjX hKhj< hhubjU)}(hhh]jZ)}(hInitialize debugging tools.h]hInitialize debugging tools.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jThj< hhhjX hKubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyj-jzj-j{j|j}uh1hhhhhhNhNubj)}(ho**Parameters** ``struct dentry *debugfs_dir`` pointer to the parent debugfs :c:type:`struct dentry `h](jZ)}(h**Parameters**h]j)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj1ubj)}(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)}(hjVh]hstruct dentry *debugfs_dir}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjPubj)}(hhh]jZ)}(h>pointer to the parent debugfs :c:type:`struct dentry `h](hpointer to the parent debugfs }(hjohhhNhNubh)}(h :c:type:`struct dentry `h]j)}(hjyh]h struct dentry}(hj{hhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjdentryuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjoubeh}(h]h ]h"]h$]h&]uh1jYhjhKhjlubah}(h]h ]h"]h$]h&]uh1jhjPubeh}(h]h ]h"]h$]h&]uh1jhjkhKhjMubah}(h]h ]h"]h$]h&]uh1jhj1ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hv4l2_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](jH )}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj#)}(hv4l2_async_nf_inith]j))}(hv4l2_async_nf_inith]hv4l2_async_nf_init}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhjhKubj )}(hD(struct v4l2_async_notifier *notifier, struct v4l2_device *v4l2_dev)h](j )}(h$struct v4l2_async_notifier *notifierh](j)}(hjmh]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(hv4l2_async_notifierh]hv4l2_async_notifier}(hj*hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj'ubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj,modnameN classnameNjj)}j]j )}j jsbc.v4l2_async_nf_initasbuh1hhjubj)}(h h]h }(hjJhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjXhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj))}(hnotifierh]hnotifier}(hjehhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hstruct v4l2_device *v4l2_devh](j)}(hjmh]hstruct}(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjzubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubh)}(hhh]j))}(h v4l2_deviceh]h v4l2_device}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j]jFc.v4l2_async_nf_initasbuh1hhjzubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzubj))}(hv4l2_devh]hv4l2_dev}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjzubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhKubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhKubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhKhjhhubjU)}(hhh]jZ)}(hInitialize a notifier.h]hInitialize a notifier.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jThjhhhjhKubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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}(hjBhhhNhNubah}(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]jZ)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjYhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjch]hstruct v4l2_async_notifier}(hjehhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjUhKhjYubeh}(h]h ]h"]h$]h&]uh1jYhjUhKhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhKhj7ubj)}(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.hhKhjubj)}(hhh]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjj v4l2_deviceuh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1jYhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj7ubeh}(h]h ]h"]h$]h&]uh1jhjubjZ)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjZ)}(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 }(hjhhhNhNubj)}(h **asc_entry**h]h asc_entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh. 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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](jH )}(hvoidh]hvoid}(hjIhhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hjEhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubj)}(h h]h }(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhjWhKubj#)}(hv4l2_async_subdev_nf_inith]j))}(hv4l2_async_subdev_nf_inith]hv4l2_async_subdev_nf_init}(hjjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjfubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjEhhhjWhKubj )}(h>(struct v4l2_async_notifier *notifier, struct v4l2_subdev *sd)h](j )}(h$struct v4l2_async_notifier *notifierh](j)}(hjmh]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(hv4l2_async_notifierh]hv4l2_async_notifier}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j]j )}j jlsbc.v4l2_async_subdev_nf_initasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj))}(hnotifierh]hnotifier}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj~ubj )}(hstruct v4l2_subdev *sdh](j)}(hjmh]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(h v4l2_subdevh]h v4l2_subdev}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j]jc.v4l2_async_subdev_nf_initasbuh1hhjubj)}(h h]h }(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj))}(hsdh]hsd}(hjOhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj~ubeh}(h]h ]h"]h$]h&]hhuh1j hjEhhhjWhKubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjAhhhjWhKubah}(h]j<ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjWhKhj>hhubjU)}(hhh]jZ)}(h!Initialize a sub-device notifier.h]h!Initialize a sub-device notifier.}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjvhhubah}(h]h ]h"]h$]h&]uh1jThj>hhhjWhKubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1jYhjhKhjubah}(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.hhKhj ubj)}(hhh]jZ)}(h5pointer to :c:type:`struct v4l2_subdev `h](h pointer to }(hj+hhhNhNubh)}(h*:c:type:`struct v4l2_subdev `h]j)}(hj5h]hstruct v4l2_subdev}(hj7hhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhj'hKhj+ubeh}(h]h ]h"]h$]h&]uh1jYhj'hKhj(ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]uh1jhj'hKhjubeh}(h]h ]h"]h$]h&]uh1jhjubjZ)}(h**Description**h]j)}(hjlh]h Description}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjZ)}(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 }(hjhhhNhNubj)}(h **asc_list**h]hasc_list}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh. 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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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 ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubah}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhKubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhKhjhhubjU)}(hhh]h}(h]h ]h"]h$]h&]uh1jThjhhhjhKubeh}(h]h ](jsmacroeh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubjZ)}(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&]uh1jYhe/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]jZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubah}(h]h ]h"]h$]h&]uh1jhj#hKhhhhubj)}(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](jZ)}(h**Parameters**h]j)}(hj0h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj*ubj)}(hhh](j)}(hS``notifier`` pointer to :c:type:`struct v4l2_async_notifier ` h](j)}(h ``notifier``h]j)}(hjOh]hnotifier}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjIubj)}(hhh]jZ)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjhhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjrh]hstruct v4l2_async_notifier}(hjthhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjdhKhjhubeh}(h]h ]h"]h$]h&]uh1jYhjdhKhjeubah}(h]h ]h"]h$]h&]uh1jhjIubeh}(h]h ]h"]h$]h&]uh1jhjdhKhjFubj)}(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]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype 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&]uh1jYhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjFubj)}(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]jZ)}(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)}(hj#h]hstruct v4l2_async_connection}(hj%hhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype 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&]uh1jYhj@hKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjFubeh}(h]h ]h"]h$]h&]uh1jhj*ubjZ)}(h**Description**h]j)}(hj_h]h Description}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj*ubjZ)}(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 }(hjuhhhNhNubj)}(h **asc_list**h]hasc_list}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubhd. The function also gets a reference of the fwnode which is released later at notifier cleanup time.}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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 ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubah}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhKubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhKhjhhubjU)}(hhh]h}(h]h ]h"]h$]h&]uh1jThjhhhjhKubeh}(h]h ](jsmacroeh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubjZ)}(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&]uh1jYhe/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]jZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhhhhubj)}(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](jZ)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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}(hjBhhhNhNubah}(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]jZ)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjYhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjch]hstruct v4l2_async_notifier}(hjehhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjUhKhjYubeh}(h]h ]h"]h$]h&]uh1jYhjUhKhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhKhj7ubj)}(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.hhKhjubj)}(hhh]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype 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&]uh1jYhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj7ubj)}(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]jZ)}(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 }(hj hhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hjh]hstruct v4l2_async_connection}(hjhhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj ubhq shall be the first member of the driver’s async connection struct, i.e. both begin at the same memory address.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhj1hKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj7ubeh}(h]h ]h"]h$]h&]uh1jhjubjZ)}(h**Description**h]j)}(hjPh]h Description}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjZ)}(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 }(hjfhhhNhNubj)}(h **asc_list**h]hasc_list}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubhd. The function also gets a reference of the fwnode which is released later at notifier cleanup time.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjZ)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](hv4l2_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 ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubah}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhKubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhKhjhhubjU)}(hhh]h}(h]h ]h"]h$]h&]uh1jThjhhhjhKubeh}(h]h ](jsmacroeh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubjZ)}(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&]uh1jYhe/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]jZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhhhhubj)}(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](jZ)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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}(hjBhhhNhNubah}(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]jZ)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjYhhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjch]hstruct v4l2_async_notifier}(hjehhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhjUhKhjYubeh}(h]h ]h"]h$]h&]uh1jYhjUhKhjVubah}(h]h ]h"]h$]h&]uh1jhj:ubeh}(h]h ]h"]h$]h&]uh1jhjUhKhj7ubj)}(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.hhKhjubj)}(hhh]jZ)}(hI2C adapter ID to be matchedh]hI2C adapter ID to be matched}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj7ubj)}(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]jZ)}(h'I2C address of connection to be matchedh]h'I2C address of connection to be matched}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj7ubj)}(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)}(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.hhKhjubj)}(hhh]jZ)}(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 }(hj#hhhNhNubh)}(h>:c:type:`struct v4l2_async_connection `h]j)}(hj-h]hstruct v4l2_async_connection}(hj/hhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_connectionuh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhj#ubhq shall be the first member of the driver’s async connection struct, i.e. both begin at the same memory address.}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1jYhjJhKhj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhKhj7ubeh}(h]h ]h"]h$]h&]uh1jhjubjZ)}(h**Description**h]j)}(hjih]h Description}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjZ)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](jH )}(hinth]hint}(hjhhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj#)}(hv4l2_async_subdev_endpoint_addh]j))}(hv4l2_async_subdev_endpoint_addh]hv4l2_async_subdev_endpoint_add}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhjhKubj )}(h6(struct v4l2_subdev *sd, struct fwnode_handle *fwnode)h](j )}(hstruct v4l2_subdev *sdh](j)}(hjmh]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(h v4l2_subdevh]h v4l2_subdev}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj modnameN classnameNjj)}j]j )}j jsb c.v4l2_async_subdev_endpoint_addasbuh1hhjubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hj h]h*}(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj))}(hsdh]hsd}(hjDhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubj )}(hstruct fwnode_handle *fwnodeh](j)}(hjmh]hstruct}(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjYubj)}(h h]h }(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubh)}(hhh]j))}(h fwnode_handleh]h fwnode_handle}(hj{hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjxubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj}modnameN classnameNjj)}j]j% c.v4l2_async_subdev_endpoint_addasbuh1hhjYubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYubj))}(hfwnodeh]hfwnode}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubeh}(h]h ]h"]h$]h&]hhuh1j hjhhhjhKubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhKubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhKhjhhubjU)}(hhh]jZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jThjhhhjhKubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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)}(hjh]hstruct v4l2_subdev *sd}(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.hhKhjubj)}(hhh]jZ)}(hthe sub-deviceh]hthe sub-device}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhj4hKhj5ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhj4hKhjubj)}(h>``struct fwnode_handle *fwnode`` the endpoint fwnode to match h](j)}(h ``struct fwnode_handle *fwnode``h]j)}(hjXh]hstruct fwnode_handle *fwnode}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjRubj)}(hhh]jZ)}(hthe endpoint fwnode to matchh]hthe endpoint fwnode to match}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjmhKhjnubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]uh1jhjmhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubjZ)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhKhjubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](j)}(hjmh]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM ubh)}(hhh]j))}(hv4l2_async_connectionh]hv4l2_async_connection}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j]j )}j v4l2_async_connection_uniquesbc.v4l2_async_connection_uniqueasbuh1hhjhhhjhM ubj)}(h h]h }(hj6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM ubj )}(hj h]h*}(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM ubj#)}(hv4l2_async_connection_uniqueh]j))}(hj3h]hv4l2_async_connection_unique}(hjUhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjQubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhjhM ubj )}(h(struct v4l2_subdev *sd)h]j )}(hstruct v4l2_subdev *sdh](j)}(hjmh]hstruct}(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjlubj)}(h h]h }(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubh)}(hhh]j))}(h v4l2_subdevh]h v4l2_subdev}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j]j1c.v4l2_async_connection_uniqueasbuh1hhjlubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj))}(hsdh]hsd}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjhubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhM ubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhM ubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhM hjhhubjU)}(hhh]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjj)}j]j1c.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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM hjhhubah}(h]h ]h"]h$]h&]uh1jThjhhhjhM ubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyj2jzj2j{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Parameters**h]j)}(hj<h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhj6ubj)}(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&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM hjUubj)}(hhh]jZ)}(hthe sub-deviceh]hthe sub-device}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jYhjphM hjqubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(h]h ]h"]h$]h&]uh1jhjphM hjRubah}(h]h ]h"]h$]h&]uh1jhj6ubjZ)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhj6ubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM hj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](jH )}(hinth]hint}(hjhhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hjhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj#)}(hv4l2_async_nf_registerh]j))}(hv4l2_async_nf_registerh]hv4l2_async_nf_register}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjhhhjhMubj )}(h&(struct v4l2_async_notifier *notifier)h]j )}(h$struct v4l2_async_notifier *notifierh](j)}(hjmh]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(hv4l2_async_notifierh]hv4l2_async_notifier}(hj6hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj3ubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj8modnameN classnameNjj)}j]j )}j jsbc.v4l2_async_nf_registerasbuh1hhjubj)}(h h]h }(hjVhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj))}(hnotifierh]hnotifier}(hjqhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjhhhjhMubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjhhhjhMubah}(h]jah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjhMhjhhubjU)}(hhh]jZ)}(h+registers a subdevice asynchronous notifierh]h+registers a subdevice asynchronous notifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jThjhhhjhMubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyjjzjj{j|j}uh1hhhhhhNhNubj)}(h**Parameters** ``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier `h](jZ)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jYhe/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]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype 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&]uh1jYhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](jH )}(hvoidh]hvoid}(hjUhhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hjQhhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhjchMubj#)}(hv4l2_async_nf_unregisterh]j))}(hv4l2_async_nf_unregisterh]hv4l2_async_nf_unregister}(hjvhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjrubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hjQhhhjchMubj )}(h&(struct v4l2_async_notifier *notifier)h]j )}(h$struct v4l2_async_notifier *notifierh](j)}(hjmh]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(hv4l2_async_notifierh]hv4l2_async_notifier}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetjmodnameN classnameNjj)}j]j )}j jxsbc.v4l2_async_nf_unregisterasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(hj h]h*}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj))}(hnotifierh]hnotifier}(hjhhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjubah}(h]h ]h"]h$]h&]hhuh1j hjQhhhjchMubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjMhhhjchMubah}(h]jHah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjchMhjJhhubjU)}(hhh]jZ)}(h-unregisters a subdevice asynchronous notifierh]h-unregisters a subdevice asynchronous notifier}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhj hhubah}(h]h ]h"]h$]h&]uh1jThjJhhhjchMubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyj- jzj- j{j|j}uh1hhhhhhNhNubj)}(h**Parameters** ``struct v4l2_async_notifier *notifier`` pointer to :c:type:`struct v4l2_async_notifier `h](jZ)}(h**Parameters**h]j)}(hj7 h]h Parameters}(hj9 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5 ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM hj1 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)}(hjV h]h$struct v4l2_async_notifier *notifier}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjT ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM"hjP ubj)}(hhh]jZ)}(hEpointer to :c:type:`struct v4l2_async_notifier `h](h pointer to }(hjo hhhNhNubh)}(h::c:type:`struct v4l2_async_notifier `h]j)}(hjy h]hstruct v4l2_async_notifier}(hj{ hhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjw ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjjv4l2_async_notifieruh1hhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMhjo ubeh}(h]h ]h"]h$]h&]uh1jYhj hMhjl ubah}(h]h ]h"]h$]h&]uh1jhjP ubeh}(h]h ]h"]h$]h&]uh1jhjk hM"hjM ubah}(h]h ]h"]h$]h&]uh1jhj1 ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](jH )}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hj hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM$ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hM$ubj#)}(hv4l2_async_nf_cleanuph]j))}(hv4l2_async_nf_cleanuph]hv4l2_async_nf_cleanup}(hj hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj ubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hj hhhj hM$ubj )}(h&(struct v4l2_async_notifier *notifier)h]j )}(h$struct v4l2_async_notifier *notifierh](j)}(hjmh]hstruct}(hj !hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj!ubj)}(h h]h }(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubh)}(hhh]j))}(hv4l2_async_notifierh]hv4l2_async_notifier}(hj*!hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj'!ubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj,!modnameN classnameNjj)}j]j )}j j sbc.v4l2_async_nf_cleanupasbuh1hhj!ubj)}(h h]h }(hjJ!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj )}(hj h]h*}(hjX!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubj))}(hnotifierh]hnotifier}(hje!hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj!ubah}(h]h ]h"]h$]h&]hhuh1j hj hhhj hM$ubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhj hhhj hM$ubah}(h]j ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhj hM$hj hhubjU)}(hhh]jZ)}(hclean up notifier resourcesh]hclean up notifier resources}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM$hj!hhubah}(h]h ]h"]h$]h&]uh1jThj hhhj hM$ubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyj!jzj!j{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1jYhe/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]jZ)}(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&]uh1jYhj!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!ubjZ)}(h**Description**h]j)}(hj "h]h Description}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj "ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM'hj!ubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM&hj!ubjZ)}(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.}(hj0"hhhNhNubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM,hj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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))}(hjY"h]hv4l2_async_register_subdev}(hjc"hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj_"ubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hj["hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM4ubah}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjW"hhhjv"hM4ubah}(h]jR"ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjv"hM4hjT"hhubjU)}(hhh]h}(h]h ]h"]h$]h&]uh1jThjT"hhhjv"hM4ubeh}(h]h ](jsmacroeh"]h$]h&]jxjsjyj"jzj"j{j|j}uh1hhhhhhNhNubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM6hhhhubj)}(h?registers a sub-device to the asynchronous subdevice framework h]jZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM4hj"ubah}(h]h ]h"]h$]h&]uh1jhj"hM4hhhhubj)}(hN**Parameters** ``sd`` pointer to :c:type:`struct v4l2_subdev `h](jZ)}(h**Parameters**h]j)}(hj"h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1jYhe/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]jZ)}(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 ](jjsc-typeeh"]h$]h&]uh1jhj #ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype 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&]uh1jYhj)#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&]uh1j~hhhhhNhNubh)}(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](jH )}(hinth]hint}(hjb#hhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hj^#hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM>ubj)}(h h]h }(hjq#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^#hhhjp#hM>ubj#)}(h!v4l2_async_register_subdev_sensorh]j))}(h!v4l2_async_register_subdev_sensorh]h!v4l2_async_register_subdev_sensor}(hj#hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj#ubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hj^#hhhjp#hM>ubj )}(h(struct v4l2_subdev *sd)h]j )}(hstruct v4l2_subdev *sdh](j)}(hjmh]hstruct}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubh)}(hhh]j))}(h v4l2_subdevh]h v4l2_subdev}(hj#hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj#ubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj#modnameN classnameNjj)}j]j )}j j#sb#c.v4l2_async_register_subdev_sensorasbuh1hhj#ubj)}(h h]h }(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj )}(hj h]h*}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj))}(hsdh]hsd}(hj#hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hj#ubah}(h]h ]h"]h$]h&]hhuh1j hj^#hhhjp#hM>ubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhjZ#hhhjp#hM>ubah}(h]jU#ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhjp#hM>hjW#hhubjU)}(hhh]jZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhM>hj$hhubah}(h]h ]h"]h$]h&]uh1jThjW#hhhjp#hM>ubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyj:$jzj:$j{j|j}uh1hhhhhhNhNubj)}(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](jZ)}(h**Parameters**h]j)}(hjD$h]h Parameters}(hjF$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB$ubah}(h]h ]h"]h$]h&]uh1jYhe/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)}(hjc$h]hstruct v4l2_subdev *sd}(hje$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhja$ubah}(h]h ]h"]h$]h&]uh1jhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMChj]$ubj)}(hhh]jZ)}(h'pointer to struct :c:type:`v4l2_subdev`h](hpointer to struct }(hj|$hhhNhNubh)}(h:c:type:`v4l2_subdev`h]j)}(hj$h]h v4l2_subdev}(hj$hhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhjx$hMChj|$ubeh}(h]h ]h"]h$]h&]uh1jYhjx$hMChjy$ubah}(h]h ]h"]h$]h&]uh1jhj]$ubeh}(h]h ]h"]h$]h&]uh1jhjx$hMChjZ$ubah}(h]h ]h"]h$]h&]uh1jhj>$ubjZ)}(h**Description**h]j)}(hj$h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMEhj>$ubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMDhj>$ubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMJhj>$ubjZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMLhj>$ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubh)}(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](jH )}(hvoidh]hvoid}(hj %hhhNhNubah}(h]h ]jT ah"]h$]h&]uh1jG hj%hhhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMTubj)}(h h]h }(hj/%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%hhhj.%hMTubj#)}(hv4l2_async_unregister_subdevh]j))}(hv4l2_async_unregister_subdevh]hv4l2_async_unregister_subdev}(hjA%hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hj=%ubah}(h]h ](j;j<eh"]h$]h&]hhuh1j"hj%hhhj.%hMTubj )}(h(struct v4l2_subdev *sd)h]j )}(hstruct v4l2_subdev *sdh](j)}(hjmh]hstruct}(hj]%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjY%ubj)}(h h]h }(hjj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY%ubh)}(hhh]j))}(h v4l2_subdevh]h v4l2_subdev}(hj{%hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjx%ubah}(h]h ]h"]h$]h&] refdomainjsreftypej reftargetj}%modnameN classnameNjj)}j]j )}j jC%sbc.v4l2_async_unregister_subdevasbuh1hhjY%ubj)}(h h]h }(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjY%ubj )}(hj h]h*}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjY%ubj))}(hsdh]hsd}(hj%hhhNhNubah}(h]h ]j4ah"]h$]h&]uh1j(hjY%ubeh}(h]h ]h"]h$]h&]noemphhhuh1j hjU%ubah}(h]h ]h"]h$]h&]hhuh1j hj%hhhj.%hMTubeh}(h]h ]h"]h$]h&]hhjFuh1hjGjHhj%hhhj.%hMTubah}(h]j%ah ](jLjMeh"]h$]h&]jQjR)jShuh1hhj.%hMThj%hhubjU)}(hhh]jZ)}(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&]uh1jYhe/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-async:5: ./include/media/v4l2-async.hhMThj%hhubah}(h]h ]h"]h$]h&]uh1jThj%hhhj.%hMTubeh}(h]h ](jsfunctioneh"]h$]h&]jxjsjyj%jzj%j{j|j}uh1hhhhhhNhNubj)}(hb**Parameters** ``struct v4l2_subdev *sd`` pointer to :c:type:`struct v4l2_subdev `h](jZ)}(h**Parameters**h]j)}(hj&h]h Parameters}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1jYhe/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]jZ)}(h5pointer to :c:type:`struct v4l2_subdev `h](h pointer to }(hj:&hhhNhNubh)}(h*:c:type:`struct v4l2_subdev `h]j)}(hjD&h]hstruct v4l2_subdev}(hjF&hhhNhNubah}(h]h ](jjsc-typeeh"]h$]h&]uh1jhjB&ubah}(h]h ]h"]h$]h&]refdocj refdomainjsreftypetype 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&]uh1jYhja&hMWhj7&ubah}(h]h ]h"]h$]h&]uh1jhj&ubeh}(h]h ]h"]h$]h&]uh1jhj6&hMZhj&ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j~hhhhhNhNubeh}(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_sourcehnj _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}j&j&s nametypes}j&sh}(j&hhhj^jcjkjpjjjx j} j j j: j? jjj<jAjjjjjjjjjjjjjHjMj j jR"jW"jU#jZ#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.