[media] media: change pipeline validation return error
authorHelen Mae Koike Fornazier <helen.koike@collabora.co.uk>
Sun, 28 Jun 2015 19:14:10 +0000 (16:14 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 29 Apr 2016 11:07:17 +0000 (08:07 -0300)
According to the V4L2 API, the VIDIOC_STREAMON ioctl should return EPIPE
if there is a format mismatch in the pipeline configuration.

As the .vidioc_streamon in the v4l2_ioctl_ops usually forwards the error
caused by the v4l2_subdev_link_validate_default (if it is in use), it
should return -EPIPE when it detect the mismatch.

When an entity is connected to a non enabled link,
media_entity_pipeline_start should return -ENOLINK, as the link does not
exist.

Signed-off-by: Helen Mae Koike Fornazier <helen.koike@collabora.co.uk>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/media-entity.c
drivers/media/v4l2-core/v4l2-subdev.c

index c53c1d5..d8a2299 100644 (file)
@@ -445,7 +445,7 @@ __must_check int __media_entity_pipeline_start(struct media_entity *entity,
                bitmap_or(active, active, has_no_links, entity->num_pads);
 
                if (!bitmap_full(active, entity->num_pads)) {
-                       ret = -EPIPE;
+                       ret = -ENOLINK;
                        dev_dbg(entity->graph_obj.mdev->dev,
                                "\"%s\":%u must be connected by an enabled link\n",
                                entity->name,
index 224ea60..953eab0 100644 (file)
@@ -510,7 +510,7 @@ int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd,
        if (source_fmt->format.width != sink_fmt->format.width
            || source_fmt->format.height != sink_fmt->format.height
            || source_fmt->format.code != sink_fmt->format.code)
-               return -EINVAL;
+               return -EPIPE;
 
        /* The field order must match, or the sink field order must be NONE
         * to support interlaced hardware connected to bridges that support
@@ -518,7 +518,7 @@ int v4l2_subdev_link_validate_default(struct v4l2_subdev *sd,
         */
        if (source_fmt->format.field != sink_fmt->format.field &&
            sink_fmt->format.field != V4L2_FIELD_NONE)
-               return -EINVAL;
+               return -EPIPE;
 
        return 0;
 }