mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
5bd4bb7817
LaTeX doesn't handle too well auto-width on tables, and ReST markup requires an special tag to give it the needed hints. As we're using A4 paper, we have 17cm of useful spaces. As most media tables have widths, let's use it to generate the needed via the following perl script: my ($line_size, $table_header, $has_cols) = (17.5, 0, 0); my $out; my $header = ""; my @widths = (); sub round { $_[0] > 0 ? int($_[0] + .5) : -int(-$_[0] + .5) } while (<>) { if (!$table_header) { $has_cols = 1 if (m/..\s+tabularcolumns::/); if (m/..\s+flat-table::/) { $table_header = 1; $header = $_; next; } $out .= $_; next; } $header .= $_; @widths = split(/ /, $1) if (m/:widths:\s+(.*)/); if (m/^\n$/) { if (!$has_cols && @widths) { my ($tot, $t, $i) = (0, 0, 0); foreach my $v(@widths) { $tot += $v; }; $out .= ".. tabularcolumns:: |"; for ($i = 0; $i < scalar @widths - 1; $i++) { my $v = $widths[$i]; my $w = round(10 * ($v * $line_size) / $tot) / 10; $out .= sprintf "p{%.1fcm}|", $w; $t += $w; } my $w = $line_size - $t; $out .= sprintf "p{%.1fcm}|\n\n", $w; } $out .= $header; $table_header = 0; $has_cols = 0; $header = ""; @widths = (); } } print $out; Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
108 lines
2.8 KiB
ReStructuredText
108 lines
2.8 KiB
ReStructuredText
.. -*- coding: utf-8; mode: rst -*-
|
|
|
|
.. _VIDIOC_G_CTRL:
|
|
|
|
**********************************
|
|
ioctl VIDIOC_G_CTRL, VIDIOC_S_CTRL
|
|
**********************************
|
|
|
|
Name
|
|
====
|
|
|
|
VIDIOC_G_CTRL - VIDIOC_S_CTRL - Get or set the value of a control
|
|
|
|
|
|
Synopsis
|
|
========
|
|
|
|
.. cpp:function:: int ioctl( int fd, int request, struct v4l2_control *argp )
|
|
|
|
|
|
Arguments
|
|
=========
|
|
|
|
``fd``
|
|
File descriptor returned by :ref:`open() <func-open>`.
|
|
|
|
``request``
|
|
VIDIOC_G_CTRL, VIDIOC_S_CTRL
|
|
|
|
``argp``
|
|
|
|
|
|
Description
|
|
===========
|
|
|
|
To get the current value of a control applications initialize the ``id``
|
|
field of a struct :ref:`struct v4l2_control <v4l2-control>` and call the
|
|
:ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` ioctl with a pointer to this structure. To change the
|
|
value of a control applications initialize the ``id`` and ``value``
|
|
fields of a struct :ref:`struct v4l2_control <v4l2-control>` and call the
|
|
:ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctl.
|
|
|
|
When the ``id`` is invalid drivers return an ``EINVAL`` error code. When the
|
|
``value`` is out of bounds drivers can choose to take the closest valid
|
|
value or return an ``ERANGE`` error code, whatever seems more appropriate.
|
|
However, :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` is a write-only ioctl, it does not return the
|
|
actual new value. If the ``value`` is inappropriate for the control
|
|
(e.g. if it refers to an unsupported menu index of a menu control), then
|
|
EINVAL error code is returned as well.
|
|
|
|
These ioctls work only with user controls. For other control classes the
|
|
:ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`,
|
|
:ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` or
|
|
:ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` must be used.
|
|
|
|
|
|
.. _v4l2-control:
|
|
|
|
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
|
|
|
.. flat-table:: struct v4l2_control
|
|
:header-rows: 0
|
|
:stub-columns: 0
|
|
:widths: 1 1 2
|
|
|
|
|
|
- .. row 1
|
|
|
|
- __u32
|
|
|
|
- ``id``
|
|
|
|
- Identifies the control, set by the application.
|
|
|
|
- .. row 2
|
|
|
|
- __s32
|
|
|
|
- ``value``
|
|
|
|
- New value or current value.
|
|
|
|
|
|
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 struct :ref:`v4l2_control <v4l2-control>` ``id`` is invalid
|
|
or the ``value`` is inappropriate for the given control (i.e. if a
|
|
menu item is selected that is not supported by the driver according
|
|
to :ref:`VIDIOC_QUERYMENU <VIDIOC_QUERYCTRL>`).
|
|
|
|
ERANGE
|
|
The struct :ref:`v4l2_control <v4l2-control>` ``value`` is out of
|
|
bounds.
|
|
|
|
EBUSY
|
|
The control is temporarily not changeable, possibly because another
|
|
applications took over control of the device function this control
|
|
belongs to.
|
|
|
|
EACCES
|
|
Attempt to set a read-only control or to get a write-only control.
|