Merge branch 'next' into for-linus
[sfrench/cifs-2.6.git] / Documentation / DocBook / media / dvb / frontend_legacy_api.xml
1 <section id="frontend_legacy_types">
2 <title>Frontend Legacy Data Types</title>
3
4 <section id="fe-type-t">
5 <title>Frontend type</title>
6
7 <para>For historical reasons, frontend types are named by the type of modulation
8     used in transmission. The fontend types are given by fe_type_t type, defined as:</para>
9
10 <table pgwide="1" frame="none" id="fe-type">
11 <title>Frontend types</title>
12 <tgroup cols="3">
13    &cs-def;
14    <thead>
15      <row>
16        <entry>fe_type</entry>
17        <entry>Description</entry>
18        <entry><link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> equivalent type</entry>
19      </row>
20   </thead>
21   <tbody valign="top">
22   <row>
23      <entry id="FE-QPSK"><constant>FE_QPSK</constant></entry>
24      <entry>For DVB-S standard</entry>
25      <entry><constant>SYS_DVBS</constant></entry>
26   </row>
27   <row>
28      <entry id="FE-QAM"><constant>FE_QAM</constant></entry>
29      <entry>For DVB-C annex A standard</entry>
30      <entry><constant>SYS_DVBC_ANNEX_A</constant></entry>
31   </row>
32   <row>
33      <entry id="FE-OFDM"><constant>FE_OFDM</constant></entry>
34      <entry>For DVB-T standard</entry>
35      <entry><constant>SYS_DVBT</constant></entry>
36   </row>
37   <row>
38      <entry id="FE-ATSC"><constant>FE_ATSC</constant></entry>
39      <entry>For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used in US.</entry>
40      <entry><constant>SYS_ATSC</constant> (terrestrial) or <constant>SYS_DVBC_ANNEX_B</constant> (cable)</entry>
41   </row>
42 </tbody></tgroup></table>
43
44 <para>Newer formats like DVB-S2, ISDB-T, ISDB-S and DVB-T2 are not described at the above, as they're
45 supported via the new <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY/FE_GET_SET_PROPERTY</link> ioctl's, using the <link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> parameter.
46 </para>
47
48 <para>In the old days, &dvb-frontend-info; used to contain
49     <constant>fe_type_t</constant> field to indicate the delivery systems,
50     filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this is
51     still filled to keep backward compatibility, the usage of this
52     field is deprecated, as it can report just one delivery system, but some
53     devices support multiple delivery systems. Please use
54     <link linkend="DTV-ENUM-DELSYS">DTV_ENUM_DELSYS</link> instead.
55 </para>
56 <para>On devices that support multiple delivery systems,
57     &dvb-frontend-info;::<constant>fe_type_t</constant> is filled with the
58     currently standard, as selected by the last call to
59     <link linkend="FE_GET_PROPERTY">FE_SET_PROPERTY</link>
60     using the &DTV-DELIVERY-SYSTEM; property.</para>
61 </section>
62
63 <section id="fe-bandwidth-t">
64 <title>Frontend bandwidth</title>
65
66 <table pgwide="1" frame="none" id="fe-bandwidth">
67     <title>enum fe_bandwidth</title>
68     <tgroup cols="2">
69         &cs-def;
70         <thead>
71         <row>
72             <entry>ID</entry>
73             <entry>Description</entry>
74         </row>
75         </thead>
76         <tbody valign="top">
77         <row>
78             <entry id="BANDWIDTH-AUTO"><constant>BANDWIDTH_AUTO</constant></entry>
79             <entry>Autodetect bandwidth (if supported)</entry>
80         </row><row>
81             <entry id="BANDWIDTH-1-712-MHZ"><constant>BANDWIDTH_1_712_MHZ</constant></entry>
82             <entry>1.712 MHz</entry>
83         </row><row>
84             <entry id="BANDWIDTH-5-MHZ"><constant>BANDWIDTH_5_MHZ</constant></entry>
85             <entry>5 MHz</entry>
86         </row><row>
87             <entry id="BANDWIDTH-6-MHZ"><constant>BANDWIDTH_6_MHZ</constant></entry>
88             <entry>6 MHz</entry>
89         </row><row>
90             <entry id="BANDWIDTH-7-MHZ"><constant>BANDWIDTH_7_MHZ</constant></entry>
91             <entry>7 MHz</entry>
92         </row><row>
93             <entry id="BANDWIDTH-8-MHZ"><constant>BANDWIDTH_8_MHZ</constant></entry>
94             <entry>8 MHz</entry>
95         </row><row>
96             <entry id="BANDWIDTH-10-MHZ"><constant>BANDWIDTH_10_MHZ</constant></entry>
97             <entry>10 MHz</entry>
98         </row>
99         </tbody>
100     </tgroup>
101 </table>
102
103 </section>
104
105 <section id="dvb-frontend-parameters">
106 <title>frontend parameters</title>
107 <para>The kind of parameters passed to the frontend device for tuning depend on
108 the kind of hardware you are using.</para>
109 <para>The struct <constant>dvb_frontend_parameters</constant> uses an
110 union with specific per-system parameters. However, as newer delivery systems
111 required more data, the structure size weren't enough to fit, and just
112 extending its size would break the existing applications. So, those parameters
113 were replaced by the usage of <link linkend="FE_GET_PROPERTY">
114 <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> ioctl's. The
115 new API is flexible enough to add new parameters to existing delivery systems,
116 and to add newer delivery systems.</para>
117 <para>So, newer applications should use <link linkend="FE_GET_PROPERTY">
118 <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> instead, in
119 order to be able to support the newer System Delivery like  DVB-S2, DVB-T2,
120 DVB-C2, ISDB, etc.</para>
121 <para>All kinds of parameters are combined as an union in the FrontendParameters structure:
122 <programlisting>
123 struct dvb_frontend_parameters {
124         uint32_t frequency;     /&#x22C6; (absolute) frequency in Hz for QAM/OFDM &#x22C6;/
125                                 /&#x22C6; intermediate frequency in kHz for QPSK &#x22C6;/
126         &fe-spectral-inversion-t; inversion;
127         union {
128                 struct dvb_qpsk_parameters qpsk;
129                 struct dvb_qam_parameters  qam;
130                 struct dvb_ofdm_parameters ofdm;
131                 struct dvb_vsb_parameters  vsb;
132         } u;
133 };
134 </programlisting></para>
135 <para>In the case of QPSK frontends the <constant>frequency</constant> field specifies the intermediate
136 frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of
137 the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and
138 OFDM frontends the <constant>frequency</constant> specifies the absolute frequency and is given in Hz.
139 </para>
140
141 <section id="dvb-qpsk-parameters">
142 <title>QPSK parameters</title>
143 <para>For satellite QPSK frontends you have to use the <constant>dvb_qpsk_parameters</constant> structure:</para>
144 <programlisting>
145  struct dvb_qpsk_parameters {
146          uint32_t        symbol_rate;  /&#x22C6; symbol rate in Symbols per second &#x22C6;/
147          &fe-code-rate-t;  fec_inner;    /&#x22C6; forward error correction (see above) &#x22C6;/
148  };
149 </programlisting>
150 </section>
151
152 <section id="dvb-qam-parameters">
153 <title>QAM parameters</title>
154 <para>for cable QAM frontend you use the <constant>dvb_qam_parameters</constant> structure:</para>
155 <programlisting>
156  struct dvb_qam_parameters {
157          uint32_t         symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
158          &fe-code-rate-t;   fec_inner;   /&#x22C6; forward error correction (see above) &#x22C6;/
159          &fe-modulation-t;  modulation;  /&#x22C6; modulation type (see above) &#x22C6;/
160  };
161 </programlisting>
162 </section>
163
164 <section id="dvb-vsb-parameters">
165 <title>VSB parameters</title>
166 <para>ATSC frontends are supported by the <constant>dvb_vsb_parameters</constant> structure:</para>
167 <programlisting>
168 struct dvb_vsb_parameters {
169         &fe-modulation-t; modulation;   /&#x22C6; modulation type (see above) &#x22C6;/
170 };
171 </programlisting>
172 </section>
173
174 <section id="dvb-ofdm-parameters">
175 <title>OFDM parameters</title>
176 <para>DVB-T frontends are supported by the <constant>dvb_ofdm_parameters</constant> structure:</para>
177 <programlisting>
178  struct dvb_ofdm_parameters {
179          &fe-bandwidth-t;      bandwidth;
180          &fe-code-rate-t;      code_rate_HP;  /&#x22C6; high priority stream code rate &#x22C6;/
181          &fe-code-rate-t;      code_rate_LP;  /&#x22C6; low priority stream code rate &#x22C6;/
182          &fe-modulation-t;     constellation; /&#x22C6; modulation type (see above) &#x22C6;/
183          &fe-transmit-mode-t;  transmission_mode;
184          &fe-guard-interval-t; guard_interval;
185          &fe-hierarchy-t;      hierarchy_information;
186  };
187 </programlisting>
188 </section>
189 </section>
190
191 <section id="dvb-frontend-event">
192 <title>frontend events</title>
193  <programlisting>
194  struct dvb_frontend_event {
195          fe_status_t status;
196          struct dvb_frontend_parameters parameters;
197  };
198 </programlisting>
199  </section>
200 </section>
201
202 <section id="frontend_legacy_fcalls">
203 <title>Frontend Legacy Function Calls</title>
204
205 <para>Those functions are defined at DVB version 3. The support is kept in
206     the kernel due to compatibility issues only. Their usage is strongly
207     not recommended</para>
208
209 <section id="FE_READ_BER">
210 <title>FE_READ_BER</title>
211 <para>DESCRIPTION
212 </para>
213 <informaltable><tgroup cols="1"><tbody><row><entry
214  align="char">
215 <para>This ioctl call returns the bit error rate for the signal currently
216  received/demodulated by the front-end. For this command, read-only access to
217  the device is sufficient.</para>
218 </entry>
219  </row></tbody></tgroup></informaltable>
220 <para>SYNOPSIS
221 </para>
222 <informaltable><tgroup cols="1"><tbody><row><entry
223  align="char">
224 <para>int ioctl(int fd, int request = <link linkend="FE_READ_BER">FE_READ_BER</link>,
225  uint32_t &#x22C6;ber);</para>
226 </entry>
227  </row></tbody></tgroup></informaltable>
228 <para>PARAMETERS
229 </para>
230 <informaltable><tgroup cols="2"><tbody><row><entry
231  align="char">
232 <para>int fd</para>
233 </entry><entry
234  align="char">
235 <para>File descriptor returned by a previous call to open().</para>
236 </entry>
237  </row><row><entry
238  align="char">
239 <para>int request</para>
240 </entry><entry
241  align="char">
242 <para>Equals <link linkend="FE_READ_BER">FE_READ_BER</link> for this command.</para>
243 </entry>
244  </row><row><entry
245  align="char">
246 <para>uint32_t *ber</para>
247 </entry><entry
248  align="char">
249 <para>The bit error rate is stored into *ber.</para>
250 </entry>
251  </row></tbody></tgroup></informaltable>
252
253 &return-value-dvb;
254 </section>
255
256 <section id="FE_READ_SNR">
257 <title>FE_READ_SNR</title>
258
259 <para>DESCRIPTION
260 </para>
261 <informaltable><tgroup cols="1"><tbody><row><entry
262  align="char">
263 <para>This ioctl call returns the signal-to-noise ratio for the signal currently received
264  by the front-end. For this command, read-only access to the device is sufficient.</para>
265 </entry>
266  </row></tbody></tgroup></informaltable>
267 <para>SYNOPSIS
268 </para>
269 <informaltable><tgroup cols="1"><tbody><row><entry
270  align="char">
271 <para>int ioctl(int fd, int request = <link linkend="FE_READ_SNR">FE_READ_SNR</link>, uint16_t
272  &#x22C6;snr);</para>
273 </entry>
274  </row></tbody></tgroup></informaltable>
275 <para>PARAMETERS
276 </para>
277 <informaltable><tgroup cols="2"><tbody><row><entry
278  align="char">
279 <para>int fd</para>
280 </entry><entry
281  align="char">
282 <para>File descriptor returned by a previous call to open().</para>
283 </entry>
284  </row><row><entry
285  align="char">
286 <para>int request</para>
287 </entry><entry
288  align="char">
289 <para>Equals <link linkend="FE_READ_SNR">FE_READ_SNR</link> for this command.</para>
290 </entry>
291  </row><row><entry
292  align="char">
293 <para>uint16_t *snr</para>
294 </entry><entry
295  align="char">
296 <para>The signal-to-noise ratio is stored into *snr.</para>
297 </entry>
298  </row></tbody></tgroup></informaltable>
299
300 &return-value-dvb;
301 </section>
302
303 <section id="FE_READ_SIGNAL_STRENGTH">
304 <title>FE_READ_SIGNAL_STRENGTH</title>
305 <para>DESCRIPTION
306 </para>
307 <informaltable><tgroup cols="1"><tbody><row><entry
308  align="char">
309 <para>This ioctl call returns the signal strength value for the signal currently received
310  by the front-end. For this command, read-only access to the device is sufficient.</para>
311 </entry>
312  </row></tbody></tgroup></informaltable>
313 <para>SYNOPSIS
314 </para>
315 <informaltable><tgroup cols="1"><tbody><row><entry
316  align="char">
317 <para>int ioctl( int fd, int request =
318  <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link>, uint16_t &#x22C6;strength);</para>
319 </entry>
320  </row></tbody></tgroup></informaltable>
321
322 <para>PARAMETERS
323 </para>
324 <informaltable><tgroup cols="2"><tbody><row><entry
325  align="char">
326 <para>int fd</para>
327 </entry><entry
328  align="char">
329 <para>File descriptor returned by a previous call to open().</para>
330 </entry>
331  </row><row><entry
332  align="char">
333 <para>int request</para>
334 </entry><entry
335  align="char">
336 <para>Equals <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link> for this
337  command.</para>
338 </entry>
339  </row><row><entry
340  align="char">
341 <para>uint16_t *strength</para>
342 </entry><entry
343  align="char">
344 <para>The signal strength value is stored into *strength.</para>
345 </entry>
346  </row></tbody></tgroup></informaltable>
347
348 &return-value-dvb;
349 </section>
350
351 <section id="FE_READ_UNCORRECTED_BLOCKS">
352 <title>FE_READ_UNCORRECTED_BLOCKS</title>
353 <para>DESCRIPTION
354 </para>
355 <informaltable><tgroup cols="1"><tbody><row><entry
356  align="char">
357 <para>This ioctl call returns the number of uncorrected blocks detected by the device
358  driver during its lifetime. For meaningful measurements, the increment in block
359  count during a specific time interval should be calculated. For this command,
360  read-only access to the device is sufficient.</para>
361 </entry>
362  </row><row><entry
363  align="char">
364 <para>Note that the counter will wrap to zero after its maximum count has been
365  reached.</para>
366 </entry>
367  </row></tbody></tgroup></informaltable>
368 <para>SYNOPSIS
369 </para>
370 <informaltable><tgroup cols="1"><tbody><row><entry
371  align="char">
372 <para>int ioctl( int fd, int request =
373  <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link>, uint32_t &#x22C6;ublocks);</para>
374 </entry>
375  </row></tbody></tgroup></informaltable>
376 <para>PARAMETERS
377 </para>
378 <informaltable><tgroup cols="2"><tbody><row><entry
379  align="char">
380 <para>int fd</para>
381 </entry><entry
382  align="char">
383 <para>File descriptor returned by a previous call to open().</para>
384 </entry>
385  </row><row><entry
386  align="char">
387 <para>int request</para>
388 </entry><entry
389  align="char">
390 <para>Equals <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link> for this
391  command.</para>
392 </entry>
393  </row><row><entry
394  align="char">
395 <para>uint32_t *ublocks</para>
396 </entry><entry
397  align="char">
398 <para>The total number of uncorrected blocks seen by the driver
399  so far.</para>
400 </entry>
401  </row></tbody></tgroup></informaltable>
402
403 &return-value-dvb;
404 </section>
405
406 <section id="FE_SET_FRONTEND">
407 <title>FE_SET_FRONTEND</title>
408 <para>DESCRIPTION
409 </para>
410 <informaltable><tgroup cols="1"><tbody><row><entry
411  align="char">
412 <para>This ioctl call starts a tuning operation using specified parameters. The result
413  of this call will be successful if the parameters were valid and the tuning could
414  be initiated. The result of the tuning operation in itself, however, will arrive
415  asynchronously as an event (see documentation for <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> and
416  FrontendEvent.) If a new <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> operation is initiated before
417  the previous one was completed, the previous operation will be aborted in favor
418  of the new one. This command requires read/write access to the device.</para>
419 </entry>
420  </row></tbody></tgroup></informaltable>
421
422 <para>SYNOPSIS
423 </para>
424 <informaltable><tgroup cols="1"><tbody><row><entry
425  align="char">
426 <para>int ioctl(int fd, int request = <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link>,
427  struct dvb_frontend_parameters &#x22C6;p);</para>
428 </entry>
429  </row></tbody></tgroup></informaltable>
430 <para>PARAMETERS
431 </para>
432 <informaltable><tgroup cols="2"><tbody><row><entry
433  align="char">
434 <para>int fd</para>
435 </entry><entry
436  align="char">
437 <para>File descriptor returned by a previous call to open().</para>
438 </entry>
439  </row><row><entry
440  align="char">
441 <para>int request</para>
442 </entry><entry
443  align="char">
444 <para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
445 </entry>
446  </row><row><entry
447  align="char">
448 <para>struct
449  dvb_frontend_parameters
450  *p</para>
451 </entry><entry
452  align="char">
453 <para>Points to parameters for tuning operation.</para>
454 </entry>
455  </row></tbody></tgroup></informaltable>
456
457 &return-value-dvb;
458 <informaltable><tgroup cols="2"><tbody><row><entry
459  align="char">
460 <para>EINVAL</para>
461 </entry><entry
462  align="char">
463 <para>Maximum supported symbol rate reached.</para>
464 </entry>
465 </row></tbody></tgroup></informaltable>
466 </section>
467
468 <section id="FE_GET_FRONTEND">
469 <title>FE_GET_FRONTEND</title>
470 <para>DESCRIPTION
471 </para>
472 <informaltable><tgroup cols="1"><tbody><row><entry
473  align="char">
474 <para>This ioctl call queries the currently effective frontend parameters. For this
475  command, read-only access to the device is sufficient.</para>
476 </entry>
477  </row></tbody></tgroup></informaltable>
478
479 <para>SYNOPSIS
480 </para>
481 <informaltable><tgroup cols="1"><tbody><row><entry
482  align="char">
483 <para>int ioctl(int fd, int request = <link linkend="FE_GET_FRONTEND">FE_GET_FRONTEND</link>,
484  struct dvb_frontend_parameters &#x22C6;p);</para>
485 </entry>
486  </row></tbody></tgroup></informaltable>
487
488 <para>PARAMETERS
489 </para>
490 <informaltable><tgroup cols="2"><tbody><row><entry
491  align="char">
492 <para>int fd</para>
493 </entry><entry
494  align="char">
495 <para>File descriptor returned by a previous call to open().</para>
496 </entry>
497  </row><row><entry
498  align="char">
499 <para>int request</para>
500 </entry><entry
501  align="char">
502 <para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
503 </entry>
504  </row><row><entry
505  align="char">
506 <para>struct
507  dvb_frontend_parameters
508  *p</para>
509 </entry><entry
510  align="char">
511 <para>Points to parameters for tuning operation.</para>
512 </entry>
513  </row></tbody></tgroup></informaltable>
514
515 &return-value-dvb;
516 <informaltable><tgroup cols="2"><tbody><row><entry
517  align="char">
518 <para>EINVAL</para>
519 </entry><entry
520  align="char">
521 <para>Maximum supported symbol rate reached.</para>
522 </entry>
523  </row></tbody></tgroup></informaltable>
524
525 </section>
526
527 <section id="FE_GET_EVENT">
528 <title>FE_GET_EVENT</title>
529 <para>DESCRIPTION
530 </para>
531 <informaltable><tgroup cols="1"><tbody><row><entry
532  align="char">
533 <para>This ioctl call returns a frontend event if available. If an event is not
534  available, the behavior depends on whether the device is in blocking or
535  non-blocking mode. In the latter case, the call fails immediately with errno
536  set to EWOULDBLOCK. In the former case, the call blocks until an event
537  becomes available.</para>
538 </entry>
539  </row><row><entry
540  align="char">
541 <para>The standard Linux poll() and/or select() system calls can be used with the
542  device file descriptor to watch for new events. For select(), the file descriptor
543  should be included in the exceptfds argument, and for poll(), POLLPRI should
544  be specified as the wake-up condition. Since the event queue allocated is
545  rather small (room for 8 events), the queue must be serviced regularly to avoid
546  overflow. If an overflow happens, the oldest event is discarded from the queue,
547  and an error (EOVERFLOW) occurs the next time the queue is read. After
548  reporting the error condition in this fashion, subsequent
549  <link linkend="FE_GET_EVENT">FE_GET_EVENT</link>
550  calls will return events from the queue as usual.</para>
551 </entry>
552  </row><row><entry
553  align="char">
554 <para>For the sake of implementation simplicity, this command requires read/write
555  access to the device.</para>
556 </entry>
557  </row></tbody></tgroup></informaltable>
558
559 <para>SYNOPSIS
560 </para>
561 <informaltable><tgroup cols="1"><tbody><row><entry
562  align="char">
563 <para>int ioctl(int fd, int request = QPSK_GET_EVENT,
564  struct dvb_frontend_event &#x22C6;ev);</para>
565 </entry>
566  </row></tbody></tgroup></informaltable>
567
568 <para>PARAMETERS
569 </para>
570 <informaltable><tgroup cols="2"><tbody><row><entry
571  align="char">
572 <para>int fd</para>
573 </entry><entry
574  align="char">
575 <para>File descriptor returned by a previous call to open().</para>
576 </entry>
577  </row><row><entry
578  align="char">
579 <para>int request</para>
580 </entry><entry
581  align="char">
582 <para>Equals <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> for this command.</para>
583 </entry>
584  </row><row><entry
585  align="char">
586 <para>struct
587  dvb_frontend_event
588  *ev</para>
589 </entry><entry
590  align="char">
591 <para>Points to the location where the event,</para>
592 </entry>
593  </row><row><entry
594  align="char">
595 </entry><entry
596  align="char">
597 <para>if any, is to be stored.</para>
598 </entry>
599  </row></tbody></tgroup></informaltable>
600
601 &return-value-dvb;
602 <informaltable><tgroup cols="2"><tbody><row><entry
603  align="char">
604 <para>EWOULDBLOCK</para>
605 </entry><entry
606  align="char">
607 <para>There is no event pending, and the device is in
608  non-blocking mode.</para>
609 </entry>
610  </row><row><entry
611  align="char">
612 <para>EOVERFLOW</para>
613 </entry><entry
614  align="char">
615 <para>Overflow in event queue - one or more events were lost.</para>
616 </entry>
617 </row></tbody></tgroup></informaltable>
618 </section>
619
620 <section id="FE_DISHNETWORK_SEND_LEGACY_CMD">
621         <title>FE_DISHNETWORK_SEND_LEGACY_CMD</title>
622 <para>DESCRIPTION</para>
623 <informaltable><tgroup cols="1"><tbody><row>
624 <entry align="char">
625 <para>WARNING: This is a very obscure legacy command, used only at stv0299 driver. Should not be used on newer drivers.</para>
626 <para>It provides a non-standard method for selecting Diseqc voltage on the frontend, for Dish Network legacy switches.</para>
627 <para>As support for this ioctl were added in 2004, this means that such dishes were already legacy in 2004.</para>
628 </entry>
629 </row></tbody></tgroup></informaltable>
630
631 <para>SYNOPSIS</para>
632 <informaltable><tgroup cols="1"><tbody><row>
633 <entry align="char">
634 <para>int ioctl(int fd, int request =
635         <link linkend="FE_DISHNETWORK_SEND_LEGACY_CMD">FE_DISHNETWORK_SEND_LEGACY_CMD</link>, unsigned long cmd);</para>
636 </entry>
637 </row></tbody></tgroup></informaltable>
638
639 <para>PARAMETERS</para>
640 <informaltable><tgroup cols="2"><tbody><row>
641 <entry align="char">
642         <para>unsigned long cmd</para>
643 </entry>
644 <entry align="char">
645 <para>
646 sends the specified raw cmd to the dish via DISEqC.
647 </para>
648 </entry>
649  </row></tbody></tgroup></informaltable>
650
651 &return-value-dvb;
652 </section>
653
654 </section>