summaryrefslogtreecommitdiffstats
path: root/drivers/input/touchscreen/sur40.c
diff options
context:
space:
mode:
authorFlorian Echtler <floe@butterbrot.org>2016-05-31 17:15:31 -0300
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2016-08-24 10:07:06 -0300
commitf223c30f1ee9d327df2761f0546c413aabe8f356 (patch)
treece1f4347f1f7280eb8e83a60cfcac7f73c6f7b46 /drivers/input/touchscreen/sur40.c
parentf22bede31378119e439758ea56f4f79462199a0d (diff)
downloadlinux-stable-f223c30f1ee9d327df2761f0546c413aabe8f356.tar.gz
linux-stable-f223c30f1ee9d327df2761f0546c413aabe8f356.tar.bz2
linux-stable-f223c30f1ee9d327df2761f0546c413aabe8f356.zip
[media] sur40: properly report a single frame rate of 60 FPS
The device hardware is always running at 60 FPS, so report this both via PARM_IOCTL and ENUM_FRAMEINTERVALS. [hans.verkuil@cisco.com: fix suspect indent checkpatch warning] [mchehab@s-opensource.com: fix a trivial merge conflict] Signed-off-by: Martin Kaltenbrunner <modin@yuri.at> Signed-off-by: Florian Echtler <floe@butterbrot.org> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers/input/touchscreen/sur40.c')
-rw-r--r--drivers/input/touchscreen/sur40.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/input/touchscreen/sur40.c b/drivers/input/touchscreen/sur40.c
index 3967d8c651cc..aefb6e11f88a 100644
--- a/drivers/input/touchscreen/sur40.c
+++ b/drivers/input/touchscreen/sur40.c
@@ -839,6 +839,19 @@ static int sur40_vidioc_g_fmt(struct file *file, void *priv,
return 0;
}
+static int sur40_ioctl_parm(struct file *file, void *priv,
+ struct v4l2_streamparm *p)
+{
+ if (p->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
+ return -EINVAL;
+
+ p->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
+ p->parm.capture.timeperframe.numerator = 1;
+ p->parm.capture.timeperframe.denominator = 60;
+ p->parm.capture.readbuffers = 3;
+ return 0;
+}
+
static int sur40_vidioc_enum_fmt(struct file *file, void *priv,
struct v4l2_fmtdesc *f)
{
@@ -870,14 +883,14 @@ static int sur40_vidioc_enum_frameintervals(struct file *file, void *priv,
{
struct sur40_state *sur40 = video_drvdata(file);
- if ((f->index > 1) || ((f->pixel_format != V4L2_TCH_FMT_TU08)
+ if ((f->index > 0) || ((f->pixel_format != V4L2_TCH_FMT_TU08)
&& (f->pixel_format != V4L2_PIX_FMT_GREY))
|| (f->width != sur40->pix_fmt.width)
|| (f->height != sur40->pix_fmt.height))
return -EINVAL;
f->type = V4L2_FRMIVAL_TYPE_DISCRETE;
- f->discrete.denominator = 60/(f->index+1);
+ f->discrete.denominator = 60;
f->discrete.numerator = 1;
return 0;
}
@@ -937,6 +950,9 @@ static const struct v4l2_ioctl_ops sur40_video_ioctl_ops = {
.vidioc_enum_framesizes = sur40_vidioc_enum_framesizes,
.vidioc_enum_frameintervals = sur40_vidioc_enum_frameintervals,
+ .vidioc_g_parm = sur40_ioctl_parm,
+ .vidioc_s_parm = sur40_ioctl_parm,
+
.vidioc_enum_input = sur40_vidioc_enum_input,
.vidioc_g_input = sur40_vidioc_g_input,
.vidioc_s_input = sur40_vidioc_s_input,