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.hhKhj_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.hhK0hj(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.hhK2hj(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.hhK/hjsubj )}(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 hjhK/hjpubj )}(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.hhK2hjubj )}(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.hhK0hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK2hjpubj )}(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.hhK4hj 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.hhK3hj'ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj&hK4hjpubj )}(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.hhK6hjWubj )}(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.hhK5hjsubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhK6hjpubj )}(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.hhK@hjubj )}(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.hhK7hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK@hjpubeh}(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.hhKGubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKGubj$ )}(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# hjhhhjhKGubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhKGubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhKGhjhhubjV )}(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.hhKLhj0hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhKGubeh}(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 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. ``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.hhKPhjOubj)}(hXstruct 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 request_id; };h]hXstruct 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 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.hhKRhjOubh)}(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.hhKmhjOubj )}(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.hhKNhjubj )}(hhh]h)}(h Parent deviceh]h Parent device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKNhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKNhjubj )}(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.hhKOhjubj )}(hhh]h)}(hMedia device nodeh]hMedia device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKOhjubj )}(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.hhKThj ubj )}(hhh]h)}(hDevice model nameh]hDevice model name}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hKThj(ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj'hKThjubj )}(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.hhKShjEubj )}(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.hhKPhjaubah}(h]h ]h"]h$]h&]uh1j hjEubeh}(h]h ]h"]h$]h&]uh1j hj`hKShjubj )}(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.hhKUhjubj )}(hhh]h)}(hDevice serial number (optional)h]hDevice serial number (optional)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKUhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKUhjubj )}(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.hhKVhjubj )}(hhh]h)}(h,Unique and stable device location identifierh]h,Unique and stable device location identifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKVhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKVhjubj )}(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.hhKWhjubj )}(hhh]h)}(hHardware device revisionh]hHardware device revision}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hKWhj1ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj0hKWhjubj )}(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.hhKYhjNubj )}(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.hhKXhjjubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjihKYhjubj )}(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.hhKZhjubj )}(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&]uh1hhjhKZhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKZhjubj )}(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.hhK`hjubj )}(hhh]h)}(hList of registered padsh]hList of registered pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK`hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK`hjubj )}(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.hhKahjubj )}(hhh]h)}(hList of registered linksh]hList of registered links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKahjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKahjubj )}(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.hhKbhjubj )}(hhh]h)}(h*List of registered entity_notify callbacksh]h*List of registered entity_notify callbacks}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hKbhj4ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj3hKbhjubj )}(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.hhKchjQubj )}(hhh]h)}(h+Protects access to struct media_device datah]h+Protects access to struct media_device data}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhKchjmubah}(h]h ]h"]h$]h&]uh1j hjQubeh}(h]h ]h"]h$]h&]uh1j hjlhKchjubj )}(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.hhKehjubj )}(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.hhKdhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKehjubj )}(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.hhKghjubj )}(hhh]h)}(h6Driver Private data for enable/disable source handlersh]h6Driver Private data for enable/disable source handlers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKghjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKghjubj )}(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.hhKhhjubj )}(hhh]h)}(h&Enable Source Handler function pointerh]h&Enable Source Handler function pointer}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhhjubj )}(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.hhKihj6ubj )}(hhh]h)}(h'Disable Source Handler function pointerh]h'Disable Source Handler function pointer}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKihjRubah}(h]h ]h"]h$]h&]uh1j hj6ubeh}(h]h ]h"]h$]h&]uh1j hjQhKihjubj )}(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.hhKkhjoubj )}(hhh]h)}(hOperation handler callbacksh]hOperation handler callbacks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKkhjubah}(h]h ]h"]h$]h&]uh1j hjoubeh}(h]h ]h"]h$]h&]uh1j hjhKkhjubj )}(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.hhKmhjubj )}(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.hhKlhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKmhjubj )}(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.hhKmhjubj )}(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.hhKnhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKmhjubeh}(h]h ]h"]h$]h&]uh1j hjOubeh}(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&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKqhj 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.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKohj hhubh)}(h\The parent **dev** is a physical device. It must be set before registering the media device.h](h The parent }(hjPhhhNhNubj)}(h**dev**h]hdev}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubhJ is a physical device. It must be set before registering the media device.}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKshj hhubh)}(h[**model** is a descriptive model name exported through sysfs. It doesn't have to be unique.h](j)}(h **model**h]hmodel}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubhT is a descriptive model name exported through sysfs. It doesn’t have to be unique.}(hjqhhhNhNubeh}(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**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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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.}(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**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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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.}(hjhhhNhNubeh}(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)}(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 }(hjhhhNhNubj)}(h**enable_source**h]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and deactivate from }(hjhhhNhNubj)}(h**disable_source**h]hdisable_source}(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: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~)}(hj h]h media_device}(hj hhhNhNubah}(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}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**disable_source**h]hdisable_source}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh> handlers. Callers should hold graph_mutex to access and call }(hjhhhNhNubj)}(h**enable_source**h]h enable_source}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**disable_source**h]hdisable_source}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh handlers.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj.hKhjubah}(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}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhf/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$ )}(hmedia_device_inith]j* )}(hmedia_device_inith]hmedia_device_init}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhKubhdesc_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 classnameNj%j()}j+]j& ASTIdentifier)}jjsbc.media_device_initasbuh1hhjubj )}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubhdesc_sig_punctuation)}(h*h]h*}(hj5hhhNhNubah}(h]h ]pah"]h$]h&]uh1j3hjubj* )}(hmdevh]hmdev}(hjDhhhNhNubah}(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)}(h"Initializes a media device elementh]h"Initializes a media device element}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjkhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhKubeh}(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` **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)}(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:333: ./include/media/media-device.hhKhjubj )}(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:333: ./include/media/media-device.hhKhjubj )}(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 refexplicitrefwarnj%j)j media_deviceuh1hhjhKhjubeh}(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)}(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:333: ./include/media/media-device.hhKhjubh)}(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.hhKhjubh)}(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.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh)}(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:}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh bullet_list)}(hhh](h list_item)}(h#dev must point to the parent deviceh]h)}(hjUh]h#dev must point to the parent device}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjSubah}(h]h ]h"]h$]h&]uh1jQhjNubjR)}(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}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjkubah}(h]h ]h"]h$]h&]uh1jQhjNubeh}(h]h ]h"]h$]h&]bullet-uh1jLhjdhKhjubh)}(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’.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubeh}(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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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$ )}(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# hjhhhjhKubj)}(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 classnameNj%j()}j+]j )}jjsbc.media_device_cleanupasbuh1hhjubj )}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjDhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hmdevh]hmdev}(hjQhhhNhNubah}(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)}(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.hhKhjxhhubah}(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_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)}(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:333: ./include/media/media-device.hhKhjubj )}(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:333: ./include/media/media-device.hhKhjubj )}(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 refexplicitrefwarnj%j)j media_deviceuh1hhjhKhjubeh}(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&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh)}(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().}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubeh}(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](j)}(hinth]hint}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjWhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj )}(h h]h }(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWhhhjihMubj$ )}(h__media_device_registerh]j* )}(h__media_device_registerh]h__media_device_register}(hj|hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjxubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjWhhhjihMubj)}(h1(struct media_device *mdev, struct module *owner)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 classnameNj%j()}j+]j )}jj~sbc.__media_device_registerasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct module *ownerh](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* )}(hmoduleh]hmodule}(hj(hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNj%j()}j+]jc.__media_device_registerasbuh1hhjubj )}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjThhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hownerh]howner}(hjahhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjWhhhjihMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjShhhjihMubah}(h]jNah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjihMhjPhhubjV )}(hhh]h)}(h Registers a media device elementh]h Registers 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 hjPhhhjihMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(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:333: ./include/media/media-device.hhKhjubj )}(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:333: ./include/media/media-device.hhKhjubj )}(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 refexplicitrefwarnj%j)j media_deviceuh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj )}(h?``struct module *owner`` should be filled with ``THIS_MODULE`` 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 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 }(hj=hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=ubeh}(h]h ]h"]h$]h&]uh1hhj9hKhj:ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj9hKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjmh]h Description}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh)}(h?Users, should, instead, call the media_device_register() macro.h]h?Users, should, instead, call the media_device_register() macro.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh)}(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 }(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%j)j media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh8 structure before registration. The following fields of }(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%j)j media_deviceuh1hhjhKhjubh must be set:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubh 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]jM)}(hhh]jR)}(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 refexplicitrefwarnj%j)j 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&]uh1jQhjubah}(h]h ]h"]h$]h&]jjuh1jLhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjubh)}(h"The following fields are optional:h]h"The following fields are optional:}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubj)}(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]jM)}(hhh](jR)}(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~)}(hjTh]hmedia_device.serial}(hjVhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjRubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjNubh 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.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjqhKhjJubah}(h]h ]h"]h$]h&]uh1jQhjGubjR)}(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~)}(hjh]hmedia_device.bus_info}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubhl represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices }(hjhhhNhNubh)}(h.:c:type:`media_device.bus_info `h]j~)}(hjh]hmedia_device.bus_info}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhjhKhjubhX 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.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jQhjGubjR)}(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~)}(hjh]hmedia_device.hw_revision}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjubh is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hMhjubah}(h]h ]h"]h$]h&]uh1jQhjGubeh}(h]h ]h"]h$]h&]jjuh1jLhjqhKhjCubah}(h]h ]h"]h$]h&]uh1jhjqhKhjubj)}(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](jR)}(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&]uh1jQhj' ubjR)}(hIUnregistering a media device that hasn't been registered is **NOT** safe.h]h)}(hjE h](h>Unregistering a media device that hasn’t been registered is }(hjG hhhNhNubj)}(h**NOT**h]hNOT}(hjN hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjG ubh safe.}(hjG hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM hjC ubah}(h]h ]h"]h$]h&]uh1jQhj' ubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1j% hj! ubah}(h]h ]h"]h$]h&]uh1jhjubh)}(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.hhM hjubh)}(h1returns zero on success or a negative error code.h]h1returns zero on success or a negative error code.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM hjubeh}(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* )}(hj h]hmedia_device_register}(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:333: ./include/media/media-device.hhMubah}(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]h ]h"]h$]h&]uh1jU hj 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)}(hj0!h]h Parameters}(hj2!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 )}(h2``mdev`` pointer to struct :c:type:`media_device` h](j )}(h``mdev``h]j~)}(hjO!h]hmdev}(hjQ!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjM!ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjI!ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjh!hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjr!h]h media_device}(hjt!hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjp!ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhjd!hMhjh!ubeh}(h]h ]h"]h$]h&]uh1hhjd!hMhje!ubah}(h]h ]h"]h$]h&]uh1j hjI!ubeh}(h]h ]h"]h$]h&]uh1j hjd!hMhjF!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.hhMhj*!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 }(hj!hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj!ubh3 as the __media_device_register() second argument (}(hj!hhhNhNubj)}(h **owner**h]howner}(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.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](j)}(hvoidh]hvoid}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"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}(hj3"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}(hjO"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK"ubj )}(h h]h }(hj\"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK"ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjm"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjo"modnameN classnameNj%j()}j+]j )}jj5"sbc.media_device_unregisterasbuh1hhjK"ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjK"ubj4)}(hj7h]h*}(hj"hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjK"ubj* )}(hmdevh]hmdev}(hj"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjK"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjG"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.hhMhj"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.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~)}(hj6#h]h media_device}(hj8#hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj4#ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j 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)}(hjm#h]h Description}(hjo#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjk#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](j)}(hinth]hint}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMJubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#hhhj#hMJubj$ )}(hmedia_device_register_entityh]j* )}(hmedia_device_register_entityh]hmedia_device_register_entity}(hj#hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj#ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj#hhhj#hMJubj)}(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 classnameNj%j()}j+]j )}jj#sbc.media_device_register_entityasbuh1hhj#ubj )}(h h]h }(hj-$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj#ubj4)}(hj7h]h*}(hj;$hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj#ubj* )}(hmdevh]hmdev}(hjH$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}(hja$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]$ubj )}(h h]h }(hjn$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 classnameNj%j()}j+]j)$c.media_device_register_entityasbuh1hhj]$ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]$ubj4)}(hj7h]h*}(hj$hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj]$ubj* )}(hentityh]hentity}(hj$hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj]$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubeh}(h]h ]h"]h$]h&]hhuh1jhj#hhhj#hMJubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj#hhhj#hMJubah}(h]j#ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj#hMJhj#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.hhM'hj$hhubah}(h]h ]h"]h$]h&]uh1jU hj#hhhj#hMJubeh}(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.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~)}(hjF%h]h media_device}(hjH%hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjD%ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhj8%hM*hj<%ubeh}(h]h ]h"]h$]h&]uh1hhj8%hM*hj9%ubah}(h]h ]h"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]uh1j hj8%hM*hj%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}hjy%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+hju%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~)}(hj%h]h media_entity}(hj%hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj%ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhj%hM+hj%ubh to be registered}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj%hM+hj%ubah}(h]h ]h"]h$]h&]uh1j hju%ubeh}(h]h ]h"]h$]h&]uh1j hj%hM+hj%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.hhM-hj$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.hhM-hj$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.hhM4hj$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 refexplicitrefwarnj%j)j media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM9hj &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}hj9&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhj4&hM9hj &ubh/ should be zeroed before calling this function.}(hj &hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj4&hM9hj$ubh)}(hDEntities have flags that describe the entity capabilities and state:h]hDEntities have flags that describe the entity capabilities and state:}(hjb&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 )}(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~)}(hjz&h]hMEDIA_ENT_FL_DEFAULT}(hj|&hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjx&ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMBhjt&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.hhM@hj&ubah}(h]h ]h"]h$]h&]uh1j hjt&ubeh}(h]h ]h"]h$]h&]uh1j hj&hMBhjq&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 }(hj&hhhNhNubj~)}(h#``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``h]hMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&ubh and }(hj&hhhNhNubj~)}(h``MEDIA_ENT_F_UNKNOWN``h]hMEDIA_ENT_F_UNKNOWN}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&ubh# should not be used by the drivers.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMFhj&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](j)}(hvoidh]hvoid}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj '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_unregister_entityh]j* )}(hmedia_device_unregister_entityh]hmedia_device_unregister_entity}(hj2'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_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjN'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJ'ubj )}(h h]h }(hj['hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJ'ubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjl'hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hji'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjn'modnameN classnameNj%j()}j+]j )}jj4'sb c.media_device_unregister_entityasbuh1hhjJ'ubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjJ'ubj4)}(hj7h]h*}(hj'hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjJ'ubj* )}(hentityh]hentity}(hj'hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjJ'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjF'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)}(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.hhMNhj'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} )}(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.hhMRhj'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.hhMPhj (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~)}(hj5(h]h media_entity}(hj7(hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj3(ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhj'(hMPhj+(ubh to be unregistered}(hj+(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'(hMPhj((ubah}(h]h ]h"]h$]h&]uh1j hj (ubeh}(h]h ]h"]h$]h&]uh1j hj'(hMPhj (ubah}(h]h ]h"]h$]h&]uh1j hj'ubh)}(h**Description**h]j)}(hjp(h]h Description}(hjr(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn(ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMRhj'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.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMRhj'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.hhMUhj'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.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMXhj'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.}(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(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](j)}(hvoidh]hvoid}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMnubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj(hhhj(hMnubj$ )}(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(hMnubj)}(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 }(hj6)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%)ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjG)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjD)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjI)modnameN classnameNj%j()}j+]j )}jj)sb%c.media_device_register_entity_notifyasbuh1hhj%)ubj )}(h h]h }(hjg)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj%)ubj4)}(hj7h]h*}(hju)hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj%)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}(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_entity_notifyh]hmedia_entity_notify}(hj)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj)ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNj%j()}j+]jc)%c.media_device_register_entity_notifyasbuh1hhj)ubj )}(h h]h }(hj)hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj)ubj4)}(hj7h]h*}(hj)hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj)ubj* )}(hnptrh]hnptr}(hj)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!)ubeh}(h]h ]h"]h$]h&]hhuh1jhj(hhhj(hMnubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj(hhhj(hMnubah}(h]j(ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj(hMnhj(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.hhMchj*hhubah}(h]h ]h"]h$]h&]uh1jU hj(hhhj(hMnubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j4*jx j4*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.hhMghj8*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.hhMfhjW*ubj )}(hhh]h)}(hThe media deviceh]hThe media device}(hjv*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr*hMfhjs*ubah}(h]h ]h"]h$]h&]uh1j hjW*ubeh}(h]h ]h"]h$]h&]uh1j hjr*hMfhjT*ubj )}(h=``struct media_entity_notify *nptr`` The media_entity_notify h](j )}(h$``struct media_entity_notify *nptr``h]j~)}(hj*h]h struct media_entity_notify *nptr}(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.hhMghj*ubj )}(hhh]h)}(hThe media_entity_notifyh]hThe media_entity_notify}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hMghj*ubah}(h]h ]h"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]uh1j hj*hMghjT*ubeh}(h]h ]h"]h$]h&]uh1j hj8*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.hhMihj8*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.hhMkhj*ubah}(h]h ]h"]h$]h&]uh1jhj8*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](j)}(hvoidh]hvoid}(hj +hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj+hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMzubj )}(h h]h }(hj/+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+hhhj.+hMzubj$ )}(h%media_device_unregister_entity_notifyh]j* )}(h%media_device_unregister_entity_notifyh]h%media_device_unregister_entity_notify}(hjA+hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj=+ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj+hhhj.+hMzubj)}(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 hjY+ubj )}(h h]h }(hjj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjY+ubh)}(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 classnameNj%j()}j+]j )}jjC+sb'c.media_device_unregister_entity_notifyasbuh1hhjY+ubj )}(h h]h }(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjY+ubj4)}(hj7h]h*}(hj+hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjY+ubj* )}(hmdevh]hmdev}(hj+hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjY+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjU+ubj)}(h struct media_entity_notify *nptrh](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_entity_notifyh]hmedia_entity_notify}(hj+hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNj%j()}j+]j+'c.media_device_unregister_entity_notifyasbuh1hhj+ubj )}(h h]h }(hj ,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubj4)}(hj7h]h*}(hj,hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj+ubj* )}(hnptrh]hnptr}(hj&,hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj+ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjU+ubeh}(h]h ]h"]h$]h&]hhuh1jhj+hhhj.+hMzubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj+hhhj.+hMzubah}(h]j+ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj.+hMzhj+hhubjV )}(hhh]h)}(h)Unregister a media entity notify callbackh]h)Unregister a media entity notify callback}(hjP,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMshjM,hhubah}(h]h ]h"]h$]h&]uh1jU hj+hhhj.+hMzubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jh,jx jh,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)}(hjr,h]h Parameters}(hjt,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjp,ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMwhjl,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.hhMvhj,ubj )}(hhh]h)}(hThe media deviceh]hThe media device}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hMvhj,ubah}(h]h ]h"]h$]h&]uh1j hj,ubeh}(h]h ]h"]h$]h&]uh1j hj,hMvhj,ubj )}(h<``struct media_entity_notify *nptr`` The media_entity_notifyh](j )}(h$``struct media_entity_notify *nptr``h]j~)}(hj,h]h struct media_entity_notify *nptr}(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.hhMxhj,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.hhMwhj,ubah}(h]h ]h"]h$]h&]uh1j hj,ubeh}(h]h ]h"]h$]h&]uh1j hj,hMxhj,ubeh}(h]h ]h"]h$]h&]uh1j hjl,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](j)}(hvoidh]hvoid}(hj$-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj -hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj )}(h h]h }(hj3-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj -hhhj2-hMubj$ )}(hmedia_device_pci_inith]j* )}(hmedia_device_pci_inith]hmedia_device_pci_init}(hjE-hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjA-ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj -hhhj2-hMubj)}(hF(struct media_device *mdev, struct pci_dev *pci_dev, const char *name)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hja-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]-ubj )}(h h]h }(hjn-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 classnameNj%j()}j+]j )}jjG-sbc.media_device_pci_initasbuh1hhj]-ubj )}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]-ubj4)}(hj7h]h*}(hj-hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj]-ubj* )}(hmdevh]hmdev}(hj-hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj]-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjY-ubj)}(hstruct pci_dev *pci_devh](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* )}(hpci_devh]hpci_dev}(hj-hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj-ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-modnameN classnameNj%j()}j+]j-c.media_device_pci_initasbuh1hhj-ubj )}(h h]h }(hj.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubj4)}(hj7h]h*}(hj.hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj-ubj* )}(hpci_devh]hpci_dev}(hj*.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjY-ubj)}(hconst char *nameh](j )}(hconsth]hconst}(hjC.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?.ubj )}(h h]h }(hjQ.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?.ubj)}(hcharh]hchar}(hj_.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?.ubj )}(h h]h }(hjm.hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?.ubj4)}(hj7h]h*}(hj{.hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj?.ubj* )}(hnameh]hname}(hj.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjY-ubeh}(h]h ]h"]h$]h&]hhuh1jhj -hhhj2-hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj-hhhj2-hMubah}(h]j-ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj2-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~)}(hj.h]h media_device}(hj.hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj.ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j()}j+]j-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.hhMhj.hhubah}(h]h ]h"]h$]h&]uh1jU hj-hhhj2-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 }(hj5/hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj?/h]h media_device}(hjA/hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj=/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhj1/hMhj5/ubeh}(h]h ]h"]h$]h&]uh1hhj1/hMhj2/ubah}(h]h ]h"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]uh1j hj1/hMhj/ubj )}(h6``struct pci_dev *pci_dev`` pointer to struct pci_dev h](j )}(h``struct pci_dev *pci_dev``h]j~)}(hjt/h]hstruct pci_dev *pci_dev}(hjv/hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjr/ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjn/ubj )}(hhh]h)}(hpointer to struct pci_devh]hpointer to struct pci_dev}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1j hjn/ubeh}(h]h ]h"]h$]h&]uh1j hj/hMhj/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~)}(hj/h]hconst char *name}(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)}(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 }(hj/hhhNhNubj~)}(h``NULL``h]hNULL}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj/ubhV, the routine will use the default name for the pci device, given by pci_name() macro.}(hj/hhhNhNubeh}(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 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](j)}(hvoidh]hvoid}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj0hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj )}(h h]h }(hj'0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0hhhj&0hMubj$ )}(h__media_device_usb_inith]j* )}(h__media_device_usb_inith]h__media_device_usb_init}(hj90hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj50ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj0hhhj&0hMubj)}(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}(hjU0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQ0ubj )}(h h]h }(hjb0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQ0ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjs0hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjp0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetju0modnameN classnameNj%j()}j+]j )}jj;0sbc.__media_device_usb_initasbuh1hhjQ0ubj )}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQ0ubj4)}(hj7h]h*}(hj0hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjQ0ubj* )}(hmdevh]hmdev}(hj0hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjQ0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjM0ubj)}(hstruct usb_device *udevh](j )}(hj h]hstruct}(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj )}(h h]h }(hj0hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubh)}(hhh]j* )}(h usb_deviceh]h usb_device}(hj0hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNj%j()}j+]j0c.__media_device_usb_initasbuh1hhj0ubj )}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj4)}(hj7h]h*}(hj1hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj0ubj* )}(hudevh]hudev}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjM0ubj)}(hconst char *board_nameh](j )}(hjE.h]hconst}(hj71hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj31ubj )}(h h]h }(hjD1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj31ubj)}(hcharh]hchar}(hjR1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj31ubj )}(h h]h }(hj`1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj31ubj4)}(hj7h]h*}(hjn1hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj31ubj* )}(h board_nameh]h board_name}(hj{1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj31ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjM0ubj)}(hconst char *driver_nameh](j )}(hjE.h]hconst}(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj )}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj)}(hcharh]hchar}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj )}(h h]h }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj1ubj4)}(hj7h]h*}(hj1hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj1ubj* )}(h driver_nameh]h driver_name}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjM0ubeh}(h]h ]h"]h$]h&]hhuh1jhj0hhhj&0hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj0hhhj&0hMubah}(h]j 0ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj&0hMhj 0hhubjV )}(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~)}(hj 2h]h media_device}(hj2hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj 2ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j()}j+]j0c.__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.hhMhj1hhubah}(h]h ]h"]h$]h&]uh1jU hj 0hhhj&0hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jB2jx jB2jy 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)}(hjL2h]h Parameters}(hjN2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ2ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjF2ubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hjk2h]hstruct media_device *mdev}(hjm2hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hji2ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhje2ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to 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 refexplicitrefwarnj%j)j media_deviceuh1hhj2hMhj2ubeh}(h]h ]h"]h$]h&]uh1hhj2hMhj2ubah}(h]h ]h"]h$]h&]uh1j hje2ubeh}(h]h ]h"]h$]h&]uh1j hj2hMhjb2ubj )}(h9``struct usb_device *udev`` pointer to struct usb_device h](j )}(h``struct usb_device *udev``h]j~)}(hj2h]hstruct usb_device *udev}(hj2hhhNhNubah}(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:333: ./include/media/media-device.hhMhj2ubj )}(hhh]h)}(hpointer to struct usb_deviceh]hpointer to struct usb_device}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj2hMhj2ubah}(h]h ]h"]h$]h&]uh1j hj2ubeh}(h]h ]h"]h$]h&]uh1j hj2hMhjb2ubj )}(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~)}(hj2h]hconst char *board_name}(hj2hhhNhNubah}(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:333: ./include/media/media-device.hhMhj2ubj )}(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 hj2ubeh}(h]h ]h"]h$]h&]uh1j hj3hMhjb2ubj )}(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~)}(hjH3h]hconst char *driver_name}(hjJ3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjF3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjB3ubj )}(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 }(hja3hhhNhNubj~)}(h``NULL``h]hNULL}(hji3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hja3ubh), the routine will use the name given by }(hja3hhhNhNubj~)}(h``udev->dev->driver->name``h]hudev->dev->driver->name}(hj{3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hja3ubh(, with is usually the wrong thing to do.}(hja3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj^3ubah}(h]h ]h"]h$]h&]uh1j hjB3ubeh}(h]h ]h"]h$]h&]uh1j hj]3hMhjb2ubeh}(h]h ]h"]h$]h&]uh1j hjF2ubh)}(h**Description**h]j)}(hj3h]h Description}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjF2ubj)}(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 }(hj3hhhNhNubj~)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3ubh.}(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&]uh1jhjF2ubeh}(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}(hj 4hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj 4ubah}(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 hj4hhhj 4hMubah}(h]j3ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj 4hMhj3hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hj3hhhj 4hMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw j94jx j94jy jz j{ uh1j hhhj hNhNubh)}(h,``media_device_usb_init (mdev, udev, name)``h]j~)}(hj?4h]h(media_device_usb_init (mdev, udev, name)}(hjA4hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj=4ubah}(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 }(hjY4hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjc4h]h media_device}(hje4hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hja4ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjY4ubh from a PCI device.}(hjY4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj4hMhjU4ubah}(h]h ]h"]h$]h&]uh1jhj4hMhj 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)}(hj4h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj4ubj )}(hhh](j )}(h2``mdev`` pointer to struct :c:type:`media_device` h](j )}(h``mdev``h]j~)}(hj4h]hmdev}(hj4hhhNhNubah}(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:333: ./include/media/media-device.hhMhj4ubj )}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj4hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hj4h]h media_device}(hj4hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj4ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhj4hMhj4ubeh}(h]h ]h"]h$]h&]uh1hhj4hMhj4ubah}(h]h ]h"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]uh1j hj4hMhj4ubj )}(h&``udev`` pointer to struct usb_device h](j )}(h``udev``h]j~)}(hj5h]hudev}(hj5hhhNhNubah}(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.hhMhj5ubj )}(hhh]h)}(hpointer to struct usb_deviceh]hpointer to struct usb_device}(hj'5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj#5hMhj$5ubah}(h]h ]h"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]uh1j hj#5hMhj4ubj )}(hb``name`` media device name. If ``NULL``, the routine will use the usb product name, if available. h](j )}(h``name``h]j~)}(hjG5h]hname}(hjI5hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjE5ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjA5ubj )}(hhh]h)}(hXmedia device name. If ``NULL``, the routine will use the usb product name, if available.h](hmedia device name. If }(hj`5hhhNhNubj~)}(h``NULL``h]hNULL}(hjh5hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj`5ubh:, the routine will use the usb product name, if available.}(hj`5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj]5ubah}(h]h ]h"]h$]h&]uh1j hjA5ubeh}(h]h ]h"]h$]h&]uh1j hj\5hMhj4ubeh}(h]h ]h"]h$]h&]uh1j hj4ubh)}(h**Description**h]j)}(hj5h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj4ubh)}(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() }(hj5hhhNhNubj)}(h**driver_name**h]h driver_name}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh parameter filled with }(hj5hhhNhNubj~)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5ubh.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj4ubeh}(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](j)}(hvoidh]hvoid}(hj5hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj )}(h h]h }(hj 6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj5hhhj 6hMubj$ )}(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# hj5hhhj 6hMubj)}(h:(char *bus_info, size_t bus_info_size, struct device *dev)h](j)}(hchar *bus_infoh](j)}(hcharh]hchar}(hj;6hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj76ubj )}(h h]h }(hjI6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj76ubj4)}(hj7h]h*}(hjW6hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj76ubj* )}(hbus_infoh]hbus_info}(hjd6hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj76ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj36ubj)}(hsize_t bus_info_sizeh](h)}(hhh]j* )}(hsize_th]hsize_t}(hj6hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj}6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNj%j()}j+]j )}jj!6sbc.media_set_bus_infoasbuh1hhjy6ubj )}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjy6ubj* )}(h bus_info_sizeh]h bus_info_size}(hj6hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjy6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj36ubj)}(hstruct device *devh](j )}(hj h]hstruct}(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubj )}(h h]h }(hj6hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubh)}(hhh]j* )}(hdeviceh]hdevice}(hj6hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNj%j()}j+]j6c.media_set_bus_infoasbuh1hhj6ubj )}(h h]h }(hj7hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubj4)}(hj7h]h*}(hj7hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj6ubj* )}(hdevh]hdev}(hj7hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj36ubeh}(h]h ]h"]h$]h&]hhuh1jhj5hhhj 6hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj5hhhj 6hMubah}(h]j5ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj 6hMhj5hhubjV )}(hhh]h)}(hSet bus_info fieldh]hSet bus_info field}(hjH7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjE7hhubah}(h]h ]h"]h$]h&]uh1jU hj5hhhj 6hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j`7jx j`7jy 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)}(hjj7h]h Parameters}(hjl7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjh7ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjd7ubj )}(hhh](j )}(hE``char *bus_info`` Variable where to write the bus info (char array) h](j )}(h``char *bus_info``h]j~)}(hj7h]hchar *bus_info}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj7ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj7ubj )}(hhh]h)}(h1Variable where to write the bus info (char array)h]h1Variable where to write the bus info (char array)}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j hj7ubeh}(h]h ]h"]h$]h&]uh1j hj7hMhj7ubj )}(h0``size_t bus_info_size`` Length of the bus_info h](j )}(h``size_t bus_info_size``h]j~)}(hj7h]hsize_t bus_info_size}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj7ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj7ubj )}(hhh]h)}(hLength of the bus_infoh]hLength of the bus_info}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7hMhj7ubah}(h]h ]h"]h$]h&]uh1j hj7ubeh}(h]h ]h"]h$]h&]uh1j hj7hMhj7ubj )}(h-``struct device *dev`` Related struct device h](j )}(h``struct device *dev``h]j~)}(hj7h]hstruct device *dev}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj7ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj7ubj )}(hhh]h)}(hRelated struct deviceh]hRelated struct device}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j hj7ubeh}(h]h ]h"]h$]h&]uh1j hj8hMhj7ubeh}(h]h ]h"]h$]h&]uh1j hjd7ubh)}(h**Description**h]j)}(hj68h]h Description}(hj88hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj48ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjd7ubh)}(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 }(hjL8hhhNhNubh)}(h :c:type:`dev`h]j~)}(hjV8h]hdev}(hjX8hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjT8ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjL8ubhi. This is currently done for PCI and platform devices. dev is required to be non-NULL for this to happen.}(hjL8hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjs8hMhjd7ubh)}(h5This function is not meant to be called from drivers.h]h5This function is not meant to be called from drivers.}(hj~8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjd7ubeh}(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}(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj )}(h h]h }(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj8hhhj8hKubj$ )}(hmedia_file_operationsh]j* )}(hj8h]hmedia_file_operations}(hj8hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj8ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj8hhhj8hKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj8hhhj8hKubah}(h]j8ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj8hKhj8hhubjV )}(hhh]h)}(hMedia device file operationsh]hMedia device file operations}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK"hj8hhubah}(h]h ]h"]h$]h&]uh1jU hj8hhhj8hKubeh}(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&hj 9ubj)}(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 *); };}hj,9sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK(hj 9ubh)}(h **Members**h]j)}(hj=9h]hMembers}(hj?9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;9ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK3hj 9ubj )}(hhh](j )}(h0``owner`` should be filled with ``THIS_MODULE`` h](j )}(h ``owner``h]j~)}(hj\9h]howner}(hj^9hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjZ9ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK%hjV9ubj )}(hhh]h)}(h%should be filled with ``THIS_MODULE``h](hshould be filled with }(hju9hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj}9hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hju9ubeh}(h]h ]h"]h$]h&]uh1hhjq9hK%hjr9ubah}(h]h ]h"]h$]h&]uh1j hjV9ubeh}(h]h ]h"]h$]h&]uh1j hjq9hK%hjS9ubj )}(h@``read`` pointer to the function that implements read() syscall h](j )}(h``read``h]j~)}(hj9h]hread}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK&hj9ubj )}(hhh]h)}(h6pointer to the function that implements read() syscallh]h6pointer to the function that implements read() syscall}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hK&hj9ubah}(h]h ]h"]h$]h&]uh1j hj9ubeh}(h]h ]h"]h$]h&]uh1j hj9hK&hjS9ubj )}(hB``write`` pointer to the function that implements write() syscall h](j )}(h ``write``h]j~)}(hj9h]hwrite}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK'hj9ubj )}(hhh]h)}(h7pointer to the function that implements write() syscallh]h7pointer to the function that implements write() syscall}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hK'hj9ubah}(h]h ]h"]h$]h&]uh1j hj9ubeh}(h]h ]h"]h$]h&]uh1j hj9hK'hjS9ubj )}(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(hjS9ubj )}(hB``ioctl`` pointer to the function that implements ioctl() syscall h](j )}(h ``ioctl``h]j~)}(hjN:h]hioctl}(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)}(h7pointer to the function that implements ioctl() syscallh]h7pointer to the function that implements ioctl() 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)hjS9ubj )}(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~)}(hj:h]h compat_ioctl}(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)}(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.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK*hj:ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj:hK+hjS9ubj )}(h@``open`` pointer to the function that implements open() syscall h](j )}(h``open``h]j~)}(hj:h]hopen}(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 open() syscallh]h6pointer to the function that implements open() 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,hjS9ubj )}(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.hhK-hj: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;hK-hj;ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj;hK-hjS9ubeh}(h]h ]h"]h$]h&]uh1j hj 9ubeh}(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}(hje;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hja;hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK4ubj )}(h h]h }(hjs;hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hja;hhhjr;hK4ubj$ )}(h media_devnodeh]j* )}(hj_;h]h media_devnode}(hj;hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj;ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hja;hhhjr;hK4ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj];hhhjr;hK4ubah}(h]jX;ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjr;hK4hjZ;hhubjV )}(hhh]h)}(hMedia device nodeh]hMedia 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.hhK;hj;hhubah}(h]h ]h"]h$]h&]uh1jU hjZ;hhhjr;hK4ubeh}(h]h ](jstructeh"]h$]h&]jv jjw j;jx j;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}(hj;hhhNhNubah}(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:335: ./include/media/media-devnode.hhK?hj;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.hhKAhj;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.hhKLhj;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.hhK=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~)}(hj7<h]h media_device}(hj9<hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj5<ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhj)<hK=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 )}(hQ``fops`` pointer to struct :c:type:`media_file_operations` with media device ops h](j )}(h``fops``h]j~)}(hjl<h]hfops}(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.hhK>hjf<ubj )}(hhh]h)}(hGpointer to struct :c:type:`media_file_operations` with media device opsh](hpointer to struct }(hj<hhhNhNubh)}(h:c:type:`media_file_operations`h]j~)}(hj<h]hmedia_file_operations}(hj<hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj<ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jmedia_file_operationsuh1hhj<hK>hj<ubh with media device ops}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj<hK>hj<ubah}(h]h ]h"]h$]h&]uh1j hjf<ubeh}(h]h ]h"]h$]h&]uh1j hj<hK>hj <ubj )}(hR``dev`` pointer to struct :c:type:`device` containing the media controller device h](j )}(h``dev``h]j~)}(hj<h]hdev}(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)}(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 refexplicitrefwarnj%j)jdeviceuh1hhj<hK?hj<ubh' containing the media controller device}(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 )}(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.hhK@hj=ubj )}(hhh]h)}(h$struct cdev pointer character deviceh]h$struct cdev pointer character device}(hj==hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9=hK@hj:=ubah}(h]h ]h"]h$]h&]uh1j hj=ubeh}(h]h ]h"]h$]h&]uh1j hj9=hK@hj <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.hhKAhjW=ubj )}(hhh]h)}(h parent deviceh]h parent device}(hjv=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjr=hKAhjs=ubah}(h]h ]h"]h$]h&]uh1j hjW=ubeh}(h]h ]h"]h$]h&]uh1j hjr=hKAhj <ubj )}(h#``minor`` device node minor number h](j )}(h ``minor``h]j~)}(hj=h]hminor}(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)}(hdevice node minor numberh]hdevice node minor number}(hj=hhhNhNubah}(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 )}(h?``flags`` flags, combination of the ``MEDIA_FLAG_*`` constants 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 hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKChj=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=hKChj=ubah}(h]h ]h"]h$]h&]uh1j hj=ubeh}(h]h ]h"]h$]h&]uh1j hj=hKChj <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.hhKDhj>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 }(hj3>hhhNhNubj~)}(h``media_devnode_release()``h]hmedia_devnode_release()}(hj;>hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3>ubh routine at media-device.c.}(hj3>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj/>hKDhj0>ubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hj/>hKDhj <ubeh}(h]h ]h"]h$]h&]uh1j hj;ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjn>h]h Description}(hjp>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjl>ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKHhj 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.hhKFhj 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}(hj>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.hhKHhj 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](j)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj>hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKrubj )}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>hhhj>hKrubj$ )}(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# hj>hhhj>hKrubj)}(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 classnameNj%j()}j+]j )}jj>sbc.media_devnode_registerasbuh1hhj?ubj )}(h h]h }(hjH?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubj4)}(hj7h]h*}(hjV?hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj?ubj* )}(hmdevh]hmdev}(hjc?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 hjx?ubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjx?ubh)}(hhh]j* )}(h media_devnodeh]h media_devnode}(hj?hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNj%j()}j+]jD?c.media_devnode_registerasbuh1hhjx?ubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjx?ubj4)}(hj7h]h*}(hj?hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjx?ubj* )}(hdevnodeh]hdevnode}(hj?hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjx?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 classnameNj%j()}j+]jD?c.media_devnode_registerasbuh1hhj?ubj )}(h h]h }(hj(@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubj4)}(hj7h]h*}(hj6@hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj?ubj* )}(hownerh]howner}(hjC@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj?ubeh}(h]h ]h"]h$]h&]hhuh1jhj>hhhj>hKrubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj>hhhj>hKrubah}(h]j>ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj>hKrhj>hhubjV )}(hhh]h)}(hregister a media device nodeh]hregister a media device node}(hjm@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKbhjj@hhubah}(h]h ]h"]h$]h&]uh1jU hj>hhhj>hKrubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j@jx j@jy 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@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:335: ./include/media/media-devnode.hhKfhj@ubj )}(hhh](j )}(hT``struct media_device *mdev`` struct media_device we want to register a device node 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:335: ./include/media/media-devnode.hhKdhj@ubj )}(hhh]h)}(h5struct media_device we want to register a device nodeh]h5struct media_device we want to register a device node}(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 )}(hR``struct media_devnode *devnode`` media device node structure we want to register h](j )}(h!``struct media_devnode *devnode``h]j~)}(hj@h]hstruct media_devnode *devnode}(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/media device node structure we want to registerh]h/media device node structure we want to register}(hjAhhhNhNubah}(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?``struct module *owner`` should be filled with ``THIS_MODULE`` h](j )}(h``struct module *owner``h]j~)}(hj Ah]hstruct module *owner}(hj"AhhhNhNubah}(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:335: ./include/media/media-devnode.hhKfhjAubj )}(hhh]h)}(h%should be filled with ``THIS_MODULE``h](hshould be filled with }(hj9AhhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hjAAhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9Aubeh}(h]h ]h"]h$]h&]uh1hhj5AhKfhj6Aubah}(h]h ]h"]h$]h&]uh1j hjAubeh}(h]h ]h"]h$]h&]uh1j hj5AhKfhj@ubeh}(h]h ]h"]h$]h&]uh1j hj@ubh)}(h**Description**h]j)}(hjiAh]h Description}(hjkAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgAubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhhj@ubh)}(hThe 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.h]hThe 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.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhhj@ubh)}(hZero is returned on success.h]hZero is returned on success.}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKlhj@ubh)}(hNote 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](hmNote that if the media_devnode_register call fails, the release() callback of the media_devnode structure is }(hjAhhhNhNubhemphasis)}(h*not*h]hnot}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jAhjAubh; called, so the caller is responsible for freeing any data.}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKnhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j -media_devnode_unregister_prepare (C function)"c.media_devnode_unregister_preparehNtauh1j hj hhhNhNubj )}(hhh](j )}(hEvoid media_devnode_unregister_prepare (struct media_devnode *devnode)h]j )}(hDvoid media_devnode_unregister_prepare(struct media_devnode *devnode)h](j)}(hvoidh]hvoid}(hjAhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjAhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjAhhhjAhKubj$ )}(h media_devnode_unregister_prepareh]j* )}(h media_devnode_unregister_prepareh]h media_devnode_unregister_prepare}(hjBhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjAubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjAhhhjAhKubj)}(h(struct media_devnode *devnode)h]j)}(hstruct media_devnode *devnodeh](j )}(hj h]hstruct}(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubj )}(h h]h }(hj*BhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubh)}(hhh]j* )}(h media_devnodeh]h media_devnode}(hj;BhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj8Bubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=BmodnameN classnameNj%j()}j+]j )}jjBsb"c.media_devnode_unregister_prepareasbuh1hhjBubj )}(h h]h }(hj[BhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjBubj4)}(hj7h]h*}(hjiBhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjBubj* )}(hdevnodeh]hdevnode}(hjvBhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBubah}(h]h ]h"]h$]h&]hhuh1jhjAhhhjAhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjAhhhjAhKubah}(h]jAah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjAhKhjAhhubjV )}(hhh]h)}(h(clear the media device node register bith]h(clear the media device node register bit}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKwhjBhhubah}(h]h ]h"]h$]h&]uh1jU hjAhhhjAhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jBjx jBjy jz j{ uh1j hhhj hNhNubj} )}(hX**Parameters** ``struct media_devnode *devnode`` the device node to prepare for unregister **Description** This clears the passed device register bit. Future open calls will be met with errors. Should be called before media_devnode_unregister() to avoid races with unregister and device file open calls. This function can safely be called if the device node has never been registered or has already been unregistered.h](h)}(h**Parameters**h]j)}(hjBh]h Parameters}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK{hjBubj )}(hhh]j )}(hL``struct media_devnode *devnode`` the device node to prepare for unregister h](j )}(h!``struct media_devnode *devnode``h]j~)}(hjBh]hstruct media_devnode *devnode}(hjBhhhNhNubah}(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:335: ./include/media/media-devnode.hhKxhjBubj )}(hhh]h)}(h)the device node to prepare for unregisterh]h)the device node to prepare for unregister}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKxhjBubah}(h]h ]h"]h$]h&]uh1j hjBubeh}(h]h ]h"]h$]h&]uh1j hjBhKxhjBubah}(h]h ]h"]h$]h&]uh1j hjBubh)}(h**Description**h]j)}(hjCh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKzhjBubh)}(hThis clears the passed device register bit. Future open calls will be met with errors. Should be called before media_devnode_unregister() to avoid races with unregister and device file open calls.h]hThis clears the passed device register bit. Future open calls will be met with errors. Should be called before media_devnode_unregister() to avoid races with unregister and device file open calls.}(hj2ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKzhjBubh)}(hqThis function can safely be called if the device node has never been registered or has already been unregistered.h]hqThis function can safely be called if the device node has never been registered or has already been unregistered.}(hjAChhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK~hjBubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_devnode_unregister (C function)c.media_devnode_unregisterhNtauh1j hj hhhNhNubj )}(hhh](j )}(h=void media_devnode_unregister (struct media_devnode *devnode)h]j )}(hint media_devnode_is_registered(struct media_devnode *devnode)h](j)}(hinth]hint}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjFhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj )}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjFhhhjFhKubj$ )}(hmedia_devnode_is_registeredh]j* )}(hmedia_devnode_is_registeredh]hmedia_devnode_is_registered}(hjFhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjFubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjFhhhjFhKubj)}(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 }(hj$GhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubh)}(hhh]j* )}(h media_devnodeh]h media_devnode}(hj5GhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj2Gubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7GmodnameN classnameNj%j()}j+]j )}jjFsbc.media_devnode_is_registeredasbuh1hhjGubj )}(h h]h }(hjUGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubj4)}(hj7h]h*}(hjcGhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjGubj* )}(hdevnodeh]hdevnode}(hjpGhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubah}(h]h ]h"]h$]h&]hhuh1jhjFhhhjFhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjFhhhjFhKubah}(h]jFah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjFhKhjFhhubjV )}(hhh]h)}(hGreturns true if :c:type:`media_devnode` is registered; false otherwise.h](hreturns true if }(hjGhhhNhNubh)}(h:c:type:`media_devnode`h]j~)}(hjGh]h media_devnode}(hjGhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjGubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j()}j+]jQGc.media_devnode_is_registeredasbj media_devnodeuh1hhj'FhKhjGubh is registered; false otherwise.}(hjGhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjGhhubah}(h]h ]h"]h$]h&]uh1jU hjFhhhjFhKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jGjx jGjy 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)}(hjGh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjGubj )}(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.hhKhjGubj )}(hhh]h)}(h*pointer to struct :c:type:`media_devnode`.h](hpointer to struct }(hjHhhhNhNubh)}(h:c:type:`media_devnode`h]j~)}(hj&Hh]h media_devnode}(hj(HhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj$Hubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_devnodeuh1hhjHhKhjHubh.}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjHhKhjHubah}(h]h ]h"]h$]h&]uh1j hjGubeh}(h]h ]h"]h$]h&]uh1j hjHhKhjGubah}(h]h ]h"]h$]h&]uh1j hjGubh)}(h**Note**h]j)}(hjaHh]hNote}(hjcHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_Hubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjGubh)}(h'If mdev is NULL, it also returns false.h]h'If mdev is NULL, it also returns false.}(hjwHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjGubeh}(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}(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hjHhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjHhhhjHhKubj$ )}(hmedia_gobj_typeh]j* )}(hjHh]hmedia_gobj_type}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjHubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjHhhhjHhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjHhhhjHhKubah}(h]jHah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjHhKhjHhhubjV )}(hhh]h)}(htype of a graph objecth]htype of a 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.hhKhjHhhubah}(h]h ]h"]h$]h&]uh1jU hjHhhhjHhKubeh}(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)}(hj Ih]h Constants}(hj IhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Iubah}(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~)}(hj*Ih]hMEDIA_GRAPH_ENTITY}(hj,IhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj(Iubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK!hj$Iubj )}(hhh]h)}(hIdentify a media entityh]hIdentify a media entity}(hjCIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?IhK!hj@Iubah}(h]h ]h"]h$]h&]uh1j hj$Iubeh}(h]h ]h"]h$]h&]uh1j hj?IhK!hj!Iubj )}(h)``MEDIA_GRAPH_PAD`` Identify a media pad h](j )}(h``MEDIA_GRAPH_PAD``h]j~)}(hjcIh]hMEDIA_GRAPH_PAD}(hjeIhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjaIubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK$hj]Iubj )}(hhh]h)}(hIdentify a media padh]hIdentify a media pad}(hj|IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxIhK$hjyIubah}(h]h ]h"]h$]h&]uh1j hj]Iubeh}(h]h ]h"]h$]h&]uh1j hjxIhK$hj!Iubj )}(h+``MEDIA_GRAPH_LINK`` Identify a media link h](j )}(h``MEDIA_GRAPH_LINK``h]j~)}(hjIh]hMEDIA_GRAPH_LINK}(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 linkh]hIdentify a media link}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhK'hjIubah}(h]h ]h"]h$]h&]uh1j hjIubeh}(h]h ]h"]h$]h&]uh1j hjIhK'hj!Iubj )}(hT``MEDIA_GRAPH_INTF_DEVNODE`` Identify a media Kernel API interface via a device nodeh](j )}(h``MEDIA_GRAPH_INTF_DEVNODE``h]j~)}(hjIh]hMEDIA_GRAPH_INTF_DEVNODE}(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)}(h7Identify a media Kernel API interface via a device nodeh]h7Identify a media Kernel API interface via a device node}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhK*hjIubah}(h]h ]h"]h$]h&]uh1j hjIubeh}(h]h ]h"]h$]h&]uh1j hjIhK*hj!Iubeh}(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}(hj.JhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*Jhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK1ubj )}(h h]h }(hjubj )}(h h]h }(hj&LhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLhhhj%LhK>ubj$ )}(hmedia_entity_enumh]j* )}(hjLh]hmedia_entity_enum}(hj8LhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj4Lubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjLhhhj%LhK>ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjLhhhj%LhK>ubah}(h]j Lah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj%LhK>hj LhhubjV )}(hhh]h)}(h!An enumeration of media entities.h]h!An enumeration of media entities.}(hjZLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKDhjWLhhubah}(h]h ]h"]h$]h&]uh1jU hj Lhhhj%LhK>ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jrLjx jrLjy jz j{ uh1j hhhj hNhNubj} )}(h**Definition**:: struct media_entity_enum { unsigned long *bmap; int idx_max; }; **Members** ``bmap`` Bit map in which each bit represents one entity at struct media_entity->internal_idx. ``idx_max`` Number of bits in bmaph](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hj~LhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzLubh:}(hjzLhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKHhjvLubj)}(hGstruct media_entity_enum { unsigned long *bmap; int idx_max; };h]hGstruct media_entity_enum { unsigned long *bmap; int idx_max; };}hjLsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKJhjvLubh)}(h **Members**h]j)}(hjLh]hMembers}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKOhjvLubj )}(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~)}(hjLh]hbmap}(hjLhhhNhNubah}(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.hhKHhjLubj )}(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.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKGhjLubah}(h]h ]h"]h$]h&]uh1j hjLubeh}(h]h ]h"]h$]h&]uh1j hjLhKHhjLubj )}(h"``idx_max`` Number of bits in bmaph](j )}(h ``idx_max``h]j~)}(hjMh]hidx_max}(hjMhhhNhNubah}(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.hhKHhjLubj )}(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 hjLubeh}(h]h ]h"]h$]h&]uh1j hjMhKHhjLubeh}(h]h ]h"]h$]h&]uh1j hjvLubeh}(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}(hj[MhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWMhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKOubj )}(h h]h }(hjiMhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjWMhhhjhMhKOubj$ )}(h media_graphh]j* )}(hjUMh]h media_graph}(hj{MhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjwMubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjWMhhhjhMhKOubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjSMhhhjhMhKOubah}(h]jNMah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhKOhjPMhhubjV )}(hhh]h)}(hMedia graph traversal stateh]hMedia graph traversal state}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKPhjMhhubah}(h]h ]h"]h$]h&]uh1jU hjPMhhhjhMhKOubeh}(h]h ](jstructeh"]h$]h&]jv jjw jMjx jMjy 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}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubh:}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKThjMubj)}(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; };}hjMsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKVhjMubh)}(h **Members**h]j)}(hjMh]hMembers}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK_hjMubj )}(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~)}(hj Nh]hstack}(hj NhhhNhNubah}(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.}(hj#NhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKShj Nubah}(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~)}(hjDNh]h stack.entity}(hjFNhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBNubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKVhj>Nubj )}(hhh]h)}(hEpointer to :c:type:`struct media_entity ` at the graph.h](h pointer to }(hj]NhhhNhNubh)}(h,:c:type:`struct media_entity `h]j~)}(hjgNh]hstruct media_entity}(hjiNhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjeNubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhjYNhKVhj]Nubh at the graph.}(hj]NhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjYNhKVhjZNubah}(h]h ]h"]h$]h&]uh1j hj>Nubeh}(h]h ]h"]h$]h&]uh1j hjYNhKVhjNubj )}(hB``stack.link`` pointer to :c:type:`struct list_head `. h](j )}(h``stack.link``h]j~)}(hjNh]h stack.link}(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.hhKWhjNubj )}(hhh]h)}(h2pointer to :c:type:`struct list_head `.h](h pointer to }(hjNhhhNhNubh)}(h&:c:type:`struct list_head `h]j~)}(hjNh]hstruct list_head}(hjNhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjNubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j list_headuh1hhjNhKWhjNubh.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjNhKWhjNubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjNhKWhjNubj )}(h``ent_enum`` Visited entities h](j )}(h ``ent_enum``h]j~)}(hjNh]hent_enum}(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.hhKXhjNubj )}(hhh]h)}(hVisited entitiesh]hVisited entities}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhKXhjOubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjOhKXhjNubj )}(h``top`` The top of the stackh](j )}(h``top``h]j~)}(hj5Oh]htop}(hj7OhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj3Oubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKXhj/Oubj )}(hhh]h)}(hThe top of the stackh]hThe top of the stack}(hjNOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKYhjKOubah}(h]h ]h"]h$]h&]uh1j hj/Oubeh}(h]h ]h"]h$]h&]uh1j hjJOhKXhjNubeh}(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_pipeline (C struct)c.media_pipelinehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipelineh]j )}(hstruct media_pipelineh](j )}(hj h]hstruct}(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK_ubj )}(h h]h }(hjOhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOhhhjOhK_ubj$ )}(hmedia_pipelineh]j* )}(hjOh]hmedia_pipeline}(hjOhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjOubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjOhhhjOhK_ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjOhhhjOhK_ubah}(h]jOah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjOhK_hjOhhubjV )}(hhh]h)}(h"Media pipeline related informationh]h"Media pipeline related information}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKehjOhhubah}(h]h ]h"]h$]h&]uh1jU hjOhhhjOhK_ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jOjx jOjy 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}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubh:}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKihjOubj)}(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.hhKkhjOubh)}(h **Members**h]j)}(hjPh]hMembers}(hj!PhhhNhNubah}(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.hhKrhjOubj )}(hhh](j )}(hB``allocated`` Media pipeline allocated and freed by the framework h](j )}(h ``allocated``h]j~)}(hj>Ph]h allocated}(hj@PhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj` 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 }(hjRhhhNhNubh)}(h$:c:type:`media_pad.pads `h]j~)}(hjRh]hmedia_pad.pads}(hjRhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjRubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_paduh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKzhjRubhP list. media_pipeline_stop() removes the entries from the list and deletes them.}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjRhKzhj 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}(hj(ShhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj$Subah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjShhhjShKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjShhhjShKubah}(h]jRah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjShKhjRhhubjV )}(hhh]h)}(h(Iterator for media_pipeline_for_each_padh]h(Iterator for media_pipeline_for_each_pad}(hjJShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjGShhubah}(h]h ]h"]h$]h&]uh1jU hjRhhhjShKubeh}(h]h ](jstructeh"]h$]h&]jv jjw jbSjx jbSjy 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}(hjnShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjSubh:}(hjjShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjfSubj)}(hAstruct media_pipeline_pad_iter { struct list_head *cursor; };h]hAstruct media_pipeline_pad_iter { struct list_head *cursor; };}hjSsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjfSubh)}(h **Members**h]j)}(hjSh]hMembers}(hjShhhNhNubah}(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.hhKhjfSubj )}(hhh]j )}(h``cursor`` The current elementh](j )}(h ``cursor``h]j~)}(hjSh]hcursor}(hjShhhNhNubah}(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:337: ./include/media/media-entity.hhKhjSubj )}(hhh]h)}(hThe current elementh]hThe current element}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjSubah}(h]h ]h"]h$]h&]uh1j hjSubeh}(h]h ]h"]h$]h&]uh1j hjShKhjSubah}(h]h ]h"]h$]h&]uh1j hjfSubeh}(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 hj Thhhf/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 hj ThhhjThKubj$ )}(hmedia_pipeline_entity_iterh]j* )}(hj Th]hmedia_pipeline_entity_iter}(hj1ThhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj-Tubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj ThhhjThKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj ThhhjThKubah}(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}(hjSThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjPThhubah}(h]h ]h"]h$]h&]uh1jU hjThhhjThKubeh}(h]h ](jstructeh"]h$]h&]jv jjw jkTjx jkTjy 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}(hjwThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsTubh:}(hjsThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjoTubj)}(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; };}hjTsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjoTubh)}(h **Members**h]j)}(hjTh]hMembers}(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.hhKhjoTubj )}(hhh](j )}(h,``ent_enum`` The entity enumeration tracker h](j )}(h ``ent_enum``h]j~)}(hjTh]hent_enum}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjTubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjTubj )}(hhh]h)}(hThe entity enumeration trackerh]hThe entity enumeration tracker}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThKhjTubah}(h]h ]h"]h$]h&]uh1j hjTubeh}(h]h ]h"]h$]h&]uh1j hjThKhjTubj )}(h``cursor`` The current elementh](j )}(h ``cursor``h]j~)}(hjTh]hcursor}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjTubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjTubj )}(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 hjTubeh}(h]h ]h"]h$]h&]uh1j hjUhKhjTubeh}(h]h ]h"]h$]h&]uh1j hjoTubeh}(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}(hjSUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOUhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hjaUhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOUhhhj`UhKubj$ )}(h media_linkh]j* )}(hjMUh]h media_link}(hjsUhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjoUubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjOUhhhj`UhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjKUhhhj`UhKubah}(h]jFUah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj`UhKhjHUhhubjV )}(hhh]h)}(h$A link object part of a media graph.h]h$A link object part of a media graph.}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUhhubah}(h]h ]h"]h$]h&]uh1jU hjHUhhhj`UhKubeh}(h]h ](jstructeh"]h$]h&]jv jjw jUjx jUjy 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}(hjUhhhNhNubah}(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)}(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; };}hjUsbah}(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)}(hjUh]hMembers}(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.hhKhjUubj )}(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.hhKhjUubj )}(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 hjUubeh}(h]h ]h"]h$]h&]uh1j hjVhKhjUubj )}(hS``list`` Linked list associated with an entity or an interface that owns the link. h](j )}(h``list``h]j~)}(hj;Vh]hlist}(hj=VhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9Vubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj5Vubj )}(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.}(hjTVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjQVubah}(h]h ]h"]h$]h&]uh1j hj5Vubeh}(h]h ]h"]h$]h&]uh1j hjPVhKhjUubj )}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j~)}(hjuVh]h{unnamed_union}}(hjwVhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjsVubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjoVubj )}(hhh]h)}(h anonymoush]h anonymous}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjVubah}(h]h ]h"]h$]h&]uh1j hjoVubeh}(h]h ]h"]h$]h&]uh1j hjVhKhjUubj )}(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~)}(hjVh]hgobj0}(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)}(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.}(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 hjVhKhjUubj )}(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~)}(hjVh]hsource}(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)}(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.hhKhjVubah}(h]h ]h"]h$]h&]uh1j hjVubeh}(h]h ]h"]h$]h&]uh1j hjVhKhjUubj )}(hQ``intf`` Part of a union. Used only if the first object (gobj0) is an interface. h](j )}(h``intf``h]j~)}(hj"Wh]hintf}(hj$WhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj Wubah}(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.}(hj;WhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj8Wubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hj7WhKhjUubj )}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j~)}(hj\Wh]h{unnamed_union}}(hj^WhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjZWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjVWubj )}(hhh]h)}(h anonymoush]h anonymous}(hjuWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjqWhKhjrWubah}(h]h ]h"]h$]h&]uh1j hjVWubeh}(h]h ]h"]h$]h&]uh1j hjqWhKhjUubj )}(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~)}(hjWh]hgobj1}(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)}(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.}(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 hjWhKhjUubj )}(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~)}(hjWh]hsink}(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)}(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.}(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 hjWhKhjUubj )}(hQ``entity`` Part of a union. Used only if the second object (gobj1) is an entity. h](j )}(h ``entity``h]j~)}(hj Xh]hentity}(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)}(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.}(hj"XhhhNhNubah}(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 hjXhKhjUubj )}(hP``reverse`` Pointer to the link for the reverse direction of a pad to pad link. h](j )}(h ``reverse``h]j~)}(hjCXh]hreverse}(hjEXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjAXubah}(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)}(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.}(hj\XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjYXubah}(h]h ]h"]h$]h&]uh1j hj=Xubeh}(h]h ]h"]h$]h&]uh1j hjXXhKhjUubj )}(hB``flags`` Link flags, as defined in uapi/media.h (MEDIA_LNK_FL_*) h](j )}(h ``flags``h]j~)}(hj}Xh]hflags}(hjXhhhNhNubah}(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.hhKhjwXubj )}(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_*)}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjXubah}(h]h ]h"]h$]h&]uh1j hjwXubeh}(h]h ]h"]h$]h&]uh1j hjXhKhjUubj )}(h3``is_backlink`` Indicate if the link is a backlink.h](j )}(h``is_backlink``h]j~)}(hjXh]h is_backlink}(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)}(h#Indicate if the link is a backlink.h]h#Indicate if the link is a backlink.}(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 hjXhKhjUubeh}(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_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 )}(hjHh]henum}(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj Yhhhf/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 hj YhhhjYhKubj$ )}(hmedia_pad_signal_typeh]j* )}(hj Yh]hmedia_pad_signal_type}(hj0YhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj,Yubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj YhhhjYhKubeh}(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}(hjRYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjOYhhubah}(h]h ]h"]h$]h&]uh1jU hjYhhhjYhKubeh}(h]h ](jenumeh"]h$]h&]jv jjw jjYjx jjYjy 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)}(hjtYh]h Constants}(hjvYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrYubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjnYubj )}(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~)}(hjYh]hPAD_SIGNAL_DEFAULT}(hjYhhhNhNubah}(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.hhKhjYubj )}(hhh]h)}(hbDefault signal. Use this when all inputs or all outputs are uniquely identified by the pad number.h]hbDefault signal. Use this when all inputs or all outputs are uniquely identified by the pad number.}(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 hjYubeh}(h]h ]h"]h$]h&]uh1j hjYhKhjYubj )}(h``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. h](j )}(h``PAD_SIGNAL_ANALOG``h]j~)}(hjYh]hPAD_SIGNAL_ANALOG}(hjYhhhNhNubah}(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.hhKhjYubj )}(hhh]h)}(hThe 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.h]hThe 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.}(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 hjYubeh}(h]h ]h"]h$]h&]uh1j hjYhKhjYubj )}(h``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. h](j )}(h``PAD_SIGNAL_DV``h]j~)}(hjZh]h PAD_SIGNAL_DV}(hj ZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjZubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjZubj )}(hhh]h)}(hContains 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.h]hContains 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.}(hj ZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjZubah}(h]h ]h"]h$]h&]uh1j hjZubeh}(h]h ]h"]h$]h&]uh1j hjZhKhjYubj )}(h``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](j )}(h``PAD_SIGNAL_AUDIO``h]j~)}(hjAZh]hPAD_SIGNAL_AUDIO}(hjCZhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj?Zubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj;Zubj )}(hhh]h)}(hContains 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]hContains 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.}(hjZZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWZubah}(h]h ]h"]h$]h&]uh1j hj;Zubeh}(h]h ]h"]h$]h&]uh1j hjVZhKhjYubeh}(h]h ]h"]h$]h&]uh1j hjnYubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pad (C struct) c.media_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_padh]j )}(hstruct media_padh](j )}(hj h]hstruct}(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj )}(h h]h }(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjZhhhjZhKubj$ )}(h media_padh]j* )}(hjZh]h media_pad}(hjZhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjZubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjZhhhjZhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjZhhhjZhKubah}(h]jZah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjZhKhjZhhubjV )}(hhh]h)}(hA media pad graph object.h]hA media pad graph object.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjZhhubah}(h]h ]h"]h$]h&]uh1jU hjZhhhjZhKubeh}(h]h ](jstructeh"]h$]h&]jv jjw jZjx jZjy 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&]uh1jhjZubh:}(hjZhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjZubj)}(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.hhKhjZubh)}(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.hhKhjZubj )}(hhh](j )}(hI``graph_obj`` Embedded structure containing the media object common data h](j )}(h ``graph_obj``h]j~)}(hjJ[h]h graph_obj}(hjL[hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjH[ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjD[ubj )}(hhh]h)}(h:Embedded structure containing the media object common datah]h:Embedded structure containing the media object common data}(hjc[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_[hKhj`[ubah}(h]h ]h"]h$]h&]uh1j hjD[ubeh}(h]h ]h"]h$]h&]uh1j hj_[hKhjA[ubj )}(h&``entity`` Entity this pad belongs to 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.hhKhj}[ubj )}(hhh]h)}(hEntity this pad belongs toh]hEntity this pad 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[hKhjA[ubj )}(hC``index`` Pad index in the entity pads array, numbered from 0 to n h](j )}(h ``index``h]j~)}(hj[h]hindex}(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)}(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 hj[ubeh}(h]h ]h"]h$]h&]uh1j hj[hKhjA[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 \hKhjA[ubj )}(h3``sig_type`` Type of the signal inside a media pad h](j )}(h ``sig_type``h]j~)}(hj.\h]hsig_type}(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)}(h%Type of the signal inside a media padh]h%Type of the signal inside a media pad}(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\hKhjA[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~)}(hjg\h]hflags}(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)}(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)}(hj\h]hinclude/uapi/linux/media.h}(hj\hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj\ubah}(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.hhKhj\ubh (seek for }(hj\hhhNhNubj~)}(h``MEDIA_PAD_FL_*``h]hMEDIA_PAD_FL_*}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj\ubh)}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj\hKhj}\ubah}(h]h ]h"]h$]h&]uh1j hja\ubeh}(h]h ]h"]h$]h&]uh1j hj|\hKhjA[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\hKhjA[ubeh}(h]h ]h"]h$]h&]uh1j hjZubeh}(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}(hj0]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}(hjP]hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjL]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}(hjr]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjo]hhubah}(h]h ]h"]h$]h&]uh1jU hj%]hhhj=]hKubeh}(h]h ](jstructeh"]h$]h&]jv jjw j]jx j]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}(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.hhMhj]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); };}hj]sbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj]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.hhM hj]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.}(hj2^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~)}(hjS^h]h link_validate}(hjU^hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjQ^ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjM^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.}(hjl^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhji^ubah}(h]h ]h"]h$]h&]uh1j hjM^ubeh}(h]h ]h"]h$]h&]uh1j hjh^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~)}(hj^h]hhas_pad_interdep}(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)}(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.}(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]ubeh}(h]h ]h"]h$]h&]uh1j hj]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&]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 refexplicitrefwarnj%j)j 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 )}(hjHh]henum}(hj;_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7_hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjI_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7_hhhjH_hMubj$ )}(hmedia_entity_typeh]j* )}(hj5_h]hmedia_entity_type}(hj[_hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjW_ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj7_hhhjH_hMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj3_hhhjH_hMubah}(h]j._ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjH_hMhj0_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"hjz_hhubah}(h]h ]h"]h$]h&]uh1jU hj0_hhhjH_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)}(hj_h]h Constants}(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.hhM&hj_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~)}(hj_h]hMEDIA_ENTITY_TYPE_BASE}(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 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 hj_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~)}(hj0`h]hMEDIA_ENTITY_TYPE_V4L2_SUBDEV}(hj2`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.}(hjI`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hjF`ubah}(h]h ]h"]h$]h&]uh1j hj*`ubeh}(h]h ]h"]h$]h&]uh1j hjE`hM.hj_ubeh}(h]h ]h"]h$]h&]uh1j hj_ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjs`h]h Description}(hju`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjq`ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM2hj 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.}(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 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 }(hj`hhhNhNubj~)}(h!``MEDIA_ENTITY_TYPE_V4L2_SUBDEV``h]hMEDIA_ENTITY_TYPE_V4L2_SUBDEV}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj`ubh and can safely be cast to a }(hj`hhhNhNubh)}(h:c:type:`v4l2_subdev`h]j~)}(hj`h]h v4l2_subdev}(hj`hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj`ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j v4l2_subdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM0hj`ubh* structure using the container_of() macro.}(hj`hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj`hM0hj 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}(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.hhM9ubj )}(h h]h }(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`hhhjahM9ubj$ )}(h media_entityh]j* )}(hj`h]h media_entity}(hjahhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjaubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj`hhhjahM9ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj`hhhjahM9ubah}(h]j`ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjahM9hj`hhubjV )}(hhh]h)}(hA media entity graph object.h]hA media entity graph object.}(hj7ahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM=hj4ahhubah}(h]h ]h"]h$]h&]uh1jU hj`hhhjahM9ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jOajx jOajy 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}(hj[ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWaubh:}(hjWahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjSaubj)}(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; };}hjtasbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjSaubh)}(h **Members**h]j)}(hjah]hMembers}(hjahhhNhNubah}(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.hhMYhjSaubj )}(hhh](j )}(hJ``graph_obj`` Embedded structure containing the media object common data. h](j )}(h ``graph_obj``h]j~)}(hjah]h graph_obj}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjaubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM@hjaubj )}(hhh]h)}(h;Embedded structure containing the media object common data.h]h;Embedded structure containing the media object common data.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahM@hjaubah}(h]h ]h"]h$]h&]uh1j hjaubeh}(h]h ]h"]h$]h&]uh1j hjahM@hjaubj )}(h``name`` Entity name. h](j )}(h``name``h]j~)}(hjah]hname}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjaubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjaubj )}(hhh]h)}(h Entity name.h]h Entity name.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMAhjaubah}(h]h ]h"]h$]h&]uh1j hjaubeh}(h]h ]h"]h$]h&]uh1j hjahMAhjaubj )}(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.}(hj/bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+bhMBhj,bubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hj+bhMBhjaubj )}(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~)}(hjObh]hfunction}(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.hhMEhjIbubj )}(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 }(hjhbhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjrbh]hinclude/uapi/linux/media.h}(hjtbhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjpbubah}(h]h ]h"]h$]h&]refdocj refdomainj~breftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjhbubh (seek for }(hjhbhhhNhNubj~)}(h``MEDIA_ENT_F_*``h]h MEDIA_ENT_F_*}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjhbubh)}(hjhbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjbhMChjebubah}(h]h ]h"]h$]h&]uh1j hjIbubeh}(h]h ]h"]h$]h&]uh1j hjdbhMEhjaubj )}(hu``flags`` Entity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``) h](j )}(h ``flags``h]j~)}(hjbh]hflags}(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.hhMHhjbubj )}(hhh]h)}(hjEntity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``)h](hEntity flags, as defined in }(hjbhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjbh]hinclude/uapi/linux/media.h}(hjbhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjbubah}(h]h ]h"]h$]h&]refdocj refdomainjbreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMFhjbubh (seek for }(hjbhhhNhNubj~)}(h``MEDIA_ENT_FL_*``h]hMEDIA_ENT_FL_*}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjbubh)}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjchMFhjbubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhMHhjaubj )}(h-``num_pads`` Number of sink and source pads. h](j )}(h ``num_pads``h]j~)}(hj/ch]hnum_pads}(hj1chhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj-cubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMIhj)cubj )}(hhh]h)}(hNumber of sink and source pads.h]hNumber of sink and source pads.}(hjHchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDchMIhjEcubah}(h]h ]h"]h$]h&]uh1j hj)cubeh}(h]h ]h"]h$]h&]uh1j hjDchMIhjaubj )}(hM``num_links`` Total number of links, forward and back, enabled and disabled. h](j )}(h ``num_links``h]j~)}(hjhch]h num_links}(hjjchhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjfcubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMJhjbcubj )}(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.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}chMJhj~cubah}(h]h ]h"]h$]h&]uh1j hjbcubeh}(h]h ]h"]h$]h&]uh1j hj}chMJhjaubj )}(h&``num_backlinks`` Number of backlinks h](j )}(h``num_backlinks``h]j~)}(hjch]h num_backlinks}(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.hhMKhjcubj )}(hhh]h)}(hNumber of backlinksh]hNumber of backlinks}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMKhjcubah}(h]h ]h"]h$]h&]uh1j hjcubeh}(h]h ]h"]h$]h&]uh1j hjchMKhjaubj )}(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~)}(hjch]h internal_idx}(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.hhMMhjcubj )}(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.}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLhjcubah}(h]h ]h"]h$]h&]uh1j hjcubeh}(h]h ]h"]h$]h&]uh1j hjchMMhjaubj )}(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 }(hj-dhhhNhNubj)}(h **num_pads**h]hnum_pads}(hj5dhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-dubh.}(hj-dhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj)dhMNhj*dubah}(h]h ]h"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]uh1j hj)dhMNhjaubj )}(h``links`` List of data links. h](j )}(h ``links``h]j~)}(hj_dh]hlinks}(hjadhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj]dubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMOhjYdubj )}(hhh]h)}(hList of data links.h]hList of data links.}(hjxdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjtdhMOhjudubah}(h]h ]h"]h$]h&]uh1j hjYdubeh}(h]h ]h"]h$]h&]uh1j hjtdhMOhjaubj )}(h``ops`` Entity operations. h](j )}(h``ops``h]j~)}(hjdh]hops}(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.hhMPhjdubj )}(hhh]h)}(hEntity operations.h]hEntity operations.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhMPhjdubah}(h]h ]h"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]uh1j hjdhMPhjaubj )}(h(``use_count`` Use count for the entity. h](j )}(h ``use_count``h]j~)}(hjdh]h use_count}(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.hhMQhjdubj )}(hhh]h)}(hUse count for the entity.h]hUse count for the entity.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhMQhjdubah}(h]h ]h"]h$]h&]uh1j hjdubeh}(h]h ]h"]h$]h&]uh1j hjdhMQhjaubj )}(hP``info`` Union with devnode information. Kept just for backward compatibility. h](j )}(h``info``h]j~)}(hj eh]hinfo}(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.hhMShjeubj )}(hhh]h)}(hFUnion with devnode information. Kept just for backward compatibility.h]hFUnion with devnode information. Kept just for backward compatibility.}(hj#ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMRhj eubah}(h]h ]h"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]uh1j hjehMShjaubj )}(h3``info.dev`` Contains device major and minor info. h](j )}(h ``info.dev``h]j~)}(hjDeh]hinfo.dev}(hjFehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjBeubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMThj>eubj )}(hhh]h)}(h%Contains device major and minor info.h]h%Contains device major and minor info.}(hj]ehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYehMThjZeubah}(h]h ]h"]h$]h&]uh1j hj>eubeh}(h]h ]h"]h$]h&]uh1j hjYehMThjaubj )}(hB``info.dev.major`` device node major, if the device is a devnode. h](j )}(h``info.dev.major``h]j~)}(hj}eh]hinfo.dev.major}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj{eubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjweubj )}(hhh]h)}(h.device node major, if the device is a devnode.h]h.device node major, if the device is a devnode.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehMUhjeubah}(h]h ]h"]h$]h&]uh1j hjweubeh}(h]h ]h"]h$]h&]uh1j hjehMUhjaubj )}(hA``info.dev.minor`` device node minor, if the device is a devnode.h](j )}(h``info.dev.minor``h]j~)}(hjeh]hinfo.dev.minor}(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.hhMUhjeubj )}(hhh]h)}(h.device node minor, if the device is a devnode.h]h.device node minor, if the device is a devnode.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMVhjeubah}(h]h ]h"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]uh1j hjehMUhjaubeh}(h]h ]h"]h$]h&]uh1j hjSaubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjeh]h Description}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhjeubah}(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)}(hj-fhhhNhNubah}(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.hhMYhjfubah}(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_fh]hmedia_entity_for_each_pad}(hjifhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjefubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjafhhhf/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]fhhhj|fhMubah}(h]jXfah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj|fhMhjZfhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjZfhhhj|fhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jfjx jfjy jz j{ uh1j hhhj hNhNubh)}(h,``media_entity_for_each_pad (entity, iter)``h]j~)}(hjfh]h(media_entity_for_each_pad (entity, iter)}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjfubah}(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 an entity h]h)}(h Iterate on all pads in an entityh]h Iterate on all pads in an entity}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyhjfubah}(h]h ]h"]h$]h&]uh1jhjfhMyhj 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)}(hjfh]h Parameters}(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.hhM}hjfubj )}(hhh](j )}(h)``entity`` The entity the pads belong to h](j )}(h ``entity``h]j~)}(hjfh]hentity}(hjfhhhNhNubah}(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.hhMzhjfubj )}(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 hjfubeh}(h]h ]h"]h$]h&]uh1j hjghMzhjfubj )}(h``iter`` The iterator pad h](j )}(h``iter``h]j~)}(hj(gh]hiter}(hj*ghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj&gubah}(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"gubj )}(hhh]h)}(hThe iterator padh]hThe iterator pad}(hjAghhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=ghM{hj>gubah}(h]h ]h"]h$]h&]uh1j hj"gubeh}(h]h ]h"]h$]h&]uh1j hj=ghM{hjfubeh}(h]h ]h"]h$]h&]uh1j hjfubh)}(h**Description**h]j)}(hjcgh]h Description}(hjeghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjagubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjfubh)}(h&Iterate on all pads in a media entity.h]h&Iterate on all pads in a media entity.}(hjyghhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjfubeh}(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}(hjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjghhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjghhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjghhhjghMubj$ )}(hmedia_interfaceh]j* )}(hjgh]hmedia_interface}(hjghhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjgubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjghhhjghMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjghhhjghMubah}(h]jgah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjghMhjghhubjV )}(hhh]h)}(hA media interface graph object.h]hA media interface graph object.}(hjghhhNhNubah}(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 hjghhhjghMubeh}(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&]uh1jhj hubh:}(hj hhhhNhNubeh}(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; };}hj'hsbah}(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)}(hj8hh]hMembers}(hj:hhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6hubah}(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~)}(hjWhh]h graph_obj}(hjYhhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjUhubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjQhubj )}(hhh]h)}(hembedded graph objecth]hembedded graph object}(hjphhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjlhhMhjmhubah}(h]h ]h"]h$]h&]uh1j hjQhubeh}(h]h ]h"]h$]h&]uh1j hjlhhMhjNhubj )}(h3``links`` List of links pointing to graph entities h](j )}(h ``links``h]j~)}(hjhh]hlinks}(hjhhhhNhNubah}(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.hhMhjhubj )}(hhh]h)}(h(List of links pointing to graph entitiesh]h(List of links pointing to graph entities}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhMhjhubah}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]uh1j hjhhMhjNhubj )}(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~)}(hjhh]htype}(hjhhhhNhNubah}(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.hhMhjhubj )}(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 }(hjhhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjhh]hinclude/uapi/linux/media.h}(hjhhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjhubah}(h]h ]h"]h$]h&]refdocj refdomainjhreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhubh (seek for }(hjhhhhNhNubj~)}(h``MEDIA_INTF_T_*``h]hMEDIA_INTF_T_*}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjhubh)}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj ihMhjhubah}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]uh1j hjhhMhjNhubj )}(hw``flags`` Interface flags as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_FL_*``)h](j )}(h ``flags``h]j~)}(hj9ih]hflags}(hj;ihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj7iubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj3iubj )}(hhh]h)}(hmInterface flags as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_FL_*``)h](hInterface flags as defined in }(hjRihhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hj\ih]hinclude/uapi/linux/media.h}(hj^ihhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjZiubah}(h]h ]h"]h$]h&]refdocj refdomainjhireftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjRiubh (seek for }(hjRihhhNhNubj~)}(h``MEDIA_INTF_FL_*``h]hMEDIA_INTF_FL_*}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjRiubh)}(hjRihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjzihMhjOiubah}(h]h ]h"]h$]h&]uh1j hj3iubeh}(h]h ]h"]h$]h&]uh1j hjNihMhjNhubeh}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubh)}(h**Description**h]j)}(hjih]h Description}(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.hhMhj hhubj)}(h=Currently, no flags for :c:type:`media_interface` is defined.h]h)}(hjih](hCurrently, no flags for }(hjihhhNhNubh)}(h:c:type:`media_interface`h]j~)}(hjih]hmedia_interface}(hjihhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjiubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubh is defined.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjihMhjiubah}(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 }(hj*jhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjhhhj)jhMubj$ )}(hmedia_intf_devnodeh]j* )}(hjjh]hmedia_intf_devnode}(hju32 media_gobj_gen_id(enum media_gobj_type type, u64 local_id)h](h)}(hhh]j* )}(hu32h]hu32}(hjdphhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjapubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfpmodnameN classnameNj%j()}j+]j )}jmedia_gobj_gen_idsbc.media_gobj_gen_idasbuh1hhj]phhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]phhhjphMubj$ )}(hmedia_gobj_gen_idh]j* )}(hjph]hmedia_gobj_gen_id}(hjphhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjpubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj]phhhjphMubj)}(h)(enum media_gobj_type type, u64 local_id)h](j)}(henum media_gobj_type typeh](j )}(hjHh]henum}(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubh)}(hhh]j* )}(hmedia_gobj_typeh]hmedia_gobj_type}(hjphhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpmodnameN classnameNj%j()}j+]jpc.media_gobj_gen_idasbuh1hhjpubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjpubj* )}(htypeh]htype}(hjphhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubj)}(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 classnameNj%j()}j+]jpc.media_gobj_gen_idasbuh1hhjqubj )}(h h]h }(hj7qhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqubj* )}(hlocal_idh]hlocal_id}(hjEqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubeh}(h]h ]h"]h$]h&]hhuh1jhj]phhhjphMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjYphhhjphMubah}(h]jTpah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjphMhjVphhubjV )}(hhh]h)}(h,encapsulates type and ID on at the object IDh]h,encapsulates type and ID on at the object ID}(hjoqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjlqhhubah}(h]h ]h"]h$]h&]uh1jU hjVphhhjphMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jqjx jqjy 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)}(hjqh]h Parameters}(hjqhhhNhNubah}(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.hhMhjqubj )}(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~)}(hjqh]henum media_gobj_type type}(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.hhMhjqubj )}(hhh]h)}(h8object type as define at enum :c:type:`media_gobj_type`.h](hobject type as define at enum }(hjqhhhNhNubh)}(h:c:type:`media_gobj_type`h]j~)}(hjqh]hmedia_gobj_type}(hjqhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjqubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jmedia_gobj_typeuh1hhjqhMhjqubh.}(hjqhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjqhMhjqubah}(h]h ]h"]h$]h&]uh1j hjqubeh}(h]h ]h"]h$]h&]uh1j hjqhMhjqubj )}(hO``u64 local_id`` next ID, from struct :c:type:`media_device.id `.h](j )}(h``u64 local_id``h]j~)}(hj rh]h u64 local_id}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj rubah}(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 }(hj%rhhhNhNubh)}(h(:c:type:`media_device.id `h]j~)}(hj/rh]hmedia_device.id}(hj1rhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj-rubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj%rubh.}(hj%rhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjLrhMhj"rubah}(h]h ]h"]h$]h&]uh1j hjrubeh}(h]h ]h"]h$]h&]uh1j hj!rhMhjqubeh}(h]h ]h"]h$]h&]uh1j hjqubeh}(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](j)}(hboolh]hbool}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjrhhhf/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 hjrhhhjrhMubj$ )}(h!is_media_entity_v4l2_video_deviceh]j* )}(h!is_media_entity_v4l2_video_deviceh]h!is_media_entity_v4l2_video_device}(hjrhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjrubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjrhhhjrhMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjrhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjrmodnameN classnameNj%j()}j+]j )}jjrsb#c.is_media_entity_v4l2_video_deviceasbuh1hhjrubj )}(h h]h }(hjshhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrubj4)}(hj7h]h*}(hjshhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjrubj* )}(hentityh]hentity}(hjshhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjrubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjrubah}(h]h ]h"]h$]h&]hhuh1jhjrhhhjrhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjrhhhjrhMubah}(h]j|rah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjrhMhj~rhhubjV )}(hhh]h)}(h%Check if the entity is a video_deviceh]h%Check if the entity is a video_device}(hjIshhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjFshhubah}(h]h ]h"]h$]h&]uh1jU hj~rhhhjrhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jasjx jasjy 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)}(hjksh]h Parameters}(hjmshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjisubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjesubj )}(hhh]j )}(h2``struct media_entity *entity`` pointer to entity h](j )}(h``struct media_entity *entity``h]j~)}(hjsh]hstruct media_entity *entity}(hjshhhNhNubah}(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:337: ./include/media/media-entity.hhMhjsubj )}(hhh]h)}(hpointer to entityh]hpointer to entity}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjsubah}(h]h ]h"]h$]h&]uh1j hjsubeh}(h]h ]h"]h$]h&]uh1j hjshMhjsubah}(h]h ]h"]h$]h&]uh1j hjesubh)}(h **Return**h]j)}(hjsh]hReturn}(hjshhhNhNubah}(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.hhMhjesubh)}(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}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjsubh 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 }(hjshhhNhNubj~)}(h ``false``h]hfalse}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjsubh otherwise.}(hjshhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjesubeh}(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](j)}(hjrh]hbool}(hj*thhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&thhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hj8thhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj&thhhj7thMubj$ )}(his_media_entity_v4l2_subdevh]j* )}(his_media_entity_v4l2_subdevh]his_media_entity_v4l2_subdev}(hjJthhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjFtubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj&thhhj7thMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjfthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbtubj )}(h h]h }(hjsthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbtubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjthhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjtubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjtmodnameN classnameNj%j()}j+]j )}jjLtsbc.is_media_entity_v4l2_subdevasbuh1hhjbtubj )}(h h]h }(hjthhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjbtubj4)}(hj7h]h*}(hjthhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjbtubj* )}(hentityh]hentity}(hjthhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjbtubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj^tubah}(h]h ]h"]h$]h&]hhuh1jhj&thhhj7thMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj"thhhj7thMubah}(h]jtah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj7thMhjthhubjV )}(hhh]h)}(h$Check if the entity is a v4l2_subdevh]h$Check if the entity is a v4l2_subdev}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjthhubah}(h]h ]h"]h$]h&]uh1jU hjthhhj7thMubeh}(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)}(hj uh]h Parameters}(hj uhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj uubah}(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~)}(hj*uh]hstruct media_entity *entity}(hj,uhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj(uubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj$uubj )}(hhh]h)}(hpointer to entityh]hpointer to entity}(hjCuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?uhMhj@uubah}(h]h ]h"]h$]h&]uh1j hj$uubeh}(h]h ]h"]h$]h&]uh1j hj?uhMhj!uubah}(h]h ]h"]h$]h&]uh1j hjuubh)}(h **Return**h]j)}(hjeuh]hReturn}(hjguhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcuubah}(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}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj{uubh# if the entity is an instance of a }(hj{uhhhNhNubh)}(h:c:type:`v4l2_subdev`h]j~)}(hjuh]h v4l2_subdev}(hjuhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j v4l2_subdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj{uubh+ object and can safely be cast to a struct }(hj{uhhhNhNubh)}(h:c:type:`v4l2_subdev`h]j~)}(hjuh]h v4l2_subdev}(hjuhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j v4l2_subdevuh1hhjuhMhj{uubh$ using the container_of() macro, or }(hj{uhhhNhNubj~)}(h ``false``h]hfalse}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj{uubh otherwise.}(hj{uhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjuhMhjuubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_entity_enum_init (C function)c.media_entity_enum_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(hZint media_entity_enum_init (struct media_entity_enum *ent_enum, struct media_device *mdev)h]j )}(hYint media_entity_enum_init(struct media_entity_enum *ent_enum, struct media_device *mdev)h](j)}(hinth]hint}(hjvhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj vhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj vhhhjvhMubj$ )}(hmedia_entity_enum_inith]j* )}(hmedia_entity_enum_inith]hmedia_entity_enum_init}(hj1vhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj-vubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj vhhhjvhMubj)}(h?(struct media_entity_enum *ent_enum, struct media_device *mdev)h](j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjMvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIvubj )}(h h]h }(hjZvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIvubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjkvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjhvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmvmodnameN classnameNj%j()}j+]j )}jj3vsbc.media_entity_enum_initasbuh1hhjIvubj )}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjIvubj4)}(hj7h]h*}(hjvhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjIvubj* )}(hent_enumh]hent_enum}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjIvubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEvubj)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvubj )}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjvubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjvmodnameN classnameNj%j()}j+]jvc.media_entity_enum_initasbuh1hhjvubj )}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvubj4)}(hj7h]h*}(hj whhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjvubj* )}(hmdevh]hmdev}(hjwhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjvubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjEvubeh}(h]h ]h"]h$]h&]hhuh1jhj vhhhjvhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjvhhhjvhMubah}(h]jvah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjvhMhjvhhubjV )}(hhh]h)}(h Initialise an entity enumerationh]h Initialise an entity enumeration}(hj@whhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj=whhubah}(h]h ]h"]h$]h&]uh1jU hjvhhhjvhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jXwjx jXwjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration to be initialised ``struct media_device *mdev`` The related media device **Return** zero on success or a negative error code.h](h)}(h**Parameters**h]j)}(hjbwh]h Parameters}(hjdwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`wubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj\wubj )}(hhh](j )}(hL``struct media_entity_enum *ent_enum`` Entity enumeration to be initialised h](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hjwh]h"struct media_entity_enum *ent_enum}(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.hhMhj{wubj )}(hhh]h)}(h$Entity enumeration to be initialisedh]h$Entity enumeration to be initialised}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhjwubah}(h]h ]h"]h$]h&]uh1j hj{wubeh}(h]h ]h"]h$]h&]uh1j hjwhMhjxwubj )}(h7``struct media_device *mdev`` The related media device h](j )}(h``struct media_device *mdev``h]j~)}(hjwh]hstruct media_device *mdev}(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.hhMhjwubj )}(hhh]h)}(hThe related media deviceh]hThe related media device}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMhjwubah}(h]h ]h"]h$]h&]uh1j hjwubeh}(h]h ]h"]h$]h&]uh1j hjwhMhjxwubeh}(h]h ]h"]h$]h&]uh1j hj\wubh)}(h **Return**h]j)}(hjwh]hReturn}(hjwhhhNhNubah}(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.hhMhj\wubh)}(h)zero on success or a negative error code.h]h)zero on success or a negative error code.}(hj xhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj\wubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_entity_enum_cleanup (C function)c.media_entity_enum_cleanuphNtauh1j hj hhhNhNubj )}(hhh](j )}(hCvoid media_entity_enum_cleanup (struct media_entity_enum *ent_enum)h]j )}(hBvoid media_entity_enum_cleanup(struct media_entity_enum *ent_enum)h](j)}(hvoidh]hvoid}(hj:xhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6xhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjIxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6xhhhjHxhMubj$ )}(hmedia_entity_enum_cleanuph]j* )}(hmedia_entity_enum_cleanuph]hmedia_entity_enum_cleanup}(hj[xhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjWxubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj6xhhhjHxhMubj)}(h$(struct media_entity_enum *ent_enum)h]j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjwxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsxubj )}(h h]h }(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsxubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjxhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNj%j()}j+]j )}jj]xsbc.media_entity_enum_cleanupasbuh1hhjsxubj )}(h h]h }(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjsxubj4)}(hj7h]h*}(hjxhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjsxubj* )}(hent_enumh]hent_enum}(hjxhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjsxubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjoxubah}(h]h ]h"]h$]h&]hhuh1jhj6xhhhjHxhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj2xhhhjHxhMubah}(h]j-xah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjHxhMhj/xhhubjV )}(hhh]h)}(h*Release resources of an entity enumerationh]h*Release resources of an entity enumeration}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjxhhubah}(h]h ]h"]h$]h&]uh1jU hj/xhhhjHxhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jyjx jyjy jz j{ uh1j hhhj hNhNubj} )}(hZ**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration to be releasedh](h)}(h**Parameters**h]j)}(hjyh]h Parameters}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(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 )}(hH``struct media_entity_enum *ent_enum`` Entity enumeration to be releasedh](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hj;yh]h"struct media_entity_enum *ent_enum}(hj=yhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj9yubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj5yubj )}(hhh]h)}(h!Entity enumeration to be releasedh]h!Entity enumeration to be released}(hjTyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjQyubah}(h]h ]h"]h$]h&]uh1j hj5yubeh}(h]h ]h"]h$]h&]uh1j hjPyhMhj2yubah}(h]h ]h"]h$]h&]uh1j hjyubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_entity_enum_zero (C function)c.media_entity_enum_zerohNtauh1j hj hhhNhNubj )}(hhh](j )}(h@void media_entity_enum_zero (struct media_entity_enum *ent_enum)h]j )}(h?void media_entity_enum_zero(struct media_entity_enum *ent_enum)h](j)}(hvoidh]hvoid}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM ubj )}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyhhhjyhM ubj$ )}(hmedia_entity_enum_zeroh]j* )}(hmedia_entity_enum_zeroh]hmedia_entity_enum_zero}(hjyhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjyubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjyhhhjyhM ubj)}(h$(struct media_entity_enum *ent_enum)h]j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyubj )}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjyhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNj%j()}j+]j )}jjysbc.media_entity_enum_zeroasbuh1hhjyubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjyubj4)}(hj7h]h*}(hjzhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjyubj* )}(hent_enumh]hent_enum}(hj+zhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjyubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjyubah}(h]h ]h"]h$]h&]hhuh1jhjyhhhjyhM ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjyhhhjyhM ubah}(h]jyah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjyhM hjyhhubjV )}(hhh]h)}(hClear the entire enumh]hClear the entire enum}(hjUzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjRzhhubah}(h]h ]h"]h$]h&]uh1jU hjyhhhjyhM ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jmzjx jmzjy jz j{ uh1j hhhj hNhNubj} )}(hY**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration to be clearedh](h)}(h**Parameters**h]j)}(hjwzh]h Parameters}(hjyzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuzubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjqzubj )}(hhh]j )}(hG``struct media_entity_enum *ent_enum`` Entity enumeration to be clearedh](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hjzh]h"struct media_entity_enum *ent_enum}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjzubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjzubj )}(hhh]h)}(h Entity enumeration to be clearedh]h Entity enumeration to be cleared}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjzubah}(h]h ]h"]h$]h&]uh1j hjzubeh}(h]h ]h"]h$]h&]uh1j hjzhM hjzubah}(h]h ]h"]h$]h&]uh1j hjqzubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_entity_enum_set (C function)c.media_entity_enum_sethNtauh1j hj hhhNhNubj )}(hhh](j )}(h\void media_entity_enum_set (struct media_entity_enum *ent_enum, struct media_entity *entity)h]j )}(h[void media_entity_enum_set(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(hvoidh]hvoid}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjzhhhjzhMubj$ )}(hmedia_entity_enum_seth]j* )}(hmedia_entity_enum_seth]hmedia_entity_enum_set}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj {ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjzhhhjzhMubj)}(hA(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(h"struct media_entity_enum *ent_enumh](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_entity_enumh]hmedia_entity_enum}(hjK{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjH{ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjM{modnameN classnameNj%j()}j+]j )}jj{sbc.media_entity_enum_setasbuh1hhj){ubj )}(h h]h }(hjk{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj){ubj4)}(hj7h]h*}(hjy{hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj){ubj* )}(hent_enumh]hent_enum}(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 classnameNj%j()}j+]jg{c.media_entity_enum_setasbuh1hhj{ubj )}(h h]h }(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj{ubj4)}(hj7h]h*}(hj{hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj{ubj* )}(hentityh]hentity}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj{ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj%{ubeh}(h]h ]h"]h$]h&]hhuh1jhjzhhhjzhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjzhhhjzhMubah}(h]jzah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjzhMhjzhhubjV )}(hhh]h)}(h Mark a single entity in the enumh]h Mark a single entity in the enum}(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 hjzhhhjzhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j8|jx j8|jy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration ``struct media_entity *entity`` Entity to be markedh](h)}(h**Parameters**h]j)}(hjB|h]h Parameters}(hjD|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_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hja|h]h"struct media_entity_enum *ent_enum}(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:337: ./include/media/media-entity.hhMhj[|ubj )}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hjz|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjv|hMhjw|ubah}(h]h ]h"]h$]h&]uh1j hj[|ubeh}(h]h ]h"]h$]h&]uh1j hjv|hMhjX|ubj )}(h3``struct media_entity *entity`` Entity to be markedh](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:337: ./include/media/media-entity.hhMhj|ubj )}(hhh]h)}(hEntity to be markedh]hEntity to be marked}(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|hMhjX|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_enum_clear (C function)c.media_entity_enum_clearhNtauh1j hj hhhNhNubj )}(hhh](j )}(h^void media_entity_enum_clear (struct media_entity_enum *ent_enum, struct media_entity *entity)h]j )}(h]void media_entity_enum_clear(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(hvoidh]hvoid}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM#ubj )}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|hhhj}hM#ubj$ )}(hmedia_entity_enum_clearh]j* )}(hmedia_entity_enum_clearh]hmedia_entity_enum_clear}(hj}hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj}ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj|hhhj}hM#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}(hj1}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_entity_enumh]hmedia_entity_enum}(hjO}hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjL}ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQ}modnameN classnameNj%j()}j+]j )}jj}sbc.media_entity_enum_clearasbuh1hhj-}ubj )}(h h]h }(hjo}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-}ubj4)}(hj7h]h*}(hj}}hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj-}ubj* )}(hent_enumh]hent_enum}(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 classnameNj%j()}j+]jk}c.media_entity_enum_clearasbuh1hhj}ubj )}(h h]h }(hj}hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj}ubj4)}(hj7h]h*}(hj}hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj}ubj* )}(hentityh]hentity}(hj}hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj}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"Unmark a single entity in the enumh]h"Unmark a single entity in the enum}(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 hj|hhhj}hM#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 unmarkedh](h)}(h**Parameters**h]j)}(hjF~h]h Parameters}(hjH~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD~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 )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hje~h]h"struct media_entity_enum *ent_enum}(hjg~hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjc~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)}(hEntity enumerationh]hEntity enumeration}(hj~~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjz~hM hj{~ubah}(h]h ]h"]h$]h&]uh1j hj_~ubeh}(h]h ]h"]h$]h&]uh1j hjz~hM hj\~ubj )}(h5``struct media_entity *entity`` Entity to be unmarkedh](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:337: ./include/media/media-entity.hhM"hj~ubj )}(hhh]h)}(hEntity to be unmarkedh]hEntity to be unmarked}(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 hj@~ubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_entity_enum_test (C function)c.media_entity_enum_testhNtauh1j hj hhhNhNubj )}(hhh](j )}(h]bool media_entity_enum_test (struct media_entity_enum *ent_enum, struct media_entity *entity)h]j )}(h\bool media_entity_enum_test(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(hjrh]hbool}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM4ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj~hhhjhM4ubj$ )}(hmedia_entity_enum_testh]j* )}(hmedia_entity_enum_testh]hmedia_entity_enum_test}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj~hhhjhM4ubj)}(hA(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjRhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNj%j()}j+]j )}jjsbc.media_entity_enum_testasbuh1hhj0ubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj0ubj* )}(hent_enumh]hent_enum}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubeh}(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 classnameNj%j()}j+]jnc.media_entity_enum_testasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj,ubeh}(h]h ]h"]h$]h&]hhuh1jhj~hhhjhM4ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj~hhhjhM4ubah}(h]j~ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM4hj~hhubjV )}(hhh]h)}(h!Test whether the entity is markedh]h!Test whether the entity is marked}(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~hhhjhM4ubeh}(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.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.hhM1hjCubj )}(hhh](j )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j~)}(hjhh]h"struct media_entity_enum *ent_enum}(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.hhM/hjbubj )}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj}hM/hj~ubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hj}hM/hj_ubj )}(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.hhM0hjubj )}(hhh]h)}(hEntity to be testedh]hEntity to be tested}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM0hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM0hj_ubeh}(h]h ]h"]h$]h&]uh1j hjCubh)}(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.hhM2hjCubh)}(h*Returns ``true`` if the entity was marked.h](hReturns }(hjhhhNhNubj~)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh if the entity was marked.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM2hjCubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j +media_entity_enum_test_and_set (C function) c.media_entity_enum_test_and_sethNtauh1j hj hhhNhNubj )}(hhh](j )}(hebool media_entity_enum_test_and_set (struct media_entity_enum *ent_enum, struct media_entity *entity)h]j )}(hdbool media_entity_enum_test_and_set(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(hjrh]hbool}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMFubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj/hhhj@hMFubj$ )}(hmedia_entity_enum_test_and_seth]j* )}(hmedia_entity_enum_test_and_seth]hmedia_entity_enum_test_and_set}(hjShhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjOubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj/hhhj@hMFubj)}(hA(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj P)}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jjUsb c.media_entity_enum_test_and_setasbuh1hhjkubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjkubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjkubj* )}(hent_enumh]hent_enum}(hjȁhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjkubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubj)}(hstruct media_entity *entityh](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* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j c.media_entity_enum_test_and_setasbuh1hhj݁ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj݁ubj4)}(hj7h]h*}(hj+hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj݁ubj* )}(hentityh]hentity}(hj8hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj݁ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjgubeh}(h]h ]h"]h$]h&]hhuh1jhj/hhhj@hMFubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj+hhhj@hMFubah}(h]j&ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj@hMFhj(hhubjV )}(hhh]h)}(h.Test whether the entity is marked, and mark ith]h.Test whether the entity is marked, and mark it}(hjbhhhNhNubah}(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@hMFubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jzjx jzjy 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)}(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.hhMBhj~ubj )}(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.hhMAhjubj )}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMAhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMAhjubj )}(h4``struct media_entity *entity`` Entity to be tested 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:337: ./include/media/media-entity.hhMBhjւubj )}(hhh]h)}(hEntity to be testedh]hEntity to be tested}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMBhjubah}(h]h ]h"]h$]h&]uh1j hjւubeh}(h]h ]h"]h$]h&]uh1j hjhMBhjubeh}(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.hhMDhj~ubh)}(hGReturns ``true`` if the entity was marked, and mark it before doing so.h](hReturns }(hj-hhhNhNubj~)}(h``true``h]htrue}(hj5hhhNhNubah}(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.hhMDhj~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](j)}(hjrh]hbool}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMWubj )}(h h]h }(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjhhhj{hMWubj$ )}(hmedia_entity_enum_emptyh]j* )}(hmedia_entity_enum_emptyh]hmedia_entity_enum_empty}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjjhhhj{hMWubj)}(h$(struct media_entity_enum *ent_enum)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 }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjȃhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjŃubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjʃmodnameN classnameNj%j()}j+]j )}jjsbc.media_entity_enum_emptyasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hent_enumh]hent_enum}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjjhhhj{hMWubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjfhhhj{hMWubah}(h]jaah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj{hMWhjchhubjV )}(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 hjchhhj{hMWubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jEjx jEjy 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)}(hjOh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjIubj )}(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.hhMShjhubj )}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMShjubah}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]uh1j hjhMShjeubah}(h]h ]h"]h$]h&]uh1j hjIubh)}(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.hhMUhjIubh)}(h!``true`` if the entity was empty.h](j~)}(h``true``h]htrue}(hjÄhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh if the entity was empty.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjIubeh}(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](j)}(hjrh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMeubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj hMeubj$ )}(hmedia_entity_enum_intersectsh]j* )}(hmedia_entity_enum_intersectsh]hmedia_entity_enum_intersects}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj hMeubj)}(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}(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj )}(h h]h }(hjEhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubh)}(hhh]j* )}(hmedia_entity_enumh]hmedia_entity_enum}(hjVhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNj%j()}j+]j )}jjsbc.media_entity_enum_intersectsasbuh1hhj4ubj )}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj4ubj* )}(h ent_enum1h]h ent_enum1}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubj)}(h#struct media_entity_enum *ent_enum2h](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_entity_enumh]hmedia_entity_enum}(hjȅhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjŅubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjʅmodnameN classnameNj%j()}j+]jrc.media_entity_enum_intersectsasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(h ent_enum2h]h ent_enum2}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj0ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMeubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj hMeubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj hMehjhhubjV )}(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 hjhhhj hMeubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jCjx jCjy 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)}(hjMh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMahjGubj )}(hhh](j )}(hA``struct media_entity_enum *ent_enum1`` First entity enumeration h](j )}(h'``struct media_entity_enum *ent_enum1``h]j~)}(hjlh]h#struct media_entity_enum *ent_enum1}(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.hhM_hjfubj )}(hhh]h)}(hFirst entity enumerationh]hFirst entity enumeration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM_hjubah}(h]h ]h"]h$]h&]uh1j hjfubeh}(h]h ]h"]h$]h&]uh1j hjhM_hjcubj )}(hB``struct media_entity_enum *ent_enum2`` Second entity enumeration h](j )}(h'``struct media_entity_enum *ent_enum2``h]j~)}(hjh]h#struct media_entity_enum *ent_enum2}(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)}(hSecond entity enumerationh]hSecond entity enumeration}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM`hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM`hjcubeh}(h]h ]h"]h$]h&]uh1j hjGubh)}(h **Return**h]j)}(hjh]hReturn}(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.hhMbhjGubh)}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h **ent_enum2**h]h ent_enum2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh intersect, otherwise }(hjhhhNhNubj~)}(h ``false``h]hfalse}(hj0hhhNhNubah}(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.hhMbhjGubeh}(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* )}(hjch]hgobj_to_entity}(hjmhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjiubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjehhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMuubah}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjahhhjhMuubah}(h]j\ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMuhj^hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hj^hhhjhMuubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_entity (gobj)``h]j~)}(hjh]hgobj_to_entity (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.hhMwhj 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 }(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 refexplicitrefwarnj%j)j media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMphjubh pointer from the }(hjhhhNhNubj)}(h**gobj**h]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh contained on it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMphjubah}(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)}(hj h]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.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 }(hjAhhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjKh]h media_gobj}(hjMhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjIubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMshjAubh graph object}(hjAhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhMshj>ubah}(h]h ]h"]h$]h&]uh1j hj"ubeh}(h]h ]h"]h$]h&]uh1j hj=hMvhjubah}(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* )}(hjh]h gobj_to_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.hhM~ubah}(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]h ]h"]h$]h&]uh1jU hjhhhjhM~ubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jՈjx jՈjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_pad (gobj)``h]j~)}(hjۈh]hgobj_to_pad (gobj)}(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:337: ./include/media/media-entity.hhMhj 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 refexplicitrefwarnj%j)j 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&]uh1hhjhMyhjubah}(h]h ]h"]h$]h&]uh1jhjhMyhj hhubj} )}(hR**Parameters** ``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](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.hhM}hj?ubj )}(hhh]j )}(h@``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``gobj``h]j~)}(hjdh]hgobj}(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)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hj}hhhNhNubh)}(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 refexplicitrefwarnj%j)j 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&]uh1hhjhM|hjzubah}(h]h ]h"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]uh1j hjyhMhj[ubah}(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_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* )}(hjۉh]h gobj_to_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(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 hjىhhhjhMubah}(h]jԉah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhj։hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hj։hhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_link (gobj)``h]j~)}(hjh]hgobj_to_link (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)}(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 }(hj1hhhNhNubh)}(h:c:type:`media_link`h]j~)}(hj;h]h media_link}(hj=hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj9ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_linkuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj1ubh pointer from the }(hj1hhhNhNubj)}(h**gobj**h]hgobj}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubh contained on it.}(hj1hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjXhMhj-ubah}(h]h ]h"]h$]h&]uh1jhjXhMhj 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.hhMhj{ubj )}(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~)}(hjÊh]h media_gobj}(hjŊhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j 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&]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 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* )}(hjh]h gobj_to_intf}(hj!hhhNhNubah}(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 hjhhhj4hMubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj4hMhjhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjhhhj4hMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jMjx jMjy jz j{ uh1j hhhj hNhNubh)}(h``gobj_to_intf (gobj)``h]j~)}(hjSh]hgobj_to_intf (gobj)}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjQubah}(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 }(hjmhhhNhNubh)}(h:c:type:`media_interface`h]j~)}(hjwh]hmedia_interface}(hjyhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjuubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjmubh pointer from the }(hjmhhhNhNubj)}(h**gobj**h]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh contained on it.}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjiubah}(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)}(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@``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.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 refexplicitrefwarnj%j)j 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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hj֋ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjӋ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 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* )}(hjSh]hintf_to_devnode}(hj]hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjYubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjUhhhf/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 hjQhhhjphMubah}(h]jLah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjphMhjNhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjNhhhjphMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h``intf_to_devnode (intf)``h]j~)}(hjh]hintf_to_devnode (intf)}(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)}(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 }(hjhhhNhNubj)}(h**intf**h]hintf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh contained on it.}(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&]uh1jhjɌhMhj hhubj} )}(hI**Parameters** ``intf`` Pointer to struct :c:type:`media_intf_devnode`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 )}(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~)}(hjh]hmedia_intf_devnode}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jmedia_intf_devnodeuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ]h"]h$]h&]uh1hhj5hMhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMhjubah}(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](j)}(hvoidh]hvoid}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjjhhhf/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_gobj_createh]j* )}(hmedia_gobj_createh]hmedia_gobj_create}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjjhhhj|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}(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}(hjɍhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjƍubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjˍmodnameN classnameNj%j()}j+]j )}jjsbc.media_gobj_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(henum media_gobj_type typeh](j )}(hjHh]henum}(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_gobj_typeh]hmedia_gobj_type}(hj;hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNj%j()}j+]jc.media_gobj_createasbuh1hhjubj )}(h h]h }(hjYhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(htypeh]htype}(hjghhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_gobj *gobjh](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* )}(h media_gobjh]h media_gobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_gobj_createasbuh1hhj|ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|ubj4)}(hj7h]h*}(hjʎhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj|ubj* )}(hgobjh]hgobj}(hj׎hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(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)}(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 hjchhhj|hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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.hhMhjubj )}(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~)}(hjBh]hstruct media_device *mdev}(hjDhhhNhNubah}(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_device` that contains the objecth](hPointer to the }(hj[hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjeh]h media_device}(hjghhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjcubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhjWhMhj[ubh that contains the object}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjWhMhjXubah}(h]h ]h"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]uh1j hjWhMhj9ubj )}(h1``enum media_gobj_type type`` Type of the object h](j )}(h``enum media_gobj_type type``h]j~)}(hjh]henum media_gobj_type 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)}(hType of the objecth]hType of the object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj9ubj )}(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}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 }(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 refexplicitrefwarnj%j)j 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 hjhMhj9ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj5h]h Description}(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)}(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 }(hjKhhhNhNubh)}(h:c:type:`media_gobj`h]j~)}(hjUh]h media_gobj}(hjWhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjSubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjKubh< inside a media graph object. It is called automatically if }(hjKhhhNhNubj~)}(h``media_*_create``h]hmedia_*_create}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjKubh 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.}(hjKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjrhMhjubeh}(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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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_gobj_destroyh]j* )}(hmedia_gobj_destroyh]hmedia_gobj_destroy}(hjАhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj̐ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(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}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNj%j()}j+]j )}jjҐsbc.media_gobj_destroyasbuh1hhjubj )}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj8hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hgobjh]hgobj}(hjEhhhNhNubah}(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]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjhhubjV )}(hhh]h)}(h+Stop using a graph object on a media deviceh]h+Stop using a graph object on a media device}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjlhhubah}(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_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)}(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 )}(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.hhMhjubj )}(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~)}(hjӑh]h media_gobj}(hjՑhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjёubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_gobjuh1hhjőhMhjɑubh graph object}(hjɑhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjőhMhjƑubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjőhMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(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.hhMhjubh)}(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.hhMhjubeh}(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](j)}(hinth]hint}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjbhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjOhhhjahMubj$ )}(hmedia_entity_pads_inith]j* )}(hmedia_entity_pads_inith]hmedia_entity_pads_init}(hjthhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjpubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjOhhhjahMubj)}(hC(struct media_entity *entity, u16 num_pads, struct media_pad *pads)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 classnameNj%j()}j+]j )}jjvsbc.media_entity_pads_initasbuh1hhjubj )}(h h]h }(hjΒhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjܒhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj%j()}j+]jʒc.media_entity_pads_initasbuh1hhjubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hnum_padsh]hnum_pads}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_pad *padsh](j )}(hj h]hstruct}(hjJhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjFubj )}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjFubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjeubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjjmodnameN classnameNj%j()}j+]jʒc.media_entity_pads_initasbuh1hhjFubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjFubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjFubj* )}(hpadsh]hpads}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjFubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjOhhhjahMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjKhhhjahMubah}(h]jFah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjahMhjHhhubjV )}(hhh]h)}(hInitialize the entity padsh]hInitialize the entity pads}(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 hjHhhhjahMubeh}(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~)}(hj h]hstruct media_entity *entity}(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)}(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~)}(hjEh]h u16 num_pads}(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$total number of sink and source padsh]h$total number of sink and source pads}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhMhj[ubah}(h]h ]h"]h$]h&]uh1j hj?ubeh}(h]h ]h"]h$]h&]uh1j hjZhMhjubj )}(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}(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)}(hArray of **num_pads** pads.h](h Array of }(hjhhhNhNubj)}(h **num_pads**h]hnum_pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh pads.}(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)}(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)}(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 refexplicitrefwarnj%j)j 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~)}(hjh]hmedia_entity->num_pads}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j 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~)}(hjAh]hmedia_entity->pads}(hjChhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj?ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhj:hMhjubh with }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh- or call this function that will do the same.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj:hMhjubh)}(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.}(hjzhhhNhNubah}(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.}(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_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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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_cleanuph]j* )}(hmedia_entity_cleanuph]hmedia_entity_cleanup}(hjٕhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjՕubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjƕhMubj)}(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 classnameNj%j()}j+]j )}jjەsbc.media_entity_cleanupasbuh1hhjubj )}(h h]h }(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjAhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjNhhhNhNubah}(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(free resources associated with an entityh]h(free resources associated with 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.hhMhjuhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjƕhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(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ΖhMhjubah}(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)}(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).}(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)}(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.}(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_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](j)}(hinth]hint}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjDhhhjVhMubj$ )}(hmedia_get_pad_indexh]j* )}(hmedia_get_pad_indexh]hmedia_get_pad_index}(hjihhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjeubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjDhhhjVhMubj)}(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}(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 classnameNj%j()}j+]j )}jjksbc.media_get_pad_indexasbuh1hhjubj )}(h h]h }(hj×hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjїhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjޗhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(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 classnameNj%j()}j+]jc.media_get_pad_indexasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(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 )}(hjHh]henum}(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_pad_signal_typeh]hmedia_pad_signal_type}(hj]hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_modnameN classnameNj%j()}j+]jc.media_get_pad_indexasbuh1hhj;ubj )}(h h]h }(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj;ubj* )}(hsig_typeh]hsig_type}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj}ubeh}(h]h ]h"]h$]h&]hhuh1jhjDhhhjVhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj@hhhjVhMubah}(h]j;ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjVhMhj=hhubjV )}(hhh]h)}(h$retrieves a pad index from an entityh]h$retrieves a pad index from 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 hj=hhhjVhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j˘jx j˘jy 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. **Return**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`` 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 )}(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}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjCubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hjBhMhjubj )}(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~)}(hjfh]h#enum media_pad_signal_type sig_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)}(h&type of signal of the pad to be searchh]h&type of signal of the pad to be search}(hjhhhNhNubah}(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 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)}(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 }(hjhhhNhNubj)}(h **is_sink**h]his_sink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h **sig_type**h]hsig_type}(hjљhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh conditions.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjϘubh)}(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.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Ϙubeh}(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](j)}(hinth]hint}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj-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_create_pad_linkh]j* )}(hmedia_create_pad_linkh]hmedia_create_pad_link}(hjRhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjNubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj-hhhj?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}(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjubj )}(h h]h }(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jjTsbc.media_create_pad_linkasbuh1hhjjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjjubj* )}(hsourceh]hsource}(hjǚhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(hu16 source_padh](h)}(hhh]j* )}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_pad_linkasbuh1hhjܚubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjܚubj* )}(h source_padh]h source_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjܚubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(hstruct media_entity *sinkh](j )}(hj h]hstruct}(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjFhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjCubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjHmodnameN classnameNj%j()}j+]jc.media_create_pad_linkasbuh1hhj$ubj )}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj$ubj4)}(hj7h]h*}(hjrhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj$ubj* )}(hsinkh]hsink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj$ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(h u16 sink_padh](h)}(hhh]j* )}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_pad_linkasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hsink_padh]hsink_pad}(hjǛhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_pad_linkasbuh1hhjܛubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjܛubj* )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjܛubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubeh}(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$creates a link between two entities.h]h$creates a link between two entities.}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj6hhubah}(h]h ]h"]h$]h&]uh1jU hj&hhhj?hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jQjx jQjy 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)}(hj[h]h Parameters}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(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 )}(hU``struct media_entity *source`` pointer to :c:type:`media_entity` of the source pad. h](j )}(h``struct media_entity *source``h]j~)}(hjzh]hstruct media_entity *source}(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:337: ./include/media/media-entity.hhMhjtubj )}(hhh]h)}(h4pointer to :c:type:`media_entity` of the source pad.h](h pointer to }(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%j)j media_entityuh1hhjhMhjubh of the source pad.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjtubeh}(h]h ]h"]h$]h&]uh1j hjhMhjqubj )}(h>``u16 source_pad`` number of the source pad in the pads array h](j )}(h``u16 source_pad``h]j~)}(hj֜h]hu16 source_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)}(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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjМubeh}(h]h ]h"]h$]h&]uh1j hjhMhjqubj )}(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}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)}(h2pointer to :c:type:`media_entity` of the sink pad.h](h pointer to }(hj(hhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hj2h]h media_entity}(hj4hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj0ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhj$hMhj(ubh of the sink pad.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj$hMhj%ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj$hMhjqubj )}(h;``u16 sink_pad`` number of the sink pad in the pads array. h](j )}(h``u16 sink_pad``h]j~)}(hjkh]h u16 sink_pad}(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)}(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 hjeubeh}(h]h ]h"]h$]h&]uh1j hjhMhjqubj )}(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~)}(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)}(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)}(hjǝh]hinclude/uapi/linux/media.h}(hjɝhhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhjŝubah}(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.hhMhjubh ( 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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjqubeh}(h]h ]h"]h$]h&]uh1j hjUubh)}(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.hhMhjUubh)}(hValid values for flags:h]hValid values for flags:}(hj,hhhNhNubah}(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 )}(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~)}(hjDh]hMEDIA_LNK_FL_ENABLED}(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)}(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.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjZubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hjYhMhj;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~)}(hj~h]hMEDIA_LNK_FL_IMMUTABLE}(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.hhM hjxubj )}(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 }(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.hhMhjubah}(h]h ]h"]h$]h&]uh1j hjxubeh}(h]h ]h"]h$]h&]uh1j hjhM hj;ubeh}(h]h ]h"]h$]h&]uh1j hjUubj)}(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.}(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ܞubah}(h]h ]h"]h$]h&]uh1jhjUubeh}(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](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM?ubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj#hM?ubj$ )}(hmedia_create_pad_linksh]j* )}(hmedia_create_pad_linksh]hmedia_create_pad_links}(hj6hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj2ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj#hM?ubj)}(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 )}(hjE.h]hconst}(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubj )}(h h]h }(hj_hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubj )}(hj h]hstruct}(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubj )}(h h]h }(hjzhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jj8sbc.media_create_pad_linksasbuh1hhjNubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjNubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjNubj* )}(hmdevh]hmdev}(hjƟhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hconst u32 source_functionh](j )}(hjE.h]hconst}(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* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_pad_linksasbuh1hhj۟ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj۟ubj* )}(hsource_functionh]hsource_function}(hj)hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj۟ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hstruct media_entity *sourceh](j )}(hj h]hstruct}(hjBhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj )}(h h]h }(hjOhhhNhNubah}(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 reftargetjbmodnameN classnameNj%j()}j+]jc.media_create_pad_linksasbuh1hhj>ubj )}(h h]h }(hj~hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj>ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj>ubj* )}(hsourceh]hsource}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj>ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hconst u16 source_padh](j )}(hjE.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* )}(hu16h]hu16}(hjРhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj͠ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjҠmodnameN classnameNj%j()}j+]jc.media_create_pad_linksasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(h source_padh]h source_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hconst u32 sink_functionh](j )}(hjE.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hu32h]hu32}(hj3hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNj%j()}j+]jc.media_create_pad_linksasbuh1hhjubj )}(h h]h }(hjQhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(h sink_functionh]h sink_function}(hj_hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hstruct media_entity *sinkh](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_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_pad_linksasbuh1hhjtubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjtubj4)}(hj7h]h*}(hj¡hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjtubj* )}(hsinkh]hsink}(hjϡhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjtubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hconst u16 sink_padh](j )}(hjE.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* )}(hu16h]hu16}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_pad_linksasbuh1hhjubj )}(h h]h }(hj$hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hsink_padh]hsink_pad}(hj2hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjNhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjKubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjPmodnameN classnameNj%j()}j+]jc.media_create_pad_linksasbuh1hhjGubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjGubj* )}(hflagsh]hflags}(hjzhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubj)}(hconst bool allow_both_undefinedh](j )}(hjE.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hjrh]hbool}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hallow_both_undefinedh]hallow_both_undefined}(hjɢhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjJubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj#hM?ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj hhhj#hM?ubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj#hM?hj hhubjV )}(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 hj hhhj#hM?ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j jx j jy 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~)}(hj4h]hconst struct media_device *mdev}(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)}(h4Pointer to the media_device that contains the objecth]h4Pointer to the media_device that contains the object}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhMhjJubah}(h]h ]h"]h$]h&]uh1j hj.ubeh}(h]h ]h"]h$]h&]uh1j hjIhMhj+ubj )}(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~)}(hjmh]hconst u32 source_function}(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)}(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}(hjhhhNhNubah}(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 hjgubeh}(h]h ]h"]h$]h&]uh1j hjhMhj+ubj )}(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~)}(hjh]hstruct media_entity *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:337: ./include/media/media-entity.hhMhjubj )}(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 }(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 refexplicitrefwarnj%j)j media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjңubhG of the source pad. If NULL, it will use all entities that matches the }(hjңhhhNhNubj)}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjңubh.}(hjңhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjϣubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjΣhMhj+ubj )}(hD``const u16 source_pad`` number of the source pad in the pads array h](j )}(h``const u16 source_pad``h]j~)}(hj(h]hconst u16 source_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)}(h*number of the source pad in the pads arrayh]h*number of the source pad in the pads array}(hjAhhhNhNubah}(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 )}(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~)}(hjah]hconst u32 sink_function}(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)}(h=Function of the sink entities. Used only if **sink** is NULL.h](h,Function of the sink entities. Used only if }(hjzhhhNhNubj)}(h**sink**h]hsink}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubh is NULL.}(hjzhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjvhMhjwubah}(h]h ]h"]h$]h&]uh1j hj[ubeh}(h]h ]h"]h$]h&]uh1j hjvhMhj+ubj )}(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~)}(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)}(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 }(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 refexplicitrefwarnj%j)j media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjŤubhE of the sink pad. If NULL, it will use all entities that matches the }(hjŤhhhNhNubj)}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjŤubh.}(hjŤhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhj¤ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj+ubj )}(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.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hM hj1ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj0hM hj+ubj )}(hD``u32 flags`` Link flags, as defined in include/uapi/linux/media.h. h](j )}(h ``u32 flags``h]j~)}(hjTh]h u32 flags}(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:337: ./include/media/media-entity.hhM!hjNubj )}(hhh]h)}(h5Link flags, as defined in include/uapi/linux/media.h.h]h5Link flags, as defined in include/uapi/linux/media.h.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihM!hjjubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjihM!hj+ubj )}(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~)}(hjh]hconst bool allow_both_undefined}(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)}(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 }(hjhhhNhNubj~)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh , then both }(hjhhhNhNubj)}(h **source**h]hsource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**sink**h]hsink}(hjҥhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhX can be NULL. In such case, it will create a crossbar between all entities that matches }(hjhhhNhNubj)}(h**source_function**h]hsource_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh to all entities that matches }(hjhhhNhNubj)}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh. If }(hjhhhNhNubj~)}(h ``false``h]hfalse}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh7, it will return 0 and won’t create any link if both }(hjhhhNhNubj)}(h **source**h]hsource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**sink**h]hsink}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh are NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM"hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM&hj+ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjYh]h Description}(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.hhM(hjubh)}(hValid values for flags:h]hValid values for flags:}(hjohhhNhNubah}(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}(hjhhhNhNubah}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM+hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM-hj~ubj )}(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}(hjЦhhhNhNubah}(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.hhM2hjĦubj )}(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.hhM0hjubah}(h]h ]h"]h$]h&]uh1j hjĦubeh}(h]h ]h"]h$]h&]uh1j hjhM2hj~ubeh}(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.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM4hjubj)}(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.}(hjDhhhNhNubah}(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)}(hjMh]h Parameters}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjKubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM\hjGubj )}(hhh](j )}(h6``struct media_link *link`` The link being configured h](j )}(h``struct media_link *link``h]j~)}(hjlh]hstruct media_link *link}(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.hhMYhjfubj )}(hhh]h)}(hThe link being configuredh]hThe link being configured}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1j hjfubeh}(h]h ]h"]h$]h&]uh1j hjhMYhjcubj )}(h'``u32 flags`` Link configuration flags 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.hhMZhjubj )}(hhh]h)}(hLink configuration flagsh]hLink configuration flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMZhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMZhjcubeh}(h]h ]h"]h$]h&]uh1j hjGubh)}(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.hhM\hjGubh)}(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\hjGubh)}(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_hjGubh)}(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.hhMbhjGubeh}(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](j)}(hinth]hint}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?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_setup_linkh]j* )}(hmedia_entity_setup_linkh]hmedia_entity_setup_link}(hjdhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj`ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj?hhhjQhMubj)}(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 hj|ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|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 classnameNj%j()}j+]j )}jjfsbc.media_entity_setup_linkasbuh1hhj|ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj|ubj4)}(hj7h]h*}(hj̫hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj|ubj* )}(hlinkh]hlink}(hj٫hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxubj)}(h u32 flagsh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_entity_setup_linkasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hflagsh]hflags}(hj!hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjxubeh}(h]h ]h"]h$]h&]hhuh1jhj?hhhjQhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj;hhhjQhMubah}(h]j6ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjQhMhj8hhubjV )}(hhh]h)}(h,changes the link flags properties in runtimeh]h,changes the link flags properties in runtime}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhhjHhhubah}(h]h ]h"]h$]h&]uh1jU hj8hhhjQhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jcjx jcjy 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)}(hjmh]h Parameters}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMlhjgubj )}(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.hhMjhjubj )}(hhh]h)}(hpointer 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 refexplicitrefwarnj%j)j media_linkuh1hhjhMjhjubeh}(h]h ]h"]h$]h&]uh1hhjhMjhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMjhjubj )}(h+``u32 flags`` the requested new link flags 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.hhMkhjެubj )}(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 hjެubeh}(h]h ]h"]h$]h&]uh1j hjhMkhjubeh}(h]h ]h"]h$]h&]uh1j hjgubh)}(h**Description**h]j)}(hjh]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.hhMmhjgubh)}(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 }(hj5hhhNhNubj~)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5ubh; link flag to enable/disable a link. Links marked with the }(hj5hhhNhNubj~)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5ubh* link flag can not be enabled or disabled.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMmhjgubh)}(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.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMqhjgubh)}(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 }(hjwhhhNhNubh)}(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 refexplicitrefwarnj%j)j media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMwhjwubh pointer to a callback function. If provided, the notification callback will be called before enabling and after disabling links.}(hjwhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMwhjgubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM|hjgubh)}(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 }(hjhhhNhNubj~)}(h ``-EBUSY``h]h-EBUSY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh7 and can’t implicitly disable the first enabled link.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjgubj)}(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.}(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&]uh1jhjgubeh}(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 }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubh)}(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 classnameNj%j()}j+]j )}jmedia_entity_find_linksbc.media_entity_find_linkasbuh1hhjhhhjhMubj )}(h h]h }(hjRhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj4)}(hj7h]h*}(hj`hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMubj$ )}(hmedia_entity_find_linkh]j* )}(hjOh]hmedia_entity_find_link}(hjqhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjmubah}(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 }(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 classnameNj%j()}j+]jMc.media_entity_find_linkasbuh1hhjubj )}(h h]h }(hjȮhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj֮hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hsourceh]hsource}(hjhhhNhNubah}(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 }(hj hhhNhNubah}(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 classnameNj%j()}j+]jMc.media_entity_find_linkasbuh1hhjubj )}(h h]h }(hj8hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjFhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hsinkh]hsink}(hjShhhNhNubah}(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]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}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjzhhubah}(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 *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)}(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 *source`` Source pad h](j )}(h``struct media_pad *source``h]j~)}(hjh]hstruct media_pad *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:337: ./include/media/media-entity.hhMhjubj )}(hhh]h)}(h Source padh]h Source pad}(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 )}(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&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h **Return**h]j)}(hj2h]hReturn}(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.hhMhjubh)}(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 }(hjHhhhNhNubj~)}(h``NULL``h]hNULL}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjHubh.}(hjHhhhNhNubeh}(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_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 }(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 classnameNj%j()}j+]j )}jmedia_pad_remote_pad_firstsbc.media_pad_remote_pad_firstasbuh1hhjhhhjhMubj )}(h h]h }(hjɰhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj4)}(hj7h]h*}(hjװhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMubj$ )}(hmedia_pad_remote_pad_firsth]j* )}(hjưh]hmedia_pad_remote_pad_first}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hjE.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) hj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>modnameN classnameNj%j()}j+]jİc.media_pad_remote_pad_firstasbuh1hhjubj )}(h h]h }(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hpadh]hpad}(hjuhhhNhNubah}(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 hjhMhj~hhubjV )}(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}(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 jjx jjy 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)}(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 )}(hA``const struct media_pad *pad`` Pad at the local end of the link h](j )}(h``const struct media_pad *pad``h]j~)}(hjh]hconst struct media_pad *pad}(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)}(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 hjڱubeh}(h]h ]h"]h$]h&]uh1j hjhMhjױ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.hhMhjubh)}(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.}(hj1hhhNhNubah}(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)}(hjBh]hReturn}(hjDhhhNhNubah}(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)}(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 }(hjXhhhNhNubj~)}(h``NULL``h]hNULL}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubh# if no enabled link has been found.}(hjXhhhNhNubeh}(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_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}(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 classnameNj%j()}j+]j )}jmedia_pad_remote_pad_uniquesbc.media_pad_remote_pad_uniqueasbuh1hhjhhhjhMubj )}(h h]h }(hjٲhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMubj$ )}(hmedia_pad_remote_pad_uniqueh]j* )}(hjֲh]hmedia_pad_remote_pad_unique}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hjE.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}(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_padh]h media_pad}(hjLhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNj%j()}j+]jԲc.media_pad_remote_pad_uniqueasbuh1hhjubj )}(h h]h }(hjjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjxhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(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$Find a remote pad connected to a padh]h$Find a remote pad connected to a pad}(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 jdzjx jdzjy 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)}(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}(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 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: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 }(hjAhhhNhNubj)}(h**pad**h]hpad}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubhZ through an enabled link. If multiple (or no) remote pads are found, an error is returned.}(hjAhhhNhNubeh}(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.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj˳ubjM)}(hhh](jR)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(hjvh]h&-ENOTUNIQ - Multiple links are enabled}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjtubah}(h]h ]h"]h$]h&]uh1jQhjqubjR)}(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&]uh1jQhjqubeh}(h]h ]h"]h$]h&]jj7uh1jLhjhMhj˳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)}(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:}(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_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 classnameNj%j()}j+]j )}jmedia_entity_remote_pad_uniquesb c.media_entity_remote_pad_uniqueasbuh1hhjhhhjhMubj )}(h h]h }(hj2hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj4)}(hj7h]h*}(hj@hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMubj$ )}(hmedia_entity_remote_pad_uniqueh]j* )}(hj/h]hmedia_entity_remote_pad_unique}(hjQhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjMubah}(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 )}(hjE.h]hconst}(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j- c.media_entity_remote_pad_uniqueasbuh1hhjhubj )}(h h]h }(hjõhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhubj4)}(hj7h]h*}(hjѵhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhubj* )}(hentityh]hentity}(hj޵hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjhubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdubj)}(hunsigned int typeh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hj!hhhNhNubah}(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&]noemphhhuh1jhjdubeh}(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(Find a remote pad connected to an entityh]h(Find a remote pad connected to an entity}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjVhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jqjx jqjy 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)}(hj{h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(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 )}(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 hjhMhjubj )}(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~)}(hjӶh]hunsigned int 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)}(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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjͶubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1j hjuubh)}(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.hhMhjuubh)}(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 }(hj$hhhNhNubj)}(h**type**h]htype}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubh 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.hhMhjuubh)}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuubjM)}(hhh](jR)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(hjkh]h&-ENOTUNIQ - Multiple links are enabled}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubah}(h]h ]h"]h$]h&]uh1jQhjfubjR)}(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&]uh1jQhjfubeh}(h]h ]h"]h$]h&]jj7uh1jLhjzhMhjuubh)}(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.hhMhjuubh)}(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.hhMhjuubeh}(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}(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 classnameNj%j()}j+]j )}j%media_entity_remote_source_pad_uniquesb'c.media_entity_remote_source_pad_uniqueasbuh1hhjhhhjhMubj )}(h h]h }(hj'hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj4)}(hj7h]h*}(hj5hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMubj$ )}(h%media_entity_remote_source_pad_uniqueh]j* )}(hj$h]h%media_entity_remote_source_pad_unique}(hjFhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjBubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h#(const struct media_entity *entity)h]j)}(h!const struct media_entity *entityh](j )}(hjE.h]hconst}(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubj )}(h h]h }(hjnhhhNhNubah}(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* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j"'c.media_entity_remote_source_pad_uniqueasbuh1hhj]ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubj4)}(hj7h]h*}(hjƸhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj]ubj* )}(hentityh]hentity}(hjӸhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj]ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjYubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(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/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 hjܷhhhjhMubeh}(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}(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``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.hhMhj8ubj )}(hhh]h)}(h The entityh]h The entity}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMhjTubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hjShMhj5ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjyh]h Description}(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.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 }(hjhhhNhNubj)}(h **entity**h]hentity}(hjhhhNhNubah}(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)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubjM)}(hhh](jR)}(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.hhMhj¹ubah}(h]h ]h"]h$]h&]uh1jQhjubjR)}(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.hhMhjڹubah}(h]h ]h"]h$]h&]uh1jQhjubeh}(h]h ]h"]h$]h&]jj7uh1jLhjӹhMhjubh)}(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](j)}(hjrh]hbool}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj<hhhjMhMubj$ )}(hmedia_pad_is_streamingh]j* )}(hmedia_pad_is_streamingh]hmedia_pad_is_streaming}(hj`hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj\ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj<hhhjMhMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hjE.h]hconst}(hj|hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jjbsbc.media_pad_is_streamingasbuh1hhjxubj )}(h h]h }(hjպhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjxubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjxubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjxubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjtubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhjMhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj8hhhjMhMubah}(h]j3ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjMhMhj5hhubjV )}(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 hj5hhhjMhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j2jx j2jy 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.hhMhj6ubj )}(hhh]j )}(h(``const struct media_pad *pad`` The pad h](j )}(h``const struct media_pad *pad``h]j~)}(hj[h]hconst struct media_pad *pad}(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)}(hThe padh]hThe pad}(hjthhhNhNubah}(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 **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.hhMhj6ubh)}(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.}(hjhhhNhNubah}(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_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](j)}(hjrh]hbool}(hjۻhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj׻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_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# hj׻hhhjhMubj)}(h#(const struct media_entity *entity)h]j)}(h!const struct media_entity *entityh](j )}(hjE.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}(hj2hhhNhNubah}(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}(hjPhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjMubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjRmodnameN classnameNj%j()}j+]j )}jjsbc.media_entity_is_streamingasbuh1hhjubj )}(h h]h }(hjphhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj~hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(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)}(h1Test if an entity is part of a streaming pipelineh]h1Test if an entity 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_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)}(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 )}(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&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMhjubah}(h]h ]h"]h$]h&]uh1j hjѼubh)}(h **Return**h]j)}(hj1h]hReturn}(hj3hhhNhNubah}(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)}(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.}(hjGhhhNhNubah}(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_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}(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrhhhf/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 hjrhhhjhMubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jmedia_entity_pipelinesbc.media_entity_pipelineasbuh1hhjrhhhjhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjrhhhjhMubj4)}(hj7h]h*}(hjĽhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjrhhhjhMubj$ )}(hmedia_entity_pipelineh]j* )}(hjh]hmedia_entity_pipeline}(hjսhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjѽubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjrhhhjhMubj)}(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) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_entity_pipelineasbuh1hhjubj )}(h h]h }(hj,hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj:hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjGhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjrhhhjhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjnhhhjhMubah}(h]jiah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjkhhubjV )}(hhh]h)}(h+Get the media pipeline an entity is part ofh]h+Get the media pipeline an entity is part of}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjnhhubah}(h]h ]h"]h$]h&]uh1jU hjkhhhjhMubeh}(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)}(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`` 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.hhMhjubj )}(hhh]h)}(h The entityh]h The entity}(hj˾hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjǾhMhjȾubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjǾhMhjubah}(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)}(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.hhMhjubh)}(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.hhM hjubh)}(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.}(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)}(h **Return**h]j)}(hj2h]hReturn}(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.hhMhjubh)}(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.}(hjHhhhNhNubah}(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_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}(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjshhhf/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 hjshhhjhM"ubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jmedia_pad_pipelinesbc.media_pad_pipelineasbuh1hhjshhhjhM"ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjshhhjhM"ubj4)}(hj7h]h*}(hjſhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjshhhjhM"ubj$ )}(hmedia_pad_pipelineh]j* )}(hjh]hmedia_pad_pipeline}(hjֿhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjҿubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjshhhjhM"ubj)}(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) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_pad_pipelineasbuh1hhjubj )}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj;hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hpadh]hpad}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjshhhjhM"ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjohhhjhM"ubah}(h]jjah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM"hjlhhubjV )}(hhh]h)}(h'Get the media pipeline a pad is part ofh]h'Get the media pipeline a pad is part of}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjohhubah}(h]h ]h"]h$]h&]uh1jU hjlhhhjhM"ubeh}(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)}(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`` The 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)}(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 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)}(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.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)}(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.}(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_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](j)}(hinth]hint}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM7ubj )}(h h]h }(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjVhhhjhhM7ubj$ )}(hmedia_entity_get_fwnode_padh]j* )}(hmedia_entity_get_fwnode_padh]hmedia_entity_get_fwnode_pad}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjwubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjVhhhjhhM7ubj)}(h`(struct media_entity *entity, const struct fwnode_handle *fwnode, unsigned long direction_flags)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 classnameNj%j()}j+]j )}jj}sbc.media_entity_get_fwnode_padasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h"const struct fwnode_handle *fwnodeh](j )}(hjE.h]hconst}(hj hhhNhNubah}(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 }(hj1hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(h fwnode_handleh]h fwnode_handle}(hjBhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNj%j()}j+]jc.media_entity_get_fwnode_padasbuh1hhjubj )}(h h]h }(hj`hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjnhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hfwnodeh]hfwnode}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned long direction_flagsh](j)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hdirection_flagsh]hdirection_flags}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjVhhhjhhM7ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjRhhhjhhM7ubah}(h]jMah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhhM7hjOhhubjV )}(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 hjOhhhjhhM7ubeh}(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~)}(hj7h]hstruct media_entity *entity}(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.hhM'hj1ubj )}(hhh]h)}(h The entityh]h The entity}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhM'hjMubah}(h]h ]h"]h$]h&]uh1j hj1ubeh}(h]h ]h"]h$]h&]uh1j hjLhM'hj.ubj )}(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~)}(hjph]h"const struct fwnode_handle *fwnode}(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)}(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 hjjubeh}(h]h ]h"]h$]h&]uh1j hjhM(hj.ubj )}(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~)}(hjh]hunsigned long direction_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)}(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 }(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_PAD_FL_*``h]hMEDIA_PAD_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM)hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM+hj.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.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.}(hj1hhhNhNubah}(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 }(hj@hhhNhNubj)}(h**direction_flags**h]hdirection_flags}(hjHhhhNhNubah}(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.hhM1hjubh)}(h **Return**h]j)}(hjch]hReturn}(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.hhM5hjubh)}(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.}(hjyhhhNhNubah}(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](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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 hjhhhjhMHubj$ )}(hmedia_graph_walk_inith]j* )}(hmedia_graph_walk_inith]hmedia_graph_walk_init}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMHubj)}(h6(struct media_graph *graph, struct media_device *mdev)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 classnameNj%j()}j+]j )}jjsbc.media_graph_walk_initasbuh1hhjubj )}(h h]h }(hj#hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj1hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hgraphh]hgraph}(hj>hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjWhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjSubj )}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjSubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjuhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNj%j()}j+]jc.media_graph_walk_initasbuh1hhjSubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjSubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjSubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMHubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMHubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMHhjhhubjV )}(hhh]h)}(h&Allocate resources used by graph walk.h]h&Allocate resources used by graph walk.}(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 hjhhhjhMHubeh}(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}(hj2hhhNhNubah}(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 )}(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~)}(hjRh]hstruct media_device *mdev}(hjThhhNhNubah}(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.hhM?hjLubj )}(hhh]h)}(h>Pointer to the :c:type:`media_device` that contains the objecth](hPointer to the }(hjkhhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjuh]h media_device}(hjwhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjsubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_deviceuh1hhjghM?hjkubh that contains the object}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjghM?hjhubah}(h]h ]h"]h$]h&]uh1j hjLubeh}(h]h ]h"]h$]h&]uh1j hjghM?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.hhMAhjubh)}(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.hhMAhjubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjubh)}(h;Returns zero on success or a negative error code otherwise.h]h;Returns zero 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.hhMFhjubeh}(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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMRubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj!hMRubj$ )}(hmedia_graph_walk_cleanuph]j* )}(hmedia_graph_walk_cleanuph]hmedia_graph_walk_cleanup}(hj4hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj!hMRubj)}(h(struct media_graph *graph)h]j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj )}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubh)}(hhh]j* )}(h media_graphh]h media_graph}(hjnhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjkubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpmodnameN classnameNj%j()}j+]j )}jj6sbc.media_graph_walk_cleanupasbuh1hhjLubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjLubj* )}(hgraphh]hgraph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjHubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj!hMRubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj hhhj!hMRubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj!hMRhjhhubjV )}(hhh]h)}(h%Release resources used by graph walk.h]h%Release resources used by graph walk.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj!hMRubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj)hMNhj*ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj)hMNhj ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjOh]h Description}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(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.}(hjehhhNhNubah}(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_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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMeubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMeubj$ )}(hmedia_graph_walk_starth]j* )}(hmedia_graph_walk_starth]hmedia_graph_walk_start}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMeubj)}(h8(struct media_graph *graph, struct media_entity *entity)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 classnameNj%j()}j+]j )}jjsbc.media_graph_walk_startasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hgraphh]hgraph}(hj*hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *entityh](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_entityh]h media_entity}(hjahhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNj%j()}j+]j c.media_graph_walk_startasbuh1hhj?ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj?ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj?ubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMeubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMeubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMehjhhubjV )}(hhh]h)}(h/Start walking the media graph at a given entityh]h/Start walking the media graph at a given entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMeubeh}(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_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)}(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.hhMYhjubj )}(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~)}(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:337: ./include/media/media-entity.hhMYhj8ubj )}(hhh]h)}(hStarting entityh]hStarting entity}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMYhjTubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hjShMYhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjyh]h Description}(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.hhM[hjubh)}(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.hhM[hjubh)}(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().}(hjhhhNhNubah}(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 ] 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}(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.hhMvubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMvubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jmedia_graph_walk_nextsbc.media_graph_walk_nextasbuh1hhjhhhjhMvubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMvubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMvubj$ )}(hmedia_graph_walk_nexth]j* )}(hj h]hmedia_graph_walk_next}(hj,hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj(ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMvubj)}(h(struct media_graph *graph)h]j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj )}(h h]h }(hjThhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubh)}(hhh]j* )}(h media_graphh]h media_graph}(hjehhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjbubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjgmodnameN classnameNj%j()}j+]jc.media_graph_walk_nextasbuh1hhjCubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjCubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjCubj* )}(hgraphh]hgraph}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjCubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj?ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMvubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMvubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMvhjhhubjV )}(hhh]h)}(h Get the next entity in the graphh]h Get the next entity in the graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMihjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMvubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(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.hhMmhjubj )}(hhh]j )}(h4``struct media_graph *graph`` Media graph structure h](j )}(h``struct media_graph *graph``h]j~)}(hj h]hstruct media_graph *graph}(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)}(hMedia graph structureh]hMedia graph structure}(hj"hhhNhNubah}(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 hjubh)}(h**Description**h]j)}(hjDh]h Description}(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.hhMlhjubh)}(hGThis function is deprecated, use media_pipeline_for_each_pad() instead.h]hGThis function is deprecated, use media_pipeline_for_each_pad() instead.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMlhjubh)}(hBPerform a depth-first traversal of the given media entities graph.h]hBPerform a depth-first traversal of the given media entities graph.}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMnhjubh)}(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().}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMphjubh)}(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.hhMshjubh)}(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 }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh( if the whole graph have been traversed.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMshjubeh}(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](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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_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# 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 }(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) hj8ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj=modnameN classnameNj%j()}j+]j )}jjsbc.media_pipeline_startasbuh1hhjubj )}(h h]h }(hj[hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjihhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(horiginh]horigin}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(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 classnameNj%j()}j+]jWc.media_pipeline_startasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hpipeh]hpipe}(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)}(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.hhMyhj hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j(jx j(jy 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)}(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.hhM}hj,ubj )}(hhh](j )}(h*``struct media_pad *origin`` Starting pad h](j )}(h``struct media_pad *origin``h]j~)}(hjQh]hstruct media_pad *origin}(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.hhMzhjKubj )}(hhh]h)}(h Starting padh]h Starting pad}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhMzhjgubah}(h]h ]h"]h$]h&]uh1j hjKubeh}(h]h ]h"]h$]h&]uh1j hjfhMzhjHubj )}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM{hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM{hjHubeh}(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.hhM}hj,ubh)}(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 }(hjhhhNhNubj)}(h **origin**h]horigin}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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.}(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,ubh)}(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.hhMhj,ubeh}(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](j)}(hinth]hint}(hj+hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'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'hhhj9hMubj$ )}(h__media_pipeline_starth]j* )}(h__media_pipeline_starth]h__media_pipeline_start}(hjLhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjHubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj'hhhj9hMubj)}(h7(struct media_pad *origin, struct media_pipeline *pipe)h](j)}(hstruct media_pad *originh](j )}(hj h]hstruct}(hjhhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj )}(h h]h }(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubh)}(hhh]j* )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jjNsbc.__media_pipeline_startasbuh1hhjdubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjdubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjdubj* )}(horiginh]horigin}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjdubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubj)}(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 classnameNj%j()}j+]jc.__media_pipeline_startasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj$hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hpipeh]hpipe}(hj1hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj`ubeh}(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)}(hMark a pipeline as streamingh]hMark a pipeline as 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.hhMhjXhhubah}(h]h ]h"]h$]h&]uh1jU hj hhhj9hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jsjx jsjy 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)}(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.hhMhjwubj )}(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.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 hjhMhjubj )}(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.hhMhjubj )}(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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(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.hhMhjwubh)}(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()}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjwubeh}(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](j)}(hvoidh]hvoid}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjdhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjQhhhjchMubj$ )}(hmedia_pipeline_stoph]j* )}(hmedia_pipeline_stoph]hmedia_pipeline_stop}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjrubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjQhhhjchMubj)}(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 classnameNj%j()}j+]j )}jjxsbc.media_pipeline_stopasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjQhhhjchMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjMhhhjchMubah}(h]jHah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjchMhjJhhubjV )}(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 hjJhhhjchMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j-jx j-jy 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)}(hj7h]h Parameters}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj1ubj )}(hhh]j )}(h'``struct media_pad *pad`` Starting pad h](j )}(h``struct media_pad *pad``h]j~)}(hjVh]hstruct media_pad *pad}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjTubah}(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)}(h Starting padh]h Starting pad}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMhjlubah}(h]h ]h"]h$]h&]uh1j hjPubeh}(h]h ]h"]h$]h&]uh1j hjkhMhjMubah}(h]h ]h"]h$]h&]uh1j hj1ubh)}(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.hhMhj1ubh)}(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 }(hjhhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(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.hhMhj1ubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj1ubeh}(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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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}(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj )}(h h]h }(hjAhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubh)}(hhh]j* )}(h media_padh]h media_pad}(hjRhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjOubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjTmodnameN classnameNj%j()}j+]j )}jjsbc.__media_pipeline_stopasbuh1hhj0ubj )}(h h]h }(hjrhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj0ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj0ubj* )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj0ubeh}(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 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} )}(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)}(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&]uh1hhj hMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj3h]h Description}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(h8This is the non-locking version of media_pipeline_stop()h]h)}(hjKh]h8This is the non-locking version of media_pipeline_stop()}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjIubah}(h]h ]h"]h$]h&]uh1jhjubeh}(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* )}(hj{h]hmedia_pipeline_for_each_pad}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(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 hjyhhhjhMubah}(h]jtah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMhjvhhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hjvhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubh)}(h1``media_pipeline_for_each_pad (pipe, iter, pad)``h]j~)}(hjh]h-media_pipeline_for_each_pad (pipe, iter, pad)}(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 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}(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} )}(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&]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~)}(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.hhMhjubj )}(hhh]h)}(h The pipelineh]h The pipeline}(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 )}(h7``iter`` The iterator (struct media_pipeline_pad_iter) h](j )}(h``iter``h]j~)}(hjDh]hiter}(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)}(h-The iterator (struct media_pipeline_pad_iter)h]h-The iterator (struct media_pipeline_pad_iter)}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjYhMhjZubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hjYhMhjubj )}(h``pad`` The iterator pad h](j )}(h``pad``h]j~)}(hj}h]hpad}(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.hhMhjwubj )}(hhh]h)}(hThe iterator padh]hThe iterator pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjwubeh}(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)}(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().}(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_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](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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_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# hjhhhj hMubj)}(hF(struct media_pipeline *pipe, struct media_pipeline_entity_iter *iter)h](j)}(hstruct media_pipeline *pipeh](j )}(hj h]hstruct}(hj:hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubj )}(h h]h }(hjGhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubh)}(hhh]j* )}(hmedia_pipelineh]hmedia_pipeline}(hjXhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjUubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjZmodnameN classnameNj%j()}j+]j )}jj sb!c.media_pipeline_entity_iter_initasbuh1hhj6ubj )}(h h]h }(hjxhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj6ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj6ubj* )}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubj)}(h'struct media_pipeline_entity_iter *iterh](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_pipeline_entity_iterh]hmedia_pipeline_entity_iter}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jt!c.media_pipeline_entity_iter_initasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hiterh]hiter}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj2ubeh}(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%Initialize a pipeline entity iteratorh]h%Initialize a pipeline entity iterator}(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 jEjx jEjy 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)}(hjOh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjIubj )}(hhh](j )}(h-``struct media_pipeline *pipe`` The pipeline h](j )}(h``struct media_pipeline *pipe``h]j~)}(hjnh]hstruct media_pipeline *pipe}(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.hhMhjhubj )}(hhh]h)}(h The pipelineh]h The pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]uh1j hjhMhjeubj )}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjeubeh}(h]h ]h"]h$]h&]uh1j hjIubh)}(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.hhMhjIubh)}(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.hhMhjIubh)}(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.hhMhjIubh)}(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.hhMhjIubh)}(h00 on success or a negative error code otherwise.h]h00 on success or a negative error code 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.hhMhjIubeh}(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](j)}(hvoidh]hvoid}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj )}(h h]h }(hjlhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjYhhhjkhMubj$ )}(h"media_pipeline_entity_iter_cleanuph]j* )}(h"media_pipeline_entity_iter_cleanuph]h"media_pipeline_entity_iter_cleanup}(hj~hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjzubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjYhhhjkhMubj)}(h)(struct media_pipeline_entity_iter *iter)h]j)}(h'struct media_pipeline_entity_iter *iterh](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_pipeline_entity_iterh]hmedia_pipeline_entity_iter}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jjsb$c.media_pipeline_entity_iter_cleanupasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hiterh]hiter}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjYhhhjkhMubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjUhhhjkhMubah}(h]jPah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjkhMhjRhhubjV )}(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 hjRhhhjkhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j5jx j5jy 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)}(hj?h]h Parameters}(hjAhhhNhNubah}(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.hhMhj9ubj )}(hhh]j )}(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}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 The iteratorh]h The iterator}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjtubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjshMhjUubah}(h]h ]h"]h$]h&]uh1j hj9ubh)}(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.hhMhj9ubh)}(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().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj9ubeh}(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* )}(hjh]hmedia_pipeline_for_each_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.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)}(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}(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&]uh1jhj<hMhj 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)}(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 )}(h``pipe`` The pipeline h](j )}(h``pipe``h]j~)}(hjhh]hpipe}(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 The pipelineh]h 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_ubj )}(h:``iter`` The iterator (struct media_pipeline_entity_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)}(h0The iterator (struct media_pipeline_entity_iter)h]h0The iterator (struct media_pipeline_entity_iter)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj_ubj )}(h``entity`` The iterator entity 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.hhMhjubj )}(hhh]h)}(hThe iterator entityh]hThe iterator entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj_ubeh}(h]h ]h"]h$]h&]uh1j hjCubh)}(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.hhMhjCubh)}(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).}(hj+hhhNhNubah}(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 '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](j)}(hinth]hint}(hjZhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjVhhhf/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_pipeline_alloc_starth]j* )}(hmedia_pipeline_alloc_starth]hmedia_pipeline_alloc_start}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjwubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjVhhhjhhMubj)}(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 classnameNj%j()}j+]j )}jj}sbc.media_pipeline_alloc_startasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hpadh]hpad}(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)}(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 hjOhhhjhhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw j2jx j2jy 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)}(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 )}(h'``struct media_pad *pad`` Starting pad h](j )}(h``struct media_pad *pad``h]j~)}(hj[h]hstruct media_pad *pad}(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)}(h Starting padh]h Starting pad}(hjthhhNhNubah}(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)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj6ubh)}(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().}(hjhhhNhNubah}(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_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}(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* )}(hmedia_intf_devnodeh]hmedia_intf_devnode}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNj%j()}j+]j )}jmedia_devnode_createsbc.media_devnode_createasbuh1hhjhhhjhMubj )}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj4)}(hj7h]h*}(hj8hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMubj$ )}(hmedia_devnode_createh]j* )}(hj'h]hmedia_devnode_create}(hjIhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjEubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(hF(struct media_device *mdev, u32 type, u32 flags, u32 major, u32 minor)h](j)}(hstruct media_device *mdevh](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_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j%c.media_devnode_createasbuh1hhj`ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj`ubj* )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(hu32 typeh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j%c.media_devnode_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(htypeh]htype}(hjhhhNhNubah}(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 reftargetj!modnameN classnameNj%j()}j+]j%c.media_devnode_createasbuh1hhjubj )}(h h]h }(hj=hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hflagsh]hflags}(hjKhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(h u32 majorh](h)}(hhh]j* )}(hu32h]hu32}(hjghhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjdubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjimodnameN classnameNj%j()}j+]j%c.media_devnode_createasbuh1hhj`ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj`ubj* )}(hmajorh]hmajor}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj`ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj\ubj)}(h u32 minorh](h)}(hhh]j* )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j%c.media_devnode_createasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj* )}(hminorh]hminor}(hjhhhNhNubah}(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/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 hjhhhjhMubeh}(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)}(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 )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j~)}(hjFh]hstruct media_device *mdev}(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)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj_hhhNhNubh)}(h:c:type:`media_device`h]j~)}(hjih]h media_device}(hjkhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjgubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j 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 )}(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~)}(hjh]hu32 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)}(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 }(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_T_*``h]hMEDIA_INTF_T_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh ) macros.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj=ubj )}(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}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)}(hoInterface flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_FL_*``)h](hInterface flags, as defined in }(hj'hhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hj1h]hinclude/uapi/linux/media.h}(hj3hhhNhNubah}(h]h ](hstdstd-refeh"]h$]h&]uh1hhj/ubah}(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.hhMhj'ubh ( seek for }(hj'hhhNhNubj~)}(h``MEDIA_INTF_FL_*``h]hMEDIA_INTF_FL_*}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj'ubh)}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOhMhj$ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj#hMhj=ubj )}(h(``u32 major`` Device node major number. h](j )}(h ``u32 major``h]j~)}(hj~h]h u32 major}(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)}(hDevice node major number.h]hDevice node major number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjxubeh}(h]h ]h"]h$]h&]uh1j hjhMhj=ubj )}(h(``u32 minor`` Device node minor number. h](j )}(h ``u32 minor``h]j~)}(hjh]h u32 minor}(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)}(hDevice node minor number.h]hDevice node minor number.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj=ubeh}(h]h ]h"]h$]h&]uh1j hj!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.hhM hj!ubj )}(hhh]j )}(h]if succeeded, returns a pointer to the newly allocated :c:type:`media_intf_devnode` pointer. h](j )}(h6if succeeded, returns a pointer to the newly allocatedh]h6if succeeded, returns a pointer to the newly allocated}(hjhhhNhNubah}(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)}(h%:c:type:`media_intf_devnode` pointer.h](h)}(h:c:type:`media_intf_devnode`h]j~)}(hj'h]hmedia_intf_devnode}(hj)hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj%ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jmedia_intf_devnodeuh1hhjhM hj!ubh pointer.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM hjubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hjhM hjubah}(h]h ]h"]h$]h&]uh1j hj!ubh)}(h**Description**h]j)}(hjbh]h Description}(hjdhhhNhNubah}(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)}(h=Currently, no flags for :c:type:`media_interface` is defined.h]h)}(hjzh](hCurrently, no flags for }(hj|hhhNhNubh)}(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 refexplicitrefwarnj%j)jmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj|ubh is defined.}(hj|hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjxubah}(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_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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/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_devnode_removeh]j* )}(hmedia_devnode_removeh]hmedia_devnode_remove}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(h$(struct media_intf_devnode *devnode)h]j)}(h"struct media_intf_devnode *devnodeh](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_intf_devnodeh]hmedia_intf_devnode}(hj.hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNj%j()}j+]j )}jjsbc.media_devnode_removeasbuh1hhj ubj )}(h h]h }(hjNhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj4)}(hj7h]h*}(hj\hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubj* )}(hdevnodeh]hdevnode}(hjihhhNhNubah}(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)}(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 hjhhhjhMubeh}(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)}(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_intf_devnode *devnode`` pointer to :c:type:`media_intf_devnode` to be freed. h](j )}(h&``struct media_intf_devnode *devnode``h]j~)}(hjh]h"struct media_intf_devnode *devnode}(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)}(h4pointer to :c:type:`media_intf_devnode` to be freed.h](h pointer to }(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 refexplicitrefwarnj%j)jmedia_intf_devnodeuh1hhjhMhjubh to be freed.}(hjhhhNhNubeh}(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)}(hj2h]h Description}(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.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.}(hjHhhhNhNubah}(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}(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjshhhf/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 hjshhhjhM<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 classnameNj%j()}j+]j )}jmedia_create_intf_linksbc.media_create_intf_linkasbuh1hhjshhhjhM<ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjshhhjhM<ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjshhhjhM<ubj$ )}(hmedia_create_intf_linkh]j* )}(hjh]hmedia_create_intf_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjshhhjhM<ubj)}(hF(struct media_entity *entity, struct media_interface *intf, u32 flags)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) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_intf_linkasbuh1hhjubj )}(h h]h }(hj-hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj;hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hentityh]hentity}(hjHhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_interface *intfh](j )}(hj h]hstruct}(hjahhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubj )}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubh)}(hhh]j* )}(hmedia_interfaceh]hmedia_interface}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_create_intf_linkasbuh1hhj]ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj]ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj]ubj* )}(hintfh]hintf}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj]ubeh}(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 classnameNj%j()}j+]jc.media_create_intf_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&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjshhhjhM<ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjohhhjhM<ubah}(h]jjah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhM<hjlhhubjV )}(hhh]h)}(h1creates a link between an entity and an interfaceh]h1creates a link between an entity and an interface}(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 hjlhhhjhM<ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jBjx jBjy 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)}(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.hhM$hjFubj )}(hhh](j )}(h<``struct media_entity *entity`` pointer to ``media_entity`` h](j )}(h``struct media_entity *entity``h]j~)}(hjkh]hstruct media_entity *entity}(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.hhM"hjeubj )}(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 hjeubeh}(h]h ]h"]h$]h&]uh1j hjhM"hjbubj )}(h@``struct media_interface *intf`` pointer to ``media_interface`` h](j )}(h ``struct media_interface *intf``h]j~)}(hjh]hstruct media_interface *intf}(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_interface``h](h pointer to }(hjhhhNhNubj~)}(h``media_interface``h]hmedia_interface}(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#hjbubj )}(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~)}(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)}(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 refdomainj(reftyperef 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_*}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj:hM$hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM&hjbubeh}(h]h ]h"]h$]h&]uh1j hjFubh)}(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.hhM(hjFubh)}(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)hjFubj )}(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.hhM4hjubj )}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM1hjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM4hjubah}(h]h ]h"]h$]h&]uh1j hjFubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM8hjubah}(h]h ]h"]h$]h&]uh1jhjFubeh}(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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMGubj )}(h h]h }(hj*hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj)hMGubj$ )}(h__media_remove_intf_linkh]j* )}(h__media_remove_intf_linkh]h__media_remove_intf_link}(hj<hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj8ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj)hMGubj)}(h(struct media_link *link)h]j)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hjXhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj )}(h h]h }(hjehhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubh)}(hhh]j* )}(h media_linkh]h media_link}(hjvhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNj%j()}j+]j )}jj>sbc.__media_remove_intf_linkasbuh1hhjTubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjTubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjTubj* )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjTubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjPubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj)hMGubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj)hMGubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj)hMGhjhhubjV )}(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.hhMAhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj)hMGubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(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.hhMEhjubj )}(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 }(hj5hhhNhNubh)}(h:c:type:`media_link`h]j~)}(hj?h]h media_link}(hjAhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj=ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_linkuh1hhj1hMChj5ubh.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj1hMChj2ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj1hMChjubah}(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&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMEhjubj)}(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.hhMEhjubah}(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 )}(h5void media_remove_intf_link (struct media_link *link)h]j )}(h4void media_remove_intf_link(struct media_link *link)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMPubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMPubj$ )}(hmedia_remove_intf_linkh]j* )}(hmedia_remove_intf_linkh]hmedia_remove_intf_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMPubj)}(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}(hj#hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%modnameN classnameNj%j()}j+]j )}jjsbc.media_remove_intf_linkasbuh1hhjubj )}(h h]h }(hjChhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjQhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hlinkh]hlink}(hj^hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMPubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMPubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMPhjhhubjV )}(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 hjhhhjhMPubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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~)}(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.hhMLhjubj )}(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 refexplicitrefwarnj%j)j media_linkuh1hhjhMLhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMLhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMLhjubah}(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.hhMNhjubj)}(h=Prefer to use this one, instead of __media_remove_intf_link()h]h)}(hj?h]h=Prefer to use this one, instead of __media_remove_intf_link()}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMNhj=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_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}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjhj?ubah}(h]h ]h"]h$]h&]uh1jhjQhMjhj 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)}(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.hhMnhjXubj )}(hhh](j )}(h9``entity`` entity where the **operation** will be called h](j )}(h ``entity``h]j~)}(hj}h]hentity}(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.hhMmhjwubj )}(hhh]h)}(h-entity where the **operation** will be calledh](hentity where the }(hjhhhNhNubj)}(h **operation**h]h operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh will be called}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMmhjubah}(h]h ]h"]h$]h&]uh1j hjwubeh}(h]h ]h"]h$]h&]uh1j hjhMmhjtubj )}(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~)}(hjh]h operation}(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.hhMohjubj )}(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 }(hjhhhNhNubh)}(h!:c:type:`media_entity_operations`h]j~)}(hjh]hmedia_entity_operations}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)jmedia_entity_operationsuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMnhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMnhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMohjtubj )}(h``args...`` variable arguments h](j )}(h ``args...``h]j~)}(hj%h]hargs...}(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.hhMrhjubj )}(hhh]h)}(hvariable argumentsh]hvariable arguments}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMrhj;ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj:hMrhjtubeh}(h]h ]h"]h$]h&]uh1j hjXubh)}(h**Description**h]j)}(hj`h]h Description}(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.hhMthjXubh)}(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 }(hjvhhhNhNubj)}(h **operation**h]h operation}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubh is not }(hjvhhhNhNubj~)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjvubh(. On such case, it will issue a call to }(hjvhhhNhNubj)}(h **operation**h]h operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubh(}(hjvhhhNhNubj)}(h **entity**h]hentity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubh, }(hjvhhhNhNubj)}(h**args**h]hargs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubh).}(hjvhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMqhjXubeh}(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}(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_linkh]h media_link}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNj%j()}j+]j )}jmedia_create_ancillary_linksbc.media_create_ancillary_linkasbuh1hhjhhhj hMubj )}(h h]h }(hj?hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj hMubj4)}(hj7h]h*}(hjMhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhj hMubj$ )}(hmedia_create_ancillary_linkh]j* )}(hj<h]hmedia_create_ancillary_link}(hj^hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjZubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj hMubj)}(h>(struct media_entity *primary, struct media_entity *ancillary)h](j)}(hstruct media_entity *primaryh](j )}(hj h]hstruct}(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j:c.media_create_ancillary_linkasbuh1hhjuubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjuubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjuubj* )}(hprimaryh]hprimary}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjqubj)}(hstruct media_entity *ancillaryh](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 classnameNj%j()}j+]j:c.media_create_ancillary_linkasbuh1hhjubj )}(h h]h }(hj%hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj3hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(h ancillaryh]h ancillary}(hj@hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjqubeh}(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)}(hHcreate an ancillary link between two instances of :c:type:`media_entity`h](h2create an ancillary link between two instances of }(hjjhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjth]h media_entity}(hjvhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j()}j+]j:c.media_create_ancillary_linkasbj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjjubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzhjghhubah}(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 *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}(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 )}(hO``struct media_entity *primary`` pointer to the primary :c:type:`media_entity` h](j )}(h ``struct media_entity *primary``h]j~)}(hjh]hstruct media_entity *primary}(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 primary :c:type:`media_entity`h](hpointer to the primary }(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%j)j media_entityuh1hhjhM}hjubeh}(h]h ]h"]h$]h&]uh1hhjhM}hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM}hjubj )}(hS``struct media_entity *ancillary`` pointer to the ancillary :c:type:`media_entity` h](j )}(h"``struct media_entity *ancillary``h]j~)}(hj(h]hstruct media_entity *ancillary}(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)}(h/pointer to the ancillary :c:type:`media_entity`h](hpointer to the ancillary }(hjAhhhNhNubh)}(h:c:type:`media_entity`h]j~)}(hjKh]h media_entity}(hjMhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjIubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhj=hM~hjAubeh}(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~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.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}(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}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}j__media_entity_next_linksbc.__media_entity_next_linkasbuh1hhjhhhjhMubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMubj4)}(hj7h]h*}(hj$hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhMubj$ )}(h__media_entity_next_linkh]j* )}(hjh]h__media_entity_next_link}(hj5hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj1ubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMubj)}(hO(struct media_entity *entity, struct media_link *link, unsigned long link_type)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjPhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj )}(h h]h }(hj]hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubh)}(hhh]j* )}(h media_entityh]h media_entity}(hjnhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjkubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpmodnameN classnameNj%j()}j+]jc.__media_entity_next_linkasbuh1hhjLubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjLubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjLubj* )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjLubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjHubj)}(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 classnameNj%j()}j+]jc.__media_entity_next_linkasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjHubj)}(hunsigned long link_typeh](j)}(hunsignedh]hunsigned}(hj0hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj )}(h h]h }(hj>hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj)}(hlongh]hlong}(hjLhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj )}(h h]h }(hjZhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj,ubj* )}(h link_typeh]h link_type}(hjhhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj,ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjHubeh}(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)}(h0Iterate through a :c:type:`media_entity`'s linksh](hIterate through 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 refexplicitrefwarnj%j()}j+]jc.__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 hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(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 )}(hF``struct media_entity *entity`` pointer to the :c:type:`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.hhMhjubj )}(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}(hj hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_entityuh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(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~)}(hjSh]hstruct media_link *link}(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=pointer to a :c:type:`media_link` to hold the iterated valuesh](h pointer to a }(hjlhhhNhNubh)}(h:c:type:`media_link`h]j~)}(hjvh]h media_link}(hjxhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjtubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_linkuh1hhjhhMhjlubh to hold the iterated values}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhhMhjiubah}(h]h ]h"]h$]h&]uh1j hjMubeh}(h]h ]h"]h$]h&]uh1j hjhhMhjubj )}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(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)}(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.}(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 )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* )}(hj)h]hfor_each_media_entity_data_link}(hj3hhhNhNubah}(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 hj'hhhjFhMubah}(h]j"ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjFhMhj$hhubjV )}(hhh]h}(h]h ]h"]h$]h&]uh1jU hj$hhhjFhMubeh}(h]h ](jmacroeh"]h$]h&]jv jjw j_jx j_jy jz j{ uh1j hhhj hNhNubh)}(h2``for_each_media_entity_data_link (entity, link)``h]j~)}(hjeh]h.for_each_media_entity_data_link (entity, link)}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjcubah}(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.hhMhj{ubah}(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}(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``entity`` pointer to the :c:type:`media_entity` 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.hhMhjubj )}(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 refexplicitrefwarnj%j)j media_entityuh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hG``link`` pointer to a :c:type:`media_link` to hold the iterated values h](j )}(h``link``h]j~)}(hjh]hlink}(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=pointer to a :c:type:`media_link` to hold the iterated valuesh](h pointer to a }(hj*hhhNhNubh)}(h:c:type:`media_link`h]j~)}(hj4h]h media_link}(hj6hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hj2ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j media_linkuh1hhj&hMhj*ubh to hold the iterated values}(hj*hhhNhNubeh}(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)}(hjoh]h Description}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(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 refexplicitrefwarnj%j)j 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 )}(hjHh]henum}(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.hhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKubj$ )}(hmedia_request_stateh]j* )}(hjh]hmedia_request_state}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhKubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhKhjhhubjV )}(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 hjhhhjhKubeh}(h]h ](jenumeh"]h$]h&]jv jjw j1jx j1jy 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)}(hj;h]h Constants}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj5ubj )}(hhh](j )}(h"``MEDIA_REQUEST_STATE_IDLE`` Idle h](j )}(h``MEDIA_REQUEST_STATE_IDLE``h]j~)}(hjZh]hMEDIA_REQUEST_STATE_IDLE}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjXubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjTubj )}(hhh]h)}(hIdleh]hIdle}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohKhjpubah}(h]h ]h"]h$]h&]uh1j hjTubeh}(h]h ]h"]h$]h&]uh1j hjohKhjQubj )}(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"hjQubj )}(h&``MEDIA_REQUEST_STATE_QUEUED`` Queued h](j )}(h``MEDIA_REQUEST_STATE_QUEUED``h]j~)}(hjh]hMEDIA_REQUEST_STATE_QUEUED}(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)}(hQueuedh]hQueued}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK%hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK%hjQubj )}(h@``MEDIA_REQUEST_STATE_COMPLETE`` Completed, the request is done h](j )}(h ``MEDIA_REQUEST_STATE_COMPLETE``h]j~)}(hjh]hMEDIA_REQUEST_STATE_COMPLETE}(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)}(hCompleted, the request is doneh]hCompleted, the request is done}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK(hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK(hjQubj )}(hJ``MEDIA_REQUEST_STATE_CLEANING`` Cleaning, the request is being re-inited h](j )}(h ``MEDIA_REQUEST_STATE_CLEANING``h]j~)}(hj?h]hMEDIA_REQUEST_STATE_CLEANING}(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+hj9ubj )}(hhh]h)}(h(Cleaning, the request is being re-initedh]h(Cleaning, the request is being re-inited}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjThK+hjUubah}(h]h ]h"]h$]h&]uh1j hj9ubeh}(h]h ]h"]h$]h&]uh1j hjThK+hjQubj )}(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~)}(hjxh]hMEDIA_REQUEST_STATE_UPDATING}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjvubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK0hjrubj )}(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 hjrubeh}(h]h ]h"]h$]h&]uh1j hjhK0hjQubj )}(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}(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.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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK3hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK3hjQubeh}(h]h ]h"]h$]h&]uh1j hj5ubeh}(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}(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK:ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhK:ubj$ )}(h media_requesth]j* )}(hjh]h media_request}(hj+hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj'ubah}(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 requesth]hMedia device request}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK2hjJhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhK:ubeh}(h]h ](jstructeh"]h$]h&]jv jjw jejx jejy 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; 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 ``poll_wait`` Wait queue for poll ``lock`` Serializes access to this structh](h)}(h**Definition**::h](j)}(h**Definition**h]h Definition}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubh:}(hjmhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK6hjiubj)}(hXWstruct 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; wait_queue_head_t poll_wait; spinlock_t lock; };h]hXWstruct 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; 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.hhK8hjiubh)}(h **Members**h]j)}(hjh]hMembers}(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.hhKEhjiubj )}(hhh](j )}(h.``mdev`` Media device this request 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.hhK4hjubj )}(hhh]h)}(h$Media device this request belongs toh]h$Media device this request belongs to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK4hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK4hjubj )}(h``kref`` Reference count 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.hhK5hjubj )}(hhh]h)}(hReference counth]hReference count}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK5hj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK5hjubj )}(h:``debug_str`` Prefix for debug messages (process name:fd) h](j )}(h ``debug_str``h]j~)}(hj,h]h debug_str}(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.hhK6hj&ubj )}(hhh]h)}(h+Prefix for debug messages (process name:fd)h]h+Prefix for debug messages (process name:fd)}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhK6hjBubah}(h]h ]h"]h$]h&]uh1j hj&ubeh}(h]h ]h"]h$]h&]uh1j hjAhK6hjubj )}(h#``state`` The state of the request h](j )}(h ``state``h]j~)}(hjeh]hstate}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjcubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK7hj_ubj )}(hhh]h)}(hThe state of the requesth]hThe state of the request}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhK7hj{ubah}(h]h ]h"]h$]h&]uh1j hj_ubeh}(h]h ]h"]h$]h&]uh1j hjzhK7hjubj )}(hL``updating_count`` count the number of request updates that are in progress h](j )}(h``updating_count``h]j~)}(hjh]hupdating_count}(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.hhK8hjubj )}(hhh]h)}(h8count the number of request updates that are in progressh]h8count the number of request updates that are in progress}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK8hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK8hjubj )}(hK``access_count`` count the number of request accesses that are in progress h](j )}(h``access_count``h]j~)}(hjh]h access_count}(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.hhK9hjubj )}(hhh]h)}(h9count the number of request accesses that are in progressh]h9count the number of request accesses that are in progress}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK9hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK9hjubj )}(hD``objects`` List of **struct** media_request_object request objects h](j )}(h ``objects``h]j~)}(hjh]hobjects}(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:hj ubj )}(hhh]h)}(h7List of **struct** media_request_object request objectsh](hList of }(hj)hhhNhNubj)}(h **struct**h]hstruct}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)ubh% media_request_object request objects}(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:hjubj )}(hK``num_incomplete_objects`` The number of incomplete objects in the request h](j )}(h``num_incomplete_objects``h]j~)}(hj[h]hnum_incomplete_objects}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjYubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK;hjUubj )}(hhh]h)}(h/The number of incomplete objects in the requesth]h/The number of incomplete objects in the request}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1hhjphK;hjqubah}(h]h ]h"]h$]h&]uh1j hjUubeh}(h]h ]h"]h$]h&]uh1j hjphK;hjubj )}(h"``poll_wait`` Wait queue for poll h](j )}(h ``poll_wait``h]j~)}(hjh]h poll_wait}(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.hhKubah}(h]h ]h"]h$]h&]uh1j hj"ubeh}(h]h ]h"]h$]h&]uh1j hj=hKPhjubah}(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&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKRhjubh)}(hUse before accessing a completed request. A reference to the request must be held during the access. This usually takes place automatically through a file handle. Use **media_request_unlock_for_access** when done.h](hUse before accessing a completed request. A reference to the request must be held during the access. This usually takes place automatically through a file handle. Use }(hjyhhhNhNubj)}(h#**media_request_unlock_for_access**h]hmedia_request_unlock_for_access}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubh when done.}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKRhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j ,media_request_unlock_for_access (C function)!c.media_request_unlock_for_accesshNtauh1j hj hhhNhNubj )}(hhh](j )}(h@void media_request_unlock_for_access (struct media_request *req)h]j )}(h?void media_request_unlock_for_access(struct media_request *req)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKoubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhKoubj$ )}(hmedia_request_unlock_for_accessh]j* )}(hmedia_request_unlock_for_accessh]hmedia_request_unlock_for_access}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhKoubj)}(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 }(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 classnameNj%j()}j+]j )}jjsb!c.media_request_unlock_for_accessasbuh1hhjubj )}(h h]h }(hj5hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjChhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hreqh]hreq}(hjPhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKoubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhKoubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhKohjhhubjV )}(hhh]h)}(h-Unlock a request previously locked for accessh]h-Unlock a request previously locked for access}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKghjwhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhKoubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy jz j{ uh1j hhhj hNhNubj} )}(h**Parameters** ``struct media_request *req`` The media request **Description** Unlock a request that has previously been locked using **media_request_lock_for_access**.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.hhKkhjubj )}(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.hhKjhjubj )}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKjhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKjhjubah}(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.hhKlhjubh)}(hYUnlock a request that has previously been locked using **media_request_lock_for_access**.h](h7Unlock a request that has previously been locked using }(hj hhhNhNubj)}(h!**media_request_lock_for_access**h]hmedia_request_lock_for_access}(hjhhhNhNubah}(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.hhKlhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j| hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j *media_request_lock_for_update (C function)c.media_request_lock_for_updatehNtauh1j hj hhhNhNubj )}(hhh](j )}(h=int media_request_lock_for_update (struct media_request *req)h]j )}(hhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubh)}(hhh]j* )}(h media_requesth]h media_request}(hjOhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNj%j()}j+]j )}jjsbc.media_request_putasbuh1hhj-ubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj-ubj4)}(hj7h]h*}(hj}hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj-ubj* )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj-ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubah}(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.hhKhjhhubah}(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&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj0h]h Description}(hj2hhhNhNubah}(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)}(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.}(hjFhhhNhNubah}(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}(hjuhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqhhhg/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 hjqhhhjhKubh)}(hhh]j* )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jmedia_request_get_by_fdsbc.media_request_get_by_fdasbuh1hhjqhhhjhKubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjqhhhjhKubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjqhhhjhKubj$ )}(hmedia_request_get_by_fdh]j* )}(hjh]hmedia_request_get_by_fd}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjqhhhjhKubj)}(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}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jc.media_request_get_by_fdasbuh1hhjubj )}(h h]h }(hj+hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj9hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hmdevh]hmdev}(hjFhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint request_fdh](j)}(hinth]hint}(hj_hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ubj )}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj[ubj* )}(h request_fdh]h request_fd}(hj{hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj[ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjqhhhjhKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjmhhhjhKubah}(h]jhah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhKhjjhhubjV )}(hhh]h)}(hGet a media request by fdh]hGet a media request by fd}(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 hjjhhhjhKubeh}(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}(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.hhKhjubj )}(hhh]h)}(h"The file descriptor of the requesth]h"The file descriptor of the request}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hKhj5ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj4hKhjubeh}(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)}(hPGet the request represented by **request_fd** that is owned by the media device.h](hGet the request represented by }(hjphhhNhNubj)}(h**request_fd**h]h request_fd}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubh# that is owned by the media device.}(hjphhhNhNubeh}(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 }(hjhhhNhNubj)}(h**media_request_put**h]hmedia_request_put}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh$ when it finished using the request.}(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_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](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhg/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_alloch]j* )}(hmedia_request_alloch]hmedia_request_alloc}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhKubj)}(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 classnameNj%j()}j+]j )}jjsbc.media_request_allocasbuh1hhj ubj )}(h h]h }(hjM hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj ubj4)}(hj7h]h*}(hj[ hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj ubj* )}(hmdevh]hmdev}(hjh hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h int *alloc_fdh](j)}(hinth]hint}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj} ubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj} ubj4)}(hj7h]h*}(hj hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj} ubj* )}(halloc_fdh]halloc_fd}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj} ubeh}(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)}(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 hjhhhjhKubeh}(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~)}(hjN h]h int *alloc_fd}(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:339: ./include/media/media-request.hhKhjH ubj )}(hhh]h)}(h/Store the request's file descriptor in this inth]h1Store the request’s file descriptor in this int}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc hKhjd ubah}(h]h ]h"]h$]h&]uh1j hjH ubeh}(h]h ]h"]h$]h&]uh1j hjc hKhj 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&]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 }(hj hhhNhNubj)}(h **alloc_fd**h]halloc_fd}(hj hhhNhNubah}(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.hhKhj ubeh}(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}(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 }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhj hKubj$ )}(hmedia_request_object_opsh]j* )}(hj h]hmedia_request_object_ops}(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 request object operationsh]hMedia request object operations}(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 ](jstructeh"]h$]h&]jv jjw j: jx j: jy 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}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjB ubh:}(hjB hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj> ubj)}(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); };}hj_ sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj> ubh)}(h **Members**h]j)}(hjp h]hMembers}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjn 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?``prepare`` Validate and prepare the request object, optional. h](j )}(h ``prepare``h]j~)}(hj h]hprepare}(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)}(h2Validate and prepare the request object, optional.h]h2Validate and prepare the request object, optional.}(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 )}(h6``unprepare`` Unprepare the request object, optional. h](j )}(h ``unprepare``h]j~)}(hj h]h unprepare}(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'Unprepare the request object, optional.h]h'Unprepare the request object, optional.}(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.``queue`` Queue the request object, optional. h](j )}(h ``queue``h]j~)}(hj h]hqueue}(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#Queue the request object, optional.h]h#Queue the request object, optional.}(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 )}(h0``unbind`` Unbind the request object, optional. h](j )}(h ``unbind``h]j~)}(hj: h]hunbind}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj8 ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj4 ubj )}(hhh]h)}(h$Unbind the request object, optional.h]h$Unbind the request object, optional.}(hjS hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjO hKhjP ubah}(h]h ]h"]h$]h&]uh1j hj4 ubeh}(h]h ]h"]h$]h&]uh1j hjO hKhj ubj )}(h1``release`` Release the request object, required.h](j )}(h ``release``h]j~)}(hjs h]hrelease}(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:339: ./include/media/media-request.hhKhjm ubj )}(hhh]h)}(h%Release the request object, required.h]h%Release the request object, required.}(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 ubah}(h]h ]h"]h$]h&]uh1j hjm 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_request_object (C struct)c.media_request_objecthNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_request_objecth]j )}(hstruct media_request_objecth](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 }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj hhhj hKubj$ )}(hmedia_request_objecth]j* )}(hj h]hmedia_request_object}(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)}(h0An opaque object that belongs to a media requesth]h0An opaque object that belongs to a 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.hhMhj hhubah}(h]h ]h"]h$]h&]uh1jU hj hhhj hKubeh}(h]h ](jstructeh"]h$]h&]jv jjw j' jx j' jy jz j{ uh1j hhhj hNhNubj} )}(hX:**Definition**:: struct media_request_object { const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; }; **Members** ``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}(hj3 hhhNhNubah}(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.hhMhj+ ubj)}(hstruct media_request_object { 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 { const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; };}hjL sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj+ 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:339: ./include/media/media-request.hhMhj+ ubj )}(hhh](j )}(h``ops`` object's operations h](j )}(h``ops``h]j~)}(hj| h]hops}(hj~ hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjz ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjv ubj )}(hhh]h)}(hobject's operationsh]hobject’s operations}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j hjv ubeh}(h]h ]h"]h$]h&]uh1j hj hMhjs ubj )}(h``priv`` object's priv pointer h](j )}(h``priv``h]j~)}(hj h]hpriv}(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)}(hobject's priv pointerh]hobject’s priv pointer}(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 hMhjs ubj )}(h9``req`` the request this object belongs to (can be NULL) h](j )}(h``req``h]j~)}(hj h]hreq}(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)}(h0the request this object belongs to (can be NULL)h]h0the request this object belongs to (can be NULL)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjs ubj )}(h?``list`` List entry of the object for **struct** media_request h](j )}(h``list``h]j~)}(hj'h]hlist}(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)}(h5List entry of the object for **struct** media_requesth](hList entry of the object for }(hj@hhhNhNubj)}(h **struct**h]hstruct}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@ubh media_request}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj<hMhj=ubah}(h]h ]h"]h$]h&]uh1j hj!ubeh}(h]h ]h"]h$]h&]uh1j hj<hMhjs ubj )}(hK``kref`` Reference count of the object, acquire before releasing req->lock h](j )}(h``kref``h]j~)}(hjrh]hkref}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjpubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjlubj )}(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&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjlubeh}(h]h ]h"]h$]h&]uh1j hjhMhjs ubj )}(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.hhMhjubj )}(hhh]h)}(h(If true, then this object was completed.h]h(If true, then this object was completed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjs 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&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM hj 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.}(hjhhhNhNubah}(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](j)}(hvoidh]hvoid}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj(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_geth]j* )}(hmedia_request_object_geth]hmedia_request_object_get}(hjMhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjIubah}(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}(hjihhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj )}(h h]h }(hjvhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jjOsbc.media_request_object_getasbuh1hhjeubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjeubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjeubj* )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubah}(h]h ]h"]h$]h&]hhuh1jhj(hhhj:hMubeh}(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)}(hGet a media request objecth]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.hhMhjhhubah}(h]h ]h"]h$]h&]uh1jU hj!hhhj:hMubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(hjh]h Parameters}(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.hhMhjubj )}(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}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMhjCubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hjBhMhj$ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hjhh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubh)}(hGet a media request object.h]hGet a media request object.}(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_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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhg/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_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# hjhhhjhM,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 reftargetj modnameN classnameNj%j()}j+]j )}jjsbc.media_request_object_putasbuh1hhjubj )}(h h]h }(hj(hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj6hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hobjh]hobj}(hjChhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(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)}(hPut a media request objecth]hPut a media request object}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM%hjjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhM,ubeh}(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.hhM)hjubj )}(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.hhM'hjubj )}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM'hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM'hjubah}(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)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM)hjubeh}(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}(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.hhM=ubj )}(h h]h }(hj<hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*hhhj;hM=ubh)}(hhh]j* )}(hmedia_request_objecth]hmedia_request_object}(hjMhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNj%j()}j+]j )}jmedia_request_object_findsbc.media_request_object_findasbuh1hhj*hhhj;hM=ubj )}(h h]h }(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj*hhhj;hM=ubj4)}(hj7h]h*}(hj|hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj*hhhj;hM=ubj$ )}(hmedia_request_object_findh]j* )}(hjkh]hmedia_request_object_find}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hj*hhhj;hM=ubj)}(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) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]jic.media_request_object_findasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h*const struct media_request_object_ops *opsh](j )}(hjE.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}(hj3hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hj@hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubh)}(hhh]j* )}(hmedia_request_object_opsh]hmedia_request_object_ops}(hjQhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNj%j()}j+]jic.media_request_object_findasbuh1hhjubj )}(h h]h }(hjohhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hj}hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hopsh]hops}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *privh](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hprivh]hpriv}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(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)}(hFind an object in a requesth]hFind an object in a 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 hj#hhhj;hM=ubeh}(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`` 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)}(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.hhM3hjubj )}(hhh](j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j~)}(hj7h]hstruct media_request *req}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj5ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM1hj1ubj )}(hhh]h)}(hThe media requesth]hThe media request}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjLhM1hjMubah}(h]h ]h"]h$]h&]uh1j hj1ubeh}(h]h ]h"]h$]h&]uh1j hjLhM1hj.ubj )}(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~)}(hjph]h*const struct media_request_object_ops *ops}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM2hjjubj )}(hhh]h)}(h"Find an object with this ops valueh]h"Find an object with this ops value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM2hjubah}(h]h ]h"]h$]h&]uh1j hjjubeh}(h]h ]h"]h$]h&]uh1j hjhM2hj.ubj )}(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.hhM3hjubj )}(hhh]h)}(h#Find an object with this priv valueh]h#Find an object with this priv value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM3hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM3hj.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&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM5hjubh)}(h+Both **ops** and **priv** must be non-NULL.h](hBoth }(hjhhhNhNubj)}(h**ops**h]hops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and }(hjhhhNhNubj)}(h**priv**h]hpriv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh must be non-NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM5hjubh)}(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.}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM7hjubh)}(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 }(hj<hhhNhNubj)}(h **req->lock**h]h req->lock}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubh spin lock to make this safe.}(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:hjubeh}(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](j)}(hvoidh]hvoid}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjyhhhg/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 hjyhhhjhMKubj$ )}(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# hjyhhhjhMKubj)}(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 classnameNj%j()}j+]j )}jjsbc.media_request_object_initasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjyhhhjhMKubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjuhhhjhMKubah}(h]jpah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMKhjrhhubjV )}(hhh]h)}(h!Initialise a media request objecth]h!Initialise a media request object}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMChj:hhubah}(h]h ]h"]h$]h&]uh1jU hjrhhhjhMKubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jUjx jUjy 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)}(hj_h]h Parameters}(hjahhhNhNubah}(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.hhMGhjYubj )}(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}(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.hhMEhjxubj )}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMEhjubah}(h]h ]h"]h$]h&]uh1j hjxubeh}(h]h ]h"]h$]h&]uh1j hjhMEhjuubah}(h]h ]h"]h$]h&]uh1j hjYubh)}(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.hhMGhjYubh)}(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.hhMGhjYubeh}(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](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMdubj )}(h h]h }(hj hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhj hMdubj$ )}(hmedia_request_object_bindh]j* )}(hmedia_request_object_bindh]hmedia_request_object_bind}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhj hMdubj)}(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}(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_requesth]h media_request}(hjYhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[modnameN classnameNj%j()}j+]j )}jj!sbc.media_request_object_bindasbuh1hhj7ubj )}(h h]h }(hjyhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj7ubj* )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(h*const struct media_request_object_ops *opsh](j )}(hjE.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}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]juc.media_request_object_bindasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hopsh]hops}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(h void *privh](j)}(hvoidh]hvoid}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj4ubj )}(h h]h }(hjFhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj4ubj4)}(hj7h]h*}(hjThhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj4ubj* )}(hprivh]hpriv}(hjahhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj4ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(hbool is_bufferh](j)}(hjrh]hbool}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjvubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjvubj* )}(h is_bufferh]h is_buffer}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjvubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubj)}(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 classnameNj%j()}j+]juc.media_request_object_bindasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMdubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhj hMdubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj hMdhjhhubjV )}(hhh]h)}(h(Bind a media request object to a requesth]h(Bind a media request object to 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.hhMNhj,hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhj hMdubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jGjx jGjy 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 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)}(hjQh]h Parameters}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMRhjKubj )}(hhh](j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j~)}(hjph]hstruct media_request *req}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjnubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMPhjjubj )}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMPhjubah}(h]h ]h"]h$]h&]uh1j hjjubeh}(h]h ]h"]h$]h&]uh1j hjhMPhjgubj )}(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.hhMQhjubj )}(hhh]h)}(hThe object ops for this objecth]hThe object ops for this object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMQhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMQhjgubj )}(hJ``void *priv`` A driver-specific priv pointer associated with this object 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.hhMRhjubj )}(hhh]h)}(h:A driver-specific priv pointer associated with this objecth]h:A driver-specific priv pointer associated with this object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMRhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMRhjgubj )}(h>``bool is_buffer`` Set to true if the object a buffer object. h](j )}(h``bool is_buffer``h]j~)}(hjh]hbool is_buffer}(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.hhMShjubj )}(hhh]h)}(h*Set to true if the object a buffer object.h]h*Set to true if the object a buffer object.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0hMShj1ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj0hMShjgubj )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hjTh]h struct media_request_object *obj}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjRubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMThjNubj )}(hhh]h)}(h The objecth]h The object}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihMThjjubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjihMThjgubeh}(h]h ]h"]h$]h&]uh1j hjKubh)}(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.hhMVhjKubh)}(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.hhMVhjKubh)}(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.hhMYhjKubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM^hjKubeh}(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](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMpubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhMpubj$ )}(hmedia_request_object_unbindh]j* )}(hmedia_request_object_unbindh]hmedia_request_object_unbind}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhMpubj)}(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}(hjMhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjJubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjOmodnameN classnameNj%j()}j+]j )}jjsbc.media_request_object_unbindasbuh1hhj+ubj )}(h h]h }(hjmhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj+ubj4)}(hj7h]h*}(hj{hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj+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&]hhuh1jhjhhhjhMpubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjhhhjhMpubah}(h]jah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMphjhhubjV )}(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.hhMjhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhMpubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(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.hhMnhjubj )}(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.hhMlhjubj )}(hhh]h)}(h The objecth]h The object}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMlhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMlhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j)}(hj.h]h Description}(hj0hhhNhNubah}(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.hhMnhjubh)}(h1Unbind the media request object from the request.h]h1Unbind the media request object from the request.}(hjDhhhNhNubah}(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_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](j)}(hvoidh]hvoid}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjohhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMzubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjohhhjhMzubj$ )}(hmedia_request_object_completeh]j* )}(hmedia_request_object_completeh]hmedia_request_object_complete}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjohhhjhMzubj)}(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 classnameNj%j()}j+]j )}jjsbc.media_request_object_completeasbuh1hhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(hobjh]hobj}(hj hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjohhhjhMzubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hjkhhhjhMzubah}(h]jfah ](jM jN eh"]h$]h&]jR jS )jT huh1j hjhMzhjhhhubjV )}(hhh]h)}(h)Mark the media request object as completeh]h)Mark the media request object as complete}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMshj0hhubah}(h]h ]h"]h$]h&]uh1jU hjhhhhjhMzubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jKjx jKjy 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)}(hjUh]h Parameters}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMwhjOubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j~)}(hjth]h struct media_request_object *obj}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjrubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMuhjnubj )}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMuhjubah}(h]h ]h"]h$]h&]uh1j hjnubeh}(h]h ]h"]h$]h&]uh1j hjhMuhjkubah}(h]h ]h"]h$]h&]uh1j hjOubh)}(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.hhMwhjOubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMwhjOubeh}(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}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK&ubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhK&ubh)}(hhh]j* )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j )}jmedia_device_usb_allocatesbc.media_device_usb_allocateasbuh1hhjhhhjhK&ubj )}(h h]h }(hj4hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjhhhjhK&ubj4)}(hj7h]h*}(hjBhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjhhhjhK&ubj$ )}(hmedia_device_usb_allocateh]j* )}(hj1h]hmedia_device_usb_allocate}(hjShhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjOubah}(h]h ](j< j= eh"]h$]h&]hhuh1j# hjhhhjhK&ubj)}(hH(struct usb_device *udev, const char *module_name, struct module *owner)h](j)}(hstruct usb_device *udevh](j )}(hj h]hstruct}(hjnhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjubj )}(h h]h }(hj{hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjubh)}(hhh]j* )}(h usb_deviceh]h usb_device}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNj%j()}j+]j/c.media_device_usb_allocateasbuh1hhjjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjjubj* )}(hudevh]hudev}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(hconst char *module_nameh](j )}(hjE.h]hconst}(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj)}(hcharh]hchar}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj )}(h h]h }(hjhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjubj* )}(h module_nameh]h module_name}(hj"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubj)}(hstruct module *ownerh](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* )}(hmoduleh]hmodule}(hjYhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjVubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[modnameN classnameNj%j()}j+]j/c.media_device_usb_allocateasbuh1hhj7ubj )}(h h]h }(hjwhhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj7ubj4)}(hj7h]h*}(hjhhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj7ubj* )}(hownerh]howner}(hjhhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjfubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhK&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)}(h1Allocate and return struct :c:type:`media` deviceh](hAllocate and return struct }(hjhhhNhNubh)}(h:c:type:`media`h]j~)}(hjh]hmedia}(hjhhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j()}j+]j/c.media_device_usb_allocateasbjmediauh1hhjhK&hjubh device}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jU hjhhhjhK&ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jjx jjy 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)}(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.hhKhj ubj )}(hhh](j )}(h@``struct usb_device *udev`` struct :c:type:`usb_device` pointer h](j )}(h``struct usb_device *udev``h]j~)}(hj% h]hstruct usb_device *udev}(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#struct :c:type:`usb_device` pointerh](hstruct }(hj> hhhNhNubh)}(h:c:type:`usb_device`h]j~)}(hjH h]h usb_device}(hjJ hhhNhNubah}(h]h ](hjc-typeeh"]h$]h&]uh1j}hjF ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj%j)j usb_deviceuh1hhj: hKhj> ubh pointer}(hj> hhhNhNubeh}(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 )}(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 hKhj 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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj ubh for the driver. }(hj hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hj 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}(hj !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 hKhj ubeh}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j)}(hj:!h]h Description}(hj structure and calls media_device_usb_init() to initialize it.}(hjP!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjw!hK hj 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](j)}(hvoidh]hvoid}(hj!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!hhhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK4ubj )}(h h]h }(hj!hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!hhhj!hK4ubj$ )}(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!hK4ubj)}(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 }(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 classnameNj%j()}j+]j )}jj!sbc.media_device_deleteasbuh1hhj!ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj!ubj4)}(hj7h]h*}(hj+"hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj!ubj* )}(hmdevh]hmdev}(hj8"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!ubj)}(hconst char *module_nameh](j )}(hjE.h]hconst}(hjQ"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjM"ubj )}(h h]h }(hj^"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjM"ubj)}(hcharh]hchar}(hjl"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjM"ubj )}(h h]h }(hjz"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hjM"ubj4)}(hj7h]h*}(hj"hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hjM"ubj* )}(h module_nameh]h module_name}(hj"hhhNhNubah}(h]h ]j5 ah"]h$]h&]uh1j) hjM"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 classnameNj%j()}j+]j"c.media_device_deleteasbuh1hhj"ubj )}(h h]h }(hj"hhhNhNubah}(h]h ]j ah"]h$]h&]uh1j hj"ubj4)}(hj7h]h*}(hj"hhhNhNubah}(h]h ]j@ah"]h$]h&]uh1j3hj"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&]hhuh1jhj!hhhj!hK4ubeh}(h]h ]h"]h$]h&]hhjG uh1j jH jI hj!hhhj!hK4ubah}(h]j!ah ](jM jN eh"]h$]h&]jR jS )jT huh1j hj!hK4hj!hhubjV )}(hhh]h)}(h'Release media device. Calls kref_put().h]h'Release media device. Calls kref_put().}(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.hhK*hj,#hhubah}(h]h ]h"]h$]h&]uh1jU hj!hhhj!hK4ubeh}(h]h ](jfunctioneh"]h$]h&]jv jjw jG#jx jG#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)}(hjQ#h]h Parameters}(hjS#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjO#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.hjK#ubj )}(hhh](j )}(hD``struct media_device *mdev`` struct :c:type:`media_device` pointer h](j )}(h``struct media_device *mdev``h]j~)}(hjp#h]hstruct media_device *mdev}(hjr#hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hjn#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,hjj#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 refexplicitrefwarnj%j)j media_deviceuh1hhj#hK,hj#ubh pointer}(hj#hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj#hK,hj#ubah}(h]h ]h"]h$]h&]uh1j hjj#ubeh}(h]h ]h"]h$]h&]uh1j hj#hK,hjg#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}(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-hjg#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.hhK0hj $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}(hj4$hhhNhNubah}(h]h ]h"]h$]h&]uh1j}hj,$ubh for the driver. }(hj,$hhhNhNubj~)}(h``THIS_MODULE``h]h THIS_MODULE}(hjF$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}(hjX$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.hhK.hj)$ubah}(h]h ]h"]h$]h&]uh1j hj $ubeh}(h]h ]h"]h$]h&]uh1j hj($hK0hjg#ubeh}(h]h ]h"]h$]h&]uh1j hjK#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.hhK2hjK#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.hhK2hjK#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_handlerj$error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(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 jjjjjjjjjNjSj j j"j "j#j#j'j 'j(j(j+j+j-j-j 0j0j3j4j5j5j8j8jX;j];j>j>jAjAjcCjhCjDjDjFjFjHjHj!Jj&Jj LjLjNMjSMjOjOj6Qj;QjRjSjTj TjFUjKUjYjYjZjZj#]j(]j._j3_j`j`jXfj]fjgjgjjjjjkjkjmjmjnjnjTpjYpj|rjrjtj"tjvjvj-xj2xjyjyjzjzj|j|j~j~j&j+jajfjjj\jajjjԉjىjjjLjQjajfjjjFjKjjj;j@j$j)jj jljqjjj6j;jj j|jjjjjjڷj߷j3j8jλjӻjijnjjjojMjRjjjj jjjjjjjj#jHjMjjjtjyjjjPjUjjjMjRjjjjjjjojjjjjhjmjjjjjjjjj"j'jjjjjjjjj@jEjjjfjkjjjhjmjjj j j j jj$jjj!j&jpjujjjjjfjkjjj!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.