diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl
index 034f891399ed..2bd7b27f8553 100644
--- a/Documentation/DocBook/media-entities.tmpl
+++ b/Documentation/DocBook/media-entities.tmpl
@@ -92,6 +92,8 @@
VIDIOC_UNSUBSCRIBE_EVENT">
MEDIA_IOC_DEVICE_INFO">
+MEDIA_IOC_ENUM_ENTITIES">
+MEDIA_IOC_ENUM_LINKS">
v4l2_std_id">
@@ -191,6 +193,10 @@
v4l2_window">
media_device_info">
+media_entity_desc">
+media_links_enum">
+media_pad_desc">
+media_link_desc">
EACCES error code">
@@ -340,6 +346,8 @@
+
+
diff --git a/Documentation/DocBook/v4l/media-controller.xml b/Documentation/DocBook/v4l/media-controller.xml
index a46b786e9f2b..2c4fd2b27683 100644
--- a/Documentation/DocBook/v4l/media-controller.xml
+++ b/Documentation/DocBook/v4l/media-controller.xml
@@ -83,4 +83,6 @@
&sub-media-ioctl;
&sub-media-ioc-device-info;
+ &sub-media-ioc-enum-entities;
+ &sub-media-ioc-enum-links;
diff --git a/Documentation/DocBook/v4l/media-ioc-device-info.xml b/Documentation/DocBook/v4l/media-ioc-device-info.xml
index 278a3120ee2e..1f3237351bba 100644
--- a/Documentation/DocBook/v4l/media-ioc-device-info.xml
+++ b/Documentation/DocBook/v4l/media-ioc-device-info.xml
@@ -27,7 +27,8 @@
fd
- &fd;
+ File descriptor returned by
+ open().
diff --git a/Documentation/DocBook/v4l/media-ioc-enum-entities.xml b/Documentation/DocBook/v4l/media-ioc-enum-entities.xml
new file mode 100644
index 000000000000..13d0cc44865a
--- /dev/null
+++ b/Documentation/DocBook/v4l/media-ioc-enum-entities.xml
@@ -0,0 +1,308 @@
+
+
+ ioctl MEDIA_IOC_ENUM_ENTITIES
+ &manvol;
+
+
+
+ MEDIA_IOC_ENUM_ENTITIES
+ Enumerate entities and their properties
+
+
+
+
+
+ int ioctl
+ int fd
+ int request
+ struct media_entity_desc *argp
+
+
+
+
+
+ Arguments
+
+
+
+ fd
+
+ File descriptor returned by
+ open().
+
+
+
+ request
+
+ MEDIA_IOC_ENUM_ENTITIES
+
+
+
+ argp
+
+
+
+
+
+
+
+
+ Description
+ To query the attributes of an entity, applications set the id field
+ of a &media-entity-desc; structure and call the MEDIA_IOC_ENUM_ENTITIES
+ ioctl with a pointer to this structure. The driver fills the rest of the
+ structure or returns an &EINVAL; when the id is invalid.
+ Entities can be enumerated by or'ing the id with the
+ MEDIA_ENT_ID_FLAG_NEXT flag. The driver will return
+ information about the entity with the smallest id strictly larger than the
+ requested one ('next entity'), or the &EINVAL; if there is none.
+ Entity IDs can be non-contiguous. Applications must
+ not try to enumerate entities by calling
+ MEDIA_IOC_ENUM_ENTITIES with increasing id's until they get an error.
+ Two or more entities that share a common non-zero
+ group_id value are considered as logically
+ grouped. Groups are used to report
+
+ ALSA, VBI and video nodes that carry the same media
+ stream
+ lens and flash controllers associated with a sensor
+
+
+
+
+ struct media_entity_desc
+
+
+
+
+
+
+
+
+ __u32
+ id
+
+
+ Entity id, set by the application. When the id is or'ed with
+ MEDIA_ENT_ID_FLAG_NEXT, the driver clears the
+ flag and returns the first entity with a larger id.
+
+
+ char
+ name[32]
+
+
+ Entity name as an UTF-8 NULL-terminated string.
+
+
+ __u32
+ type
+
+
+ Entity type, see for details.
+
+
+ __u32
+ revision
+
+
+ Entity revision in a driver/hardware specific format.
+
+
+ __u32
+ flags
+
+
+ Entity flags, see for details.
+
+
+ __u32
+ group_id
+
+
+ Entity group ID
+
+
+ __u16
+ pads
+
+
+ Number of pads
+
+
+ __u16
+ links
+
+
+ Total number of outbound links. Inbound links are not counted
+ in this field.
+
+
+ union
+
+
+
+ struct
+ v4l
+
+ Valid for V4L sub-devices and nodes only.
+
+
+
+
+ __u32
+ major
+ V4L device node major number. For V4L sub-devices with no
+ device node, set by the driver to 0.
+
+
+
+
+ __u32
+ minor
+ V4L device node minor number. For V4L sub-devices with no
+ device node, set by the driver to 0.
+
+
+
+ struct
+ fb
+
+ Valid for frame buffer nodes only.
+
+
+
+
+ __u32
+ major
+ Frame buffer device node major number.
+
+
+
+
+ __u32
+ minor
+ Frame buffer device node minor number.
+
+
+
+ struct
+ alsa
+
+ Valid for ALSA devices only.
+
+
+
+
+ __u32
+ card
+ ALSA card number
+
+
+
+
+ __u32
+ device
+ ALSA device number
+
+
+
+
+ __u32
+ subdevice
+ ALSA sub-device number
+
+
+
+ int
+ dvb
+
+ DVB card number
+
+
+
+ __u8
+ raw[180]
+
+
+
+
+
+
+ Media entity flags
+
+
+
+
+
+ MEDIA_ENT_FL_DEFAULT
+ Default entity for its type. Used to discover the default
+ audio, VBI and video devices, the default camera sensor, ...
+
+
+
+
+
+
+
+ &return-value;
+
+
+
+ EINVAL
+
+ The &media-entity-desc; id references
+ a non-existing entity.
+
+
+
+
+
diff --git a/Documentation/DocBook/v4l/media-ioc-enum-links.xml b/Documentation/DocBook/v4l/media-ioc-enum-links.xml
new file mode 100644
index 000000000000..6da884159cab
--- /dev/null
+++ b/Documentation/DocBook/v4l/media-ioc-enum-links.xml
@@ -0,0 +1,202 @@
+
+
+ ioctl MEDIA_IOC_ENUM_LINKS
+ &manvol;
+
+
+
+ MEDIA_IOC_ENUM_LINKS
+ Enumerate all pads and links for a given entity
+
+
+
+
+
+ int ioctl
+ int fd
+ int request
+ struct media_links_enum *argp
+
+
+
+
+
+ Arguments
+
+
+
+ fd
+
+ File descriptor returned by
+ open().
+
+
+
+ request
+
+ MEDIA_IOC_ENUM_LINKS
+
+
+
+ argp
+
+
+
+
+
+
+
+
+ Description
+
+ To enumerate pads and/or links for a given entity, applications set
+ the entity field of a &media-links-enum; structure and initialize the
+ &media-pad-desc; and &media-link-desc; structure arrays pointed by the
+ pads and links fields.
+ They then call the MEDIA_IOC_ENUM_LINKS ioctl with a pointer to this
+ structure.
+ If the pads field is not NULL, the driver
+ fills the pads array with information about the
+ entity's pads. The array must have enough room to store all the entity's
+ pads. The number of pads can be retrieved with the &MEDIA-IOC-ENUM-ENTITIES;
+ ioctl.
+ If the links field is not NULL, the driver
+ fills the links array with information about the
+ entity's outbound links. The array must have enough room to store all the
+ entity's outbound links. The number of outbound links can be retrieved with
+ the &MEDIA-IOC-ENUM-ENTITIES; ioctl.
+ Only forward links that originate at one of the entity's source pads
+ are returned during the enumeration process.
+
+
+ struct media_links_enum
+
+ &cs-str;
+
+
+ __u32
+ entity
+ Entity id, set by the application.
+
+
+ struct &media-pad-desc;
+ *pads
+ Pointer to a pads array allocated by the application. Ignored
+ if NULL.
+
+
+ struct &media-link-desc;
+ *links
+ Pointer to a links array allocated by the application. Ignored
+ if NULL.
+
+
+
+
+
+
+ struct media_pad_desc
+
+ &cs-str;
+
+
+ __u32
+ entity
+ ID of the entity this pad belongs to.
+
+
+ __u16
+ index
+ 0-based pad index.
+
+
+ __u32
+ flags
+ Pad flags, see for more details.
+
+
+
+
+
+
+ Media pad flags
+
+
+
+
+
+ MEDIA_PAD_FL_SINK
+ Input pad, relative to the entity. Input pads sink data and
+ are targets of links.
+
+
+ MEDIA_PAD_FL_SOURCE
+ Output pad, relative to the entity. Output pads source data
+ and are origins of links.
+
+
+
+
+
+
+ struct media_links_desc
+
+ &cs-str;
+
+
+ struct &media-pad-desc;
+ source
+ Pad at the origin of this link.
+
+
+ struct &media-pad-desc;
+ sink
+ Pad at the target of this link.
+
+
+ __u32
+ flags
+ Link flags, see for more details.
+
+
+
+
+
+
+ Media link flags
+
+
+
+
+
+ MEDIA_LNK_FL_ENABLED
+ 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
+ The link enabled state can't be modified at runtime. An
+ immutable link is always enabled.
+
+
+
+