diff options
Diffstat (limited to 'include/media/media-entity.h')
-rw-r--r-- | include/media/media-entity.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/media/media-entity.h b/include/media/media-entity.h index 51bdafce72c7..d889dcc67d0d 100644 --- a/include/media/media-entity.h +++ b/include/media/media-entity.h | |||
@@ -39,6 +39,12 @@ struct media_pad { | |||
39 | unsigned long flags; /* Pad flags (MEDIA_PAD_FL_*) */ | 39 | unsigned long flags; /* Pad flags (MEDIA_PAD_FL_*) */ |
40 | }; | 40 | }; |
41 | 41 | ||
42 | struct media_entity_operations { | ||
43 | int (*link_setup)(struct media_entity *entity, | ||
44 | const struct media_pad *local, | ||
45 | const struct media_pad *remote, u32 flags); | ||
46 | }; | ||
47 | |||
42 | struct media_entity { | 48 | struct media_entity { |
43 | struct list_head list; | 49 | struct list_head list; |
44 | struct media_device *parent; /* Media device this entity belongs to*/ | 50 | struct media_device *parent; /* Media device this entity belongs to*/ |
@@ -59,6 +65,8 @@ struct media_entity { | |||
59 | struct media_pad *pads; /* Pads array (num_pads elements) */ | 65 | struct media_pad *pads; /* Pads array (num_pads elements) */ |
60 | struct media_link *links; /* Links array (max_links elements)*/ | 66 | struct media_link *links; /* Links array (max_links elements)*/ |
61 | 67 | ||
68 | const struct media_entity_operations *ops; /* Entity operations */ | ||
69 | |||
62 | /* Reference counts must never be negative, but are signed integers on | 70 | /* Reference counts must never be negative, but are signed integers on |
63 | * purpose: a simple WARN_ON(<0) check can be used to detect reference | 71 | * purpose: a simple WARN_ON(<0) check can be used to detect reference |
64 | * count bugs that would make them negative. | 72 | * count bugs that would make them negative. |
@@ -112,6 +120,11 @@ int media_entity_init(struct media_entity *entity, u16 num_pads, | |||
112 | void media_entity_cleanup(struct media_entity *entity); | 120 | void media_entity_cleanup(struct media_entity *entity); |
113 | int media_entity_create_link(struct media_entity *source, u16 source_pad, | 121 | int media_entity_create_link(struct media_entity *source, u16 source_pad, |
114 | struct media_entity *sink, u16 sink_pad, u32 flags); | 122 | struct media_entity *sink, u16 sink_pad, u32 flags); |
123 | int __media_entity_setup_link(struct media_link *link, u32 flags); | ||
124 | int media_entity_setup_link(struct media_link *link, u32 flags); | ||
125 | struct media_link *media_entity_find_link(struct media_pad *source, | ||
126 | struct media_pad *sink); | ||
127 | struct media_pad *media_entity_remote_source(struct media_pad *pad); | ||
115 | 128 | ||
116 | struct media_entity *media_entity_get(struct media_entity *entity); | 129 | struct media_entity *media_entity_get(struct media_entity *entity); |
117 | void media_entity_put(struct media_entity *entity); | 130 | void media_entity_put(struct media_entity *entity); |
@@ -121,4 +134,8 @@ void media_entity_graph_walk_start(struct media_entity_graph *graph, | |||
121 | struct media_entity * | 134 | struct media_entity * |
122 | media_entity_graph_walk_next(struct media_entity_graph *graph); | 135 | media_entity_graph_walk_next(struct media_entity_graph *graph); |
123 | 136 | ||
137 | #define media_entity_call(entity, operation, args...) \ | ||
138 | (((entity)->ops && (entity)->ops->operation) ? \ | ||
139 | (entity)->ops->operation((entity) , ##args) : -ENOIOCTLCMD) | ||
140 | |||
124 | #endif | 141 | #endif |