[PATCH 01/15] v4l: vsp1: Don't start/stop media pipeline for DRM
Kieran Bingham
kieran.bingham+renesas at ideasonboard.com
Wed Apr 4 15:35:36 UTC 2018
Hi Laurent,
On 26/02/18 21:45, Laurent Pinchart wrote:
> The DRM support code manages a pipeline of VSP entities, each backed by
> a media entity. When starting or stopping the pipeline, it starts and
> stops the media pipeline through the media API in order to store the
> pipeline pointer in every entity.
>
> The driver doesn't use the pipe pointer in media entities, neither does
> it rely on the other effects of the media_pipeline_start() and
> media_pipeline_stop() functions. Furthermore, as the media links for the
> DRM pipeline are never set up correctly, and as the pipeline can be
> modified dynamically when enabling or disabling planes, the current
> implementation is not correct. Remove the incorrect and unneeded code.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas at ideasonboard.com>
> ---
> drivers/media/platform/vsp1/vsp1_drm.c | 18 +++---------------
> 1 file changed, 3 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/media/platform/vsp1/vsp1_drm.c b/drivers/media/platform/vsp1/vsp1_drm.c
> index b8fee1834253..e31fb371eaf9 100644
> --- a/drivers/media/platform/vsp1/vsp1_drm.c
> +++ b/drivers/media/platform/vsp1/vsp1_drm.c
> @@ -109,8 +109,6 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
> if (ret == -ETIMEDOUT)
> dev_err(vsp1->dev, "DRM pipeline stop timeout\n");
>
> - media_pipeline_stop(&pipe->output->entity.subdev.entity);
> -
> for (i = 0; i < ARRAY_SIZE(pipe->inputs); ++i) {
> struct vsp1_rwpf *rpf = pipe->inputs[i];
>
> @@ -224,11 +222,9 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
> }
>
> /*
> - * Mark the pipeline as streaming and enable the VSP1. This will store
> - * the pipeline pointer in all entities, which the s_stream handlers
> - * will need. We don't start the entities themselves right at this point
> - * as there's no plane configured yet, so we can't start processing
> - * buffers.
> + * Enable the VSP1. We don't start the entities themselves right at this
> + * point as there's no plane configured yet, so we can't start
> + * processing buffers.
> */
> ret = vsp1_device_get(vsp1);
> if (ret < 0)
> @@ -241,14 +237,6 @@ int vsp1_du_setup_lif(struct device *dev, unsigned int pipe_index,
> drm_pipe->du_complete = cfg->callback;
> drm_pipe->du_private = cfg->callback_data;
>
> - ret = media_pipeline_start(&pipe->output->entity.subdev.entity,
> - &pipe->pipe);
> - if (ret < 0) {
> - dev_dbg(vsp1->dev, "%s: pipeline start failed\n", __func__);
> - vsp1_device_put(vsp1);
> - return ret;
> - }
> -
> /* Disable the display interrupts. */
> vsp1_write(vsp1, VI6_DISP_IRQ_STA, 0);
> vsp1_write(vsp1, VI6_DISP_IRQ_ENB, 0);
>
More information about the dri-devel
mailing list