[media] vivid: return -ENODATA if the current input doesn't support g/s_selection
authorHans Verkuil <hverkuil@xs4all.nl>
Wed, 20 Jul 2016 12:31:25 +0000 (09:31 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 24 Aug 2016 12:57:01 +0000 (09:57 -0300)
Returning -EINVAL indicates wrong arguments, but that's not the case
here.

Returning -ENOTTY is also no option, since the ioctl is implemented, but
it just is not valid for this input.

So use -ENODATA instead. This is also used elsewhere when an ioctl isn't
valid for a specific input.

In this case G/S_SELECTION returned -EINVAL for the webcam input. That
input doesn't support cropping, instead it uses ENUM_FRAMESIZES to
enumerate a list of discrete frame sizes.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/vivid/vivid-vid-cap.c

index d404a7c..d5c84ec 100644 (file)
@@ -823,7 +823,7 @@ int vivid_vid_cap_g_selection(struct file *file, void *priv,
        if (sel->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
                return -EINVAL;
        if (vivid_is_webcam(dev))
-               return -EINVAL;
+               return -ENODATA;
 
        sel->r.left = sel->r.top = 0;
        switch (sel->target) {
@@ -872,7 +872,7 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selection
        if (s->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
                return -EINVAL;
        if (vivid_is_webcam(dev))
-               return -EINVAL;
+               return -ENODATA;
 
        switch (s->target) {
        case V4L2_SEL_TGT_CROP: