|
|
@@ -278,55 +278,6 @@ static int isp_video_get_graph_data(struct isp_video *video,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Validate a pipeline by checking both ends of all links for format
|
|
|
- * discrepancies.
|
|
|
- *
|
|
|
- * Compute the minimum time per frame value as the maximum of time per frame
|
|
|
- * limits reported by every block in the pipeline.
|
|
|
- *
|
|
|
- * Return 0 if all formats match, or -EPIPE if at least one link is found with
|
|
|
- * different formats on its two ends or if the pipeline doesn't start with a
|
|
|
- * video source (either a subdev with no input pad, or a non-subdev entity).
|
|
|
- */
|
|
|
-static int isp_video_validate_pipeline(struct isp_pipeline *pipe)
|
|
|
-{
|
|
|
- struct isp_device *isp = pipe->output->isp;
|
|
|
- struct media_pad *pad;
|
|
|
- struct v4l2_subdev *subdev;
|
|
|
-
|
|
|
- subdev = isp_video_remote_subdev(pipe->output, NULL);
|
|
|
- if (subdev == NULL)
|
|
|
- return -EPIPE;
|
|
|
-
|
|
|
- while (1) {
|
|
|
- /* Retrieve the sink format */
|
|
|
- pad = &subdev->entity.pads[0];
|
|
|
- if (!(pad->flags & MEDIA_PAD_FL_SINK))
|
|
|
- break;
|
|
|
-
|
|
|
- /* Update the maximum frame rate */
|
|
|
- if (subdev == &isp->isp_res.subdev)
|
|
|
- omap3isp_resizer_max_rate(&isp->isp_res,
|
|
|
- &pipe->max_rate);
|
|
|
-
|
|
|
- /* Retrieve the source format. Return an error if no source
|
|
|
- * entity can be found, and stop checking the pipeline if the
|
|
|
- * source entity isn't a subdev.
|
|
|
- */
|
|
|
- pad = media_entity_remote_pad(pad);
|
|
|
- if (pad == NULL)
|
|
|
- return -EPIPE;
|
|
|
-
|
|
|
- if (media_entity_type(pad->entity) != MEDIA_ENT_T_V4L2_SUBDEV)
|
|
|
- break;
|
|
|
-
|
|
|
- subdev = media_entity_to_v4l2_subdev(pad->entity);
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static int
|
|
|
__isp_video_get_format(struct isp_video *video, struct v4l2_format *format)
|
|
|
{
|
|
|
@@ -1054,11 +1005,6 @@ isp_video_streamon(struct file *file, void *fh, enum v4l2_buf_type type)
|
|
|
if (ret < 0)
|
|
|
goto err_check_format;
|
|
|
|
|
|
- /* Validate the pipeline and update its state. */
|
|
|
- ret = isp_video_validate_pipeline(pipe);
|
|
|
- if (ret < 0)
|
|
|
- goto err_check_format;
|
|
|
-
|
|
|
pipe->error = false;
|
|
|
|
|
|
spin_lock_irqsave(&pipe->lock, flags);
|