1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2.. c:namespace:: V4L 3 4.. _VIDIOC_SUBDEV_ENUM_MBUS_CODE: 5 6********************************** 7ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE 8********************************** 9 10Name 11==== 12 13VIDIOC_SUBDEV_ENUM_MBUS_CODE - Enumerate media bus formats 14 15Synopsis 16======== 17 18.. c:macro:: VIDIOC_SUBDEV_ENUM_MBUS_CODE 19 20``int ioctl(int fd, VIDIOC_SUBDEV_ENUM_MBUS_CODE, struct v4l2_subdev_mbus_code_enum * argp)`` 21 22Arguments 23========= 24 25``fd`` 26 File descriptor returned by :c:func:`open()`. 27 28``argp`` 29 Pointer to struct :c:type:`v4l2_subdev_mbus_code_enum`. 30 31Description 32=========== 33 34This call is used by the application to access the enumeration 35of media bus formats for the selected pad. 36 37The enumerations are defined by the driver, and indexed using the ``index`` field 38of struct :c:type:`v4l2_subdev_mbus_code_enum`. 39Each enumeration starts with the ``index`` of 0, and 40the lowest invalid index marks the end of enumeration. 41 42Therefore, to enumerate media bus formats available at a given sub-device pad, 43initialize the ``pad``, and ``which`` fields to desired values, 44and set ``index`` to 0. 45Then call the :ref:`VIDIOC_SUBDEV_ENUM_MBUS_CODE` ioctl 46with a pointer to this structure. 47 48A successful call will return with the ``code`` field filled in 49with a mbus code value. 50Repeat with increasing ``index`` until ``EINVAL`` is received. 51``EINVAL`` means that either ``pad`` is invalid, 52or that there are no more codes available at this pad. 53 54The driver must not return the same value of ``code`` for different indices 55at the same pad. 56 57Available media bus formats may depend on the current 'try' formats at 58other pads of the sub-device, as well as on the current active links. 59See :ref:`VIDIOC_SUBDEV_G_FMT` for more 60information about the try formats. 61 62.. c:type:: v4l2_subdev_mbus_code_enum 63 64.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm}| 65 66.. flat-table:: struct v4l2_subdev_mbus_code_enum 67 :header-rows: 0 68 :stub-columns: 0 69 :widths: 1 1 2 70 71 * - __u32 72 - ``pad`` 73 - Pad number as reported by the media controller API. Filled in by the 74 application. 75 * - __u32 76 - ``index`` 77 - Index of the mbus code in the enumeration belonging to the given pad. 78 Filled in by the application. 79 * - __u32 80 - ``code`` 81 - The media bus format code, as defined in 82 :ref:`v4l2-mbus-format`. Filled in by the driver. 83 * - __u32 84 - ``which`` 85 - Media bus format codes to be enumerated, from enum 86 :ref:`v4l2_subdev_format_whence <v4l2-subdev-format-whence>`. 87 * - __u32 88 - ``flags`` 89 - See :ref:`v4l2-subdev-mbus-code-flags` 90 * - __u32 91 - ``stream`` 92 - Stream identifier. 93 * - __u32 94 - ``reserved``\ [6] 95 - Reserved for future extensions. Applications and drivers must set 96 the array to zero. 97 98 99 100.. raw:: latex 101 102 \footnotesize 103 104.. tabularcolumns:: |p{8.8cm}|p{2.2cm}|p{6.3cm}| 105 106.. _v4l2-subdev-mbus-code-flags: 107 108.. flat-table:: Subdev Media Bus Code Enumerate Flags 109 :header-rows: 0 110 :stub-columns: 0 111 :widths: 1 1 2 112 113 * - V4L2_SUBDEV_MBUS_CODE_CSC_COLORSPACE 114 - 0x00000001 115 - The driver allows the application to try to change the default colorspace 116 encoding. The application can ask to configure the colorspace of the 117 subdevice when calling the :ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` 118 ioctl with :ref:`V4L2_MBUS_FRAMEFMT_SET_CSC <mbus-framefmt-set-csc>` set. 119 See :ref:`v4l2-mbus-format` on how to do this. 120 * - V4L2_SUBDEV_MBUS_CODE_CSC_XFER_FUNC 121 - 0x00000002 122 - The driver allows the application to try to change the default transform function. 123 The application can ask to configure the transform function of 124 the subdevice when calling the :ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` 125 ioctl with :ref:`V4L2_MBUS_FRAMEFMT_SET_CSC <mbus-framefmt-set-csc>` set. 126 See :ref:`v4l2-mbus-format` on how to do this. 127 * - V4L2_SUBDEV_MBUS_CODE_CSC_YCBCR_ENC 128 - 0x00000004 129 - The driver allows the application to try to change the default Y'CbCr 130 encoding. The application can ask to configure the Y'CbCr encoding of the 131 subdevice when calling the :ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` 132 ioctl with :ref:`V4L2_MBUS_FRAMEFMT_SET_CSC <mbus-framefmt-set-csc>` set. 133 See :ref:`v4l2-mbus-format` on how to do this. 134 * - V4L2_SUBDEV_MBUS_CODE_CSC_HSV_ENC 135 - 0x00000004 136 - The driver allows the application to try to change the default HSV 137 encoding. The application can ask to configure the HSV encoding of the 138 subdevice when calling the :ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` 139 ioctl with :ref:`V4L2_MBUS_FRAMEFMT_SET_CSC <mbus-framefmt-set-csc>` set. 140 See :ref:`v4l2-mbus-format` on how to do this. 141 * - V4L2_SUBDEV_MBUS_CODE_CSC_QUANTIZATION 142 - 0x00000008 143 - The driver allows the application to try to change the default 144 quantization. The application can ask to configure the quantization of 145 the subdevice when calling the :ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` 146 ioctl with :ref:`V4L2_MBUS_FRAMEFMT_SET_CSC <mbus-framefmt-set-csc>` set. 147 See :ref:`v4l2-mbus-format` on how to do this. 148 149.. raw:: latex 150 151 \normalsize 152 153Return Value 154============ 155 156On success 0 is returned, on error -1 and the ``errno`` variable is set 157appropriately. The generic error codes are described at the 158:ref:`Generic Error Codes <gen-errors>` chapter. 159 160EINVAL 161 The struct :c:type:`v4l2_subdev_mbus_code_enum` ``pad`` references a 162 non-existing pad, the ``which`` field has an unsupported value, or the 163 ``index`` field is out of bounds. 164