path: root/Documentation/media-framework.txt
diff options
authorLaurent Pinchart <>2009-12-09 08:40:03 -0300
committerMauro Carvalho Chehab <>2011-03-22 04:53:16 -0300
commit97548ed4c4661502cdfd1aabd5d3876fa4f5cc2e (patch)
treec85b85954f53e3a97b6590de8d5d5396e7c43358 /Documentation/media-framework.txt
parent1651333b09743887bc2dd3d158a11853a2be3fe7 (diff)
[media] media: Links setup
Create the following ioctl and implement it at the media device level to setup links. - MEDIA_IOC_SETUP_LINK: Modify the properties of a given link The only property that can currently be modified is the ENABLED link flag to enable/disable a link. Links marked with the IMMUTABLE link flag can not be enabled or disabled. Enabling or disabling a link has effects on entities' use count. Those changes are automatically propagated through the graph. Signed-off-by: Laurent Pinchart <> Signed-off-by: Stanimir Varbanov <> Signed-off-by: Sakari Ailus <> Acked-by: Hans Verkuil <> Signed-off-by: Mauro Carvalho Chehab <>
Diffstat (limited to 'Documentation/media-framework.txt')
1 files changed, 42 insertions, 0 deletions
diff --git a/Documentation/media-framework.txt b/Documentation/media-framework.txt
index 78ae02095372..4809221c0ff9 100644
--- a/Documentation/media-framework.txt
+++ b/Documentation/media-framework.txt
@@ -259,6 +259,16 @@ When the graph traversal is complete the function will return NULL.
Graph traversal can be interrupted at any moment. No cleanup function call is
required and the graph structure can be freed normally.
+Helper functions can be used to find a link between two given pads, or a pad
+connected to another pad through an enabled link
+ media_entity_find_link(struct media_pad *source,
+ struct media_pad *sink);
+ media_entity_remote_source(struct media_pad *pad);
+Refer to the kerneldoc documentation for more information.
Use count and power handling
@@ -271,3 +281,35 @@ track the number of users of every entity for power management needs.
The 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 media device graph_mutex
+Links setup
+Link properties can be modified at runtime by calling
+ media_entity_setup_link(struct media_link *link, u32 flags);
+The flags argument contains the requested new link flags.
+The only configurable property is the ENABLED link flag to enable/disable a
+link. Links marked with the 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
+media_device::link_notify pointer to a callback function. If provided, the
+notification callback will be called before enabling and after disabling
+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 disabled,
+the link_setup operation must return -EBUSY and can't implicitly disable the
+first enabled link.