Lines Matching refs:link
94 media_entity_other(struct media_entity *entity, struct media_link *link) in media_entity_other() argument
96 if (link->source->entity == entity) in media_entity_other()
97 return link->sink->entity; in media_entity_other()
99 return link->source->entity; in media_entity_other()
111 graph->stack[graph->top].link = 0; in stack_push()
125 #define link_top(en) ((en)->stack[(en)->top].link)
178 struct media_link *link = &entity->links[link_top(graph)]; in media_entity_graph_walk_next() local
182 if (!(link->flags & MEDIA_LNK_FL_ENABLED)) { in media_entity_graph_walk_next()
188 next = media_entity_other(entity, link); in media_entity_graph_walk_next()
257 struct media_link *link = &entity->links[i]; in media_entity_pipeline_start() local
258 struct media_pad *pad = link->sink->entity == entity in media_entity_pipeline_start()
259 ? link->sink : link->source; in media_entity_pipeline_start()
270 link->flags & MEDIA_LNK_FL_ENABLED) in media_entity_pipeline_start()
277 if (link->sink != pad || in media_entity_pipeline_start()
278 !(link->flags & MEDIA_LNK_FL_ENABLED)) in media_entity_pipeline_start()
281 ret = entity->ops->link_validate(link); in media_entity_pipeline_start()
285 link->source->entity->name, in media_entity_pipeline_start()
286 link->source->index, in media_entity_pipeline_start()
287 entity->name, link->sink->index, ret); in media_entity_pipeline_start()
441 struct media_link *link; in media_entity_create_link() local
448 link = media_entity_add_link(source); in media_entity_create_link()
449 if (link == NULL) in media_entity_create_link()
452 link->source = &source->pads[source_pad]; in media_entity_create_link()
453 link->sink = &sink->pads[sink_pad]; in media_entity_create_link()
454 link->flags = flags; in media_entity_create_link()
469 link->reverse = backlink; in media_entity_create_link()
470 backlink->reverse = link; in media_entity_create_link()
483 struct media_link *link = &entity->links[i]; in __media_entity_remove_links() local
487 if (link->source->entity == entity) in __media_entity_remove_links()
488 remote = link->sink->entity; in __media_entity_remove_links()
490 remote = link->source->entity; in __media_entity_remove_links()
495 if (rlink != link->reverse) { in __media_entity_remove_links()
500 if (link->source->entity == entity) in __media_entity_remove_links()
528 static int __media_entity_setup_link_notify(struct media_link *link, u32 flags) in __media_entity_setup_link_notify() argument
533 ret = media_entity_call(link->source->entity, link_setup, in __media_entity_setup_link_notify()
534 link->source, link->sink, flags); in __media_entity_setup_link_notify()
538 ret = media_entity_call(link->sink->entity, link_setup, in __media_entity_setup_link_notify()
539 link->sink, link->source, flags); in __media_entity_setup_link_notify()
541 media_entity_call(link->source->entity, link_setup, in __media_entity_setup_link_notify()
542 link->source, link->sink, link->flags); in __media_entity_setup_link_notify()
546 link->flags = flags; in __media_entity_setup_link_notify()
547 link->reverse->flags = link->flags; in __media_entity_setup_link_notify()
566 int __media_entity_setup_link(struct media_link *link, u32 flags) in __media_entity_setup_link() argument
573 if (link == NULL) in __media_entity_setup_link()
577 if ((link->flags & ~mask) != (flags & ~mask)) in __media_entity_setup_link()
580 if (link->flags & MEDIA_LNK_FL_IMMUTABLE) in __media_entity_setup_link()
581 return link->flags == flags ? 0 : -EINVAL; in __media_entity_setup_link()
583 if (link->flags == flags) in __media_entity_setup_link()
586 source = link->source->entity; in __media_entity_setup_link()
587 sink = link->sink->entity; in __media_entity_setup_link()
589 if (!(link->flags & MEDIA_LNK_FL_DYNAMIC) && in __media_entity_setup_link()
596 ret = mdev->link_notify(link, flags, in __media_entity_setup_link()
602 ret = __media_entity_setup_link_notify(link, flags); in __media_entity_setup_link()
605 mdev->link_notify(link, flags, MEDIA_DEV_NOTIFY_POST_LINK_CH); in __media_entity_setup_link()
610 int media_entity_setup_link(struct media_link *link, u32 flags) in media_entity_setup_link() argument
614 mutex_lock(&link->source->entity->parent->graph_mutex); in media_entity_setup_link()
615 ret = __media_entity_setup_link(link, flags); in media_entity_setup_link()
616 mutex_unlock(&link->source->entity->parent->graph_mutex); in media_entity_setup_link()
633 struct media_link *link; in media_entity_find_link() local
637 link = &source->entity->links[i]; in media_entity_find_link()
639 if (link->source->entity == source->entity && in media_entity_find_link()
640 link->source->index == source->index && in media_entity_find_link()
641 link->sink->entity == sink->entity && in media_entity_find_link()
642 link->sink->index == sink->index) in media_entity_find_link()
643 return link; in media_entity_find_link()
665 struct media_link *link = &pad->entity->links[i]; in media_entity_remote_pad() local
667 if (!(link->flags & MEDIA_LNK_FL_ENABLED)) in media_entity_remote_pad()
670 if (link->source == pad) in media_entity_remote_pad()
671 return link->sink; in media_entity_remote_pad()
673 if (link->sink == pad) in media_entity_remote_pad()
674 return link->source; in media_entity_remote_pad()