blob: 8944f3bb5adb52ba65a85c188213aa423716c753 [file] [log] [blame]
Markus Heiser5377d912016-06-30 15:18:56 +02001.. -*- coding: utf-8; mode: rst -*-
2
Mauro Carvalho Chehabaf4a4d02016-07-01 13:42:29 -03003.. _VIDIOC_G_FREQUENCY:
Markus Heiser5377d912016-06-30 15:18:56 +02004
5********************************************
6ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY
7********************************************
8
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -03009Name
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030010====
Markus Heiser5377d912016-06-30 15:18:56 +020011
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030012VIDIOC_G_FREQUENCY - VIDIOC_S_FREQUENCY - Get or set tuner or modulator radio frequency
Markus Heiser5377d912016-06-30 15:18:56 +020013
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030014
15Synopsis
Markus Heiser5377d912016-06-30 15:18:56 +020016========
17
Mauro Carvalho Chehabb7e67f62016-07-02 09:49:16 -030018.. cpp:function:: int ioctl( int fd, int request, struct v4l2_frequency *argp )
Markus Heiser5377d912016-06-30 15:18:56 +020019
Mauro Carvalho Chehabb7e67f62016-07-02 09:49:16 -030020.. cpp:function:: int ioctl( int fd, int request, const struct v4l2_frequency *argp )
Markus Heiser5377d912016-06-30 15:18:56 +020021
Mauro Carvalho Chehab586027c2016-07-05 07:58:48 -030022
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030023Arguments
Markus Heiser5377d912016-06-30 15:18:56 +020024=========
25
26``fd``
27 File descriptor returned by :ref:`open() <func-open>`.
28
29``request``
30 VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY
31
32``argp``
33
34
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -030035Description
Markus Heiser5377d912016-06-30 15:18:56 +020036===========
37
38To get the current tuner or modulator radio frequency applications set
39the ``tuner`` field of a struct
40:ref:`v4l2_frequency <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
Mauro Carvalho Chehab4e03cb72016-07-03 10:02:29 -030043:ref:`VIDIOC_G_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this structure. The
Markus Heiser5377d912016-06-30 15:18:56 +020044driver 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 :ref:`v4l2_frequency <v4l2-frequency>`
Mauro Carvalho Chehab2212ff22016-07-01 14:33:56 -030049and call the :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` ioctl with a pointer to this
Markus Heiser5377d912016-06-30 15:18:56 +020050structure. When the requested frequency is not possible the driver
Mauro Carvalho Chehab2212ff22016-07-01 14:33:56 -030051assumes the closest possible value. However :ref:`VIDIOC_S_FREQUENCY <VIDIOC_G_FREQUENCY>` is a
Markus Heiser5377d912016-06-30 15:18:56 +020052write-only ioctl, it does not return the actual new frequency.
53
54
55.. _v4l2-frequency:
56
57.. flat-table:: struct v4l2_frequency
58 :header-rows: 0
59 :stub-columns: 0
60 :widths: 1 1 2
61
62
63 - .. row 1
64
65 - __u32
66
67 - ``tuner``
68
69 - The tuner or modulator index number. This is the same value as in
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030070 the struct :ref:`v4l2_input <v4l2-input>` ``tuner`` field and
71 the struct :ref:`v4l2_tuner <v4l2-tuner>` ``index`` field, or
72 the struct :ref:`v4l2_output <v4l2-output>` ``modulator`` field
73 and the struct :ref:`v4l2_modulator <v4l2-modulator>` ``index``
74 field.
Markus Heiser5377d912016-06-30 15:18:56 +020075
76 - .. row 2
77
78 - __u32
79
80 - ``type``
81
82 - The tuner type. This is the same value as in the struct
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030083 :ref:`v4l2_tuner <v4l2-tuner>` ``type`` field. The type must be
84 set to ``V4L2_TUNER_RADIO`` for ``/dev/radioX`` device nodes, and
85 to ``V4L2_TUNER_ANALOG_TV`` for all others. Set this field to
86 ``V4L2_TUNER_RADIO`` for modulators (currently only radio
87 modulators are supported). See :ref:`v4l2-tuner-type`
Markus Heiser5377d912016-06-30 15:18:56 +020088
89 - .. row 3
90
91 - __u32
92
93 - ``frequency``
94
95 - Tuning frequency in units of 62.5 kHz, or if the struct
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -030096 :ref:`v4l2_tuner <v4l2-tuner>` or struct
97 :ref:`v4l2_modulator <v4l2-modulator>` ``capability`` flag
98 ``V4L2_TUNER_CAP_LOW`` is set, in units of 62.5 Hz. A 1 Hz unit is
99 used when the ``capability`` flag ``V4L2_TUNER_CAP_1HZ`` is set.
Markus Heiser5377d912016-06-30 15:18:56 +0200100
101 - .. row 4
102
103 - __u32
104
Mauro Carvalho Chehabffbab692016-07-12 15:20:11 -0300105 - ``reserved``\ \[8\]
Markus Heiser5377d912016-06-30 15:18:56 +0200106
107 - Reserved for future extensions. Drivers and applications must set
Mauro Carvalho Chehab0579e6e2016-07-04 16:25:48 -0300108 the array to zero.
Markus Heiser5377d912016-06-30 15:18:56 +0200109
110
Mauro Carvalho Chehab15e7d612016-07-05 15:14:35 -0300111Return Value
Markus Heiser5377d912016-06-30 15:18:56 +0200112============
113
114On success 0 is returned, on error -1 and the ``errno`` variable is set
115appropriately. The generic error codes are described at the
116:ref:`Generic Error Codes <gen-errors>` chapter.
117
118EINVAL
119 The ``tuner`` index is out of bounds or the value in the ``type``
120 field is wrong.
121
122EBUSY
123 A hardware seek is in progress.