xref: /openbmc/linux/Documentation/userspace-api/media/v4l/vidioc-enumoutput.rst (revision 8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17)
1059b1c5bSMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2407e84cdSMauro Carvalho Chehab.. c:namespace:: V4L
354f38fcaSMauro Carvalho Chehab
454f38fcaSMauro Carvalho Chehab.. _VIDIOC_ENUMOUTPUT:
554f38fcaSMauro Carvalho Chehab
654f38fcaSMauro Carvalho Chehab***********************
754f38fcaSMauro Carvalho Chehabioctl VIDIOC_ENUMOUTPUT
854f38fcaSMauro Carvalho Chehab***********************
954f38fcaSMauro Carvalho Chehab
1054f38fcaSMauro Carvalho ChehabName
1154f38fcaSMauro Carvalho Chehab====
1254f38fcaSMauro Carvalho Chehab
1354f38fcaSMauro Carvalho ChehabVIDIOC_ENUMOUTPUT - Enumerate video outputs
1454f38fcaSMauro Carvalho Chehab
1554f38fcaSMauro Carvalho ChehabSynopsis
1654f38fcaSMauro Carvalho Chehab========
1754f38fcaSMauro Carvalho Chehab
18407e84cdSMauro Carvalho Chehab.. c:macro:: VIDIOC_ENUMOUTPUT
1954f38fcaSMauro Carvalho Chehab
20407e84cdSMauro Carvalho Chehab``int ioctl(int fd, VIDIOC_ENUMOUTPUT, struct v4l2_output *argp)``
2154f38fcaSMauro Carvalho Chehab
2254f38fcaSMauro Carvalho ChehabArguments
2354f38fcaSMauro Carvalho Chehab=========
2454f38fcaSMauro Carvalho Chehab
2554f38fcaSMauro Carvalho Chehab``fd``
26407e84cdSMauro Carvalho Chehab    File descriptor returned by :c:func:`open()`.
2754f38fcaSMauro Carvalho Chehab
2854f38fcaSMauro Carvalho Chehab``argp``
2954f38fcaSMauro Carvalho Chehab    Pointer to struct :c:type:`v4l2_output`.
3054f38fcaSMauro Carvalho Chehab
3154f38fcaSMauro Carvalho ChehabDescription
3254f38fcaSMauro Carvalho Chehab===========
3354f38fcaSMauro Carvalho Chehab
3454f38fcaSMauro Carvalho ChehabTo query the attributes of a video outputs applications initialize the
3554f38fcaSMauro Carvalho Chehab``index`` field of struct :c:type:`v4l2_output` and call
3654f38fcaSMauro Carvalho Chehabthe :ref:`VIDIOC_ENUMOUTPUT` with a pointer to this structure.
3754f38fcaSMauro Carvalho ChehabDrivers fill the rest of the structure or return an ``EINVAL`` error code
3854f38fcaSMauro Carvalho Chehabwhen the index is out of bounds. To enumerate all outputs applications
3954f38fcaSMauro Carvalho Chehabshall begin at index zero, incrementing by one until the driver returns
4054f38fcaSMauro Carvalho Chehab``EINVAL``.
4154f38fcaSMauro Carvalho Chehab
42*fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm}|
4354f38fcaSMauro Carvalho Chehab
4454f38fcaSMauro Carvalho Chehab.. c:type:: v4l2_output
4554f38fcaSMauro Carvalho Chehab
4654f38fcaSMauro Carvalho Chehab.. flat-table:: struct v4l2_output
4754f38fcaSMauro Carvalho Chehab    :header-rows:  0
4854f38fcaSMauro Carvalho Chehab    :stub-columns: 0
4954f38fcaSMauro Carvalho Chehab    :widths:       1 1 2
5054f38fcaSMauro Carvalho Chehab
5154f38fcaSMauro Carvalho Chehab    * - __u32
5254f38fcaSMauro Carvalho Chehab      - ``index``
5354f38fcaSMauro Carvalho Chehab      - Identifies the output, set by the application.
5454f38fcaSMauro Carvalho Chehab    * - __u8
5554f38fcaSMauro Carvalho Chehab      - ``name``\ [32]
5654f38fcaSMauro Carvalho Chehab      - Name of the video output, a NUL-terminated ASCII string, for
5754f38fcaSMauro Carvalho Chehab	example: "Vout". This information is intended for the user,
5854f38fcaSMauro Carvalho Chehab	preferably the connector label on the device itself.
5954f38fcaSMauro Carvalho Chehab    * - __u32
6054f38fcaSMauro Carvalho Chehab      - ``type``
6154f38fcaSMauro Carvalho Chehab      - Type of the output, see :ref:`output-type`.
6254f38fcaSMauro Carvalho Chehab    * - __u32
6354f38fcaSMauro Carvalho Chehab      - ``audioset``
6454f38fcaSMauro Carvalho Chehab      - Drivers can enumerate up to 32 video and audio outputs. This field
6554f38fcaSMauro Carvalho Chehab	shows which audio outputs were selectable as the current output if
6654f38fcaSMauro Carvalho Chehab	this was the currently selected video output. It is a bit mask.
6754f38fcaSMauro Carvalho Chehab	The LSB corresponds to audio output 0, the MSB to output 31. Any
6854f38fcaSMauro Carvalho Chehab	number of bits can be set, or none.
6954f38fcaSMauro Carvalho Chehab
7054f38fcaSMauro Carvalho Chehab	When the driver does not enumerate audio outputs no bits must be
7154f38fcaSMauro Carvalho Chehab	set. Applications shall not interpret this as lack of audio
7254f38fcaSMauro Carvalho Chehab	support. Drivers may automatically select audio outputs without
7354f38fcaSMauro Carvalho Chehab	enumerating them.
7454f38fcaSMauro Carvalho Chehab
7554f38fcaSMauro Carvalho Chehab	For details on audio outputs and how to select the current output
7654f38fcaSMauro Carvalho Chehab	see :ref:`audio`.
7754f38fcaSMauro Carvalho Chehab    * - __u32
7854f38fcaSMauro Carvalho Chehab      - ``modulator``
7954f38fcaSMauro Carvalho Chehab      - Output devices can have zero or more RF modulators. When the
8054f38fcaSMauro Carvalho Chehab	``type`` is ``V4L2_OUTPUT_TYPE_MODULATOR`` this is an RF connector
8154f38fcaSMauro Carvalho Chehab	and this field identifies the modulator. It corresponds to struct
8254f38fcaSMauro Carvalho Chehab	:c:type:`v4l2_modulator` field ``index``. For
8354f38fcaSMauro Carvalho Chehab	details on modulators see :ref:`tuner`.
8454f38fcaSMauro Carvalho Chehab    * - :ref:`v4l2_std_id <v4l2-std-id>`
8554f38fcaSMauro Carvalho Chehab      - ``std``
8654f38fcaSMauro Carvalho Chehab      - Every video output supports one or more different video standards.
8754f38fcaSMauro Carvalho Chehab	This field is a set of all supported standards. For details on
8854f38fcaSMauro Carvalho Chehab	video standards and how to switch see :ref:`standard`.
8954f38fcaSMauro Carvalho Chehab    * - __u32
9054f38fcaSMauro Carvalho Chehab      - ``capabilities``
9154f38fcaSMauro Carvalho Chehab      - This field provides capabilities for the output. See
9254f38fcaSMauro Carvalho Chehab	:ref:`output-capabilities` for flags.
9354f38fcaSMauro Carvalho Chehab    * - __u32
9454f38fcaSMauro Carvalho Chehab      - ``reserved``\ [3]
9554f38fcaSMauro Carvalho Chehab      - Reserved for future extensions. Drivers must set the array to
9654f38fcaSMauro Carvalho Chehab	zero.
9754f38fcaSMauro Carvalho Chehab
9854f38fcaSMauro Carvalho Chehab
99*fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{7.5cm}|p{0.6cm}|p{9.2cm}|
10054f38fcaSMauro Carvalho Chehab
10154f38fcaSMauro Carvalho Chehab.. _output-type:
10254f38fcaSMauro Carvalho Chehab
10354f38fcaSMauro Carvalho Chehab.. flat-table:: Output Type
10454f38fcaSMauro Carvalho Chehab    :header-rows:  0
10554f38fcaSMauro Carvalho Chehab    :stub-columns: 0
10654f38fcaSMauro Carvalho Chehab    :widths:       3 1 4
10754f38fcaSMauro Carvalho Chehab
10854f38fcaSMauro Carvalho Chehab    * - ``V4L2_OUTPUT_TYPE_MODULATOR``
10954f38fcaSMauro Carvalho Chehab      - 1
11054f38fcaSMauro Carvalho Chehab      - This output is an analog TV modulator.
11154f38fcaSMauro Carvalho Chehab    * - ``V4L2_OUTPUT_TYPE_ANALOG``
11254f38fcaSMauro Carvalho Chehab      - 2
11354f38fcaSMauro Carvalho Chehab      - Any non-modulator video output, for example Composite Video,
11454f38fcaSMauro Carvalho Chehab	S-Video, HDMI. The naming as ``_TYPE_ANALOG`` is historical,
11554f38fcaSMauro Carvalho Chehab	today we would have called it ``_TYPE_VIDEO``.
11654f38fcaSMauro Carvalho Chehab    * - ``V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY``
11754f38fcaSMauro Carvalho Chehab      - 3
11854f38fcaSMauro Carvalho Chehab      - The video output will be copied to a :ref:`video overlay <overlay>`.
11954f38fcaSMauro Carvalho Chehab
12054f38fcaSMauro Carvalho Chehab
121*fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{6.4cm}|p{2.4cm}|p{8.5cm}|
12254f38fcaSMauro Carvalho Chehab
12354f38fcaSMauro Carvalho Chehab.. _output-capabilities:
12454f38fcaSMauro Carvalho Chehab
12554f38fcaSMauro Carvalho Chehab.. flat-table:: Output capabilities
12654f38fcaSMauro Carvalho Chehab    :header-rows:  0
12754f38fcaSMauro Carvalho Chehab    :stub-columns: 0
12854f38fcaSMauro Carvalho Chehab    :widths:       3 1 4
12954f38fcaSMauro Carvalho Chehab
13054f38fcaSMauro Carvalho Chehab    * - ``V4L2_OUT_CAP_DV_TIMINGS``
13154f38fcaSMauro Carvalho Chehab      - 0x00000002
13254f38fcaSMauro Carvalho Chehab      - This output supports setting video timings by using
13354f38fcaSMauro Carvalho Chehab	``VIDIOC_S_DV_TIMINGS``.
13454f38fcaSMauro Carvalho Chehab    * - ``V4L2_OUT_CAP_STD``
13554f38fcaSMauro Carvalho Chehab      - 0x00000004
13654f38fcaSMauro Carvalho Chehab      - This output supports setting the TV standard by using
13754f38fcaSMauro Carvalho Chehab	``VIDIOC_S_STD``.
13854f38fcaSMauro Carvalho Chehab    * - ``V4L2_OUT_CAP_NATIVE_SIZE``
13954f38fcaSMauro Carvalho Chehab      - 0x00000008
14054f38fcaSMauro Carvalho Chehab      - This output supports setting the native size using the
14154f38fcaSMauro Carvalho Chehab	``V4L2_SEL_TGT_NATIVE_SIZE`` selection target, see
14254f38fcaSMauro Carvalho Chehab	:ref:`v4l2-selections-common`.
14354f38fcaSMauro Carvalho Chehab
14454f38fcaSMauro Carvalho ChehabReturn Value
14554f38fcaSMauro Carvalho Chehab============
14654f38fcaSMauro Carvalho Chehab
14754f38fcaSMauro Carvalho ChehabOn success 0 is returned, on error -1 and the ``errno`` variable is set
14854f38fcaSMauro Carvalho Chehabappropriately. The generic error codes are described at the
14954f38fcaSMauro Carvalho Chehab:ref:`Generic Error Codes <gen-errors>` chapter.
15054f38fcaSMauro Carvalho Chehab
15154f38fcaSMauro Carvalho ChehabEINVAL
15254f38fcaSMauro Carvalho Chehab    The struct :c:type:`v4l2_output` ``index`` is out of
15354f38fcaSMauro Carvalho Chehab    bounds.
154