}
 EXPORT_SYMBOL_GPL(media_pipeline_alloc_start);
 
+struct media_pad *
+__media_pipeline_pad_iter_next(struct media_pipeline *pipe,
+                              struct media_pipeline_pad_iter *iter,
+                              struct media_pad *pad)
+{
+       if (!pad)
+               iter->cursor = pipe->pads.next;
+
+       if (iter->cursor == &pipe->pads)
+               return NULL;
+
+       pad = list_entry(iter->cursor, struct media_pipeline_pad, list)->pad;
+       iter->cursor = iter->cursor->next;
+
+       return pad;
+}
+EXPORT_SYMBOL_GPL(__media_pipeline_pad_iter_next);
+
 /* -----------------------------------------------------------------------------
  * Links management
  */
 
        struct media_pad *pad;
 };
 
+/**
+ * struct media_pipeline_pad_iter - Iterator for media_pipeline_for_each_pad
+ *
+ * @cursor: The current element
+ */
+struct media_pipeline_pad_iter {
+       struct list_head *cursor;
+};
+
 /**
  * struct media_link - A link object part of a media graph.
  *
  */
 void __media_pipeline_stop(struct media_pad *pad);
 
+struct media_pad *
+__media_pipeline_pad_iter_next(struct media_pipeline *pipe,
+                              struct media_pipeline_pad_iter *iter,
+                              struct media_pad *pad);
+
+/**
+ * media_pipeline_for_each_pad - Iterate on all pads in a media pipeline
+ * @pipe: The pipeline
+ * @iter: The iterator (struct media_pipeline_pad_iter)
+ * @pad: The iterator pad
+ *
+ * Iterate on all pads in a media pipeline. This is only valid after the
+ * pipeline has been built with media_pipeline_start() and before it gets
+ * destroyed with media_pipeline_stop().
+ */
+#define media_pipeline_for_each_pad(pipe, iter, pad)                   \
+       for (pad = __media_pipeline_pad_iter_next((pipe), iter, NULL);  \
+            pad != NULL;                                               \
+            pad = __media_pipeline_pad_iter_next((pipe), iter, pad))
+
 /**
  * media_pipeline_alloc_start - Mark a pipeline as streaming
  * @pad: Starting pad