Merge remote-tracking branch 'v4l-dvb/master'
[deliverable/linux.git] / Documentation / media / uapi / v4l / vidioc-g-ctrl.rst
CommitLineData
5377d91f
MH
1.. -*- coding: utf-8; mode: rst -*-
2
af4a4d0d 3.. _VIDIOC_G_CTRL:
5377d91f
MH
4
5**********************************
6ioctl VIDIOC_G_CTRL, VIDIOC_S_CTRL
7**********************************
8
15e7d615 9Name
586027ce 10====
5377d91f 11
586027ce 12VIDIOC_G_CTRL - VIDIOC_S_CTRL - Get or set the value of a control
5377d91f 13
15e7d615
MCC
14
15Synopsis
5377d91f
MH
16========
17
41d80465
MCC
18.. c:function:: int ioctl( int fd, VIDIOC_G_CTRL, struct v4l2_control *argp )
19 :name: VIDIOC_G_CTRL
20
21.. c:function:: int ioctl( int fd, VIDIOC_S_CTRL, struct v4l2_control *argp )
22 :name: VIDIOC_S_CTRL
5377d91f 23
586027ce 24
15e7d615 25Arguments
5377d91f
MH
26=========
27
28``fd``
29 File descriptor returned by :ref:`open() <func-open>`.
30
5377d91f
MH
31``argp``
32
33
15e7d615 34Description
5377d91f
MH
35===========
36
37To get the current value of a control applications initialize the ``id``
fc78c7c7 38field of a struct :c:type:`v4l2_control` and call the
4e03cb76 39:ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` ioctl with a pointer to this structure. To change the
5377d91f 40value of a control applications initialize the ``id`` and ``value``
fc78c7c7 41fields of a struct :c:type:`v4l2_control` and call the
2212ff25 42:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctl.
5377d91f 43
cdb4af0f 44When the ``id`` is invalid drivers return an ``EINVAL`` error code. When the
5377d91f 45``value`` is out of bounds drivers can choose to take the closest valid
cdb4af0f 46value or return an ``ERANGE`` error code, whatever seems more appropriate.
2212ff25 47However, :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` is a write-only ioctl, it does not return the
5377d91f
MH
48actual new value. If the ``value`` is inappropriate for the control
49(e.g. if it refers to an unsupported menu index of a menu control), then
50EINVAL error code is returned as well.
51
52These ioctls work only with user controls. For other control classes the
4e03cb76 53:ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`,
af4a4d0d
MCC
54:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` or
55:ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` must be used.
5377d91f
MH
56
57
e8be7e97 58.. c:type:: v4l2_control
5377d91f 59
5bd4bb78
MCC
60.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
61
5377d91f
MH
62.. flat-table:: struct v4l2_control
63 :header-rows: 0
64 :stub-columns: 0
65 :widths: 1 1 2
66
67
68 - .. row 1
69
70 - __u32
71
72 - ``id``
73
74 - Identifies the control, set by the application.
75
76 - .. row 2
77
78 - __s32
79
80 - ``value``
81
82 - New value or current value.
83
84
15e7d615 85Return Value
5377d91f
MH
86============
87
88On success 0 is returned, on error -1 and the ``errno`` variable is set
89appropriately. The generic error codes are described at the
90:ref:`Generic Error Codes <gen-errors>` chapter.
91
92EINVAL
e8be7e97 93 The struct :c:type:`v4l2_control` ``id`` is invalid
5377d91f
MH
94 or the ``value`` is inappropriate for the given control (i.e. if a
95 menu item is selected that is not supported by the driver according
af4a4d0d 96 to :ref:`VIDIOC_QUERYMENU <VIDIOC_QUERYCTRL>`).
5377d91f
MH
97
98ERANGE
e8be7e97 99 The struct :c:type:`v4l2_control` ``value`` is out of
5377d91f
MH
100 bounds.
101
102EBUSY
103 The control is temporarily not changeable, possibly because another
104 applications took over control of the device function this control
105 belongs to.
106
107EACCES
108 Attempt to set a read-only control or to get a write-only control.
This page took 0.053944 seconds and 5 git commands to generate.