mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-26 06:05:03 +07:00
54f38fcae5
Since 2017, there is an space reserved for userspace API,
created by changeset 1d596dee38
("docs: Create a user-space API guide").
As the media subsystem was one of the first subsystems to use
Sphinx, until this patch, we were keeping things on a separate
place.
Let's just use the new location, as having all uAPI altogether
will likely make things easier for developers.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
148 lines
4.8 KiB
ReStructuredText
148 lines
4.8 KiB
ReStructuredText
.. Permission is granted to copy, distribute and/or modify this
|
|
.. document under the terms of the GNU Free Documentation License,
|
|
.. Version 1.1 or any later version published by the Free Software
|
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
|
.. and no Back-Cover Texts. A copy of the license is included at
|
|
.. Documentation/userspace-api/media/fdl-appendix.rst.
|
|
..
|
|
.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
|
|
|
|
.. _VIDIOC_S_HW_FREQ_SEEK:
|
|
|
|
***************************
|
|
ioctl VIDIOC_S_HW_FREQ_SEEK
|
|
***************************
|
|
|
|
Name
|
|
====
|
|
|
|
VIDIOC_S_HW_FREQ_SEEK - Perform a hardware frequency seek
|
|
|
|
|
|
Synopsis
|
|
========
|
|
|
|
.. c:function:: int ioctl( int fd, VIDIOC_S_HW_FREQ_SEEK, struct v4l2_hw_freq_seek *argp )
|
|
:name: VIDIOC_S_HW_FREQ_SEEK
|
|
|
|
|
|
Arguments
|
|
=========
|
|
|
|
``fd``
|
|
File descriptor returned by :ref:`open() <func-open>`.
|
|
|
|
``argp``
|
|
Pointer to struct :c:type:`v4l2_hw_freq_seek`.
|
|
|
|
|
|
Description
|
|
===========
|
|
|
|
Start a hardware frequency seek from the current frequency. To do this
|
|
applications initialize the ``tuner``, ``type``, ``seek_upward``,
|
|
``wrap_around``, ``spacing``, ``rangelow`` and ``rangehigh`` fields, and
|
|
zero out the ``reserved`` array of a struct
|
|
:c:type:`v4l2_hw_freq_seek` and call the
|
|
``VIDIOC_S_HW_FREQ_SEEK`` ioctl with a pointer to this structure.
|
|
|
|
The ``rangelow`` and ``rangehigh`` fields can be set to a non-zero value
|
|
to tell the driver to search a specific band. If the struct
|
|
:c:type:`v4l2_tuner` ``capability`` field has the
|
|
``V4L2_TUNER_CAP_HWSEEK_PROG_LIM`` flag set, these values must fall
|
|
within one of the bands returned by
|
|
:ref:`VIDIOC_ENUM_FREQ_BANDS`. If the
|
|
``V4L2_TUNER_CAP_HWSEEK_PROG_LIM`` flag is not set, then these values
|
|
must exactly match those of one of the bands returned by
|
|
:ref:`VIDIOC_ENUM_FREQ_BANDS`. If the
|
|
current frequency of the tuner does not fall within the selected band it
|
|
will be clamped to fit in the band before the seek is started.
|
|
|
|
If an error is returned, then the original frequency will be restored.
|
|
|
|
This ioctl is supported if the ``V4L2_CAP_HW_FREQ_SEEK`` capability is
|
|
set.
|
|
|
|
If this ioctl is called from a non-blocking filehandle, then ``EAGAIN``
|
|
error code is returned and no seek takes place.
|
|
|
|
|
|
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
|
|
|
.. c:type:: v4l2_hw_freq_seek
|
|
|
|
.. flat-table:: struct v4l2_hw_freq_seek
|
|
:header-rows: 0
|
|
:stub-columns: 0
|
|
:widths: 1 1 2
|
|
|
|
* - __u32
|
|
- ``tuner``
|
|
- The tuner index number. This is the same value as in the struct
|
|
:c:type:`v4l2_input` ``tuner`` field and the struct
|
|
:c:type:`v4l2_tuner` ``index`` field.
|
|
* - __u32
|
|
- ``type``
|
|
- The tuner type. This is the same value as in the struct
|
|
:c:type:`v4l2_tuner` ``type`` field. See
|
|
:c:type:`v4l2_tuner_type`
|
|
* - __u32
|
|
- ``seek_upward``
|
|
- If non-zero, seek upward from the current frequency, else seek
|
|
downward.
|
|
* - __u32
|
|
- ``wrap_around``
|
|
- If non-zero, wrap around when at the end of the frequency range,
|
|
else stop seeking. The struct :c:type:`v4l2_tuner`
|
|
``capability`` field will tell you what the hardware supports.
|
|
* - __u32
|
|
- ``spacing``
|
|
- If non-zero, defines the hardware seek resolution in Hz. The
|
|
driver selects the nearest value that is supported by the device.
|
|
If spacing is zero a reasonable default value is used.
|
|
* - __u32
|
|
- ``rangelow``
|
|
- If non-zero, the lowest tunable frequency of the band to search in
|
|
units of 62.5 kHz, or if the struct
|
|
:c:type:`v4l2_tuner` ``capability`` field has the
|
|
``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the
|
|
struct :c:type:`v4l2_tuner` ``capability`` field has
|
|
the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If
|
|
``rangelow`` is zero a reasonable default value is used.
|
|
* - __u32
|
|
- ``rangehigh``
|
|
- If non-zero, the highest tunable frequency of the band to search
|
|
in units of 62.5 kHz, or if the struct
|
|
:c:type:`v4l2_tuner` ``capability`` field has the
|
|
``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the
|
|
struct :c:type:`v4l2_tuner` ``capability`` field has
|
|
the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If
|
|
``rangehigh`` is zero a reasonable default value is used.
|
|
* - __u32
|
|
- ``reserved``\ [5]
|
|
- Reserved for future extensions. Applications must set the array to
|
|
zero.
|
|
|
|
|
|
Return Value
|
|
============
|
|
|
|
On success 0 is returned, on error -1 and the ``errno`` variable is set
|
|
appropriately. The generic error codes are described at the
|
|
:ref:`Generic Error Codes <gen-errors>` chapter.
|
|
|
|
EINVAL
|
|
The ``tuner`` index is out of bounds, the ``wrap_around`` value is
|
|
not supported or one of the values in the ``type``, ``rangelow`` or
|
|
``rangehigh`` fields is wrong.
|
|
|
|
EAGAIN
|
|
Attempted to call ``VIDIOC_S_HW_FREQ_SEEK`` with the filehandle in
|
|
non-blocking mode.
|
|
|
|
ENODATA
|
|
The hardware seek found no channels.
|
|
|
|
EBUSY
|
|
Another hardware seek is already in progress.
|