aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorFlorian Echtler <floe@butterbrot.org>2015-05-25 08:04:14 -0400
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-05-30 10:44:10 -0400
commitda6e4674b0917d3a76ebb7938e6e2fa9532ce76f (patch)
treee7fb284f4c766d04f03e491dfdfd4b34a72fd96b /drivers/input
parentca27ab31597c9e3c75f0dd46d85087c0627d748c (diff)
[media] add frame size/frame rate query functions
Add missing functions to query the single fixed frame size (960x540) and supported frame rates. Technically, the SUR40 supports any arbitrary frame rate up to 60 FPS, as it is polled and not interrupt-driven. For now, we just report 30 and 60 FPS, which is sufficient to make most V4L2 tools work. 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@osg.samsung.com>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/touchscreen/sur40.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/sur40.c b/drivers/input/touchscreen/sur40.c
index e707b8dce8ed..d860d056cccb 100644
--- a/drivers/input/touchscreen/sur40.c
+++ b/drivers/input/touchscreen/sur40.c
@@ -778,6 +778,33 @@ static int sur40_vidioc_enum_fmt(struct file *file, void *priv,
778 return 0; 778 return 0;
779} 779}
780 780
781static int sur40_vidioc_enum_framesizes(struct file *file, void *priv,
782 struct v4l2_frmsizeenum *f)
783{
784 if ((f->index != 0) || (f->pixel_format != V4L2_PIX_FMT_GREY))
785 return -EINVAL;
786
787 f->type = V4L2_FRMSIZE_TYPE_DISCRETE;
788 f->discrete.width = sur40_video_format.width;
789 f->discrete.height = sur40_video_format.height;
790 return 0;
791}
792
793static int sur40_vidioc_enum_frameintervals(struct file *file, void *priv,
794 struct v4l2_frmivalenum *f)
795{
796 if ((f->index > 1) || (f->pixel_format != V4L2_PIX_FMT_GREY)
797 || (f->width != sur40_video_format.width)
798 || (f->height != sur40_video_format.height))
799 return -EINVAL;
800
801 f->type = V4L2_FRMIVAL_TYPE_DISCRETE;
802 f->discrete.denominator = 60/(f->index+1);
803 f->discrete.numerator = 1;
804 return 0;
805}
806
807
781static const struct usb_device_id sur40_table[] = { 808static const struct usb_device_id sur40_table[] = {
782 { USB_DEVICE(ID_MICROSOFT, ID_SUR40) }, /* Samsung SUR40 */ 809 { USB_DEVICE(ID_MICROSOFT, ID_SUR40) }, /* Samsung SUR40 */
783 { } /* terminating null entry */ 810 { } /* terminating null entry */
@@ -829,6 +856,9 @@ static const struct v4l2_ioctl_ops sur40_video_ioctl_ops = {
829 .vidioc_s_fmt_vid_cap = sur40_vidioc_fmt, 856 .vidioc_s_fmt_vid_cap = sur40_vidioc_fmt,
830 .vidioc_g_fmt_vid_cap = sur40_vidioc_fmt, 857 .vidioc_g_fmt_vid_cap = sur40_vidioc_fmt,
831 858
859 .vidioc_enum_framesizes = sur40_vidioc_enum_framesizes,
860 .vidioc_enum_frameintervals = sur40_vidioc_enum_frameintervals,
861
832 .vidioc_enum_input = sur40_vidioc_enum_input, 862 .vidioc_enum_input = sur40_vidioc_enum_input,
833 .vidioc_g_input = sur40_vidioc_g_input, 863 .vidioc_g_input = sur40_vidioc_g_input,
834 .vidioc_s_input = sur40_vidioc_s_input, 864 .vidioc_s_input = sur40_vidioc_s_input,