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