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