104 lines · plain
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later2.. c:namespace:: V4L3 4.. _VIDIOC_G_FREQUENCY:5 6********************************************7ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY8********************************************9 10Name11====12 13VIDIOC_G_FREQUENCY - VIDIOC_S_FREQUENCY - Get or set tuner or modulator radio frequency14 15Synopsis16========17 18.. c:macro:: VIDIOC_G_FREQUENCY19 20``int ioctl(int fd, VIDIOC_G_FREQUENCY, struct v4l2_frequency *argp)``21 22.. c:macro:: VIDIOC_S_FREQUENCY23 24``int ioctl(int fd, VIDIOC_S_FREQUENCY, const struct v4l2_frequency *argp)``25 26Arguments27=========28 29``fd``30 File descriptor returned by :c:func:`open()`.31 32``argp``33 Pointer to struct :c:type:`v4l2_frequency`.34 35Description36===========37 38To get the current tuner or modulator radio frequency applications set39the ``tuner`` field of a struct40:c:type:`v4l2_frequency` to the respective tuner or41modulator number (only input devices have tuners, only output devices42have modulators), zero out the ``reserved`` array and call the43:ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this structure. The44driver stores the current frequency in the ``frequency`` field.45 46To change the current tuner or modulator radio frequency applications47initialize the ``tuner``, ``type`` and ``frequency`` fields, and the48``reserved`` array of a struct :c:type:`v4l2_frequency`49and call the :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this50structure. When the requested frequency is not possible the driver51assumes the closest possible value. However :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` is a52write-only ioctl, it does not return the actual new frequency.53 54.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.5cm}|55 56.. c:type:: v4l2_frequency57 58.. flat-table:: struct v4l2_frequency59 :header-rows: 060 :stub-columns: 061 :widths: 1 1 262 63 * - __u3264 - ``tuner``65 - The tuner or modulator index number. This is the same value as in66 the struct :c:type:`v4l2_input` ``tuner`` field and67 the struct :c:type:`v4l2_tuner` ``index`` field, or68 the struct :c:type:`v4l2_output` ``modulator`` field69 and the struct :c:type:`v4l2_modulator` ``index``70 field.71 * - __u3272 - ``type``73 - The tuner type. This is the same value as in the struct74 :c:type:`v4l2_tuner` ``type`` field. The type must be75 set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and76 to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to77 ``V4L2_TUNER_RADIO`` for modulators (currently only radio78 modulators are supported). See :c:type:`v4l2_tuner_type`79 * - __u3280 - ``frequency``81 - Tuning frequency in units of 62.5 kHz, or if the struct82 :c:type:`v4l2_tuner` or struct83 :c:type:`v4l2_modulator` ``capability`` flag84 ``V4L2_TUNER_CAP_LOW`` is set, in units of 62.5 Hz. A 1 Hz unit is85 used when the ``capability`` flag ``V4L2_TUNER_CAP_1HZ`` is set.86 * - __u3287 - ``reserved``\ [8]88 - Reserved for future extensions. Drivers and applications must set89 the array to zero.90 91Return Value92============93 94On success 0 is returned, on error -1 and the ``errno`` variable is set95appropriately. The generic error codes are described at the96:ref:`Generic Error Codes <gen-errors>` chapter.97 98EINVAL99 The ``tuner`` index is out of bounds or the value in the ``type``100 field is wrong.101 102EBUSY103 A hardware seek is in progress.104