1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 3.. _VIDIOC_G_FREQUENCY: 4 5******************************************** 6ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY 7******************************************** 8 9Name 10==== 11 12VIDIOC_G_FREQUENCY - VIDIOC_S_FREQUENCY - Get or set tuner or modulator radio frequency 13 14 15Synopsis 16======== 17 18.. c:function:: int ioctl( int fd, VIDIOC_G_FREQUENCY, struct v4l2_frequency *argp ) 19 :name: VIDIOC_G_FREQUENCY 20 21.. c:function:: int ioctl( int fd, VIDIOC_S_FREQUENCY, const struct v4l2_frequency *argp ) 22 :name: VIDIOC_S_FREQUENCY 23 24 25Arguments 26========= 27 28``fd`` 29 File descriptor returned by :ref:`open() <func-open>`. 30 31``argp`` 32 Pointer to struct :c:type:`v4l2_frequency`. 33 34 35Description 36=========== 37 38To get the current tuner or modulator radio frequency applications set 39the ``tuner`` field of a struct 40:c:type:`v4l2_frequency` to the respective tuner or 41modulator number (only input devices have tuners, only output devices 42have modulators), zero out the ``reserved`` array and call the 43:ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this structure. The 44driver stores the current frequency in the ``frequency`` field. 45 46To change the current tuner or modulator radio frequency applications 47initialize the ``tuner``, ``type`` and ``frequency`` fields, and the 48``reserved`` array of a struct :c:type:`v4l2_frequency` 49and call the :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this 50structure. When the requested frequency is not possible the driver 51assumes the closest possible value. However :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` is a 52write-only ioctl, it does not return the actual new frequency. 53 54 55.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}| 56 57.. c:type:: v4l2_frequency 58 59.. flat-table:: struct v4l2_frequency 60 :header-rows: 0 61 :stub-columns: 0 62 :widths: 1 1 2 63 64 * - __u32 65 - ``tuner`` 66 - The tuner or modulator index number. This is the same value as in 67 the struct :c:type:`v4l2_input` ``tuner`` field and 68 the struct :c:type:`v4l2_tuner` ``index`` field, or 69 the struct :c:type:`v4l2_output` ``modulator`` field 70 and the struct :c:type:`v4l2_modulator` ``index`` 71 field. 72 * - __u32 73 - ``type`` 74 - The tuner type. This is the same value as in the struct 75 :c:type:`v4l2_tuner` ``type`` field. The type must be 76 set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and 77 to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to 78 ``V4L2_TUNER_RADIO`` for modulators (currently only radio 79 modulators are supported). See :c:type:`v4l2_tuner_type` 80 * - __u32 81 - ``frequency`` 82 - Tuning frequency in units of 62.5 kHz, or if the struct 83 :c:type:`v4l2_tuner` or struct 84 :c:type:`v4l2_modulator` ``capability`` flag 85 ``V4L2_TUNER_CAP_LOW`` is set, in units of 62.5 Hz. A 1 Hz unit is 86 used when the ``capability`` flag ``V4L2_TUNER_CAP_1HZ`` is set. 87 * - __u32 88 - ``reserved``\ [8] 89 - Reserved for future extensions. Drivers and applications must set 90 the array to zero. 91 92 93Return Value 94============ 95 96On success 0 is returned, on error -1 and the ``errno`` variable is set 97appropriately. The generic error codes are described at the 98:ref:`Generic Error Codes <gen-errors>` chapter. 99 100EINVAL 101 The ``tuner`` index is out of bounds or the value in the ``type`` 102 field is wrong. 103 104EBUSY 105 A hardware seek is in progress. 106