162306a36Sopenharmony_ci.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci.. _dv-controls:
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci*******************************
662306a36Sopenharmony_ciDigital Video Control Reference
762306a36Sopenharmony_ci*******************************
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciThe Digital Video control class is intended to control receivers and
1062306a36Sopenharmony_citransmitters for `VGA <http://en.wikipedia.org/wiki/Vga>`__,
1162306a36Sopenharmony_ci`DVI <http://en.wikipedia.org/wiki/Digital_Visual_Interface>`__
1262306a36Sopenharmony_ci(Digital Visual Interface), HDMI (:ref:`hdmi`) and DisplayPort
1362306a36Sopenharmony_ci(:ref:`dp`). These controls are generally expected to be private to
1462306a36Sopenharmony_cithe receiver or transmitter subdevice that implements them, so they are
1562306a36Sopenharmony_cionly exposed on the ``/dev/v4l-subdev*`` device node.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci.. note::
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci   Note that these devices can have multiple input or output pads which are
2062306a36Sopenharmony_ci   hooked up to e.g. HDMI connectors. Even though the subdevice will
2162306a36Sopenharmony_ci   receive or transmit video from/to only one of those pads, the other pads
2262306a36Sopenharmony_ci   can still be active when it comes to EDID (Extended Display
2362306a36Sopenharmony_ci   Identification Data, :ref:`vesaedid`) and HDCP (High-bandwidth Digital
2462306a36Sopenharmony_ci   Content Protection System, :ref:`hdcp`) processing, allowing the
2562306a36Sopenharmony_ci   device to do the fairly slow EDID/HDCP handling in advance. This allows
2662306a36Sopenharmony_ci   for quick switching between connectors.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciThese pads appear in several of the controls in this section as
2962306a36Sopenharmony_cibitmasks, one bit for each pad. Bit 0 corresponds to pad 0, bit 1 to pad
3062306a36Sopenharmony_ci1, etc. The maximum value of the control is the set of valid pads.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci.. _dv-control-id:
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciDigital Video Control IDs
3662306a36Sopenharmony_ci=========================
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci``V4L2_CID_DV_CLASS (class)``
3962306a36Sopenharmony_ci    The Digital Video class descriptor.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci``V4L2_CID_DV_TX_HOTPLUG (bitmask)``
4262306a36Sopenharmony_ci    Many connectors have a hotplug pin which is high if EDID information
4362306a36Sopenharmony_ci    is available from the source. This control shows the state of the
4462306a36Sopenharmony_ci    hotplug pin as seen by the transmitter. Each bit corresponds to an
4562306a36Sopenharmony_ci    output pad on the transmitter. If an output pad does not have an
4662306a36Sopenharmony_ci    associated hotplug pin, then the bit for that pad will be 0. This
4762306a36Sopenharmony_ci    read-only control is applicable to DVI-D, HDMI and DisplayPort
4862306a36Sopenharmony_ci    connectors.
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci``V4L2_CID_DV_TX_RXSENSE (bitmask)``
5162306a36Sopenharmony_ci    Rx Sense is the detection of pull-ups on the TMDS clock lines. This
5262306a36Sopenharmony_ci    normally means that the sink has left/entered standby (i.e. the
5362306a36Sopenharmony_ci    transmitter can sense that the receiver is ready to receive video).
5462306a36Sopenharmony_ci    Each bit corresponds to an output pad on the transmitter. If an
5562306a36Sopenharmony_ci    output pad does not have an associated Rx Sense, then the bit for
5662306a36Sopenharmony_ci    that pad will be 0. This read-only control is applicable to DVI-D
5762306a36Sopenharmony_ci    and HDMI devices.
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci``V4L2_CID_DV_TX_EDID_PRESENT (bitmask)``
6062306a36Sopenharmony_ci    When the transmitter sees the hotplug signal from the receiver it
6162306a36Sopenharmony_ci    will attempt to read the EDID. If set, then the transmitter has read
6262306a36Sopenharmony_ci    at least the first block (= 128 bytes). Each bit corresponds to an
6362306a36Sopenharmony_ci    output pad on the transmitter. If an output pad does not support
6462306a36Sopenharmony_ci    EDIDs, then the bit for that pad will be 0. This read-only control
6562306a36Sopenharmony_ci    is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci``V4L2_CID_DV_TX_MODE``
6862306a36Sopenharmony_ci    (enum)
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_cienum v4l2_dv_tx_mode -
7162306a36Sopenharmony_ci    HDMI transmitters can transmit in DVI-D mode (just video) or in HDMI
7262306a36Sopenharmony_ci    mode (video + audio + auxiliary data). This control selects which
7362306a36Sopenharmony_ci    mode to use: V4L2_DV_TX_MODE_DVI_D or V4L2_DV_TX_MODE_HDMI.
7462306a36Sopenharmony_ci    This control is applicable to HDMI connectors.
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci``V4L2_CID_DV_TX_RGB_RANGE``
7762306a36Sopenharmony_ci    (enum)
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_cienum v4l2_dv_rgb_range -
8062306a36Sopenharmony_ci    Select the quantization range for RGB output. V4L2_DV_RANGE_AUTO
8162306a36Sopenharmony_ci    follows the RGB quantization range specified in the standard for the
8262306a36Sopenharmony_ci    video interface (ie. :ref:`cea861` for HDMI).
8362306a36Sopenharmony_ci    V4L2_DV_RANGE_LIMITED and V4L2_DV_RANGE_FULL override the
8462306a36Sopenharmony_ci    standard to be compatible with sinks that have not implemented the
8562306a36Sopenharmony_ci    standard correctly (unfortunately quite common for HDMI and DVI-D).
8662306a36Sopenharmony_ci    Full range allows all possible values to be used whereas limited
8762306a36Sopenharmony_ci    range sets the range to (16 << (N-8)) - (235 << (N-8)) where N is
8862306a36Sopenharmony_ci    the number of bits per component. This control is applicable to VGA,
8962306a36Sopenharmony_ci    DVI-A/D, HDMI and DisplayPort connectors.
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci``V4L2_CID_DV_TX_IT_CONTENT_TYPE``
9262306a36Sopenharmony_ci    (enum)
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_cienum v4l2_dv_it_content_type -
9562306a36Sopenharmony_ci    Configures the IT Content Type of the transmitted video. This
9662306a36Sopenharmony_ci    information is sent over HDMI and DisplayPort connectors as part of
9762306a36Sopenharmony_ci    the AVI InfoFrame. The term 'IT Content' is used for content that
9862306a36Sopenharmony_ci    originates from a computer as opposed to content from a TV broadcast
9962306a36Sopenharmony_ci    or an analog source. The enum v4l2_dv_it_content_type defines
10062306a36Sopenharmony_ci    the possible content types:
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci.. tabularcolumns:: |p{7.3cm}|p{10.2cm}|
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci.. flat-table::
10562306a36Sopenharmony_ci    :header-rows:  0
10662306a36Sopenharmony_ci    :stub-columns: 0
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci    * - ``V4L2_DV_IT_CONTENT_TYPE_GRAPHICS``
10962306a36Sopenharmony_ci      - Graphics content. Pixel data should be passed unfiltered and
11062306a36Sopenharmony_ci	without analog reconstruction.
11162306a36Sopenharmony_ci    * - ``V4L2_DV_IT_CONTENT_TYPE_PHOTO``
11262306a36Sopenharmony_ci      - Photo content. The content is derived from digital still pictures.
11362306a36Sopenharmony_ci	The content should be passed through with minimal scaling and
11462306a36Sopenharmony_ci	picture enhancements.
11562306a36Sopenharmony_ci    * - ``V4L2_DV_IT_CONTENT_TYPE_CINEMA``
11662306a36Sopenharmony_ci      - Cinema content.
11762306a36Sopenharmony_ci    * - ``V4L2_DV_IT_CONTENT_TYPE_GAME``
11862306a36Sopenharmony_ci      - Game content. Audio and video latency should be minimized.
11962306a36Sopenharmony_ci    * - ``V4L2_DV_IT_CONTENT_TYPE_NO_ITC``
12062306a36Sopenharmony_ci      - No IT Content information is available and the ITC bit in the AVI
12162306a36Sopenharmony_ci	InfoFrame is set to 0.
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci``V4L2_CID_DV_RX_POWER_PRESENT (bitmask)``
12662306a36Sopenharmony_ci    Detects whether the receiver receives power from the source (e.g.
12762306a36Sopenharmony_ci    HDMI carries 5V on one of the pins). This is often used to power an
12862306a36Sopenharmony_ci    eeprom which contains EDID information, such that the source can
12962306a36Sopenharmony_ci    read the EDID even if the sink is in standby/power off. Each bit
13062306a36Sopenharmony_ci    corresponds to an input pad on the receiver. If an input pad
13162306a36Sopenharmony_ci    cannot detect whether power is present, then the bit for that pad
13262306a36Sopenharmony_ci    will be 0. This read-only control is applicable to DVI-D, HDMI and
13362306a36Sopenharmony_ci    DisplayPort connectors.
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci``V4L2_CID_DV_RX_RGB_RANGE``
13662306a36Sopenharmony_ci    (enum)
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_cienum v4l2_dv_rgb_range -
13962306a36Sopenharmony_ci    Select the quantization range for RGB input. V4L2_DV_RANGE_AUTO
14062306a36Sopenharmony_ci    follows the RGB quantization range specified in the standard for the
14162306a36Sopenharmony_ci    video interface (ie. :ref:`cea861` for HDMI).
14262306a36Sopenharmony_ci    V4L2_DV_RANGE_LIMITED and V4L2_DV_RANGE_FULL override the
14362306a36Sopenharmony_ci    standard to be compatible with sources that have not implemented the
14462306a36Sopenharmony_ci    standard correctly (unfortunately quite common for HDMI and DVI-D).
14562306a36Sopenharmony_ci    Full range allows all possible values to be used whereas limited
14662306a36Sopenharmony_ci    range sets the range to (16 << (N-8)) - (235 << (N-8)) where N is
14762306a36Sopenharmony_ci    the number of bits per component. This control is applicable to VGA,
14862306a36Sopenharmony_ci    DVI-A/D, HDMI and DisplayPort connectors.
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ci``V4L2_CID_DV_RX_IT_CONTENT_TYPE``
15162306a36Sopenharmony_ci    (enum)
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_cienum v4l2_dv_it_content_type -
15462306a36Sopenharmony_ci    Reads the IT Content Type of the received video. This information is
15562306a36Sopenharmony_ci    sent over HDMI and DisplayPort connectors as part of the AVI
15662306a36Sopenharmony_ci    InfoFrame. The term 'IT Content' is used for content that originates
15762306a36Sopenharmony_ci    from a computer as opposed to content from a TV broadcast or an
15862306a36Sopenharmony_ci    analog source. See ``V4L2_CID_DV_TX_IT_CONTENT_TYPE`` for the
15962306a36Sopenharmony_ci    available content types.
160