media: mc: convert pipeline funcs to take media_pad
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Wed, 31 Aug 2022 14:13:39 +0000 (16:13 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sat, 24 Sep 2022 07:22:30 +0000 (09:22 +0200)
Now that the pipeline is stored into pads instead of entities, we can
change the relevant functions to take pads instead of entities.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/mc/mc-entity.c
drivers/media/platform/samsung/s3c-camif/camif-capture.c
drivers/media/usb/au0828/au0828-core.c
drivers/media/v4l2-core/v4l2-dev.c
drivers/staging/media/imx/imx-media-utils.c
include/media/media-entity.h
include/media/v4l2-dev.h

index 831076b3684768830902346398d8d3e03c63931f..b8bcbc734eaf4895d27b879441ac25e5060b1f06 100644 (file)
@@ -700,29 +700,21 @@ done:
        return ret;
 }
 
-__must_check int __media_pipeline_start(struct media_entity *entity,
+__must_check int __media_pipeline_start(struct media_pad *pad,
                                        struct media_pipeline *pipe)
 {
-       struct media_device *mdev = entity->graph_obj.mdev;
+       struct media_device *mdev = pad->entity->graph_obj.mdev;
        struct media_pipeline_pad *err_ppad;
        struct media_pipeline_pad *ppad;
        int ret;
 
        lockdep_assert_held(&mdev->graph_mutex);
 
-       /*
-        * media_pipeline_start(entity) only makes sense with entities that have
-        * a single pad.
-        */
-
-       if (WARN_ON(entity->num_pads != 1))
-               return -EINVAL;
-
        /*
         * If the entity is already part of a pipeline, that pipeline must
         * be the same as the pipe given to media_pipeline_start().
         */
-       if (WARN_ON(entity->pads->pipe && entity->pads->pipe != pipe))
+       if (WARN_ON(pad->pipe && pad->pipe != pipe))
                return -EINVAL;
 
        /*
@@ -739,7 +731,7 @@ __must_check int __media_pipeline_start(struct media_entity *entity,
         * with media_pipeline_pad instances for each pad found during graph
         * walk.
         */
-       ret = media_pipeline_populate(pipe, entity->pads);
+       ret = media_pipeline_populate(pipe, pad);
        if (ret)
                return ret;
 
@@ -856,22 +848,22 @@ error:
 }
 EXPORT_SYMBOL_GPL(__media_pipeline_start);
 
-__must_check int media_pipeline_start(struct media_entity *entity,
+__must_check int media_pipeline_start(struct media_pad *pad,
                                      struct media_pipeline *pipe)
 {
-       struct media_device *mdev = entity->graph_obj.mdev;
+       struct media_device *mdev = pad->entity->graph_obj.mdev;
        int ret;
 
        mutex_lock(&mdev->graph_mutex);
-       ret = __media_pipeline_start(entity, pipe);
+       ret = __media_pipeline_start(pad, pipe);
        mutex_unlock(&mdev->graph_mutex);
        return ret;
 }
 EXPORT_SYMBOL_GPL(media_pipeline_start);
 
-void __media_pipeline_stop(struct media_entity *entity)
+void __media_pipeline_stop(struct media_pad *pad)
 {
-       struct media_pipeline *pipe = entity->pads->pipe;
+       struct media_pipeline *pipe = pad->pipe;
        struct media_pipeline_pad *ppad;
 
        /*
@@ -894,19 +886,19 @@ void __media_pipeline_stop(struct media_entity *entity)
 }
 EXPORT_SYMBOL_GPL(__media_pipeline_stop);
 
-void media_pipeline_stop(struct media_entity *entity)
+void media_pipeline_stop(struct media_pad *pad)
 {
-       struct media_device *mdev = entity->graph_obj.mdev;
+       struct media_device *mdev = pad->entity->graph_obj.mdev;
 
        mutex_lock(&mdev->graph_mutex);
-       __media_pipeline_stop(entity);
+       __media_pipeline_stop(pad);
        mutex_unlock(&mdev->graph_mutex);
 }
 EXPORT_SYMBOL_GPL(media_pipeline_stop);
 
-__must_check int media_pipeline_alloc_start(struct media_entity *entity)
+__must_check int media_pipeline_alloc_start(struct media_pad *pad)
 {
-       struct media_device *mdev = entity->graph_obj.mdev;
+       struct media_device *mdev = pad->entity->graph_obj.mdev;
        struct media_pipeline *new_pipe = NULL;
        struct media_pipeline *pipe;
        int ret;
@@ -917,7 +909,7 @@ __must_check int media_pipeline_alloc_start(struct media_entity *entity)
         * Is the entity already part of a pipeline? If not, we need to allocate
         * a pipe.
         */
-       pipe = media_entity_pipeline(entity);
+       pipe = media_pad_pipeline(pad);
        if (!pipe) {
                new_pipe = kzalloc(sizeof(*new_pipe), GFP_KERNEL);
                if (!new_pipe) {
@@ -929,7 +921,7 @@ __must_check int media_pipeline_alloc_start(struct media_entity *entity)
                pipe->allocated = true;
        }
 
-       ret = __media_pipeline_start(entity, pipe);
+       ret = __media_pipeline_start(pad, pipe);
        if (ret)
                kfree(new_pipe);
 
index c2d8f1e425d879f9a1520f15f78be9f95089d938..db106ebdf870a4c70ec1f23eff139c9d09a605f1 100644 (file)
@@ -848,13 +848,13 @@ static int s3c_camif_streamon(struct file *file, void *priv,
        if (s3c_vp_active(vp))
                return 0;
 
-       ret = media_pipeline_start(sensor, camif->m_pipeline);
+       ret = media_pipeline_start(sensor->pads, camif->m_pipeline);
        if (ret < 0)
                return ret;
 
        ret = camif_pipeline_validate(camif);
        if (ret < 0) {
-               media_pipeline_stop(sensor);
+               media_pipeline_stop(sensor->pads);
                return ret;
        }
 
@@ -878,7 +878,7 @@ static int s3c_camif_streamoff(struct file *file, void *priv,
 
        ret = vb2_streamoff(&vp->vb_queue, type);
        if (ret == 0)
-               media_pipeline_stop(&camif->sensor.sd->entity);
+               media_pipeline_stop(camif->sensor.sd->entity.pads);
        return ret;
 }
 
index caefac07af927f0e62516ef1c4bda3bf6b3b0ce6..877e85a451cbeb01e47eac282723eb93c1207b35 100644 (file)
@@ -410,7 +410,7 @@ static int au0828_enable_source(struct media_entity *entity,
                goto end;
        }
 
-       ret = __media_pipeline_start(entity, pipe);
+       ret = __media_pipeline_start(entity->pads, pipe);
        if (ret) {
                pr_err("Start Pipeline: %s->%s Error %d\n",
                        source->name, entity->name, ret);
@@ -501,12 +501,12 @@ static void au0828_disable_source(struct media_entity *entity)
                                return;
 
                        /* stop pipeline */
-                       __media_pipeline_stop(dev->active_link_owner);
+                       __media_pipeline_stop(dev->active_link_owner->pads);
                        pr_debug("Pipeline stop for %s\n",
                                dev->active_link_owner->name);
 
                        ret = __media_pipeline_start(
-                                       dev->active_link_user,
+                                       dev->active_link_user->pads,
                                        dev->active_link_user_pipe);
                        if (ret) {
                                pr_err("Start Pipeline: %s->%s %d\n",
@@ -532,7 +532,7 @@ static void au0828_disable_source(struct media_entity *entity)
                        return;
 
                /* stop pipeline */
-               __media_pipeline_stop(dev->active_link_owner);
+               __media_pipeline_stop(dev->active_link_owner->pads);
                pr_debug("Pipeline stop for %s\n",
                        dev->active_link_owner->name);
 
index 945bb867a4c1942d3cc553cc72bd3e656b50c8eb..397d553177fa70b0cb880af9724cedbe52ce486b 100644 (file)
@@ -1105,7 +1105,7 @@ __must_check int video_device_pipeline_start(struct video_device *vdev,
        if (entity->num_pads != 1)
                return -ENODEV;
 
-       return media_pipeline_start(entity, pipe);
+       return media_pipeline_start(&entity->pads[0], pipe);
 }
 EXPORT_SYMBOL_GPL(video_device_pipeline_start);
 
@@ -1117,7 +1117,7 @@ __must_check int __video_device_pipeline_start(struct video_device *vdev,
        if (entity->num_pads != 1)
                return -ENODEV;
 
-       return __media_pipeline_start(entity, pipe);
+       return __media_pipeline_start(&entity->pads[0], pipe);
 }
 EXPORT_SYMBOL_GPL(__video_device_pipeline_start);
 
@@ -1128,7 +1128,7 @@ void video_device_pipeline_stop(struct video_device *vdev)
        if (WARN_ON(entity->num_pads != 1))
                return;
 
-       return media_pipeline_stop(entity);
+       return media_pipeline_stop(&entity->pads[0]);
 }
 EXPORT_SYMBOL_GPL(video_device_pipeline_stop);
 
@@ -1139,7 +1139,7 @@ void __video_device_pipeline_stop(struct video_device *vdev)
        if (WARN_ON(entity->num_pads != 1))
                return;
 
-       return __media_pipeline_stop(entity);
+       return __media_pipeline_stop(&entity->pads[0]);
 }
 EXPORT_SYMBOL_GPL(__video_device_pipeline_stop);
 
@@ -1150,7 +1150,7 @@ __must_check int video_device_pipeline_alloc_start(struct video_device *vdev)
        if (entity->num_pads != 1)
                return -ENODEV;
 
-       return media_pipeline_alloc_start(entity);
+       return media_pipeline_alloc_start(&entity->pads[0]);
 }
 EXPORT_SYMBOL_GPL(video_device_pipeline_alloc_start);
 
@@ -1161,7 +1161,7 @@ struct media_pipeline *video_device_pipeline(struct video_device *vdev)
        if (WARN_ON(entity->num_pads != 1))
                return NULL;
 
-       return media_entity_pipeline(entity);
+       return media_pad_pipeline(&entity->pads[0]);
 }
 EXPORT_SYMBOL_GPL(video_device_pipeline);
 
index e9a3c6d2c66fbe85b546312641a993d2a97fea16..3e7462112649d011325635b2b837308a9a7b4c06 100644 (file)
@@ -863,16 +863,16 @@ int imx_media_pipeline_set_stream(struct imx_media_dev *imxmd,
        mutex_lock(&imxmd->md.graph_mutex);
 
        if (on) {
-               ret = __media_pipeline_start(entity, &imxmd->pipe);
+               ret = __media_pipeline_start(entity->pads, &imxmd->pipe);
                if (ret)
                        goto out;
                ret = v4l2_subdev_call(sd, video, s_stream, 1);
                if (ret)
-                       __media_pipeline_stop(entity);
+                       __media_pipeline_stop(entity->pads);
        } else {
                v4l2_subdev_call(sd, video, s_stream, 0);
-               if (media_entity_pipeline(entity))
-                       __media_pipeline_stop(entity);
+               if (media_pad_pipeline(entity->pads))
+                       __media_pipeline_stop(entity->pads);
        }
 
 out:
index 8e9fd309aa653584f1f2153571ac1b290eda3bf6..28c9de8a1f3484aa13b66d862e6a792cb5336995 100644 (file)
@@ -1115,66 +1115,66 @@ struct media_entity *media_graph_walk_next(struct media_graph *graph);
 
 /**
  * media_pipeline_start - Mark a pipeline as streaming
- * @entity: Starting entity
- * @pipe: Media pipeline to be assigned to all entities in the pipeline.
+ * @pad: Starting pad
+ * @pipe: Media pipeline to be assigned to all pads in the pipeline.
  *
- * Mark all entities connected to a given entity through enabled links, either
+ * Mark all pads connected to a given pad through enabled links, either
  * directly or indirectly, as streaming. The given pipeline object is assigned
- * to every entity in the pipeline and stored in the media_entity pipe field.
+ * to every pad in the pipeline and stored in the media_pad pipe field.
  *
  * Calls to this function can be nested, in which case the same number of
  * media_pipeline_stop() calls will be required to stop streaming. The
  * pipeline pointer must be identical for all nested calls to
  * media_pipeline_start().
  */
-__must_check int media_pipeline_start(struct media_entity *entity,
+__must_check int media_pipeline_start(struct media_pad *pad,
                                      struct media_pipeline *pipe);
 /**
  * __media_pipeline_start - Mark a pipeline as streaming
  *
- * @entity: Starting entity
- * @pipe: Media pipeline to be assigned to all entities in the pipeline.
+ * @pad: Starting pad
+ * @pipe: Media pipeline to be assigned to all pads in the pipeline.
  *
  * ..note:: This is the non-locking version of media_pipeline_start()
  */
-__must_check int __media_pipeline_start(struct media_entity *entity,
+__must_check int __media_pipeline_start(struct media_pad *pad,
                                        struct media_pipeline *pipe);
 
 /**
  * media_pipeline_stop - Mark a pipeline as not streaming
- * @entity: Starting entity
+ * @pad: Starting pad
  *
- * Mark all entities connected to a given entity through enabled links, either
- * directly or indirectly, as not streaming. The media_entity pipe field is
+ * Mark all pads connected to a given pads through enabled links, either
+ * directly or indirectly, as not streaming. The media_pad pipe field is
  * reset to %NULL.
  *
  * If multiple calls to media_pipeline_start() have been made, the same
  * number of calls to this function are required to mark the pipeline as not
  * streaming.
  */
-void media_pipeline_stop(struct media_entity *entity);
+void media_pipeline_stop(struct media_pad *pad);
 
 /**
  * __media_pipeline_stop - Mark a pipeline as not streaming
  *
- * @entity: Starting entity
+ * @pad: Starting pad
  *
  * .. note:: This is the non-locking version of media_pipeline_stop()
  */
-void __media_pipeline_stop(struct media_entity *entity);
+void __media_pipeline_stop(struct media_pad *pad);
 
 /**
  * media_pipeline_alloc_start - Mark a pipeline as streaming
- * @entity: Starting entity
+ * @pad: Starting pad
  *
  * media_pipeline_alloc_start() is similar to media_pipeline_start() but instead
  * of working on a given pipeline the function will use an existing pipeline if
- * the entity is already part of a pipeline, or allocate a new pipeline.
+ * the pad is already part of a pipeline, or allocate a new pipeline.
  *
  * Calls to media_pipeline_alloc_start() must be matched with
  * media_pipeline_stop().
  */
-__must_check int media_pipeline_alloc_start(struct media_entity *entity);
+__must_check int media_pipeline_alloc_start(struct media_pad *pad);
 
 /**
  * media_devnode_create() - creates and initializes a device node interface
index 643da0740ab06dab697deeb1600c6854ed9722eb..e0a13505f88da69770b5f514d56ff6810056fb07 100644 (file)
@@ -548,7 +548,7 @@ static inline int video_is_registered(struct video_device *vdev)
  *
  * Mark all entities connected to a given video device through enabled links,
  * either directly or indirectly, as streaming. The given pipeline object is
- * assigned to every entity in the pipeline and stored in the media_entity pipe
+ * assigned to every pad in the pipeline and stored in the media_pad pipe
  * field.
  *
  * Calls to this function can be nested, in which case the same number of
@@ -582,7 +582,7 @@ __must_check int __video_device_pipeline_start(struct video_device *vdev,
  * @vdev: Starting video device
  *
  * Mark all entities connected to a given video device through enabled links,
- * either directly or indirectly, as not streaming. The media_entity pipe field
+ * either directly or indirectly, as not streaming. The media_pad pipe field
  * is reset to %NULL.
  *
  * If multiple calls to media_pipeline_start() have been made, the same