aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/v4l2-core/v4l2-ioctl.c
diff options
context:
space:
mode:
authorHans Verkuil <hans.verkuil@cisco.com>2014-06-10 03:22:06 -0400
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-07-17 09:38:44 -0400
commite6bee3685e732df82f48698254a36754cf15f0b0 (patch)
tree2a49fc3d18aa358e63b290e24880fe043ed5d62a /drivers/media/v4l2-core/v4l2-ioctl.c
parentd9a2547150245f34a050f744ea46542c44792652 (diff)
[media] v4l2: integrate support for VIDIOC_QUERY_EXT_CTRL
Add the v4l2 core plumbing for the new VIDIOC_QUERY_EXT_CTRL ioctl. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Diffstat (limited to 'drivers/media/v4l2-core/v4l2-ioctl.c')
-rw-r--r--drivers/media/v4l2-core/v4l2-ioctl.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 8d4a25d62e47..c38a6208d2cd 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -525,6 +525,21 @@ static void v4l_print_queryctrl(const void *arg, bool write_only)
525 p->step, p->default_value, p->flags); 525 p->step, p->default_value, p->flags);
526} 526}
527 527
528static void v4l_print_query_ext_ctrl(const void *arg, bool write_only)
529{
530 const struct v4l2_query_ext_ctrl *p = arg;
531
532 pr_cont("id=0x%x, type=%d, name=%.*s, min/max=%lld/%lld, "
533 "step=%lld, default=%lld, flags=0x%08x, elem_size=%u, elems=%u, "
534 "nr_of_dims=%u, dims=%u,%u,%u,%u,%u,%u,%u,%u\n",
535 p->id, p->type, (int)sizeof(p->name), p->name,
536 p->minimum, p->maximum,
537 p->step, p->default_value, p->flags,
538 p->elem_size, p->elems, p->nr_of_dims,
539 p->dims[0], p->dims[1], p->dims[2], p->dims[3],
540 p->dims[4], p->dims[5], p->dims[6], p->dims[7]);
541}
542
528static void v4l_print_querymenu(const void *arg, bool write_only) 543static void v4l_print_querymenu(const void *arg, bool write_only)
529{ 544{
530 const struct v4l2_querymenu *p = arg; 545 const struct v4l2_querymenu *p = arg;
@@ -1561,6 +1576,23 @@ static int v4l_queryctrl(const struct v4l2_ioctl_ops *ops,
1561 return -ENOTTY; 1576 return -ENOTTY;
1562} 1577}
1563 1578
1579static int v4l_query_ext_ctrl(const struct v4l2_ioctl_ops *ops,
1580 struct file *file, void *fh, void *arg)
1581{
1582 struct video_device *vfd = video_devdata(file);
1583 struct v4l2_query_ext_ctrl *p = arg;
1584 struct v4l2_fh *vfh =
1585 test_bit(V4L2_FL_USES_V4L2_FH, &vfd->flags) ? fh : NULL;
1586
1587 if (vfh && vfh->ctrl_handler)
1588 return v4l2_query_ext_ctrl(vfh->ctrl_handler, p);
1589 if (vfd->ctrl_handler)
1590 return v4l2_query_ext_ctrl(vfd->ctrl_handler, p);
1591 if (ops->vidioc_query_ext_ctrl)
1592 return ops->vidioc_query_ext_ctrl(file, fh, p);
1593 return -ENOTTY;
1594}
1595
1564static int v4l_querymenu(const struct v4l2_ioctl_ops *ops, 1596static int v4l_querymenu(const struct v4l2_ioctl_ops *ops,
1565 struct file *file, void *fh, void *arg) 1597 struct file *file, void *fh, void *arg)
1566{ 1598{
@@ -2121,6 +2153,7 @@ static struct v4l2_ioctl_info v4l2_ioctls[] = {
2121 IOCTL_INFO_STD(VIDIOC_DV_TIMINGS_CAP, vidioc_dv_timings_cap, v4l_print_dv_timings_cap, INFO_FL_CLEAR(v4l2_dv_timings_cap, type)), 2153 IOCTL_INFO_STD(VIDIOC_DV_TIMINGS_CAP, vidioc_dv_timings_cap, v4l_print_dv_timings_cap, INFO_FL_CLEAR(v4l2_dv_timings_cap, type)),
2122 IOCTL_INFO_FNC(VIDIOC_ENUM_FREQ_BANDS, v4l_enum_freq_bands, v4l_print_freq_band, 0), 2154 IOCTL_INFO_FNC(VIDIOC_ENUM_FREQ_BANDS, v4l_enum_freq_bands, v4l_print_freq_band, 0),
2123 IOCTL_INFO_FNC(VIDIOC_DBG_G_CHIP_INFO, v4l_dbg_g_chip_info, v4l_print_dbg_chip_info, INFO_FL_CLEAR(v4l2_dbg_chip_info, match)), 2155 IOCTL_INFO_FNC(VIDIOC_DBG_G_CHIP_INFO, v4l_dbg_g_chip_info, v4l_print_dbg_chip_info, INFO_FL_CLEAR(v4l2_dbg_chip_info, match)),
2156 IOCTL_INFO_FNC(VIDIOC_QUERY_EXT_CTRL, v4l_query_ext_ctrl, v4l_print_query_ext_ctrl, INFO_FL_CTRL | INFO_FL_CLEAR(v4l2_query_ext_ctrl, id)),
2124}; 2157};
2125#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls) 2158#define V4L2_IOCTLS ARRAY_SIZE(v4l2_ioctls)
2126 2159