Merge tag 'rtc-4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
[sfrench/cifs-2.6.git] / Documentation / media / uapi / v4l / querycap.rst
1 .. Permission is granted to copy, distribute and/or modify this
2 .. document under the terms of the GNU Free Documentation License,
3 .. Version 1.1 or any later version published by the Free Software
4 .. Foundation, with no Invariant Sections, no Front-Cover Texts
5 .. and no Back-Cover Texts. A copy of the license is included at
6 .. Documentation/media/uapi/fdl-appendix.rst.
7 ..
8 .. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
9
10 .. _querycap:
11
12 *********************
13 Querying Capabilities
14 *********************
15
16 Because V4L2 covers a wide variety of devices not all aspects of the API
17 are equally applicable to all types of devices. Furthermore devices of
18 the same type have different capabilities and this specification permits
19 the omission of a few complicated and less important parts of the API.
20
21 The :ref:`VIDIOC_QUERYCAP` ioctl is available to
22 check if the kernel device is compatible with this specification, and to
23 query the :ref:`functions <devices>` and :ref:`I/O methods <io>`
24 supported by the device.
25
26 Starting with kernel version 3.1, :ref:`VIDIOC_QUERYCAP`
27 will return the V4L2 API version used by the driver, with generally
28 matches the Kernel version. There's no need of using
29 :ref:`VIDIOC_QUERYCAP` to check if a specific ioctl
30 is supported, the V4L2 core now returns ``ENOTTY`` if a driver doesn't
31 provide support for an ioctl.
32
33 Other features can be queried by calling the respective ioctl, for
34 example :ref:`VIDIOC_ENUMINPUT` to learn about the
35 number, types and names of video connectors on the device. Although
36 abstraction is a major objective of this API, the
37 :ref:`VIDIOC_QUERYCAP` ioctl also allows driver
38 specific applications to reliably identify the driver.
39
40 All V4L2 drivers must support :ref:`VIDIOC_QUERYCAP`.
41 Applications should always call this ioctl after opening the device.