[media] media: Links setup
[deliverable/linux.git] / include / media / media-entity.h
index 51bdafce72c775998060f983411d7f92a100e34c..d889dcc67d0dacfcdf0661ada54e1e89dab9532c 100644 (file)
@@ -39,6 +39,12 @@ struct media_pad {
        unsigned long flags;            /* Pad flags (MEDIA_PAD_FL_*) */
 };
 
+struct media_entity_operations {
+       int (*link_setup)(struct media_entity *entity,
+                         const struct media_pad *local,
+                         const struct media_pad *remote, u32 flags);
+};
+
 struct media_entity {
        struct list_head list;
        struct media_device *parent;    /* Media device this entity belongs to*/
@@ -59,6 +65,8 @@ struct media_entity {
        struct media_pad *pads;         /* Pads array (num_pads elements) */
        struct media_link *links;       /* Links array (max_links elements)*/
 
+       const struct media_entity_operations *ops;      /* Entity operations */
+
        /* Reference counts must never be negative, but are signed integers on
         * purpose: a simple WARN_ON(<0) check can be used to detect reference
         * count bugs that would make them negative.
@@ -112,6 +120,11 @@ int media_entity_init(struct media_entity *entity, u16 num_pads,
 void media_entity_cleanup(struct media_entity *entity);
 int media_entity_create_link(struct media_entity *source, u16 source_pad,
                struct media_entity *sink, u16 sink_pad, u32 flags);
+int __media_entity_setup_link(struct media_link *link, u32 flags);
+int media_entity_setup_link(struct media_link *link, u32 flags);
+struct media_link *media_entity_find_link(struct media_pad *source,
+               struct media_pad *sink);
+struct media_pad *media_entity_remote_source(struct media_pad *pad);
 
 struct media_entity *media_entity_get(struct media_entity *entity);
 void media_entity_put(struct media_entity *entity);
@@ -121,4 +134,8 @@ void media_entity_graph_walk_start(struct media_entity_graph *graph,
 struct media_entity *
 media_entity_graph_walk_next(struct media_entity_graph *graph);
 
+#define media_entity_call(entity, operation, args...)                  \
+       (((entity)->ops && (entity)->ops->operation) ?                  \
+        (entity)->ops->operation((entity) , ##args) : -ENOIOCTLCMD)
+
 #endif
This page took 0.037317 seconds and 5 git commands to generate.