<refentry id="vidioc-g-tuner">
  <refmeta>
    <refentrytitle>ioctl VIDIOC_G_TUNER, VIDIOC_S_TUNER</refentrytitle>
    &manvol;
  </refmeta>

  <refnamediv>
    <refname>VIDIOC_G_TUNER</refname>
    <refname>VIDIOC_S_TUNER</refname>
    <refpurpose>Get or set tuner attributes</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>struct v4l2_tuner
*<parameter>argp</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
    <funcsynopsis>
      <funcprototype>
	<funcdef>int <function>ioctl</function></funcdef>
	<paramdef>int <parameter>fd</parameter></paramdef>
	<paramdef>int <parameter>request</parameter></paramdef>
	<paramdef>const struct v4l2_tuner
*<parameter>argp</parameter></paramdef>
      </funcprototype>
    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Arguments</title>

    <variablelist>
      <varlistentry>
	<term><parameter>fd</parameter></term>
	<listitem>
	  <para>&fd;</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>request</parameter></term>
	<listitem>
	  <para>VIDIOC_G_TUNER, VIDIOC_S_TUNER</para>
	</listitem>
      </varlistentry>
      <varlistentry>
	<term><parameter>argp</parameter></term>
	<listitem>
	  <para></para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>Description</title>

    <para>To query the attributes of a tuner applications initialize the
<structfield>index</structfield> field and zero out the
<structfield>reserved</structfield> array of a &v4l2-tuner; and call the
<constant>VIDIOC_G_TUNER</constant> ioctl with a pointer to this
structure. Drivers fill the rest of the structure or return an
&EINVAL; when the index is out of bounds. To enumerate all tuners
applications shall begin at index zero, incrementing by one until the
driver returns <errorcode>EINVAL</errorcode>.</para>

    <para>Tuners have two writable properties, the audio mode and
the radio frequency. To change the audio mode, applications initialize
the <structfield>index</structfield>,
<structfield>audmode</structfield> and
<structfield>reserved</structfield> fields and call the
<constant>VIDIOC_S_TUNER</constant> ioctl. This will
<emphasis>not</emphasis> change the current tuner, which is determined
by the current video input. Drivers may choose a different audio mode
if the requested mode is invalid or unsupported. Since this is a
<!-- FIXME -->write-only ioctl, it does not return the actually
selected audio mode.</para>

    <para>To change the radio frequency the &VIDIOC-S-FREQUENCY; ioctl
is available.</para>

    <table pgwide="1" frame="none" id="v4l2-tuner">
      <title>struct <structname>v4l2_tuner</structname></title>
      <tgroup cols="3">
	<colspec colname="c1" colwidth="1*" />
	<colspec colname="c2" colwidth="1*" />
	<colspec colname="c3" colwidth="1*" />
	<colspec colname="c4" colwidth="1*" />
	<spanspec spanname="hspan" namest="c3" nameend="c4" />
	<tbody valign="top">
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>index</structfield></entry>
	    <entry spanname="hspan">Identifies the tuner, set by the
application.</entry>
	  </row>
	  <row>
	    <entry>__u8</entry>
	    <entry><structfield>name</structfield>[32]</entry>
	    <entry spanname="hspan"><para>Name of the tuner, a
NUL-terminated ASCII string. This information is intended for the
user.<!-- FIXME Video inputs already have a name, the purpose of this
field is not quite clear.--></para></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>type</structfield></entry>
	    <entry spanname="hspan">Type of the tuner, see <xref
		linkend="v4l2-tuner-type" />.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>capability</structfield></entry>
	    <entry spanname="hspan"><para>Tuner capability flags, see
<xref linkend="tuner-capability" />. Audio flags indicate the ability
to decode audio subprograms. They will <emphasis>not</emphasis>
change, for example with the current video standard.</para><para>When
the structure refers to a radio tuner the
<constant>V4L2_TUNER_CAP_LANG1</constant>,
<constant>V4L2_TUNER_CAP_LANG2</constant> and
<constant>V4L2_TUNER_CAP_NORM</constant> flags can't be used.</para>
<para>If multiple frequency bands are supported, then
<structfield>capability</structfield> is the union of all
<structfield>capability</structfield> fields of each &v4l2-frequency-band;.
</para></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>rangelow</structfield></entry>
	    <entry spanname="hspan">The lowest tunable frequency in
units of 62.5 kHz, or if the <structfield>capability</structfield>
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
Hz, or if the <structfield>capability</structfield> flag
<constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.
If multiple frequency bands are supported, then
<structfield>rangelow</structfield> is the lowest frequency
of all the frequency bands.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>rangehigh</structfield></entry>
	    <entry spanname="hspan">The highest tunable frequency in
units of 62.5 kHz, or if the <structfield>capability</structfield>
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
Hz, or if the <structfield>capability</structfield> flag
<constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.
If multiple frequency bands are supported, then
<structfield>rangehigh</structfield> is the highest frequency
of all the frequency bands.</entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>rxsubchans</structfield></entry>
	    <entry spanname="hspan"><para>Some tuners or audio
decoders can determine the received audio subprograms by analyzing
audio carriers, pilot tones or other indicators. To pass this
information drivers set flags defined in <xref
		  linkend="tuner-rxsubchans" /> in this field. For
example:</para></entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry></entry>
	    <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry>
	    <entry>receiving mono audio</entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry></entry>
	    <entry><constant>STEREO | SAP</constant></entry>
	    <entry>receiving stereo audio and a secondary audio
program</entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry></entry>
	    <entry><constant>MONO | STEREO</constant></entry>
	    <entry>receiving mono or stereo audio, the hardware cannot
distinguish</entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry></entry>
	    <entry><constant>LANG1 | LANG2</constant></entry>
	    <entry>receiving bilingual audio</entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry></entry>
	    <entry><constant>MONO | STEREO | LANG1 | LANG2</constant></entry>
	    <entry>receiving mono, stereo or bilingual
audio</entry>
	  </row>
	  <row>
	    <entry></entry>
	    <entry></entry>
	    <entry spanname="hspan"><para>When the
<constant>V4L2_TUNER_CAP_STEREO</constant>,
<constant>_LANG1</constant>, <constant>_LANG2</constant> or
<constant>_SAP</constant> flag is cleared in the
<structfield>capability</structfield> field, the corresponding
<constant>V4L2_TUNER_SUB_</constant> flag must not be set
here.</para><para>This field is valid only if this is the tuner of the
current video input, or when the structure refers to a radio
tuner.</para></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>audmode</structfield></entry>
	    <entry spanname="hspan"><para>The selected audio mode, see
<xref linkend="tuner-audmode" /> for valid values. The audio mode does
not affect audio subprogram detection, and like a <link
linkend="control">control</link> it does not automatically change
unless the requested mode is invalid or unsupported. See <xref
		  linkend="tuner-matrix" /> for possible results when
the selected and received audio programs do not
match.</para><para>Currently this is the only field of struct
<structname>v4l2_tuner</structname> applications can
change.</para></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>signal</structfield></entry>
	    <entry spanname="hspan">The signal strength if known, ranging
from 0 to 65535. Higher values indicate a better signal.</entry>
	  </row>
	  <row>
	    <entry>__s32</entry>
	    <entry><structfield>afc</structfield></entry>
	    <entry spanname="hspan">Automatic frequency control: When the
<structfield>afc</structfield> value is negative, the frequency is too
low, when positive too high.<!-- FIXME need example what to do when it never
settles at zero, &ie; range is what? --></entry>
	  </row>
	  <row>
	    <entry>__u32</entry>
	    <entry><structfield>reserved</structfield>[4]</entry>
	    <entry spanname="hspan">Reserved for future extensions. Drivers and
applications must set the array to zero.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="v4l2-tuner-type">
      <title>enum v4l2_tuner_type</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_TUNER_RADIO</constant></entry>
	    <entry>1</entry>
	    <entry></entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_ANALOG_TV</constant></entry>
	    <entry>2</entry>
	    <entry></entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="tuner-capability">
      <title>Tuner and Modulator Capability Flags</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_TUNER_CAP_LOW</constant></entry>
	    <entry>0x0001</entry>
	    <entry>When set, tuning frequencies are expressed in units of
62.5 Hz instead of 62.5 kHz.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_CAP_NORM</constant></entry>
	    <entry>0x0002</entry>
	    <entry>This is a multi-standard tuner; the video standard
can or must be switched. (B/G PAL tuners for example are typically not
      considered multi-standard because the video standard is automatically
      determined from the frequency band.) The set of supported video
      standards is available from the &v4l2-input; pointing to this tuner,
      see the description of ioctl &VIDIOC-ENUMINPUT; for details. Only
      <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_CAP_HWSEEK_BOUNDED</constant></entry>
	    <entry>0x0004</entry>
	    <entry>If set, then this tuner supports the hardware seek functionality
	    where the seek stops when it reaches the end of the frequency range.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_CAP_HWSEEK_WRAP</constant></entry>
	    <entry>0x0008</entry>
	    <entry>If set, then this tuner supports the hardware seek functionality
	    where the seek wraps around when it reaches the end of the frequency range.</entry>
	  </row>
	  <row>
	<entry><constant>V4L2_TUNER_CAP_STEREO</constant></entry>
	<entry>0x0010</entry>
	<entry>Stereo audio reception is supported.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_CAP_LANG1</constant></entry>
	    <entry>0x0040</entry>
	    <entry>Reception of the primary language of a bilingual
audio program is supported. Bilingual audio is a feature of
two-channel systems, transmitting the primary language monaural on the
main audio carrier and a secondary language monaural on a second
carrier. Only
      <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_CAP_LANG2</constant></entry>
	    <entry>0x0020</entry>
	    <entry>Reception of the secondary language of a bilingual
audio program is supported. Only
      <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_CAP_SAP</constant></entry>
	    <entry>0x0020</entry>
	    <entry><para>Reception of a secondary audio program is
supported. This is a feature of the BTSC system which accompanies the
NTSC video standard. Two audio carriers are available for mono or
stereo transmissions of a primary language, and an independent third
carrier for a monaural secondary language. Only
      <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</para><para>Note the
<constant>V4L2_TUNER_CAP_LANG2</constant> and
<constant>V4L2_TUNER_CAP_SAP</constant> flags are synonyms.
<constant>V4L2_TUNER_CAP_SAP</constant> applies when the tuner
supports the <constant>V4L2_STD_NTSC_M</constant> video
standard.</para><!-- FIXME what if PAL+NTSC and Bi but not SAP? --></entry>
	  </row>
	  <row>
	<entry><constant>V4L2_TUNER_CAP_RDS</constant></entry>
	<entry>0x0080</entry>
	<entry>RDS capture is supported. This capability is only valid for
radio tuners.</entry>
	  </row>
	  <row>
	<entry><constant>V4L2_TUNER_CAP_RDS_BLOCK_IO</constant></entry>
	<entry>0x0100</entry>
	<entry>The RDS data is passed as unparsed RDS blocks.</entry>
	  </row>
	  <row>
	<entry><constant>V4L2_TUNER_CAP_RDS_CONTROLS</constant></entry>
	<entry>0x0200</entry>
	<entry>The RDS data is parsed by the hardware and set via controls.</entry>
	  </row>
	  <row>
	<entry><constant>V4L2_TUNER_CAP_FREQ_BANDS</constant></entry>
	<entry>0x0400</entry>
	<entry>The &VIDIOC-ENUM-FREQ-BANDS; ioctl can be used to enumerate
	the available frequency bands.</entry>
	  </row>
	  <row>
	<entry><constant>V4L2_TUNER_CAP_HWSEEK_PROG_LIM</constant></entry>
	<entry>0x0800</entry>
	<entry>The range to search when using the hardware seek functionality
	is programmable, see &VIDIOC-S-HW-FREQ-SEEK; for details.</entry>
	  </row>
	  <row>
	<entry><constant>V4L2_TUNER_CAP_1HZ</constant></entry>
	<entry>0x1000</entry>
	<entry>When set, tuning frequencies are expressed in units of 1 Hz instead of 62.5 kHz.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="tuner-rxsubchans">
      <title>Tuner Audio Reception Flags</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry>
	    <entry>0x0001</entry>
	    <entry>The tuner receives a mono audio signal.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_SUB_STEREO</constant></entry>
	    <entry>0x0002</entry>
	    <entry>The tuner receives a stereo audio signal.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_SUB_LANG1</constant></entry>
	    <entry>0x0008</entry>
	    <entry>The tuner receives the primary language of a
bilingual audio signal. Drivers must clear this flag when the current
video standard is <constant>V4L2_STD_NTSC_M</constant>.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_SUB_LANG2</constant></entry>
	    <entry>0x0004</entry>
	    <entry>The tuner receives the secondary language of a
bilingual audio signal (or a second audio program).</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_SUB_SAP</constant></entry>
	    <entry>0x0004</entry>
	    <entry>The tuner receives a Second Audio Program. Note the
<constant>V4L2_TUNER_SUB_LANG2</constant> and
<constant>V4L2_TUNER_SUB_SAP</constant> flags are synonyms. The
<constant>V4L2_TUNER_SUB_SAP</constant> flag applies when the
current video standard is <constant>V4L2_STD_NTSC_M</constant>.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_SUB_RDS</constant></entry>
	    <entry>0x0010</entry>
	    <entry>The tuner receives an RDS channel.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="none" id="tuner-audmode">
      <title>Tuner Audio Modes</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_TUNER_MODE_MONO</constant></entry>
	    <entry>0</entry>
	    <entry>Play mono audio. When the tuner receives a stereo
signal this a down-mix of the left and right channel. When the tuner
receives a bilingual or SAP signal this mode selects the primary
language.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_MODE_STEREO</constant></entry>
	    <entry>1</entry>
	    <entry><para>Play stereo audio. When the tuner receives
bilingual audio it may play different languages on the left and right
channel or the primary language is played on both channels.</para><para>Playing
different languages in this mode is
deprecated. New drivers should do this only in
<constant>MODE_LANG1_LANG2</constant>.</para><para>When the tuner
receives no stereo signal or does not support stereo reception the
driver shall fall back to <constant>MODE_MONO</constant>.</para></entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_MODE_LANG1</constant></entry>
	    <entry>3</entry>
	    <entry>Play the primary language, mono or stereo. Only
<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this
mode.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_MODE_LANG2</constant></entry>
	    <entry>2</entry>
	    <entry>Play the secondary language, mono. When the tuner
receives no bilingual audio or SAP, or their reception is not
supported the driver shall fall back to mono or stereo mode. Only
<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this
mode.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_MODE_SAP</constant></entry>
	    <entry>2</entry>
	    <entry>Play the Second Audio Program. When the tuner
receives no bilingual audio or SAP, or their reception is not
supported the driver shall fall back to mono or stereo mode. Only
<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this mode.
Note the <constant>V4L2_TUNER_MODE_LANG2</constant> and
<constant>V4L2_TUNER_MODE_SAP</constant> are synonyms.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_TUNER_MODE_LANG1_LANG2</constant></entry>
	    <entry>4</entry>
	    <entry>Play the primary language on the left channel, the
secondary language on the right channel. When the tuner receives no
bilingual audio or SAP, it shall fall back to
<constant>MODE_LANG1</constant> or <constant>MODE_MONO</constant>.
Only <constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this
mode.</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>

    <table pgwide="1" frame="all" id="tuner-matrix">
      <title>Tuner Audio Matrix</title>
      <tgroup cols="6" align="center">
	<colspec align="left" />
	<colspec colname="c2" colwidth="1*" />
	<colspec colwidth="1*" />
	<colspec colwidth="1*" />
	<colspec colnum="6" colname="c6" colwidth="1*" />
	<spanspec namest="c2" nameend="c6" spanname="hspan" align="center" />
	<thead>
	  <row>
	    <entry></entry>
	    <entry spanname="hspan">Selected
<constant>V4L2_TUNER_MODE_</constant></entry>
	  </row>
	  <row>
	    <entry>Received <constant>V4L2_TUNER_SUB_</constant></entry>
	    <entry><constant>MONO</constant></entry>
	    <entry><constant>STEREO</constant></entry>
	    <entry><constant>LANG1</constant></entry>
	    <entry><constant>LANG2 = SAP</constant></entry>
	    <entry><constant>LANG1_LANG2</constant><footnote><para>This
mode has been added in Linux 2.6.17 and may not be supported by older
drivers.</para></footnote></entry>
	  </row>
	</thead>
	<tbody valign="top">
	  <row>
	    <entry><constant>MONO</constant></entry>
	    <entry>Mono</entry>
	    <entry>Mono/Mono</entry>
	    <entry>Mono</entry>
	    <entry>Mono</entry>
	    <entry>Mono/Mono</entry>
	  </row>
	  <row>
	    <entry><constant>MONO | SAP</constant></entry>
	    <entry>Mono</entry>
	    <entry>Mono/Mono</entry>
	    <entry>Mono</entry>
	    <entry>SAP</entry>
	    <entry>Mono/SAP (preferred) or Mono/Mono</entry>
	  </row>
	  <row>
	    <entry><constant>STEREO</constant></entry>
	    <entry>L+R</entry>
	    <entry>L/R</entry>
	    <entry>Stereo L/R (preferred) or Mono L+R</entry>
	    <entry>Stereo L/R (preferred) or Mono L+R</entry>
	    <entry>L/R (preferred) or L+R/L+R</entry>
	  </row>
	  <row>
	    <entry><constant>STEREO | SAP</constant></entry>
	    <entry>L+R</entry>
	    <entry>L/R</entry>
	    <entry>Stereo L/R (preferred) or Mono L+R</entry>
	    <entry>SAP</entry>
	    <entry>L+R/SAP (preferred) or L/R or L+R/L+R</entry>
	  </row>
	  <row>
	    <entry><constant>LANG1 | LANG2</constant></entry>
	    <entry>Language&nbsp;1</entry>
	    <entry>Lang1/Lang2 (deprecated<footnote><para>Playback of
both languages in <constant>MODE_STEREO</constant> is deprecated. In
the future drivers should produce only the primary language in this
mode. Applications should request
<constant>MODE_LANG1_LANG2</constant> to record both languages or a
stereo signal.</para></footnote>) or
Lang1/Lang1</entry>
	    <entry>Language&nbsp;1</entry>
	    <entry>Language&nbsp;2</entry>
	    <entry>Lang1/Lang2 (preferred) or Lang1/Lang1</entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </refsect1>

  <refsect1>
    &return-value;

    <variablelist>
      <varlistentry>
	<term><errorcode>EINVAL</errorcode></term>
	<listitem>
	  <para>The &v4l2-tuner; <structfield>index</structfield> is
out of bounds.</para>
	</listitem>
      </varlistentry>
    </variablelist>
  </refsect1>
</refentry>
