Lines Matching refs:walk
477 media_pipeline_walk_top(struct media_pipeline_walk *walk) in media_pipeline_walk_top() argument
479 return &walk->stack.entries[walk->stack.top]; in media_pipeline_walk_top()
482 static bool media_pipeline_walk_empty(struct media_pipeline_walk *walk) in media_pipeline_walk_empty() argument
484 return walk->stack.top == -1; in media_pipeline_walk_empty()
488 static int media_pipeline_walk_resize(struct media_pipeline_walk *walk) in media_pipeline_walk_resize() argument
494 if (walk->stack.size >= 256) in media_pipeline_walk_resize()
497 new_size = walk->stack.size + MEDIA_PIPELINE_STACK_GROW_STEP; in media_pipeline_walk_resize()
499 entries = krealloc(walk->stack.entries, in media_pipeline_walk_resize()
500 new_size * sizeof(*walk->stack.entries), in media_pipeline_walk_resize()
505 walk->stack.entries = entries; in media_pipeline_walk_resize()
506 walk->stack.size = new_size; in media_pipeline_walk_resize()
512 static int media_pipeline_walk_push(struct media_pipeline_walk *walk, in media_pipeline_walk_push() argument
518 if (walk->stack.top + 1 >= walk->stack.size) { in media_pipeline_walk_push()
519 ret = media_pipeline_walk_resize(walk); in media_pipeline_walk_push()
524 walk->stack.top++; in media_pipeline_walk_push()
525 entry = media_pipeline_walk_top(walk); in media_pipeline_walk_push()
529 dev_dbg(walk->mdev->dev, in media_pipeline_walk_push()
531 walk->stack.top, pad->entity->name, pad->index); in media_pipeline_walk_push()
541 static bool media_pipeline_walk_pop(struct media_pipeline_walk *walk) in media_pipeline_walk_pop() argument
545 if (WARN_ON(walk->stack.top < 0)) in media_pipeline_walk_pop()
548 entry = media_pipeline_walk_top(walk); in media_pipeline_walk_pop()
551 dev_dbg(walk->mdev->dev, in media_pipeline_walk_pop()
553 walk->stack.top); in media_pipeline_walk_pop()
555 walk->stack.top--; in media_pipeline_walk_pop()
561 dev_dbg(walk->mdev->dev, in media_pipeline_walk_pop()
563 walk->stack.top); in media_pipeline_walk_pop()
569 static void media_pipeline_walk_destroy(struct media_pipeline_walk *walk) in media_pipeline_walk_destroy() argument
571 kfree(walk->stack.entries); in media_pipeline_walk_destroy()
576 struct media_pipeline_walk *walk, in media_pipeline_add_pad() argument
603 return media_pipeline_walk_push(walk, pad); in media_pipeline_add_pad()
608 struct media_pipeline_walk *walk) in media_pipeline_explore_next_link() argument
610 struct media_pipeline_walk_entry *entry = media_pipeline_walk_top(walk); in media_pipeline_explore_next_link()
620 last_link = media_pipeline_walk_pop(walk); in media_pipeline_explore_next_link()
623 dev_dbg(walk->mdev->dev, in media_pipeline_explore_next_link()
628 dev_dbg(walk->mdev->dev, in media_pipeline_explore_next_link()
649 dev_dbg(walk->mdev->dev, in media_pipeline_explore_next_link()
658 ret = media_pipeline_add_pad(pipe, walk, local); in media_pipeline_explore_next_link()
664 dev_dbg(walk->mdev->dev, in media_pipeline_explore_next_link()
669 ret = media_pipeline_add_pad(pipe, walk, remote); in media_pipeline_explore_next_link()
684 dev_dbg(walk->mdev->dev, in media_pipeline_explore_next_link()
699 ret = media_pipeline_add_pad(pipe, walk, local); in media_pipeline_explore_next_link()
721 struct media_pipeline_walk walk = { }; in media_pipeline_populate() local
732 walk.mdev = pipe->mdev; in media_pipeline_populate()
733 walk.stack.top = -1; in media_pipeline_populate()
734 ret = media_pipeline_add_pad(pipe, &walk, pad); in media_pipeline_populate()
745 while (!media_pipeline_walk_empty(&walk)) { in media_pipeline_populate()
746 ret = media_pipeline_explore_next_link(pipe, &walk); in media_pipeline_populate()
758 WARN_ON(walk.stack.top != -1); in media_pipeline_populate()
763 media_pipeline_walk_destroy(&walk); in media_pipeline_populate()