sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget,/translations/zh_CN/driver-api/media/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]hPortuguese (Brazilian)}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget,/translations/pt_BR/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 refdomainj reftyperef 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}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hhhhhKubh)}(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.}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'hhubh)}(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.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'hhubh)}(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.}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj'hhubh)}(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.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj'hhubeh}(h]abstract-media-device-modelah ]h"]abstract media device modelah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Media deviceh]h Media device}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhhhhhK%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 }(hjhhhNhNubhliteral)}(h ``include/media/media-device.h``h]hinclude/media/media-device.h}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh^. Allocation of the structure is handled by the media device driver, usually by embedding the }(hjhhhNhNubh)}(h:c:type:`media_device`h]j)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](jcc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_deviceuh1hhhhK'hjubh0 instance in a larger driver-specific structure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK'hjxhhubh)}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnj__media_device_registeruh1hhhhK-hjubh via the macro }(hjhhhNhNubj)}(h``media_device_register()``h]hmedia_device_register()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh and unregistered by calling }(hjhhhNhNubh)}(h#:c:func:`media_device_unregister()`h]j)}(hj1h]hmedia_device_unregister()}(hj3hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj/ubah}(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)}(hjTh]hmedia_device_cleanup()}(hjVhhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_cleanupuh1hhhhK-hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK-hjxhhubh)}(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.}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjxhhubeh}(h] media-deviceah ]h"] media deviceah$]h&]uh1hhhhhhhhK%ubh)}(hhh](h)}(hEntitiesh]hEntities}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK9ubh)}(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&]uh1jhjubhK. 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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(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;hjhhubh)}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_entity_pads_inituh1hhhhKAhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKAhjhhubh)}(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 }(hj9hhhNhNubh)}(h(:c:func:`media_device_register_entity()`h]j)}(hjCh]hmedia_device_register_entity()}(hjEhhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_register_entityuh1hhhhKDhj9ubh and unregistered by calling }(hj9hhhNhNubh)}(h*:c:func:`media_device_unregister_entity()`h]j)}(hjfh]h media_device_unregister_entity()}(hjhhhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjdubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_unregister_entityuh1hhhhKDhj9ubh.}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKDhjhhubeh}(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&]uh1jhjubh. 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 ](jjc-funceh"]h$]h&]uh1jhjubah}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(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}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hhhhhKXubh)}(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 }(hj3hhhNhNubj)}(h ``include/media/media-entity.h``h]hinclude/media/media-entity.h}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubh. Each entity stores its pads in a pads array managed by the entity driver. Drivers usually embed the array in a driver-specific structure.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKYhj"hhubh)}(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.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hj"hhubh)}(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.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKahj"hhubh)}(h=Pads have flags that describe the pad capabilities and state.h]h=Pads have flags that describe the pad capabilities and state.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKehj"hhubh)}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubh/ indicates that the pad supports sinking data. }(hj}hhhNhNubj)}(h``MEDIA_PAD_FL_SOURCE``h]hMEDIA_PAD_FL_SOURCE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubh/ indicates that the pad supports sourcing data.}(hj}hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKghj"hhubhnote)}(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&]uh1jhjubh or }(hjhhhNhNubj)}(h``MEDIA_PAD_FL_SOURCE``h]hMEDIA_PAD_FL_SOURCE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh must be set for each pad.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKlhjubah}(h]h ]h"]h$]h&]uh1jhj"hhhhhNubeh}(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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh. 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}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj"ubh:}(hj"hhhNhNubeh}(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: }(hjNhhhNhNubh)}(h!:c:func:`media_create_pad_link()`h]j)}(hjXh]hmedia_create_pad_link()}(hjZhhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_create_pad_linkuh1hhhhK|hjNubh and remove with }(hjNhhhNhNubh)}(h%:c:func:`media_entity_remove_links()`h]j)}(hj{h]hmedia_entity_remove_links()}(hj}hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_entity_remove_linksuh1hhhhK|hjNubh.}(hjNhhhNhNubeh}(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&]uh1j&hjubh:}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(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)}(hj"h]hALinks can only be created after having both ends already created.}(hj$hhhNhNubah}(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 }(hj7hhhNhNubh)}(h!:c:func:`media_create_pad_link()`h]j)}(hjAh]hmedia_create_pad_link()}(hjChhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_create_pad_linkuh1hhhhKhj7ubh and }(hj7hhhNhNubh)}(h":c:func:`media_create_intf_link()`h]j)}(hjdh]hmedia_create_intf_link()}(hjfhhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_create_intf_linkuh1hhhhKhj7ubh.}(hj7hhhNhNubeh}(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&]uh1jhjubh.}(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&]hhƌforcelanguagejhighlight_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 ](jjc-funceh"]h$]h&]uh1jhjubah}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pad_remote_pad_firstuh1hhhhKhjubh, }(hjhhhNhNubh)}(h1:c:func:`media_entity_remote_source_pad_unique()`h]j)}(hj6h]h'media_entity_remote_source_pad_unique()}(hj8hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj4ubah}(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)}(hjYh]hmedia_pad_remote_pad_unique()}(hj[hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjWubah}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(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&]uh1jhjubhj 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&]uh1hhhhKhjhhubh)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_entityuh1hhhhKhjubh. }(hjhhhNhNubj)}(h ``use_count``h]h use_count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubhy 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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_deviceuh1hhhhKhjubh. }hjsbj)}(h``graph_mutex``h]h graph_mutex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh lock.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(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&]uh1hhj9hhhhhKubh)}(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 }(hjJhhhNhNubh)}(h#:c:func:`media_entity_setup_link()`h]j)}(hjTh]hmedia_entity_setup_link()}(hjVhhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_entity_setup_linkuh1hhhhKhjJubh.}(hjJhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj9hhubeh}(h] links-setupah ]h"] links setupah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hPipelines and media streamsh]hPipelines and media streams}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(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&]uh1hhhhKhjhhubh)}(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&]uh1hhhhKhjhhubh)}(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 ](jjc-funceh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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&]uh1hhhhKhjhhubh)}(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&]uh1hhhhKhjhhubh)}(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)}(hj h]hmedia_pipeline_start()}(hj hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj ubah}(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&]uh1hhhhKhjhhubh)}(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)}(hj4 h]hmedia_pipeline_start()}(hj6 hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj2 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&]uh1hhhhKhjhhubh)}(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 }(hj[ hhhNhNubh)}(h:c:func:`media_pipeline_stop()`h]j)}(hje h]hmedia_pipeline_stop()}(hjg hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjc ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_stopuh1hhhhKhj[ ubh.}(hj[ hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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 }(hj hhhNhNubh)}(h :c:func:`media_pipeline_start()`h]j)}(hj h]hmedia_pipeline_start()}(hj hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhj ubh# have been made the same number of }(hj hhhNhNubh)}(h:c:func:`media_pipeline_stop()`h]j)}(hj h]hmedia_pipeline_stop()}(hj hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_stopuh1hhhhKhj ubh+ calls are required to stop streaming. The }(hj hhhNhNubh)}(h:c:type:`media_entity`h]j)}(hj h]h media_entity}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_entityuh1hhhhKhj ubh. }(hj hhhNhNubj)}(h``pipe``h]hpipe}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh field is reset to }(hj hhhNhNubj)}(h``NULL``h]hNULL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh on the last nested stop call.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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&]uh1jhj' 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}(hjA hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj' ubh flag.}(hj' hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(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.}(hjY hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]pipelines-and-media-streamsah ]h"]pipelines and media streamsah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hLink validationh]hLink validation}(hjr hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjo 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 }(hj hhhNhNubh)}(h :c:func:`media_pipeline_start()`h]j)}(hj h]hmedia_pipeline_start()}(hj hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_pipeline_startuh1hhhhKhj ubh9 for any entity which has sink pads in the pipeline. The }(hj hhhNhNubh)}(h:c:type:`media_entity`h]j)}(hj h]h media_entity}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnj media_entityuh1hhhhKhj ubh. }(hj hhhNhNubj)}(h``link_validate()``h]hlink_validate()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh' callback is used for that purpose. In }(hj hhhNhNubj)}(h``link_validate()``h]hlink_validate()}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 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.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjo 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&]uh1hhhhKhjo 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 ](jjc-funceh"]h$]h&]uh1jhj' 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 */ ... }}hjP 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:}(hj_ 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);}hjm 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}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj 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)hj 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 ](jjc-funceh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_deleteuh1hhhhM,hj ubh.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM,hj 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&]uh1hhhhM4hj hhubh)}(h**Driver Usage**h]j')}(hj h]h Driver Usage}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1hhhhM8hj 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:hj 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 ](jjc-funceh"]h$]h&]uh1jhj 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?hj 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&]uh1j&hj8 ubh Call }(hj8 hhhNhNubh)}(h%:c:func:`media_device_usb_allocate()`h]j)}(hjP h]hmedia_device_usb_allocate()}(hjR hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjN ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_usb_allocateuh1hhhhMBhj8 ubh% to allocate or get a reference Call }(hj8 hhhNhNubh)}(h!:c:func:`media_device_register()`h]j)}(hjs h]hmedia_device_register()}(hju hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhjq ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypefunc refexplicitrefwarnjmedia_device_registeruh1hhhhMBhj8 ubh%, if media devnode isn’t registered}(hj8 hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMBhj 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&]uh1j&hj ubh Call }(hj hhhNhNubh)}(h:c:func:`media_device_delete()`h]j)}(hj h]hmedia_device_delete()}(hj hhhNhNubah}(h]h ](jjc-funceh"]h$]h&]uh1jhj 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&]uh1hhhhMFhj 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= hj9 ubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1j7 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}(hjn hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjk hhubah}(h]h ]h"]h$]h&]uh1ji hj hhhj% hKubeh}(h]h ](jstructeh"]h$]h&]domainjobjtypej desctypej 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&]uh1j&hj 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&]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.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&]uh1jhj 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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhjubah}(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)}(hj$h]h notify_data}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"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!Input data to invoke the callbackh]h!Input data to invoke the callback}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj:ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj9hKhj ubj )}(h$``notify`` Callback function pointerh](j )}(h ``notify``h]j)}(hj]h]hnotify}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjWubj)}(hhh]h)}(hCallback function pointerh]hCallback function pointer}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK hjsubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhKhj 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&]uh1j&hjubah}(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 ]j3 ah"]h$]h&]uh1j& hjhhhjhK(ubj8 )}(hmedia_device_opsh]j> )}(hjh]hmedia_device_ops}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhK(ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhK(ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhK(hjhhubjj )}(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-hjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhK(ubeh}(h]h ](jstructeh"]h$]h&]j jj j8j j8j j 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}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj@ubh:}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK1hj<ubj)}(hXMstruct media_device_ops { int (*link_notify)(struct media_link *link, u32 flags, unsigned int notification); struct media_request *(*req_alloc)(struct media_device *mdev); void (*req_free)(struct media_request *req); int (*req_validate)(struct media_request *req); void (*req_queue)(struct media_request *req); };h]hXMstruct media_device_ops { int (*link_notify)(struct media_link *link, u32 flags, unsigned int notification); struct media_request *(*req_alloc)(struct media_device *mdev); void (*req_free)(struct media_request *req); int (*req_validate)(struct media_request *req); void (*req_queue)(struct media_request *req); };}hj]sbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK3hj<ubh)}(h **Members**h]j')}(hjnh]hMembers}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjlubah}(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)}(hjh]h link_notify}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK0hjubj)}(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 hjubeh}(h]h ]h"]h$]h&]uh1j hjhK0hjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK3hjubj)}(hhh]h)}(hAllocate a request. Set this if you need to allocate a struct larger then struct media_request. **req_alloc** and **req_free** must either both be set or both be NULL.h](h`Allocate a request. Set this if you need to allocate a struct larger then struct media_request. }(hjhhhNhNubj')}(h **req_alloc**h]h req_alloc}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh and }(hjhhhNhNubj')}(h **req_free**h]hreq_free}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh) must either both be set or both be NULL.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK1hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK3hjubj )}(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)}(hj%h]hreq_free}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK5hjubj)}(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}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj>ubh* was set as well, leave to NULL otherwise.}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK4hj;ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj:hK5hjubj )}(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)}(hjqh]h req_validate}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK7hjkubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK6hjubah}(h]h ]h"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]uh1j hjhK7hjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKAhjubj)}(hhh]h)}(hXQueue a validated request, cannot fail. If something goes wrong when queueing this request then it should be marked as such internally in the driver and any related buffers must eventually return to vb2 with state VB2_BUF_STATE_ERROR. The req_queue_mutex lock is held when this op is called. It is important that vb2 buffer objects are queued last after all other object types are queued: queueing a buffer kickstarts the request processing, so all other objects related to the request (and thus the buffer) must be available to the driver. And once a buffer is queued, then the driver can complete or delete objects from the request before req_queue exits.h]hXQueue a validated request, cannot fail. If something goes wrong when queueing this request then it should be marked as such internally in the driver and any related buffers must eventually return to vb2 with state VB2_BUF_STATE_ERROR. The req_queue_mutex lock is held when this op is called. It is important that vb2 buffer objects are queued last after all other object types are queued: queueing a buffer kickstarts the request processing, so all other objects related to the request (and thus the buffer) must be available to the driver. And once a buffer is queued, then the driver can complete or delete objects from the request before req_queue exits.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK8hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKAhjubeh}(h]h ]h"]h$]h&]uh1j hj<ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device (C struct)c.media_devicehNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_deviceh]j )}(hstruct media_deviceh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKHubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhKHubj8 )}(h media_deviceh]j> )}(hjh]h media_device}(hj%hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj!ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhKHubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhKHubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhKHhjhhubjj )}(hhh]h)}(h Media deviceh]h Media device}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKMhjDhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhKHubeh}(h]h ](jstructeh"]h$]h&]j jj j_j j_j j j uh1j hhhj hNhNubj )}(hX **Definition**:: struct media_device { struct device *dev; struct media_devnode *devnode; char model[32]; char driver_name[32]; char serial[40]; char bus_info[32]; u32 hw_revision; u64 topology_version; u32 id; struct ida entity_internal_idx; int entity_internal_idx_max; struct list_head entities; struct list_head interfaces; struct list_head pads; struct list_head links; struct list_head entity_notify; struct mutex graph_mutex; struct media_graph pm_count_walk; void *source_priv; int (*enable_source)(struct media_entity *entity, struct media_pipeline *pipe); void (*disable_source)(struct media_entity *entity); const struct media_device_ops *ops; struct mutex req_queue_mutex; atomic_t num_requests; atomic_t num_request_objects; struct dentry *media_dir; atomic_t request_id; }; **Members** ``dev`` Parent device ``devnode`` Media device node ``model`` Device model name ``driver_name`` Optional device driver name. If not set, calls to ``MEDIA_IOC_DEVICE_INFO`` will return ``dev->driver->name``. This is needed for USB drivers for example, as otherwise they'll all appear as if the driver name was "usb". ``serial`` Device serial number (optional) ``bus_info`` Unique and stable device location identifier ``hw_revision`` Hardware device revision ``topology_version`` Monotonic counter for storing the version of the graph topology. Should be incremented each time the topology changes. ``id`` Unique ID used on the last registered graph object ``entity_internal_idx`` Unique internal entity ID used by the graph traversal algorithms ``entity_internal_idx_max`` Allocated internal entity indices ``entities`` List of registered entities ``interfaces`` List of registered interfaces ``pads`` List of registered pads ``links`` List of registered links ``entity_notify`` List of registered entity_notify callbacks ``graph_mutex`` Protects access to struct media_device data ``pm_count_walk`` Graph walk for power state walk. Access serialised using graph_mutex. ``source_priv`` Driver Private data for enable/disable source handlers ``enable_source`` Enable Source Handler function pointer ``disable_source`` Disable Source Handler function pointer ``ops`` Operation handler callbacks ``req_queue_mutex`` Serialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming. ``num_requests`` number of associated requests ``num_request_objects`` number of associated request objects ``media_dir`` DebugFS media directory ``request_id`` Used to generate unique request IDsh](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjgubh:}(hjghhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKQhjcubj)}(hXnstruct media_device { struct device *dev; struct media_devnode *devnode; char model[32]; char driver_name[32]; char serial[40]; char bus_info[32]; u32 hw_revision; u64 topology_version; u32 id; struct ida entity_internal_idx; int entity_internal_idx_max; struct list_head entities; struct list_head interfaces; struct list_head pads; struct list_head links; struct list_head entity_notify; struct mutex graph_mutex; struct media_graph pm_count_walk; void *source_priv; int (*enable_source)(struct media_entity *entity, struct media_pipeline *pipe); void (*disable_source)(struct media_entity *entity); const struct media_device_ops *ops; struct mutex req_queue_mutex; atomic_t num_requests; atomic_t num_request_objects; struct dentry *media_dir; atomic_t request_id; };h]hXnstruct media_device { struct device *dev; struct media_devnode *devnode; char model[32]; char driver_name[32]; char serial[40]; char bus_info[32]; u32 hw_revision; u64 topology_version; u32 id; struct ida entity_internal_idx; int entity_internal_idx_max; struct list_head entities; struct list_head interfaces; struct list_head pads; struct list_head links; struct list_head entity_notify; struct mutex graph_mutex; struct media_graph pm_count_walk; void *source_priv; int (*enable_source)(struct media_entity *entity, struct media_pipeline *pipe); void (*disable_source)(struct media_entity *entity); const struct media_device_ops *ops; struct mutex req_queue_mutex; atomic_t num_requests; atomic_t num_request_objects; struct dentry *media_dir; atomic_t request_id; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKShjcubh)}(h **Members**h]j')}(hjh]hMembers}(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:333: ./include/media/media-device.hhKqhjcubj )}(hhh](j )}(h``dev`` Parent device h](j )}(h``dev``h]j)}(hjh]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKOhjubj)}(hhh]h)}(h Parent deviceh]h Parent device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKOhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKOhjubj )}(h``devnode`` Media device node h](j )}(h ``devnode``h]j)}(hjh]hdevnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKPhjubj)}(hhh]h)}(hMedia device nodeh]hMedia device node}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKPhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKPhjubj )}(h``model`` Device model name h](j )}(h ``model``h]j)}(hj&h]hmodel}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKUhj ubj)}(hhh]h)}(hDevice model nameh]hDevice model name}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hKUhj<ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj;hKUhjubj )}(h``driver_name`` Optional device driver name. If not set, calls to ``MEDIA_IOC_DEVICE_INFO`` will return ``dev->driver->name``. This is needed for USB drivers for example, as otherwise they'll all appear as if the driver name was "usb". h](j )}(h``driver_name``h]j)}(hj_h]h driver_name}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKThjYubj)}(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 }(hjxhhhNhNubj)}(h``MEDIA_IOC_DEVICE_INFO``h]hMEDIA_IOC_DEVICE_INFO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubh will return }(hjxhhhNhNubj)}(h``dev->driver->name``h]hdev->driver->name}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubht. This is needed for USB drivers for example, as otherwise they’ll all appear as if the driver name was “usb”.}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKQhjuubah}(h]h ]h"]h$]h&]uh1j hjYubeh}(h]h ]h"]h$]h&]uh1j hjthKThjubj )}(h+``serial`` Device serial number (optional) h](j )}(h ``serial``h]j)}(hjh]hserial}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKVhjubj)}(hhh]h)}(hDevice serial number (optional)h]hDevice serial number (optional)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKVhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKVhjubj )}(h:``bus_info`` Unique and stable device location identifier h](j )}(h ``bus_info``h]j)}(hjh]hbus_info}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKWhjubj)}(hhh]h)}(h,Unique and stable device location identifierh]h,Unique and stable device location identifier}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKWhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hKWhjubj )}(h)``hw_revision`` Hardware device revision h](j )}(h``hw_revision``h]j)}(hj/h]h hw_revision}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj-ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKXhj)ubj)}(hhh]h)}(hHardware device revisionh]hHardware device revision}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjDhKXhjEubah}(h]h ]h"]h$]h&]uh1j hj)ubeh}(h]h ]h"]h$]h&]uh1j hjDhKXhjubj )}(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)}(hjhh]htopology_version}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKZhjbubj)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKYhj~ubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hj}hKZhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK[hjubj)}(hhh]h)}(h2Unique ID used on the last registered graph objecth]h2Unique ID used on the last registered graph object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK[hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK[hjubj )}(hY``entity_internal_idx`` Unique internal entity ID used by the graph traversal algorithms h](j )}(h``entity_internal_idx``h]j)}(hjh]hentity_internal_idx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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&]uh1jhjubah}(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}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hK^hj+ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj*hK^hjubj )}(h)``entities`` List of registered entities h](j )}(h ``entities``h]j)}(hjNh]hentities}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK_hjHubj)}(hhh]h)}(hList of registered entitiesh]hList of registered entities}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchK_hjdubah}(h]h ]h"]h$]h&]uh1j hjHubeh}(h]h ]h"]h$]h&]uh1j hjchK_hjubj )}(h-``interfaces`` List of registered interfaces h](j )}(h``interfaces``h]j)}(hjh]h interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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 interfacesh]hList of registered interfaces}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK`hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKahjubj)}(hhh]h)}(hList of registered padsh]hList of registered pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKahjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKahjubj )}(h#``links`` List of registered links h](j )}(h ``links``h]j)}(hjh]hlinks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKbhjubj)}(hhh]h)}(hList of registered linksh]hList of registered links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKbhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKbhjubj )}(h=``entity_notify`` List of registered entity_notify callbacks h](j )}(h``entity_notify``h]j)}(hj2h]h entity_notify}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKchj,ubj)}(hhh]h)}(h*List of registered entity_notify callbacksh]h*List of registered entity_notify callbacks}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjGhKchjHubah}(h]h ]h"]h$]h&]uh1j hj,ubeh}(h]h ]h"]h$]h&]uh1j hjGhKchjubj )}(h<``graph_mutex`` Protects access to struct media_device data h](j )}(h``graph_mutex``h]j)}(hjkh]h graph_mutex}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKdhjeubj)}(hhh]h)}(h+Protects access to struct media_device datah]h+Protects access to struct media_device data}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKdhjubah}(h]h ]h"]h$]h&]uh1j hjeubeh}(h]h ]h"]h$]h&]uh1j hjhKdhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKfhjubj)}(hhh]h)}(hEGraph walk for power state walk. Access serialised using graph_mutex.h]hEGraph walk for power state walk. Access serialised using graph_mutex.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKehjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKfhjubj )}(hG``source_priv`` Driver Private data for enable/disable source handlers h](j )}(h``source_priv``h]j)}(hjh]h source_priv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhhjubj)}(hhh]h)}(h6Driver Private data for enable/disable source handlersh]h6Driver Private data for enable/disable source handlers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhhjubj )}(h9``enable_source`` Enable Source Handler function pointer h](j )}(h``enable_source``h]j)}(hjh]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKihjubj)}(hhh]h)}(h&Enable Source Handler function pointerh]h&Enable Source Handler function pointer}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hKihj-ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj,hKihjubj )}(h;``disable_source`` Disable Source Handler function pointer h](j )}(h``disable_source``h]j)}(hjPh]hdisable_source}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKjhjJubj)}(hhh]h)}(h'Disable Source Handler function pointerh]h'Disable Source Handler function pointer}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKjhjfubah}(h]h ]h"]h$]h&]uh1j hjJubeh}(h]h ]h"]h$]h&]uh1j hjehKjhjubj )}(h$``ops`` Operation handler callbacks h](j )}(h``ops``h]j)}(hjh]hops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKlhjubj)}(hhh]h)}(hOperation handler callbacksh]hOperation handler callbacks}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKlhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKlhjubj )}(hv``req_queue_mutex`` Serialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming. h](j )}(h``req_queue_mutex``h]j)}(hjh]hreq_queue_mutex}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKnhjubj)}(hhh]h)}(haSerialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming.h]haSerialise the MEDIA_REQUEST_IOC_QUEUE ioctl w.r.t. other operations that stop or start streaming.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKmhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKnhjubj )}(h/``num_requests`` number of associated requests h](j )}(h``num_requests``h]j)}(hjh]h num_requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKohjubj)}(hhh]h)}(hnumber of associated requestsh]hnumber of associated requests}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKohjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKohjubj )}(h=``num_request_objects`` number of associated request objects h](j )}(h``num_request_objects``h]j)}(hj5h]hnum_request_objects}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKphj/ubj)}(hhh]h)}(h$number of associated request objectsh]h$number of associated request objects}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhKphjKubah}(h]h ]h"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]uh1j hjJhKphjubj )}(h&``media_dir`` DebugFS media directory h](j )}(h ``media_dir``h]j)}(hjnh]h media_dir}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKqhjhubj)}(hhh]h)}(hDebugFS media directoryh]hDebugFS media directory}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKqhjubah}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]uh1j hjhKqhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKqhjubj)}(hhh]h)}(h#Used to generate unique request IDsh]h#Used to generate unique request IDs}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKrhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKqhjubeh}(h]h ]h"]h$]h&]uh1j hjcubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubh)}(h**Description**h]j')}(hjh]h Description}(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:333: ./include/media/media-device.hhKuhj hhubh)}(hThis structure represents an abstract high-level media device. It allows easy access to entities and provides basic media device-level support. The structure can be allocated directly or embedded in a larger structure.h]hThis structure represents an abstract high-level media device. It allows easy access to entities and provides basic media device-level support. The structure can be allocated directly or embedded in a larger structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKrhj hhubh)}(h\The parent **dev** is a physical device. It must be set before registering the media device.h](h The parent }(hjhhhNhNubj')}(h**dev**h]hdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubhJ is a physical device. It must be set before registering the media device.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKvhj hhubh)}(h[**model** is a descriptive model name exported through sysfs. It doesn't have to be unique.h](j')}(h **model**h]hmodel}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj0ubhT is a descriptive model name exported through sysfs. It doesn’t have to be unique.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKyhj hhubh)}(h**enable_source** is a handler to find source entity for the sink entity and activate the link between them if source entity is free. Drivers should call this handler before accessing the source.h](j')}(h**enable_source**h]h enable_source}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubh 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.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhK|hj hhubh)}(h**disable_source** is a handler to find source entity for the sink entity and deactivate the link between them. Drivers should call this handler to release the source.h](j')}(h**disable_source**h]hdisable_source}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjjubh 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.}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj hhubh)}(hUse-case: find tuner entity connected to the decoder entity and check if it is available, and activate the link between them from **enable_source** and deactivate from **disable_source**.h](hUse-case: find tuner entity connected to the decoder entity and check if it is available, and activate the link between them from }(hjhhhNhNubj')}(h**enable_source**h]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh and deactivate from }(hjhhhNhNubj')}(h**disable_source**h]hdisable_source}(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:333: ./include/media/media-device.hhKhj hhubj)}(hXyBridge driver is expected to implement and set the handler when :c:type:`media_device` is registered or when bridge driver finds the media_device during probe. Bridge driver sets source_priv with information necessary to run **enable_source** and **disable_source** handlers. Callers should hold graph_mutex to access and call **enable_source** and **disable_source** handlers.h]h)}(hXyBridge driver is expected to implement and set the handler when :c:type:`media_device` is registered or when bridge driver finds the media_device during probe. Bridge driver sets source_priv with information necessary to run **enable_source** and **disable_source** handlers. Callers should hold graph_mutex to access and call **enable_source** and **disable_source** handlers.h](h@Bridge driver is expected to implement and set the handler when }(hjhhhNhNubh)}(h:c:type:`media_device`h]j)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarn c:parent_keysphinx.domains.c LookupKey)}data]sbj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh is registered or when bridge driver finds the media_device during probe. Bridge driver sets source_priv with information necessary to run }(hjhhhNhNubj')}(h**enable_source**h]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh and }(hjhhhNhNubj')}(h**disable_source**h]hdisable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh> handlers. Callers should hold graph_mutex to access and call }(hjhhhNhNubj')}(h**enable_source**h]h enable_source}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh and }(hjhhhNhNubj')}(h**disable_source**h]hdisable_source}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh handlers.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_device_init (C function)c.media_device_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(h2void media_device_init (struct media_device *mdev)h]j )}(h1void media_device_init(struct media_device *mdev)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjahhhNhNubah}(h]h ]ktah"]h$]h&]uh1j_hj[hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKubj' )}(h h]h }(hjqhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj[hhhjphKubj8 )}(hmedia_device_inith]j> )}(hmedia_device_inith]hmedia_device_init}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj[hhhjphKubhdesc_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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftype identifier reftargetjmodnameN classnameNjj)}j]j ASTIdentifier)}jjsbc.media_device_initasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhjubj> )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj[hhhjphKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjWhhhjphKubah}(h]jRah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjphKhjThhubjj )}(hhh]h)}(h"Initializes a media device elementh]h"Initializes a media device element}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj*hhubah}(h]h ]h"]h$]h&]uh1ji hjThhhjphKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jEj jEj j 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')}(hjOh]h Parameters}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjIubj )}(hhh]j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j)}(hjnh]hstruct media_device *mdev}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjlubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjhubj)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ]h"]h$]h&]uh1j hjhKhjeubah}(h]h ]h"]h$]h&]uh1j hjIubh)}(h**Description**h]j')}(hjh]h Description}(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:333: ./include/media/media-device.hhKhjIubh)}(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.hhKhjIubh)}(hSo drivers need to first initialize the media device, register any entity within the media device, create pad to pad links and then finally register the media device by calling media_device_register() as a final step.h]hSo drivers need to first initialize the media device, register any entity within the media device, create pad to pad links and then finally register the media device by calling media_device_register() as a final step.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjIubh)}(hrThe caller is responsible for initializing the media device before registration. The following fields must be set:h]hrThe caller is responsible for initializing the media device before registration. The following fields must be set:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjIubh bullet_list)}(hhh](h list_item)}(h#dev must point to the parent deviceh]h)}(hjh]h#dev must point to the parent device}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(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}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj*ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]bullet-uh1j hj#hKhjIubh)}(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’.}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjIubeh}(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}(hjzhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjvhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjvhhhjhKubj8 )}(hmedia_device_cleanuph]j> )}(hmedia_device_cleanuph]hmedia_device_cleanup}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjvhhhjhKubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_device_cleanupasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjvhhhjhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjrhhhjhKubah}(h]jmah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhKhjohhubjj )}(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.hhKhj7hhubah}(h]h ]h"]h$]h&]uh1ji hjohhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jRj jRj j 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')}(hj\h]h Parameters}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjZubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjVubj )}(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&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjuubj)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhKhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjuubeh}(h]h ]h"]h$]h&]uh1j hjhKhjrubah}(h]h ]h"]h$]h&]uh1j hjVubh)}(h**Description**h]j')}(hjh]h Description}(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:333: ./include/media/media-device.hhKhjVubh)}(h[This function that will destroy the graph_mutex that is initialized in media_device_init().h]h[This function that will destroy the graph_mutex that is initialized in media_device_init().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjVubeh}(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}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKubj' )}(h h]h }(hj)hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhj(hKubj8 )}(h__media_device_registerh]j> )}(h__media_device_registerh]h__media_device_register}(hj;hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj7ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhj(hKubj)}(h1(struct media_device *mdev, struct module *owner)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjWhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjSubj' )}(h h]h }(hjdhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjSubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjuhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjrubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNjj)}j]j)}jj=sbc.__media_device_registerasbuh1hhjSubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjSubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjSubj> )}(hmdevh]hmdev}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjSubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjOubj)}(hstruct module *ownerh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmoduleh]hmodule}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.__media_device_registerasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hownerh]howner}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjOubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj(hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhj(hKubah}(h]j ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj(hKhjhhubjj )}(hhh]h)}(h Registers a media device elementh]h Registers a media device element}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjGhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhj(hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jbj jbj j 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')}(hjlh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjfubj )}(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&]uh1jhjubah}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj 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)}(hjh]hstruct module *owner}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubj)}(hhh]h)}(h%should be filled with ``THIS_MODULE``h](hshould be filled with }(hjhhhNhNubj)}(h``THIS_MODULE``h]h THIS_MODULE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ]h"]h$]h&]uh1j hjfubh)}(h**Description**h]j')}(hj,h]h Description}(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.hhKhjfubh)}(h?Users, should, instead, call the media_device_register() macro.h]h?Users, should, instead, call the media_device_register() macro.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjfubh)}(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 }(hjQhhhNhNubh)}(h:c:type:`media_device`h]j)}(hj[h]h media_device}(hj]hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjQubh8 structure before registration. The following fields of }(hjQhhhNhNubh)}(h:c:type:`media_device`h]j)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjxhKhjQubh must be set:}(hjQhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjxhKhjfubh block_quote)}(h- :c:type:`media_device.model ` must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field. h]j )}(hhh]j)}(h:c:type:`media_device.model ` must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field. h]h)}(h:c:type:`media_device.model ` must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field.h](h)}(h+:c:type:`media_device.model `h]j)}(hjh]hmedia_device.model}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjubh must be filled with the device model name as a NUL-terminated UTF-8 string. The device/model revision must not be stored in this field.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]jIjJuh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1jhjhKhjfubh)}(h"The following fields are optional:h]h"The following fields are optional:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjfubj)}(hX- :c:type:`media_device.serial ` is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn't provide a unique serial number this field must be left empty. - :c:type:`media_device.bus_info ` represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices :c:type:`media_device.bus_info ` must be set to "PCI:" (or "PCIe:") followed by the value of pci_name(). For USB devices,the usb_make_path() function must be used. This field is used by applications to distinguish between otherwise identical devices that don't provide a serial number. - :c:type:`media_device.hw_revision ` is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro. h]j )}(hhh](j)}(h:c:type:`media_device.serial ` is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn't provide a unique serial number this field must be left empty. h]h)}(h:c:type:`media_device.serial ` is a unique serial number stored as a NUL-terminated ASCII string. The field is big enough to store a GUID in text form. If the hardware doesn't provide a unique serial number this field must be left empty.h](h)}(h,:c:type:`media_device.serial `h]j)}(hj h]hmedia_device.serial}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhj ubh 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.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj0 hKhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(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)}(hjK h]hmedia_device.bus_info}(hjM hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjI ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjE ubhl represents the location of the device in the system as a NUL-terminated ASCII string. For PCI/PCIe devices }(hjE hhhNhNubh)}(h.:c:type:`media_device.bus_info `h]j)}(hjo h]hmedia_device.bus_info}(hjq hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjm ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjh hMhjE ubhX must be set to “PCI:” (or “PCIe:”) followed by the value of pci_name(). For USB devices,the usb_make_path() function must be used. This field is used by applications to distinguish between otherwise identical devices that don’t provide a serial number.}(hjE hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjh hMhjA ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(h:c:type:`media_device.hw_revision ` is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro. h]h)}(h:c:type:`media_device.hw_revision ` is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro.h](h)}(h1:c:type:`media_device.hw_revision `h]j)}(hj h]hmedia_device.hw_revision}(hj hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM hj ubh is the hardware device revision in a driver-specific format. When possible the revision should be formatted with the KERNEL_VERSION() macro.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj hM hj ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]jIjJuh1j hj0 hKhj ubah}(h]h ]h"]h$]h&]uh1jhj0 hKhjfubj)}(h#) Upon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute. #) Unregistering a media device that hasn't been registered is **NOT** safe.h]henumerated_list)}(hhh](j)}(hUpon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute. h]h)}(hUpon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute.h]hUpon successful registration a character device named media[0-9]+ is created. The device major and minor numbers are dynamic. The model name is exported as a sysfs attribute.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj ubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(hIUnregistering a media device that hasn't been registered is **NOT** safe.h]h)}(hj!h](h>Unregistering a media device that hasn’t been registered is }(hj!hhhNhNubj')}(h**NOT**h]hNOT}(hj !hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj!ubh safe.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj!ubah}(h]h ]h"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix)uh1j hj ubah}(h]h ]h"]h$]h&]uh1jhjfubh)}(h **Return**h]j')}(hj?!h]hReturn}(hjA!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.hhMhjfubh)}(h1returns zero on success or a negative error code.h]h1returns zero on success or a negative error code.}(hjU!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjfubeh}(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]j8 )}(hmedia_device_registerh]j> )}(hj~!h]hmedia_device_register}(hj!hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj!ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj!hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj|!hhhj!hMubah}(h]jw!ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj!hMhjy!hhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjy!hhhj!hMubeh}(h]h ](jmacroeh"]h$]h&]j jj j!j j!j j j uh1j hhhj hNhNubh)}(h ``media_device_register (mdev)``h]j)}(hj!h]hmedia_device_register (mdev)}(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 hhubj)}(h!Registers a media device element h]h)}(h Registers a media device elementh]h Registers a media device element}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj!ubah}(h]h ]h"]h$]h&]uh1jhj!hMhj hhubj )}(h**Parameters** ``mdev`` pointer to struct :c:type:`media_device` **Description** This macro calls __media_device_register() passing ``THIS_MODULE`` as the __media_device_register() second argument (**owner**).h](h)}(h**Parameters**h]j')}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]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.hhM hj!ubj )}(hhh]j )}(h2``mdev`` pointer to struct :c:type:`media_device` h](j )}(h``mdev``h]j)}(hj"h]hmdev}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj "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)}(hj1"h]h media_device}(hj3"hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj/"ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj#"hMhj'"ubeh}(h]h ]h"]h$]h&]uh1hhj#"hMhj$"ubah}(h]h ]h"]h$]h&]uh1j hj"ubeh}(h]h ]h"]h$]h&]uh1j hj#"hMhj"ubah}(h]h ]h"]h$]h&]uh1j hj!ubh)}(h**Description**h]j')}(hjh"h]h Description}(hjj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjf"ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM hj!ubh)}(hThis macro calls __media_device_register() passing ``THIS_MODULE`` as the __media_device_register() second argument (**owner**).h](h3This macro calls __media_device_register() passing }(hj~"hhhNhNubj)}(h``THIS_MODULE``h]h THIS_MODULE}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~"ubh3 as the __media_device_register() second argument (}(hj~"hhhNhNubj')}(h **owner**h]howner}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj~"ubh).}(hj~"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core: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 ]jlah"]h$]h&]uh1j_hj"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 ]j3 ah"]h$]h&]uh1j& hj"hhhj"hM&ubj8 )}(hmedia_device_unregisterh]j> )}(hmedia_device_unregisterh]hmedia_device_unregister}(hj"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj"ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj"hhhj"hM&ubj)}(h(struct media_device *mdev)h]j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj#hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj #ubj' )}(h h]h }(hj#hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj #ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj,#hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj)#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.#modnameN classnameNjj)}j]j)}jj"sbc.media_device_unregisterasbuh1hhj #ubj' )}(h h]h }(hjL#hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj #ubj)}(hjh]h*}(hjZ#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj #ubj> )}(hmdevh]hmdev}(hjg#hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj #ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj#ubah}(h]h ]h"]h$]h&]hhuh1jhj"hhhj"hM&ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj"hhhj"hM&ubah}(h]j"ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj"hM&hj"hhubjj )}(hhh]h)}(h"Unregisters a media device elementh]h"Unregisters a media device element}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM&hj#hhubah}(h]h ]h"]h$]h&]uh1ji hj"hhhj"hM&ubeh}(h]h ](jfunctioneh"]h$]h&]j jj j#j j#j j 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&]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.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&]uh1jhj#ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM(hj#ubj)}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj#hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj#h]h media_device}(hj#hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj#ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj#hM(hj#ubeh}(h]h ]h"]h$]h&]uh1hhj#hM(hj#ubah}(h]h ]h"]h$]h&]uh1j hj#ubeh}(h]h ]h"]h$]h&]uh1j hj#hM(hj#ubah}(h]h ]h"]h$]h&]uh1j hj#ubh)}(h**Description**h]j')}(hj,$h]h Description}(hj.$hhhNhNubah}(h]h ]h"]h$]h&]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.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.}(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#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}(hjq$hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjm$hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM0ubj' )}(h h]h }(hj$hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjm$hhhj$hM0ubj8 )}(hmedia_device_register_entityh]j> )}(hmedia_device_register_entityh]hmedia_device_register_entity}(hj$hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj$ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjm$hhhj$hM0ubj)}(h8(struct media_device *mdev, struct media_entity *entity)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj$hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj$ubj' )}(h h]h }(hj$hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj$ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj$hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j]j)}jj$sbc.media_device_register_entityasbuh1hhj$ubj' )}(h h]h }(hj$hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj$ubj)}(hjh]h*}(hj$hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj$ubj> )}(hmdevh]hmdev}(hj%hhhNhNubah}(h]h ]jI 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 ]j3 ah"]h$]h&]uh1j& hj%ubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj>%hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj;%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@%modnameN classnameNjj)}j]j$c.media_device_register_entityasbuh1hhj%ubj' )}(h h]h }(hj\%hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj%ubj)}(hjh]h*}(hjj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj> )}(hentityh]hentity}(hjw%hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj%ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj$ubeh}(h]h ]h"]h$]h&]hhuh1jhjm$hhhj$hM0ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hji$hhhj$hM0ubah}(h]jd$ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj$hM0hjf$hhubjj )}(hhh]h)}(hEregisters a media entity inside a previously registered media device.h]hEregisters a media entity inside a previously registered media device.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM0hj%hhubah}(h]h ]h"]h$]h&]uh1ji hjf$hhhj$hM0ubeh}(h]h ](jfunctioneh"]h$]h&]j jj j%j j%j j 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&]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.hhM4hj%ubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j)}(hj%h]hstruct media_device *mdev}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM3hj%ubj)}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj%hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj&h]h media_device}(hj&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj%hM3hj%ubeh}(h]h ]h"]h$]h&]uh1hhj%hM3hj%ubah}(h]h ]h"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%hM3hj%ubj )}(hZ``struct media_entity *entity`` pointer to struct :c:type:`media_entity` to be registered h](j )}(h``struct media_entity *entity``h]j)}(hj:&h]hstruct media_entity *entity}(hj<&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8&ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM4hj4&ubj)}(hhh]h)}(h9pointer to struct :c:type:`media_entity` to be registeredh](hpointer to struct }(hjS&hhhNhNubh)}(h:c:type:`media_entity`h]j)}(hj]&h]h media_entity}(hj_&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj[&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjO&hM4hjS&ubh to be registered}(hjS&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjO&hM4hjP&ubah}(h]h ]h"]h$]h&]uh1j hj4&ubeh}(h]h ]h"]h$]h&]uh1j hjO&hM4hj%ubeh}(h]h ]h"]h$]h&]uh1j hj%ubh)}(h**Description**h]j')}(hj&h]h Description}(hj&hhhNhNubah}(h]h ]h"]h$]h&]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.hhM6hj%ubh)}(hXjEntities are identified by a unique positive integer ID. The media controller framework will such ID automatically. IDs are not guaranteed to be contiguous, and the ID number can change on newer Kernel versions. So, neither the driver nor userspace should hardcode ID numbers to refer to the entities, but, instead, use the framework to find the ID, when needed.h]hXjEntities are identified by a unique positive integer ID. The media controller framework will such ID automatically. IDs are not guaranteed to be contiguous, and the ID number can change on newer Kernel versions. So, neither the driver nor userspace should hardcode ID numbers to refer to the entities, but, instead, use the framework to find the ID, when needed.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM5hj%ubh)}(hThe media_entity name, type and flags fields should be initialized before calling media_device_register_entity(). Entities embedded in higher-level standard structures can have some of those fields set by the higher-level framework.h]hThe media_entity name, type and flags fields should be initialized before calling media_device_register_entity(). Entities embedded in higher-level standard structures can have some of those fields set by the higher-level framework.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM<hj%ubh)}(hIf the device has pads, media_entity_pads_init() should be called before this function. Otherwise, the :c:type:`media_entity.pad ` and :c:type:`media_entity.num_pads ` should be zeroed before calling this function.h](hgIf the device has pads, media_entity_pads_init() should be called before this function. Otherwise, the }(hj&hhhNhNubh)}(h):c:type:`media_entity.pad `h]j)}(hj&h]hmedia_entity.pad}(hj&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMAhj&ubh and }(hj&hhhNhNubh)}(h.:c:type:`media_entity.num_pads `h]j)}(hj&h]hmedia_entity.num_pads}(hj&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj&hMAhj&ubh/ should be zeroed before calling this function.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj&hMAhj%ubh)}(hDEntities have flags that describe the entity capabilities and state:h]hDEntities have flags that describe the entity capabilities and state:}(hj!'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMEhj%ubj )}(hhh]j )}(h``MEDIA_ENT_FL_DEFAULT`` indicates the default entity for a given type. This can be used to report the default audio and video devices or the default camera sensor. h](j )}(h``MEDIA_ENT_FL_DEFAULT``h]j)}(hj9'h]hMEDIA_ENT_FL_DEFAULT}(hj;'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj7'ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMJhj3'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.}(hjR'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMHhjO'ubah}(h]h ]h"]h$]h&]uh1j hj3'ubeh}(h]h ]h"]h$]h&]uh1j hjN'hMJhj0'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 }(hjw'hhhNhNubj)}(h#``MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN``h]hMEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw'ubh and }(hjw'hhhNhNubj)}(h``MEDIA_ENT_F_UNKNOWN``h]hMEDIA_ENT_F_UNKNOWN}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjw'ubh# should not be used by the drivers.}(hjw'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMNhjs'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 ]jlah"]h$]h&]uh1j_hj'hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMWubj' )}(h h]h }(hj'hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj'hhhj'hMWubj8 )}(hmedia_device_unregister_entityh]j> )}(hmedia_device_unregister_entityh]hmedia_device_unregister_entity}(hj'hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj'ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj'hhhj'hMWubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj (hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj (ubj' )}(h h]h }(hj(hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj (ubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj+(hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj((ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj-(modnameN classnameNjj)}j]j)}jj'sb c.media_device_unregister_entityasbuh1hhj (ubj' )}(h h]h }(hjK(hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj (ubj)}(hjh]h*}(hjY(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj (ubj> )}(hentityh]hentity}(hjf(hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj (ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj(ubah}(h]h ]h"]h$]h&]hhuh1jhj'hhhj'hMWubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj'hhhj'hMWubah}(h]j'ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj'hMWhj'hhubjj )}(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.hhMWhj(hhubah}(h]h ]h"]h$]h&]uh1ji hj'hhhj'hMWubeh}(h]h ](jfunctioneh"]h$]h&]j jj j(j j(j j 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&]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.hhM[hj(ubj )}(hhh]j )}(h\``struct media_entity *entity`` pointer to struct :c:type:`media_entity` to be unregistered h](j )}(h``struct media_entity *entity``h]j)}(hj(h]hstruct media_entity *entity}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMYhj(ubj)}(hhh]h)}(h;pointer to struct :c:type:`media_entity` to be unregisteredh](hpointer to struct }(hj(hhhNhNubh)}(h:c:type:`media_entity`h]j)}(hj(h]h media_entity}(hj(hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj(ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj(hMYhj(ubh to be unregistered}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj(hMYhj(ubah}(h]h ]h"]h$]h&]uh1j hj(ubeh}(h]h ]h"]h$]h&]uh1j hj(hMYhj(ubah}(h]h ]h"]h$]h&]uh1j hj(ubh)}(h**Description**h]j')}(hj/)h]h Description}(hj1)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.hhM[hj(ubh)}(hAll links associated with the entity and all PADs are automatically unregistered from the media_device when this function is called.h]hAll links associated with the entity and all PADs are automatically unregistered from the media_device when this function is called.}(hjE)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMZhj(ubh)}(hUnregistering an entity will not change the IDs of the other entities and the previoully used ID will never be reused for a newly registered entities.h]hUnregistering an entity will not change the IDs of the other entities and the previoully used ID will never be reused for a newly registered entities.}(hjT)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM]hj(ubh)}(hWhen a media device is unregistered, all its entities are unregistered automatically. No manual entities unregistration is then required.h]hWhen a media device is unregistered, all its entities are unregistered automatically. No manual entities unregistration is then required.}(hjc)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM`hj(ubj)}(hTThe media_entity instance itself must be freed explicitly by the driver if required.h]h)}(hTThe media_entity instance itself must be freed explicitly by the driver if required.h]hTThe media_entity instance itself must be freed explicitly by the driver if required.}(hjv)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMehjr)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 ]jlah"]h$]h&]uh1j_hj)hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMlubj' )}(h h]h }(hj)hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj)hhhj)hMlubj8 )}(h#media_device_register_entity_notifyh]j> )}(h#media_device_register_entity_notifyh]h#media_device_register_entity_notify}(hj)hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj)ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj)hhhj)hMlubj)}(h=(struct media_device *mdev, struct media_entity_notify *nptr)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj)hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj)ubj' )}(h h]h }(hj)hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj)ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj*hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]j)}jj)sb%c.media_device_register_entity_notifyasbuh1hhj)ubj' )}(h h]h }(hj&*hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj)ubj)}(hjh]h*}(hj4*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj)ubj> )}(hmdevh]hmdev}(hjA*hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj)ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubj)}(h struct media_entity_notify *nptrh](j )}(hj h]hstruct}(hjZ*hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjV*ubj' )}(h h]h }(hjg*hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjV*ubh)}(hhh]j> )}(hmedia_entity_notifyh]hmedia_entity_notify}(hjx*hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hju*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjz*modnameN classnameNjj)}j]j"*%c.media_device_register_entity_notifyasbuh1hhjV*ubj' )}(h h]h }(hj*hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjV*ubj)}(hjh]h*}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjV*ubj> )}(hnptrh]hnptr}(hj*hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjV*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj)ubeh}(h]h ]h"]h$]h&]hhuh1jhj)hhhj)hMlubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj)hhhj)hMlubah}(h]j)ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj)hMlhj)hhubjj )}(hhh]h)}(h(Registers a media entity_notify callbackh]h(Registers a media entity_notify callback}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMlhj*hhubah}(h]h ]h"]h$]h&]uh1ji hj)hhhj)hMlubeh}(h]h ](jfunctioneh"]h$]h&]j jj j*j j*j j 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&]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.hhMphj*ubj )}(hhh](j )}(h/``struct media_device *mdev`` The media device h](j )}(h``struct media_device *mdev``h]j)}(hj+h]hstruct media_device *mdev}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMohj+ubj)}(hhh]h)}(hThe media deviceh]hThe media device}(hj5+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1+hMohj2+ubah}(h]h ]h"]h$]h&]uh1j hj+ubeh}(h]h ]h"]h$]h&]uh1j hj1+hMohj+ubj )}(h=``struct media_entity_notify *nptr`` The media_entity_notify h](j )}(h$``struct media_entity_notify *nptr``h]j)}(hjU+h]h struct media_entity_notify *nptr}(hjW+hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS+ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMphjO+ubj)}(hhh]h)}(hThe media_entity_notifyh]hThe media_entity_notify}(hjn+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj+hMphjk+ubah}(h]h ]h"]h$]h&]uh1j hjO+ubeh}(h]h ]h"]h$]h&]uh1j hjj+hMphj+ubeh}(h]h ]h"]h$]h&]uh1j hj*ubh)}(h**Description**h]j')}(hj+h]h Description}(hj+hhhNhNubah}(h]h ]h"]h$]h&]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.hhMrhj*ubj)}(h^When a new entity is registered, all the registered media_entity_notify callbacks are invoked.h]h)}(h^When a new entity is registered, all the registered media_entity_notify callbacks are invoked.h]h^When a new entity is registered, all the registered media_entity_notify callbacks are invoked.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMshj+ubah}(h]h ]h"]h$]h&]uh1jhj*ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 2media_device_unregister_entity_notify (C function)'c.media_device_unregister_entity_notifyhNtauh1j hj hhhNhNubj )}(hhh](j )}(hhvoid media_device_unregister_entity_notify (struct media_device *mdev, struct media_entity_notify *nptr)h]j )}(hgvoid media_device_unregister_entity_notify(struct media_device *mdev, struct media_entity_notify *nptr)h](j`)}(hvoidh]hvoid}(hj+hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj+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 ]j3 ah"]h$]h&]uh1j& hj+hhhj+hM|ubj8 )}(h%media_device_unregister_entity_notifyh]j> )}(h%media_device_unregister_entity_notifyh]h%media_device_unregister_entity_notify}(hj,hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj+ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj+hhhj+hM|ubj)}(h=(struct media_device *mdev, struct media_entity_notify *nptr)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj,hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj,ubj' )}(h h]h }(hj),hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj,ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj:,hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj7,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj<,modnameN classnameNjj)}j]j)}jj,sb'c.media_device_unregister_entity_notifyasbuh1hhj,ubj' )}(h h]h }(hjZ,hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj,ubj)}(hjh]h*}(hjh,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj> )}(hmdevh]hmdev}(hju,hhhNhNubah}(h]h ]jI 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 ]j3 ah"]h$]h&]uh1j& hj,ubh)}(hhh]j> )}(hmedia_entity_notifyh]hmedia_entity_notify}(hj,hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj,ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]jV,'c.media_device_unregister_entity_notifyasbuh1hhj,ubj' )}(h h]h }(hj,hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj,ubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,ubj> )}(hnptrh]hnptr}(hj,hhhNhNubah}(h]h ]jI 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&]hhj[ uh1j j\ j] hj+hhhj+hM|ubah}(h]j+ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj+hM|hj+hhubjj )}(hhh]h)}(h)Unregister a media entity notify callbackh]h)Unregister a media entity notify callback}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhM|hj -hhubah}(h]h ]h"]h$]h&]uh1ji hj+hhhj+hM|ubeh}(h]h ](jfunctioneh"]h$]h&]j jj j'-j j'-j j 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')}(hj1-h]h Parameters}(hj3-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+-ubj )}(hhh](j )}(h/``struct media_device *mdev`` The media device h](j )}(h``struct media_device *mdev``h]j)}(hjP-h]hstruct media_device *mdev}(hjR-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN-ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjJ-ubj)}(hhh]h)}(hThe media deviceh]hThe media device}(hji-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje-hMhjf-ubah}(h]h ]h"]h$]h&]uh1j hjJ-ubeh}(h]h ]h"]h$]h&]uh1j hje-hMhjG-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&]uh1jhj-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)}(hThe media_entity_notifyh]hThe media_entity_notify}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj-ubah}(h]h ]h"]h$]h&]uh1j hj-ubeh}(h]h ]h"]h$]h&]uh1j hj-hMhjG-ubeh}(h]h ]h"]h$]h&]uh1j hj+-ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_device_pci_init (C function)c.media_device_pci_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(havoid media_device_pci_init (struct media_device *mdev, struct pci_dev *pci_dev, const char *name)h]j )}(h`void media_device_pci_init(struct media_device *mdev, struct pci_dev *pci_dev, const char *name)h](j`)}(hvoidh]hvoid}(hj-hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj-hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj' )}(h h]h }(hj-hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj-hhhj-hMubj8 )}(hmedia_device_pci_inith]j> )}(hmedia_device_pci_inith]hmedia_device_pci_init}(hj.hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj.ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj-hhhj-hMubj)}(hF(struct media_device *mdev, struct pci_dev *pci_dev, const char *name)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj .hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj.ubj' )}(h h]h }(hj-.hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj.ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj>.hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj;.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@.modnameN classnameNjj)}j]j)}jj.sbc.media_device_pci_initasbuh1hhj.ubj' )}(h h]h }(hj^.hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj.ubj)}(hjh]h*}(hjl.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj> )}(hmdevh]hmdev}(hjy.hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubj)}(hstruct pci_dev *pci_devh](j )}(hj h]hstruct}(hj.hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj.ubj' )}(h h]h }(hj.hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj.ubh)}(hhh]j> )}(hpci_devh]hpci_dev}(hj.hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj.ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj.modnameN classnameNjj)}j]jZ.c.media_device_pci_initasbuh1hhj.ubj' )}(h h]h }(hj.hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj.ubj)}(hjh]h*}(hj.hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj> )}(hpci_devh]hpci_dev}(hj.hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubj)}(hconst char *nameh](j )}(hconsth]hconst}(hj/hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj.ubj' )}(h h]h }(hj/hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj.ubj`)}(hcharh]hchar}(hj/hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj.ubj' )}(h h]h }(hj,/hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj.ubj)}(hjh]h*}(hj:/hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj.ubj> )}(hnameh]hname}(hjG/hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj.ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.ubeh}(h]h ]h"]h$]h&]hhuh1jhj-hhhj-hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj-hhhj-hMubah}(h]j-ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj-hMhj-hhubjj )}(hhh]h)}(hHcreate and initialize a struct :c:type:`media_device` from a PCI device.h](hcreate and initialize a struct }(hjq/hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj{/h]h media_device}(hj}/hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjy/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jZ.c.media_device_pci_initasbj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhKhjq/ubh from a PCI device.}(hjq/hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjn/hhubah}(h]h ]h"]h$]h&]uh1ji hj-hhhj-hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j/j j/j j 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&]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/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&]uh1jhj/ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj/ubj)}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj/hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj/h]h media_device}(hj0hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj/ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj/hMhj/ubeh}(h]h ]h"]h$]h&]uh1hhj/hMhj/ubah}(h]h ]h"]h$]h&]uh1j hj/ubeh}(h]h ]h"]h$]h&]uh1j hj/hMhj/ubj )}(h6``struct pci_dev *pci_dev`` pointer to struct pci_dev h](j )}(h``struct pci_dev *pci_dev``h]j)}(hj30h]hstruct pci_dev *pci_dev}(hj50hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj10ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj-0ubj)}(hhh]h)}(hpointer to struct pci_devh]hpointer to struct pci_dev}(hjL0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjH0hMhjI0ubah}(h]h ]h"]h$]h&]uh1j hj-0ubeh}(h]h ]h"]h$]h&]uh1j hjH0hMhj/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)}(hjl0h]hconst char *name}(hjn0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj0ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjf0ubj)}(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 }(hj0hhhNhNubj)}(h``NULL``h]hNULL}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0ubhV, the routine will use the default name for the pci device, given by pci_name() macro.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj0hMhj0ubah}(h]h ]h"]h$]h&]uh1j hjf0ubeh}(h]h ]h"]h$]h&]uh1j hj0hMhj/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 ]jlah"]h$]h&]uh1j_hj0hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj' )}(h h]h }(hj0hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj0hhhj0hMubj8 )}(h__media_device_usb_inith]j> )}(h__media_device_usb_inith]h__media_device_usb_init}(hj0hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj0ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj0hhhj0hMubj)}(he(struct media_device *mdev, struct usb_device *udev, const char *board_name, const char *driver_name)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj1hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj1ubj' )}(h h]h }(hj!1hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj1ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj21hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj/1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj41modnameN classnameNjj)}j]j)}jj0sbc.__media_device_usb_initasbuh1hhj1ubj' )}(h h]h }(hjR1hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj1ubj)}(hjh]h*}(hj`1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj> )}(hmdevh]hmdev}(hjm1hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj 1ubj)}(hstruct usb_device *udevh](j )}(hj h]hstruct}(hj1hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj1ubj' )}(h h]h }(hj1hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj1ubh)}(hhh]j> )}(h usb_deviceh]h usb_device}(hj1hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj1modnameN classnameNjj)}j]jN1c.__media_device_usb_initasbuh1hhj1ubj' )}(h h]h }(hj1hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj1ubj)}(hjh]h*}(hj1hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj> )}(hudevh]hudev}(hj1hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj 1ubj)}(hconst char *board_nameh](j )}(hj/h]hconst}(hj1hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj1ubj' )}(h h]h }(hj2hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj1ubj`)}(hcharh]hchar}(hj2hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj1ubj' )}(h h]h }(hj2hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj1ubj)}(hjh]h*}(hj-2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj1ubj> )}(h board_nameh]h board_name}(hj:2hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj1ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj 1ubj)}(hconst char *driver_nameh](j )}(hj/h]hconst}(hjS2hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjO2ubj' )}(h h]h }(hj`2hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjO2ubj`)}(hcharh]hchar}(hjn2hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjO2ubj' )}(h h]h }(hj|2hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjO2ubj)}(hjh]h*}(hj2hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjO2ubj> )}(h driver_nameh]h driver_name}(hj2hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjO2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj 1ubeh}(h]h ]h"]h$]h&]hhuh1jhj0hhhj0hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj0hhhj0hMubah}(h]j0ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj0hMhj0hhubjj )}(hhh]h)}(hHcreate and initialize a struct :c:type:`media_device` from a PCI device.h](hcreate and initialize a struct }(hj2hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj2h]h media_device}(hj2hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj2ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jN1c.__media_device_usb_initasbj media_deviceuh1hhj/hKhj2ubh from a PCI device.}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj2hhubah}(h]h ]h"]h$]h&]uh1ji hj0hhhj0hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j3j j3j j 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')}(hj 3h]h Parameters}(hj 3hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj 3ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j)}(hj*3h]hstruct media_device *mdev}(hj,3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj$3ubj)}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjC3hhhNhNubh)}(h:c:type:`media_device`h]j)}(hjM3h]h media_device}(hjO3hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjK3ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj?3hMhjC3ubeh}(h]h ]h"]h$]h&]uh1hhj?3hMhj@3ubah}(h]h ]h"]h$]h&]uh1j hj$3ubeh}(h]h ]h"]h$]h&]uh1j hj?3hMhj!3ubj )}(h9``struct usb_device *udev`` pointer to struct usb_device h](j )}(h``struct usb_device *udev``h]j)}(hj3h]hstruct usb_device *udev}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj|3ubj)}(hhh]h)}(hpointer to struct usb_deviceh]hpointer to struct usb_device}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj3hMhj3ubah}(h]h ]h"]h$]h&]uh1j hj|3ubeh}(h]h ]h"]h$]h&]uh1j hj3hMhj!3ubj )}(ht``const char *board_name`` media device name. If ``NULL``, the routine will use the usb product name, if available. h](j )}(h``const char *board_name``h]j)}(hj3h]hconst char *board_name}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubj)}(hhh]h)}(hXmedia device name. If ``NULL``, the routine will use the usb product name, if available.h](hmedia device name. If }(hj3hhhNhNubj)}(h``NULL``h]hNULL}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj3ubh:, the routine will use the usb product name, if available.}(hj3hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubah}(h]h ]h"]h$]h&]uh1j hj3ubeh}(h]h ]h"]h$]h&]uh1j hj3hMhj!3ubj )}(h``const char *driver_name`` name of the driver. if ``NULL``, the routine will use the name given by ``udev->dev->driver->name``, with is usually the wrong thing to do. h](j )}(h``const char *driver_name``h]j)}(hj4h]hconst char *driver_name}(hj 4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubah}(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)}(hname of the driver. if ``NULL``, the routine will use the name given by ``udev->dev->driver->name``, with is usually the wrong thing to do.h](hname of the driver. if }(hj 4hhhNhNubj)}(h``NULL``h]hNULL}(hj(4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 4ubh), the routine will use the name given by }(hj 4hhhNhNubj)}(h``udev->dev->driver->name``h]hudev->dev->driver->name}(hj:4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj 4ubh(, with is usually the wrong thing to do.}(hj 4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj4ubah}(h]h ]h"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]uh1j hj4hMhj!3ubeh}(h]h ]h"]h$]h&]uh1j hj3ubh)}(h**Description**h]j')}(hjg4h]h Description}(hji4hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hje4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj3ubj)}(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 }(hj4hhhNhNubj)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4ubh.}(hj4hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj}4ubah}(h]h ]h"]h$]h&]uh1jhj3ubeh}(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]j8 )}(hmedia_device_usb_inith]j> )}(hj4h]hmedia_device_usb_init}(hj4hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj4ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj4hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj4hhhj4hMubah}(h]j4ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj4hMhj4hhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hj4hhhj4hMubeh}(h]h ](jmacroeh"]h$]h&]j jj j4j j4j j j uh1j hhhj hNhNubh)}(h,``media_device_usb_init (mdev, udev, name)``h]j)}(hj4h]h(media_device_usb_init (mdev, udev, name)}(hj5hhhNhNubah}(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.hhMhj hhubj)}(hIcreate and initialize a struct :c:type:`media_device` from a PCI device. h]h)}(hHcreate and initialize a struct :c:type:`media_device` from a PCI device.h](hcreate and initialize a struct }(hj5hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj"5h]h media_device}(hj$5hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj 5ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj5ubh from a PCI device.}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj?5hMhj5ubah}(h]h ]h"]h$]h&]uh1jhj?5hMhj hhubj )}(hXl**Parameters** ``mdev`` pointer to struct :c:type:`media_device` ``udev`` pointer to struct usb_device ``name`` media device name. If ``NULL``, the routine will use the usb product name, if available. **Description** This macro calls media_device_usb_init() passing the media_device_usb_init() **driver_name** parameter filled with ``KBUILD_MODNAME``.h](h)}(h**Parameters**h]j')}(hjV5h]h Parameters}(hjX5hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjT5ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjP5ubj )}(hhh](j )}(h2``mdev`` pointer to struct :c:type:`media_device` h](j )}(h``mdev``h]j)}(hju5h]hmdev}(hjw5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjs5ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjo5ubj)}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj5hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj5h]h media_device}(hj5hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj5hMhj5ubeh}(h]h ]h"]h$]h&]uh1hhj5hMhj5ubah}(h]h ]h"]h$]h&]uh1j hjo5ubeh}(h]h ]h"]h$]h&]uh1j hj5hMhjl5ubj )}(h&``udev`` pointer to struct usb_device h](j )}(h``udev``h]j)}(hj5h]hudev}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj5ubj)}(hhh]h)}(hpointer to struct usb_deviceh]hpointer to struct usb_device}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5hMhj5ubah}(h]h ]h"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]uh1j hj5hMhjl5ubj )}(hb``name`` media device name. If ``NULL``, the routine will use the usb product name, if available. h](j )}(h``name``h]j)}(hj6h]hname}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj6ubj)}(hhh]h)}(hXmedia device name. If ``NULL``, the routine will use the usb product name, if available.h](hmedia device name. If }(hj6hhhNhNubj)}(h``NULL``h]hNULL}(hj'6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj6ubh:, the routine will use the usb product name, if available.}(hj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj6ubah}(h]h ]h"]h$]h&]uh1j hj6ubeh}(h]h ]h"]h$]h&]uh1j hj6hMhjl5ubeh}(h]h ]h"]h$]h&]uh1j hjP5ubh)}(h**Description**h]j')}(hjT6h]h Description}(hjV6hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjR6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjP5ubh)}(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() }(hjj6hhhNhNubj')}(h**driver_name**h]h driver_name}(hjr6hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjj6ubh parameter filled with }(hjj6hhhNhNubj)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjj6ubh.}(hjj6hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjP5ubeh}(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}(hj6hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj6hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMubj' )}(h h]h }(hj6hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj6hhhj6hMubj8 )}(hmedia_set_bus_infoh]j> )}(hmedia_set_bus_infoh]hmedia_set_bus_info}(hj6hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj6ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj6hhhj6hMubj)}(h:(char *bus_info, size_t bus_info_size, struct device *dev)h](j)}(hchar *bus_infoh](j`)}(hcharh]hchar}(hj6hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj6ubj' )}(h h]h }(hj7hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj6ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubj> )}(hbus_infoh]hbus_info}(hj#7hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hsize_t bus_info_sizeh](h)}(hhh]j> )}(hsize_th]hsize_t}(hj?7hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj<7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjA7modnameN classnameNjj)}j]j)}jj6sbc.media_set_bus_infoasbuh1hhj87ubj' )}(h h]h }(hj_7hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj87ubj> )}(h bus_info_sizeh]h bus_info_size}(hjm7hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj87ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hstruct device *devh](j )}(hj h]hstruct}(hj7hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj7ubj' )}(h h]h }(hj7hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7ubh)}(hhh]j> )}(hdeviceh]hdevice}(hj7hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj7modnameN classnameNjj)}j]j[7c.media_set_bus_infoasbuh1hhj7ubj' )}(h h]h }(hj7hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7ubj)}(hjh]h*}(hj7hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubj> )}(hdevh]hdev}(hj7hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubeh}(h]h ]h"]h$]h&]hhuh1jhj6hhhj6hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj6hhhj6hMubah}(h]j6ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj6hMhj6hhubjj )}(hhh]h)}(hSet bus_info fieldh]hSet bus_info field}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj8hhubah}(h]h ]h"]h$]h&]uh1ji hj6hhhj6hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j8j j8j j 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')}(hj)8h]h Parameters}(hj+8hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj'8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj#8ubj )}(hhh](j )}(hE``char *bus_info`` Variable where to write the bus info (char array) h](j )}(h``char *bus_info``h]j)}(hjH8h]hchar *bus_info}(hjJ8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhjB8ubj)}(hhh]h)}(h1Variable where to write the bus info (char array)h]h1Variable where to write the bus info (char array)}(hja8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]8hMhj^8ubah}(h]h ]h"]h$]h&]uh1j hjB8ubeh}(h]h ]h"]h$]h&]uh1j hj]8hMhj?8ubj )}(h0``size_t bus_info_size`` Length of the bus_info h](j )}(h``size_t bus_info_size``h]j)}(hj8h]hsize_t bus_info_size}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj{8ubj)}(hhh]h)}(hLength of the bus_infoh]hLength of the bus_info}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j hj{8ubeh}(h]h ]h"]h$]h&]uh1j hj8hMhj?8ubj )}(h-``struct device *dev`` Related struct device h](j )}(h``struct device *dev``h]j)}(hj8h]hstruct device *dev}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj8ubj)}(hhh]h)}(hRelated struct deviceh]hRelated struct device}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj8hMhj8ubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hj8hMhj?8ubeh}(h]h ]h"]h$]h&]uh1j hj#8ubh)}(h**Description**h]j')}(hj8h]h Description}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj#8ubh)}(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 }(hj 9hhhNhNubh)}(h :c:type:`dev`h]j)}(hj9h]hdev}(hj9hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj 9ubhi. This is currently done for PCI and platform devices. dev is required to be non-NULL for this to happen.}(hj 9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj29hMhj#8ubh)}(h5This function is not meant to be called from drivers.h]h5This function is not meant to be called from drivers.}(hj=9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:333: ./include/media/media-device.hhMhj#8ubeh}(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}(hjl9hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjh9hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj' )}(h h]h }(hjz9hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjh9hhhjy9hKubj8 )}(hmedia_file_operationsh]j> )}(hjf9h]hmedia_file_operations}(hj9hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj9ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjh9hhhjy9hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjd9hhhjy9hKubah}(h]j_9ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjy9hKhja9hhubjj )}(hhh]h)}(hMedia device file operationsh]hMedia device file operations}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK&hj9hhubah}(h]h ]h"]h$]h&]uh1ji hja9hhhjy9hKubeh}(h]h ](jstructeh"]h$]h&]j jj j9j j9j j 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&]uh1j&hj9ubh:}(hj9hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK*hj9ubj)}(hXstruct media_file_operations { struct module *owner; ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); __poll_t (*poll) (struct file *, struct poll_table_struct *); long (*ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*open) (struct file *); int (*release) (struct file *); };h]hXstruct media_file_operations { struct module *owner; ssize_t (*read) (struct file *, char __user *, size_t, loff_t *); ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *); __poll_t (*poll) (struct file *, struct poll_table_struct *); long (*ioctl) (struct file *, unsigned int, unsigned long); long (*compat_ioctl) (struct file *, unsigned int, unsigned long); int (*open) (struct file *); int (*release) (struct file *); };}hj9sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK,hj9ubh)}(h **Members**h]j')}(hj9h]hMembers}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj9ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK7hj9ubj )}(hhh](j )}(h0``owner`` should be filled with ``THIS_MODULE`` h](j )}(h ``owner``h]j)}(hj:h]howner}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK)hj:ubj)}(hhh]h)}(h%should be filled with ``THIS_MODULE``h](hshould be filled with }(hj4:hhhNhNubj)}(h``THIS_MODULE``h]h THIS_MODULE}(hj<:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4:ubeh}(h]h ]h"]h$]h&]uh1hhj0:hK)hj1:ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj0:hK)hj:ubj )}(h@``read`` pointer to the function that implements read() syscall h](j )}(h``read``h]j)}(hjb:h]hread}(hjd:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`: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 read() syscallh]h6pointer to the function that implements read() syscall}(hj{:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjw:hK*hjx:ubah}(h]h ]h"]h$]h&]uh1j hj\:ubeh}(h]h ]h"]h$]h&]uh1j hjw:hK*hj:ubj )}(hB``write`` pointer to the function that implements write() syscall h](j )}(h ``write``h]j)}(hj:h]hwrite}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK+hj:ubj)}(hhh]h)}(h7pointer to the function that implements write() syscallh]h7pointer to the function that implements write() syscall}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hK+hj:ubah}(h]h ]h"]h$]h&]uh1j hj:ubeh}(h]h ]h"]h$]h&]uh1j hj:hK+hj:ubj )}(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&]uh1jhj: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,hj:ubj )}(hB``ioctl`` pointer to the function that implements ioctl() syscall h](j )}(h ``ioctl``h]j)}(hj ;h]hioctl}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ;ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK-hj;ubj)}(hhh]h)}(h7pointer to the function that implements ioctl() syscallh]h7pointer to the function that implements ioctl() syscall}(hj&;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj";hK-hj#;ubah}(h]h ]h"]h$]h&]uh1j hj;ubeh}(h]h ]h"]h$]h&]uh1j hj";hK-hj:ubj )}(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)}(hjF;h]h compat_ioctl}(hjH;hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjD;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/hj:ubj )}(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&]uh1jhj~;ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK0hjz;ubj)}(hhh]h)}(h6pointer to the function that implements open() syscallh]h6pointer to the function that implements open() syscall}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj;hK0hj;ubah}(h]h ]h"]h$]h&]uh1j hjz;ubeh}(h]h ]h"]h$]h&]uh1j hj;hK0hj:ubj )}(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&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK1hj;ubj)}(hhh]h)}(h[pointer to the function that will release the resources allocated by the **open** function.h](hIpointer to the function that will release the resources allocated by the }(hj;hhhNhNubj')}(h**open**h]hopen}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj;ubh function.}(hj;hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj;hK1hj;ubah}(h]h ]h"]h$]h&]uh1j hj;ubeh}(h]h ]h"]h$]h&]uh1j hj;hK1hj:ubeh}(h]h ]h"]h$]h&]uh1j hj9ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_devnode (C struct)c.media_devnodehNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_devnodeh]j )}(hstruct media_devnodeh](j )}(hj h]hstruct}(hj$<hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj <hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK8ubj' )}(h h]h }(hj2<hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj <hhhj1<hK8ubj8 )}(h media_devnodeh]j> )}(hj<h]h media_devnode}(hjD<hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj@<ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj <hhhj1<hK8ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj<hhhj1<hK8ubah}(h]j<ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj1<hK8hj<hhubjj )}(hhh]h)}(hMedia device nodeh]hMedia device node}(hjf<hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK?hjc<hhubah}(h]h ]h"]h$]h&]uh1ji hj<hhhj1<hK8ubeh}(h]h ](jstructeh"]h$]h&]j jj j~<j j~<j j 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&]uh1j&hj<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.hhKChj<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.hhKEhj<ubh)}(h **Members**h]j')}(hj<h]hMembers}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj<ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKPhj<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&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKAhj<ubj)}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hj<hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj<h]h media_device}(hj<hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj<hKAhj<ubeh}(h]h ]h"]h$]h&]uh1hhj<hKAhj<ubah}(h]h ]h"]h$]h&]uh1j hj<ubeh}(h]h ]h"]h$]h&]uh1j hj<hKAhj<ubj )}(hQ``fops`` pointer to struct :c:type:`media_file_operations` with media device ops h](j )}(h``fops``h]j)}(hj+=h]hfops}(hj-=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)=ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKBhj%=ubj)}(hhh]h)}(hGpointer to struct :c:type:`media_file_operations` with media device opsh](hpointer to struct }(hjD=hhhNhNubh)}(h:c:type:`media_file_operations`h]j)}(hjN=h]hmedia_file_operations}(hjP=hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjL=ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_file_operationsuh1hhj@=hKBhjD=ubh with media device ops}(hjD=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj@=hKBhjA=ubah}(h]h ]h"]h$]h&]uh1j hj%=ubeh}(h]h ]h"]h$]h&]uh1j hj@=hKBhj<ubj )}(hR``dev`` pointer to struct :c:type:`device` containing the media controller device h](j )}(h``dev``h]j)}(hj=h]hdev}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=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)}(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 ](jjc-typeeh"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjdeviceuh1hhj=hKChj=ubh' containing the media controller device}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj=hKChj=ubah}(h]h ]h"]h$]h&]uh1j hj=ubeh}(h]h ]h"]h$]h&]uh1j hj=hKChj<ubj )}(h.``cdev`` struct cdev pointer character device h](j )}(h``cdev``h]j)}(hj=h]hcdev}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKDhj=ubj)}(hhh]h)}(h$struct cdev pointer character deviceh]h$struct cdev pointer character device}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj=hKDhj=ubah}(h]h ]h"]h$]h&]uh1j hj=ubeh}(h]h ]h"]h$]h&]uh1j hj=hKDhj<ubj )}(h``parent`` parent device h](j )}(h ``parent``h]j)}(hj>h]hparent}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKEhj>ubj)}(hhh]h)}(h parent deviceh]h parent device}(hj5>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj1>hKEhj2>ubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hj1>hKEhj<ubj )}(h#``minor`` device node minor number h](j )}(h ``minor``h]j)}(hjU>h]hminor}(hjW>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKFhjO>ubj)}(hhh]h)}(hdevice node minor numberh]hdevice node minor number}(hjn>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjj>hKFhjk>ubah}(h]h ]h"]h$]h&]uh1j hjO>ubeh}(h]h ]h"]h$]h&]uh1j hjj>hKFhj<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&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKGhj>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&]uh1jhj>ubh constants}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hKGhj>ubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hj>hKGhj<ubj )}(hh``release`` release callback called at the end of ``media_devnode_release()`` routine at media-device.c.h](j )}(h ``release``h]j)}(hj>h]hrelease}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKHhj>ubj)}(hhh]h)}(h\release callback called at the end of ``media_devnode_release()`` routine at media-device.c.h](h&release callback called at the end of }(hj>hhhNhNubj)}(h``media_devnode_release()``h]hmedia_devnode_release()}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubh routine at media-device.c.}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj>hKHhj>ubah}(h]h ]h"]h$]h&]uh1j hj>ubeh}(h]h ]h"]h$]h&]uh1j hj>hKHhj<ubeh}(h]h ]h"]h$]h&]uh1j 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&]uh1j&hj+?ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKLhj hhubh)}(h6This structure represents a media-related device node.h]h6This structure represents a media-related device node.}(hjC?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKIhj hhubh)}(hjThe **parent** is a physical device. It must be set by core or device drivers before registering the node.h](hThe }(hjR?hhhNhNubj')}(h **parent**h]hparent}(hjZ?hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjR?ubh\ is a physical device. It must be set by core or device drivers before registering the node.}(hjR?hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKKhj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_devnode_register (C function)c.media_devnode_registerhNtauh1j hj hhhNhNubj )}(hhh](j )}(hkint media_devnode_register (struct media_device *mdev, struct media_devnode *devnode, struct module *owner)h]j )}(hjint media_devnode_register(struct media_device *mdev, struct media_devnode *devnode, struct module *owner)h](j`)}(hinth]hint}(hj?hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj?hhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKfubj' )}(h h]h }(hj?hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj?hhhj?hKfubj8 )}(hmedia_devnode_registerh]j> )}(hmedia_devnode_registerh]hmedia_devnode_register}(hj?hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj?ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj?hhhj?hKfubj)}(hP(struct media_device *mdev, struct media_devnode *devnode, struct module *owner)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj?hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj?ubj' )}(h h]h }(hj?hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj?ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj?hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j)}jj?sbc.media_devnode_registerasbuh1hhj?ubj' )}(h h]h }(hj@hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj?ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj> )}(hmdevh]hmdev}(hj"@hhhNhNubah}(h]h ]jI 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 hj7@ubj' )}(h h]h }(hjH@hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7@ubh)}(hhh]j> )}(h media_devnodeh]h media_devnode}(hjY@hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjV@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[@modnameN classnameNjj)}j]j@c.media_devnode_registerasbuh1hhj7@ubj' )}(h h]h }(hjw@hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7@ubj> )}(hdevnodeh]hdevnode}(hj@hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj7@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 ]j3 ah"]h$]h&]uh1j& hj@ubh)}(hhh]j> )}(hmoduleh]hmodule}(hj@hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj@ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj@modnameN classnameNjj)}j]j@c.media_devnode_registerasbuh1hhj@ubj' )}(h h]h }(hj@hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj@ubj)}(hjh]h*}(hj@hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj> )}(hownerh]howner}(hjAhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj?ubeh}(h]h ]h"]h$]h&]hhuh1jhj?hhhj?hKfubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj?hhhj?hKfubah}(h]j?ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj?hKfhj?hhubjj )}(hhh]h)}(hregister a media device nodeh]hregister a media device node}(hj,AhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKfhj)Ahhubah}(h]h ]h"]h$]h&]uh1ji hj?hhhj?hKfubeh}(h]h ](jfunctioneh"]h$]h&]j jj jDAj jDAj j 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')}(hjNAh]h Parameters}(hjPAhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjLAubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKjhjHAubj )}(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)}(hjmAh]hstruct media_device *mdev}(hjoAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkAubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhhjgAubj)}(hhh]h)}(h5struct media_device we want to register a device nodeh]h5struct media_device we want to register a device node}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjAhKhhjAubah}(h]h ]h"]h$]h&]uh1j hjgAubeh}(h]h ]h"]h$]h&]uh1j hjAhKhhjdAubj )}(hR``struct media_devnode *devnode`` media device node structure we want to register h](j )}(h!``struct media_devnode *devnode``h]j)}(hjAh]hstruct media_devnode *devnode}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKihjAubj)}(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&]uh1hhjAhKihjAubah}(h]h ]h"]h$]h&]uh1j hjAubeh}(h]h ]h"]h$]h&]uh1j hjAhKihjdAubj )}(h?``struct module *owner`` should be filled with ``THIS_MODULE`` h](j )}(h``struct module *owner``h]j)}(hjAh]hstruct module *owner}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKjhjAubj)}(hhh]h)}(h%should be filled with ``THIS_MODULE``h](hshould be filled with }(hjAhhhNhNubj)}(h``THIS_MODULE``h]h THIS_MODULE}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubeh}(h]h ]h"]h$]h&]uh1hhjAhKjhjAubah}(h]h ]h"]h$]h&]uh1j hjAubeh}(h]h ]h"]h$]h&]uh1j hjAhKjhjdAubeh}(h]h ]h"]h$]h&]uh1j hjHAubh)}(h**Description**h]j')}(hj(Bh]h Description}(hj*BhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj&Bubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKlhjHAubh)}(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.}(hj>BhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKkhjHAubh)}(hZero is returned on success.h]hZero is returned on success.}(hjMBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKohjHAubh)}(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 }(hj\BhhhNhNubhemphasis)}(h*not*h]hnot}(hjfBhhhNhNubah}(h]h ]h"]h$]h&]uh1jdBhj\Bubh; called, so the caller is responsible for freeing any data.}(hj\BhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKqhjHAubeh}(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}(hjBhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjBhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK{ubj' )}(h h]h }(hjBhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjBhhhjBhK{ubj8 )}(h media_devnode_unregister_prepareh]j> )}(h media_devnode_unregister_prepareh]h media_devnode_unregister_prepare}(hjBhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjBubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjBhhhjBhK{ubj)}(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 }(hjBhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjBubh)}(hhh]j> )}(h media_devnodeh]h media_devnode}(hjBhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjBmodnameN classnameNjj)}j]j)}jjBsb"c.media_devnode_unregister_prepareasbuh1hhjBubj' )}(h h]h }(hjChhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjBubj)}(hjh]h*}(hj(ChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj> )}(hdevnodeh]hdevnode}(hj5ChhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjBubah}(h]h ]h"]h$]h&]hhuh1jhjBhhhjBhK{ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjBhhhjBhK{ubah}(h]jBah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjBhK{hjBhhubjj )}(hhh]h)}(h(clear the media device node register bith]h(clear the media device node register bit}(hj_ChhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK{hj\Chhubah}(h]h ]h"]h$]h&]uh1ji hjBhhhjBhK{ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jwCj jwCj j 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')}(hjCh]h Parameters}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjCubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj{Cubj )}(hhh]j )}(hL``struct media_devnode *devnode`` the device node to prepare for unregister h](j )}(h!``struct media_devnode *devnode``h]j)}(hjCh]hstruct media_devnode *devnode}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK|hjCubj)}(hhh]h)}(h)the device node to prepare for unregisterh]h)the device node to prepare for unregister}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhjChK|hjCubah}(h]h ]h"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]uh1j hjChK|hjCubah}(h]h ]h"]h$]h&]uh1j hj{Cubh)}(h**Description**h]j')}(hjCh]h Description}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjCubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK~hj{Cubh)}(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.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhK}hj{Cubh)}(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.}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj{Cubeh}(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 )}(hDhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj+Dhhhj=DhKubj8 )}(hmedia_devnode_unregisterh]j> )}(hmedia_devnode_unregisterh]hmedia_devnode_unregister}(hjPDhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjLDubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj+Dhhhj=DhKubj)}(h(struct media_devnode *devnode)h]j)}(hstruct media_devnode *devnodeh](j )}(hj h]hstruct}(hjlDhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjhDubj' )}(h h]h }(hjyDhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhDubh)}(hhh]j> )}(h media_devnodeh]h media_devnode}(hjDhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]j)}jjRDsbc.media_devnode_unregisterasbuh1hhjhDubj' )}(h h]h }(hjDhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhDubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhDubj> )}(hdevnodeh]hdevnode}(hjDhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjhDubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjdDubah}(h]h ]h"]h$]h&]hhuh1jhj+Dhhhj=DhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj'Dhhhj=DhKubah}(h]j"Dah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj=DhKhj$Dhhubjj )}(hhh]h)}(hunregister a media device nodeh]hunregister a media device node}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjDhhubah}(h]h ]h"]h$]h&]uh1ji hj$Dhhhj=DhKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jEj jEj j j uh1j hhhj hNhNubj )}(h**Parameters** ``struct media_devnode *devnode`` the device node to unregister **Description** This unregisters the passed device. Future open calls will be met with errors. Should be called after media_devnode_unregister_prepare()h](h)}(h**Parameters**h]j')}(hjEh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjEubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj Eubj )}(hhh]j )}(h@``struct media_devnode *devnode`` the device node to unregister h](j )}(h!``struct media_devnode *devnode``h]j)}(hj0Eh]hstruct media_devnode *devnode}(hj2EhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.Eubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj*Eubj)}(hhh]h)}(hthe device node to unregisterh]hthe device node to unregister}(hjIEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEEhKhjFEubah}(h]h ]h"]h$]h&]uh1j hj*Eubeh}(h]h ]h"]h$]h&]uh1j hjEEhKhj'Eubah}(h]h ]h"]h$]h&]uh1j hj Eubh)}(h**Description**h]j')}(hjkEh]h Description}(hjmEhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjiEubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj Eubh)}(hNThis unregisters the passed device. Future open calls will be met with errors.h]hNThis unregisters the passed device. Future open calls will be met with errors.}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj Eubh)}(h9Should be called after media_devnode_unregister_prepare()h]h9Should be called after media_devnode_unregister_prepare()}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj Eubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_devnode_data (C function)c.media_devnode_datahNtauh1j hj hhhNhNubj )}(hhh](j )}(h=struct media_devnode * media_devnode_data (struct file *filp)h]j )}(h;struct media_devnode *media_devnode_data(struct file *filp)h](j )}(hj h]hstruct}(hjEhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjEhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj' )}(h h]h }(hjEhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjEhhhjEhKubh)}(hhh]j> )}(h media_devnodeh]h media_devnode}(hjEhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjEubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEmodnameN classnameNjj)}j]j)}jmedia_devnode_datasbc.media_devnode_dataasbuh1hhjEhhhjEhKubj' )}(h h]h }(hjEhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjEhhhjEhKubj)}(hjh]h*}(hj FhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjEhhhjEhKubj8 )}(hmedia_devnode_datah]j> )}(hjEh]hmedia_devnode_data}(hjFhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjFubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjEhhhjEhKubj)}(h(struct file *filp)h]j)}(hstruct file *filph](j )}(hj h]hstruct}(hj9FhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj5Fubj' )}(h h]h }(hjFFhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj5Fubh)}(hhh]j> )}(hfileh]hfile}(hjWFhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjTFubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjYFmodnameN classnameNjj)}j]jEc.media_devnode_dataasbuh1hhj5Fubj' )}(h h]h }(hjuFhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj5Fubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5Fubj> )}(hfilph]hfilp}(hjFhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj5Fubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1Fubah}(h]h ]h"]h$]h&]hhuh1jhjEhhhjEhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjEhhhjEhKubah}(h]jEah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjEhKhjEhhubjj )}(hhh]h)}(h0returns a pointer to the :c:type:`media_devnode`h](hreturns a pointer to the }(hjFhhhNhNubh)}(h:c:type:`media_devnode`h]j)}(hjFh]h media_devnode}(hjFhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjFubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jEc.media_devnode_dataasbj media_devnodeuh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjFubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjFhhubah}(h]h ]h"]h$]h&]uh1ji hjEhhhjEhKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jFj jFj j j uh1j hhhj hNhNubj )}(hH**Parameters** ``struct file *filp`` pointer to struct :c:type:`file`h](h)}(h**Parameters**h]j')}(hjGh]h Parameters}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjFubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjFubj )}(hhh]j )}(h6``struct file *filp`` pointer to struct :c:type:`file`h](j )}(h``struct file *filp``h]j)}(hj Gh]hstruct file *filp}(hj"GhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjGubj)}(hhh]h)}(h pointer to struct :c:type:`file`h](hpointer to struct }(hj9GhhhNhNubh)}(h:c:type:`file`h]j)}(hjCGh]hfile}(hjEGhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjAGubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjfileuh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhj9Gubeh}(h]h ]h"]h$]h&]uh1hhj`GhKhj6Gubah}(h]h ]h"]h$]h&]uh1j hjGubeh}(h]h ]h"]h$]h&]uh1j hj5GhKhjGubah}(h]h ]h"]h$]h&]uh1j hjFubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_devnode_is_registered (C function)c.media_devnode_is_registeredhNtauh1j hj hhhNhNubj )}(hhh](j )}(h?int media_devnode_is_registered (struct media_devnode *devnode)h]j )}(h>int media_devnode_is_registered(struct media_devnode *devnode)h](j`)}(hinth]hint}(hjGhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjGhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKubj' )}(h h]h }(hjGhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjGhhhjGhKubj8 )}(hmedia_devnode_is_registeredh]j> )}(hmedia_devnode_is_registeredh]hmedia_devnode_is_registered}(hjGhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjGubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjGhhhjGhKubj)}(h(struct media_devnode *devnode)h]j)}(hstruct media_devnode *devnodeh](j )}(hj h]hstruct}(hjGhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjGubj' )}(h h]h }(hjGhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjGubh)}(hhh]j> )}(h media_devnodeh]h media_devnode}(hjGhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjGubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j]j)}jjGsbc.media_devnode_is_registeredasbuh1hhjGubj' )}(h h]h }(hjHhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjGubj)}(hjh]h*}(hj"HhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjGubj> )}(hdevnodeh]hdevnode}(hj/HhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjGubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubah}(h]h ]h"]h$]h&]hhuh1jhjGhhhjGhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjGhhhjGhKubah}(h]jGah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjGhKhjGhhubjj )}(hhh]h)}(hGreturns true if :c:type:`media_devnode` is registered; false otherwise.h](hreturns true if }(hjYHhhhNhNubh)}(h:c:type:`media_devnode`h]j)}(hjcHh]h media_devnode}(hjeHhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjaHubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jHc.media_devnode_is_registeredasbj media_devnodeuh1hhjFhKhjYHubh is registered; false otherwise.}(hjYHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjVHhhubah}(h]h ]h"]h$]h&]uh1ji hjGhhhjGhKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jHj jHj j j uh1j hhhj hNhNubj )}(h**Parameters** ``struct media_devnode *devnode`` pointer to struct :c:type:`media_devnode`. **Note** If mdev is NULL, it also returns false.h](h)}(h**Parameters**h]j')}(hjHh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjHubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubj )}(hhh]j )}(hM``struct media_devnode *devnode`` pointer to struct :c:type:`media_devnode`. h](j )}(h!``struct media_devnode *devnode``h]j)}(hjHh]hstruct media_devnode *devnode}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubj)}(hhh]h)}(h*pointer to struct :c:type:`media_devnode`.h](hpointer to struct }(hjHhhhNhNubh)}(h:c:type:`media_devnode`h]j)}(hjHh]h media_devnode}(hjHhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_devnodeuh1hhjHhKhjHubh.}(hjHhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjHhKhjHubah}(h]h ]h"]h$]h&]uh1j hjHubeh}(h]h ]h"]h$]h&]uh1j hjHhKhjHubah}(h]h ]h"]h$]h&]uh1j hjHubh)}(h**Note**h]j')}(hj Ih]hNote}(hj"IhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjIubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubh)}(h'If mdev is NULL, it also returns false.h]h'If mdev is NULL, it also returns false.}(hj6IhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:335: ./include/media/media-devnode.hhKhjHubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj_type (C enum)c.media_gobj_typehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_gobj_typeh]j )}(henum media_gobj_typeh](j )}(henumh]henum}(hjeIhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjaIhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj' )}(h h]h }(hjtIhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjaIhhhjsIhKubj8 )}(hmedia_gobj_typeh]j> )}(hj_Ih]hmedia_gobj_type}(hjIhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjIubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjaIhhhjsIhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj]IhhhjsIhKubah}(h]jXIah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjsIhKhjZIhhubjj )}(hhh]h)}(htype of a graph objecth]htype of a graph object}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjIhhubah}(h]h ]h"]h$]h&]uh1ji hjZIhhhjsIhKubeh}(h]h ](jenumeh"]h$]h&]j jj jIj jIj j j uh1j hhhj hNhNubj )}(h**Constants** ``MEDIA_GRAPH_ENTITY`` Identify a media entity ``MEDIA_GRAPH_PAD`` Identify a media pad ``MEDIA_GRAPH_LINK`` Identify a media link ``MEDIA_GRAPH_INTF_DEVNODE`` Identify a media Kernel API interface via a device nodeh](h)}(h **Constants**h]j')}(hjIh]h Constants}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjIubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjIubj )}(hhh](j )}(h/``MEDIA_GRAPH_ENTITY`` Identify a media entity h](j )}(h``MEDIA_GRAPH_ENTITY``h]j)}(hjIh]hMEDIA_GRAPH_ENTITY}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK!hjIubj)}(hhh]h)}(hIdentify a media entityh]hIdentify a media entity}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIhK!hjIubah}(h]h ]h"]h$]h&]uh1j hjIubeh}(h]h ]h"]h$]h&]uh1j hjIhK!hjIubj )}(h)``MEDIA_GRAPH_PAD`` Identify a media pad h](j )}(h``MEDIA_GRAPH_PAD``h]j)}(hj"Jh]hMEDIA_GRAPH_PAD}(hj$JhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj Jubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK$hjJubj)}(hhh]h)}(hIdentify a media padh]hIdentify a media pad}(hj;JhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj7JhK$hj8Jubah}(h]h ]h"]h$]h&]uh1j hjJubeh}(h]h ]h"]h$]h&]uh1j hj7JhK$hjIubj )}(h+``MEDIA_GRAPH_LINK`` Identify a media link h](j )}(h``MEDIA_GRAPH_LINK``h]j)}(hj[Jh]hMEDIA_GRAPH_LINK}(hj]JhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYJubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK'hjUJubj)}(hhh]h)}(hIdentify a media linkh]hIdentify a media link}(hjtJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjpJhK'hjqJubah}(h]h ]h"]h$]h&]uh1j hjUJubeh}(h]h ]h"]h$]h&]uh1j hjpJhK'hjIubj )}(hT``MEDIA_GRAPH_INTF_DEVNODE`` Identify a media Kernel API interface via a device nodeh](j )}(h``MEDIA_GRAPH_INTF_DEVNODE``h]j)}(hjJh]hMEDIA_GRAPH_INTF_DEVNODE}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK*hjJubj)}(hhh]h)}(h7Identify a media Kernel API interface via a device nodeh]h7Identify a media Kernel API interface via a device node}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjJhK*hjJubah}(h]h ]h"]h$]h&]uh1j hjJubeh}(h]h ]h"]h$]h&]uh1j hjJhK*hjIubeh}(h]h ]h"]h$]h&]uh1j hjIubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj (C struct) c.media_gobjhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_gobjh]j )}(hstruct media_gobjh](j )}(hj h]hstruct}(hjJhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjJhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK0ubj' )}(h h]h }(hjJhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjJhhhjJhK0ubj8 )}(h media_gobjh]j> )}(hjJh]h media_gobj}(hj KhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj Kubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjJhhhjJhK0ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjJhhhjJhK0ubah}(h]jJah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjJhK0hjJhhubjj )}(hhh]h)}(hDefine a graph object.h]hDefine a graph object.}(hj/KhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK0hj,Khhubah}(h]h ]h"]h$]h&]uh1ji hjJhhhjJhK0ubeh}(h]h ](jstructeh"]h$]h&]j jj jGKj jGKj j j uh1j hhhj hNhNubj )}(hX**Definition**:: struct media_gobj { struct media_device *mdev; u32 id; struct list_head list; }; **Members** ``mdev`` Pointer to the struct :c:type:`media_device` that owns the object ``id`` Non-zero object ID identifier. The ID should be unique inside a media_device, as it is composed by ``MEDIA_BITS_PER_TYPE`` to store the type plus ``MEDIA_BITS_PER_ID`` to store the ID ``list`` List entry stored in one of the per-type mdev object listsh](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjSKhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjOKubh:}(hjOKhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK4hjKKubj)}(hgstruct media_gobj { struct media_device *mdev; u32 id; struct list_head list; };h]hgstruct media_gobj { struct media_device *mdev; u32 id; struct list_head list; };}hjlKsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK6hjKKubh)}(h **Members**h]j')}(hj}Kh]hMembers}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj{Kubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK )}(hjLh]hmedia_entity_enum}(hjLhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjLubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjLhhhjLhK=ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjLhhhjLhK=ubah}(h]jLah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjLhK=hjLhhubjj )}(hhh]h)}(h!An enumeration of media entities.h]h!An enumeration of media entities.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKDhjMhhubah}(h]h ]h"]h$]h&]uh1ji hjLhhhjLhK=ubeh}(h]h ](jstructeh"]h$]h&]j jj j1Mj j1Mj j 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=MhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj9Mubh:}(hj9MhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKHhj5Mubj)}(hGstruct media_entity_enum { unsigned long *bmap; int idx_max; };h]hGstruct media_entity_enum { unsigned long *bmap; int idx_max; };}hjVMsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKJhj5Mubh)}(h **Members**h]j')}(hjgMh]hMembers}(hjiMhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjeMubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKOhj5Mubj )}(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)}(hjMh]hbmap}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKHhjMubj)}(hhh]h)}(hUBit map in which each bit represents one entity at struct media_entity->internal_idx.h]hUBit map in which each bit represents one entity at struct media_entity->internal_idx.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKGhjMubah}(h]h ]h"]h$]h&]uh1j hjMubeh}(h]h ]h"]h$]h&]uh1j hjMhKHhj}Mubj )}(h"``idx_max`` Number of bits in bmaph](j )}(h ``idx_max``h]j)}(hjMh]hidx_max}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKHhjMubj)}(hhh]h)}(hNumber of bits in bmaph]hNumber of bits in bmap}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKIhjMubah}(h]h ]h"]h$]h&]uh1j hjMubeh}(h]h ]h"]h$]h&]uh1j hjMhKHhj}Mubeh}(h]h ]h"]h$]h&]uh1j hj5Mubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_graph (C struct) c.media_graphhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_graphh]j )}(hstruct media_graphh](j )}(hj h]hstruct}(hjNhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjNhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKOubj' )}(h h]h }(hj(NhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjNhhhj'NhKOubj8 )}(h media_graphh]j> )}(hjNh]h media_graph}(hj:NhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj6Nubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjNhhhj'NhKOubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjNhhhj'NhKOubah}(h]j Nah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj'NhKOhjNhhubjj )}(hhh]h)}(hMedia graph traversal stateh]hMedia graph traversal state}(hj\NhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKPhjYNhhubah}(h]h ]h"]h$]h&]uh1ji hjNhhhj'NhKOubeh}(h]h ](jstructeh"]h$]h&]j jj jtNj jtNj j 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}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj|Nubh:}(hj|NhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKThjxNubj)}(hstruct media_graph { struct { struct media_entity *entity; struct list_head *link; } stack[MEDIA_ENTITY_ENUM_MAX_DEPTH]; struct media_entity_enum ent_enum; int top; };h]hstruct media_graph { struct { struct media_entity *entity; struct list_head *link; } stack[MEDIA_ENTITY_ENUM_MAX_DEPTH]; struct media_entity_enum ent_enum; int top; };}hjNsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKVhjxNubh)}(h **Members**h]j')}(hjNh]hMembers}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK_hjxNubj )}(hhh](j )}(h``stack`` Graph traversal stack; the stack contains information on the path the media entities to be walked and the links through which they were reached. h](j )}(h ``stack``h]j)}(hjNh]hstack}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKUhjNubj)}(hhh]h)}(hGraph traversal stack; the stack contains information on the path the media entities to be walked and the links through which they were reached.h]hGraph traversal stack; the stack contains information on the path the media entities to be walked and the links through which they were reached.}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKShjNubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjNhKUhjNubj )}(hW``stack.entity`` pointer to :c:type:`struct media_entity ` at the graph. h](j )}(h``stack.entity``h]j)}(hjOh]h stack.entity}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKVhjNubj)}(hhh]h)}(hEpointer to :c:type:`struct media_entity ` at the graph.h](h pointer to }(hjOhhhNhNubh)}(h,:c:type:`struct media_entity `h]j)}(hj&Oh]hstruct media_entity}(hj(OhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj$Oubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjOhKVhjOubh at the graph.}(hjOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOhKVhjOubah}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ]h"]h$]h&]uh1j hjOhKVhjNubj )}(hB``stack.link`` pointer to :c:type:`struct list_head `. h](j )}(h``stack.link``h]j)}(hj_Oh]h stack.link}(hjaOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]Oubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKWhjYOubj)}(hhh]h)}(h2pointer to :c:type:`struct list_head `.h](h pointer to }(hjxOhhhNhNubh)}(h&:c:type:`struct list_head `h]j)}(hjOh]hstruct list_head}(hjOhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj list_headuh1hhjtOhKWhjxOubh.}(hjxOhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjtOhKWhjuOubah}(h]h ]h"]h$]h&]uh1j hjYOubeh}(h]h ]h"]h$]h&]uh1j hjtOhKWhjNubj )}(h``ent_enum`` Visited entities h](j )}(h ``ent_enum``h]j)}(hjOh]hent_enum}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKXhjOubj)}(hhh]h)}(hVisited entitiesh]hVisited entities}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjOhKXhjOubah}(h]h ]h"]h$]h&]uh1j hjOubeh}(h]h ]h"]h$]h&]uh1j hjOhKXhjNubj )}(h``top`` The top of the stackh](j )}(h``top``h]j)}(hjOh]htop}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKXhjOubj)}(hhh]h)}(hThe top of the stackh]hThe top of the stack}(hj PhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKYhj Pubah}(h]h ]h"]h$]h&]uh1j hjOubeh}(h]h ]h"]h$]h&]uh1j hj PhKXhjNubeh}(h]h ]h"]h$]h&]uh1j hjxNubeh}(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}(hjNPhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjJPhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhK_ubj' )}(h h]h }(hj\PhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjJPhhhj[PhK_ubj8 )}(hmedia_pipelineh]j> )}(hjHPh]hmedia_pipeline}(hjnPhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjjPubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjJPhhhj[PhK_ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjFPhhhj[PhK_ubah}(h]jAPah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj[PhK_hjCPhhubjj )}(hhh]h)}(h"Media pipeline related informationh]h"Media pipeline related information}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKehjPhhubah}(h]h ]h"]h$]h&]uh1ji hjCPhhhj[PhK_ubeh}(h]h ](jstructeh"]h$]h&]j jj jPj jPj j j uh1j hhhj hNhNubj )}(hX~**Definition**:: struct media_pipeline { bool allocated; struct media_device *mdev; struct list_head pads; int start_count; }; **Members** ``allocated`` Media pipeline allocated and freed by the framework ``mdev`` The media device the pipeline is part of ``pads`` List of media_pipeline_pad ``start_count`` Media pipeline start - stop counth](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjPubh:}(hjPhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKihjPubj)}(h}struct media_pipeline { bool allocated; struct media_device *mdev; struct list_head pads; int start_count; };h]h}struct media_pipeline { bool allocated; struct media_device *mdev; struct list_head pads; int start_count; };}hjPsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKkhjPubh)}(h **Members**h]j')}(hjPh]hMembers}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjPubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKrhjPubj )}(hhh](j )}(hB``allocated`` Media pipeline allocated and freed by the framework h](j )}(h ``allocated``h]j)}(hjPh]h allocated}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhhjPubj)}(hhh]h)}(h3Media pipeline allocated and freed by the frameworkh]h3Media pipeline allocated and freed by the framework}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKhhjQubah}(h]h ]h"]h$]h&]uh1j hjPubeh}(h]h ]h"]h$]h&]uh1j hjQhKhhjPubj )}(h2``mdev`` The media device the pipeline is part of h](j )}(h``mdev``h]j)}(hj6Qh]hmdev}(hj8QhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj4Qubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKihj0Qubj)}(hhh]h)}(h(The media device the pipeline is part ofh]h(The media device the pipeline is part of}(hjOQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjKQhKihjLQubah}(h]h ]h"]h$]h&]uh1j hj0Qubeh}(h]h ]h"]h$]h&]uh1j hjKQhKihjPubj )}(h$``pads`` List of media_pipeline_pad h](j )}(h``pads``h]j)}(hjoQh]hpads}(hjqQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmQubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKjhjiQubj)}(hhh]h)}(hList of media_pipeline_padh]hList of media_pipeline_pad}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQhKjhjQubah}(h]h ]h"]h$]h&]uh1j hjiQubeh}(h]h ]h"]h$]h&]uh1j hjQhKjhjPubj )}(h1``start_count`` Media pipeline start - stop counth](j )}(h``start_count``h]j)}(hjQh]h start_count}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKjhjQubj)}(hhh]h)}(h!Media pipeline start - stop counth]h!Media pipeline start - stop count}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKkhjQubah}(h]h ]h"]h$]h&]uh1j hjQubeh}(h]h ]h"]h$]h&]uh1j hjQhKjhjPubeh}(h]h ]h"]h$]h&]uh1j hjPubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pipeline_pad (C struct)c.media_pipeline_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_padh]j )}(hstruct media_pipeline_padh](j )}(hj h]hstruct}(hjRhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjQhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKqubj' )}(h h]h }(hjRhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjQhhhjRhKqubj8 )}(hmedia_pipeline_padh]j> )}(hjQh]hmedia_pipeline_pad}(hj"RhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjRubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjQhhhjRhKqubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjQhhhjRhKqubah}(h]jQah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjRhKqhjQhhubjj )}(hhh]h)}(hA pad part of a media pipelineh]hA pad part of a media pipeline}(hjDRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKthjARhhubah}(h]h ]h"]h$]h&]uh1ji hjQhhhjRhKqubeh}(h]h ](jstructeh"]h$]h&]j jj j\Rj j\Rj j j uh1j hhhj hNhNubj )}(hX**Definition**:: struct media_pipeline_pad { struct list_head list; struct media_pipeline *pipe; struct media_pad *pad; }; **Members** ``list`` Entry in the media_pad pads list ``pipe`` The media_pipeline that the pad is part of ``pad`` The media padh](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjhRhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjdRubh:}(hjdRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKxhj`Rubj)}(hustruct media_pipeline_pad { struct list_head list; struct media_pipeline *pipe; struct media_pad *pad; };h]hustruct media_pipeline_pad { struct list_head list; struct media_pipeline *pipe; struct media_pad *pad; };}hjRsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKzhj`Rubh)}(h **Members**h]j')}(hjRh]hMembers}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjRubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj`Rubj )}(hhh](j )}(h*``list`` Entry in the media_pad pads list h](j )}(h``list``h]j)}(hjRh]hlist}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKwhjRubj)}(hhh]h)}(h Entry in the media_pad pads listh]h Entry in the media_pad pads list}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKwhjRubah}(h]h ]h"]h$]h&]uh1j hjRubeh}(h]h ]h"]h$]h&]uh1j hjRhKwhjRubj )}(h4``pipe`` The media_pipeline that the pad is part of h](j )}(h``pipe``h]j)}(hjRh]hpipe}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKxhjRubj)}(hhh]h)}(h*The media_pipeline that the pad is part ofh]h*The media_pipeline that the pad is part of}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhKxhjSubah}(h]h ]h"]h$]h&]uh1j hjRubeh}(h]h ]h"]h$]h&]uh1j hjRhKxhjRubj )}(h``pad`` The media padh](j )}(h``pad``h]j)}(hj#Sh]hpad}(hj%ShhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!Subah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKxhjSubj)}(hhh]h)}(h The media padh]h The media pad}(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 }(hj|ShhhNhNubh)}(h$:c:type:`media_pad.pads `h]j)}(hjSh]hmedia_pad.pads}(hjShhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_paduh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKyhj|SubhP list. media_pipeline_stop() removes the entries from the list and deletes them.}(hj|ShhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjShKyhj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_pipeline_pad_iter (C struct)c.media_pipeline_pad_iterhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_pad_iterh]j )}(hstruct media_pipeline_pad_iterh](j )}(hj h]hstruct}(hjShhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjShhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj' )}(h h]h }(hjShhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjShhhjShKubj8 )}(hmedia_pipeline_pad_iterh]j> )}(hjSh]hmedia_pipeline_pad_iter}(hjShhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjSubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjShhhjShKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjShhhjShKubah}(h]jSah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjShKhjShhubjj )}(hhh]h)}(h(Iterator for media_pipeline_for_each_padh]h(Iterator for media_pipeline_for_each_pad}(hj ThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjThhubah}(h]h ]h"]h$]h&]uh1ji hjShhhjShKubeh}(h]h ](jstructeh"]h$]h&]j jj j!Tj j!Tj j 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}(hj-ThhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj)Tubh:}(hj)ThhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj%Tubj)}(hAstruct media_pipeline_pad_iter { struct list_head *cursor; };h]hAstruct media_pipeline_pad_iter { struct list_head *cursor; };}hjFTsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj%Tubh)}(h **Members**h]j')}(hjWTh]hMembers}(hjYThhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjUTubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj%Tubj )}(hhh]j )}(h``cursor`` The current elementh](j )}(h ``cursor``h]j)}(hjvTh]hcursor}(hjxThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtTubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjpTubj)}(hhh]h)}(hThe current elementh]hThe current element}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjTubah}(h]h ]h"]h$]h&]uh1j hjpTubeh}(h]h ]h"]h$]h&]uh1j hjThKhjmTubah}(h]h ]h"]h$]h&]uh1j hj%Tubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_pipeline_entity_iter (C struct)c.media_pipeline_entity_iterhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_entity_iterh]j )}(h!struct media_pipeline_entity_iterh](j )}(hj h]hstruct}(hjThhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjThhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj' )}(h h]h }(hjThhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjThhhjThKubj8 )}(hmedia_pipeline_entity_iterh]j> )}(hjTh]hmedia_pipeline_entity_iter}(hjThhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjTubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjThhhjThKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjThhhjThKubah}(h]jTah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjThKhjThhubjj )}(hhh]h)}(h+Iterator for media_pipeline_for_each_entityh]h+Iterator for media_pipeline_for_each_entity}(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&]uh1ji hjThhhjThKubeh}(h]h ](jstructeh"]h$]h&]j jj j*Uj j*Uj j 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}(hj6UhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj2Uubh:}(hj2UhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj.Uubj)}(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; };}hjOUsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj.Uubh)}(h **Members**h]j')}(hj`Uh]hMembers}(hjbUhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj^Uubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj.Uubj )}(hhh](j )}(h,``ent_enum`` The entity enumeration tracker h](j )}(h ``ent_enum``h]j)}(hjUh]hent_enum}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}Uubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjyUubj)}(hhh]h)}(hThe entity enumeration trackerh]hThe entity enumeration tracker}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUhKhjUubah}(h]h ]h"]h$]h&]uh1j hjyUubeh}(h]h ]h"]h$]h&]uh1j hjUhKhjvUubj )}(h``cursor`` The current elementh](j )}(h ``cursor``h]j)}(hjUh]hcursor}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUubj)}(hhh]h)}(hThe current elementh]hThe current element}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjUubah}(h]h ]h"]h$]h&]uh1j hjUubeh}(h]h ]h"]h$]h&]uh1j hjUhKhjvUubeh}(h]h ]h"]h$]h&]uh1j hj.Uubeh}(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}(hjVhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjVhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj' )}(h h]h }(hj VhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjVhhhjVhKubj8 )}(h media_linkh]j> )}(hj Vh]h media_link}(hj2VhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj.Vubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjVhhhjVhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj VhhhjVhKubah}(h]jVah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjVhKhjVhhubjj )}(hhh]h)}(h$A link object part of a media graph.h]h$A link object part of a media graph.}(hjTVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjQVhhubah}(h]h ]h"]h$]h&]uh1ji hjVhhhjVhKubeh}(h]h ](jstructeh"]h$]h&]j jj jlVj jlVj j 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}(hjxVhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjtVubh:}(hjtVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjpVubj)}(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; };}hjVsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjpVubh)}(h **Members**h]j')}(hjVh]hMembers}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjVubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjpVubj )}(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&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjVubj)}(hhh]h)}(h:Embedded structure containing the media object common datah]h:Embedded structure containing the media object common data}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhKhjVubah}(h]h ]h"]h$]h&]uh1j hjVubeh}(h]h ]h"]h$]h&]uh1j hjVhKhjVubj )}(hS``list`` Linked list associated with an entity or an interface that owns the link. h](j )}(h``list``h]j)}(hjVh]hlist}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjVubj)}(hhh]h)}(hILinked list associated with an entity or an interface that owns the link.h]hILinked list associated with an entity or an interface that owns the link.}(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 hjVubeh}(h]h ]h"]h$]h&]uh1j hjWhKhjVubj )}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j)}(hj4Wh]h{unnamed_union}}(hj6WhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2Wubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj.Wubj)}(hhh]h)}(h anonymoush]h anonymous}(hjMWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjIWhKhjJWubah}(h]h ]h"]h$]h&]uh1j hj.Wubeh}(h]h ]h"]h$]h&]uh1j hjIWhKhjVubj )}(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)}(hjmWh]hgobj0}(hjoWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjgWubj)}(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.}(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 hjgWubeh}(h]h ]h"]h$]h&]uh1j hjWhKhjVubj )}(hx``source`` Part of a union. Used only if the first object (gobj0) is a pad. In that case, it represents the source pad. h](j )}(h ``source``h]j)}(hjWh]hsource}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubj)}(hhh]h)}(hlPart of a union. Used only if the first object (gobj0) is a pad. In that case, it represents the source pad.h]hlPart of a union. Used only if the first object (gobj0) is a pad. In that case, it represents the source pad.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjWhKhjVubj )}(hQ``intf`` Part of a union. Used only if the first object (gobj0) is an interface. h](j )}(h``intf``h]j)}(hjWh]hintf}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubj)}(hhh]h)}(hGPart of a union. Used only if the first object (gobj0) is an interface.h]hGPart of a union. Used only if the first object (gobj0) is an interface.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjWubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjWhKhjVubj )}(h``{unnamed_union}`` anonymous h](j )}(h``{unnamed_union}``h]j)}(hjXh]h{unnamed_union}}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubj)}(hhh]h)}(h anonymoush]h anonymous}(hj4XhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj0XhKhj1Xubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hj0XhKhjVubj )}(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)}(hjTXh]hgobj1}(hjVXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjRXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjNXubj)}(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.}(hjmXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjjXubah}(h]h ]h"]h$]h&]uh1j hjNXubeh}(h]h ]h"]h$]h&]uh1j hjiXhKhjVubj )}(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)}(hjXh]hsink}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(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)}(hkPart of a union. Used only if the second object (gobj1) is a pad. In that case, it represents the sink pad.h]hkPart of a union. Used only if the second object (gobj1) is a pad. In that case, it represents the sink pad.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjXhKhjVubj )}(hQ``entity`` Part of a union. Used only if the second object (gobj1) is an entity. h](j )}(h ``entity``h]j)}(hjXh]hentity}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubj)}(hhh]h)}(hEPart of a union. Used only if the second object (gobj1) is an entity.h]hEPart of a union. Used only if the second object (gobj1) is an entity.}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjXhKhjVubj )}(hP``reverse`` Pointer to the link for the reverse direction of a pad to pad link. h](j )}(h ``reverse``h]j)}(hjYh]hreverse}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjYubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjXubj)}(hhh]h)}(hCPointer to the link for the reverse direction of a pad to pad link.h]hCPointer to the link for the reverse direction of a pad to pad link.}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjYubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjYhKhjVubj )}(hB``flags`` Link flags, as defined in uapi/media.h (MEDIA_LNK_FL_*) h](j )}(h ``flags``h]j)}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:Yubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj6Yubj)}(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_*)}(hjUYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQYhKhjRYubah}(h]h ]h"]h$]h&]uh1j hj6Yubeh}(h]h ]h"]h$]h&]uh1j hjQYhKhjVubj )}(h3``is_backlink`` Indicate if the link is a backlink.h](j )}(h``is_backlink``h]j)}(hjuYh]h is_backlink}(hjwYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsYubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjoYubj)}(hhh]h)}(h#Indicate if the link is a backlink.h]h#Indicate if the link is a backlink.}(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 hjoYubeh}(h]h ]h"]h$]h&]uh1j hjYhKhjVubeh}(h]h ]h"]h$]h&]uh1j hjpVubeh}(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 )}(hjgIh]henum}(hjYhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjYhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj' )}(h h]h }(hjYhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjYhhhjYhKubj8 )}(hmedia_pad_signal_typeh]j> )}(hjYh]hmedia_pad_signal_type}(hjYhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjYubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjYhhhjYhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjYhhhjYhKubah}(h]jYah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjYhKhjYhhubjj )}(hhh]h)}(h%type of the signal inside a media padh]h%type of the signal inside a media pad}(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&]uh1ji hjYhhhjYhKubeh}(h]h ](jenumeh"]h$]h&]j jj j)Zj j)Zj j 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')}(hj3Zh]h Constants}(hj5ZhhhNhNubah}(h]h ]h"]h$]h&]uh1j& hj1Zubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj-Zubj )}(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)}(hjRZh]hPAD_SIGNAL_DEFAULT}(hjTZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjPZubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjLZubj)}(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.}(hjkZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjhZubah}(h]h ]h"]h$]h&]uh1j hjLZubeh}(h]h ]h"]h$]h&]uh1j hjgZhKhjIZubj )}(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)}(hjZh]hPAD_SIGNAL_ANALOG}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(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)}(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.}(hjZhhhNhNubah}(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 hjZhKhjIZubj )}(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}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(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.}(hjZhhhNhNubah}(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 hjZhKhjIZubj )}(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)}(hj[h]hPAD_SIGNAL_AUDIO}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjZubah}(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 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.}(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 hjZubeh}(h]h ]h"]h$]h&]uh1j hj[hKhjIZubeh}(h]h ]h"]h$]h&]uh1j hj-Zubeh}(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}(hjZ[hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjV[hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj' )}(h h]h }(hjh[hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjV[hhhjg[hKubj8 )}(h media_padh]j> )}(hjT[h]h media_pad}(hjz[hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjv[ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjV[hhhjg[hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjR[hhhjg[hKubah}(h]jM[ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjg[hKhjO[hhubjj )}(hhh]h)}(hA media pad graph object.h]hA media pad graph object.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[hhubah}(h]h ]h"]h$]h&]uh1ji hjO[hhhjg[hKubeh}(h]h ](jstructeh"]h$]h&]j jj j[j j[j j 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&]uh1j&hj[ubh:}(hj[hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[ubj)}(hstruct media_pad { struct media_gobj graph_obj; struct media_entity *entity; u16 index; u16 num_links; enum media_pad_signal_type sig_type; unsigned long flags; struct media_pipeline *pipe; };h]hstruct media_pad { struct media_gobj graph_obj; struct media_entity *entity; u16 index; u16 num_links; enum media_pad_signal_type sig_type; unsigned long flags; struct media_pipeline *pipe; };}hj[sbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj[ubh)}(h **Members**h]j')}(hj[h]hMembers}(hj[hhhNhNubah}(h]h ]h"]h$]h&]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.hhKhj[ubj )}(hhh](j )}(hI``graph_obj`` Embedded structure containing the media object common data h](j )}(h ``graph_obj``h]j)}(hj \h]h graph_obj}(hj \hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\ubj)}(hhh]h)}(h:Embedded structure containing the media object common datah]h:Embedded structure containing the media object common data}(hj"\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hKhj\ubah}(h]h ]h"]h$]h&]uh1j hj\ubeh}(h]h ]h"]h$]h&]uh1j hj\hKhj\ubj )}(h&``entity`` Entity this pad belongs to h](j )}(h ``entity``h]j)}(hjB\h]hentity}(hjD\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj@\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&]uh1hhjW\hKhjX\ubah}(h]h ]h"]h$]h&]uh1j hj<\ubeh}(h]h ]h"]h$]h&]uh1j hjW\hKhj\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&]uh1jhjy\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhju\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 hju\ubeh}(h]h ]h"]h$]h&]uh1j hj\hKhj\ubj )}(h4``num_links`` Number of links connected to this pad h](j )}(h ``num_links``h]j)}(hj\h]h num_links}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\ubj)}(hhh]h)}(h%Number of links connected to this padh]h%Number of links connected to this pad}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hKhj\ubah}(h]h ]h"]h$]h&]uh1j hj\ubeh}(h]h ]h"]h$]h&]uh1j hj\hKhj\ubj )}(h3``sig_type`` Type of the signal inside a media pad h](j )}(h ``sig_type``h]j)}(hj\h]hsig_type}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj\ubj)}(hhh]h)}(h%Type of the signal inside a media padh]h%Type of the signal inside a media pad}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hKhj]ubah}(h]h ]h"]h$]h&]uh1j hj\ubeh}(h]h ]h"]h$]h&]uh1j hj]hKhj\ubj )}(hr``flags`` Pad flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``) h](j )}(h ``flags``h]j)}(hj&]h]hflags}(hj(]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj$]ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj ]ubj)}(hhh]h)}(hgPad flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_PAD_FL_*``)h](hPad flags, as defined in }(hj?]hhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjI]h]hinclude/uapi/linux/media.h}(hjK]hhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjG]ubah}(h]h ]h"]h$]h&]refdocj refdomainjU]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_*}(hjl]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?]ubh)}(hj?]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjg]hKhj<]ubah}(h]h ]h"]h$]h&]uh1j hj ]ubeh}(h]h ]h"]h$]h&]uh1j hj;]hKhj\ubj )}(hX``pipe`` Pipeline this pad belongs to. Use media_entity_pipeline() to access this field.h](j )}(h``pipe``h]j)}(hj]h]hpipe}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj]ubj)}(hhh]h)}(hOPipeline this pad belongs to. Use media_entity_pipeline() to access this field.h]hOPipeline this pad belongs to. Use media_entity_pipeline() to access this field.}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hKhj]ubah}(h]h ]h"]h$]h&]uh1j hj]ubeh}(h]h ]h"]h$]h&]uh1j hj]hKhj\ubeh}(h]h ]h"]h$]h&]uh1j hj[ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_entity_operations (C struct)c.media_entity_operationshNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_entity_operationsh]j )}(hstruct media_entity_operationsh](j )}(hj h]hstruct}(hj]hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj]hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKubj' )}(h h]h }(hj]hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj]hhhj]hKubj8 )}(hmedia_entity_operationsh]j> )}(hj]h]hmedia_entity_operations}(hj^hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ^ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj]hhhj]hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj]hhhj]hKubah}(h]j]ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj]hKhj]hhubjj )}(hhh]h)}(hMedia entity operationsh]hMedia entity operations}(hj1^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhj.^hhubah}(h]h ]h"]h$]h&]uh1ji hj]hhhj]hKubeh}(h]h ](jstructeh"]h$]h&]j jj jI^j jI^j j 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}(hjU^hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjQ^ubh:}(hjQ^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjM^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); };}hjn^sbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjM^ubh)}(h **Members**h]j')}(hj^h]hMembers}(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.hhM hjM^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&]uh1jhj^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&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubj)}(hhh]h)}(h{Notify the entity of link changes. The operation can return an error, in which case link setup will be cancelled. Optional.h]h{Notify the entity of link changes. The operation can return an error, in which case link setup will be cancelled. Optional.}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj^ubah}(h]h ]h"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]uh1j hj^hMhj^ubj )}(h``link_validate`` Return whether a link is valid from the entity point of view. The media_pipeline_start() function validates all links by calling this operation. Optional. h](j )}(h``link_validate``h]j)}(hj_h]h link_validate}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj _ubj)}(hhh]h)}(hReturn whether a link is valid from the entity point of view. The media_pipeline_start() function validates all links by calling this operation. Optional.h]hReturn whether a link is valid from the entity point of view. The media_pipeline_start() function validates all links by calling this operation. Optional.}(hj+_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj(_ubah}(h]h ]h"]h$]h&]uh1j hj _ubeh}(h]h ]h"]h$]h&]uh1j hj'_hMhj^ubj )}(hX``has_pad_interdep`` Return whether two pads of the entity are interdependent. If two pads are interdependent they are part of the same pipeline and enabling one of the pads means that the other pad will become "locked" and doesn't allow configuration changes. pad0 and pad1 are guaranteed to not both be sinks or sources. Never call the .has_pad_interdep() operation directly, always use media_entity_has_pad_interdep(). Optional: If the operation isn't implemented all pads will be considered as interdependent.h](j )}(h``has_pad_interdep``h]j)}(hjL_h]hhas_pad_interdep}(hjN_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJ_ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjF_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.}(hje_hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjb_ubah}(h]h ]h"]h$]h&]uh1j hjF_ubeh}(h]h ]h"]h$]h&]uh1j hja_hMhj^ubeh}(h]h ]h"]h$]h&]uh1j hjM^ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubh)}(h**Description**h]j')}(hj_h]h Description}(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)}(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 ](jjc-typeeh"]h$]h&]uh1jhj_ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj_ubh mutex held.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj_hMhj_ubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_entity_type (C enum)c.media_entity_typehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_entity_typeh]j )}(henum media_entity_typeh](j )}(hjgIh]henum}(hj_hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj_hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hj`hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj_hhhj`hMubj8 )}(hmedia_entity_typeh]j> )}(hj_h]hmedia_entity_type}(hj`hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj`ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj_hhhj`hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj_hhhj`hMubah}(h]j_ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj`hMhj_hhubjj )}(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"hj9`hhubah}(h]h ]h"]h$]h&]uh1ji hj_hhhj`hMubeh}(h]h ](jenumeh"]h$]h&]j jj jT`j jT`j j 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&]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.hhM&hjX`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&]uh1jhj{`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)hjw`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 hjw`ubeh}(h]h ]h"]h$]h&]uh1j hj`hM)hjt`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&]uh1jhj`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,hjt`ubj )}(hZ``MEDIA_ENTITY_TYPE_V4L2_SUBDEV`` The entity is embedded in a struct v4l2_subdev instance.h](j )}(h!``MEDIA_ENTITY_TYPE_V4L2_SUBDEV``h]j)}(hj`h]hMEDIA_ENTITY_TYPE_V4L2_SUBDEV}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`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.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hjaubah}(h]h ]h"]h$]h&]uh1j hj`ubeh}(h]h ]h"]h$]h&]uh1j hjahM.hjt`ubeh}(h]h ]h"]h$]h&]uh1j hjX`ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubh)}(h**Description**h]j')}(hj2ah]h Description}(hj4ahhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj0aubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM1hj hhubh)}(hXMedia entity objects are often not instantiated directly, but the media entity structure is inherited by (through embedding) other subsystem-specific structures. The media entity type identifies the type of the subclass structure that implements a media entity instance.h]hXMedia entity objects are often not instantiated directly, but the media entity structure is inherited by (through embedding) other subsystem-specific structures. The media entity type identifies the type of the subclass structure that implements a media entity instance.}(hjHahhhNhNubah}(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 }(hjWahhhNhNubj)}(h!``MEDIA_ENTITY_TYPE_V4L2_SUBDEV``h]hMEDIA_ENTITY_TYPE_V4L2_SUBDEV}(hj_ahhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWaubh and can safely be cast to a }(hjWahhhNhNubh)}(h:c:type:`v4l2_subdev`h]j)}(hjsah]h v4l2_subdev}(hjuahhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjqaubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hjWaubh* structure using the container_of() macro.}(hjWahhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjahM/hj hhubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_entity (C struct)c.media_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_entityh]j )}(hstruct media_entityh](j )}(hj h]hstruct}(hjahhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjahhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM8ubj' )}(h h]h }(hjahhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjahhhjahM8ubj8 )}(h media_entityh]j> )}(hjah]h media_entity}(hjahhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjaubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjahhhjahM8ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjahhhjahM8ubah}(h]jaah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjahM8hjahhubjj )}(hhh]h)}(hA media entity graph object.h]hA media entity graph object.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM=hjahhubah}(h]h ]h"]h$]h&]uh1ji hjahhhjahM8ubeh}(h]h ](jstructeh"]h$]h&]j jj jbj jbj j j uh1j hhhj hNhNubj )}(hX**Definition**:: struct media_entity { struct media_gobj graph_obj; const char *name; enum media_entity_type obj_type; u32 function; unsigned long flags; u16 num_pads; u16 num_links; u16 num_backlinks; int internal_idx; struct media_pad *pads; struct list_head links; const struct media_entity_operations *ops; int use_count; union { struct { u32 major; u32 minor; } dev; } info; }; **Members** ``graph_obj`` Embedded structure containing the media object common data. ``name`` Entity name. ``obj_type`` Type of the object that implements the media_entity. ``function`` Entity main function, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_F_*``) ``flags`` Entity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``) ``num_pads`` Number of sink and source pads. ``num_links`` Total number of links, forward and back, enabled and disabled. ``num_backlinks`` Number of backlinks ``internal_idx`` An unique internal entity specific number. The numbers are re-used if entities are unregistered or registered again. ``pads`` Pads array with the size defined by **num_pads**. ``links`` List of data links. ``ops`` Entity operations. ``use_count`` Use count for the entity. ``info`` Union with devnode information. Kept just for backward compatibility. ``info.dev`` Contains device major and minor info. ``info.dev.major`` device node major, if the device is a devnode. ``info.dev.minor`` device node minor, if the device is a devnode.h](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjbubh:}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjbubj)}(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; };}hj3bsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjbubh)}(h **Members**h]j')}(hjDbh]hMembers}(hjFbhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjBbubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhjbubj )}(hhh](j )}(hJ``graph_obj`` Embedded structure containing the media object common data. h](j )}(h ``graph_obj``h]j)}(hjcbh]h graph_obj}(hjebhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjabubah}(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]bubj)}(hhh]h)}(h;Embedded structure containing the media object common data.h]h;Embedded structure containing the media object common data.}(hj|bhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxbhM@hjybubah}(h]h ]h"]h$]h&]uh1j hj]bubeh}(h]h ]h"]h$]h&]uh1j hjxbhM@hjZbubj )}(h``name`` Entity name. h](j )}(h``name``h]j)}(hjbh]hname}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjbubj)}(hhh]h)}(h Entity name.h]h Entity name.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMAhjbubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhMAhjZbubj )}(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&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMBhjbubj)}(hhh]h)}(h4Type of the object that implements the media_entity.h]h4Type of the object that implements the media_entity.}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjbhMBhjbubah}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ]h"]h$]h&]uh1j hjbhMBhjZbubj )}(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)}(hjch]hfunction}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj cubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMEhjcubj)}(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 }(hj'chhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hj1ch]hinclude/uapi/linux/media.h}(hj3chhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhj/cubah}(h]h ]h"]h$]h&]refdocj refdomainj=creftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChj'cubh (seek for }(hj'chhhNhNubj)}(h``MEDIA_ENT_F_*``h]h MEDIA_ENT_F_*}(hjTchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'cubh)}(hj'chhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjOchMChj$cubah}(h]h ]h"]h$]h&]uh1j hjcubeh}(h]h ]h"]h$]h&]uh1j hj#chMEhjZbubj )}(hu``flags`` Entity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``) h](j )}(h ``flags``h]j)}(hj~ch]hflags}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhj|cubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMHhjxcubj)}(hhh]h)}(hjEntity flags, as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_ENT_FL_*``)h](hEntity flags, as defined in }(hjchhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjch]hinclude/uapi/linux/media.h}(hjchhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjcubah}(h]h ]h"]h$]h&]refdocj refdomainjcreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMFhjcubh (seek for }(hjchhhNhNubj)}(h``MEDIA_ENT_FL_*``h]hMEDIA_ENT_FL_*}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubh)}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjchMFhjcubah}(h]h ]h"]h$]h&]uh1j hjxcubeh}(h]h ]h"]h$]h&]uh1j hjchMHhjZbubj )}(h-``num_pads`` Number of sink and source pads. h](j )}(h ``num_pads``h]j)}(hjch]hnum_pads}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMIhjcubj)}(hhh]h)}(hNumber of sink and source pads.h]hNumber of sink and source pads.}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdhMIhjdubah}(h]h ]h"]h$]h&]uh1j hjcubeh}(h]h ]h"]h$]h&]uh1j hjdhMIhjZbubj )}(hM``num_links`` Total number of links, forward and back, enabled and disabled. h](j )}(h ``num_links``h]j)}(hj'dh]h num_links}(hj)dhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%dubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMJhj!dubj)}(hhh]h)}(h>Total number of links, forward and back, enabled and disabled.h]h>Total number of links, forward and back, enabled and disabled.}(hj@dhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:fubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhj6fubj)}(hhh]h)}(h.device node major, if the device is a devnode.h]h.device node major, if the device is a devnode.}(hjUfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjQfhMUhjRfubah}(h]h ]h"]h$]h&]uh1j hj6fubeh}(h]h ]h"]h$]h&]uh1j hjQfhMUhjZbubj )}(hA``info.dev.minor`` device node minor, if the device is a devnode.h](j )}(h``info.dev.minor``h]j)}(hjufh]hinfo.dev.minor}(hjwfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsfubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjofubj)}(hhh]h)}(h.device node minor, if the device is a devnode.h]h.device node minor, if the device is a devnode.}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMVhjfubah}(h]h ]h"]h$]h&]uh1j hjofubeh}(h]h ]h"]h$]h&]uh1j hjfhMUhjZbubeh}(h]h ]h"]h$]h&]uh1j hjbubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubh)}(h**Description**h]j')}(hjfh]h Description}(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.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&]uh1j&hjfubhV reference count must never be negative, but is a signed integer on purpose: a simple }(hjfhhhNhNubj)}(h``WARN_ON(<0)``h]h WARN_ON(<0)}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjfubhN check can be used to detect reference count bugs that would make it negative.}(hjfhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMXhjfubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_entity_for_each_pad (C macro)c.media_entity_for_each_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_entity_for_each_padh]j )}(hmedia_entity_for_each_padh]j8 )}(hmedia_entity_for_each_padh]j> )}(hjgh]hmedia_entity_for_each_pad}(hj(ghhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj$gubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj ghhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjghhhj;ghMyubah}(h]jgah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj;ghMyhjghhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjghhhj;ghMyubeh}(h]h ](jmacroeh"]h$]h&]j jj jTgj jTgj j j uh1j hhhj hNhNubh)}(h,``media_entity_for_each_pad (entity, iter)``h]j)}(hjZgh]h(media_entity_for_each_pad (entity, iter)}(hj\ghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXgubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hj hhubj)}(h!Iterate on all pads in an entity h]h)}(h Iterate on all pads in an entityh]h Iterate on all pads in an entity}(hjtghhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyhjpgubah}(h]h ]h"]h$]h&]uh1jhjghMyhj 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')}(hjgh]h Parameters}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjgubah}(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 )}(h)``entity`` The entity the pads belong to h](j )}(h ``entity``h]j)}(hjgh]hentity}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzhjgubj)}(hhh]h)}(hThe entity the pads belong toh]hThe entity the pads belong to}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghMzhjgubah}(h]h ]h"]h$]h&]uh1j hjgubeh}(h]h ]h"]h$]h&]uh1j hjghMzhjgubj )}(h``iter`` The iterator pad h](j )}(h``iter``h]j)}(hjgh]hiter}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjgubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hjgubj)}(hhh]h)}(hThe iterator padh]hThe iterator pad}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjghM{hjgubah}(h]h ]h"]h$]h&]uh1j hjgubeh}(h]h ]h"]h$]h&]uh1j hjghM{hjgubeh}(h]h ]h"]h$]h&]uh1j hjgubh)}(h**Description**h]j')}(hj"hh]h Description}(hj$hhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj hubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjgubh)}(h&Iterate on all pads in a media entity.h]h&Iterate on all pads in a media entity.}(hj8hhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM|hjgubeh}(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}(hjghhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjchhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjuhhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjchhhhjthhMubj8 )}(hmedia_interfaceh]j> )}(hjahh]hmedia_interface}(hjhhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjhubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjchhhhjthhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj_hhhhjthhMubah}(h]jZhah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjthhMhj\hhhubjj )}(hhh]h)}(hA media interface graph object.h]hA media interface graph object.}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhhubah}(h]h ]h"]h$]h&]uh1ji hj\hhhhjthhMubeh}(h]h ](jstructeh"]h$]h&]j jj jhj jhj j 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&]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.hhMhjhubj)}(hstruct media_interface { struct media_gobj graph_obj; struct list_head links; u32 type; u32 flags; };h]hstruct media_interface { struct media_gobj graph_obj; struct list_head links; u32 type; u32 flags; };}hjhsbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhubh)}(h **Members**h]j')}(hjhh]hMembers}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjhubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhubj )}(hhh](j )}(h$``graph_obj`` embedded graph object h](j )}(h ``graph_obj``h]j)}(hjih]h graph_obj}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubj)}(hhh]h)}(hembedded graph objecth]hembedded graph object}(hj/ihhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ihMhj,iubah}(h]h ]h"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]uh1j hj+ihMhj iubj )}(h3``links`` List of links pointing to graph entities h](j )}(h ``links``h]j)}(hjOih]hlinks}(hjQihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMiubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjIiubj)}(hhh]h)}(h(List of links pointing to graph entitiesh]h(List of links pointing to graph entities}(hjhihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjdihMhjeiubah}(h]h ]h"]h$]h&]uh1j hjIiubeh}(h]h ]h"]h$]h&]uh1j hjdihMhj iubj )}(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)}(hjih]htype}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubj)}(hhh]h)}(hrType of the interface as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_T_*``)h](h$Type of the interface as defined in }(hjihhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjih]hinclude/uapi/linux/media.h}(hjihhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjiubah}(h]h ]h"]h$]h&]refdocj refdomainjireftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubh (seek for }(hjihhhNhNubj)}(h``MEDIA_INTF_T_*``h]hMEDIA_INTF_T_*}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh)}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjihMhjiubah}(h]h ]h"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]uh1j hjihMhj iubj )}(hw``flags`` Interface flags as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_FL_*``)h](j )}(h ``flags``h]j)}(hjih]hflags}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubj)}(hhh]h)}(hmInterface flags as defined in :ref:`include/uapi/linux/media.h ` (seek for ``MEDIA_INTF_FL_*``)h](hInterface flags as defined in }(hjjhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjjh]hinclude/uapi/linux/media.h}(hjjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjjubah}(h]h ]h"]h$]h&]refdocj refdomainj'jreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjjubh (seek for }(hjjhhhNhNubj)}(h``MEDIA_INTF_FL_*``h]hMEDIA_INTF_FL_*}(hj>jhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubh)}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj9jhMhjjubah}(h]h ]h"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]uh1j hj jhMhj iubeh}(h]h ]h"]h$]h&]uh1j hjhubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubh)}(h**Description**h]j')}(hjqjh]h Description}(hjsjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjojubah}(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)}(hjjh](hCurrently, no flags for }(hjjhhhNhNubh)}(h:c:type:`media_interface`h]j)}(hjjh]hmedia_interface}(hjjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjjubh is defined.}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjjhMhjjubah}(h]h ]h"]h$]h&]uh1jhj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_intf_devnode (C struct)c.media_intf_devnodehNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_intf_devnodeh]j )}(hstruct media_intf_devnodeh](j )}(hj h]hstruct}(hjjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjjhhhjjhMubj8 )}(hmedia_intf_devnodeh]j> )}(hjjh]hmedia_intf_devnode}(hjjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjjhhhjjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjjhhhjjhMubah}(h]jjah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjjhMhjjhhubjj )}(hhh]h)}(h$A media interface via a device node.h]h$A media interface via a device node.}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkhhubah}(h]h ]h"]h$]h&]uh1ji hjjhhhjjhMubeh}(h]h ](jstructeh"]h$]h&]j jj j5kj j5kj j j uh1j hhhj hNhNubj )}(hX **Definition**:: struct media_intf_devnode { struct media_interface intf; u32 major; u32 minor; }; **Members** ``intf`` embedded interface object ``major`` Major number of a device node ``minor`` Minor number of a device nodeh](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjAkhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj=kubh:}(hj=khhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj9kubj)}(hfstruct media_intf_devnode { struct media_interface intf; u32 major; u32 minor; };h]hfstruct media_intf_devnode { struct media_interface intf; u32 major; u32 minor; };}hjZksbah}(h]h ]h"]h$]h&]hhuh1jhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj9kubh)}(h **Members**h]j')}(hjkkh]hMembers}(hjmkhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjikubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj9kubj )}(hhh](j )}(h#``intf`` embedded interface object h](j )}(h``intf``h]j)}(hjkh]hintf}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkubj)}(hhh]h)}(hembedded interface objecth]hembedded interface object}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMhjkubah}(h]h ]h"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]uh1j hjkhMhjkubj )}(h(``major`` Major number of a device node h](j )}(h ``major``h]j)}(hjkh]hmajor}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkubj)}(hhh]h)}(hMajor number of a device nodeh]hMajor number of a device node}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjkhMhjkubah}(h]h ]h"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]uh1j hjkhMhjkubj )}(h'``minor`` Minor number of a device nodeh](j )}(h ``minor``h]j)}(hjkh]hminor}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjkubj)}(hhh]h)}(hMinor number of a device nodeh]hMinor number of a device node}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjlubah}(h]h ]h"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]uh1j hjlhMhjkubeh}(h]h ]h"]h$]h&]uh1j hj9kubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_entity_id (C function)c.media_entity_idhNtauh1j hj hhhNhNubj )}(hhh](j )}(h1u32 media_entity_id (struct media_entity *entity)h]j )}(h0u32 media_entity_id(struct media_entity *entity)h](h)}(hhh]j> )}(hu32h]hu32}(hjYlhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjVlubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[lmodnameN classnameNjj)}j]j)}jmedia_entity_idsbc.media_entity_idasbuh1hhjRlhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hj{lhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjRlhhhjzlhMubj8 )}(hmedia_entity_idh]j> )}(hjwlh]hmedia_entity_id}(hjlhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjlubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjRlhhhjzlhMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjlhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjlubj' )}(h h]h }(hjlhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjlubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjlhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjlubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjlmodnameN classnameNjj)}j]julc.media_entity_idasbuh1hhjlubj' )}(h h]h }(hjlhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjlubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjlubj> )}(hentityh]hentity}(hjlhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjlubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjlubah}(h]h ]h"]h$]h&]hhuh1jhjRlhhhjzlhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjNlhhhjzlhMubah}(h]jIlah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjzlhMhjKlhhubjj )}(hhh]h)}(h'return the media entity graph object idh]h'return the media entity graph object id}(hj)mhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj&mhhubah}(h]h ]h"]h$]h&]uh1ji hjKlhhhjzlhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jAmj jAmj j j uh1j hhhj hNhNubj )}(hS**Parameters** ``struct media_entity *entity`` pointer to :c:type:`media_entity`h](h)}(h**Parameters**h]j')}(hjKmh]h Parameters}(hjMmhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjImubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjEmubj )}(hhh]j )}(hA``struct media_entity *entity`` pointer to :c:type:`media_entity`h](j )}(h``struct media_entity *entity``h]j)}(hjjmh]hstruct media_entity *entity}(hjlmhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhmubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjdmubj)}(hhh]h)}(h!pointer to :c:type:`media_entity`h](h pointer to }(hjmhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjmh]h media_entity}(hjmhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjmubeh}(h]h ]h"]h$]h&]uh1hhjmhMhjmubah}(h]h ]h"]h$]h&]uh1j hjdmubeh}(h]h ]h"]h$]h&]uh1j hjmhMhjamubah}(h]h ]h"]h$]h&]uh1j hjEmubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_type (C function) c.media_typehNtauh1j hj hhhNhNubj )}(hhh](j )}(h9enum media_gobj_type media_type (struct media_gobj *gobj)h]j )}(h8enum media_gobj_type media_type(struct media_gobj *gobj)h](j )}(hjgIh]henum}(hjmhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjmhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjmhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjmhhhjmhMubh)}(hhh]j> )}(hmedia_gobj_typeh]hmedia_gobj_type}(hjnhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjmubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjnmodnameN classnameNjj)}j]j)}j media_typesb c.media_typeasbuh1hhjmhhhjmhMubj' )}(h h]h }(hj#nhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjmhhhjmhMubj8 )}(h media_typeh]j> )}(hj nh]h media_type}(hj5nhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj1nubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjmhhhjmhMubj)}(h(struct media_gobj *gobj)h]j)}(hstruct media_gobj *gobjh](j )}(hj h]hstruct}(hjPnhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjLnubj' )}(h h]h }(hj]nhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjLnubh)}(hhh]j> )}(h media_gobjh]h media_gobj}(hjnnhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjknubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpnmodnameN classnameNjj)}j]jn c.media_typeasbuh1hhjLnubj' )}(h h]h }(hjnhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjLnubj)}(hjh]h*}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjLnubj> )}(hgobjh]hgobj}(hjnhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjLnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjHnubah}(h]h ]h"]h$]h&]hhuh1jhjmhhhjmhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjmhhhjmhMubah}(h]jmah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjmhMhjmhhubjj )}(hhh]h)}(hreturn the media object typeh]hreturn the media object type}(hjnhhhNhNubah}(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&]uh1ji hjmhhhjmhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jnj jnj j j uh1j hhhj hNhNubj )}(he**Parameters** ``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j')}(hjnh]h Parameters}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjnubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjnubj )}(hhh]j )}(hS``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``struct media_gobj *gobj``h]j)}(hjoh]hstruct media_gobj *gobj}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj oubj)}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hj+ohhhNhNubh)}(h:c:type:`media_gobj`h]j)}(hj5oh]h media_gobj}(hj7ohhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj3oubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj+oubh graph object}(hj+ohhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjRohMhj(oubah}(h]h ]h"]h$]h&]uh1j hj oubeh}(h]h ]h"]h$]h&]uh1j hj'ohMhj oubah}(h]h ]h"]h$]h&]uh1j hjnubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_id (C function) c.media_idhNtauh1j hj hhhNhNubj )}(hhh](j )}(h&u32 media_id (struct media_gobj *gobj)h]j )}(h%u32 media_id(struct media_gobj *gobj)h](h)}(hhh]j> )}(hu32h]hu32}(hjohhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjoubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]j)}jmedia_idsb c.media_idasbuh1hhjohhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjohhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjohhhjohMubj8 )}(hmedia_idh]j> )}(hjoh]hmedia_id}(hjohhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjoubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjohhhjohMubj)}(h(struct media_gobj *gobj)h]j)}(hstruct media_gobj *gobjh](j )}(hj h]hstruct}(hjohhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjoubj' )}(h h]h }(hjohhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjoubh)}(hhh]j> )}(h media_gobjh]h media_gobj}(hjohhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjoubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjpmodnameN classnameNjj)}j]jo c.media_idasbuh1hhjoubj' )}(h h]h }(hjphhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjoubj)}(hjh]h*}(hj+phhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjoubj> )}(hgobjh]hgobj}(hj8phhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjoubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjoubah}(h]h ]h"]h$]h&]hhuh1jhjohhhjohMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjohhhjohMubah}(h]joah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjohMhjohhubjj )}(hhh]h)}(hreturn the media object IDh]hreturn the media object ID}(hjbphhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj_phhubah}(h]h ]h"]h$]h&]uh1ji hjohhhjohMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jzpj jzpj j j uh1j hhhj hNhNubj )}(he**Parameters** ``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j')}(hjph]h Parameters}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjpubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj~pubj )}(hhh]j )}(hS``struct media_gobj *gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``struct media_gobj *gobj``h]j)}(hjph]hstruct media_gobj *gobj}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjpubj)}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjphhhNhNubh)}(h:c:type:`media_gobj`h]j)}(hjph]h media_gobj}(hjphhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjpubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjpubh graph object}(hjphhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjphMhjpubah}(h]h ]h"]h$]h&]uh1j hjpubeh}(h]h ]h"]h$]h&]uh1j hjphMhjpubah}(h]h ]h"]h$]h&]uh1j hj~pubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj_gen_id (C function)c.media_gobj_gen_idhNtauh1j hj hhhNhNubj )}(hhh](j )}(h?u32 media_gobj_gen_id (enum media_gobj_type type, u64 local_id)h]j )}(h>u32 media_gobj_gen_id(enum media_gobj_type type, u64 local_id)h](h)}(hhh]j> )}(hu32h]hu32}(hj#qhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj qubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj%qmodnameN classnameNjj)}j]j)}jmedia_gobj_gen_idsbc.media_gobj_gen_idasbuh1hhjqhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjEqhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjqhhhjDqhMubj8 )}(hmedia_gobj_gen_idh]j> )}(hjAqh]hmedia_gobj_gen_id}(hjWqhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjSqubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjqhhhjDqhMubj)}(h)(enum media_gobj_type type, u64 local_id)h](j)}(henum media_gobj_type typeh](j )}(hjgIh]henum}(hjrqhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjnqubj' )}(h h]h }(hjqhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjnqubh)}(hhh]j> )}(hmedia_gobj_typeh]hmedia_gobj_type}(hjqhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j]j?qc.media_gobj_gen_idasbuh1hhjnqubj' )}(h h]h }(hjqhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjnqubj> )}(htypeh]htype}(hjqhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjnqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjqubj)}(h u64 local_idh](h)}(hhh]j> )}(hu64h]hu64}(hjqhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjqubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjqmodnameN classnameNjj)}j]j?qc.media_gobj_gen_idasbuh1hhjqubj' )}(h h]h }(hjqhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjqubj> )}(hlocal_idh]hlocal_id}(hjrhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjqubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjqubeh}(h]h ]h"]h$]h&]hhuh1jhjqhhhjDqhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjqhhhjDqhMubah}(h]jqah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjDqhMhjqhhubjj )}(hhh]h)}(h,encapsulates type and ID on at the object IDh]h,encapsulates type and ID on at the object ID}(hj.rhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj+rhhubah}(h]h ]h"]h$]h&]uh1ji hjqhhhjDqhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jFrj jFrj j 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')}(hjPrh]h Parameters}(hjRrhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjNrubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjJrubj )}(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)}(hjorh]henum media_gobj_type type}(hjqrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmrubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjirubj)}(hhh]h)}(h8object type as define at enum :c:type:`media_gobj_type`.h](hobject type as define at enum }(hjrhhhNhNubh)}(h:c:type:`media_gobj_type`h]j)}(hjrh]hmedia_gobj_type}(hjrhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_gobj_typeuh1hhjrhMhjrubh.}(hjrhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjrhMhjrubah}(h]h ]h"]h$]h&]uh1j hjirubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjfrubj )}(hO``u64 local_id`` next ID, from struct :c:type:`media_device.id `.h](j )}(h``u64 local_id``h]j)}(hjrh]h u64 local_id}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubj)}(hhh]h)}(h>next ID, from struct :c:type:`media_device.id `.h](hnext ID, from struct }(hjrhhhNhNubh)}(h(:c:type:`media_device.id `h]j)}(hjrh]hmedia_device.id}(hjrhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubh.}(hjrhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj shMhjrubah}(h]h ]h"]h$]h&]uh1j hjrubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjfrubeh}(h]h ]h"]h$]h&]uh1j hjJrubeh}(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}(hjHshhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjDshhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjWshhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjDshhhjVshMubj8 )}(h!is_media_entity_v4l2_video_deviceh]j> )}(h!is_media_entity_v4l2_video_deviceh]h!is_media_entity_v4l2_video_device}(hjishhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjesubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjDshhhjVshMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjshhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjsubj' )}(h h]h }(hjshhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjsubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjshhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]j)}jjkssb#c.is_media_entity_v4l2_video_deviceasbuh1hhjsubj' )}(h h]h }(hjshhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjsubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjsubj> )}(hentityh]hentity}(hjshhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjsubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj}subah}(h]h ]h"]h$]h&]hhuh1jhjDshhhjVshMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj@shhhjVshMubah}(h]j;sah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjVshMhj=shhubjj )}(hhh]h)}(h%Check if the entity is a video_deviceh]h%Check if the entity is a video_device}(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&]uh1ji hj=shhhjVshMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j tj j tj j 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')}(hj*th]h Parameters}(hj,thhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj(tubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj$tubj )}(hhh]j )}(h2``struct media_entity *entity`` pointer to entity h](j )}(h``struct media_entity *entity``h]j)}(hjIth]hstruct media_entity *entity}(hjKthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGtubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjCtubj)}(hhh]h)}(hpointer to entityh]hpointer to entity}(hjbthhhNhNubah}(h]h ]h"]h$]h&]uh1hhj^thMhj_tubah}(h]h ]h"]h$]h&]uh1j hjCtubeh}(h]h ]h"]h$]h&]uh1j hj^thMhj@tubah}(h]h ]h"]h$]h&]uh1j hj$tubh)}(h **Return**h]j')}(hjth]hReturn}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjtubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj$tubh)}(h``true`` if the entity is an instance of a video_device object and can safely be cast to a struct video_device using the container_of() macro, or ``false`` otherwise.h](j)}(h``true``h]htrue}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubh if the entity is an instance of a video_device object and can safely be cast to a struct video_device using the container_of() macro, or }(hjthhhNhNubj)}(h ``false``h]hfalse}(hjthhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubh otherwise.}(hjthhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj$tubeh}(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`)}(hjJsh]hbool}(hjthhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjthhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjthhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjthhhjthMubj8 )}(his_media_entity_v4l2_subdevh]j> )}(his_media_entity_v4l2_subdevh]his_media_entity_v4l2_subdev}(hj uhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjuubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjthhhjthMubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj%uhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj!uubj' )}(h h]h }(hj2uhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj!uubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjCuhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj@uubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjEumodnameN classnameNjj)}j]j)}jj usbc.is_media_entity_v4l2_subdevasbuh1hhj!uubj' )}(h h]h }(hjcuhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj!uubj)}(hjh]h*}(hjquhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!uubj> )}(hentityh]hentity}(hj~uhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj!uubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjuubah}(h]h ]h"]h$]h&]hhuh1jhjthhhjthMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjthhhjthMubah}(h]jtah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjthMhjthhubjj )}(hhh]h)}(h$Check if the entity is a v4l2_subdevh]h$Check if the entity is a v4l2_subdev}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuhhubah}(h]h ]h"]h$]h&]uh1ji hjthhhjthMubeh}(h]h ](jfunctioneh"]h$]h&]j jj juj juj j j uh1j hhhj hNhNubj )}(hX **Parameters** ``struct media_entity *entity`` pointer to entity **Return** ``true`` if the entity is an instance of a :c:type:`v4l2_subdev` object and can safely be cast to a struct :c:type:`v4l2_subdev` using the container_of() macro, or ``false`` otherwise.h](h)}(h**Parameters**h]j')}(hjuh]h Parameters}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjuubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuubj )}(hhh]j )}(h2``struct media_entity *entity`` pointer to entity h](j )}(h``struct media_entity *entity``h]j)}(hjuh]hstruct media_entity *entity}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuubj)}(hhh]h)}(hpointer to entityh]hpointer to entity}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhMhjuubah}(h]h ]h"]h$]h&]uh1j hjuubeh}(h]h ]h"]h$]h&]uh1j hjuhMhjuubah}(h]h ]h"]h$]h&]uh1j hjuubh)}(h **Return**h]j')}(hj$vh]hReturn}(hj&vhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj"vubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjuubh)}(h``true`` if the entity is an instance of a :c:type:`v4l2_subdev` object and can safely be cast to a struct :c:type:`v4l2_subdev` using the container_of() macro, or ``false`` otherwise.h](j)}(h``true``h]htrue}(hj>vhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:vubh# if the entity is an instance of a }(hj:vhhhNhNubh)}(h:c:type:`v4l2_subdev`h]j)}(hjRvh]h v4l2_subdev}(hjTvhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjPvubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj:vubh+ object and can safely be cast to a struct }(hj:vhhhNhNubh)}(h:c:type:`v4l2_subdev`h]j)}(hjvvh]h v4l2_subdev}(hjxvhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjtvubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj v4l2_subdevuh1hhjovhMhj:vubh$ using the container_of() macro, or }(hj:vhhhNhNubj)}(h ``false``h]hfalse}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj:vubh otherwise.}(hj:vhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjovhMhjuubeh}(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 ]jlah"]h$]h&]uh1j_hjvhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjvhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjvhhhjvhMubj8 )}(hmedia_entity_enum_inith]j> )}(hmedia_entity_enum_inith]hmedia_entity_enum_init}(hjvhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjvubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjvhhhjvhMubj)}(h?(struct media_entity_enum *ent_enum, struct media_device *mdev)h](j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hj whhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjwubj' )}(h h]h }(hjwhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjwubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hj*whhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj'wubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,wmodnameN classnameNjj)}j]j)}jjvsbc.media_entity_enum_initasbuh1hhjwubj' )}(h h]h }(hjJwhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjwubj)}(hjh]h*}(hjXwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjwubj> )}(hent_enumh]hent_enum}(hjewhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubj)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj~whhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjzwubj' )}(h h]h }(hjwhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjzwubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjwhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjwubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjwmodnameN classnameNjj)}j]jFwc.media_entity_enum_initasbuh1hhjzwubj' )}(h h]h }(hjwhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjzwubj)}(hjh]h*}(hjwhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzwubj> )}(hmdevh]hmdev}(hjwhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjzwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjwubeh}(h]h ]h"]h$]h&]hhuh1jhjvhhhjvhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjvhhhjvhMubah}(h]jvah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjvhMhjvhhubjj )}(hhh]h)}(h Initialise an entity enumerationh]h Initialise an entity enumeration}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjwhhubah}(h]h ]h"]h$]h&]uh1ji hjvhhhjvhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jxj jxj j 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')}(hj!xh]h Parameters}(hj#xhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjxubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjxubj )}(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)}(hj@xh]h"struct media_entity_enum *ent_enum}(hjBxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>xubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj:xubj)}(hhh]h)}(h$Entity enumeration to be initialisedh]h$Entity enumeration to be initialised}(hjYxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjUxhMhjVxubah}(h]h ]h"]h$]h&]uh1j hj:xubeh}(h]h ]h"]h$]h&]uh1j hjUxhMhj7xubj )}(h7``struct media_device *mdev`` The related media device h](j )}(h``struct media_device *mdev``h]j)}(hjyxh]hstruct media_device *mdev}(hj{xhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjwxubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjsxubj)}(hhh]h)}(hThe related media deviceh]hThe related media device}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjxhMhjxubah}(h]h ]h"]h$]h&]uh1j hjsxubeh}(h]h ]h"]h$]h&]uh1j hjxhMhj7xubeh}(h]h ]h"]h$]h&]uh1j hjxubh)}(h **Return**h]j')}(hjxh]hReturn}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjxubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjxubh)}(h)zero on success or a negative error code.h]h)zero on success or a negative error code.}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjxubeh}(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}(hjxhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjxhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjyhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjxhhhjyhMubj8 )}(hmedia_entity_enum_cleanuph]j> )}(hmedia_entity_enum_cleanuph]hmedia_entity_enum_cleanup}(hjyhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjyubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjxhhhjyhMubj)}(h$(struct media_entity_enum *ent_enum)h]j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hj6yhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj2yubj' )}(h h]h }(hjCyhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj2yubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hjTyhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjQyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVymodnameN classnameNjj)}j]j)}jjysbc.media_entity_enum_cleanupasbuh1hhj2yubj' )}(h h]h }(hjtyhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj2yubj)}(hjh]h*}(hjyhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2yubj> )}(hent_enumh]hent_enum}(hjyhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj2yubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj.yubah}(h]h ]h"]h$]h&]hhuh1jhjxhhhjyhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjxhhhjyhMubah}(h]jxah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjyhMhjxhhubjj )}(hhh]h)}(h*Release resources of an entity enumerationh]h*Release resources of an entity enumeration}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjyhhubah}(h]h ]h"]h$]h&]uh1ji hjxhhhjyhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jyj jyj j 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&]uh1j&hjyubah}(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)}(hjyh]h"struct media_entity_enum *ent_enum}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjyubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjyubj)}(hhh]h)}(h!Entity enumeration to be releasedh]h!Entity enumeration to be released}(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 hjyubeh}(h]h ]h"]h$]h&]uh1j hjzhMhjyubah}(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}(hjTzhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjPzhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjczhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjPzhhhjbzhMubj8 )}(hmedia_entity_enum_zeroh]j> )}(hmedia_entity_enum_zeroh]hmedia_entity_enum_zero}(hjuzhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjqzubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjPzhhhjbzhMubj)}(h$(struct media_entity_enum *ent_enum)h]j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjzhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjzubj' )}(h h]h }(hjzhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjzubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hjzhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjzubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjzmodnameN classnameNjj)}j]j)}jjwzsbc.media_entity_enum_zeroasbuh1hhjzubj' )}(h h]h }(hjzhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjzubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubj> )}(hent_enumh]hent_enum}(hjzhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjzubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjzubah}(h]h ]h"]h$]h&]hhuh1jhjPzhhhjbzhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjLzhhhjbzhMubah}(h]jGzah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjbzhMhjIzhhubjj )}(hhh]h)}(hClear the entire enumh]hClear the entire 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&]uh1ji hjIzhhhjbzhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j,{j j,{j j j uh1j hhhj hNhNubj )}(hY**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration to be clearedh](h)}(h**Parameters**h]j')}(hj6{h]h Parameters}(hj8{hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj4{ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hj0{ubj )}(hhh]j )}(hG``struct media_entity_enum *ent_enum`` Entity enumeration to be clearedh](j )}(h&``struct media_entity_enum *ent_enum``h]j)}(hjU{h]h"struct media_entity_enum *ent_enum}(hjW{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjS{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 hjO{ubj)}(hhh]h)}(h Entity enumeration to be clearedh]h Entity enumeration to be cleared}(hjn{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjk{ubah}(h]h ]h"]h$]h&]uh1j hjO{ubeh}(h]h ]h"]h$]h&]uh1j hjj{hM hjL{ubah}(h]h ]h"]h$]h&]uh1j hj0{ubeh}(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}(hj{hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj{hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hj{hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj{hhhj{hMubj8 )}(hmedia_entity_enum_seth]j> )}(hmedia_entity_enum_seth]hmedia_entity_enum_set}(hj{hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj{ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj{hhhj{hMubj)}(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 ]j3 ah"]h$]h&]uh1j& hj{ubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hj |hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj |modnameN classnameNjj)}j]j)}jj{sbc.media_entity_enum_setasbuh1hhj{ubj' )}(h h]h }(hj*|hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj{ubj)}(hjh]h*}(hj8|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj{ubj> )}(hent_enumh]hent_enum}(hjE|hhhNhNubah}(h]h ]jI 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 hjZ|ubj' )}(h h]h }(hjk|hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjZ|ubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj||hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjy|ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~|modnameN classnameNjj)}j]j&|c.media_entity_enum_setasbuh1hhjZ|ubj' )}(h h]h }(hj|hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjZ|ubj)}(hjh]h*}(hj|hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZ|ubj> )}(hentityh]hentity}(hj|hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjZ|ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj{ubeh}(h]h ]h"]h$]h&]hhuh1jhj{hhhj{hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj{hhhj{hMubah}(h]j{ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj{hMhj{hhubjj )}(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&]uh1ji hj{hhhj{hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j|j j|j j 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')}(hj}h]h Parameters}(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|ubj )}(hhh](j )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j)}(hj }h]h"struct media_entity_enum *ent_enum}(hj"}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}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}(hj9}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj5}hMhj6}ubah}(h]h ]h"]h$]h&]uh1j hj}ubeh}(h]h ]h"]h$]h&]uh1j hj5}hMhj}ubj )}(h3``struct media_entity *entity`` Entity to be markedh](j )}(h``struct media_entity *entity``h]j)}(hjY}h]hstruct media_entity *entity}(hj[}hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjW}ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjS}ubj)}(hhh]h)}(hEntity to be markedh]hEntity to be marked}(hjr}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjo}ubah}(h]h ]h"]h$]h&]uh1j hjS}ubeh}(h]h ]h"]h$]h&]uh1j hjn}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_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 ]jlah"]h$]h&]uh1j_hj}hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hj}hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj}hhhj}hMubj8 )}(hmedia_entity_enum_clearh]j> )}(hmedia_entity_enum_clearh]hmedia_entity_enum_clear}(hj}hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj}ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj}hhhj}hMubj)}(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 ]j3 ah"]h$]h&]uh1j& hj}ubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hj~hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j)}jj}sbc.media_entity_enum_clearasbuh1hhj}ubj' )}(h h]h }(hj.~hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj}ubj)}(hjh]h*}(hj<~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj> )}(hent_enumh]hent_enum}(hjI~hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj}ubj)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjb~hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj^~ubj' )}(h h]h }(hjo~hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj^~ubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj~hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj}~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]j*~c.media_entity_enum_clearasbuh1hhj^~ubj' )}(h h]h }(hj~hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj^~ubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^~ubj> )}(hentityh]hentity}(hj~hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj^~ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj}ubeh}(h]h ]h"]h$]h&]hhuh1jhj}hhhj}hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj}hhhj}hMubah}(h]j}ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj}hMhj}hhubjj )}(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&]uh1ji hj}hhhj}hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j~j j~j j 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')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM"hj~ubj )}(hhh](j )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j)}(hj$h]h"struct media_entity_enum *ent_enum}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"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 hjubj)}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hM hj:ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj9hM hjubj )}(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&]uh1jhj[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"hjWubj)}(hhh]h)}(hEntity to be unmarkedh]hEntity to be unmarked}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM!hjsubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhM"hjubeh}(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`)}(hjJsh]hbool}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM-ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM-ubj8 )}(hmedia_entity_enum_testh]j> )}(hmedia_entity_enum_testh]hmedia_entity_enum_test}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhM-ubj)}(hA(struct media_entity_enum *ent_enum, struct media_entity *entity)h](j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_entity_enum_testasbuh1hhjubj' )}(h h]h }(hj1hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj?hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hent_enumh]hent_enum}(hjLhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjehhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjaubj' )}(h h]h }(hjrhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjaubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j-c.media_entity_enum_testasbuh1hhjaubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjaubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjaubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjaubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM-ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhM-ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhM-hjhhubjj )}(hhh]h)}(h!Test whether the entity is markedh]h!Test whether the entity is marked}(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&]uh1ji hjhhhjhM-ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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')}(hjh]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM1hjubj )}(hhh](j )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j)}(hj'h]h"struct media_entity_enum *ent_enum}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%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&]uh1hhj<hM/hj=ubah}(h]h ]h"]h$]h&]uh1j hj!ubeh}(h]h ]h"]h$]h&]uh1j hj<hM/hjubj )}(h4``struct media_entity *entity`` Entity to be tested h](j )}(h``struct media_entity *entity``h]j)}(hj`h]hstruct media_entity *entity}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM0hjZubj)}(hhh]h)}(hEntity to be testedh]hEntity to be tested}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhM0hjvubah}(h]h ]h"]h$]h&]uh1j hjZubeh}(h]h ]h"]h$]h&]uh1j hjuhM0hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.hhM2hjubh)}(h*Returns ``true`` if the entity was marked.h](hReturns }(hjhhhNhNubj)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 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.hhM1hjubeh}(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`)}(hjJsh]hbool}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM>ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM>ubj8 )}(hmedia_entity_enum_test_and_seth]j> )}(hmedia_entity_enum_test_and_seth]hmedia_entity_enum_test_and_set}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhM>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}(hj.hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj*ubj' )}(h h]h }(hj;hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj*ubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hjLhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]j)}jjsb c.media_entity_enum_test_and_setasbuh1hhj*ubj' )}(h h]h }(hjlhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj*ubj)}(hjh]h*}(hjzhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj*ubj> )}(hent_enumh]hent_enum}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj*ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&ubj)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jh c.media_entity_enum_test_and_setasbuh1hhjubj' )}(h h]h }(hj܂hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj&ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM>ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhM>ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhM>hjhhubjj )}(hhh]h)}(h.Test whether the entity is marked, and mark ith]h.Test whether the entity is marked, and mark it}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM>hjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhM>ubeh}(h]h ](jfunctioneh"]h$]h&]j jj j9j j9j j 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')}(hjCh]h Parameters}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjAubah}(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)}(hjbh]h"struct media_entity_enum *ent_enum}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj`ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhj\ubj)}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjwhMAhjxubah}(h]h ]h"]h$]h&]uh1j hj\ubeh}(h]h ]h"]h$]h&]uh1j hjwhMAhjYubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMBhjubj)}(hhh]h)}(hEntity to be testedh]hEntity to be tested}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMBhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMBhjYubeh}(h]h ]h"]h$]h&]uh1j hj=ubh)}(h**Description**h]j')}(hjփh]h Description}(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.hhMDhj=ubh)}(hGReturns ``true`` if the entity was marked, and mark it before doing so.h](hReturns }(hjhhhNhNubj)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh7 if the entity was marked, and mark it before doing so.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChj=ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j $media_entity_enum_empty (C function)c.media_entity_enum_emptyhNtauh1j hj hhhNhNubj )}(hhh](j )}(hAbool media_entity_enum_empty (struct media_entity_enum *ent_enum)h]j )}(h@bool media_entity_enum_empty(struct media_entity_enum *ent_enum)h](j`)}(hjJsh]hbool}(hj-hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj)hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMQubj' )}(h h]h }(hj;hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj)hhhj:hMQubj8 )}(hmedia_entity_enum_emptyh]j> )}(hmedia_entity_enum_emptyh]hmedia_entity_enum_empty}(hjMhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjIubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj)hhhj:hMQubj)}(h$(struct media_entity_enum *ent_enum)h]j)}(h"struct media_entity_enum *ent_enumh](j )}(hj h]hstruct}(hjihhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjeubj' )}(h h]h }(hjvhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjeubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjOsbc.media_entity_enum_emptyasbuh1hhjeubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjeubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj> )}(hent_enumh]hent_enum}(hj„hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubah}(h]h ]h"]h$]h&]hhuh1jhj)hhhj:hMQubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj%hhhj:hMQubah}(h]j ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj:hMQhj"hhubjj )}(hhh]h)}(h%Test whether the entire enum is emptyh]h%Test whether the entire enum is empty}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMQhjhhubah}(h]h ]h"]h$]h&]uh1ji hj"hhhj:hMQubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hz**Parameters** ``struct media_entity_enum *ent_enum`` Entity enumeration **Return** ``true`` if the entity was empty.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]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.hhMUhjubj )}(hhh]j )}(h:``struct media_entity_enum *ent_enum`` Entity enumeration h](j )}(h&``struct media_entity_enum *ent_enum``h]j)}(hj-h]h"struct media_entity_enum *ent_enum}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMShj'ubj)}(hhh]h)}(hEntity enumerationh]hEntity enumeration}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhMShjCubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hjBhMShj$ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h **Return**h]j')}(hjhh]hReturn}(hjjhhhNhNubah}(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.hhMUhjubh)}(h!``true`` if the entity was empty.h](j)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj~ubh if the entity was empty.}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j )media_entity_enum_intersects (C function)c.media_entity_enum_intersectshNtauh1j hj hhhNhNubj )}(hhh](j )}(hlbool media_entity_enum_intersects (struct media_entity_enum *ent_enum1, struct media_entity_enum *ent_enum2)h]j )}(hkbool media_entity_enum_intersects(struct media_entity_enum *ent_enum1, struct media_entity_enum *ent_enum2)h](j`)}(hjJsh]hbool}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM]ubj' )}(h h]h }(hjɅhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjȅhM]ubj8 )}(hmedia_entity_enum_intersectsh]j> )}(hmedia_entity_enum_intersectsh]hmedia_entity_enum_intersects}(hjۅhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjׅubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjȅhM]ubj)}(hJ(struct media_entity_enum *ent_enum1, struct media_entity_enum *ent_enum2)h](j)}(h#struct media_entity_enum *ent_enum1h](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj݅sbc.media_entity_enum_intersectsasbuh1hhjubj' )}(h h]h }(hj5hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(h ent_enum1h]h ent_enum1}(hjPhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h#struct media_entity_enum *ent_enum2h](j )}(hj h]hstruct}(hjihhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjeubj' )}(h h]h }(hjvhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjeubh)}(hhh]j> )}(hmedia_entity_enumh]hmedia_entity_enum}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j1c.media_entity_enum_intersectsasbuh1hhjeubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjeubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj> )}(h ent_enum2h]h ent_enum2}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjȅhM]ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjȅhM]ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjȅhM]hjhhubjj )}(hhh]h)}(h Test whether two enums intersecth]h Test whether two enums intersect}(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&]uh1ji hjhhhjȅhM]ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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')}(hj h]h Parameters}(hjhhhNhNubah}(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.hhMahjubj )}(hhh](j )}(hA``struct media_entity_enum *ent_enum1`` First entity enumeration h](j )}(h'``struct media_entity_enum *ent_enum1``h]j)}(hj+h]h#struct media_entity_enum *ent_enum1}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj)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)}(hFirst entity enumerationh]hFirst entity enumeration}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj@hM_hjAubah}(h]h ]h"]h$]h&]uh1j hj%ubeh}(h]h ]h"]h$]h&]uh1j hj@hM_hj"ubj )}(hB``struct media_entity_enum *ent_enum2`` Second entity enumeration h](j )}(h'``struct media_entity_enum *ent_enum2``h]j)}(hjdh]h#struct media_entity_enum *ent_enum2}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(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)}(hSecond entity enumerationh]hSecond entity enumeration}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhM`hjzubah}(h]h ]h"]h$]h&]uh1j hj^ubeh}(h]h ]h"]h$]h&]uh1j hjyhM`hj"ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h **Return**h]j')}(hjh]hReturn}(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.hhMbhjubh)}(h_``true`` if entity enumerations **ent_enum1** and **ent_enum2** intersect, otherwise ``false``.h](j)}(h``true``h]htrue}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh if entity enumerations }(hjhhhNhNubj')}(h **ent_enum1**h]h ent_enum1}(hjˇhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh and }(hjhhhNhNubj')}(h **ent_enum2**h]h ent_enum2}(hj݇hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh intersect, otherwise }(hjhhhNhNubj)}(h ``false``h]hfalse}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMbhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gobj_to_entity (C macro)c.gobj_to_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(hgobj_to_entityh]j )}(hgobj_to_entityh]j8 )}(hgobj_to_entityh]j> )}(hj"h]hgobj_to_entity}(hj,hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj(ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj$hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMpubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj hhhj?hMpubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj?hMphjhhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjhhhj?hMpubeh}(h]h ](jmacroeh"]h$]h&]j jj jXj jXj j j uh1j hhhj hNhNubh)}(h``gobj_to_entity (gobj)``h]j)}(hj^h]hgobj_to_entity (gobj)}(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.hhMrhj hhubj)}(hUreturns the struct :c:type:`media_entity` pointer from the **gobj** contained on it. h]h)}(hTreturns the struct :c:type:`media_entity` pointer from the **gobj** contained on it.h](hreturns the struct }(hjxhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMphjxubh pointer from the }(hjxhhhNhNubj')}(h**gobj**h]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjxubh contained on it.}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMphjtubah}(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&]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.hhMthjˆ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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMvhjubj)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMshjubh graph object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'hMshjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMvhjވ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_pad (C macro) c.gobj_to_padhNtauh1j hj hhhNhNubj )}(hhh](j )}(h gobj_to_padh]j )}(h gobj_to_padh]j8 )}(h gobj_to_padh]j> )}(hj^h]h gobj_to_pad}(hjhhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjdubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj`hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj\hhhj{hMyubah}(h]jWah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj{hMyhjYhhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjYhhhj{hMyubeh}(h]h ](jmacroeh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubh)}(h``gobj_to_pad (gobj)``h]j)}(hjh]hgobj_to_pad (gobj)}(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 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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_paduh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyhjubh pointer from the }(hjhhhNhNubj')}(h**gobj**h]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh contained on it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjۉhMyhjubah}(h]h ]h"]h$]h&]uh1jhjۉhMyhj 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&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjubj )}(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&]uh1jhj!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)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hj<hhhNhNubh)}(h:c:type:`media_gobj`h]j)}(hjFh]h media_gobj}(hjHhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM|hj<ubh graph object}(hj<hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjchM|hj9ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj8hMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j gobj_to_link (C macro)c.gobj_to_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h gobj_to_linkh]j )}(h gobj_to_linkh]j8 )}(h gobj_to_linkh]j> )}(hjh]h gobj_to_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]j jj jЊj jЊj j j uh1j hhhj hNhNubh)}(h``gobj_to_link (gobj)``h]j)}(hj֊h]hgobj_to_link (gobj)}(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)}(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 }(hjhhhNhNubh)}(h:c:type:`media_link`h]j)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh pointer from the }(hjhhhNhNubj')}(h**gobj**h]hgobj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh contained on it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhj hhubj )}(hR**Parameters** ``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](h)}(h**Parameters**h]j')}(hj@h]h Parameters}(hjBhhhNhNubah}(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:ubj )}(hhh]j )}(h@``gobj`` Pointer to the struct :c:type:`media_gobj` graph objecth](j )}(h``gobj``h]j)}(hj_h]hgobj}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjYubj)}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjxhhhNhNubh)}(h:c:type:`media_gobj`h]j)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjxubh graph object}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjuubah}(h]h ]h"]h$]h&]uh1j hjYubeh}(h]h ]h"]h$]h&]uh1j hjthMhjVubah}(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]j8 )}(h gobj_to_intfh]j> )}(hj֋h]h gobj_to_intf}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj܋ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj؋hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjԋhhhjhMubah}(h]jϋah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjыhhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjыhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]j jj j j j j j j uh1j hhhj hNhNubh)}(h``gobj_to_intf (gobj)``h]j)}(hjh]hgobj_to_intf (gobj)}(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 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 }(hj,hhhNhNubh)}(h:c:type:`media_interface`h]j)}(hj6h]hmedia_interface}(hj8hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj4ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj,ubh pointer from the }(hj,hhhNhNubj')}(h**gobj**h]hgobj}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj,ubh contained on it.}(hj,hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjShMhj(ubah}(h]h ]h"]h$]h&]uh1jhjShMhj 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&]uh1j&hjzubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjvubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjhhhNhNubh)}(h:c:type:`media_gobj`h]j)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh graph object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjیhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjvubeh}(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]j8 )}(hintf_to_devnodeh]j> )}(hjh]hintf_to_devnode}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhj/hMubah}(h]j ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj/hMhj hhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hj hhhj/hMubeh}(h]h ](jmacroeh"]h$]h&]j jj jHj jHj j j uh1j hhhj hNhNubh)}(h``intf_to_devnode (intf)``h]j)}(hjNh]hintf_to_devnode (intf)}(hjPhhhNhNubah}(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.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 }(hjhhhhNhNubj')}(h**intf**h]hintf}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjhubh contained on it.}(hjhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjdubah}(h]h ]h"]h$]h&]uh1jhjhMhj hhubj )}(hI**Parameters** ``intf`` Pointer to struct :c:type:`media_intf_devnode`h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(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 )}(h7``intf`` Pointer to struct :c:type:`media_intf_devnode`h](j )}(h``intf``h]j)}(hjh]hintf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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 }(hj͍hhhNhNubh)}(h:c:type:`media_intf_devnode`h]j)}(hj׍h]hmedia_intf_devnode}(hjٍhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjՍubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_intf_devnodeuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj͍ubeh}(h]h ]h"]h$]h&]uh1hhjhMhjʍubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjɍhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 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}(hj-hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj)hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hj<hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj)hhhj;hMubj8 )}(hmedia_gobj_createh]j> )}(hmedia_gobj_createh]hmedia_gobj_create}(hjNhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjJubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj)hhhj;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}(hjjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjfubj' )}(h h]h }(hjwhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjfubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjPsbc.media_gobj_createasbuh1hhjfubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj> )}(hmdevh]hmdev}(hjÎhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(henum media_gobj_type typeh](j )}(hjgIh]henum}(hj܎hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj؎ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj؎ubh)}(hhh]j> )}(hmedia_gobj_typeh]hmedia_gobj_type}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_gobj_createasbuh1hhj؎ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj؎ubj> )}(htypeh]htype}(hj&hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj؎ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubj)}(hstruct media_gobj *gobjh](j )}(hj h]hstruct}(hj?hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj;ubj' )}(h h]h }(hjLhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj;ubh)}(hhh]j> )}(h media_gobjh]h media_gobj}(hj]hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_modnameN classnameNjj)}j]jc.media_gobj_createasbuh1hhj;ubj' )}(h h]h }(hj{hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj;ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubj> )}(hgobjh]hgobj}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjbubeh}(h]h ]h"]h$]h&]hhuh1jhj)hhhj;hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj%hhhj;hMubah}(h]j ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj;hMhj"hhubjj )}(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&]uh1ji hj"hhhj;hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j؏j j؏j j 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')}(hjh]h Parameters}(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܏ubj )}(hhh](j )}(h]``struct media_device *mdev`` Pointer to the :c:type:`media_device` that contains the object h](j )}(h``struct media_device *mdev``h]j)}(hjh]hstruct media_device *mdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h>Pointer to the :c:type:`media_device` that contains the objecth](hPointer to the }(hjhhhNhNubh)}(h:c:type:`media_device`h]j)}(hj$h]h media_device}(hj&hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj"ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhMhjubh that contains the object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h1``enum media_gobj_type type`` Type of the object h](j )}(h``enum media_gobj_type type``h]j)}(hj]h]henum media_gobj_type type}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[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)}(hType of the objecth]hType of the object}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjsubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h7Pointer to the struct :c:type:`media_gobj` graph objecth](hPointer to the struct }(hjhhhNhNubh)}(h:c:type:`media_gobj`h]j)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhjhMhjubh graph object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1j hj܏ubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]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܏ubh)}(hXVThis routine initializes the embedded struct :c:type:`media_gobj` inside a media graph object. It is called automatically if ``media_*_create`` function calls are used. However, if the object (entity, link, pad, interface) is embedded on some other object, this function should be called before registering the object at the media controller.h](h-This routine initializes the embedded struct }(hj hhhNhNubh)}(h:c:type:`media_gobj`h]j)}(hjh]h media_gobj}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubh< inside a media graph object. It is called automatically if }(hj hhhNhNubj)}(h``media_*_create``h]hmedia_*_create}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh 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.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj1hMhj܏ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_gobj_destroy (C function)c.media_gobj_destroyhNtauh1j hj hhhNhNubj )}(hhh](j )}(h1void media_gobj_destroy (struct media_gobj *gobj)h]j )}(h0void media_gobj_destroy(struct media_gobj *gobj)h](j`)}(hvoidh]hvoid}(hjnhhhNhNubah}(h]h ]jlah"]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}hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjjhhhj|hMubj8 )}(hmedia_gobj_destroyh]j> )}(hmedia_gobj_destroyh]hmedia_gobj_destroy}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjjhhhj|hMubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_gobjh]h media_gobj}(hjɑhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjƑubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjˑmodnameN classnameNjj)}j]j)}jjsbc.media_gobj_destroyasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hgobjh]hgobj}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjjhhhj|hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjfhhhj|hMubah}(h]jaah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj|hMhjchhubjj )}(hhh]h)}(h+Stop using a graph object on a media deviceh]h+Stop using a graph object on a media device}(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&]uh1ji hjchhhj|hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jFj jFj j 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')}(hjPh]h Parameters}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjJubj )}(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)}(hjoh]hstruct media_gobj *gobj}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjiubj)}(hhh]h)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_gobjuh1hhjhMhjubh graph object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjiubeh}(h]h ]h"]h$]h&]uh1j hjhMhjfubah}(h]h ]h"]h$]h&]uh1j hjJubh)}(h**Description**h]j')}(hj͒h]h Description}(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.hhMhjJubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjJubeh}(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}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhj hMubj8 )}(hmedia_entity_pads_inith]j> )}(hmedia_entity_pads_inith]hmedia_entity_pads_init}(hj3hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj/ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhj hMubj)}(hC(struct media_entity *entity, u16 num_pads, struct media_pad *pads)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjOhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjKubj' )}(h h]h }(hj\hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjKubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjmhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjomodnameN classnameNjj)}j]j)}jj5sbc.media_entity_pads_initasbuh1hhjKubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjKubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjKubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(h u16 num_padsh](h)}(hhh]j> )}(hu16h]hu16}(hjēhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjƓmodnameN classnameNjj)}j]jc.media_entity_pads_initasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hnum_padsh]hnum_pads}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubj)}(hstruct media_pad *padsh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hj'hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj$ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj)modnameN classnameNjj)}j]jc.media_entity_pads_initasbuh1hhjubj' )}(h h]h }(hjEhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hpadsh]hpads}(hj`hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjGubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj hhhj hMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj hMhjhhubjj )}(hhh]h)}(hInitialize the entity padsh]hInitialize the entity pads}(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&]uh1ji hjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(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}(hj͔hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjɔ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 where the pads belongh]hentity where the pads belong}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjŔubeh}(h]h ]h"]h$]h&]uh1j hjhMhj”ubj )}(h6``u16 num_pads`` total number of sink and source pads h](j )}(h``u16 num_pads``h]j)}(hjh]h u16 num_pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h$total number of sink and source padsh]h$total number of sink and source pads}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj”ubj )}(h7``struct media_pad *pads`` Array of **num_pads** pads. h](j )}(h``struct media_pad *pads``h]j)}(hj=h]hstruct media_pad *pads}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj7ubj)}(hhh]h)}(hArray of **num_pads** pads.h](h Array of }(hjVhhhNhNubj')}(h **num_pads**h]hnum_pads}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjVubh pads.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjRhMhjSubah}(h]h ]h"]h$]h&]uh1j hj7ubeh}(h]h ]h"]h$]h&]uh1j hjRhMhj”ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh structure.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjǕhMhjubh)}(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 }(hjҕhhhNhNubh)}(h/:c:type:`media_entity->num_pads `h]j)}(hjܕh]hmedia_entity->num_pads}(hjޕhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjڕubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjҕubh with 0 and }(hjҕhhhNhNubh)}(h+:c:type:`media_entity->pads `h]j)}(hjh]hmedia_entity->pads}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjhMhjҕubh with }(hjҕhhhNhNubj)}(h``NULL``h]hNULL}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjҕubh- or call this function that will do the same.}(hjҕhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubh)}(hAs the number of pads is known in advance, the pads array is not allocated dynamically but is managed by the entity driver. Most drivers will embed the pads array in a driver-specific structure, avoiding dynamic allocation.h]hAs the number of pads is known in advance, the pads array is not allocated dynamically but is managed by the entity driver. Most drivers will embed the pads array in a driver-specific structure, avoiding dynamic allocation.}(hj9hhhNhNubah}(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.}(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_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}(hjwhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjshhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjshhhjhMubj8 )}(hmedia_entity_cleanuph]j> )}(hmedia_entity_cleanuph]hmedia_entity_cleanup}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjshhhjhMubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjҖhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjϖubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjԖmodnameN classnameNjj)}j]j)}jjsbc.media_entity_cleanupasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjshhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjohhhjhMubah}(h]jjah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjlhhubjj )}(hhh]h)}(h(free resources associated with an entityh]h(free resources associated with an entity}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj4hhubah}(h]h ]h"]h$]h&]uh1ji hjlhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jOj jOj j 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')}(hjYh]h Parameters}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjWubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjSubj )}(hhh]j )}(h=``struct media_entity *entity`` entity where the pads belong h](j )}(h``struct media_entity *entity``h]j)}(hjxh]hstruct media_entity *entity}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjvubah}(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)}(hentity where the pads belongh]hentity where the pads belong}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjrubeh}(h]h ]h"]h$]h&]uh1j hjhMhjoubah}(h]h ]h"]h$]h&]uh1j hjSubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhjSubh)}(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.hhMhjSubh)}(hCalling media_entity_cleanup() on a media_entity whose memory has been zeroed but that has not been initialized with media_entity_pad_init() is valid and is a no-op.h]hCalling media_entity_cleanup() on a media_entity whose memory has been zeroed but that has not been initialized with media_entity_pad_init() is valid and is a no-op.}(hjؗhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjSubeh}(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}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(hmedia_get_pad_indexh]j> )}(hmedia_get_pad_indexh]hmedia_get_pad_index}(hj(hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj$ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(hP(struct media_entity *entity, u32 pad_type, enum media_pad_signal_type sig_type)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjDhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj@ubj' )}(h h]h }(hjQhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj@ubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjbhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj_ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjdmodnameN classnameNjj)}j]j)}jj*sbc.media_get_pad_indexasbuh1hhj@ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj@ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj@ubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj@ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubj)}(h u32 pad_typeh](h)}(hhh]j> )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j~c.media_get_pad_indexasbuh1hhjubj' )}(h h]h }(hjטhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hpad_typeh]hpad_type}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubj)}(h#enum media_pad_signal_type sig_typeh](j )}(hjgIh]henum}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_pad_signal_typeh]hmedia_pad_signal_type}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j~c.media_get_pad_indexasbuh1hhjubj' )}(h h]h }(hj:hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hsig_typeh]hsig_type}(hjHhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj<ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(hhh]h)}(h$retrieves a pad index from an entityh]h$retrieves a pad index from an entity}(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&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_entity *entity`` entity where the pads belong ``u32 pad_type`` the type of the pad, one of MEDIA_PAD_FL_* pad types ``enum media_pad_signal_type sig_type`` type of signal of the pad to be search **Description** This helper function finds the first pad index inside an entity that satisfies both **is_sink** and **sig_type** conditions. On success, return the pad number. If the pad was not found or the media entity is a NULL pointer, return -EINVAL.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(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&]uh1jhjubah}(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)}(hjh]h u32 pad_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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)}(h4the type of the pad, one of MEDIA_PAD_FL_* pad typesh]h4the type of the pad, one of MEDIA_PAD_FL_* pad types}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(hO``enum media_pad_signal_type sig_type`` type of signal of the pad to be search h](j )}(h'``enum media_pad_signal_type sig_type``h]j)}(hj%h]h#enum media_pad_signal_type sig_type}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#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&type of signal of the pad to be searchh]h&type of signal of the pad to be search}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMhj;ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj:hMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj`h]h Description}(hjbhhhNhNubah}(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.hhMhjubh)}(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 }(hjvhhhNhNubj')}(h **is_sink**h]his_sink}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjvubh and }(hjvhhhNhNubj')}(h **sig_type**h]hsig_type}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjvubh conditions.}(hjvhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(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.hhMhjubeh}(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}(hjؚhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjԚhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjԚhhhjhMubj8 )}(hmedia_create_pad_linkh]j> )}(hmedia_create_pad_linkh]hmedia_create_pad_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjԚhhhjhMubj)}(ha(struct media_entity *source, u16 source_pad, struct media_entity *sink, u16 sink_pad, u32 flags)h](j)}(hstruct media_entity *sourceh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj"hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj3hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj0ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj5modnameN classnameNjj)}j]j)}jjsbc.media_create_pad_linkasbuh1hhjubj' )}(h h]h }(hjShhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hsourceh]hsource}(hjnhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hu16 source_padh](h)}(hhh]j> )}(hu16h]hu16}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jOc.media_create_pad_linkasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(h source_padh]h source_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hstruct media_entity *sinkh](j )}(hj h]hstruct}(hjϛhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj˛ubj' )}(h h]h }(hjܛhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj˛ubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jOc.media_create_pad_linkasbuh1hhj˛ubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj˛ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj˛ubj> )}(hsinkh]hsink}(hj&hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj˛ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h u16 sink_padh](h)}(hhh]j> )}(hu16h]hu16}(hjBhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]jOc.media_create_pad_linkasbuh1hhj;ubj' )}(h h]h }(hj`hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj;ubj> )}(hsink_padh]hsink_pad}(hjnhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj;ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h u32 flagsh](h)}(hhh]j> )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jOc.media_create_pad_linkasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjԚhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjКhhhjhMubah}(h]j˚ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhj͚hhubjj )}(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.hhMhjݜhhubah}(h]h ]h"]h$]h&]uh1ji hj͚hhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX **Parameters** ``struct media_entity *source`` pointer to :c:type:`media_entity` of the source pad. ``u16 source_pad`` number of the source pad in the pads array ``struct media_entity *sink`` pointer to :c:type:`media_entity` of the sink pad. ``u16 sink_pad`` number of the sink pad in the pads array. ``u32 flags`` Link flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``) **Description** Valid values for flags: ``MEDIA_LNK_FL_ENABLED`` Indicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time. ``MEDIA_LNK_FL_IMMUTABLE`` Indicates that the link enabled state can't be modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set, since an immutable link is always enabled. .. note:: Before calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(hU``struct media_entity *source`` pointer to :c:type:`media_entity` of the source pad. h](j )}(h``struct media_entity *source``h]j)}(hj!h]hstruct media_entity *source}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h4pointer to :c:type:`media_entity` of the source pad.h](h pointer to }(hj:hhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjDh]h media_entity}(hjFhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj6hMhj:ubh of the source pad.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj6hMhj7ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj6hMhjubj )}(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}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj{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)}(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 hjwubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h2pointer to :c:type:`media_entity` of the sink pad.h](h pointer to }(hjϝhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjٝh]h media_entity}(hj۝hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjםubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj˝hMhjϝubh of the sink pad.}(hjϝhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj˝hMhj̝ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj˝hMhjubj )}(h;``u16 sink_pad`` number of the sink pad in the pads array. h](j )}(h``u16 sink_pad``h]j)}(hjh]h u16 sink_pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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 sink pad in the pads array.h]h)number of the sink pad in the pads array.}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj'hMhj(ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj'hMhjubj )}(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)}(hjKh]h u32 flags}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjIubah}(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)}(hiLink flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``)h](hLink flags, as defined in }(hjdhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjnh]hinclude/uapi/linux/media.h}(hjphhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjlubah}(h]h ]h"]h$]h&]refdocj refdomainjzreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjdubh ( seek for }(hjdhhhNhNubj)}(h``MEDIA_LNK_FL_*``h]hMEDIA_LNK_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjdubh)}(hjdhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjaubah}(h]h ]h"]h$]h&]uh1j hjEubeh}(h]h ]h"]h$]h&]uh1j hj`hMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhjubh)}(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.hhMhjubj )}(hhh](j )}(h``MEDIA_LNK_FL_ENABLED`` Indicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time. h](j )}(h``MEDIA_LNK_FL_ENABLED``h]j)}(hjh]hMEDIA_LNK_FL_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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)}(hIndicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time.h]hIndicates that the link is enabled and can be used to transfer media data. When two or more links target a sink pad, only one of them can be enabled at a time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(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}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#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)}(hIndicates that the link enabled state can't be modified at runtime. If ``MEDIA_LNK_FL_IMMUTABLE`` is set, then ``MEDIA_LNK_FL_ENABLED`` must also be set, since an immutable link is always enabled.h](hIIndicates that the link enabled state can’t be modified at runtime. If }(hj>hhhNhNubj)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubh is set, then }(hj>hhhNhNubj)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj>ubh= must also be set, since an immutable link is always enabled.}(hj>hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj;ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj:hMhjubeh}(h]h ]h"]h$]h&]uh1j hjubj)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.h]h)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.h]hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for both ends.}(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&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_create_pad_links (C function)c.media_create_pad_linkshNtauh1j hj hhhNhNubj )}(hhh](j )}(hint media_create_pad_links (const struct media_device *mdev, const u32 source_function, struct media_entity *source, const u16 source_pad, const u32 sink_function, struct media_entity *sink, const u16 sink_pad, u32 flags, const bool allow_both_undefined)h]j )}(hint media_create_pad_links(const struct media_device *mdev, const u32 source_function, struct media_entity *source, const u16 source_pad, const u32 sink_function, struct media_entity *sink, const u16 sink_pad, u32 flags, const bool allow_both_undefined)h](j`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjʟhMubj8 )}(hmedia_create_pad_linksh]j> )}(hmedia_create_pad_linksh]hmedia_create_pad_links}(hjݟhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjٟubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjʟhMubj)}(h(const struct media_device *mdev, const u32 source_function, struct media_entity *source, const u16 source_pad, const u32 sink_function, struct media_entity *sink, const u16 sink_pad, u32 flags, const bool allow_both_undefined)h](j)}(hconst struct media_device *mdevh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj!hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj2hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj/ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj4modnameN classnameNjj)}j]j)}jjߟsbc.media_create_pad_linksasbuh1hhjubj' )}(h h]h }(hjRhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj`hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hmdevh]hmdev}(hjmhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u32 source_functionh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jNc.media_create_pad_linksasbuh1hhjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hsource_functionh]hsource_function}(hjРhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *sourceh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jNc.media_create_pad_linksasbuh1hhjubj' )}(h h]h }(hj%hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj3hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hsourceh]hsource}(hj@hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u16 source_padh](j )}(hj/h]hconst}(hjYhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjUubj' )}(h h]h }(hjfhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjUubh)}(hhh]j> )}(hu16h]hu16}(hjwhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjtubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjymodnameN classnameNjj)}j]jNc.media_create_pad_linksasbuh1hhjUubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjUubj> )}(h source_padh]h source_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjUubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u32 sink_functionh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjɡhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hu32h]hu32}(hjڡhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjסubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjܡmodnameN classnameNjj)}j]jNc.media_create_pad_linksasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(h sink_functionh]h sink_function}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *sinkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj,hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj=hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]jNc.media_create_pad_linksasbuh1hhjubj' )}(h h]h }(hj[hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjihhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hsinkh]hsink}(hjvhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst u16 sink_padh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hu16h]hu16}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jNc.media_create_pad_linksasbuh1hhjubj' )}(h h]h }(hjˢhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hsink_padh]hsink_pad}(hj٢hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 flagsh](h)}(hhh]j> )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jNc.media_create_pad_linksasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hflagsh]hflags}(hj!hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hconst bool allow_both_undefinedh](j )}(hj/h]hconst}(hj:hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj6ubj' )}(h h]h }(hjGhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj6ubj`)}(hjJsh]hbool}(hjUhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj6ubj' )}(h h]h }(hjbhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj6ubj> )}(hallow_both_undefinedh]hallow_both_undefined}(hjphhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj6ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjʟhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjʟhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjʟhMhjhhubjj )}(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&]uh1ji hjhhhjʟhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(hY``const struct media_device *mdev`` Pointer to the media_device that contains the object h](j )}(h#``const struct media_device *mdev``h]j)}(hjۣh]hconst struct media_device *mdev}(hjݣhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj٣ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjգubj)}(hhh]h)}(h4Pointer to the media_device that contains the objecth]h4Pointer to the media_device that contains the object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjգubeh}(h]h ]h"]h$]h&]uh1j hjhMhjң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)}(hjh]hconst u32 source_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(hAFunction of the source entities. Used only if **source** is NULL.h](h.Function of the source entities. Used only if }(hj-hhhNhNubj')}(h **source**h]hsource}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj-ubh is NULL.}(hj-hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj*ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj)hMhjң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)}(hj`h]hstruct media_entity *source}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjZubj)}(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 }(hjyhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjyubhG of the source pad. If NULL, it will use all entities that matches the }(hjyhhhNhNubj')}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjyubh.}(hjyhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjvubah}(h]h ]h"]h$]h&]uh1j hjZubeh}(h]h ]h"]h$]h&]uh1j hjuhMhjң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&]uh1jhjͤ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 hjhMhjң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)}(hjh]hconst u32 sink_function}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h=Function of the sink entities. Used only if **sink** is NULL.h](h,Function of the sink entities. Used only if }(hj!hhhNhNubj')}(h**sink**h]hsink}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj!ubh is NULL.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjң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)}(hjSh]hstruct media_entity *sink}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(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)}(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 }(hjlhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjvh]h media_entity}(hjxhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjlubhE of the sink pad. If NULL, it will use all entities that matches the }(hjlhhhNhNubj')}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjlubh.}(hjlhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjiubah}(h]h ]h"]h$]h&]uh1j hjMubeh}(h]h ]h"]h$]h&]uh1j hjhhMhjңubj )}(hA``const u16 sink_pad`` number of the sink pad in the pads array. h](j )}(h``const u16 sink_pad``h]j)}(hj¥h]hconst u16 sink_pad}(hjĥhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubj)}(hhh]h)}(h)number of the sink pad in the pads array.h]h)number of the sink pad in the pads array.}(hjۥhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjץhM hjإubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjץhM hjңubj )}(hD``u32 flags`` Link flags, as defined in include/uapi/linux/media.h. h](j )}(h ``u32 flags``h]j)}(hjh]h u32 flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM!hjubj)}(hhh]h)}(h5Link flags, as defined in include/uapi/linux/media.h.h]h5Link flags, as defined in include/uapi/linux/media.h.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM!hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM!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)}(hj4h]hconst bool allow_both_undefined}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj2ubah}(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)}(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 }(hjMhhhNhNubj)}(h``true``h]htrue}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubh , then both }(hjMhhhNhNubj')}(h **source**h]hsource}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubh and }(hjMhhhNhNubj')}(h**sink**h]hsink}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubhX can be NULL. In such case, it will create a crossbar between all entities that matches }(hjMhhhNhNubj')}(h**source_function**h]hsource_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubh to all entities that matches }(hjMhhhNhNubj')}(h**sink_function**h]h sink_function}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubh. If }(hjMhhhNhNubj)}(h ``false``h]hfalse}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubh7, it will return 0 and won’t create any link if both }(hjMhhhNhNubj')}(h **source**h]hsource}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubh and }(hjMhhhNhNubj')}(h**sink**h]hsink}(hjӦhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjMubh are NULL.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM"hjJubah}(h]h ]h"]h$]h&]uh1j hj.ubeh}(h]h ]h"]h$]h&]uh1j hjIhM&hjңubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM(hjubh)}(hValid values for flags:h]hValid values for flags:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM'hjubj )}(hhh](j )}(hA ``MEDIA_LNK_FL_ENABLED`` flag indicates that the link is enabled and can be used to transfer media data. If multiple links are created and this flag is passed as an argument, only the first created link will have this flag. h](j )}(hMA ``MEDIA_LNK_FL_ENABLED`` flag indicates that the link is enabled and can beh](hA }(hj,hhhNhNubj)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj,ubh3 flag indicates that the link is enabled and can be}(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.hhM,hj(ubj)}(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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM*hjMubah}(h]h ]h"]h$]h&]uh1j hj(ubeh}(h]h ]h"]h$]h&]uh1j hjLhM,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 }(hjohhhNhNubj)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubh3 flag indicates that the link enabled state can’t}(hjohhhNhNubeh}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM1hjkubj)}(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&]uh1jhjubh is set, then }(hjhhhNhNubj)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh< must also be set since an immutable link is always enabled.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hjubah}(h]h ]h"]h$]h&]uh1j hjkubeh}(h]h ]h"]h$]h&]uh1j hjhM1hj%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.}(hjاhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM3hjubj)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for the entities to be linked.h]h)}(hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for the entities to be linked.h]hBefore calling this function, media_entity_pads_init() and media_device_register_entity() should be called previously for the entities to be linked.}(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&]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 )}(h )}(hmedia_entity_remove_linksh]hmedia_entity_remove_links}(hjAhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj=ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhj.hMLubj)}(h(struct media_entity *entity)h]j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj]hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjYubj' )}(h h]h }(hjjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjYubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj{hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjxubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj}modnameN classnameNjj)}j]j)}jjCsbc.media_entity_remove_linksasbuh1hhjYubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjYubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjYubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjYubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjUubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj.hMLubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhj.hMLubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj.hMLhjhhubjj )}(hhh]h)}(h*remove all links associated with an entityh]h*remove all links associated with 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.hhMLhjݨhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhj.hMLubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(h**Parameters** ``struct media_entity *entity`` pointer to :c:type:`media_entity` **Description** .. note:: This is called automatically when an entity is unregistered via media_device_register_entity().h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(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.hhMPhjubj )}(hhh]j )}(hB``struct media_entity *entity`` pointer to :c:type:`media_entity` h](j )}(h``struct media_entity *entity``h]j)}(hj!h]hstruct media_entity *entity}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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)}(h!pointer to :c:type:`media_entity`h](h pointer to }(hj:hhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjDh]h media_entity}(hjFhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjBubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhj6hMNhj:ubeh}(h]h ]h"]h$]h&]uh1hhj6hMNhj7ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj6hMNhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj{h]h Description}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjyubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMPhjubj)}(h_This is called automatically when an entity is unregistered via media_device_register_entity().h]h)}(h_This is called automatically when an entity is unregistered via media_device_register_entity().h]h_This is called automatically when an entity is unregistered via media_device_register_entity().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMQhjubah}(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_setup_link (C function)c.__media_entity_setup_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(hBint __media_entity_setup_link (struct media_link *link, u32 flags)h]j )}(hAint __media_entity_setup_link(struct media_link *link, u32 flags)h](j`)}(hinth]hint}(hjʩhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjƩhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMXubj' )}(h h]h }(hj٩hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjƩhhhjةhMXubj8 )}(h__media_entity_setup_linkh]j> )}(h__media_entity_setup_linkh]h__media_entity_setup_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjƩhhhjةhMXubj)}(h$(struct media_link *link, u32 flags)h](j)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_linkh]h media_link}(hj%hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj'modnameN classnameNjj)}j]j)}jjsbc.__media_entity_setup_linkasbuh1hhjubj' )}(h h]h }(hjEhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjShhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hlinkh]hlink}(hj`hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 flagsh](h)}(hhh]j> )}(hu32h]hu32}(hj|hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjyubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj~modnameN classnameNjj)}j]jAc.__media_entity_setup_linkasbuh1hhjuubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjuubj> )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjuubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjƩhhhjةhMXubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj©hhhjةhMXubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjةhMXhjhhubjj )}(hhh]h)}(h&Configure a media link without lockingh]h&Configure a media link without locking}(hjҪhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMXhjϪhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjةhMXubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_link *link`` The link being configured ``u32 flags`` Link configuration flags **Description** The bulk of link setup is handled by the two entities connected through the link. This function notifies both entities of the link configuration change. If the link is immutable or if the current and new configuration are identical, return immediately. The user is expected to hold link->source->parent->mutex. If not, media_entity_setup_link() should be used instead.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM\hjubj )}(hhh](j )}(h6``struct media_link *link`` The link being configured h](j )}(h``struct media_link *link``h]j)}(hjh]hstruct media_link *link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhj ubj)}(hhh]h)}(hThe link being configuredh]hThe link being configured}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hMYhj)ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj(hMYhj ubj )}(h'``u32 flags`` Link configuration flags h](j )}(h ``u32 flags``h]j)}(hjLh]h u32 flags}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(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)}(hLink configuration flagsh]hLink configuration flags}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjahMZhjbubah}(h]h ]h"]h$]h&]uh1j hjFubeh}(h]h ]h"]h$]h&]uh1j hjahMZhj ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM\hjubh)}(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[hjubh)}(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^hjubh)}(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.hhMahjubeh}(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}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMhubj8 )}(hmedia_entity_setup_linkh]j> )}(hmedia_entity_setup_linkh]hmedia_entity_setup_link}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMhubj)}(h$(struct media_link *link, u32 flags)h](j)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hj'hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj#ubj' )}(h h]h }(hj4hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj#ubh)}(hhh]j> )}(h media_linkh]h media_link}(hjEhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjBubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjGmodnameN classnameNjj)}j]j)}jj sbc.media_entity_setup_linkasbuh1hhj#ubj' )}(h h]h }(hjehhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj#ubj)}(hjh]h*}(hjshhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj> )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 flagsh](h)}(hhh]j> )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jac.media_entity_setup_linkasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hflagsh]hflags}(hjȬhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMhubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMhubah}(h]jݫah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhhj߫hhubjj )}(hhh]h)}(h,changes the link flags properties in runtimeh]h,changes the link flags properties in runtime}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhhjhhubah}(h]h ]h"]h$]h&]uh1ji hj߫hhhjhMhubeh}(h]h ](jfunctioneh"]h$]h&]j jj j j j j j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_link *link`` pointer to :c:type:`media_link` ``u32 flags`` the requested new link flags **Description** The only configurable property is the ``MEDIA_LNK_FL_ENABLED`` link flag to enable/disable a link. Links marked with the ``MEDIA_LNK_FL_IMMUTABLE`` link flag can not be enabled or disabled. When a link is enabled or disabled, the media framework calls the link_setup operation for the two entities at the source and sink of the link, in that order. If the second link_setup call fails, another link_setup call is made on the first entity to restore the original link flags. Media device drivers can be notified of link setup operations by setting the :c:type:`media_device.link_notify ` pointer to a callback function. If provided, the notification callback will be called before enabling and after disabling links. Entity drivers must implement the link_setup operation if any of their links is non-immutable. The operation must either configure the hardware or store the configuration information to be applied later. Link configuration must not have any side effect on other links. If an enabled link at a sink pad prevents another link at the same pad from being enabled, the link_setup operation must return ``-EBUSY`` and can't implicitly disable the first enabled link. .. note:: The valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMlhjubj )}(hhh](j )}(h<``struct media_link *link`` pointer to :c:type:`media_link` h](j )}(h``struct media_link *link``h]j)}(hj3h]hstruct media_link *link}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjhj-ubj)}(hhh]h)}(hpointer to :c:type:`media_link`h](h pointer to }(hjLhhhNhNubh)}(h:c:type:`media_link`h]j)}(hjVh]h media_link}(hjXhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjTubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjHhMjhjLubeh}(h]h ]h"]h$]h&]uh1hhjHhMjhjIubah}(h]h ]h"]h$]h&]uh1j hj-ubeh}(h]h ]h"]h$]h&]uh1j hjHhMjhj*ubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMkhjubj)}(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 hjubeh}(h]h ]h"]h$]h&]uh1j hjhMkhj*ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjƭh]h Description}(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.hhMmhjubh)}(hThe only configurable property is the ``MEDIA_LNK_FL_ENABLED`` link flag to enable/disable a link. Links marked with the ``MEDIA_LNK_FL_IMMUTABLE`` link flag can not be enabled or disabled.h](h&The only configurable property is the }(hjܭhhhNhNubj)}(h``MEDIA_LNK_FL_ENABLED``h]hMEDIA_LNK_FL_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjܭubh; link flag to enable/disable a link. Links marked with the }(hjܭhhhNhNubj)}(h``MEDIA_LNK_FL_IMMUTABLE``h]hMEDIA_LNK_FL_IMMUTABLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjܭubh* link flag can not be enabled or disabled.}(hjܭhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMlhjubh)}(hXWhen a link is enabled or disabled, the media framework calls the link_setup operation for the two entities at the source and sink of the link, in that order. If the second link_setup call fails, another link_setup call is made on the first entity to restore the original link flags.h]hXWhen a link is enabled or disabled, the media framework calls the link_setup operation for the two entities at the source and sink of the link, in that order. If the second link_setup call fails, another link_setup call is made on the first entity to restore the original link flags.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMphjubh)}(hMedia device drivers can be notified of link setup operations by setting the :c:type:`media_device.link_notify ` pointer to a callback function. If provided, the notification callback will be called before enabling and after disabling links.h](hMMedia device drivers can be notified of link setup operations by setting the }(hjhhhNhNubh)}(h1:c:type:`media_device.link_notify `h]j)}(hj(h]hmedia_device.link_notify}(hj*hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj&ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMvhjubh pointer to a callback function. If provided, the notification callback will be called before enabling and after disabling links.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjEhMvhjubh)}(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.}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM{hjubh)}(hXLink configuration must not have any side effect on other links. If an enabled link at a sink pad prevents another link at the same pad from being enabled, the link_setup operation must return ``-EBUSY`` and can't implicitly disable the first enabled link.h](hLink configuration must not have any side effect on other links. If an enabled link at a sink pad prevents another link at the same pad from being enabled, the link_setup operation must return }(hj_hhhNhNubj)}(h ``-EBUSY``h]h-EBUSY}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhj_ubh7 and can’t implicitly disable the first enabled link.}(hj_hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hThe valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.h]h)}(hThe valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.h]hThe valid values of the flags for the link is the same as described on media_create_pad_link(), for pad to pad links or the same as described on media_create_intf_link(), for interface to entity links.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] 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 ]j3 ah"]h$]h&]uh1j& hjhhhjƮhMubh)}(hhh]j> )}(h media_linkh]h media_link}(hjخhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjծubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjڮmodnameN classnameNjj)}j]j)}jmedia_entity_find_linksbc.media_entity_find_linkasbuh1hhjhhhjƮhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjƮhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjƮhMubj8 )}(hmedia_entity_find_linkh]j> )}(hjh]hmedia_entity_find_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjƮhMubj)}(h2(struct media_pad *source, struct media_pad *sink)h](j)}(hstruct media_pad *sourceh](j )}(hj h]hstruct}(hj3hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj/ubj' )}(h h]h }(hj@hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj/ubh)}(hhh]j> )}(h media_padh]h media_pad}(hjQhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]jc.media_entity_find_linkasbuh1hhj/ubj' )}(h h]h }(hjohhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj/ubj)}(hjh]h*}(hj}hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj> )}(hsourceh]hsource}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubj)}(hstruct media_pad *sinkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjïmodnameN classnameNjj)}j]jc.media_entity_find_linkasbuh1hhjubj' )}(h h]h }(hj߯hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hsinkh]hsink}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjƮhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjƮhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjƮhMhjhhubjj )}(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.hhMhj!hhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjƮhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j<j j<j j 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')}(hjFh]h Parameters}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjDubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj@ubj )}(hhh](j )}(h(``struct media_pad *source`` Source pad h](j )}(h``struct media_pad *source``h]j)}(hjeh]hstruct media_pad *source}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubah}(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 Source padh]h Source pad}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjzhMhj{ubah}(h]h ]h"]h$]h&]uh1j hj_ubeh}(h]h ]h"]h$]h&]uh1j hjzhMhj\ubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(hSink padh]hSink pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj\ubeh}(h]h ]h"]h$]h&]uh1j hj@ubh)}(h **Return**h]j')}(hjٰh]hReturn}(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@ubh)}(h`returns a pointer to the link between the two entities. If no such link exists, return ``NULL``.h](hWreturns a pointer to the link between the two entities. If no such link exists, return }(hjhhhNhNubj)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj@ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 'media_pad_remote_pad_first (C function)c.media_pad_remote_pad_firsthNtauh1j hj hhhNhNubj )}(hhh](j )}(hKstruct media_pad * media_pad_remote_pad_first (const struct media_pad *pad)h]j )}(hIstruct media_pad *media_pad_remote_pad_first(const struct media_pad *pad)h](j )}(hj h]hstruct}(hj0hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj,hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hj>hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj,hhhj=hMubh)}(hhh]j> )}(h media_padh]h media_pad}(hjOhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjLubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjQmodnameN classnameNjj)}j]j)}jmedia_pad_remote_pad_firstsbc.media_pad_remote_pad_firstasbuh1hhj,hhhj=hMubj' )}(h h]h }(hjphhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj,hhhj=hMubj)}(hjh]h*}(hj~hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj,hhhj=hMubj8 )}(hmedia_pad_remote_pad_firsth]j> )}(hjmh]hmedia_pad_remote_pad_first}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj,hhhj=hMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jkc.media_pad_remote_pad_firstasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj,hhhj=hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj(hhhj=hMubah}(h]j#ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj=hMhj%hhubjj )}(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}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjChhubah}(h]h ]h"]h$]h&]uh1ji hj%hhhj=hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j^j j^j j 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')}(hjhh]h Parameters}(hjjhhhNhNubah}(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.hhMhjbubj )}(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&]uh1jhjubah}(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 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 hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj~ubah}(h]h ]h"]h$]h&]uh1j hjbubh)}(h**Description**h]j')}(hj²h]h Description}(hjIJhhhNhNubah}(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.hhMhjbubh)}(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.}(hjزhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjbubh)}(h **Return**h]j')}(hjh]hReturn}(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.hhMhjbubh)}(h~returns a pointer to the pad at the remote end of the first found enabled link, or ``NULL`` if no enabled link has been found.h](hSreturns a pointer to the pad at the remote end of the first found enabled link, or }(hjhhhNhNubj)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh# if no enabled link has been found.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjbubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_pad_remote_pad_unique (C function)c.media_pad_remote_pad_uniquehNtauh1j hj hhhNhNubj )}(hhh](j )}(hLstruct media_pad * media_pad_remote_pad_unique (const struct media_pad *pad)h]j )}(hJstruct media_pad *media_pad_remote_pad_unique(const struct media_pad *pad)h](j )}(hj h]hstruct}(hj@hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj<hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjNhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj<hhhjMhMubh)}(hhh]j> )}(h media_padh]h media_pad}(hj_hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j)}jmedia_pad_remote_pad_uniquesbc.media_pad_remote_pad_uniqueasbuh1hhj<hhhjMhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj<hhhjMhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj<hhhjMhMubj8 )}(hmedia_pad_remote_pad_uniqueh]j> )}(hj}h]hmedia_pad_remote_pad_unique}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj<hhhjMhMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjdzhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj )}(hj h]hstruct}(hjճhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j{c.media_pad_remote_pad_uniqueasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hpadh]hpad}(hj,hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj<hhhjMhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj8hhhjMhMubah}(h]j3ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjMhMhj5hhubjj )}(hhh]h)}(h$Find a remote pad connected to a padh]h$Find a remote pad connected to a pad}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjShhubah}(h]h ]h"]h$]h&]uh1ji hj5hhhjMhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jnj jnj j 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')}(hjxh]h Parameters}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjvubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubj )}(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&]uh1jhjubah}(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 hjrubh)}(h**Description**h]j')}(hjҴh]h Description}(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.hhMhjrubh)}(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 }(hjhhhNhNubj')}(h**pad**h]hpad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubhZ through an enabled link. If multiple (or no) remote pads are found, 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.hhMhjrubh)}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubj )}(hhh](j)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(hjh]h&-ENOTUNIQ - Multiple links are enabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h"-ENOLINK - No connected pad found h]h)}(h!-ENOLINK - No connected pad foundh]h!-ENOLINK - No connected pad found}(hj7hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj3ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]jIjuh1j hj,hMhjrubh)}(h **Return**h]j')}(hjTh]hReturn}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjRubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubh)}(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:}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjrubeh}(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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_entity_remote_pad_uniquesb c.media_entity_remote_pad_uniqueasbuh1hhjhhhjhMubj' )}(h h]h }(hjٵhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj8 )}(hmedia_entity_remote_pad_uniqueh]j> )}(hjֵh]hmedia_entity_remote_pad_unique}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(h6(const struct media_entity *entity, unsigned int type)h](j)}(h!const struct media_entity *entityh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjLhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjIubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjNmodnameN classnameNjj)}j]jԵ c.media_entity_remote_pad_uniqueasbuh1hhjubj' )}(h h]h }(hjjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjxhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(hunsigned int typeh](j`)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj' )}(h h]h }(hjȶhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(htypeh]htype}(hjֶhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(hhh]h)}(h(Find a remote pad connected to an entityh]h(Find a remote pad connected to an entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]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.hhMhjubj )}(hhh](j )}(h1``const struct media_entity *entity`` The entity h](j )}(h%``const struct media_entity *entity``h]j)}(hjAh]h!const struct media_entity *entity}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1jhj?ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj;ubj)}(hhh]h)}(h The entityh]h The entity}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVhMhjWubah}(h]h ]h"]h$]h&]uh1j hj;ubeh}(h]h ]h"]h$]h&]uh1j hjVhMhj8ubj )}(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)}(hjzh]hunsigned int type}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(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)}(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 hjtubeh}(h]h ]h"]h$]h&]uh1j hjhMhj8ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhjubh)}(hSearch for and return a remote pad of **type** connected to **entity** through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned.h](h&Search for and return a remote pad of }(hj˷hhhNhNubj')}(h**type**h]htype}(hjӷhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj˷ubh connected to }(hj˷hhhNhNubj')}(h **entity**h]hentity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj˷ubhe through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned.}(hj˷hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hThe uniqueness constraint makes this helper function suitable for entities that support a single active source or sink at a time.h]hThe uniqueness constraint makes this helper function suitable for entities that support a single active source or sink at a time.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(hjh]h&-ENOTUNIQ - Multiple links are enabled}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhj ubj)}(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&]uh1jhj ubeh}(h]h ]h"]h$]h&]jIjuh1j hj!hMhjubh)}(h **Return**h]j')}(hjIh]hReturn}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjGubah}(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:}(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 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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}j%media_entity_remote_source_pad_uniquesb'c.media_entity_remote_source_pad_uniqueasbuh1hhjhhhjhMubj' )}(h h]h }(hjθhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj)}(hjh]h*}(hjܸhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj8 )}(h%media_entity_remote_source_pad_uniqueh]j> )}(hj˸h]h%media_entity_remote_source_pad_unique}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(h#(const struct media_entity *entity)h]j)}(h!const struct media_entity *entityh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj )}(hj h]hstruct}(hj#hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj0hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjAhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj>ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjCmodnameN classnameNjj)}j]jɸ'c.media_entity_remote_source_pad_uniqueasbuh1hhjubj' )}(h h]h }(hj_hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjmhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hjzhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(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&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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')}(hjƹh]h Parameters}(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.hhMhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj߹ubj)}(hhh]h)}(h The entityh]h The entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hj߹ubeh}(h]h ]h"]h$]h&]uh1j hjhMhjܹubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.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 }(hj6hhhNhNubj')}(h **entity**h]hentity}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj6ubhe through an enabled link. If multiple (or no) remote pads match these criteria, an error is returned.}(hj6hhhNhNubeh}(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.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j)}(h&-ENOTUNIQ - Multiple links are enabledh]h)}(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&]uh1jhjfubj)}(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&]uh1jhjfubeh}(h]h ]h"]h$]h&]jIjuh1j hjzhMhjubh)}(h **Return**h]j')}(hjh]hReturn}(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.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`)}(hjJsh]hbool}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(hmedia_pad_is_streamingh]j> )}(hmedia_pad_is_streamingh]hmedia_pad_is_streaming}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(h(const struct media_pad *pad)h]j)}(hconst struct media_pad *padh](j )}(hj/h]hconst}(hj#hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj0hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj )}(hj h]hstruct}(hj>hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjKhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hj\hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j)}jj sbc.media_pad_is_streamingasbuh1hhjubj' )}(h h]h }(hj|hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjߺhhhjhMubah}(h]jںah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjܺhhubjj )}(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&]uh1ji hjܺhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jٻj jٻj j 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')}(hjh]h Parameters}(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ݻ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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(hThe padh]hThe pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjݻubh)}(h **Return**h]j')}(hj=h]hReturn}(hj?hhhNhNubah}(h]h ]h"]h$]h&]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ݻubh)}(hhTrue if the pad is part of a pipeline started with the media_pipeline_start() function, false otherwise.h]hhTrue if the pad is part of a pipeline started with the media_pipeline_start() function, false otherwise.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjݻubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_entity_is_streaming (C function)c.media_entity_is_streaminghNtauh1j hj hhhNhNubj )}(hhh](j )}(hBbool media_entity_is_streaming (const struct media_entity *entity)h]j )}(hAbool media_entity_is_streaming(const struct media_entity *entity)h](j`)}(hjJsh]hbool}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj~hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj~hhhjhMubj8 )}(hmedia_entity_is_streamingh]j> )}(hmedia_entity_is_streamingh]hmedia_entity_is_streaming}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj~hhhjhMubj)}(h#(const struct media_entity *entity)h]j)}(h!const struct media_entity *entityh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj˼hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj )}(hj h]hstruct}(hjټhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_entity_is_streamingasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hj2hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhj~hhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjzhhhjhMubah}(h]juah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjwhhubjj )}(hhh]h)}(h1Test if an entity is part of a streaming pipelineh]h1Test if an entity is part of a streaming 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.hhMhjYhhubah}(h]h ]h"]h$]h&]uh1ji hjwhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jtj jtj j 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}(hjhhhNhNubah}(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.hhMhjxubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h The entityh]h The entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjxubh)}(h **Return**h]j')}(hjؽh]hReturn}(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.hhMhjxubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjxubeh}(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}(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 ]j3 ah"]h$]h&]uh1j& hjhhhj*hMubh)}(hhh]j> )}(hmedia_pipelineh]hmedia_pipeline}(hj<hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj9ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj>modnameN classnameNjj)}j]j)}jmedia_entity_pipelinesbc.media_entity_pipelineasbuh1hhjhhhj*hMubj' )}(h h]h }(hj]hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhj*hMubj)}(hjh]h*}(hjkhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj*hMubj8 )}(hmedia_entity_pipelineh]j> )}(hjZh]hmedia_entity_pipeline}(hj|hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjxubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jXc.media_entity_pipelineasbuh1hhjubj' )}(h h]h }(hjӾhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj*hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhj*hMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj*hMhjhhubjj )}(hhh]h)}(h+Get the media pipeline an entity is part ofh]h+Get the media pipeline an entity is part of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhj*hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j0j j0j j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_entity *entity`` The entity **Description** DEPRECATED: use media_pad_pipeline() instead. This function returns the media pipeline that an entity has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called. In general, entities can be part of multiple pipelines, when carrying multiple streams (either on different pads, or on the same pad using multiplexed streams). This function is to be used only for entities that do not support multiple pipelines. **Return** The media_pipeline the entity is part of, or NULL if the entity is not part of any pipeline.h](h)}(h**Parameters**h]j')}(hj:h]h Parameters}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj8ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj4ubj )}(hhh]j )}(h+``struct media_entity *entity`` The entity h](j )}(h``struct media_entity *entity``h]j)}(hjYh]hstruct media_entity *entity}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjWubah}(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)}(h The entityh]h The entity}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjnhMhjoubah}(h]h ]h"]h$]h&]uh1j hjSubeh}(h]h ]h"]h$]h&]uh1j hjnhMhjPubah}(h]h ]h"]h$]h&]uh1j hj4ubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhj4ubh)}(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.hhMhj4ubh)}(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.hhMhj4ubh)}(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 hj4ubh)}(h **Return**h]j')}(hjٿh]hReturn}(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.hhMhj4ubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj4ubeh}(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}(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 ]j3 ah"]h$]h&]uh1j& hjhhhj+hMubh)}(hhh]j> )}(hmedia_pipelineh]hmedia_pipeline}(hj=hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj:ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj?modnameN classnameNjj)}j]j)}jmedia_pad_pipelinesbc.media_pad_pipelineasbuh1hhjhhhj+hMubj' )}(h h]h }(hj^hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhj+hMubj)}(hjh]h*}(hjlhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhj+hMubj8 )}(hmedia_pad_pipelineh]j> )}(hj[h]hmedia_pad_pipeline}(hj}hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjyubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhj+hMubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jYc.media_pad_pipelineasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj+hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhj+hMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj+hMhjhhubjj )}(hhh]h)}(h'Get the media pipeline a pad is part ofh]h'Get the media pipeline a pad is part of}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhj+hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j1j j1j j j uh1j hhhj hNhNubj )}(hXs**Parameters** ``struct media_pad *pad`` The pad **Description** This function returns the media pipeline that a pad has been associated with when constructing the pipeline with media_pipeline_start(). The pointer remains valid until media_pipeline_stop() is called. **Return** The media_pipeline the pad is part of, or NULL if the pad is not part of any pipeline.h](h)}(h**Parameters**h]j')}(hj;h]h Parameters}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj9ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj5ubj )}(hhh]j )}(h"``struct media_pad *pad`` The pad h](j )}(h``struct media_pad *pad``h]j)}(hjZh]hstruct media_pad *pad}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjXubah}(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)}(hThe padh]hThe pad}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1hhjohMhjpubah}(h]h ]h"]h$]h&]uh1j hjTubeh}(h]h ]h"]h$]h&]uh1j hjohMhjQubah}(h]h ]h"]h$]h&]uh1j hj5ubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhj5ubh)}(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.hhMhj5ubh)}(h **Return**h]j')}(hjh]hReturn}(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.hhMhj5ubh)}(hVThe media_pipeline the pad is part of, or NULL if the pad is not part of any pipeline.h]hVThe media_pipeline the pad is part of, or NULL if the pad is not part of any pipeline.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj5ubeh}(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}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM%ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM%ubj8 )}(hmedia_entity_get_fwnode_padh]j> )}(hmedia_entity_get_fwnode_padh]hmedia_entity_get_fwnode_pad}(hj"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhM%ubj)}(h`(struct media_entity *entity, const struct fwnode_handle *fwnode, unsigned long direction_flags)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hj>hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj:ubj' )}(h h]h }(hjKhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj:ubh)}(hhh]j> )}(h media_entityh]h media_entity}(hj\hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j)}jj$sbc.media_entity_get_fwnode_padasbuh1hhj:ubj' )}(h h]h }(hj|hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(h"const struct fwnode_handle *fwnodeh](j )}(hj/h]hconst}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h fwnode_handleh]h fwnode_handle}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jxc.media_entity_get_fwnode_padasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hfwnodeh]hfwnode}(hj"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubj)}(hunsigned long direction_flagsh](j`)}(hunsignedh]hunsigned}(hj;hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj7ubj' )}(h h]h }(hjIhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7ubj`)}(hlongh]hlong}(hjWhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj7ubj' )}(h h]h }(hjehhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7ubj> )}(hdirection_flagsh]hdirection_flags}(hjshhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj7ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM%ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhM%ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhM%hjhhubjj )}(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&]uh1ji hjhhhjhM%ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM)hjubj )}(hhh](j )}(h+``struct media_entity *entity`` The entity h](j )}(h``struct media_entity *entity``h]j)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM'hjubj)}(hhh]h)}(h The entityh]h The entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM'hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM'hjubj )}(hi``const struct fwnode_handle *fwnode`` Pointer to the fwnode_handle which should be used to find the pad h](j )}(h&``const struct fwnode_handle *fwnode``h]j)}(hjh]h"const struct fwnode_handle *fwnode}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM(hjubj)}(hhh]h)}(hAPointer to the fwnode_handle which should be used to find the padh]hAPointer to the fwnode_handle which should be used to find the pad}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj,hM(hj-ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj,hM(hjubj )}(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)}(hjPh]hunsigned long direction_flags}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(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)}(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 }(hjihhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjsh]hinclude/uapi/linux/media.h}(hjuhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjqubah}(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)hjiubh (seek for }(hjihhhNhNubj)}(h``MEDIA_PAD_FL_*``h]hMEDIA_PAD_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjiubh)}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM)hjfubah}(h]h ]h"]h$]h&]uh1j hjJubeh}(h]h ]h"]h$]h&]uh1j hjehM+hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM-hjubh)}(hThis function can be used to resolve the media pad number from a fwnode. This is useful for devices which use more complex mappings of media pads.h]hThis function can be used to resolve the media pad number from a fwnode. This is useful for devices which use more complex mappings of media pads.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM,hjubh)}(hIf the entity does not implement the get_fwnode_pad() operation then this function searches the entity for the first pad that matches the **direction_flags**.h](hIf the entity does not implement the get_fwnode_pad() operation then this function searches the entity for the first pad that matches the }(hjhhhNhNubj')}(h**direction_flags**h]hdirection_flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]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.hhM0hjubh)}(h **Return**h]j')}(hj h]hReturn}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM4hjubh)}(h;returns the pad number on success or a negative error code.h]h;returns the pad number on success or a negative error code.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM5hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "media_graph_walk_init (C function)c.media_graph_walk_inithNtauh1j hj hhhNhNubj )}(hhh](j )}(hPint media_graph_walk_init (struct media_graph *graph, struct media_device *mdev)h]j )}(hOint media_graph_walk_init(struct media_graph *graph, struct media_device *mdev)h](j`)}(hinth]hint}(hjOhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjKhhhf/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 ]j3 ah"]h$]h&]uh1j& hjKhhhj]hM<ubj8 )}(hmedia_graph_walk_inith]j> )}(hmedia_graph_walk_inith]hmedia_graph_walk_init}(hjphhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjlubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjKhhhj]hM<ubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_graphh]h media_graph}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjrsbc.media_graph_walk_initasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hgraphh]hgraph}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_graph_walk_initasbuh1hhjubj' )}(h h]h }(hj:hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hmdevh]hmdev}(hjUhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjKhhhj]hM<ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjGhhhj]hM<ubah}(h]jBah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj]hM<hjDhhubjj )}(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<hj|hhubah}(h]h ]h"]h$]h&]uh1ji hjDhhhj]hM<ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM@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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM>hjubj)}(hhh]h)}(h9Media graph structure that will be used to walk the graphh]h9Media graph structure that will be used to walk the graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM>hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM>hjubj )}(h]``struct media_device *mdev`` Pointer to the :c:type:`media_device` that contains the object h](j )}(h``struct media_device *mdev``h]j)}(hjh]hstruct media_device *mdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM?hjubj)}(hhh]h)}(h>Pointer to the :c:type:`media_device` that contains the objecth](hPointer to the }(hjhhhNhNubh)}(h:c:type:`media_device`h]j)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhM?hjubh that contains the object}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM?hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM?hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjWh]h Description}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjUubah}(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.}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM@hjubh)}(htThe caller is required to hold the media_device graph_mutex during the graph walk until the graph state is released.h]htThe caller is required to hold the media_device graph_mutex during the graph walk until the graph state is released.}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMBhjubh)}(h;Returns zero on success or a negative error code otherwise.h]h;Returns zero on success or a negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMEhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %media_graph_walk_cleanup (C function)c.media_graph_walk_cleanuphNtauh1j hj hhhNhNubj )}(hhh](j )}(h9void media_graph_walk_cleanup (struct media_graph *graph)h]j )}(h8void media_graph_walk_cleanup(struct media_graph *graph)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMLubj8 )}(hmedia_graph_walk_cleanuph]j> )}(hmedia_graph_walk_cleanuph]hmedia_graph_walk_cleanup}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMLubj)}(h(struct media_graph *graph)h]j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_graphh]h media_graph}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_graph_walk_cleanupasbuh1hhjubj' )}(h h]h }(hj5hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjChhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hgraphh]hgraph}(hjPhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMLubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMLubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMLhjhhubjj )}(hhh]h)}(h%Release resources used by graph walk.h]h%Release resources used by graph walk.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLhjwhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMLubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMNhjubj)}(hhh]h)}(h9Media graph structure that will be used to walk the graphh]h9Media graph structure that will be used to walk the graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMNhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMNhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(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.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMOhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_graph_walk_start (C function)c.media_graph_walk_starthNtauh1j hj hhhNhNubj )}(hhh](j )}(hTvoid media_graph_walk_start (struct media_graph *graph, struct media_entity *entity)h]j )}(hSvoid media_graph_walk_start(struct media_graph *graph, struct media_entity *entity)h](j`)}(hvoidh]hvoid}(hj;hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj7hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUubj' )}(h h]h }(hjJhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7hhhjIhMUubj8 )}(hmedia_graph_walk_starth]j> )}(hmedia_graph_walk_starth]hmedia_graph_walk_start}(hj\hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjXubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj7hhhjIhMUubj)}(h8(struct media_graph *graph, struct media_entity *entity)h](j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjxhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjtubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjtubh)}(hhh]j> )}(h media_graphh]h media_graph}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj^sbc.media_graph_walk_startasbuh1hhjtubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjtubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjtubj> )}(hgraphh]hgraph}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjtubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubj)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jc.media_graph_walk_startasbuh1hhjubj' )}(h h]h }(hj&hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj4hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hjAhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjpubeh}(h]h ]h"]h$]h&]hhuh1jhj7hhhjIhMUubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj3hhhjIhMUubah}(h]j.ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjIhMUhj0hhubjj )}(hhh]h)}(h/Start walking the media graph at a given entityh]h/Start walking the media graph at a given entity}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjhhhubah}(h]h ]h"]h$]h&]uh1ji hj0hhhjIhMUubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMXhjubj)}(hhh]h)}(h9Media graph structure that will be used to walk the graphh]h9Media graph structure that will be used to walk the graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMXhjubj )}(h0``struct media_entity *entity`` Starting entity h](j )}(h``struct media_entity *entity``h]j)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMYhjubj)}(hhh]h)}(hStarting entityh]hStarting entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMYhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj h]h Description}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.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.}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMZhjubh)}(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().}(hjEhhhNhNubah}(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}(hjthhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjphhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMiubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjphhhjhMiubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_graph_walk_nextsbc.media_graph_walk_nextasbuh1hhjphhhjhMiubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjphhhjhMiubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjphhhjhMiubj8 )}(hmedia_graph_walk_nexth]j> )}(hjh]hmedia_graph_walk_next}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjphhhjhMiubj)}(h(struct media_graph *graph)h]j)}(hstruct media_graph *graphh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_graphh]h media_graph}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_graph_walk_nextasbuh1hhjubj' )}(h h]h }(hj*hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj8hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hgraphh]hgraph}(hjEhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjphhhjhMiubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjlhhhjhMiubah}(h]jgah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMihjihhubjj )}(hhh]h)}(h Get the next entity in the graphh]h Get the next entity in the graph}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMihjlhhubah}(h]h ]h"]h$]h&]uh1ji hjihhhjhMiubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(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)}(hjh]hstruct media_graph *graph}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjhjubj)}(hhh]h)}(hMedia graph structureh]hMedia graph structure}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMjhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMjhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMlhjubh)}(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.hhMkhjubh)}(hBPerform a depth-first traversal of the given media entities graph.h]hBPerform a depth-first traversal of the given media entities graph.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMmhjubh)}(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().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMohjubh)}(h **Return**h]j')}(hj0h]hReturn}(hj2hhhNhNubah}(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.hhMrhjubh)}(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 }(hjFhhhNhNubj)}(h``NULL``h]hNULL}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubh( if the whole graph have been traversed.}(hjFhhhNhNubeh}(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 ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMyubj8 )}(hmedia_pipeline_starth]j> )}(hmedia_pipeline_starth]hmedia_pipeline_start}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMyubj)}(h7(struct media_pad *origin, struct media_pipeline *pipe)h](j)}(hstruct media_pad *originh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_pipeline_startasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(horiginh]horigin}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_pipeline *pipeh](j )}(hj h]hstruct}(hj6hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj2ubj' )}(h h]h }(hjChhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj2ubh)}(hhh]j> )}(hmedia_pipelineh]hmedia_pipeline}(hjThhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]jc.media_pipeline_startasbuh1hhj2ubj' )}(h h]h }(hjrhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj2ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj> )}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj2ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMyubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMyubah}(h]jzah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMyhj|hhubjj )}(hhh]h)}(hMark a pipeline as streamingh]hMark a pipeline as streaming}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMyhjhhubah}(h]h ]h"]h$]h&]uh1ji hj|hhhjhMyubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hXc**Parameters** ``struct media_pad *origin`` Starting pad ``struct media_pipeline *pipe`` Media pipeline to be assigned to all pads in the pipeline. **Description** Mark all pads connected to pad **origin** through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field. Calls to this function can be nested, in which case the same number of media_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to media_pipeline_start().h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjubj )}(hhh](j )}(h*``struct media_pad *origin`` Starting pad h](j )}(h``struct media_pad *origin``h]j)}(hjh]hstruct media_pad *origin}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzhjubj)}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMzhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMzhjubj )}(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)}(hj1h]hstruct media_pipeline *pipe}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj/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:Media pipeline to be assigned to all pads in the pipeline.h]h:Media pipeline to be assigned to all pads in the pipeline.}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjFhM{hjGubah}(h]h ]h"]h$]h&]uh1j hj+ubeh}(h]h ]h"]h$]h&]uh1j hjFhM{hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjlh]h Description}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjubh)}(hMark all pads connected to pad **origin** through enabled links, either directly or indirectly, as streaming. The given pipeline object is assigned to every pad in the pipeline and stored in the media_pad pipe field.h](hMark all pads connected to pad }(hjhhhNhNubj')}(h **origin**h]horigin}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh 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|hjubh)}(hCalls to this function can be nested, in which case the same number of media_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to media_pipeline_start().h]hCalls to this function can be nested, in which case the same number of media_pipeline_stop() calls will be required to stop streaming. The pipeline pointer must be identical for all nested calls to media_pipeline_start().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #__media_pipeline_start (C function)c.__media_pipeline_starthNtauh1j hj hhhNhNubj )}(hhh](j )}(hRint __media_pipeline_start (struct media_pad *origin, struct media_pipeline *pipe)h]j )}(hQint __media_pipeline_start(struct media_pad *origin, struct media_pipeline *pipe)h](j`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(h__media_pipeline_starth]j> )}(h__media_pipeline_starth]h__media_pipeline_start}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 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 hj ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubh)}(hhh]j> )}(h media_padh]h media_pad}(hj-hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj*ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj/modnameN classnameNjj)}j]j)}jjsbc.__media_pipeline_startasbuh1hhj ubj' )}(h h]h }(hjMhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubj)}(hjh]h*}(hj[hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj> )}(horiginh]horigin}(hjhhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_pipeline *pipeh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj}ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj}ubh)}(hhh]j> )}(hmedia_pipelineh]hmedia_pipeline}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jIc.__media_pipeline_startasbuh1hhj}ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj}ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj}ubj> )}(hpipeh]hpipe}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj}ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(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&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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}(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.hhMhjubj )}(hhh](j )}(h*``struct media_pad *origin`` Starting pad h](j )}(h``struct media_pad *origin``h]j)}(hjCh]hstruct media_pad *origin}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj=ubj)}(hhh]h)}(h Starting padh]h Starting pad}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjYubah}(h]h ]h"]h$]h&]uh1j hj=ubeh}(h]h ]h"]h$]h&]uh1j hjXhMhj:ubj )}(h[``struct media_pipeline *pipe`` Media pipeline to be assigned to all pads in the pipeline. h](j )}(h``struct media_pipeline *pipe``h]j)}(hj|h]hstruct media_pipeline *pipeB}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjvubj)}(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 hjvubeh}(h]h ]h"]h$]h&]uh1j hjhMhj:ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhjubh)}(hB..note:: This is the non-locking version of media_pipeline_start()h]hB..note:: This is the non-locking version of media_pipeline_start()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_pipeline_stop (C function)c.media_pipeline_stophNtauh1j hj hhhNhNubj )}(hhh](j )}(h0void media_pipeline_stop (struct media_pad *pad)h]j )}(h/void media_pipeline_stop(struct media_pad *pad)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhj hMubj8 )}(hmedia_pipeline_stoph]j> )}(hmedia_pipeline_stoph]hmedia_pipeline_stop}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhj hMubj)}(h(struct media_pad *pad)h]j)}(hstruct media_pad *padh](j )}(hj h]hstruct}(hj9hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj5ubj' )}(h h]h }(hjFhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj5ubh)}(hhh]j> )}(h media_padh]h media_pad}(hjWhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjTubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjYmodnameN classnameNjj)}j]j)}jjsbc.media_pipeline_stopasbuh1hhj5ubj' )}(h h]h }(hjwhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj5ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5ubj> )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj5ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj1ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhj hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhj hMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj hMhjhhubjj )}(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&]uh1ji hjhhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_pad *pad`` Starting pad **Description** Mark all pads connected to a given pad through enabled links, either directly or indirectly, as not streaming. The media_pad pipe field is reset to ``NULL``. If multiple calls to media_pipeline_start() have been made, the same number of calls to this function are required to mark the pipeline as not streaming.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj8h]h Description}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj6ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hMark all pads connected to a given pad through enabled links, either directly or indirectly, as not streaming. The media_pad pipe field is reset to ``NULL``.h](hMark all pads connected to a given pad through enabled links, either directly or indirectly, as not streaming. The media_pad pipe field is reset to }(hjNhhhNhNubj)}(h``NULL``h]hNULL}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubh.}(hjNhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hIf multiple calls to media_pipeline_start() have been made, the same number of calls to this function are required to mark the pipeline as not streaming.h]hIf multiple calls to media_pipeline_start() have been made, the same number of calls to this function are required to mark the pipeline as not streaming.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j "__media_pipeline_stop (C function)c.__media_pipeline_stophNtauh1j hj hhhNhNubj )}(hhh](j )}(h2void __media_pipeline_stop (struct media_pad *pad)h]j )}(h1void __media_pipeline_stop(struct media_pad *pad)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(h__media_pipeline_stoph]j> )}(h__media_pipeline_stoph]h__media_pipeline_stop}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(h(struct media_pad *pad)h]j)}(hstruct media_pad *padh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_padh]h media_pad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__media_pipeline_stopasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hpadh]hpad}(hj4hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(hhh]h)}(h Mark a pipeline as not streamingh]h Mark a pipeline as not streaming}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj[hhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jvj jvj j 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&]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.hhMhjzubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjzubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhjzubj)}(h8This is the non-locking version of media_pipeline_stop()h]h)}(hjh]h8This is the non-locking version of media_pipeline_stop()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjzubeh}(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]j8 )}(hmedia_pipeline_for_each_padh]j> )}(hj"h]hmedia_pipeline_for_each_pad}(hj,hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj(ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj$hhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj hhhj?hMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj?hMhjhhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjhhhj?hMubeh}(h]h ](jmacroeh"]h$]h&]j jj jXj jXj j j uh1j hhhj hNhNubh)}(h1``media_pipeline_for_each_pad (pipe, iter, pad)``h]j)}(hj^h]h-media_pipeline_for_each_pad (pipe, iter, pad)}(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)}(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}(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&]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&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h``pipe`` The pipeline h](j )}(h``pipe``h]j)}(hjh]hpipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h The pipelineh]h The pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h7``iter`` The iterator (struct media_pipeline_pad_iter) h](j )}(h``iter``h]j)}(hjh]hiter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h-The iterator (struct media_pipeline_pad_iter)h]h-The iterator (struct media_pipeline_pad_iter)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h``pad`` The iterator pad h](j )}(h``pad``h]j)}(hj$h]hpad}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"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)}(hThe iterator padh]hThe iterator pad}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj:ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj9hMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj_h]h Description}(hjahhhNhNubah}(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.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().}(hjuhhhNhNubah}(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 ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(hmedia_pipeline_entity_iter_inith]j> )}(hmedia_pipeline_entity_iter_inith]hmedia_pipeline_entity_iter_init}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(hF(struct media_pipeline *pipe, struct media_pipeline_entity_iter *iter)h](j)}(hstruct media_pipeline *pipeh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_pipelineh]hmedia_pipeline}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb!c.media_pipeline_entity_iter_initasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj-hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hpipeh]hpipe}(hj:hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h'struct media_pipeline_entity_iter *iterh](j )}(hj h]hstruct}(hjShhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjOubj' )}(h h]h }(hj`hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjOubh)}(hhh]j> )}(hmedia_pipeline_entity_iterh]hmedia_pipeline_entity_iter}(hjqhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjnubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjsmodnameN classnameNjj)}j]j!c.media_pipeline_entity_iter_initasbuh1hhjOubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjOubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjOubj> )}(hiterh]hiter}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(hhh]h)}(h%Initialize a pipeline entity iteratorh]h%Initialize a pipeline entity iterator}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX8**Parameters** ``struct media_pipeline *pipe`` The pipeline ``struct media_pipeline_entity_iter *iter`` The iterator **Description** This function must be called to initialize the iterator before using it in a media_pipeline_for_each_entity() loop. The iterator must be destroyed by a call to media_pipeline_entity_iter_cleanup after the loop (including in code paths that break from the loop). The same iterator can be used in multiple consecutive loops without being destroyed and reinitialized. **Return** 0 on success or a negative error code otherwise.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h-``struct media_pipeline *pipe`` The pipeline h](j )}(h``struct media_pipeline *pipe``h]j)}(hjh]hstruct media_pipeline *pipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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*hMhj ubj )}(h9``struct media_pipeline_entity_iter *iter`` The iterator h](j )}(h+``struct media_pipeline_entity_iter *iter``h]j)}(hjNh]h'struct media_pipeline_entity_iter *iter}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(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 iteratorh]h The iterator}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchMhjdubah}(h]h ]h"]h$]h&]uh1j hjHubeh}(h]h ]h"]h$]h&]uh1j hjchMhj ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhjubh)}(hXThis function must be called to initialize the iterator before using it in a media_pipeline_for_each_entity() loop. The iterator must be destroyed by a call to media_pipeline_entity_iter_cleanup after the loop (including in code paths that break from the loop).h]hXThis function must be called to initialize the iterator before using it in a media_pipeline_for_each_entity() loop. The iterator must be destroyed by a call to media_pipeline_entity_iter_cleanup after the loop (including in code paths that break from the loop).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hfThe same iterator can be used in multiple consecutive loops without being destroyed and reinitialized.h]hfThe same iterator can be used in multiple consecutive loops without being destroyed and reinitialized.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(h **Return**h]j')}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(h00 on success or a negative error code otherwise.h]h00 on success or a negative error code otherwise.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j /media_pipeline_entity_iter_cleanup (C function)$c.media_pipeline_entity_iter_cleanuphNtauh1j hj hhhNhNubj )}(hhh](j )}(hQvoid media_pipeline_entity_iter_cleanup (struct media_pipeline_entity_iter *iter)h]j )}(hPvoid media_pipeline_entity_iter_cleanup(struct media_pipeline_entity_iter *iter)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(h"media_pipeline_entity_iter_cleanuph]j> )}(h"media_pipeline_entity_iter_cleanuph]h"media_pipeline_entity_iter_cleanup}(hj%hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj!ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(h)(struct media_pipeline_entity_iter *iter)h]j)}(h'struct media_pipeline_entity_iter *iterh](j )}(hj h]hstruct}(hjAhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj=ubj' )}(h h]h }(hjNhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj=ubh)}(hhh]j> )}(hmedia_pipeline_entity_iterh]hmedia_pipeline_entity_iter}(hj_hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]j)}jj'sb$c.media_pipeline_entity_iter_cleanupasbuh1hhj=ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj=ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj> )}(hiterh]hiter}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj9ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(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&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(h**Parameters** ``struct media_pipeline_entity_iter *iter`` The iterator **Description** This function must be called to destroy iterators initialized with media_pipeline_entity_iter_init().h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh]j )}(h9``struct media_pipeline_entity_iter *iter`` The iterator h](j )}(h+``struct media_pipeline_entity_iter *iter``h]j)}(hjh]h'struct media_pipeline_entity_iter *iter}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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 hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj@h]h Description}(hjBhhhNhNubah}(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.hhMhjubh)}(heThis function must be called to destroy iterators initialized with media_pipeline_entity_iter_init().h]heThis function must be called to destroy iterators initialized with media_pipeline_entity_iter_init().}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_pipeline_for_each_entity (C macro) c.media_pipeline_for_each_entityhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_pipeline_for_each_entityh]j )}(hmedia_pipeline_for_each_entityh]j8 )}(hmedia_pipeline_for_each_entityh]j> )}(hjh]hmedia_pipeline_for_each_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj}hhhjhMubah}(h]jxah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjzhhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjzhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]j jj jj jj j 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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(h,Iterate on all entities in a media pipeline h]h)}(h+Iterate on all entities in a media pipelineh]h+Iterate on all entities in a media pipeline}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhj hhubj )}(hX**Parameters** ``pipe`` The pipeline ``iter`` The iterator (struct media_pipeline_entity_iter) ``entity`` The iterator entity **Description** Iterate on all entities in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop(). The iterator must be initialized with media_pipeline_entity_iter_init() before iteration, and destroyed with media_pipeline_entity_iter_cleanup() after (including in code paths that break from the loop).h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(h``pipe`` The pipeline h](j )}(h``pipe``h]j)}(hjh]hpipe}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj ubj)}(hhh]h)}(h The pipelineh]h The pipeline}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hMhj%ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj$hMhjubj )}(h:``iter`` The iterator (struct media_pipeline_entity_iter) h](j )}(h``iter``h]j)}(hjHh]hiter}(hjJhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjFubah}(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)}(h0The iterator (struct media_pipeline_entity_iter)h]h0The iterator (struct media_pipeline_entity_iter)}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhj]hMhj^ubah}(h]h ]h"]h$]h&]uh1j hjBubeh}(h]h ]h"]h$]h&]uh1j hj]hMhjubj )}(h``entity`` The iterator entity h](j )}(h ``entity``h]j)}(hjh]hentity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj{ubj)}(hhh]h)}(hThe iterator entityh]hThe iterator entity}(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 hjubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhjubh)}(hXIterate on all entities in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop(). The iterator must be initialized with media_pipeline_entity_iter_init() before iteration, and destroyed with media_pipeline_entity_iter_cleanup() after (including in code paths that break from the loop).h]hXIterate on all entities in a media pipeline. This is only valid after the pipeline has been built with media_pipeline_start() and before it gets destroyed with media_pipeline_stop(). The iterator must be initialized with media_pipeline_entity_iter_init() before iteration, and destroyed with media_pipeline_entity_iter_cleanup() after (including in code paths that break from the loop).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j 'media_pipeline_alloc_start (C function)c.media_pipeline_alloc_starthNtauh1j hj hhhNhNubj )}(hhh](j )}(h6int media_pipeline_alloc_start (struct media_pad *pad)h]j )}(h5int media_pipeline_alloc_start(struct media_pad *pad)h](j`)}(hinth]hint}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(hmedia_pipeline_alloc_starth]j> )}(hmedia_pipeline_alloc_starth]hmedia_pipeline_alloc_start}(hj"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(h(struct media_pad *pad)h]j)}(hstruct media_pad *padh](j )}(hj h]hstruct}(hj>hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj:ubj' )}(h h]h }(hjKhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj:ubh)}(hhh]j> )}(h media_padh]h media_pad}(hj\hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjYubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj^modnameN classnameNjj)}j]j)}jj$sbc.media_pipeline_alloc_startasbuh1hhj:ubj' )}(h h]h }(hj|hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj:ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj:ubj> )}(hpadh]hpad}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj6ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(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&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX{**Parameters** ``struct media_pad *pad`` Starting pad **Description** media_pipeline_alloc_start() is similar to media_pipeline_start() but instead of working on a given pipeline the function will use an existing pipeline if the pad is already part of a pipeline, or allocate a new pipeline. Calls to media_pipeline_alloc_start() must be matched with media_pipeline_stop().h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h Starting padh]h Starting pad}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj=h]h Description}(hj?hhhNhNubah}(h]h ]h"]h$]h&]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.hhMhjubh)}(hmedia_pipeline_alloc_start() is similar to media_pipeline_start() but instead of working on a given pipeline the function will use an existing pipeline if the pad is already part of a pipeline, or allocate a new pipeline.h]hmedia_pipeline_alloc_start() is similar to media_pipeline_start() but instead of working on a given pipeline the function will use an existing pipeline if the pad is already part of a pipeline, or allocate a new pipeline.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh)}(hQCalls to media_pipeline_alloc_start() must be matched with media_pipeline_stop().h]hQCalls to media_pipeline_alloc_start() must be matched with media_pipeline_stop().}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j !media_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 ]j3 ah"]h$]h&]uh1j& hjhhhjhMubh)}(hhh]j> )}(hmedia_intf_devnodeh]hmedia_intf_devnode}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_devnode_createsbc.media_devnode_createasbuh1hhjhhhjhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMubj8 )}(hmedia_devnode_createh]j> )}(hjh]hmedia_devnode_create}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubj)}(hF(struct media_device *mdev, u32 type, u32 flags, u32 major, u32 minor)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj)hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj+modnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjubj' )}(h h]h }(hjGhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjUhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hmdevh]hmdev}(hjbhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hu32 typeh](h)}(hhh]j> )}(hu32h]hu32}(hj~hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj{ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjwubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjwubj> )}(htypeh]htype}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjwubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 flagsh](h)}(hhh]j> )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 majorh](h)}(hhh]j> )}(hu32h]hu32}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjubj' )}(h h]h }(hj,hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(hmajorh]hmajor}(hj:hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h u32 minorh](h)}(hhh]j> )}(hu32h]hu32}(hjVhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjSubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjXmodnameN classnameNjj)}j]jc.media_devnode_createasbuh1hhjOubj' )}(h h]h }(hjthhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjOubj> )}(hminorh]hminor}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjOubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(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&]uh1ji hjhhhjhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_device *mdev`` pointer to struct :c:type:`media_device` ``u32 type`` type of the interface, as given by :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_T_*``) macros. ``u32 flags`` Interface flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_FL_*``) ``u32 major`` Device node major number. ``u32 minor`` Device node minor number. **Return** if succeeded, returns a pointer to the newly allocated :c:type:`media_intf_devnode` pointer. **Description** .. note:: Currently, no flags for :c:type:`media_interface` is defined.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj )}(hhh](j )}(hG``struct media_device *mdev`` pointer to struct :c:type:`media_device` h](j )}(h``struct media_device *mdev``h]j)}(hjh]hstruct media_device *mdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h(pointer to struct :c:type:`media_device`h](hpointer to struct }(hjhhhNhNubh)}(h:c:type:`media_device`h]j)}(hjh]h media_device}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h``u32 type`` type of the interface, as given by :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_T_*``) macros. h](j )}(h ``u32 type``h]j)}(hjEh]hu32 type}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjCubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj?ubj)}(hhh]h)}(hztype of the interface, as given by :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_T_*``) macros.h](h#type of the interface, as given by }(hj^hhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjhh]hinclude/uapi/linux/media.h}(hjjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjfubah}(h]h ]h"]h$]h&]refdocj refdomainjtreftyperef 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_T_*``h]hMEDIA_INTF_T_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj^ubh ) macros.}(hj^hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhj[ubah}(h]h ]h"]h$]h&]uh1j hj?ubeh}(h]h ]h"]h$]h&]uh1j hjZhMhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(hoInterface flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_INTF_FL_*``)h](hInterface flags, as defined in }(hjhhhNhNubh)}(h0:ref:`include/uapi/linux/media.h `h]h)}(hjh]hinclude/uapi/linux/media.h}(hjhhhNhNubah}(h]h ](jstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh ( seek for }(hjhhhNhNubj)}(h``MEDIA_INTF_FL_*``h]hMEDIA_INTF_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h(``u32 major`` Device node major number. h](j )}(h ``u32 major``h]j)}(hj%h]h u32 major}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj#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)}(hDevice node major number.h]hDevice node major number.}(hj>hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj:hMhj;ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj:hMhjubj )}(h(``u32 minor`` Device node minor number. h](j )}(h ``u32 minor``h]j)}(hj^h]h u32 minor}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj\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 minor number.h]hDevice node minor number.}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjshMhjtubah}(h]h ]h"]h$]h&]uh1j hjXubeh}(h]h ]h"]h$]h&]uh1j hjshMhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h **Return**h]j')}(hjh]hReturn}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubh)}(h\if succeeded, returns a pointer to the newly allocated :c:type:`media_intf_devnode` pointer.h](h7if succeeded, returns a pointer to the newly allocated }(hjhhhNhNubh)}(h:c:type:`media_intf_devnode`h]j)}(hjh]hmedia_intf_devnode}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_intf_devnodeuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubh pointer.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjubj)}(h=Currently, no flags for :c:type:`media_interface` is defined.h]h)}(hjh](hCurrently, no flags for }(hjhhhNhNubh)}(h:c:type:`media_interface`h]j)}(hjh]hmedia_interface}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh is defined.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj#hMhjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j !media_devnode_remove (C function)c.media_devnode_removehNtauh1j hj hhhNhNubj )}(hhh](j )}(h>void media_devnode_remove (struct media_intf_devnode *devnode)h]j )}(h=void media_devnode_remove(struct media_intf_devnode *devnode)h](j`)}(hvoidh]hvoid}(hjThhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjPhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubj' )}(h h]h }(hjchhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjPhhhjbhMubj8 )}(hmedia_devnode_removeh]j> )}(hmedia_devnode_removeh]hmedia_devnode_remove}(hjuhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjqubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjPhhhjbhMubj)}(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 hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_intf_devnodeh]hmedia_intf_devnode}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjwsbc.media_devnode_removeasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hdevnodeh]hdevnode}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjPhhhjbhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjLhhhjbhMubah}(h]jGah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjbhMhjIhhubjj )}(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&]uh1ji hjIhhhjbhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j,j j,j j 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')}(hj6h]h Parameters}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj4ubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj0ubj )}(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)}(hjUh]h"struct media_intf_devnode *devnode}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjSubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjOubj)}(hhh]h)}(h4pointer to :c:type:`media_intf_devnode` to be freed.h](h pointer to }(hjnhhhNhNubh)}(h:c:type:`media_intf_devnode`h]j)}(hjxh]hmedia_intf_devnode}(hjzhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjvubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_intf_devnodeuh1hhjjhMhjnubh to be freed.}(hjnhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjjhMhjkubah}(h]h ]h"]h$]h&]uh1j hjOubeh}(h]h ]h"]h$]h&]uh1j hjjhMhjLubah}(h]h ]h"]h$]h&]uh1j hj0ubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMhj0ubh)}(hSWhen a device node interface is removed, all links to it are automatically removed.h]hSWhen a device node interface is removed, all links to it are automatically removed.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj0ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j #media_create_intf_link (C function)c.media_create_intf_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(hqstruct media_link * media_create_intf_link (struct media_entity *entity, struct media_interface *intf, u32 flags)h]j )}(hostruct media_link *media_create_intf_link(struct media_entity *entity, struct media_interface *intf, u32 flags)h](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM ubh)}(hhh]j> )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_create_intf_linksbc.media_create_intf_linkasbuh1hhjhhhjhM ubj' )}(h h]h }(hj8hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM ubj)}(hjh]h*}(hjFhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhM ubj8 )}(hmedia_create_intf_linkh]j> )}(hj5h]hmedia_create_intf_link}(hjWhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjSubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhM ubj)}(hF(struct media_entity *entity, struct media_interface *intf, u32 flags)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjrhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjnubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjnubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j3c.media_create_intf_linkasbuh1hhjnubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjnubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjnubj> )}(hentityh]hentity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjnubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjubj)}(hstruct media_interface *intfh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_interfaceh]hmedia_interface}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j3c.media_create_intf_linkasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj,hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hintfh]hintf}(hj9hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjubj)}(h u32 flagsh](h)}(hhh]j> )}(hu32h]hu32}(hjUhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjRubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjWmodnameN classnameNjj)}j]j3c.media_create_intf_linkasbuh1hhjNubj' )}(h h]h }(hjshhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjNubj> )}(hflagsh]hflags}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjNubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhM ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhM hjhhubjj )}(hhh]h)}(h1creates a link between an entity and an interfaceh]h1creates a link between an entity and an interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM hjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhM ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_entity *entity`` pointer to ``media_entity`` ``struct media_interface *intf`` pointer to ``media_interface`` ``u32 flags`` Link flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``) **Description** Valid values for flags: ``MEDIA_LNK_FL_ENABLED`` Indicates that the interface is connected to the entity hardware. That's the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware. A typical example is an hybrid TV device that handle only one type of stream on a given time. So, when the digital TV is streaming, the V4L2 interfaces won't be enabled, as such device is not able to also stream analog TV or radio. .. note:: Before calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM$hjubj )}(hhh](j )}(h<``struct media_entity *entity`` pointer to ``media_entity`` h](j )}(h``struct media_entity *entity``h]j)}(hjh]hstruct media_entity *entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM"hjubj)}(hhh]h)}(hpointer to ``media_entity``h](h pointer to }(hjhhhNhNubj)}(h``media_entity``h]h media_entity}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1hhjhM"hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM"hjubj )}(h@``struct media_interface *intf`` pointer to ``media_interface`` h](j )}(h ``struct media_interface *intf``h]j)}(hj3h]hstruct media_interface *intf}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(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)}(hpointer to ``media_interface``h](h pointer to }(hjLhhhNhNubj)}(h``media_interface``h]hmedia_interface}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubeh}(h]h ]h"]h$]h&]uh1hhjHhM#hjIubah}(h]h ]h"]h$]h&]uh1j hj-ubeh}(h]h ]h"]h$]h&]uh1j hjHhM#hjubj )}(hx``u32 flags`` Link flags, as defined in :ref:`include/uapi/linux/media.h ` ( seek for ``MEDIA_LNK_FL_*``) h](j )}(h ``u32 flags``h]j)}(hjzh]h u32 flags}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjxubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM&hjtubj)}(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 ](jstdstd-refeh"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftyperef refexplicitrefwarnj media_headeruh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM$hjubh ( seek for }(hjhhhNhNubj)}(h``MEDIA_LNK_FL_*``h]hMEDIA_LNK_FL_*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh)}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM$hjubah}(h]h ]h"]h$]h&]uh1j hjtubeh}(h]h ]h"]h$]h&]uh1j hjhM&hjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM(hjubh)}(hValid values for flags:h]hValid values for flags:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM'hjubj )}(hhh]j )}(hX``MEDIA_LNK_FL_ENABLED`` Indicates that the interface is connected to the entity hardware. That's the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware. A typical example is an hybrid TV device that handle only one type of stream on a given time. So, when the digital TV is streaming, the V4L2 interfaces won't be enabled, as such device is not able to also stream analog TV or radio. h](j )}(h``MEDIA_LNK_FL_ENABLED``h]j)}(hjh]hMEDIA_LNK_FL_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM2hjubj)}(hhh](h)}(hIndicates that the interface is connected to the entity hardware. That's the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware.h]hIndicates that the interface is connected to the entity hardware. That’s the default value for interfaces. An interface may be disabled if the hardware is busy due to the usage of some other interface that it is currently controlling the hardware.}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM*hj0ubh)}(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.}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM/hj0ubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj/hM2hjubah}(h]h ]h"]h$]h&]uh1j hjubj)}(hBefore calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.h]h)}(hBefore calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.h]hBefore calling this function, media_devnode_create() should be called for the interface and media_device_register_entity() should be called for the interface that will be part of the link.}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM6hjcubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j %__media_remove_intf_link (C function)c.__media_remove_intf_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(h7void __media_remove_intf_link (struct media_link *link)h]j )}(h6void __media_remove_intf_link(struct media_link *link)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMAubj8 )}(h__media_remove_intf_linkh]j> )}(h__media_remove_intf_linkh]h__media_remove_intf_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMAubj)}(h(struct media_link *link)h]j)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.__media_remove_intf_linkasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj%hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hlinkh]hlink}(hj2hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMAubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMAubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMAhjhhubjj )}(hhh]h)}(hremove a single interface linkh]hremove a single interface link}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMAhjYhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMAubeh}(h]h ](jfunctioneh"]h$]h&]j jj jtj jtj j 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')}(hj~h]h Parameters}(hjhhhNhNubah}(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.hhMEhjxubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMChjubj)}(hhh]h)}(h pointer to :c:type:`media_link`.h](h pointer to }(hjhhhNhNubh)}(h:c:type:`media_link`h]j)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjhMChjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMChjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMChjubah}(h]h ]h"]h$]h&]uh1j hjxubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMEhjxubj)}(h7This is an unlocked version of media_remove_intf_link()h]h)}(hjh]h7This is an unlocked version of media_remove_intf_link()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMDhjubah}(h]h ]h"]h$]h&]uh1jhjxubeh}(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}(hjIhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjEhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMJubj' )}(h h]h }(hjXhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjEhhhjWhMJubj8 )}(hmedia_remove_intf_linkh]j> )}(hmedia_remove_intf_linkh]hmedia_remove_intf_link}(hjjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjfubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjEhhhjWhMJubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjlsbc.media_remove_intf_linkasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj~ubah}(h]h ]h"]h$]h&]hhuh1jhjEhhhjWhMJubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjAhhhjWhMJubah}(h]j<ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjWhMJhj>hhubjj )}(hhh]h)}(hremove a single interface linkh]hremove a single interface link}(hj hhhNhNubah}(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&]uh1ji hj>hhhjWhMJubeh}(h]h ](jfunctioneh"]h$]h&]j jj j!j j!j j 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')}(hj+h]h Parameters}(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.hhMNhj%ubj )}(hhh]j )}(h=``struct media_link *link`` pointer to :c:type:`media_link`. h](j )}(h``struct media_link *link``h]j)}(hjJh]hstruct media_link *link}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMLhjDubj)}(hhh]h)}(h pointer to :c:type:`media_link`.h](h pointer to }(hjchhhNhNubh)}(h:c:type:`media_link`h]j)}(hjmh]h media_link}(hjohhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhj_hMLhjcubh.}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj_hMLhj`ubah}(h]h ]h"]h$]h&]uh1j hjDubeh}(h]h ]h"]h$]h&]uh1j hj_hMLhjAubah}(h]h ]h"]h$]h&]uh1j hj%ubh)}(h**Description**h]j')}(hjh]h Description}(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.hhMNhj%ubj)}(h=Prefer to use this one, instead of __media_remove_intf_link()h]h)}(hjh]h=Prefer to use this one, instead of __media_remove_intf_link()}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMMhjubah}(h]h ]h"]h$]h&]uh1jhj%ubeh}(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 )}(h )}(h__media_remove_intf_linksh]h__media_remove_intf_links}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMSubj)}(h(struct media_interface *intf)h]j)}(hstruct media_interface *intfh](j )}(hj h]hstruct}(hj3hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj/ubj' )}(h h]h }(hj@hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj/ubh)}(hhh]j> )}(hmedia_interfaceh]hmedia_interface}(hjQhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjNubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjSmodnameN classnameNjj)}j]j)}jjsbc.__media_remove_intf_linksasbuh1hhj/ubj' )}(h h]h }(hjqhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj/ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj/ubj> )}(hintfh]hintf}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj/ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj+ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMSubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMSubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMShjhhubjj )}(hhh]h)}(h-remove all links associated with an interfaceh]h-remove all links associated with an interface}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMShjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMSubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(h**Parameters** ``struct media_interface *intf`` pointer to :c:type:`media_interface` **Description** .. note:: This is an unlocked version of media_remove_intf_links().h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(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.hhMWhjubj )}(hhh]j )}(hF``struct media_interface *intf`` pointer to :c:type:`media_interface` h](j )}(h ``struct media_interface *intf``h]j)}(hjh]hstruct media_interface *intf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMUhjubj)}(hhh]h)}(h$pointer to :c:type:`media_interface`h](h pointer to }(hjhhhNhNubh)}(h:c:type:`media_interface`h]j)}(hjh]hmedia_interface}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhj hMUhjubeh}(h]h ]h"]h$]h&]uh1hhj hMUhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hMUhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjQh]h Description}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjOubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMWhjubj)}(h9This is an unlocked version of media_remove_intf_links().h]h)}(hjih]h9This is an unlocked version of media_remove_intf_links().}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMVhjgubah}(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 )}(h:void media_remove_intf_links(struct media_interface *intf)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM\ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM\ubj8 )}(hmedia_remove_intf_linksh]j> )}(hmedia_remove_intf_linksh]hmedia_remove_intf_links}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhM\ubj)}(h(struct media_interface *intf)h]j)}(hstruct media_interface *intfh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_interfaceh]hmedia_interface}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_remove_intf_linksasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj(hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hintfh]hintf}(hj5hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM\ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhM\ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhM\hjhhubjj )}(hhh]h)}(h-remove all links associated with an interfaceh]h-remove all links associated with 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&]uh1ji hjhhhjhM\ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jwj jwj j j uh1j hhhj hNhNubj )}(hXB**Parameters** ``struct media_interface *intf`` pointer to :c:type:`media_interface` **Description** .. note:: #) This is called automatically when an entity is unregistered via media_device_register_entity() and by media_devnode_remove(). #) Prefer to use this one, instead of __media_remove_intf_links().h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM`hj{ubj )}(hhh]j )}(hF``struct media_interface *intf`` pointer to :c:type:`media_interface` h](j )}(h ``struct media_interface *intf``h]j)}(hjh]hstruct media_interface *intf}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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 :c:type:`media_interface`h](h pointer to }(hjhhhNhNubh)}(h:c:type:`media_interface`h]j)}(hjh]hmedia_interface}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_interfaceuh1hhjhM^hjubeh}(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 hj{ubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM`hj{ubj)}(h#) This is called automatically when an entity is unregistered via media_device_register_entity() and by media_devnode_remove(). #) Prefer to use this one, instead of __media_remove_intf_links().h]j )}(hhh](j)}(h~This is called automatically when an entity is unregistered via media_device_register_entity() and by media_devnode_remove(). h]h)}(h}This is called automatically when an entity is unregistered via media_device_register_entity() and by media_devnode_remove().h]h}This is called automatically when an entity is unregistered via media_device_register_entity() and by media_devnode_remove().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMahjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h?Prefer to use this one, instead of __media_remove_intf_links().h]h)}(hj2h]h?Prefer to use this one, instead of __media_remove_intf_links().}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMdhj0ubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]j2!j3!j4!hj5!j6!uh1j hjubah}(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_entity_call (C macro)c.media_entity_callhNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_entity_callh]j )}(hmedia_entity_callh]j8 )}(hmedia_entity_callh]j> )}(hjnh]hmedia_entity_call}(hjxhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjtubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjphhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjlhhhjhMjubah}(h]jgah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMjhjihhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjihhhjhMjubeh}(h]h ](jmacroeh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubh)}(h2``media_entity_call (entity, operation, args...)``h]j)}(hjh]h.media_entity_call (entity, operation, args...)}(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.hhMlhj hhubj)}(h>Calls a struct media_entity_operations operation on an entity h]h)}(h=Calls a struct media_entity_operations operation on an entityh]h=Calls a struct media_entity_operations operation on an entity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMjhjubah}(h]h ]h"]h$]h&]uh1jhjhMjhj hhubj )}(hX**Parameters** ``entity`` entity where the **operation** will be called ``operation`` type of the operation. Should be the name of a member of struct :c:type:`media_entity_operations`. ``args...`` variable arguments **Description** This helper function will check if **operation** is not ``NULL``. On such case, it will issue a call to **operation**\(**entity**, **args**\).h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMnhjubj )}(hhh](j )}(h9``entity`` entity where the **operation** will be called h](j )}(h ``entity``h]j)}(hjh]hentity}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMmhjubj)}(hhh]h)}(h-entity where the **operation** will be calledh](hentity where the }(hjhhhNhNubj')}(h **operation**h]h operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh will be called}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMmhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMmhjubj )}(hq``operation`` type of the operation. Should be the name of a member of struct :c:type:`media_entity_operations`. h](j )}(h ``operation``h]j)}(hjIh]h operation}(hjKhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjGubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMohjCubj)}(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 }(hjbhhhNhNubh)}(h!:c:type:`media_entity_operations`h]j)}(hjlh]hmedia_entity_operations}(hjnhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjjmedia_entity_operationsuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMnhjbubh.}(hjbhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMnhj_ubah}(h]h ]h"]h$]h&]uh1j hjCubeh}(h]h ]h"]h$]h&]uh1j hj^hMohjubj )}(h``args...`` variable arguments h](j )}(h ``args...``h]j)}(hjh]hargs...}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjubj)}(hhh]h)}(hvariable argumentsh]hvariable arguments}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjubh)}(hThis helper function will check if **operation** is not ``NULL``. On such case, it will issue a call to **operation**\(**entity**, **args**\).h](h#This helper function will check if }(hjhhhNhNubj')}(h **operation**h]h operation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh is not }(hjhhhNhNubj)}(h``NULL``h]hNULL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh(. On such case, it will issue a call to }(hjhhhNhNubj')}(h **operation**h]h operation}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh(}(hjhhhNhNubj')}(h **entity**h]hentity}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh, }(hjhhhNhNubj')}(h**args**h]hargs}(hjGhhhNhNubah}(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.hhMphjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_create_ancillary_link (C function)c.media_create_ancillary_linkhNtauh1j hj hhhNhNubj )}(hhh](j )}(hnstruct media_link * media_create_ancillary_link (struct media_entity *primary, struct media_entity *ancillary)h]j )}(hlstruct media_link *media_create_ancillary_link(struct media_entity *primary, struct media_entity *ancillary)h](j )}(hj h]hstruct}(hjhhhNhNubah}(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.hhMzubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj|hhhjhMzubh)}(hhh]j> )}(h media_linkh]h media_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_create_ancillary_linksbc.media_create_ancillary_linkasbuh1hhj|hhhjhMzubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj|hhhjhMzubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj|hhhjhMzubj8 )}(hmedia_create_ancillary_linkh]j> )}(hjh]hmedia_create_ancillary_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj|hhhjhMzubj)}(h>(struct media_entity *primary, struct media_entity *ancillary)h](j)}(hstruct media_entity *primaryh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_create_ancillary_linkasbuh1hhjubj' )}(h h]h }(hj6hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjDhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hprimaryh]hprimary}(hjQhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_entity *ancillaryh](j )}(hj h]hstruct}(hjjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjfubj' )}(h h]h }(hjwhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjfubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_create_ancillary_linkasbuh1hhjfubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjfubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjfubj> )}(h ancillaryh]h ancillary}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjfubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhj|hhhjhMzubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjxhhhjhMzubah}(h]jsah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMzhjuhhubjj )}(hhh]h)}(hHcreate an ancillary link between two instances of :c:type:`media_entity`h](h2create an ancillary link between two instances of }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]jc.media_create_ancillary_linkasbj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhKhjubeh}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMzhjhhubah}(h]h ]h"]h$]h&]uh1ji hjuhhhjhMzubeh}(h]h ](jfunctioneh"]h$]h&]j jj j(j j(j j 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')}(hj2h]h Parameters}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj0ubah}(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 )}(hO``struct media_entity *primary`` pointer to the primary :c:type:`media_entity` h](j )}(h ``struct media_entity *primary``h]j)}(hjQh]hstruct media_entity *primary}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1jhjOubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM}hjKubj)}(hhh]h)}(h-pointer to the primary :c:type:`media_entity`h](hpointer to the primary }(hjjhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjth]h media_entity}(hjvhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjfhM}hjjubeh}(h]h ]h"]h$]h&]uh1hhjfhM}hjgubah}(h]h ]h"]h$]h&]uh1j hjKubeh}(h]h ]h"]h$]h&]uh1j hjfhM}hjHubj )}(hS``struct media_entity *ancillary`` pointer to the ancillary :c:type:`media_entity` h](j )}(h"``struct media_entity *ancillary``h]j)}(hjh]hstruct media_entity *ancillary}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhM~hjubj)}(hhh]h)}(h/pointer to the ancillary :c:type:`media_entity`h](hpointer to the ancillary }(hjhhhNhNubh)}(h:c:type:`media_entity`h]j)}(hjh]h media_entity}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjhM~hjubeh}(h]h ]h"]h$]h&]uh1hhjhM~hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM~hjHubeh}(h]h ]h"]h$]h&]uh1j hj,ubh)}(h**Description**h]j')}(hjh]h Description}(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,ubh)}(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.hhMhj,ubh)}(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.}(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_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}(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.hhMubj' )}(h h]h }(hjehhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjShhhjdhMubh)}(hhh]j> )}(h media_linkh]h media_link}(hjvhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjsubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjxmodnameN classnameNjj)}j]j)}j__media_entity_next_linksbc.__media_entity_next_linkasbuh1hhjShhhjdhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjShhhjdhMubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjShhhjdhMubj8 )}(h__media_entity_next_linkh]j> )}(hjh]h__media_entity_next_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjShhhjdhMubj)}(hO(struct media_entity *entity, struct media_link *link, unsigned long link_type)h](j)}(hstruct media_entity *entityh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_entityh]h media_entity}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.__media_entity_next_linkasbuh1hhjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hentityh]hentity}(hj(hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hstruct media_link *linkh](j )}(hj h]hstruct}(hjAhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj=ubj' )}(h h]h }(hjNhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj=ubh)}(hhh]j> )}(h media_linkh]h media_link}(hj_hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj\ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjamodnameN classnameNjj)}j]jc.__media_entity_next_linkasbuh1hhj=ubj' )}(h h]h }(hj}hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj=ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj=ubj> )}(hlinkh]hlink}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj=ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hunsigned long link_typeh](j`)}(hunsignedh]hunsigned}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj`)}(hlongh]hlong}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(h link_typeh]h link_type}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjShhhjdhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjOhhhjdhMubah}(h]jJah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjdhMhjLhhubjj )}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}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&]uh1ji hjLhhhjdhMubeh}(h]h ](jfunctioneh"]h$]h&]j jj jSj jSj j 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')}(hj]h]h Parameters}(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.hhMhjWubj )}(hhh](j )}(hF``struct media_entity *entity`` pointer to the :c:type:`media_entity` h](j )}(h``struct media_entity *entity``h]j)}(hj|h]hstruct media_entity *entity}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjzubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjvubj)}(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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjvubeh}(h]h ]h"]h$]h&]uh1j hjhMhjsubj )}(hZ``struct media_link *link`` pointer to a :c:type:`media_link` to hold the iterated values h](j )}(h``struct media_link *link``h]j)}(hjh]hstruct media_link *link}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h=pointer to a :c:type:`media_link` to hold the iterated valuesh](h pointer to a }(hjhhhNhNubh)}(h:c:type:`media_link`h]j)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjhMhjubh to hold the iterated values}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjsubj )}(hD``unsigned long link_type`` one of the MEDIA_LNK_FL_LINK_TYPE flags h](j )}(h``unsigned long link_type``h]j)}(hj0h]hunsigned long link_type}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.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'one of the MEDIA_LNK_FL_LINK_TYPE flagsh]h'one of the MEDIA_LNK_FL_LINK_TYPE flags}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjEhMhjFubah}(h]h ]h"]h$]h&]uh1j hj*ubeh}(h]h ]h"]h$]h&]uh1j hjEhMhjsubeh}(h]h ]h"]h$]h&]uh1j hjWubh)}(h**Description**h]j')}(hjkh]h Description}(hjmhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjiubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjWubh)}(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.hhMhjWubeh}(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]j8 )}(hfor_each_media_entity_data_linkh]j> )}(hjh]hfor_each_media_entity_data_link}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMubah}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(hhh]h}(h]h ]h"]h$]h&]uh1ji hjhhhjhMubeh}(h]h ](jmacroeh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubh)}(h2``for_each_media_entity_data_link (entity, link)``h]j)}(hjh]h.for_each_media_entity_data_link (entity, link)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj hhubj)}(h'Iterate through an entity's data links h]h)}(h&Iterate through an entity's data linksh]h(Iterate through an entity’s data links}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubah}(h]h ]h"]h$]h&]uh1jhjhMhj hhubj )}(h**Parameters** ``entity`` pointer to the :c:type:`media_entity` ``link`` pointer to a :c:type:`media_link` to hold the iterated values **Description** Iterate over a :c:type:`media_entity`'s data linksh](h)}(h**Parameters**h]j')}(hjh]h Parameters}(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.hhMhjubj )}(hhh](j )}(h1``entity`` pointer to the :c:type:`media_entity` h](j )}(h ``entity``h]j)}(hj:h]hentity}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj8ubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhj4ubj)}(hhh]h)}(h%pointer to the :c:type:`media_entity`h](hpointer to the }(hjShhhNhNubh)}(h:c:type:`media_entity`h]j)}(hj]h]h media_entity}(hj_hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhjOhMhjSubeh}(h]h ]h"]h$]h&]uh1hhjOhMhjPubah}(h]h ]h"]h$]h&]uh1j hj4ubeh}(h]h ]h"]h$]h&]uh1j hjOhMhj1ubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubj)}(hhh]h)}(h=pointer to a :c:type:`media_link` to hold the iterated valuesh](h pointer to a }(hjhhhNhNubh)}(h:c:type:`media_link`h]j)}(hjh]h media_link}(hjhhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_linkuh1hhjhMhjubh to hold the iterated values}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhj1ubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(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.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 ](jjc-typeeh"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_entityuh1hhf/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:337: ./include/media/media-entity.hhMhjubh’s data links}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj-hMhjubeh}(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 )}(hjgIh]henum}(hjXhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjThhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj' )}(h h]h }(hjfhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjThhhjehKubj8 )}(hmedia_request_stateh]j> )}(hjRh]hmedia_request_state}(hjxhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjtubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjThhhjehKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjPhhhjehKubah}(h]jKah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjehKhjMhhubjj )}(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&]uh1ji hjMhhhjehKubeh}(h]h ](jenumeh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX5**Constants** ``MEDIA_REQUEST_STATE_IDLE`` Idle ``MEDIA_REQUEST_STATE_VALIDATING`` Validating the request, no state changes allowed ``MEDIA_REQUEST_STATE_QUEUED`` Queued ``MEDIA_REQUEST_STATE_COMPLETE`` Completed, the request is done ``MEDIA_REQUEST_STATE_CLEANING`` Cleaning, the request is being re-inited ``MEDIA_REQUEST_STATE_UPDATING`` The request is being updated, i.e. request objects are being added, modified or removed ``NR_OF_MEDIA_REQUEST_STATE`` The number of media request states, used internally for sanity check purposesh](h)}(h **Constants**h]j')}(hjh]h Constants}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh](j )}(h"``MEDIA_REQUEST_STATE_IDLE`` Idle h](j )}(h``MEDIA_REQUEST_STATE_IDLE``h]j)}(hjh]hMEDIA_REQUEST_STATE_IDLE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj)}(hhh]h)}(hIdleh]hIdle}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubj )}(hT``MEDIA_REQUEST_STATE_VALIDATING`` Validating the request, no state changes allowed h](j )}(h"``MEDIA_REQUEST_STATE_VALIDATING``h]j)}(hjh]hMEDIA_REQUEST_STATE_VALIDATING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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}(hj-hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK!hj*ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj)hK"hjubj )}(h&``MEDIA_REQUEST_STATE_QUEUED`` Queued h](j )}(h``MEDIA_REQUEST_STATE_QUEUED``h]j)}(hjNh]hMEDIA_REQUEST_STATE_QUEUED}(hjPhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjLubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK%hjHubj)}(hhh]h)}(hQueuedh]hQueued}(hjghhhNhNubah}(h]h ]h"]h$]h&]uh1hhjchK%hjdubah}(h]h ]h"]h$]h&]uh1j hjHubeh}(h]h ]h"]h$]h&]uh1j hjchK%hjubj )}(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&]uh1jhjubah}(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(hjubj )}(hJ``MEDIA_REQUEST_STATE_CLEANING`` Cleaning, the request is being re-inited h](j )}(h ``MEDIA_REQUEST_STATE_CLEANING``h]j)}(hjh]hMEDIA_REQUEST_STATE_CLEANING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK+hjubj)}(hhh]h)}(h(Cleaning, the request is being re-initedh]h(Cleaning, the request is being re-inited}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK+hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK+hjubj )}(hy``MEDIA_REQUEST_STATE_UPDATING`` The request is being updated, i.e. request objects are being added, modified or removed h](j )}( h ``MEDIA_REQUEST_STATE_UPDATING``h]j)}(hjh]hMEDIA_REQUEST_STATE_UPDATING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK0hjubj)}(hhh]h)}(hWThe request is being updated, i.e. request objects are being added, modified or removedh]hWThe request is being updated, i.e. request objects are being added, modified or removed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK.hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK0hjubj )}(hk``NR_OF_MEDIA_REQUEST_STATE`` The number of media request states, used internally for sanity check purposesh](j )}(h``NR_OF_MEDIA_REQUEST_STATE``h]j)}(hj3h]hNR_OF_MEDIA_REQUEST_STATE}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK3hj-ubj)}(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}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjHhK3hjIubah}(h]h ]h"]h$]h&]uh1j hj-ubeh}(h]h ]h"]h$]h&]uh1j hjHhK3hjubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request (C struct)c.media_requesthNtauh1j hj hhhNhNubj )}(hhh](j )}(h media_requesth]j )}(hstruct media_requesth](j )}(hj h]hstruct}(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.hhK9ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhK9ubj8 )}(h media_requesth]j> )}(hjh]h media_request}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhK9ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhK9ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhK9hjhhubjj )}(hhh]h)}(hMedia device requesth]hMedia device request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK2hjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhK9ubeh}(h]h ](jstructeh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Definition**:: struct media_request { struct media_device *mdev; struct kref kref; char debug_str[TASK_COMM_LEN + 11]; enum media_request_state state; unsigned int updating_count; unsigned int access_count; struct list_head objects; unsigned int num_incomplete_objects; bool manual_completion; wait_queue_head_t poll_wait; spinlock_t lock; }; **Members** ``mdev`` Media device this request belongs to ``kref`` Reference count ``debug_str`` Prefix for debug messages (process name:fd) ``state`` The state of the request ``updating_count`` count the number of request updates that are in progress ``access_count`` count the number of request accesses that are in progress ``objects`` List of **struct** media_request_object request objects ``num_incomplete_objects`` The number of incomplete objects in the request ``manual_completion`` if true, then the request won't be marked as completed when **num_incomplete_objects** reaches 0. Call media_request_manual_complete() to complete the request after **num_incomplete_objects** == 0. ``poll_wait`` Wait queue for poll ``lock`` Serializes access to this structh](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK6hjubj)}(hXsstruct media_request { struct media_device *mdev; struct kref kref; char debug_str[TASK_COMM_LEN + 11]; enum media_request_state state; unsigned int updating_count; unsigned int access_count; struct list_head objects; unsigned int num_incomplete_objects; bool manual_completion; wait_queue_head_t poll_wait; spinlock_t lock; };h]hXsstruct media_request { struct media_device *mdev; struct kref kref; char debug_str[TASK_COMM_LEN + 11]; enum media_request_state state; unsigned int updating_count; unsigned int access_count; struct list_head objects; unsigned int num_incomplete_objects; bool manual_completion; wait_queue_head_t poll_wait; spinlock_t lock; };}hj sbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK8hjubh)}(h **Members**h]j')}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKFhjubj )}(hhh](j )}(h.``mdev`` Media device this request belongs to h](j )}(h``mdev``h]j)}(hj;h]hmdev}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj9ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK4hj5ubj)}(hhh]h)}(h$Media device this request belongs toh]h$Media device this request belongs to}(hjThhhNhNubah}(h]h ]h"]h$]h&]uh1hhjPhK4hjQubah}(h]h ]h"]h$]h&]uh1j hj5ubeh}(h]h ]h"]h$]h&]uh1j hjPhK4hj2ubj )}(h``kref`` Reference count h](j )}(h``kref``h]j)}(hjth]hkref}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjrubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK5hjnubj)}(hhh]h)}(hReference counth]hReference count}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK5hjubah}(h]h ]h"]h$]h&]uh1j hjnubeh}(h]h ]h"]h$]h&]uh1j hjhK5hj2ubj )}(h:``debug_str`` Prefix for debug messages (process name:fd) h](j )}(h ``debug_str``h]j)}(hjh]h debug_str}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK6hjubj)}(hhh]h)}(h+Prefix for debug messages (process name:fd)h]h+Prefix for debug messages (process name:fd)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK6hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK6hj2ubj )}(h#``state`` The state of the request h](j )}(h ``state``h]j)}(hjh]hstate}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK7hjubj)}(hhh]h)}(hThe state of the requesth]hThe state of the request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK7hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK7hj2ubj )}(hL``updating_count`` count the number of request updates that are in progress h](j )}(h``updating_count``h]j)}(hjh]hupdating_count}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj4hK8hj5ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj4hK8hj2ubj )}(hK``access_count`` count the number of request accesses that are in progress h](j )}(h``access_count``h]j)}(hjXh]h access_count}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK9hjRubj)}(hhh]h)}(h9count the number of request accesses that are in progressh]h9count the number of request accesses that are in progress}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjmhK9hjnubah}(h]h ]h"]h$]h&]uh1j hjRubeh}(h]h ]h"]h$]h&]uh1j hjmhK9hj2ubj )}(hD``objects`` List of **struct** media_request_object request objects h](j )}(h ``objects``h]j)}(hjh]hobjects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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)}(h7List of **struct** media_request_object request objectsh](hList of }(hjhhhNhNubj')}(h **struct**h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh% media_request_object request objects}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhK:hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK:hj2ubj )}(hK``num_incomplete_objects`` The number of incomplete objects in the request h](j )}(h``num_incomplete_objects``h]j)}(hjh]hnum_incomplete_objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK;hjubj)}(hhh]h)}(h/The number of incomplete objects in the requesth]h/The number of incomplete objects in the request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK;hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK;hj2ubj )}(h``manual_completion`` if true, then the request won't be marked as completed when **num_incomplete_objects** reaches 0. Call media_request_manual_complete() to complete the request after **num_incomplete_objects** == 0. h](j )}(h``manual_completion``h]j)}(hjh]hmanual_completion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK>hjubj)}(hhh]h)}(hif true, then the request won't be marked as completed when **num_incomplete_objects** reaches 0. Call media_request_manual_complete() to complete the request after **num_incomplete_objects** == 0.h](h>if true, then the request won’t be marked as completed when }(hj.hhhNhNubj')}(h**num_incomplete_objects**h]hnum_incomplete_objects}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj.ubhO reaches 0. Call media_request_manual_complete() to complete the request after }(hj.hhhNhNubj')}(h**num_incomplete_objects**h]hnum_incomplete_objects}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj.ubh == 0.}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj2ubj )}(h"``poll_wait`` Wait queue for poll h](j )}(h ``poll_wait``h]j)}(hjsh]h poll_wait}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjqubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK?hjmubj)}(hhh]h)}(hWait queue for pollh]hWait queue for poll}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhK?hjubah}(h]h ]h"]h$]h&]uh1j hjmubeh}(h]h ]h"]h$]h&]uh1j hjhK?hj2ubj )}(h)``lock`` Serializes access to this structh](j )}(h``lock``h]j)}(hjh]hlock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK?hjubj)}(hhh]h)}(h Serializes access to this structh]h Serializes access to this struct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK@hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhK?hj2ubeh}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j *media_request_lock_for_access (C function)c.media_request_lock_for_accesshNtauh1j hj hhhNhNubj )}(hhh](j )}(h=int media_request_lock_for_access (struct media_request *req)h]j )}(h )}(hmedia_request_lock_for_accessh]hmedia_request_lock_for_access}(hj'hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj#ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhKRubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjChhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj?ubj' )}(h h]h }(hjPhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj?ubh)}(hhh]j> )}(h media_requesth]h media_request}(hjahhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNjj)}j]j)}jj)sbc.media_request_lock_for_accessasbuh1hhj?ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj?ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj> )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj?ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj;ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKRubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhKRubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhKRhjhhubjj )}(hhh]h)}(h&Lock the request to access its objectsh]h&Lock the request to access its objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKRhjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhKRubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX)**Parameters** ``struct media_request *req`` The media request **Description** Use 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](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKVhjubj )}(hhh]j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j)}(hjh]hstruct media_request *req}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKThjubj)}(hhh]h)}(hThe media requesth]hThe media request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKThjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKThjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjBh]h Description}(hjDhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj@ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKVhjubh)}(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 }(hjXhhhNhNubj')}(h#**media_request_unlock_for_access**h]hmedia_request_unlock_for_access}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjXubh when done.}(hjXhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKUhjubeh}(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 ]jlah"]h$]h&]uh1j_hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKkubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhKkubj8 )}(hmedia_request_unlock_for_accessh]j> )}(hmedia_request_unlock_for_accessh]hmedia_request_unlock_for_access}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhKkubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb!c.media_request_unlock_for_accessasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hreqh]hreq}(hj/hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKkubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhKkubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhKkhjhhubjj )}(hhh]h)}(h-Unlock a request previously locked for accessh]h-Unlock a request previously locked for access}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKkhjVhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhKkubeh}(h]h ](jfunctioneh"]h$]h&]j jj jqj jqj j 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')}(hj{h]h Parameters}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjyubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKohjuubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKnhjubj)}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKnhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKnhjubah}(h]h ]h"]h$]h&]uh1j hjuubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKphjuubh)}(hYUnlock a request that has previously been locked using **media_request_lock_for_access**.h](h7Unlock a request that has previously been locked using }(hjhhhNhNubj')}(h!**media_request_lock_for_access**h]hmedia_request_lock_for_access}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKohjuubeh}(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 )}(h )}(hmedia_request_lock_for_updateh]hmedia_request_lock_for_update}(hjMhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjIubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj(hhhj:hK~ubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjihhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjeubj' )}(h h]h }(hjvhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjeubh)}(hhh]j> )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjOsbc.media_request_lock_for_updateasbuh1hhjeubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjeubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjeubj> )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjeubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjaubah}(h]h ]h"]h$]h&]hhuh1jhj(hhhj:hK~ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj$hhhj:hK~ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj:hK~hj!hhubjj )}(hhh]h)}(h)Lock the request for updating its objectsh]h)Lock the request for updating its objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhK~hjhhubah}(h]h ]h"]h$]h&]uh1ji hj!hhhj:hK~ubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hXY**Parameters** ``struct media_request *req`` The media request **Description** Use before updating a request, i.e. adding, modifying or removing a request object in it. A reference to the request must be held during the update. This usually takes place automatically through a file handle. Use **media_request_unlock_for_update** when done.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj )}(hhh]j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j)}(hj-h]hstruct media_request *req}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+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)}(hThe media requesth]hThe media request}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjBhKhjCubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hjBhKhj$ubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjhh]h Description}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjfubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hXUse before updating a request, i.e. adding, modifying or removing a request object in it. A reference to the request must be held during the update. This usually takes place automatically through a file handle. Use **media_request_unlock_for_update** when done.h](hUse before updating a request, i.e. adding, modifying or removing a request object in it. A reference to the request must be held during the update. This usually takes place automatically through a file handle. Use }(hj~hhhNhNubj')}(h#**media_request_unlock_for_update**h]hmedia_request_unlock_for_update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj~ubh when done.}(hj~hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j ,media_request_unlock_for_update (C function)!c.media_request_unlock_for_updatehNtauh1j hj hhhNhNubj )}(hhh](j )}(h@void media_request_unlock_for_update (struct media_request *req)h]j )}(h?void media_request_unlock_for_update(struct media_request *req)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhKubj8 )}(hmedia_request_unlock_for_updateh]j> )}(hmedia_request_unlock_for_updateh]hmedia_request_unlock_for_update}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsb!c.media_request_unlock_for_updateasbuh1hhjubj' )}(h h]h }(hj:hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjHhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hreqh]hreq}(hjUhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhKubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhKhjhhubjj )}(hhh]h)}(h-Unlock a request previously locked for updateh]h-Unlock a request previously locked for update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj|hhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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_update**.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj)}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hYUnlock a request that has previously been locked using **media_request_lock_for_update**.h](h7Unlock a request that has previously been locked using }(hjhhhNhNubj')}(h!**media_request_lock_for_update**h]hmedia_request_lock_for_update}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh.}(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_get (C function)c.media_request_gethNtauh1j hj hhhNhNubj )}(hhh](j )}(h2void media_request_get (struct media_request *req)h]j )}(h1void media_request_get(struct media_request *req)h](j`)}(hvoidh]hvoid}(hjRhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjNhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj' )}(h h]h }(hjahhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjNhhhj`hKubj8 )}(hmedia_request_geth]j> )}(hmedia_request_geth]hmedia_request_get}(hjshhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjoubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjNhhhj`hKubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjusbc.media_request_getasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjNhhhj`hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjJhhhj`hKubah}(h]jEah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj`hKhjGhhubjj )}(hhh]h)}(hGet the media requesth]hGet the media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjhhubah}(h]h ]h"]h$]h&]uh1ji hjGhhhj`hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj j*j j*j j j uh1j hhhj hNhNubj )}(hj**Parameters** ``struct media_request *req`` The media request **Description** Get the media request.h](h)}(h**Parameters**h]j')}(hj4h]h Parameters}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj2ubah}(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 )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j)}(hjSh]hstruct media_request *req}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjMubj)}(hhh]h)}(hThe media requesth]hThe media request}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhKhjiubah}(h]h ]h"]h$]h&]uh1j hjMubeh}(h]h ]h"]h$]h&]uh1j hjhhKhjJubah}(h]h ]h"]h$]h&]uh1j hj.ubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj.ubh)}(hGet the media request.h]hGet the media request.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj.ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request_put (C function)c.media_request_puthNtauh1j hj hhhNhNubj )}(hhh](j )}(h2void media_request_put (struct media_request *req)h]j )}(h1void media_request_put(struct media_request *req)h](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hjhhhjhKubj8 )}(hmedia_request_puth]j> )}(hmedia_request_puth]hmedia_request_put}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubh)}(hhh]j> )}(h media_requesth]h media_request}(hj.hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj+ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj0modnameN classnameNjj)}j]j)}jjsbc.media_request_putasbuh1hhj ubj' )}(h h]h }(hjNhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubj)}(hjh]h*}(hj\hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj> )}(hreqh]hreq}(hjihhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhKubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhKhjhhubjj )}(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&]uh1ji hjhhhjhKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj)}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhKhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj 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.}(hj%hhhNhNubah}(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}(hjThhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjPhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKubj' )}(h h]h }(hjbhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjPhhhjahKubh)}(hhh]j> )}(h media_requesth]h media_request}(hjshhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjpubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjumodnameN classnameNjj)}j]j)}jmedia_request_get_by_fdsbc.media_request_get_by_fdasbuh1hhjPhhhjahKubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjPhhhjahKubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjPhhhjahKubj8 )}(hmedia_request_get_by_fdh]j> )}(hjh]hmedia_request_get_by_fd}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjPhhhjahKubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_request_get_by_fdasbuh1hhjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hmdevh]hmdev}(hj%hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hint request_fdh](j`)}(hinth]hint}(hj>hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj:ubj' )}(h h]h }(hjLhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj:ubj> )}(h request_fdh]h request_fd}(hjZhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj:ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjPhhhjahKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjLhhhjahKubah}(h]jGah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjahKhjIhhubjj )}(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&]uh1ji hjIhhhjahKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(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&]uh1jhjubah}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubj)}(hhh]h)}(h"The file descriptor of the requesth]h"The file descriptor of the request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj hKhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hj9 h]h Description}(hj; hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj7 ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hPGet the request represented by **request_fd** that is owned by the media device.h](hGet the request represented by }(hjO hhhNhNubj')}(h**request_fd**h]h request_fd}(hjW hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjO ubh# that is owned by the media device.}(hjO hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubh)}(hReturn a -EBADR error pointer if requests are not supported by this driver. Return -EINVAL if the request was not found. Return the pointer to the request if found: the caller will have to call **media_request_put** when it finished using the request.h](hReturn a -EBADR error pointer if requests are not supported by this driver. Return -EINVAL if the request was not found. Return the pointer to the request if found: the caller will have to call }(hjp hhhNhNubj')}(h**media_request_put**h]hmedia_request_put}(hjx hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjp ubh$ when it finished using the request.}(hjp hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request_alloc (C function)c.media_request_allochNtauh1j hj hhhNhNubj )}(hhh](j )}(hBint media_request_alloc (struct media_device *mdev, int *alloc_fd)h]j )}(hAint media_request_alloc(struct media_device *mdev, int *alloc_fd)h](j`)}(hinth]hint}(hj hhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hj hhhj hKubj8 )}(hmedia_request_alloch]j> )}(hmedia_request_alloch]hmedia_request_alloc}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj hhhj hKubj)}(h*(struct media_device *mdev, int *alloc_fd)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj ubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.media_request_allocasbuh1hhj ubj' )}(h h]h }(hj, hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubj)}(hjh]h*}(hj: hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj> )}(hmdevh]hmdev}(hjG hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubj)}(h int *alloc_fdh](j`)}(hinth]hint}(hj` hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj\ ubj' )}(h h]h }(hjn hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj\ ubj)}(hjh]h*}(hj| hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj\ ubj> )}(halloc_fdh]halloc_fd}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj\ ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubeh}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj hhhj hKubah}(h]j ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj hKhj hhubjj )}(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&]uh1ji hj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj j j j j j 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&]uh1j&hj 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&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj)}(hhh]h)}(h$Media device this request belongs toh]h$Media device this request belongs to}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubj )}(hB``int *alloc_fd`` Store the request's file descriptor in this int h](j )}(h``int *alloc_fd``h]j)}(hj- h]h int *alloc_fd}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj' ubj)}(hhh]h)}(h/Store the request's file descriptor in this inth]h1Store the request’s file descriptor in this int}(hjF hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjB hKhjC ubah}(h]h ]h"]h$]h&]uh1j hj' ubeh}(h]h ]h"]h$]h&]uh1j hjB hKhj ubeh}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j')}(hjh h]h Description}(hjj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjf 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&]uh1j&hj~ 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 1media_request_mark_manual_completion (C function)&c.media_request_mark_manual_completionhNtauh1j hj hhhNhNubj )}(hhh](j )}(hEvoid media_request_mark_manual_completion (struct media_request *req)h]j )}(hDvoid media_request_mark_manual_completion(struct media_request *req)h](j`)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jlah"]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 ]j3 ah"]h$]h&]uh1j& hj hhhj hKubj8 )}(h$media_request_mark_manual_completionh]j> )}(h$media_request_mark_manual_completionh]h$media_request_mark_manual_completion}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj hhhj hKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj ubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubh)}(hhh]j> )}(h media_requesth]h media_request}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sb&c.media_request_mark_manual_completionasbuh1hhj ubj' )}(h h]h }(hj: hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubj)}(hjh]h*}(hjH hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj> )}(hreqh]hreq}(hjU hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj hhhj hKubah}(h]j ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj hKhj hhubjj )}(hhh]h)}(hEnable manual completionh]hEnable manual completion}(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&]uh1ji hj hhhj hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj j j j j j j uh1j hhhj hNhNubj )}(h**Parameters** ``struct media_request *req`` The request **Description** Mark that the request has to be manually completed by calling media_request_manual_complete(). This function shall be called in the req_queue callback.h](h)}(h**Parameters**h]j')}(hj h]h Parameters}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj )}(hhh]j )}(h*``struct media_request *req`` The request h](j )}(h``struct media_request *req``h]j)}(hj h]hstruct media_request *req}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubj)}(hhh]h)}(h The requesth]h The request}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubeh}(h]h ]h"]h$]h&]uh1j hj hKhj ubah}(h]h ]h"]h$]h&]uh1j hj ubh)}(h**Description**h]j')}(hj h]h Description}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubh)}(h^Mark that the request has to be manually completed by calling media_request_manual_complete().h]h^Mark that the request has to be manually completed by calling media_request_manual_complete().}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubh)}(h8This function shall be called in the req_queue callback.h]h8This function shall be called in the req_queue callback.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j *media_request_manual_complete (C function)c.media_request_manual_completehNtauh1j hj hhhNhNubj )}(hhh](j )}(h>void media_request_manual_complete (struct media_request *req)h]j )}(h=void media_request_manual_complete(struct media_request *req)h](j`)}(hvoidh]hvoid}(hjO hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjK 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 ]j3 ah"]h$]h&]uh1j& hjK hhhj] hKubj8 )}(hmedia_request_manual_completeh]j> )}(hmedia_request_manual_completeh]hmedia_request_manual_complete}(hjp hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjl ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjK hhhj] hKubj)}(h(struct media_request *req)h]j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj ubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubh)}(hhh]j> )}(h media_requesth]h media_request}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjr sbc.media_request_manual_completeasbuh1hhj ubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj> )}(hreqh]hreq}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj ubah}(h]h ]h"]h$]h&]hhuh1jhjK hhhj] hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjG hhhj] hKubah}(h]jB ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj] hKhjD hhubjj )}(hhh]h)}(hMark the request as completedh]hMark the request as completed}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj hhubah}(h]h ]h"]h$]h&]uh1ji hjD hhhj] hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj j'j j'j j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_request *req`` The request **Description** This function completes a request that was marked for manual completion by an earlier call to media_request_mark_manual_completion(). The request's **manual_completion** field is reset to false. All objects contained in the request must have been completed previously. It is an error to call this function otherwise. If such an error occurred, the function will WARN and the object completion will be delayed until **num_incomplete_objects** is 0.h](h)}(h**Parameters**h]j')}(hj1h]h Parameters}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj/ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj+ubj )}(hhh]j )}(h*``struct media_request *req`` The request Qh](j )}(h``struct media_request *req``h]j)}(hjPh]hstruct media_request *req}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjNubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhjJubj)}(hhh]h)}(h The requesth]h The request}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1hhjehKhjfubah}(h]h ]h"]h$]h&]uh1j hjJubeh}(h]h ]h"]h$]h&]uh1j hjehKhjGubah}(h]h ]h"]h$]h&]uh1j hj+ubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj+ubh)}(hThis function completes a request that was marked for manual completion by an earlier call to media_request_mark_manual_completion(). The request's **manual_completion** field is reset to false.h](hThis function completes a request that was marked for manual completion by an earlier call to media_request_mark_manual_completion(). The request’s }(hjhhhNhNubj')}(h**manual_completion**h]hmanual_completion}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh field is reset to false.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhKhj+ubh)}(hAll objects contained in the request must have been completed previously. It is an error to call this function otherwise. If such an error occurred, the function will WARN and the object completion will be delayed until **num_incomplete_objects** is 0.h](hAll objects contained in the request must have been completed previously. It is an error to call this function otherwise. If such an error occurred, the function will WARN and the object completion will be delayed until }(hjhhhNhNubj')}(h**num_incomplete_objects**h]hnum_incomplete_objects}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh is 0.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.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}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMubj8 )}(hmedia_request_object_opsh]j> )}(hjh]hmedia_request_object_ops}(hj#hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMhjhhubjj )}(hhh]h)}(hMedia request object operationsh]hMedia request object operations}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjBhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMubeh}(h]h ](jstructeh"]h$]h&]j jj j]j j]j j 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}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjeubh:}(hjehhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjaubj)}(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); };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjaubh)}(h **Members**h]j')}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM"hjaubj )}(hhh](j )}(h?``prepare`` Validate and prepare the request object, optional. h](j )}(h ``prepare``h]j)}(hjh]hprepare}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubj)}(hhh]h)}(h2Validate and prepare the request object, optional.h]h2Validate and prepare the request object, optional.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h6``unprepare`` Unprepare the request object, optional. h](j )}(h ``unprepare``h]j)}(hjh]h unprepare}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubj)}(hhh]h)}(h'Unprepare the request object, optional.h]h'Unprepare the request object, optional.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubj )}(h.``queue`` Queue the request object, optional. h](j )}(h ``queue``h]j)}(hj$h]hqueue}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj"ubah}(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#Queue the request object, optional.h]h#Queue the request object, optional.}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hMhj:ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hj9hMhjubj )}(h0``unbind`` Unbind the request object, optional. h](j )}(h ``unbind``h]j)}(hj]h]hunbind}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjWubj)}(hhh]h)}(h$Unbind the request object, optional.h]h$Unbind the request object, optional.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjsubah}(h]h ]h"]h$]h&]uh1j hjWubeh}(h]h ]h"]h$]h&]uh1j hjrhMhjubj )}(h1``release`` Release the request object, required.h](j )}(h ``release``h]j)}(hjh]hrelease}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(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%Release the request object, required.h]h%Release the request object, required.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMhjubeh}(h]h ]h"]h$]h&]uh1j hjaubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j media_request_object (C struct)c.media_request_objecthNtauh1j hj hhhNhNubj )}(hhh](j )}(hmedia_request_objecth]j )}(hstruct media_request_objecth](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM ubj8 )}(hmedia_request_objecth]j> )}(hjh]hmedia_request_object}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhM ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhM ubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhM hjhhubjj )}(hhh]h)}(h0An opaque object that belongs to a media requesth]h0An opaque object that belongs to a media request}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM$hj/hhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhM ubeh}(h]h ](jstructeh"]h$]h&]j jj jJj jJj j j uh1j hhhj hNhNubj )}(hX**Definition**:: struct media_request_object { struct media_device *mdev; const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; }; **Members** ``mdev`` Media device this object belongs to ``ops`` object's operations ``priv`` object's priv pointer ``req`` the request this object belongs to (can be NULL) ``list`` List entry of the object for **struct** media_request ``kref`` Reference count of the object, acquire before releasing req->lock ``completed`` If true, then this object was completed.h](h)}(h**Definition**::h](j')}(h**Definition**h]h Definition}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjRubh:}(hjRhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM(hjNubj)}(hstruct media_request_object { struct media_device *mdev; const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; };h]hstruct media_request_object { struct media_device *mdev; const struct media_request_object_ops *ops; void *priv; struct media_request *req; struct list_head list; struct kref kref; bool completed; };}hjosbah}(h]h ]h"]h$]h&]hhuh1jhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM*hjNubh)}(h **Members**h]j')}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj~ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM4hjNubj )}(hhh](j )}(h-``mdev`` Media device this object belongs to h](j )}(h``mdev``h]j)}(hjh]hmdev}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM(hjubj)}(hhh]h)}(h#Media device this object belongs toh]h#Media device this object belongs to}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM(hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM(hjubj )}(h``ops`` object's operations h](j )}(h``ops``h]j)}(hjh]hops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM)hjubj)}(hhh]h)}(hobject's operationsh]hobject’s operations}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM)hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM)hjubj )}(h``priv`` object's priv pointer h](j )}(h``priv``h]j)}(hjh]hpriv}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM*hj ubj)}(hhh]h)}(hobject's priv pointerh]hobject’s priv pointer}(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*hjubj )}(h9``req`` the request this object belongs to (can be NULL) h](j )}(h``req``h]j)}(hjJh]hreq}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM+hjDubj)}(hhh]h)}(h0the request this object belongs to (can be NULL)h]h0the request this object belongs to (can be NULL)}(hjchhhNhNubah}(h]h ]h"]h$]h&]uh1hhj_hM+hj`ubah}(h]h ]h"]h$]h&]uh1j hjDubeh}(h]h ]h"]h$]h&]uh1j hj_hM+hjubj )}(h?``list`` List entry of the object for **struct** media_request h](j )}(h``list``h]j)}(hjh]hlist}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM,hj}ubj)}(hhh]h)}(h5List entry of the object for **struct** media_requesth](hList entry of the object for }(hjhhhNhNubj')}(h **struct**h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh media_request}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhjhM,hjubah}(h]h ]h"]h$]h&]uh1j hj}ubeh}(h]h ]h"]h$]h&]uh1j hjhM,hjubj )}(hK``kref`` Reference count of the object, acquire before releasing req->lock h](j )}(h``kref``h]j)}(hjh]hkref}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM-hjubj)}(hhh]h)}(hAReference count of the object, acquire before releasing req->lockh]hAReference count of the object, acquire before releasing req->lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM-hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM-hjubj )}(h6``completed`` If true, then this object was completed.h](j )}(h ``completed``h]j)}(hjh]h completed}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM-hjubj)}(hhh]h)}(h(If true, then this object was completed.h]h(If true, then this object was completed.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM.hjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhM-hjubeh}(h]h ]h"]h$]h&]uh1j hjNubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubh)}(h**Description**h]j')}(hjJh]h Description}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjHubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM1hj hhubh)}(hAn object related to the request. This struct is always embedded in another struct that contains the actual data for this request object.h]hAn object related to the request. This struct is always embedded in another struct that contains the actual data for this request object.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM.hj 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}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM?ubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhM?ubj8 )}(hmedia_request_object_geth]j> )}(hmedia_request_object_geth]hmedia_request_object_get}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.media_request_object_getasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhM?ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhM?ubah}(h]j{ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhM?hj}hhubjj )}(hhh]h)}(hGet a media request objecth]hGet a media request object}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM?hjEhhubah}(h]h ]h"]h$]h&]uh1ji hj}hhhjhM?ubeh}(h]h ](jfunctioneh"]h$]h&]j jj j`j j`j j 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')}(hjjh]h Parameters}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjhubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMChjdubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMAhjubj)}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMAhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMAhjubah}(h]h ]h"]h$]h&]uh1j hjdubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMChjdubh)}(hGet a media request object.h]hGet a media request object.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMBhjdubeh}(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}(hj hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMKubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMKubj8 )}(hmedia_request_object_puth]j> )}(hmedia_request_object_puth]hmedia_request_object_put}(hj*hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj&ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMKubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hjFhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjBubj' )}(h h]h }(hjShhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjBubh)}(hhh]j> )}(hmedia_request_objecth]hmedia_request_object}(hjdhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjaubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjfmodnameN classnameNjj)}j]j)}jj,sbc.media_request_object_putasbuh1hhjBubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjBubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjBubj> )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjBubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj>ubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMKubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMKhjhhubjj )}(hhh]h)}(hPut a media request objecth]hPut a media request object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMKhjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j 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&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMOhjubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j)}(hj h]h struct media_request_object *obj}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMMhjubj)}(hhh]h)}(h The objecth]h The object}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMMhj ubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMMhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjEh]h Description}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjCubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMOhjubh)}(hZPut a media request object. Once all references are gone, the object's memory is released.h]h\Put a media request object. Once all references are gone, the object’s memory is released.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMNhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_request_object_find (C function)c.media_request_object_findhNtauh1j hj hhhNhNubj )}(hhh](j )}(hstruct media_request_object * media_request_object_find (struct media_request *req, const struct media_request_object_ops *ops, void *priv)h]j )}(hstruct media_request_object *media_request_object_find(struct media_request *req, const struct media_request_object_ops *ops, void *priv)h](j )}(hj h]hstruct}(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.hhMUubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMUubh)}(hhh]j> )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jmedia_request_object_findsbc.media_request_object_findasbuh1hhjhhhjhMUubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMUubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhjhMUubj8 )}(hmedia_request_object_findh]j> )}(hjh]hmedia_request_object_find}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMUubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_requesth]h media_request}(hj"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj$modnameN classnameNjj)}j]jc.media_request_object_findasbuh1hhjubj' )}(h h]h }(hj@hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjNhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hreqh]hreq}(hj[hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h*const struct media_request_object_ops *opsh](j )}(hj/h]hconst}(hjthhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjpubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjpubj )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjpubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjpubh)}(hhh]j> )}(hmedia_request_object_opsh]hmedia_request_object_ops}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.media_request_object_findasbuh1hhjpubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjpubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjpubj> )}(hopsh]hops}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjpubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *privh](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj' )}(h h]h }(hj hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hprivh]hpriv}(hj(hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMUubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMUubah}(h]j}ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMUhjhhubjj )}(hhh]h)}(hFind an object in a requesth]hFind an object in a request}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMUhjOhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMUubeh}(h]h ](jfunctioneh"]h$]h&]j jj jjj jjj j 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')}(hjth]h Parameters}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjrubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMYhjnubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMWhjubj)}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMWhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMWhjubj )}(hR``const struct media_request_object_ops *ops`` Find an object with this ops value h](j )}(h.``const struct media_request_object_ops *ops``h]j)}(hjh]h*const struct media_request_object_ops *ops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMXhjubj)}(hhh]h)}(h"Find an object with this ops valueh]h"Find an object with this ops value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMXhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMXhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMYhjubj)}(hhh]h)}(h#Find an object with this priv valueh]h#Find an object with this priv value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMYhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMYhjubeh}(h]h ]h"]h$]h&]uh1j hjnubh)}(h**Description**h]j')}(hj@h]h Description}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj>ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM[hjnubh)}(h+Both **ops** and **priv** must be non-NULL.h](hBoth }(hjVhhhNhNubj')}(h**ops**h]hops}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjVubh and }(hjVhhhNhNubj')}(h**priv**h]hpriv}(hjphhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjVubh must be non-NULL.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMZhjnubh)}(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.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM\hjnubh)}(hmSince this function needs to walk the list of objects it takes the **req->lock** spin lock to make this safe.h](hCSince this function needs to walk the list of objects it takes the }(hjhhhNhNubj')}(h **req->lock**h]h req->lock}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubh spin lock to make this safe.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM_hjnubeh}(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}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMiubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjhhhjhMiubj8 )}(hmedia_request_object_inith]j> )}(hmedia_request_object_inith]hmedia_request_object_init}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjhhhjhMiubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj#hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_request_objecth]hmedia_request_object}(hj4hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj1ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj6modnameN classnameNjj)}j]j)}jjsbc.media_request_object_initasbuh1hhjubj' )}(h h]h }(hjThhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjbhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hobjh]hobj}(hjohhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjhhhjhMiubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjhhhjhMiubah}(h]jah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhMihjhhubjj )}(hhh]h)}(h!Initialise a media request objecth]h!Initialise a media request object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMihjhhubah}(h]h ]h"]h$]h&]uh1ji hjhhhjhMiubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_request_object *obj`` The object **Description** Initialise a media request object. The object will be released using the release callback of the ops once it has no references (this function initialises references to one).h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMmhjubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j)}(hjh]h struct media_request_object *obj}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMkhjubj)}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMkhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMkhjubah}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMmhjubh)}(hInitialise a media request object. The object will be released using the release callback of the ops once it has no references (this function initialises references to one).h]hInitialise a media request object. The object will be released using the release callback of the ops once it has no references (this function initialises references to one).}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMlhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_request_object_bind (C function)c.media_request_object_bindhNtauh1j hj hhhNhNubj )}(hhh](j )}(hint media_request_object_bind (struct media_request *req, const struct media_request_object_ops *ops, void *priv, bool is_buffer, struct media_request_object *obj)h]j )}(hint media_request_object_bind(struct media_request *req, const struct media_request_object_ops *ops, void *priv, bool is_buffer, struct media_request_object *obj)h](j`)}(hinth]hint}(hjZhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjVhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMtubj' )}(h h]h }(hjihhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjVhhhjhhMtubj8 )}(hmedia_request_object_bindh]j> )}(hmedia_request_object_bindh]hmedia_request_object_bind}(hj{hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjwubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjVhhhjhhMtubj)}(h(struct media_request *req, const struct media_request_object_ops *ops, void *priv, bool is_buffer, struct media_request_object *obj)h](j)}(hstruct media_request *reqh](j )}(hj h]hstruct}(hjhhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(h media_requesth]h media_request}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jj}sbc.media_request_object_bindasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hreqh]hreq}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h*const struct media_request_object_ops *opsh](j )}(hj/h]hconst}(hj hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj )}(hj h]hstruct}(hj$hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hj1hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_request_object_opsh]hmedia_request_object_ops}(hjBhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj?ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjDmodnameN classnameNjj)}j]jc.media_request_object_bindasbuh1hhjubj' )}(h h]h }(hj`hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjnhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hopsh]hops}(hj{hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h void *privh](j`)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hprivh]hpriv}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(hbool is_bufferh](j`)}(hjJsh]hbool}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj> )}(h is_bufferh]h is_buffer}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubj)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hj hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_request_objecth]hmedia_request_object}(hj(hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj%ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*modnameN classnameNjj)}j]jc.media_request_object_bindasbuh1hhjubj' )}(h h]h }(hjFhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hobjh]hobj}(hjahhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubeh}(h]h ]h"]h$]h&]hhuh1jhjVhhhjhhMtubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjRhhhjhhMtubah}(h]jMah ](ja jb eh"]h$]h&]jf jg )jh huh1j hjhhMthjOhhubjj )}(hhh]h)}(h(Bind a media request object to a requesth]h(Bind a media request object to 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.hhMthjhhubah}(h]h ]h"]h$]h&]uh1ji hjOhhhjhhMtubeh}(h]h ](jfunctioneh"]h$]h&]j jj jj jj j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_request *req`` The media request ``const struct media_request_object_ops *ops`` The object ops for this object ``void *priv`` A driver-specific priv pointer associated with this object ``bool is_buffer`` Set to true if the object is a buffer object. ``struct media_request_object *obj`` The object **Description** Bind this object to the request and set the ops and priv values of the object so it can be found later with media_request_object_find(). Every bound object must be unbound or completed by the kernel at some point in time, otherwise the request will never complete. When the request is released all completed objects will be unbound by the request core code. Buffer objects will be added to the end of the request's object list, non-buffer objects will be added to the front of the list. This ensures that all buffer objects are at the end of the list and that all non-buffer objects that they depend on are processed first.h](h)}(h**Parameters**h]j')}(hjh]h Parameters}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMxhjubj )}(hhh](j )}(h0``struct media_request *req`` The media request h](j )}(h``struct media_request *req``h]j)}(hjh]hstruct media_request *req}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMvhjubj)}(hhh]h)}(hThe media requesth]hThe media request}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMvhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMvhjubj )}(hN``const struct media_request_object_ops *ops`` The object ops for this object h](j )}(h.``const struct media_request_object_ops *ops``h]j)}(hjh]h*const struct media_request_object_ops *ops}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMwhjubj)}(hhh]h)}(hThe object ops for this objecth]hThe object ops for this object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMwhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMwhjubj )}(hJ``void *priv`` A driver-specific priv pointer associated with this object h](j )}(h``void *priv``h]j)}(hj>h]h void *priv}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj<ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMxhj8ubj)}(hhh]h)}(h:A driver-specific priv pointer associated with this objecth]h:A driver-specific priv pointer associated with this object}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjShMxhjTubah}(h]h ]h"]h$]h&]uh1j hj8ubeh}(h]h ]h"]h$]h&]uh1j hjShMxhjubj )}(hA``bool is_buffer`` Set to true if the object is a buffer object. h](j )}(h``bool is_buffer``h]j)}(hjwh]hbool is_buffer}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjuubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMyhjqubj)}(hhh]h)}(h-Set to true if the object is a buffer object.h]h-Set to true if the object is a buffer object.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMyhjubah}(h]h ]h"]h$]h&]uh1j hjqubeh}(h]h ]h"]h$]h&]uh1j hjhMyhjubj )}(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&]uh1jhjubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMzhjubj)}(hhh]h)}(h The objecth]h The object}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMzhjubah}(h]h ]h"]h$]h&]uh1j hjubeh}(h]h ]h"]h$]h&]uh1j hjhMzhjubeh}(h]h ]h"]h$]h&]uh1j hjubh)}(h**Description**h]j')}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j&hjubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM|hjubh)}(hBind this object to the request and set the ops and priv values of the object so it can be found later with media_request_object_find().h]hBind this object to the request and set the ops and priv values of the object so it can be found later with media_request_object_find().}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM{hjubh)}(hEvery bound object must be unbound or completed by the kernel at some point in time, otherwise the request will never complete. When the request is released all completed objects will be unbound by the request core code.h]hEvery bound object must be unbound or completed by the kernel at some point in time, otherwise the request will never complete. When the request is released all completed objects will be unbound by the request core code.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhM~hjubh)}(hX Buffer objects will be added to the end of the request's object list, non-buffer objects will be added to the front of the list. This ensures that all buffer objects are at the end of the list and that all non-buffer objects that they depend on are processed first.h]hX Buffer objects will be added to the end of the request’s object list, non-buffer objects will be added to the front of the list. This ensures that all buffer objects are at the end of the list and that all non-buffer objects that they depend on are processed first.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j (media_request_object_unbind (C function)c.media_request_object_unbindhNtauh1j hj hhhNhNubj )}(hhh](j )}(hCvoid media_request_object_unbind (struct media_request_object *obj)h]j )}(hBvoid media_request_object_unbind(struct media_request_object *obj)h](j`)}(hvoidh]hvoid}(hjNhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjJhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMubj' )}(h h]h }(hj]hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjJhhhj\hMubj8 )}(hmedia_request_object_unbindh]j> )}(hmedia_request_object_unbindh]hmedia_request_object_unbind}(hjohhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjkubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjJhhhj\hMubj)}(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 ]j3 ah"]h$]h&]uh1j& hjubh)}(hhh]j> )}(hmedia_request_objecth]hmedia_request_object}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjqsbc.media_request_object_unbindasbuh1hhjubj' )}(h h]h }(hjhhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj> )}(hobjh]hobj}(hjhhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjubeh}(h]h ]h"]h$]h&]noemphhhuh1jhjubah}(h]h ]h"]h$]h&]hhuh1jhjJhhhj\hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjFhhhj\hMubah}(h]jAah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj\hMhjChhubjj )}(hhh]h)}(hUnbind a media request objecth]hUnbind 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.hhMhj hhubah}(h]h ]h"]h$]h&]uh1ji hjChhhj\hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j& j j& j j 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')}(hj0 h]h Parameters}(hj2 hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj. ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj* ubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j)}(hjO h]h struct media_request_object *obj}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhjI ubj)}(hhh]h)}(h The objecth]h The object}(hjh hhhNhNubah}(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&]uh1j&hj ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj* ubh)}(h1Unbind the media request object from the request.h]h1Unbind the media request object from the request.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj* ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j *media_request_object_complete (C function)c.media_request_object_completehNtauh1j hj hhhNhNubj )}(hhh](j )}(hEvoid media_request_object_complete (struct media_request_object *obj)h]j )}(hDvoid media_request_object_complete(struct media_request_object *obj)h](j`)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj 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 ]j3 ah"]h$]h&]uh1j& hj hhhj hMubj8 )}(hmedia_request_object_completeh]j> )}(hmedia_request_object_completeh]hmedia_request_object_complete}(hj hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj hhhj hMubj)}(h"(struct media_request_object *obj)h]j)}(h struct media_request_object *objh](j )}(hj h]hstruct}(hj !hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj!ubj' )}(h h]h }(hj!hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj!ubh)}(hhh]j> )}(hmedia_request_objecth]hmedia_request_object}(hj*!hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj'!ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,!modnameN classnameNjj)}j]j)}jj sbc.media_request_object_completeasbuh1hhj!ubj' )}(h h]h }(hjJ!hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj!ubj)}(hjh]h*}(hjX!hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj!ubj> )}(hobjh]hobj}(hje!hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj!ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj!ubah}(h]h ]h"]h$]h&]hhuh1jhj hhhj hMubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj hhhj hMubah}(h]j ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj hMhj hhubjj )}(hhh]h)}(h)Mark the media request object as completeh]h)Mark the media request object as complete}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!hhubah}(h]h ]h"]h$]h&]uh1ji hj hhhj hMubeh}(h]h ](jfunctioneh"]h$]h&]j jj j!j j!j j j uh1j hhhj hNhNubj )}(h**Parameters** ``struct media_request_object *obj`` The object **Description** Mark the media request object as complete. Only bound objects can be completed.h](h)}(h**Parameters**h]j')}(hj!h]h Parameters}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj!ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubj )}(hhh]j )}(h0``struct media_request_object *obj`` The object h](j )}(h$``struct media_request_object *obj``h]j)}(hj!h]h struct media_request_object *obj}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj!ubah}(h]h ]h"]h$]h&]uh1j hg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubj)}(hhh]h)}(h The objecth]h The object}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hMhj!ubah}(h]h ]h"]h$]h&]uh1j hj!ubeh}(h]h ]h"]h$]h&]uh1j hj!hMhj!ubah}(h]h ]h"]h$]h&]uh1j hj!ubh)}(h**Description**h]j')}(hj "h]h Description}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj "ubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubh)}(hOMark the media request object as complete. Only bound objects can be completed.h]hOMark the media request object as complete. Only bound objects can be completed.}(hj!"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhg/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:339: ./include/media/media-request.hhMhj!ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubj )}(hhh]h}(h]h ]h"]h$]h&]entries](j &media_device_usb_allocate (C function)c.media_device_usb_allocatehNtauh1j hj hhhNhNubj )}(hhh](j )}(hxstruct media_device * media_device_usb_allocate (struct usb_device *udev, const char *module_name, struct module *owner)h]j )}(hvstruct media_device *media_device_usb_allocate(struct usb_device *udev, const char *module_name, struct module *owner)]h](j )}(hj h]hstruct}(hjP"hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hjL"hhhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKubj' )}(h h]h }(hj^"hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjL"hhhj]"hKubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjo"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjl"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjq"modnameN classnameNjj)}j]j)}jmedia_device_usb_allocatesbc.media_device_usb_allocateasbuh1hhjL"hhhj]"hKubj' )}(h h]h }(hj"hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hjL"hhhj]"hKubj)}(hjh]h*}(hj"hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjL"hhhj]"hKubj8 )}(hmedia_device_usb_allocateh]j> )}(hj"h]hmedia_device_usb_allocate}(hj"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj"ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hjL"hhhj]"hKubj)}(hH(struct usb_device *udev, const char *module_name, struct module *owner)h](j)}(hstruct usb_device *udevh](j )}(hj h]hstruct}(hj"hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj"ubj' )}(h h]h }(hj"hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj"ubh)}(hhh]j> )}(h usb_deviceh]h usb_device}(hj"hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj"ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj"modnameN classnameNjj)}j]j"c.media_device_usb_allocateasbuh1hhj"ubj' )}(h h]h }(hj#hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj"ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj"ubj> )}(hudevh]hudev}(hj!#hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj"ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubj)}(hconst char *module_nameh](j )}(hj/h]hconst}(hj:#hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj6#ubj' )}(h h]h }(hjG#hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj6#ubj`)}(hcharh]hchar}(hjU#hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj6#ubj' )}(h h]h }(hjc#hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj6#ubj)}(hjh]h*}(hjq#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6#ubj> )}(h module_nameh]h module_name}(hj~#hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj6#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 ]j3 ah"]h$]h&]uh1j& hj#ubh)}(hhh]j> )}(hmoduleh]hmodule}(hj#hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj#ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj#modnameN classnameNjj)}j]j"c.media_device_usb_allocateasbuh1hhj#ubj' )}(h h]h }(hj#hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj#ubj)}(hjh]h*}(hj#hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubj> )}(hownerh]howner}(hj#hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj#ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj"ubeh}(h]h ]h"]h$]h&]hhuh1jhjL"hhhj]"hKubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hjH"hhhj]"hKubah}(h]jC"ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj]"hKhjE"hhubjj )}(hhh]h)}(h1Allocate and return struct :c:type:`media` deviceh](hAllocate and return struct }(hj$hhhNhNubh)}(h:c:type:`media`h]j)}(hj"$h]hmedia}(hj$$hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj $ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjj)}j]j"c.media_device_usb_allocateasbjmediauh1hhj]"hKhj$ubh device}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhj$hhubah}(h]h ]h"]h$]h&]uh1ji hjE"hhhj]"hKubeh}(h]h ](jfunctioneh"]h$]h&]j jj jX$j jX$j j 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')}(hjb$h]h Parameters}(hjd$hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj`$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&]uh1jhj$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)}(hj$h]h usb_device}(hj$hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj$ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj usb_deviceuh1hhj$hKhj$ubh pointer}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1j hj{$ubeh}(h]h ]h"]h$]h&]uh1j hj$hKhjx$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&]uh1jhj$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&]uh1jhj$ubeh}(h]h ]h"]h$]h&]uh1hhj$hKhj$ubah}(h]h ]h"]h$]h&]uh1j hj$ubeh}(h]h ]h"]h$]h&]uh1j hj$hKhjx$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&]uh1jhj"%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}(hjE%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=%ubh for the driver. }(hj=%hhhNhNubj)}(h``THIS_MODULE``h]h THIS_MODULE}(hjW%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=%ubh5 is null for a built-in driver. It is safe even when }(hj=%hhhNhNubj)}(h``THIS_MODULE``h]h THIS_MODULE}(hji%hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=%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 hj9%hKhjx$ubeh}(h]h ]h"]h$]h&]uh1j hj\$ubh)}(h**Description**h]j')}(hj%h]h Description}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj%ubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK hj\$ubh)}(hThis interface should be called to allocate a Media Device when multiple drivers share usb_device and the media device. This interface allocates :c:type:`media_device` structure and calls media_device_usb_init() to initialize it.h](hThis interface should be called to allocate a Media Device when multiple drivers share usb_device and the media device. This interface allocates }(hj%hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj%h]h media_device}(hj%hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhKhj%ubh> structure and calls media_device_usb_init() to initialize it.}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj%hKhj\$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 ]jlah"]h$]h&]uh1j_hj%hhhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK*ubj' )}(h h]h }(hj &hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj%hhhj &hK*ubj8 )}(hmedia_device_deleteh]j> )}(hmedia_device_deleteh]hmedia_device_delete}(hj&hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj&ubah}(h]h ](jP jQ eh"]h$]h&]hhuh1j7 hj%hhhj &hK*ubj)}(hJ(struct media_device *mdev, const char *module_name, struct module *owner)h](j)}(hstruct media_device *mdevh](j )}(hj h]hstruct}(hj;&hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj7&ubj' )}(h h]h }(hjH&hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7&ubh)}(hhh]j> )}(h media_deviceh]h media_device}(hjY&hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hjV&ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj[&modnameN classnameNjj)}j]j)}jj!&sbc.media_device_deleteasbuh1hhj7&ubj' )}(h h]h }(hjy&hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj7&ubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7&ubj> )}(hmdevh]hmdev}(hj&hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj7&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3&ubj)}(hconst char *module_nameh](j )}(hj/h]hconst}(hj&hhhNhNubah}(h]h ]j! ah"]h$]h&]uh1j hj&ubj' )}(h h]h }(hj&hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj&ubj`)}(hcharh]hchar}(hj&hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj&ubj' )}(h h]h }(hj&hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj&ubj)}(hjh]h*}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj&ubj> )}(h module_nameh]h module_name}(hj&hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj&ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3&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 ]j3 ah"]h$]h&]uh1j& hj'ubh)}(hhh]j> )}(hmoduleh]hmodule}(hj('hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj%'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj*'modnameN classnameNjj)}j]ju&c.media_device_deleteasbuh1hhj'ubj' )}(h h]h }(hjF'hhhNhNubah}(h]h ]j3 ah"]h$]h&]uh1j& hj'ubj)}(hjh]h*}(hjT'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubj> )}(hownerh]howner}(hja'hhhNhNubah}(h]h ]jI ah"]h$]h&]uh1j= hj'ubeh}(h]h ]h"]h$]h&]noemphhhuh1jhj3&ubeh}(h]h ]h"]h$]h&]hhuh1jhj%hhhj &hK*ubeh}(h]h ]h"]h$]h&]hhj[ uh1j j\ j] hj%hhhj &hK*ubah}(h]j%ah ](ja jb eh"]h$]h&]jf jg )jh huh1j hj &hK*hj%hhubjj )}(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&]uh1ji hj%hhhj &hK*ubeh}(h]h ](jfunctioneh"]h$]h&]j jj j'j j'j j j uh1j hhhj hNhNubj )}(hX**Parameters** ``struct media_device *mdev`` struct :c:type:`media_device` pointer ``const char *module_name`` should be filled with ``KBUILD_MODNAME`` ``struct module *owner`` struct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null. **Description** This interface should be called to put Media Device Instance kref.h](h)}(h**Parameters**h]j')}(hj'h]h Parameters}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj'ubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK.hj'ubj )}(hhh](j )}(hD``struct media_device *mdev`` struct :c:type:`media_device` pointer h](j )}(h``struct media_device *mdev``h]j)}(hj'h]hstruct media_device *mdev}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]uh1j hm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK,hj'ubj)}(hhh]h)}(h%struct :c:type:`media_device` pointerh](hstruct }(hj'hhhNhNubh)}(h:c:type:`media_device`h]j)}(hj'h]h media_device}(hj'hhhNhNubah}(h]h ](jjc-typeeh"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&]refdocj refdomainjreftypetype refexplicitrefwarnjjj media_deviceuh1hhj'hK,hj'ubh pointer}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj'hK,hj'ubah}(h]h ]h"]h$]h&]uh1j hj'ubeh}(h]h ]h"]h$]h&]uh1j hj'hK,hj'ubj )}(hE``const char *module_name`` should be filled with ``KBUILD_MODNAME`` h](j )}(h``const char *module_name``h]j)}(hj((h]hconst char *module_name}(hj*(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj&(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 }(hjA(hhhNhNubj)}(h``KBUILD_MODNAME``h]hKBUILD_MODNAME}(hjI(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjA(ubeh}(h]h ]h"]h$]h&]uh1hhj=(hK-hj>(ubah}(h]h ]h"]h$]h&]uh1j hj"(ubeh}(h]h ]h"]h$]h&]uh1j hj=(hK-hj'ubj )}(h``struct module *owner`` struct module pointer ``THIS_MODULE`` for the driver. ``THIS_MODULE`` is null for a built-in driver. It is safe even when ``THIS_MODULE`` is null. h](j )}(h``struct module *owner``h]j)}(hjo(h]hstruct module *owner}(hjq(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjm(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.hhK0hji(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&]uh1jhj(ubh for the driver. }(hj(hhhNhNubj)}(h``THIS_MODULE``h]h THIS_MODULE}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj(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&]uh1jhj(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 hji(ubeh}(h]h ]h"]h$]h&]uh1j hj(hK0hj'ubeh}(h]h ]h"]h$]h&]uh1j hj'ubh)}(h**Description**h]j')}(hj(h]h Description}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j&hj(ubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK2hj'ubh)}(hBThis interface should be called to put Media Device Instance kref.h]hBThis interface should be called to put Media Device Instance kref.}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhm/var/lib/git/docbuild/linux/Documentation/driver-api/media/mc-core:341: ./include/media/media-dev-allocator.hhK1hj'ubeh}(h]h ] kernelindentah"]h$]h&]uh1j hj hhhNhNubeh}(h]api-definitionsah ]h"]api definitionsah$]h&]uh1hhhhhhhhMKubeh}(h]media-controllerah ]h"]media controllerah$]h&]uh1hhhhhhhhKubeh}(h]media-controller-devicesah ]h"]media controller devicesah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjH)error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcehnj _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j")j)j)j)jujrjjjjjjjjjjjjj6j3jj}jl ji j j j j~ j j j)j)u nametypes}(j")j)jujjjjjjj6jjl j j j j)uh}(j)hj)hjrj'jjxjjjjjj"jjjjj3jj}j9ji jj jo j~ j j j j)j j j jjjjjRjWjmjrj jjw!j|!j"j"jd$ji$j'j'j)j)j+j+j-j-j0j0j4j4j6j6j_9jd9j<j<j?j?jBjBj"Dj'DjEjEjGjGjXIj]IjJjJjLjLj NjNjAPjFPjQjQjSjSjTjTjVj VjYjYjM[jR[j]j]j_j_jajajgjgjZhj_hjjjjjIljNljmjmjojojqjqj;sj@sjtjtjvjvjxjxjGzjLzj{j{j}j}jjjjj j%jjjj jWj\jjjϋjԋj jj j%jajfjj jjjojjj˚jКjjjjjj©jݫjjjj#j(j3j8jjjjjںjߺjujzjjjjjjjBjGjjj.j3jgjljzjjjjjjjjj jjjjjxj}jjjjjGjLjjjjj<jAjjjjjgjljsjxjJjOjjjKjPjjjjjjjj$jjjEjJjjjGjLj j j j jB jG jjjjj{jjjj}jjjjMjRjAjFj j jC"jH"j%j%u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.