8sphinx.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/mc-coremodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/zh_TW/driver-api/media/mc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/it_IT/driver-api/media/mc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ja_JP/driver-api/media/mc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/ko_KR/driver-api/media/mc-coremodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/sp_SP/driver-api/media/mc-coremodnameN 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/mc-core.rsthKubhsection)}(hhh](htitle)}(hMedia Controller devicesh]hMedia Controller devices}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hMedia Controllerh]hMedia Controller}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThe media controller userspace API is documented in :ref:`the Media Controller uAPI book `. This document focus on the kernel-side implementation of the media framework.h](h4The media controller userspace API is documented in }(hhhhhNhNubh)}(h8:ref:`the Media Controller uAPI book `h]hinline)}(hhh]hthe Media Controller uAPI book}(hhhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&]refdocdriver-api/media/mc-core refdomainhreftyperef refexplicitrefwarn reftargetmedia_controlleruh1hhhhK hhubhO. This document focus on the kernel-side implementation of the media framework.}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh)}(hhh](h)}(hAbstract media device modelh]hAbstract media device model}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hDiscovering a device internal topology, and configuring it at runtime, is one of the goals of the media framework. To achieve this, hardware devices are modelled as an oriented graph of building blocks called entities connected through pads.h]hDiscovering a device internal topology, and configuring it at runtime, is one of the goals of the media framework. To achieve this, hardware devices are modelled as an oriented graph of building blocks called entities connected through pads.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX(An entity is a basic media hardware building block. It can correspond to a large variety of logical blocks such as physical hardware devices (CMOS sensor for instance), logical hardware devices (a building block in a System-on-Chip image processing pipeline), DMA channels or physical connectors.h]hX(An entity is a basic media hardware building block. It can correspond to a large variety of logical blocks such as physical hardware devices (CMOS sensor for instance), logical hardware devices (a building block in a System-on-Chip image processing pipeline), DMA channels or physical connectors.}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hX A pad is a connection endpoint through which an entity can interact with other entities. Data (not restricted to video) produced by an entity flows from the entity's output to one or more entity inputs. Pads should not be confused with physical pins at chip boundaries.h]hXA pad is a connection endpoint through which an entity can interact with other entities. Data (not restricted to video) produced by an entity flows from the entity’s output to one or more entity inputs. Pads should not be confused with physical pins at chip boundaries.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hA link is a point-to-point oriented connection between two pads, either on the same entity or on different entities. Data flows from a source pad to a sink pad.h]hA link is a point-to-point oriented connection between two pads, either on the same entity or on different entities. Data flows from a source pad to a sink pad.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjhhubeh}(h]abstract-media-device-modelah ]h"]abstract media device modelah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Media deviceh]h Media device}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhhhhhK%ubh)}(hXA media device is represented by a struct media_device instance, defined in ``include/media/media-device.h``. Allocation of the structure is handled by the media device driver, usually by embedding the :c:type:`media_device` instance in a larger driver-specific structure.h](hLA media device is represented by a struct media_device instance, defined in }(hjuhhhNhNubhliteral)}(h ``include/media/media-device.h``h]hinclude/media/media-device.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubh^. Allocation of the structure is handled by the media device driver, usually by embedding the }(hjuhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](hcc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_deviceuh1hhhhK'hjuubh0 instance in a larger driver-specific structure.}(hjuhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK'hjdhhubh)}(hXDrivers initialise media device instances by calling :c:func:`media_device_init()`. After initialising a media device instance, it is registered by calling :c:func:`__media_device_register()` via the macro ``media_device_register()`` and unregistered by calling :c:func:`media_device_unregister()`. An initialised media device must be eventually cleaned up by calling :c:func:`media_device_cleanup()`.h](h5Drivers initialise media device instances by calling }(hjhhhNhNubh)}(h:c:func:`media_device_init()`h]j~)}(hjh]hmedia_device_init()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_inituh1hhhhK-hjubhJ. After initialising a media device instance, it is registered by calling }(hjhhhNhNubh)}(h#:c:func:`__media_device_register()`h]j~)}(hjh]h__media_device_register()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnj__media_device_registeruh1hhhhK-hjubh via the macro }(hjhhhNhNubj~)}(h``media_device_register()``h]hmedia_device_register()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh and unregistered by calling }(hjhhhNhNubh)}(h#:c:func:`media_device_unregister()`h]j~)}(hjh]hmedia_device_unregister()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_unregisteruh1hhhhK-hjubhG. An initialised media device must be eventually cleaned up by calling }(hjhhhNhNubh)}(h :c:func:`media_device_cleanup()`h]j~)}(hj@h]hmedia_device_cleanup()}(hjBhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj>ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_cleanupuh1hhhhK-hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK-hjdhhubh)}(hNote that it is not allowed to unregister a media device instance that was not previously registered, or clean up a media device instance that was not previously initialised.h]hNote that it is not allowed to unregister a media device instance that was not previously registered, or clean up a media device instance that was not previously initialised.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjdhhubeh}(h] media-deviceah ]h"] media deviceah$]h&]uh1hhhhhhhhK%ubh)}(hhh](h)}(hEntitiesh]hEntities}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hhhhhK9ubh)}(hXEntities are represented by a struct media_entity instance, defined in ``include/media/media-entity.h``. The structure is usually embedded into a higher-level structure, such as :c:type:`v4l2_subdev` or :c:type:`video_device` instances, although drivers can allocate entities directly.h](hGEntities are represented by a struct media_entity instance, defined in }(hjhhhNhNubj~)}(h ``include/media/media-entity.h``h]hinclude/media/media-entity.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubhK. The structure is usually embedded into a higher-level structure, such as }(hjhhhNhNubh)}(h:c:type:`v4l2_subdev`h]j~)}(hjh]h v4l2_subdev}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj v4l2_subdevuh1hhhhK;hjubh or }(hjhhhNhNubh)}(h:c:type:`video_device`h]j~)}(hjh]h video_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj video_deviceuh1hhhhK;hjubh< instances, although drivers can allocate entities directly.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK;hj}hhubh)}(hMDrivers initialize entity pads by calling :c:func:`media_entity_pads_init()`.h](h*Drivers initialize entity pads by calling }(hjhhhNhNubh)}(h":c:func:`media_entity_pads_init()`h]j~)}(hjh]hmedia_entity_pads_init()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_entity_pads_inituh1hhhhKAhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKAhj}hhubh)}(hDrivers register entities with a media device by calling :c:func:`media_device_register_entity()` and unregistered by calling :c:func:`media_device_unregister_entity()`.h](h9Drivers register entities with a media device by calling }(hj%hhhNhNubh)}(h(:c:func:`media_device_register_entity()`h]j~)}(hj/h]hmedia_device_register_entity()}(hj1hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj-ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_register_entityuh1hhhhKDhj%ubh and unregistered by calling }(hj%hhhNhNubh)}(h*:c:func:`media_device_unregister_entity()`h]j~)}(hjRh]h media_device_unregister_entity()}(hjThhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjPubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_unregister_entityuh1hhhhKDhj%ubh.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKDhj}hhubeh}(h]entitiesah ]h"]entitiesah$]h&]uh1hhhhhhhhK9ubh)}(hhh](h)}(h Interfacesh]h Interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKJubh)}(hInterfaces are represented by a struct media_interface instance, defined in ``include/media/media-entity.h``. Currently, only one type of interface is defined: a device node. Such interfaces are represented by a struct media_intf_devnode.h](hLInterfaces are represented by a struct media_interface instance, defined in }(hjhhhNhNubj~)}(h ``include/media/media-entity.h``h]hinclude/media/media-entity.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh. Currently, only one type of interface is defined: a device node. Such interfaces are represented by a struct media_intf_devnode.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKLhjhhubh)}(hDrivers initialize and create device node interfaces by calling :c:func:`media_devnode_create()` and remove them by calling: :c:func:`media_devnode_remove()`.h](h@Drivers initialize and create device node interfaces by calling }(hjhhhNhNubh)}(h :c:func:`media_devnode_create()`h]j~)}(hjh]hmedia_devnode_create()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_devnode_createuh1hhhhKRhjubh and remove them by calling: }(hjhhhNhNubh)}(h :c:func:`media_devnode_remove()`h]j~)}(hjh]hmedia_devnode_remove()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_devnode_removeuh1hhhhKRhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKRhjhhubeh}(h] interfacesah ]h"] interfacesah$]h&]uh1hhhhhhhhKJubh)}(hhh](h)}(hPadsh]hPads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKXubh)}(hPads are represented by a struct media_pad instance, defined in ``include/media/media-entity.h``. Each entity stores its pads in a pads array managed by the entity driver. Drivers usually embed the array in a driver-specific structure.h](h@Pads are represented by a struct media_pad instance, defined in }(hjhhhNhNubj~)}(h ``include/media/media-entity.h``h]hinclude/media/media-entity.h}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh. Each entity stores its pads in a pads array managed by the entity driver. Drivers usually embed the array in a driver-specific structure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKYhjhhubh)}(hNPads are identified by their entity and their 0-based index in the pads array.h]hNPads are identified by their entity and their 0-based index in the pads array.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hjhhubh)}(hBoth information are stored in the struct media_pad, making the struct media_pad pointer the canonical way to store and pass link references.h]hBoth information are stored in the struct media_pad, making the struct media_pad pointer the canonical way to store and pass link references.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahjhhubh)}(h=Pads have flags that describe the pad capabilities and state.h]h=Pads have flags that describe the pad capabilities and state.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehjhhubh)}(h``MEDIA_PAD_FL_SINK`` indicates that the pad supports sinking data. ``MEDIA_PAD_FL_SOURCE`` indicates that the pad supports sourcing data.h](j~)}(h``MEDIA_PAD_FL_SINK``h]hMEDIA_PAD_FL_SINK}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiubh/ indicates that the pad supports sinking data. }(hjihhhNhNubj~)}(h``MEDIA_PAD_FL_SOURCE``h]hMEDIA_PAD_FL_SOURCE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiubh/ indicates that the pad supports sourcing data.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKghjhhubhnote)}(h^One and only one of ``MEDIA_PAD_FL_SINK`` or ``MEDIA_PAD_FL_SOURCE`` must be set for each pad.h]h)}(h^One and only one of ``MEDIA_PAD_FL_SINK`` or ``MEDIA_PAD_FL_SOURCE`` must be set for each pad.h](hOne and only one of }(hjhhhNhNubj~)}(h``MEDIA_PAD_FL_SINK``h]hMEDIA_PAD_FL_SINK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh or }(hjhhhNhNubj~)}(h``MEDIA_PAD_FL_SOURCE``h]hMEDIA_PAD_FL_SOURCE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh must be set for each pad.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubeh}(h]padsah ]h"]padsah$]h&]uh1hhhhhhhhKXubh)}(hhh](h)}(hLinksh]hLinks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKpubh)}(hLinks are represented by a struct media_link instance, defined in ``include/media/media-entity.h``. There are two types of links:h](hBLinks are represented by a struct media_link instance, defined in }(hjhhhNhNubj~)}(h ``include/media/media-entity.h``h]hinclude/media/media-entity.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh. There are two types of links:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKrhjhhubh)}(h**1. pad to pad links**:h](hstrong)}(h**1. pad to pad links**h]h1. pad to pad links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKuhjhhubh)}(hAssociate two entities via their PADs. Each entity has a list that points to all links originating at or targeting any of its pads. A given link is thus stored twice, once in the source entity and once in the target entity.h]hAssociate two entities via their PADs. Each entity has a list that points to all links originating at or targeting any of its pads. A given link is thus stored twice, once in the source entity and once in the target entity.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKwhjhhubh)}(hDrivers create pad to pad links by calling: :c:func:`media_create_pad_link()` and remove with :c:func:`media_entity_remove_links()`.h](h,Drivers create pad to pad links by calling: }(hj:hhhNhNubh)}(h!:c:func:`media_create_pad_link()`h]j~)}(hjDh]hmedia_create_pad_link()}(hjFhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjBubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_create_pad_linkuh1hhhhK|hj:ubh and remove with }(hj:hhhNhNubh)}(h%:c:func:`media_entity_remove_links()`h]j~)}(hjgh]hmedia_entity_remove_links()}(hjihhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjeubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_entity_remove_linksuh1hhhhK|hj:ubh.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK|hjhhubh)}(h!**2. interface to entity links**:h](j)}(h **2. interface to entity links**h]h2. interface to entity links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h"Associate one interface to a Link.h]h"Associate one interface to a Link.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hDrivers create interface to entity links by calling: :c:func:`media_create_intf_link()` and remove with :c:func:`media_remove_intf_links()`.h](h5Drivers create interface to entity links by calling: }(hjhhhNhNubh)}(h":c:func:`media_create_intf_link()`h]j~)}(hjh]hmedia_create_intf_link()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_create_intf_linkuh1hhhhKhjubh and remove with }(hjhhhNhNubh)}(h#:c:func:`media_remove_intf_links()`h]j~)}(hjh]hmedia_remove_intf_links()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_remove_intf_linksuh1hhhhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hALinks can only be created after having both ends already created.h]h)}(hjh]hALinks can only be created after having both ends already created.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhjhhhhhNubh)}(hLinks have flags that describe the link capabilities and state. The valid values are described at :c:func:`media_create_pad_link()` and :c:func:`media_create_intf_link()`.h](hbLinks have flags that describe the link capabilities and state. The valid values are described at }(hj#hhhNhNubh)}(h!:c:func:`media_create_pad_link()`h]j~)}(hj-h]hmedia_create_pad_link()}(hj/hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj+ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_create_pad_linkuh1hhhhKhj#ubh and }(hj#hhhNhNubh)}(h":c:func:`media_create_intf_link()`h]j~)}(hjPh]hmedia_create_intf_link()}(hjRhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjNubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_create_intf_linkuh1hhhhKhj#ubh.}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]linksah ]h"]linksah$]h&]uh1hhhhhhhhKpubh)}(hhh](h)}(hGraph traversalh]hGraph traversal}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hbThe media framework provides APIs to traverse media graphs, locating connected entities and links.h]hbThe media framework provides APIs to traverse media graphs, locating connected entities and links.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hTo iterate over all entities belonging to a media device, drivers can use the media_device_for_each_entity macro, defined in ``include/media/media-device.h``.h](h}To iterate over all entities belonging to a media device, drivers can use the media_device_for_each_entity macro, defined in }(hjhhhNhNubj~)}(h ``include/media/media-device.h``h]hinclude/media/media-device.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh literal_block)}(h|struct media_entity *entity; media_device_for_each_entity(entity, mdev) { // entity will point to each entity in turn ... }h]h|struct media_entity *entity; media_device_for_each_entity(entity, mdev) { // entity will point to each entity in turn ... }}hjsbah}(h]h ]h"]h$]h&]hhforcelanguagejhighlight_args}uh1jhhhKhjhhubh)}(hX*Helper functions can be used to find a link between two given pads, or a pad connected to another pad through an enabled link (:c:func:`media_entity_find_link()`, :c:func:`media_pad_remote_pad_first()`, :c:func:`media_entity_remote_source_pad_unique()` and :c:func:`media_pad_remote_pad_unique()`).h](hHelper functions can be used to find a link between two given pads, or a pad connected to another pad through an enabled link (}(hjhhhNhNubh)}(h":c:func:`media_entity_find_link()`h]j~)}(hjh]hmedia_entity_find_link()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_entity_find_linkuh1hhhhKhjubh, }(hjhhhNhNubh)}(h&:c:func:`media_pad_remote_pad_first()`h]j~)}(hjh]hmedia_pad_remote_pad_first()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pad_remote_pad_firstuh1hhhhKhjubh, }(hjhhhNhNubh)}(h1:c:func:`media_entity_remote_source_pad_unique()`h]j~)}(hj"h]h'media_entity_remote_source_pad_unique()}(hj$hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnj%media_entity_remote_source_pad_uniqueuh1hhhhKhjubh and }(hjhhhNhNubh)}(h':c:func:`media_pad_remote_pad_unique()`h]j~)}(hjEh]hmedia_pad_remote_pad_unique()}(hjGhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjCubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pad_remote_pad_uniqueuh1hhhhKhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]graph-traversalah ]h"]graph traversalah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hUse count and power handlingh]hUse count and power handling}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthhhhhKubh)}(hX+Due to the wide differences between drivers regarding power management needs, the media controller does not implement power management. However, the struct media_entity includes a ``use_count`` field that media drivers can use to track the number of users of every entity for power management needs.h](hDue to the wide differences between drivers regarding power management needs, the media controller does not implement power management. However, the struct media_entity includes a }(hjhhhNhNubj~)}(h ``use_count``h]h use_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubhj field that media drivers can use to track the number of users of every entity for power management needs.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjthhubh)}(hThe :c:type:`media_entity`.\ ``use_count`` field is owned by media drivers and must not be touched by entity drivers. Access to the field must be protected by the :c:type:`media_device`.\ ``graph_mutex`` lock.h](hThe }(hjhhhNhNubh)}(h$:c:type:`media_entity`h]j~)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_entityuh1hhhhKhjubh. }(hjhhhNhNubj~)}(h ``use_count``h]h use_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubhy field is owned by media drivers and must not be touched by entity drivers. Access to the field must be protected by the }(hjhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_deviceuh1hhhhKhjubh. }hjsbj~)}(h``graph_mutex``h]h graph_mutex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh lock.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjthhubeh}(h]use-count-and-power-handlingah ]h"]use count and power handlingah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Links setuph]h Links setup}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hhhhhKubh)}(hZLink properties can be modified at runtime by calling :c:func:`media_entity_setup_link()`.h](h6Link properties can be modified at runtime by calling }(hj6hhhNhNubh)}(h#:c:func:`media_entity_setup_link()`h]j~)}(hj@h]hmedia_entity_setup_link()}(hjBhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj>ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_entity_setup_linkuh1hhhhKhj6ubh.}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj%hhubeh}(h] links-setupah ]h"] links setupah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hPipelines and media streamsh]hPipelines and media streams}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohhhhhKubh)}(hXaA media stream is a stream of pixels or metadata originating from one or more source devices (such as a sensors) and flowing through media entity pads towards the final sinks. The stream can be modified on the route by the devices (e.g. scaling or pixel format conversions), or it can be split into multiple branches, or multiple branches can be merged.h]hXaA media stream is a stream of pixels or metadata originating from one or more source devices (such as a sensors) and flowing through media entity pads towards the final sinks. The stream can be modified on the route by the devices (e.g. scaling or pixel format conversions), or it can be split into multiple branches, or multiple branches can be merged.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hXUA media pipeline is a set of media streams which are interdependent. This interdependency can be caused by the hardware (e.g. configuration of a second stream cannot be changed if the first stream has been enabled) or by the driver due to the software design. Most commonly a media pipeline consists of a single stream which does not branch.h]hXUA media pipeline is a set of media streams which are interdependent. This interdependency can be caused by the hardware (e.g. configuration of a second stream cannot be changed if the first stream has been enabled) or by the driver due to the software design. Most commonly a media pipeline consists of a single stream which does not branch.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hWhen starting streaming, drivers must notify all entities in the pipeline to prevent link states from being modified during streaming by calling :c:func:`media_pipeline_start()`.h](hWhen starting streaming, drivers must notify all entities in the pipeline to prevent link states from being modified during streaming by calling }(hjhhhNhNubh)}(h :c:func:`media_pipeline_start()`h]j~)}(hjh]hmedia_pipeline_start()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hPThe function will mark all the pads which are part of the pipeline as streaming.h]hPThe function will mark all the pads which are part of the pipeline as streaming.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hX The struct media_pipeline instance pointed to by the pipe argument will be stored in every pad in the pipeline. Drivers should embed the struct media_pipeline in higher-level pipeline structures and can then access the pipeline through the struct media_pad pipe field.h]hX The struct media_pipeline instance pointed to by the pipe argument will be stored in every pad in the pipeline. Drivers should embed the struct media_pipeline in higher-level pipeline structures and can then access the pipeline through the struct media_pad pipe field.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hCalls to :c:func:`media_pipeline_start()` can be nested. The pipeline pointer must be identical for all nested calls to the function.h](h Calls to }(hjhhhNhNubh)}(h :c:func:`media_pipeline_start()`h]j~)}(hjh]hmedia_pipeline_start()}(hjhhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhjubh\ can be nested. The pipeline pointer must be identical for all nested calls to the function.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hy:c:func:`media_pipeline_start()` may return an error. In that case, it will clean up any of the changes it did by itself.h](h)}(h :c:func:`media_pipeline_start()`h]j~)}(hj h]hmedia_pipeline_start()}(hj" hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhj ubhY may return an error. In that case, it will clean up any of the changes it did by itself.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(h`When stopping the stream, drivers must notify the entities with :c:func:`media_pipeline_stop()`.h](h@When stopping the stream, drivers must notify the entities with }(hjG hhhNhNubh)}(h:c:func:`media_pipeline_stop()`h]j~)}(hjQ h]hmedia_pipeline_stop()}(hjS hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjO ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_stopuh1hhhhKhjG ubh.}(hjG hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hIf multiple calls to :c:func:`media_pipeline_start()` have been made the same number of :c:func:`media_pipeline_stop()` calls are required to stop streaming. The :c:type:`media_entity`.\ ``pipe`` field is reset to ``NULL`` on the last nested stop call.h](hIf multiple calls to }(hjx hhhNhNubh)}(h :c:func:`media_pipeline_start()`h]j~)}(hj h]hmedia_pipeline_start()}(hj hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhjx ubh# have been made the same number of }(hjx hhhNhNubh)}(h:c:func:`media_pipeline_stop()`h]j~)}(hj h]hmedia_pipeline_stop()}(hj hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_stopuh1hhhhKhjx ubh+ calls are required to stop streaming. The }(hjx hhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hj h]h media_entity}(hj hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_entityuh1hhhhKhjx ubh. }(hjx hhhNhNubj~)}(h``pipe``h]hpipe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjx ubh field is reset to }(hjx hhhNhNubj~)}(h``NULL``h]hNULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjx ubh on the last nested stop call.}(hjx hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hLink configuration will fail with ``-EBUSY`` by default if either end of the link is a streaming entity. Links that can be modified while streaming must be marked with the ``MEDIA_LNK_FL_DYNAMIC`` flag.h](h"Link configuration will fail with }(hj hhhNhNubj~)}(h ``-EBUSY``h]h-EBUSY}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubh by default if either end of the link is a streaming entity. Links that can be modified while streaming must be marked with the }(hj hhhNhNubj~)}(h``MEDIA_LNK_FL_DYNAMIC``h]hMEDIA_LNK_FL_DYNAMIC}(hj- hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubh flag.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjohhubh)}(hX If other operations need to be disallowed on streaming entities (such as changing entities configuration parameters) drivers can explicitly check the media_entity stream_count field to find out if an entity is streaming. This operation must be done with the media_device graph_mutex held.h]hX If other operations need to be disallowed on streaming entities (such as changing entities configuration parameters) drivers can explicitly check the media_entity stream_count field to find out if an entity is streaming. This operation must be done with the media_device graph_mutex held.}(hjE hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjohhubeh}(h]pipelines-and-media-streamsah ]h"]pipelines and media streamsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hLink validationh]hLink validation}(hj^ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[ hhhhhKubh)}(hXLink validation is performed by :c:func:`media_pipeline_start()` for any entity which has sink pads in the pipeline. The :c:type:`media_entity`.\ ``link_validate()`` callback is used for that purpose. In ``link_validate()`` callback, entity driver should check that the properties of the source pad of the connected entity and its own sink pad match. It is up to the type of the entity (and in the end, the properties of the hardware) what matching actually means.h](h Link validation is performed by }(hjl hhhNhNubh)}(h :c:func:`media_pipeline_start()`h]j~)}(hjv h]hmedia_pipeline_start()}(hjx hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hjt ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhjl ubh9 for any entity which has sink pads in the pipeline. The }(hjl hhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hj h]h media_entity}(hj hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_entityuh1hhhhKhjl ubh. }(hjl hhhNhNubj~)}(h``link_validate()``h]hlink_validate()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjl ubh' callback is used for that purpose. In }(hjl hhhNhNubj~)}(h``link_validate()``h]hlink_validate()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjl ubh callback, entity driver should check that the properties of the source pad of the connected entity and its own sink pad match. It is up to the type of the entity (and in the end, the properties of the hardware) what matching actually means.}(hjl hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj[ hhubh)}(hSubsystems should facilitate link validation by providing subsystem specific helper functions to provide easy access for commonly needed information, and in the end provide a way to use driver-specific callbacks.h]hSubsystems should facilitate link validation by providing subsystem specific helper functions to provide easy access for commonly needed information, and in the end provide a way to use driver-specific callbacks.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj[ hhubeh}(h]link-validationah ]h"]link validationah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hPipeline traversalh]hPipeline traversal}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMubh)}(hXOnce a pipeline has been constructed with :c:func:`media_pipeline_start()`, drivers can iterate over entities or pads in the pipeline with the :c:macro:´media_pipeline_for_each_entity` and :c:macro:´media_pipeline_for_each_pad` macros. Iterating over pads is straightforward:h](h*Once a pipeline has been constructed with }(hj hhhNhNubh)}(h :c:func:`media_pipeline_start()`h]j~)}(hj h]hmedia_pipeline_start()}(hj hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhMhj ubh, drivers can iterate over entities or pads in the pipeline with the :c:macro:´media_pipeline_for_each_entity` and :c:macro:´media_pipeline_for_each_pad` macros. Iterating over pads is straightforward:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hmedia_pipeline_pad_iter iter; struct media_pad *pad; media_pipeline_for_each_pad(pipe, &iter, pad) { /* 'pad' will point to each pad in turn */ ... }h]hmedia_pipeline_pad_iter iter; struct media_pad *pad; media_pipeline_for_each_pad(pipe, &iter, pad) { /* 'pad' will point to each pad in turn */ ... }}hj< sbah}(h]h ]h"]h$]h&]hhjjjj}uh1jhhhMhj hhubh)}(heTo iterate over entities, the iterator needs to be initialized and cleaned up as an additional steps:h]heTo iterate over entities, the iterator needs to be initialized and cleaned up as an additional steps:}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj hhubj)}(hX/media_pipeline_entity_iter iter; struct media_entity *entity; int ret; ret = media_pipeline_entity_iter_init(pipe, &iter); if (ret) ...; media_pipeline_for_each_entity(pipe, &iter, entity) { /* 'entity' will point to each entity in turn */ ... } media_pipeline_entity_iter_cleanup(&iter);h]hX/media_pipeline_entity_iter iter; struct media_entity *entity; int ret; ret = media_pipeline_entity_iter_init(pipe, &iter); if (ret) ...; media_pipeline_for_each_entity(pipe, &iter, entity) { /* 'entity' will point to each entity in turn */ ... } media_pipeline_entity_iter_cleanup(&iter);}hjY sbah}(h]h ]h"]h$]h&]hhjjjj}uh1jhhhMhj hhubeh}(h]pipeline-traversalah ]h"]pipeline traversalah$]h&]uh1hhhhhhhhMubh)}(hhh](h)}(h%Media Controller Device Allocator APIh]h%Media Controller Device Allocator API}(hjs hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjp hhhhhM'ubh)}(hWhen the media device belongs to more than one driver, the shared media device is allocated with the shared struct device as the key for look ups.h]hWhen the media device belongs to more than one driver, the shared media device is allocated with the shared struct device as the key for look ups.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM)hjp hhubh)}(hXThe shared media device should stay in registered state until the last driver unregisters it. In addition, the media device should be released when all the references are released. Each driver gets a reference to the media device during probe, when it allocates the media device. If media device is already allocated, the allocate API bumps up the refcount and returns the existing media device. The driver puts the reference back in its disconnect routine when it calls :c:func:`media_device_delete()`.h](hXThe shared media device should stay in registered state until the last driver unregisters it. In addition, the media device should be released when all the references are released. Each driver gets a reference to the media device during probe, when it allocates the media device. If media device is already allocated, the allocate API bumps up the refcount and returns the existing media device. The driver puts the reference back in its disconnect routine when it calls }(hj hhhNhNubh)}(h:c:func:`media_device_delete()`h]j~)}(hj h]hmedia_device_delete()}(hj hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_deleteuh1hhhhM,hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM,hjp hhubh)}(hThe media device is unregistered and cleaned up from the kref put handler to ensure that the media device stays in registered state until the last driver unregisters the media device.h]hThe media device is unregistered and cleaned up from the kref put handler to ensure that the media device stays in registered state until the last driver unregisters the media device.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM4hjp hhubh)}(h**Driver Usage**h]j)}(hj h]h Driver Usage}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhhhM8hjp hhubh)}(hDrivers should use the appropriate media-core routines to manage the shared media device life-time handling the two states: 1. allocate -> register -> delete 2. get reference to already registered device -> deleteh]hDrivers should use the appropriate media-core routines to manage the shared media device life-time handling the two states: 1. allocate -> register -> delete 2. get reference to already registered device -> delete}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM:hjp hhubh)}(hncall :c:func:`media_device_delete()` routine to make sure the shared media device delete is handled correctly.h](hcall }(hj hhhNhNubh)}(h:c:func:`media_device_delete()`h]j~)}(hj h]hmedia_device_delete()}(hj hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_deleteuh1hhhhM?hj ubhJ routine to make sure the shared media device delete is handled correctly.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM?hjp hhubh)}(h**driver probe:** Call :c:func:`media_device_usb_allocate()` to allocate or get a reference Call :c:func:`media_device_register()`, if media devnode isn't registeredh](j)}(h**driver probe:**h]h driver probe:}(hj( hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ ubh Call }(hj$ hhhNhNubh)}(h%:c:func:`media_device_usb_allocate()`h]j~)}(hj< h]hmedia_device_usb_allocate()}(hj> hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj: ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_usb_allocateuh1hhhhMBhj$ ubh% to allocate or get a reference Call }(hj$ hhhNhNubh)}(h!:c:func:`media_device_register()`h]j~)}(hj_ h]hmedia_device_register()}(hja hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj] ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_registeruh1hhhhMBhj$ ubh%, if media devnode isn’t registered}(hj$ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMBhjp hhubh)}(h**driver disconnect:** Call :c:func:`media_device_delete()` to free the media_device. Freeing is handled by the kref put handler.h](j)}(h**driver disconnect:**h]hdriver disconnect:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh Call }(hj hhhNhNubh)}(h:c:func:`media_device_delete()`h]j~)}(hj h]hmedia_device_delete()}(hj hhhNhNubah}(h]h ](hjc-funceh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_deleteuh1hhhhMFhj ubhF to free the media_device. Freeing is handled by the kref put handler.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMFhjp hhubeh}(h]%media-controller-device-allocator-apiah ]h"]%media controller device allocator apiah$]h&]uh1hhhhhhhhM'ubh)}(hhh](h)}(hAPI Definitionsh]hAPI Definitions}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhhhMKubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlemedia_entity_notify (C struct)c.media_entity_notifyhNtauh1j hj hhhNhNubhdesc)}(hhh](hdesc_signature)}(hmedia_entity_notifyh]hdesc_signature_line)}(hstruct media_entity_notifyh](hdesc_sig_keyword)}(hstructh]hstruct}(hj hhhNhNubah}(h]h ]kah"]h$]h&]uh1j hj hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKubhdesc_sig_space)}(h h]h }(hj hhhNhNubah}(h]h ]wah"]h$]h&]uh1j hj hhhj hKubh desc_name)}(hmedia_entity_notifyh]h desc_sig_name)}(hj h]hmedia_entity_notify}(hj+ hhhNhNubah}(h]h ]nah"]h$]h&]uh1j) hj% ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j# hj hhhj hKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1j sphinx_line_type declaratorhj hhhj hKubah}(h]j ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j hj hKhj hhubh desc_content)}(hhh]h)}(hMedia Entity Notifyh]hMedia Entity Notify}(hjZ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjW hhubah}(h]h ]h"]h$]h&]uh1jU hj hhhj hKubeh}(h]h ](jstructeh"]h$]h&]domainjobjtypejr desctypejr noindex noindexentrynocontentsentryuh1j hhhj hNhNubh container)}(hX1**Definition**:: struct media_entity_notify { struct list_head list; void *notify_data; void (*notify)(struct media_entity *entity, void *notify_data); }; **Members** ``list`` List head ``notify_data`` Input data to invoke the callback ``notify`` Callback function pointerh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh:}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj~ ubj)}(hstruct media_entity_notify { struct list_head list; void *notify_data; void (*notify)(struct media_entity *entity, void *notify_data); };h]hstruct media_entity_notify { struct list_head list; void *notify_data; void (*notify)(struct media_entity *entity, void *notify_data); };}hj sbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK!hj~ ubh)}(h **Members**h]j)}(hj h]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK'hj~ ubhdefinition_list)}(hhh](hdefinition_list_item)}(h``list`` List head h](hterm)}(h``list``h]j~)}(hj h]hlist}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj ubh definition)}(hhh]h)}(h List headh]h List head}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj )}(h2``notify_data`` Input data to invoke the callback h](j )}(h``notify_data``h]j~)}(hjh]h notify_data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj ubj )}(hhh]h)}(h!Input data to invoke the callbackh]h!Input data to invoke the callback}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hKhj&ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj%hKhj ubj )}(h$``notify`` Callback function pointerh](j )}(h ``notify``h]j~)}(hjIh]hnotify}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjGubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjCubj )}(hhh]h)}(hCallback function pointerh]hCallback function pointer}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK hj_ubah}(h]h ]h"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]uh1j hj^hKhj ubeh}(h]h ]h"]h$]h&]uh1j hj~ ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK#hj hhubh)}(hDrivers may register a callback to take action when new entities get registered with the media device. This handler is intended for creating links between existing entities and should not create entities and register them.h]hDrivers may register a callback to take action when new entities get registered with the media device. This handler is intended for creating links between existing entities and should not create entities and register them.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK hj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device_ops (C struct)c.media_device_opshNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_device_opsh]j )}(hstruct media_device_opsh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK(ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhK(ubj$ )}(hmedia_device_opsh]j* )}(hjh]hmedia_device_ops}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhK(ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhK(ubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhK(hjhhubjV )}(hhh]h)}(hMedia device operationsh]hMedia device operations}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK-hj hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhK(ubeh}(h]h ](jstructeh"]h$]h&]jv jjw j$jx j$jy jz j{ uh1j hhhj hNhNubj} )}(hX>**Definition**:: struct media_device_ops { int (*link_notify)(struct media_link *link, u32 flags, unsigned int notification); struct media_request *(*req_alloc)(struct media_device *mdev); void (*req_free)(struct media_request *req); int (*req_validate)(struct media_request *req); void (*req_queue)(struct media_request *req); }; **Members** ``link_notify`` Link state change notification callback. This callback is called with the graph_mutex held. ``req_alloc`` Allocate a request. Set this if you need to allocate a struct larger then struct media_request. **req_alloc** and **req_free** must either both be set or both be NULL. ``req_free`` Free a request. Set this if **req_alloc** was set as well, leave to NULL otherwise. ``req_validate`` Validate a request, but do not queue yet. The req_queue_mutex lock is held when this op is called. ``req_queue`` Queue a validated request, cannot fail. If something goes wrong when queueing this request then it should be marked as such internally in the driver and any related buffers must eventually return to vb2 with state VB2_BUF_STATE_ERROR. The req_queue_mutex lock is held when this op is called. It is important that vb2 buffer objects are queued last after all other object types are queued: queueing a buffer kickstarts the request processing, so all other objects related to the request (and thus the buffer) must be available to the driver. And once a buffer is queued, then the driver can complete or delete objects from the request before req_queue exits.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh:}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK1hj(ubj)}(hXMstruct media_device_ops { int (*link_notify)(struct media_link *link, u32 flags, unsigned int notification); struct media_request *(*req_alloc)(struct media_device *mdev); void (*req_free)(struct media_request *req); int (*req_validate)(struct media_request *req); void (*req_queue)(struct media_request *req); };h]hXMstruct media_device_ops { int (*link_notify)(struct media_link *link, u32 flags, unsigned int notification); struct media_request *(*req_alloc)(struct media_device *mdev); void (*req_free)(struct media_request *req); int (*req_validate)(struct media_request *req); void (*req_queue)(struct media_request *req); };}hjIsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK3hj(ubh)}(h **Members**h]j)}(hjZh]hMembers}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK;hj(ubj )}(hhh](j )}(hl``link_notify`` Link state change notification callback. This callback is called with the graph_mutex held. h](j )}(h``link_notify``h]j~)}(hjyh]h link_notify}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjwubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK0hjsubj )}(hhh]h)}(h[Link state change notification callback. This callback is called with the graph_mutex held.h]h[Link state change notification callback. This callback is called with the graph_mutex held.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK/hjubah}(h]h ]h"]h$]h&]uh1j hjsubeh}(h]h ]h"]h$]h&]uh1j hjhK0hjpubj )}(h``req_alloc`` Allocate a request. Set this if you need to allocate a struct larger then struct media_request. **req_alloc** and **req_free** must either both be set or both be NULL. h](j )}(h ``req_alloc``h]j~)}(hjh]h req_alloc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK3hjubj )}(hhh]h)}(hAllocate a request. Set this if you need to allocate a struct larger then struct media_request. **req_alloc** and **req_free** must either both be set or both be NULL.h](h`Allocate a request. Set this if you need to allocate a struct larger then struct media_request. }(hjhhhNhNubj)}(h **req_alloc**h]h req_alloc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h **req_free**h]hreq_free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh) must either both be set or both be NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK1hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK3hjpubj )}(ha``req_free`` Free a request. Set this if **req_alloc** was set as well, leave to NULL otherwise. h](j )}(h ``req_free``h]j~)}(hjh]hreq_free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK5hj ubj )}(hhh]h)}(hSFree a request. Set this if **req_alloc** was set as well, leave to NULL otherwise.h](hFree a request. Set this if }(hj*hhhNhNubj)}(h **req_alloc**h]h req_alloc}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubh* was set as well, leave to NULL otherwise.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK4hj'ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj&hK5hjpubj )}(ht``req_validate`` Validate a request, but do not queue yet. The req_queue_mutex lock is held when this op is called. h](j )}(h``req_validate``h]j~)}(hj]h]h req_validate}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj[ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK7hjWubj )}(hhh]h)}(hbValidate a request, but do not queue yet. The req_queue_mutex lock is held when this op is called.h]hbValidate a request, but do not queue yet. The req_queue_mutex lock is held when this op is called.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK6hjsubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhK7hjpubj )}(hX``req_queue`` Queue a validated request, cannot fail. If something goes wrong when queueing this request then it should be marked as such internally in the driver and any related buffers must eventually return to vb2 with state VB2_BUF_STATE_ERROR. The req_queue_mutex lock is held when this op is called. It is important that vb2 buffer objects are queued last after all other object types are queued: queueing a buffer kickstarts the request processing, so all other objects related to the request (and thus the buffer) must be available to the driver. And once a buffer is queued, then the driver can complete or delete objects from the request before req_queue exits.h](j )}(h ``req_queue``h]j~)}(hjh]h req_queue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKAhjubj )}(hhh]h)}(hXQueue a validated request, cannot fail. If something goes wrong when queueing this request then it should be marked as such internally in the driver and any related buffers must eventually return to vb2 with state VB2_BUF_STATE_ERROR. The req_queue_mutex lock is held when this op is called. It is important that vb2 buffer objects are queued last after all other object types are queued: queueing a buffer kickstarts the request processing, so all other objects related to the request (and thus the buffer) must be available to the driver. And once a buffer is queued, then the driver can complete or delete objects from the request before req_queue exits.h]hXQueue a validated request, cannot fail. If something goes wrong when queueing this request then it should be marked as such internally in the driver and any related buffers must eventually return to vb2 with state VB2_BUF_STATE_ERROR. The req_queue_mutex lock is held when this op is called. It is important that vb2 buffer objects are queued last after all other object types are queued: queueing a buffer kickstarts the request processing, so all other objects related to the request (and thus the buffer) must be available to the driver. And once a buffer is queued, then the driver can complete or delete objects from the request before req_queue exits.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK8hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKAhjpubeh}(h]h ]h"]h$]h&]uh1j hj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device (C struct)c.media_devicehNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_deviceh]j )}(hstruct media_deviceh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKHubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKHubj$ )}(h media_deviceh]j* )}(hjh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhKHubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhKHubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhKHhjhhubjV )}(hhh]h)}(h Media deviceh]h Media device}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKMhj0hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhKHubeh}(h]h ](jstructeh"]h$]h&]jv jjw jKjx jKjy jz j{ uh1j hhhj hNhNubj} )}(hX **Definition**:: struct media_device { struct device *dev; struct media_devnode *devnode; char model[32]; char driver_name[32]; char serial[40]; char bus_info[32]; u32 hw_revision; u64 topology_version; u32 id; struct ida entity_internal_idx; int entity_internal_idx_max; struct list_head entities; struct list_head interfaces; struct list_head pads; struct list_head links; struct list_head entity_notify; struct mutex graph_mutex; struct media_graph pm_count_walk; void *source_priv; int (*enable_source)(struct media_entity *entity, struct media_pipeline *pipe); void (*disable_source)(struct media_entity *entity); const struct media_device_ops *ops; struct mutex req_queue_mutex; atomic_t num_requests; atomic_t num_request_objects; struct dentry *media_dir; atomic_t request_id; }; **Members** ``dev`` Parent device ``devnode`` Media device node ``model`` Device model name ``driver_name`` Optional device driver name. If not set, calls to ``MEDIA_IOC_DEVICE_INFO`` will return ``dev->driver->name``. This is needed for USB drivers for example, as otherwise they'll all appear as if the driver name was "usb". ``serial`` Device serial number (optional) ``bus_info`` Unique and stable device location identifier ``hw_revision`` Hardware device revision ``topology_version`` Monotonic counter for storing the version of the graph topology. Should be incremented each time the topology changes. ``id`` Unique ID used on the last registered graph object ``entity_internal_idx`` Unique internal entity ID used by the graph traversal algorithms ``entity_internal_idx_max`` Allocated internal entity indices ``entities`` List of registered entities ``interfaces`` List of registered interfaces ``pads`` List of registered pads ``links`` List of registered links ``entity_notify`` List of registered entity_notify callbacks ``graph_mutex`` Protects access to struct media_device data ``pm_count_walk`` Graph walk for power state walk. Access serialised using graph_mutex. ``source_priv`` Driver Private data for enable/disable source handlers ``enable_source`` Enable Source Handler function pointer ``disable_source`` Disable Source Handler function pointer ``ops`` Operation handler callbacks ``req_queue_mutex`` Serialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming. ``num_requests`` number of associated requests ``num_request_objects`` number of associated request objects ``media_dir`` DebugFS media directory ``request_id`` Used to generate unique request IDsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubh:}(hjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKQhjOubj)}(hXnstruct media_device { struct device *dev; struct media_devnode *devnode; char model[32]; char driver_name[32]; char serial[40]; char bus_info[32]; u32 hw_revision; u64 topology_version; u32 id; struct ida entity_internal_idx; int entity_internal_idx_max; struct list_head entities; struct list_head interfaces; struct list_head pads; struct list_head links; struct list_head entity_notify; struct mutex graph_mutex; struct media_graph pm_count_walk; void *source_priv; int (*enable_source)(struct media_entity *entity, struct media_pipeline *pipe); void (*disable_source)(struct media_entity *entity); const struct media_device_ops *ops; struct mutex req_queue_mutex; atomic_t num_requests; atomic_t num_request_objects; struct dentry *media_dir; atomic_t request_id; };h]hXnstruct media_device { struct device *dev; struct media_devnode *devnode; char model[32]; char driver_name[32]; char serial[40]; char bus_info[32]; u32 hw_revision; u64 topology_version; u32 id; struct ida entity_internal_idx; int entity_internal_idx_max; struct list_head entities; struct list_head interfaces; struct list_head pads; struct list_head links; struct list_head entity_notify; struct mutex graph_mutex; struct media_graph pm_count_walk; void *source_priv; int (*enable_source)(struct media_entity *entity, struct media_pipeline *pipe); void (*disable_source)(struct media_entity *entity); const struct media_device_ops *ops; struct mutex req_queue_mutex; atomic_t num_requests; atomic_t num_request_objects; struct dentry *media_dir; atomic_t request_id; };}hjpsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKShjOubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKqhjOubj )}(hhh](j )}(h``dev`` Parent device h](j )}(h``dev``h]j~)}(hjh]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKOhjubj )}(hhh]h)}(h Parent deviceh]h Parent device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKOhjubj )}(h``devnode`` Media device node h](j )}(h ``devnode``h]j~)}(hjh]hdevnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKPhjubj )}(hhh]h)}(hMedia device nodeh]hMedia device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKPhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKPhjubj )}(h``model`` Device model name h](j )}(h ``model``h]j~)}(hjh]hmodel}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKUhj ubj )}(hhh]h)}(hDevice model nameh]hDevice model name}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hKUhj(ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj'hKUhjubj )}(h``driver_name`` Optional device driver name. If not set, calls to ``MEDIA_IOC_DEVICE_INFO`` will return ``dev->driver->name``. This is needed for USB drivers for example, as otherwise they'll all appear as if the driver name was "usb". h](j )}(h``driver_name``h]j~)}(hjKh]h driver_name}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjIubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKThjEubj )}(hhh]h)}(hOptional device driver name. If not set, calls to ``MEDIA_IOC_DEVICE_INFO`` will return ``dev->driver->name``. This is needed for USB drivers for example, as otherwise they'll all appear as if the driver name was "usb".h](h2Optional device driver name. If not set, calls to }(hjdhhhNhNubj~)}(h``MEDIA_IOC_DEVICE_INFO``h]hMEDIA_IOC_DEVICE_INFO}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubh will return }(hjdhhhNhNubj~)}(h``dev->driver->name``h]hdev->driver->name}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubht. This is needed for USB drivers for example, as otherwise they’ll all appear as if the driver name was “usb”.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKQhjaubah}(h]h ]h"]h$]h&]uh1j hjEubeh}(h]h ]h"]h$]h&]uh1j hj`hKThjubj )}(h+``serial`` Device serial number (optional) h](j )}(h ``serial``h]j~)}(hjh]hserial}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKVhjubj )}(hhh]h)}(hDevice serial number (optional)h]hDevice serial number (optional)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKVhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKVhjubj )}(h:``bus_info`` Unique and stable device location identifier h](j )}(h ``bus_info``h]j~)}(hjh]hbus_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKWhjubj )}(hhh]h)}(h,Unique and stable device location identifierh]h,Unique and stable device location identifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKWhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKWhjubj )}(h)``hw_revision`` Hardware device revision h](j )}(h``hw_revision``h]j~)}(hjh]h hw_revision}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKXhjubj )}(hhh]h)}(hHardware device revisionh]hHardware device revision}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKXhj1ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj0hKXhjubj )}(h``topology_version`` Monotonic counter for storing the version of the graph topology. Should be incremented each time the topology changes. h](j )}(h``topology_version``h]j~)}(hjTh]htopology_version}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjRubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKZhjNubj )}(hhh]h)}(hvMonotonic counter for storing the version of the graph topology. Should be incremented each time the topology changes.h]hvMonotonic counter for storing the version of the graph topology. Should be incremented each time the topology changes.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKYhjjubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjihKZhjubj )}(h:``id`` Unique ID used on the last registered graph object h](j )}(h``id``h]j~)}(hjh]hid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK[hjubj )}(hhh]h)}(h2Unique ID used on the last registered graph objecth]h2Unique ID used on the last registered graph object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK[hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK[hjubj )}(hY``entity_internal_idx`` Unique internal entity ID used by the graph traversal algorithms h](j )}(h``entity_internal_idx``h]j~)}(hjh]hentity_internal_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK]hjubj )}(hhh]h)}(h@Unique internal entity ID used by the graph traversal algorithmsh]h@Unique internal entity ID used by the graph traversal algorithms}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK\hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK]hjubj )}(h>``entity_internal_idx_max`` Allocated internal entity indices h](j )}(h``entity_internal_idx_max``h]j~)}(hjh]hentity_internal_idx_max}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK^hjubj )}(hhh]h)}(h!Allocated internal entity indicesh]h!Allocated internal entity indices}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK^hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK^hjubj )}(h)``entities`` List of registered entities h](j )}(h ``entities``h]j~)}(hj:h]hentities}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK_hj4ubj )}(hhh]h)}(hList of registered entitiesh]hList of registered entities}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhK_hjPubah}(h]h ]h"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]uh1j hjOhK_hjubj )}(h-``interfaces`` List of registered interfaces h](j )}(h``interfaces``h]j~)}(hjsh]h interfaces}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjqubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK`hjmubj )}(hhh]h)}(hList of registered interfacesh]hList of registered interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK`hjubah}(h]h ]h"]h$]h&]uh1j hjmubeh}(h]h ]h"]h$]h&]uh1j hjhK`hjubj )}(h!``pads`` List of registered pads h](j )}(h``pads``h]j~)}(hjh]hpads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKahjubj )}(hhh]h)}(hList of registered padsh]hList of registered pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKahjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKahjubj )}(h#``links`` List of registered links h](j )}(h ``links``h]j~)}(hjh]hlinks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKbhjubj )}(hhh]h)}(hList of registered linksh]hList of registered links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKbhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKbhjubj )}(h=``entity_notify`` List of registered entity_notify callbacks h](j )}(h``entity_notify``h]j~)}(hjh]h entity_notify}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKchjubj )}(hhh]h)}(h*List of registered entity_notify callbacksh]h*List of registered entity_notify callbacks}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKchj4ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj3hKchjubj )}(h<``graph_mutex`` Protects access to struct media_device data h](j )}(h``graph_mutex``h]j~)}(hjWh]h graph_mutex}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjUubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKdhjQubj )}(hhh]h)}(h+Protects access to struct media_device datah]h+Protects access to struct media_device data}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKdhjmubah}(h]h ]h"]h$]h&]uh1j hjQubeh}(h]h ]h"]h$]h&]uh1j hjlhKdhjubj )}(hX``pm_count_walk`` Graph walk for power state walk. Access serialised using graph_mutex. h](j )}(h``pm_count_walk``h]j~)}(hjh]h pm_count_walk}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKfhjubj )}(hhh]h)}(hEGraph walk for power state walk. Access serialised using graph_mutex.h]hEGraph walk for power state walk. Access serialised using graph_mutex.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKehjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKfhjubj )}(hG``source_priv`` Driver Private data for enable/disable source handlers h](j )}(h``source_priv``h]j~)}(hjh]h source_priv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhhjubj )}(hhh]h)}(h6Driver Private data for enable/disable source handlersh]h6Driver Private data for enable/disable source handlers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhhjubj )}(h9``enable_source`` Enable Source Handler function pointer h](j )}(h``enable_source``h]j~)}(hjh]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKihjubj )}(hhh]h)}(h&Enable Source Handler function pointerh]h&Enable Source Handler function pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKihjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKihjubj )}(h;``disable_source`` Disable Source Handler function pointer h](j )}(h``disable_source``h]j~)}(hj<h]hdisable_source}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKjhj6ubj )}(hhh]h)}(h'Disable Source Handler function pointerh]h'Disable Source Handler function pointer}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKjhjRubah}(h]h ]h"]h$]h&]uh1j hj6ubeh}(h]h ]h"]h$]h&]uh1j hjQhKjhjubj )}(h$``ops`` Operation handler callbacks h](j )}(h``ops``h]j~)}(hjuh]hops}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjsubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKlhjoubj )}(hhh]h)}(hOperation handler callbacksh]hOperation handler callbacks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKlhjubah}(h]h ]h"]h$]h&]uh1j hjoubeh}(h]h ]h"]h$]h&]uh1j hjhKlhjubj )}(hv``req_queue_mutex`` Serialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming. h](j )}(h``req_queue_mutex``h]j~)}(hjh]hreq_queue_mutex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKnhjubj )}(hhh]h)}(haSerialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming.h]haSerialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKmhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKnhjubj )}(h/``num_requests`` number of associated requests h](j )}(h``num_requests``h]j~)}(hjh]h num_requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKohjubj )}(hhh]h)}(hnumber of associated requestsh]hnumber of associated requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKohjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKohjubj )}(h=``num_request_objects`` number of associated request objects h](j )}(h``num_request_objects``h]j~)}(hj!h]hnum_request_objects}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKphjubj )}(hhh]h)}(h$number of associated request objectsh]h$number of associated request objects}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj6hKphj7ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj6hKphjubj )}(h&``media_dir`` DebugFS media directory h](j )}(h ``media_dir``h]j~)}(hjZh]h media_dir}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKqhjTubj )}(hhh]h)}(hDebugFS media directoryh]hDebugFS media directory}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohKqhjpubah}(h]h ]h"]h$]h&]uh1j hjTubeh}(h]h ]h"]h$]h&]uh1j hjohKqhjubj )}(h2``request_id`` Used to generate unique request IDsh](j )}(h``request_id``h]j~)}(hjh]h request_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKqhjubj )}(hhh]h)}(h#Used to generate unique request IDsh]h#Used to generate unique request IDs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKrhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKqhjubeh}(h]h ]h"]h$]h&]uh1j hjOubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKuhj hhubh)}(hThis structure represents an abstract high-level media device. It allows easy access to entities and provides basic media device-level support. The structure can be allocated directly or embedded in a larger structure.h]hThis structure represents an abstract high-level media device. It allows easy access to entities and provides basic media device-level support. The structure can be allocated directly or embedded in a larger structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKrhj hhubh)}(h\The parent **dev** is a physical device. It must be set before registering the media device.h](h The parent }(hjhhhNhNubj)}(h**dev**h]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhJ is a physical device. It must be set before registering the media device.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKvhj hhubh)}(h[**model** is a descriptive model name exported through sysfs. It doesn't have to be unique.h](j)}(h **model**h]hmodel}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhT is a descriptive model name exported through sysfs. It doesn’t have to be unique.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKyhj hhubh)}(h**enable_source** is a handler to find source entity for the sink entity and activate the link between them if source entity is free. Drivers should call this handler before accessing the source.h](j)}(h**enable_source**h]h enable_source}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh is a handler to find source entity for the sink entity and activate the link between them if source entity is free. Drivers should call this handler before accessing the source.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK|hj hhubh)}(h**disable_source** is a handler to find source entity for the sink entity and deactivate the link between them. Drivers should call this handler to release the source.h](j)}(h**disable_source**h]hdisable_source}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh is a handler to find source entity for the sink entity and deactivate the link between them. Drivers should call this handler to release the source.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj hhubh)}(hUse-case: find tuner entity connected to the decoder entity and check if it is available, and activate the link between them from **enable_source** and deactivate from **disable_source**.h](hUse-case: find tuner entity connected to the decoder entity and check if it is available, and activate the link between them from }(hjshhhNhNubj)}(h**enable_source**h]h enable_source}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh and deactivate from }(hjshhhNhNubj)}(h**disable_source**h]hdisable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubh.}(hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj hhubj)}(hXyBridge driver is expected to implement and set the handler when :c:type:`media_device` is registered or when bridge driver finds the media_device during probe. Bridge driver sets source_priv with information necessary to run **enable_source** and **disable_source** handlers. Callers should hold graph_mutex to access and call **enable_source** and **disable_source** handlers.h]h)}(hXyBridge driver is expected to implement and set the handler when :c:type:`media_device` is registered or when bridge driver finds the media_device during probe. Bridge driver sets source_priv with information necessary to run **enable_source** and **disable_source** handlers. Callers should hold graph_mutex to access and call **enable_source** and **disable_source** handlers.h](h@Bridge driver is expected to implement and set the handler when }(hjhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sbj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh is registered or when bridge driver finds the media_device during probe. Bridge driver sets source_priv with information necessary to run }(hjhhhNhNubj)}(h**enable_source**h]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**disable_source**h]hdisable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh> handlers. Callers should hold graph_mutex to access and call }(hjhhhNhNubj)}(h**enable_source**h]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**disable_source**h]hdisable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh handlers.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device_init (C function)c.media_device_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(h2void media_device_init (struct media_device *mdev)h]j )}(h1void media_device_init(struct media_device *mdev)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjMhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jKhjGhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKubj )}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGhhhj\hKubj$ )}(hmedia_device_inith]j* )}(hmedia_device_inith]hmedia_device_init}(hjohhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjkubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjGhhhj\hKubhdesc_parameterlist)}(h(struct media_device *mdev)h]hdesc_parameter)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameNjj)}j]j ASTIdentifier)}jjqsbc.media_device_initasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjGhhhj\hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjChhhj\hKubah}(h]j>ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj\hKhj@hhubjV )}(hhh]h)}(h"Initializes a media device elementh]h"Initializes a media device element}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jU hj@hhhj\hKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j1jx j1jy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` **Description** This function initializes the media device prior to its registration. The media device initialization and registration is split in two functions to avoid race conditions and make the media device available to user-space before the media graph has been completed. So drivers need to first initialize the media device, register any entity within the media device, create pad to pad links and then finally register the media device by calling media_device_register() as a final step. The caller is responsible for initializing the media device before registration. The following fields must be set: - dev must point to the parent device - model must be filled with the device model name The bus_info field is set by media_device_init() for PCI and platform devices if the field begins with '\0'.h](h)}(h**Parameters**h]j)}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj5ubj )}(hhh]j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hjZh]hstruct media_device *mdev}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjTubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjshhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj}h]h media_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj{ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjohKhjsubeh}(h]h ]h"]h$]h&]uh1hhjohKhjpubah}(h]h ]h"]h$]h&]uh1j hjTubeh}(h]h ]h"]h$]h&]uh1j hjohKhjQubah}(h]h ]h"]h$]h&]uh1j hj5ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj5ubh)}(hXThis function initializes the media device prior to its registration. The media device initialization and registration is split in two functions to avoid race conditions and make the media device available to user-space before the media graph has been completed.h]hXThis function initializes the media device prior to its registration. The media device initialization and registration is split in two functions to avoid race conditions and make the media device available to user-space before the media graph has been completed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj5ubh)}(hSo drivers need to first initialize the media device, register any entity within the media device, create pad to pad links and then finally register the media device by calling media_device_register() as a final step.h]hSo drivers need to first initialize the media device, register any entity within the media device, create pad to pad links and then finally register the media device by calling media_device_register() as a final step.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj5ubh)}(hrThe caller is responsible for initializing the media device before registration. The following fields must be set:h]hrThe caller is responsible for initializing the media device before registration. The following fields must be set:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj5ubh bullet_list)}(hhh](h list_item)}(h#dev must point to the parent deviceh]h)}(hjh]h#dev must point to the parent device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h0model must be filled with the device model name h]h)}(h/model must be filled with the device model nameh]h/model must be filled with the device model name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhjhKhj5ubh)}(hlThe bus_info field is set by media_device_init() for PCI and platform devices if the field begins with '\0'.h]hpThe bus_info field is set by media_device_init() for PCI and platform devices if the field begins with ‘0’.}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj5ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j !media_device_cleanup (C function)c.media_device_cleanuphNtauh1j hj hhhNhNubj )}(hhh](j )}(h5void media_device_cleanup (struct media_device *mdev)h]j )}(h4void media_device_cleanup(struct media_device *mdev)h](jL)}(hvoidh]hvoid}(hjfhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjbhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbhhhjthKubj$ )}(hmedia_device_cleanuph]j* )}(hmedia_device_cleanuph]hmedia_device_cleanup}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjbhhhjthKubj)}(h(struct media_device *mdev)h]j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_device_cleanupasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjbhhhjthKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj^hhhjthKubah}(h]jYah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjthKhj[hhubjV )}(hhh]h)}(hCleanups a media device elementh]hCleanups a media device element}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj#hhubah}(h]h ]h"]h$]h&]uh1jU hj[hhhjthKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j>jx j>jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` **Description** This function that will destroy the graph_mutex that is initialized in media_device_init().h](h)}(h**Parameters**h]j)}(hjHh]h Parameters}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjBubj )}(hhh]j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hjgh]hstruct media_device *mdev}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjeubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjaubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj|hKhjubeh}(h]h ]h"]h$]h&]uh1hhj|hKhj}ubah}(h]h ]h"]h$]h&]uh1j hjaubeh}(h]h ]h"]h$]h&]uh1j hj|hKhj^ubah}(h]h ]h"]h$]h&]uh1j hjBubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjBubh)}(h[This function that will destroy the graph_mutex that is initialized in media_device_init().h]h[This function that will destroy the graph_mutex that is initialized in media_device_init().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjBubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j $__media_device_register (C function)c.__media_device_registerhNtauh1j hj hhhNhNubj )}(hhh](j )}(hMint __media_device_register (struct media_device *mdev, struct module *owner)h]j )}(hLint __media_device_register(struct media_device *mdev, struct module *owner)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKubj$ )}(h__media_device_registerh]j* )}(h__media_device_registerh]h__media_device_register}(hj'hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhKubj)}(h1(struct media_device *mdev, struct module *owner)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubj )}(h h]h }(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjahhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNjj)}j]j)}jj)sbc.__media_device_registerasbuh1hhj?ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubj)}(hstruct module *ownerh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmoduleh]hmodule}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j}c.__media_device_registerasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hownerh]howner}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhKubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhKhjhhubjV )}(hhh]h)}(h Registers a media device elementh]h Registers a media device element}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj3hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jNjx jNjy jz j{ uh1j hhhj hNhNubj} )}(hXl**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` ``struct module *owner`` should be filled with ``THIS_MODULE`` **Description** Users, should, instead, call the media_device_register() macro. The caller is responsible for initializing the :c:type:`media_device` structure before registration. The following fields of :c:type:`media_device` must be set: - :c:type:`media_device.model ` must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field. The following fields are optional: - :c:type:`media_device.serial ` is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn't provide a unique serial number this field must be left empty. - :c:type:`media_device.bus_info ` represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices :c:type:`media_device.bus_info ` must be set to "PCI:" (or "PCIe:") followed by the value of pci_name(). For USB devices,the usb_make_path() function must be used. This field is used by applications to distinguish between otherwise identical devices that don't provide a serial number. - :c:type:`media_device.hw_revision ` is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro. .. note:: #) Upon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute. #) Unregistering a media device that hasn't been registered is **NOT** safe. **Return** returns zero on success or a negative error code.h](h)}(h**Parameters**h]j)}(hjXh]h Parameters}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjRubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hjwh]hstruct media_device *mdev}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjqubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjqubeh}(h]h ]h"]h$]h&]uh1j hjhKhjnubj )}(h?``struct module *owner`` should be filled with ``THIS_MODULE`` h](j )}(h``struct module *owner``h]j~)}(hjh]hstruct module *owner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubj )}(hhh]h)}(h%should be filled with ``THIS_MODULE``h](hshould be filled with }(hjhhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjnubeh}(h]h ]h"]h$]h&]uh1j hjRubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjRubh)}(h?Users, should, instead, call the media_device_register() macro.h]h?Users, should, instead, call the media_device_register() macro.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjRubh)}(hThe caller is responsible for initializing the :c:type:`media_device` structure before registration. The following fields of :c:type:`media_device` must be set:h](h/The caller is responsible for initializing the }(hj=hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjGh]h media_device}(hjIhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjEubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj=ubh8 structure before registration. The following fields of }(hj=hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjkh]h media_device}(hjmhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjiubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjdhKhj=ubh must be set:}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjdhKhjRubh block_quote)}(h- :c:type:`media_device.model ` must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field. h]j)}(hhh]j)}(h:c:type:`media_device.model ` must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field. h]h)}(h:c:type:`media_device.model ` must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field.h](h)}(h+:c:type:`media_device.model `h]j~)}(hjh]hmedia_device.model}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]j5j6uh1jhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjRubh)}(h"The following fields are optional:h]h"The following fields are optional:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjRubj)}(hX- :c:type:`media_device.serial ` is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn't provide a unique serial number this field must be left empty. - :c:type:`media_device.bus_info ` represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices :c:type:`media_device.bus_info ` must be set to "PCI:" (or "PCIe:") followed by the value of pci_name(). For USB devices,the usb_make_path() function must be used. This field is used by applications to distinguish between otherwise identical devices that don't provide a serial number. - :c:type:`media_device.hw_revision ` is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro. h]j)}(hhh](j)}(h:c:type:`media_device.serial ` is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn't provide a unique serial number this field must be left empty. h]h)}(h:c:type:`media_device.serial ` is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn't provide a unique serial number this field must be left empty.h](h)}(h,:c:type:`media_device.serial `h]j~)}(hjh]hmedia_device.serial}(hj hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn’t provide a unique serial number this field must be left empty.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(hX:c:type:`media_device.bus_info ` represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices :c:type:`media_device.bus_info ` must be set to "PCI:" (or "PCIe:") followed by the value of pci_name(). For USB devices,the usb_make_path() function must be used. This field is used by applications to distinguish between otherwise identical devices that don't provide a serial number. h]h)}(hX:c:type:`media_device.bus_info ` represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices :c:type:`media_device.bus_info ` must be set to "PCI:" (or "PCIe:") followed by the value of pci_name(). For USB devices,the usb_make_path() function must be used. This field is used by applications to distinguish between otherwise identical devices that don't provide a serial number.h](h)}(h.:c:type:`media_device.bus_info `h]j~)}(hj7 h]hmedia_device.bus_info}(hj9 hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj5 ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj1 ubhl represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices }(hj1 hhhNhNubh)}(h.:c:type:`media_device.bus_info `h]j~)}(hj[ h]hmedia_device.bus_info}(hj] hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjY ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjT hMhj1 ubhX must be set to “PCI:” (or “PCIe:”) followed by the value of pci_name(). For USB devices,the usb_make_path() function must be used. This field is used by applications to distinguish between otherwise identical devices that don’t provide a serial number.}(hj1 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjT hMhj- ubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h:c:type:`media_device.hw_revision ` is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro. h]h)}(h:c:type:`media_device.hw_revision ` is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro.h](h)}(h1:c:type:`media_device.hw_revision `h]j~)}(hj h]hmedia_device.hw_revision}(hj hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM hj ubh is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]j5j6uh1jhj hKhjubah}(h]h ]h"]h$]h&]uh1jhj hKhjRubj)}(h#) Upon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute. #) Unregistering a media device that hasn't been registered is **NOT** safe.h]henumerated_list)}(hhh](j)}(hUpon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute. h]h)}(hUpon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute.h]hUpon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hIUnregistering a media device that hasn't been registered is **NOT** safe.h]h)}(hj h](h>Unregistering a media device that hasn’t been registered is }(hj hhhNhNubj)}(h**NOT**h]hNOT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh safe.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhjRubh)}(h **Return**h]j)}(hj+!h]hReturn}(hj-!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)!ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjRubh)}(h1returns zero on success or a negative error code.h]h1returns zero on success or a negative error code.}(hjA!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjRubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device_register (C macro)c.media_device_registerhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_device_registerh]j )}(hmedia_device_registerh]j$ )}(hmedia_device_registerh]j* )}(hjj!h]hmedia_device_register}(hjt!hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjp!ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjl!hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjh!hhhj!hMubah}(h]jc!ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj!hMhje!hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hje!hhhj!hMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw j!jx j!jy jz j{ uh1j hhhj hNhNubh)}(h ``media_device_register (mdev)``h]j~)}(hj!h]hmedia_device_register (mdev)}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj hhubj)}(h!Registers a media device element h]h)}(h Registers a media device elementh]h Registers a media device element}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj!ubah}(h]h ]h"]h$]h&]uh1jhj!hMhj hhubj} )}(h**Parameters** ``mdev`` pointer to struct :c:type:`media_device` **Description** This macro calls __media_device_register() passing ``THIS_MODULE`` as the __media_device_register() second argument (**owner**).h](h)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM hj!ubj )}(hhh]j )}(h2``mdev`` pointer to struct :c:type:`media_device` h](j )}(h``mdev``h]j~)}(hj!h]hmdev}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj!ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj"hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj"h]h media_device}(hj"hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj"ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj"hMhj"ubeh}(h]h ]h"]h$]h&]uh1hhj"hMhj"ubah}(h]h ]h"]h$]h&]uh1j hj!ubeh}(h]h ]h"]h$]h&]uh1j hj"hMhj!ubah}(h]h ]h"]h$]h&]uh1j hj!ubh)}(h**Description**h]j)}(hjT"h]h Description}(hjV"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR"ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM hj!ubh)}(hThis macro calls __media_device_register() passing ``THIS_MODULE`` as the __media_device_register() second argument (**owner**).h](h3This macro calls __media_device_register() passing }(hjj"hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hjr"hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjj"ubh3 as the __media_device_register() second argument (}(hjj"hhhNhNubj)}(h **owner**h]howner}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj"ubh).}(hjj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j $media_device_unregister (C function)c.media_device_unregisterhNtauh1j hj hhhNhNubj )}(hhh](j )}(h8void media_device_unregister (struct media_device *mdev)h]j )}(h7void media_device_unregister(struct media_device *mdev)h](jL)}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj"hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM&ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"hhhj"hM&ubj$ )}(hmedia_device_unregisterh]j* )}(hmedia_device_unregisterh]hmedia_device_unregister}(hj"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj"hhhj"hM&ubj)}(h(struct media_device *mdev)h]j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj#hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j)}jj"sbc.media_device_unregisterasbuh1hhj"ubj )}(h h]h }(hj8#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj)}(hjh]h*}(hjF#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj* )}(hmdevh]hmdev}(hjS#hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubah}(h]h ]h"]h$]h&]hhuh1jhj"hhhj"hM&ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj"hhhj"hM&ubah}(h]j"ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj"hM&hj"hhubjV )}(hhh]h)}(h"Unregisters a media device elementh]h"Unregisters a media device element}(hj}#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM&hjz#hhubah}(h]h ]h"]h$]h&]uh1jU hj"hhhj"hM&ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j#jx j#jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` **Description** It is safe to call this function on an unregistered (but initialised) media device.h](h)}(h**Parameters**h]j)}(hj#h]h Parameters}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM*hj#ubj )}(hhh]j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hj#h]hstruct media_device *mdev}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj#ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM(hj#ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj#hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj#h]h media_device}(hj#hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj#ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj#hM(hj#ubeh}(h]h ]h"]h$]h&]uh1hhj#hM(hj#ubah}(h]h ]h"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]uh1j hj#hM(hj#ubah}(h]h ]h"]h$]h&]uh1j hj#ubh)}(h**Description**h]j)}(hj$h]h Description}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM*hj#ubh)}(hSIt is safe to call this function on an unregistered (but initialised) media device.h]hSIt is safe to call this function on an unregistered (but initialised) media device.}(hj.$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM)hj#ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j )media_device_register_entity (C function)c.media_device_register_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(hYint media_device_register_entity (struct media_device *mdev, struct media_entity *entity)h]j )}(hXint media_device_register_entity(struct media_device *mdev, struct media_entity *entity)h](jL)}(hinth]hint}(hj]$hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjY$hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM0ubj )}(h h]h }(hjl$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjY$hhhjk$hM0ubj$ )}(hmedia_device_register_entityh]j* )}(hmedia_device_register_entityh]hmedia_device_register_entity}(hj~$hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjz$ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjY$hhhjk$hM0ubj)}(h8(struct media_device *mdev, struct media_entity *entity)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj$hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j]j)}jj$sbc.media_device_register_entityasbuh1hhj$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj* )}(hmdevh]hmdev}(hj$hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubj)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj %hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%ubj )}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%ubh)}(hhh]j* )}(h media_entityh]h media_entity}(hj*%hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,%modnameN classnameNjj)}j]j$c.media_device_register_entityasbuh1hhj%ubj )}(h h]h }(hjH%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%ubj)}(hjh]h*}(hjV%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj* )}(hentityh]hentity}(hjc%hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubeh}(h]h ]h"]h$]h&]hhuh1jhjY$hhhjk$hM0ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjU$hhhjk$hM0ubah}(h]jP$ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjk$hM0hjR$hhubjV )}(hhh]h)}(hEregisters a media entity inside a previously registered media device.h]hEregisters a media entity inside a previously registered media device.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM0hj%hhubah}(h]h ]h"]h$]h&]uh1jU hjR$hhhjk$hM0ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j%jx j%jy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` ``struct media_entity *entity`` pointer to struct :c:type:`media_entity` to be registered **Description** Entities are identified by a unique positive integer ID. The media controller framework will such ID automatically. IDs are not guaranteed to be contiguous, and the ID number can change on newer Kernel versions. So, neither the driver nor userspace should hardcode ID numbers to refer to the entities, but, instead, use the framework to find the ID, when needed. The media_entity name, type and flags fields should be initialized before calling media_device_register_entity(). Entities embedded in higher-level standard structures can have some of those fields set by the higher-level framework. If the device has pads, media_entity_pads_init() should be called before this function. Otherwise, the :c:type:`media_entity.pad ` and :c:type:`media_entity.num_pads ` should be zeroed before calling this function. Entities have flags that describe the entity capabilities and state: ``MEDIA_ENT_FL_DEFAULT`` indicates the default entity for a given type. This can be used to report the default audio and video devices or the default camera sensor. .. note:: Drivers should set the entity function before calling this function. Please notice that the values ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN`` and ``MEDIA_ENT_F_UNKNOWN`` should not be used by the drivers.h](h)}(h**Parameters**h]j)}(hj%h]h Parameters}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM4hj%ubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hj%h]hstruct media_device *mdev}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj%ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM3hj%ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj%hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj%h]h media_device}(hj%hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj%ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj%hM3hj%ubeh}(h]h ]h"]h$]h&]uh1hhj%hM3hj%ubah}(h]h ]h"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%hM3hj%ubj )}(hZ``struct media_entity *entity`` pointer to struct :c:type:`media_entity` to be registered 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 hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM4hj &ubj )}(hhh]h)}(h9pointer to struct :c:type:`media_entity` to be registeredh](hpointer to struct }(hj?&hhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjI&h]h media_entity}(hjK&hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjG&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj;&hM4hj?&ubh to be registered}(hj?&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;&hM4hj<&ubah}(h]h ]h"]h$]h&]uh1j hj &ubeh}(h]h ]h"]h$]h&]uh1j hj;&hM4hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%ubh)}(h**Description**h]j)}(hj&h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM6hj%ubh)}(hXjEntities are identified by a unique positive integer ID. The media controller framework will such ID automatically. IDs are not guaranteed to be contiguous, and the ID number can change on newer Kernel versions. So, neither the driver nor userspace should hardcode ID numbers to refer to the entities, but, instead, use the framework to find the ID, when needed.h]hXjEntities are identified by a unique positive integer ID. The media controller framework will such ID automatically. IDs are not guaranteed to be contiguous, and the ID number can change on newer Kernel versions. So, neither the driver nor userspace should hardcode ID numbers to refer to the entities, but, instead, use the framework to find the ID, when needed.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM5hj%ubh)}(hThe media_entity name, type and flags fields should be initialized before calling media_device_register_entity(). Entities embedded in higher-level standard structures can have some of those fields set by the higher-level framework.h]hThe media_entity name, type and flags fields should be initialized before calling media_device_register_entity(). Entities embedded in higher-level standard structures can have some of those fields set by the higher-level framework.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM<hj%ubh)}(hIf the device has pads, media_entity_pads_init() should be called before this function. Otherwise, the :c:type:`media_entity.pad ` and :c:type:`media_entity.num_pads ` should be zeroed before calling this function.h](hgIf the device has pads, media_entity_pads_init() should be called before this function. Otherwise, the }(hj&hhhNhNubh)}(h):c:type:`media_entity.pad `h]j~)}(hj&h]hmedia_entity.pad}(hj&hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMAhj&ubh and }(hj&hhhNhNubh)}(h.:c:type:`media_entity.num_pads `h]j~)}(hj&h]hmedia_entity.num_pads}(hj&hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj&hMAhj&ubh/ should be zeroed before calling this function.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj&hMAhj%ubh)}(hDEntities have flags that describe the entity capabilities and state:h]hDEntities have flags that describe the entity capabilities and state:}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMEhj%ubj )}(hhh]j )}(h``MEDIA_ENT_FL_DEFAULT`` indicates the default entity for a given type. This can be used to report the default audio and video devices or the default camera sensor. h](j )}(h``MEDIA_ENT_FL_DEFAULT``h]j~)}(hj%'h]hMEDIA_ENT_FL_DEFAULT}(hj''hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj#'ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMJhj'ubj )}(hhh]h)}(hindicates the default entity for a given type. This can be used to report the default audio and video devices or the default camera sensor.h]hindicates the default entity for a given type. This can be used to report the default audio and video devices or the default camera sensor.}(hj>'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMHhj;'ubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hj:'hMJhj'ubah}(h]h ]h"]h$]h&]uh1j hj%ubj)}(hDrivers should set the entity function before calling this function. Please notice that the values ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN`` and ``MEDIA_ENT_F_UNKNOWN`` should not be used by the drivers.h]h)}(hDrivers should set the entity function before calling this function. Please notice that the values ``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN`` and ``MEDIA_ENT_F_UNKNOWN`` should not be used by the drivers.h](hcDrivers should set the entity function before calling this function. Please notice that the values }(hjc'hhhNhNubj~)}(h#``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``h]hMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN}(hjk'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjc'ubh and }(hjc'hhhNhNubj~)}(h``MEDIA_ENT_F_UNKNOWN``h]hMEDIA_ENT_F_UNKNOWN}(hj}'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjc'ubh# should not be used by the drivers.}(hjc'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMNhj_'ubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j +media_device_unregister_entity (C function) c.media_device_unregister_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(hAvoid media_device_unregister_entity (struct media_entity *entity)h]j )}(h@void media_device_unregister_entity(struct media_entity *entity)h](jL)}(hvoidh]hvoid}(hj'hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj'hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMWubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'hhhj'hMWubj$ )}(hmedia_device_unregister_entityh]j* )}(hmedia_device_unregister_entityh]hmedia_device_unregister_entity}(hj'hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj'hhhj'hMWubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubh)}(hhh]j* )}(h media_entityh]h media_entity}(hj(hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj(ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(modnameN classnameNjj)}j]j)}jj'sb c.media_device_unregister_entityasbuh1hhj'ubj )}(h h]h }(hj7(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubj)}(hjh]h*}(hjE(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj* )}(hentityh]hentity}(hjR(hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj'ubah}(h]h ]h"]h$]h&]hhuh1jhj'hhhj'hMWubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj'hhhj'hMWubah}(h]j'ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj'hMWhj'hhubjV )}(hhh]h)}(hunregisters a media entity.h]hunregisters a media entity.}(hj|(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMWhjy(hhubah}(h]h ]h"]h$]h&]uh1jU hj'hhhj'hMWubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j(jx j(jy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *entity`` pointer to struct :c:type:`media_entity` to be unregistered **Description** All links associated with the entity and all PADs are automatically unregistered from the media_device when this function is called. Unregistering an entity will not change the IDs of the other entities and the previoully used ID will never be reused for a newly registered entities. When a media device is unregistered, all its entities are unregistered automatically. No manual entities unregistration is then required. .. note:: The media_entity instance itself must be freed explicitly by the driver if required.h](h)}(h**Parameters**h]j)}(hj(h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM[hj(ubj )}(hhh]j )}(h\``struct media_entity *entity`` pointer to struct :c:type:`media_entity` to be unregistered 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 hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMYhj(ubj )}(hhh]h)}(h;pointer to struct :c:type:`media_entity` to be unregisteredh](hpointer to struct }(hj(hhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hj(h]h media_entity}(hj(hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj(ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj(hMYhj(ubh to be unregistered}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj(hMYhj(ubah}(h]h ]h"]h$]h&]uh1j hj(ubeh}(h]h ]h"]h$]h&]uh1j hj(hMYhj(ubah}(h]h ]h"]h$]h&]uh1j hj(ubh)}(h**Description**h]j)}(hj)h]h Description}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM[hj(ubh)}(hAll links associated with the entity and all PADs are automatically unregistered from the media_device when this function is called.h]hAll links associated with the entity and all PADs are automatically unregistered from the media_device when this function is called.}(hj1)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMZhj(ubh)}(hUnregistering an entity will not change the IDs of the other entities and the previoully used ID will never be reused for a newly registered entities.h]hUnregistering an entity will not change the IDs of the other entities and the previoully used ID will never be reused for a newly registered entities.}(hj@)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM]hj(ubh)}(hWhen a media device is unregistered, all its entities are unregistered automatically. No manual entities unregistration is then required.h]hWhen a media device is unregistered, all its entities are unregistered automatically. No manual entities unregistration is then required.}(hjO)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM`hj(ubj)}(hTThe media_entity instance itself must be freed explicitly by the driver if required.h]h)}(hTThe media_entity instance itself must be freed explicitly by the driver if required.h]hTThe media_entity instance itself must be freed explicitly by the driver if required.}(hjb)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMehj^)ubah}(h]h ]h"]h$]h&]uh1jhj(ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 0media_device_register_entity_notify (C function)%c.media_device_register_entity_notifyhNtauh1j hj hhhNhNubj )}(hhh](j )}(hfvoid media_device_register_entity_notify (struct media_device *mdev, struct media_entity_notify *nptr)h]j )}(hevoid media_device_register_entity_notify(struct media_device *mdev, struct media_entity_notify *nptr)h](jL)}(hvoidh]hvoid}(hj)hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj)hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMlubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)hhhj)hMlubj$ )}(h#media_device_register_entity_notifyh]j* )}(h#media_device_register_entity_notifyh]h#media_device_register_entity_notify}(hj)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj)ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj)hhhj)hMlubj)}(h=(struct media_device *mdev, struct media_entity_notify *nptr)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]j)}jj)sb%c.media_device_register_entity_notifyasbuh1hhj)ubj )}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj)}(hjh]h*}(hj *hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj* )}(hmdevh]hmdev}(hj-*hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubj)}(h struct media_entity_notify *nptrh](j )}(hj h]hstruct}(hjF*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjB*ubj )}(h h]h }(hjS*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjB*ubh)}(hhh]j* )}(hmedia_entity_notifyh]hmedia_entity_notify}(hjd*hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hja*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjf*modnameN classnameNjj)}j]j*%c.media_device_register_entity_notifyasbuh1hhjB*ubj )}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjB*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjB*ubj* )}(hnptrh]hnptr}(hj*hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjB*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubeh}(h]h ]h"]h$]h&]hhuh1jhj)hhhj)hMlubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj)hhhj)hMlubah}(h]j)ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj)hMlhj)hhubjV )}(hhh]h)}(h(Registers a media entity_notify callbackh]h(Registers a media entity_notify callback}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMlhj*hhubah}(h]h ]h"]h$]h&]uh1jU hj)hhhj)hMlubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j*jx j*jy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_device *mdev`` The media device ``struct media_entity_notify *nptr`` The media_entity_notify **Description** .. note:: When a new entity is registered, all the registered media_entity_notify callbacks are invoked.h](h)}(h**Parameters**h]j)}(hj*h]h Parameters}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMphj*ubj )}(hhh](j )}(h/``struct media_device *mdev`` The media device h](j )}(h``struct media_device *mdev``h]j~)}(hj+h]hstruct media_device *mdev}(hj +hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMohj+ubj )}(hhh]h)}(hThe media deviceh]hThe media device}(hj!+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+hMohj+ubah}(h]h ]h"]h$]h&]uh1j hj+ubeh}(h]h ]h"]h$]h&]uh1j hj+hMohj*ubj )}(h=``struct media_entity_notify *nptr`` The media_entity_notify h](j )}(h$``struct media_entity_notify *nptr``h]j~)}(hjA+h]h struct media_entity_notify *nptr}(hjC+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj?+ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMphj;+ubj )}(hhh]h)}(hThe media_entity_notifyh]hThe media_entity_notify}(hjZ+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV+hMphjW+ubah}(h]h ]h"]h$]h&]uh1j hj;+ubeh}(h]h ]h"]h$]h&]uh1j hjV+hMphj*ubeh}(h]h ]h"]h$]h&]uh1j hj*ubh)}(h**Description**h]j)}(hj|+h]h Description}(hj~+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjz+ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMrhj*ubj)}(h^When a new entity is registered, all the registered media_entity_notify callbacks are invoked.h]h)}(h^When a new entity is registered, all the registered media_entity_notify callbacks are invoked.h]h^When a new entity is registered, all the registered media_entity_notify callbacks are invoked.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMshj+ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 2media_device_unregister_entity_notify (C function)'c.media_device_unregister_entity_notifyhNtauh1j hj hhhNhNubj )}(hhh](j )}(hhvoid media_device_unregister_entity_notify (struct media_device *mdev, struct media_entity_notify *nptr)h]j )}(hgvoid media_device_unregister_entity_notify(struct media_device *mdev, struct media_entity_notify *nptr)h](jL)}(hvoidh]hvoid}(hj+hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj+hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM|ubj )}(h h]h }(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+hhhj+hM|ubj$ )}(h%media_device_unregister_entity_notifyh]j* )}(h%media_device_unregister_entity_notifyh]h%media_device_unregister_entity_notify}(hj+hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj+ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj+hhhj+hM|ubj)}(h=(struct media_device *mdev, struct media_entity_notify *nptr)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj&,hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj(,modnameN classnameNjj)}j]j)}jj+sb'c.media_device_unregister_entity_notifyasbuh1hhj,ubj )}(h h]h }(hjF,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj)}(hjh]h*}(hjT,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj* )}(hmdevh]hmdev}(hja,hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj,ubj)}(h struct media_entity_notify *nptrh](j )}(hj h]hstruct}(hjz,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjv,ubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjv,ubh)}(hhh]j* )}(hmedia_entity_notifyh]hmedia_entity_notify}(hj,hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]jB,'c.media_device_unregister_entity_notifyasbuh1hhjv,ubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjv,ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjv,ubj* )}(hnptrh]hnptr}(hj,hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjv,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj,ubeh}(h]h ]h"]h$]h&]hhuh1jhj+hhhj+hM|ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj+hhhj+hM|ubah}(h]j+ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj+hM|hj+hhubjV )}(hhh]h)}(h)Unregister a media entity notify callbackh]h)Unregister a media entity notify callback}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM|hj,hhubah}(h]h ]h"]h$]h&]uh1jU hj+hhhj+hM|ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j-jx j-jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_device *mdev`` The media device ``struct media_entity_notify *nptr`` The media_entity_notifyh](h)}(h**Parameters**h]j)}(hj-h]h Parameters}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj-ubj )}(hhh](j )}(h/``struct media_device *mdev`` The media device h](j )}(h``struct media_device *mdev``h]j~)}(hj<-h]hstruct media_device *mdev}(hj>-hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:-ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj6-ubj )}(hhh]h)}(hThe media deviceh]hThe media device}(hjU-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQ-hMhjR-ubah}(h]h ]h"]h$]h&]uh1j hj6-ubeh}(h]h ]h"]h$]h&]uh1j hjQ-hMhj3-ubj )}(h<``struct media_entity_notify *nptr`` The media_entity_notifyh](j )}(h$``struct media_entity_notify *nptr``h]j~)}(hju-h]h struct media_entity_notify *nptr}(hjw-hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjs-ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjo-ubj )}(hhh]h)}(hThe media_entity_notifyh]hThe media_entity_notify}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj-ubah}(h]h ]h"]h$]h&]uh1j hjo-ubeh}(h]h ]h"]h$]h&]uh1j hj-hMhj3-ubeh}(h]h ]h"]h$]h&]uh1j hj-ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_device_pci_init (C function)c.media_device_pci_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(havoid media_device_pci_init (struct media_device *mdev, struct pci_dev *pci_dev, const char *name)h]j )}(h`void media_device_pci_init(struct media_device *mdev, struct pci_dev *pci_dev, const char *name)h](jL)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj-hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj )}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-hhhj-hMubj$ )}(hmedia_device_pci_inith]j* )}(hmedia_device_pci_inith]hmedia_device_pci_init}(hj-hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj-ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj-hhhj-hMubj)}(hF(struct media_device *mdev, struct pci_dev *pci_dev, const char *name)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj .hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj*.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,.modnameN classnameNjj)}j]j)}jj-sbc.media_device_pci_initasbuh1hhj.ubj )}(h h]h }(hjJ.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj)}(hjh]h*}(hjX.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj* )}(hmdevh]hmdev}(hje.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubj)}(hstruct pci_dev *pci_devh](j )}(hj h]hstruct}(hj~.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjz.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjz.ubh)}(hhh]j* )}(hpci_devh]hpci_dev}(hj.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]jF.c.media_device_pci_initasbuh1hhjz.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjz.ubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjz.ubj* )}(hpci_devh]hpci_dev}(hj.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjz.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubj)}(hconst char *nameh](j )}(hconsth]hconst}(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubjL)}(hcharh]hchar}(hj /hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj.ubj )}(h h]h }(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj)}(hjh]h*}(hj&/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj* )}(hnameh]hname}(hj3/hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubeh}(h]h ]h"]h$]h&]hhuh1jhj-hhhj-hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj-hhhj-hMubah}(h]j-ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj-hMhj-hhubjV )}(hhh]h)}(hHcreate and initialize a struct :c:type:`media_device` from a PCI device.h](hcreate and initialize a struct }(hj]/hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjg/h]h media_device}(hji/hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hje/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jF.c.media_device_pci_initasbj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj]/ubh from a PCI device.}(hj]/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjZ/hhubah}(h]h ]h"]h$]h&]uh1jU hj-hhhj-hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j/jx j/jy jz j{ uh1j hhhj hNhNubj} )}(hX **Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` ``struct pci_dev *pci_dev`` pointer to struct pci_dev ``const char *name`` media device name. If ``NULL``, the routine will use the default name for the pci device, given by pci_name() macro.h](h)}(h**Parameters**h]j)}(hj/h]h Parameters}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj/ubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hj/h]hstruct media_device *mdev}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj/ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj/ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj/hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj/h]h media_device}(hj/hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj/hMhj/ubeh}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]uh1j hj/hMhj/ubj )}(h6``struct pci_dev *pci_dev`` pointer to struct pci_dev h](j )}(h``struct pci_dev *pci_dev``h]j~)}(hj0h]hstruct pci_dev *pci_dev}(hj!0hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj0ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj0ubj )}(hhh]h)}(hpointer to struct pci_devh]hpointer to struct pci_dev}(hj80hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj40hMhj50ubah}(h]h ]h"]h$]h&]uh1j hj0ubeh}(h]h ]h"]h$]h&]uh1j hj40hMhj/ubj )}(h``const char *name`` media device name. If ``NULL``, the routine will use the default name for the pci device, given by pci_name() macro.h](j )}(h``const char *name``h]j~)}(hjX0h]hconst char *name}(hjZ0hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjV0ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjR0ubj )}(hhh]h)}(htmedia device name. If ``NULL``, the routine will use the default name for the pci device, given by pci_name() macro.h](hmedia device name. If }(hjq0hhhNhNubj~)}(h``NULL``h]hNULL}(hjy0hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjq0ubhV, the routine will use the default name for the pci device, given by pci_name() macro.}(hjq0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjm0hMhjn0ubah}(h]h ]h"]h$]h&]uh1j hjR0ubeh}(h]h ]h"]h$]h&]uh1j hjm0hMhj/ubeh}(h]h ]h"]h$]h&]uh1j hj/ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j $__media_device_usb_init (C function)c.__media_device_usb_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(hvoid __media_device_usb_init (struct media_device *mdev, struct usb_device *udev, const char *board_name, const char *driver_name)h]j )}(hvoid __media_device_usb_init(struct media_device *mdev, struct usb_device *udev, const char *board_name, const char *driver_name)h](jL)}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj0hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj )}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0hhhj0hMubj$ )}(h__media_device_usb_inith]j* )}(h__media_device_usb_inith]h__media_device_usb_init}(hj0hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj0hhhj0hMubj)}(he(struct media_device *mdev, struct usb_device *udev, const char *board_name, const char *driver_name)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj )}(h h]h }(hj 1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj 1modnameN classnameNjj)}j]j)}jj0sbc.__media_device_usb_initasbuh1hhj0ubj )}(h h]h }(hj>1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj)}(hjh]h*}(hjL1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0ubj* )}(hmdevh]hmdev}(hjY1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hstruct usb_device *udevh](j )}(hj h]hstruct}(hjr1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjn1ubj )}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjn1ubh)}(hhh]j* )}(h usb_deviceh]h usb_device}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]j:1c.__media_device_usb_initasbuh1hhjn1ubj )}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjn1ubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn1ubj* )}(hudevh]hudev}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjn1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hconst char *board_nameh](j )}(hj.h]hconst}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj )}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubjL)}(hcharh]hchar}(hj1hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj1ubj )}(h h]h }(hj 2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj* )}(h board_nameh]h board_name}(hj&2hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(hconst char *driver_nameh](j )}(hj.h]hconst}(hj?2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;2ubj )}(h h]h }(hjL2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;2ubjL)}(hcharh]hchar}(hjZ2hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj;2ubj )}(h h]h }(hjh2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;2ubj)}(hjh]h*}(hjv2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;2ubj* )}(h driver_nameh]h driver_name}(hj2hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj;2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubeh}(h]h ]h"]h$]h&]hhuh1jhj0hhhj0hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj0hhhj0hMubah}(h]j0ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj0hMhj0hhubjV )}(hhh]h)}(hHcreate and initialize a struct :c:type:`media_device` from a PCI device.h](hcreate and initialize a struct }(hj2hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj2h]h media_device}(hj2hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj2ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j:1c.__media_device_usb_initasbj media_deviceuh1hhj/hKhj2ubh from a PCI device.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj2hhubah}(h]h ]h"]h$]h&]uh1jU hj0hhhj0hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j2jx j2jy jz j{ uh1j hhhj hNhNubj} )}(hXN**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` ``struct usb_device *udev`` pointer to struct usb_device ``const char *board_name`` media device name. If ``NULL``, the routine will use the usb product name, if available. ``const char *driver_name`` name of the driver. if ``NULL``, the routine will use the name given by ``udev->dev->driver->name``, with is usually the wrong thing to do. **Description** .. note:: It is better to call media_device_usb_init() instead, as such macro fills driver_name with ``KBUILD_MODNAME``.h](h)}(h**Parameters**h]j)}(hj2h]h Parameters}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj2ubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hj3h]hstruct media_device *mdev}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj/3hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj93h]h media_device}(hj;3hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj73ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj+3hMhj/3ubeh}(h]h ]h"]h$]h&]uh1hhj+3hMhj,3ubah}(h]h ]h"]h$]h&]uh1j hj3ubeh}(h]h ]h"]h$]h&]uh1j hj+3hMhj 3ubj )}(h9``struct usb_device *udev`` pointer to struct usb_device h](j )}(h``struct usb_device *udev``h]j~)}(hjn3h]hstruct usb_device *udev}(hjp3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjl3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjh3ubj )}(hhh]h)}(hpointer to struct usb_deviceh]hpointer to struct usb_device}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1j hjh3ubeh}(h]h ]h"]h$]h&]uh1j hj3hMhj 3ubj )}(ht``const char *board_name`` media device name. If ``NULL``, the routine will use the usb product name, if available. h](j )}(h``const char *board_name``h]j~)}(hj3h]hconst char *board_name}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubj )}(hhh]h)}(hXmedia device name. If ``NULL``, the routine will use the usb product name, if available.h](hmedia device name. If }(hj3hhhNhNubj~)}(h``NULL``h]hNULL}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubh:, the routine will use the usb product name, if available.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubah}(h]h ]h"]h$]h&]uh1j hj3ubeh}(h]h ]h"]h$]h&]uh1j hj3hMhj 3ubj )}(h``const char *driver_name`` name of the driver. if ``NULL``, the routine will use the name given by ``udev->dev->driver->name``, with is usually the wrong thing to do. h](j )}(h``const char *driver_name``h]j~)}(hj3h]hconst char *driver_name}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubj )}(hhh]h)}(hname of the driver. if ``NULL``, the routine will use the name given by ``udev->dev->driver->name``, with is usually the wrong thing to do.h](hname of the driver. if }(hj 4hhhNhNubj~)}(h``NULL``h]hNULL}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj 4ubh), the routine will use the name given by }(hj 4hhhNhNubj~)}(h``udev->dev->driver->name``h]hudev->dev->driver->name}(hj&4hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj 4ubh(, with is usually the wrong thing to do.}(hj 4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj 4ubah}(h]h ]h"]h$]h&]uh1j hj3ubeh}(h]h ]h"]h$]h&]uh1j hj4hMhj 3ubeh}(h]h ]h"]h$]h&]uh1j hj2ubh)}(h**Description**h]j)}(hjS4h]h Description}(hjU4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQ4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj2ubj)}(hnIt is better to call media_device_usb_init() instead, as such macro fills driver_name with ``KBUILD_MODNAME``.h]h)}(hnIt is better to call media_device_usb_init() instead, as such macro fills driver_name with ``KBUILD_MODNAME``.h](h[It is better to call media_device_usb_init() instead, as such macro fills driver_name with }(hjm4hhhNhNubj~)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hju4hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjm4ubh.}(hjm4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhji4ubah}(h]h ]h"]h$]h&]uh1jhj2ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device_usb_init (C macro)c.media_device_usb_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_device_usb_inith]j )}(hmedia_device_usb_inith]j$ )}(hmedia_device_usb_inith]j* )}(hj4h]hmedia_device_usb_init}(hj4hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj4ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj4hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj4hhhj4hMubah}(h]j4ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj4hMhj4hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hj4hhhj4hMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw j4jx j4jy jz j{ uh1j hhhj hNhNubh)}(h,``media_device_usb_init (mdev, udev, name)``h]j~)}(hj4h]h(media_device_usb_init (mdev, udev, name)}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj hhubj)}(hIcreate and initialize a struct :c:type:`media_device` from a PCI device. h]h)}(hHcreate and initialize a struct :c:type:`media_device` from a PCI device.h](hcreate and initialize a struct }(hj5hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj5h]h media_device}(hj5hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj 5ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj5ubh from a PCI device.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj+5hMhj5ubah}(h]h ]h"]h$]h&]uh1jhj+5hMhj hhubj} )}(hXl**Parameters** ``mdev`` pointer to struct :c:type:`media_device` ``udev`` pointer to struct usb_device ``name`` media device name. If ``NULL``, the routine will use the usb product name, if available. **Description** This macro calls media_device_usb_init() passing the media_device_usb_init() **driver_name** parameter filled with ``KBUILD_MODNAME``.h](h)}(h**Parameters**h]j)}(hjB5h]h Parameters}(hjD5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@5ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj<5ubj )}(hhh](j )}(h2``mdev`` pointer to struct :c:type:`media_device` h](j )}(h``mdev``h]j~)}(hja5h]hmdev}(hjc5hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj_5ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj[5ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjz5hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj5h]h media_device}(hj5hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj5ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjv5hMhjz5ubeh}(h]h ]h"]h$]h&]uh1hhjv5hMhjw5ubah}(h]h ]h"]h$]h&]uh1j hj[5ubeh}(h]h ]h"]h$]h&]uh1j hjv5hMhjX5ubj )}(h&``udev`` pointer to struct usb_device h](j )}(h``udev``h]j~)}(hj5h]hudev}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj5ubj )}(hhh]h)}(hpointer to struct usb_deviceh]hpointer to struct usb_device}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMhj5ubah}(h]h ]h"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]uh1j hj5hMhjX5ubj )}(hb``name`` media device name. If ``NULL``, the routine will use the usb product name, if available. h](j )}(h``name``h]j~)}(hj5h]hname}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj5ubj )}(hhh]h)}(hXmedia device name. If ``NULL``, the routine will use the usb product name, if available.h](hmedia device name. If }(hj 6hhhNhNubj~)}(h``NULL``h]hNULL}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj 6ubh:, the routine will use the usb product name, if available.}(hj 6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj6ubah}(h]h ]h"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]uh1j hj6hMhjX5ubeh}(h]h ]h"]h$]h&]uh1j hj<5ubh)}(h**Description**h]j)}(hj@6h]h Description}(hjB6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj<5ubh)}(hThis macro calls media_device_usb_init() passing the media_device_usb_init() **driver_name** parameter filled with ``KBUILD_MODNAME``.h](hMThis macro calls media_device_usb_init() passing the media_device_usb_init() }(hjV6hhhNhNubj)}(h**driver_name**h]h driver_name}(hj^6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjV6ubh parameter filled with }(hjV6hhhNhNubj~)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hjp6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjV6ubh.}(hjV6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj<5ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_set_bus_info (C function)c.media_set_bus_infohNtauh1j hj hhhNhNubj )}(hhh](j )}(hRvoid media_set_bus_info (char *bus_info, size_t bus_info_size, struct device *dev)h]j )}(hQvoid media_set_bus_info(char *bus_info, size_t bus_info_size, struct device *dev)h](jL)}(hvoidh]hvoid}(hj6hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj6hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj )}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6hhhj6hMubj$ )}(hmedia_set_bus_infoh]j* )}(hmedia_set_bus_infoh]hmedia_set_bus_info}(hj6hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj6ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj6hhhj6hMubj)}(h:(char *bus_info, size_t bus_info_size, struct device *dev)h](j)}(hchar *bus_infoh](jL)}(hcharh]hchar}(hj6hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj6ubj )}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj* )}(hbus_infoh]hbus_info}(hj7hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hsize_t bus_info_sizeh](h)}(hhh]j* )}(hsize_th]hsize_t}(hj+7hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj(7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-7modnameN classnameNjj)}j]j)}jj6sbc.media_set_bus_infoasbuh1hhj$7ubj )}(h h]h }(hjK7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$7ubj* )}(h bus_info_sizeh]h bus_info_size}(hjY7hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj$7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hstruct device *devh](j )}(hj h]hstruct}(hjr7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjn7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjn7ubh)}(hhh]j* )}(hdeviceh]hdevice}(hj7hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7modnameN classnameNjj)}j]jG7c.media_set_bus_infoasbuh1hhjn7ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjn7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjn7ubj* )}(hdevh]hdev}(hj7hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjn7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubeh}(h]h ]h"]h$]h&]hhuh1jhj6hhhj6hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj6hhhj6hMubah}(h]j6ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj6hMhj6hhubjV )}(hhh]h)}(hSet bus_info fieldh]hSet bus_info field}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj7hhubah}(h]h ]h"]h$]h&]uh1jU hj6hhhj6hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j 8jx j 8jy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``char *bus_info`` Variable where to write the bus info (char array) ``size_t bus_info_size`` Length of the bus_info ``struct device *dev`` Related struct device **Description** Sets bus information based on :c:type:`dev`. This is currently done for PCI and platform devices. dev is required to be non-NULL for this to happen. This function is not meant to be called from drivers.h](h)}(h**Parameters**h]j)}(hj8h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj8ubj )}(hhh](j )}(hE``char *bus_info`` Variable where to write the bus info (char array) h](j )}(h``char *bus_info``h]j~)}(hj48h]hchar *bus_info}(hj68hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj28ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj.8ubj )}(hhh]h)}(h1Variable where to write the bus info (char array)h]h1Variable where to write the bus info (char array)}(hjM8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI8hMhjJ8ubah}(h]h ]h"]h$]h&]uh1j hj.8ubeh}(h]h ]h"]h$]h&]uh1j hjI8hMhj+8ubj )}(h0``size_t bus_info_size`` Length of the bus_info h](j )}(h``size_t bus_info_size``h]j~)}(hjm8h]hsize_t bus_info_size}(hjo8hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjk8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjg8ubj )}(hhh]h)}(hLength of the bus_infoh]hLength of the bus_info}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j hjg8ubeh}(h]h ]h"]h$]h&]uh1j hj8hMhj+8ubj )}(h-``struct device *dev`` Related struct device h](j )}(h``struct device *dev``h]j~)}(hj8h]hstruct device *dev}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj8ubj )}(hhh]h)}(hRelated struct deviceh]hRelated struct device}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hj8hMhj+8ubeh}(h]h ]h"]h$]h&]uh1j hj8ubh)}(h**Description**h]j)}(hj8h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj8ubh)}(hSets bus information based on :c:type:`dev`. This is currently done for PCI and platform devices. dev is required to be non-NULL for this to happen.h](hSets bus information based on }(hj8hhhNhNubh)}(h :c:type:`dev`h]j~)}(hj9h]hdev}(hj9hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj8ubhi. This is currently done for PCI and platform devices. dev is required to be non-NULL for this to happen.}(hj8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj9hMhj8ubh)}(h5This function is not meant to be called from drivers.h]h5This function is not meant to be called from drivers.}(hj)9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj8ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_file_operations (C struct)c.media_file_operationshNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_file_operationsh]j )}(hstruct media_file_operationsh](j )}(hj h]hstruct}(hjX9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjT9hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj )}(h h]h }(hjf9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjT9hhhje9hKubj$ )}(hmedia_file_operationsh]j* )}(hjR9h]hmedia_file_operations}(hjx9hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjt9ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjT9hhhje9hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjP9hhhje9hKubah}(h]jK9ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hje9hKhjM9hhubjV )}(hhh]h)}(hMedia device file operationsh]hMedia device file operations}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK&hj9hhubah}(h]h ]h"]h$]h&]uh1jU hjM9hhhje9hKubeh}(h]h ](jstructeh"]h$]h&]jv jjw j9jx j9jy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_file_operations { struct module *owner; ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); __poll_t (*poll) (struct file *, struct poll_table_struct *); long (*ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*open) (struct file *); int (*release) (struct file *); }; **Members** ``owner`` should be filled with ``THIS_MODULE`` ``read`` pointer to the function that implements read() syscall ``write`` pointer to the function that implements write() syscall ``poll`` pointer to the function that implements poll() syscall ``ioctl`` pointer to the function that implements ioctl() syscall ``compat_ioctl`` pointer to the function that will handle 32 bits userspace calls to the ioctl() syscall on a Kernel compiled with 64 bits. ``open`` pointer to the function that implements open() syscall ``release`` pointer to the function that will release the resources allocated by the **open** function.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh:}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK*hj9ubj)}(hXstruct media_file_operations { struct module *owner; ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); __poll_t (*poll) (struct file *, struct poll_table_struct *); long (*ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*open) (struct file *); int (*release) (struct file *); };h]hXstruct media_file_operations { struct module *owner; ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); __poll_t (*poll) (struct file *, struct poll_table_struct *); long (*ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*open) (struct file *); int (*release) (struct file *); };}hj9sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK,hj9ubh)}(h **Members**h]j)}(hj9h]hMembers}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK7hj9ubj )}(hhh](j )}(h0``owner`` should be filled with ``THIS_MODULE`` h](j )}(h ``owner``h]j~)}(hj:h]howner}(hj :hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK)hj:ubj )}(hhh]h)}(h%should be filled with ``THIS_MODULE``h](hshould be filled with }(hj :hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj(:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj :ubeh}(h]h ]h"]h$]h&]uh1hhj:hK)hj:ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj:hK)hj9ubj )}(h@``read`` pointer to the function that implements read() syscall h](j )}(h``read``h]j~)}(hjN:h]hread}(hjP:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjL:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK*hjH:ubj )}(hhh]h)}(h6pointer to the function that implements read() syscallh]h6pointer to the function that implements read() syscall}(hjg:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc:hK*hjd:ubah}(h]h ]h"]h$]h&]uh1j hjH:ubeh}(h]h ]h"]h$]h&]uh1j hjc:hK*hj9ubj )}(hB``write`` pointer to the function that implements write() syscall h](j )}(h ``write``h]j~)}(hj:h]hwrite}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK+hj:ubj )}(hhh]h)}(h7pointer to the function that implements write() syscallh]h7pointer to the function that implements write() syscall}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hK+hj:ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj:hK+hj9ubj )}(h@``poll`` pointer to the function that implements poll() syscall h](j )}(h``poll``h]j~)}(hj:h]hpoll}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK,hj:ubj )}(hhh]h)}(h6pointer to the function that implements poll() syscallh]h6pointer to the function that implements poll() syscall}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hK,hj:ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj:hK,hj9ubj )}(hB``ioctl`` pointer to the function that implements ioctl() syscall h](j )}(h ``ioctl``h]j~)}(hj:h]hioctl}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK-hj:ubj )}(hhh]h)}(h7pointer to the function that implements ioctl() syscallh]h7pointer to the function that implements ioctl() syscall}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hK-hj;ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj;hK-hj9ubj )}(h``compat_ioctl`` pointer to the function that will handle 32 bits userspace calls to the ioctl() syscall on a Kernel compiled with 64 bits. h](j )}(h``compat_ioctl``h]j~)}(hj2;h]h compat_ioctl}(hj4;hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj0;ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK/hj,;ubj )}(hhh]h)}(hzpointer to the function that will handle 32 bits userspace calls to the ioctl() syscall on a Kernel compiled with 64 bits.h]hzpointer to the function that will handle 32 bits userspace calls to the ioctl() syscall on a Kernel compiled with 64 bits.}(hjK;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK.hjH;ubah}(h]h ]h"]h$]h&]uh1j hj,;ubeh}(h]h ]h"]h$]h&]uh1j hjG;hK/hj9ubj )}(h@``open`` pointer to the function that implements open() syscall h](j )}(h``open``h]j~)}(hjl;h]hopen}(hjn;hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjj;ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK0hjf;ubj )}(hhh]h)}(h6pointer to the function that implements open() syscallh]h6pointer to the function that implements open() syscall}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hK0hj;ubah}(h]h ]h"]h$]h&]uh1j hjf;ubeh}(h]h ]h"]h$]h&]uh1j hj;hK0hj9ubj )}(hg``release`` pointer to the function that will release the resources allocated by the **open** function.h](j )}(h ``release``h]j~)}(hj;h]hrelease}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj;ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK1hj;ubj )}(hhh]h)}(h[pointer to the function that will release the resources allocated by the **open** function.h](hIpointer to the function that will release the resources allocated by the }(hj;hhhNhNubj)}(h**open**h]hopen}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubh function.}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;hK1hj;ubah}(h]h ]h"]h$]h&]uh1j hj;ubeh}(h]h ]h"]h$]h&]uh1j hj;hK1hj9ubeh}(h]h ]h"]h$]h&]uh1j hj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_devnode (C struct)c.media_devnodehNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_devnodeh]j )}(hstruct media_devnodeh](j )}(hj h]hstruct}(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj <hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK8ubj )}(h h]h }(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj <hhhj<hK8ubj$ )}(h media_devnodeh]j* )}(hj <h]h media_devnode}(hj0<hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj,<ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj <hhhj<hK8ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj<hhhj<hK8ubah}(h]j<ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj<hK8hj<hhubjV )}(hhh]h)}(hMedia device nodeh]hMedia device node}(hjR<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK?hjO<hhubah}(h]h ]h"]h$]h&]uh1jU hj<hhhj<hK8ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jj<jx jj<jy jz j{ uh1j hhhj hNhNubj} )}(hXH**Definition**:: struct media_devnode { struct media_device *media_dev; const struct media_file_operations *fops; struct device dev; struct cdev cdev; struct device *parent; int minor; unsigned long flags; void (*release)(struct media_devnode *devnode); }; **Members** ``media_dev`` pointer to struct :c:type:`media_device` ``fops`` pointer to struct :c:type:`media_file_operations` with media device ops ``dev`` pointer to struct :c:type:`device` containing the media controller device ``cdev`` struct cdev pointer character device ``parent`` parent device ``minor`` device node minor number ``flags`` flags, combination of the ``MEDIA_FLAG_*`` constants ``release`` release callback called at the end of ``media_devnode_release()`` routine at media-device.c.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjv<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjr<ubh:}(hjr<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKChjn<ubj)}(hXstruct media_devnode { struct media_device *media_dev; const struct media_file_operations *fops; struct device dev; struct cdev cdev; struct device *parent; int minor; unsigned long flags; void (*release)(struct media_devnode *devnode); };h]hXstruct media_devnode { struct media_device *media_dev; const struct media_file_operations *fops; struct device dev; struct cdev cdev; struct device *parent; int minor; unsigned long flags; void (*release)(struct media_devnode *devnode); };}hj<sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKEhjn<ubh)}(h **Members**h]j)}(hj<h]hMembers}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKPhjn<ubj )}(hhh](j )}(h7``media_dev`` pointer to struct :c:type:`media_device` h](j )}(h ``media_dev``h]j~)}(hj<h]h media_dev}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj<ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKAhj<ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj<hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj<h]h media_device}(hj<hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj<ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj<hKAhj<ubeh}(h]h ]h"]h$]h&]uh1hhj<hKAhj<ubah}(h]h ]h"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]uh1j hj<hKAhj<ubj )}(hQ``fops`` pointer to struct :c:type:`media_file_operations` with media device ops h](j )}(h``fops``h]j~)}(hj=h]hfops}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKBhj=ubj )}(hhh]h)}(hGpointer to struct :c:type:`media_file_operations` with media device opsh](hpointer to struct }(hj0=hhhNhNubh)}(h:c:type:`media_file_operations`h]j~)}(hj:=h]hmedia_file_operations}(hj<=hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj8=ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_file_operationsuh1hhj,=hKBhj0=ubh with media device ops}(hj0=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj,=hKBhj-=ubah}(h]h ]h"]h$]h&]uh1j hj=ubeh}(h]h ]h"]h$]h&]uh1j hj,=hKBhj<ubj )}(hR``dev`` pointer to struct :c:type:`device` containing the media controller device h](j )}(h``dev``h]j~)}(hjs=h]hdev}(hju=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjq=ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKChjm=ubj )}(hhh]h)}(hIpointer to struct :c:type:`device` containing the media controller deviceh](hpointer to struct }(hj=hhhNhNubh)}(h:c:type:`device`h]j~)}(hj=h]hdevice}(hj=hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj=ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdeviceuh1hhj=hKChj=ubh' containing the media controller device}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj=hKChj=ubah}(h]h ]h"]h$]h&]uh1j hjm=ubeh}(h]h ]h"]h$]h&]uh1j hj=hKChj<ubj )}(h.``cdev`` struct cdev pointer character device h](j )}(h``cdev``h]j~)}(hj=h]hcdev}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKDhj=ubj )}(hhh]h)}(h$struct cdev pointer character deviceh]h$struct cdev pointer character device}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKDhj=ubah}(h]h ]h"]h$]h&]uh1j hj=ubeh}(h]h ]h"]h$]h&]uh1j hj=hKDhj<ubj )}(h``parent`` parent device h](j )}(h ``parent``h]j~)}(hj>h]hparent}(hj >hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKEhj>ubj )}(hhh]h)}(h parent deviceh]h parent device}(hj!>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj>hKEhj>ubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hj>hKEhj<ubj )}(h#``minor`` device node minor number h](j )}(h ``minor``h]j~)}(hjA>h]hminor}(hjC>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj?>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKFhj;>ubj )}(hhh]h)}(hdevice node minor numberh]hdevice node minor number}(hjZ>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV>hKFhjW>ubah}(h]h ]h"]h$]h&]uh1j hj;>ubeh}(h]h ]h"]h$]h&]uh1j hjV>hKFhj<ubj )}(h?``flags`` flags, combination of the ``MEDIA_FLAG_*`` constants h](j )}(h ``flags``h]j~)}(hjz>h]hflags}(hj|>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjx>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKGhjt>ubj )}(hhh]h)}(h4flags, combination of the ``MEDIA_FLAG_*`` constantsh](hflags, combination of the }(hj>hhhNhNubj~)}(h``MEDIA_FLAG_*``h]h MEDIA_FLAG_*}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj>ubh constants}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hKGhj>ubah}(h]h ]h"]h$]h&]uh1j hjt>ubeh}(h]h ]h"]h$]h&]uh1j hj>hKGhj<ubj )}(hh``release`` release callback called at the end of ``media_devnode_release()`` routine at media-device.c.h](j )}(h ``release``h]j~)}(hj>h]hrelease}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKHhj>ubj )}(hhh]h)}(h\release callback called at the end of ``media_devnode_release()`` routine at media-device.c.h](h&release callback called at the end of }(hj>hhhNhNubj~)}(h``media_devnode_release()``h]hmedia_devnode_release()}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj>ubh routine at media-device.c.}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hKHhj>ubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hj>hKHhj<ubeh}(h]h ]h"]h$]h&]uh1j hjn<ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hj?h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKLhj hhubh)}(h6This structure represents a media-related device node.h]h6This structure represents a media-related device node.}(hj/?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKIhj hhubh)}(hjThe **parent** is a physical device. It must be set by core or device drivers before registering the node.h](hThe }(hj>?hhhNhNubj)}(h **parent**h]hparent}(hjF?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>?ubh\ is a physical device. It must be set by core or device drivers before registering the node.}(hj>?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKKhj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_devnode_register (C function)c.media_devnode_registerhNtauh1j hj hhhNhNubj )}(hhh](j )}(hkint media_devnode_register (struct media_device *mdev, struct media_devnode *devnode, struct module *owner)h]j )}(hjint media_devnode_register(struct media_device *mdev, struct media_devnode *devnode, struct module *owner)h](jL)}(hinth]hint}(hjx?hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjt?hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKfubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjt?hhhj?hKfubj$ )}(hmedia_devnode_registerh]j* )}(hmedia_devnode_registerh]hmedia_devnode_register}(hj?hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjt?hhhj?hKfubj)}(hP(struct media_device *mdev, struct media_devnode *devnode, struct module *owner)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj?hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j)}jj?sbc.media_devnode_registerasbuh1hhj?ubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj* )}(hmdevh]hmdev}(hj@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj?ubj)}(hstruct media_devnode *devnodeh](j )}(hj h]hstruct}(hj'@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#@ubj )}(h h]h }(hj4@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#@ubh)}(hhh]j* )}(h media_devnodeh]h media_devnode}(hjE@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjB@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjG@modnameN classnameNjj)}j]j?c.media_devnode_registerasbuh1hhj#@ubj )}(h h]h }(hjc@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#@ubj)}(hjh]h*}(hjq@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#@ubj* )}(hdevnodeh]hdevnode}(hj~@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj?ubj)}(hstruct module *ownerh](j )}(hj h]hstruct}(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubh)}(hhh]j* )}(hmoduleh]hmodule}(hj@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j?c.media_devnode_registerasbuh1hhj@ubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj* )}(hownerh]howner}(hj@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj?ubeh}(h]h ]h"]h$]h&]hhuh1jhjt?hhhj?hKfubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjp?hhhj?hKfubah}(h]jk?ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj?hKfhjm?hhubjV )}(hhh]h)}(hregister a media device nodeh]hregister a media device node}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKfhjAhhubah}(h]h ]h"]h$]h&]uh1jU hjm?hhhj?hKfubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j0Ajx j0Ajy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_device *mdev`` struct media_device we want to register a device node ``struct media_devnode *devnode`` media device node structure we want to register ``struct module *owner`` should be filled with ``THIS_MODULE`` **Description** The registration code assigns minor numbers and registers the new device node with the kernel. An error is returned if no free minor number can be found, or if the registration of the device node fails. Zero is returned on success. Note that if the media_devnode_register call fails, the release() callback of the media_devnode structure is *not* called, so the caller is responsible for freeing any data.h](h)}(h**Parameters**h]j)}(hj:Ah]h Parameters}(hjDsbc.media_devnode_unregisterasbuh1hhjTDubj )}(h h]h }(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTDubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjTDubj* )}(hdevnodeh]hdevnode}(hjDhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjTDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPDubah}(h]h ]h"]h$]h&]hhuh1jhjDhhhj)DhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjDhhhj)DhKubah}(h]jDah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj)DhKhjDhhubjV )}(hhh]h)}(hunregister a media device nodeh]hunregister a media device node}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjDhhubah}(h]h ]h"]h$]h&]uh1jU hjDhhhj)DhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jDjx jDjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_devnode *devnode`` the device node to unregister **Description** This unregisters the passed device. Future open calls will be met with errors. Should be called after media_devnode_unregister_prepare()h](h)}(h**Parameters**h]j)}(hjDh]h Parameters}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjDubj )}(hhh]j )}(h@``struct media_devnode *devnode`` the device node to unregister h](j )}(h!``struct media_devnode *devnode``h]j~)}(hjEh]hstruct media_devnode *devnode}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjEubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjEubj )}(hhh]h)}(hthe device node to unregisterh]hthe device node to unregister}(hj5EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1EhKhj2Eubah}(h]h ]h"]h$]h&]uh1j hjEubeh}(h]h ]h"]h$]h&]uh1j hj1EhKhjEubah}(h]h ]h"]h$]h&]uh1j hjDubh)}(h**Description**h]j)}(hjWEh]h Description}(hjYEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUEubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjDubh)}(hNThis unregisters the passed device. Future open calls will be met with errors.h]hNThis unregisters the passed device. Future open calls will be met with errors.}(hjmEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjDubh)}(h9Should be called after media_devnode_unregister_prepare()h]h9Should be called after media_devnode_unregister_prepare()}(hj|EhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjDubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_devnode_data (C function)c.media_devnode_datahNtauh1j hj hhhNhNubj )}(hhh](j )}(h=struct media_devnode * media_devnode_data (struct file *filp)h]j )}(h;struct media_devnode *media_devnode_data(struct file *filp)h](j )}(hj h]hstruct}(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj )}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEhhhjEhKubh)}(hhh]j* )}(h media_devnodeh]h media_devnode}(hjEhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]j)}jmedia_devnode_datasbc.media_devnode_dataasbuh1hhjEhhhjEhKubj )}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjEhhhjEhKubj)}(hjh]h*}(hjEhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhjEhKubj$ )}(hmedia_devnode_datah]j* )}(hjEh]hmedia_devnode_data}(hj FhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjFubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjEhhhjEhKubj)}(h(struct file *filp)h]j)}(hstruct file *filph](j )}(hj h]hstruct}(hj%FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!Fubj )}(h h]h }(hj2FhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!Fubh)}(hhh]j* )}(hfileh]hfile}(hjCFhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj@Fubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEFmodnameN classnameNjj)}j]jEc.media_devnode_dataasbuh1hhj!Fubj )}(h h]h }(hjaFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!Fubj)}(hjh]h*}(hjoFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!Fubj* )}(hfilph]hfilp}(hj|FhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj!Fubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjFubah}(h]h ]h"]h$]h&]hhuh1jhjEhhhjEhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjEhhhjEhKubah}(h]jEah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjEhKhjEhhubjV )}(hhh]h)}(h0returns a pointer to the :c:type:`media_devnode`h](hreturns a pointer to the }(hjFhhhNhNubh)}(h:c:type:`media_devnode`h]j~)}(hjFh]h media_devnode}(hjFhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjFubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jEc.media_devnode_dataasbj media_devnodeuh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjFubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjFhhubah}(h]h ]h"]h$]h&]uh1jU hjEhhhjEhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jFjx jFjy jz j{ uh1j hhhj hNhNubj} )}(hH**Parameters** ``struct file *filp`` pointer to struct :c:type:`file`h](h)}(h**Parameters**h]j)}(hjFh]h Parameters}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjFubj )}(hhh]j )}(h6``struct file *filp`` pointer to struct :c:type:`file`h](j )}(h``struct file *filp``h]j~)}(hj Gh]hstruct file *filp}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj Gubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjGubj )}(hhh]h)}(h pointer to struct :c:type:`file`h](hpointer to struct }(hj%GhhhNhNubh)}(h:c:type:`file`h]j~)}(hj/Gh]hfile}(hj1GhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj-Gubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjfileuh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj%Gubeh}(h]h ]h"]h$]h&]uh1hhjLGhKhj"Gubah}(h]h ]h"]h$]h&]uh1j hjGubeh}(h]h ]h"]h$]h&]uh1j hj!GhKhjGubah}(h]h ]h"]h$]h&]uh1j hjFubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_devnode_is_registered (C function)c.media_devnode_is_registeredhNtauh1j hj hhhNhNubj )}(hhh](j )}(h?int media_devnode_is_registered (struct media_devnode *devnode)h]j )}(h>int media_devnode_is_registered(struct media_devnode *devnode)h](jL)}(hinth]hint}(hjGhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjGhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj )}(h h]h }(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGhhhjGhKubj$ )}(hmedia_devnode_is_registeredh]j* )}(hmedia_devnode_is_registeredh]hmedia_devnode_is_registered}(hjGhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjGubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjGhhhjGhKubj)}(h(struct media_devnode *devnode)h]j)}(hstruct media_devnode *devnodeh](j )}(hj h]hstruct}(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubj )}(h h]h }(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubh)}(hhh]j* )}(h media_devnodeh]h media_devnode}(hjGhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjGubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j]j)}jjGsbc.media_devnode_is_registeredasbuYh1hhjGubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj* )}(hdevnodeh]hdevnode}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubah}(h]h ]h"]h$]h&]hhuh1jhjGhhhjGhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj}GhhhjGhKubah}(h]jxGah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjGhKhjzGhhubjV )}(hhh]h)}(hGreturns true if :c:type:`media_devnode` is registered; false otherwise.h](hreturns true if }(hjEHhhhNhNubh)}(h:c:type:`media_devnode`h]j~)}(hjOHh]h media_devnode}(hjQHhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjMHubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jGc.media_devnode_is_registeredasbj media_devnodeuh1hhjFhKhjEHubh is registered; false otherwise.}(hjEHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjBHhhubah}(h]h ]h"]h$]h&]uh1jU hjzGhhhjGhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jHjx jHjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_devnode *devnode`` pointer to struct :c:type:`media_devnode`. **Note** If mdev is NULL, it also returns false.h](h)}(h**Parameters**h]j)}(hjHh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubj )}(hhh]j )}(hM``struct media_devnode *devnode`` pointer to struct :c:type:`media_devnode`. h](j )}(h!``struct media_devnode *devnode``h]j~)}(hjHh]hstruct media_devnode *devnode}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjHubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubj )}(hhh]h)}(h*pointer to struct :c:type:`media_devnode`.h](hpointer to struct }(hjHhhhNhNubh)}(h:c:type:`media_devnode`h]j~)}(hjHh]h media_devnode}(hjHhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjHubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_devnodeuh1hhjHhKhjHubh.}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjHhKhjHubah}(h]h ]h"]h$]h&]uh1j hjHubeh}(h]h ]h"]h$]h&]uh1j hjHhKhjHubah}(h]h ]h"]h$]h&]uh1j hjHubh)}(h**Note**h]j)}(hj Ih]hNote}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Iubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubh)}(h'If mdev is NULL, it also returns false.h]h'If mdev is NULL, it also returns false.}(hj"IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj_type (C enum)c.media_gobj_typehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_gobj_typeh]j )}(henum media_gobj_typeh](j )}(henumh]henum}(hjQIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjMIhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hj`IhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjMIhhhj_IhKubj$ )}(hmedia_gobj_typeh]j* )}(hjKIh]hmedia_gobj_type}(hjrIhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjnIubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjMIhhhj_IhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjIIhhhj_IhKubah}(h]jDIah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj_IhKhjFIhhubjV )}(hhh]h)}(htype of a graph objecth]htype of a graph object}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjIhhubah}(h]h ]h"]h$]h&]uh1jU hjFIhhhj_IhKubeh}(h]h ](jenumeh"]h$]h&]jv jjw jIjx jIjy jz j{ uh1j hhhj hNhNubj} )}(h**Constants** ``MEDIA_GRAPH_ENTITY`` Identify a media entity ``MEDIA_GRAPH_PAD`` Identify a media pad ``MEDIA_GRAPH_LINK`` Identify a media link ``MEDIA_GRAPH_INTF_DEVNODE`` Identify a media Kernel API interface via a device nodeh](h)}(h **Constants**h]j)}(hjIh]h Constants}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjIubj )}(hhh](j )}(h/``MEDIA_GRAPH_ENTITY`` Identify a media entity h](j )}(h``MEDIA_GRAPH_ENTITY``h]j~)}(hjIh]hMEDIA_GRAPH_ENTITY}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjIubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK!hjIubj )}(hhh]h)}(hIdentify a media entityh]hIdentify a media entity}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhK!hjIubah}(h]h ]h"]h$]h&]uh1j hjIubeh}(h]h ]h"]h$]h&]uh1j hjIhK!hjIubj )}(h)``MEDIA_GRAPH_PAD`` Identify a media pad h](j )}(h``MEDIA_GRAPH_PAD``h]j~)}(hjJh]hMEDIA_GRAPH_PAD}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj Jubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK$hjJubj )}(hhh]h)}(hIdentify a media padh]hIdentify a media pad}(hj'JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#JhK$hj$Jubah}(h]h ]h"]h$]h&]uh1j hjJubeh}(h]h ]h"]h$]h&]uh1j hj#JhK$hjIubj )}(h+``MEDIA_GRAPH_LINK`` Identify a media link h](j )}(h``MEDIA_GRAPH_LINK``h]j~)}(hjGJh]hMEDIA_GRAPH_LINK}(hjIJhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjEJubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK'hjAJubj )}(hhh]h)}(hIdentify a media linkh]hIdentify a media link}(hj`JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\JhK'hj]Jubah}(h]h ]h"]h$]h&]uh1j hjAJubeh}(h]h ]h"]h$]h&]uh1j hj\JhK'hjIubj )}(hT``MEDIA_GRAPH_INTF_DEVNODE`` Identify a media Kernel API interface via a device nodeh](j )}(h``MEDIA_GRAPH_INTF_DEVNODE``h]j~)}(hjJh]hMEDIA_GRAPH_INTF_DEVNODE}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj~Jubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK*hjzJubj )}(hhh]h)}(h7Identify a media Kernel API interface via a device nodeh]h7Identify a media Kernel API interface via a device node}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhK*hjJubah}(h]h ]h"]h$]h&]uh1j hjzJubeh}(h]h ]h"]h$]h&]uh1j hjJhK*hjIubeh}(h]h ]h"]h$]h&]uh1j hjIubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj (C struct) c.media_gobjhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_gobjh]j )}(hstruct media_gobjh](j )}(hj h]hstruct}(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK0ubj )}(h h]h }(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJhhhjJhK0ubj$ )}(h media_gobjh]j* )}(hjJh]h media_gobj}(hjJhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjJubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjJhhhjJhK0ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjJhhhjJhK0ubah}(h]jJah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjJhK0hjJhhubjV )}(hhh]h)}(hDefine a graph object.h]hDefine a graph object.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK0hjKhhubah}(h]h ]h"]h$]h&]uh1jU hjJhhhjJhK0ubeh}(h]h ](jstructeh"]h$]h&]jv jjw j3Kjx j3Kjy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_gobj { struct media_device *mdev; u32 id; struct list_head list; }; **Members** ``mdev`` Pointer to the struct :c:type:`media_device` that owns the object ``id`` Non-zero object ID identifier. The ID should be unique inside a media_device, as it is composed by ``MEDIA_BITS_PER_TYPE`` to store the type plus ``MEDIA_BITS_PER_ID`` to store the ID ``list`` List entry stored in one of the per-type mdev object listsh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj?KhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;Kubh:}(hj;KhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK4hj7Kubj)}(hgstruct media_gobj { struct media_device *mdev; u32 id; struct list_head list; };h]hgstruct media_gobj { struct media_device *mdev; u32 id; struct list_head list; };}hjXKsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK6hj7Kubh)}(h **Members**h]j)}(hjiKh]hMembers}(hjkKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgKubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKinternal_idx. ``idx_max`` Number of bits in bmaph](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj)MhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%Mubh:}(hj%MhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKHhj!Mubj)}(hGstruct media_entity_enum { unsigned long *bmap; int idx_max; };h]hGstruct media_entity_enum { unsigned long *bmap; int idx_max; };}hjBMsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKJhj!Mubh)}(h **Members**h]j)}(hjSMh]hMembers}(hjUMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQMubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKOhj!Mubj )}(hhh](j )}(h_``bmap`` Bit map in which each bit represents one entity at struct media_entity->internal_idx. h](j )}(h``bmap``h]j~)}(hjrMh]hbmap}(hjtMhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjpMubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKHhjlMubj )}(hhh]h)}(hUBit map in which each bit represents one entity at struct media_entity->internal_idx.h]hUBit map in which each bit represents one entity at struct media_entity->internal_idx.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKGhjMubah}(h]h ]h"]h$]h&]uh1j hjlMubeh}(h]h ]h"]h$]h&]uh1j hjMhKHhjiMubj )}(h"``idx_max`` Number of bits in bmaph](j )}(h ``idx_max``h]j~)}(hjMh]hidx_max}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjMubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKHhjMubj )}(hhh]h)}(hNumber of bits in bmaph]hNumber of bits in bmap}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKIhjMubah}(h]h ]h"]h$]h&]uh1j hjMubeh}(h]h ]h"]h$]h&]uh1j hjMhKHhjiMubeh}(h]h ]h"]h$]h&]uh1j hj!Mubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_graph (C struct) c.media_graphhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_graphh]j )}(hstruct media_graphh](j )}(hj h]hstruct}(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKOubj )}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNhhhjNhKOubj$ )}(h media_graphh]j* )}(hjNh]h media_graph}(hj&NhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"Nubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjNhhhjNhKOubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjMhhhjNhKOubah}(h]jMah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjNhKOhjMhhubjV )}(hhh]h)}(hMedia graph traversal stateh]hMedia graph traversal state}(hjHNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKPhjENhhubah}(h]h ]h"]h$]h&]uh1jU hjMhhhjNhKOubeh}(h]h ](jstructeh"]h$]h&]jv jjw j`Njx j`Njy jz j{ uh1j hhhj hNhNubj} )}(hXx**Definition**:: struct media_graph { struct { struct media_entity *entity; struct list_head *link; } stack[MEDIA_ENTITY_ENUM_MAX_DEPTH]; struct media_entity_enum ent_enum; int top; }; **Members** ``stack`` Graph traversal stack; the stack contains information on the path the media entities to be walked and the links through which they were reached. ``stack.entity`` pointer to :c:type:`struct media_entity ` at the graph. ``stack.link`` pointer to :c:type:`struct list_head `. ``ent_enum`` Visited entities ``top`` The top of the stackh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjlNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhNubh:}(hjhNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKThjdNubj)}(hstruct media_graph { struct { struct media_entity *entity; struct list_head *link; } stack[MEDIA_ENTITY_ENUM_MAX_DEPTH]; struct media_entity_enum ent_enum; int top; };h]hstruct media_graph { struct { struct media_entity *entity; struct list_head *link; } stack[MEDIA_ENTITY_ENUM_MAX_DEPTH]; struct media_entity_enum ent_enum; int top; };}hjNsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKVhjdNubh)}(h **Members**h]j)}(hjNh]hMembers}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK_hjdNubj )}(hhh](j )}(h``stack`` Graph traversal stack; the stack contains information on the path the media entities to be walked and the links through which they were reached. h](j )}(h ``stack``h]j~)}(hjNh]hstack}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjNubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKUhjNubj )}(hhh]h)}(hGraph traversal stack; the stack contains information on the path the media entities to be walked and the links through which they were reached.h]hGraph traversal stack; the stack contains information on the path the media entities to be walked and the links through which they were reached.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKShjNubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjNhKUhjNubj )}(hW``stack.entity`` pointer to :c:type:`struct media_entity ` at the graph. h](j )}(h``stack.entity``h]j~)}(hjNh]h stack.entity}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjNubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKVhjNubj )}(hhh]h)}(hEpointer to :c:type:`struct media_entity ` at the graph.h](h pointer to }(hjOhhhNhNubh)}(h,:c:type:`struct media_entity `h]j~)}(hjOh]hstruct media_entity}(hjOhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjOubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjOhKVhjOubh at the graph.}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOhKVhjOubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjOhKVhjNubj )}(hB``stack.link`` pointer to :c:type:`struct list_head `. h](j )}(h``stack.link``h]j~)}(hjKOh]h stack.link}(hjMOhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjIOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKWhjEOubj )}(hhh]h)}(h2pointer to :c:type:`struct list_head `.h](h pointer to }(hjdOhhhNhNubh)}(h&:c:type:`struct list_head `h]j~)}(hjnOh]hstruct list_head}(hjpOhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjlOubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj list_headuh1hhj`OhKWhjdOubh.}(hjdOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj`OhKWhjaOubah}(h]h ]h"]h$]h&]uh1j hjEOubeh}(h]h ]h"]h$]h&]uh1j hj`OhKWhjNubj )}(h``ent_enum`` Visited entities h](j )}(h ``ent_enum``h]j~)}(hjOh]hent_enum}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKXhjOubj )}(hhh]h)}(hVisited entitiesh]hVisited entities}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhKXhjOubah}(h]h ]h"]h$]h&]uh1j hjOubeh}(h]h ]h"]h$]h&]uh1j hjOhKXhjNubj )}(h``top`` The top of the stackh](j )}(h``top``h]j~)}(hjOh]htop}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKXhjOubj )}(hhh]h)}(hThe top of the stackh]hThe top of the stack}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKYhjOubah}(h]h ]h"]h$]h&]uh1j hjOubeh}(h]h ]h"]h$]h&]uh1j hjOhKXhjNubeh}(h]h ]h"]h$]h&]uh1j hjdNubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pipeline (C struct)c.media_pipelinehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipelineh]j )}(hstruct media_pipelineh](j )}(hj h]hstruct}(hj:PhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6Phhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK_ubj )}(h h]h }(hjHPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6PhhhjGPhK_ubj$ )}(hmedia_pipelineh]j* )}(hj4Ph]hmedia_pipeline}(hjZPhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjVPubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj6PhhhjGPhK_ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj2PhhhjGPhK_ubah}(h]j-Pah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjGPhK_hj/PhhubjV )}(hhh]h)}(h"Media pipeline related informationh]h"Media pipeline related information}(hj|PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKehjyPhhubah}(h]h ]h"]h$]h&]uh1jU hj/PhhhjGPhK_ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jPjx jPjy jz j{ uh1j hhhj hNhNubj} )}(hX~**Definition**:: struct media_pipeline { bool allocated; struct media_device *mdev; struct list_head pads; int start_count; }; **Members** ``allocated`` Media pipeline allocated and freed by the framework ``mdev`` The media device the pipeline is part of ``pads`` List of media_pipeline_pad ``start_count`` Media pipeline start - stop counth](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubh:}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKihjPubj)}(h}struct media_pipeline { bool allocated; struct media_device *mdev; struct list_head pads; int start_count; };h]h}struct media_pipeline { bool allocated; struct media_device *mdev; struct list_head pads; int start_count; };}hjPsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKkhjPubh)}(h **Members**h]j)}(hjPh]hMembers}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKrhjPubj )}(hhh](j )}(hB``allocated`` Media pipeline allocated and freed by the framework h](j )}(h ``allocated``h]j~)}(hjPh]h allocated}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjPubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhhjPubj )}(hhh]h)}(h3Media pipeline allocated and freed by the frameworkh]h3Media pipeline allocated and freed by the framework}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhKhhjPubah}(h]h ]h"]h$]h&]uh1j hjPubeh}(h]h ]h"]h$]h&]uh1j hjPhKhhjPubj )}(h2``mdev`` The media device the pipeline is part of h](j )}(h``mdev``h]j~)}(hj"Qh]hmdev}(hj$QhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj Qubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKihjQubj )}(hhh]h)}(h(The media device the pipeline is part ofh]h(The media device the pipeline is part of}(hj;QhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7QhKihj8Qubah}(h]h ]h"]h$]h&]uh1j hjQubeh}(h]h ]h"]h$]h&]uh1j hj7QhKihjPubj )}(h$``pads`` List of media_pipeline_pad h](j )}(h``pads``h]j~)}(hj[Qh]hpads}(hj]QhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjYQubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKjhjUQubj )}(hhh]h)}(hList of media_pipeline_padh]hList of media_pipeline_pad}(hjtQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjpQhKjhjqQubah}(h]h ]h"]h$]h&]uh1j hjUQubeh}(h]h ]h"]h$]h&]uh1j hjpQhKjhjPubj )}(h1``start_count`` Media pipeline start - stop counth](j )}(h``start_count``h]j~)}(hjQh]h start_count}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjQubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKjhjQubj )}(hhh]h)}(h!Media pipeline start - stop counth]h!Media pipeline start - stop count}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKkhjQubah}(h]h ]h"]h$]h&]uh1j hjQubeh}(h]h ]h"]h$]h&]uh1j hjQhKjhjPubeh}(h]h ]h"]h$]h&]uh1j hjPubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pipeline_pad (C struct)c.media_pipeline_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_padh]j )}(hstruct media_pipeline_padh](j )}(hj h]hstruct}(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKqubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQhhhjQhKqubj$ )}(hmedia_pipeline_padh]j* )}(hjQh]hmedia_pipeline_pad}(hjRhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj Rubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjQhhhjQhKqubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjQhhhjQhKqubah}(h]jQah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjQhKqhjQhhubjV )}(hhh]h)}(hA pad part of a media pipelineh]hA pad part of a media pipeline}(hj0RhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKthj-Rhhubah}(h]h ]h"]h$]h&]uh1jU hjQhhhjQhKqubeh}(h]h ](jstructeh"]h$]h&]jv jjw jHRjx jHRjy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_pipeline_pad { struct list_head list; struct media_pipeline *pipe; struct media_pad *pad; }; **Members** ``list`` Entry in the media_pad pads list ``pipe`` The media_pipeline that the pad is part of ``pad`` The media padh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjTRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPRubh:}(hjPRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKxhjLRubj)}(hustruct media_pipeline_pad { struct list_head list; struct media_pipeline *pipe; struct media_pad *pad; };h]hustruct media_pipeline_pad { struct list_head list; struct media_pipeline *pipe; struct media_pad *pad; };}hjmRsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKzhjLRubh)}(h **Members**h]j)}(hj~Rh]hMembers}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|Rubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjLRubj )}(hhh](j )}(h*``list`` Entry in the media_pad pads list h](j )}(h``list``h]j~)}(hjRh]hlist}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjRubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKwhjRubj )}(hhh]h)}(h Entry in the media_pad pads listh]h Entry in the media_pad pads list}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKwhjRubah}(h]h ]h"]h$]h&]uh1j hjRubeh}(h]h ]h"]h$]h&]uh1j hjRhKwhjRubj )}(h4``pipe`` The media_pipeline that the pad is part of h](j )}(h``pipe``h]j~)}(hjRh]hpipe}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjRubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKxhjRubj )}(hhh]h)}(h*The media_pipeline that the pad is part ofh]h*The media_pipeline that the pad is part of}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKxhjRubah}(h]h ]h"]h$]h&]uh1j hjRubeh}(h]h ]h"]h$]h&]uh1j hjRhKxhjRubj )}(h``pad`` The media padh](j )}(h``pad``h]j~)}(hjSh]hpad}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj Subah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKxhj Subj )}(hhh]h)}(h The media padh]h The media pad}(hj(ShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKyhj%Subah}(h]h ]h"]h$]h&]uh1j hj Subeh}(h]h ]h"]h$]h&]uh1j hj$ShKxhjRubeh}(h]h ]h"]h$]h&]uh1j hjLRubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjRSh]h Description}(hjTShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPSubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK|hj hhubh)}(hXThis structure associate a pad with a media pipeline. Instances of media_pipeline_pad are created by media_pipeline_start() when it builds the pipeline, and stored in the :c:type:`media_pad.pads ` list. media_pipeline_stop() removes the entries from the list and deletes them.h](hThis structure associate a pad with a media pipeline. Instances of media_pipeline_pad are created by media_pipeline_start() when it builds the pipeline, and stored in the }(hjhShhhNhNubh)}(h$:c:type:`media_pad.pads `h]j~)}(hjrSh]hmedia_pad.pads}(hjtShhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjpSubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_paduh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKyhjhSubhP list. media_pipeline_stop() removes the entries from the list and deletes them.}(hjhShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjShKyhj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_pipeline_pad_iter (C struct)c.media_pipeline_pad_iterhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_pad_iterh]j )}(hstruct media_pipeline_pad_iterh](j )}(hj h]hstruct}(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjShhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hjShhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjShhhjShKubj$ )}(hmedia_pipeline_pad_iterh]j* )}(hjSh]hmedia_pipeline_pad_iter}(hjShhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjSubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjShhhjShKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjShhhjShKubah}(h]jSah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjShKhjShhubjV )}(hhh]h)}(h(Iterator for media_pipeline_for_each_padh]h(Iterator for media_pipeline_for_each_pad}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjShhubah}(h]h ]h"]h$]h&]uh1jU hjShhhjShKubeh}(h]h ](jstructeh"]h$]h&]jv jjw j Tjx j Tjy jz j{ uh1j hhhj hNhNubj} )}(h**Definition**:: struct media_pipeline_pad_iter { struct list_head *cursor; }; **Members** ``cursor`` The current elementh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubh:}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjTubj)}(hAstruct media_pipeline_pad_iter { struct list_head *cursor; };h]hAstruct media_pipeline_pad_iter { struct list_head *cursor; };}hj2Tsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjTubh)}(h **Members**h]j)}(hjCTh]hMembers}(hjEThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjATubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjTubj )}(hhh]j )}(h``cursor`` The current elementh](j )}(h ``cursor``h]j~)}(hjbTh]hcursor}(hjdThhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj`Tubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\Tubj )}(hhh]h)}(hThe current elementh]hThe current element}(hj{ThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjxTubah}(h]h ]h"]h$]h&]uh1j hj\Tubeh}(h]h ]h"]h$]h&]uh1j hjwThKhjYTubah}(h]h ]h"]h$]h&]uh1j hjTubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_pipeline_entity_iter (C struct)c.media_pipeline_entity_iterhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_entity_iterh]j )}(h!struct media_pipeline_entity_iterh](j )}(hj h]hstruct}(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjThhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjThhhjThKubj$ )}(hmedia_pipeline_entity_iterh]j* )}(hjTh]hmedia_pipeline_entity_iter}(hjThhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjTubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjThhhjThKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjThhhjThKubah}(h]jTah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjThKhjThhubjV )}(hhh]h)}(h+Iterator for media_pipeline_for_each_entityh]h+Iterator for media_pipeline_for_each_entity}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjThhubah}(h]h ]h"]h$]h&]uh1jU hjThhhjThKubeh}(h]h ](jstructeh"]h$]h&]jv jjw jUjx jUjy jz j{ uh1j hhhj hNhNubj} )}(h**Definition**:: struct media_pipeline_entity_iter { struct media_entity_enum ent_enum; struct list_head *cursor; }; **Members** ``ent_enum`` The entity enumeration tracker ``cursor`` The current elementh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj"UhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh:}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUubj)}(hkstruct media_pipeline_entity_iter { struct media_entity_enum ent_enum; struct list_head *cursor; };h]hkstruct media_pipeline_entity_iter { struct media_entity_enum ent_enum; struct list_head *cursor; };}hj;Usbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUubh)}(h **Members**h]j)}(hjLUh]hMembers}(hjNUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJUubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUubj )}(hhh](j )}(h,``ent_enum`` The entity enumeration tracker h](j )}(h ``ent_enum``h]j~)}(hjkUh]hent_enum}(hjmUhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiUubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjeUubj )}(hhh]h)}(hThe entity enumeration trackerh]hThe entity enumeration tracker}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjUubah}(h]h ]h"]h$]h&]uh1j hjeUubeh}(h]h ]h"]h$]h&]uh1j hjUhKhjbUubj )}(h``cursor`` The current elementh](j )}(h ``cursor``h]j~)}(hjUh]hcursor}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjUubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUubj )}(hhh]h)}(hThe current elementh]hThe current element}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUubah}(h]h ]h"]h$]h&]uh1j hjUubeh}(h]h ]h"]h$]h&]uh1j hjUhKhjbUubeh}(h]h ]h"]h$]h&]uh1j hjUubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_link (C struct) c.media_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_linkh]j )}(hstruct media_linkh](j )}(hj h]hstruct}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hj VhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjUhhhj VhKubj$ )}(h media_linkh]j* )}(hjUh]h media_link}(hjVhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjVubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjUhhhj VhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjUhhhj VhKubah}(h]jUah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj VhKhjUhhubjV )}(hhh]h)}(h$A link object part of a media graph.h]h$A link object part of a media graph.}(hj@VhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj=Vhhubah}(h]h ]h"]h$]h&]uh1jU hjUhhhj VhKubeh}(h]h ](jstructeh"]h$]h&]jv jjw jXVjx jXVjy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_link { struct media_gobj graph_obj; struct list_head list; union { struct media_gobj *gobj0; struct media_pad *source; struct media_interface *intf; }; union { struct media_gobj *gobj1; struct media_pad *sink; struct media_entity *entity; }; struct media_link *reverse; unsigned long flags; bool is_backlink; }; **Members** ``graph_obj`` Embedded structure containing the media object common data ``list`` Linked list associated with an entity or an interface that owns the link. ``{unnamed_union}`` anonymous ``gobj0`` Part of a union. Used to get the pointer for the first graph_object of the link. ``source`` Part of a union. Used only if the first object (gobj0) is a pad. In that case, it represents the source pad. ``intf`` Part of a union. Used only if the first object (gobj0) is an interface. ``{unnamed_union}`` anonymous ``gobj1`` Part of a union. Used to get the pointer for the second graph_object of the link. ``sink`` Part of a union. Used only if the second object (gobj1) is a pad. In that case, it represents the sink pad. ``entity`` Part of a union. Used only if the second object (gobj1) is an entity. ``reverse`` Pointer to the link for the reverse direction of a pad to pad link. ``flags`` Link flags, as defined in uapi/media.h (MEDIA_LNK_FL_*) ``is_backlink`` Indicate if the link is a backlink.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjdVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`Vubh:}(hj`VhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\Vubj)}(hXstruct media_link { struct media_gobj graph_obj; struct list_head list; union { struct media_gobj *gobj0; struct media_pad *source; struct media_interface *intf; }; union { struct media_gobj *gobj1; struct media_pad *sink; struct media_entity *entity; }; struct media_link *reverse; unsigned long flags; bool is_backlink; };h]hXstruct media_link { struct media_gobj graph_obj; struct list_head list; union { struct media_gobj *gobj0; struct media_pad *source; struct media_interface *intf; }; union { struct media_gobj *gobj1; struct media_pad *sink; struct media_entity *entity; }; struct media_link *reverse; unsigned long flags; bool is_backlink; };}hj}Vsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\Vubh)}(h **Members**h]j)}(hjVh]hMembers}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\Vubj )}(hhh](j )}(hI``graph_obj`` Embedded structure containing the media object common data h](j )}(h ``graph_obj``h]j~)}(hjVh]h graph_obj}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjVubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjVubj )}(hhh]h)}(h:Embedded structure containing the media object common datah]h:Embedded structure containing the media object common data}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjVubah}(h]h ]h"]h$]h&]uh1j hjVubeh}(h]h ]h"]h$]h&]uh1j hjVhKhjVubj )}(hS``list`` Linked list associated with an entity or an interface that owns the link. h](j )}(h``list``h]j~)}(hjVh]hlist}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjVubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjVubj )}(hhh]h)}(hILinked list associated with an entity or an interface that owns the link.h]hILinked list associated with an entity or an interface that owns the link.}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjVubah}(h]h ]h"]h$]h&]uh1j hjVubeh}(h]h ]h"]h$]h&]uh1j hjVhKhjVubj )}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j~)}(hj Wh]h{unnamed_union}}(hj"WhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubj )}(hhh]h)}(h anonymoush]h anonymous}(hj9WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5WhKhj6Wubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hj5WhKhjVubj )}(h[``gobj0`` Part of a union. Used to get the pointer for the first graph_object of the link. h](j )}(h ``gobj0``h]j~)}(hjYWh]hgobj0}(hj[WhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjSWubj )}(hhh]h)}(hPPart of a union. Used to get the pointer for the first graph_object of the link.h]hPPart of a union. Used to get the pointer for the first graph_object of the link.}(hjrWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjoWubah}(h]h ]h"]h$]h&]uh1j hjSWubeh}(h]h ]h"]h$]h&]uh1j hjnWhKhjVubj )}(hx``source`` Part of a union. Used only if the first object (gobj0) is a pad. In that case, it represents the source pad. h](j )}(h ``source``h]j~)}(hjWh]hsource}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubj )}(hhh]h)}(hlPart of a union. Used only if the first object (gobj0) is a pad. In that case, it represents the source pad.h]hlPart of a union. Used only if the first object (gobj0) is a pad. In that case, it represents the source pad.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjWhKhjVubj )}(hQ``intf`` Part of a union. Used only if the first object (gobj0) is an interface. h](j )}(h``intf``h]j~)}(hjWh]hintf}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubj )}(hhh]h)}(hGPart of a union. Used only if the first object (gobj0) is an interface.h]hGPart of a union. Used only if the first object (gobj0) is an interface.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjWhKhjVubj )}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j~)}(hjXh]h{unnamed_union}}(hj XhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubj )}(hhh]h)}(h anonymoush]h anonymous}(hj XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjXubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjXhKhjVubj )}(h\``gobj1`` Part of a union. Used to get the pointer for the second graph_object of the link. h](j )}(h ``gobj1``h]j~)}(hj@Xh]hgobj1}(hjBXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj>Xubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj:Xubj )}(hhh]h)}(hQPart of a union. Used to get the pointer for the second graph_object of the link.h]hQPart of a union. Used to get the pointer for the second graph_object of the link.}(hjYXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjVXubah}(h]h ]h"]h$]h&]uh1j hj:Xubeh}(h]h ]h"]h$]h&]uh1j hjUXhKhjVubj )}(hu``sink`` Part of a union. Used only if the second object (gobj1) is a pad. In that case, it represents the sink pad. h](j )}(h``sink``h]j~)}(hjzXh]hsink}(hj|XhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjxXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjtXubj )}(hhh]h)}(hkPart of a union. Used only if the second object (gobj1) is a pad. In that case, it represents the sink pad.h]hkPart of a union. Used only if the second object (gobj1) is a pad. In that case, it represents the sink pad.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubah}(h]h ]h"]h$]h&]uh1j hjtXubeh}(h]h ]h"]h$]h&]uh1j hjXhKhjVubj )}(hQ``entity`` Part of a union. Used only if the second object (gobj1) is an entity. h](j )}(h ``entity``h]j~)}(hjXh]hentity}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubj )}(hhh]h)}(hEPart of a union. Used only if the second object (gobj1) is an entity.h]hEPart of a union. Used only if the second object (gobj1) is an entity.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjXhKhjVubj )}(hP``reverse`` Pointer to the link for the reverse direction of a pad to pad link. h](j )}(h ``reverse``h]j~)}(hjXh]hreverse}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubj )}(hhh]h)}(hCPointer to the link for the reverse direction of a pad to pad link.h]hCPointer to the link for the reverse direction of a pad to pad link.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjYubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjYhKhjVubj )}(hB``flags`` Link flags, as defined in uapi/media.h (MEDIA_LNK_FL_*) h](j )}(h ``flags``h]j~)}(hj(Yh]hflags}(hj*YhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&Yubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj"Yubj )}(hhh]h)}(h7Link flags, as defined in uapi/media.h (MEDIA_LNK_FL_*)h]h7Link flags, as defined in uapi/media.h (MEDIA_LNK_FL_*)}(hjAYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=YhKhj>Yubah}(h]h ]h"]h$]h&]uh1j hj"Yubeh}(h]h ]h"]h$]h&]uh1j hj=YhKhjVubj )}(h3``is_backlink`` Indicate if the link is a backlink.h](j )}(h``is_backlink``h]j~)}(hjaYh]h is_backlink}(hjcYhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj_Yubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[Yubj )}(hhh]h)}(h#Indicate if the link is a backlink.h]h#Indicate if the link is a backlink.}(hjzYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjwYubah}(h]h ]h"]h$]h&]uh1j hj[Yubeh}(h]h ]h"]h$]h&]uh1j hjvYhKhjVubeh}(h]h ]h"]h$]h&]uh1j hj\Vubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pad_signal_type (C enum)c.media_pad_signal_typehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pad_signal_typeh]j )}(henum media_pad_signal_typeh](j )}(hjSIh]henum}(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhhhjYhKubj$ )}(hmedia_pad_signal_typeh]j* )}(hjYh]hmedia_pad_signal_type}(hjYhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjYubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjYhhhjYhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjYhhhjYhKubah}(h]jYah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjYhKhjYhhubjV )}(hhh]h)}(h%type of the signal inside a media padh]h%type of the signal inside a media pad}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjYhhubah}(h]h ]h"]h$]h&]uh1jU hjYhhhjYhKubeh}(h]h ](jenumeh"]h$]h&]jv jjw jZjx jZjy jz j{ uh1j hhhj hNhNubj} )}(hX&**Constants** ``PAD_SIGNAL_DEFAULT`` Default signal. Use this when all inputs or all outputs are uniquely identified by the pad number. ``PAD_SIGNAL_ANALOG`` The pad contains an analog signal. It can be Radio Frequency, Intermediate Frequency, a baseband signal or sub-carriers. Tuner inputs, IF-PLL demodulators, composite and s-video signals should use it. ``PAD_SIGNAL_DV`` Contains a digital video signal, with can be a bitstream of samples taken from an analog TV video source. On such case, it usually contains the VBI data on it. ``PAD_SIGNAL_AUDIO`` Contains an Intermediate Frequency analog signal from an audio sub-carrier or an audio bitstream. IF signals are provided by tuners and consumed by audio AM/FM decoders. Bitstream audio is provided by an audio decoder.h](h)}(h **Constants**h]j)}(hjZh]h Constants}(hj!ZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjZubj )}(hhh](j )}(hz``PAD_SIGNAL_DEFAULT`` Default signal. Use this when all inputs or all outputs are uniquely identified by the pad number. h](j )}(h``PAD_SIGNAL_DEFAULT``h]j~)}(hj>Zh]hPAD_SIGNAL_DEFAULT}(hj@ZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj[hhhjS[hKubah}(h]j9[ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjS[hKhj;[hhubjV )}(hhh]h)}(hA media pad graph object.h]hA media pad graph object.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[hhubah}(h]h ]h"]h$]h&]uh1jU hj;[hhhjS[hKubeh}(h]h ](jstructeh"]h$]h&]jv jjw j[jx j[jy jz j{ uh1j hhhj hNhNubj} )}(hX **Definition**:: struct media_pad { struct media_gobj graph_obj; struct media_entity *entity; u16 index; u16 num_links; enum media_pad_signal_type sig_type; unsigned long flags; struct media_pipeline *pipe; }; **Members** ``graph_obj`` Embedded structure containing the media object common data ``entity`` Entity this pad belongs to ``index`` Pad index in the entity pads array, numbered from 0 to n ``num_links`` Number of links connected to this pad ``sig_type`` Type of the signal inside a media pad ``flags`` Pad flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``) ``pipe`` Pipeline this pad belongs to. Use media_entity_pipeline() to access this field.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubh:}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[ubj)}(hstruct media_pad { struct media_gobj graph_obj; struct media_entity *entity; u16 index; u16 num_links; enum media_pad_signal_type sig_type; unsigned long flags; struct media_pipeline *pipe; };h]hstruct media_pad { struct media_gobj graph_obj; struct media_entity *entity; u16 index; u16 num_links; enum media_pad_signal_type sig_type; unsigned long flags; struct media_pipeline *pipe; };}hj[sbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[ubh)}(h **Members**h]j)}(hj[h]hMembers}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[ubj )}(hhh](j )}(hI``graph_obj`` Embedded structure containing the media object common data h](j )}(h ``graph_obj``h]j~)}(hj[h]h graph_obj}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj[ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[ubj )}(hhh]h)}(h:Embedded structure containing the media object common datah]h:Embedded structure containing the media object common data}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj \hKhj \ubah}(h]h ]h"]h$]h&]uh1j hj[ubeh}(h]h ]h"]h$]h&]uh1j hj \hKhj[ubj )}(h&``entity`` Entity this pad belongs to h](j )}(h ``entity``h]j~)}(hj.\h]hentity}(hj0\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj,\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj(\ubj )}(hhh]h)}(hEntity this pad belongs toh]hEntity this pad belongs to}(hjG\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjC\hKhjD\ubah}(h]h ]h"]h$]h&]uh1j hj(\ubeh}(h]h ]h"]h$]h&]uh1j hjC\hKhj[ubj )}(hC``index`` Pad index in the entity pads array, numbered from 0 to n h](j )}(h ``index``h]j~)}(hjg\h]hindex}(hji\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hje\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhja\ubj )}(hhh]h)}(h8Pad index in the entity pads array, numbered from 0 to nh]h8Pad index in the entity pads array, numbered from 0 to n}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj|\hKhj}\ubah}(h]h ]h"]h$]h&]uh1j hja\ubeh}(h]h ]h"]h$]h&]uh1j hj|\hKhj[ubj )}(h4``num_links`` Number of links connected to this pad h](j )}(h ``num_links``h]j~)}(hj\h]h num_links}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\ubj )}(hhh]h)}(h%Number of links connected to this padh]h%Number of links connected to this pad}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hKhj\ubah}(h]h ]h"]h$]h&]uh1j hj\ubeh}(h]h ]h"]h$]h&]uh1j hj\hKhj[ubj )}(h3``sig_type`` Type of the signal inside a media pad h](j )}(h ``sig_type``h]j~)}(hj\h]hsig_type}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\ubj )}(hhh]h)}(h%Type of the signal inside a media padh]h%Type of the signal inside a media pad}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hKhj\ubah}(h]h ]h"]h$]h&]uh1j hj\ubeh}(h]h ]h"]h$]h&]uh1j hj\hKhj[ubj )}(hr``flags`` Pad flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``) h](j )}(h ``flags``h]j~)}(hj]h]hflags}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj]ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj ]ubj )}(hhh]h)}(hgPad flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``)h](hPad flags, as defined in }(hj+]hhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hj5]h]hinclude/uapi/linux/media.h}(hj7]hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj3]ubah}(h]h ]h"]h$]h&]refdocj refdomainjA]reftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj+]ubh (seek for }(hj+]hhhNhNubj~)}(h``MEDIA_PAD_FL_*``h]hMEDIA_PAD_FL_*}(hjX]hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+]ubh)}(hj+]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjS]hKhj(]ubah}(h]h ]h"]h$]h&]uh1j hj ]ubeh}(h]h ]h"]h$]h&]uh1j hj']hKhj[ubj )}(hX``pipe`` Pipeline this pad belongs to. Use media_entity_pipeline() to access this field.h](j )}(h``pipe``h]j~)}(hj]h]hpipe}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj]ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj|]ubj )}(hhh]h)}(hOPipeline this pad belongs to. Use media_entity_pipeline() to access this field.h]hOPipeline this pad belongs to. Use media_entity_pipeline() to access this field.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hKhj]ubah}(h]h ]h"]h$]h&]uh1j hj|]ubeh}(h]h ]h"]h$]h&]uh1j hj]hKhj[ubeh}(h]h ]h"]h$]h&]uh1j hj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_entity_operations (C struct)c.media_entity_operationshNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_entity_operationsh]j )}(hstruct media_entity_operationsh](j )}(hj h]hstruct}(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]hhhj]hKubj$ )}(hmedia_entity_operationsh]j* )}(hj]h]hmedia_entity_operations}(hj]hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj]ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj]hhhj]hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj]hhhj]hKubah}(h]j]ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj]hKhj]hhubjV )}(hhh]h)}(hMedia entity operationsh]hMedia entity operations}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj^hhubah}(h]h ]h"]h$]h&]uh1jU hj]hhhj]hKubeh}(h]h ](jstructeh"]h$]h&]jv jjw j5^jx j5^jy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_entity_operations { int (*get_fwnode_pad)(struct media_entity *entity, struct fwnode_endpoint *endpoint); int (*link_setup)(struct media_entity *entity, const struct media_pad *local, const struct media_pad *remote, u32 flags); int (*link_validate)(struct media_link *link); bool (*has_pad_interdep)(struct media_entity *entity, unsigned int pad0, unsigned int pad1); }; **Members** ``get_fwnode_pad`` Return the pad number based on a fwnode endpoint or a negative value on error. This operation can be used to map a fwnode to a media pad number. Optional. ``link_setup`` Notify the entity of link changes. The operation can return an error, in which case link setup will be cancelled. Optional. ``link_validate`` Return whether a link is valid from the entity point of view. The media_pipeline_start() function validates all links by calling this operation. Optional. ``has_pad_interdep`` Return whether two pads of the entity are interdependent. If two pads are interdependent they are part of the same pipeline and enabling one of the pads means that the other pad will become "locked" and doesn't allow configuration changes. pad0 and pad1 are guaranteed to not both be sinks or sources. Never call the .has_pad_interdep() operation directly, always use media_entity_has_pad_interdep(). Optional: If the operation isn't implemented all pads will be considered as interdependent.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjA^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=^ubh:}(hj=^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj9^ubj)}(hXstruct media_entity_operations { int (*get_fwnode_pad)(struct media_entity *entity, struct fwnode_endpoint *endpoint); int (*link_setup)(struct media_entity *entity, const struct media_pad *local, const struct media_pad *remote, u32 flags); int (*link_validate)(struct media_link *link); bool (*has_pad_interdep)(struct media_entity *entity, unsigned int pad0, unsigned int pad1); };h]hXstruct media_entity_operations { int (*get_fwnode_pad)(struct media_entity *entity, struct fwnode_endpoint *endpoint); int (*link_setup)(struct media_entity *entity, const struct media_pad *local, const struct media_pad *remote, u32 flags); int (*link_validate)(struct media_link *link); bool (*has_pad_interdep)(struct media_entity *entity, unsigned int pad0, unsigned int pad1); };}hjZ^sbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj9^ubh)}(h **Members**h]j)}(hjk^h]hMembers}(hjm^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji^ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hj9^ubj )}(hhh](j )}(h``get_fwnode_pad`` Return the pad number based on a fwnode endpoint or a negative value on error. This operation can be used to map a fwnode to a media pad number. Optional. h](j )}(h``get_fwnode_pad``h]j~)}(hj^h]hget_fwnode_pad}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj^ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubj )}(hhh]h)}(hReturn the pad number based on a fwnode endpoint or a negative value on error. This operation can be used to map a fwnode to a media pad number. Optional.h]hReturn the pad number based on a fwnode endpoint or a negative value on error. This operation can be used to map a fwnode to a media pad number. Optional.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj^ubah}(h]h ]h"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]uh1j hj^hMhj^ubj )}(h``link_setup`` Notify the entity of link changes. The operation can return an error, in which case link setup will be cancelled. Optional. h](j )}(h``link_setup``h]j~)}(hj^h]h link_setup}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj^ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubj )}(hhh]h)}(h{Notify the entity of link changes. The operation can return an error, in which case link setup will be cancelled. Optional.h]h{Notify the entity of link changes. The operation can return an error, in which case link setup will be cancelled. Optional.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubah}(h]h ]h"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]uh1j hj^hMhj^ubj )}(h``link_validate`` Return whether a link is valid from the entity point of view. The media_pipeline_start() function validates all links by calling this operation. Optional. h](j )}(h``link_validate``h]j~)}(hj^h]h link_validate}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj^ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubj )}(hhh]h)}(hReturn whether a link is valid from the entity point of view. The media_pipeline_start() function validates all links by calling this operation. Optional.h]hReturn whether a link is valid from the entity point of view. The media_pipeline_start() function validates all links by calling this operation. Optional.}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj_ubah}(h]h ]h"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]uh1j hj_hMhj^ubj )}(hX``has_pad_interdep`` Return whether two pads of the entity are interdependent. If two pads are interdependent they are part of the same pipeline and enabling one of the pads means that the other pad will become "locked" and doesn't allow configuration changes. pad0 and pad1 are guaranteed to not both be sinks or sources. Never call the .has_pad_interdep() operation directly, always use media_entity_has_pad_interdep(). Optional: If the operation isn't implemented all pads will be considered as interdependent.h](j )}(h``has_pad_interdep``h]j~)}(hj8_h]hhas_pad_interdep}(hj:_hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj6_ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj2_ubj )}(hhh]h)}(hXReturn whether two pads of the entity are interdependent. If two pads are interdependent they are part of the same pipeline and enabling one of the pads means that the other pad will become "locked" and doesn't allow configuration changes. pad0 and pad1 are guaranteed to not both be sinks or sources. Never call the .has_pad_interdep() operation directly, always use media_entity_has_pad_interdep(). Optional: If the operation isn't implemented all pads will be considered as interdependent.h]hXReturn whether two pads of the entity are interdependent. If two pads are interdependent they are part of the same pipeline and enabling one of the pads means that the other pad will become “locked” and doesn’t allow configuration changes. pad0 and pad1 are guaranteed to not both be sinks or sources. Never call the .has_pad_interdep() operation directly, always use media_entity_has_pad_interdep(). Optional: If the operation isn’t implemented all pads will be considered as interdependent.}(hjQ_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjN_ubah}(h]h ]h"]h$]h&]uh1j hj2_ubeh}(h]h ]h"]h$]h&]uh1j hjM_hMhj^ubeh}(h]h ]h"]h$]h&]uh1j hj9^ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hj{_h]h Description}(hj}_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjy_ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(hjThose these callbacks are called with struct :c:type:`media_device.graph_mutex ` mutex held.h]h)}(hjThose these callbacks are called with struct :c:type:`media_device.graph_mutex ` mutex held.h](h-Those these callbacks are called with struct }(hj_hhhNhNubh)}(h1:c:type:`media_device.graph_mutex `h]j~)}(hj_h]hmedia_device.graph_mutex}(hj_hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj_ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj_ubh mutex held.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_entity_type (C enum)c.media_entity_typehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_entity_typeh]j )}(henum media_entity_typeh](j )}(hjSIh]henum}(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj_hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj_hhhj_hMubj$ )}(hmedia_entity_typeh]j* )}(hj_h]hmedia_entity_type}(hj`hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj`ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj_hhhj_hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj_hhhj_hMubah}(h]j_ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj_hMhj_hhubjV )}(hhh]h)}(hMedia entity typeh]hMedia entity type}(hj(`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM"hj%`hhubah}(h]h ]h"]h$]h&]uh1jU hj_hhhj_hMubeh}(h]h ](jenumeh"]h$]h&]jv jjw j@`jx j@`jy jz j{ uh1j hhhj hNhNubj} )}(hX#**Constants** ``MEDIA_ENTITY_TYPE_BASE`` The entity isn't embedded in another subsystem structure. ``MEDIA_ENTITY_TYPE_VIDEO_DEVICE`` The entity is embedded in a struct video_device instance. ``MEDIA_ENTITY_TYPE_V4L2_SUBDEV`` The entity is embedded in a struct v4l2_subdev instance.h](h)}(h **Constants**h]j)}(hjJ`h]h Constants}(hjL`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjH`ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM&hjD`ubj )}(hhh](j )}(hU``MEDIA_ENTITY_TYPE_BASE`` The entity isn't embedded in another subsystem structure. h](j )}(h``MEDIA_ENTITY_TYPE_BASE``h]j~)}(hji`h]hMEDIA_ENTITY_TYPE_BASE}(hjk`hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjg`ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM)hjc`ubj )}(hhh]h)}(h9The entity isn't embedded in another subsystem structure.h]h;The entity isn’t embedded in another subsystem structure.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~`hM)hj`ubah}(h]h ]h"]h$]h&]uh1j hjc`ubeh}(h]h ]h"]h$]h&]uh1j hj~`hM)hj``ubj )}(h]``MEDIA_ENTITY_TYPE_VIDEO_DEVICE`` The entity is embedded in a struct video_device instance. h](j )}(h"``MEDIA_ENTITY_TYPE_VIDEO_DEVICE``h]j~)}(hj`h]hMEDIA_ENTITY_TYPE_VIDEO_DEVICE}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj`ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM,hj`ubj )}(hhh]h)}(h9The entity is embedded in a struct video_device instance.h]h9The entity is embedded in a struct video_device instance.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj`hM,hj`ubah}(h]h ]h"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]uh1j hj`hM,hj``ubj )}(hZ``MEDIA_ENTITY_TYPE_V4L2_SUBDEV`` The entity is embedded in a struct v4l2_subdev instance.h](j )}(h!``MEDIA_ENTITY_TYPE_V4L2_SUBDEV``h]j~)}(hj`h]hMEDIA_ENTITY_TYPE_V4L2_SUBDEV}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj`ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM.hj`ubj )}(hhh]h)}(h8The entity is embedded in a struct v4l2_subdev instance.h]h8The entity is embedded in a struct v4l2_subdev instance.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hj`ubah}(h]h ]h"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]uh1j hj`hM.hj``ubeh}(h]h ]h"]h$]h&]uh1j hjD`ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjah]h Description}(hj ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjaubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM1hj hhubh)}(hXMedia entity objects are often not instantiated directly, but the media entity structure is inherited by (through embedding) other subsystem-specific structures. The media entity type identifies the type of the subclass structure that implements a media entity instance.h]hXMedia entity objects are often not instantiated directly, but the media entity structure is inherited by (through embedding) other subsystem-specific structures. The media entity type identifies the type of the subclass structure that implements a media entity instance.}(hj4ahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM*hj hhubh)}(hXTThis allows runtime type identification of media entities and safe casting to the correct object type. For instance, a media entity structure instance embedded in a v4l2_subdev structure instance will have the type ``MEDIA_ENTITY_TYPE_V4L2_SUBDEV`` and can safely be cast to a :c:type:`v4l2_subdev` structure using the container_of() macro.h](hThis allows runtime type identification of media entities and safe casting to the correct object type. For instance, a media entity structure instance embedded in a v4l2_subdev structure instance will have the type }(hjCahhhNhNubj~)}(h!``MEDIA_ENTITY_TYPE_V4L2_SUBDEV``h]hMEDIA_ENTITY_TYPE_V4L2_SUBDEV}(hjKahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjCaubh and can safely be cast to a }(hjCahhhNhNubh)}(h:c:type:`v4l2_subdev`h]j~)}(hj_ah]h v4l2_subdev}(hjaahhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj]aubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hjCaubh* structure using the container_of() macro.}(hjCahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj|ahM/hj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_entity (C struct)c.media_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_entityh]j )}(hstruct media_entityh](j )}(hj h]hstruct}(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjahhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM8ubj )}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjahhhjahM8ubj$ )}(h media_entityh]j* )}(hjah]h media_entity}(hjahhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjaubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjahhhjahM8ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjahhhjahM8ubah}(h]jaah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjahM8hjahhubjV )}(hhh]h)}(hA media entity graph object.h]hA media entity graph object.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM=hjahhubah}(h]h ]h"]h$]h&]uh1jU hjahhhjahM8ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jajx jajy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_entity { struct media_gobj graph_obj; const char *name; enum media_entity_type obj_type; u32 function; unsigned long flags; u16 num_pads; u16 num_links; u16 num_backlinks; int internal_idx; struct media_pad *pads; struct list_head links; const struct media_entity_operations *ops; int use_count; union { struct { u32 major; u32 minor; } dev; } info; }; **Members** ``graph_obj`` Embedded structure containing the media object common data. ``name`` Entity name. ``obj_type`` Type of the object that implements the media_entity. ``function`` Entity main function, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_F_*``) ``flags`` Entity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``) ``num_pads`` Number of sink and source pads. ``num_links`` Total number of links, forward and back, enabled and disabled. ``num_backlinks`` Number of backlinks ``internal_idx`` An unique internal entity specific number. The numbers are re-used if entities are unregistered or registered again. ``pads`` Pads array with the size defined by **num_pads**. ``links`` List of data links. ``ops`` Entity operations. ``use_count`` Use count for the entity. ``info`` Union with devnode information. Kept just for backward compatibility. ``info.dev`` Contains device major and minor info. ``info.dev.major`` device node major, if the device is a devnode. ``info.dev.minor`` device node minor, if the device is a devnode.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh:}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjaubj)}(hXstruct media_entity { struct media_gobj graph_obj; const char *name; enum media_entity_type obj_type; u32 function; unsigned long flags; u16 num_pads; u16 num_links; u16 num_backlinks; int internal_idx; struct media_pad *pads; struct list_head links; const struct media_entity_operations *ops; int use_count; union { struct { u32 major; u32 minor; } dev; } info; };h]hXstruct media_entity { struct media_gobj graph_obj; const char *name; enum media_entity_type obj_type; u32 function; unsigned long flags; u16 num_pads; u16 num_links; u16 num_backlinks; int internal_idx; struct media_pad *pads; struct list_head links; const struct media_entity_operations *ops; int use_count; union { struct { u32 major; u32 minor; } dev; } info; };}hjbsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjaubh)}(h **Members**h]j)}(hj0bh]hMembers}(hj2bhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.bubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhjaubj )}(hhh](j )}(hJ``graph_obj`` Embedded structure containing the media object common data. h](j )}(h ``graph_obj``h]j~)}(hjObh]h graph_obj}(hjQbhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjMbubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM@hjIbubj )}(hhh]h)}(h;Embedded structure containing the media object common data.h]h;Embedded structure containing the media object common data.}(hjhbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdbhM@hjebubah}(h]h ]h"]h$]h&]uh1j hjIbubeh}(h]h ]h"]h$]h&]uh1j hjdbhM@hjFbubj )}(h``name`` Entity name. h](j )}(h``name``h]j~)}(hjbh]hname}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjbubj )}(hhh]h)}(h Entity name.h]h Entity name.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMAhjbubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhMAhjFbubj )}(hB``obj_type`` Type of the object that implements the media_entity. h](j )}(h ``obj_type``h]j~)}(hjbh]hobj_type}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMBhjbubj )}(hhh]h)}(h4Type of the object that implements the media_entity.h]h4Type of the object that implements the media_entity.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMBhjbubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhMBhjFbubj )}(h``function`` Entity main function, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_F_*``) h](j )}(h ``function``h]j~)}(hjbh]hfunction}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMEhjbubj )}(hhh]h)}(hqEntity main function, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_F_*``)h](h$Entity main function, as defined in }(hjchhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjch]hinclude/uapi/linux/media.h}(hjchhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjcubah}(h]h ]h"]h$]h&]refdocj refdomainj)creftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjcubh (seek for }(hjchhhNhNubj~)}(h``MEDIA_ENT_F_*``h]h MEDIA_ENT_F_*}(hj@chhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjcubh)}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;chMChjcubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hjchMEhjFbubj )}(hu``flags`` Entity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``) h](j )}(h ``flags``h]j~)}(hjjch]hflags}(hjlchhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjhcubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMHhjdcubj )}(hhh]h)}(hjEntity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``)h](hEntity flags, as defined in }(hjchhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjch]hinclude/uapi/linux/media.h}(hjchhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjcubah}(h]h ]h"]h$]h&]refdocj refdomainjcreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMFhjcubh (seek for }(hjchhhNhNubj~)}(h``MEDIA_ENT_FL_*``h]hMEDIA_ENT_FL_*}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjcubh)}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjchMFhjcubah}(h]h ]h"]h$]h&]uh1j hjdcubeh}(h]h ]h"]h$]h&]uh1j hjchMHhjFbubj )}(h-``num_pads`` Number of sink and source pads. h](j )}(h ``num_pads``h]j~)}(hjch]hnum_pads}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjcubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMIhjcubj )}(hhh]h)}(hNumber of sink and source pads.h]hNumber of sink and source pads.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMIhjcubah}(h]h ]h"]h$]h&]uh1j hjcubeh}(h]h ]h"]h$]h&]uh1j hjchMIhjFbubj )}(hM``num_links`` Total number of links, forward and back, enabled and disabled. h](j )}(h ``num_links``h]j~)}(hjdh]h num_links}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMJhj dubj )}(hhh]h)}(h>Total number of links, forward and back, enabled and disabled.h]h>Total number of links, forward and back, enabled and disabled.}(hj,dhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(dhMJhj)dubah}(h]h ]h"]h$]h&]uh1j hj dubeh}(h]h ]h"]h$]h&]uh1j hj(dhMJhjFbubj )}(h&``num_backlinks`` Number of backlinks h](j )}(h``num_backlinks``h]j~)}(hjLdh]h num_backlinks}(hjNdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJdubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMKhjFdubj )}(hhh]h)}(hNumber of backlinksh]hNumber of backlinks}(hjedhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjadhMKhjbdubah}(h]h ]h"]h$]h&]uh1j hjFdubeh}(h]h ]h"]h$]h&]uh1j hjadhMKhjFbubj )}(h``internal_idx`` An unique internal entity specific number. The numbers are re-used if entities are unregistered or registered again. h](j )}(h``internal_idx``h]j~)}(hjdh]h internal_idx}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMMhjdubj )}(hhh]h)}(htAn unique internal entity specific number. The numbers are re-used if entities are unregistered or registered again.h]htAn unique internal entity specific number. The numbers are re-used if entities are unregistered or registered again.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLhjdubah}(h]h ]h"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]uh1j hjdhMMhjFbubj )}(h;``pads`` Pads array with the size defined by **num_pads**. h](j )}(h``pads``h]j~)}(hjdh]hpads}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMNhjdubj )}(hhh]h)}(h1Pads array with the size defined by **num_pads**.h](h$Pads array with the size defined by }(hjdhhhNhNubj)}(h **num_pads**h]hnum_pads}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubh.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjdhMNhjdubah}(h]h ]h"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]uh1j hjdhMNhjFbubj )}(h``links`` List of data links. h](j )}(h ``links``h]j~)}(hj eh]hlinks}(hj ehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjeubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMOhjeubj )}(hhh]h)}(hList of data links.h]hList of data links.}(hj#ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMOhj eubah}(h]h ]h"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]uh1j hjehMOhjFbubj )}(h``ops`` Entity operations. h](j )}(h``ops``h]j~)}(hjCeh]hops}(hjEehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjAeubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMPhj=eubj )}(hhh]h)}(hEntity operations.h]hEntity operations.}(hj\ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXehMPhjYeubah}(h]h ]h"]h$]h&]uh1j hj=eubeh}(h]h ]h"]h$]h&]uh1j hjXehMPhjFbubj )}(h(``use_count`` Use count for the entity. h](j )}(h ``use_count``h]j~)}(hj|eh]h use_count}(hj~ehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjzeubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMQhjveubj )}(hhh]h)}(hUse count for the entity.h]hUse count for the entity.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMQhjeubah}(h]h ]h"]h$]h&]uh1j hjveubeh}(h]h ]h"]h$]h&]uh1j hjehMQhjFbubj )}(hP``info`` Union with devnode information. Kept just for backward compatibility. h](j )}(h``info``h]j~)}(hjeh]hinfo}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjeubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMShjeubj )}(hhh]h)}(hFUnion with devnode information. Kept just for backward compatibility.h]hFUnion with devnode information. Kept just for backward compatibility.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMRhjeubah}(h]h ]h"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]uh1j hjehMShjFbubj )}(h3``info.dev`` Contains device major and minor info. h](j )}(h ``info.dev``h]j~)}(hjeh]hinfo.dev}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjeubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMThjeubj )}(hhh]h)}(h%Contains device major and minor info.h]h%Contains device major and minor info.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMThjfubah}(h]h ]h"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]uh1j hjfhMThjFbubj )}(hB``info.dev.major`` device node major, if the device is a devnode. h](j )}(h``info.dev.major``h]j~)}(hj(fh]hinfo.dev.major}(hj*fhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&fubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhj"fubj )}(hhh]h)}(h.device node major, if the device is a devnode.h]h.device node major, if the device is a devnode.}(hjAfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=fhMUhj>fubah}(h]h ]h"]h$]h&]uh1j hj"fubeh}(h]h ]h"]h$]h&]uh1j hj=fhMUhjFbubj )}(hA``info.dev.minor`` device node minor, if the device is a devnode.h](j )}(h``info.dev.minor``h]j~)}(hjafh]hinfo.dev.minor}(hjcfhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj_fubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhj[fubj )}(hhh]h)}(h.device node minor, if the device is a devnode.h]h.device node minor, if the device is a devnode.}(hjzfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMVhjwfubah}(h]h ]h"]h$]h&]uh1j hj[fubeh}(h]h ]h"]h$]h&]uh1j hjvfhMUhjFbubeh}(h]h ]h"]h$]h&]uh1j hjaubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjfh]h Description}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhj hhubj)}(hThe **use_count** reference count must never be negative, but is a signed integer on purpose: a simple ``WARN_ON(<0)`` check can be used to detect reference count bugs that would make it negative.h]h)}(hThe **use_count** reference count must never be negative, but is a signed integer on purpose: a simple ``WARN_ON(<0)`` check can be used to detect reference count bugs that would make it negative.h](hThe }(hjfhhhNhNubj)}(h **use_count**h]h use_count}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubhV reference count must never be negative, but is a signed integer on purpose: a simple }(hjfhhhNhNubj~)}(h``WARN_ON(<0)``h]h WARN_ON(<0)}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjfubhN check can be used to detect reference count bugs that would make it negative.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMXhjfubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_entity_for_each_pad (C macro)c.media_entity_for_each_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_entity_for_each_padh]j )}(hmedia_entity_for_each_padh]j$ )}(hmedia_entity_for_each_padh]j* )}(hj gh]hmedia_entity_for_each_pad}(hjghhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjgubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj ghhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjghhhj'ghMyubah}(h]jgah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj'ghMyhjghhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjghhhj'ghMyubeh}(h]h ](jmacroeh"]h$]h&]jv jjw j@gjx j@gjy jz j{ uh1j hhhj hNhNubh)}(h,``media_entity_for_each_pad (entity, iter)``h]j~)}(hjFgh]h(media_entity_for_each_pad (entity, iter)}(hjHghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjDgubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hj hhubj)}(h!Iterate on all pads in an entity h]h)}(h Iterate on all pads in an entityh]h Iterate on all pads in an entity}(hj`ghhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyhj\gubah}(h]h ]h"]h$]h&]uh1jhjnghMyhj hhubj} )}(h**Parameters** ``entity`` The entity the pads belong to ``iter`` The iterator pad **Description** Iterate on all pads in a media entity.h](h)}(h**Parameters**h]j)}(hj{gh]h Parameters}(hj}ghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjygubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjugubj )}(hhh](j )}(h)``entity`` The entity the pads belong to h](j )}(h ``entity``h]j~)}(hjgh]hentity}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzhjgubj )}(hhh]h)}(hThe entity the pads belong toh]hThe entity the pads belong to}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMzhjgubah}(h]h ]h"]h$]h&]uh1j hjgubeh}(h]h ]h"]h$]h&]uh1j hjghMzhjgubj )}(h``iter`` The iterator pad h](j )}(h``iter``h]j~)}(hjgh]hiter}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hjgubj )}(hhh]h)}(hThe iterator padh]hThe iterator pad}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM{hjgubah}(h]h ]h"]h$]h&]uh1j hjgubeh}(h]h ]h"]h$]h&]uh1j hjghM{hjgubeh}(h]h ]h"]h$]h&]uh1j hjugubh)}(h**Description**h]j)}(hjhh]h Description}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj hubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjugubh)}(h&Iterate on all pads in a media entity.h]h&Iterate on all pads in a media entity.}(hj$hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM|hjugubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_interface (C struct)c.media_interfacehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_interfaceh]j )}(hstruct media_interfaceh](j )}(hj h]hstruct}(hjShhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOhhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjahhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOhhhhj`hhMubj$ )}(hmedia_interfaceh]j* )}(hjMhh]hmedia_interface}(hjshhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjohubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjOhhhhj`hhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjKhhhhj`hhMubah}(h]jFhah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj`hhMhjHhhhubjV )}(hhh]h)}(hA media interface graph object.h]hA media interface graph object.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhhubah}(h]h ]h"]h$]h&]uh1jU hjHhhhhj`hhMubeh}(h]h ](jstructeh"]h$]h&]jv jjw jhjx jhjy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_interface { struct media_gobj graph_obj; struct list_head links; u32 type; u32 flags; }; **Members** ``graph_obj`` embedded graph object ``links`` List of links pointing to graph entities ``type`` Type of the interface as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_T_*``) ``flags`` Interface flags as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_FL_*``)h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubh:}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhubj)}(hstruct media_interface { struct media_gobj graph_obj; struct list_head links; u32 type; u32 flags; };h]hstruct media_interface { struct media_gobj graph_obj; struct list_head links; u32 type; u32 flags; };}hjhsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhubh)}(h **Members**h]j)}(hjhh]hMembers}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhubj )}(hhh](j )}(h$``graph_obj`` embedded graph object h](j )}(h ``graph_obj``h]j~)}(hjih]h graph_obj}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhubj )}(hhh]h)}(hembedded graph objecth]hembedded graph object}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihMhjiubah}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]uh1j hjihMhjhubj )}(h3``links`` List of links pointing to graph entities h](j )}(h ``links``h]j~)}(hj;ih]hlinks}(hj=ihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9iubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj5iubj )}(hhh]h)}(h(List of links pointing to graph entitiesh]h(List of links pointing to graph entities}(hjTihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPihMhjQiubah}(h]h ]h"]h$]h&]uh1j hj5iubeh}(h]h ]h"]h$]h&]uh1j hjPihMhjhubj )}(h|``type`` Type of the interface as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_T_*``) h](j )}(h``type``h]j~)}(hjtih]htype}(hjvihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjriubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjniubj )}(hhh]h)}(hrType of the interface as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_T_*``)h](h$Type of the interface as defined in }(hjihhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjih]hinclude/uapi/linux/media.h}(hjihhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjiubah}(h]h ]h"]h$]h&]refdocj refdomainjireftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubh (seek for }(hjihhhNhNubj~)}(h``MEDIA_INTF_T_*``h]hMEDIA_INTF_T_*}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiubh)}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjihMhjiubah}(h]h ]h"]h$]h&]uh1j hjniubeh}(h]h ]h"]h$]h&]uh1j hjihMhjhubj )}(hw``flags`` Interface flags as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_FL_*``)h](j )}(h ``flags``h]j~)}(hjih]hflags}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubj )}(hhh]h)}(hmInterface flags as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_FL_*``)h](hInterface flags as defined in }(hjihhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjjh]hinclude/uapi/linux/media.h}(hj jhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjjubah}(h]h ]h"]h$]h&]refdocj refdomainjjreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubh (seek for }(hjihhhNhNubj~)}(h``MEDIA_INTF_FL_*``h]hMEDIA_INTF_FL_*}(hj*jhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjiubh)}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj%jhMhjiubah}(h]h ]h"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]uh1j hjihMhjhubeh}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hj]jh]h Description}(hj_jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[jubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(h=Currently, no flags for :c:type:`media_interface` is defined.h]h)}(hjujh](hCurrently, no flags for }(hjwjhhhNhNubh)}(h:c:type:`media_interface`h]j~)}(hjjh]hmedia_interface}(hjjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj~jubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjwjubh is defined.}(hjwjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjjhMhjsjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_intf_devnode (C struct)c.media_intf_devnodehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_intf_devnodeh]j )}(hstruct media_intf_devnodeh](j )}(hj h]hstruct}(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjhhhjjhMubj$ )}(hmedia_intf_devnodeh]j* )}(hjjh]hmedia_intf_devnode}(hjjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjjhhhjjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjjhhhjjhMubah}(h]jjah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjjhMhjjhhubjV )}(hhh]h)}(h$A media interface via a device node.h]h$A media interface via a device node.}(hj khhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkhhubah}(h]h ]h"]h$]h&]uh1jU hjjhhhjjhMubeh}(h]h ](jstructeh"]h$]h&]jv jjw j!kjx j!kjy jz j{ uh1j hhhj hNhNubj} )}(hX **Definition**:: struct media_intf_devnode { struct media_interface intf; u32 major; u32 minor; }; **Members** ``intf`` embedded interface object ``major`` Major number of a device node ``minor`` Minor number of a device nodeh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj-khhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)kubh:}(hj)khhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj%kubj)}(hfstruct media_intf_devnode { struct media_interface intf; u32 major; u32 minor; };h]hfstruct media_intf_devnode { struct media_interface intf; u32 major; u32 minor; };}hjFksbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj%kubh)}(h **Members**h]j)}(hjWkh]hMembers}(hjYkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUkubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj%kubj )}(hhh](j )}(h#``intf`` embedded interface object h](j )}(h``intf``h]j~)}(hjvkh]hintf}(hjxkhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjtkubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjpkubj )}(hhh]h)}(hembedded interface objecth]hembedded interface object}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMhjkubah}(h]h ]h"]h$]h&]uh1j hjpkubeh}(h]h ]h"]h$]h&]uh1j hjkhMhjmkubj )}(h(``major`` Major number of a device node h](j )}(h ``major``h]j~)}(hjkh]hmajor}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjkubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkubj )}(hhh]h)}(hMajor number of a device nodeh]hMajor number of a device node}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMhjkubah}(h]h ]h"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]uh1j hjkhMhjmkubj )}(h'``minor`` Minor number of a device nodeh](j )}(h ``minor``h]j~)}(hjkh]hminor}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjkubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkubj )}(hhh]h)}(hMinor number of a device nodeh]hMinor number of a device node}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkubah}(h]h ]h"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]uh1j hjkhMhjmkubeh}(h]h ]h"]h$]h&]uh1j hj%kubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_entity_id (C function)c.media_entity_idhNtauh1j hj hhhNhNubj )}(hhh](j )}(h1u32 media_entity_id (struct media_entity *entity)h]j )}(h0u32 media_entity_id(struct media_entity *entity)h](h)}(hhh]j* )}(hu32h]hu32}(hjElhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjBlubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGlmodnameN classnameNjj)}j]j)}jmedia_entity_idsbc.media_entity_idasbuh1hhj>lhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjglhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>lhhhjflhMubj$ )}(hmedia_entity_idh]j* )}(hjclh]hmedia_entity_id}(hjylhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjulubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj>lhhhjflhMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjlhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjlubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]jalc.media_entity_idasbuh1hhjlubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjlubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubj* )}(hentityh]hentity}(hjlhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubah}(h]h ]h"]h$]h&]hhuh1jhj>lhhhjflhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj:lhhhjflhMubah}(h]j5lah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjflhMhj7lhhubjV )}(hhh]h)}(h'return the media entity graph object idh]h'return the media entity graph object id}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjmhhubah}(h]h ]h"]h$]h&]uh1jU hj7lhhhjflhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j-mjx j-mjy jz j{ uh1j hhhj hNhNubj} )}(hS**Parameters** ``struct media_entity *entity`` pointer to :c:type:`media_entity`h](h)}(h**Parameters**h]j)}(hj7mh]h Parameters}(hj9mhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5mubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj1mubj )}(hhh]j )}(hA``struct media_entity *entity`` pointer to :c:type:`media_entity`h](j )}(h``struct media_entity *entity``h]j~)}(hjVmh]hstruct media_entity *entity}(hjXmhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjTmubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjPmubj )}(hhh]h)}(h!pointer to :c:type:`media_entity`h](h pointer to }(hjomhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjymh]h media_entity}(hj{mhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjwmubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjomubeh}(h]h ]h"]h$]h&]uh1hhjmhMhjlmubah}(h]h ]h"]h$]h&]uh1j hjPmubeh}(h]h ]h"]h$]h&]uh1j hjkmhMhjMmubah}(h]h ]h"]h$]h&]uh1j hj1mubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_type (C function) c.media_typehNtauh1j hj hhhNhNubj )}(hhh](j )}(h9enum media_gobj_type media_type (struct media_gobj *gobj)h]j )}(h8enum media_gobj_type media_type(struct media_gobj *gobj)h](j )}(hjSIh]henum}(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmhhhjmhMubh)}(hhh]j* )}(hmedia_gobj_typeh]hmedia_gobj_type}(hjmhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmmodnameN classnameNjj)}j]j)}j media_typesb c.media_typeasbuh1hhjmhhhjmhMubj )}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmhhhjmhMubj$ )}(h media_typeh]j* )}(hj nh]h media_type}(hj!nhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjnubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjmhhhjmhMubj)}(h(struct media_gobj *gobj)h]j)}(hstruct media_gobj *gobjh](j )}(hj h]hstruct}(hjohMhjoubah}(h]h ]h"]h$]h&]uh1j hjnubeh}(h]h ]h"]h$]h&]uh1j hjohMhjnubah}(h]h ]h"]h$]h&]uh1j hjnubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_id (C function) c.media_idhNtauh1j hj hhhNhNubj )}(hhh](j )}(h&u32 media_id (struct media_gobj *gobj)h]j )}(h%u32 media_id(struct media_gobj *gobj)h](h)}(hhh]j* )}(hu32h]hu32}(hj~ohhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj{oubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]j)}jmedia_idsb c.media_idasbuh1hhjwohhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwohhhjohMubj$ )}(hmedia_idh]j* )}(hjoh]hmedia_id}(hjohhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjoubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjwohhhjohMubj)}(h(struct media_gobj *gobj)h]j)}(hstruct media_gobj *gobjh](j )}(hj h]hstruct}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubh)}(hhh]j* )}(h media_gobjh]h media_gobj}(hjohhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjoubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]jo c.media_idasbuh1hhjoubj )}(h h]h }(hj phhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj)}(hjh]h*}(hjphhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubj* )}(hgobjh]hgobj}(hj$phhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjoubah}(h]h ]h"]h$]h&]hhuh1jhjwohhhjohMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjsohhhjohMubah}(h]jnoah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjohMhjpohhubjV )}(hhh]h)}(hreturn the media object IDh]hreturn the media object ID}(hjNphhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjKphhubah}(h]h ]h"]h$]h&]uh1jU hjpohhhjohMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jfpjx jfpjy jz j{ uh1j hhhj hNhNubj} )}(he**Parameters** ``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j)}(hjpph]h Parameters}(hjrphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnpubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjjpubj )}(hhh]j )}(hS``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``struct media_gobj *gobj``h]j~)}(hjph]hstruct media_gobj *gobj}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjpubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjpubj )}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjphhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjph]h media_gobj}(hjphhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjpubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjpubh graph object}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j hjpubeh}(h]h ]h"]h$]h&]uh1j hjphMhjpubah}(h]h ]h"]h$]h&]uh1j hjjpubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj_gen_id (C function)c.media_gobj_gen_idhNtauh1j hj hhhNhNubj )}(hhh](j )}(h?u32 media_gobj_gen_id (enum media_gobj_type type, u64 local_id)h]j )}(h>u32 media_gobj_gen_id(enum media_gobj_type type, u64 local_id)h](h)}(hhh]j* )}(hu32h]hu32}(hjqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj qubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j]j)}jmedia_gobj_gen_idsbc.media_gobj_gen_idasbuh1hhjqhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj1qhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqhhhj0qhMubj$ )}(hmedia_gobj_gen_idh]j* )}(hj-qh]hmedia_gobj_gen_id}(hjCqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?qubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjqhhhj0qhMubj)}(h)(enum media_gobj_type type, u64 local_id)h](j)}(henum media_gobj_type typeh](j )}(hjSIh]henum}(hj^qhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZqubj )}(h h]h }(hjkqhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZqubh)}(hhh]j* )}(hmedia_gobj_typeh]hmedia_gobj_type}(hj|qhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjyqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~qmodnameN classnameNjj)}j]j+qc.media_gobj_gen_idasbuh1hhjZqubj )}(h h]h }(hjqhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZqubj* )}(htypeh]htype}(hjqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjZqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVqubj)}(h u64 local_idh](h)}(hhh]j* )}(hu64h]hu64}(hjqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j]j+qc.media_gobj_gen_idasbuh1hhjqubj )}(h h]h }(hjqhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqubj* )}(hlocal_idh]hlocal_id}(hjqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVqubeh}(h]h ]h"]h$]h&]hhuh1jhjqhhhj0qhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjqhhhj0qhMubah}(h]jpah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj0qhMhjqhhubjV )}(hhh]h)}(h,encapsulates type and ID on at the object IDh]h,encapsulates type and ID on at the object ID}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrhhubah}(h]h ]h"]h$]h&]uh1jU hjqhhhj0qhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j2rjx j2rjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``enum media_gobj_type type`` object type as define at enum :c:type:`media_gobj_type`. ``u64 local_id`` next ID, from struct :c:type:`media_device.id `.h](h)}(h**Parameters**h]j)}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:rubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj6rubj )}(hhh](j )}(hW``enum media_gobj_type type`` object type as define at enum :c:type:`media_gobj_type`. h](j )}(h``enum media_gobj_type type``h]j~)}(hj[rh]henum media_gobj_type type}(hj]rhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjYrubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjUrubj )}(hhh]h)}(h8object type as define at enum :c:type:`media_gobj_type`.h](hobject type as define at enum }(hjtrhhhNhNubh)}(h:c:type:`media_gobj_type`h]j~)}(hj~rh]hmedia_gobj_type}(hjrhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj|rubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_gobj_typeuh1hhjprhMhjtrubh.}(hjtrhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjprhMhjqrubah}(h]h ]h"]h$]h&]uh1j hjUrubeh}(h]h ]h"]h$]h&]uh1j hjprhMhjRrubj )}(hO``u64 local_id`` next ID, from struct :c:type:`media_device.id `.h](j )}(h``u64 local_id``h]j~)}(hjrh]h u64 local_id}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubj )}(hhh]h)}(h>next ID, from struct :c:type:`media_device.id `.h](hnext ID, from struct }(hjrhhhNhNubh)}(h(:c:type:`media_device.id `h]j~)}(hjrh]hmedia_device.id}(hjrhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubh.}(hjrhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1j hjrubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjRrubeh}(h]h ]h"]h$]h&]uh1j hj6rubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j .is_media_entity_v4l2_video_device (C function)#c.is_media_entity_v4l2_video_devicehNtauh1j hj hhhNhNubj )}(hhh](j )}(hDbool is_media_entity_v4l2_video_device (struct media_entity *entity)h]j )}(hCbool is_media_entity_v4l2_video_device(struct media_entity *entity)h](jL)}(hboolh]hbool}(hj4shhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj0shhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjCshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0shhhjBshMubj$ )}(h!is_media_entity_v4l2_video_deviceh]j* )}(h!is_media_entity_v4l2_video_deviceh]h!is_media_entity_v4l2_video_device}(hjUshhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjQsubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj0shhhjBshMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjqshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmsubj )}(h h]h }(hj~shhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmsubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjshhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]j)}jjWssb#c.is_media_entity_v4l2_video_deviceasbuh1hhjmsubj )}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjmsubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjmsubj* )}(hentityh]hentity}(hjshhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjmsubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjisubah}(h]h ]h"]h$]h&]hhuh1jhj0shhhjBshMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj,shhhjBshMubah}(h]j'sah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjBshMhj)shhubjV )}(hhh]h)}(h%Check if the entity is a video_deviceh]h%Check if the entity is a video_device}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjshhubah}(h]h ]h"]h$]h&]uh1jU hj)shhhjBshMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j tjx j tjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_entity *entity`` pointer to entity **Return** ``true`` if the entity is an instance of a video_device object and can safely be cast to a struct video_device using the container_of() macro, or ``false`` otherwise.h](h)}(h**Parameters**h]j)}(hjth]h Parameters}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjtubj )}(hhh]j )}(h2``struct media_entity *entity`` pointer to entity h](j )}(h``struct media_entity *entity``h]j~)}(hj5th]hstruct media_entity *entity}(hj7thhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3tubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj/tubj )}(hhh]h)}(hpointer to entityh]hpointer to entity}(hjNthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJthMhjKtubah}(h]h ]h"]h$]h&]uh1j hj/tubeh}(h]h ]h"]h$]h&]uh1j hjJthMhj,tubah}(h]h ]h"]h$]h&]uh1j hjtubh)}(h **Return**h]j)}(hjpth]hReturn}(hjrthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjntubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjtubh)}(h``true`` if the entity is an instance of a video_device object and can safely be cast to a struct video_device using the container_of() macro, or ``false`` otherwise.h](j~)}(h``true``h]htrue}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjtubh if the entity is an instance of a video_device object and can safely be cast to a struct video_device using the container_of() macro, or }(hjthhhNhNubj~)}(h ``false``h]hfalse}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjtubh otherwise.}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjtubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (is_media_entity_v4l2_subdev (C function)c.is_media_entity_v4l2_subdevhNtauh1j hj hhhNhNubj )}(hhh](j )}(h>bool is_media_entity_v4l2_subdev (struct media_entity *entity)h]j )}(h=bool is_media_entity_v4l2_subdev(struct media_entity *entity)h](jL)}(hj6sh]hbool}(hjthhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjthhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjthhhjthMubj$ )}(his_media_entity_v4l2_subdevh]j* )}(his_media_entity_v4l2_subdevh]his_media_entity_v4l2_subdev}(hjthhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjtubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjthhhjthMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj uubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj uubh)}(hhh]j* )}(h media_entityh]h media_entity}(hj/uhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj,uubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1umodnameN classnameNjj)}j]j)}jjtsbc.is_media_entity_v4l2_subdevasbuh1hhj uubj )}(h h]h }(hjOuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj uubj)}(hjh]h*}(hj]uhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj uubj* )}(hentityh]hentity}(hjjuhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj uubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj uubah}(h]h ]h"]h$]h&]hhuh1jhjthhhjthMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjthhhjthMubah}(h]jtah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjthMhjthhubjV )}(hhh]h)}(h$Check if the entity is a v4l2_subdevh]h$Check if the entity is a v4l2_subdev}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuhhubah}(h]h ]h"]h$]h&]uh1jU hjthhhjthMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jujx jujy jz j{ uh1j hhhj hNhNubj} )}(hX **Parameters** ``struct media_entity *entity`` pointer to entity **Return** ``true`` if the entity is an instance of a :c:type:`v4l2_subdev` object and can safely be cast to a struct :c:type:`v4l2_subdev` using the container_of() macro, or ``false`` otherwise.h](h)}(h**Parameters**h]j)}(hjuh]h Parameters}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuubj )}(hhh]j )}(h2``struct media_entity *entity`` pointer to entity h](j )}(h``struct media_entity *entity``h]j~)}(hjuh]hstruct media_entity *entity}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuubj )}(hhh]h)}(hpointer to entityh]hpointer to entity}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjuubah}(h]h ]h"]h$]h&]uh1j hjuubeh}(h]h ]h"]h$]h&]uh1j hjuhMhjuubah}(h]h ]h"]h$]h&]uh1j hjuubh)}(h **Return**h]j)}(hjvh]hReturn}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuubh)}(h``true`` if the entity is an instance of a :c:type:`v4l2_subdev` object and can safely be cast to a struct :c:type:`v4l2_subdev` using the container_of() macro, or ``false`` otherwise.h](j~)}(h``true``h]htrue}(hj*vhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&vubh# if the entity is an instance of a }(hj&vhhhNhNubh)}(h:c:type:`v4l2_subdev`h]j~)}(hj>vh]h v4l2_subdev}(hj@vhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjځhhhjhM>ubj$ )}(hmedia_entity_enum_test_and_seth]j* )}(hmedia_entity_enum_test_and_seth]hmedia_entity_enum_test_and_set}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjځhhhjhM>ubj)}(hA(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hj8hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]j)}jjsb c.media_entity_enum_test_and_setasbuh1hhjubj )}(h h]h }(hjXhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjfhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hent_enumh]hent_enum}(hjshhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jT c.media_entity_enum_test_and_setasbuh1hhjubj )}(h h]h }(hjȂhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjւhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjځhhhjhM>ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjցhhhjhM>ubah}(h]jсah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM>hjӁhhubjV )}(hhh]h)}(h.Test whether the entity is marked, and mark ith]h.Test whether the entity is marked, and mark it}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM>hj hhubah}(h]h ]h"]h$]h&]uh1jU hjӁhhhjhM>ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j%jx j%jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration ``struct media_entity *entity`` Entity to be tested **Description** Returns ``true`` if the entity was marked, and mark it before doing so.h](h)}(h**Parameters**h]j)}(hj/h]h Parameters}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMBhj)ubj )}(hhh](j )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hjNh]h"struct media_entity_enum *ent_enum}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjLubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjHubj )}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMAhjdubah}(h]h ]h"]h$]h&]uh1j hjHubeh}(h]h ]h"]h$]h&]uh1j hjchMAhjEubj )}(h4``struct media_entity *entity`` Entity to be tested h](j )}(h``struct media_entity *entity``h]j~)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMBhjubj )}(hhh]h)}(hEntity to be testedh]hEntity to be tested}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMBhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMBhjEubeh}(h]h ]h"]h$]h&]uh1j hj)ubh)}(h**Description**h]j)}(hjƒh]h Description}(hjăhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMDhj)ubh)}(hGReturns ``true`` if the entity was marked, and mark it before doing so.h](hReturns }(hj؃hhhNhNubj~)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj؃ubh7 if the entity was marked, and mark it before doing so.}(hj؃hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChj)ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j $media_entity_enum_empty (C function)c.media_entity_enum_emptyhNtauh1j hj hhhNhNubj )}(hhh](j )}(hAbool media_entity_enum_empty (struct media_entity_enum *ent_enum)h]j )}(h@bool media_entity_enum_empty(struct media_entity_enum *ent_enum)h](jL)}(hj6sh]hbool}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMQubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj&hMQubj$ )}(hmedia_entity_enum_emptyh]j* )}(hmedia_entity_enum_emptyh]hmedia_entity_enum_empty}(hj9hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj5ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj&hMQubj)}(h$(struct media_entity_enum *ent_enum)h]j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubj )}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjshhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]j)}jj;sbc.media_entity_enum_emptyasbuh1hhjQubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj* )}(hent_enumh]hent_enum}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjMubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj&hMQubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj&hMQubah}(h]j ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj&hMQhjhhubjV )}(hhh]h)}(h%Test whether the entire enum is emptyh]h%Test whether the entire enum is empty}(hj؄hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMQhjՄhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj&hMQubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hz**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration **Return** ``true`` if the entity was empty.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjubj )}(hhh]j )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hjh]h"struct media_entity_enum *ent_enum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMShjubj )}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMShj/ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj.hMShjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h **Return**h]j)}(hjTh]hReturn}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjubh)}(h!``true`` if the entity was empty.h](j~)}(h``true``h]htrue}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjjubh if the entity was empty.}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j )media_entity_enum_intersects (C function)c.media_entity_enum_intersectshNtauh1j hj hhhNhNubj )}(hhh](j )}(hlbool media_entity_enum_intersects (struct media_entity_enum *ent_enum1, struct media_entity_enum *ent_enum2)h]j )}(hkbool media_entity_enum_intersects(struct media_entity_enum *ent_enum1, struct media_entity_enum *ent_enum2)h](jL)}(hj6sh]hbool}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM]ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM]ubj$ )}(hmedia_entity_enum_intersectsh]j* )}(hmedia_entity_enum_intersectsh]hmedia_entity_enum_intersects}(hjDžhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjÅubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhM]ubj)}(hJ(struct media_entity_enum *ent_enum1, struct media_entity_enum *ent_enum2)h](j)}(h#struct media_entity_enum *ent_enum1h](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj߅ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj߅ubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjɅsbc.media_entity_enum_intersectsasbuh1hhj߅ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj߅ubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj߅ubj* )}(h ent_enum1h]h ent_enum1}(hj<hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj߅ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjۅubj)}(h#struct media_entity_enum *ent_enum2h](j )}(hj h]hstruct}(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubj )}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjshhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]jc.media_entity_enum_intersectsasbuh1hhjQubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubj* )}(h ent_enum2h]h ent_enum2}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjQubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjۅubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM]ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhM]ubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM]hjhhubjV )}(hhh]h)}(h Test whether two enums intersecth]h Test whether two enums intersect}(hjֆhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM]hjӆhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhM]ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity_enum *ent_enum1`` First entity enumeration ``struct media_entity_enum *ent_enum2`` Second entity enumeration **Return** ``true`` if entity enumerations **ent_enum1** and **ent_enum2** intersect, otherwise ``false``.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMahjubj )}(hhh](j )}(hA``struct media_entity_enum *ent_enum1`` First entity enumeration h](j )}(h'``struct media_entity_enum *ent_enum1``h]j~)}(hjh]h#struct media_entity_enum *ent_enum1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM_hjubj )}(hhh]h)}(hFirst entity enumerationh]hFirst entity enumeration}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM_hj-ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj,hM_hjubj )}(hB``struct media_entity_enum *ent_enum2`` Second entity enumeration h](j )}(h'``struct media_entity_enum *ent_enum2``h]j~)}(hjPh]h#struct media_entity_enum *ent_enum2}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjNubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM`hjJubj )}(hhh]h)}(hSecond entity enumerationh]hSecond entity enumeration}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehM`hjfubah}(h]h ]h"]h$]h&]uh1j hjJubeh}(h]h ]h"]h$]h&]uh1j hjehM`hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMbhjubh)}(h_``true`` if entity enumerations **ent_enum1** and **ent_enum2** intersect, otherwise ``false``.h](j~)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh if entity enumerations }(hjhhhNhNubj)}(h **ent_enum1**h]h ent_enum1}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h **ent_enum2**h]h ent_enum2}(hjɇhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh intersect, otherwise }(hjhhhNhNubj~)}(h ``false``h]hfalse}(hjۇhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMbhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gobj_to_entity (C macro)c.gobj_to_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(hgobj_to_entityh]j )}(hgobj_to_entityh]j$ )}(hgobj_to_entityh]j* )}(hjh]hgobj_to_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMpubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj hhhj+hMpubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj+hMphj hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hj hhhj+hMpubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jDjx jDjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_entity (gobj)``h]j~)}(hjJh]hgobj_to_entity (gobj)}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjHubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMrhj hhubj)}(hUreturns the struct :c:type:`media_entity` pointer from the **gobj** contained on it. h]h)}(hTreturns the struct :c:type:`media_entity` pointer from the **gobj** contained on it.h](hreturns the struct }(hjdhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjnh]h media_entity}(hjphhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjlubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMphjdubh pointer from the }(hjdhhhNhNubj)}(h**gobj**h]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubh contained on it.}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMphj`ubah}(h]h ]h"]h$]h&]uh1jhjhMphj hhubj} )}(hR**Parameters** ``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMthjubj )}(hhh]j )}(h@``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``gobj``h]j~)}(hjӈh]hgobj}(hjՈhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjшubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMvhj͈ubj )}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjhhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMshjubh graph object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMshjubah}(h]h ]h"]h$]h&]uh1j hj͈ubeh}(h]h ]h"]h$]h&]uh1j hjhMvhjʈubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gobj_to_pad (C macro) c.gobj_to_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(h gobj_to_padh]j )}(h gobj_to_padh]j$ )}(h gobj_to_padh]j* )}(hjJh]h gobj_to_pad}(hjThhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjPubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjLhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjHhhhjghMyubah}(h]jCah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjghMyhjEhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjEhhhjghMyubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_pad (gobj)``h]j~)}(hjh]hgobj_to_pad (gobj)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hj hhubj)}(hRreturns the struct :c:type:`media_pad` pointer from the **gobj** contained on it. h]h)}(hQreturns the struct :c:type:`media_pad` pointer from the **gobj** contained on it.h](hreturns the struct }(hjhhhNhNubh)}(h:c:type:`media_pad`h]j~)}(hjh]h media_pad}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_paduh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyhjubh pointer from the }(hjhhhNhNubj)}(h**gobj**h]hgobj}(hj̉hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh contained on it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjljhMyhjubah}(h]h ]h"]h$]h&]uh1jhjljhMyhj hhubj} )}(hR**Parameters** ``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjubj )}(hhh]j )}(h@``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``gobj``h]j~)}(hjh]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hj(hhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hj2h]h media_gobj}(hj4hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj0ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM|hj(ubh graph object}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOhM|hj%ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj$hMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gobj_to_link (C macro)c.gobj_to_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h gobj_to_linkh]j )}(h gobj_to_linkh]j$ )}(h gobj_to_linkh]j* )}(hjh]h gobj_to_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_link (gobj)``h]j~)}(hjŠh]hgobj_to_link (gobj)}(hjĊhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(hSreturns the struct :c:type:`media_link` pointer from the **gobj** contained on it. h]h)}(hRreturns the struct :c:type:`media_link` pointer from the **gobj** contained on it.h](hreturns the struct }(hj܊hhhNhNubh)}(h:c:type:`media_link`h]j~)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj܊ubh pointer from the }(hj܊hhhNhNubj)}(h**gobj**h]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj܊ubh contained on it.}(hj܊hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhj؊ubah}(h]h ]h"]h$]h&]uh1jhjhMhj hhubj} )}(hR**Parameters** ``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j)}(hj,h]h Parameters}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj&ubj )}(hhh]j )}(h@``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``gobj``h]j~)}(hjKh]hgobj}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjIubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjEubj )}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjdhhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjnh]h media_gobj}(hjphhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjlubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjdubh graph object}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjaubah}(h]h ]h"]h$]h&]uh1j hjEubeh}(h]h ]h"]h$]h&]uh1j hj`hMhjBubah}(h]h ]h"]h$]h&]uh1j hj&ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gobj_to_intf (C macro)c.gobj_to_intfhNtauh1j hj hhhNhNubj )}(hhh](j )}(h gobj_to_intfh]j )}(h gobj_to_intfh]j$ )}(h gobj_to_intfh]j* )}(hj‹h]h gobj_to_intf}(hj̋hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjȋubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjċhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjߋhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjߋhMhjhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjhhhjߋhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_intf (gobj)``h]j~)}(hjh]hgobj_to_intf (gobj)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(hXreturns the struct :c:type:`media_interface` pointer from the **gobj** contained on it. h]h)}(hWreturns the struct :c:type:`media_interface` pointer from the **gobj** contained on it.h](hreturns the struct }(hjhhhNhNubh)}(h:c:type:`media_interface`h]j~)}(hj"h]hmedia_interface}(hj$hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh pointer from the }(hjhhhNhNubj)}(h**gobj**h]hgobj}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh contained on it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj?hMhjubah}(h]h ]h"]h$]h&]uh1jhj?hMhj hhubj} )}(hR**Parameters** ``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j)}(hjhh]h Parameters}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjbubj )}(hhh]j )}(h@``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``gobj``h]j~)}(hjh]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjhhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh graph object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjnjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj~ubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j intf_to_devnode (C macro)c.intf_to_devnodehNtauh1j hj hhhNhNubj )}(hhh](j )}(hintf_to_devnodeh]j )}(hintf_to_devnodeh]j$ )}(hintf_to_devnodeh]j* )}(hjh]hintf_to_devnode}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw j4jx j4jy jz j{ uh1j hhhj hNhNubh)}(h``intf_to_devnode (intf)``h]j~)}(hj:h]hintf_to_devnode (intf)}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(hQreturns the struct media_intf_devnode pointer from the **intf** contained on it. h]h)}(hPreturns the struct media_intf_devnode pointer from the **intf** contained on it.h](h7returns the struct media_intf_devnode pointer from the }(hjThhhNhNubj)}(h**intf**h]hintf}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubh contained on it.}(hjThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjPubah}(h]h ]h"]h$]h&]uh1jhjthMhj hhubj} )}(hI**Parameters** ``intf`` Pointer to struct :c:type:`media_intf_devnode`h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj{ubj )}(hhh]j )}(h7``intf`` Pointer to struct :c:type:`media_intf_devnode`h](j )}(h``intf``h]j~)}(hjh]hintf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h.Pointer to struct :c:type:`media_intf_devnode`h](hPointer to struct }(hjhhhNhNubh)}(h:c:type:`media_intf_devnode`h]j~)}(hjÍh]hmedia_intf_devnode}(hjōhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_intf_devnodeuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hj{ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj_create (C function)c.media_gobj_createhNtauh1j hj hhhNhNubj )}(hhh](j )}(hfvoid media_gobj_create (struct media_device *mdev, enum media_gobj_type type, struct media_gobj *gobj)h]j )}(hevoid media_gobj_create(struct media_device *mdev, enum media_gobj_type type, struct media_gobj *gobj)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj'hMubj$ )}(hmedia_gobj_createh]j* )}(hmedia_gobj_createh]hmedia_gobj_create}(hj:hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj6ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj'hMubj)}(hO(struct media_device *mdev, enum media_gobj_type type, struct media_gobj *gobj)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubj )}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjthhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]j)}jj<sbc.media_gobj_createasbuh1hhjRubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubj)}(henum media_gobj_type typeh](j )}(hjSIh]henum}(hjȎhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjĎubj )}(h h]h }(hjՎhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjĎubh)}(hhh]j* )}(hmedia_gobj_typeh]hmedia_gobj_type}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_gobj_createasbuh1hhjĎubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjĎubj* )}(htypeh]htype}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjĎubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubj)}(hstruct media_gobj *gobjh](j )}(hj h]hstruct}(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubj )}(h h]h }(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubh)}(hhh]j* )}(h media_gobjh]h media_gobj}(hjIhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjKmodnameN classnameNjj)}j]jc.media_gobj_createasbuh1hhj'ubj )}(h h]h }(hjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubj)}(hjh]h*}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj* )}(hgobjh]hgobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjNubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj'hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj'hMubah}(h]j ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj'hMhjhhubjV )}(hhh]h)}(hInitialize a graph objecth]hInitialize a graph object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj'hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jďjx jďjy jz j{ uh1j hhhj hNhNubj} )}(hXb**Parameters** ``struct media_device *mdev`` Pointer to the :c:type:`media_device` that contains the object ``enum media_gobj_type type`` Type of the object ``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph object **Description** This routine initializes the embedded struct :c:type:`media_gobj` inside a media graph object. It is called automatically if ``media_*_create`` function calls are used. However, if the object (entity, link, pad, interface) is embedded on some other object, this function should be called before registering the object at the media controller.h](h)}(h**Parameters**h]j)}(hjΏh]h Parameters}(hjЏhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj̏ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjȏubj )}(hhh](j )}(h]``struct media_device *mdev`` Pointer to the :c:type:`media_device` that contains the object h](j )}(h``struct media_device *mdev``h]j~)}(hjh]hstruct media_device *mdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h>Pointer to the :c:type:`media_device` that contains the objecth](hPointer to the }(hjhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhMhjubh that contains the object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h1``enum media_gobj_type type`` Type of the object h](j )}(h``enum media_gobj_type type``h]j~)}(hjIh]henum media_gobj_type type}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjGubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjCubj )}(hhh]h)}(hType of the objecth]hType of the object}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj_ubah}(h]h ]h"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]uh1j hj^hMhjubj )}(hT``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph object h](j )}(h``struct media_gobj *gobj``h]j~)}(hjh]hstruct media_gobj *gobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj|ubj )}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjhhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhjhMhjubh graph object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hj|ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1j hjȏubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjސubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjȏubh)}(hXVThis routine initializes the embedded struct :c:type:`media_gobj` inside a media graph object. It is called automatically if ``media_*_create`` function calls are used. However, if the object (entity, link, pad, interface) is embedded on some other object, this function should be called before registering the object at the media controller.h](h-This routine initializes the embedded struct }(hjhhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh< inside a media graph object. It is called automatically if }(hjhhhNhNubj~)}(h``media_*_create``h]hmedia_*_create}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh function calls are used. However, if the object (entity, link, pad, interface) is embedded on some other object, this function should be called before registering the object at the media controller.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjȏubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj_destroy (C function)c.media_gobj_destroyhNtauh1j hj hhhNhNubj )}(hhh](j )}(h1void media_gobj_destroy (struct media_gobj *gobj)h]j )}(h0void media_gobj_destroy(struct media_gobj *gobj)h](jL)}(hvoidh]hvoid}(hjZhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjVhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVhhhjhhMubj$ )}(hmedia_gobj_destroyh]j* )}(hmedia_gobj_destroyh]hmedia_gobj_destroy}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjwubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjVhhhjhhMubj)}(h(struct media_gobj *gobj)h]j)}(hstruct media_gobj *gobjh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_gobjh]h media_gobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj}sbc.media_gobj_destroyasbuh1hhjubj )}(h h]h }(hjՑhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hgobjh]hgobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjVhhhjhhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjRhhhjhhMubah}(h]jMah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhhMhjOhhubjV )}(hhh]h)}(h+Stop using a graph object on a media deviceh]h+Stop using a graph object on a media device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjOhhhjhhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j2jx j2jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph object **Description** This should be called by all routines like media_device_unregister() that remove/destroy media graph objects.h](h)}(h**Parameters**h]j)}(hj<h]h Parameters}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj6ubj )}(hhh]j )}(hT``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph object h](j )}(h``struct media_gobj *gobj``h]j~)}(hj[h]hstruct media_gobj *gobj}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjYubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjUubj )}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjthhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hj~h]h media_gobj}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj|ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhjphMhjtubh graph object}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjphMhjqubah}(h]h ]h"]h$]h&]uh1j hjUubeh}(h]h ]h"]h$]h&]uh1j hjphMhjRubah}(h]h ]h"]h$]h&]uh1j hj6ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj6ubh)}(hmThis should be called by all routines like media_device_unregister() that remove/destroy media graph objects.h]hmThis should be called by all routines like media_device_unregister() that remove/destroy media graph objects.}(hjϒhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj6ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_entity_pads_init (C function)c.media_entity_pads_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(h^int media_entity_pads_init (struct media_entity *entity, u16 num_pads, struct media_pad *pads)h]j )}(h]int media_entity_pads_init(struct media_entity *entity, u16 num_pads, struct media_pad *pads)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj hMubj$ )}(hmedia_entity_pads_inith]j* )}(hmedia_entity_pads_inith]hmedia_entity_pads_init}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj hMubj)}(hC(struct media_entity *entity, u16 num_pads, struct media_pad *pads)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjYhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[modnameN classnameNjj)}j]j)}jj!sbc.media_entity_pads_initasbuh1hhj7ubj )}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(h u16 num_padsh](h)}(hhh]j* )}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]juc.media_entity_pads_initasbuh1hhjubj )}(h h]h }(hjΓhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hnum_padsh]hnum_pads}(hjܓhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(hstruct media_pad *padsh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]juc.media_entity_pads_initasbuh1hhjubj )}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hpadsh]hpads}(hjLhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj hMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj hMhjhhubjV )}(hhh]h)}(hInitialize the entity padsh]hInitialize the entity pads}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjshhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *entity`` entity where the pads belong ``u16 num_pads`` total number of sink and source pads ``struct media_pad *pads`` Array of **num_pads** pads. **Description** The pads array is managed by the entity driver and passed to media_entity_pads_init() where its pointer will be stored in the :c:type:`media_entity` structure. If no pads are needed, drivers could either directly fill :c:type:`media_entity->num_pads ` with 0 and :c:type:`media_entity->pads ` with ``NULL`` or call this function that will do the same. As the number of pads is known in advance, the pads array is not allocated dynamically but is managed by the entity driver. Most drivers will embed the pads array in a driver-specific structure, avoiding dynamic allocation. Drivers must set the direction of every pad in the pads array before calling media_entity_pads_init(). The function will initialize the other pads fields.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h=``struct media_entity *entity`` entity where the pads belong h](j )}(h``struct media_entity *entity``h]j~)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(hentity where the pads belongh]hentity where the pads belong}(hjДhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj̔hMhj͔ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj̔hMhjubj )}(h6``u16 num_pads`` total number of sink and source pads h](j )}(h``u16 num_pads``h]j~)}(hjh]h u16 num_pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h$total number of sink and source padsh]h$total number of sink and source pads}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h7``struct media_pad *pads`` Array of **num_pads** pads. h](j )}(h``struct media_pad *pads``h]j~)}(hj)h]hstruct media_pad *pads}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj'ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj#ubj )}(hhh]h)}(hArray of **num_pads** pads.h](h Array of }(hjBhhhNhNubj)}(h **num_pads**h]hnum_pads}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh pads.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hMhj?ubah}(h]h ]h"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]uh1j hj>hMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjvh]h Description}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hThe pads array is managed by the entity driver and passed to media_entity_pads_init() where its pointer will be stored in the :c:type:`media_entity` structure.h](h~The pads array is managed by the entity driver and passed to media_entity_pads_init() where its pointer will be stored in the }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh structure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(hIf no pads are needed, drivers could either directly fill :c:type:`media_entity->num_pads ` with 0 and :c:type:`media_entity->pads ` with ``NULL`` or call this function that will do the same.h](h:If no pads are needed, drivers could either directly fill }(hjhhhNhNubh)}(h/:c:type:`media_entity->num_pads `h]j~)}(hjȕh]hmedia_entity->num_pads}(hjʕhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjƕubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh with 0 and }(hjhhhNhNubh)}(h+:c:type:`media_entity->pads `h]j~)}(hjh]hmedia_entity->pads}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjhMhjubh with }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh- or call this function that will do the same.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(hAs the number of pads is known in advance, the pads array is not allocated dynamically but is managed by the entity driver. Most drivers will embed the pads array in a driver-specific structure, avoiding dynamic allocation.h]hAs the number of pads is known in advance, the pads array is not allocated dynamically but is managed by the entity driver. Most drivers will embed the pads array in a driver-specific structure, avoiding dynamic allocation.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hDrivers must set the direction of every pad in the pads array before calling media_entity_pads_init(). The function will initialize the other pads fields.h]hDrivers must set the direction of every pad in the pads array before calling media_entity_pads_init(). The function will initialize the other pads fields.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j !media_entity_cleanup (C function)c.media_entity_cleanuphNtauh1j hj hhhNhNubj )}(hhh](j )}(h7void media_entity_cleanup (struct media_entity *entity)h]j )}(h6void media_entity_cleanup(struct media_entity *entity)h](jL)}(hvoidh]hvoid}(hjchhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj_hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj_hhhjqhMubj$ )}(hmedia_entity_cleanup&h]j* )}(hmedia_entity_cleanuph]hmedia_entity_cleanup}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj_hhhjqhMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_entity_cleanupasbuh1hhjubj )}(h h]h }(hjޖhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj_hhhjqhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj[hhhjqhMubah}(h]jVah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjqhMhjXhhubjV )}(hhh]h)}(h(free resources associated with an entityh]h(free resources associated with an entity}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubah}(h]h ]h"]h$]h&]uh1jU hjXhhhjqhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j;jx j;jy jz j{ uh1j hhhj hNhNubj} )}(hXz**Parameters** ``struct media_entity *entity`` entity where the pads belong **Description** This function must be called during the cleanup phase after unregistering the entity (currently, it does nothing). Calling media_entity_cleanup() on a media_entity whose memory has been zeroed but that has not been initialized with media_entity_pad_init() is valid and is a no-op.h](h)}(h**Parameters**h]j)}(hjEh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj?ubj )}(hhh]j )}(h=``struct media_entity *entity`` entity where the pads belong h](j )}(h``struct media_entity *entity``h]j~)}(hjdh]hstruct media_entity *entity}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubj )}(hhh]h)}(hentity where the pads belongh]hentity where the pads belong}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMhjzubah}(h]h ]h"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]uh1j hjyhMhj[ubah}(h]h ]h"]h$]h&]uh1j hj?ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj?ubh)}(hrThis function must be called during the cleanup phase after unregistering the entity (currently, it does nothing).h]hrThis function must be called during the cleanup phase after unregistering the entity (currently, it does nothing).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj?ubh)}(hCalling media_entity_cleanup() on a media_entity whose memory has been zeroed but that has not been initialized with media_entity_pad_init() is valid and is a no-op.h]hCalling media_entity_cleanup() on a media_entity whose memory has been zeroed but that has not been initialized with media_entity_pad_init() is valid and is a no-op.}(hjėhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj?ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_get_pad_index (C function)c.media_get_pad_indexhNtauh1j hj hhhNhNubj )}(hhh](j )}(hhint media_get_pad_index (struct media_entity *entity, u32 pad_type, enum media_pad_signal_type sig_type)h]j )}(hgint media_get_pad_index(struct media_entity *entity, u32 pad_type, enum media_pad_signal_type sig_type)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(hmedia_get_pad_indexh]j* )}(hmedia_get_pad_indexh]hmedia_get_pad_index}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(hP(struct media_entity *entity, u32 pad_type, enum media_pad_signal_type sig_type)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj )}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjNhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNjj)}j]j)}jjsbc.media_get_pad_indexasbuh1hhj,ubj )}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(h u32 pad_typeh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jjc.media_get_pad_indexasbuh1hhjubj )}(h h]h }(hjØhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hpad_typeh]hpad_type}(hjјhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubj)}(h#enum media_pad_signal_type sig_typeh](j )}(hjSIh]henum}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_pad_signal_typeh]hmedia_pad_signal_type}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jjc.media_get_pad_indexasbuh1hhjubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hsig_typeh]hsig_type}(hj4hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h$retrieves a pad index from an entityh]h$retrieves a pad index from an entity}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj[hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jvjx jvjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *entity`` entity where the pads belong ``u32 pad_type`` the type of the pad, one of MEDIA_PAD_FL_* pad types ``enum media_pad_signal_type sig_type`` type of signal of the pad to be search **Description** This helper function finds the first pad index inside an entity that satisfies both **is_sink** and **sig_type** conditions. On success, return the pad number. If the pad was not found or the media entity is a NULL pointer, return -EINVAL.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjzubj )}(hhh](j )}(h=``struct media_entity *entity`` entity where the pads belong h](j )}(h``struct media_entity *entity``h]j~)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(hentity where the pads belongh]hentity where the pads belong}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hF``u32 pad_type`` the type of the pad, one of MEDIA_PAD_FL_* pad types h](j )}(h``u32 pad_type``h]j~)}(hjؙh]h u32 pad_type}(hjڙhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj֙ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjҙubj )}(hhh]h)}(h4the type of the pad, one of MEDIA_PAD_FL_* pad typesh]h4the type of the pad, one of MEDIA_PAD_FL_* pad types}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjҙubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hO``enum media_pad_signal_type sig_type`` type of signal of the pad to be search h](j )}(h'``enum media_pad_signal_type sig_type``h]j~)}(hjh]h#enum media_pad_signal_type sig_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh]h)}(h&type of signal of the pad to be searchh]h&type of signal of the pad to be search}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj'ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj&hMhjubeh}(h]h ]h"]h$]h&]uh1j hjzubh)}(h**Description**h]j)}(hjLh]h Description}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjzubh)}(h|This helper function finds the first pad index inside an entity that satisfies both **is_sink** and **sig_type** conditions.h](hTThis helper function finds the first pad index inside an entity that satisfies both }(hjbhhhNhNubj)}(h **is_sink**h]his_sink}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh and }(hjbhhhNhNubj)}(h **sig_type**h]hsig_type}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubh conditions.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjzubh)}(hrOn success, return the pad number. If the pad was not found or the media entity is a NULL pointer, return -EINVAL.h]hrOn success, return the pad number. If the pad was not found or the media entity is a NULL pointer, return -EINVAL.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjzubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_create_pad_link (C function)c.media_create_pad_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h{int media_create_pad_link (struct media_entity *source, u16 source_pad, struct media_entity *sink, u16 sink_pad, u32 flags)h]j )}(hzint media_create_pad_link(struct media_entity *source, u16 source_pad, struct media_entity *sink, u16 sink_pad, u32 flags)h](jL)}(hinth]hint}(hjĚhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjӚhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjҚhMubj$ )}(hmedia_create_pad_linkh]j* )}(hmedia_create_pad_linkh]hmedia_create_pad_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjҚhMubj)}(ha(struct media_entity *source, u16 source_pad, struct media_entity *sink, u16 sink_pad, u32 flags)h](j)}(hstruct media_entity *sourceh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j)}jjsbc.media_create_pad_linkasbuh1hhjubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjMhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hsourceh]hsource}(hjZhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu16 source_padh](h)}(hhh]j* )}(hu16h]hu16}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j;c.media_create_pad_linkasbuh1hhjoubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj* )}(h source_padh]h source_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *sinkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjțhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjٛhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj֛ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjۛmodnameN classnameNjj)}j]j;c.media_create_pad_linkasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hsinkh]hsink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u16 sink_padh](h)}(hhh]j* )}(hu16h]hu16}(hj.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j;c.media_create_pad_linkasbuh1hhj'ubj )}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj'ubj* )}(hsink_padh]hsink_pad}(hjZhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j;c.media_create_pad_linkasbuh1hhjoubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjoubj* )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjҚhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjҚhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjҚhMhjhhubjV )}(hhh]h)}(h$creates a link between two entities.h]h$creates a link between two entities.}(hj̜hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjɜhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjҚhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX **Parameters** ``struct media_entity *source`` pointer to :c:type:`media_entity` of the source pad. ``u16 source_pad`` number of the source pad in the pads array ``struct media_entity *sink`` pointer to :c:type:`media_entity` of the sink pad. ``u16 sink_pad`` number of the sink pad in the pads array. ``u32 flags`` Link flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``) **Description** Valid values for flags: ``MEDIA_LNK_FL_ENABLED`` Indicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time. ``MEDIA_LNK_FL_IMMUTABLE`` Indicates that the link enabled state can't be modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set, since an immutable link is always enabled. .. note:: Before calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(hU``struct media_entity *source`` pointer to :c:type:`media_entity` of the source pad. h](j )}(h``struct media_entity *source``h]j~)}(hj h]hstruct media_entity *source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h4pointer to :c:type:`media_entity` of the source pad.h](h pointer to }(hj&hhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hj0h]h media_entity}(hj2hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj.ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj"hMhj&ubh of the source pad.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj"hMhj#ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj"hMhjubj )}(h>``u16 source_pad`` number of the source pad in the pads array h](j )}(h``u16 source_pad``h]j~)}(hjih]hu16 source_pad}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjcubj )}(hhh]h)}(h*number of the source pad in the pads arrayh]h*number of the source pad in the pads array}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj~hMhjubah}(h]h ]h"]h$]h&]uh1j hjcubeh}(h]h ]h"]h$]h&]uh1j hj~hMhjubj )}(hQ``struct media_entity *sink`` pointer to :c:type:`media_entity` of the sink pad. h](j )}(h``struct media_entity *sink``h]j~)}(hjh]hstruct media_entity *sink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h2pointer to :c:type:`media_entity` of the sink pad.h](h pointer to }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjŝh]h media_entity}(hjǝhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjÝubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjhMhjubh of the sink pad.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h;``u16 sink_pad`` number of the sink pad in the pads array. h](j )}(h``u16 sink_pad``h]j~)}(hjh]h u16 sink_pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h)number of the sink pad in the pads array.h]h)number of the sink pad in the pads array.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hx``u32 flags`` Link flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``) h](j )}(h ``u32 flags``h]j~)}(hj7h]h u32 flags}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj1ubj )}(hhh]h)}(hiLink flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``)h](hLink flags, as defined in }(hjPhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjZh]hinclude/uapi/linux/media.h}(hj\hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjXubah}(h]h ]h"]h$]h&]refdocj refdomainjfreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjPubh ( seek for }(hjPhhhNhNubj~)}(h``MEDIA_LNK_FL_*``h]hMEDIA_LNK_FL_*}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjPubh)}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjxhMhjMubah}(h]h ]h"]h$]h&]uh1j hj1ubeh}(h]h ]h"]h$]h&]uh1j hjLhMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hValid values for flags:h]hValid values for flags:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h``MEDIA_LNK_FL_ENABLED`` Indicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time. h](j )}(h``MEDIA_LNK_FL_ENABLED``h]j~)}(hjמh]hMEDIA_LNK_FL_ENABLED}(hjٞhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj՞ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjўubj )}(hhh]h)}(hIndicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time.h]hIndicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1j hjўubeh}(h]h ]h"]h$]h&]uh1j hjhMhjΞubj )}(h``MEDIA_LNK_FL_IMMUTABLE`` Indicates that the link enabled state can't be modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set, since an immutable link is always enabled. h](j )}(h``MEDIA_LNK_FL_IMMUTABLE``h]j~)}(hjh]hMEDIA_LNK_FL_IMMUTABLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh]h)}(hIndicates that the link enabled state can't be modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set, since an immutable link is always enabled.h](hIIndicates that the link enabled state can’t be modified at runtime. If }(hj*hhhNhNubj~)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj*ubh is set, then }(hj*hhhNhNubj~)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj*ubh= must also be set, since an immutable link is always enabled.}(hj*hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj'ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj&hMhjΞubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.h]h)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.h]hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjoubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_create_pad_links (C function)c.media_create_pad_linkshNtauh1j hj hhhNhNubj )}(hhh](j )}(hint media_create_pad_links (const struct media_device *mdev, const u32 source_function, struct media_entity *source, const u16 source_pad, const u32 sink_function, struct media_entity *sink, const u16 sink_pad, u32 flags, const bool allow_both_undefined)h]j )}(hint media_create_pad_links(const struct media_device *mdev, const u32 source_function, struct media_entity *source, const u16 source_pad, const u32 sink_function, struct media_entity *sink, const u16 sink_pad, u32 flags, const bool allow_both_undefined)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(hmedia_create_pad_linksh]j* )}(hmedia_create_pad_linksh]hmedia_create_pad_links}(hjɟhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjşubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(const struct media_device *mdev, const u32 source_function, struct media_entity *source, const u16 source_pad, const u32 sink_function, struct media_entity *sink, const u16 sink_pad, u32 flags, const bool allow_both_undefined)h](j)}(hconst struct media_device *mdevh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj˟sbc.media_create_pad_linksasbuh1hhjubj )}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hmdevh]hmdev}(hjYhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(hconst u32 source_functionh](j )}(hj.h]hconst}(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnubh)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j:c.media_create_pad_linksasbuh1hhjnubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnubj* )}(hsource_functionh]hsource_function}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(hstruct media_entity *sourceh](j )}(hj h]hstruct}(hjՠhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjѠubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjѠubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j:c.media_create_pad_linksasbuh1hhjѠubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjѠubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjѠubj* )}(hsourceh]hsource}(hj,hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjѠubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(hconst u16 source_padh](j )}(hj.h]hconst}(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj )}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubh)}(hhh]j* )}(hu16h]hu16}(hjchhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj`ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjemodnameN classnameNjj)}j]j:c.media_create_pad_linksasbuh1hhjAubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAubj* )}(h source_padh]h source_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjAubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(hconst u32 sink_functionh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hu32h]hu32}(hjơhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjáubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjȡmodnameN classnameNjj)}j]j:c.media_create_pad_linksasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(h sink_functionh]h sink_function}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(hstruct media_entity *sinkh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hj)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j:c.media_create_pad_linksasbuh1hhjubj )}(h h]h }(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hsinkh]hsink}(hjbhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(hconst u16 sink_padh](j )}(hj.h]hconst}(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubh)}(hhh]j* )}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j:c.media_create_pad_linksasbuh1hhjwubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubj* )}(hsink_padh]hsink_pad}(hjŢhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjޢubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j:c.media_create_pad_linksasbuh1hhjڢubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjڢubj* )}(hflagsh]hflags}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjڢubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubj)}(hconst bool allow_both_undefinedh](j )}(hj.h]hconst}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj )}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubjL)}(hj6sh]hbool}(hjAhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj"ubj )}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj* )}(hallow_both_undefinedh]hallow_both_undefined}(hj\hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjݟubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h$creates a link between two entities.h]h$creates a link between two entities.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hXC**Parameters** ``const struct media_device *mdev`` Pointer to the media_device that contains the object ``const u32 source_function`` Function of the source entities. Used only if **source** is NULL. ``struct media_entity *source`` pointer to :c:type:`media_entity` of the source pad. If NULL, it will use all entities that matches the **sink_function**. ``const u16 source_pad`` number of the source pad in the pads array ``const u32 sink_function`` Function of the sink entities. Used only if **sink** is NULL. ``struct media_entity *sink`` pointer to :c:type:`media_entity` of the sink pad. If NULL, it will use all entities that matches the **sink_function**. ``const u16 sink_pad`` number of the sink pad in the pads array. ``u32 flags`` Link flags, as defined in include/uapi/linux/media.h. ``const bool allow_both_undefined`` if ``true``, then both **source** and **sink** can be NULL. In such case, it will create a crossbar between all entities that matches **source_function** to all entities that matches **sink_function**. If ``false``, it will return 0 and won't create any link if both **source** and **sink** are NULL. **Description** Valid values for flags: A ``MEDIA_LNK_FL_ENABLED`` flag indicates that the link is enabled and can be used to transfer media data. If multiple links are created and this flag is passed as an argument, only the first created link will have this flag. A ``MEDIA_LNK_FL_IMMUTABLE`` flag indicates that the link enabled state can't be modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set since an immutable link is always enabled. It is common for some devices to have multiple source and/or sink entities of the same type that should be linked. While media_create_pad_link() creates link by link, this function is meant to allow 1:n, n:1 and even cross-bar (n:n) links. .. note:: Before calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for the entities to be linked.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(hY``const struct media_device *mdev`` Pointer to the media_device that contains the object h](j )}(h#``const struct media_device *mdev``h]j~)}(hjǣh]hconst struct media_device *mdev}(hjɣhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjţubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h4Pointer to the media_device that contains the objecth]h4Pointer to the media_device that contains the object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjܣhMhjݣubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjܣhMhjubj )}(h```const u32 source_function`` Function of the source entities. Used only if **source** is NULL. h](j )}(h``const u32 source_function``h]j~)}(hjh]hconst u32 source_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(hAFunction of the source entities. Used only if **source** is NULL.h](h.Function of the source entities. Used only if }(hjhhhNhNubj)}(h **source**h]hsource}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h``struct media_entity *source`` pointer to :c:type:`media_entity` of the source pad. If NULL, it will use all entities that matches the **sink_function**. h](j )}(h``struct media_entity *source``h]j~)}(hjLh]hstruct media_entity *source}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjFubj )}(hhh]h)}(hzpointer to :c:type:`media_entity` of the source pad. If NULL, it will use all entities that matches the **sink_function**.h](h pointer to }(hjehhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjoh]h media_entity}(hjqhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjmubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjeubhG of the source pad. If NULL, it will use all entities that matches the }(hjehhhNhNubj)}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubh.}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjbubah}(h]h ]h"]h$]h&]uh1j hjFubeh}(h]h ]h"]h$]h&]uh1j hjahMhjubj )}(hD``const u16 source_pad`` number of the source pad in the pads array h](j )}(h``const u16 source_pad``h]j~)}(hjh]hconst u16 source_pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h*number of the source pad in the pads arrayh]h*number of the source pad in the pads array}(hjԤhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjФhMhjѤubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjФhMhjubj )}(hZ``const u32 sink_function`` Function of the sink entities. Used only if **sink** is NULL. h](j )}(h``const u32 sink_function``h]j~)}(hjh]hconst u32 sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h=Function of the sink entities. Used only if **sink** is NULL.h](h,Function of the sink entities. Used only if }(hj hhhNhNubj)}(h**sink**h]hsink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh is NULL.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMhjubj )}(h``struct media_entity *sink`` pointer to :c:type:`media_entity` of the sink pad. If NULL, it will use all entities that matches the **sink_function**. h](j )}(h``struct media_entity *sink``h]j~)}(hj?h]hstruct media_entity *sink}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj9ubj )}(hhh]h)}(hxpointer to :c:type:`media_entity` of the sink pad. If NULL, it will use all entities that matches the **sink_function**.h](h pointer to }(hjXhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjbh]h media_entity}(hjdhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj`ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjXubhE of the sink pad. If NULL, it will use all entities that matches the }(hjXhhhNhNubj)}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubh.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjUubah}(h]h ]h"]h$]h&]uh1j hj9ubeh}(h]h ]h"]h$]h&]uh1j hjThMhjubj )}(hA``const u16 sink_pad`` number of the sink pad in the pads array. h](j )}(h``const u16 sink_pad``h]j~)}(hjh]hconst u16 sink_pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubj )}(hhh]h)}(h)number of the sink pad in the pads array.h]h)number of the sink pad in the pads array.}(hjǥhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjåhM hjĥubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjåhM hjubj )}(hD``u32 flags`` Link flags, as defined in include/uapi/linux/media.h. 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 hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM!hjubj )}(hhh]h)}(h5Link flags, as defined in include/uapi/linux/media.h.h]h5Link flags, as defined in include/uapi/linux/media.h.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM!hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM!hjubj )}(hXQ``const bool allow_both_undefined`` if ``true``, then both **source** and **sink** can be NULL. In such case, it will create a crossbar between all entities that matches **source_function** to all entities that matches **sink_function**. If ``false``, it will return 0 and won't create any link if both **source** and **sink** are NULL. h](j )}(h#``const bool allow_both_undefined``h]j~)}(hj h]hconst bool allow_both_undefined}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM&hjubj )}(hhh]h)}(hX,if ``true``, then both **source** and **sink** can be NULL. In such case, it will create a crossbar between all entities that matches **source_function** to all entities that matches **sink_function**. If ``false``, it will return 0 and won't create any link if both **source** and **sink** are NULL.h](hif }(hj9hhhNhNubj~)}(h``true``h]htrue}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9ubh , then both }(hj9hhhNhNubj)}(h **source**h]hsource}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh and }(hj9hhhNhNubj)}(h**sink**h]hsink}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubhX can be NULL. In such case, it will create a crossbar between all entities that matches }(hj9hhhNhNubj)}(h**source_function**h]hsource_function}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh to all entities that matches }(hj9hhhNhNubj)}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh. If }(hj9hhhNhNubj~)}(h ``false``h]hfalse}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9ubh7, it will return 0 and won’t create any link if both }(hj9hhhNhNubj)}(h **source**h]hsource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh and }(hj9hhhNhNubj)}(h**sink**h]hsink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubh are NULL.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM"hj6ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj5hM&hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM(hjubh)}(hValid values for flags:h]hValid values for flags:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM'hjubj )}(hhh](j )}(hA ``MEDIA_LNK_FL_ENABLED`` flag indicates that the link is enabled and can be used to transfer media data. If multiple links are created and this flag is passed as an argument, only the first created link will have this flag. h](j )}(hMA ``MEDIA_LNK_FL_ENABLED`` flag indicates that the link is enabled and can beh](hA }(hjhhhNhNubj~)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh3 flag indicates that the link is enabled and can be}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM,hjubj )}(hhh]h)}(hused to transfer media data. If multiple links are created and this flag is passed as an argument, only the first created link will have this flag.h]hused to transfer media data. If multiple links are created and this flag is passed as an argument, only the first created link will have this flag.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM*hj9ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj8hM,hjubj )}(hA ``MEDIA_LNK_FL_IMMUTABLE`` flag indicates that the link enabled state can't be modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set since an immutable link is always enabled. h](j )}(hMA ``MEDIA_LNK_FL_IMMUTABLE`` flag indicates that the link enabled state can'th](hA }(hj[hhhNhNubj~)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj[ubh3 flag indicates that the link enabled state can’t}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM1hjWubj )}(hhh]h)}(hbe modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set since an immutable link is always enabled.h](hbe modified at runtime. If }(hjhhhNhNubj~)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh is set, then }(hjhhhNhNubj~)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh< must also be set since an immutable link is always enabled.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hj|ubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hj{hM1hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(hIt is common for some devices to have multiple source and/or sink entities of the same type that should be linked. While media_create_pad_link() creates link by link, this function is meant to allow 1:n, n:1 and even cross-bar (n:n) links.h]hIt is common for some devices to have multiple source and/or sink entities of the same type that should be linked. While media_create_pad_link() creates link by link, this function is meant to allow 1:n, n:1 and even cross-bar (n:n) links.}(hjħhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM3hjubj)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for the entities to be linked.h]h)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for the entities to be linked.h]hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for the entities to be linked.}(hjקhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM:hjӧubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_entity_remove_links (C function)c.media_entity_remove_linkshNtauh1j hj hhhNhNubj )}(hhh](j )}(hsource->parent->mutex. If not, media_entity_setup_link() should be used instead.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjުubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM\hjڪubj )}(hhh](j )}(h6``struct media_link *link`` The link being configured h](j )}(h``struct media_link *link``h]j~)}(hjh]hstruct media_link *link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhjubj )}(hhh]h)}(hThe link being configuredh]hThe link being configured}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMYhjubj )}(h'``u32 flags`` Link configuration flags h](j )}(h ``u32 flags``h]j~)}(hj8h]h u32 flags}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj6ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMZhj2ubj )}(hhh]h)}(hLink configuration flagsh]hLink configuration flags}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjMhMZhjNubah}(h]h ]h"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]uh1j hjMhMZhjubeh}(h]h ]h"]h$]h&]uh1j hjڪubh)}(h**Description**h]j)}(hjsh]h Description}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM\hjڪubh)}(hThe bulk of link setup is handled by the two entities connected through the link. This function notifies both entities of the link configuration change.h]hThe bulk of link setup is handled by the two entities connected through the link. This function notifies both entities of the link configuration change.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM[hjڪubh)}(hcIf the link is immutable or if the current and new configuration are identical, return immediately.h]hcIf the link is immutable or if the current and new configuration are identical, return immediately.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM^hjڪubh)}(hsThe user is expected to hold link->source->parent->mutex. If not, media_entity_setup_link() should be used instead.h]hsThe user is expected to hold link->source->parent->mutex. If not, media_entity_setup_link() should be used instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMahjڪubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j $media_entity_setup_link (C function)c.media_entity_setup_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h@int media_entity_setup_link (struct media_link *link, u32 flags)h]j )}(h?int media_entity_setup_link(struct media_link *link, u32 flags)h](jL)}(hinth]hint}(hj֫hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjҫhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjҫhhhjhMhubj$ )}(hmedia_entity_setup_linkh]j* )}(hmedia_entity_setup_linkh]hmedia_entity_setup_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjҫhhhjhMhubj)}(h$(struct media_link *link, u32 flags)h](j)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_linkh]h media_link}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj3modnameN classnameNjj)}j]j)}jjsbc.media_entity_setup_linkasbuh1hhjubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hlinkh]hlink}(hjlhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jMc.media_entity_setup_linkasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjҫhhhjhMhubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjΫhhhjhMhubah}(h]jɫah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhhj˫hhubjV )}(hhh]h)}(h,changes the link flags properties in runtimeh]h,changes the link flags properties in runtime}(hjެhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhhj۬hhubah}(h]h ]h"]h$]h&]uh1jU hj˫hhhjhMhubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_link *link`` pointer to :c:type:`media_link` ``u32 flags`` the requested new link flags **Description** The only configurable property is the ``MEDIA_LNK_FL_ENABLED`` link flag to enable/disable a link. Links marked with the ``MEDIA_LNK_FL_IMMUTABLE`` link flag can not be enabled or disabled. When a link is enabled or disabled, the media framework calls the link_setup operation for the two entities at the source and sink of the link, in that order. If the second link_setup call fails, another link_setup call is made on the first entity to restore the original link flags. Media device drivers can be notified of link setup operations by setting the :c:type:`media_device.link_notify ` pointer to a callback function. If provided, the notification callback will be called before enabling and after disabling links. Entity drivers must implement the link_setup operation if any of their links is non-immutable. The operation must either configure the hardware or store the configuration information to be applied later. Link configuration must not have any side effect on other links. If an enabled link at a sink pad prevents another link at the same pad from being enabled, the link_setup operation must return ``-EBUSY`` and can't implicitly disable the first enabled link. .. note:: The valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMlhjubj )}(hhh](j )}(h<``struct media_link *link`` pointer to :c:type:`media_link` h](j )}(h``struct media_link *link``h]j~)}(hjh]hstruct media_link *link}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjhjubj )}(hhh]h)}(hpointer to :c:type:`media_link`h](h pointer to }(hj8hhhNhNubh)}(h:c:type:`media_link`h]j~)}(hjBh]h media_link}(hjDhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj@ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhj4hMjhj8ubeh}(h]h ]h"]h$]h&]uh1hhj4hMjhj5ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj4hMjhjubj )}(h+``u32 flags`` the requested new link flags h](j )}(h ``u32 flags``h]j~)}(hjwh]h u32 flags}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMkhjqubj )}(hhh]h)}(hthe requested new link flagsh]hthe requested new link flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMkhjubah}(h]h ]h"]h$]h&]uh1j hjqubeh}(h]h ]h"]h$]h&]uh1j hjhMkhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMmhjubh)}(hThe only configurable property is the ``MEDIA_LNK_FL_ENABLED`` link flag to enable/disable a link. Links marked with the ``MEDIA_LNK_FL_IMMUTABLE`` link flag can not be enabled or disabled.h](h&The only configurable property is the }(hjȭhhhNhNubj~)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hjЭhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjȭubh; link flag to enable/disable a link. Links marked with the }(hjȭhhhNhNubj~)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjȭubh* link flag can not be enabled or disabled.}(hjȭhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMlhjubh)}(hXWhen a link is enabled or disabled, the media framework calls the link_setup operation for the two entities at the source and sink of the link, in that order. If the second link_setup call fails, another link_setup call is made on the first entity to restore the original link flags.h]hXWhen a link is enabled or disabled, the media framework calls the link_setup operation for the two entities at the source and sink of the link, in that order. If the second link_setup call fails, another link_setup call is made on the first entity to restore the original link flags.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMphjubh)}(hMedia device drivers can be notified of link setup operations by setting the :c:type:`media_device.link_notify ` pointer to a callback function. If provided, the notification callback will be called before enabling and after disabling links.h](hMMedia device drivers can be notified of link setup operations by setting the }(hj hhhNhNubh)}(h1:c:type:`media_device.link_notify `h]j~)}(hjh]hmedia_device.link_notify}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMvhj ubh pointer to a callback function. If provided, the notification callback will be called before enabling and after disabling links.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj1hMvhjubh)}(hEntity drivers must implement the link_setup operation if any of their links is non-immutable. The operation must either configure the hardware or store the configuration information to be applied later.h]hEntity drivers must implement the link_setup operation if any of their links is non-immutable. The operation must either configure the hardware or store the configuration information to be applied later.}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hjubh)}(hXLink configuration must not have any side effect on other links. If an enabled link at a sink pad prevents another link at the same pad from being enabled, the link_setup operation must return ``-EBUSY`` and can't implicitly disable the first enabled link.h](hLink configuration must not have any side effect on other links. If an enabled link at a sink pad prevents another link at the same pad from being enabled, the link_setup operation must return }(hjKhhhNhNubj~)}(h ``-EBUSY``h]h-EBUSY}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjKubh7 and can’t implicitly disable the first enabled link.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hThe valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.h]h)}(hThe valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.h]hThe valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjlubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_entity_find_link (C function)c.media_entity_find_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h]struct media_link * media_entity_find_link (struct media_pad *source, struct media_pad *sink)h]j )}(h[struct media_link *media_entity_find_link(struct media_pad *source, struct media_pad *sink)h](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubh)}(hhh]j* )}(h media_linkh]h media_link}(hjĮhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjƮmodnameN classnameNjj)}j]j)}jmedia_entity_find_linksbc.media_entity_find_linkasbuh1hhjhhhjhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj$ )}(hmedia_entity_find_linkh]j* )}(hjh]hmedia_entity_find_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h2(struct media_pad *source, struct media_pad *sink)h](j)}(hstruct media_pad *sourceh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hj=hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]jc.media_entity_find_linkasbuh1hhjubj )}(h h]h }(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hsourceh]hsource}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_pad *sinkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_entity_find_linkasbuh1hhjubj )}(h h]h }(hj˯hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjٯhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hsinkh]hsink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(hFind a link between two padsh]hFind a link between two pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j(jx j(jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_pad *source`` Source pad ``struct media_pad *sink`` Sink pad **Return** returns a pointer to the link between the two entities. If no such link exists, return ``NULL``.h](h)}(h**Parameters**h]j)}(hj2h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj,ubj )}(hhh](j )}(h(``struct media_pad *source`` Source pad h](j )}(h``struct media_pad *source``h]j~)}(hjQh]hstruct media_pad *source}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjKubj )}(hhh]h)}(h Source padh]h Source pad}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMhjgubah}(h]h ]h"]h$]h&]uh1j hjKubeh}(h]h ]h"]h$]h&]uh1j hjfhMhjHubj )}(h$``struct media_pad *sink`` Sink pad h](j )}(h``struct media_pad *sink``h]j~)}(hjh]hstruct media_pad *sink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(hSink padh]hSink pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjHubeh}(h]h ]h"]h$]h&]uh1j hj,ubh)}(h **Return**h]j)}(hjŰh]hReturn}(hjǰhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjðubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj,ubh)}(h`returns a pointer to the link between the two entities. If no such link exists, return ``NULL``.h](hWreturns a pointer to the link between the two entities. If no such link exists, return }(hj۰hhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj۰ubh.}(hj۰hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj,ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 'media_pad_remote_pad_first (C function)c.media_pad_remote_pad_firsthNtauh1j hj hhhNhNubj )}(hhh](j )}(hKstruct media_pad * media_pad_remote_pad_first (const struct media_pad *pad)h]j )}(hIstruct media_pad *media_pad_remote_pad_first(const struct media_pad *pad)h](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj)hMubh)}(hhh]j* )}(h media_padh]h media_pad}(hj;hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNjj)}j]j)}jmedia_pad_remote_pad_firstsbc.media_pad_remote_pad_firstasbuh1hhjhhhj)hMubj )}(h h]h }(hj\hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj)hMubj)}(hjh]h*}(hjjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj)hMubj$ )}(hmedia_pad_remote_pad_firsth]j* )}(hjYh]hmedia_pad_remote_pad_first}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjwubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj)hMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hjϱhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj̱ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjѱmodnameN classnameNjj)}j]jWc.media_pad_remote_pad_firstasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj)hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj)hMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj)hMhjhhubjV )}(hhh]h)}(h.Find the first pad at the remote end of a linkh]h.Find the first pad at the remote end of a link}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj/hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj)hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jJjx jJjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``const struct media_pad *pad`` Pad at the local end of the link **Description** Search for a remote pad connected to the given pad by iterating over all links originating or terminating at that pad until an enabled link is found. **Return** returns a pointer to the pad at the remote end of the first found enabled link, or ``NULL`` if no enabled link has been found.h](h)}(h**Parameters**h]j)}(hjTh]h Parameters}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjNubj )}(hhh]j )}(hA``const struct media_pad *pad`` Pad at the local end of the link h](j )}(h``const struct media_pad *pad``h]j~)}(hjsh]hconst struct media_pad *pad}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjqubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjmubj )}(hhh]h)}(h Pad at the local end of the linkh]h Pad at the local end of the link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjmubeh}(h]h ]h"]h$]h&]uh1j hjhMhjjubah}(h]h ]h"]h$]h&]uh1j hjNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjNubh)}(hSearch for a remote pad connected to the given pad by iterating over all links originating or terminating at that pad until an enabled link is found.h]hSearch for a remote pad connected to the given pad by iterating over all links originating or terminating at that pad until an enabled link is found.}(hjIJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjNubh)}(h **Return**h]j)}(hjղh]hReturn}(hjײhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjӲubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjNubh)}(h~returns a pointer to the pad at the remote end of the first found enabled link, or ``NULL`` if no enabled link has been found.h](hSreturns a pointer to the pad at the remote end of the first found enabled link, or }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh# if no enabled link has been found.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjNubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_pad_remote_pad_unique (C function)c.media_pad_remote_pad_uniquehNtauh1j hj hhhNhNubj )}(hhh](j )}(hLstruct media_pad * media_pad_remote_pad_unique (const struct media_pad *pad)h]j )}(hJstruct media_pad *media_pad_remote_pad_unique(const struct media_pad *pad)h](j )}(hj h]hstruct}(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(hhhj9hMubh)}(hhh]j* )}(h media_padh]h media_pad}(hjKhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]j)}jmedia_pad_remote_pad_uniquesbc.media_pad_remote_pad_uniqueasbuh1hhj(hhhj9hMubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(hhhj9hMubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhj9hMubj$ )}(hmedia_pad_remote_pad_uniqueh]j* )}(hjih]hmedia_pad_remote_pad_unique}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj(hhhj9hMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjγhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hj߳hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjܳubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jgc.media_pad_remote_pad_uniqueasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj(hhhj9hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj$hhhj9hMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj9hMhj!hhubjV )}(hhh]h)}(h$Find a remote pad connected to a padh]h$Find a remote pad connected to a pad}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj?hhubah}(h]h ]h"]h$]h&]uh1jU hj!hhhj9hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jZjx jZjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``const struct media_pad *pad`` The pad **Description** Search for and return a remote pad connected to **pad** through an enabled link. If multiple (or no) remote pads are found, an error is returned. The uniqueness constraint makes this helper function suitable for entities that support a single active source at a time on a given pad. * -ENOTUNIQ - Multiple links are enabled * -ENOLINK - No connected pad found **Return** A pointer to the remote pad, or one of the following error pointers if an error occurs:h](h)}(h**Parameters**h]j)}(hjdh]h Parameters}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubj )}(hhh]j )}(h(``const struct media_pad *pad`` The pad h](j )}(h``const struct media_pad *pad``h]j~)}(hjh]hconst struct media_pad *pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj}ubj )}(hhh]h)}(hThe padh]hThe pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hj}ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjzubah}(h]h ]h"]h$]h&]uh1j hj^ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubh)}(hSearch for and return a remote pad connected to **pad** through an enabled link. If multiple (or no) remote pads are found, an error is returned.h](h0Search for and return a remote pad connected to }(hjԴhhhNhNubj)}(h**pad**h]hpad}(hjܴhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjԴubhZ through an enabled link. If multiple (or no) remote pads are found, an error is returned.}(hjԴhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubh)}(hThe uniqueness constraint makes this helper function suitable for entities that support a single active source at a time on a given pad.h]hThe uniqueness constraint makes this helper function suitable for entities that support a single active source at a time on a given pad.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubj)}(hhh](j)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(hj h]h&-ENOTUNIQ - Multiple links are enabled}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h"-ENOLINK - No connected pad found h]h)}(h!-ENOLINK - No connected pad foundh]h!-ENOLINK - No connected pad found}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]j5juh1jhjhMhj^ubh)}(h **Return**h]j)}(hj@h]hReturn}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubh)}(hWA pointer to the remote pad, or one of the following error pointers if an error occurs:h]hWA pointer to the remote pad, or one of the following error pointers if an error occurs:}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j +media_entity_remote_pad_unique (C function) c.media_entity_remote_pad_uniquehNtauh1j hj hhhNhNubj )}(hhh](j )}(hhstruct media_pad * media_entity_remote_pad_unique (const struct media_entity *entity, unsigned int type)h]j )}(hfstruct media_pad *media_entity_remote_pad_unique(const struct media_entity *entity, unsigned int type)h](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_entity_remote_pad_uniquesb c.media_entity_remote_pad_uniqueasbuh1hhjhhhjhMubj )}(h h]h }(hjŵhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj)}(hjh]h*}(hjӵhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj$ )}(hmedia_entity_remote_pad_uniqueh]j* )}(hjµh]hmedia_entity_remote_pad_unique}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h6(const struct media_entity *entity, unsigned int type)h](j)}(h!const struct media_entity *entityh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hj8hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj5ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj:modnameN classnameNjj)}j]j c.media_entity_remote_pad_uniqueasbuh1hhjubj )}(h h]h }(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjdhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hjqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned int typeh](jL)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(htypeh]htype}(hj¶hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj}hhhjhMubah}(h]jxah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjzhhubjV )}(hhh]h)}(h(Find a remote pad connected to an entityh]h(Find a remote pad connected to an entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjzhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``const struct media_entity *entity`` The entity ``unsigned int type`` The type of pad to find (MEDIA_PAD_FL_SINK or MEDIA_PAD_FL_SOURCE) **Description** Search for and return a remote pad of **type** connected to **entity** through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned. The uniqueness constraint makes this helper function suitable for entities that support a single active source or sink at a time. * -ENOTUNIQ - Multiple links are enabled * -ENOLINK - No connected pad found **Return** A pointer to the remote pad, or one of the following error pointers if an error occurs:h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h1``const struct media_entity *entity`` The entity h](j )}(h%``const struct media_entity *entity``h]j~)}(hj-h]h!const struct media_entity *entity}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj+ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj'ubj )}(hhh]h)}(h The entityh]h The entity}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjCubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hjBhMhj$ubj )}(hY``unsigned int type`` The type of pad to find (MEDIA_PAD_FL_SINK or MEDIA_PAD_FL_SOURCE) h](j )}(h``unsigned int type``h]j~)}(hjfh]hunsigned int type}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj`ubj )}(hhh]h)}(hBThe type of pad to find (MEDIA_PAD_FL_SINK or MEDIA_PAD_FL_SOURCE)h]hBThe type of pad to find (MEDIA_PAD_FL_SINK or MEDIA_PAD_FL_SOURCE)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj{hMhj|ubah}(h]h ]h"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]uh1j hj{hMhj$ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hSearch for and return a remote pad of **type** connected to **entity** through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned.h](h&Search for and return a remote pad of }(hjhhhNhNubj)}(h**type**h]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh connected to }(hjhhhNhNubj)}(h **entity**h]hentity}(hjѷhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhe through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hThe uniqueness constraint makes this helper function suitable for entities that support a single active source or sink at a time.h]hThe uniqueness constraint makes this helper function suitable for entities that support a single active source or sink at a time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh](j)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(hjh]h&-ENOTUNIQ - Multiple links are enabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h"-ENOLINK - No connected pad found h]h)}(h!-ENOLINK - No connected pad foundh]h!-ENOLINK - No connected pad found}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]j5juh1jhj hMhjubh)}(h **Return**h]j)}(hj5h]hReturn}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hWA pointer to the remote pad, or one of the following error pointers if an error occurs:h]hWA pointer to the remote pad, or one of the following error pointers if an error occurs:}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 2media_entity_remote_source_pad_unique (C function)'c.media_entity_remote_source_pad_uniquehNtauh1j hj hhhNhNubj )}(hhh](j )}(h\struct media_pad * media_entity_remote_source_pad_unique (const struct media_entity *entity)h]j )}(hZstruct media_pad *media_entity_remote_source_pad_unique(const struct media_entity *entity)h](j )}(hj h]hstruct}(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvhhhjhMubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j%media_entity_remote_source_pad_uniquesb'c.media_entity_remote_source_pad_uniqueasbuh1hhjvhhhjhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvhhhjhMubj)}(hjh]h*}(hjȸhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvhhhjhMubj$ )}(h%media_entity_remote_source_pad_uniqueh]j* )}(hjh]h%media_entity_remote_source_pad_unique}(hjٸhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjոubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjvhhhjhMubj)}(h#(const struct media_entity *entity)h]j)}(h!const struct media_entity *entityh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hj-hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]j'c.media_entity_remote_source_pad_uniqueasbuh1hhjubj )}(h h]h }(hjKhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjYhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hjfhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjvhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjrhhhjhMubah}(h]jmah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjohhubjV )}(hhh]h)}(h/Find a remote source pad connected to an entityh]h/Find a remote source pad connected to an entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjohhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX***Parameters** ``const struct media_entity *entity`` The entity **Description** Search for and return a remote source pad connected to **entity** through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned. The uniqueness constraint makes this helper function suitable for entities that support a single active source at a time. * -ENOTUNIQ - Multiple links are enabled * -ENOLINK - No connected pad found **Return** A pointer to the remote pad, or one of the following error pointers if an error occurs:h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]j )}(h1``const struct media_entity *entity`` The entity h](j )}(h%``const struct media_entity *entity``h]j~)}(hjѹh]h!const struct media_entity *entity}(hjӹhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjϹubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj˹ubj )}(hhh]h)}(h The entityh]h The entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hj˹ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjȹubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hSearch for and return a remote source pad connected to **entity** through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned.h](h7Search for and return a remote source pad connected to }(hj"hhhNhNubj)}(h **entity**h]hentity}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubhe through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hyThe uniqueness constraint makes this helper function suitable for entities that support a single active source at a time.h]hyThe uniqueness constraint makes this helper function suitable for entities that support a single active source at a time.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh](j)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(hjWh]h&-ENOTUNIQ - Multiple links are enabled}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjUubah}(h]h ]h"]h$]h&]uh1jhjRubj)}(h"-ENOLINK - No connected pad found h]h)}(h!-ENOLINK - No connected pad foundh]h!-ENOLINK - No connected pad found}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjmubah}(h]h ]h"]h$]h&]uh1jhjRubeh}(h]h ]h"]h$]h&]j5juh1jhjfhMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hWA pointer to the remote pad, or one of the following error pointers if an error occurs:h]hWA pointer to the remote pad, or one of the following error pointers if an error occurs:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_pad_is_streaming (C function)c.media_pad_is_streaminghNtauh1j hj hhhNhNubj )}(hhh](j )}(h9bool media_pad_is_streaming (const struct media_pad *pad)h]j )}(h8bool media_pad_is_streaming(const struct media_pad *pad)h](jL)}(hj6sh]hbool}(hjӺhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjϺhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjϺhhhjhMubj$ )}(hmedia_pad_is_streamingh]j* )}(hmedia_pad_is_streamingh]hmedia_pad_is_streaming}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjϺhhhjhMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(hj h]hstruct}(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j* )}(h media_padh]h media_pad}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]j)}jjsbc.media_pad_is_streamingasbuh1hhj ubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjϺhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj˺hhhjhMubah}(h]jƺah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjȺhhubjV )}(hhh]h)}(h-Test if a pad is part of a streaming pipelineh]h-Test if a pad is part of a streaming pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjȺhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jŻjx jŻjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``const struct media_pad *pad`` The pad **Return** True if the pad is part of a pipeline started with the media_pipeline_start() function, false otherwise.h](h)}(h**Parameters**h]j)}(hjϻh]h Parameters}(hjѻhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjͻubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjɻubj )}(hhh]j )}(h(``const struct media_pad *pad`` The pad h](j )}(h``const struct media_pad *pad``h]j~)}(hjh]hconst struct media_pad *pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(hThe padh]hThe pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjɻubh)}(h **Return**h]j)}(hj)h]hReturn}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjɻubh)}(hhTrue if the pad is part of a pipeline started with the media_pipeline_start() function, false otherwise.h]hhTrue if the pad is part of a pipeline started with the media_pipeline_start() function, false otherwise.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjɻubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_entity_is_streaming (C function)c.media_entity_is_streaminghNtauh1j hj hhhNhNubj )}(hhh](j )}(hBbool media_entity_is_streaming (const struct media_entity *entity)h]j )}(hAbool media_entity_is_streaming(const struct media_entity *entity)h](jL)}(hj6sh]hbool}(hjnhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjhhhj{hMubj$ )}(hmedia_entity_is_streamingh]j* )}(hmedia_entity_is_streamingh]hmedia_entity_is_streaming}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjjhhhj{hMubj)}(h#(const struct media_entity *entity)h]j)}(h!const struct media_entity *entityh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjżhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjҼhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_entity_is_streamingasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjjhhhj{hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjfhhhj{hMubah}(h]jaah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj{hMhjchhubjV )}(hhh]h)}(h1Test if an entity is part of a streaming pipelineh]h1Test if an entity is part of a streaming pipeline}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjEhhubah}(h]h ]h"]h$]h&]uh1jU hjchhhj{hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j`jx j`jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``const struct media_entity *entity`` The entity **Return** True if the entity is part of a pipeline started with the media_pipeline_start() function, false otherwise.h](h)}(h**Parameters**h]j)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjdubj )}(hhh]j )}(h1``const struct media_entity *entity`` The entity h](j )}(h%``const struct media_entity *entity``h]j~)}(hjh]h!const struct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h The entityh]h The entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjdubh)}(h **Return**h]j)}(hjĽh]hReturn}(hjƽhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj½ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjdubh)}(hkTrue if the entity is part of a pipeline started with the media_pipeline_start() function, false otherwise.h]hkTrue if the entity is part of a pipeline started with the media_pipeline_start() function, false otherwise.}(hjڽhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_entity_pipeline (C function)c.media_entity_pipelinehNtauh1j hj hhhNhNubj )}(hhh](j )}(hKstruct media_pipeline * media_entity_pipeline (struct media_entity *entity)h]j )}(hIstruct media_pipeline *media_entity_pipeline(struct media_entity *entity)h](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hj(hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j)}jmedia_entity_pipelinesbc.media_entity_pipelineasbuh1hhjhhhjhMubj )}(h h]h }(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj)}(hjh]h*}(hjWhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj$ )}(hmedia_entity_pipelineh]j* )}(hjFh]hmedia_entity_pipeline}(hjhhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjdubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jDc.media_entity_pipelineasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj;hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hjھhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h+Get the media pipeline an entity is part ofh]h+Get the media pipeline an entity is part of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *entity`` The entity **Description** DEPRECATED: use media_pad_pipeline() instead. This function returns the media pipeline that an entity has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called. In general, entities can be part of multiple pipelines, when carrying multiple streams (either on different pads, or on the same pad using multiplexed streams). This function is to be used only for entities that do not support multiple pipelines. **Return** The media_pipeline the entity is part of, or NULL if the entity is not part of any pipeline.h](h)}(h**Parameters**h]j)}(hj&h]h Parameters}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh]j )}(h+``struct media_entity *entity`` The entity h](j )}(h``struct media_entity *entity``h]j~)}(hjEh]hstruct media_entity *entity}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjCubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj?ubj )}(hhh]h)}(h The entityh]h The entity}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhj[ubah}(h]h ]h"]h$]h&]uh1j hj?ubeh}(h]h ]h"]h$]h&]uh1j hjZhMhj<ubah}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubh)}(h-DEPRECATED: use media_pad_pipeline() instead.h]h-DEPRECATED: use media_pad_pipeline() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubh)}(hThis function returns the media pipeline that an entity has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called.h]hThis function returns the media pipeline that an entity has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubh)}(hIn general, entities can be part of multiple pipelines, when carrying multiple streams (either on different pads, or on the same pad using multiplexed streams). This function is to be used only for entities that do not support multiple pipelines.h]hIn general, entities can be part of multiple pipelines, when carrying multiple streams (either on different pads, or on the same pad using multiplexed streams). This function is to be used only for entities that do not support multiple pipelines.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hj ubh)}(h **Return**h]j)}(hjſh]hReturn}(hjǿhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjÿubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubh)}(h\The media_pipeline the entity is part of, or NULL if the entity is not part of any pipeline.h]h\The media_pipeline the entity is part of, or NULL if the entity is not part of any pipeline.}(hjۿhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pad_pipeline (C function)c.media_pad_pipelinehNtauh1j hj hhhNhNubj )}(hhh](j )}(hBstruct media_pipeline * media_pad_pipeline (struct media_pad *pad)h]j )}(h@struct media_pipeline *media_pad_pipeline(struct media_pad *pad)h](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hj)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]j)}jmedia_pad_pipelinesbc.media_pad_pipelineasbuh1hhjhhhjhMubj )}(h h]h }(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj$ )}(hmedia_pad_pipelineh]j* )}(hjGh]hmedia_pad_pipeline}(hjihhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjeubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(struct media_pad *pad)h]j)}(hstruct media_pad *padh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jEc.media_pad_pipelineasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj|ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h'Get the media pipeline a pad is part ofh]h'Get the media pipeline a pad is part of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hXs**Parameters** ``struct media_pad *pad`` The pad **Description** This function returns the media pipeline that a pad has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called. **Return** The media_pipeline the pad is part of, or NULL if the pad is not part of any pipeline.h](h)}(h**Parameters**h]j)}(hj'h]h Parameters}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj!ubj )}(hhh]j )}(h"``struct media_pad *pad`` The pad h](j )}(h``struct media_pad *pad``h]j~)}(hjFh]hstruct media_pad *pad}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjDubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj@ubj )}(hhh]h)}(hThe padh]hThe pad}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj[hMhj\ubah}(h]h ]h"]h$]h&]uh1j hj@ubeh}(h]h ]h"]h$]h&]uh1j hj[hMhj=ubah}(h]h ]h"]h$]h&]uh1j hj!ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj!ubh)}(hThis function returns the media pipeline that a pad has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called.h]hThis function returns the media pipeline that a pad has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj!ubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj!ubh)}(hVThe media_pipeline the pad is part of, or NULL if the pad is not part of any pipeline.h]hVThe media_pipeline the pad is part of, or NULL if the pad is not part of any pipeline.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_entity_get_fwnode_pad (C function)c.media_entity_get_fwnode_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(hint media_entity_get_fwnode_pad (struct media_entity *entity, const struct fwnode_handle *fwnode, unsigned long direction_flags)h]j )}(hint media_entity_get_fwnode_pad(struct media_entity *entity, const struct fwnode_handle *fwnode, unsigned long direction_flags)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM%ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM%ubj$ )}(hmedia_entity_get_fwnode_padh]j* )}(hmedia_entity_get_fwnode_padh]hmedia_entity_get_fwnode_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhM%ubj)}(h`(struct media_entity *entity, const struct fwnode_handle *fwnode, unsigned long direction_flags)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]j)}jjsbc.media_entity_get_fwnode_padasbuh1hhj&ubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubj)}(h"const struct fwnode_handle *fwnodeh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h fwnode_handleh]h fwnode_handle}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jdc.media_entity_get_fwnode_padasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hfwnodeh]hfwnode}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubj)}(hunsigned long direction_flagsh](jL)}(hunsignedh]hunsigned}(hj'hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj#ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubjL)}(hlongh]hlong}(hjChhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj#ubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj* )}(hdirection_flagsh]hdirection_flags}(hj_hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM%ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhM%ubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM%hjhhubjV )}(hhh]h)}(hGet pad number from fwnodeh]hGet pad number from fwnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM%hjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhM%ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *entity`` The entity ``const struct fwnode_handle *fwnode`` Pointer to the fwnode_handle which should be used to find the pad ``unsigned long direction_flags`` Expected direction of the pad, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``) **Description** This function can be used to resolve the media pad number from a fwnode. This is useful for devices which use more complex mappings of media pads. If the entity does not implement the get_fwnode_pad() operation then this function searches the entity for the first pad that matches the **direction_flags**. **Return** returns the pad number on success or a negative error code.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM)hjubj )}(hhh](j )}(h+``struct media_entity *entity`` The entity h](j )}(h``struct media_entity *entity``h]j~)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM'hjubj )}(hhh]h)}(h The entityh]h The entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM'hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM'hjubj )}(hi``const struct fwnode_handle *fwnode`` Pointer to the fwnode_handle which should be used to find the pad h](j )}(h&``const struct fwnode_handle *fwnode``h]j~)}(hjh]h"const struct fwnode_handle *fwnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM(hjubj )}(hhh]h)}(hAPointer to the fwnode_handle which should be used to find the padh]hAPointer to the fwnode_handle which should be used to find the pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM(hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM(hjubj )}(h``unsigned long direction_flags`` Expected direction of the pad, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``) h](j )}(h!``unsigned long direction_flags``h]j~)}(hj<h]hunsigned long direction_flags}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM+hj6ubj )}(hhh]h)}(h{Expected direction of the pad, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``)h](h-Expected direction of the pad, as defined in }(hjUhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hj_h]hinclude/uapi/linux/media.h}(hjahhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj]ubah}(h]h ]h"]h$]h&]refdocj refdomainjkreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM)hjUubh (seek for }(hjUhhhNhNubj~)}(h``MEDIA_PAD_FL_*``h]hMEDIA_PAD_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjUubh)}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj}hM)hjRubah}(h]h ]h"]h$]h&]uh1j hj6ubeh}(h]h ]h"]h$]h&]uh1j hjQhM+hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM-hjubh)}(hThis function can be used to resolve the media pad number from a fwnode. This is useful for devices which use more complex mappings of media pads.h]hThis function can be used to resolve the media pad number from a fwnode. This is useful for devices which use more complex mappings of media pads.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM,hjubh)}(hIf the entity does not implement the get_fwnode_pad() operation then this function searches the entity for the first pad that matches the **direction_flags**.h](hIf the entity does not implement the get_fwnode_pad() operation then this function searches the entity for the first pad that matches the }(hjhhhNhNubj)}(h**direction_flags**h]hdirection_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM0hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM4hjubh)}(h;returns the pad number on success or a negative error code.h]h;returns the pad number on success or a negative error code.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM5hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_graph_walk_init (C function)c.media_graph_walk_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(hPint media_graph_walk_init (struct media_graph *graph, struct media_device *mdev)h]j )}(hOint media_graph_walk_init(struct media_graph *graph, struct media_device *mdev)h](jL)}(hinth]hint}(hj;hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj7hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM<ubj )}(h h]h }(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7hhhjIhM<ubj$ )}(hmedia_graph_walk_inith]j* )}(hmedia_graph_walk_inith]hmedia_graph_walk_init}(hj\hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjXubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj7hhhjIhM<ubj)}(h6(struct media_graph *graph, struct media_device *mdev)h](j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubh)}(hhh]j* )}(h media_graphh]h media_graph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj^sbc.media_graph_walk_initasbuh1hhjtubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubj* )}(hgraphh]hgraph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjtubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubj)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.media_graph_walk_initasbuh1hhjubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hmdevh]hmdev}(hjAhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubeh}(h]h ]h"]h$]h&]hhuh1jhj7hhhjIhM<ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj3hhhjIhM<ubah}(h]j.ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjIhM<hj0hhubjV )}(hhh]h)}(h&Allocate resources used by graph walk.h]h&Allocate resources used by graph walk.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM<hjhhhubah}(h]h ]h"]h$]h&]uh1jU hj0hhhjIhM<ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_graph *graph`` Media graph structure that will be used to walk the graph ``struct media_device *mdev`` Pointer to the :c:type:`media_device` that contains the object **Description** This function is deprecated, use media_pipeline_for_each_pad() instead. The caller is required to hold the media_device graph_mutex during the graph walk until the graph state is released. Returns zero on success or a negative error code otherwise.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM@hjubj )}(hhh](j )}(hX``struct media_graph *graph`` Media graph structure that will be used to walk the graph h](j )}(h``struct media_graph *graph``h]j~)}(hjh]hstruct media_graph *graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM>hjubj )}(hhh]h)}(h9Media graph structure that will be used to walk the graphh]h9Media graph structure that will be used to walk the graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM>hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM>hjubj )}(h]``struct media_device *mdev`` Pointer to the :c:type:`media_device` that contains the object h](j )}(h``struct media_device *mdev``h]j~)}(hjh]hstruct media_device *mdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM?hjubj )}(hhh]h)}(h>Pointer to the :c:type:`media_device` that contains the objecth](hPointer to the }(hjhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hj hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhM?hjubh that contains the object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM?hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM?hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjCh]h Description}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjubh)}(hGThis function is deprecated, use media_pipeline_for_each_pad() instead.h]hGThis function is deprecated, use media_pipeline_for_each_pad() instead.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM@hjubh)}(htThe caller is required to hold the media_device graph_mutex during the graph walk until the graph state is released.h]htThe caller is required to hold the media_device graph_mutex during the graph walk until the graph state is released.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMBhjubh)}(h;Returns zero on success or a negative error code otherwise.h]h;Returns zero on success or a negative error code otherwise.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMEhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_graph_walk_cleanup (C function)c.media_graph_walk_cleanuphNtauh1j hj hhhNhNubj )}(hhh](j )}(h9void media_graph_walk_cleanup (struct media_graph *graph)h]j )}(h8void media_graph_walk_cleanup(struct media_graph *graph)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMLubj$ )}(hmedia_graph_walk_cleanuph]j* )}(hmedia_graph_walk_cleanuph]hmedia_graph_walk_cleanup}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMLubj)}(h(struct media_graph *graph)h]j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_graphh]h media_graph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_graph_walk_cleanupasbuh1hhjubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hgraphh]hgraph}(hj<hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMLubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMLubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMLhjhhubjV )}(hhh]h)}(h%Release resources used by graph walk.h]h%Release resources used by graph walk.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLhjchhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMLubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j~jx j~jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_graph *graph`` Media graph structure that will be used to walk the graph **Description** This function is deprecated, use media_pipeline_for_each_pad() instead.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMPhjubj )}(hhh]j )}(hX``struct media_graph *graph`` Media graph structure that will be used to walk the graph h](j )}(h``struct media_graph *graph``h]j~)}(hjh]hstruct media_graph *graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMNhjubj )}(hhh]h)}(h9Media graph structure that will be used to walk the graphh]h9Media graph structure that will be used to walk the graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMNhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMNhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMPhjubh)}(hGThis function is deprecated, use media_pipeline_for_each_pad() instead.h]hGThis function is deprecated, use media_pipeline_for_each_pad() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMOhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_graph_walk_start (C function)c.media_graph_walk_starthNtauh1j hj hhhNhNubj )}(hhh](j )}(hTvoid media_graph_walk_start (struct media_graph *graph, struct media_entity *entity)h]j )}(hSvoid media_graph_walk_start(struct media_graph *graph, struct media_entity *entity)h](jL)}(hvoidh]hvoid}(hj'hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj#hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUubj )}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#hhhj5hMUubj$ )}(hmedia_graph_walk_starth]j* )}(hmedia_graph_walk_starth]hmedia_graph_walk_start}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjDubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj#hhhj5hMUubj)}(h8(struct media_graph *graph, struct media_entity *entity)h](j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubj )}(h h]h }(hjqhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubh)}(hhh]j* )}(h media_graphh]h media_graph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjJsbc.media_graph_walk_startasbuh1hhj`ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj`ubj* )}(hgraphh]hgraph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_graph_walk_startasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hj-hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubeh}(h]h ]h"]h$]h&]hhuh1jhj#hhhj5hMUubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj5hMUubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj5hMUhjhhubjV )}(hhh]h)}(h/Start walking the media graph at a given entityh]h/Start walking the media graph at a given entity}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjThhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj5hMUubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jojx jojy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_graph *graph`` Media graph structure that will be used to walk the graph ``struct media_entity *entity`` Starting entity **Description** This function is deprecated, use media_pipeline_for_each_pad() instead. Before using this function, media_graph_walk_init() must be used to allocate resources used for walking the graph. This function initializes the graph traversal structure to walk the entities graph starting at the given entity. The traversal structure must not be modified by the caller during graph traversal. After the graph walk, the resources must be released using media_graph_walk_cleanup().h](h)}(h**Parameters**h]j)}(hjyh]h Parameters}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhjsubj )}(hhh](j )}(hX``struct media_graph *graph`` Media graph structure that will be used to walk the graph h](j )}(h``struct media_graph *graph``h]j~)}(hjh]hstruct media_graph *graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMXhjubj )}(hhh]h)}(h9Media graph structure that will be used to walk the graphh]h9Media graph structure that will be used to walk the graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMXhjubj )}(h0``struct media_entity *entity`` Starting entity h](j )}(h``struct media_entity *entity``h]j~)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhjubj )}(hhh]h)}(hStarting entityh]hStarting entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMYhjubeh}(h]h ]h"]h$]h&]uh1j hjsubh)}(h**Description**h]j)}(hj h]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM[hjsubh)}(hGThis function is deprecated, use media_pipeline_for_each_pad() instead.h]hGThis function is deprecated, use media_pipeline_for_each_pad() instead.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMZhjsubh)}(hXBefore using this function, media_graph_walk_init() must be used to allocate resources used for walking the graph. This function initializes the graph traversal structure to walk the entities graph starting at the given entity. The traversal structure must not be modified by the caller during graph traversal. After the graph walk, the resources must be released using media_graph_walk_cleanup().h]hXBefore using this function, media_graph_walk_init() must be used to allocate resources used for walking the graph. This function initializes the graph traversal structure to walk the entities graph starting at the given entity. The traversal structure must not be modified by the caller during graph traversal. After the graph walk, the resources must be released using media_graph_walk_cleanup().}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM\hjsubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_graph_walk_next (C function)c.media_graph_walk_nexthNtauh1j hj hhhNhNubj )}(hhh](j )}(hGstruct media_entity * media_graph_walk_next (struct media_graph *graph)h]j )}(hEstruct media_entity *media_graph_walk_next(struct media_graph *graph)h](j )}(hj h]hstruct}(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMiubj )}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\hhhjmhMiubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_graph_walk_nextsbc.media_graph_walk_nextasbuh1hhj\hhhjmhMiubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\hhhjmhMiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\hhhjmhMiubj$ )}(hmedia_graph_walk_nexth]j* )}(hjh]hmedia_graph_walk_next}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj\hhhjmhMiubj)}(h(struct media_graph *graph)h]j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_graphh]h media_graph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_graph_walk_nextasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hgraphh]hgraph}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj\hhhjmhMiubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjXhhhjmhMiubah}(h]jSah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjmhMihjUhhubjV )}(hhh]h)}(h Get the next entity in the graphh]h Get the next entity in the graph}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMihjXhhubah}(h]h ]h"]h$]h&]uh1jU hjUhhhjmhMiubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jsjx jsjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_graph *graph`` Media graph structure **Description** This function is deprecated, use media_pipeline_for_each_pad() instead. Perform a depth-first traversal of the given media entities graph. The graph structure must have been previously initialized with a call to media_graph_walk_start(). **Return** returns the next entity in the graph or ``NULL`` if the whole graph have been traversed.h](h)}(h**Parameters**h]j)}(hj}h]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMmhjwubj )}(hhh]j )}(h4``struct media_graph *graph`` Media graph structure h](j )}(h``struct media_graph *graph``h]j~)}(hjh]hstruct media_graph *graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjhjubj )}(hhh]h)}(hMedia graph structureh]hMedia graph structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMjhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMjhjubah}(h]h ]h"]h$]h&]uh1j hjwubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMlhjwubh)}(hGThis function is deprecated, use media_pipeline_for_each_pad() instead.h]hGThis function is deprecated, use media_pipeline_for_each_pad() instead.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMkhjwubh)}(hBPerform a depth-first traversal of the given media entities graph.h]hBPerform a depth-first traversal of the given media entities graph.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMmhjwubh)}(hbThe graph structure must have been previously initialized with a call to media_graph_walk_start().h]hbThe graph structure must have been previously initialized with a call to media_graph_walk_start().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMohjwubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMrhjwubh)}(hXreturns the next entity in the graph or ``NULL`` if the whole graph have been traversed.h](h(returns the next entity in the graph or }(hj2hhhNhNubj~)}(h``NULL``h]hNULL}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj2ubh( if the whole graph have been traversed.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMshjwubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j !media_pipeline_start (C function)c.media_pipeline_starthNtauh1j hj hhhNhNubj )}(hhh](j )}(hPint media_pipeline_start (struct media_pad *origin, struct media_pipeline *pipe)h]j )}(hOint media_pipeline_start(struct media_pad *origin, struct media_pipeline *pipe)h](jL)}(hinth]hint}(hjshhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjohhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjohhhjhMyubj$ )}(hmedia_pipeline_starth]j* )}(hmedia_pipeline_starth]hmedia_pipeline_start}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjohhhjhMyubj)}(h7(struct media_pad *origin, struct media_pipeline *pipe)h](j)}(hstruct media_pad *originh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_pipeline_startasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(horiginh]horigin}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_pipeline *pipeh](j )}(hj h]hstruct}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj/hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hj@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj=ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBmodnameN classnameNjj)}j]jc.media_pipeline_startasbuh1hhjubj )}(h h]h }(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hpipeh]hpipe}(hjyhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjohhhjhMyubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjkhhhjhMyubah}(h]jfah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMyhjhhhubjV )}(hhh]h)}(hMark a pipeline as streamingh]hMark a pipeline as streaming}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhhjhMyubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hXc**Parameters** ``struct media_pad *origin`` Starting pad ``struct media_pipeline *pipe`` Media pipeline to be assigned to all pads in the pipeline. **Description** Mark all pads connected to pad **origin** through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field. Calls to this function can be nested, in which case the same number of media_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to media_pipeline_start().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjubj )}(hhh](j )}(h*``struct media_pad *origin`` Starting pad h](j )}(h``struct media_pad *origin``h]j~)}(hjh]hstruct media_pad *origin}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzhjubj )}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMzhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMzhjubj )}(h[``struct media_pipeline *pipe`` Media pipeline to be assigned to all pads in the pipeline. h](j )}(h``struct media_pipeline *pipe``h]j~)}(hjh]hstruct media_pipeline *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hjubj )}(hhh]h)}(h:Media pipeline to be assigned to all pads in the pipeline.h]h:Media pipeline to be assigned to all pads in the pipeline.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hM{hj3ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj2hM{hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjXh]h Description}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjubh)}(hMark all pads connected to pad **origin** through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field.h](hMark all pads connected to pad }(hjnhhhNhNubj)}(h **origin**h]horigin}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjnubh through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field.}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM|hjubh)}(hCalls to this function can be nested, in which case the same number of media_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to media_pipeline_start().h]hCalls to this function can be nested, in which case the same number of media_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to media_pipeline_start().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #__media_pipeline_start (C function)c.__media_pipeline_starthNtauh1j hj hhhNhNubj )}(hhh](j )}(hRint __media_pipeline_start (struct media_pad *origin, struct media_pipeline *pipe)h]j )}(hQint __media_pipeline_start(struct media_pad *origin, struct media_pipeline *pipe)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(h__media_pipeline_starth]j* )}(h__media_pipeline_starth]h__media_pipeline_start}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h7(struct media_pad *origin, struct media_pipeline *pipe)h](j)}(hstruct media_pad *originh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__media_pipeline_startasbuh1hhjubj )}(h h]h }(hj9hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(horiginh]horigin}(hjThhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_pipeline *pipeh](j )}(hj h]hstruct}(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j5c.__media_pipeline_startasbuh1hhjiubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjiubj* )}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjiubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(hMark a pipeline as streamingh]hMark a pipeline as streaming}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_pad *origin`` Starting pad ``struct media_pipeline *pipe`` Media pipeline to be assigned to all pads in the pipeline. **Description** ..note:: This is the non-locking version of media_pipeline_start()h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh](j )}(h*``struct media_pad *origin`` Starting pad h](j )}(h``struct media_pad *origin``h]j~)}(hj/h]hstruct media_pad *origin}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj-ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj)ubj )}(hhh]h)}(h Starting padh]h Starting pad}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhMhjEubah}(h]h ]h"]h$]h&]uh1j hj)ubeh}(h]h ]h"]h$]h&]uh1j hjDhMhj&ubj )}(h[``struct media_pipeline *pipe`` Media pipeline to be assigned to all pads in the pipeline. h](j )}(h``struct media_pipeline *pipe``h]j~)}(hjhh]hstruct media_pipeline *pipe}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjfubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjbubj )}(hhh]h)}(h:Media pipeline to be assigned to all pads in the pipeline.h]h:Media pipeline to be assigned to all pads in the pipeline.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hMhj~ubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hj}hMhj&ubeh}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubh)}(hB..note:: This is the non-locking version of media_pipeline_start()h]hB..note:: This is the non-locking version of media_pipeline_start()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pipeline_stop (C function)c.media_pipeline_stophNtauh1j hj hhhNhNubj )}(hhh](j )}(h0void media_pipeline_stop (struct media_pad *pad)h]j )}(h/void media_pipeline_stop(struct media_pad *pad)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(hmedia_pipeline_stoph]j* )}(hmedia_pipeline_stoph]hmedia_pipeline_stop}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(struct media_pad *pad)h]j)}(hstruct media_pad *padh](j )}(hj h]hstruct}(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubh)}(hhh]j* )}(h media_padh]h media_pad}(hjChhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]j)}jj sbc.media_pipeline_stopasbuh1hhj!ubj )}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubj)}(hjh]h*}(hjqhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj* )}(hpadh]hpad}(hj~hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h Mark a pipeline as not streamingh]h Mark a pipeline as not streaming}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_pad *pad`` Starting pad **Description** Mark all pads connected to a given pad through enabled links, either directly or indirectly, as not streaming. The media_pad pipe field is reset to ``NULL``. If multiple calls to media_pipeline_start() have been made, the same number of calls to this function are required to mark the pipeline as not streaming.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]j )}(h'``struct media_pad *pad`` Starting pad h](j )}(h``struct media_pad *pad``h]j~)}(hjh]hstruct media_pad *pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj$h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hMark all pads connected to a given pad through enabled links, either directly or indirectly, as not streaming. The media_pad pipe field is reset to ``NULL``.h](hMark all pads connected to a given pad through enabled links, either directly or indirectly, as not streaming. The media_pad pipe field is reset to }(hj:hhhNhNubj~)}(h``NULL``h]hNULL}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubh.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hIf multiple calls to media_pipeline_start() have been made, the same number of calls to this function are required to mark the pipeline as not streaming.h]hIf multiple calls to media_pipeline_start() have been made, the same number of calls to this function are required to mark the pipeline as not streaming.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "__media_pipeline_stop (C function)c.__media_pipeline_stophNtauh1j hj hhhNhNubj )}(hhh](j )}(h2void __media_pipeline_stop (struct media_pad *pad)h]j )}(h1void __media_pipeline_stop(struct media_pad *pad)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(h__media_pipeline_stoph]j* )}(h__media_pipeline_stoph]h__media_pipeline_stop}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(struct media_pad *pad)h]j)}(hstruct media_pad *padh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__media_pipeline_stopasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hpadh]hpad}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]j}ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h Mark a pipeline as not streamingh]h Mark a pipeline as not streaming}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjGhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jbjx jbjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_pad *pad`` Starting pad **Description** .. note:: This is the non-locking version of media_pipeline_stop()h](h)}(h**Parameters**h]j)}(hjlh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjfubj )}(hhh]j )}(h'``struct media_pad *pad`` Starting pad h](j )}(h``struct media_pad *pad``h]j~)}(hjh]hstruct media_pad *pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjfubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjfubj)}(h8This is the non-locking version of media_pipeline_stop()h]h)}(hjh]h8This is the non-locking version of media_pipeline_stop()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjfubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_pipeline_for_each_pad (C macro)c.media_pipeline_for_each_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_for_each_padh]j )}(hmedia_pipeline_for_each_padh]j$ )}(hmedia_pipeline_for_each_padh]j* )}(hjh]hmedia_pipeline_for_each_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj hhhj+hMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj+hMhj hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hj hhhj+hMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jDjx jDjy jz j{ uh1j hhhj hNhNubh)}(h1``media_pipeline_for_each_pad (pipe, iter, pad)``h]j~)}(hjJh]h-media_pipeline_for_each_pad (pipe, iter, pad)}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjHubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(h(Iterate on all pads in a media pipeline h]h)}(h'Iterate on all pads in a media pipelineh]h'Iterate on all pads in a media pipeline}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj`ubah}(h]h ]h"]h$]h&]uh1jhjrhMhj hhubj} )}(hXB**Parameters** ``pipe`` The pipeline ``iter`` The iterator (struct media_pipeline_pad_iter) ``pad`` The iterator pad **Description** Iterate on all pads in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjyubj )}(hhh](j )}(h``pipe`` The pipeline h](j )}(h``pipe``h]j~)}(hjh]hpipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h The pipelineh]h The pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h7``iter`` The iterator (struct media_pipeline_pad_iter) h](j )}(h``iter``h]j~)}(hjh]hiter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h-The iterator (struct media_pipeline_pad_iter)h]h-The iterator (struct media_pipeline_pad_iter)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h``pad`` The iterator pad h](j )}(h``pad``h]j~)}(hjh]hpad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh]h)}(hThe iterator padh]hThe iterator pad}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj&ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj%hMhjubeh}(h]h ]h"]h$]h&]uh1j hjyubh)}(h**Description**h]j)}(hjKh]h Description}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjyubh)}(hIterate on all pads in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop().h]hIterate on all pads in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop().}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjyubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j ,media_pipeline_entity_iter_init (C function)!c.media_pipeline_entity_iter_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(hjint media_pipeline_entity_iter_init (struct media_pipeline *pipe, struct media_pipeline_entity_iter *iter)h]j )}(hiint media_pipeline_entity_iter_init(struct media_pipeline *pipe, struct media_pipeline_entity_iter *iter)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(hmedia_pipeline_entity_iter_inith]j* )}(hmedia_pipeline_entity_iter_inith]hmedia_pipeline_entity_iter_init}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(hF(struct media_pipeline *pipe, struct media_pipeline_entity_iter *iter)h](j)}(hstruct media_pipeline *pipeh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb!c.media_pipeline_entity_iter_initasbuh1hhjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hpipeh]hpipe}(hj&hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h'struct media_pipeline_entity_iter *iterh](j )}(hj h]hstruct}(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj )}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubh)}(hhh]j* )}(hmedia_pipeline_entity_iterh]hmedia_pipeline_entity_iter}(hj]hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_modnameN classnameNjj)}j]j!c.media_pipeline_entity_iter_initasbuh1hhj;ubj )}(h h]h }(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubj* )}(hiterh]hiter}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h%Initialize a pipeline entity iteratorh]h%Initialize a pipeline entity iterator}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX8**Parameters** ``struct media_pipeline *pipe`` The pipeline ``struct media_pipeline_entity_iter *iter`` The iterator **Description** This function must be called to initialize the iterator before using it in a media_pipeline_for_each_entity() loop. The iterator must be destroyed by a call to media_pipeline_entity_iter_cleanup after the loop (including in code paths that break from the loop). The same iterator can be used in multiple consecutive loops without being destroyed and reinitialized. **Return** 0 on success or a negative error code otherwise.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h-``struct media_pipeline *pipe`` The pipeline h](j )}(h``struct media_pipeline *pipe``h]j~)}(hjh]hstruct media_pipeline *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h The pipelineh]h The pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h9``struct media_pipeline_entity_iter *iter`` The iterator h](j )}(h+``struct media_pipeline_entity_iter *iter``h]j~)}(hj:h]h'struct media_pipeline_entity_iter *iter}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj4ubj )}(hhh]h)}(h The iteratorh]h The iterator}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhMhjPubah}(h]h ]h"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]uh1j hjOhMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjuh]h Description}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hXThis function must be called to initialize the iterator before using it in a media_pipeline_for_each_entity() loop. The iterator must be destroyed by a call to media_pipeline_entity_iter_cleanup after the loop (including in code paths that break from the loop).h]hXThis function must be called to initialize the iterator before using it in a media_pipeline_for_each_entity() loop. The iterator must be destroyed by a call to media_pipeline_entity_iter_cleanup after the loop (including in code paths that break from the loop).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hfThe same iterator can be used in multiple consecutive loops without being destroyed and reinitialized.h]hfThe same iterator can be used in multiple consecutive loops without being destroyed and reinitialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(h00 on success or a negative error code otherwise.h]h00 on success or a negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j /media_pipeline_entity_iter_cleanup (C function)$c.media_pipeline_entity_iter_cleanuphNtauh1j hj hhhNhNubj )}(hhh](j )}(hQvoid media_pipeline_entity_iter_cleanup (struct media_pipeline_entity_iter *iter)h]j )}(hPvoid media_pipeline_entity_iter_cleanup(struct media_pipeline_entity_iter *iter)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(h"media_pipeline_entity_iter_cleanuph]j* )}(h"media_pipeline_entity_iter_cleanuph]h"media_pipeline_entity_iter_cleanup}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h)(struct media_pipeline_entity_iter *iter)h]j)}(h'struct media_pipeline_entity_iter *iterh](j )}(hj h]hstruct}(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubh)}(hhh]j* )}(hmedia_pipeline_entity_iterh]hmedia_pipeline_entity_iter}(hjKhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]j)}jjsb$c.media_pipeline_entity_iter_cleanupasbuh1hhj)ubj )}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj* )}(hiterh]hiter}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h"Destroy a pipeline entity iteratorh]h"Destroy a pipeline entity iterator}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_pipeline_entity_iter *iter`` The iterator **Description** This function must be called to destroy iterators initialized with media_pipeline_entity_iter_init().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]j )}(h9``struct media_pipeline_entity_iter *iter`` The iterator h](j )}(h+``struct media_pipeline_entity_iter *iter``h]j~)}(hjh]h'struct media_pipeline_entity_iter *iter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h The iteratorh]h The iterator}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj,h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(heThis function must be called to destroy iterators initialized with media_pipeline_entity_iter_init().h]heThis function must be called to destroy iterators initialized with media_pipeline_entity_iter_init().}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_pipeline_for_each_entity (C macro) c.media_pipeline_for_each_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_for_each_entityh]j )}(hmedia_pipeline_for_each_entityh]j$ )}(hmedia_pipeline_for_each_entityh]j* )}(hjkh]hmedia_pipeline_for_each_entity}(hjuhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjqubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjmhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjihhhjhMubah}(h]jdah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjfhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjfhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h7``media_pipeline_for_each_entity (pipe, iter, entity)``h]j~)}(hjh]h3media_pipeline_for_each_entity (pipe, iter, entity)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(h,Iterate on all entities in a media pipeline h]h)}(h+Iterate on all entities in a media pipelineh]h+Iterate on all entities in a media pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhj hhubj} )}(hX**Parameters** ``pipe`` The pipeline ``iter`` The iterator (struct media_pipeline_entity_iter) ``entity`` The iterator entity **Description** Iterate on all entities in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop(). The iterator must be initialized with media_pipeline_entity_iter_init() before iteration, and destroyed with media_pipeline_entity_iter_cleanup() after (including in code paths that break from the loop).h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h``pipe`` The pipeline h](j )}(h``pipe``h]j~)}(hjh]hpipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h The pipelineh]h The pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h:``iter`` The iterator (struct media_pipeline_entity_iter) h](j )}(h``iter``h]j~)}(hj4h]hiter}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj2ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj.ubj )}(hhh]h)}(h0The iterator (struct media_pipeline_entity_iter)h]h0The iterator (struct media_pipeline_entity_iter)}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjJubah}(h]h ]h"]h$]h&]uh1j hj.ubeh}(h]h ]h"]h$]h&]uh1j hjIhMhjubj )}(h``entity`` The iterator entity h](j )}(h ``entity``h]j~)}(hjmh]hentity}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjkubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjgubj )}(hhh]h)}(hThe iterator entityh]hThe iterator entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjgubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hXIterate on all entities in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop(). The iterator must be initialized with media_pipeline_entity_iter_init() before iteration, and destroyed with media_pipeline_entity_iter_cleanup() after (including in code paths that break from the loop).h]hXIterate on all entities in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop(). The iterator must be initialized with media_pipeline_entity_iter_init() before iteration, and destroyed with media_pipeline_entity_iter_cleanup() after (including in code paths that break from the loop).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 'media_pipeline_alloc_start (C function)c.media_pipeline_alloc_starthNtauh1j hj hhhNhNubj )}(hhh](j )}(h6int media_pipeline_alloc_start (struct media_pad *pad)h]j )}(h5int media_pipeline_alloc_start(struct media_pad *pad)h](jL)}(hinth]hint}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(hmedia_pipeline_alloc_starth]j* )}(hmedia_pipeline_alloc_starth]hmedia_pipeline_alloc_start}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(struct media_pad *pad)h]j)}(hstruct media_pad *padh](j )}(hj h]hstruct}(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubh)}(hhh]j* )}(h media_padh]h media_pad}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjJmodnameN classnameNjj)}j]j)}jjsbc.media_pipeline_alloc_startasbuh1hhj&ubj )}(h h]h }(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj)}(hjh]h*}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(hMark a pipeline as streamingh]hMark a pipeline as streaming}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX{**Parameters** ``struct media_pad *pad`` Starting pad **Description** media_pipeline_alloc_start() is similar to media_pipeline_start() but instead of working on a given pipeline the function will use an existing pipeline if the pad is already part of a pipeline, or allocate a new pipeline. Calls to media_pipeline_alloc_start() must be matched with media_pipeline_stop().h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]j )}(h'``struct media_pad *pad`` Starting pad h](j )}(h``struct media_pad *pad``h]j~)}(hjh]hstruct media_pad *pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj)h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hmedia_pipeline_alloc_start() is similar to media_pipeline_start() but instead of working on a given pipeline the function will use an existing pipeline if the pad is already part of a pipeline, or allocate a new pipeline.h]hmedia_pipeline_alloc_start() is similar to media_pipeline_start() but instead of working on a given pipeline the function will use an existing pipeline if the pad is already part of a pipeline, or allocate a new pipeline.}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hQCalls to media_pipeline_alloc_start() must be matched with media_pipeline_stop().h]hQCalls to media_pipeline_alloc_start() must be matched with media_pipeline_stop().}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j !media_devnode_create (C function)c.media_devnode_createhNtauh1j hj hhhNhNubj )}(hhh](j )}(hwstruct media_intf_devnode * media_devnode_create (struct media_device *mdev, u32 type, u32 flags, u32 major, u32 minor)h]j )}(hustruct media_intf_devnode *media_devnode_create(struct media_device *mdev, u32 type, u32 flags, u32 major, u32 minor)h](j )}(hj h]hstruct}(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyhhhjhMubh)}(hhh]j* )}(hmedia_intf_devnodeh]hmedia_intf_devnode}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_devnode_createsbc.media_devnode_createasbuh1hhjyhhhjhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhjhMubj$ )}(hmedia_devnode_createh]j* )}(hjh]hmedia_devnode_create}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjyhhhjhMubj)}(hF(struct media_device *mdev, u32 type, u32 flags, u32 major, u32 minor)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjubj )}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hmdevh]hmdev}(hjNhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu32 typeh](h)}(hhh]j* )}(hu32h]hu32}(hjjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjgubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjcubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjcubj* )}(htypeh]htype}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjcubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 majorh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hmajorh]hmajor}(hj&hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 minorh](h)}(hhh]j* )}(hu32h]hu32}(hjBhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhj;ubj )}(h h]h }(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj* )}(hminorh]hminor}(hjnhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjyhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjuhhhjhMubah}(h]jpah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjrhhubjV )}(hhh]h)}(h/creates and initializes a device node interfaceh]h/creates and initializes a device node interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hjrhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` ``u32 type`` type of the interface, as given by :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_T_*``) macros. ``u32 flags`` Interface flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_FL_*``) ``u32 major`` Device node major number. ``u32 minor`` Device node minor number. **Return** if succeeded, returns a pointer to the newly allocated :c:type:`media_intf_devnode` pointer. **Description** .. note:: Currently, no flags for :c:type:`media_interface` is defined.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hjh]hstruct media_device *mdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h``u32 type`` type of the interface, as given by :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_T_*``) macros. h](j )}(h ``u32 type``h]j~)}(hj1h]hu32 type}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj/ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj+ubj )}(hhh]h)}(hztype of the interface, as given by :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_T_*``) macros.h](h#type of the interface, as given by }(hjJhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjTh]hinclude/uapi/linux/media.h}(hjVhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjRubah}(h]h ]h"]h$]h&]refdocj refdomainj`reftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjJubh ( seek for }(hjJhhhNhNubj~)}(h``MEDIA_INTF_T_*``h]hMEDIA_INTF_T_*}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjJubh ) macros.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjrhMhjGubah}(h]h ]h"]h$]h&]uh1j hj+ubeh}(h]h ]h"]h$]h&]uh1j hjFhMhjubj )}(h~``u32 flags`` Interface flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_FL_*``) 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 hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(hoInterface flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_FL_*``)h](hInterface flags, as defined in }(hjhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjh]hinclude/uapi/linux/media.h}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh ( seek for }(hjhhhNhNubj~)}(h``MEDIA_INTF_FL_*``h]hMEDIA_INTF_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h(``u32 major`` Device node major number. h](j )}(h ``u32 major``h]j~)}(hjh]h u32 major}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh]h)}(hDevice node major number.h]hDevice node major number.}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hMhj'ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj&hMhjubj )}(h(``u32 minor`` Device node minor number. h](j )}(h ``u32 minor``h]j~)}(hjJh]h u32 minor}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjHubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjDubj )}(hhh]h)}(hDevice node minor number.h]hDevice node minor number.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hMhj`ubah}(h]h ]h"]h$]h&]uh1j hjDubeh}(h]h ]h"]h$]h&]uh1j hj_hMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h **Return**h]j)}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubh)}(h\if succeeded, returns a pointer to the newly allocated :c:type:`media_intf_devnode` pointer.h](h7if succeeded, returns a pointer to the newly allocated }(hjhhhNhNubh)}(h:c:type:`media_intf_devnode`h]j~)}(hjh]hmedia_intf_devnode}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_intf_devnodeuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubh pointer.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubj)}(h=Currently, no flags for :c:type:`media_interface` is defined.h]h)}(hjh](hCurrently, no flags for }(hjhhhNhNubh)}(h:c:type:`media_interface`h]j~)}(hjh]hmedia_interface}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh is defined.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j !media_devnode_remove (C function)c.media_devnode_removehNtauh1j hj hhhNhNubj )}(hhh](j )}(h>void media_devnode_remove (struct media_intf_devnode *devnode)h]j )}(h=void media_devnode_remove(struct media_intf_devnode *devnode)h](jL)}(hvoidh]hvoid}(hj@hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj<hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<hhhjNhMubj$ )}(hmedia_devnode_removeh]j* )}(hmedia_devnode_removeh]hmedia_devnode_remove}(hjahhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj]ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj<hhhjNhMubj)}(h$(struct media_intf_devnode *devnode)h]j)}(h"struct media_intf_devnode *devnodeh](j )}(hj h]hstruct}(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyubh)}(hhh]j* )}(hmedia_intf_devnodeh]hmedia_intf_devnode}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjcsbc.media_devnode_removeasbuh1hhjyubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyubj* )}(hdevnodeh]hdevnode}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhjNhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj8hhhjNhMubah}(h]j3ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjNhMhj5hhubjV )}(hhh]h)}(hremoves a device node interfaceh]hremoves a device node interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hj5hhhjNhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_intf_devnode *devnode`` pointer to :c:type:`media_intf_devnode` to be freed. **Description** When a device node interface is removed, all links to it are automatically removed.h](h)}(h**Parameters**h]j)}(hj"h]h Parameters}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]j )}(h\``struct media_intf_devnode *devnode`` pointer to :c:type:`media_intf_devnode` to be freed. h](j )}(h&``struct media_intf_devnode *devnode``h]j~)}(hjAh]h"struct media_intf_devnode *devnode}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj?ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj;ubj )}(hhh]h)}(h4pointer to :c:type:`media_intf_devnode` to be freed.h](h pointer to }(hjZhhhNhNubh)}(h:c:type:`media_intf_devnode`h]j~)}(hjdh]hmedia_intf_devnode}(hjfhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjbubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_intf_devnodeuh1hhjVhMhjZubh to be freed.}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjVhMhjWubah}(h]h ]h"]h$]h&]uh1j hj;ubeh}(h]h ]h"]h$]h&]uh1j hjVhMhj8ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hSWhen a device node interface is removed, all links to it are automatically removed.h]hSWhen a device node interface is removed, all links to it are automatically removed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_create_intf_link (C function)c.media_create_intf_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(hqstruct media_link * media_create_intf_link (struct media_entity *entity, struct media_interface *intf, u32 flags)h]j )}(hostruct media_link *media_create_intf_link(struct media_entity *entity, struct media_interface *intf, u32 flags)h](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM ubh)}(hhh]j* )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_create_intf_linksbc.media_create_intf_linkasbuh1hhjhhhjhM ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM ubj$ )}(hmedia_create_intf_linkh]j* )}(hj!h]hmedia_create_intf_link}(hjChhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhM ubj)}(hF(struct media_entity *entity, struct media_interface *intf, u32 flags)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj^hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZubj )}(h h]h }(hjkhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZubh)}(hhh]j* )}(h media_entityh]h media_entity}(hj|hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]jc.media_create_intf_linkasbuh1hhjZubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjZubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(hstruct media_interface *intfh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_interfaceh]hmedia_interface}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_create_intf_linkasbuh1hhjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hintfh]hintf}(hj%hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjAhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCmodnameN classnameNjj)}j]jc.media_create_intf_linkasbuh1hhj:ubj )}(h h]h }(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:ubj* )}(hflagsh]hflags}(hjmhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjVubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhM ubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM hjhhubjV )}(hhh]h)}(h1creates a link between an entity and an interfaceh]h1creates a link between an entity and an interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *entity`` pointer to ``media_entity`` ``struct media_interface *intf`` pointer to ``media_interface`` ``u32 flags`` Link flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``) **Description** Valid values for flags: ``MEDIA_LNK_FL_ENABLED`` Indicates that the interface is connected to the entity hardware. That's the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware. A typical example is an hybrid TV device that handle only one type of stream on a given time. So, when the digital TV is streaming, the V4L2 interfaces won't be enabled, as such device is not able to also stream analog TV or radio. .. note:: Before calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM$hjubj )}(hhh](j )}(h<``struct media_entity *entity`` pointer to ``media_entity`` h](j )}(h``struct media_entity *entity``h]j~)}(&hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM"hjubj )}(hhh]h)}(hpointer to ``media_entity``h](h pointer to }(hjhhhNhNubj~)}(h``media_entity``h]h media_entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubeh}(h]h ]h"]h$]h&]uh1hhjhM"hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM"hjubj )}(h@``struct media_interface *intf`` pointer to ``media_interface`` h](j )}(h ``struct media_interface *intf``h]j~)}(hjh]hstruct media_interface *intf}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM#hjubj )}(hhh]h)}(hpointer to ``media_interface``h](h pointer to }(hj8hhhNhNubj~)}(h``media_interface``h]hmedia_interface}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubeh}(h]h ]h"]h$]h&]uh1hhj4hM#hj5ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj4hM#hjubj )}(hx``u32 flags`` Link flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``) h](j )}(h ``u32 flags``h]j~)}(hjfh]h u32 flags}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjdubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM&hj`ubj )}(hhh]h)}(hiLink flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``)h](hLink flags, as defined in }(hjhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjh]hinclude/uapi/linux/media.h}(hjhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM$hjubh ( seek for }(hjhhhNhNubj~)}(h``MEDIA_LNK_FL_*``h]hMEDIA_LNK_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM$hj|ubah}(h]h ]h"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]uh1j hj{hM&hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM(hjubh)}(hValid values for flags:h]hValid values for flags:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM'hjubj )}(hhh]j )}(hX``MEDIA_LNK_FL_ENABLED`` Indicates that the interface is connected to the entity hardware. That's the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware. A typical example is an hybrid TV device that handle only one type of stream on a given time. So, when the digital TV is streaming, the V4L2 interfaces won't be enabled, as such device is not able to also stream analog TV or radio. h](j )}(h``MEDIA_LNK_FL_ENABLED``h]j~)}(hjh]hMEDIA_LNK_FL_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM2hjubj )}(hhh](h)}(hIndicates that the interface is connected to the entity hardware. That's the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware.h]hIndicates that the interface is connected to the entity hardware. That’s the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM*hjubh)}(hA typical example is an hybrid TV device that handle only one type of stream on a given time. So, when the digital TV is streaming, the V4L2 interfaces won't be enabled, as such device is not able to also stream analog TV or radio.h]hA typical example is an hybrid TV device that handle only one type of stream on a given time. So, when the digital TV is streaming, the V4L2 interfaces won’t be enabled, as such device is not able to also stream analog TV or radio.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM2hjubah}(h]h ]h"]h$]h&]uh1j hjubj)}(hBefore calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.h]h)}(hBefore calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.h]hBefore calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM6hjOubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %__media_remove_intf_link (C function)c.__media_remove_intf_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h7void __media_remove_intf_link (struct media_link *link)h]j )}(h6void __media_remove_intf_link(struct media_link *link)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMAubj$ )}(h__media_remove_intf_linkh]j* )}(h__media_remove_intf_linkh]h__media_remove_intf_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMAubj)}(h(struct media_link *link)h]j)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__media_remove_intf_linkasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMAubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMAubah}(h]j{ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMAhj}hhubjV )}(hhh]h)}(hremove a single interface linkh]hremove a single interface link}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjEhhubah}(h]h ]h"]h$]h&]uh1jU hj}hhhjhMAubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j`jx j`jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_link *link`` pointer to :c:type:`media_link`. **Description** .. note:: This is an unlocked version of media_remove_intf_link()h](h)}(h**Parameters**h]j)}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMEhjdubj )}(hhh]j )}(h=``struct media_link *link`` pointer to :c:type:`media_link`. h](j )}(h``struct media_link *link``h]j~)}(hjh]hstruct media_link *link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjubj )}(hhh]h)}(h pointer to :c:type:`media_link`.h](h pointer to }(hjhhhNhNubh)}(h:c:type:`media_link`h]j~)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjhMChjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMChjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMChjubah}(h]h ]h"]h$]h&]uh1j hjdubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMEhjdubj)}(h7This is an unlocked version of media_remove_intf_link()h]h)}(hjh]h7This is an unlocked version of media_remove_intf_link()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMDhjubah}(h]h ]h"]h$]h&]uh1jhjdubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_remove_intf_link (C function)c.media_remove_intf_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h5void media_remove_intf_link (struct media_link *link)h]j )}(h4void media_remove_intf_link(struct media_link *link)h](jL)}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj1hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMJubj )}(h h]h }(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1hhhjChMJubj$ )}(hmedia_remove_intf_linkh]j* )}(hmedia_remove_intf_linkh]hmedia_remove_intf_link}(hjVhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjRubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj1hhhjChMJubj)}(h(struct media_link *link)h]j)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnubh)}(hhh]j* )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjXsbc.media_remove_intf_linkasbuh1hhjnubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjnubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj* )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjubah}(h]h ]h"]h$]h&]hhuh1jhj1hhhjChMJubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj-hhhjChMJubah}(h]j(ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjChMJhj*hhubjV )}(hhh]h)}(hremove a single interface linkh]hremove a single interface link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMJhjhhubah}(h]h ]h"]h$]h&]uh1jU hj*hhhjChMJubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j jx j jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_link *link`` pointer to :c:type:`media_link`. **Description** .. note:: Prefer to use this one, instead of __media_remove_intf_link()h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMNhjubj )}(hhh]j )}(h=``struct media_link *link`` pointer to :c:type:`media_link`. h](j )}(h``struct media_link *link``h]j~)}(hj6h]hstruct media_link *link}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLhj0ubj )}(hhh]h)}(h pointer to :c:type:`media_link`.h](h pointer to }(hjOhhhNhNubh)}(h:c:type:`media_link`h]j~)}(hjYh]h media_link}(hj[hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjWubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjKhMLhjOubh.}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjKhMLhjLubah}(h]h ]h"]h$]h&]uh1j hj0ubeh}(h]h ]h"]h$]h&]uh1j hjKhMLhj-ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMNhjubj)}(h=Prefer to use this one, instead of __media_remove_intf_link()h]h)}(hjh]h=Prefer to use this one, instead of __media_remove_intf_link()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &__media_remove_intf_links (C function)c.__media_remove_intf_linkshNtauh1j hj hhhNhNubj )}(hhh](j )}(h=void __media_remove_intf_links (struct media_interface *intf)h]j )}(hCalls a struct media_entity_operations operation on an entity h]h)}(h=Calls a struct media_entity_operations operation on an entityh]h=Calls a struct media_entity_operations operation on an entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjhjubah}(h]h ]h"]h$]h&]uh1jhjhMjhj hhubj} )}(hX**Parameters** ``entity`` entity where the **operation** will be called ``operation`` type of the operation. Should be the name of a member of struct :c:type:`media_entity_operations`. ``args...`` variable arguments **Description** This helper function will check if **operation** is not ``NULL``. On such case, it will issue a call to **operation**\(**entity**, **args**\).h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMnhjubj )}(hhh](j )}(h9``entity`` entity where the **operation** will be called h](j )}(h ``entity``h]j~)}(hjh]hentity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMmhjubj )}(hhh]h)}(h-entity where the **operation** will be calledh](hentity where the }(hjhhhNhNubj)}(h **operation**h]h operation}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh will be called}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMmhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMmhjubj )}(hq``operation`` type of the operation. Should be the name of a member of struct :c:type:`media_entity_operations`. h](j )}(h ``operation``h]j~)}(hj5h]h operation}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMohj/ubj )}(hhh]h)}(hbtype of the operation. Should be the name of a member of struct :c:type:`media_entity_operations`.h](h@type of the operation. Should be the name of a member of struct }(hjNhhhNhNubh)}(h!:c:type:`media_entity_operations`h]j~)}(hjXh]hmedia_entity_operations}(hjZhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjVubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_entity_operationsuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMnhjNubh.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjuhMnhjKubah}(h]h ]h"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]uh1j hjJhMohjubj )}(h``args...`` variable arguments h](j )}(h ``args...``h]j~)}(hjh]hargs...}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjubj )}(hhh]h)}(hvariable argumentsh]hvariable arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjubh)}(hThis helper function will check if **operation** is not ``NULL``. On such case, it will issue a call to **operation**\(**entity**, **args**\).h](h#This helper function will check if }(hjhhhNhNubj)}(h **operation**h]h operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is not }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh(. On such case, it will issue a call to }(hjhhhNhNubj)}(h **operation**h]h operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(}(hjhhhNhNubj)}(h **entity**h]hentity}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh, }(hjhhhNhNubj)}(h**args**h]hargs}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMphjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_create_ancillary_link (C function)c.media_create_ancillary_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(hnstruct media_link * media_create_ancillary_link (struct media_entity *primary, struct media_entity *ancillary)h]j )}(hlstruct media_link *media_create_ancillary_link(struct media_entity *primary, struct media_entity *ancillary)h](j )}(hj h]hstruct}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhhjyhMzubh)}(hhh]j* )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_create_ancillary_linksbc.media_create_ancillary_linkasbuh1hhjhhhhjyhMzubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhhjyhMzubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhjyhMzubj$ )}(hmedia_create_ancillary_linkh]j* )}(hjh]hmedia_create_ancillary_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhhjyhMzubj)}(h>(struct media_entity *primary, struct media_entity *ancillary)h](j)}(hstruct media_entity *primaryh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_create_ancillary_linkasbuh1hhjubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hprimaryh]hprimary}(hj=hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *ancillaryh](j )}(hj h]hstruct}(hjVhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubj )}(h h]h }(hjchhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjthhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNjj)}j]jc.media_create_ancillary_linkasbuh1hhjRubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjRubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjRubj* )}(h ancillaryh]h ancillary}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjRubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhhjyhMzubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjdhhhjyhMzubah}(h]j_ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjyhMzhjahhubjV )}(hhh]h)}(hHcreate an ancillary link between two instances of :c:type:`media_entity`h](h2create an ancillary link between two instances of }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jc.media_create_ancillary_linkasbj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzhjhhubah}(h]h ]h"]h$]h&]uh1jU hjahhhjyhMzubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *primary`` pointer to the primary :c:type:`media_entity` ``struct media_entity *ancillary`` pointer to the ancillary :c:type:`media_entity` **Description** Create an ancillary link between two entities, indicating that they represent two connected pieces of hardware that form a single logical unit. A typical example is a camera lens controller being linked to the sensor that it is supporting. The function sets both MEDIA_LNK_FL_ENABLED and MEDIA_LNK_FL_IMMUTABLE for the new link.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM~hjubj )}(hhh](j )}(hO``struct media_entity *primary`` pointer to the primary :c:type:`media_entity` h](j )}(h ``struct media_entity *primary``h]j~)}(hj=h]hstruct media_entity *primary}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj;ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hj7ubj )}(hhh]h)}(h-pointer to the primary :c:type:`media_entity`h](hpointer to the primary }(hjVhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hj`h]h media_entity}(hjbhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj^ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjRhM}hjVubeh}(h]h ]h"]h$]h&]uh1hhjRhM}hjSubah}(h]h ]h"]h$]h&]uh1j hj7ubeh}(h]h ]h"]h$]h&]uh1j hjRhM}hj4ubj )}(hS``struct media_entity *ancillary`` pointer to the ancillary :c:type:`media_entity` h](j )}(h"``struct media_entity *ancillary``h]j~)}(hjh]hstruct media_entity *ancillary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM~hjubj )}(hhh]h)}(h/pointer to the ancillary :c:type:`media_entity`h](hpointer to the ancillary }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjhM~hjubeh}(h]h ]h"]h$]h&]uh1hhjhM~hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM~hj4ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hCreate an ancillary link between two entities, indicating that they represent two connected pieces of hardware that form a single logical unit. A typical example is a camera lens controller being linked to the sensor that it is supporting.h]hCreate an ancillary link between two entities, indicating that they represent two connected pieces of hardware that form a single logical unit. A typical example is a camera lens controller being linked to the sensor that it is supporting.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hXThe function sets both MEDIA_LNK_FL_ENABLED and MEDIA_LNK_FL_IMMUTABLE for the new link.h]hXThe function sets both MEDIA_LNK_FL_ENABLED and MEDIA_LNK_FL_IMMUTABLE for the new link.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %__media_entity_next_link (C function)c.__media_entity_next_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h|struct media_link * __media_entity_next_link (struct media_entity *entity, struct media_link *link, unsigned long link_type)h]j )}(hzstruct media_link *__media_entity_next_link(struct media_entity *entity, struct media_link *link, unsigned long link_type)h](j )}(hj h]hstruct}(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?hhhjPhMubh)}(hhh]j* )}(h media_linkh]h media_link}(hjbhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]j)}j__media_entity_next_linksbc.__media_entity_next_linkasbuh1hhj?hhhjPhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?hhhjPhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?hhhjPhMubj$ )}(h__media_entity_next_linkh]j* )}(hjh]h__media_entity_next_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj?hhhjPhMubj)}(hO(struct media_entity *entity, struct media_link *link, unsigned long link_type)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j~c.__media_entity_next_linkasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj )}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubh)}(hhh]j* )}(h media_linkh]h media_link}(hjKhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjHubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjMmodnameN classnameNjj)}j]j~c.__media_entity_next_linkasbuh1hhj)ubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj)}(hjh]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj* )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned long link_typeh](jL)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubjL)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(h link_typeh]h link_type}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj?hhhjPhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj;hhhjPhMubah}(h]j6ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjPhMhj8hhubjV )}(hhh]h)}(h0Iterate through a :c:type:`media_entity`'s linksh](hIterate through a }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hj h]h media_entity}(hj hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j~c.__media_entity_next_linkasbj media_entityuh1hhjhKhjubh ’s links}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hj8hhhjPhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j?jx j?jy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_entity *entity`` pointer to the :c:type:`media_entity` ``struct media_link *link`` pointer to a :c:type:`media_link` to hold the iterated values ``unsigned long link_type`` one of the MEDIA_LNK_FL_LINK_TYPE flags **Description** Return the next link against an entity matching a specific link type. This allows iteration through an entity's links whilst guaranteeing all of the returned links are of the given type.h](h)}(h**Parameters**h]j)}(hjIh]h Parameters}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjCubj )}(hhh](j )}(hF``struct media_entity *entity`` pointer to the :c:type:`media_entity` h](j )}(h``struct media_entity *entity``h]j~)}(hjhh]hstruct media_entity *entity}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjfubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjbubj )}(hhh]h)}(h%pointer to the :c:type:`media_entity`h](hpointer to the }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj}hMhjubeh}(h]h ]h"]h$]h&]uh1hhj}hMhj~ubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hj}hMhj_ubj )}(hZ``struct media_link *link`` pointer to a :c:type:`media_link` to hold the iterated values h](j )}(h``struct media_link *link``h]j~)}(hjh]hstruct media_link *link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h=pointer to a :c:type:`media_link` to hold the iterated valuesh](h pointer to a }(hjhhhNhNubh)}(h:c:type:`media_link`h]j~)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjhMhjubh to hold the iterated values}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj_ubj )}(hD``unsigned long link_type`` one of the MEDIA_LNK_FL_LINK_TYPE flags h](j )}(h``unsigned long link_type``h]j~)}(hjh]hunsigned long link_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h'one of the MEDIA_LNK_FL_LINK_TYPE flagsh]h'one of the MEDIA_LNK_FL_LINK_TYPE flags}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1hMhj2ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj1hMhj_ubeh}(h]h ]h"]h$]h&]uh1j hjCubh)}(h**Description**h]j)}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjCubh)}(hReturn the next link against an entity matching a specific link type. This allows iteration through an entity's links whilst guaranteeing all of the returned links are of the given type.h]hReturn the next link against an entity matching a specific link type. This allows iteration through an entity’s links whilst guaranteeing all of the returned links are of the given type.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjCubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j )for_each_media_entity_data_link (C macro)!c.for_each_media_entity_data_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(hfor_each_media_entity_data_linkh]j )}(hfor_each_media_entity_data_linkh]j$ )}(hfor_each_media_entity_data_linkh]j* )}(hjh]hfor_each_media_entity_data_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h2``for_each_media_entity_data_link (entity, link)``h]j~)}(hjh]h.for_each_media_entity_data_link (entity, link)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(h'Iterate through an entity's data links h]h)}(h&Iterate through an entity's data linksh]h(Iterate through an entity’s data links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhj hhubj} )}(h**Parameters** ``entity`` pointer to the :c:type:`media_entity` ``link`` pointer to a :c:type:`media_link` to hold the iterated values **Description** Iterate over a :c:type:`media_entity`'s data linksh](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h1``entity`` pointer to the :c:type:`media_entity` h](j )}(h ``entity``h]j~)}(hj&h]hentity}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj$ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj )}(hhh]h)}(h%pointer to the :c:type:`media_entity`h](hpointer to the }(hj?hhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjIh]h media_entity}(hjKhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjGubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj;hMhj?ubeh}(h]h ]h"]h$]h&]uh1hhj;hMhj<ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj;hMhjubj )}(hG``link`` pointer to a :c:type:`media_link` to hold the iterated values h](j )}(h``link``h]j~)}(hj~h]hlink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj|ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjxubj )}(hhh]h)}(h=pointer to a :c:type:`media_link` to hold the iterated valuesh](h pointer to a }(hjhhhNhNubh)}(h:c:type:`media_link`h]j~)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjhMhjubh to hold the iterated values}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjxubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(h2Iterate over a :c:type:`media_entity`'s data linksh](hIterate over a }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh’s data links}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request_state (C enum)c.media_request_statehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_request_stateh]j )}(henum media_request_stateh](j )}(hjSIh]henum}(hjDhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj )}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj@hhhjQhKubj$ )}(hmedia_request_stateh]j* )}(hj>h]hmedia_request_state}(hjdhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj`ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj@hhhjQhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj<hhhjQhKubah}(h]j7ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjQhKhj9hhubjV )}(hhh]h)}(hmedia request stateh]hmedia request state}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jU hj9hhhjQhKubeh}(h]h ](jenumeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX5**Constants** ``MEDIA_REQUEST_STATE_IDLE`` Idle ``MEDIA_REQUEST_STATE_VALIDATING`` Validating the request, no state changes allowed ``MEDIA_REQUEST_STATE_QUEUED`` Queued ``MEDIA_REQUEST_STATE_COMPLETE`` Completed, the request is done ``MEDIA_REQUEST_STATE_CLEANING`` Cleaning, the request is being re-inited ``MEDIA_REQUEST_STATE_UPDATING`` The request is being updated, i.e. request objects are being added, modified or removed ``NR_OF_MEDIA_REQUEST_STATE`` The number of media request states, used internally for sanity check purposesh](h)}(h **Constants**h]j)}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh](j )}(h"``MEDIA_REQUEST_STATE_IDLE`` Idle h](j )}(h``MEDIA_REQUEST_STATE_IDLE``h]j~)}(hjh]hMEDIA_REQUEST_STATE_IDLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]h)}(hIdleh]hIdle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj )}(hT``MEDIA_REQUEST_STATE_VALIDATING`` Validating the request, no state changes allowed h](j )}(h"``MEDIA_REQUEST_STATE_VALIDATING``h]j~)}(hjh]hMEDIA_REQUEST_STATE_VALIDATING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK"hjubj )}(hhh]h)}(h0Validating the request, no state changes allowedh]h0Validating the request, no state changes allowed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK!hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK"hjubj )}(h&``MEDIA_REQUEST_STATE_QUEUED`` Queued h](j )}(h``MEDIA_REQUEST_STATE_QUEUED``h]j~)}(hj:h]hMEDIA_REQUEST_STATE_QUEUED}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK%hj4ubj )}(hhh]h)}(hQueuedh]hQueued}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhK%hjPubah}(h]h ]h"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]uh1j hjOhK%hjubj )}(h@``MEDIA_REQUEST_STATE_COMPLETE`` Completed, the request is done h](j )}(h ``MEDIA_REQUEST_STATE_COMPLETE``h]j~)}(hjsh]hMEDIA_REQUEST_STATE_COMPLETE}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjqubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK(hjmubj )}(hhh]h)}(hCompleted, the request is doneh]hCompleted, the request is done}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK(hjubah}(h]h ]h"]h$]h&]uh1j hjmubeh}(h]h ]h"]h$]h&]uh1j hjhK(hjubj )}(hJ``MEDIA_REQUEST_STATE_CLEANING`` Cleaning, the request is being re-inited h](j )}(h ``MEDIA_REQUEST_STATE_CLEANING``h]j~)}(hjh]hMEDIA_REQUEST_STATE_CLEANING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK+hjubj )}(hhh]h)}(h(Cleaning, the request is being re-initedh]h(Cleaning, the request is being re-inited}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK+hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK+hjubj )}(hy``MEDIA_REQUEST_STATE_UPDATING`` The request is being updated, i.e. request objects are being added, modified or removed h](j )}(h ``MEDIA_REQUEST_STATE_UPDATING``h]j~)}(hjh]hMEDIA_REQUEST_STATE_UPDATING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK0hjubj )}(hhh]h)}(hWThe request is being updated, i.e. request objects are being added, modified or removedh]hWThe request is being updated, i.e. request objects are being added, modified or removed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK.hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK0hjubj )}(hk``NR_OF_MEDIA_REQUEST_STATE`` The number of media request states, used internally for sanity check purposesh](j )}(h``NR_OF_MEDIA_REQUEST_STATE``h]j~)}(hjh]hNR_OF_MEDIA_REQUEST_STATE}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK3hjubj )}(hhh]h)}(hMThe number of media request states, used internally for sanity check purposesh]hMThe number of media request states, used internally for sanity check purposes}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hK3hj5ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj4hK3hjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request (C struct)c.media_requesthNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_requesth]j )}(hstruct media_requesth](j )}(hj h]hstruct}(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjthhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK9ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjthhhjhK9ubj$ )}(h media_requesth]j* )}(hjrh]h media_request}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjthhhjhK9ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjphhhjhK9ubah}(h]jkah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhK9hjmhhubjV )}(hhh]h)}(hMedia device requesth]hMedia device request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK2hjhhubah}(h]h ]h"]h$]h&]uh1jU hjmhhhjhK9ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_request { struct media_device *mdev; struct kref kref; char debug_str[TASK_COMM_LEN + 11]; enum media_request_state state; unsigned int updating_count; unsigned int access_count; struct list_head objects; unsigned int num_incomplete_objects; bool manual_completion; wait_queue_head_t poll_wait; spinlock_t lock; }; **Members** ``mdev`` Media device this request belongs to ``kref`` Reference count ``debug_str`` Prefix for debug messages (process name:fd) ``state`` The state of the request ``updating_count`` count the number of request updates that are in progress ``access_count`` count the number of request accesses that are in progress ``objects`` List of **struct** media_request_object request objects ``num_incomplete_objects`` The number of incomplete objects in the request ``manual_completion`` if true, then the request won't be marked as completed when **num_incomplete_objects** reaches 0. Call media_request_manual_complete() to complete the request after **num_incomplete_objects** == 0. ``poll_wait`` Wait queue for poll ``lock`` Serializes access to this structh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK6hjubj)}(hXsstruct media_request { struct media_device *mdev; struct kref kref; char debug_str[TASK_COMM_LEN + 11]; enum media_request_state state; unsigned int updating_count; unsigned int access_count; struct list_head objects; unsigned int num_incomplete_objects; bool manual_completion; wait_queue_head_t poll_wait; spinlock_t lock; };h]hXsstruct media_request { struct media_device *mdev; struct kref kref; char debug_str[TASK_COMM_LEN + 11]; enum media_request_state state; unsigned int updating_count; unsigned int access_count; struct list_head objects; unsigned int num_incomplete_objects; bool manual_completion; wait_queue_head_t poll_wait; spinlock_t lock; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK8hjubh)}(h **Members**h]j)}(hjh]hMembers}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKFhjubj )}(hhh](j )}(h.``mdev`` Media device this request belongs to h](j )}(h``mdev``h]j~)}(hj'h]hmdev}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj%ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK4hj!ubj )}(hhh]h)}(h$Media device this request belongs toh]h$Media device this request belongs to}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hK4hj=ubah}(h]h ]h"]h$]h&]uh1j hj!ubeh}(h]h ]h"]h$]h&]uh1j hj<hK4hjubj )}(h``kref`` Reference count h](j )}(h``kref``h]j~)}(hj`h]hkref}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj^ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK5hjZubj )}(hhh]h)}(hReference counth]hReference count}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhK5hjvubah}(h]h ]h"]h$]h&]uh1j hjZubeh}(h]h ]h"]h$]h&]uh1j hjuhK5hjubj )}(h:``debug_str`` Prefix for debug messages (process name:fd) h](j )}(h ``debug_str``h]j~)}(hjh]h debug_str}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK6hjubj )}(hhh]h)}(h+Prefix for debug messages (process name:fd)h]h+Prefix for debug messages (process name:fd)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK6hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK6hjubj )}(h#``state`` The state of the request h](j )}(h ``state``h]j~)}(hjh]hstate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK7hjubj )}(hhh]h)}(hThe state of the requesth]hThe state of the request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK7hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK7hjubj )}(hL``updating_count`` count the number of request updates that are in progress h](j )}(h``updating_count``h]j~)}(hj h]hupdating_count}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK8hjubj )}(hhh]h)}(h8count the number of request updates that are in progressh]h8count the number of request updates that are in progress}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hK8hj!ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hK8hjubj )}(hK``access_count`` count the number of request accesses that are in progress h](j )}(h``access_count``h]j~)}(hjDh]h access_count}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK9hj>ubj )}(hhh]h)}(h9count the number of request accesses that are in progressh]h9count the number of request accesses that are in progress}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhK9hjZubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hjYhK9hjubj )}(hD``objects`` List of **struct** media_request_object request objects h](j )}(h ``objects``h]j~)}(hj}h]hobjects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj{ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK:hjwubj )}(hhh]h)}(h7List of **struct** media_request_object request objectsh](hList of }(hjhhhNhNubj)}(h **struct**h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh% media_request_object request objects}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK:hjubah}(h]h ]h"]h$]h&]uh1j hjwubeh}(h]h ]h"]h$]h&]uh1j hjhK:hjubj )}(hK``num_incomplete_objects`` The number of incomplete objects in the request h](j )}(h``num_incomplete_objects``h]j~)}(hjh]hnum_incomplete_objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK;hjubj )}(hhh]h)}(h/The number of incomplete objects in the requesth]h/The number of incomplete objects in the request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK;hjubj )}(h``manual_completion`` if true, then the request won't be marked as completed when **num_incomplete_objects** reaches 0. Call media_request_manual_complete() to complete the request after **num_incomplete_objects** == 0. h](j )}(h``manual_completion``h]j~)}(hjh]hmanual_completion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK>hjubj )}(hhh]h)}(hif true, then the request won't be marked as completed when **num_incomplete_objects** reaches 0. Call media_request_manual_complete() to complete the request after **num_incomplete_objects** == 0.h](h>if true, then the request won’t be marked as completed when }(hjhhhNhNubj)}(h**num_incomplete_objects**h]hnum_incomplete_objects}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhO reaches 0. Call media_request_manual_complete() to complete the request after }(hjhhhNhNubj)}(h**num_incomplete_objects**h]hnum_incomplete_objects}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh == 0.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(h"``poll_wait`` Wait queue for poll h](j )}(h ``poll_wait``h]j~)}(hj_h]h poll_wait}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj]ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK?hjYubj )}(hhh]h)}(hWait queue for pollh]hWait queue for poll}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthK?hjuubah}(h]h ]h"]h$]h&]uh1j hjYubeh}(h]h ]h"]h$]h&]uh1j hjthK?hjubj )}(h)``lock`` Serializes access to this structh](j )}(h``lock``h]j~)}(hjh]hlock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK?hjubj )}(hhh]h)}(h Serializes access to this structh]h Serializes access to this struct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK@hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK?hjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j *media_request_lock_for_access (C function)c.media_request_lock_for_accesshNtauh1j hj hhhNhNubj )}(hhh](j )}(h=int media_request_lock_for_access (struct media_request *req)h]j )}(hhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj:hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj )}(h h]h }(hjMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj:hhhjLhKubj$ )}(hmedia_request_geth]j* )}(hmedia_request_geth]hmedia_request_get}(hj_hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj[ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj:hhhjLhKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubh)}(hhh]j* )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjasbc.media_request_getasbuh1hhjwubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjwubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj* )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjsubah}(h]h ]h"]h$]h&]hhuh1jhj:hhhjLhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj6hhhjLhKubah}(h]j1ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjLhKhj3hhubjV )}(hhh]h)}(hGet the media requesth]hGet the media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jU hj3hhhjLhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hj**Parameters** ``struct media_request *req`` The media request **Description** Get the media request.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j~)}(hj?h]hstruct media_request *req}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj9ubj )}(hhh]h)}(hThe media requesth]hThe media request}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKhjUubah}(h]h ]h"]h$]h&]uh1j hj9ubeh}(h]h ]h"]h$]h&]uh1j hjThKhj6ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjzh]h Description}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hGet the media request.h]hGet the media request.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request_put (C function)c.media_request_puthNtauh1j hj hhhNhNubj )}(hhh](j )}(h2void media_request_put (struct media_request *req)h]j )}(h1void media_request_put(struct media_request *req)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKubj$ )}(hmedia_request_puth]j* )}(hmedia_request_puth]hmedia_request_put}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_request_putasbuh1hhjubj )}(h h]h }(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hreqh]hreq}(hjUhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhKubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhKhjhhubjV )}(hhh]h)}(hPut the media requesth]hPut the media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj|hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_request *req`` The media request **Description** Put the media request. The media request will be released when the refcount reaches 0.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j~)}(hjh]hstruct media_request *req}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hVPut the media request. The media request will be released when the refcount reaches 0.h]hVPut the media request. The media request will be released when the refcount reaches 0.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j $media_request_get_by_fd (C function)c.media_request_get_by_fdhNtauh1j hj hhhNhNubj )}(hhh](j )}(hZstruct media_request * media_request_get_by_fd (struct media_device *mdev, int request_fd)h]j )}(hXstruct media_request *media_request_get_by_fd(struct media_device *mdev, int request_fd)h](j )}(hj h]hstruct}(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj )}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<hhhjMhKubh)}(hhh]j* )}(h media_requesth]h media_request}(hj_hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j)}jmedia_request_get_by_fdsbc.media_request_get_by_fdasbuh1hhj<hhhjMhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<hhhjMhKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhjMhKubj$ )}(hmedia_request_get_by_fdh]j* )}(hj}h]hmedia_request_get_by_fd}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj<hhhjMhKubj)}(h+(struct media_device *mdev, int request_fd)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j{c.media_request_get_by_fdasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint request_fdh](jL)}(hinth]hint}(hj*hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj&ubj )}(h h]h }(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj* )}(h request_fdh]h request_fd}(hjFhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj<hhhjMhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj8hhhjMhKubah}(h]j3ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjMhKhj5hhubjV )}(hhh]h)}(hGet a media request by fdh]hGet a media request by fd}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjmhhubah}(h]h ]h"]h$]h&]uh1jU hj5hhhjMhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_device *mdev`` Media device this request belongs to ``int request_fd`` The file descriptor of the request **Description** Get the request represented by **request_fd** that is owned by the media device. Return a -EBADR error pointer if requests are not supported by this driver. Return -EINVAL if the request was not found. Return the pointer to the request if found: the caller will have to call **media_request_put** when it finished using the request.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh](j )}(hC``struct media_device *mdev`` Media device this request belongs to h](j )}(h``struct media_device *mdev``h]j~)}(hjh]hstruct media_device *mdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]h)}(h$Media device this request belongs toh]h$Media device this request belongs to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj )}(h6``int request_fd`` The file descriptor of the request h](j )}(h``int request_fd``h]j~)}(hjh]hint request_fd}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]h)}(h"The file descriptor of the requesth]h"The file descriptor of the request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj% h]h Description}(hj' hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj# ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hPGet the request represented by **request_fd** that is owned by the media device.h](hGet the request represented by }(hj; hhhNhNubj)}(h**request_fd**h]h request_fd}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj; ubh# that is owned by the media device.}(hj; hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hReturn a -EBADR error pointer if requests are not supported by this driver. Return -EINVAL if the request was not found. Return the pointer to the request if found: the caller will have to call **media_request_put** when it finished using the request.h](hReturn a -EBADR error pointer if requests are not supported by this driver. Return -EINVAL if the request was not found. Return the pointer to the request if found: the caller will have to call }(hj\ hhhNhNubj)}(h**media_request_put**h]hmedia_request_put}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ ubh$ when it finished using the request.}(hj\ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request_alloc (C function)c.media_request_allochNtauh1j hj hhhNhNubj )}(hhh](j )}(hBint media_request_alloc (struct media_device *mdev, int *alloc_fd)h]j )}(hAint media_request_alloc(struct media_device *mdev, int *alloc_fd)h](jL)}(hinth]hint}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhj hKubj$ )}(hmedia_request_alloch]j* )}(hmedia_request_alloch]hmedia_request_alloc}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj hhhj hKubj)}(h*(struct media_device *mdev, int *alloc_fd)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.media_request_allocasbuh1hhj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj)}(hjh]h*}(hj& hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj* )}(hmdevh]hmdev}(hj3 hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h int *alloc_fdh](jL)}(hinth]hint}(hjL hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjH ubj )}(h h]h }(hjZ hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjH ubj)}(hjh]h*}(hjh hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjH ubj* )}(halloc_fdh]halloc_fd}(hju hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjH ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj hhhj hKubah}(h]j ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj hKhj hhubjV )}(hhh]h)}(hAllocate the media requesth]hAllocate the media request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jU hj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j jx j jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_device *mdev`` Media device this request belongs to ``int *alloc_fd`` Store the request's file descriptor in this int **Description** Allocated the media request and put the fd in **alloc_fd**.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj )}(hhh](j )}(hC``struct media_device *mdev`` Media device this request belongs to h](j )}(h``struct media_device *mdev``h]j~)}(hj h]hstruct media_device *mdev}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj )}(hhh]h)}(h$Media device this request belongs toh]h$Media device this request belongs to}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj )}(hB``int *alloc_fd`` Store the request's file descriptor in this int h](j )}(h``int *alloc_fd``h]j~)}(hj h]h int *alloc_fd}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj )}(hhh]h)}(h/Store the request's file descriptor in this inth]h1Store the request’s file descriptor in this int}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj. hKhj/ ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj. hKhj ubeh}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j)}(hjT h]h Description}(hjV hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjR ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubh)}(h;Allocated the media request and put the fd in **alloc_fd**.h](h.Allocated the media request and put the fd in }(hjj hhhNhNubj)}(h **alloc_fd**h]halloc_fd}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj ubh.}(hjj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 1media_request_mark_manual_completion (C function)&c.media_request_mark_manual_completionhNtauh1j hj hhhNhNubj )}(hhh](j )}(hEvoid media_request_mark_manual_completion (struct media_request *req)h]j )}(hDvoid media_request_mark_manual_completion(struct media_request *req)h](jL)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhj hKubj$ )}(h$media_request_mark_manual_completionh]j* )}(h$media_request_mark_manual_completionh]h$media_request_mark_manual_completion}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj hhhj hKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j* )}(h media_requesth]h media_request}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sb&c.media_request_mark_manual_completionasbuh1hhj ubj )}(h h]h }(hj& hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj)}(hjh]h*}(hj4 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj* )}(hreqh]hreq}(hjA hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj hhhj hKubah}(h]j ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj hKhj hhubjV )}(hhh]h)}(hEnable manual completionh]hEnable manual completion}(hjk hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjh hhubah}(h]h ]h"]h$]h&]uh1jU hj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j jx j jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_request *req`` The request **Description** Mark that the request has to be manually completed by calling media_request_manual_complete(). This function shall be called in the req_queue callback.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj )}(hhh]j )}(h*``struct media_request *req`` The request h](j )}(h``struct media_request *req``h]j~)}(hj h]hstruct media_request *req}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj )}(hhh]h)}(h The requesth]h The request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j)}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubh)}(h^Mark that the request has to be manually completed by calling media_request_manual_complete().h]h^Mark that the request has to be manually completed by calling media_request_manual_complete().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubh)}(h8This function shall be called in the req_queue callback.h]h8This function shall be called in the req_queue callback.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j *media_request_manual_complete (C function)c.media_request_manual_completehNtauh1j hj hhhNhNubj )}(hhh](j )}(h>void media_request_manual_complete (struct media_request *req)h]j )}(h=void media_request_manual_complete(struct media_request *req)h](jL)}(hvoidh]hvoid}(hj; hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj7 hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj )}(h h]h }(hjJ hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7 hhhjI hKubj$ )}(hmedia_request_manual_completeh]j* )}(hmedia_request_manual_completeh]hmedia_request_manual_complete}(hj\ hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjX ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj7 hhhjI hKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjx hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjt ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjt ubh)}(hhh]j* )}(h media_requesth]h media_request}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj^ sbc.media_request_manual_completeasbuh1hhjt ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjt ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjt ubj* )}(hreqh]hreq}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjt ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjp ubah}(h]h ]h"]h$]h&]hhuh1jhj7 hhhjI hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj3 hhhjI hKubah}(h]j. ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjI hKhj0 hhubjV )}(hhh]h)}(hMark the request as completedh]hMark the request as completed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj hhubah}(h]h ]h"]h$]h&]uh1jU hj0 hhhjI hKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_request *req`` The request **Description** This function completes a request that was marked for manual completion by an earlier call to media_request_mark_manual_completion(). The request's **manual_completion** field is reset to false. All objects contained in the request must have been completed previously. It is an error to call this function otherwise. If such an error occurred, the function will WARN and the object completion will be delayed until **num_incomplete_objects** is 0.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]j )}(h*``struct media_request *req`` The request h](j )}(h``struct media_request *req``h]j~)}(hj<h]hstruct media_request *req}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj6ubj )}(hhh]h)}(h The requesth]h The request}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKhjRubah}(h]h ]h"]h$]h&]uh1j hj6ubeh}(h]h ]h"]h$]h&]uh1j hjQhKhj3ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjwh]h Description}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hThis function completes a request that was marked for manual completion by an earlier call to media_request_mark_manual_completion(). The request's **manual_completion** field is reset to false.h](hThis function completes a request that was marked for manual completion by an earlier call to media_request_mark_manual_completion(). The request’s }(hjhhhNhNubj)}(h**manual_completion**h]hmanual_completion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh field is reset to false.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hAll objects contained in the request must have been completed previously. It is an error to call this function otherwise. If such an error occurred, the function will WARN and the object completion will be delayed until **num_incomplete_objects** is 0.h](hAll objects contained in the request must have been completed previously. It is an error to call this function otherwise. If such an error occurred, the function will WARN and the object completion will be delayed until }(hjhhhNhNubj)}(h**num_incomplete_objects**h]hnum_incomplete_objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh is 0.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_request_object_ops (C struct)c.media_request_object_opshNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_request_object_opsh]j )}(hstruct media_request_object_opsh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj$ )}(hmedia_request_object_opsh]j* )}(hjh]hmedia_request_object_ops}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(hMedia request object operationsh]hMedia request object operations}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj.hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]jv jjw jIjx jIjy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_request_object_ops { int (*prepare)(struct media_request_object *object); void (*unprepare)(struct media_request_object *object); void (*queue)(struct media_request_object *object); void (*unbind)(struct media_request_object *object); void (*release)(struct media_request_object *object); }; **Members** ``prepare`` Validate and prepare the request object, optional. ``unprepare`` Unprepare the request object, optional. ``queue`` Queue the request object, optional. ``unbind`` Unbind the request object, optional. ``release`` Release the request object, required.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubh:}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjMubj)}(hXDstruct media_request_object_ops { int (*prepare)(struct media_request_object *object); void (*unprepare)(struct media_request_object *object); void (*queue)(struct media_request_object *object); void (*unbind)(struct media_request_object *object); void (*release)(struct media_request_object *object); };h]hXDstruct media_request_object_ops { int (*prepare)(struct media_request_object *object); void (*unprepare)(struct media_request_object *object); void (*queue)(struct media_request_object *object); void (*unbind)(struct media_request_object *object); void (*release)(struct media_request_object *object); };}hjnsbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjMubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM"hjMubj )}(hhh](j )}(h?``prepare`` Validate and prepare the request object, optional. h](j )}(h ``prepare``h]j~)}(hjh]hprepare}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubj )}(hhh]h)}(h2Validate and prepare the request object, optional.h]h2Validate and prepare the request object, optional.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h6``unprepare`` Unprepare the request object, optional. h](j )}(h ``unprepare``h]j~)}(hjh]h unprepare}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubj )}(hhh]h)}(h'Unprepare the request object, optional.h]h'Unprepare the request object, optional.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h.``queue`` Queue the request object, optional. h](j )}(h ``queue``h]j~)}(hjh]hqueue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj ubj )}(hhh]h)}(h#Queue the request object, optional.h]h#Queue the request object, optional.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hMhj&ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj%hMhjubj )}(h0``unbind`` Unbind the request object, optional. h](j )}(h ``unbind``h]j~)}(hjIh]hunbind}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjGubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjCubj )}(hhh]h)}(h$Unbind the request object, optional.h]h$Unbind the request object, optional.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^hMhj_ubah}(h]h ]h"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]uh1j hj^hMhjubj )}(h1``release`` Release the request object, required.h](j )}(h ``release``h]j~)}(hjh]hrelease}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj|ubj )}(hhh]h)}(h%Release the request object, required.h]h%Release the request object, required.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubah}(h]h ]h"]h$]h&]uh1j hj|ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1j hjMubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request_object (C struct)c.media_request_objecthNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_request_objecth]j )}(hstruct media_request_objecth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhM ubj$ )}(hmedia_request_objecth]j* )}(hjh]hmedia_request_object}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhM ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhM ubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM hjhhubjV )}(hhh]h)}(h0An opaque object that belongs to a media requesth]h0An opaque object that belongs to a media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM$hjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhM ubeh}(h]h ](jstructeh"]h$]h&]jv jjw j6jx j6jy jz j{ uh1j hhhj hNhNubj} )}(hX**Definition**:: struct media_request_object { struct media_device *mdev; const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; }; **Members** ``mdev`` Media device this object belongs to ``ops`` object's operations ``priv`` object's priv pointer ``req`` the request this object belongs to (can be NULL) ``list`` List entry of the object for **struct** media_request ``kref`` Reference count of the object, acquire before releasing req->lock ``completed`` If true, then this object was completed.h](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubh:}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM(hj:ubj)}(hstruct media_request_object { struct media_device *mdev; const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; };h]hstruct media_request_object { struct media_device *mdev; const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; };}hj[sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM*hj:ubh)}(h **Members**h]j)}(hjlh]hMembers}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM4hj:ubj )}(hhh](j )}(h-``mdev`` Media device this object belongs to h](j )}(h``mdev``h]j~)}(hjh]hmdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM(hjubj )}(hhh]h)}(h#Media device this object belongs toh]h#Media device this object belongs to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM(hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM(hjubj )}(h``ops`` object's operations h](j )}(h``ops``h]j~)}(hjh]hops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM)hjubj )}(hhh]h)}(hobject's operationsh]hobject’s operations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM)hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM)hjubj )}(h``priv`` object's priv pointer h](j )}(h``priv``h]j~)}(hjh]hpriv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM*hjubj )}(hhh]h)}(hobject's priv pointerh]hobject’s priv pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM*hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM*hjubj )}(h9``req`` the request this object belongs to (can be NULL) h](j )}(h``req``h]j~)}(hj6h]hreq}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj4ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM+hj0ubj )}(hhh]h)}(h0the request this object belongs to (can be NULL)h]h0the request this object belongs to (can be NULL)}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKhM+hjLubah}(h]h ]h"]h$]h&]uh1j hj0ubeh}(h]h ]h"]h$]h&]uh1j hjKhM+hjubj )}(h?``list`` List entry of the object for **struct** media_request h](j )}(h``list``h]j~)}(hjoh]hlist}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjmubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM,hjiubj )}(hhh]h)}(h5List entry of the object for **struct** media_requesth](hList entry of the object for }(hjhhhNhNubj)}(h **struct**h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh media_request}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM,hjubah}(h]h ]h"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]uh1j hjhM,hjubj )}(hK``kref`` Reference count of the object, acquire before releasing req->lock h](j )}(h``kref``h]j~)}(hjh]hkref}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM-hjubj )}(hhh]h)}(hAReference count of the object, acquire before releasing req->lockh]hAReference count of the object, acquire before releasing req->lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM-hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM-hjubj )}(h6``completed`` If true, then this object was completed.h](j )}(h ``completed``h]j~)}(hjh]h completed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM-hjubj )}(hhh]h)}(h(If true, then this object was completed.h]h(If true, then this object was completed.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM.hj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM-hjubeh}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hj6h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM1hj hhubh)}(hAn object related to the request. This struct is always embedded in another struct that contains the actual data for this request object.h]hAn object related to the request. This struct is always embedded in another struct that contains the actual data for this request object.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM.hj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_request_object_get (C function)c.media_request_object_gethNtauh1j hj hhhNhNubj )}(hhh](j )}(h@void media_request_object_get (struct media_request_object *obj)h]j )}(h?void media_request_object_get(struct media_request_object *obj)h](jL)}(hvoidh]hvoid}(hjthhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjphhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM?ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjphhhjhM?ubj$ )}(hmedia_request_object_geth]j* )}(hmedia_request_object_geth]hmedia_request_object_get}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjphhhjhM?ubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_request_object_getasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hobjh]hobj}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjphhhjhM?ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjlhhhjhM?ubah}(h]jgah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM?hjihhubjV )}(hhh]h)}(hGet a media request objecth]hGet a media request object}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM?hj1hhubah}(h]h ]h"]h$]h&]uh1jU hjihhhjhM?ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jLjx jLjy jz j{ uh1j hhhj hNhNubj} )}(ho**Parameters** ``struct media_request_object *obj`` The object **Description** Get a media request object.h](h)}(h**Parameters**h]j)}(hjVh]h Parameters}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMChjPubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hjuh]h struct media_request_object *obj}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjsubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMAhjoubj )}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMAhjubah}(h]h ]h"]h$]h&]uh1j hjoubeh}(h]h ]h"]h$]h&]uh1j hjhMAhjlubah}(h]h ]h"]h$]h&]uh1j hjPubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMChjPubh)}(hGet a media request object.h]hGet a media request object.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMBhjPubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_request_object_put (C function)c.media_request_object_puthNtauh1j hj hhhNhNubj )}(hhh](j )}(h@void media_request_object_put (struct media_request_object *obj)h]j )}(h?void media_request_object_put(struct media_request_object *obj)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMKubj$ )}(hmedia_request_object_puth]j* )}(hmedia_request_object_puth]hmedia_request_object_put}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMKubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hjPhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNjj)}j]j)}jjsbc.media_request_object_putasbuh1hhj.ubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj.ubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj* )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj*ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMKubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMKhjhhubjV )}(hhh]h)}(hPut a media request objecth]hPut a media request object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMKhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_request_object *obj`` The object **Description** Put a media request object. Once all references are gone, the object's memory is released.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMOhjubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hjh]h struct media_request_object *obj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMMhjubj )}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMMhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj1h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMOhjubh)}(hZPut a media request object. Once all references are gone, the object's memory is released.h]h\Put a media request object. Once all references are gone, the object’s memory is released.}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMNhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_request_object_find (C function)c.media_request_object_findhNtauh1j hj hhhNhNubj )}(hhh](j )}(hstruct media_request_object * media_request_object_find (struct media_request *req, const struct media_request_object_ops *ops, void *priv)h]j )}(hstruct media_request_object *media_request_object_find(struct media_request *req, const struct media_request_object_ops *ops, void *priv)h](j )}(hj h]hstruct}(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMUubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrhhhjhMUubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_request_object_findsbc.media_request_object_findasbuh1hhjrhhhjhMUubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrhhhjhMUubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrhhhjhMUubj$ )}(hmedia_request_object_findh]j* )}(hjh]hmedia_request_object_find}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjrhhhjhMUubj)}(hS(struct media_request *req, const struct media_request_object_ops *ops, void *priv)h](j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_request_object_findasbuh1hhjubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hreqh]hreq}(hjGhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h*const struct media_request_object_ops *opsh](j )}(hj.h]hconst}(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\ubj )}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\ubj )}(hj h]hstruct}(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\ubh)}(hhh]j* )}(hmedia_request_object_opsh]hmedia_request_object_ops}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_request_object_findasbuh1hhj\ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj\ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ubj* )}(hopsh]hops}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj\ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *privh](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hprivh]hpriv}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjrhhhjhMUubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjnhhhjhMUubah}(h]jiah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMUhjkhhubjV )}(hhh]h)}(hFind an object in a requesth]hFind an object in a request}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMUhj;hhubah}(h]h ]h"]h$]h&]uh1jU hjkhhhjhMUubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jVjx jVjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_request *req`` The media request ``const struct media_request_object_ops *ops`` Find an object with this ops value ``void *priv`` Find an object with this priv value **Description** Both **ops** and **priv** must be non-NULL. Returns the object pointer or NULL if not found. The caller must call media_request_object_put() once it finished using the object. Since this function needs to walk the list of objects it takes the **req->lock** spin lock to make this safe.h](h)}(h**Parameters**h]j)}(hj`h]h Parameters}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMYhjZubj )}(hhh](j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j~)}(hjh]hstruct media_request *req}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj}ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMWhjyubj )}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1j hjyubeh}(h]h ]h"]h$]h&]uh1j hjhMWhjvubj )}(hR``const struct media_request_object_ops *ops`` Find an object with this ops value h](j )}(h.``const struct media_request_object_ops *ops``h]j~)}(hjh]h*const struct media_request_object_ops *ops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMXhjubj )}(hhh]h)}(h"Find an object with this ops valueh]h"Find an object with this ops value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMXhjvubj )}(h3``void *priv`` Find an object with this priv value h](j )}(h``void *priv``h]j~)}(hjh]h void *priv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMYhjubj )}(hhh]h)}(h#Find an object with this priv valueh]h#Find an object with this priv value}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMYhjvubeh}(h]h ]h"]h$]h&]uh1j hjZubh)}(h**Description**h]j)}(hj,h]h Description}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj*ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM[hjZubh)}(h+Both **ops** and **priv** must be non-NULL.h](hBoth }(hjBhhhNhNubj)}(h**ops**h]hops}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh and }(hjBhhhNhNubj)}(h**priv**h]hpriv}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubh must be non-NULL.}(hjBhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMZhjZubh)}(hReturns the object pointer or NULL if not found. The caller must call media_request_object_put() once it finished using the object.h]hReturns the object pointer or NULL if not found. The caller must call media_request_object_put() once it finished using the object.}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM\hjZubh)}(hmSince this function needs to walk the list of objects it takes the **req->lock** spin lock to make this safe.h](hCSince this function needs to walk the list of objects it takes the }(hjhhhNhNubj)}(h **req->lock**h]h req->lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh spin lock to make this safe.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM_hjZubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_request_object_init (C function)c.media_request_object_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(hAvoid media_request_object_init (struct media_request_object *obj)h]j )}(h@void media_request_object_init(struct media_request_object *obj)h](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMiubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMiubj$ )}(hmedia_request_object_inith]j* )}(hmedia_request_object_inith]hmedia_request_object_init}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMiubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]j)}jjsbc.media_request_object_initasbuh1hhjubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hobjh]hobj}(hj[hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMiubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMiubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMihjhhubjV )}(hhh]h)}(h!Initialise a media request objecth]h!Initialise a media request object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMihjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMiubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_request_object *obj`` The object **Description** Initialise a media request object. The object will be released using the release callback of the ops once it has no references (this function initialises references to one).h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMmhjubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hjh]h struct media_request_object *obj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMkhjubj )}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMkhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMkhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMmhjubh)}(hInitialise a media request object. The object will be released using the release callback of the ops once it has no references (this function initialises references to one).h]hInitialise a media request object. The object will be released using the release callback of the ops once it has no references (this function initialises references to one).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMlhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_request_object_bind (C function)c.media_request_object_bindhNtauh1j hj hhhNhNubj )}(hhh](j )}(hint media_request_object_bind (struct media_request *req, const struct media_request_object_ops *ops, void *priv, bool is_buffer, struct media_request_object *obj)h]j )}(hint media_request_object_bind(struct media_request *req, const struct media_request_object_ops *ops, void *priv, bool is_buffer, struct media_request_object *obj)h](jL)}(hinth]hint}(hjFhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjBhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMtubj )}(h h]h }(hjUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBhhhjThMtubj$ )}(hmedia_request_object_bindh]j* )}(hmedia_request_object_bindh]hmedia_request_object_bind}(hjghhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjcubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjBhhhjThMtubj)}(h(struct media_request *req, const struct media_request_object_ops *ops, void *priv, bool is_buffer, struct media_request_object *obj)h](j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjisbc.media_request_object_bindasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubj)}(h*const struct media_request_object_ops *opsh](j )}(hj.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_request_object_opsh]hmedia_request_object_ops}(hj.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]jc.media_request_object_bindasbuh1hhjubj )}(h h]h }(hjLhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hopsh]hops}(hjghhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubj)}(h void *privh](jL)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj|ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|ubj* )}(hprivh]hpriv}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubj)}(hbool is_bufferh](jL)}(hj6sh]hbool}(hjhhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(h is_bufferh]h is_buffer}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubj)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_request_object_bindasbuh1hhjubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj* )}(hobjh]hobj}(hjMhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubeh}(h]h ]h"]h$]h&]hhuh1jhjBhhhjThMtubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj>hhhjThMtubah}(h]j9ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjThMthj;hhubjV )}(hhh]h)}(h(Bind a media request object to a requesth]h(Bind a media request object to a request}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMthjthhubah}(h]h ]h"]h$]h&]uh1jU hj;hhhjThMtubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_request *req`` The media request ``const struct media_request_object_ops *ops`` The object ops for this object ``void *priv`` A driver-specific priv pointer associated with this object ``bool is_buffer`` Set to true if the object is a buffer object. ``struct media_request_object *obj`` The object **Description** Bind this object to the request and set the ops and priv values of the object so it can be found later with media_request_object_find(). Every bound object must be unbound or completed by the kernel at some point in time, otherwise the request will never complete. When the request is released all completed objects will be unbound by the request core code. Buffer objects will be added to the end of the request's object list, non-buffer objects will be added to the front of the list. This ensures that all buffer objects are at the end of the list and that all non-buffer objects that they depend on are processed first.h](h)}(h**Parameters**h]j)}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMxhjubj )}(hhh](j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j~)}(hjh]hstruct media_request *req}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMvhjubj )}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMvhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMvhjubj )}(hN``const struct media_request_object_ops *ops`` The object ops for this object h](j )}(h.``const struct media_request_object_ops *ops``h]j~)}(hjh]h*const struct media_request_object_ops *ops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMwhjubj )}(hhh]h)}(hThe object ops for this objecth]hThe object ops for this object}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMwhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMwhjubj )}(hJ``void *priv`` A driver-specific priv pointer associated with this object h](j )}(h``void *priv``h]j~)}(hj*h]h void *priv}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj(ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMxhj$ubj )}(hhh]h)}(h:A driver-specific priv pointer associated with this objecth]h:A driver-specific priv pointer associated with this object}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hMxhj@ubah}(h]h ]h"]h$]h&]uh1j hj$ubeh}(h]h ]h"]h$]h&]uh1j hj?hMxhjubj )}(hA``bool is_buffer`` Set to true if the object is a buffer object. h](j )}(h``bool is_buffer``h]j~)}(hjch]hbool is_buffer}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjaubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMyhj]ubj )}(hhh]h)}(h-Set to true if the object is a buffer object.h]h-Set to true if the object is a buffer object.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMyhjyubah}(h]h ]h"]h$]h&]uh1j hj]ubeh}(h]h ]h"]h$]h&]uh1j hjxhMyhjubj )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hjh]h struct media_request_object *obj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMzhjubj )}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMzhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMzhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM|hjubh)}(hBind this object to the request and set the ops and priv values of the object so it can be found later with media_request_object_find().h]hBind this object to the request and set the ops and priv values of the object so it can be found later with media_request_object_find().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM{hjubh)}(hEvery bound object must be unbound or completed by the kernel at some point in time, otherwise the request will never complete. When the request is released all completed objects will be unbound by the request core code.h]hEvery bound object must be unbound or completed by the kernel at some point in time, otherwise the request will never complete. When the request is released all completed objects will be unbound by the request core code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM~hjubh)}(hX Buffer objects will be added to the end of the request's object list, non-buffer objects will be added to the front of the list. This ensures that all buffer objects are at the end of the list and that all non-buffer objects that they depend on are processed first.h]hX Buffer objects will be added to the end of the request’s object list, non-buffer objects will be added to the front of the list. This ensures that all buffer objects are at the end of the list and that all non-buffer objects that they depend on are processed first.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_request_object_unbind (C function)c.media_request_object_unbindhNtauh1j hj hhhNhNubj )}(hhh](j )}(hCvoid media_request_object_unbind (struct media_request_object *obj)h]j )}(hBvoid media_request_object_unbind(struct media_request_object *obj)h](jL)}(hvoidh]hvoid}(hj:hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj6hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMubj )}(h h]h }(hjIhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6hhhjHhMubj$ )}(hmedia_request_object_unbindh]j* )}(hmedia_request_object_unbindh]hmedia_request_object_unbind}(hj[hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjWubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj6hhhjHhMubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj]sbc.media_request_object_unbindasbuh1hhjsubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj* )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjoubah}(h]h ]h"]h$]h&]hhuh1jhj6hhhjHhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj2hhhjHhMubah}(h]j-ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjHhMhj/hhubjV )}(hhh]h)}(hUnbind a media request objecth]hUnbind a media request object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hj/hhhjHhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j jx j jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_request_object *obj`` The object **Description** Unbind the media request object from the request.h](h)}(h**Parameters**h]j)}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj ubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hj; h]h struct media_request_object *obj}(hj= hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9 ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj5 ubj )}(hhh]h)}(h The objecth]h The object}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjP hMhjQ ubah}(h]h ]h"]h$]h&]uh1j hj5 ubeh}(h]h ]h"]h$]h&]uh1j hjP hMhj2 ubah}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j)}(hjv h]h Description}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjt ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj ubh)}(h1Unbind the media request object from the request.h]h1Unbind the media request object from the request.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j *media_request_object_complete (C function)c.media_request_object_completehNtauh1j hj hhhNhNubj )}(hhh](j )}(hEvoid media_request_object_complete (struct media_request_object *obj)h]j )}(hDvoid media_request_object_complete(struct media_request_object *obj)h](jL)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhj hMubj$ )}(hmedia_request_object_completeh]j* )}(hmedia_request_object_completeh]hmedia_request_object_complete}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj hhhj hMubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hj!hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj!modnameN classnameNjj)}j]j)}jj sbc.media_request_object_completeasbuh1hhj ubj )}(h h]h }(hj6!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj)}(hjh]h*}(hjD!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj* )}(hobjh]hobj}(hjQ!hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj hhhj hMubah}(h]j ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj hMhj hhubjV )}(hhh]h)}(h)Mark the media request object as completeh]h)Mark the media request object as complete}(hj{!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjx!hhubah}(h]h ]h"]h$]h&]uh1jU hj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j!jx j!jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_request_object *obj`` The object **Description** Mark the media request object as complete. Only bound objects can be completed.h](h)}(h**Parameters**h]j)}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hj!h]h struct media_request_object *obj}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubj )}(hhh]h)}(h The objecth]h The object}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj!ubah}(h]h ]h"]h$]h&]uh1j hj!ubeh}(h]h ]h"]h$]h&]uh1j hj!hMhj!ubah}(h]h ]h"]h$]h&]uh1j hj!ubh)}(h**Description**h]j)}(hj!h]h Description}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubh)}(hOMark the media request object as complete. Only bound objects can be completed.h]hOMark the media request object as complete. Only bound objects can be completed.}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_device_usb_allocate (C function)c.media_device_usb_allocatehNtauh1j hj hhhNhNubj )}(hhh](j )}(hxstruct media_device * media_device_usb_allocate (struct usb_device *udev, const char *module_name, struct module *owner)h]j )}(hvstruct media_device *media_device_usb_allocate(struct usb_device *udev, const char *module_name, struct module *owner)h](j )}(hj h]hstruct}(hj<"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8"hhhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKubj )}(h h]h }(hjJ"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8"hhhjI"hKubh)}(hhh]j* )}(h media_deviceh]h media_device}(hj["hhhNhNubah[}(h]h ]j5 ah"]h$]h&]uh1j) hjX"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj]"modnameN classnameNjj)}j]j)}jmedia_device_usb_allocatesbc.media_device_usb_allocateasbuh1hhj8"hhhjI"hKubj )}(h h]h }(hj|"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8"hhhjI"hKubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj8"hhhjI"hKubj$ )}(hmedia_device_usb_allocateh]j* )}(hjy"h]hmedia_device_usb_allocate}(hj"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj8"hhhjI"hKubj)}(hH(struct usb_device *udev, const char *module_name, struct module *owner)h](j)}(hstruct usb_device *udevh](j )}(hj h]hstruct}(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubh)}(hhh]j* )}(h usb_deviceh]h usb_device}(hj"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]jw"c.media_device_usb_allocateasbuh1hhj"ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj* )}(hudevh]hudev}(hj #hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubj)}(hconst char *module_nameh](j )}(hj.h]hconst}(hj&#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"#ubj )}(h h]h }(hj3#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"#ubjL)}(hcharh]hchar}(hjA#hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj"#ubj )}(h h]h }(hjO#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"#ubj)}(hjh]h*}(hj]#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"#ubj* )}(h module_nameh]h module_name}(hjj#hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj"#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubj)}(hstruct module *ownerh](j )}(hj h]hstruct}(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubh)}(hhh]j* )}(hmoduleh]hmodule}(hj#hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]jw"c.media_device_usb_allocateasbuh1hhj#ubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj* )}(hownerh]howner}(hj#hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubeh}(h]h ]h"]h$]h&]hhuh1jhj8"hhhjI"hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj4"hhhjI"hKubah}(h]j/"ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjI"hKhj1"hhubjV )}(hhh]h)}(h1Allocate and return struct :c:type:`media` deviceh](hAllocate and return struct }(hj$hhhNhNubh)}(h:c:type:`media`h]j~)}(hj$h]hmedia}(hj$hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj $ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jw"c.media_device_usb_allocateasbjmediauh1hhjI"hKhj$ubh device}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhj$hhubah}(h]h ]h"]h$]h&]uh1jU hj1"hhhjI"hKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jD$jx jD$jy jz j{ uh1j hhhj hNhNubj} )}(hXD**Parameters** ``struct usb_device *udev`` struct :c:type:`usb_device` pointer ``const char *module_name`` should be filled with ``KBUILD_MODNAME`` ``struct module *owner`` struct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null. **Description** This interface should be called to allocate a Media Device when multiple drivers share usb_device and the media device. This interface allocates :c:type:`media_device` structure and calls media_device_usb_init() to initialize it.h](h)}(h**Parameters**h]j)}(hjN$h]h Parameters}(hjP$hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL$ubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhjH$ubj )}(hhh](j )}(h@``struct usb_device *udev`` struct :c:type:`usb_device` pointer h](j )}(h``struct usb_device *udev``h]j~)}(hjm$h]hstruct usb_device *udev}(hjo$hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjk$ubah}(h]h ]h"]h$]h&]uh1j hm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhjg$ubj )}(hhh]h)}(h#struct :c:type:`usb_device` pointerh](hstruct }(hj$hhhNhNubh)}(h:c:type:`usb_device`h]j~)}(hj$h]h usb_device}(hj$hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj$ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj usb_deviceuh1hhj$hKhj$ubh pointer}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1j hjg$ubeh}(h]h ]h"]h$]h&]uh1j hj$hKhjd$ubj )}(hE``const char *module_name`` should be filled with ``KBUILD_MODNAME`` h](j )}(h``const char *module_name``h]j~)}(hj$h]hconst char *module_name}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj$ubah}(h]h ]h"]h$]h&]uh1j hm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhj$ubj )}(hhh]h)}(h(should be filled with ``KBUILD_MODNAME``h](hshould be filled with }(hj$hhhNhNubj~)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj$ubeh}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1j hj$ubeh}(h]h ]h"]h$]h&]uh1j hj$hKhjd$ubj )}(h``struct module *owner`` struct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null. h](j )}(h``struct module *owner``h]j~)}(hj%h]hstruct module *owner}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj%ubah}(h]h ]h"]h$]h&]uh1j hm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhj %ubj )}(hhh]h)}(hstruct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null.h](hstruct module pointer }(hj)%hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj1%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj)%ubh for the driver. }(hj)%hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hjC%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj)%ubh5 is null for a built-in driver. It is safe even when }(hj)%hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hjU%hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj)%ubh is null.}(hj)%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhj&%ubah}(h]h ]h"]h$]h&]uh1j hj %ubeh}(h]h ]h"]h$]h&]uh1j hj%%hKhjd$ubeh}(h]h ]h"]h$]h&]uh1j hjH$ubh)}(h**Description**h]j)}(hj%h]h Description}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK hjH$ubh)}(hThis interface should be called to allocate a Media Device when multiple drivers share usb_device and the media device. This interface allocates :c:type:`media_device` structure and calls media_device_usb_init() to initialize it.h](hThis interface should be called to allocate a Media Device when multiple drivers share usb_device and the media device. This interface allocates }(hj%hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj%h]h media_device}(hj%hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj%ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhj%ubh> structure and calls media_device_usb_init() to initialize it.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj%hKhjH$ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device_delete (C function)c.media_device_deletehNtauh1j hj hhhNhNubj )}(hhh](j )}(hcvoid media_device_delete (struct media_device *mdev, const char *module_name, struct module *owner)h]j )}(hbvoid media_device_delete(struct media_device *mdev, const char *module_name, struct module *owner)h](jL)}(hvoidh]hvoid}(hj%hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj%hhhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK*ubj )}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%hhhj%hK*ubj$ )}(hmedia_device_deleteh]j* )}(hmedia_device_deleteh]hmedia_device_delete}(hj &hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj%hhhj%hK*ubj)}(hJ(struct media_device *mdev, const char *module_name, struct module *owner)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj'&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#&ubj )}(h h]h }(hj4&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#&ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjE&hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjB&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjG&modnameN classnameNjj)}j]j)}jj &sbc.media_device_deleteasbuh1hhj#&ubj )}(h h]h }(hje&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#&ubj)}(hjh]h*}(hjs&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#&ubj* )}(hmdevh]hmdev}(hj&hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&ubj)}(hconst char *module_nameh](j )}(hj.h]hconst}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubjL)}(hcharh]hchar}(hj&hhhNhNubah}(h]h ]jXah"]h$]h&]uh1jKhj&ubj )}(h h]h }(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj* )}(h module_nameh]h module_name}(hj&hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&ubj)}(hstruct module *ownerh](j )}(hj h]hstruct}(hj&hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubh)}(hhh]j* )}(hmoduleh]hmodule}(hj'hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]ja&c.media_device_deleteasbuh1hhj&ubj )}(h h]h }(hj2'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&ubj)}(hjh]h*}(hj@'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj* )}(hownerh]howner}(hjM'hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&ubeh}(h]h ]h"]h$]h&]hhuh1jhj%hhhj%hK*ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj%hhhj%hK*ubah}(h]j%ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj%hK*hj%hhubjV )}(hhh]h)}(h'Release media device. Calls kref_put().h]h'Release media device. Calls kref_put().}(hjw'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK*hjt'hhubah}(h]h ]h"]h$]h&]uh1jU hj%hhhj%hK*ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j'jx j'jy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_device *mdev`` struct :c:type:`media_device` pointer ``const char *module_name`` should be filled with ``KBUILD_MODNAME`` ``struct module *owner`` struct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null. **Description** This interface should be called to put Media Device Instance kref.h](h)}(h**Parameters**h]j)}(hj'h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK.hj'ubj )}(hhh](j )}(hD``struct media_device *mdev`` struct :c:type:`media_device` pointer h](j )}(h``struct media_device *mdev``h]j~)}(hj'h]hstruct media_device *mdev}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj'ubah}(h]h ]h"]h$]h&]uh1j hm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK,hj'ubj )}(hhh]h)}(h%struct :c:type:`media_device` pointerh](hstruct }(hj'hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj'h]h media_device}(hj'hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj'ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj'hK,hj'ubh pointer}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'hK,hj'ubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hj'hK,hj'ubj )}(hE``const char *module_name`` should be filled with ``KBUILD_MODNAME`` h](j )}(h``const char *module_name``h]j~)}(hj(h]hconst char *module_name}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj(ubah}(h]h ]h"]h$]h&]uh1j hm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK-hj(ubj )}(hhh]h)}(h(should be filled with ``KBUILD_MODNAME``h](hshould be filled with }(hj-(hhhNhNubj~)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hj5(hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj-(ubeh}(h]h ]h"]h$]h&]uh1hhj)(hK-hj*(ubah}(h]h ]h"]h$]h&]uh1j hj(ubeh}(h]h ]h"]h$]h&]uh1j hj)(hK-hj'ubj )}(h``struct module *owner`` struct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null. h](j )}(h``struct module *owner``h]j~)}(hj[(h]hstruct module *owner}(hj](hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjY(ubah}(h]h ]h"]h$]h&]uh1j hm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK0hjU(ubj )}(hhh]h)}(hstruct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null.h](hstruct module pointer }(hjt(hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj|(hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjt(ubh for the driver. }(hjt(hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjt(ubh5 is null for a built-in driver. It is safe even when }(hjt(hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjt(ubh is null.}(hjt(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK.hjq(ubah}(h]h ]h"]h$]h&]uh1j hjU(ubeh}(h]h ]h"]h$]h&]uh1j hjp(hK0hj'ubeh}(h]h ]h"]h$]h&]uh1j hj'ubh)}(h**Description**h]j)}(hj(h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK2hj'ubh)}(hBThis interface should be called to put Media Device Instance kref.h]hBThis interface should be called to put Media Device Instance kref.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK1hj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubeh}(h]api-definitionsah ]h"]api definitionsah$]h&]uh1hhhhhhhhMKubeh}(h]media-controllerah ]h"]media controllerah$]h&]uh1hhhhhhhhKubeh}(h]media-controller-devicesah ]h"]media controller devicesah$]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_handlerj4)error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j)j )j)j)jaj^jzjwj~j{j jjjj|jyjqjnj"jjljijX jU j j jm jj j j j(j(u nametypes}(j)j)jajzj~j jj|jqj"jljX j jm j j(uh}(j )hj)hj^jjwjdj{j}jjjjjyjjnjjjtjij%jU joj j[ jj j j jp j(j j j jjjjj>jCjYj^jjjc!jh!j"j"jP$jU$j'j'j)j)j+j+j-j-j0j0j4j4j6j6jK9jP9j<j<jk?jp?j~BjBjDjDjEjEjxGj}GjDIjIIjJjJjLjLjMjMj-Pj2PjQjQjSjSjTjTjUjUjYjYj9[j>[j]j]j_j_jajajgjgjFhjKhjjjjj5lj:ljmjmjnojsojpjqj'sj,sjtjtjvjvjxjxj3zj8zj{j{j}j}jjjсjցj jjjjj jCjHjjjjjjj jjMjRjjjVj[jjjjjjjjjjjɫjΫjjjjjj$jxj}jmjrjƺj˺jajfjjjjjjj.j3jjjjjSjXjfjkjjjjj}jjj jjjjjdjijjjpjuj3j8jjj{jj(j-jjj~jjSjXj_jdj6j;jjj7j<jkjpjjjxj}j jjjj1j6jjj3j8j j j j j. j3 jjjjjgjljjjijnjjj9j>j-j2j j j/"j4"j%j%u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.