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-mcmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/zh_TW/driver-api/media/v4l2-mcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/it_IT/driver-api/media/v4l2-mcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ja_JP/driver-api/media/v4l2-mcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ko_KR/driver-api/media/v4l2-mcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/pt_BR/driver-api/media/v4l2-mcmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/sp_SP/driver-api/media/v4l2-mcmodnameN 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:spacepreserveuh1hhhhhhF/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc.rsthKubhsection)}(hhh](htitle)}(h3V4L2 Media Controller functions and data structuresh]h3V4L2 Media Controller functions and data structures}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single'v4l2_mc_create_media_graph (C function)c.v4l2_mc_create_media_graphhNtauh1hhhhhhNhNubhdesc)}(hhh](hdesc_signature)}(h:int v4l2_mc_create_media_graph (struct media_device *mdev)h]hdesc_signature_line)}(h9int v4l2_mc_create_media_graph(struct media_device *mdev)h](hdesc_sig_keyword_type)}(hinth]hint}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1hhhhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubhdesc_sig_space)}(h h]h }(hjhhhNhNubah}(h]h ]wah"]h$]h&]uh1jhhhhhjhKubh desc_name)}(hv4l2_mc_create_media_graphh]h desc_sig_name)}(hv4l2_mc_create_media_graphh]hv4l2_mc_create_media_graph}(hj*hhhNhNubah}(h]h ]nah"]h$]h&]uh1j(hj$ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j"hhhhhjhKubhdesc_parameterlist)}(h(struct media_device *mdev)h]hdesc_parameter)}(hstruct media_device *mdevh](hdesc_sig_keyword)}(hstructh]hstruct}(hjOhhhNhNubah}(h]h ]kah"]h$]h&]uh1jMhjIubj)}(h h]h }(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubh)}(hhh]j))}(h media_deviceh]h media_device}(hjohhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjlubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjqmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jj,sbc.v4l2_mc_create_media_graphasbuh1hhjIubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjIubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjIubj))}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjIubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjCubah}(h]h ]h"]h$]h&]hhuh1jAhhhhhjhKubeh}(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)}(h+create Media Controller links at the graph.h]h+create Media Controller links at the graph.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhhhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1hhhhhhNhNubh container)}(hX**Parameters** ``struct media_device *mdev`` pointer to the :c:type:`media_device` struct. **Description** Add links between the entities commonly found on PC customer's hardware at the V4L2 side: camera sensors, audio and video PLL-IF decoders, tuners, analog TV decoder and I/O entities (video, VBI and Software Defined Radio). .. note:: Webcams are modelled on a very simple way: the sensor is connected directly to the I/O entity. All dirty details, like scaler and crop HW are hidden. While such mapping is enough for v4l2 interface centric PC-consumer's hardware, V4L2 subdev centric camera hardware should not use this routine, as it will not build the right graph.h](j)}(h**Parameters**h]hstrong)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjubhdefinition_list)}(hhh]hdefinition_list_item)}(hL``struct media_device *mdev`` pointer to the :c:type:`media_device` struct. h](hterm)}(h``struct media_device *mdev``h]hliteral)}(hj>h]hstruct media_device *mdev}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hj<ubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj6ubh definition)}(hhh]j)}(h-pointer to the :c:type:`media_device` struct.h](hpointer to the }(hj[hhhNhNubh)}(h:c:type:`media_device`h]jA)}(hjeh]h media_device}(hjghhhNhNubah}(h]h ](xrefjc-typeeh"]h$]h&]uh1j@hjcubah}(h]h ]h"]h$]h&]refdocdriver-api/media/v4l2-mc refdomainjreftypetype refexplicitrefwarnjj)}j]sb reftarget media_deviceuh1hhjUhKhj[ubh struct.}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjUhKhjXubah}(h]h ]h"]h$]h&]uh1jVhj6ubeh}(h]h ]h"]h$]h&]uh1j4hjUhKhj1ubah}(h]h ]h"]h$]h&]uh1j/hjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjubj)}(hAdd links between the entities commonly found on PC customer's hardware at the V4L2 side: camera sensors, audio and video PLL-IF decoders, tuners, analog TV decoder and I/O entities (video, VBI and Software Defined Radio).h]hAdd links between the entities commonly found on PC customer’s hardware at the V4L2 side: camera sensors, audio and video PLL-IF decoders, tuners, analog TV decoder and I/O entities (video, VBI and Software Defined Radio).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjubhnote)}(hXLWebcams are modelled on a very simple way: the sensor is connected directly to the I/O entity. All dirty details, like scaler and crop HW are hidden. While such mapping is enough for v4l2 interface centric PC-consumer's hardware, V4L2 subdev centric camera hardware should not use this routine, as it will not build the right graph.h]j)}(hXLWebcams are modelled on a very simple way: the sensor is connected directly to the I/O entity. All dirty details, like scaler and crop HW are hidden. While such mapping is enough for v4l2 interface centric PC-consumer's hardware, V4L2 subdev centric camera hardware should not use this routine, as it will not build the right graph.h]hXNWebcams are modelled on a very simple way: the sensor is connected directly to the I/O entity. All dirty details, like scaler and crop HW are hidden. While such mapping is enough for v4l2 interface centric PC-consumer’s hardware, V4L2 subdev centric camera hardware should not use this routine, as it will not build the right graph.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK!hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h$v4l_enable_media_source (C function)c.v4l_enable_media_sourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(h7int v4l_enable_media_source (struct video_device *vdev)h]h)}(h6int v4l_enable_media_source(struct video_device *vdev)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK+ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK+ubj#)}(hv4l_enable_media_sourceh]j))}(hv4l_enable_media_sourceh]hv4l_enable_media_source}(hj'hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj#ubah}(h]h ](j<j=eh"]h$]h&]hhuh1j"hjhhhjhK+ubjB)}(h(struct video_device *vdev)h]jH)}(hstruct video_device *vdevh](jN)}(hjQh]hstruct}(hjChhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhj?ubj)}(h h]h }(hjPhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubh)}(hhh]j))}(h video_deviceh]h video_device}(hjahhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNjj)}j]j)}jj)sbc.v4l_enable_media_sourceasbuh1hhj?ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj))}(hvdevh]hvdev}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhj;ubah}(h]h ]h"]h$]h&]hhuh1jAhjhhhjhK+ubeh}(h]h ]h"]h$]h&]hhjuh1hjjhjhhhjhK+ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhK+hjhhubj)}(hhh]j)}(h+Hold media source for exclusive use if freeh]h+Hold media source for exclusive use if free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK+hjhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK+ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1hhhhhhNhNubj)}(hX**Parameters** ``struct video_device *vdev`` pointer to struct video_device **Description** This interface calls enable_source handler to determine if media source is free for use. The enable_source handler is responsible for checking is the media source is free and start a pipeline between the media source and the media entity associated with the video device. This interface should be called from v4l2-core and dvb-core interfaces that change the source configuration. **Return** returns zero on success or a negative error code.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK/hjubj0)}(hhh]j5)}(h=``struct video_device *vdev`` pointer to struct video_device h](j;)}(h``struct video_device *vdev``h]jA)}(hjh]hstruct video_device *vdev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK.hjubjW)}(hhh]j)}(hpointer to struct video_deviceh]hpointer to struct video_device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK.hjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j4hjhK.hjubah}(h]h ]h"]h$]h&]uh1j/hjubj)}(h**Description**h]j)}(hjBh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK0hjubj)}(hX|This interface calls enable_source handler to determine if media source is free for use. The enable_source handler is responsible for checking is the media source is free and start a pipeline between the media source and the media entity associated with the video device. This interface should be called from v4l2-core and dvb-core interfaces that change the source configuration.h]hX|This interface calls enable_source handler to determine if media source is free for use. The enable_source handler is responsible for checking is the media source is free and start a pipeline between the media source and the media entity associated with the video device. This interface should be called from v4l2-core and dvb-core interfaces that change the source configuration.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK/hjubj)}(h **Return**h]j)}(hjih]hReturn}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK7hjubj)}(h1returns zero on success or a negative error code.h]h1returns zero on success or a negative error code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK8hjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%v4l_disable_media_source (C function)c.v4l_disable_media_sourcehNtauh1hhhhhhNhNubh)}(hhh](h)}(h9void v4l_disable_media_source (struct video_device *vdev)h]h)}(h8void v4l_disable_media_source(struct video_device *vdev)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK=ubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhK=ubj#)}(hv4l_disable_media_sourceh]j))}(hv4l_disable_media_sourceh]hv4l_disable_media_source}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubah}(h]h ](j<j=eh"]h$]h&]hhuh1j"hjhhhjhK=ubjB)}(h(struct video_device *vdev)h]jH)}(hstruct video_device *vdevh](jN)}(hjQh]hstruct}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(h video_deviceh]h video_device}(hj hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjsbc.v4l_disable_media_sourceasbuh1hhjubj)}(h h]h }(hj)hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj))}(hvdevh]hvdev}(hjDhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjubah}(h]h ]h"]h$]h&]hhuh1jAhjhhhjhK=ubeh}(h]h ]h"]h$]h&]hhjuh1hjjhjhhhjhK=ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhK=hjhhubj)}(hhh]j)}(hRelease media sourceh]hRelease media source}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK=hjkhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhK=ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1hhhhhhNhNubj)}(hXs**Parameters** ``struct video_device *vdev`` pointer to struct video_device **Description** This interface calls disable_source handler to release the media source. The disable_source handler stops the active media pipeline between the media source and the media entity associated with the video device. **Return** returns zero on success or a negative error code.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKAhjubj0)}(hhh]j5)}(h=``struct video_device *vdev`` pointer to struct video_device h](j;)}(h``struct video_device *vdev``h]jA)}(hjh]hstruct video_device *vdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK?hjubjW)}(hhh]j)}(hpointer to struct video_deviceh]hpointer to struct video_device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK?hjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j4hjhK?hjubah}(h]h ]h"]h$]h&]uh1j/hjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKAhjubj)}(hThis interface calls disable_source handler to release the media source. The disable_source handler stops the active media pipeline between the media source and the media entity associated with the video device.h]hThis interface calls disable_source handler to release the media source. The disable_source handler stops the active media pipeline between the media source and the media entity associated with the video device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK@hjubj)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKEhjubj)}(h1returns zero on success or a negative error code.h]h1returns zero on success or a negative error code.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKFhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h,v4l2_create_fwnode_links_to_pad (C function)!c.v4l2_create_fwnode_links_to_padhNtauh1hhhhhhNhNubh)}(hhh](h)}(hcint v4l2_create_fwnode_links_to_pad (struct v4l2_subdev *src_sd, struct media_pad *sink, u32 flags)h]h)}(hbint v4l2_create_fwnode_links_to_pad(struct v4l2_subdev *src_sd, struct media_pad *sink, u32 flags)h](j)}(hinth]hint}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjRhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKYubj)}(h h]h }(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRhhhjdhKYubj#)}(hv4l2_create_fwnode_links_to_padh]j))}(hv4l2_create_fwnode_links_to_padh]hv4l2_create_fwnode_links_to_pad}(hjwhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjsubah}(h]h ](j<j=eh"]h$]h&]hhuh1j"hjRhhhjdhKYubjB)}(h?(struct v4l2_subdev *src_sd, struct media_pad *sink, u32 flags)h](jH)}(hstruct v4l2_subdev *src_sdh](jN)}(hjQh]hstruct}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(h v4l2_subdevh]h v4l2_subdev}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjysb!c.v4l2_create_fwnode_links_to_padasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj))}(hsrc_sdh]hsrc_sd}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjubjH)}(hstruct media_pad *sinkh](jN)}(hjQh]hstruct}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubh)}(hhh]j))}(h media_padh]h media_pad}(hj#hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNjj)}j]j!c.v4l2_create_fwnode_links_to_padasbuh1hhjubj)}(h h]h }(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hjh]h*}(hjOhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj))}(hsinkh]hsink}(hj\hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjubjH)}(h u32 flagsh](h)}(hhh]j))}(hu32h]hu32}(hjxhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjuubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjzmodnameN classnameNjj)}j]j!c.v4l2_create_fwnode_links_to_padasbuh1hhjqubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjqubj))}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjubeh}(h]h ]h"]h$]h&]hhuh1jAhjRhhhjdhKYubeh}(h]h ]h"]h$]h&]hhjuh1hjjhjNhhhjdhKYubah}(h]jIah ](jjeh"]h$]h&]jj)jhuh1hhjdhKYhjKhhubj)}(hhh]j)}(h=Create fwnode-based links from a source subdev to a sink pad.h]h=Create fwnode-based links from a source subdev to a sink pad.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKYhjhhubah}(h]h ]h"]h$]h&]uh1jhjKhhhjdhKYubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j juh1hhhhhhNhNubj)}(hX**Parameters** ``struct v4l2_subdev *src_sd`` pointer to a source subdev ``struct media_pad *sink`` pointer to a sink pad ``u32 flags`` the link flags **Description** This function searches for fwnode endpoint connections from a source subdevice to a single sink pad, and if suitable connections are found, translates them into media links to that pad. The function can be called by the sink, in its v4l2-async notifier bound callback, to create links from a bound source subdevice. The **flags** argument specifies the link flags. The caller shall ensure that the flags are valid regardless of the number of links that may be created. For instance, setting the MEDIA_LNK_FL_ENABLED flag will cause all created links to be enabled, which isn't valid if more than one link is created. .. note:: Any sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink. Return 0 on success or a negative error code on failure.h](j)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK]hjubj0)}(hhh](j5)}(h:``struct v4l2_subdev *src_sd`` pointer to a source subdev h](j;)}(h``struct v4l2_subdev *src_sd``h]jA)}(hjh]hstruct v4l2_subdev *src_sd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hj ubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK\hj ubjW)}(hhh]j)}(hpointer to a source subdevh]hpointer to a source subdev}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$hK\hj%ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j4hj$hK\hjubj5)}(h1``struct media_pad *sink`` pointer to a sink pad h](j;)}(h``struct media_pad *sink``h]jA)}(hjHh]hstruct media_pad *sink}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjFubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK]hjBubjW)}(hhh]j)}(hpointer to a sink padh]hpointer to a sink pad}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]hK]hj^ubah}(h]h ]h"]h$]h&]uh1jVhjBubeh}(h]h ]h"]h$]h&]uh1j4hj]hK]hjubj5)}(h``u32 flags`` the link flags h](j;)}(h ``u32 flags``h]jA)}(hjh]h u32 flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK^hj{ubjW)}(hhh]j)}(hthe link flagsh]hthe link flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK^hjubah}(h]h ]h"]h$]h&]uh1jVhj{ubeh}(h]h ]h"]h$]h&]uh1j4hjhK^hjubeh}(h]h ]h"]h$]h&]uh1j/hjubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK`hjubj)}(hX;This function searches for fwnode endpoint connections from a source subdevice to a single sink pad, and if suitable connections are found, translates them into media links to that pad. The function can be called by the sink, in its v4l2-async notifier bound callback, to create links from a bound source subdevice.h]hX;This function searches for fwnode endpoint connections from a source subdevice to a single sink pad, and if suitable connections are found, translates them into media links to that pad. The function can be called by the sink, in its v4l2-async notifier bound callback, to create links from a bound source subdevice.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK_hjubj)}(hX,The **flags** argument specifies the link flags. The caller shall ensure that the flags are valid regardless of the number of links that may be created. For instance, setting the MEDIA_LNK_FL_ENABLED flag will cause all created links to be enabled, which isn't valid if more than one link is created.h](hThe }(hjhhhNhNubj)}(h **flags**h]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX! argument specifies the link flags. The caller shall ensure that the flags are valid regardless of the number of links that may be created. For instance, setting the MEDIA_LNK_FL_ENABLED flag will cause all created links to be enabled, which isn’t valid if more than one link is created.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKehjubj)}(hAny sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink.h]j)}(hAny sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink.h]hAny sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKlhj ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h8Return 0 on success or a negative error code on failure.h]h8Return 0 on success or a negative error code on failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKphjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h%v4l2_create_fwnode_links (C function)c.v4l2_create_fwnode_linkshNtauh1hhhhhhNhNubh)}(hhh](h)}(hVint v4l2_create_fwnode_links (struct v4l2_subdev *src_sd, struct v4l2_subdev *sink_sd)h]h)}(hUint v4l2_create_fwnode_links(struct v4l2_subdev *src_sd, struct v4l2_subdev *sink_sd)h](j)}(hinth]hint}(hjJ hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjF hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKwubj)}(h h]h }(hjY hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF hhhjX hKwubj#)}(hv4l2_create_fwnode_linksh]j))}(hv4l2_create_fwnode_linksh]hv4l2_create_fwnode_links}(hjk hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjg ubah}(h]h ](j<j=eh"]h$]h&]hhuh1j"hjF hhhjX hKwubjB)}(h9(struct v4l2_subdev *src_sd, struct v4l2_subdev *sink_sd)h](jH)}(hstruct v4l2_subdev *src_sdh](jN)}(hjQh]hstruct}(hj hhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhj 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 ]j5ah"]h$]h&]uh1j(hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjm sbc.v4l2_create_fwnode_linksasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj))}(hsrc_sdh]hsrc_sd}(hj hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhj ubjH)}(hstruct v4l2_subdev *sink_sdh](jN)}(hjQh]hstruct}(hj hhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhj 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 ]j5ah"]h$]h&]uh1j(hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.v4l2_create_fwnode_linksasbuh1hhj ubj)}(h h]h }(hj5 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hjC hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj))}(hsink_sdh]hsink_sd}(hjP hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhj ubeh}(h]h ]h"]h$]h&]hhuh1jAhjF hhhjX hKwubeh}(h]h ]h"]h$]h&]hhjuh1hjjhjB hhhjX hKwubah}(h]j= ah ](jjeh"]h$]h&]jj)jhuh1hhjX hKwhj? hhubj)}(hhh]j)}(h@Create fwnode-based links from a source subdev to a sink subdev.h]h@Create fwnode-based links from a source subdev to a sink subdev.}(hjz hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKwhjw hhubah}(h]h ]h"]h$]h&]uh1jhj? hhhjX hKwubeh}(h]h ](jfunctioneh"]h$]h&]j jj j j j j j juh1hhhhhhNhNubj)}(hX**Parameters** ``struct v4l2_subdev *src_sd`` pointer to a source subdevice ``struct v4l2_subdev *sink_sd`` pointer to a sink subdevice **Description** This function searches for any and all fwnode endpoint connections between source and sink subdevices, and translates them into media links. The function can be called by the sink subdevice, in its v4l2-async notifier subdev bound callback, to create all links from a bound source subdevice. .. note:: Any sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink. Return 0 on success or a negative error code on failure.h](j)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK{hj ubj0)}(hhh](j5)}(h=``struct v4l2_subdev *src_sd`` pointer to a source subdevice h](j;)}(h``struct v4l2_subdev *src_sd``h]jA)}(hj h]hstruct v4l2_subdev *src_sd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j@hj ubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKzhj ubjW)}(hhh]j)}(hpointer to a source subdeviceh]hpointer to a source subdevice}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKzhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j4hj hKzhj ubj5)}(h<``struct v4l2_subdev *sink_sd`` pointer to a sink subdevice h](j;)}(h``struct v4l2_subdev *sink_sd``h]jA)}(hj h]hstruct v4l2_subdev *sink_sd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j@hj ubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK{hj ubjW)}(hhh]j)}(hpointer to a sink subdeviceh]hpointer to a sink subdevice}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hK{hj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j4hj hK{hj ubeh}(h]h ]h"]h$]h&]uh1j/hj ubj)}(h**Description**h]j)}(hj/ h]h Description}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj- ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK}hj ubj)}(hX#This function searches for any and all fwnode endpoint connections between source and sink subdevices, and translates them into media links. The function can be called by the sink subdevice, in its v4l2-async notifier subdev bound callback, to create all links from a bound source subdevice.h]hX#This function searches for any and all fwnode endpoint connections between source and sink subdevices, and translates them into media links. The function can be called by the sink subdevice, in its v4l2-async notifier subdev bound callback, to create all links from a bound source subdevice.}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK|hj ubj)}(hAny sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink.h]j)}(hAny sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink.h]hAny sink subdevice that calls this function must implement the .get_fwnode_pad media operation in order to verify endpoints passed to the sink are owned by the sink.}(hjX hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjT ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h8Return 0 on success or a negative error code on failure.h]h8Return 0 on success or a negative error code on failure.}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!v4l2_pipeline_pm_get (C function)c.v4l2_pipeline_pm_gethNtauh1hhhhhhNhNubh)}(hhh](h)}(h6int v4l2_pipeline_pm_get (struct media_entity *entity)h]h)}(h5int v4l2_pipeline_pm_get(struct media_entity *entity)h](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhj hKubj#)}(hv4l2_pipeline_pm_geth]j))}(hv4l2_pipeline_pm_geth]hv4l2_pipeline_pm_get}(hj hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubah}(h]h ](j<j=eh"]h$]h&]hhuh1j"hj hhhj hKubjB)}(h(struct media_entity *entity)h]jH)}(hstruct media_entity *entityh](jN)}(hjQh]hstruct}(hj hhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j))}(h media_entityh]h media_entity}(hj hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.v4l2_pipeline_pm_getasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj% hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj))}(hentityh]hentity}(hj2 hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhj ubah}(h]h ]h"]h$]h&]hhuh1jAhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjuh1hjjhj hhhj hKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1hhj hKhj hhubj)}(hhh]j)}(h$Increase the use count of a pipelineh]h$Increase the use count of a pipeline}(hj\ hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjY hhubah}(h]h ]h"]h$]h&]uh1jhj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jt j jt j j juh1hhhhhhNhNubj)}(hX**Parameters** ``struct media_entity *entity`` The root entity of a pipeline **Description** THIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD. Update the use count of all entities in the pipeline and power entities on. This function is intended to be called in video node open. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify(). Return 0 on success or a negative error code on failure.h](j)}(h**Parameters**h]j)}(hj~ h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj| ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjx ubj0)}(hhh]j5)}(h>``struct media_entity *entity`` The root entity of a pipeline h](j;)}(h``struct media_entity *entity``h]jA)}(hj h]hstruct media_entity *entity}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j@hj ubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj ubjW)}(hhh]j)}(hThe root entity of a pipelineh]hThe root entity of a pipeline}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jVhj ubeh}(h]h ]h"]h$]h&]uh1j4hj hKhj ubah}(h]h ]h"]h$]h&]uh1j/hjx ubj)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjx ubj)}(heTHIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD.h]heTHIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjx ubj)}(hKUpdate the use count of all entities in the pipeline and power entities on.h]hKUpdate the use count of all entities in the pipeline and power entities on.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjx ubj)}(hThis function is intended to be called in video node open. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify().h]hThis function is intended to be called in video node open. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjx ubj)}(h8Return 0 on success or a negative error code on failure.h]h8Return 0 on success or a negative error code on failure.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjx ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h!v4l2_pipeline_pm_put (C function)c.v4l2_pipeline_pm_puthNtauh1hhhhhhNhNubh)}(hhh](h)}(h7void v4l2_pipeline_pm_put (struct media_entity *entity)h]h)}(h6void v4l2_pipeline_pm_put(struct media_entity *entity)h](j)}(hvoidh]hvoid}(hjJ hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjF hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubj)}(h h]h }(hjY hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjF hhhjX hKubj#)}(hv4l2_pipeline_pm_puth]j))}(hv4l2_pipeline_pm_puth]hv4l2_pipeline_pm_put}(hjk hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjg ubah}(h]h ](j<j=eh"]h$]h&]hhuh1j"hjF hhhjX hKubjB)}(h(struct media_entity *entity)h]jH)}(hstruct media_entity *entityh](jN)}(hjQh]hstruct}(hj hhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubh)}(hhh]j))}(h media_entityh]h media_entity}(hj hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjm sbc.v4l2_pipeline_pm_putasbuh1hhj ubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj))}(hentityh]hentity}(hj hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhj ubah}(h]h ]h"]h$]h&]hhuh1jAhjF hhhjX hKubeh}(h]h ]h"]h$]h&]hhjuh1hjjhjB hhhjX hKubah}(h]j= ah ](jjeh"]h$]h&]jj)jhuh1hhjX hKhj? hhubj)}(hhh]j)}(h$Decrease the use count of a pipelineh]h$Decrease the use count of a pipeline}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj? hhhjX hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj j"j j"j j juh1hhhhhhNhNubj)}(hX**Parameters** ``struct media_entity *entity`` The root entity of a pipeline **Description** THIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD. Update the use count of all entities in the pipeline and power entities off. This function is intended to be called in video node release. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify().h](j)}(h**Parameters**h]j)}(hj,h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj&ubj0)}(hhh]j5)}(h>``struct media_entity *entity`` The root entity of a pipeline h](j;)}(h``struct media_entity *entity``h]jA)}(hjKh]hstruct media_entity *entity}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjIubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjEubjW)}(hhh]j)}(hThe root entity of a pipelineh]hThe root entity of a pipeline}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`hKhjaubah}(h]h ]h"]h$]h&]uh1jVhjEubeh}(h]h ]h"]h$]h&]uh1j4hj`hKhjBubah}(h]h ]h"]h$]h&]uh1j/hj&ubj)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj&ubj)}(heTHIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD.h]heTHIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj&ubj)}(hLUpdate the use count of all entities in the pipeline and power entities off.h]hLUpdate the use count of all entities in the pipeline and power entities off.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj&ubj)}(hThis function is intended to be called in video node release. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify().h]hThis function is intended to be called in video node release. It uses struct media_entity.use_count to track the power status. The use of this function should be paired with v4l2_pipeline_link_notify().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubh)}(hhh]h}(h]h ]h"]h$]h&]entries](h&v4l2_pipeline_link_notify (C function)c.v4l2_pipeline_link_notifyhNtauh1hhhhhhNhNubh)}(hhh](h)}(h]int v4l2_pipeline_link_notify (struct media_link *link, u32 flags, unsigned int notification)h]h)}(h\int v4l2_pipeline_link_notify(struct media_link *link, u32 flags, unsigned int notification)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhKubj#)}(hv4l2_pipeline_link_notifyh]j))}(hv4l2_pipeline_link_notifyh]hv4l2_pipeline_link_notify}(hj hhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubah}(h]h ](j<j=eh"]h$]h&]hhuh1j"hjhhhjhKubjB)}(h?(struct media_link *link, u32 flags, unsigned int notification)h](jH)}(hstruct media_link *linkh](jN)}(hjQh]hstruct}(hj&hhhNhNubah}(h]h ]jZah"]h$]h&]uh1jMhj"ubj)}(h h]h }(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubh)}(hhh]j))}(h media_linkh]h media_link}(hjDhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjAubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjFmodnameN classnameNjj)}j]j)}jj sbc.v4l2_pipeline_link_notifyasbuh1hhj"ubj)}(h h]h }(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj)}(hjh]h*}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj))}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjubjH)}(h u32 flagsh](h)}(hhh]j))}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j`c.v4l2_pipeline_link_notifyasbuh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj))}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjubjH)}(hunsigned int notificationh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h h]h }(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj))}(h notificationh]h notification}(hjhhhNhNubah}(h]h ]j5ah"]h$]h&]uh1j(hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jGhjubeh}(h]h ]h"]h$]h&]hhuh1jAhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjuh1hjjhjhhhjhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKhjhhubj)}(hhh]j)}(h%Link management notification callbackh]h%Link management notification callback}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj?hhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jZj jZj j juh1hhhhhhNhNubj)}(hX**Parameters** ``struct media_link *link`` The link ``u32 flags`` New link flags that will be applied ``unsigned int notification`` The link's state change notification type (MEDIA_DEV_NOTIFY_*) **Description** THIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD. React to link management on powered pipelines by updating the use count of all entities in the source and sink sides of the link. Entities are powered on or off accordingly. The use of this function should be paired with v4l2_pipeline_pm_{get,put}(). Return 0 on success or a negative error code on failure. Powering entities off is assumed to never fail. This function will not fail for disconnection events.h](j)}(h**Parameters**h]j)}(hjdh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj^ubj0)}(hhh](j5)}(h%``struct media_link *link`` The link h](j;)}(h``struct media_link *link``h]jA)}(hjh]hstruct media_link *link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj}ubjW)}(hhh]j)}(hThe linkh]hThe link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhj}ubeh}(h]h ]h"]h$]h&]uh1j4hjhKhjzubj5)}(h2``u32 flags`` New link flags that will be applied h](j;)}(h ``u32 flags``h]jA)}(hjh]h u32 flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjubjW)}(hhh]j)}(h#New link flags that will be appliedh]h#New link flags that will be applied}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j4hjhKhjzubj5)}(h]``unsigned int notification`` The link's state change notification type (MEDIA_DEV_NOTIFY_*) h](j;)}(h``unsigned int notification``h]jA)}(hjh]hunsigned int notification}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j@hjubah}(h]h ]h"]h$]h&]uh1j:h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjubjW)}(hhh]j)}(h>The link's state change notification type (MEDIA_DEV_NOTIFY_*)h]h@The link’s state change notification type (MEDIA_DEV_NOTIFY_*)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hKhj ubah}(h]h ]h"]h$]h&]uh1jVhjubeh}(h]h ]h"]h$]h&]uh1j4hj hKhjzubeh}(h]h ]h"]h$]h&]uh1j/hj^ubj)}(h**Description**h]j)}(hj0h]h Description}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj^ubj)}(heTHIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD.h]heTHIS FUNCTION IS DEPRECATED. DO NOT USE IN NEW DRIVERS. USE RUNTIME PM ON SUB-DEVICE DRIVERS INSTEAD.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj^ubj)}(hReact to link management on powered pipelines by updating the use count of all entities in the source and sink sides of the link. Entities are powered on or off accordingly. The use of this function should be paired with v4l2_pipeline_pm_{get,put}().h]hReact to link management on powered pipelines by updating the use count of all entities in the source and sink sides of the link. Entities are powered on or off accordingly. The use of this function should be paired with v4l2_pipeline_pm_{get,put}().}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj^ubj)}(hReturn 0 on success or a negative error code on failure. Powering entities off is assumed to never fail. This function will not fail for disconnection events.h]hReturn 0 on success or a negative error code on failure. Powering entities off is assumed to never fail. This function will not fail for disconnection events.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhNhNubeh}(h]3v4l2-media-controller-functions-and-data-structuresah ]h"]3v4l2 media controller functions and data structuresah$]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_handlerjerror_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}jj|s nametypes}jsh}(j|hhhjjjjjIjNj= jB j j j= jB jju 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.