summaryrefslogtreecommitdiffstats
path: root/drivers/media/usb/stk1160
diff options
context:
space:
mode:
authorEzequiel Garcia <elezegarcia@gmail.com>2012-08-20 02:23:45 +0200
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-09-25 15:53:34 +0200
commitc6b69c6c58288587c33efb43ca6e19f1c80b2757 (patch)
treeac4e7f87268f31f1261749bcaf07afbe6ba2fa14 /drivers/media/usb/stk1160
parent[media] stk1160: Handle urb allocation failure condition properly (diff)
downloadlinux-c6b69c6c58288587c33efb43ca6e19f1c80b2757.tar.xz
linux-c6b69c6c58288587c33efb43ca6e19f1c80b2757.zip
[media] stk1160: Fix s_fmt and try_fmt implementation
The driver was expecting to get a valid pixelformat on s_fmt and try_fmt. This is wrong, since the user may pass a bitmask and expect the driver to change it, returning a valid (fourcc) pixelformat. This problem was spotted by v4l2-compliance. Signed-off-by: Ezequiel Garcia <elezegarcia@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/usb/stk1160')
-rw-r--r--drivers/media/usb/stk1160/stk1160-v4l.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/media/usb/stk1160/stk1160-v4l.c b/drivers/media/usb/stk1160/stk1160-v4l.c
index c414bc3570c5..879800dd162f 100644
--- a/drivers/media/usb/stk1160/stk1160-v4l.c
+++ b/drivers/media/usb/stk1160/stk1160-v4l.c
@@ -318,12 +318,6 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
{
struct stk1160 *dev = video_drvdata(file);
- if (f->fmt.pix.pixelformat != format[0].fourcc) {
- stk1160_err("fourcc format 0x%08x invalid\n",
- f->fmt.pix.pixelformat);
- return -EINVAL;
- }
-
/*
* User can't choose size at his own will,
* so we just return him the current size chosen
@@ -331,6 +325,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
* TODO: Implement frame scaling?
*/
+ f->fmt.pix.pixelformat = dev->fmt->fourcc;
f->fmt.pix.width = dev->width;
f->fmt.pix.height = dev->height;
f->fmt.pix.field = V4L2_FIELD_INTERLACED;
@@ -346,14 +341,11 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
{
struct stk1160 *dev = video_drvdata(file);
struct vb2_queue *q = &dev->vb_vidq;
- int rc;
if (vb2_is_busy(q))
return -EBUSY;
- rc = vidioc_try_fmt_vid_cap(file, priv, f);
- if (rc < 0)
- return rc;
+ vidioc_try_fmt_vid_cap(file, priv, f);
/* We don't support any format changes */