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