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]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}(hhhhhNhNubah}(h]h ]ktah"]h$]h&]uh1hhhhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK(ubhdesc_sig_space)}(h h]h }(hhhhhNhNubah}(h]h ]wah"]h$]h&]uh1hhhhhhhhK(ubh desc_name)}(hv4l2_mc_create_media_graphh]h desc_sig_name)}(hv4l2_mc_create_media_graphh]hv4l2_mc_create_media_graph}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jhhhhhhhK(ubhdesc_parameterlist)}(h(struct media_device *mdev)h]hdesc_parameter)}(hstruct media_device *mdevh](hdesc_sig_keyword)}(hstructh]hstruct}(hj;hhhNhNubah}(h]h ]kah"]h$]h&]uh1j9hj5ubh)}(h h]h }(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj5ubh)}(hhh]j)}(h media_deviceh]h media_device}(hj[hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetj]modnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]jw ASTIdentifier)}jrjsbc.v4l2_mc_create_media_graphasbuh1hhj5ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj5ubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhj5ubj)}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hj/ubah}(h]h ]h"]h$]h&]hhuh1j-hhhhhhhK(ubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1hsphinx_line_type declaratorhhhhhhhK(ubah}(h]hah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1hhhhK(hhhhubh 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&]uh1jhhhhhhhK(ubeh}(h]h ](jpfunctioneh"]h$]h&]domainjpobjtypejdesctypejnoindex 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}(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"ubh definition)}(hhh]j)}(h-pointer to the :c:type:`media_device` struct.h](hpointer to the }(hjGhhhNhNubh)}(h:c:type:`media_device`h]j-)}(hjQh]h media_device}(hjShhhNhNubah}(h]h ](xrefjpc-typeeh"]h$]h&]uh1j,hjOubah}(h]h ]h"]h$]h&]refdocdriver-api/media/v4l2-mc refdomainjpreftypetype refexplicitrefwarnjvjy)}j|]sb reftarget media_deviceuh1hhjAhKhjGubh struct.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1jhjAhKhjDubah}(h]h ]h"]h$]h&]uh1jBhj"ubeh}(h]h ]h"]h$]h&]uh1j hjAhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(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](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK:ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhK:ubj)}(hv4l_enable_media_sourceh]j)}(hv4l_enable_media_sourceh]hv4l_enable_media_source}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhK:ubj.)}(h(struct video_device *vdev)h]j4)}(hstruct video_device *vdevh](j:)}(hj=h]hstruct}(hj/hhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hj+ubh)}(h h]h }(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj+ubh)}(hhh]j)}(h video_deviceh]h video_device}(hjMhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetjOmodnameN classnameNjvjy)}j|]j)}jrjsbc.v4l_enable_media_sourceasbuh1hhj+ubh)}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj+ubj)}(hjh]h*}(hj{hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+ubj)}(hvdevh]hvdev}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hj'ubah}(h]h ]h"]h$]h&]hhuh1j-hjhhhjhK: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 ](jpfunctioneh"]h$]h&]jjpjjjjjjjuh1hhhhhhNhNubj)}(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/hjubj)}(hhh]j!)}(h=``struct video_device *vdev`` pointer to struct video_device h](j')}(h``struct video_device *vdev``h]j-)}(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.hjubjC)}(hhh]j)}(hpointer to struct video_deviceh]hpointer to struct video_device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK.hj ubah}(h]h ]h"]h$]h&]uh1jBhjubeh}(h]h ]h"]h$]h&]uh1j hjhK.hjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h**Description**h]j)}(hj.h]h Description}(hj0hhhNhNubah}(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.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK0hjubj)}(h **Return**h]j)}(hjUh]hReturn}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK8hjubj)}(h1returns zero on success or a negative error code.h]h1returns zero on success or a negative error code.}(hjkhhhNhNubah}(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](h)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKHubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKHubj)}(hv4l_disable_media_sourceh]j)}(hv4l_disable_media_sourceh]hv4l_disable_media_source}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhKHubj.)}(h(struct video_device *vdev)h]j4)}(hstruct video_device *vdevh](j:)}(hj=h]hstruct}(hjhhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h video_deviceh]h video_device}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetjmodnameN classnameNjvjy)}j|]j)}jrjsbc.v4l_disable_media_sourceasbuh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hvdevh]hvdev}(hj0hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hjubah}(h]h ]h"]h$]h&]hhuh1j-hjhhhjhKHubeh}(h]h ]h"]h$]h&]hhjuh1hjjhjhhhjhKHubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1hhjhKHhjhhubj)}(hhh]j)}(hRelease media sourceh]hRelease media source}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK=hjWhhubah}(h]h ]h"]h$]h&]uh1jhjhhhjhKHubeh}(h]h ](jpfunctioneh"]h$]h&]jjpjjrjjrjjjuh1hhhhhhNhNubj)}(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)}(hj|h]h Parameters}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKAhjvubj)}(hhh]j!)}(h=``struct video_device *vdev`` pointer to struct video_device h](j')}(h``struct video_device *vdev``h]j-)}(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?hjubjC)}(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&]uh1jBhjubeh}(h]h ]h"]h$]h&]uh1j hjhK?hjubah}(h]h ]h"]h$]h&]uh1jhjvubj)}(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.hhKAhjvubj)}(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.hhKAhjvubj)}(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.hhKFhjvubj)}(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.hhKFhjvubeh}(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](h)}(hinth]hint}(hjBhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj>hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKsubh)}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj>hhhjPhKsubj)}(hv4l2_create_fwnode_links_to_padh]j)}(hv4l2_create_fwnode_links_to_padh]hv4l2_create_fwnode_links_to_pad}(hjchhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj_ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj>hhhjPhKsubj.)}(h?(struct v4l2_subdev *src_sd, struct media_pad *sink, u32 flags)h](j4)}(hstruct v4l2_subdev *src_sdh](j:)}(hj=h]hstruct}(hjhhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hj{ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{ubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetjmodnameN classnameNjvjy)}j|]j)}jrjesb!c.v4l2_create_fwnode_links_to_padasbuh1hhj{ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj{ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj)}(hsrc_sdh]hsrc_sd}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hjwubj4)}(hstruct media_pad *sinkh](j:)}(hj=h]hstruct}(hjhhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetjmodnameN classnameNjvjy)}j|]j!c.v4l2_create_fwnode_links_to_padasbuh1hhjubh)}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hsinkh]hsink}(hjHhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hjwubj4)}(h u32 flagsh](h)}(hhh]j)}(hu32h]hu32}(hjdhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetjfmodnameN classnameNjvjy)}j|]j!c.v4l2_create_fwnode_links_to_padasbuh1hhj]ubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj]ubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hjwubeh}(h]h ]h"]h$]h&]hhuh1j-hj>hhhjPhKsubeh}(h]h ]h"]h$]h&]hhjuh1hjjhj:hhhjPhKsubah}(h]j5ah ](jjeh"]h$]h&]jj)jhuh1hhjPhKshj7hhubj)}(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&]uh1jhj7hhhjPhKsubeh}(h]h ](jpfunctioneh"]h$]h&]jjpjjjjjjjuh1hhhhhhNhNubj)}(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]hjubj)}(hhh](j!)}(h:``struct v4l2_subdev *src_sd`` pointer to a source subdev h](j')}(h``struct v4l2_subdev *src_sd``h]j-)}(hjh]hstruct v4l2_subdev *src_sd}(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\hjubjC)}(hhh]j)}(hpointer to a source subdevh]hpointer to a source subdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK\hjubah}(h]h ]h"]h$]h&]uh1jBhjubeh}(h]h ]h"]h$]h&]uh1j hjhK\hjubj!)}(h1``struct media_pad *sink`` pointer to a sink pad h](j')}(h``struct media_pad *sink``h]j-)}(hj4h]hstruct media_pad *sink}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hj2ubah}(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.ubjC)}(hhh]j)}(hpointer to a sink padh]hpointer to a sink pad}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIhK]hjJubah}(h]h ]h"]h$]h&]uh1jBhj.ubeh}(h]h ]h"]h$]h&]uh1j hjIhK]hjubj!)}(h``u32 flags`` the link flags h](j')}(h ``u32 flags``h]j-)}(hjmh]h u32 flags}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j,hjkubah}(h]h ]h"]h$]h&]uh1j&h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhK^hjgubjC)}(hhh]j)}(hthe link flagsh]hthe link flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhK^hjubah}(h]h ]h"]h$]h&]uh1jBhjgubeh}(h]h ]h"]h$]h&]uh1j hjhK^hjubeh}(h]h ]h"]h$]h&]uh1jhjubj)}(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.hhKfhjubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKmhjubah}(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.hhKqhjubeh}(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](h)}(hinth]hint}(hj6 hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj2 hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubh)}(h h]h }(hjE hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2 hhhjD hKubj)}(hv4l2_create_fwnode_linksh]j)}(hv4l2_create_fwnode_linksh]hv4l2_create_fwnode_links}(hjW hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjS ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj2 hhhjD hKubj.)}(h9(struct v4l2_subdev *src_sd, struct v4l2_subdev *sink_sd)h](j4)}(hstruct v4l2_subdev *src_sdh](j:)}(hj=h]hstruct}(hjs hhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hjo ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjo ubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetj modnameN classnameNjvjy)}j|]j)}jrjY sbc.v4l2_create_fwnode_linksasbuh1hhjo ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjo ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo ubj)}(hsrc_sdh]hsrc_sd}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjo ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hjk ubj4)}(hstruct v4l2_subdev *sink_sdh](j:)}(hj=h]hstruct}(hj hhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j)}(h v4l2_subdevh]h v4l2_subdev}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetj modnameN classnameNjvjy)}j|]j c.v4l2_create_fwnode_linksasbuh1hhj ubh)}(h h]h }(hj! hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj/ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hsink_sdh]hsink_sd}(hj< hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hjk ubeh}(h]h ]h"]h$]h&]hhuh1j-hj2 hhhjD hKubeh}(h]h ]h"]h$]h&]hhjuh1hjjhj. hhhjD hKubah}(h]j) ah ](jjeh"]h$]h&]jj)jhuh1hhjD hKhj+ 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.}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKwhjc hhubah}(h]h ]h"]h$]h&]uh1jhj+ hhhjD hKubeh}(h]h ](jpfunctioneh"]h$]h&]jjpjj~ jj~ jjjuh1hhhhhhNhNubj)}(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 ubj)}(hhh](j!)}(h=``struct v4l2_subdev *src_sd`` pointer to a source subdevice h](j')}(h``struct v4l2_subdev *src_sd``h]j-)}(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 ubjC)}(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&]uh1jBhj ubeh}(h]h ]h"]h$]h&]uh1j hj hKzhj ubj!)}(h<``struct v4l2_subdev *sink_sd`` pointer to a sink subdevice h](j')}(h``struct v4l2_subdev *sink_sd``h]j-)}(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 ubjC)}(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&]uh1jBhj ubeh}(h]h ]h"]h$]h&]uh1j hj hK{hj ubeh}(h]h ]h"]h$]h&]uh1jhj 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.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.}(hj1 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.}(hjD hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj@ 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.}(hjY 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](h)}(hinth]hint}(hj hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj hhhj hKubj)}(hv4l2_pipeline_pm_geth]j)}(hv4l2_pipeline_pm_geth]hv4l2_pipeline_pm_get}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj hhhj hKubj.)}(h(struct media_entity *entity)h]j4)}(hstruct media_entity *entityh](j:)}(hj=h]hstruct}(hj hhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubh)}(hhh]j)}(h media_entityh]h media_entity}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetj modnameN classnameNjvjy)}j|]j)}jrj sbc.v4l2_pipeline_pm_getasbuh1hhj ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hentityh]hentity}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hj ubah}(h]h ]h"]h$]h&]hhuh1j-hj 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}(hjH hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjE hhubah}(h]h ]h"]h$]h&]uh1jhj} hhhj hKubeh}(h]h ](jpfunctioneh"]h$]h&]jjpjj` jj` jjjuh1hhhhhhNhNubj)}(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)}(hjj h]h Parameters}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh ubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjd ubj)}(hhh]j!)}(h>``struct media_entity *entity`` The root entity of a pipeline h](j')}(h``struct media_entity *entity``h]j-)}(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 ubjC)}(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&]uh1jBhj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubah}(h]h ]h"]h$]h&]uh1jhjd 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.hhKhjd 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.hhKhjd 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.hhKhjd 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.hhKhjd 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.hhKhjd 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](h)}(hvoidh]hvoid}(hj6 hhhNhNubah}(h]h ]hah"]h$]h&]uh1hhj2 hhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubh)}(h h]h }(hjE hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhj2 hhhjD hKubj)}(hv4l2_pipeline_pm_puth]j)}(hv4l2_pipeline_pm_puth]hv4l2_pipeline_pm_put}(hjW hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjS ubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhj2 hhhjD hKubj.)}(h(struct media_entity *entity)h]j4)}(hstruct media_entity *entityh](j:)}(hj=h]hstruct}(hjs hhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hjo ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjo ubh)}(hhh]j)}(h media_entityh]h media_entity}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetj modnameN classnameNjvjy)}j|]j)}jrjY sbc.v4l2_pipeline_pm_putasbuh1hhjo ubh)}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjo ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjo ubj)}(hentityh]hentity}(hj hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjo ubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hjk ubah}(h]h ]h"]h$]h&]hhuh1j-hj2 hhhjD hKubeh}(h]h ]h"]h$]h&]hhjuh1hjjhj. hhhjD hKubah}(h]j) ah ](jjeh"]h$]h&]jj)jhuh1hhjD 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.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jhj+ hhhjD hKubeh}(h]h ](jpfunctioneh"]h$]h&]jjpjjjjjjjuh1hhhhhhNhNubj)}(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)}(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.hhKhjubj)}(hhh]j!)}(h>``struct media_entity *entity`` The root entity of a pipeline h](j')}(h``struct media_entity *entity``h]j-)}(hj7h]hstruct media_entity *entity}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j,hj5ubah}(h]h ]h"]h$]h&]uh1j&h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhj1ubjC)}(hhh]j)}(hThe root entity of a pipelineh]hThe root entity of a pipeline}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLhKhjMubah}(h]h ]h"]h$]h&]uh1jBhj1ubeh}(h]h ]h"]h$]h&]uh1j hjLhKhj.ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h**Description**h]j)}(hjrh]h Description}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjubj)}(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.hhKhjubj)}(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.hhKhjubj)}(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.hhKhjubeh}(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](h)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjhhh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjhhhjhKubj)}(hv4l2_pipeline_link_notifyh]j)}(hv4l2_pipeline_link_notifyh]hv4l2_pipeline_link_notify}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ](j(j)eh"]h$]h&]hhuh1jhjhhhjhKubj.)}(h?(struct media_link *link, u32 flags, unsigned int notification)h](j4)}(hstruct media_link *linkh](j:)}(hj=h]hstruct}(hjhhhNhNubah}(h]h ]jFah"]h$]h&]uh1j9hjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hhh]j)}(h media_linkh]h media_link}(hj0hhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetj2modnameN classnameNjvjy)}j|]j)}jrjsbc.v4l2_pipeline_link_notifyasbuh1hhjubh)}(h h]h }(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hjh]h*}(hj^hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hlinkh]hlink}(hjkhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hj ubj4)}(h u32 flagsh](h)}(hhh]j)}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjpreftypejr reftargetjmodnameN classnameNjvjy)}j|]jLc.v4l2_pipeline_link_notifyasbuh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hj ubj4)}(hunsigned int notificationh](h)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubh)}(hinth]hint}(hjhhhNhNubah}(h]h ]hah"]h$]h&]uh1hhjubh)}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1hhjubj)}(h notificationh]h notification}(hjhhhNhNubah}(h]h ]j!ah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphhhuh1j3hj ubeh}(h]h ]h"]h$]h&]hhuh1j-hjhhhjhKubeh}(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}(hj.hhhNhNubah}(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 ](jpfunctioneh"]h$]h&]jjpjjFjjFjjjuh1hhhhhhNhNubj)}(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)}(hjPh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjJubj)}(hhh](j!)}(h%``struct media_link *link`` The link h](j')}(h``struct media_link *link``h]j-)}(hjoh]hstruct media_link *link}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j,hjmubah}(h]h ]h"]h$]h&]uh1j&h_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjiubjC)}(hhh]j)}(hThe linkh]hThe link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jBhjiubeh}(h]h ]h"]h$]h&]uh1j hjhKhjfubj!)}(h2``u32 flags`` New link flags that will be applied h](j')}(h ``u32 flags``h]j-)}(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.hhKhjubjC)}(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&]uh1jBhjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjfubj!)}(h]``unsigned int notification`` The link's state change notification type (MEDIA_DEV_NOTIFY_*) h](j')}(h``unsigned int notification``h]j-)}(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.hhKhjubjC)}(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&]uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jBhjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjfubeh}(h]h ]h"]h$]h&]uh1jhjJubj)}(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.hhKhjJubj)}(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.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjJubj)}(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}().}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjJubj)}(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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jh_/var/lib/git/docbuild/linux/Documentation/driver-api/media/v4l2-mc:6: ./include/media/v4l2-mc.hhKhjJubeh}(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_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}jkjhs nametypes}jksh}(jhhhhjjjjj5j:j) j. j{ j j) j. 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.