Merge tag 'sound-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[linux-2.6-microblaze.git] / Documentation / userspace-api / media / v4l / vidioc-dv-timings-cap.rst
1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2 .. c:namespace:: V4L
3
4 .. _VIDIOC_DV_TIMINGS_CAP:
5
6 *********************************************************
7 ioctl VIDIOC_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP
8 *********************************************************
9
10 Name
11 ====
12
13 VIDIOC_DV_TIMINGS_CAP - VIDIOC_SUBDEV_DV_TIMINGS_CAP - The capabilities of the Digital Video receiver/transmitter
14
15 Synopsis
16 ========
17
18 .. c:macro:: VIDIOC_DV_TIMINGS_CAP
19
20 ``int ioctl(int fd, VIDIOC_DV_TIMINGS_CAP, struct v4l2_dv_timings_cap *argp)``
21
22 .. c:macro:: VIDIOC_SUBDEV_DV_TIMINGS_CAP
23
24 ``int ioctl(int fd, VIDIOC_SUBDEV_DV_TIMINGS_CAP, struct v4l2_dv_timings_cap *argp)``
25
26 Arguments
27 =========
28
29 ``fd``
30     File descriptor returned by :c:func:`open()`.
31
32 ``argp``
33     Pointer to struct :c:type:`v4l2_dv_timings_cap`.
34
35 Description
36 ===========
37
38 To query the capabilities of the DV receiver/transmitter applications
39 initialize the ``pad`` field to 0, zero the reserved array of struct
40 :c:type:`v4l2_dv_timings_cap` and call the
41 ``VIDIOC_DV_TIMINGS_CAP`` ioctl on a video node and the driver will fill
42 in the structure.
43
44 .. note::
45
46    Drivers may return different values after
47    switching the video input or output.
48
49 When implemented by the driver DV capabilities of subdevices can be
50 queried by calling the ``VIDIOC_SUBDEV_DV_TIMINGS_CAP`` ioctl directly
51 on a subdevice node. The capabilities are specific to inputs (for DV
52 receivers) or outputs (for DV transmitters), applications must specify
53 the desired pad number in the struct
54 :c:type:`v4l2_dv_timings_cap` ``pad`` field and
55 zero the ``reserved`` array. Attempts to query capabilities on a pad
56 that doesn't support them will return an ``EINVAL`` error code.
57
58 .. tabularcolumns:: |p{1.2cm}|p{3.2cm}|p{12.9cm}|
59
60 .. c:type:: v4l2_bt_timings_cap
61
62 .. flat-table:: struct v4l2_bt_timings_cap
63     :header-rows:  0
64     :stub-columns: 0
65     :widths:       1 1 2
66
67     * - __u32
68       - ``min_width``
69       - Minimum width of the active video in pixels.
70     * - __u32
71       - ``max_width``
72       - Maximum width of the active video in pixels.
73     * - __u32
74       - ``min_height``
75       - Minimum height of the active video in lines.
76     * - __u32
77       - ``max_height``
78       - Maximum height of the active video in lines.
79     * - __u64
80       - ``min_pixelclock``
81       - Minimum pixelclock frequency in Hz.
82     * - __u64
83       - ``max_pixelclock``
84       - Maximum pixelclock frequency in Hz.
85     * - __u32
86       - ``standards``
87       - The video standard(s) supported by the hardware. See
88         :ref:`dv-bt-standards` for a list of standards.
89     * - __u32
90       - ``capabilities``
91       - Several flags giving more information about the capabilities. See
92         :ref:`dv-bt-cap-capabilities` for a description of the flags.
93     * - __u32
94       - ``reserved``\ [16]
95       - Reserved for future extensions.
96         Drivers must set the array to zero.
97
98
99 .. tabularcolumns:: |p{4.4cm}|p{3.6cm}|p{9.3cm}|
100
101 .. c:type:: v4l2_dv_timings_cap
102
103 .. flat-table:: struct v4l2_dv_timings_cap
104     :header-rows:  0
105     :stub-columns: 0
106     :widths:       1 1 2
107
108     * - __u32
109       - ``type``
110       - Type of DV timings as listed in :ref:`dv-timing-types`.
111     * - __u32
112       - ``pad``
113       - Pad number as reported by the media controller API. This field is
114         only used when operating on a subdevice node. When operating on a
115         video node applications must set this field to zero.
116     * - __u32
117       - ``reserved``\ [2]
118       - Reserved for future extensions.
119
120         Drivers and applications must set the array to zero.
121     * - union {
122       - (anonymous)
123     * - struct :c:type:`v4l2_bt_timings_cap`
124       - ``bt``
125       - BT.656/1120 timings capabilities of the hardware.
126     * - __u32
127       - ``raw_data``\ [32]
128     * - }
129       -
130
131 .. tabularcolumns:: |p{7.2cm}|p{10.3cm}|
132
133 .. _dv-bt-cap-capabilities:
134
135 .. flat-table:: DV BT Timing capabilities
136     :header-rows:  0
137     :stub-columns: 0
138
139     * - Flag
140       - Description
141     * -
142       -
143     * - ``V4L2_DV_BT_CAP_INTERLACED``
144       - Interlaced formats are supported.
145     * - ``V4L2_DV_BT_CAP_PROGRESSIVE``
146       - Progressive formats are supported.
147     * - ``V4L2_DV_BT_CAP_REDUCED_BLANKING``
148       - CVT/GTF specific: the timings can make use of reduced blanking
149         (CVT) or the 'Secondary GTF' curve (GTF).
150     * - ``V4L2_DV_BT_CAP_CUSTOM``
151       - Can support non-standard timings, i.e. timings not belonging to
152         the standards set in the ``standards`` field.
153
154 Return Value
155 ============
156
157 On success 0 is returned, on error -1 and the ``errno`` variable is set
158 appropriately. The generic error codes are described at the
159 :ref:`Generic Error Codes <gen-errors>` chapter.