doc-rst: linux_tv: split DVB function call documentation
[deliverable/linux.git] / Documentation / linux_tv / media / v4l / vidioc-g-edid.rst
CommitLineData
5377d91f
MH
1.. -*- coding: utf-8; mode: rst -*-
2
af4a4d0d 3.. _VIDIOC_G_EDID:
5377d91f
MH
4
5******************************************************************************
6ioctl VIDIOC_G_EDID, VIDIOC_S_EDID, VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_S_EDID
7******************************************************************************
8
9*man VIDIOC_G_EDID(2)*
10
11VIDIOC_S_EDID
12VIDIOC_SUBDEV_G_EDID
13VIDIOC_SUBDEV_S_EDID
14Get or set the EDID of a video receiver/transmitter
15
16
17Synopsis
18========
19
b7e67f6c 20.. cpp:function:: int ioctl( int fd, int request, struct v4l2_edid *argp )
5377d91f 21
5377d91f
MH
22Arguments
23=========
24
25``fd``
26 File descriptor returned by :ref:`open() <func-open>`.
27
28``request``
29 VIDIOC_G_EDID, VIDIOC_S_EDID, VIDIOC_SUBDEV_G_EDID,
30 VIDIOC_SUBDEV_S_EDID
31
32``argp``
33
34
35Description
36===========
37
38These ioctls can be used to get or set an EDID associated with an input
39from a receiver or an output of a transmitter device. They can be used
40with subdevice nodes (/dev/v4l-subdevX) or with video nodes
41(/dev/videoX).
42
43When used with video nodes the ``pad`` field represents the input (for
44video capture devices) or output (for video output devices) index as is
7347081e
MCC
45returned by :ref:`VIDIOC_ENUMINPUT` and
46:ref:`VIDIOC_ENUMOUTPUT` respectively. When used
5377d91f
MH
47with subdevice nodes the ``pad`` field represents the input or output
48pad of the subdevice. If there is no EDID support for the given ``pad``
cdb4af0f 49value, then the ``EINVAL`` error code will be returned.
5377d91f
MH
50
51To get the EDID data the application has to fill in the ``pad``,
52``start_block``, ``blocks`` and ``edid`` fields, zero the ``reserved``
4e03cb76 53array and call :ref:`VIDIOC_G_EDID <VIDIOC_G_EDID>`. The current EDID from block
5377d91f
MH
54``start_block`` and of size ``blocks`` will be placed in the memory
55``edid`` points to. The ``edid`` pointer must point to memory at least
56``blocks`` * 128 bytes large (the size of one block is 128 bytes).
57
58If there are fewer blocks than specified, then the driver will set
59``blocks`` to the actual number of blocks. If there are no EDID blocks
cdb4af0f 60available at all, then the error code ``ENODATA`` is set.
5377d91f
MH
61
62If blocks have to be retrieved from the sink, then this call will block
63until they have been read.
64
65If ``start_block`` and ``blocks`` are both set to 0 when
4e03cb76 66:ref:`VIDIOC_G_EDID <VIDIOC_G_EDID>` is called, then the driver will set ``blocks`` to the
5377d91f
MH
67total number of available EDID blocks and it will return 0 without
68copying any data. This is an easy way to discover how many EDID blocks
69there are. Note that if there are no EDID blocks available at all, then
70the driver will set ``blocks`` to 0 and it returns 0.
71
72To set the EDID blocks of a receiver the application has to fill in the
73``pad``, ``blocks`` and ``edid`` fields, set ``start_block`` to 0 and
74zero the ``reserved`` array. It is not possible to set part of an EDID,
75it is always all or nothing. Setting the EDID data is only valid for
76receivers as it makes no sense for a transmitter.
77
78The driver assumes that the full EDID is passed in. If there are more
79EDID blocks than the hardware can handle then the EDID is not written,
cdb4af0f 80but instead the error code ``E2BIG`` is set and ``blocks`` is set to the
5377d91f 81maximum that the hardware supports. If ``start_block`` is any value
cdb4af0f 82other than 0 then the error code ``EINVAL`` is set.
5377d91f
MH
83
84To disable an EDID you set ``blocks`` to 0. Depending on the hardware
85this will drive the hotplug pin low and/or block the source from reading
86the EDID data in some way. In any case, the end result is the same: the
87EDID is no longer available.
88
89
90.. _v4l2-edid:
91
92.. flat-table:: struct v4l2_edid
93 :header-rows: 0
94 :stub-columns: 0
95 :widths: 1 1 2
96
97
98 - .. row 1
99
100 - __u32
101
102 - ``pad``
103
104 - Pad for which to get/set the EDID blocks. When used with a video
0579e6e3
MCC
105 device node the pad represents the input or output index as
106 returned by :ref:`VIDIOC_ENUMINPUT` and
107 :ref:`VIDIOC_ENUMOUTPUT` respectively.
5377d91f
MH
108
109 - .. row 2
110
111 - __u32
112
113 - ``start_block``
114
115 - Read the EDID from starting with this block. Must be 0 when
0579e6e3 116 setting the EDID.
5377d91f
MH
117
118 - .. row 3
119
120 - __u32
121
122 - ``blocks``
123
124 - The number of blocks to get or set. Must be less or equal to 256
0579e6e3
MCC
125 (the maximum number of blocks as defined by the standard). When
126 you set the EDID and ``blocks`` is 0, then the EDID is disabled or
127 erased.
5377d91f
MH
128
129 - .. row 4
130
131 - __u32
132
133 - ``reserved``\ [5]
134
135 - Reserved for future extensions. Applications and drivers must set
0579e6e3 136 the array to zero.
5377d91f
MH
137
138 - .. row 5
139
140 - __u8 *
141
142 - ``edid``
143
144 - Pointer to memory that contains the EDID. The minimum size is
0579e6e3 145 ``blocks`` * 128.
5377d91f
MH
146
147
148
149Return Value
150============
151
152On success 0 is returned, on error -1 and the ``errno`` variable is set
153appropriately. The generic error codes are described at the
154:ref:`Generic Error Codes <gen-errors>` chapter.
155
cdb4af0f 156``ENODATA``
5377d91f
MH
157 The EDID data is not available.
158
cdb4af0f 159``E2BIG``
5377d91f 160 The EDID data you provided is more than the hardware can handle.
This page took 0.038972 seconds and 5 git commands to generate.