Commit 9e3576a1 authored by Tomi Valkeinen's avatar Tomi Valkeinen Committed by Mauro Carvalho Chehab
Browse files

media: mc: convert pipeline funcs to take media_pad



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: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 5b4f9a72
Loading
Loading
Loading
Loading
+16 −24
Original line number Diff line number Diff line
@@ -700,29 +700,21 @@ static int media_pipeline_populate(struct media_pipeline *pipe,
	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 @@ __must_check int __media_pipeline_start(struct media_entity *entity,
}
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);

+3 −3
Original line number Diff line number Diff line
@@ -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;
}

+4 −4
Original line number Diff line number Diff line
@@ -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);

+6 −6
Original line number Diff line number Diff line
@@ -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);

+4 −4
Original line number Diff line number Diff line
@@ -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:
Loading