162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci.. c:namespace:: MC
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci.. _media_ioc_enum_entities:
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci*****************************
762306a36Sopenharmony_ciioctl MEDIA_IOC_ENUM_ENTITIES
862306a36Sopenharmony_ci*****************************
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciName
1162306a36Sopenharmony_ci====
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciMEDIA_IOC_ENUM_ENTITIES - Enumerate entities and their properties
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciSynopsis
1662306a36Sopenharmony_ci========
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci.. c:macro:: MEDIA_IOC_ENUM_ENTITIES
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci``int ioctl(int fd, MEDIA_IOC_ENUM_ENTITIES, struct media_entity_desc *argp)``
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciArguments
2362306a36Sopenharmony_ci=========
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci``fd``
2662306a36Sopenharmony_ci    File descriptor returned by :c:func:`open()`.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci``argp``
2962306a36Sopenharmony_ci    Pointer to struct :c:type:`media_entity_desc`.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciDescription
3262306a36Sopenharmony_ci===========
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciTo query the attributes of an entity, applications set the id field of a
3562306a36Sopenharmony_cistruct :c:type:`media_entity_desc` structure and
3662306a36Sopenharmony_cicall the MEDIA_IOC_ENUM_ENTITIES ioctl with a pointer to this
3762306a36Sopenharmony_cistructure. The driver fills the rest of the structure or returns an
3862306a36Sopenharmony_ciEINVAL error code when the id is invalid.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci.. _media-ent-id-flag-next:
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciEntities can be enumerated by or'ing the id with the
4362306a36Sopenharmony_ci``MEDIA_ENT_ID_FLAG_NEXT`` flag. The driver will return information
4462306a36Sopenharmony_ciabout the entity with the smallest id strictly larger than the requested
4562306a36Sopenharmony_cione ('next entity'), or the ``EINVAL`` error code if there is none.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciEntity IDs can be non-contiguous. Applications must *not* try to
4862306a36Sopenharmony_cienumerate entities by calling MEDIA_IOC_ENUM_ENTITIES with increasing
4962306a36Sopenharmony_ciid's until they get an error.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci.. c:type:: media_entity_desc
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci.. tabularcolumns:: |p{1.5cm}|p{1.7cm}|p{1.6cm}|p{1.5cm}|p{10.6cm}|
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci.. flat-table:: struct media_entity_desc
5662306a36Sopenharmony_ci    :header-rows:  0
5762306a36Sopenharmony_ci    :stub-columns: 0
5862306a36Sopenharmony_ci    :widths: 2 2 1 8
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci    *  -  __u32
6162306a36Sopenharmony_ci       -  ``id``
6262306a36Sopenharmony_ci       -
6362306a36Sopenharmony_ci       -  Entity ID, set by the application. When the ID is or'ed with
6462306a36Sopenharmony_ci	  ``MEDIA_ENT_ID_FLAG_NEXT``, the driver clears the flag and returns
6562306a36Sopenharmony_ci	  the first entity with a larger ID. Do not expect that the ID will
6662306a36Sopenharmony_ci	  always be the same for each instance of the device. In other words,
6762306a36Sopenharmony_ci	  do not hardcode entity IDs in an application.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci    *  -  char
7062306a36Sopenharmony_ci       -  ``name``\ [32]
7162306a36Sopenharmony_ci       -
7262306a36Sopenharmony_ci       -  Entity name as an UTF-8 NULL-terminated string. This name must be unique
7362306a36Sopenharmony_ci          within the media topology.
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci    *  -  __u32
7662306a36Sopenharmony_ci       -  ``type``
7762306a36Sopenharmony_ci       -
7862306a36Sopenharmony_ci       -  Entity type, see :ref:`media-entity-functions` for details.
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci    *  -  __u32
8162306a36Sopenharmony_ci       -  ``revision``
8262306a36Sopenharmony_ci       -
8362306a36Sopenharmony_ci       -  Entity revision. Always zero (obsolete)
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci    *  -  __u32
8662306a36Sopenharmony_ci       -  ``flags``
8762306a36Sopenharmony_ci       -
8862306a36Sopenharmony_ci       -  Entity flags, see :ref:`media-entity-flag` for details.
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci    *  -  __u32
9162306a36Sopenharmony_ci       -  ``group_id``
9262306a36Sopenharmony_ci       -
9362306a36Sopenharmony_ci       -  Entity group ID. Always zero (obsolete)
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci    *  -  __u16
9662306a36Sopenharmony_ci       -  ``pads``
9762306a36Sopenharmony_ci       -
9862306a36Sopenharmony_ci       -  Number of pads
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci    *  -  __u16
10162306a36Sopenharmony_ci       -  ``links``
10262306a36Sopenharmony_ci       -
10362306a36Sopenharmony_ci       -  Total number of outbound links. Inbound links are not counted in
10462306a36Sopenharmony_ci	  this field.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci    *  -  __u32
10762306a36Sopenharmony_ci       -  ``reserved[4]``
10862306a36Sopenharmony_ci       -
10962306a36Sopenharmony_ci       -  Reserved for future extensions. Drivers and applications must set
11062306a36Sopenharmony_ci          the array to zero.
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci    *  -  union {
11362306a36Sopenharmony_ci       -  (anonymous)
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci    *  -  struct
11662306a36Sopenharmony_ci       -  ``dev``
11762306a36Sopenharmony_ci       -
11862306a36Sopenharmony_ci       -  Valid for (sub-)devices that create a single device node.
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci    *  -
12162306a36Sopenharmony_ci       -  __u32
12262306a36Sopenharmony_ci       -  ``major``
12362306a36Sopenharmony_ci       -  Device node major number.
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci    *  -
12662306a36Sopenharmony_ci       -  __u32
12762306a36Sopenharmony_ci       -  ``minor``
12862306a36Sopenharmony_ci       -  Device node minor number.
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci    *  -  __u8
13162306a36Sopenharmony_ci       -  ``raw``\ [184]
13262306a36Sopenharmony_ci       -
13362306a36Sopenharmony_ci       -
13462306a36Sopenharmony_ci    *  - }
13562306a36Sopenharmony_ci       -
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciReturn Value
13862306a36Sopenharmony_ci============
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ciOn success 0 is returned, on error -1 and the ``errno`` variable is set
14162306a36Sopenharmony_ciappropriately. The generic error codes are described at the
14262306a36Sopenharmony_ci:ref:`Generic Error Codes <gen-errors>` chapter.
14362306a36Sopenharmony_ci
14462306a36Sopenharmony_ciEINVAL
14562306a36Sopenharmony_ci    The struct :c:type:`media_entity_desc` ``id``
14662306a36Sopenharmony_ci    references a non-existing entity.
147