ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY
&manvol;

# VIDIOC_G_FREQUENCY

# VIDIOC_S_FREQUENCY

Get or set tuner or modulator radio frequency

    	int ioctl
    	int fd
    	int request
    	struct v4l2_frequency
    *argp

    	int ioctl
    	int fd
    	int request
    	const struct v4l2_frequency
    *argp

## Arguments

`fd`

  &fd;

`request`

  VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY

`argp`

## Description

To get the current tuner or modulator radio frequency applications set the tuner field of a &v4l2-frequency; to the respective tuner or modulator number (only input devices have tuners, only output devices have modulators), zero out the reserved array and call the `VIDIOC_G_FREQUENCY` ioctl with a pointer to this structure. The driver stores the current frequency in the frequency field.

To change the current tuner or modulator radio frequency applications initialize the tuner, type and frequency fields, and the reserved array of a &v4l2-frequency; and call the `VIDIOC_S_FREQUENCY` ioctl with a pointer to this structure. When the requested frequency is not possible the driver assumes the closest possible value. However `VIDIOC_S_FREQUENCY` is a write-only ioctl, it does not return the actual new frequency.

### struct v4l2_frequency

&cs-str;
__u32 | tuner | The tuner or modulator index number. This is the same value as in the &v4l2-input; tuner field and the &v4l2-tuner; index field, or the &v4l2-output; modulator field and the &v4l2-modulator; index field.
&v4l2-tuner-type; | type | The tuner type. This is the same value as in the &v4l2-tuner; type field. The field is not applicable to modulators, &ie; ignored by drivers.
__u32 | frequency | Tuning frequency in units of 62.5 kHz, or if the &v4l2-tuner; or &v4l2-modulator; capabilities flag `V4L2_TUNER_CAP_LOW` is set, in units of 62.5 Hz.
__u32 | reserved[8] | Reserved for future extensions. Drivers and applications must set the array to zero.

&return-value;

EINVAL

  The tuner index is out of bounds or the value in the type field is wrong.