media: v4l2-core: fix touch support in v4l_g_fmt
[ Upstream commit 545b618cfb
]
v4l_s_fmt, for VFL_TYPE_TOUCH, sets unneeded members of
the v4l2_pix_format structure to default values.This was
missing in v4l_g_fmt, which would lead to failures in
v4l2-compliance tests.
Signed-off-by: Vandana BN <bnvandana@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
5.4-rM2-2.2.x-imx-squashed
parent
96d7c3cb33
commit
6e7a164f18
|
@ -1466,10 +1466,26 @@ static int v4l_enum_fmt(const struct v4l2_ioctl_ops *ops,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void v4l_pix_format_touch(struct v4l2_pix_format *p)
|
||||
{
|
||||
/*
|
||||
* The v4l2_pix_format structure contains fields that make no sense for
|
||||
* touch. Set them to default values in this case.
|
||||
*/
|
||||
|
||||
p->field = V4L2_FIELD_NONE;
|
||||
p->colorspace = V4L2_COLORSPACE_RAW;
|
||||
p->flags = 0;
|
||||
p->ycbcr_enc = 0;
|
||||
p->quantization = 0;
|
||||
p->xfer_func = 0;
|
||||
}
|
||||
|
||||
static int v4l_g_fmt(const struct v4l2_ioctl_ops *ops,
|
||||
struct file *file, void *fh, void *arg)
|
||||
{
|
||||
struct v4l2_format *p = arg;
|
||||
struct video_device *vfd = video_devdata(file);
|
||||
int ret = check_fmt(file, p->type);
|
||||
|
||||
if (ret)
|
||||
|
@ -1507,6 +1523,8 @@ static int v4l_g_fmt(const struct v4l2_ioctl_ops *ops,
|
|||
ret = ops->vidioc_g_fmt_vid_cap(file, fh, arg);
|
||||
/* just in case the driver zeroed it again */
|
||||
p->fmt.pix.priv = V4L2_PIX_FMT_PRIV_MAGIC;
|
||||
if (vfd->vfl_type == VFL_TYPE_TOUCH)
|
||||
v4l_pix_format_touch(&p->fmt.pix);
|
||||
return ret;
|
||||
case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
|
||||
return ops->vidioc_g_fmt_vid_cap_mplane(file, fh, arg);
|
||||
|
@ -1544,21 +1562,6 @@ static int v4l_g_fmt(const struct v4l2_ioctl_ops *ops,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static void v4l_pix_format_touch(struct v4l2_pix_format *p)
|
||||
{
|
||||
/*
|
||||
* The v4l2_pix_format structure contains fields that make no sense for
|
||||
* touch. Set them to default values in this case.
|
||||
*/
|
||||
|
||||
p->field = V4L2_FIELD_NONE;
|
||||
p->colorspace = V4L2_COLORSPACE_RAW;
|
||||
p->flags = 0;
|
||||
p->ycbcr_enc = 0;
|
||||
p->quantization = 0;
|
||||
p->xfer_func = 0;
|
||||
}
|
||||
|
||||
static int v4l_s_fmt(const struct v4l2_ioctl_ops *ops,
|
||||
struct file *file, void *fh, void *arg)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue