diff options
Diffstat (limited to 'Documentation')
| -rw-r--r-- | Documentation/DocBook/.gitignore | 1 | ||||
| -rw-r--r-- | Documentation/DocBook/dvb/dvbapi.xml | 8 | ||||
| -rw-r--r-- | Documentation/DocBook/dvb/dvbproperty.xml | 405 | ||||
| -rw-r--r-- | Documentation/DocBook/dvb/frontend.h.xml | 20 | ||||
| -rw-r--r-- | Documentation/DocBook/media-entities.tmpl | 2 | ||||
| -rw-r--r-- | Documentation/DocBook/v4l/pixfmt-m420.xml | 147 | ||||
| -rw-r--r-- | Documentation/DocBook/v4l/pixfmt-y10b.xml | 43 | ||||
| -rw-r--r-- | Documentation/DocBook/v4l/pixfmt.xml | 2 | ||||
| -rw-r--r-- | Documentation/DocBook/v4l/subdev-formats.xml | 46 | ||||
| -rw-r--r-- | Documentation/DocBook/v4l/videodev2.h.xml | 4 | ||||
| -rw-r--r-- | Documentation/feature-removal-schedule.txt | 23 | ||||
| -rw-r--r-- | Documentation/ioctl/ioctl-number.txt | 2 | ||||
| -rw-r--r-- | Documentation/video4linux/CARDLIST.em28xx | 2 | ||||
| -rw-r--r-- | Documentation/video4linux/Zoran | 1 | ||||
| -rw-r--r-- | Documentation/video4linux/gspca.txt | 1 | ||||
| -rw-r--r-- | Documentation/video4linux/uvcvideo.txt | 239 |
16 files changed, 871 insertions, 75 deletions
diff --git a/Documentation/DocBook/.gitignore b/Documentation/DocBook/.gitignore index c6def352fe39..679034cbd686 100644 --- a/Documentation/DocBook/.gitignore +++ b/Documentation/DocBook/.gitignore | |||
| @@ -8,3 +8,4 @@ | |||
| 8 | *.dvi | 8 | *.dvi |
| 9 | *.log | 9 | *.log |
| 10 | *.out | 10 | *.out |
| 11 | media/ | ||
diff --git a/Documentation/DocBook/dvb/dvbapi.xml b/Documentation/DocBook/dvb/dvbapi.xml index ad8678d48916..9fad86ce7f5e 100644 --- a/Documentation/DocBook/dvb/dvbapi.xml +++ b/Documentation/DocBook/dvb/dvbapi.xml | |||
| @@ -35,6 +35,14 @@ | |||
| 35 | <revhistory> | 35 | <revhistory> |
| 36 | <!-- Put document revisions here, newest first. --> | 36 | <!-- Put document revisions here, newest first. --> |
| 37 | <revision> | 37 | <revision> |
| 38 | <revnumber>2.0.4</revnumber> | ||
| 39 | <date>2011-05-06</date> | ||
| 40 | <authorinitials>mcc</authorinitials> | ||
| 41 | <revremark> | ||
| 42 | Add more information about DVB APIv5, better describing the frontend GET/SET props ioctl's. | ||
| 43 | </revremark> | ||
| 44 | </revision> | ||
| 45 | <revision> | ||
| 38 | <revnumber>2.0.3</revnumber> | 46 | <revnumber>2.0.3</revnumber> |
| 39 | <date>2010-07-03</date> | 47 | <date>2010-07-03</date> |
| 40 | <authorinitials>mcc</authorinitials> | 48 | <authorinitials>mcc</authorinitials> |
diff --git a/Documentation/DocBook/dvb/dvbproperty.xml b/Documentation/DocBook/dvb/dvbproperty.xml index 97f397e2fb3a..52d5e3c7cf6c 100644 --- a/Documentation/DocBook/dvb/dvbproperty.xml +++ b/Documentation/DocBook/dvb/dvbproperty.xml | |||
| @@ -1,6 +1,327 @@ | |||
| 1 | <section id="FE_GET_PROPERTY"> | 1 | <section id="FE_GET_SET_PROPERTY"> |
| 2 | <title>FE_GET_PROPERTY/FE_SET_PROPERTY</title> | 2 | <title>FE_GET_PROPERTY/FE_SET_PROPERTY</title> |
| 3 | 3 | ||
| 4 | <programlisting> | ||
| 5 | /* Reserved fields should be set to 0 */ | ||
| 6 | struct dtv_property { | ||
| 7 | __u32 cmd; | ||
| 8 | union { | ||
| 9 | __u32 data; | ||
| 10 | struct { | ||
| 11 | __u8 data[32]; | ||
| 12 | __u32 len; | ||
| 13 | __u32 reserved1[3]; | ||
| 14 | void *reserved2; | ||
| 15 | } buffer; | ||
| 16 | } u; | ||
| 17 | int result; | ||
| 18 | } __attribute__ ((packed)); | ||
| 19 | |||
| 20 | /* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */ | ||
| 21 | #define DTV_IOCTL_MAX_MSGS 64 | ||
| 22 | |||
| 23 | struct dtv_properties { | ||
| 24 | __u32 num; | ||
| 25 | struct dtv_property *props; | ||
| 26 | }; | ||
| 27 | </programlisting> | ||
| 28 | |||
| 29 | <section id="FE_GET_PROPERTY"> | ||
| 30 | <title>FE_GET_PROPERTY</title> | ||
| 31 | <para>DESCRIPTION | ||
| 32 | </para> | ||
| 33 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
| 34 | align="char"> | ||
| 35 | <para>This ioctl call returns one or more frontend properties. This call only | ||
| 36 | requires read-only access to the device.</para> | ||
| 37 | </entry> | ||
| 38 | </row></tbody></tgroup></informaltable> | ||
| 39 | <para>SYNOPSIS | ||
| 40 | </para> | ||
| 41 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
| 42 | align="char"> | ||
| 43 | <para>int ioctl(int fd, int request = <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>, | ||
| 44 | dtv_properties ⋆props);</para> | ||
| 45 | </entry> | ||
| 46 | </row></tbody></tgroup></informaltable> | ||
| 47 | <para>PARAMETERS | ||
| 48 | </para> | ||
| 49 | <informaltable><tgroup cols="2"><tbody><row><entry align="char"> | ||
| 50 | <para>int fd</para> | ||
| 51 | </entry><entry | ||
| 52 | align="char"> | ||
| 53 | <para>File descriptor returned by a previous call to open().</para> | ||
| 54 | </entry> | ||
| 55 | </row><row><entry | ||
| 56 | align="char"> | ||
| 57 | <para>int num</para> | ||
| 58 | </entry><entry | ||
| 59 | align="char"> | ||
| 60 | <para>Equals <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> for this command.</para> | ||
| 61 | </entry> | ||
| 62 | </row><row><entry | ||
| 63 | align="char"> | ||
| 64 | <para>struct dtv_property *props</para> | ||
| 65 | </entry><entry | ||
| 66 | align="char"> | ||
| 67 | <para>Points to the location where the front-end property commands are stored.</para> | ||
| 68 | </entry> | ||
| 69 | </row></tbody></tgroup></informaltable> | ||
| 70 | <para>ERRORS</para> | ||
| 71 | <informaltable><tgroup cols="2"><tbody><row> | ||
| 72 | <entry align="char"><para>EINVAL</para></entry> | ||
| 73 | <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry> | ||
| 74 | </row><row> | ||
| 75 | <entry align="char"><para>ENOMEM</para></entry> | ||
| 76 | <entry align="char"><para>Out of memory.</para></entry> | ||
| 77 | </row><row> | ||
| 78 | <entry align="char"><para>EFAULT</para></entry> | ||
| 79 | <entry align="char"><para>Failure while copying data from/to userspace.</para></entry> | ||
| 80 | </row><row> | ||
| 81 | <entry align="char"><para>EOPNOTSUPP</para></entry> | ||
| 82 | <entry align="char"><para>Property type not supported.</para></entry> | ||
| 83 | </row></tbody></tgroup></informaltable> | ||
| 84 | </section> | ||
| 85 | |||
| 86 | <section id="FE_SET_PROPERTY"> | ||
| 87 | <title>FE_SET_PROPERTY</title> | ||
| 88 | <para>DESCRIPTION | ||
| 89 | </para> | ||
| 90 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
| 91 | align="char"> | ||
| 92 | <para>This ioctl call sets one or more frontend properties. This call only | ||
| 93 | requires read-only access to the device.</para> | ||
| 94 | </entry> | ||
| 95 | </row></tbody></tgroup></informaltable> | ||
| 96 | <para>SYNOPSIS | ||
| 97 | </para> | ||
| 98 | <informaltable><tgroup cols="1"><tbody><row><entry | ||
| 99 | align="char"> | ||
| 100 | <para>int ioctl(int fd, int request = <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>, | ||
| 101 | dtv_properties ⋆props);</para> | ||
| 102 | </entry> | ||
| 103 | </row></tbody></tgroup></informaltable> | ||
| 104 | <para>PARAMETERS | ||
| 105 | </para> | ||
| 106 | <informaltable><tgroup cols="2"><tbody><row><entry align="char"> | ||
| 107 | <para>int fd</para> | ||
| 108 | </entry><entry | ||
| 109 | align="char"> | ||
| 110 | <para>File descriptor returned by a previous call to open().</para> | ||
| 111 | </entry> | ||
| 112 | </row><row><entry | ||
| 113 | align="char"> | ||
| 114 | <para>int num</para> | ||
| 115 | </entry><entry | ||
| 116 | align="char"> | ||
| 117 | <para>Equals <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link> for this command.</para> | ||
| 118 | </entry> | ||
| 119 | </row><row><entry | ||
| 120 | align="char"> | ||
| 121 | <para>struct dtv_property *props</para> | ||
| 122 | </entry><entry | ||
| 123 | align="char"> | ||
| 124 | <para>Points to the location where the front-end property commands are stored.</para> | ||
| 125 | </entry> | ||
| 126 | </row></tbody></tgroup></informaltable> | ||
| 127 | <para>ERRORS | ||
| 128 | </para> | ||
| 129 | <informaltable><tgroup cols="2"><tbody><row> | ||
| 130 | <entry align="char"><para>EINVAL</para></entry> | ||
| 131 | <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry> | ||
| 132 | </row><row> | ||
| 133 | <entry align="char"><para>ENOMEM</para></entry> | ||
| 134 | <entry align="char"><para>Out of memory.</para></entry> | ||
| 135 | </row><row> | ||
| 136 | <entry align="char"><para>EFAULT</para></entry> | ||
| 137 | <entry align="char"><para>Failure while copying data from/to userspace.</para></entry> | ||
| 138 | </row><row> | ||
| 139 | <entry align="char"><para>EOPNOTSUPP</para></entry> | ||
| 140 | <entry align="char"><para>Property type not supported.</para></entry> | ||
| 141 | </row></tbody></tgroup></informaltable> | ||
| 142 | </section> | ||
| 143 | |||
| 144 | <para> | ||
| 145 | On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>, | ||
| 146 | the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to | ||
| 147 | get/set up to 64 properties. The actual meaning of each property is described on the next sections. | ||
| 148 | </para> | ||
| 149 | |||
| 150 | <para>The Available frontend property types are:</para> | ||
| 151 | <programlisting> | ||
| 152 | #define DTV_UNDEFINED 0 | ||
| 153 | #define DTV_TUNE 1 | ||
| 154 | #define DTV_CLEAR 2 | ||
| 155 | #define DTV_FREQUENCY 3 | ||
| 156 | #define DTV_MODULATION 4 | ||
| 157 | #define DTV_BANDWIDTH_HZ 5 | ||
| 158 | #define DTV_INVERSION 6 | ||
| 159 | #define DTV_DISEQC_MASTER 7 | ||
| 160 | #define DTV_SYMBOL_RATE 8 | ||
| 161 | #define DTV_INNER_FEC 9 | ||
| 162 | #define DTV_VOLTAGE 10 | ||
| 163 | #define DTV_TONE 11 | ||
| 164 | #define DTV_PILOT 12 | ||
| 165 | #define DTV_ROLLOFF 13 | ||
| 166 | #define DTV_DISEQC_SLAVE_REPLY 14 | ||
| 167 | #define DTV_FE_CAPABILITY_COUNT 15 | ||
| 168 | #define DTV_FE_CAPABILITY 16 | ||
| 169 | #define DTV_DELIVERY_SYSTEM 17 | ||
| 170 | #define DTV_ISDBT_PARTIAL_RECEPTION 18 | ||
| 171 | #define DTV_ISDBT_SOUND_BROADCASTING 19 | ||
| 172 | #define DTV_ISDBT_SB_SUBCHANNEL_ID 20 | ||
| 173 | #define DTV_ISDBT_SB_SEGMENT_IDX 21 | ||
| 174 | #define DTV_ISDBT_SB_SEGMENT_COUNT 22 | ||
| 175 | #define DTV_ISDBT_LAYERA_FEC 23 | ||
| 176 | #define DTV_ISDBT_LAYERA_MODULATION 24 | ||
| 177 | #define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25 | ||
| 178 | #define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26 | ||
| 179 | #define DTV_ISDBT_LAYERB_FEC 27 | ||
| 180 | #define DTV_ISDBT_LAYERB_MODULATION 28 | ||
| 181 | #define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29 | ||
| 182 | #define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30 | ||
| 183 | #define DTV_ISDBT_LAYERC_FEC 31 | ||
| 184 | #define DTV_ISDBT_LAYERC_MODULATION 32 | ||
| 185 | #define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33 | ||
| 186 | #define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34 | ||
| 187 | #define DTV_API_VERSION 35 | ||
| 188 | #define DTV_CODE_RATE_HP 36 | ||
| 189 | #define DTV_CODE_RATE_LP 37 | ||
| 190 | #define DTV_GUARD_INTERVAL 38 | ||
| 191 | #define DTV_TRANSMISSION_MODE 39 | ||
| 192 | #define DTV_HIERARCHY 40 | ||
| 193 | #define DTV_ISDBT_LAYER_ENABLED 41 | ||
| 194 | #define DTV_ISDBS_TS_ID 42 | ||
| 195 | </programlisting> | ||
| 196 | |||
| 197 | <section id="fe_property_common"> | ||
| 198 | <title>Parameters that are common to all Digital TV standards</title> | ||
| 199 | <section id="DTV_FREQUENCY"> | ||
| 200 | <title><constant>DTV_FREQUENCY</constant></title> | ||
| 201 | |||
| 202 | <para>Central frequency of the channel, in HZ.</para> | ||
| 203 | |||
| 204 | <para>Notes:</para> | ||
| 205 | <para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz. | ||
| 206 | E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of | ||
| 207 | the channel which is 6MHz.</para> | ||
| 208 | |||
| 209 | <para>2)As in ISDB-Tsb the channel consists of only one or three segments the | ||
| 210 | frequency step is 429kHz, 3*429 respectively. As for ISDB-T the | ||
| 211 | central frequency of the channel is expected.</para> | ||
| 212 | </section> | ||
| 213 | |||
| 214 | <section id="DTV_BANDWIDTH_HZ"> | ||
| 215 | <title><constant>DTV_BANDWIDTH_HZ</constant></title> | ||
| 216 | |||
| 217 | <para>Bandwidth for the channel, in HZ.</para> | ||
| 218 | |||
| 219 | <para>Possible values: | ||
| 220 | <constant>1712000</constant>, | ||
| 221 | <constant>5000000</constant>, | ||
| 222 | <constant>6000000</constant>, | ||
| 223 | <constant>7000000</constant>, | ||
| 224 | <constant>8000000</constant>, | ||
| 225 | <constant>10000000</constant>. | ||
| 226 | </para> | ||
| 227 | |||
| 228 | <para>Notes:</para> | ||
| 229 | |||
| 230 | <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para> | ||
| 231 | <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para> | ||
| 232 | <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth | ||
| 233 | for DVB-C depends on the symbol rate</para> | ||
| 234 | <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from | ||
| 235 | other parameters (DTV_ISDBT_SB_SEGMENT_IDX, | ||
| 236 | DTV_ISDBT_SB_SEGMENT_COUNT).</para> | ||
| 237 | <para>5) DVB-T supports 6, 7 and 8MHz.</para> | ||
| 238 | <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para> | ||
| 239 | </section> | ||
| 240 | |||
| 241 | <section id="DTV_DELIVERY_SYSTEM"> | ||
| 242 | <title><constant>DTV_DELIVERY_SYSTEM</constant></title> | ||
| 243 | |||
| 244 | <para>Specifies the type of Delivery system</para> | ||
| 245 | |||
| 246 | <para>Possible values: </para> | ||
| 247 | <programlisting> | ||
| 248 | typedef enum fe_delivery_system { | ||
| 249 | SYS_UNDEFINED, | ||
| 250 | SYS_DVBC_ANNEX_AC, | ||
| 251 | SYS_DVBC_ANNEX_B, | ||
| 252 | SYS_DVBT, | ||
| 253 | SYS_DSS, | ||
| 254 | SYS_DVBS, | ||
| 255 | SYS_DVBS2, | ||
| 256 | SYS_DVBH, | ||
| 257 | SYS_ISDBT, | ||
| 258 | SYS_ISDBS, | ||
| 259 | SYS_ISDBC, | ||
| 260 | SYS_ATSC, | ||
| 261 | SYS_ATSCMH, | ||
| 262 | SYS_DMBTH, | ||
| 263 | SYS_CMMB, | ||
| 264 | SYS_DAB, | ||
| 265 | SYS_DVBT2, | ||
| 266 | } fe_delivery_system_t; | ||
| 267 | </programlisting> | ||
| 268 | |||
| 269 | </section> | ||
| 270 | |||
| 271 | <section id="DTV_TRANSMISSION_MODE"> | ||
| 272 | <title><constant>DTV_TRANSMISSION_MODE</constant></title> | ||
| 273 | |||
| 274 | <para>Specifies the number of carriers used by the standard</para> | ||
| 275 | |||
| 276 | <para>Possible values are:</para> | ||
| 277 | <programlisting> | ||
| 278 | typedef enum fe_transmit_mode { | ||
| 279 | TRANSMISSION_MODE_2K, | ||
| 280 | TRANSMISSION_MODE_8K, | ||
| 281 | TRANSMISSION_MODE_AUTO, | ||
| 282 | TRANSMISSION_MODE_4K, | ||
| 283 | TRANSMISSION_MODE_1K, | ||
| 284 | TRANSMISSION_MODE_16K, | ||
| 285 | TRANSMISSION_MODE_32K, | ||
| 286 | } fe_transmit_mode_t; | ||
| 287 | </programlisting> | ||
| 288 | |||
| 289 | <para>Notes:</para> | ||
| 290 | <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called | ||
| 291 | 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para> | ||
| 292 | |||
| 293 | <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the | ||
| 294 | hardware will try to find the correct FFT-size (if capable) and will | ||
| 295 | use TMCC to fill in the missing parameters.</para> | ||
| 296 | <para>3) DVB-T specifies 2K and 8K as valid sizes.</para> | ||
| 297 | <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para> | ||
| 298 | </section> | ||
| 299 | |||
| 300 | <section id="DTV_GUARD_INTERVAL"> | ||
| 301 | <title><constant>DTV_GUARD_INTERVAL</constant></title> | ||
| 302 | |||
| 303 | <para>Possible values are:</para> | ||
| 304 | <programlisting> | ||
| 305 | typedef enum fe_guard_interval { | ||
| 306 | GUARD_INTERVAL_1_32, | ||
| 307 | GUARD_INTERVAL_1_16, | ||
| 308 | GUARD_INTERVAL_1_8, | ||
| 309 | GUARD_INTERVAL_1_4, | ||
| 310 | GUARD_INTERVAL_AUTO, | ||
| 311 | GUARD_INTERVAL_1_128, | ||
| 312 | GUARD_INTERVAL_19_128, | ||
| 313 | GUARD_INTERVAL_19_256, | ||
| 314 | } fe_guard_interval_t; | ||
| 315 | </programlisting> | ||
| 316 | |||
| 317 | <para>Notes:</para> | ||
| 318 | <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will | ||
| 319 | try to find the correct guard interval (if capable) and will use TMCC to fill | ||
| 320 | in the missing parameters.</para> | ||
| 321 | <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para> | ||
| 322 | </section> | ||
| 323 | </section> | ||
| 324 | |||
| 4 | <section id="isdbt"> | 325 | <section id="isdbt"> |
| 5 | <title>ISDB-T frontend</title> | 326 | <title>ISDB-T frontend</title> |
| 6 | <para>This section describes shortly what are the possible parameters in the Linux | 327 | <para>This section describes shortly what are the possible parameters in the Linux |
| @@ -32,73 +353,6 @@ | |||
| 32 | 353 | ||
| 33 | <para>Parameters used by ISDB-T and ISDB-Tsb.</para> | 354 | <para>Parameters used by ISDB-T and ISDB-Tsb.</para> |
| 34 | 355 | ||
| 35 | <section id="isdbt-parms"> | ||
| 36 | <title>Parameters that are common with DVB-T and ATSC</title> | ||
| 37 | |||
| 38 | <section id="isdbt-freq"> | ||
| 39 | <title><constant>DTV_FREQUENCY</constant></title> | ||
| 40 | |||
| 41 | <para>Central frequency of the channel.</para> | ||
| 42 | |||
| 43 | <para>For ISDB-T the channels are usually transmitted with an offset of 143kHz. E.g. a | ||
| 44 | valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of | ||
| 45 | the channel which is 6MHz.</para> | ||
| 46 | |||
| 47 | <para>As in ISDB-Tsb the channel consists of only one or three segments the | ||
| 48 | frequency step is 429kHz, 3*429 respectively. As for ISDB-T the | ||
| 49 | central frequency of the channel is expected.</para> | ||
| 50 | </section> | ||
| 51 | |||
| 52 | <section id="isdbt-bw"> | ||
| 53 | <title><constant>DTV_BANDWIDTH_HZ</constant> (optional)</title> | ||
| 54 | |||
| 55 | <para>Possible values:</para> | ||
| 56 | |||
| 57 | <para>For ISDB-T it should be always 6000000Hz (6MHz)</para> | ||
| 58 | <para>For ISDB-Tsb it can vary depending on the number of connected segments</para> | ||
| 59 | |||
| 60 | <para>Note: Hardware specific values might be given here, but standard | ||
| 61 | applications should not bother to set a value to this field as | ||
| 62 | standard demods are ignoring it anyway.</para> | ||
| 63 | |||
| 64 | <para>Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from | ||
| 65 | other parameters (DTV_ISDBT_SB_SEGMENT_IDX, | ||
| 66 | DTV_ISDBT_SB_SEGMENT_COUNT).</para> | ||
| 67 | </section> | ||
| 68 | |||
| 69 | <section id="isdbt-delivery-sys"> | ||
| 70 | <title><constant>DTV_DELIVERY_SYSTEM</constant></title> | ||
| 71 | |||
| 72 | <para>Possible values: <constant>SYS_ISDBT</constant></para> | ||
| 73 | </section> | ||
| 74 | |||
| 75 | <section id="isdbt-tx-mode"> | ||
| 76 | <title><constant>DTV_TRANSMISSION_MODE</constant></title> | ||
| 77 | |||
| 78 | <para>ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called | ||
| 79 | 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para> | ||
| 80 | |||
| 81 | <para>Possible values: <constant>TRANSMISSION_MODE_2K</constant>, <constant>TRANSMISSION_MODE_8K</constant>, | ||
| 82 | <constant>TRANSMISSION_MODE_AUTO</constant>, <constant>TRANSMISSION_MODE_4K</constant></para> | ||
| 83 | |||
| 84 | <para>If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the | ||
| 85 | hardware will try to find the correct FFT-size (if capable) and will | ||
| 86 | use TMCC to fill in the missing parameters.</para> | ||
| 87 | |||
| 88 | <para><constant>TRANSMISSION_MODE_4K</constant> is added at the same time as the other new parameters.</para> | ||
| 89 | </section> | ||
| 90 | |||
| 91 | <section id="isdbt-guard-interval"> | ||
| 92 | <title><constant>DTV_GUARD_INTERVAL</constant></title> | ||
| 93 | |||
| 94 | <para>Possible values: <constant>GUARD_INTERVAL_1_32</constant>, <constant>GUARD_INTERVAL_1_16</constant>, <constant>GUARD_INTERVAL_1_8</constant>, | ||
| 95 | <constant>GUARD_INTERVAL_1_4</constant>, <constant>GUARD_INTERVAL_AUTO</constant></para> | ||
| 96 | |||
| 97 | <para>If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will | ||
| 98 | try to find the correct guard interval (if capable) and will use TMCC to fill | ||
| 99 | in the missing parameters.</para> | ||
| 100 | </section> | ||
| 101 | </section> | ||
| 102 | <section id="isdbt-new-parms"> | 356 | <section id="isdbt-new-parms"> |
| 103 | <title>ISDB-T only parameters</title> | 357 | <title>ISDB-T only parameters</title> |
| 104 | 358 | ||
| @@ -314,5 +568,20 @@ | |||
| 314 | </section> | 568 | </section> |
| 315 | </section> | 569 | </section> |
| 316 | </section> | 570 | </section> |
| 571 | <section id="dvbt2-params"> | ||
| 572 | <title>DVB-T2 parameters</title> | ||
| 573 | |||
| 574 | <para>This section covers parameters that apply only to the DVB-T2 delivery method. DVB-T2 | ||
| 575 | support is currently in the early stages development so expect this section to grow | ||
| 576 | and become more detailed with time.</para> | ||
| 577 | |||
| 578 | <section id="dvbt2-plp-id"> | ||
| 579 | <title><constant>DTV_DVBT2_PLP_ID</constant></title> | ||
| 580 | |||
| 581 | <para>DVB-T2 supports Physical Layer Pipes (PLP) to allow transmission of | ||
| 582 | many data types via a single multiplex. The API will soon support this | ||
| 583 | at which point this section will be expanded.</para> | ||
| 584 | </section> | ||
| 585 | </section> | ||
| 317 | </section> | 586 | </section> |
| 318 | </section> | 587 | </section> |
diff --git a/Documentation/DocBook/dvb/frontend.h.xml b/Documentation/DocBook/dvb/frontend.h.xml index d08e0d401418..d792f789ad3b 100644 --- a/Documentation/DocBook/dvb/frontend.h.xml +++ b/Documentation/DocBook/dvb/frontend.h.xml | |||
| @@ -176,14 +176,20 @@ typedef enum fe_transmit_mode { | |||
| 176 | TRANSMISSION_MODE_2K, | 176 | TRANSMISSION_MODE_2K, |
| 177 | TRANSMISSION_MODE_8K, | 177 | TRANSMISSION_MODE_8K, |
| 178 | TRANSMISSION_MODE_AUTO, | 178 | TRANSMISSION_MODE_AUTO, |
| 179 | TRANSMISSION_MODE_4K | 179 | TRANSMISSION_MODE_4K, |
| 180 | TRANSMISSION_MODE_1K, | ||
| 181 | TRANSMISSION_MODE_16K, | ||
| 182 | TRANSMISSION_MODE_32K, | ||
| 180 | } fe_transmit_mode_t; | 183 | } fe_transmit_mode_t; |
| 181 | 184 | ||
| 182 | typedef enum fe_bandwidth { | 185 | typedef enum fe_bandwidth { |
| 183 | BANDWIDTH_8_MHZ, | 186 | BANDWIDTH_8_MHZ, |
| 184 | BANDWIDTH_7_MHZ, | 187 | BANDWIDTH_7_MHZ, |
| 185 | BANDWIDTH_6_MHZ, | 188 | BANDWIDTH_6_MHZ, |
| 186 | BANDWIDTH_AUTO | 189 | BANDWIDTH_AUTO, |
| 190 | BANDWIDTH_5_MHZ, | ||
| 191 | BANDWIDTH_10_MHZ, | ||
| 192 | BANDWIDTH_1_712_MHZ, | ||
| 187 | } fe_bandwidth_t; | 193 | } fe_bandwidth_t; |
| 188 | 194 | ||
| 189 | 195 | ||
| @@ -192,7 +198,10 @@ typedef enum fe_guard_interval { | |||
| 192 | GUARD_INTERVAL_1_16, | 198 | GUARD_INTERVAL_1_16, |
| 193 | GUARD_INTERVAL_1_8, | 199 | GUARD_INTERVAL_1_8, |
| 194 | GUARD_INTERVAL_1_4, | 200 | GUARD_INTERVAL_1_4, |
| 195 | GUARD_INTERVAL_AUTO | 201 | GUARD_INTERVAL_AUTO, |
| 202 | GUARD_INTERVAL_1_128, | ||
| 203 | GUARD_INTERVAL_19_128, | ||
| 204 | GUARD_INTERVAL_19_256, | ||
| 196 | } fe_guard_interval_t; | 205 | } fe_guard_interval_t; |
| 197 | 206 | ||
| 198 | 207 | ||
| @@ -306,7 +315,9 @@ struct dvb_frontend_event { | |||
| 306 | 315 | ||
| 307 | #define DTV_ISDBS_TS_ID 42 | 316 | #define DTV_ISDBS_TS_ID 42 |
| 308 | 317 | ||
| 309 | #define DTV_MAX_COMMAND DTV_ISDBS_TS_ID | 318 | #define DTV_DVBT2_PLP_ID 43 |
| 319 | |||
| 320 | #define DTV_MAX_COMMAND DTV_DVBT2_PLP_ID | ||
| 310 | 321 | ||
| 311 | typedef enum fe_pilot { | 322 | typedef enum fe_pilot { |
| 312 | PILOT_ON, | 323 | PILOT_ON, |
| @@ -338,6 +349,7 @@ typedef enum fe_delivery_system { | |||
| 338 | SYS_DMBTH, | 349 | SYS_DMBTH, |
| 339 | SYS_CMMB, | 350 | SYS_CMMB, |
| 340 | SYS_DAB, | 351 | SYS_DAB, |
| 352 | SYS_DVBT2, | ||
| 341 | } fe_delivery_system_t; | 353 | } fe_delivery_system_t; |
| 342 | 354 | ||
| 343 | struct dtv_cmds_h { | 355 | struct dtv_cmds_h { |
diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl index fea63b45471a..c8abb23ef1e7 100644 --- a/Documentation/DocBook/media-entities.tmpl +++ b/Documentation/DocBook/media-entities.tmpl | |||
| @@ -270,6 +270,7 @@ | |||
| 270 | <!ENTITY sub-write SYSTEM "v4l/func-write.xml"> | 270 | <!ENTITY sub-write SYSTEM "v4l/func-write.xml"> |
| 271 | <!ENTITY sub-io SYSTEM "v4l/io.xml"> | 271 | <!ENTITY sub-io SYSTEM "v4l/io.xml"> |
| 272 | <!ENTITY sub-grey SYSTEM "v4l/pixfmt-grey.xml"> | 272 | <!ENTITY sub-grey SYSTEM "v4l/pixfmt-grey.xml"> |
| 273 | <!ENTITY sub-m420 SYSTEM "v4l/pixfmt-m420.xml"> | ||
| 273 | <!ENTITY sub-nv12 SYSTEM "v4l/pixfmt-nv12.xml"> | 274 | <!ENTITY sub-nv12 SYSTEM "v4l/pixfmt-nv12.xml"> |
| 274 | <!ENTITY sub-nv12m SYSTEM "v4l/pixfmt-nv12m.xml"> | 275 | <!ENTITY sub-nv12m SYSTEM "v4l/pixfmt-nv12m.xml"> |
| 275 | <!ENTITY sub-nv12mt SYSTEM "v4l/pixfmt-nv12mt.xml"> | 276 | <!ENTITY sub-nv12mt SYSTEM "v4l/pixfmt-nv12mt.xml"> |
| @@ -295,6 +296,7 @@ | |||
| 295 | <!ENTITY sub-srggb8 SYSTEM "v4l/pixfmt-srggb8.xml"> | 296 | <!ENTITY sub-srggb8 SYSTEM "v4l/pixfmt-srggb8.xml"> |
| 296 | <!ENTITY sub-y10 SYSTEM "v4l/pixfmt-y10.xml"> | 297 | <!ENTITY sub-y10 SYSTEM "v4l/pixfmt-y10.xml"> |
| 297 | <!ENTITY sub-y12 SYSTEM "v4l/pixfmt-y12.xml"> | 298 | <!ENTITY sub-y12 SYSTEM "v4l/pixfmt-y12.xml"> |
| 299 | <!ENTITY sub-y10b SYSTEM "v4l/pixfmt-y10b.xml"> | ||
| 298 | <!ENTITY sub-pixfmt SYSTEM "v4l/pixfmt.xml"> | 300 | <!ENTITY sub-pixfmt SYSTEM "v4l/pixfmt.xml"> |
| 299 | <!ENTITY sub-cropcap SYSTEM "v4l/vidioc-cropcap.xml"> | 301 | <!ENTITY sub-cropcap SYSTEM "v4l/vidioc-cropcap.xml"> |
| 300 | <!ENTITY sub-dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> | 302 | <!ENTITY sub-dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml"> |
diff --git a/Documentation/DocBook/v4l/pixfmt-m420.xml b/Documentation/DocBook/v4l/pixfmt-m420.xml new file mode 100644 index 000000000000..ce4bc019e5c0 --- /dev/null +++ b/Documentation/DocBook/v4l/pixfmt-m420.xml | |||
| @@ -0,0 +1,147 @@ | |||
| 1 | <refentry id="V4L2-PIX-FMT-M420"> | ||
| 2 | <refmeta> | ||
| 3 | <refentrytitle>V4L2_PIX_FMT_M420 ('M420')</refentrytitle> | ||
| 4 | &manvol; | ||
| 5 | </refmeta> | ||
| 6 | <refnamediv> | ||
| 7 | <refname><constant>V4L2_PIX_FMT_M420</constant></refname> | ||
| 8 | <refpurpose>Format with ½ horizontal and vertical chroma | ||
| 9 | resolution, also known as YUV 4:2:0. Hybrid plane line-interleaved | ||
| 10 | layout.</refpurpose> | ||
| 11 | </refnamediv> | ||
| 12 | <refsect1> | ||
| 13 | <title>Description</title> | ||
| 14 | |||
| 15 | <para>M420 is a YUV format with ½ horizontal and vertical chroma | ||
| 16 | subsampling (YUV 4:2:0). Pixels are organized as interleaved luma and | ||
| 17 | chroma planes. Two lines of luma data are followed by one line of chroma | ||
| 18 | data.</para> | ||
| 19 | <para>The luma plane has one byte per pixel. The chroma plane contains | ||
| 20 | interleaved CbCr pixels subsampled by ½ in the horizontal and | ||
| 21 | vertical directions. Each CbCr pair belongs to four pixels. For example, | ||
| 22 | Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to | ||
| 23 | Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, | ||
| 24 | Y'<subscript>10</subscript>, Y'<subscript>11</subscript>.</para> | ||
| 25 | |||
| 26 | <para>All line lengths are identical: if the Y lines include pad bytes | ||
| 27 | so do the CbCr lines.</para> | ||
| 28 | |||
| 29 | <example> | ||
| 30 | <title><constant>V4L2_PIX_FMT_M420</constant> 4 × 4 | ||
| 31 | pixel image</title> | ||
| 32 | |||
| 33 | <formalpara> | ||
| 34 | <title>Byte Order.</title> | ||
| 35 | <para>Each cell is one byte. | ||
| 36 | <informaltable frame="none"> | ||
| 37 | <tgroup cols="5" align="center"> | ||
| 38 | <colspec align="left" colwidth="2*" /> | ||
| 39 | <tbody valign="top"> | ||
| 40 | <row> | ||
| 41 | <entry>start + 0:</entry> | ||
| 42 | <entry>Y'<subscript>00</subscript></entry> | ||
| 43 | <entry>Y'<subscript>01</subscript></entry> | ||
| 44 | <entry>Y'<subscript>02</subscript></entry> | ||
| 45 | <entry>Y'<subscript>03</subscript></entry> | ||
| 46 | </row> | ||
| 47 | <row> | ||
| 48 | <entry>start + 4:</entry> | ||
| 49 | <entry>Y'<subscript>10</subscript></entry> | ||
| 50 | <entry>Y'<subscript>11</subscript></entry> | ||
| 51 | <entry>Y'<subscript>12</subscript></entry> | ||
| 52 | <entry>Y'<subscript>13</subscript></entry> | ||
| 53 | </row> | ||
| 54 | <row> | ||
| 55 | <entry>start + 8:</entry> | ||
| 56 | <entry>Cb<subscript>00</subscript></entry> | ||
| 57 | <entry>Cr<subscript>00</subscript></entry> | ||
| 58 | <entry>Cb<subscript>01</subscript></entry> | ||
| 59 | <entry>Cr<subscript>01</subscript></entry> | ||
| 60 | </row> | ||
| 61 | <row> | ||
| 62 | <entry>start + 16:</entry> | ||
| 63 | <entry>Y'<subscript>20</subscript></entry> | ||
| 64 | <entry>Y'<subscript>21</subscript></entry> | ||
| 65 | <entry>Y'<subscript>22</subscript></entry> | ||
| 66 | <entry>Y'<subscript>23</subscript></entry> | ||
| 67 | </row> | ||
| 68 | <row> | ||
| 69 | <entry>start + 20:</entry> | ||
| 70 | <entry>Y'<subscript>30</subscript></entry> | ||
| 71 | <entry>Y'<subscript>31</subscript></entry> | ||
| 72 | <entry>Y'<subscript>32</subscript></entry> | ||
| 73 | <entry>Y'<subscript>33</subscript></entry> | ||
| 74 | </row> | ||
| 75 | <row> | ||
| 76 | <entry>start + 24:</entry> | ||
| 77 | <entry>Cb<subscript>10</subscript></entry> | ||
| 78 | <entry>Cr<subscript>10</subscript></entry> | ||
| 79 | <entry>Cb<subscript>11</subscript></entry> | ||
| 80 | <entry>Cr<subscript>11</subscript></entry> | ||
| 81 | </row> | ||
| 82 | </tbody> | ||
| 83 | </tgroup> | ||
| 84 | </informaltable> | ||
| 85 | </para> | ||
| 86 | </formalpara> | ||
| 87 | |||
| 88 | <formalpara> | ||
| 89 | <title>Color Sample Location.</title> | ||
| 90 | <para> | ||
| 91 | <informaltable frame="none"> | ||
| 92 | <tgroup cols="7" align="center"> | ||
| 93 | <tbody valign="top"> | ||
| 94 | <row> | ||
| 95 | <entry></entry> | ||
| 96 | <entry>0</entry><entry></entry><entry>1</entry><entry></entry> | ||
| 97 | <entry>2</entry><entry></entry><entry>3</entry> | ||
| 98 | </row> | ||
| 99 | <row> | ||
| 100 | <entry>0</entry> | ||
| 101 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
| 102 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
| 103 | </row> | ||
| 104 | <row> | ||
| 105 | <entry></entry> | ||
| 106 | <entry></entry><entry>C</entry><entry></entry><entry></entry> | ||
| 107 | <entry></entry><entry>C</entry><entry></entry> | ||
| 108 | </row> | ||
| 109 | <row> | ||
| 110 | <entry>1</entry> | ||
| 111 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
| 112 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
| 113 | </row> | ||
| 114 | <row> | ||
| 115 | <entry></entry> | ||
| 116 | </row> | ||
| 117 | <row> | ||
| 118 | <entry>2</entry> | ||
| 119 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
| 120 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
| 121 | </row> | ||
| 122 | <row> | ||
| 123 | <entry></entry> | ||
| 124 | <entry></entry><entry>C</entry><entry></entry><entry></entry> | ||
| 125 | <entry></entry><entry>C</entry><entry></entry> | ||
| 126 | </row> | ||
| 127 | <row> | ||
| 128 | <entry>3</entry> | ||
| 129 | <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry> | ||
| 130 | <entry>Y</entry><entry></entry><entry>Y</entry> | ||
| 131 | </row> | ||
| 132 | </tbody> | ||
| 133 | </tgroup> | ||
| 134 | </informaltable> | ||
| 135 | </para> | ||
| 136 | </formalpara> | ||
| 137 | </example> | ||
| 138 | </refsect1> | ||
| 139 | </refentry> | ||
| 140 | |||
| 141 | <!-- | ||
| 142 | Local Variables: | ||
| 143 | mode: sgml | ||
| 144 | sgml-parent-document: "pixfmt.sgml" | ||
| 145 | indent-tabs-mode: nil | ||
| 146 | End: | ||
| 147 | --> | ||
diff --git a/Documentation/DocBook/v4l/pixfmt-y10b.xml b/Documentation/DocBook/v4l/pixfmt-y10b.xml new file mode 100644 index 000000000000..adb0ad808c93 --- /dev/null +++ b/Documentation/DocBook/v4l/pixfmt-y10b.xml | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | <refentry id="V4L2-PIX-FMT-Y10BPACK"> | ||
| 2 | <refmeta> | ||
| 3 | <refentrytitle>V4L2_PIX_FMT_Y10BPACK ('Y10B')</refentrytitle> | ||
| 4 | &manvol; | ||
| 5 | </refmeta> | ||
| 6 | <refnamediv> | ||
| 7 | <refname><constant>V4L2_PIX_FMT_Y10BPACK</constant></refname> | ||
| 8 | <refpurpose>Grey-scale image as a bit-packed array</refpurpose> | ||
| 9 | </refnamediv> | ||
| 10 | <refsect1> | ||
| 11 | <title>Description</title> | ||
| 12 | |||
| 13 | <para>This is a packed grey-scale image format with a depth of 10 bits per | ||
| 14 | pixel. Pixels are stored in a bit-packed array of 10bit bits per pixel, | ||
| 15 | with no padding between them and with the most significant bits coming | ||
| 16 | first from the left.</para> | ||
| 17 | |||
| 18 | <example> | ||
| 19 | <title><constant>V4L2_PIX_FMT_Y10BPACK</constant> 4 pixel data stream taking 5 bytes</title> | ||
| 20 | |||
| 21 | <formalpara> | ||
| 22 | <title>Bit-packed representation</title> | ||
| 23 | <para>pixels cross the byte boundary and have a ratio of 5 bytes for each 4 | ||
| 24 | pixels. | ||
| 25 | <informaltable frame="all"> | ||
| 26 | <tgroup cols="5" align="center"> | ||
| 27 | <colspec align="left" colwidth="2*" /> | ||
| 28 | <tbody valign="top"> | ||
| 29 | <row> | ||
| 30 | <entry>Y'<subscript>00[9:2]</subscript></entry> | ||
| 31 | <entry>Y'<subscript>00[1:0]</subscript>Y'<subscript>01[9:4]</subscript></entry> | ||
| 32 | <entry>Y'<subscript>01[3:0]</subscript>Y'<subscript>02[9:6]</subscript></entry> | ||
| 33 | <entry>Y'<subscript>02[5:0]</subscript>Y'<subscript>03[9:8]</subscript></entry> | ||
| 34 | <entry>Y'<subscript>03[7:0]</subscript></entry> | ||
| 35 | </row> | ||
| 36 | </tbody> | ||
| 37 | </tgroup> | ||
| 38 | </informaltable> | ||
| 39 | </para> | ||
| 40 | </formalpara> | ||
| 41 | </example> | ||
| 42 | </refsect1> | ||
| 43 | </refentry> | ||
diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/v4l/pixfmt.xml index 40af4beb48b9..dbfe3b08435f 100644 --- a/Documentation/DocBook/v4l/pixfmt.xml +++ b/Documentation/DocBook/v4l/pixfmt.xml | |||
| @@ -697,6 +697,7 @@ information.</para> | |||
| 697 | &sub-grey; | 697 | &sub-grey; |
| 698 | &sub-y10; | 698 | &sub-y10; |
| 699 | &sub-y12; | 699 | &sub-y12; |
| 700 | &sub-y10b; | ||
| 700 | &sub-y16; | 701 | &sub-y16; |
| 701 | &sub-yuyv; | 702 | &sub-yuyv; |
| 702 | &sub-uyvy; | 703 | &sub-uyvy; |
| @@ -712,6 +713,7 @@ information.</para> | |||
| 712 | &sub-nv12m; | 713 | &sub-nv12m; |
| 713 | &sub-nv12mt; | 714 | &sub-nv12mt; |
| 714 | &sub-nv16; | 715 | &sub-nv16; |
| 716 | &sub-m420; | ||
| 715 | </section> | 717 | </section> |
| 716 | 718 | ||
| 717 | <section> | 719 | <section> |
diff --git a/Documentation/DocBook/v4l/subdev-formats.xml b/Documentation/DocBook/v4l/subdev-formats.xml index d7ccd25edcc1..a26b10c07857 100644 --- a/Documentation/DocBook/v4l/subdev-formats.xml +++ b/Documentation/DocBook/v4l/subdev-formats.xml | |||
| @@ -2522,5 +2522,51 @@ | |||
| 2522 | </tgroup> | 2522 | </tgroup> |
| 2523 | </table> | 2523 | </table> |
| 2524 | </section> | 2524 | </section> |
| 2525 | |||
| 2526 | <section> | ||
| 2527 | <title>JPEG Compressed Formats</title> | ||
| 2528 | |||
| 2529 | <para>Those data formats consist of an ordered sequence of 8-bit bytes | ||
| 2530 | obtained from JPEG compression process. Additionally to the | ||
| 2531 | <constant>_JPEG</constant> prefix the format code is made of | ||
| 2532 | the following information. | ||
| 2533 | <itemizedlist> | ||
| 2534 | <listitem>The number of bus samples per entropy encoded byte.</listitem> | ||
| 2535 | <listitem>The bus width.</listitem> | ||
| 2536 | </itemizedlist> | ||
| 2537 | |||
| 2538 | <para>For instance, for a JPEG baseline process and an 8-bit bus width | ||
| 2539 | the format will be named <constant>V4L2_MBUS_FMT_JPEG_1X8</constant>. | ||
| 2540 | </para> | ||
| 2541 | </para> | ||
| 2542 | |||
| 2543 | <para>The following table lists existing JPEG compressed formats.</para> | ||
| 2544 | |||
| 2545 | <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-jpeg"> | ||
| 2546 | <title>JPEG Formats</title> | ||
| 2547 | <tgroup cols="3"> | ||
| 2548 | <colspec colname="id" align="left" /> | ||
| 2549 | <colspec colname="code" align="left"/> | ||
| 2550 | <colspec colname="remarks" align="left"/> | ||
| 2551 | <thead> | ||
| 2552 | <row> | ||
| 2553 | <entry>Identifier</entry> | ||
| 2554 | <entry>Code</entry> | ||
| 2555 | <entry>Remarks</entry> | ||
| 2556 | </row> | ||
| 2557 | </thead> | ||
| 2558 | <tbody valign="top"> | ||
| 2559 | <row id="V4L2-MBUS-FMT-JPEG-1X8"> | ||
| 2560 | <entry>V4L2_MBUS_FMT_JPEG_1X8</entry> | ||
| 2561 | <entry>0x4001</entry> | ||
| 2562 | <entry>Besides of its usage for the parallel bus this format is | ||
| 2563 | recommended for transmission of JPEG data over MIPI CSI bus | ||
| 2564 | using the User Defined 8-bit Data types. | ||
| 2565 | </entry> | ||
| 2566 | </row> | ||
| 2567 | </tbody> | ||
| 2568 | </tgroup> | ||
| 2569 | </table> | ||
| 2570 | </section> | ||
| 2525 | </section> | 2571 | </section> |
| 2526 | </section> | 2572 | </section> |
diff --git a/Documentation/DocBook/v4l/videodev2.h.xml b/Documentation/DocBook/v4l/videodev2.h.xml index 2b796a2ee98a..c50536a4f596 100644 --- a/Documentation/DocBook/v4l/videodev2.h.xml +++ b/Documentation/DocBook/v4l/videodev2.h.xml | |||
| @@ -311,6 +311,9 @@ struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | |||
| 311 | #define <link linkend="V4L2-PIX-FMT-Y10">V4L2_PIX_FMT_Y10</link> v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ | 311 | #define <link linkend="V4L2-PIX-FMT-Y10">V4L2_PIX_FMT_Y10</link> v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ |
| 312 | #define <link linkend="V4L2-PIX-FMT-Y16">V4L2_PIX_FMT_Y16</link> v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | 312 | #define <link linkend="V4L2-PIX-FMT-Y16">V4L2_PIX_FMT_Y16</link> v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ |
| 313 | 313 | ||
| 314 | /* Grey bit-packed formats */ | ||
| 315 | #define <link linkend="V4L2-PIX-FMT-Y10BPACK">V4L2_PIX_FMT_Y10BPACK</link> v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ | ||
| 316 | |||
| 314 | /* Palette formats */ | 317 | /* Palette formats */ |
| 315 | #define <link linkend="V4L2-PIX-FMT-PAL8">V4L2_PIX_FMT_PAL8</link> v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ | 318 | #define <link linkend="V4L2-PIX-FMT-PAL8">V4L2_PIX_FMT_PAL8</link> v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ |
| 316 | 319 | ||
| @@ -333,6 +336,7 @@ struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> { | |||
| 333 | #define <link linkend="V4L2-PIX-FMT-YUV420">V4L2_PIX_FMT_YUV420</link> v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | 336 | #define <link linkend="V4L2-PIX-FMT-YUV420">V4L2_PIX_FMT_YUV420</link> v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ |
| 334 | #define <link linkend="V4L2-PIX-FMT-HI240">V4L2_PIX_FMT_HI240</link> v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | 337 | #define <link linkend="V4L2-PIX-FMT-HI240">V4L2_PIX_FMT_HI240</link> v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ |
| 335 | #define <link linkend="V4L2-PIX-FMT-HM12">V4L2_PIX_FMT_HM12</link> v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | 338 | #define <link linkend="V4L2-PIX-FMT-HM12">V4L2_PIX_FMT_HM12</link> v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ |
| 339 | #define <link linkend="V4L2-PIX-FMT-M420">V4L2_PIX_FMT_M420</link> v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */ | ||
| 336 | 340 | ||
| 337 | /* two planes -- one Y, one Cr + Cb interleaved */ | 341 | /* two planes -- one Y, one Cr + Cb interleaved */ |
| 338 | #define <link linkend="V4L2-PIX-FMT-NV12">V4L2_PIX_FMT_NV12</link> v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ | 342 | #define <link linkend="V4L2-PIX-FMT-NV12">V4L2_PIX_FMT_NV12</link> v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 19132cadc18d..95788ad2506c 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
| @@ -551,3 +551,26 @@ Why: These legacy callbacks should no longer be used as i2c-core offers | |||
| 551 | Who: Jean Delvare <khali@linux-fr.org> | 551 | Who: Jean Delvare <khali@linux-fr.org> |
| 552 | 552 | ||
| 553 | ---------------------------- | 553 | ---------------------------- |
| 554 | |||
| 555 | What: Support for UVCIOC_CTRL_ADD in the uvcvideo driver | ||
| 556 | When: 2.6.42 | ||
| 557 | Why: The information passed to the driver by this ioctl is now queried | ||
| 558 | dynamically from the device. | ||
| 559 | Who: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
| 560 | |||
| 561 | ---------------------------- | ||
| 562 | |||
| 563 | What: Support for UVCIOC_CTRL_MAP_OLD in the uvcvideo driver | ||
| 564 | When: 2.6.42 | ||
| 565 | Why: Used only by applications compiled against older driver versions. | ||
| 566 | Superseded by UVCIOC_CTRL_MAP which supports V4L2 menu controls. | ||
| 567 | Who: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
| 568 | |||
| 569 | ---------------------------- | ||
| 570 | |||
| 571 | What: Support for UVCIOC_CTRL_GET and UVCIOC_CTRL_SET in the uvcvideo driver | ||
| 572 | When: 2.6.42 | ||
| 573 | Why: Superseded by the UVCIOC_CTRL_QUERY ioctl. | ||
| 574 | Who: Laurent Pinchart <laurent.pinchart@ideasonboard.com> | ||
| 575 | |||
| 576 | ---------------------------- | ||
diff --git a/Documentation/ioctl/ioctl-number.txt b/Documentation/ioctl/ioctl-number.txt index a0a5d82b6b0b..2d1ad12e2b3e 100644 --- a/Documentation/ioctl/ioctl-number.txt +++ b/Documentation/ioctl/ioctl-number.txt | |||
| @@ -166,7 +166,6 @@ Code Seq#(hex) Include File Comments | |||
| 166 | 'T' all arch/x86/include/asm/ioctls.h conflict! | 166 | 'T' all arch/x86/include/asm/ioctls.h conflict! |
| 167 | 'T' C0-DF linux/if_tun.h conflict! | 167 | 'T' C0-DF linux/if_tun.h conflict! |
| 168 | 'U' all sound/asound.h conflict! | 168 | 'U' all sound/asound.h conflict! |
| 169 | 'U' 00-0F drivers/media/video/uvc/uvcvideo.h conflict! | ||
| 170 | 'U' 00-CF linux/uinput.h conflict! | 169 | 'U' 00-CF linux/uinput.h conflict! |
| 171 | 'U' 00-EF linux/usbdevice_fs.h | 170 | 'U' 00-EF linux/usbdevice_fs.h |
| 172 | 'U' C0-CF drivers/bluetooth/hci_uart.h | 171 | 'U' C0-CF drivers/bluetooth/hci_uart.h |
| @@ -259,6 +258,7 @@ Code Seq#(hex) Include File Comments | |||
| 259 | 't' 80-8F linux/isdn_ppp.h | 258 | 't' 80-8F linux/isdn_ppp.h |
| 260 | 't' 90 linux/toshiba.h | 259 | 't' 90 linux/toshiba.h |
| 261 | 'u' 00-1F linux/smb_fs.h gone | 260 | 'u' 00-1F linux/smb_fs.h gone |
| 261 | 'u' 20-3F linux/uvcvideo.h USB video class host driver | ||
| 262 | 'v' 00-1F linux/ext2_fs.h conflict! | 262 | 'v' 00-1F linux/ext2_fs.h conflict! |
| 263 | 'v' 00-1F linux/fs.h conflict! | 263 | 'v' 00-1F linux/fs.h conflict! |
| 264 | 'v' 00-0F linux/sonypi.h conflict! | 264 | 'v' 00-0F linux/sonypi.h conflict! |
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index 31b485723bc5..9aae449440dc 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
| @@ -54,7 +54,7 @@ | |||
| 54 | 53 -> Pinnacle Hybrid Pro (em2881) | 54 | 53 -> Pinnacle Hybrid Pro (em2881) |
| 55 | 54 -> Kworld VS-DVB-T 323UR (em2882) [eb1a:e323] | 55 | 54 -> Kworld VS-DVB-T 323UR (em2882) [eb1a:e323] |
| 56 | 55 -> Terratec Cinnergy Hybrid T USB XS (em2882) (em2882) [0ccd:005e,0ccd:0042] | 56 | 55 -> Terratec Cinnergy Hybrid T USB XS (em2882) (em2882) [0ccd:005e,0ccd:0042] |
| 57 | 56 -> Pinnacle Hybrid Pro (2) (em2882) [2304:0226] | 57 | 56 -> Pinnacle Hybrid Pro (330e) (em2882) [2304:0226] |
| 58 | 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] | 58 | 57 -> Kworld PlusTV HD Hybrid 330 (em2883) [eb1a:a316] |
| 59 | 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] | 59 | 58 -> Compro VideoMate ForYou/Stereo (em2820/em2840) [185b:2041] |
| 60 | 60 -> Hauppauge WinTV HVR 850 (em2883) [2040:651f] | 60 | 60 -> Hauppauge WinTV HVR 850 (em2883) [2040:651f] |
diff --git a/Documentation/video4linux/Zoran b/Documentation/video4linux/Zoran index c40e3bab08fa..9ed629d4874b 100644 --- a/Documentation/video4linux/Zoran +++ b/Documentation/video4linux/Zoran | |||
| @@ -130,7 +130,6 @@ Card number: 4 | |||
| 130 | 130 | ||
| 131 | Note: No module for the mse3000 is available yet | 131 | Note: No module for the mse3000 is available yet |
| 132 | Note: No module for the vpx3224 is available yet | 132 | Note: No module for the vpx3224 is available yet |
| 133 | Note: use encoder=X or decoder=X for non-default i2c chips | ||
| 134 | 133 | ||
| 135 | =========================== | 134 | =========================== |
| 136 | 135 | ||
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt index 5c542e60f51d..5bfa9a777d26 100644 --- a/Documentation/video4linux/gspca.txt +++ b/Documentation/video4linux/gspca.txt | |||
| @@ -275,6 +275,7 @@ pac7302 093a:2629 Genious iSlim 300 | |||
| 275 | pac7302 093a:262a Webcam 300k | 275 | pac7302 093a:262a Webcam 300k |
| 276 | pac7302 093a:262c Philips SPC 230 NC | 276 | pac7302 093a:262c Philips SPC 230 NC |
| 277 | jeilinj 0979:0280 Sakar 57379 | 277 | jeilinj 0979:0280 Sakar 57379 |
| 278 | jeilinj 0979:0280 Sportscam DV15 | ||
| 278 | zc3xx 0ac8:0302 Z-star Vimicro zc0302 | 279 | zc3xx 0ac8:0302 Z-star Vimicro zc0302 |
| 279 | vc032x 0ac8:0321 Vimicro generic vc0321 | 280 | vc032x 0ac8:0321 Vimicro generic vc0321 |
| 280 | vc032x 0ac8:0323 Vimicro Vc0323 | 281 | vc032x 0ac8:0323 Vimicro Vc0323 |
diff --git a/Documentation/video4linux/uvcvideo.txt b/Documentation/video4linux/uvcvideo.txt new file mode 100644 index 000000000000..848d620dcc5c --- /dev/null +++ b/Documentation/video4linux/uvcvideo.txt | |||
| @@ -0,0 +1,239 @@ | |||
| 1 | Linux USB Video Class (UVC) driver | ||
| 2 | ================================== | ||
| 3 | |||
| 4 | This file documents some driver-specific aspects of the UVC driver, such as | ||
| 5 | driver-specific ioctls and implementation notes. | ||
| 6 | |||
| 7 | Questions and remarks can be sent to the Linux UVC development mailing list at | ||
| 8 | linux-uvc-devel@lists.berlios.de. | ||
| 9 | |||
| 10 | |||
| 11 | Extension Unit (XU) support | ||
| 12 | --------------------------- | ||
| 13 | |||
| 14 | 1. Introduction | ||
| 15 | |||
| 16 | The UVC specification allows for vendor-specific extensions through extension | ||
| 17 | units (XUs). The Linux UVC driver supports extension unit controls (XU controls) | ||
| 18 | through two separate mechanisms: | ||
| 19 | |||
| 20 | - through mappings of XU controls to V4L2 controls | ||
| 21 | - through a driver-specific ioctl interface | ||
| 22 | |||
| 23 | The first one allows generic V4L2 applications to use XU controls by mapping | ||
| 24 | certain XU controls onto V4L2 controls, which then show up during ordinary | ||
| 25 | control enumeration. | ||
| 26 | |||
| 27 | The second mechanism requires uvcvideo-specific knowledge for the application to | ||
| 28 | access XU controls but exposes the entire UVC XU concept to user space for | ||
| 29 | maximum flexibility. | ||
| 30 | |||
| 31 | Both mechanisms complement each other and are described in more detail below. | ||
| 32 | |||
| 33 | |||
| 34 | 2. Control mappings | ||
| 35 | |||
| 36 | The UVC driver provides an API for user space applications to define so-called | ||
| 37 | control mappings at runtime. These allow for individual XU controls or byte | ||
| 38 | ranges thereof to be mapped to new V4L2 controls. Such controls appear and | ||
| 39 | function exactly like normal V4L2 controls (i.e. the stock controls, such as | ||
| 40 | brightness, contrast, etc.). However, reading or writing of such a V4L2 controls | ||
| 41 | triggers a read or write of the associated XU control. | ||
| 42 | |||
| 43 | The ioctl used to create these control mappings is called UVCIOC_CTRL_MAP. | ||
| 44 | Previous driver versions (before 0.2.0) required another ioctl to be used | ||
| 45 | beforehand (UVCIOC_CTRL_ADD) to pass XU control information to the UVC driver. | ||
| 46 | This is no longer necessary as newer uvcvideo versions query the information | ||
| 47 | directly from the device. | ||
| 48 | |||
| 49 | For details on the UVCIOC_CTRL_MAP ioctl please refer to the section titled | ||
| 50 | "IOCTL reference" below. | ||
| 51 | |||
| 52 | |||
| 53 | 3. Driver specific XU control interface | ||
| 54 | |||
| 55 | For applications that need to access XU controls directly, e.g. for testing | ||
| 56 | purposes, firmware upload, or accessing binary controls, a second mechanism to | ||
| 57 | access XU controls is provided in the form of a driver-specific ioctl, namely | ||
| 58 | UVCIOC_CTRL_QUERY. | ||
| 59 | |||
| 60 | A call to this ioctl allows applications to send queries to the UVC driver that | ||
| 61 | directly map to the low-level UVC control requests. | ||
| 62 | |||
| 63 | In order to make such a request the UVC unit ID of the control's extension unit | ||
| 64 | and the control selector need to be known. This information either needs to be | ||
| 65 | hardcoded in the application or queried using other ways such as by parsing the | ||
| 66 | UVC descriptor or, if available, using the media controller API to enumerate a | ||
| 67 | device's entities. | ||
| 68 | |||
| 69 | Unless the control size is already known it is necessary to first make a | ||
| 70 | UVC_GET_LEN requests in order to be able to allocate a sufficiently large buffer | ||
| 71 | and set the buffer size to the correct value. Similarly, to find out whether | ||
| 72 | UVC_GET_CUR or UVC_SET_CUR are valid requests for a given control, a | ||
| 73 | UVC_GET_INFO request should be made. The bits 0 (GET supported) and 1 (SET | ||
| 74 | supported) of the resulting byte indicate which requests are valid. | ||
| 75 | |||
| 76 | With the addition of the UVCIOC_CTRL_QUERY ioctl the UVCIOC_CTRL_GET and | ||
| 77 | UVCIOC_CTRL_SET ioctls have become obsolete since their functionality is a | ||
| 78 | subset of the former ioctl. For the time being they are still supported but | ||
| 79 | application developers are encouraged to use UVCIOC_CTRL_QUERY instead. | ||
| 80 | |||
| 81 | For details on the UVCIOC_CTRL_QUERY ioctl please refer to the section titled | ||
| 82 | "IOCTL reference" below. | ||
| 83 | |||
| 84 | |||
| 85 | 4. Security | ||
| 86 | |||
| 87 | The API doesn't currently provide a fine-grained access control facility. The | ||
| 88 | UVCIOC_CTRL_ADD and UVCIOC_CTRL_MAP ioctls require super user permissions. | ||
| 89 | |||
| 90 | Suggestions on how to improve this are welcome. | ||
| 91 | |||
| 92 | |||
| 93 | 5. Debugging | ||
| 94 | |||
| 95 | In order to debug problems related to XU controls or controls in general it is | ||
| 96 | recommended to enable the UVC_TRACE_CONTROL bit in the module parameter 'trace'. | ||
| 97 | This causes extra output to be written into the system log. | ||
| 98 | |||
| 99 | |||
| 100 | 6. IOCTL reference | ||
| 101 | |||
| 102 | ---- UVCIOC_CTRL_MAP - Map a UVC control to a V4L2 control ---- | ||
| 103 | |||
| 104 | Argument: struct uvc_xu_control_mapping | ||
| 105 | |||
| 106 | Description: | ||
| 107 | This ioctl creates a mapping between a UVC control or part of a UVC | ||
| 108 | control and a V4L2 control. Once mappings are defined, userspace | ||
| 109 | applications can access vendor-defined UVC control through the V4L2 | ||
| 110 | control API. | ||
| 111 | |||
| 112 | To create a mapping, applications fill the uvc_xu_control_mapping | ||
| 113 | structure with information about an existing UVC control defined with | ||
| 114 | UVCIOC_CTRL_ADD and a new V4L2 control. | ||
| 115 | |||
| 116 | A UVC control can be mapped to several V4L2 controls. For instance, | ||
| 117 | a UVC pan/tilt control could be mapped to separate pan and tilt V4L2 | ||
| 118 | controls. The UVC control is divided into non overlapping fields using | ||
| 119 | the 'size' and 'offset' fields and are then independantly mapped to | ||
| 120 | V4L2 control. | ||
| 121 | |||
| 122 | For signed integer V4L2 controls the data_type field should be set to | ||
| 123 | UVC_CTRL_DATA_TYPE_SIGNED. Other values are currently ignored. | ||
| 124 | |||
| 125 | Return value: | ||
| 126 | On success 0 is returned. On error -1 is returned and errno is set | ||
| 127 | appropriately. | ||
| 128 | |||
| 129 | ENOMEM | ||
| 130 | Not enough memory to perform the operation. | ||
| 131 | EPERM | ||
| 132 | Insufficient privileges (super user privileges are required). | ||
| 133 | EINVAL | ||
| 134 | No such UVC control. | ||
| 135 | EOVERFLOW | ||
| 136 | The requested offset and size would overflow the UVC control. | ||
| 137 | EEXIST | ||
| 138 | Mapping already exists. | ||
| 139 | |||
| 140 | Data types: | ||
| 141 | * struct uvc_xu_control_mapping | ||
| 142 | |||
| 143 | __u32 id V4L2 control identifier | ||
| 144 | __u8 name[32] V4L2 control name | ||
| 145 | __u8 entity[16] UVC extension unit GUID | ||
| 146 | __u8 selector UVC control selector | ||
| 147 | __u8 size V4L2 control size (in bits) | ||
| 148 | __u8 offset V4L2 control offset (in bits) | ||
| 149 | enum v4l2_ctrl_type | ||
| 150 | v4l2_type V4L2 control type | ||
| 151 | enum uvc_control_data_type | ||
| 152 | data_type UVC control data type | ||
| 153 | struct uvc_menu_info | ||
| 154 | *menu_info Array of menu entries (for menu controls only) | ||
| 155 | __u32 menu_count Number of menu entries (for menu controls only) | ||
| 156 | |||
| 157 | * struct uvc_menu_info | ||
| 158 | |||
| 159 | __u32 value Menu entry value used by the device | ||
| 160 | __u8 name[32] Menu entry name | ||
| 161 | |||
| 162 | |||
| 163 | * enum uvc_control_data_type | ||
| 164 | |||
| 165 | UVC_CTRL_DATA_TYPE_RAW Raw control (byte array) | ||
| 166 | UVC_CTRL_DATA_TYPE_SIGNED Signed integer | ||
| 167 | UVC_CTRL_DATA_TYPE_UNSIGNED Unsigned integer | ||
| 168 | UVC_CTRL_DATA_TYPE_BOOLEAN Boolean | ||
| 169 | UVC_CTRL_DATA_TYPE_ENUM Enumeration | ||
| 170 | UVC_CTRL_DATA_TYPE_BITMASK Bitmask | ||
| 171 | |||
| 172 | |||
| 173 | ---- UVCIOC_CTRL_QUERY - Query a UVC XU control ---- | ||
| 174 | |||
| 175 | Argument: struct uvc_xu_control_query | ||
| 176 | |||
| 177 | Description: | ||
| 178 | This ioctl queries a UVC XU control identified by its extension unit ID | ||
| 179 | and control selector. | ||
| 180 | |||
| 181 | There are a number of different queries available that closely | ||
| 182 | correspond to the low-level control requests described in the UVC | ||
| 183 | specification. These requests are: | ||
| 184 | |||
| 185 | UVC_GET_CUR | ||
| 186 | Obtain the current value of the control. | ||
| 187 | UVC_GET_MIN | ||
| 188 | Obtain the minimum value of the control. | ||
| 189 | UVC_GET_MAX | ||
| 190 | Obtain the maximum value of the control. | ||
| 191 | UVC_GET_DEF | ||
| 192 | Obtain the default value of the control. | ||
| 193 | UVC_GET_RES | ||
| 194 | Query the resolution of the control, i.e. the step size of the | ||
| 195 | allowed control values. | ||
| 196 | UVC_GET_LEN | ||
| 197 | Query the size of the control in bytes. | ||
| 198 | UVC_GET_INFO | ||
| 199 | Query the control information bitmap, which indicates whether | ||
| 200 | get/set requests are supported. | ||
| 201 | UVC_SET_CUR | ||
| 202 | Update the value of the control. | ||
| 203 | |||
| 204 | Applications must set the 'size' field to the correct length for the | ||
| 205 | control. Exceptions are the UVC_GET_LEN and UVC_GET_INFO queries, for | ||
| 206 | which the size must be set to 2 and 1, respectively. The 'data' field | ||
| 207 | must point to a valid writable buffer big enough to hold the indicated | ||
| 208 | number of data bytes. | ||
| 209 | |||
| 210 | Data is copied directly from the device without any driver-side | ||
| 211 | processing. Applications are responsible for data buffer formatting, | ||
| 212 | including little-endian/big-endian conversion. This is particularly | ||
| 213 | important for the result of the UVC_GET_LEN requests, which is always | ||
| 214 | returned as a little-endian 16-bit integer by the device. | ||
| 215 | |||
| 216 | Return value: | ||
| 217 | On success 0 is returned. On error -1 is returned and errno is set | ||
| 218 | appropriately. | ||
| 219 | |||
| 220 | ENOENT | ||
| 221 | The device does not support the given control or the specified | ||
| 222 | extension unit could not be found. | ||
| 223 | ENOBUFS | ||
| 224 | The specified buffer size is incorrect (too big or too small). | ||
| 225 | EINVAL | ||
| 226 | An invalid request code was passed. | ||
| 227 | EBADRQC | ||
| 228 | The given request is not supported by the given control. | ||
| 229 | EFAULT | ||
| 230 | The data pointer references an inaccessible memory area. | ||
| 231 | |||
| 232 | Data types: | ||
| 233 | * struct uvc_xu_control_query | ||
| 234 | |||
| 235 | __u8 unit Extension unit ID | ||
| 236 | __u8 selector Control selector | ||
| 237 | __u8 query Request code to send to the device | ||
| 238 | __u16 size Control data size (in bytes) | ||
| 239 | __u8 *data Control value | ||
