^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) .. c:namespace:: V4L
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) .. _VIDIOC_SUBDEV_QUERYCAP:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) ****************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) ioctl VIDIOC_SUBDEV_QUERYCAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) ****************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ====
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) VIDIOC_SUBDEV_QUERYCAP - Query sub-device capabilities
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) Synopsis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) ========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) .. c:macro:: VIDIOC_SUBDEV_QUERYCAP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) ``int ioctl(int fd, VIDIOC_SUBDEV_QUERYCAP, struct v4l2_subdev_capability *argp)``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) Arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) ``fd``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) File descriptor returned by :c:func:`open()`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ``argp``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) Pointer to struct :c:type:`v4l2_subdev_capability`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) All V4L2 sub-devices support the ``VIDIOC_SUBDEV_QUERYCAP`` ioctl. It is used to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) identify kernel devices compatible with this specification and to obtain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) information about driver and hardware capabilities. The ioctl takes a pointer to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) a struct :c:type:`v4l2_subdev_capability` which is filled by the driver. When
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) the driver is not compatible with this specification the ioctl returns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ``ENOTTY`` error code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) .. tabularcolumns:: |p{1.5cm}|p{2.5cm}|p{13cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) .. c:type:: v4l2_subdev_capability
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) .. flat-table:: struct v4l2_subdev_capability
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) :header-rows: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) :widths: 3 4 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) - ``version``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) - Version number of the driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) The version reported is provided by the V4L2 subsystem following the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) kernel numbering scheme. However, it may not always return the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) version as the kernel if, for example, a stable or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) distribution-modified kernel uses the V4L2 stack from a newer kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) The version number is formatted using the ``KERNEL_VERSION()``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) macro:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) * - :cspan:`2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) ``#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) ``__u32 version = KERNEL_VERSION(0, 8, 1);``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) ``printf ("Version: %u.%u.%u\\n",``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) ``(version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF);``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) - ``capabilities``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) - Sub-device capabilities of the opened device, see
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) :ref:`subdevice-capabilities`.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) * - __u32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) - ``reserved``\ [14]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) - Reserved for future extensions. Set to 0 by the V4L2 core.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) .. tabularcolumns:: |p{6cm}|p{2.2cm}|p{8.8cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) .. _subdevice-capabilities:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) .. cssclass:: longtable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) .. flat-table:: Sub-Device Capabilities Flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) :header-rows: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) :widths: 3 1 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) * - V4L2_SUBDEV_CAP_RO_SUBDEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) - 0x00000001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) - The sub-device device node is registered in read-only mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) Access to the sub-device ioctls that modify the device state is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) restricted. Refer to each individual subdevice ioctl documentation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) for a description of which restrictions apply to a read-only sub-device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) Return Value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) On success 0 is returned, on error -1 and the ``errno`` variable is set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) appropriately. The generic error codes are described at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) :ref:`Generic Error Codes <gen-errors>` chapter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) ENOTTY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) The device node is not a V4L2 sub-device.