1059b1c5bSMauro Carvalho Chehab.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2407e84cdSMauro Carvalho Chehab.. c:namespace:: V4L
354f38fcaSMauro Carvalho Chehab
454f38fcaSMauro Carvalho Chehab.. _VIDIOC_ENUM_FREQ_BANDS:
554f38fcaSMauro Carvalho Chehab
654f38fcaSMauro Carvalho Chehab****************************
754f38fcaSMauro Carvalho Chehabioctl VIDIOC_ENUM_FREQ_BANDS
854f38fcaSMauro Carvalho Chehab****************************
954f38fcaSMauro Carvalho Chehab
1054f38fcaSMauro Carvalho ChehabName
1154f38fcaSMauro Carvalho Chehab====
1254f38fcaSMauro Carvalho Chehab
1354f38fcaSMauro Carvalho ChehabVIDIOC_ENUM_FREQ_BANDS - Enumerate supported frequency bands
1454f38fcaSMauro Carvalho Chehab
1554f38fcaSMauro Carvalho ChehabSynopsis
1654f38fcaSMauro Carvalho Chehab========
1754f38fcaSMauro Carvalho Chehab
18407e84cdSMauro Carvalho Chehab.. c:macro:: VIDIOC_ENUM_FREQ_BANDS
1954f38fcaSMauro Carvalho Chehab
20407e84cdSMauro Carvalho Chehab``int ioctl(int fd, VIDIOC_ENUM_FREQ_BANDS, struct v4l2_frequency_band *argp)``
2154f38fcaSMauro Carvalho Chehab
2254f38fcaSMauro Carvalho ChehabArguments
2354f38fcaSMauro Carvalho Chehab=========
2454f38fcaSMauro Carvalho Chehab
2554f38fcaSMauro Carvalho Chehab``fd``
26407e84cdSMauro Carvalho Chehab    File descriptor returned by :c:func:`open()`.
2754f38fcaSMauro Carvalho Chehab
2854f38fcaSMauro Carvalho Chehab``argp``
2954f38fcaSMauro Carvalho Chehab    Pointer to struct :c:type:`v4l2_frequency_band`.
3054f38fcaSMauro Carvalho Chehab
3154f38fcaSMauro Carvalho ChehabDescription
3254f38fcaSMauro Carvalho Chehab===========
3354f38fcaSMauro Carvalho Chehab
3454f38fcaSMauro Carvalho ChehabEnumerates the frequency bands that a tuner or modulator supports. To do
3554f38fcaSMauro Carvalho Chehabthis applications initialize the ``tuner``, ``type`` and ``index``
3654f38fcaSMauro Carvalho Chehabfields, and zero out the ``reserved`` array of a struct
3754f38fcaSMauro Carvalho Chehab:c:type:`v4l2_frequency_band` and call the
3854f38fcaSMauro Carvalho Chehab:ref:`VIDIOC_ENUM_FREQ_BANDS` ioctl with a pointer to this structure.
3954f38fcaSMauro Carvalho Chehab
4054f38fcaSMauro Carvalho ChehabThis ioctl is supported if the ``V4L2_TUNER_CAP_FREQ_BANDS`` capability
4154f38fcaSMauro Carvalho Chehabof the corresponding tuner/modulator is set.
4254f38fcaSMauro Carvalho Chehab
43*fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{2.9cm}|p{2.9cm}|p{5.8cm}|p{2.9cm}|p{2.4cm}|
4454f38fcaSMauro Carvalho Chehab
4554f38fcaSMauro Carvalho Chehab.. c:type:: v4l2_frequency_band
4654f38fcaSMauro Carvalho Chehab
4754f38fcaSMauro Carvalho Chehab.. flat-table:: struct v4l2_frequency_band
4854f38fcaSMauro Carvalho Chehab    :header-rows:  0
4954f38fcaSMauro Carvalho Chehab    :stub-columns: 0
5054f38fcaSMauro Carvalho Chehab    :widths:       1 1 2 1 1
5154f38fcaSMauro Carvalho Chehab
5254f38fcaSMauro Carvalho Chehab    * - __u32
5354f38fcaSMauro Carvalho Chehab      - ``tuner``
5454f38fcaSMauro Carvalho Chehab      - The tuner or modulator index number. This is the same value as in
5554f38fcaSMauro Carvalho Chehab	the struct :c:type:`v4l2_input` ``tuner`` field and
5654f38fcaSMauro Carvalho Chehab	the struct :c:type:`v4l2_tuner` ``index`` field, or
5754f38fcaSMauro Carvalho Chehab	the struct :c:type:`v4l2_output` ``modulator`` field
5854f38fcaSMauro Carvalho Chehab	and the struct :c:type:`v4l2_modulator` ``index``
5954f38fcaSMauro Carvalho Chehab	field.
6054f38fcaSMauro Carvalho Chehab    * - __u32
6154f38fcaSMauro Carvalho Chehab      - ``type``
6254f38fcaSMauro Carvalho Chehab      - The tuner type. This is the same value as in the struct
6354f38fcaSMauro Carvalho Chehab	:c:type:`v4l2_tuner` ``type`` field. The type must be
6454f38fcaSMauro Carvalho Chehab	set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and
6554f38fcaSMauro Carvalho Chehab	to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to
6654f38fcaSMauro Carvalho Chehab	``V4L2_TUNER_RADIO`` for modulators (currently only radio
6754f38fcaSMauro Carvalho Chehab	modulators are supported). See :c:type:`v4l2_tuner_type`
6854f38fcaSMauro Carvalho Chehab    * - __u32
6954f38fcaSMauro Carvalho Chehab      - ``index``
7054f38fcaSMauro Carvalho Chehab      - Identifies the frequency band, set by the application.
7154f38fcaSMauro Carvalho Chehab    * - __u32
7254f38fcaSMauro Carvalho Chehab      - ``capability``
7354f38fcaSMauro Carvalho Chehab      - :cspan:`2` The tuner/modulator capability flags for this
7454f38fcaSMauro Carvalho Chehab	frequency band, see :ref:`tuner-capability`. The
7554f38fcaSMauro Carvalho Chehab	``V4L2_TUNER_CAP_LOW`` or ``V4L2_TUNER_CAP_1HZ`` capability must
7654f38fcaSMauro Carvalho Chehab	be the same for all frequency bands of the selected
7754f38fcaSMauro Carvalho Chehab	tuner/modulator. So either all bands have that capability set, or
7854f38fcaSMauro Carvalho Chehab	none of them have that capability.
7954f38fcaSMauro Carvalho Chehab    * - __u32
8054f38fcaSMauro Carvalho Chehab      - ``rangelow``
8154f38fcaSMauro Carvalho Chehab      - :cspan:`2` The lowest tunable frequency in units of 62.5 kHz, or
8254f38fcaSMauro Carvalho Chehab	if the ``capability`` flag ``V4L2_TUNER_CAP_LOW`` is set, in units
8354f38fcaSMauro Carvalho Chehab	of 62.5 Hz, for this frequency band. A 1 Hz unit is used when the
8454f38fcaSMauro Carvalho Chehab	``capability`` flag ``V4L2_TUNER_CAP_1HZ`` is set.
8554f38fcaSMauro Carvalho Chehab    * - __u32
8654f38fcaSMauro Carvalho Chehab      - ``rangehigh``
8754f38fcaSMauro Carvalho Chehab      - :cspan:`2` The highest tunable frequency in units of 62.5 kHz,
8854f38fcaSMauro Carvalho Chehab	or if the ``capability`` flag ``V4L2_TUNER_CAP_LOW`` is set, in
8954f38fcaSMauro Carvalho Chehab	units of 62.5 Hz, for this frequency band. A 1 Hz unit is used
9054f38fcaSMauro Carvalho Chehab	when the ``capability`` flag ``V4L2_TUNER_CAP_1HZ`` is set.
9154f38fcaSMauro Carvalho Chehab    * - __u32
9254f38fcaSMauro Carvalho Chehab      - ``modulation``
9354f38fcaSMauro Carvalho Chehab      - :cspan:`2` The supported modulation systems of this frequency
9454f38fcaSMauro Carvalho Chehab	band. See :ref:`band-modulation`.
9554f38fcaSMauro Carvalho Chehab
9654f38fcaSMauro Carvalho Chehab	.. note::
9754f38fcaSMauro Carvalho Chehab
9854f38fcaSMauro Carvalho Chehab	   Currently only one modulation system per frequency band
9954f38fcaSMauro Carvalho Chehab	   is supported. More work will need to be done if multiple
10054f38fcaSMauro Carvalho Chehab	   modulation systems are possible. Contact the linux-media
10154f38fcaSMauro Carvalho Chehab	   mailing list
10254f38fcaSMauro Carvalho Chehab	   (`https://linuxtv.org/lists.php <https://linuxtv.org/lists.php>`__)
10354f38fcaSMauro Carvalho Chehab	   if you need such functionality.
10454f38fcaSMauro Carvalho Chehab    * - __u32
10554f38fcaSMauro Carvalho Chehab      - ``reserved``\ [9]
10654f38fcaSMauro Carvalho Chehab      - Reserved for future extensions.
10754f38fcaSMauro Carvalho Chehab
10854f38fcaSMauro Carvalho Chehab	Applications and drivers must set the array to zero.
10954f38fcaSMauro Carvalho Chehab
11054f38fcaSMauro Carvalho Chehab
111*fea13a69SMauro Carvalho Chehab.. tabularcolumns:: |p{6.6cm}|p{2.2cm}|p{8.5cm}|
11254f38fcaSMauro Carvalho Chehab
11354f38fcaSMauro Carvalho Chehab.. _band-modulation:
11454f38fcaSMauro Carvalho Chehab
11554f38fcaSMauro Carvalho Chehab.. flat-table:: Band Modulation Systems
11654f38fcaSMauro Carvalho Chehab    :header-rows:  0
11754f38fcaSMauro Carvalho Chehab    :stub-columns: 0
11854f38fcaSMauro Carvalho Chehab    :widths:       3 1 4
11954f38fcaSMauro Carvalho Chehab
12054f38fcaSMauro Carvalho Chehab    * - ``V4L2_BAND_MODULATION_VSB``
12154f38fcaSMauro Carvalho Chehab      - 0x02
12254f38fcaSMauro Carvalho Chehab      - Vestigial Sideband modulation, used for analog TV.
12354f38fcaSMauro Carvalho Chehab    * - ``V4L2_BAND_MODULATION_FM``
12454f38fcaSMauro Carvalho Chehab      - 0x04
12554f38fcaSMauro Carvalho Chehab      - Frequency Modulation, commonly used for analog radio.
12654f38fcaSMauro Carvalho Chehab    * - ``V4L2_BAND_MODULATION_AM``
12754f38fcaSMauro Carvalho Chehab      - 0x08
12854f38fcaSMauro Carvalho Chehab      - Amplitude Modulation, commonly used for analog radio.
12954f38fcaSMauro Carvalho Chehab
13054f38fcaSMauro Carvalho ChehabReturn Value
13154f38fcaSMauro Carvalho Chehab============
13254f38fcaSMauro Carvalho Chehab
13354f38fcaSMauro Carvalho ChehabOn success 0 is returned, on error -1 and the ``errno`` variable is set
13454f38fcaSMauro Carvalho Chehabappropriately. The generic error codes are described at the
13554f38fcaSMauro Carvalho Chehab:ref:`Generic Error Codes <gen-errors>` chapter.
13654f38fcaSMauro Carvalho Chehab
13754f38fcaSMauro Carvalho ChehabEINVAL
13854f38fcaSMauro Carvalho Chehab    The ``tuner`` or ``index`` is out of bounds or the ``type`` field is
13954f38fcaSMauro Carvalho Chehab    wrong.
140