Commit c6b69c6c authored by Ezequiel Garcia's avatar Ezequiel Garcia Committed by Mauro Carvalho Chehab

[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: default avatarEzequiel Garcia <elezegarcia@gmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 06574184
...@@ -318,12 +318,6 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, ...@@ -318,12 +318,6 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
{ {
struct stk1160 *dev = video_drvdata(file); 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, * User can't choose size at his own will,
* so we just return him the current size chosen * 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, ...@@ -331,6 +325,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
* TODO: Implement frame scaling? * TODO: Implement frame scaling?
*/ */
f->fmt.pix.pixelformat = dev->fmt->fourcc;
f->fmt.pix.width = dev->width; f->fmt.pix.width = dev->width;
f->fmt.pix.height = dev->height; f->fmt.pix.height = dev->height;
f->fmt.pix.field = V4L2_FIELD_INTERLACED; f->fmt.pix.field = V4L2_FIELD_INTERLACED;
...@@ -346,14 +341,11 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, ...@@ -346,14 +341,11 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
{ {
struct stk1160 *dev = video_drvdata(file); struct stk1160 *dev = video_drvdata(file);
struct vb2_queue *q = &dev->vb_vidq; struct vb2_queue *q = &dev->vb_vidq;
int rc;
if (vb2_is_busy(q)) if (vb2_is_busy(q))
return -EBUSY; return -EBUSY;
rc = vidioc_try_fmt_vid_cap(file, priv, f); vidioc_try_fmt_vid_cap(file, priv, f);
if (rc < 0)
return rc;
/* We don't support any format changes */ /* We don't support any format changes */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment