mirror of https://gitee.com/openkylin/linux.git
Merge branch 'linus' into perf/urgent
Merge back Linus's latest branch so that we pick up the uprobes changes. ( I tested this branch locally and while it's one from the middle of the merge window it's a good one to base further work off. ) Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
063e047761
|
@ -0,0 +1,15 @@
|
|||
What: /sys/bus/i2c/devices/.../output_hvled[n]
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the controlling backlight device for high-voltage current
|
||||
sink HVLED[n] (n = 1, 2) (0, 1).
|
||||
|
||||
What: /sys/bus/i2c/devices/.../output_lvled[n]
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the controlling led device for low-voltage current sink
|
||||
LVLED[n] (n = 1..5) (0..3).
|
|
@ -0,0 +1,48 @@
|
|||
What: /sys/class/backlight/<backlight>/als_channel
|
||||
Date: May 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Get the ALS output channel used as input in
|
||||
ALS-current-control mode (0, 1), where
|
||||
|
||||
0 - out_current0 (backlight 0)
|
||||
1 - out_current1 (backlight 1)
|
||||
|
||||
What: /sys/class/backlight/<backlight>/als_en
|
||||
Date: May 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Enable ALS-current-control mode (0, 1).
|
||||
|
||||
What: /sys/class/backlight/<backlight>/id
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Get the id of this backlight (0, 1).
|
||||
|
||||
What: /sys/class/backlight/<backlight>/linear
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the brightness-mapping mode (0, 1), where
|
||||
|
||||
0 - exponential mode
|
||||
1 - linear mode
|
||||
|
||||
What: /sys/class/backlight/<backlight>/pwm
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the PWM-input control mask (5 bits), where
|
||||
|
||||
bit 5 - PWM-input enabled in Zone 4
|
||||
bit 4 - PWM-input enabled in Zone 3
|
||||
bit 3 - PWM-input enabled in Zone 2
|
||||
bit 2 - PWM-input enabled in Zone 1
|
||||
bit 1 - PWM-input enabled in Zone 0
|
||||
bit 0 - PWM-input enabled
|
|
@ -0,0 +1,65 @@
|
|||
What: /sys/class/leds/<led>/als_channel
|
||||
Date: May 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the ALS output channel to use as input in
|
||||
ALS-current-control mode (1, 2), where
|
||||
|
||||
1 - out_current1
|
||||
2 - out_current2
|
||||
|
||||
What: /sys/class/leds/<led>/als_en
|
||||
Date: May 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Enable ALS-current-control mode (0, 1).
|
||||
|
||||
What: /sys/class/leds/<led>/falltime
|
||||
What: /sys/class/leds/<led>/risetime
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the pattern generator fall and rise times (0..7), where
|
||||
|
||||
0 - 2048 us
|
||||
1 - 262 ms
|
||||
2 - 524 ms
|
||||
3 - 1.049 s
|
||||
4 - 2.097 s
|
||||
5 - 4.194 s
|
||||
6 - 8.389 s
|
||||
7 - 16.78 s
|
||||
|
||||
What: /sys/class/leds/<led>/id
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Get the id of this led (0..3).
|
||||
|
||||
What: /sys/class/leds/<led>/linear
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the brightness-mapping mode (0, 1), where
|
||||
|
||||
0 - exponential mode
|
||||
1 - linear mode
|
||||
|
||||
What: /sys/class/leds/<led>/pwm
|
||||
Date: April 2012
|
||||
KernelVersion: 3.5
|
||||
Contact: Johan Hovold <jhovold@gmail.com>
|
||||
Description:
|
||||
Set the PWM-input control mask (5 bits), where
|
||||
|
||||
bit 5 - PWM-input enabled in Zone 4
|
||||
bit 4 - PWM-input enabled in Zone 3
|
||||
bit 3 - PWM-input enabled in Zone 2
|
||||
bit 2 - PWM-input enabled in Zone 1
|
||||
bit 1 - PWM-input enabled in Zone 0
|
||||
bit 0 - PWM-input enabled
|
|
@ -23,9 +23,10 @@ Contact: linux-input@vger.kernel.org
|
|||
Description:
|
||||
Attribute group for control of the status LEDs and the OLEDs.
|
||||
This attribute group is only available for Intuos 4 M, L,
|
||||
and XL (with LEDs and OLEDs) and Cintiq 21UX2 and Cintiq 24HD
|
||||
(LEDs only). Therefore its presence implicitly signifies the
|
||||
presence of said LEDs and OLEDs on the tablet device.
|
||||
and XL (with LEDs and OLEDs), Intuos 5 (LEDs only), and Cintiq
|
||||
21UX2 and Cintiq 24HD (LEDs only). Therefore its presence
|
||||
implicitly signifies the presence of said LEDs and OLEDs on the
|
||||
tablet device.
|
||||
|
||||
What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status0_luminance
|
||||
Date: August 2011
|
||||
|
@ -48,10 +49,10 @@ What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led0
|
|||
Date: August 2011
|
||||
Contact: linux-input@vger.kernel.org
|
||||
Description:
|
||||
Writing to this file sets which one of the four (for Intuos 4)
|
||||
or of the right four (for Cintiq 21UX2 and Cintiq 24HD) status
|
||||
LEDs is active (0..3). The other three LEDs on the same side are
|
||||
always inactive.
|
||||
Writing to this file sets which one of the four (for Intuos 4
|
||||
and Intuos 5) or of the right four (for Cintiq 21UX2 and Cintiq
|
||||
24HD) status LEDs is active (0..3). The other three LEDs on the
|
||||
same side are always inactive.
|
||||
|
||||
What: /sys/bus/usb/devices/<busnum>-<devnum>:<cfg>.<intf>/wacom_led/status_led1_select
|
||||
Date: September 2011
|
||||
|
|
|
@ -70,6 +70,8 @@ IOCTLS = \
|
|||
VIDIOC_SUBDEV_ENUM_MBUS_CODE \
|
||||
VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
|
||||
VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
|
||||
VIDIOC_SUBDEV_G_SELECTION \
|
||||
VIDIOC_SUBDEV_S_SELECTION \
|
||||
|
||||
TYPES = \
|
||||
$(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \
|
||||
|
@ -193,7 +195,7 @@ DVB_DOCUMENTED = \
|
|||
#
|
||||
|
||||
install_media_images = \
|
||||
$(Q)cp $(OBJIMGFILES) $(MEDIA_OBJ_DIR)/media_api
|
||||
$(Q)cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api
|
||||
|
||||
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
|
||||
$(Q)base64 -d $< >$@
|
||||
|
|
|
@ -531,6 +531,139 @@ typedef enum fe_delivery_system {
|
|||
here are referring to what can be found in the TMCC-structure -
|
||||
independent of the mode.</para>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-FIC-VER">
|
||||
<title><constant>DTV_ATSCMH_FIC_VER</constant></title>
|
||||
<para>Version number of the FIC (Fast Information Channel) signaling data.</para>
|
||||
<para>FIC is used for relaying information to allow rapid service acquisition by the receiver.</para>
|
||||
<para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-PARADE-ID">
|
||||
<title><constant>DTV_ATSCMH_PARADE_ID</constant></title>
|
||||
<para>Parade identification number</para>
|
||||
<para>A parade is a collection of up to eight MH groups, conveying one or two ensembles.</para>
|
||||
<para>Possible values: 0, 1, 2, 3, ..., 126, 127</para>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-NOG">
|
||||
<title><constant>DTV_ATSCMH_NOG</constant></title>
|
||||
<para>Number of MH groups per MH subframe for a designated parade.</para>
|
||||
<para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-TNOG">
|
||||
<title><constant>DTV_ATSCMH_TNOG</constant></title>
|
||||
<para>Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe.</para>
|
||||
<para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-SGN">
|
||||
<title><constant>DTV_ATSCMH_SGN</constant></title>
|
||||
<para>Start group number.</para>
|
||||
<para>Possible values: 0, 1, 2, 3, ..., 14, 15</para>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-PRC">
|
||||
<title><constant>DTV_ATSCMH_PRC</constant></title>
|
||||
<para>Parade repetition cycle.</para>
|
||||
<para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-RS-FRAME-MODE">
|
||||
<title><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></title>
|
||||
<para>RS frame mode.</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_rs_frame_mode {
|
||||
ATSCMH_RSFRAME_PRI_ONLY = 0,
|
||||
ATSCMH_RSFRAME_PRI_SEC = 1,
|
||||
} atscmh_rs_frame_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-RS-FRAME-ENSEMBLE">
|
||||
<title><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></title>
|
||||
<para>RS frame ensemble.</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_rs_frame_ensemble {
|
||||
ATSCMH_RSFRAME_ENS_PRI = 0,
|
||||
ATSCMH_RSFRAME_ENS_SEC = 1,
|
||||
} atscmh_rs_frame_ensemble_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-RS-CODE-MODE-PRI">
|
||||
<title><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></title>
|
||||
<para>RS code mode (primary).</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_rs_code_mode {
|
||||
ATSCMH_RSCODE_211_187 = 0,
|
||||
ATSCMH_RSCODE_223_187 = 1,
|
||||
ATSCMH_RSCODE_235_187 = 2,
|
||||
} atscmh_rs_code_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-RS-CODE-MODE-SEC">
|
||||
<title><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></title>
|
||||
<para>RS code mode (secondary).</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_rs_code_mode {
|
||||
ATSCMH_RSCODE_211_187 = 0,
|
||||
ATSCMH_RSCODE_223_187 = 1,
|
||||
ATSCMH_RSCODE_235_187 = 2,
|
||||
} atscmh_rs_code_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-SCCC-BLOCK-MODE">
|
||||
<title><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></title>
|
||||
<para>Series Concatenated Convolutional Code Block Mode.</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_sccc_block_mode {
|
||||
ATSCMH_SCCC_BLK_SEP = 0,
|
||||
ATSCMH_SCCC_BLK_COMB = 1,
|
||||
} atscmh_sccc_block_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-SCCC-CODE-MODE-A">
|
||||
<title><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></title>
|
||||
<para>Series Concatenated Convolutional Code Rate.</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_sccc_code_mode {
|
||||
ATSCMH_SCCC_CODE_HLF = 0,
|
||||
ATSCMH_SCCC_CODE_QTR = 1,
|
||||
} atscmh_sccc_code_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-SCCC-CODE-MODE-B">
|
||||
<title><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></title>
|
||||
<para>Series Concatenated Convolutional Code Rate.</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_sccc_code_mode {
|
||||
ATSCMH_SCCC_CODE_HLF = 0,
|
||||
ATSCMH_SCCC_CODE_QTR = 1,
|
||||
} atscmh_sccc_code_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-SCCC-CODE-MODE-C">
|
||||
<title><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></title>
|
||||
<para>Series Concatenated Convolutional Code Rate.</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_sccc_code_mode {
|
||||
ATSCMH_SCCC_CODE_HLF = 0,
|
||||
ATSCMH_SCCC_CODE_QTR = 1,
|
||||
} atscmh_sccc_code_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="DTV-ATSCMH-SCCC-CODE-MODE-D">
|
||||
<title><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></title>
|
||||
<para>Series Concatenated Convolutional Code Rate.</para>
|
||||
<para>Possible values are:</para>
|
||||
<programlisting>
|
||||
typedef enum atscmh_sccc_code_mode {
|
||||
ATSCMH_SCCC_CODE_HLF = 0,
|
||||
ATSCMH_SCCC_CODE_QTR = 1,
|
||||
} atscmh_sccc_code_mode_t;
|
||||
</programlisting>
|
||||
</section>
|
||||
</section>
|
||||
<section id="DTV-API-VERSION">
|
||||
<title><constant>DTV_API_VERSION</constant></title>
|
||||
|
@ -774,6 +907,33 @@ typedef enum fe_hierarchy {
|
|||
<listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="atscmh-params">
|
||||
<title>ATSC-MH delivery system</title>
|
||||
<para>The following parameters are valid for ATSC-MH:</para>
|
||||
<itemizedlist mark='opencircle'>
|
||||
<listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-FIC-VER"><constant>DTV_ATSCMH_FIC_VER</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-PARADE-ID"><constant>DTV_ATSCMH_PARADE_ID</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-NOG"><constant>DTV_ATSCMH_NOG</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-TNOG"><constant>DTV_ATSCMH_TNOG</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SGN"><constant>DTV_ATSCMH_SGN</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-PRC"><constant>DTV_ATSCMH_PRC</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-MODE"><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-ENSEMBLE"><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-PRI"><constant>DTV_ATSCMH_CODE_MODE_PRI</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-SEC"><constant>DTV_ATSCMH_CODE_MODE_SEC</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SCCC-BLOCK-MODE"><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-A"><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-B"><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
<section id="frontend-property-cable-systems">
|
||||
<title>Properties used on cable delivery systems</title>
|
||||
|
|
|
@ -197,4 +197,33 @@ in the frequency range from 87,5 to 108,0 MHz</title>
|
|||
<title>NTSC-4: United States RBDS Standard</title>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry id="iso12232">
|
||||
<abbrev>ISO 12232:2006</abbrev>
|
||||
<authorgroup>
|
||||
<corpauthor>International Organization for Standardization
|
||||
(<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor>
|
||||
</authorgroup>
|
||||
<title>Photography — Digital still cameras — Determination
|
||||
of exposure index, ISO speed ratings, standard output sensitivity, and
|
||||
recommended exposure index</title>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry id="cea861">
|
||||
<abbrev>CEA-861-E</abbrev>
|
||||
<authorgroup>
|
||||
<corpauthor>Consumer Electronics Association
|
||||
(<ulink url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
|
||||
</authorgroup>
|
||||
<title>A DTV Profile for Uncompressed High Speed Digital Interfaces</title>
|
||||
</biblioentry>
|
||||
|
||||
<biblioentry id="vesadmt">
|
||||
<abbrev>VESA DMT</abbrev>
|
||||
<authorgroup>
|
||||
<corpauthor>Video Electronics Standards Association
|
||||
(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
|
||||
</authorgroup>
|
||||
<title>VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)</title>
|
||||
</biblioentry>
|
||||
|
||||
</bibliography>
|
||||
|
|
|
@ -724,41 +724,49 @@ if (-1 == ioctl (fd, &VIDIOC-S-STD;, &std_id)) {
|
|||
}
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
<section id="dv-timings">
|
||||
<title>Digital Video (DV) Timings</title>
|
||||
<para>
|
||||
The video standards discussed so far has been dealing with Analog TV and the
|
||||
The video standards discussed so far have been dealing with Analog TV and the
|
||||
corresponding video timings. Today there are many more different hardware interfaces
|
||||
such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
|
||||
video signals and there is a need to extend the API to select the video timings
|
||||
for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
|
||||
the limited bits available, a new set of IOCTLs is added to set/get video timings at
|
||||
the limited bits available, a new set of IOCTLs was added to set/get video timings at
|
||||
the input and output: </para><itemizedlist>
|
||||
<listitem>
|
||||
<para>DV Presets: Digital Video (DV) presets. These are IDs representing a
|
||||
<para>DV Timings: This will allow applications to define detailed
|
||||
video timings for the interface. This includes parameters such as width, height,
|
||||
polarities, frontporch, backporch etc. The <filename>linux/v4l2-dv-timings.h</filename>
|
||||
header can be used to get the timings of the formats in the <xref linkend="cea861" /> and
|
||||
<xref linkend="vesadmt" /> standards.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>DV Presets: Digital Video (DV) presets (<emphasis role="bold">deprecated</emphasis>).
|
||||
These are IDs representing a
|
||||
video timing at the input/output. Presets are pre-defined timings implemented
|
||||
by the hardware according to video standards. A __u32 data type is used to represent
|
||||
a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions
|
||||
to support as many different presets as needed.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Custom DV Timings: This will allow applications to define more detailed
|
||||
custom video timings for the interface. This includes parameters such as width, height,
|
||||
polarities, frontporch, backporch etc.
|
||||
</para>
|
||||
to support as many different presets as needed. This API is deprecated in favor of the DV Timings
|
||||
API.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>To enumerate and query the attributes of the DV timings supported by a device,
|
||||
applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls.
|
||||
To set DV timings for the device, applications use the
|
||||
&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the
|
||||
&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications
|
||||
use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para>
|
||||
<para>To enumerate and query the attributes of DV presets supported by a device,
|
||||
applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset,
|
||||
applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the
|
||||
&VIDIOC-S-DV-PRESET; ioctl.</para>
|
||||
<para>To set custom DV timings for the device, applications use the
|
||||
&VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the
|
||||
&VIDIOC-G-DV-TIMINGS; ioctl.</para>
|
||||
&VIDIOC-S-DV-PRESET; ioctl. To detect the preset as seen by the video receiver applications
|
||||
use the &VIDIOC-QUERY-DV-PRESET; ioctl.</para>
|
||||
<para>Applications can make use of the <xref linkend="input-capabilities" /> and
|
||||
<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the
|
||||
video timings for the device.</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
&sub-controls;
|
||||
|
|
|
@ -2407,6 +2407,54 @@ details.</para>
|
|||
<para>Added <link linkend="jpeg-controls">JPEG compression control
|
||||
class</link>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Extended the DV Timings API:
|
||||
&VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
|
||||
&VIDIOC-DV-TIMINGS-CAP;.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>V4L2 in Linux 3.5</title>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Added integer menus, the new type will be
|
||||
V4L2_CTRL_TYPE_INTEGER_MENU.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Added selection API for V4L2 subdev interface:
|
||||
&VIDIOC-SUBDEV-G-SELECTION; and
|
||||
&VIDIOC-SUBDEV-S-SELECTION;.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para> Added <constant>V4L2_COLORFX_ANTIQUE</constant>,
|
||||
<constant>V4L2_COLORFX_ART_FREEZE</constant>,
|
||||
<constant>V4L2_COLORFX_AQUA</constant>,
|
||||
<constant>V4L2_COLORFX_SILHOUETTE</constant>,
|
||||
<constant>V4L2_COLORFX_SOLARIZATION</constant>,
|
||||
<constant>V4L2_COLORFX_VIVID</constant> and
|
||||
<constant>V4L2_COLORFX_ARBITRARY_CBCR</constant> menu items
|
||||
to the <constant>V4L2_CID_COLORFX</constant> control.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para> Added <constant>V4L2_CID_COLORFX_CBCR</constant> control.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para> Added camera controls <constant>V4L2_CID_AUTO_EXPOSURE_BIAS</constant>,
|
||||
<constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>,
|
||||
<constant>V4L2_CID_IMAGE_STABILIZATION</constant>,
|
||||
<constant>V4L2_CID_ISO_SENSITIVITY</constant>,
|
||||
<constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>,
|
||||
<constant>V4L2_CID_EXPOSURE_METERING</constant>,
|
||||
<constant>V4L2_CID_SCENE_MODE</constant>,
|
||||
<constant>V4L2_CID_3A_LOCK</constant>,
|
||||
<constant>V4L2_CID_AUTO_FOCUS_START</constant>,
|
||||
<constant>V4L2_CID_AUTO_FOCUS_STOP</constant>,
|
||||
<constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> and
|
||||
<constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>.
|
||||
</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</section>
|
||||
|
||||
|
@ -2505,6 +2553,10 @@ and may change in the future.</para>
|
|||
</listitem>
|
||||
<listitem>
|
||||
<para>&VIDIOC-ENCODER-CMD; and &VIDIOC-TRY-ENCODER-CMD;
|
||||
ioctls.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&VIDIOC-DECODER-CMD; and &VIDIOC-TRY-DECODER-CMD;
|
||||
ioctls.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
|
@ -2514,6 +2566,10 @@ ioctls.</para>
|
|||
<listitem>
|
||||
<para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
|
||||
&VIDIOC-DV-TIMINGS-CAP; ioctls.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Flash API. <xref linkend="flash-controls" /></para>
|
||||
</listitem>
|
||||
|
@ -2523,6 +2579,14 @@ ioctls.</para>
|
|||
<listitem>
|
||||
<para>Selection API. <xref linkend="selection-api" /></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Sub-device selection API: &VIDIOC-SUBDEV-G-SELECTION;
|
||||
and &VIDIOC-SUBDEV-S-SELECTION; ioctls.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><link linkend="v4l2-auto-focus-area"><constant>
|
||||
V4L2_CID_AUTO_FOCUS_AREA</constant></link> control.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
|
@ -2538,6 +2602,17 @@ interfaces and should not be implemented in new drivers.</para>
|
|||
<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls,
|
||||
<xref linkend="extended-controls" />.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>&VIDIOC-G-DV-PRESET;, &VIDIOC-S-DV-PRESET;, &VIDIOC-ENUM-DV-PRESETS; and
|
||||
&VIDIOC-QUERY-DV-PRESET; ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><constant>VIDIOC_SUBDEV_G_CROP</constant> and
|
||||
<constant>VIDIOC_SUBDEV_S_CROP</constant> ioctls. Use
|
||||
<constant>VIDIOC_SUBDEV_G_SELECTION</constant> and
|
||||
<constant>VIDIOC_SUBDEV_S_SELECTION</constant>, <xref
|
||||
linkend="vidioc-subdev-g-selection" />.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -285,18 +285,92 @@ minimum value disables backlight compensation.</entry>
|
|||
<row id="v4l2-colorfx">
|
||||
<entry><constant>V4L2_CID_COLORFX</constant></entry>
|
||||
<entry>enum</entry>
|
||||
<entry>Selects a color effect. Possible values for
|
||||
<constant>enum v4l2_colorfx</constant> are:
|
||||
<constant>V4L2_COLORFX_NONE</constant> (0),
|
||||
<constant>V4L2_COLORFX_BW</constant> (1),
|
||||
<constant>V4L2_COLORFX_SEPIA</constant> (2),
|
||||
<constant>V4L2_COLORFX_NEGATIVE</constant> (3),
|
||||
<constant>V4L2_COLORFX_EMBOSS</constant> (4),
|
||||
<constant>V4L2_COLORFX_SKETCH</constant> (5),
|
||||
<constant>V4L2_COLORFX_SKY_BLUE</constant> (6),
|
||||
<constant>V4L2_COLORFX_GRASS_GREEN</constant> (7),
|
||||
<constant>V4L2_COLORFX_SKIN_WHITEN</constant> (8) and
|
||||
<constant>V4L2_COLORFX_VIVID</constant> (9).</entry>
|
||||
<entry>Selects a color effect. The following values are defined:
|
||||
</entry>
|
||||
</row><row>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_NONE</constant> </entry>
|
||||
<entry>Color effect is disabled.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_ANTIQUE</constant> </entry>
|
||||
<entry>An aging (old photo) effect.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_ART_FREEZE</constant> </entry>
|
||||
<entry>Frost color effect.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_AQUA</constant> </entry>
|
||||
<entry>Water color, cool tone.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_BW</constant> </entry>
|
||||
<entry>Black and white.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_EMBOSS</constant> </entry>
|
||||
<entry>Emboss, the highlights and shadows replace light/dark boundaries
|
||||
and low contrast areas are set to a gray background.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_GRASS_GREEN</constant> </entry>
|
||||
<entry>Grass green.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_NEGATIVE</constant> </entry>
|
||||
<entry>Negative.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_SEPIA</constant> </entry>
|
||||
<entry>Sepia tone.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_SKETCH</constant> </entry>
|
||||
<entry>Sketch.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_SKIN_WHITEN</constant> </entry>
|
||||
<entry>Skin whiten.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_SKY_BLUE</constant> </entry>
|
||||
<entry>Sky blue.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_SOLARIZATION</constant> </entry>
|
||||
<entry>Solarization, the image is partially reversed in tone,
|
||||
only color values above or below a certain threshold are inverted.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_SILHOUETTE</constant> </entry>
|
||||
<entry>Silhouette (outline).</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_VIVID</constant> </entry>
|
||||
<entry>Vivid colors.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_COLORFX_SET_CBCR</constant> </entry>
|
||||
<entry>The Cb and Cr chroma components are replaced by fixed
|
||||
coefficients determined by <constant>V4L2_CID_COLORFX_CBCR</constant>
|
||||
control.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CID_COLORFX_CBCR</constant></entry>
|
||||
<entry>integer</entry>
|
||||
<entry>Determines the Cb and Cr coefficients for <constant>V4L2_COLORFX_SET_CBCR</constant>
|
||||
color effect. Bits [7:0] of the supplied 32 bit value are interpreted as
|
||||
Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CID_ROTATE</constant></entry>
|
||||
|
@ -2774,6 +2848,51 @@ remain constant.</entry>
|
|||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_EXPOSURE_BIAS</constant> </entry>
|
||||
<entry>integer menu</entry>
|
||||
</row><row><entry spanname="descr"> Determines the automatic
|
||||
exposure compensation, it is effective only when <constant>V4L2_CID_EXPOSURE_AUTO</constant>
|
||||
control is set to <constant>AUTO</constant>, <constant>SHUTTER_PRIORITY </constant>
|
||||
or <constant>APERTURE_PRIORITY</constant>.
|
||||
It is expressed in terms of EV, drivers should interpret the values as 0.001 EV
|
||||
units, where the value 1000 stands for +1 EV.
|
||||
<para>Increasing the exposure compensation value is equivalent to decreasing
|
||||
the exposure value (EV) and will increase the amount of light at the image
|
||||
sensor. The camera performs the exposure compensation by adjusting absolute
|
||||
exposure time and/or aperture.</para></entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-exposure-metering">
|
||||
<entry spanname="id"><constant>V4L2_CID_EXPOSURE_METERING</constant> </entry>
|
||||
<entry>enum v4l2_exposure_metering</entry>
|
||||
</row><row><entry spanname="descr">Determines how the camera measures
|
||||
the amount of light available for the frame exposure. Possible values are:</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_EXPOSURE_METERING_AVERAGE</constant> </entry>
|
||||
<entry>Use the light information coming from the entire frame
|
||||
and average giving no weighting to any particular portion of the metered area.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_EXPOSURE_METERING_CENTER_WEIGHTED</constant> </entry>
|
||||
<entry>Average the light information coming from the entire frame
|
||||
giving priority to the center of the metered area.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant> </entry>
|
||||
<entry>Measure only very small area at the center of the frame.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant> </entry>
|
||||
<entry>integer</entry>
|
||||
|
@ -2857,12 +2976,106 @@ negative values towards infinity. This is a write-only control.</entry>
|
|||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant> </entry>
|
||||
<entry>boolean</entry>
|
||||
</row><row><entry spanname="descr">Enables automatic focus
|
||||
adjustments. The effect of manual focus adjustments while this feature
|
||||
</row><row><entry spanname="descr">Enables continuous automatic
|
||||
focus adjustments. The effect of manual focus adjustments while this feature
|
||||
is enabled is undefined, drivers should ignore such requests.</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_START</constant> </entry>
|
||||
<entry>button</entry>
|
||||
</row><row><entry spanname="descr">Starts single auto focus process.
|
||||
The effect of setting this control when <constant>V4L2_CID_FOCUS_AUTO</constant>
|
||||
is set to <constant>TRUE</constant> (1) is undefined, drivers should ignore
|
||||
such requests.</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_STOP</constant> </entry>
|
||||
<entry>button</entry>
|
||||
</row><row><entry spanname="descr">Aborts automatic focusing
|
||||
started with <constant>V4L2_CID_AUTO_FOCUS_START</constant> control. It is
|
||||
effective only when the continuous autofocus is disabled, that is when
|
||||
<constant>V4L2_CID_FOCUS_AUTO</constant> control is set to <constant>FALSE
|
||||
</constant> (0).</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-auto-focus-status">
|
||||
<entry spanname="id">
|
||||
<constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> </entry>
|
||||
<entry>bitmask</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">The automatic focus status. This is a read-only
|
||||
control.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_STATUS_IDLE</constant> </entry>
|
||||
<entry>Automatic focus is not active.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_STATUS_BUSY</constant> </entry>
|
||||
<entry>Automatic focusing is in progress.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_STATUS_REACHED</constant> </entry>
|
||||
<entry>Focus has been reached.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_STATUS_FAILED</constant> </entry>
|
||||
<entry>Automatic focus has failed, the driver will not
|
||||
transition from this state until another action is
|
||||
performed by an application.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row><entry spanname="descr">
|
||||
Setting <constant>V4L2_LOCK_FOCUS</constant> lock bit of the <constant>V4L2_CID_3A_LOCK
|
||||
</constant> control may stop updates of the <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>
|
||||
control value.</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-auto-focus-range">
|
||||
<entry spanname="id">
|
||||
<constant>V4L2_CID_AUTO_FOCUS_RANGE</constant> </entry>
|
||||
<entry>enum v4l2_auto_focus_range</entry>
|
||||
</row>
|
||||
<row><entry spanname="descr">Determines auto focus distance range
|
||||
for which lens may be adjusted. </entry>
|
||||
</row>
|
||||
<row>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_RANGE_AUTO</constant> </entry>
|
||||
<entry>The camera automatically selects the focus range.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_RANGE_NORMAL</constant> </entry>
|
||||
<entry>Normal distance range, limited for best automatic focus
|
||||
performance.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_RANGE_MACRO</constant> </entry>
|
||||
<entry>Macro (close-up) auto focus. The camera will
|
||||
use its minimum possible distance for auto focus.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_AUTO_FOCUS_RANGE_INFINITY</constant> </entry>
|
||||
<entry>The lens is set to focus on an object at infinite distance.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant> </entry>
|
||||
<entry>integer</entry>
|
||||
|
@ -2932,6 +3145,295 @@ camera sensor on or off, or specify its strength. Such band-stop filters can
|
|||
be used, for example, to filter out the fluorescent light component.</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-auto-n-preset-white-balance">
|
||||
<entry spanname="id"><constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant> </entry>
|
||||
<entry>enum v4l2_auto_n_preset_white_balance</entry>
|
||||
</row><row><entry spanname="descr">Sets white balance to automatic,
|
||||
manual or a preset. The presets determine color temperature of the light as
|
||||
a hint to the camera for white balance adjustments resulting in most accurate
|
||||
color representation. The following white balance presets are listed in order
|
||||
of increasing color temperature.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_MANUAL</constant> </entry>
|
||||
<entry>Manual white balance.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_AUTO</constant> </entry>
|
||||
<entry>Automatic white balance adjustments.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_INCANDESCENT</constant> </entry>
|
||||
<entry>White balance setting for incandescent (tungsten) lighting.
|
||||
It generally cools down the colors and corresponds approximately to 2500...3500 K
|
||||
color temperature range.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT</constant> </entry>
|
||||
<entry>White balance preset for fluorescent lighting.
|
||||
It corresponds approximately to 4000...5000 K color temperature.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT_H</constant> </entry>
|
||||
<entry>With this setting the camera will compensate for
|
||||
fluorescent H lighting.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_HORIZON</constant> </entry>
|
||||
<entry>White balance setting for horizon daylight.
|
||||
It corresponds approximately to 5000 K color temperature.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_DAYLIGHT</constant> </entry>
|
||||
<entry>White balance preset for daylight (with clear sky).
|
||||
It corresponds approximately to 5000...6500 K color temperature.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_FLASH</constant> </entry>
|
||||
<entry>With this setting the camera will compensate for the flash
|
||||
light. It slightly warms up the colors and corresponds roughly to 5000...5500 K
|
||||
color temperature.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_CLOUDY</constant> </entry>
|
||||
<entry>White balance preset for moderately overcast sky.
|
||||
This option corresponds approximately to 6500...8000 K color temperature
|
||||
range.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_WHITE_BALANCE_SHADE</constant> </entry>
|
||||
<entry>White balance preset for shade or heavily overcast
|
||||
sky. It corresponds approximately to 9000...10000 K color temperature.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-wide-dynamic-range">
|
||||
<entry spanname="id"><constant>V4L2_CID_WIDE_DYNAMIC_RANGE</constant></entry>
|
||||
<entry>boolean</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">Enables or disables the camera's wide dynamic
|
||||
range feature. This feature allows to obtain clear images in situations where
|
||||
intensity of the illumination varies significantly throughout the scene, i.e.
|
||||
there are simultaneously very dark and very bright areas. It is most commonly
|
||||
realized in cameras by combining two subsequent frames with different exposure
|
||||
times. <footnote id="ctypeconv"><para> This control may be changed to a menu
|
||||
control in the future, if more options are required.</para></footnote></entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-image-stabilization">
|
||||
<entry spanname="id"><constant>V4L2_CID_IMAGE_STABILIZATION</constant></entry>
|
||||
<entry>boolean</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">Enables or disables image stabilization.
|
||||
<footnoteref linkend="ctypeconv"/></entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY</constant> </entry>
|
||||
<entry>integer menu</entry>
|
||||
</row><row><entry spanname="descr">Determines ISO equivalent of an
|
||||
image sensor indicating the sensor's sensitivity to light. The numbers are
|
||||
expressed in arithmetic scale, as per <xref linkend="iso12232" /> standard,
|
||||
where doubling the sensor sensitivity is represented by doubling the numerical
|
||||
ISO value. Applications should interpret the values as standard ISO values
|
||||
multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will
|
||||
usually support only a subset of standard ISO values. The effect of setting
|
||||
this control while the <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>
|
||||
control is set to a value other than <constant>V4L2_CID_ISO_SENSITIVITY_MANUAL
|
||||
</constant> is undefined, drivers should ignore such requests.</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-iso-sensitivity-auto-type">
|
||||
<entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant> </entry>
|
||||
<entry>enum v4l2_iso_sensitivity_type</entry>
|
||||
</row><row><entry spanname="descr">Enables or disables automatic ISO
|
||||
sensitivity adjustments.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_CID_ISO_SENSITIVITY_MANUAL</constant> </entry>
|
||||
<entry>Manual ISO sensitivity.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant> </entry>
|
||||
<entry>Automatic ISO sensitivity adjustments.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row id="v4l2-scene-mode">
|
||||
<entry spanname="id"><constant>V4L2_CID_SCENE_MODE</constant> </entry>
|
||||
<entry>enum v4l2_scene_mode</entry>
|
||||
</row><row><entry spanname="descr">This control allows to select
|
||||
scene programs as the camera automatic modes optimized for common shooting
|
||||
scenes. Within these modes the camera determines best exposure, aperture,
|
||||
focusing, light metering, white balance and equivalent sensitivity. The
|
||||
controls of those parameters are influenced by the scene mode control.
|
||||
An exact behavior in each mode is subject to the camera specification.
|
||||
|
||||
<para>When the scene mode feature is not used, this control should be set to
|
||||
<constant>V4L2_SCENE_MODE_NONE</constant> to make sure the other possibly
|
||||
related controls are accessible. The following scene programs are defined:
|
||||
</para>
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_NONE</constant> </entry>
|
||||
<entry>The scene mode feature is disabled.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_BACKLIGHT</constant> </entry>
|
||||
<entry>Backlight. Compensates for dark shadows when light is
|
||||
coming from behind a subject, also by automatically turning
|
||||
on the flash.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_BEACH_SNOW</constant> </entry>
|
||||
<entry>Beach and snow. This mode compensates for all-white or
|
||||
bright scenes, which tend to look gray and low contrast, when camera's automatic
|
||||
exposure is based on an average scene brightness. To compensate, this mode
|
||||
automatically slightly overexposes the frames. The white balance may also be
|
||||
adjusted to compensate for the fact that reflected snow looks bluish rather
|
||||
than white.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_CANDLELIGHT</constant> </entry>
|
||||
<entry>Candle light. The camera generally raises the ISO
|
||||
sensitivity and lowers the shutter speed. This mode compensates for relatively
|
||||
close subject in the scene. The flash is disabled in order to preserve the
|
||||
ambiance of the light.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_DAWN_DUSK</constant> </entry>
|
||||
<entry>Dawn and dusk. Preserves the colors seen in low
|
||||
natural light before dusk and after down. The camera may turn off the flash,
|
||||
and automatically focus at infinity. It will usually boost saturation and
|
||||
lower the shutter speed.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_FALL_COLORS</constant> </entry>
|
||||
<entry>Fall colors. Increases saturation and adjusts white
|
||||
balance for color enhancement. Pictures of autumn leaves get saturated reds
|
||||
and yellows.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_FIREWORKS</constant> </entry>
|
||||
<entry>Fireworks. Long exposure times are used to capture
|
||||
the expanding burst of light from a firework. The camera may invoke image
|
||||
stabilization.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_LANDSCAPE</constant> </entry>
|
||||
<entry>Landscape. The camera may choose a small aperture to
|
||||
provide deep depth of field and long exposure duration to help capture detail
|
||||
in dim light conditions. The focus is fixed at infinity. Suitable for distant
|
||||
and wide scenery.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_NIGHT</constant> </entry>
|
||||
<entry>Night, also known as Night Landscape. Designed for low
|
||||
light conditions, it preserves detail in the dark areas without blowing out bright
|
||||
objects. The camera generally sets itself to a medium-to-high ISO sensitivity,
|
||||
with a relatively long exposure time, and turns flash off. As such, there will be
|
||||
increased image noise and the possibility of blurred image.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_PARTY_INDOOR</constant> </entry>
|
||||
<entry>Party and indoor. Designed to capture indoor scenes
|
||||
that are lit by indoor background lighting as well as the flash. The camera
|
||||
usually increases ISO sensitivity, and adjusts exposure for the low light
|
||||
conditions.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_PORTRAIT</constant> </entry>
|
||||
<entry>Portrait. The camera adjusts the aperture so that the
|
||||
depth of field is reduced, which helps to isolate the subject against a smooth
|
||||
background. Most cameras recognize the presence of faces in the scene and focus
|
||||
on them. The color hue is adjusted to enhance skin tones. The intensity of the
|
||||
flash is often reduced.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_SPORTS</constant> </entry>
|
||||
<entry>Sports. Significantly increases ISO and uses a fast
|
||||
shutter speed to freeze motion of rapidly-moving subjects. Increased image
|
||||
noise may be seen in this mode.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_SUNSET</constant> </entry>
|
||||
<entry>Sunset. Preserves deep hues seen in sunsets and
|
||||
sunrises. It bumps up the saturation.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SCENE_MODE_TEXT</constant> </entry>
|
||||
<entry>Text. It applies extra contrast and sharpness, it is
|
||||
typically a black-and-white mode optimized for readability. Automatic focus
|
||||
may be switched to close-up mode and this setting may also involve some
|
||||
lens-distortion correction.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry>
|
||||
<entry>bitmask</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">This control locks or unlocks the automatic
|
||||
focus, exposure and white balance. The automatic adjustments can be paused
|
||||
independently by setting the corresponding lock bit to 1. The camera then retains
|
||||
the settings until the lock bit is cleared. The following lock bits are defined:
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_LOCK_EXPOSURE</constant></entry>
|
||||
<entry>Automatic exposure adjustments lock.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_LOCK_WHITE_BALANCE</constant></entry>
|
||||
<entry>Automatic white balance adjustments lock.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_LOCK_FOCUS</constant></entry>
|
||||
<entry>Automatic focus lock.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</entrytbl>
|
||||
</row>
|
||||
<row><entry spanname="descr">
|
||||
When a given algorithm is not enabled, drivers should ignore requests
|
||||
to lock it and should return no error. An example might be an application
|
||||
setting bit <constant>V4L2_LOCK_WHITE_BALANCE</constant> when the
|
||||
<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to
|
||||
<constant>FALSE</constant>. The value of this control may be changed
|
||||
by exposure, white balance or focus controls.</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
@ -3476,7 +3978,7 @@ interface and may change in the future.</para>
|
|||
<entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry>
|
||||
<entry>menu</entry>
|
||||
</row>
|
||||
<row id="jpeg-chroma-subsampling-control">
|
||||
<row id="v4l2-jpeg-chroma-subsampling">
|
||||
<entry spanname="descr">The chroma subsampling factors describe how
|
||||
each component of an input image is sampled, in respect to maximum
|
||||
sample rate in each spatial dimension. See <xref linkend="itu-t81"/>,
|
||||
|
@ -3486,7 +3988,7 @@ interface and may change in the future.</para>
|
|||
from RGB to Y'CbCr color space.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<row id = "v4l2-jpeg-chroma-subsampling">
|
||||
<entrytbl spanname="descr" cols="2">
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
|
@ -3538,12 +4040,12 @@ interface and may change in the future.</para>
|
|||
</entry>
|
||||
</row>
|
||||
<row id="jpeg-quality-control">
|
||||
<entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant></entry>
|
||||
<entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></entry>
|
||||
<entry>integer</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">
|
||||
<constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control
|
||||
<constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control
|
||||
determines trade-off between image quality and size.
|
||||
It provides simpler method for applications to control image quality,
|
||||
without a need for direct reconfiguration of luminance and chrominance
|
||||
|
@ -3551,7 +4053,7 @@ interface and may change in the future.</para>
|
|||
|
||||
In cases where a driver uses quantization tables configured directly
|
||||
by an application, using interfaces defined elsewhere, <constant>
|
||||
V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control should be set
|
||||
V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control should be set
|
||||
by driver to 0.
|
||||
|
||||
<para>The value range of this control is driver-specific. Only
|
||||
|
@ -3599,4 +4101,172 @@ interface and may change in the future.</para>
|
|||
to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>,
|
||||
<xref linkend="w3c-jpeg-jfif"/>.</para>
|
||||
</section>
|
||||
|
||||
<section id="image-source-controls">
|
||||
<title>Image Source Control Reference</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
|
||||
<para>This is an <link
|
||||
linkend="experimental">experimental</link> interface and may
|
||||
change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
The Image Source control class is intended for low-level
|
||||
control of image source devices such as image sensors. The
|
||||
devices feature an analogue to digital converter and a bus
|
||||
transmitter to transmit the image data out of the device.
|
||||
</para>
|
||||
|
||||
<table pgwide="1" frame="none" id="image-source-control-id">
|
||||
<title>Image Source Control IDs</title>
|
||||
|
||||
<tgroup cols="4">
|
||||
<colspec colname="c1" colwidth="1*" />
|
||||
<colspec colname="c2" colwidth="6*" />
|
||||
<colspec colname="c3" colwidth="2*" />
|
||||
<colspec colname="c4" colwidth="6*" />
|
||||
<spanspec namest="c1" nameend="c2" spanname="id" />
|
||||
<spanspec namest="c2" nameend="c4" spanname="descr" />
|
||||
<thead>
|
||||
<row>
|
||||
<entry spanname="id" align="left">ID</entry>
|
||||
<entry align="left">Type</entry>
|
||||
</row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant></entry>
|
||||
<entry>class</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">The IMAGE_SOURCE class descriptor.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_VBLANK</constant></entry>
|
||||
<entry>integer</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">Vertical blanking. The idle period
|
||||
after every frame during which no image data is produced.
|
||||
The unit of vertical blanking is a line. Every line has
|
||||
length of the image width plus horizontal blanking at the
|
||||
pixel rate defined by
|
||||
<constant>V4L2_CID_PIXEL_RATE</constant> control in the
|
||||
same sub-device.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_HBLANK</constant></entry>
|
||||
<entry>integer</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">Horizontal blanking. The idle
|
||||
period after every line of image data during which no
|
||||
image data is produced. The unit of horizontal blanking is
|
||||
pixels.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_ANALOGUE_GAIN</constant></entry>
|
||||
<entry>integer</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">Analogue gain is gain affecting
|
||||
all colour components in the pixel matrix. The gain
|
||||
operation is performed in the analogue domain before A/D
|
||||
conversion.
|
||||
</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="image-process-controls">
|
||||
<title>Image Process Control Reference</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
|
||||
<para>This is an <link
|
||||
linkend="experimental">experimental</link> interface and may
|
||||
change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>
|
||||
The Image Source control class is intended for low-level control of
|
||||
image processing functions. Unlike
|
||||
<constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in
|
||||
this class affect processing the image, and do not control capturing
|
||||
of it.
|
||||
</para>
|
||||
|
||||
<table pgwide="1" frame="none" id="image-process-control-id">
|
||||
<title>Image Source Control IDs</title>
|
||||
|
||||
<tgroup cols="4">
|
||||
<colspec colname="c1" colwidth="1*" />
|
||||
<colspec colname="c2" colwidth="6*" />
|
||||
<colspec colname="c3" colwidth="2*" />
|
||||
<colspec colname="c4" colwidth="6*" />
|
||||
<spanspec namest="c1" nameend="c2" spanname="id" />
|
||||
<spanspec namest="c2" nameend="c4" spanname="descr" />
|
||||
<thead>
|
||||
<row>
|
||||
<entry spanname="id" align="left">ID</entry>
|
||||
<entry align="left">Type</entry>
|
||||
</row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody valign="top">
|
||||
<row><entry></entry></row>
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_IMAGE_PROC_CLASS</constant></entry>
|
||||
<entry>class</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">The IMAGE_PROC class descriptor.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_LINK_FREQ</constant></entry>
|
||||
<entry>integer menu</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">Data bus frequency. Together with the
|
||||
media bus pixel code, bus type (clock cycles per sample), the
|
||||
data bus frequency defines the pixel rate
|
||||
(<constant>V4L2_CID_PIXEL_RATE</constant>) in the
|
||||
pixel array (or possibly elsewhere, if the device is not an
|
||||
image sensor). The frame rate can be calculated from the pixel
|
||||
clock, image width and height and horizontal and vertical
|
||||
blanking. While the pixel rate control may be defined elsewhere
|
||||
than in the subdev containing the pixel array, the frame rate
|
||||
cannot be obtained from that information. This is because only
|
||||
on the pixel array it can be assumed that the vertical and
|
||||
horizontal blanking information is exact: no other blanking is
|
||||
allowed in the pixel array. The selection of frame rate is
|
||||
performed by selecting the desired horizontal and vertical
|
||||
blanking. The unit of this control is Hz. </entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="id"><constant>V4L2_CID_PIXEL_RATE</constant></entry>
|
||||
<entry>64-bit integer</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="descr">Pixel rate in the source pads of
|
||||
the subdev. This control is read-only and its unit is
|
||||
pixels / second.
|
||||
</entry>
|
||||
</row>
|
||||
<row><entry></entry></row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -76,11 +76,12 @@
|
|||
<wordasword>format</wordasword> means the combination of media bus data
|
||||
format, frame width and frame height.</para></note>
|
||||
|
||||
<para>Image formats are typically negotiated on video capture and output
|
||||
devices using the <link linkend="crop">cropping and scaling</link> ioctls.
|
||||
The driver is responsible for configuring every block in the video pipeline
|
||||
according to the requested format at the pipeline input and/or
|
||||
output.</para>
|
||||
<para>Image formats are typically negotiated on video capture and
|
||||
output devices using the format and <link
|
||||
linkend="vidioc-subdev-g-selection">selection</link> ioctls. The
|
||||
driver is responsible for configuring every block in the video
|
||||
pipeline according to the requested format at the pipeline input
|
||||
and/or output.</para>
|
||||
|
||||
<para>For complex devices, such as often found in embedded systems,
|
||||
identical image sizes at the output of a pipeline can be achieved using
|
||||
|
@ -276,11 +277,11 @@
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<title>Cropping and scaling</title>
|
||||
<title>Selections: cropping, scaling and composition</title>
|
||||
|
||||
<para>Many sub-devices support cropping frames on their input or output
|
||||
pads (or possible even on both). Cropping is used to select the area of
|
||||
interest in an image, typically on a video sensor or video decoder. It can
|
||||
interest in an image, typically on an image sensor or a video decoder. It can
|
||||
also be used as part of digital zoom implementations to select the area of
|
||||
the image that will be scaled up.</para>
|
||||
|
||||
|
@ -288,26 +289,179 @@
|
|||
&v4l2-rect; by the coordinates of the top left corner and the rectangle
|
||||
size. Both the coordinates and sizes are expressed in pixels.</para>
|
||||
|
||||
<para>The crop rectangle is retrieved and set using the
|
||||
&VIDIOC-SUBDEV-G-CROP; and &VIDIOC-SUBDEV-S-CROP; ioctls. Like for pad
|
||||
formats, drivers store try and active crop rectangles. The format
|
||||
negotiation mechanism applies to crop settings as well.</para>
|
||||
<para>As for pad formats, drivers store try and active
|
||||
rectangles for the selection targets of ACTUAL type <xref
|
||||
linkend="v4l2-subdev-selection-targets">.</xref></para>
|
||||
|
||||
<para>On input pads, cropping is applied relatively to the current pad
|
||||
format. The pad format represents the image size as received by the
|
||||
sub-device from the previous block in the pipeline, and the crop rectangle
|
||||
represents the sub-image that will be transmitted further inside the
|
||||
sub-device for processing. The crop rectangle be entirely containted
|
||||
inside the input image size.</para>
|
||||
<para>On sink pads, cropping is applied relative to the
|
||||
current pad format. The pad format represents the image size as
|
||||
received by the sub-device from the previous block in the
|
||||
pipeline, and the crop rectangle represents the sub-image that
|
||||
will be transmitted further inside the sub-device for
|
||||
processing.</para>
|
||||
|
||||
<para>Input crop rectangle are reset to their default value when the input
|
||||
image format is modified. Drivers should use the input image size as the
|
||||
crop rectangle default value, but hardware requirements may prevent this.
|
||||
</para>
|
||||
<para>The scaling operation changes the size of the image by
|
||||
scaling it to new dimensions. The scaling ratio isn't specified
|
||||
explicitly, but is implied from the original and scaled image
|
||||
sizes. Both sizes are represented by &v4l2-rect;.</para>
|
||||
|
||||
<para>Cropping behaviour on output pads is not defined.</para>
|
||||
<para>Scaling support is optional. When supported by a subdev,
|
||||
the crop rectangle on the subdev's sink pad is scaled to the
|
||||
size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL
|
||||
using <constant>V4L2_SUBDEV_SEL_COMPOSE_ACTUAL</constant>
|
||||
selection target on the same pad. If the subdev supports scaling
|
||||
but not composing, the top and left values are not used and must
|
||||
always be set to zero.</para>
|
||||
|
||||
<para>On source pads, cropping is similar to sink pads, with the
|
||||
exception that the source size from which the cropping is
|
||||
performed, is the COMPOSE rectangle on the sink pad. In both
|
||||
sink and source pads, the crop rectangle must be entirely
|
||||
contained inside the source image size for the crop
|
||||
operation.</para>
|
||||
|
||||
<para>The drivers should always use the closest possible
|
||||
rectangle the user requests on all selection targets, unless
|
||||
specifically told otherwise.
|
||||
<constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant> and
|
||||
<constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant> flags may be
|
||||
used to round the image size either up or down. <xref
|
||||
linkend="v4l2-subdev-selection-flags"></xref></para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Types of selection targets</title>
|
||||
|
||||
<section>
|
||||
<title>ACTUAL targets</title>
|
||||
|
||||
<para>ACTUAL targets reflect the actual hardware configuration
|
||||
at any point of time. There is a BOUNDS target
|
||||
corresponding to every ACTUAL.</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>BOUNDS targets</title>
|
||||
|
||||
<para>BOUNDS targets is the smallest rectangle that contains
|
||||
all valid ACTUAL rectangles. It may not be possible to set the
|
||||
ACTUAL rectangle as large as the BOUNDS rectangle, however.
|
||||
This may be because e.g. a sensor's pixel array is not
|
||||
rectangular but cross-shaped or round. The maximum size may
|
||||
also be smaller than the BOUNDS rectangle.</para>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Order of configuration and format propagation</title>
|
||||
|
||||
<para>Inside subdevs, the order of image processing steps will
|
||||
always be from the sink pad towards the source pad. This is also
|
||||
reflected in the order in which the configuration must be
|
||||
performed by the user: the changes made will be propagated to
|
||||
any subsequent stages. If this behaviour is not desired, the
|
||||
user must set
|
||||
<constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant> flag. This
|
||||
flag causes no propagation of the changes are allowed in any
|
||||
circumstances. This may also cause the accessed rectangle to be
|
||||
adjusted by the driver, depending on the properties of the
|
||||
underlying hardware.</para>
|
||||
|
||||
<para>The coordinates to a step always refer to the actual size
|
||||
of the previous step. The exception to this rule is the source
|
||||
compose rectangle, which refers to the sink compose bounds
|
||||
rectangle --- if it is supported by the hardware.</para>
|
||||
|
||||
<orderedlist>
|
||||
<listitem>Sink pad format. The user configures the sink pad
|
||||
format. This format defines the parameters of the image the
|
||||
entity receives through the pad for further processing.</listitem>
|
||||
|
||||
<listitem>Sink pad actual crop selection. The sink pad crop
|
||||
defines the crop performed to the sink pad format.</listitem>
|
||||
|
||||
<listitem>Sink pad actual compose selection. The size of the
|
||||
sink pad compose rectangle defines the scaling ratio compared
|
||||
to the size of the sink pad crop rectangle. The location of
|
||||
the compose rectangle specifies the location of the actual
|
||||
sink compose rectangle in the sink compose bounds
|
||||
rectangle.</listitem>
|
||||
|
||||
<listitem>Source pad actual crop selection. Crop on the source
|
||||
pad defines crop performed to the image in the sink compose
|
||||
bounds rectangle.</listitem>
|
||||
|
||||
<listitem>Source pad format. The source pad format defines the
|
||||
output pixel format of the subdev, as well as the other
|
||||
parameters with the exception of the image width and height.
|
||||
Width and height are defined by the size of the source pad
|
||||
actual crop selection.</listitem>
|
||||
</orderedlist>
|
||||
|
||||
<para>Accessing any of the above rectangles not supported by the
|
||||
subdev will return <constant>EINVAL</constant>. Any rectangle
|
||||
referring to a previous unsupported rectangle coordinates will
|
||||
instead refer to the previous supported rectangle. For example,
|
||||
if sink crop is not supported, the compose selection will refer
|
||||
to the sink pad format dimensions instead.</para>
|
||||
|
||||
<figure id="subdev-image-processing-crop">
|
||||
<title>Image processing in subdevs: simple crop example</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="subdev-image-processing-crop.svg"
|
||||
format="SVG" scale="200" />
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
|
||||
<para>In the above example, the subdev supports cropping on its
|
||||
sink pad. To configure it, the user sets the media bus format on
|
||||
the subdev's sink pad. Now the actual crop rectangle can be set
|
||||
on the sink pad --- the location and size of this rectangle
|
||||
reflect the location and size of a rectangle to be cropped from
|
||||
the sink format. The size of the sink crop rectangle will also
|
||||
be the size of the format of the subdev's source pad.</para>
|
||||
|
||||
<figure id="subdev-image-processing-scaling-multi-source">
|
||||
<title>Image processing in subdevs: scaling with multiple sources</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="subdev-image-processing-scaling-multi-source.svg"
|
||||
format="SVG" scale="200" />
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
|
||||
<para>In this example, the subdev is capable of first cropping,
|
||||
then scaling and finally cropping for two source pads
|
||||
individually from the resulting scaled image. The location of
|
||||
the scaled image in the cropped image is ignored in sink compose
|
||||
target. Both of the locations of the source crop rectangles
|
||||
refer to the sink scaling rectangle, independently cropping an
|
||||
area at location specified by the source crop rectangle from
|
||||
it.</para>
|
||||
|
||||
<figure id="subdev-image-processing-full">
|
||||
<title>Image processing in subdevs: scaling and composition
|
||||
with multiple sinks and sources</title>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="subdev-image-processing-full.svg"
|
||||
format="SVG" scale="200" />
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</figure>
|
||||
|
||||
<para>The subdev driver supports two sink pads and two source
|
||||
pads. The images from both of the sink pads are individually
|
||||
cropped, then scaled and further composed on the composition
|
||||
bounds rectangle. From that, two independent streams are cropped
|
||||
and sent out of the subdev from the source pads.</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
&sub-subdev-formats;
|
||||
|
|
|
@ -543,12 +543,13 @@ and can range from zero to the number of buffers allocated
|
|||
with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry></entry>
|
||||
<entry>Type of the buffer, same as &v4l2-format;
|
||||
<structfield>type</structfield> or &v4l2-requestbuffers;
|
||||
<structfield>type</structfield>, set by the application.</entry>
|
||||
<structfield>type</structfield>, set by the application. See <xref
|
||||
linkend="v4l2-buf-type" /></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
@ -568,7 +569,7 @@ refers to an input stream, applications when an output stream.</entry>
|
|||
linkend="buffer-flags" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-field;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>field</structfield></entry>
|
||||
<entry></entry>
|
||||
<entry>Indicates the field order of the image in the
|
||||
|
@ -630,11 +631,12 @@ bandwidth. These devices identify by not enumerating any video
|
|||
standards, see <xref linkend="standard" />.</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-memory;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>memory</structfield></entry>
|
||||
<entry></entry>
|
||||
<entry>This field must be set by applications and/or drivers
|
||||
in accordance with the selected I/O method.</entry>
|
||||
in accordance with the selected I/O method. See <xref linkend="v4l2-memory"
|
||||
/></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>union</entry>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<refentry>
|
||||
<refentry id="pixfmt-srggb10">
|
||||
<refmeta>
|
||||
<refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'),
|
||||
V4L2_PIX_FMT_SGRBG10 ('BA10'),
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
<refentry id="pixfmt-srggb10dpcm8">
|
||||
<refmeta>
|
||||
<refentrytitle>
|
||||
V4L2_PIX_FMT_SBGGR10DPCM8 ('bBA8'),
|
||||
V4L2_PIX_FMT_SGBRG10DPCM8 ('bGA8'),
|
||||
V4L2_PIX_FMT_SGRBG10DPCM8 ('BD10'),
|
||||
V4L2_PIX_FMT_SRGGB10DPCM8 ('bRA8'),
|
||||
</refentrytitle>
|
||||
&manvol;
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname id="V4L2-PIX-FMT-SBGGR10DPCM8"><constant>V4L2_PIX_FMT_SBGGR10DPCM8</constant></refname>
|
||||
<refname id="V4L2-PIX-FMT-SGBRG10DPCM8"><constant>V4L2_PIX_FMT_SGBRG10DPCM8</constant></refname>
|
||||
<refname id="V4L2-PIX-FMT-SGRBG10DPCM8"><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></refname>
|
||||
<refname id="V4L2-PIX-FMT-SRGGB10DPCM8"><constant>V4L2_PIX_FMT_SRGGB10DPCM8</constant></refname>
|
||||
<refpurpose>10-bit Bayer formats compressed to 8 bits</refpurpose>
|
||||
</refnamediv>
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>The following four pixel formats are raw sRGB / Bayer formats
|
||||
with 10 bits per colour compressed to 8 bits each, using DPCM
|
||||
compression. DPCM, differential pulse-code modulation, is lossy.
|
||||
Each colour component consumes 8 bits of memory. In other respects
|
||||
this format is similar to <xref
|
||||
linkend="pixfmt-srggb10">.</xref></para>
|
||||
|
||||
</refsect1>
|
||||
</refentry>
|
|
@ -673,6 +673,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.<
|
|||
&sub-srggb8;
|
||||
&sub-sbggr16;
|
||||
&sub-srggb10;
|
||||
&sub-srggb10dpcm8;
|
||||
&sub-srggb12;
|
||||
</section>
|
||||
|
||||
|
@ -876,11 +877,6 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm
|
|||
<entry>'S561'</entry>
|
||||
<entry>Compressed GBRG Bayer format used by the gspca driver.</entry>
|
||||
</row>
|
||||
<row id="V4L2-PIX-FMT-SGRBG10DPCM8">
|
||||
<entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry>
|
||||
<entry>'DB10'</entry>
|
||||
<entry>10 bit raw Bayer DPCM compressed to 8 bits.</entry>
|
||||
</row>
|
||||
<row id="V4L2-PIX-FMT-PAC207">
|
||||
<entry><constant>V4L2_PIX_FMT_PAC207</constant></entry>
|
||||
<entry>'P207'</entry>
|
||||
|
|
|
@ -0,0 +1,614 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
|
||||
<dia:diagramdata>
|
||||
<dia:attribute name="background">
|
||||
<dia:color val="#ffffff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pagebreak">
|
||||
<dia:color val="#000099"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="paper">
|
||||
<dia:composite type="paper">
|
||||
<dia:attribute name="name">
|
||||
<dia:string>#A4#</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="tmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="bmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="lmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="rmargin">
|
||||
<dia:real val="2.8222000598907471"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="is_portrait">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="scaling">
|
||||
<dia:real val="0.49000000953674316"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="fitto">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="grid">
|
||||
<dia:composite type="grid">
|
||||
<dia:attribute name="width_x">
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="width_y">
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="visible_x">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="visible_y">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:composite type="color"/>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#d8e5e5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="guides">
|
||||
<dia:composite type="guides">
|
||||
<dia:attribute name="hguides"/>
|
||||
<dia:attribute name="vguides"/>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
</dia:diagramdata>
|
||||
<dia:layer name="Background" visible="true" active="true">
|
||||
<dia:object type="Standard - Box" version="0" id="O0">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="-0.4,6.5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="-0.45,6.45;23.1387,16.2"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="-0.4,6.5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="23.48871579904775"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="9.6500000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.10000000149011612"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Box" version="0" id="O1">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="0.225,9.45"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="0.175,9.4;8.225,14.7"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="0.225,9.45"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="7.9499999999999975"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="5.1999999999999975"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.10000000149011612"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_color">
|
||||
<dia:color val="#a52a2a"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Box" version="0" id="O2">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="3.175,10.55"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="3.125,10.5;7.925,14.45"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="3.175,10.55"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="4.6999999999999975"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="3.8499999999999979"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.10000000149011612"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_color">
|
||||
<dia:color val="#0000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Text" version="1" id="O3">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="3.725,11.3875"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="3.725,10.7925;6.6025,13.14"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>#sink
|
||||
crop
|
||||
selection#</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="3.725,11.3875"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#0000ff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="0"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="valign">
|
||||
<dia:enum val="3"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Text" version="1" id="O4">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="1.475,7.9"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="1.475,7.305;1.475,8.0525"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>##</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="1.475,7.9"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#000000"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="0"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="valign">
|
||||
<dia:enum val="3"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Text" version="1" id="O5">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="0.426918,7.89569"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="0.426918,7.30069;3.90942,8.84819"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>#sink media
|
||||
bus format#</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="0.426918,7.89569"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#a52a2a"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="0"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="valign">
|
||||
<dia:enum val="3"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Text" version="1" id="O6">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="17.4887,7.75"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="17.4887,7.155;21.8112,8.7025"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>#source media
|
||||
bus format#</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="17.4887,7.75"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#8b6914"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="0"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="valign">
|
||||
<dia:enum val="3"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Box" version="0" id="O7">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="17.5244,9.5417"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="17.4744,9.4917;22.2387,13.35"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="17.5244,9.5417"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="4.6643157990477508"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="3.758300000000002"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_width">
|
||||
<dia:real val="0.10000000149011612"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="border_color">
|
||||
<dia:color val="#8b6914"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O8">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="17.5244,13.3"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="3.12132,13.2463;17.5781,14.4537"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="17.5244,13.3"/>
|
||||
<dia:point val="3.175,14.4"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_color">
|
||||
<dia:color val="#e60505"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_style">
|
||||
<dia:enum val="4"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="0" to="O7" connection="5"/>
|
||||
<dia:connection handle="1" to="O2" connection="5"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O9">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="17.5244,9.5417"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="3.12162,9.48832;17.5778,10.6034"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="17.5244,9.5417"/>
|
||||
<dia:point val="3.175,10.55"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_color">
|
||||
<dia:color val="#e60505"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_style">
|
||||
<dia:enum val="4"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="0" to="O7" connection="0"/>
|
||||
<dia:connection handle="1" to="O2" connection="0"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O10">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="22.1887,13.3"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="7.82132,13.2463;22.2424,14.4537"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="22.1887,13.3"/>
|
||||
<dia:point val="7.875,14.4"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_color">
|
||||
<dia:color val="#e60505"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_style">
|
||||
<dia:enum val="4"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="0" to="O7" connection="7"/>
|
||||
<dia:connection handle="1" to="O2" connection="7"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O11">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="22.1887,9.5417"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="7.82161,9.48831;22.2421,10.6034"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="22.1887,9.5417"/>
|
||||
<dia:point val="7.875,10.55"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_color">
|
||||
<dia:color val="#e60505"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_style">
|
||||
<dia:enum val="4"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="0" to="O7" connection="2"/>
|
||||
<dia:connection handle="1" to="O2" connection="2"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Geometric - Perfect Circle" version="1" id="O12">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="23.23,10.5742"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="23.18,10.5242;24.13,11.4742"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="meta">
|
||||
<dia:composite type="dict"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="23.23,10.5742"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="0.84999999999999787"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="0.84999999999999787"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_width">
|
||||
<dia:real val="0.10000000000000001"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_colour">
|
||||
<dia:color val="#000000"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="fill_colour">
|
||||
<dia:color val="#ffffff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_style">
|
||||
<dia:enum val="0"/>
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="flip_horizontal">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="flip_vertical">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="subscale">
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O13">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="24.08,10.9992"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="24.03,10.6388;32.4953,11.3624"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="24.08,10.9992"/>
|
||||
<dia:point val="32.3835,11.0007"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="end_arrow">
|
||||
<dia:enum val="22"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="end_arrow_length">
|
||||
<dia:real val="0.5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="end_arrow_width">
|
||||
<dia:real val="0.5"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="0" to="O12" connection="3"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Text" version="1" id="O14">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="25.3454,10.49"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="25.3454,9.895;29.9904,10.6425"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>#pad 1 (source)#</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="25.3454,10.49"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#000000"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="0"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="valign">
|
||||
<dia:enum val="3"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Geometric - Perfect Circle" version="1" id="O15">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="-1.44491,11.6506"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="-1.49491,11.6006;-0.54491,12.5506"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="meta">
|
||||
<dia:composite type="dict"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_corner">
|
||||
<dia:point val="-1.44491,11.6506"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_width">
|
||||
<dia:real val="0.84999999999999787"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="elem_height">
|
||||
<dia:real val="0.84999999999999787"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_width">
|
||||
<dia:real val="0.10000000000000001"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_colour">
|
||||
<dia:color val="#000000"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="fill_colour">
|
||||
<dia:color val="#ffffff"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="show_background">
|
||||
<dia:boolean val="true"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="line_style">
|
||||
<dia:enum val="0"/>
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="flip_horizontal">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="flip_vertical">
|
||||
<dia:boolean val="false"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="subscale">
|
||||
<dia:real val="1"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Line" version="0" id="O16">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="-9.61991,12.09"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="-9.67,11.7149;-1.33311,12.4385"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="conn_endpoints">
|
||||
<dia:point val="-9.61991,12.09"/>
|
||||
<dia:point val="-1.44491,12.0756"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="numcp">
|
||||
<dia:int val="1"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="end_arrow">
|
||||
<dia:enum val="22"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="end_arrow_length">
|
||||
<dia:real val="0.5"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="end_arrow_width">
|
||||
<dia:real val="0.5"/>
|
||||
</dia:attribute>
|
||||
<dia:connections>
|
||||
<dia:connection handle="1" to="O15" connection="2"/>
|
||||
</dia:connections>
|
||||
</dia:object>
|
||||
<dia:object type="Standard - Text" version="1" id="O17">
|
||||
<dia:attribute name="obj_pos">
|
||||
<dia:point val="-7.39291,11.49"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="obj_bb">
|
||||
<dia:rectangle val="-7.39291,10.895;-3.58791,11.6425"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="text">
|
||||
<dia:composite type="text">
|
||||
<dia:attribute name="string">
|
||||
<dia:string>#pad 0 (sink)#</dia:string>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="font">
|
||||
<dia:font family="sans" style="0" name="Helvetica"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="height">
|
||||
<dia:real val="0.80000000000000004"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="pos">
|
||||
<dia:point val="-7.39291,11.49"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="color">
|
||||
<dia:color val="#000000"/>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="alignment">
|
||||
<dia:enum val="0"/>
|
||||
</dia:attribute>
|
||||
</dia:composite>
|
||||
</dia:attribute>
|
||||
<dia:attribute name="valign">
|
||||
<dia:enum val="3"/>
|
||||
</dia:attribute>
|
||||
</dia:object>
|
||||
</dia:layer>
|
||||
</dia:diagram>
|
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||
<svg width="43cm" height="10cm" viewBox="-194 128 844 196" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="469.774" height="193"/>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="63.5" y="211" width="94" height="77"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="63.5" y="211" width="94" height="77"/>
|
||||
</g>
|
||||
<text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="74.5" y="227.75">
|
||||
<tspan x="74.5" y="227.75">sink</tspan>
|
||||
<tspan x="74.5" y="243.75">crop</tspan>
|
||||
<tspan x="74.5" y="259.75">selection</tspan>
|
||||
</text>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158">
|
||||
<tspan x="29.5" y="158"></tspan>
|
||||
</text>
|
||||
<text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914">
|
||||
<tspan x="8.53836" y="157.914">sink media</tspan>
|
||||
<tspan x="8.53836" y="173.914">bus format</tspan>
|
||||
</text>
|
||||
<text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="349.774" y="155">
|
||||
<tspan x="349.774" y="155">source media</tspan>
|
||||
<tspan x="349.774" y="171">bus format</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="350.488" y="190.834" width="93.2863" height="75.166"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="350.488" y="190.834" width="93.2863" height="75.166"/>
|
||||
</g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="266" x2="63.5" y2="288"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="190.834" x2="63.5" y2="211"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="266" x2="157.5" y2="288"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="190.834" x2="157.5" y2="211"/>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="481.6" y1="219.984" x2="637.934" y2="220.012"/>
|
||||
<polygon style="fill: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="506.908" y="209.8">
|
||||
<tspan x="506.908" y="209.8">pad 1 (source)</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/>
|
||||
<polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8">
|
||||
<tspan x="-147.858" y="229.8">pad 0 (sink)</tspan>
|
||||
</text>
|
||||
</svg>
|
After Width: | Height: | Size: 4.5 KiB |
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,163 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||
<svg width="59cm" height="18cm" viewBox="-186 71 1178 346" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="318.9" y="129" width="208.1" height="249"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff765a" x="318.9" y="129" width="208.1" height="249"/>
|
||||
</g>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-2" y="73" width="806" height="343"/>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.5" y1="167" x2="-30.7361" y2="166.729"/>
|
||||
<polygon style="fill: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.732" y1="205.184" x2="980.066" y2="205.212"/>
|
||||
<polygon style="fill: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139.96" y="155">
|
||||
<tspan x="-139.96" y="155">pad 0 (sink)</tspan>
|
||||
</text>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.04" y="195">
|
||||
<tspan x="849.04" y="195">pad 2 (source)</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="5.5" y="120" width="159" height="104"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="5.5" y="120" width="159" height="104"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="62.5" y="136" width="94" height="77"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="62.5" y="136" width="94" height="77"/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="30.5" y="89">
|
||||
<tspan x="30.5" y="89"></tspan>
|
||||
</text>
|
||||
<text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="9.53836" y="88.9138">
|
||||
<tspan x="9.53836" y="88.9138">sink media</tspan>
|
||||
<tspan x="9.53836" y="104.914">bus format</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/>
|
||||
</g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="62.5" y2="213"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="62.5" y2="136"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="156.5" y2="213"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="156.5" y2="136"/>
|
||||
<text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442">
|
||||
<tspan x="334.704" y="149.442">sink compose</tspan>
|
||||
<tspan x="334.704" y="165.442">selection (scaling)</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="409.322" y="194.565" width="100.186" height="71.4523"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="409.322" y="194.565" width="100.186" height="71.4523"/>
|
||||
</g>
|
||||
<text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="689.5" y="105.128">
|
||||
<tspan x="689.5" y="105.128">source media</tspan>
|
||||
<tspan x="689.5" y="121.128">bus format</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="688.488" y="173.834" width="100.186" height="71.4523"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="688.488" y="173.834" width="100.186" height="71.4523"/>
|
||||
</g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="245.286" x2="409.322" y2="266.018"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="173.834" x2="409.322" y2="194.565"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="245.286" x2="509.508" y2="266.018"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="173.834" x2="509.508" y2="194.565"/>
|
||||
<text style="fill: #ff765a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="325" y="103">
|
||||
<tspan x="325" y="103">sink compose</tspan>
|
||||
<tspan x="325" y="119">bounds selection</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.098" y1="341.8" x2="-30.3343" y2="341.529"/>
|
||||
<polygon style="fill: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139" y="329">
|
||||
<tspan x="-139" y="329">pad 1 (sink)</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="7.80824" y="292.8" width="112.092" height="82.2"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="7.80824" y="292.8" width="112.092" height="82.2"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="52.9" y="314.8" width="58.1" height="50.2"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="52.9" y="314.8" width="58.1" height="50.2"/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="31.9" y="259.8">
|
||||
<tspan x="31.9" y="259.8"></tspan>
|
||||
</text>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="251.9" x2="52.9" y2="314.8"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="316" x2="52.9" y2="365"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="316" x2="111" y2="365"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="251.9" x2="111" y2="314.8"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="358.9" y="251.9" width="75.1" height="64.1"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="443.262" y="284.466" width="64.738" height="48.534"/>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="693.428" y="324.734" width="63.572" height="49.266"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="693.428" y="324.734" width="63.572" height="49.266"/>
|
||||
</g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="374" x2="443.262" y2="333"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="324.734" x2="443.262" y2="284.466"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="374" x2="508" y2="333"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="324.734" x2="508" y2="284.466"/>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.94" y1="343.984" x2="980.274" y2="344.012"/>
|
||||
<polygon style="fill: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.248" y="333.8">
|
||||
<tspan x="849.248" y="333.8">pad 3 (source)</tspan>
|
||||
</text>
|
||||
<text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="197" y="91">
|
||||
<tspan x="197" y="91">sink</tspan>
|
||||
<tspan x="197" y="107">crop</tspan>
|
||||
<tspan x="197" y="123">selection</tspan>
|
||||
</text>
|
||||
<text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="553" y="95">
|
||||
<tspan x="553" y="95">source</tspan>
|
||||
<tspan x="553" y="111">crop</tspan>
|
||||
<tspan x="553" y="127">selection</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="211" y1="132" x2="166.21" y2="135.287"/>
|
||||
<polygon style="fill: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="209" y1="131" x2="115.581" y2="306.209"/>
|
||||
<polygon style="fill: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.492" y1="133.214" x2="514.916" y2="186.469"/>
|
||||
<polygon style="fill: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.072" y1="133.787" x2="510.618" y2="275.089"/>
|
||||
<polygon style="fill: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 12 KiB |
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||
<svg width="59cm" height="17cm" viewBox="-194 128 1179 330" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="806" height="327"/>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/>
|
||||
</g>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="49.5" y="204" width="94" height="77"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="49.5" y="204" width="94" height="77"/>
|
||||
</g>
|
||||
<text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="60" y="224">
|
||||
<tspan x="60" y="224">sink</tspan>
|
||||
<tspan x="60" y="240">crop</tspan>
|
||||
<tspan x="60" y="256">selection</tspan>
|
||||
</text>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158">
|
||||
<tspan x="29.5" y="158"></tspan>
|
||||
</text>
|
||||
<text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914">
|
||||
<tspan x="8.53836" y="157.914">sink media</tspan>
|
||||
<tspan x="8.53836" y="173.914">bus format</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/>
|
||||
</g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="49.5" y2="281"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="49.5" y2="204"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="143.5" y2="281"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="143.5" y2="204"/>
|
||||
<text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442">
|
||||
<tspan x="334.704" y="149.442">sink compose</tspan>
|
||||
<tspan x="334.704" y="165.442">selection (scaling)</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="382.322" y="199.565" width="100.186" height="71.4523"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="382.322" y="199.565" width="100.186" height="71.4523"/>
|
||||
</g>
|
||||
<text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="543.322" y="149.442">
|
||||
<tspan x="543.322" y="149.442">source</tspan>
|
||||
<tspan x="543.322" y="165.442">crop</tspan>
|
||||
<tspan x="543.322" y="181.442">selection</tspan>
|
||||
</text>
|
||||
<text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="691.5" y="157.128">
|
||||
<tspan x="691.5" y="157.128">source media</tspan>
|
||||
<tspan x="691.5" y="173.128">bus format</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="690.488" y="225.834" width="100.186" height="71.4523"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="690.488" y="225.834" width="100.186" height="71.4523"/>
|
||||
</g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="297.286" x2="382.322" y2="271.018"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="225.834" x2="382.322" y2="199.565"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="297.286" x2="482.508" y2="271.018"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="225.834" x2="482.508" y2="199.565"/>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="816.6" y1="249.984" x2="972.934" y2="250.012"/>
|
||||
<polygon style="fill: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="841.908" y="239.8">
|
||||
<tspan x="841.908" y="239.8">pad 1 (source)</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/>
|
||||
<polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8">
|
||||
<tspan x="-147.858" y="229.8">pad 0 (sink)</tspan>
|
||||
</text>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="389.822" y="276.666" width="100.186" height="71.4523"/>
|
||||
<g>
|
||||
<rect style="fill: #ffffff" x="689.988" y="345.934" width="100.186" height="71.4523"/>
|
||||
<rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="689.988" y="345.934" width="100.186" height="71.4523"/>
|
||||
</g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="417.386" x2="389.822" y2="348.118"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="345.934" x2="389.822" y2="276.666"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="417.386" x2="490.008" y2="348.118"/>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="345.934" x2="490.008" y2="276.666"/>
|
||||
<g>
|
||||
<ellipse style="fill: #ffffff" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
|
||||
<ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="814.1" y1="384.084" x2="970.434" y2="384.112"/>
|
||||
<polygon style="fill: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/>
|
||||
</g>
|
||||
<text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="839.408" y="373.9">
|
||||
<tspan x="839.408" y="373.9">pad 2 (source)</tspan>
|
||||
</text>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546" y1="191" x2="492.157" y2="198.263"/>
|
||||
<polygon style="fill: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/>
|
||||
</g>
|
||||
<g>
|
||||
<line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546.908" y1="190.725" x2="495.383" y2="268.548"/>
|
||||
<polygon style="fill: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/>
|
||||
<polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.8 KiB |
|
@ -28,8 +28,8 @@ documentation.</contrib>
|
|||
<firstname>Hans</firstname>
|
||||
<surname>Verkuil</surname>
|
||||
<contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl,
|
||||
the extended control ioctls and major parts of the sliced VBI
|
||||
API.</contrib>
|
||||
the extended control ioctls, major parts of the sliced VBI API, the
|
||||
MPEG encoder and decoder APIs and the DV Timings API.</contrib>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>hverkuil@xs4all.nl</email>
|
||||
|
@ -96,6 +96,17 @@ Remote Controller chapter.</contrib>
|
|||
</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
|
||||
<author>
|
||||
<firstname>Sakari</firstname>
|
||||
<surname>Ailus</surname>
|
||||
<contrib>Subdev selections API.</contrib>
|
||||
<affiliation>
|
||||
<address>
|
||||
<email>sakari.ailus@iki.fi</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
<copyright>
|
||||
|
@ -112,6 +123,7 @@ Remote Controller chapter.</contrib>
|
|||
<year>2009</year>
|
||||
<year>2010</year>
|
||||
<year>2011</year>
|
||||
<year>2012</year>
|
||||
<holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
|
||||
Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab,
|
||||
Pawel Osciak</holder>
|
||||
|
@ -127,6 +139,28 @@ structs, ioctls) must be noted in more detail in the history chapter
|
|||
(compat.xml), along with the possible impact on existing drivers and
|
||||
applications. -->
|
||||
|
||||
<revision>
|
||||
<revnumber>3.5</revnumber>
|
||||
<date>2012-05-07</date>
|
||||
<authorinitials>sa, sn</authorinitials>
|
||||
<revremark>Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev
|
||||
selections API. Improved the description of V4L2_CID_COLORFX
|
||||
control, added V4L2_CID_COLORFX_CBCR control.
|
||||
Added camera controls V4L2_CID_AUTO_EXPOSURE_BIAS,
|
||||
V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, V4L2_CID_IMAGE_STABILIZATION,
|
||||
V4L2_CID_ISO_SENSITIVITY, V4L2_CID_ISO_SENSITIVITY_AUTO,
|
||||
V4L2_CID_EXPOSURE_METERING, V4L2_CID_SCENE_MODE,
|
||||
V4L2_CID_3A_LOCK, V4L2_CID_AUTO_FOCUS_START,
|
||||
V4L2_CID_AUTO_FOCUS_STOP, V4L2_CID_AUTO_FOCUS_STATUS
|
||||
and V4L2_CID_AUTO_FOCUS_RANGE.
|
||||
</revremark>
|
||||
<date>2012-05-01</date>
|
||||
<authorinitials>hv</authorinitials>
|
||||
<revremark>Added VIDIOC_ENUM_DV_TIMINGS, VIDIOC_QUERY_DV_TIMINGS and
|
||||
VIDIOC_DV_TIMINGS_CAP.
|
||||
</revremark>
|
||||
</revision>
|
||||
|
||||
<revision>
|
||||
<revnumber>3.4</revnumber>
|
||||
<date>2012-01-25</date>
|
||||
|
@ -433,7 +467,7 @@ and discussions on the V4L mailing list.</revremark>
|
|||
</partinfo>
|
||||
|
||||
<title>Video for Linux Two API Specification</title>
|
||||
<subtitle>Revision 3.3</subtitle>
|
||||
<subtitle>Revision 3.5</subtitle>
|
||||
|
||||
<chapter id="common">
|
||||
&sub-common;
|
||||
|
@ -491,10 +525,12 @@ and discussions on the V4L mailing list.</revremark>
|
|||
&sub-dbg-g-register;
|
||||
&sub-decoder-cmd;
|
||||
&sub-dqevent;
|
||||
&sub-dv-timings-cap;
|
||||
&sub-encoder-cmd;
|
||||
&sub-enumaudio;
|
||||
&sub-enumaudioout;
|
||||
&sub-enum-dv-presets;
|
||||
&sub-enum-dv-timings;
|
||||
&sub-enum-fmt;
|
||||
&sub-enum-framesizes;
|
||||
&sub-enum-frameintervals;
|
||||
|
@ -529,6 +565,7 @@ and discussions on the V4L mailing list.</revremark>
|
|||
&sub-querycap;
|
||||
&sub-queryctrl;
|
||||
&sub-query-dv-preset;
|
||||
&sub-query-dv-timings;
|
||||
&sub-querystd;
|
||||
&sub-prepare-buf;
|
||||
&sub-reqbufs;
|
||||
|
@ -540,6 +577,7 @@ and discussions on the V4L mailing list.</revremark>
|
|||
&sub-subdev-g-crop;
|
||||
&sub-subdev-g-fmt;
|
||||
&sub-subdev-g-frame-interval;
|
||||
&sub-subdev-g-selection;
|
||||
&sub-subscribe-event;
|
||||
<!-- End of ioctls. -->
|
||||
&sub-mmap;
|
||||
|
|
|
@ -48,6 +48,12 @@
|
|||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental"> experimental </link>
|
||||
interface and may change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>This ioctl is used to create buffers for <link linkend="mmap">memory
|
||||
mapped</link> or <link linkend="userp">user pointer</link>
|
||||
I/O. It can be used as an alternative or in addition to the
|
||||
|
@ -94,16 +100,18 @@ information.</para>
|
|||
<entry>The number of buffers requested or granted.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-memory;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>memory</structfield></entry>
|
||||
<entry>Applications set this field to
|
||||
<constant>V4L2_MEMORY_MMAP</constant> or
|
||||
<constant>V4L2_MEMORY_USERPTR</constant>.</entry>
|
||||
<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
|
||||
/></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-format;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>format</structfield></entry>
|
||||
<entry>Filled in by the application, preserved by the driver.</entry>
|
||||
<entry>Filled in by the application, preserved by the driver.
|
||||
See <xref linkend="v4l2-format" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -65,7 +65,7 @@ output.</para>
|
|||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>Type of the data stream, set by the application.
|
||||
Only these types are valid here:
|
||||
|
@ -73,7 +73,7 @@ Only these types are valid here:
|
|||
<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
|
||||
<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
|
||||
defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
|
||||
and higher.</entry>
|
||||
and higher. See <xref linkend="v4l2-buf-type" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry>
|
||||
|
|
|
@ -0,0 +1,211 @@
|
|||
<refentry id="vidioc-dv-timings-cap">
|
||||
<refmeta>
|
||||
<refentrytitle>ioctl VIDIOC_DV_TIMINGS_CAP</refentrytitle>
|
||||
&manvol;
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>VIDIOC_DV_TIMINGS_CAP</refname>
|
||||
<refpurpose>The capabilities of the Digital Video receiver/transmitter</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>int <function>ioctl</function></funcdef>
|
||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
||||
<paramdef>int <parameter>request</parameter></paramdef>
|
||||
<paramdef>struct v4l2_dv_timings_cap *<parameter>argp</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Arguments</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>fd</parameter></term>
|
||||
<listitem>
|
||||
<para>&fd;</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>request</parameter></term>
|
||||
<listitem>
|
||||
<para>VIDIOC_DV_TIMINGS_CAP</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>argp</parameter></term>
|
||||
<listitem>
|
||||
<para></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental"> experimental </link>
|
||||
interface and may change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>To query the available timings, applications initialize the
|
||||
<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-timings-cap;
|
||||
and call the <constant>VIDIOC_DV_TIMINGS_CAP</constant> ioctl with a pointer to this
|
||||
structure. Drivers fill the rest of the structure or return an
|
||||
&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
|
||||
applications shall begin at index zero, incrementing by one until the
|
||||
driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
|
||||
different set of DV timings after switching the video input or
|
||||
output.</para>
|
||||
|
||||
<table pgwide="1" frame="none" id="v4l2-bt-timings-cap">
|
||||
<title>struct <structname>v4l2_bt_timings_cap</structname></title>
|
||||
<tgroup cols="3">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>min_width</structfield></entry>
|
||||
<entry>Minimum width of the active video in pixels.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>max_width</structfield></entry>
|
||||
<entry>Maximum width of the active video in pixels.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>min_height</structfield></entry>
|
||||
<entry>Minimum height of the active video in lines.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>max_height</structfield></entry>
|
||||
<entry>Maximum height of the active video in lines.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u64</entry>
|
||||
<entry><structfield>min_pixelclock</structfield></entry>
|
||||
<entry>Minimum pixelclock frequency in Hz.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u64</entry>
|
||||
<entry><structfield>max_pixelclock</structfield></entry>
|
||||
<entry>Maximum pixelclock frequency in Hz.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>standards</structfield></entry>
|
||||
<entry>The video standard(s) supported by the hardware.
|
||||
See <xref linkend="dv-bt-standards"/> for a list of standards.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>capabilities</structfield></entry>
|
||||
<entry>Several flags giving more information about the capabilities.
|
||||
See <xref linkend="dv-bt-cap-capabilities"/> for a description of the flags.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>reserved</structfield>[16]</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<table pgwide="1" frame="none" id="v4l2-dv-timings-cap">
|
||||
<title>struct <structname>v4l2_dv_timings_cap</structname></title>
|
||||
<tgroup cols="4">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>reserved</structfield>[3]</entry>
|
||||
<entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>union</entry>
|
||||
<entry><structfield></structfield></entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>&v4l2-bt-timings-cap;</entry>
|
||||
<entry><structfield>bt</structfield></entry>
|
||||
<entry>BT.656/1120 timings capabilities of the hardware.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>raw_data</structfield>[32]</entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<table pgwide="1" frame="none" id="dv-bt-cap-capabilities">
|
||||
<title>DV BT Timing capabilities</title>
|
||||
<tgroup cols="2">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>Flag</entry>
|
||||
<entry>Description</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_CAP_INTERLACED</entry>
|
||||
<entry>Interlaced formats are supported.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_CAP_PROGRESSIVE</entry>
|
||||
<entry>Progressive formats are supported.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_CAP_REDUCED_BLANKING</entry>
|
||||
<entry>CVT/GTF specific: the timings can make use of reduced blanking (CVT)
|
||||
or the 'Secondary GTF' curve (GTF).
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_CAP_CUSTOM</entry>
|
||||
<entry>Can support non-standard timings, i.e. timings not belonging to the
|
||||
standards set in the <structfield>standards</structfield> field.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
&return-value;
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-parent-document: "v4l2.sgml"
|
||||
indent-tabs-mode: nil
|
||||
End:
|
||||
-->
|
|
@ -48,6 +48,10 @@
|
|||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
|
||||
New drivers and applications should use &VIDIOC-ENUM-DV-TIMINGS; instead.
|
||||
</para>
|
||||
|
||||
<para>To query the attributes of a DV preset, applications initialize the
|
||||
<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset;
|
||||
and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this
|
||||
|
|
|
@ -0,0 +1,119 @@
|
|||
<refentry id="vidioc-enum-dv-timings">
|
||||
<refmeta>
|
||||
<refentrytitle>ioctl VIDIOC_ENUM_DV_TIMINGS</refentrytitle>
|
||||
&manvol;
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>VIDIOC_ENUM_DV_TIMINGS</refname>
|
||||
<refpurpose>Enumerate supported Digital Video timings</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>int <function>ioctl</function></funcdef>
|
||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
||||
<paramdef>int <parameter>request</parameter></paramdef>
|
||||
<paramdef>struct v4l2_enum_dv_timings *<parameter>argp</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Arguments</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>fd</parameter></term>
|
||||
<listitem>
|
||||
<para>&fd;</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>request</parameter></term>
|
||||
<listitem>
|
||||
<para>VIDIOC_ENUM_DV_TIMINGS</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>argp</parameter></term>
|
||||
<listitem>
|
||||
<para></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental"> experimental </link>
|
||||
interface and may change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>While some DV receivers or transmitters support a wide range of timings, others
|
||||
support only a limited number of timings. With this ioctl applications can enumerate a list
|
||||
of known supported timings. Call &VIDIOC-DV-TIMINGS-CAP; to check if it also supports other
|
||||
standards or even custom timings that are not in this list.</para>
|
||||
|
||||
<para>To query the available timings, applications initialize the
|
||||
<structfield>index</structfield> field and zero the reserved array of &v4l2-enum-dv-timings;
|
||||
and call the <constant>VIDIOC_ENUM_DV_TIMINGS</constant> ioctl with a pointer to this
|
||||
structure. Drivers fill the rest of the structure or return an
|
||||
&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
|
||||
applications shall begin at index zero, incrementing by one until the
|
||||
driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
|
||||
different set of DV timings after switching the video input or
|
||||
output.</para>
|
||||
|
||||
<table pgwide="1" frame="none" id="v4l2-enum-dv-timings">
|
||||
<title>struct <structname>v4l2_enum_dv_timings</structname></title>
|
||||
<tgroup cols="3">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>index</structfield></entry>
|
||||
<entry>Number of the DV timings, set by the
|
||||
application.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>reserved</structfield>[3]</entry>
|
||||
<entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-dv-timings;</entry>
|
||||
<entry><structfield>timings</structfield></entry>
|
||||
<entry>The timings.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
&return-value;
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><errorcode>EINVAL</errorcode></term>
|
||||
<listitem>
|
||||
<para>The &v4l2-enum-dv-timings; <structfield>index</structfield>
|
||||
is out of bounds.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!--
|
||||
Local Variables:
|
||||
mode: sgml
|
||||
sgml-parent-document: "v4l2.sgml"
|
||||
indent-tabs-mode: nil
|
||||
End:
|
||||
-->
|
|
@ -71,7 +71,7 @@ the application. This is in no way related to the <structfield>
|
|||
pixelformat</structfield> field.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>Type of the data stream, set by the application.
|
||||
Only these types are valid here:
|
||||
|
@ -81,7 +81,7 @@ Only these types are valid here:
|
|||
<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>,
|
||||
<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
|
||||
defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
|
||||
and higher.</entry>
|
||||
and higher. See <xref linkend="v4l2-buf-type" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -285,7 +285,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
|
|||
<row>
|
||||
<entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry>
|
||||
<entry>0x00000002</entry>
|
||||
<entry>This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry>
|
||||
<entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_IN_CAP_STD</constant></entry>
|
||||
|
|
|
@ -170,7 +170,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
|
|||
<row>
|
||||
<entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry>
|
||||
<entry>0x00000002</entry>
|
||||
<entry>This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry>
|
||||
<entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_OUT_CAP_STD</constant></entry>
|
||||
|
|
|
@ -100,14 +100,14 @@ changed and <constant>VIDIOC_S_CROP</constant> returns the
|
|||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>Type of the data stream, set by the application.
|
||||
Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
|
||||
<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
|
||||
<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
|
||||
defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
|
||||
and higher.</entry>
|
||||
and higher. See <xref linkend="v4l2-buf-type" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-rect;</entry>
|
||||
|
|
|
@ -48,6 +48,12 @@
|
|||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>These ioctls are <emphasis role="bold">deprecated</emphasis>.
|
||||
New drivers and applications should use &VIDIOC-G-DV-TIMINGS; and &VIDIOC-S-DV-TIMINGS;
|
||||
instead.
|
||||
</para>
|
||||
|
||||
<para>To query and select the current DV preset, applications
|
||||
use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant>
|
||||
ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<refnamediv>
|
||||
<refname>VIDIOC_G_DV_TIMINGS</refname>
|
||||
<refname>VIDIOC_S_DV_TIMINGS</refname>
|
||||
<refpurpose>Get or set custom DV timings for input or output</refpurpose>
|
||||
<refpurpose>Get or set DV timings for input or output</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
|
@ -48,12 +48,15 @@
|
|||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>To set custom DV timings for the input or output, applications use the
|
||||
<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current custom timings,
|
||||
<para>To set DV timings for the input or output, applications use the
|
||||
<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current timings,
|
||||
applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing
|
||||
information is filled in using the structure &v4l2-dv-timings;. These ioctls take
|
||||
a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported
|
||||
or the timing values are not correct, the driver returns &EINVAL;.</para>
|
||||
<para>The <filename>linux/v4l2-dv-timings.h</filename> header can be used to get the
|
||||
timings of the formats in the <xref linkend="cea861" /> and <xref linkend="vesadmt" />
|
||||
standards.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
|
@ -83,12 +86,13 @@ or the timing values are not correct, the driver returns &EINVAL;.</para>
|
|||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>width</structfield></entry>
|
||||
<entry>Width of the active video in pixels</entry>
|
||||
<entry>Width of the active video in pixels.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>height</structfield></entry>
|
||||
<entry>Height of the active video in lines</entry>
|
||||
<entry>Height of the active video frame in lines. So for interlaced formats the
|
||||
height of the active video in each field is <structfield>height</structfield>/2.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
@ -125,32 +129,52 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
|
|||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>vfrontporch</structfield></entry>
|
||||
<entry>Vertical front porch in lines</entry>
|
||||
<entry>Vertical front porch in lines. For interlaced formats this refers to the
|
||||
odd field (aka field 1).</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>vsync</structfield></entry>
|
||||
<entry>Vertical sync length in lines</entry>
|
||||
<entry>Vertical sync length in lines. For interlaced formats this refers to the
|
||||
odd field (aka field 1).</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>vbackporch</structfield></entry>
|
||||
<entry>Vertical back porch in lines</entry>
|
||||
<entry>Vertical back porch in lines. For interlaced formats this refers to the
|
||||
odd field (aka field 1).</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>il_vfrontporch</structfield></entry>
|
||||
<entry>Vertical front porch in lines for bottom field of interlaced field formats</entry>
|
||||
<entry>Vertical front porch in lines for the even field (aka field 2) of
|
||||
interlaced field formats.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>il_vsync</structfield></entry>
|
||||
<entry>Vertical sync length in lines for bottom field of interlaced field formats</entry>
|
||||
<entry>Vertical sync length in lines for the even field (aka field 2) of
|
||||
interlaced field formats.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>il_vbackporch</structfield></entry>
|
||||
<entry>Vertical back porch in lines for bottom field of interlaced field formats</entry>
|
||||
<entry>Vertical back porch in lines for the even field (aka field 2) of
|
||||
interlaced field formats.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>standards</structfield></entry>
|
||||
<entry>The video standard(s) this format belongs to. This will be filled in by
|
||||
the driver. Applications must set this to 0. See <xref linkend="dv-bt-standards"/>
|
||||
for a list of standards.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>flags</structfield></entry>
|
||||
<entry>Several flags giving more information about the format.
|
||||
See <xref linkend="dv-bt-flags"/> for a description of the flags.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
|
@ -211,6 +235,90 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
|
|||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
<table pgwide="1" frame="none" id="dv-bt-standards">
|
||||
<title>DV BT Timing standards</title>
|
||||
<tgroup cols="2">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>Timing standard</entry>
|
||||
<entry>Description</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_STD_CEA861</entry>
|
||||
<entry>The timings follow the CEA-861 Digital TV Profile standard</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_STD_DMT</entry>
|
||||
<entry>The timings follow the VESA Discrete Monitor Timings standard</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_STD_CVT</entry>
|
||||
<entry>The timings follow the VESA Coordinated Video Timings standard</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_BT_STD_GTF</entry>
|
||||
<entry>The timings follow the VESA Generalized Timings Formula standard</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
<table pgwide="1" frame="none" id="dv-bt-flags">
|
||||
<title>DV BT Timing flags</title>
|
||||
<tgroup cols="2">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>Flag</entry>
|
||||
<entry>Description</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_FL_REDUCED_BLANKING</entry>
|
||||
<entry>CVT/GTF specific: the timings use reduced blanking (CVT) or the 'Secondary
|
||||
GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
|
||||
intervals are reduced, allowing a higher resolution over the same
|
||||
bandwidth. This is a read-only flag, applications must not set this.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_FL_CAN_REDUCE_FPS</entry>
|
||||
<entry>CEA-861 specific: set for CEA-861 formats with a framerate that is a multiple
|
||||
of six. These formats can be optionally played at 1 / 1.001 speed to
|
||||
be compatible with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
|
||||
29.97 frames per second. If the transmitter can't generate such frequencies, then the
|
||||
flag will also be cleared. This is a read-only flag, applications must not set this.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_FL_REDUCED_FPS</entry>
|
||||
<entry>CEA-861 specific: only valid for video transmitters, the flag is cleared
|
||||
by receivers. It is also only valid for formats with the V4L2_DV_FL_CAN_REDUCE_FPS flag
|
||||
set, for other formats the flag will be cleared by the driver.
|
||||
|
||||
If the application sets this flag, then the pixelclock used to set up the transmitter is
|
||||
divided by 1.001 to make it compatible with NTSC framerates. If the transmitter
|
||||
can't generate such frequencies, then the flag will also be cleared.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>V4L2_DV_FL_HALF_LINE</entry>
|
||||
<entry>Specific to interlaced formats: if set, then field 1 (aka the odd field)
|
||||
is really one half-line longer and field 2 (aka the even field) is really one half-line
|
||||
shorter, so each field has exactly the same number of half-lines. Whether half-lines can be
|
||||
detected or used depends on the hardware.
|
||||
</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
&return-value;
|
||||
|
|
|
@ -265,6 +265,32 @@ These controls are described in <xref
|
|||
These controls are described in <xref
|
||||
linkend="flash-controls" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
|
||||
<entry>0x9d0000</entry>
|
||||
<entry>The class containing JPEG compression controls.
|
||||
These controls are described in <xref
|
||||
linkend="jpeg-controls" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CTRL_CLASS_IMAGE_SOURCE</constant></entry>
|
||||
<entry>0x9e0000</entry> <entry>The class containing image
|
||||
source controls. These controls are described in <xref
|
||||
linkend="image-source-controls" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CTRL_CLASS_IMAGE_PROC</constant></entry>
|
||||
<entry>0x9f0000</entry> <entry>The class containing image
|
||||
processing controls. These controls are described in <xref
|
||||
linkend="image-process-controls" />.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
|
||||
<entry>0x9d0000</entry>
|
||||
<entry>The class containing JPEG compression controls.
|
||||
These controls are described in <xref
|
||||
linkend="jpeg-controls" />.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
|
|
@ -116,7 +116,7 @@ this ioctl.</para>
|
|||
<colspec colname="c4" />
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry></entry>
|
||||
<entry>Type of the data stream, see <xref
|
||||
|
|
|
@ -95,14 +95,14 @@ the &v4l2-output; <structfield>modulator</structfield> field and the
|
|||
&v4l2-modulator; <structfield>index</structfield> field.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-tuner-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>The tuner type. This is the same value as in the
|
||||
&v4l2-tuner; <structfield>type</structfield> field. The type must be set
|
||||
&v4l2-tuner; <structfield>type</structfield> field. See The type must be set
|
||||
to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
|
||||
device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
|
||||
for all others. The field is not applicable to modulators, &ie; ignored
|
||||
by drivers.</entry>
|
||||
by drivers. See <xref linkend="v4l2-tuner-type" /></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -75,11 +75,12 @@ devices.</para>
|
|||
&cs-ustr;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry></entry>
|
||||
<entry>The buffer (stream) type, same as &v4l2-format;
|
||||
<structfield>type</structfield>, set by the application.</entry>
|
||||
<structfield>type</structfield>, set by the application. See <xref
|
||||
linkend="v4l2-buf-type" /></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>union</entry>
|
||||
|
|
|
@ -148,7 +148,7 @@ using the &VIDIOC-S-FMT; ioctl as described in <xref
|
|||
<structfield>service_lines</structfield>[1][0] to zero.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>Type of the data stream, see <xref
|
||||
linkend="v4l2-buf-type" />. Should be
|
||||
|
|
|
@ -107,7 +107,7 @@ user.<!-- FIXME Video inputs already have a name, the purpose of this
|
|||
field is not quite clear.--></para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-tuner-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry spanname="hspan">Type of the tuner, see <xref
|
||||
linkend="v4l2-tuner-type" />.</entry>
|
||||
|
|
|
@ -48,6 +48,12 @@
|
|||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental"> experimental </link>
|
||||
interface and may change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>Applications can optionally call the
|
||||
<constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer
|
||||
to the driver before actually enqueuing it, using the
|
||||
|
|
|
@ -49,6 +49,10 @@ input</refpurpose>
|
|||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
|
||||
New drivers and applications should use &VIDIOC-QUERY-DV-TIMINGS; instead.
|
||||
</para>
|
||||
|
||||
<para>The hardware may be able to detect the current DV preset
|
||||
automatically, similar to sensing the video standard. To do so, applications
|
||||
call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
<refentry id="vidioc-query-dv-timings">
|
||||
<refmeta>
|
||||
<refentrytitle>ioctl VIDIOC_QUERY_DV_TIMINGS</refentrytitle>
|
||||
&manvol;
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>VIDIOC_QUERY_DV_TIMINGS</refname>
|
||||
<refpurpose>Sense the DV preset received by the current
|
||||
input</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>int <function>ioctl</function></funcdef>
|
||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
||||
<paramdef>int <parameter>request</parameter></paramdef>
|
||||
<paramdef>struct v4l2_dv_timings *<parameter>argp</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Arguments</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>fd</parameter></term>
|
||||
<listitem>
|
||||
<para>&fd;</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>request</parameter></term>
|
||||
<listitem>
|
||||
<para>VIDIOC_QUERY_DV_TIMINGS</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>argp</parameter></term>
|
||||
<listitem>
|
||||
<para></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental"> experimental </link>
|
||||
interface and may change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>The hardware may be able to detect the current DV timings
|
||||
automatically, similar to sensing the video standard. To do so, applications
|
||||
call <constant>VIDIOC_QUERY_DV_TIMINGS</constant> with a pointer to a
|
||||
&v4l2-dv-timings;. Once the hardware detects the timings, it will fill in the
|
||||
timings structure.
|
||||
|
||||
If the timings could not be detected because there was no signal, then
|
||||
<errorcode>ENOLINK</errorcode> is returned. If a signal was detected, but
|
||||
it was unstable and the receiver could not lock to the signal, then
|
||||
<errorcode>ENOLCK</errorcode> is returned. If the receiver could lock to the signal,
|
||||
but the format is unsupported (e.g. because the pixelclock is out of range
|
||||
of the hardware capabilities), then the driver fills in whatever timings it
|
||||
could find and returns <errorcode>ERANGE</errorcode>. In that case the application
|
||||
can call &VIDIOC-DV-TIMINGS-CAP; to compare the found timings with the hardware's
|
||||
capabilities in order to give more precise feedback to the user.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
&return-value;
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><errorcode>ENOLINK</errorcode></term>
|
||||
<listitem>
|
||||
<para>No timings could be detected because no signal was found.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><errorcode>ENOLCK</errorcode></term>
|
||||
<listitem>
|
||||
<para>The signal was unstable and the hardware could not lock on to it.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><errorcode>ERANGE</errorcode></term>
|
||||
<listitem>
|
||||
<para>Timings were found, but they are out of range of the hardware
|
||||
capabilities.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
</refentry>
|
|
@ -127,7 +127,7 @@ the first control with a higher ID. Drivers which do not support this
|
|||
flag yet always return an &EINVAL;.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-ctrl-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>Type of control, see <xref
|
||||
linkend="v4l2-ctrl-type" />.</entry>
|
||||
|
@ -215,11 +215,12 @@ the array to zero.</entry>
|
|||
|
||||
<table pgwide="1" frame="none" id="v4l2-querymenu">
|
||||
<title>struct <structname>v4l2_querymenu</structname></title>
|
||||
<tgroup cols="3">
|
||||
<tgroup cols="4">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry></entry>
|
||||
<entry><structfield>id</structfield></entry>
|
||||
<entry>Identifies the control, set by the application
|
||||
from the respective &v4l2-queryctrl;
|
||||
|
@ -227,18 +228,38 @@ from the respective &v4l2-queryctrl;
|
|||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry></entry>
|
||||
<entry><structfield>index</structfield></entry>
|
||||
<entry>Index of the menu item, starting at zero, set by
|
||||
the application.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>union</entry>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
<entry></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>__u8</entry>
|
||||
<entry><structfield>name</structfield>[32]</entry>
|
||||
<entry>Name of the menu item, a NUL-terminated ASCII
|
||||
string. This information is intended for the user.</entry>
|
||||
string. This information is intended for the user. This field is valid
|
||||
for <constant>V4L2_CTRL_FLAG_MENU</constant> type controls.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>__s64</entry>
|
||||
<entry><structfield>value</structfield></entry>
|
||||
<entry>
|
||||
Value of the integer menu item. This field is valid for
|
||||
<constant>V4L2_CTRL_FLAG_INTEGER_MENU</constant> type
|
||||
controls.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry></entry>
|
||||
<entry><structfield>reserved</structfield></entry>
|
||||
<entry>Reserved for future extensions. Drivers must set
|
||||
the array to zero.</entry>
|
||||
|
@ -291,6 +312,20 @@ values which are actually different on the hardware.</entry>
|
|||
the menu items can be enumerated with the
|
||||
<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CTRL_TYPE_INTEGER_MENU</constant></entry>
|
||||
<entry>≥ 0</entry>
|
||||
<entry>1</entry>
|
||||
<entry>N-1</entry>
|
||||
<entry>
|
||||
The control has a menu of N choices. The values of the
|
||||
menu items can be enumerated with the
|
||||
<constant>VIDIOC_QUERYMENU</constant> ioctl. This is
|
||||
similar to <constant>V4L2_CTRL_TYPE_MENU</constant>
|
||||
except that instead of strings, the menu items are
|
||||
signed 64-bit integers.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry>
|
||||
<entry>0</entry>
|
||||
|
|
|
@ -92,18 +92,19 @@ streamoff.--></para>
|
|||
<entry>The number of buffers requested or granted.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-buf-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>Type of the stream or buffers, this is the same
|
||||
as the &v4l2-format; <structfield>type</structfield> field. See <xref
|
||||
linkend="v4l2-buf-type" /> for valid values.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-memory;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>memory</structfield></entry>
|
||||
<entry>Applications set this field to
|
||||
<constant>V4L2_MEMORY_MMAP</constant> or
|
||||
<constant>V4L2_MEMORY_USERPTR</constant>.</entry>
|
||||
<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
|
||||
/>.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -73,10 +73,11 @@ same value as in the &v4l2-input; <structfield>tuner</structfield>
|
|||
field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-tuner-type;</entry>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>The tuner type. This is the same value as in the
|
||||
&v4l2-tuner; <structfield>type</structfield> field.</entry>
|
||||
&v4l2-tuner; <structfield>type</structfield> field. See <xref
|
||||
linkend="v4l2-tuner-type" /></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -58,9 +58,12 @@
|
|||
<title>Description</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental">experimental</link>
|
||||
interface and may change in the future.</para>
|
||||
<title>Obsolete</title>
|
||||
|
||||
<para>This is an <link linkend="obsolete">obsolete</link>
|
||||
interface and may be removed in the future. It is superseded by
|
||||
<link linkend="vidioc-subdev-g-selection">the selection
|
||||
API</link>.</para>
|
||||
</note>
|
||||
|
||||
<para>To retrieve the current crop rectangle applications set the
|
||||
|
|
|
@ -0,0 +1,228 @@
|
|||
<refentry id="vidioc-subdev-g-selection">
|
||||
<refmeta>
|
||||
<refentrytitle>ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</refentrytitle>
|
||||
&manvol;
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>VIDIOC_SUBDEV_G_SELECTION</refname>
|
||||
<refname>VIDIOC_SUBDEV_S_SELECTION</refname>
|
||||
<refpurpose>Get or set selection rectangles on a subdev pad</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<funcsynopsis>
|
||||
<funcprototype>
|
||||
<funcdef>int <function>ioctl</function></funcdef>
|
||||
<paramdef>int <parameter>fd</parameter></paramdef>
|
||||
<paramdef>int <parameter>request</parameter></paramdef>
|
||||
<paramdef>struct v4l2_subdev_selection *<parameter>argp</parameter></paramdef>
|
||||
</funcprototype>
|
||||
</funcsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Arguments</title>
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>fd</parameter></term>
|
||||
<listitem>
|
||||
<para>&fd;</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>request</parameter></term>
|
||||
<listitem>
|
||||
<para>VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>argp</parameter></term>
|
||||
<listitem>
|
||||
<para></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental">experimental</link>
|
||||
interface and may change in the future.</para>
|
||||
</note>
|
||||
|
||||
<para>The selections are used to configure various image
|
||||
processing functionality performed by the subdevs which affect the
|
||||
image size. This currently includes cropping, scaling and
|
||||
composition.</para>
|
||||
|
||||
<para>The selection API replaces <link
|
||||
linkend="vidioc-subdev-g-crop">the old subdev crop API</link>. All
|
||||
the function of the crop API, and more, are supported by the
|
||||
selections API.</para>
|
||||
|
||||
<para>See <xref linkend="subdev"></xref> for
|
||||
more information on how each selection target affects the image
|
||||
processing pipeline inside the subdevice.</para>
|
||||
|
||||
<section>
|
||||
<title>Types of selection targets</title>
|
||||
|
||||
<para>There are two types of selection targets: actual and bounds.
|
||||
The ACTUAL targets are the targets which configure the hardware.
|
||||
The BOUNDS target will return a rectangle that contain all
|
||||
possible ACTUAL rectangles.</para>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>Discovering supported features</title>
|
||||
|
||||
<para>To discover which targets are supported, the user can
|
||||
perform <constant>VIDIOC_SUBDEV_G_SELECTION</constant> on them.
|
||||
Any unsupported target will return
|
||||
<constant>EINVAL</constant>.</para>
|
||||
</section>
|
||||
|
||||
<table pgwide="1" frame="none" id="v4l2-subdev-selection-targets">
|
||||
<title>V4L2 subdev selection targets</title>
|
||||
<tgroup cols="3">
|
||||
&cs-def;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL</constant></entry>
|
||||
<entry>0x0000</entry>
|
||||
<entry>Actual crop. Defines the cropping
|
||||
performed by the processing step.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS</constant></entry>
|
||||
<entry>0x0002</entry>
|
||||
<entry>Bounds of the crop rectangle.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL</constant></entry>
|
||||
<entry>0x0100</entry>
|
||||
<entry>Actual compose rectangle. Used to configure scaling
|
||||
on sink pads and composition on source pads.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
|
||||
<entry>0x0102</entry>
|
||||
<entry>Bounds of the compose rectangle.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<table pgwide="1" frame="none" id="v4l2-subdev-selection-flags">
|
||||
<title>V4L2 subdev selection flags</title>
|
||||
<tgroup cols="3">
|
||||
&cs-def;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant></entry>
|
||||
<entry>(1 << 0)</entry> <entry>Suggest the driver it
|
||||
should choose greater or equal rectangle (in size) than
|
||||
was requested. Albeit the driver may choose a lesser size,
|
||||
it will only do so due to hardware limitations. Without
|
||||
this flag (and
|
||||
<constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant>) the
|
||||
behaviour is to choose the closest possible
|
||||
rectangle.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant></entry>
|
||||
<entry>(1 << 1)</entry> <entry>Suggest the driver it
|
||||
should choose lesser or equal rectangle (in size) than was
|
||||
requested. Albeit the driver may choose a greater size, it
|
||||
will only do so due to hardware limitations.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant></entry>
|
||||
<entry>(1 << 2)</entry>
|
||||
<entry>The configuration should not be propagated to any
|
||||
further processing steps. If this flag is not given, the
|
||||
configuration is propagated inside the subdevice to all
|
||||
further processing steps.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<table pgwide="1" frame="none" id="v4l2-subdev-selection">
|
||||
<title>struct <structname>v4l2_subdev_selection</structname></title>
|
||||
<tgroup cols="3">
|
||||
&cs-str;
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>which</structfield></entry>
|
||||
<entry>Active or try selection, from
|
||||
&v4l2-subdev-format-whence;.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>pad</structfield></entry>
|
||||
<entry>Pad number as reported by the media framework.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>target</structfield></entry>
|
||||
<entry>Target selection rectangle. See
|
||||
<xref linkend="v4l2-subdev-selection-targets">.</xref>.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>flags</structfield></entry>
|
||||
<entry>Flags. See
|
||||
<xref linkend="v4l2-subdev-selection-flags">.</xref></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-rect;</entry>
|
||||
<entry><structfield>rect</structfield></entry>
|
||||
<entry>Selection rectangle, in pixels.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>reserved</structfield>[8]</entry>
|
||||
<entry>Reserved for future extensions. Applications and drivers must
|
||||
set the array to zero.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
&return-value;
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><errorcode>EBUSY</errorcode></term>
|
||||
<listitem>
|
||||
<para>The selection rectangle can't be changed because the
|
||||
pad is currently busy. This can be caused, for instance, by
|
||||
an active video stream on the pad. The ioctl must not be
|
||||
retried without performing another action to fix the problem
|
||||
first. Only returned by
|
||||
<constant>VIDIOC_SUBDEV_S_SELECTION</constant></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><errorcode>EINVAL</errorcode></term>
|
||||
<listitem>
|
||||
<para>The &v4l2-subdev-selection;
|
||||
<structfield>pad</structfield> references a non-existing
|
||||
pad, the <structfield>which</structfield> field references a
|
||||
non-existing format, or the selection target is not
|
||||
supported on the given subdev pad.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
</refentry>
|
|
@ -150,7 +150,8 @@ be able to justify all violations that remain in your patch.
|
|||
|
||||
Look through the MAINTAINERS file and the source code, and determine
|
||||
if your change applies to a specific subsystem of the kernel, with
|
||||
an assigned maintainer. If so, e-mail that person.
|
||||
an assigned maintainer. If so, e-mail that person. The script
|
||||
scripts/get_maintainer.pl can be very useful at this step.
|
||||
|
||||
If no maintainer is listed, or the maintainer does not respond, send
|
||||
your patch to the primary Linux kernel developer's mailing list,
|
||||
|
|
|
@ -8,9 +8,8 @@ Introduction
|
|||
weblink : http://www.st.com/spear
|
||||
|
||||
The ST Microelectronics SPEAr range of ARM9/CortexA9 System-on-Chip CPUs are
|
||||
supported by the 'spear' platform of ARM Linux. Currently SPEAr300,
|
||||
SPEAr310, SPEAr320 and SPEAr600 SOCs are supported. Support for the SPEAr13XX
|
||||
series is in progress.
|
||||
supported by the 'spear' platform of ARM Linux. Currently SPEAr1310,
|
||||
SPEAr1340, SPEAr300, SPEAr310, SPEAr320 and SPEAr600 SOCs are supported.
|
||||
|
||||
Hierarchy in SPEAr is as follows:
|
||||
|
||||
|
@ -26,33 +25,36 @@ Introduction
|
|||
- SPEAr600 (SOC)
|
||||
- SPEAr600 Evaluation Board
|
||||
- SPEAr13XX (13XX SOC series, based on ARM CORTEXA9)
|
||||
- SPEAr1300 (SOC)
|
||||
- SPEAr1310 (SOC)
|
||||
- SPEAr1310 Evaluation Board
|
||||
- SPEAr1340 (SOC)
|
||||
- SPEAr1340 Evaluation Board
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
A generic configuration is provided for each machine, and can be used as the
|
||||
default by
|
||||
make spear600_defconfig
|
||||
make spear300_defconfig
|
||||
make spear310_defconfig
|
||||
make spear320_defconfig
|
||||
make spear13xx_defconfig
|
||||
make spear3xx_defconfig
|
||||
make spear6xx_defconfig
|
||||
|
||||
Layout
|
||||
------
|
||||
|
||||
The common files for multiple machine families (SPEAr3XX, SPEAr6XX and
|
||||
SPEAr13XX) are located in the platform code contained in arch/arm/plat-spear
|
||||
The common files for multiple machine families (SPEAr3xx, SPEAr6xx and
|
||||
SPEAr13xx) are located in the platform code contained in arch/arm/plat-spear
|
||||
with headers in plat/.
|
||||
|
||||
Each machine series have a directory with name arch/arm/mach-spear followed by
|
||||
series name. Like mach-spear3xx, mach-spear6xx and mach-spear13xx.
|
||||
|
||||
Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c and for
|
||||
spear6xx is mach-spear6xx/spear6xx.c. mach-spear* also contain soc/machine
|
||||
specific files, like spear300.c, spear310.c, spear320.c and spear600.c.
|
||||
mach-spear* doesn't contains board specific files as they fully support
|
||||
Flattened Device Tree.
|
||||
Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c, for
|
||||
spear6xx is mach-spear6xx/spear6xx.c and for spear13xx family is
|
||||
mach-spear13xx/spear13xx.c. mach-spear* also contain soc/machine specific
|
||||
files, like spear1310.c, spear1340.c spear300.c, spear310.c, spear320.c and
|
||||
spear600.c. mach-spear* doesn't contains board specific files as they fully
|
||||
support Flattened Device Tree.
|
||||
|
||||
|
||||
Document Author
|
||||
|
|
|
@ -184,12 +184,14 @@ behind this approach is that a cgroup that aggressively uses a shared
|
|||
page will eventually get charged for it (once it is uncharged from
|
||||
the cgroup that brought it in -- this will happen on memory pressure).
|
||||
|
||||
But see section 8.2: when moving a task to another cgroup, its pages may
|
||||
be recharged to the new cgroup, if move_charge_at_immigrate has been chosen.
|
||||
|
||||
Exception: If CONFIG_CGROUP_CGROUP_MEM_RES_CTLR_SWAP is not used.
|
||||
When you do swapoff and make swapped-out pages of shmem(tmpfs) to
|
||||
be backed into memory in force, charges for pages are accounted against the
|
||||
caller of swapoff rather than the users of shmem.
|
||||
|
||||
|
||||
2.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP)
|
||||
|
||||
Swap Extension allows you to record charge for swap. A swapped-in page is
|
||||
|
@ -374,14 +376,15 @@ cgroup might have some charge associated with it, even though all
|
|||
tasks have migrated away from it. (because we charge against pages, not
|
||||
against tasks.)
|
||||
|
||||
Such charges are freed or moved to their parent. At moving, both of RSS
|
||||
and CACHES are moved to parent.
|
||||
rmdir() may return -EBUSY if freeing/moving fails. See 5.1 also.
|
||||
We move the stats to root (if use_hierarchy==0) or parent (if
|
||||
use_hierarchy==1), and no change on the charge except uncharging
|
||||
from the child.
|
||||
|
||||
Charges recorded in swap information is not updated at removal of cgroup.
|
||||
Recorded information is discarded and a cgroup which uses swap (swapcache)
|
||||
will be charged as a new owner of it.
|
||||
|
||||
About use_hierarchy, see Section 6.
|
||||
|
||||
5. Misc. interfaces.
|
||||
|
||||
|
@ -394,13 +397,15 @@ will be charged as a new owner of it.
|
|||
|
||||
Almost all pages tracked by this memory cgroup will be unmapped and freed.
|
||||
Some pages cannot be freed because they are locked or in-use. Such pages are
|
||||
moved to parent and this cgroup will be empty. This may return -EBUSY if
|
||||
VM is too busy to free/move all pages immediately.
|
||||
moved to parent(if use_hierarchy==1) or root (if use_hierarchy==0) and this
|
||||
cgroup will be empty.
|
||||
|
||||
Typical use case of this interface is that calling this before rmdir().
|
||||
Because rmdir() moves all pages to parent, some out-of-use page caches can be
|
||||
moved to the parent. If you want to avoid that, force_empty will be useful.
|
||||
|
||||
About use_hierarchy, see Section 6.
|
||||
|
||||
5.2 stat file
|
||||
|
||||
memory.stat file includes following statistics
|
||||
|
@ -430,17 +435,10 @@ hierarchical_memory_limit - # of bytes of memory limit with regard to hierarchy
|
|||
hierarchical_memsw_limit - # of bytes of memory+swap limit with regard to
|
||||
hierarchy under which memory cgroup is.
|
||||
|
||||
total_cache - sum of all children's "cache"
|
||||
total_rss - sum of all children's "rss"
|
||||
total_mapped_file - sum of all children's "cache"
|
||||
total_pgpgin - sum of all children's "pgpgin"
|
||||
total_pgpgout - sum of all children's "pgpgout"
|
||||
total_swap - sum of all children's "swap"
|
||||
total_inactive_anon - sum of all children's "inactive_anon"
|
||||
total_active_anon - sum of all children's "active_anon"
|
||||
total_inactive_file - sum of all children's "inactive_file"
|
||||
total_active_file - sum of all children's "active_file"
|
||||
total_unevictable - sum of all children's "unevictable"
|
||||
total_<counter> - # hierarchical version of <counter>, which in
|
||||
addition to the cgroup's own value includes the
|
||||
sum of all hierarchical children's values of
|
||||
<counter>, i.e. total_cache
|
||||
|
||||
# The following additional stats are dependent on CONFIG_DEBUG_VM.
|
||||
|
||||
|
@ -622,8 +620,7 @@ memory cgroup.
|
|||
bit | what type of charges would be moved ?
|
||||
-----+------------------------------------------------------------------------
|
||||
0 | A charge of an anonymous page(or swap of it) used by the target task.
|
||||
| Those pages and swaps must be used only by the target task. You must
|
||||
| enable Swap Extension(see 2.4) to enable move of swap charges.
|
||||
| You must enable Swap Extension(see 2.4) to enable move of swap charges.
|
||||
-----+------------------------------------------------------------------------
|
||||
1 | A charge of file pages(normal file, tmpfs file(e.g. ipc shared memory)
|
||||
| and swaps of tmpfs file) mmapped by the target task. Unlike the case of
|
||||
|
@ -636,8 +633,6 @@ memory cgroup.
|
|||
|
||||
8.3 TODO
|
||||
|
||||
- Implement madvise(2) to let users decide the vma to be moved or not to be
|
||||
moved.
|
||||
- All of moving charge operations are done under cgroup_mutex. It's not good
|
||||
behavior to hold the mutex too long, so we may need some trick.
|
||||
|
||||
|
|
|
@ -92,6 +92,14 @@ to work with it.
|
|||
|
||||
The _locked routines imply that the res_counter->lock is taken.
|
||||
|
||||
f. void res_counter_uncharge_until
|
||||
(struct res_counter *rc, struct res_counter *top,
|
||||
unsinged long val)
|
||||
|
||||
Almost same as res_cunter_uncharge() but propagation of uncharge
|
||||
stops when rc == top. This is useful when kill a res_coutner in
|
||||
child cgroup.
|
||||
|
||||
2.1 Other accounting routines
|
||||
|
||||
There are more routines that may help you with common needs, like
|
||||
|
|
|
@ -1,38 +1,34 @@
|
|||
Linux 2.4 on the CRIS architecture
|
||||
==================================
|
||||
$Id: README,v 1.7 2001/04/19 12:38:32 bjornw Exp $
|
||||
Linux on the CRIS architecture
|
||||
==============================
|
||||
|
||||
This is a port of Linux 2.4 to Axis Communications ETRAX 100LX embedded
|
||||
network CPU. For more information about CRIS and ETRAX please see further
|
||||
below.
|
||||
This is a port of Linux to Axis Communications ETRAX 100LX,
|
||||
ETRAX FS and ARTPEC-3 embedded network CPUs.
|
||||
|
||||
For more information about CRIS and ETRAX please see further below.
|
||||
|
||||
In order to compile this you need a version of gcc with support for the
|
||||
ETRAX chip family. Please see this link for more information on how to
|
||||
ETRAX chip family. Please see this link for more information on how to
|
||||
download the compiler and other tools useful when building and booting
|
||||
software for the ETRAX platform:
|
||||
|
||||
http://developer.axis.com/doc/software/devboard_lx/install-howto.html
|
||||
|
||||
<more specific information should come in this document later>
|
||||
http://developer.axis.com/wiki/doku.php?id=axis:install-howto-2_20
|
||||
|
||||
What is CRIS ?
|
||||
--------------
|
||||
|
||||
CRIS is an acronym for 'Code Reduced Instruction Set'. It is the CPU
|
||||
architecture in Axis Communication AB's range of embedded network CPU's,
|
||||
called ETRAX. The latest CPU is called ETRAX 100LX, where LX stands for
|
||||
'Linux' because the chip was designed to be a good host for the Linux
|
||||
operating system.
|
||||
called ETRAX.
|
||||
|
||||
The ETRAX 100LX chip
|
||||
--------------------
|
||||
|
||||
For reference, please see the press-release:
|
||||
For reference, please see the following link:
|
||||
|
||||
http://www.axis.com/news/us/001101_etrax.htm
|
||||
http://www.axis.com/products/dev_etrax_100lx/index.htm
|
||||
|
||||
The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad
|
||||
range of built-in interfaces, all with modern scatter/gather DMA.
|
||||
The ETRAX 100LX is a 100 MIPS processor with 8kB cache, MMU, and a very broad
|
||||
range of built-in interfaces, all with modern scatter/gather DMA.
|
||||
|
||||
Memory interfaces:
|
||||
|
||||
|
@ -51,20 +47,28 @@ I/O interfaces:
|
|||
* SCSI
|
||||
* two parallel-ports
|
||||
* two generic 8-bit ports
|
||||
|
||||
(not all interfaces are available at the same time due to chip pin
|
||||
|
||||
(not all interfaces are available at the same time due to chip pin
|
||||
multiplexing)
|
||||
|
||||
The previous version of the ETRAX, the ETRAX 100, sits in almost all of
|
||||
Axis shipping thin-servers like the Axis 2100 web camera or the ETRAX 100
|
||||
developer-board. It lacks an MMU so the Linux we run on that is a version
|
||||
of uClinux (Linux 2.0 without MM-support) ported to the CRIS architecture.
|
||||
The new Linux 2.4 port has full MM and needs a CPU with an MMU, so it will
|
||||
not run on the ETRAX 100.
|
||||
ETRAX 100LX is CRISv10 architecture.
|
||||
|
||||
A version of the Axis developer-board with ETRAX 100LX (running Linux
|
||||
2.4) is now available. For more information please see developer.axis.com.
|
||||
|
||||
The ETRAX FS and ARTPEC-3 chips
|
||||
-------------------------------
|
||||
|
||||
The ETRAX FS is a 200MHz 32-bit RISC processor with on-chip 16kB
|
||||
I-cache and 16kB D-cache and with a wide range of device interfaces
|
||||
including multiple high speed serial ports and an integrated USB 1.1 PHY.
|
||||
|
||||
The ARTPEC-3 is a variant of the ETRAX FS with additional IO-units
|
||||
used by the Axis Communications network cameras.
|
||||
|
||||
See below link for more information:
|
||||
|
||||
http://www.axis.com/products/dev_etrax_fs/index.htm
|
||||
|
||||
ETRAX FS and ARTPEC-3 are both CRISv32 architectures.
|
||||
|
||||
Bootlog
|
||||
-------
|
||||
|
@ -182,10 +186,6 @@ SwapFree: 0 kB
|
|||
-rwxr-xr-x 1 342 100 16252 Jan 01 00:00 telnetd
|
||||
|
||||
|
||||
(All programs are statically linked to the libc at this point - we have not ported the
|
||||
shared libraries yet)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,14 @@
|
|||
Freescale i.MX Platforms Device Tree Bindings
|
||||
-----------------------------------------------
|
||||
|
||||
i.MX23 Evaluation Kit
|
||||
Required root node properties:
|
||||
- compatible = "fsl,imx23-evk", "fsl,imx23";
|
||||
|
||||
i.MX28 Evaluation Kit
|
||||
Required root node properties:
|
||||
- compatible = "fsl,imx28-evk", "fsl,imx28";
|
||||
|
||||
i.MX51 Babbage Board
|
||||
Required root node properties:
|
||||
- compatible = "fsl,imx51-babbage", "fsl,imx51";
|
||||
|
@ -29,6 +37,10 @@ i.MX6 Quad SABRE Lite Board
|
|||
Required root node properties:
|
||||
- compatible = "fsl,imx6q-sabrelite", "fsl,imx6q";
|
||||
|
||||
i.MX6 Quad SABRE Smart Device Board
|
||||
Required root node properties:
|
||||
- compatible = "fsl,imx6q-sabresd", "fsl,imx6q";
|
||||
|
||||
Generic i.MX boards
|
||||
-------------------
|
||||
|
||||
|
|
|
@ -11,7 +11,9 @@ have PPIs or SGIs.
|
|||
Main node required properties:
|
||||
|
||||
- compatible : should be one of:
|
||||
"arm,cortex-a15-gic"
|
||||
"arm,cortex-a9-gic"
|
||||
"arm,cortex-a7-gic"
|
||||
"arm,arm11mp-gic"
|
||||
- interrupt-controller : Identifies the node as an interrupt controller
|
||||
- #interrupt-cells : Specifies the number of cells needed to encode an
|
||||
|
@ -39,8 +41,9 @@ Main node required properties:
|
|||
the GIC cpu interface register base and size.
|
||||
|
||||
Optional
|
||||
- interrupts : Interrupt source of the parent interrupt controller. Only
|
||||
present on secondary GICs.
|
||||
- interrupts : Interrupt source of the parent interrupt controller on
|
||||
secondary GICs, or VGIC maintainance interrupt on primary GIC (see
|
||||
below).
|
||||
|
||||
- cpu-offset : per-cpu offset within the distributor and cpu interface
|
||||
regions, used when the GIC doesn't have banked registers. The offset is
|
||||
|
@ -57,3 +60,31 @@ Example:
|
|||
<0xfff10100 0x100>;
|
||||
};
|
||||
|
||||
|
||||
* GIC virtualization extensions (VGIC)
|
||||
|
||||
For ARM cores that support the virtualization extensions, additional
|
||||
properties must be described (they only exist if the GIC is the
|
||||
primary interrupt controller).
|
||||
|
||||
Required properties:
|
||||
|
||||
- reg : Additional regions specifying the base physical address and
|
||||
size of the VGIC registers. The first additional region is the GIC
|
||||
virtual interface control register base and size. The 2nd additional
|
||||
region is the GIC virtual cpu interface register base and size.
|
||||
|
||||
- interrupts : VGIC maintainance interrupt.
|
||||
|
||||
Example:
|
||||
|
||||
interrupt-controller@2c001000 {
|
||||
compatible = "arm,cortex-a15-gic";
|
||||
#interrupt-cells = <3>;
|
||||
interrupt-controller;
|
||||
reg = <0x2c001000 0x1000>,
|
||||
<0x2c002000 0x1000>,
|
||||
<0x2c004000 0x2000>,
|
||||
<0x2c006000 0x2000>;
|
||||
interrupts = <1 9 0xf04>;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
* Samsung Exynos Interrupt Combiner Controller
|
||||
|
||||
Samsung's Exynos4 architecture includes a interrupt combiner controller which
|
||||
can combine interrupt sources as a group and provide a single interrupt request
|
||||
for the group. The interrupt request from each group are connected to a parent
|
||||
interrupt controller, such as GIC in case of Exynos4210.
|
||||
|
||||
The interrupt combiner controller consists of multiple combiners. Upto eight
|
||||
interrupt sources can be connected to a combiner. The combiner outputs one
|
||||
combined interrupt for its eight interrupt sources. The combined interrupt
|
||||
is usually connected to a parent interrupt controller.
|
||||
|
||||
A single node in the device tree is used to describe the interrupt combiner
|
||||
controller module (which includes multiple combiners). A combiner in the
|
||||
interrupt controller module shares config/control registers with other
|
||||
combiners. For example, a 32-bit interrupt enable/disable config register
|
||||
can accommodate upto 4 interrupt combiners (with each combiner supporting
|
||||
upto 8 interrupt sources).
|
||||
|
||||
Required properties:
|
||||
- compatible: should be "samsung,exynos4210-combiner".
|
||||
- interrupt-controller: Identifies the node as an interrupt controller.
|
||||
- #interrupt-cells: should be <2>. The meaning of the cells are
|
||||
* First Cell: Combiner Group Number.
|
||||
* Second Cell: Interrupt number within the group.
|
||||
- reg: Base address and size of interrupt combiner registers.
|
||||
- interrupts: The list of interrupts generated by the combiners which are then
|
||||
connected to a parent interrupt controller. The format of the interrupt
|
||||
specifier depends in the interrupt parent controller.
|
||||
|
||||
Optional properties:
|
||||
- samsung,combiner-nr: The number of interrupt combiners supported. If this
|
||||
property is not specified, the default number of combiners is assumed
|
||||
to be 16.
|
||||
- interrupt-parent: pHandle of the parent interrupt controller, if not
|
||||
inherited from the parent node.
|
||||
|
||||
|
||||
Example:
|
||||
|
||||
The following is a an example from the Exynos4210 SoC dtsi file.
|
||||
|
||||
combiner:interrupt-controller@10440000 {
|
||||
compatible = "samsung,exynos4210-combiner";
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0x10440000 0x1000>;
|
||||
interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>,
|
||||
<0 4 0>, <0 5 0>, <0 6 0>, <0 7 0>,
|
||||
<0 8 0>, <0 9 0>, <0 10 0>, <0 11 0>,
|
||||
<0 12 0>, <0 13 0>, <0 14 0>, <0 15 0>;
|
||||
};
|
|
@ -0,0 +1,18 @@
|
|||
* SPEAr ARM Timer
|
||||
|
||||
** Timer node required properties:
|
||||
|
||||
- compatible : Should be:
|
||||
"st,spear-timer"
|
||||
- reg: Address range of the timer registers
|
||||
- interrupt-parent: Should be the phandle for the interrupt controller
|
||||
that services interrupts for this device
|
||||
- interrupt: Should contain the timer interrupt number
|
||||
|
||||
Example:
|
||||
|
||||
timer@f0000000 {
|
||||
compatible = "st,spear-timer";
|
||||
reg = <0xf0000000 0x400>;
|
||||
interrupts = <2>;
|
||||
};
|
|
@ -2,25 +2,25 @@ ST SPEAr Platforms Device Tree Bindings
|
|||
---------------------------------------
|
||||
|
||||
Boards with the ST SPEAr600 SoC shall have the following properties:
|
||||
|
||||
Required root node property:
|
||||
|
||||
compatible = "st,spear600";
|
||||
|
||||
Boards with the ST SPEAr300 SoC shall have the following properties:
|
||||
|
||||
Required root node property:
|
||||
|
||||
compatible = "st,spear300";
|
||||
|
||||
Boards with the ST SPEAr310 SoC shall have the following properties:
|
||||
|
||||
Required root node property:
|
||||
|
||||
compatible = "st,spear310";
|
||||
|
||||
Boards with the ST SPEAr320 SoC shall have the following properties:
|
||||
|
||||
Required root node property:
|
||||
|
||||
compatible = "st,spear320";
|
||||
|
||||
Boards with the ST SPEAr1310 SoC shall have the following properties:
|
||||
Required root node property:
|
||||
compatible = "st,spear1310";
|
||||
|
||||
Boards with the ST SPEAr1340 SoC shall have the following properties:
|
||||
Required root node property:
|
||||
compatible = "st,spear1340";
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
NVIDIA Tegra AHB
|
||||
|
||||
Required properties:
|
||||
- compatible : "nvidia,tegra20-ahb" or "nvidia,tegra30-ahb"
|
||||
- reg : Should contain 1 register ranges(address and length)
|
||||
|
||||
Example:
|
||||
ahb: ahb@6000c004 {
|
||||
compatible = "nvidia,tegra20-ahb";
|
||||
reg = <0x6000c004 0x10c>; /* AHB Arbitration + Gizmo Controller */
|
||||
};
|
|
@ -0,0 +1,19 @@
|
|||
* Freescale MXS DMA
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "fsl,<chip>-dma-apbh" or "fsl,<chip>-dma-apbx"
|
||||
- reg : Should contain registers location and length
|
||||
|
||||
Supported chips:
|
||||
imx23, imx28.
|
||||
|
||||
Examples:
|
||||
dma-apbh@80004000 {
|
||||
compatible = "fsl,imx28-dma-apbh";
|
||||
reg = <0x80004000 2000>;
|
||||
};
|
||||
|
||||
dma-apbx@80024000 {
|
||||
compatible = "fsl,imx28-dma-apbx";
|
||||
reg = <0x80024000 2000>;
|
||||
};
|
|
@ -0,0 +1,17 @@
|
|||
* Synopsys Designware DMA Controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "snps,dma-spear1340"
|
||||
- reg: Address range of the DMAC registers
|
||||
- interrupt-parent: Should be the phandle for the interrupt controller
|
||||
that services interrupts for this device
|
||||
- interrupt: Should contain the DMAC interrupt number
|
||||
|
||||
Example:
|
||||
|
||||
dma@fc000000 {
|
||||
compatible = "snps,dma-spear1340";
|
||||
reg = <0xfc000000 0x1000>;
|
||||
interrupt-parent = <&vic1>;
|
||||
interrupts = <12>;
|
||||
};
|
|
@ -0,0 +1,38 @@
|
|||
Lantiq SoC External Bus memory mapped GPIO controller
|
||||
|
||||
By attaching hardware latches to the EBU it is possible to create output
|
||||
only gpios. This driver configures a special memory address, which when
|
||||
written to outputs 16 bit to the latches.
|
||||
|
||||
The node describing the memory mapped GPIOs needs to be a child of the node
|
||||
describing the "lantiq,localbus".
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "lantiq,gpio-mm-lantiq"
|
||||
- reg : Address and length of the register set for the device
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify optional parameters (currently
|
||||
unused).
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
|
||||
Optional properties:
|
||||
- lantiq,shadow : The default value that we shall assume as already set on the
|
||||
shift register cascade.
|
||||
|
||||
Example:
|
||||
|
||||
localbus@0 {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0x0 0x3ffffff /* addrsel0 */
|
||||
1 0 0x4000000 0x4000010>; /* addsel1 */
|
||||
compatible = "lantiq,localbus", "simple-bus";
|
||||
|
||||
gpio_mm0: gpio@4000000 {
|
||||
compatible = "lantiq,gpio-mm";
|
||||
reg = <1 0x0 0x10>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
lantiq,shadow = <0x77f>
|
||||
};
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
* Freescale MXS GPIO controller
|
||||
|
||||
The Freescale MXS GPIO controller is part of MXS PIN controller. The
|
||||
GPIOs are organized in port/bank. Each port consists of 32 GPIOs.
|
||||
|
||||
As the GPIO controller is embedded in the PIN controller and all the
|
||||
GPIO ports share the same IO space with PIN controller, the GPIO node
|
||||
will be represented as sub-nodes of MXS pinctrl node.
|
||||
|
||||
Required properties for GPIO node:
|
||||
- compatible : Should be "fsl,<soc>-gpio". The supported SoCs include
|
||||
imx23 and imx28.
|
||||
- interrupts : Should be the port interrupt shared by all 32 pins.
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify optional parameters (currently
|
||||
unused).
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
- #interrupt-cells : Should be 2. The first cell is the GPIO number.
|
||||
The second cell bits[3:0] is used to specify trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
|
||||
Note: Each GPIO port should have an alias correctly numbered in "aliases"
|
||||
node.
|
||||
|
||||
Examples:
|
||||
|
||||
aliases {
|
||||
gpio0 = &gpio0;
|
||||
gpio1 = &gpio1;
|
||||
gpio2 = &gpio2;
|
||||
gpio3 = &gpio3;
|
||||
gpio4 = &gpio4;
|
||||
};
|
||||
|
||||
pinctrl@80018000 {
|
||||
compatible = "fsl,imx28-pinctrl", "simple-bus";
|
||||
reg = <0x80018000 2000>;
|
||||
|
||||
gpio0: gpio@0 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <127>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio1: gpio@1 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <126>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio2: gpio@2 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <125>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio3: gpio@3 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <124>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
gpio4: gpio@4 {
|
||||
compatible = "fsl,imx28-gpio";
|
||||
interrupts = <123>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
};
|
|
@ -0,0 +1,42 @@
|
|||
Lantiq SoC Serial To Parallel (STP) GPIO controller
|
||||
|
||||
The Serial To Parallel (STP) is found on MIPS based Lantiq socs. It is a
|
||||
peripheral controller used to drive external shift register cascades. At most
|
||||
3 groups of 8 bits can be driven. The hardware is able to allow the DSL modem
|
||||
to drive the 2 LSBs of the cascade automatically.
|
||||
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "lantiq,gpio-stp-xway"
|
||||
- reg : Address and length of the register set for the device
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and
|
||||
the second cell is used to specify optional parameters (currently
|
||||
unused).
|
||||
- gpio-controller : Marks the device node as a gpio controller.
|
||||
|
||||
Optional properties:
|
||||
- lantiq,shadow : The default value that we shall assume as already set on the
|
||||
shift register cascade.
|
||||
- lantiq,groups : Set the 3 bit mask to select which of the 3 groups are enabled
|
||||
in the shift register cascade.
|
||||
- lantiq,dsl : The dsl core can control the 2 LSBs of the gpio cascade. This 2 bit
|
||||
property can enable this feature.
|
||||
- lantiq,phy1 : The gphy1 core can control 3 bits of the gpio cascade.
|
||||
- lantiq,phy2 : The gphy2 core can control 3 bits of the gpio cascade.
|
||||
- lantiq,rising : use rising instead of falling edge for the shift register
|
||||
|
||||
Example:
|
||||
|
||||
gpio1: stp@E100BB0 {
|
||||
compatible = "lantiq,gpio-stp-xway";
|
||||
reg = <0xE100BB0 0x40>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
lantiq,shadow = <0xffff>;
|
||||
lantiq,groups = <0x7>;
|
||||
lantiq,dsl = <0x3>;
|
||||
lantiq,phy1 = <0x7>;
|
||||
lantiq,phy2 = <0x7>;
|
||||
/* lantiq,rising; */
|
||||
};
|
|
@ -0,0 +1,43 @@
|
|||
NXP LPC32xx SoC GPIO controller
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "nxp,lpc3220-gpio"
|
||||
- reg: Physical base address and length of the controller's registers.
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- #gpio-cells: Should be 3:
|
||||
1) bank:
|
||||
0: GPIO P0
|
||||
1: GPIO P1
|
||||
2: GPIO P2
|
||||
3: GPIO P3
|
||||
4: GPI P3
|
||||
5: GPO P3
|
||||
2) pin number
|
||||
3) optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted)
|
||||
- reg: Index of the GPIO group
|
||||
|
||||
Example:
|
||||
|
||||
gpio: gpio@40028000 {
|
||||
compatible = "nxp,lpc3220-gpio";
|
||||
reg = <0x40028000 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <3>; /* bank, pin, flags */
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led0 {
|
||||
gpios = <&gpio 5 1 1>; /* GPO_P3 1, active low */
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led1 {
|
||||
gpios = <&gpio 5 14 1>; /* GPO_P3 14, active low */
|
||||
linux,default-trigger = "timer";
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
|
@ -0,0 +1,16 @@
|
|||
* Freescale MXS Inter IC (I2C) Controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "fsl,<chip>-i2c"
|
||||
- reg: Should contain registers location and length
|
||||
- interrupts: Should contain ERROR and DMA interrupts
|
||||
|
||||
Examples:
|
||||
|
||||
i2c0: i2c@80058000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,imx28-i2c";
|
||||
reg = <0x80058000 2000>;
|
||||
interrupts = <111 68>;
|
||||
};
|
|
@ -0,0 +1,60 @@
|
|||
Common i2c bus multiplexer/switch properties.
|
||||
|
||||
An i2c bus multiplexer/switch will have several child busses that are
|
||||
numbered uniquely in a device dependent manner. The nodes for an i2c bus
|
||||
multiplexer/switch will have one child node for each child
|
||||
bus.
|
||||
|
||||
Required properties:
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Required properties for child nodes:
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
- reg : The sub-bus number.
|
||||
|
||||
Optional properties for child nodes:
|
||||
- Other properties specific to the multiplexer/switch hardware.
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
|
||||
Example :
|
||||
|
||||
/*
|
||||
An NXP pca9548 8 channel I2C multiplexer at address 0x70
|
||||
with two NXP pca8574 GPIO expanders attached, one each to
|
||||
ports 3 and 4.
|
||||
*/
|
||||
|
||||
mux@70 {
|
||||
compatible = "nxp,pca9548";
|
||||
reg = <0x70>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
i2c@3 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <3>;
|
||||
|
||||
gpio1: gpio@38 {
|
||||
compatible = "nxp,pca8574";
|
||||
reg = <0x38>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
};
|
||||
};
|
||||
i2c@4 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
reg = <4>;
|
||||
|
||||
gpio2: gpio@38 {
|
||||
compatible = "nxp,pca8574";
|
||||
reg = <0x38>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -6,14 +6,18 @@ Required properties:
|
|||
- compatible: value should be either of the following.
|
||||
(a) "samsung, s3c2410-i2c", for i2c compatible with s3c2410 i2c.
|
||||
(b) "samsung, s3c2440-i2c", for i2c compatible with s3c2440 i2c.
|
||||
(c) "samsung, s3c2440-hdmiphy-i2c", for s3c2440-like i2c used
|
||||
inside HDMIPHY block found on several samsung SoCs
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: interrupt number to the cpu.
|
||||
- samsung,i2c-sda-delay: Delay (in ns) applied to data line (SDA) edges.
|
||||
- gpios: The order of the gpios should be the following: <SDA, SCL>.
|
||||
The gpio specifier depends on the gpio controller.
|
||||
|
||||
Optional properties:
|
||||
- gpios: The order of the gpios should be the following: <SDA, SCL>.
|
||||
The gpio specifier depends on the gpio controller. Required in all
|
||||
cases except for "samsung,s3c2440-hdmiphy-i2c" whose input/output
|
||||
lines are permanently wired to the respective client
|
||||
- samsung,i2c-slave-addr: Slave address in multi-master enviroment. If not
|
||||
specified, default value is 0.
|
||||
- samsung,i2c-max-bus-freq: Desired frequency in Hz of the bus. If not
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
Xilinx IIC controller:
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "xlnx,xps-iic-2.00.a"
|
||||
- reg : IIC register location and length
|
||||
- interrupts : IIC controller unterrupt
|
||||
- #address-cells = <1>
|
||||
- #size-cells = <0>
|
||||
|
||||
Optional properties:
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
Example:
|
||||
|
||||
axi_iic_0: i2c@40800000 {
|
||||
compatible = "xlnx,xps-iic-2.00.a";
|
||||
interrupts = < 1 2 >;
|
||||
reg = < 0x40800000 0x10000 >;
|
||||
|
||||
#size-cells = <0>;
|
||||
#address-cells = <1>;
|
||||
};
|
|
@ -0,0 +1,20 @@
|
|||
* SPEAr keyboard controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "st,spear300-kbd"
|
||||
|
||||
Optional properties, in addition to those specified by the shared
|
||||
matrix-keyboard bindings:
|
||||
- autorepeat: bool: enables key autorepeat
|
||||
- st,mode: keyboard mode: 0 - 9x9, 1 - 6x6, 2 - 2x2
|
||||
|
||||
Example:
|
||||
|
||||
kbd@fc400000 {
|
||||
compatible = "st,spear300-kbd";
|
||||
reg = <0xfc400000 0x100>;
|
||||
linux,keymap = < 0x00030012
|
||||
0x0102003a >;
|
||||
autorepeat;
|
||||
st,mode = <0>;
|
||||
};
|
|
@ -0,0 +1,16 @@
|
|||
* NXP LPC32xx SoC Touchscreen Controller (TSC)
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "nxp,lpc3220-tsc"
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: The TSC/ADC interrupt
|
||||
|
||||
Example:
|
||||
|
||||
tsc@40048000 {
|
||||
compatible = "nxp,lpc3220-tsc";
|
||||
reg = <0x40048000 0x1000>;
|
||||
interrupt-parent = <&mic>;
|
||||
interrupts = <39 0>;
|
||||
};
|
|
@ -0,0 +1,37 @@
|
|||
Vibra driver for the twl6040 family
|
||||
|
||||
The vibra driver is a child of the twl6040 MFD dirver.
|
||||
Documentation/devicetree/bindings/mfd/twl6040.txt
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "ti,twl6040-vibra";
|
||||
- interrupts: 4, Vibra overcurrent interrupt
|
||||
- vddvibl-supply: Regulator supplying the left vibra motor
|
||||
- vddvibr-supply: Regulator supplying the right vibra motor
|
||||
- vibldrv_res: Board specific left driver resistance
|
||||
- vibrdrv_res: Board specific right driver resistance
|
||||
- viblmotor_res: Board specific left motor resistance
|
||||
- vibrmotor_res: Board specific right motor resistance
|
||||
|
||||
Optional properties:
|
||||
- vddvibl_uV: If the vddvibl default voltage need to be changed
|
||||
- vddvibr_uV: If the vddvibr default voltage need to be changed
|
||||
|
||||
Example:
|
||||
/*
|
||||
* 8-channel high quality low-power audio codec
|
||||
* http://www.ti.com/lit/ds/symlink/twl6040.pdf
|
||||
*/
|
||||
twl6040: twl6040@4b {
|
||||
...
|
||||
twl6040_vibra: twl6040@1 {
|
||||
compatible = "ti,twl6040-vibra";
|
||||
interrupts = <4>;
|
||||
vddvibl-supply = <&vbat>;
|
||||
vddvibr-supply = <&vbat>;
|
||||
vibldrv_res = <8>;
|
||||
vibrdrv_res = <3>;
|
||||
viblmotor_res = <10>;
|
||||
vibrmotor_res = <10>;
|
||||
};
|
||||
};
|
|
@ -0,0 +1,60 @@
|
|||
* Dialog DA9052/53 Power Management Integrated Circuit (PMIC)
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be "dlg,da9052", "dlg,da9053-aa",
|
||||
"dlg,da9053-ab", or "dlg,da9053-bb"
|
||||
|
||||
Sub-nodes:
|
||||
- regulators : Contain the regulator nodes. The DA9052/53 regulators are
|
||||
bound using their names as listed below:
|
||||
|
||||
buck0 : regulator BUCK0
|
||||
buck1 : regulator BUCK1
|
||||
buck2 : regulator BUCK2
|
||||
buck3 : regulator BUCK3
|
||||
ldo4 : regulator LDO4
|
||||
ldo5 : regulator LDO5
|
||||
ldo6 : regulator LDO6
|
||||
ldo7 : regulator LDO7
|
||||
ldo8 : regulator LDO8
|
||||
ldo9 : regulator LDO9
|
||||
ldo10 : regulator LDO10
|
||||
ldo11 : regulator LDO11
|
||||
ldo12 : regulator LDO12
|
||||
ldo13 : regulator LDO13
|
||||
|
||||
The bindings details of individual regulator device can be found in:
|
||||
Documentation/devicetree/bindings/regulator/regulator.txt
|
||||
|
||||
Examples:
|
||||
|
||||
i2c@63fc8000 { /* I2C1 */
|
||||
status = "okay";
|
||||
|
||||
pmic: dialog@48 {
|
||||
compatible = "dlg,da9053-aa";
|
||||
reg = <0x48>;
|
||||
|
||||
regulators {
|
||||
buck0 {
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <2075000>;
|
||||
};
|
||||
|
||||
buck1 {
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <2075000>;
|
||||
};
|
||||
|
||||
buck2 {
|
||||
regulator-min-microvolt = <925000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
};
|
||||
|
||||
buck3 {
|
||||
regulator-min-microvolt = <925000>;
|
||||
regulator-max-microvolt = <2500000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
|
@ -0,0 +1,133 @@
|
|||
TPS65910 Power Management Integrated Circuit
|
||||
|
||||
Required properties:
|
||||
- compatible: "ti,tps65910" or "ti,tps65911"
|
||||
- reg: I2C slave address
|
||||
- interrupts: the interrupt outputs of the controller
|
||||
- #gpio-cells: number of cells to describe a GPIO, this should be 2.
|
||||
The first cell is the GPIO number.
|
||||
The second cell is used to specify additional options <unused>.
|
||||
- gpio-controller: mark the device as a GPIO controller
|
||||
- #interrupt-cells: the number of cells to describe an IRQ, this should be 2.
|
||||
The first cell is the IRQ number.
|
||||
The second cell is the flags, encoded as the trigger masks from
|
||||
Documentation/devicetree/bindings/interrupts.txt
|
||||
- regulators: This is the list of child nodes that specify the regulator
|
||||
initialization data for defined regulators. Not all regulators for the given
|
||||
device need to be present. The definition for each of these nodes is defined
|
||||
using the standard binding for regulators found at
|
||||
Documentation/devicetree/bindings/regulator/regulator.txt.
|
||||
|
||||
The valid names for regulators are:
|
||||
tps65910: vrtc, vio, vdd1, vdd2, vdd3, vdig1, vdig2, vpll, vdac, vaux1,
|
||||
vaux2, vaux33, vmmc
|
||||
tps65911: vrtc, vio, vdd1, vdd3, vddctrl, ldo1, ldo2, ldo3, ldo4, ldo5,
|
||||
ldo6, ldo7, ldo8
|
||||
|
||||
Optional properties:
|
||||
- ti,vmbch-threshold: (tps65911) main battery charged threshold
|
||||
comparator. (see VMBCH_VSEL in TPS65910 datasheet)
|
||||
- ti,vmbch2-threshold: (tps65911) main battery discharged threshold
|
||||
comparator. (see VMBCH_VSEL in TPS65910 datasheet)
|
||||
- ti,en-gpio-sleep: enable sleep control for gpios
|
||||
There should be 9 entries here, one for each gpio.
|
||||
|
||||
Regulator Optional properties:
|
||||
- ti,regulator-ext-sleep-control: enable external sleep
|
||||
control through external inputs [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)]
|
||||
If this property is not defined, it defaults to 0 (not enabled).
|
||||
|
||||
Example:
|
||||
|
||||
pmu: tps65910@d2 {
|
||||
compatible = "ti,tps65910";
|
||||
reg = <0xd2>;
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = < 0 118 0x04 >;
|
||||
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
ti,vmbch-threshold = 0;
|
||||
ti,vmbch2-threshold = 0;
|
||||
|
||||
ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
|
||||
|
||||
regulators {
|
||||
vdd1_reg: vdd1 {
|
||||
regulator-min-microvolt = < 600000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
vdd2_reg: vdd2 {
|
||||
regulator-min-microvolt = < 600000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ti,regulator-ext-sleep-control = <4>;
|
||||
};
|
||||
vddctrl_reg: vddctrl {
|
||||
regulator-min-microvolt = < 600000>;
|
||||
regulator-max-microvolt = <1400000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
vio_reg: vio {
|
||||
regulator-min-microvolt = <1500000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ti,regulator-ext-sleep-control = <1>;
|
||||
};
|
||||
ldo1_reg: ldo1 {
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
ldo2_reg: ldo2 {
|
||||
regulator-min-microvolt = <1050000>;
|
||||
regulator-max-microvolt = <1050000>;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
ldo3_reg: ldo3 {
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
ldo4_reg: ldo4 {
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
ldo5_reg: ldo5 {
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
ldo6_reg: ldo6 {
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
ti,regulator-ext-sleep-control = <0>;
|
||||
};
|
||||
ldo7_reg: ldo7 {
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ti,regulator-ext-sleep-control = <1>;
|
||||
};
|
||||
ldo8_reg: ldo8 {
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
ti,regulator-ext-sleep-control = <1>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -0,0 +1,62 @@
|
|||
Texas Instruments TWL6040 family
|
||||
|
||||
The TWL6040s are 8-channel high quality low-power audio codecs providing audio
|
||||
and vibra functionality on OMAP4+ platforms.
|
||||
They are connected ot the host processor via i2c for commands, McPDM for audio
|
||||
data and commands.
|
||||
|
||||
Required properties:
|
||||
- compatible : Must be "ti,twl6040";
|
||||
- reg: must be 0x4b for i2c address
|
||||
- interrupts: twl6040 has one interrupt line connecteded to the main SoC
|
||||
- interrupt-parent: The parent interrupt controller
|
||||
- twl6040,audpwron-gpio: Power on GPIO line for the twl6040
|
||||
|
||||
- vio-supply: Regulator for the twl6040 VIO supply
|
||||
- v2v1-supply: Regulator for the twl6040 V2V1 supply
|
||||
|
||||
Optional properties, nodes:
|
||||
- enable-active-high: To power on the twl6040 during boot.
|
||||
|
||||
Vibra functionality
|
||||
Required properties:
|
||||
- vddvibl-supply: Regulator for the left vibra motor
|
||||
- vddvibr-supply: Regulator for the right vibra motor
|
||||
- vibra { }: Configuration section for vibra parameters containing the following
|
||||
properties:
|
||||
- ti,vibldrv-res: Resistance parameter for left driver
|
||||
- ti,vibrdrv-res: Resistance parameter for right driver
|
||||
- ti,viblmotor-res: Resistance parameter for left motor
|
||||
- ti,viblmotor-res: Resistance parameter for right motor
|
||||
|
||||
Optional properties within vibra { } section:
|
||||
- vddvibl_uV: If the vddvibl default voltage need to be changed
|
||||
- vddvibr_uV: If the vddvibr default voltage need to be changed
|
||||
|
||||
Example:
|
||||
&i2c1 {
|
||||
twl6040: twl@4b {
|
||||
compatible = "ti,twl6040";
|
||||
reg = <0x4b>;
|
||||
|
||||
interrupts = <0 119 4>;
|
||||
interrupt-parent = <&gic>;
|
||||
twl6040,audpwron-gpio = <&gpio4 31 0>;
|
||||
|
||||
vio-supply = <&v1v8>;
|
||||
v2v1-supply = <&v2v1>;
|
||||
enable-active-high;
|
||||
|
||||
/* regulators for vibra motor */
|
||||
vddvibl-supply = <&vbat>;
|
||||
vddvibr-supply = <&vbat>;
|
||||
|
||||
vibra {
|
||||
/* Vibra driver, motor resistance parameters */
|
||||
ti,vibldrv-res = <8>;
|
||||
ti,vibrdrv-res = <3>;
|
||||
ti,viblmotor-res = <10>;
|
||||
ti,vibrmotor-res = <10>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -11,9 +11,11 @@ Required properties:
|
|||
- interrupt-parent : interrupt source phandle.
|
||||
- clock-frequency : specifies eSDHC base clock frequency.
|
||||
- sdhci,wp-inverted : (optional) specifies that eSDHC controller
|
||||
reports inverted write-protect state;
|
||||
reports inverted write-protect state; New devices should use
|
||||
the generic "wp-inverted" property.
|
||||
- sdhci,1-bit-only : (optional) specifies that a controller can
|
||||
only handle 1-bit data transfers.
|
||||
only handle 1-bit data transfers. New devices should use the
|
||||
generic "bus-width = <1>" property.
|
||||
- sdhci,auto-cmd12: (optional) specifies that a controller can
|
||||
only handle auto CMD12.
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ Required properties:
|
|||
- interrupts : Should contain eSDHC interrupt
|
||||
|
||||
Optional properties:
|
||||
- fsl,card-wired : Indicate the card is wired to host permanently
|
||||
- non-removable : Indicate the card is wired to host permanently
|
||||
- fsl,cd-internal : Indicate to use controller internal card detection
|
||||
- fsl,wp-internal : Indicate to use controller internal write protection
|
||||
- cd-gpios : Specify GPIOs for card detection
|
||||
|
|
|
@ -10,7 +10,8 @@ Required properties:
|
|||
|
||||
Optional properties:
|
||||
- gpios : may specify GPIOs in this order: Card-Detect GPIO,
|
||||
Write-Protect GPIO.
|
||||
Write-Protect GPIO. Note that this does not follow the
|
||||
binding from mmc.txt, for historic reasons.
|
||||
- interrupts : the interrupt of a card detect interrupt.
|
||||
- interrupt-parent : the phandle for the interrupt controller that
|
||||
services interrupts for this device.
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
These properties are common to multiple MMC host controllers. Any host
|
||||
that requires the respective functionality should implement them using
|
||||
these definitions.
|
||||
|
||||
Required properties:
|
||||
- bus-width: Number of data lines, can be <1>, <4>, or <8>
|
||||
|
||||
Optional properties:
|
||||
- cd-gpios : Specify GPIOs for card detection, see gpio binding
|
||||
- wp-gpios : Specify GPIOs for write protection, see gpio binding
|
||||
- cd-inverted: when present, polarity on the wp gpio line is inverted
|
||||
- wp-inverted: when present, polarity on the wp gpio line is inverted
|
||||
- non-removable: non-removable slot (like eMMC)
|
||||
- max-frequency: maximum operating clock frequency
|
||||
|
||||
Example:
|
||||
|
||||
sdhci@ab000000 {
|
||||
compatible = "sdhci";
|
||||
reg = <0xab000000 0x200>;
|
||||
interrupts = <23>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&gpio 69 0>;
|
||||
cd-inverted;
|
||||
wp-gpios = <&gpio 70 0>;
|
||||
max-frequency = <50000000>;
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
* ARM PrimeCell MultiMedia Card Interface (MMCI) PL180/1
|
||||
|
||||
The ARM PrimeCell MMCI PL180 and PL181 provides and interface for
|
||||
reading and writing to MultiMedia and SD cards alike.
|
||||
|
||||
Required properties:
|
||||
- compatible : contains "arm,pl18x", "arm,primecell".
|
||||
- reg : contains pl18x registers and length.
|
||||
- interrupts : contains the device IRQ(s).
|
||||
- arm,primecell-periphid : contains the PrimeCell Peripheral ID.
|
||||
|
||||
Optional properties:
|
||||
- wp-gpios : contains any write protect (ro) gpios
|
||||
- cd-gpios : contains any card detection gpios
|
||||
- cd-inverted : indicates whether the cd gpio is inverted
|
||||
- max-frequency : contains the maximum operating frequency
|
||||
- bus-width : number of data lines, can be <1>, <4>, or <8>
|
||||
- mmc-cap-mmc-highspeed : indicates whether MMC is high speed capable
|
||||
- mmc-cap-sd-highspeed : indicates whether SD is high speed capable
|
|
@ -0,0 +1,25 @@
|
|||
* Freescale MXS MMC controller
|
||||
|
||||
The Freescale MXS Synchronous Serial Ports (SSP) can act as a MMC controller
|
||||
to support MMC, SD, and SDIO types of memory cards.
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "fsl,<chip>-mmc". The supported chips include
|
||||
imx23 and imx28.
|
||||
- reg: Should contain registers location and length
|
||||
- interrupts: Should contain ERROR and DMA interrupts
|
||||
- fsl,ssp-dma-channel: APBH DMA channel for the SSP
|
||||
- bus-width: Number of data lines, can be <1>, <4>, or <8>
|
||||
|
||||
Optional properties:
|
||||
- wp-gpios: Specify GPIOs for write protection
|
||||
|
||||
Examples:
|
||||
|
||||
ssp0: ssp@80010000 {
|
||||
compatible = "fsl,imx28-mmc";
|
||||
reg = <0x80010000 2000>;
|
||||
interrupts = <96 82>;
|
||||
fsl,ssp-dma-channel = <0>;
|
||||
bus-width = <8>;
|
||||
};
|
|
@ -7,12 +7,12 @@ Required properties:
|
|||
- compatible : Should be "nvidia,<chip>-sdhci"
|
||||
- reg : Should contain SD/MMC registers location and length
|
||||
- interrupts : Should contain SD/MMC interrupt
|
||||
- bus-width : Number of data lines, can be <1>, <4>, or <8>
|
||||
|
||||
Optional properties:
|
||||
- cd-gpios : Specify GPIOs for card detection
|
||||
- wp-gpios : Specify GPIOs for write protection
|
||||
- power-gpios : Specify GPIOs for power control
|
||||
- support-8bit : Boolean, indicates if 8-bit mode should be used.
|
||||
|
||||
Example:
|
||||
|
||||
|
@ -23,5 +23,5 @@ sdhci@c8000200 {
|
|||
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
|
||||
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
|
||||
power-gpios = <&gpio 155 0>; /* gpio PT3 */
|
||||
support-8bit;
|
||||
bus-width = <8>;
|
||||
};
|
||||
|
|
|
@ -15,7 +15,7 @@ Optional properties:
|
|||
ti,dual-volt: boolean, supports dual voltage cards
|
||||
<supply-name>-supply: phandle to the regulator device tree node
|
||||
"supply-name" examples are "vmmc", "vmmc_aux" etc
|
||||
ti,bus-width: Number of data lines, default assumed is 1 if the property is missing.
|
||||
bus-width: Number of data lines, default assumed is 1 if the property is missing.
|
||||
cd-gpios: GPIOs for card detection
|
||||
wp-gpios: GPIOs for write protection
|
||||
ti,non-removable: non-removable slot (like eMMC)
|
||||
|
@ -27,7 +27,7 @@ Example:
|
|||
reg = <0x4809c000 0x400>;
|
||||
ti,hwmods = "mmc1";
|
||||
ti,dual-volt;
|
||||
ti,bus-width = <4>;
|
||||
bus-width = <4>;
|
||||
vmmc-supply = <&vmmc>; /* phandle to regulator node */
|
||||
ti,non-removable;
|
||||
};
|
||||
|
|
|
@ -14,7 +14,7 @@ Optional properties:
|
|||
|
||||
Example:
|
||||
|
||||
fec@83fec000 {
|
||||
ethernet@83fec000 {
|
||||
compatible = "fsl,imx51-fec", "fsl,imx27-fec";
|
||||
reg = <0x83fec000 0x4000>;
|
||||
interrupts = <87>;
|
||||
|
|
|
@ -4,6 +4,8 @@ Required properties:
|
|||
- compatible : "st,spear300-pinmux"
|
||||
: "st,spear310-pinmux"
|
||||
: "st,spear320-pinmux"
|
||||
: "st,spear1310-pinmux"
|
||||
: "st,spear1340-pinmux"
|
||||
- reg : Address range of the pinctrl registers
|
||||
- st,pinmux-mode: Mandatory for SPEAr300 and SPEAr320 and invalid for others.
|
||||
- Its values for SPEAr300:
|
||||
|
@ -89,6 +91,37 @@ For SPEAr320 machines:
|
|||
"rmii0_1_grp", "i2c1_8_9_grp", "i2c1_98_99_grp", "i2c2_0_1_grp",
|
||||
"i2c2_2_3_grp", "i2c2_19_20_grp", "i2c2_75_76_grp", "i2c2_96_97_grp"
|
||||
|
||||
For SPEAr1310 machines:
|
||||
"i2c0_grp", "ssp0_grp", "ssp0_cs0_grp", "ssp0_cs1_2_grp", "i2s0_grp",
|
||||
"i2s1_grp", "clcd_grp", "clcd_high_res_grp", "arm_gpio_grp",
|
||||
"smi_2_chips_grp", "smi_4_chips_grp", "gmii_grp", "rgmii_grp",
|
||||
"smii_0_1_2_grp", "ras_mii_txclk_grp", "nand_8bit_grp",
|
||||
"nand_16bit_grp", "nand_4_chips_grp", "keyboard_6x6_grp",
|
||||
"keyboard_rowcol6_8_grp", "uart0_grp", "uart0_modem_grp",
|
||||
"gpt0_tmr0_grp", "gpt0_tmr1_grp", "gpt1_tmr0_grp", "gpt1_tmr1_grp",
|
||||
"sdhci_grp", "cf_grp", "xd_grp", "touch_xy_grp",
|
||||
"uart1_disable_i2c_grp", "uart1_disable_sd_grp", "uart2_3_grp",
|
||||
"uart4_grp", "uart5_grp", "rs485_0_1_tdm_0_1_grp", "i2c_1_2_grp",
|
||||
"i2c3_dis_smi_clcd_grp", "i2c3_dis_sd_i2s0_grp", "i2c_4_5_dis_smi_grp",
|
||||
"i2c4_dis_sd_grp", "i2c5_dis_sd_grp", "i2c_6_7_dis_kbd_grp",
|
||||
"i2c6_dis_sd_grp", "i2c7_dis_sd_grp", "can0_dis_nor_grp",
|
||||
"can0_dis_sd_grp", "can1_dis_sd_grp", "can1_dis_kbd_grp", "pcie0_grp",
|
||||
"pcie1_grp", "pcie2_grp", "sata0_grp", "sata1_grp", "sata2_grp",
|
||||
"ssp1_dis_kbd_grp", "ssp1_dis_sd_grp", "gpt64_grp"
|
||||
|
||||
For SPEAr1340 machines:
|
||||
"pads_as_gpio_grp", "fsmc_8bit_grp", "fsmc_16bit_grp", "fsmc_pnor_grp",
|
||||
"keyboard_row_col_grp", "keyboard_col5_grp", "spdif_in_grp",
|
||||
"spdif_out_grp", "gpt_0_1_grp", "pwm0_grp", "pwm1_grp", "pwm2_grp",
|
||||
"pwm3_grp", "vip_mux_grp", "vip_mux_cam0_grp", "vip_mux_cam1_grp",
|
||||
"vip_mux_cam2_grp", "vip_mux_cam3_grp", "cam0_grp", "cam1_grp",
|
||||
"cam2_grp", "cam3_grp", "smi_grp", "ssp0_grp", "ssp0_cs1_grp",
|
||||
"ssp0_cs2_grp", "ssp0_cs3_grp", "uart0_grp", "uart0_enh_grp",
|
||||
"uart1_grp", "i2s_in_grp", "i2s_out_grp", "gmii_grp", "rgmii_grp",
|
||||
"rmii_grp", "sgmii_grp", "i2c0_grp", "i2c1_grp", "cec0_grp", "cec1_grp",
|
||||
"sdhci_grp", "cf_grp", "xd_grp", "clcd_grp", "arm_trace_grp",
|
||||
"miphy_dbg_grp", "pcie_grp", "sata_grp"
|
||||
|
||||
Valid values for function names are:
|
||||
For All SPEAr3xx machines:
|
||||
"firda", "i2c0", "ssp_cs", "ssp0", "mii0", "gpio0", "uart0_ext",
|
||||
|
@ -106,3 +139,17 @@ For SPEAr320 machines:
|
|||
"uart2", "uart3", "uart4", "uart5", "uart6", "rs485", "touchscreen",
|
||||
"can0", "can1", "pwm0_1", "pwm2", "pwm3", "ssp1", "ssp2", "mii2",
|
||||
"mii0_1", "i2c1", "i2c2"
|
||||
|
||||
|
||||
For SPEAr1310 machines:
|
||||
"i2c0", "ssp0", "i2s0", "i2s1", "clcd", "arm_gpio", "smi", "gmii",
|
||||
"rgmii", "smii_0_1_2", "ras_mii_txclk", "nand", "keyboard", "uart0",
|
||||
"gpt0", "gpt1", "sdhci", "cf", "xd", "touchscreen", "uart1", "uart2_3",
|
||||
"uart4", "uart5", "rs485_0_1_tdm_0_1", "i2c_1_2", "i2c3_i2s1",
|
||||
"i2c_4_5", "i2c_6_7", "can0", "can1", "pci", "sata", "ssp1", "gpt64"
|
||||
|
||||
For SPEAr1340 machines:
|
||||
"pads_as_gpio", "fsmc", "keyboard", "spdif_in", "spdif_out", "gpt_0_1",
|
||||
"pwm", "vip", "cam0", "cam1", "cam2", "cam3", "smi", "ssp0", "uart0",
|
||||
"uart1", "i2s", "gmac", "i2c0", "i2c1", "cec0", "cec1", "sdhci", "cf",
|
||||
"xd", "clcd", "arm_trace", "miphy_dbg", "pcie", "sata"
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
* NXP LPC32xx SoC Real Time Clock controller
|
||||
|
||||
Required properties:
|
||||
- compatible: must be "nxp,lpc3220-rtc"
|
||||
- reg: physical base address of the controller and length of memory mapped
|
||||
region.
|
||||
- interrupts: The RTC interrupt
|
||||
|
||||
Example:
|
||||
|
||||
rtc@40024000 {
|
||||
compatible = "nxp,lpc3220-rtc";
|
||||
reg = <0x40024000 0x1000>;
|
||||
interrupts = <52 0>;
|
||||
};
|
|
@ -0,0 +1,17 @@
|
|||
* SPEAr RTC
|
||||
|
||||
Required properties:
|
||||
- compatible : "st,spear600-rtc"
|
||||
- reg : Address range of the rtc registers
|
||||
- interrupt-parent: Should be the phandle for the interrupt controller
|
||||
that services interrupts for this device
|
||||
- interrupt: Should contain the rtc interrupt number
|
||||
|
||||
Example:
|
||||
|
||||
rtc@fc000000 {
|
||||
compatible = "st,spear600-rtc";
|
||||
reg = <0xfc000000 0x1000>;
|
||||
interrupt-parent = <&vic1>;
|
||||
interrupts = <12>;
|
||||
};
|
|
@ -0,0 +1,21 @@
|
|||
* Texas Instruments OMAP4+ Digital Microphone Module
|
||||
|
||||
Required properties:
|
||||
- compatible: "ti,omap4-dmic"
|
||||
- reg: Register location and size as an array:
|
||||
<MPU access base address, size>,
|
||||
<L3 interconnect address, size>;
|
||||
- interrupts: Interrupt number for DMIC
|
||||
- interrupt-parent: The parent interrupt controller
|
||||
- ti,hwmods: Name of the hwmod associated with OMAP dmic IP
|
||||
|
||||
Example:
|
||||
|
||||
dmic: dmic@4012e000 {
|
||||
compatible = "ti,omap4-dmic";
|
||||
reg = <0x4012e000 0x7f>, /* MPU private access */
|
||||
<0x4902e000 0x7f>; /* L3 Interconnect */
|
||||
interrupts = <0 114 0x4>;
|
||||
interrupt-parent = <&gic>;
|
||||
ti,hwmods = "dmic";
|
||||
};
|
|
@ -0,0 +1,21 @@
|
|||
* Texas Instruments OMAP4+ McPDM
|
||||
|
||||
Required properties:
|
||||
- compatible: "ti,omap4-mcpdm"
|
||||
- reg: Register location and size as an array:
|
||||
<MPU access base address, size>,
|
||||
<L3 interconnect address, size>;
|
||||
- interrupts: Interrupt number for McPDM
|
||||
- interrupt-parent: The parent interrupt controller
|
||||
- ti,hwmods: Name of the hwmod associated to the McPDM
|
||||
|
||||
Example:
|
||||
|
||||
mcpdm: mcpdm@40132000 {
|
||||
compatible = "ti,omap4-mcpdm";
|
||||
reg = <0x40132000 0x7f>, /* MPU private access */
|
||||
<0x49032000 0x7f>; /* L3 Interconnect */
|
||||
interrupts = <0 112 0x4>;
|
||||
interrupt-parent = <&gic>;
|
||||
ti,hwmods = "mcpdm";
|
||||
};
|
|
@ -11,7 +11,7 @@ Optional properties:
|
|||
|
||||
Example:
|
||||
|
||||
uart@73fbc000 {
|
||||
serial@73fbc000 {
|
||||
compatible = "fsl,imx51-uart", "fsl,imx21-uart";
|
||||
reg = <0x73fbc000 0x4000>;
|
||||
interrupts = <31>;
|
||||
|
|
|
@ -12,6 +12,9 @@ Required properties :
|
|||
- nvidia,vbus-gpio : If present, specifies a gpio that needs to be
|
||||
activated for the bus to be powered.
|
||||
|
||||
Required properties for phy_type == ulpi:
|
||||
- nvidia,phy-reset-gpio : The GPIO used to reset the PHY.
|
||||
|
||||
Optional properties:
|
||||
- dr_mode : dual role mode. Indicates the working mode for
|
||||
nvidia,tegra20-ehci compatible controllers. Can be "host", "peripheral",
|
||||
|
|
|
@ -14,6 +14,7 @@ chrp Common Hardware Reference Platform
|
|||
cortina Cortina Systems, Inc.
|
||||
dallas Maxim Integrated Products (formerly Dallas Semiconductor)
|
||||
denx Denx Software Engineering
|
||||
emmicro EM Microelectronic
|
||||
epson Seiko Epson Corp.
|
||||
est ESTeem Wireless Modems
|
||||
fsl Freescale Semiconductor
|
||||
|
|
|
@ -551,12 +551,13 @@ Here is an example of a simple device-tree. In this example, an "o"
|
|||
designates a node followed by the node unit name. Properties are
|
||||
presented with their name followed by their content. "content"
|
||||
represents an ASCII string (zero terminated) value, while <content>
|
||||
represents a 32-bit hexadecimal value. The various nodes in this
|
||||
example will be discussed in a later chapter. At this point, it is
|
||||
only meant to give you a idea of what a device-tree looks like. I have
|
||||
purposefully kept the "name" and "linux,phandle" properties which
|
||||
aren't necessary in order to give you a better idea of what the tree
|
||||
looks like in practice.
|
||||
represents a 32-bit value, specified in decimal or hexadecimal (the
|
||||
latter prefixed 0x). The various nodes in this example will be
|
||||
discussed in a later chapter. At this point, it is only meant to give
|
||||
you a idea of what a device-tree looks like. I have purposefully kept
|
||||
the "name" and "linux,phandle" properties which aren't necessary in
|
||||
order to give you a better idea of what the tree looks like in
|
||||
practice.
|
||||
|
||||
/ o device-tree
|
||||
|- name = "device-tree"
|
||||
|
@ -576,14 +577,14 @@ looks like in practice.
|
|||
| |- name = "PowerPC,970"
|
||||
| |- device_type = "cpu"
|
||||
| |- reg = <0>
|
||||
| |- clock-frequency = <5f5e1000>
|
||||
| |- clock-frequency = <0x5f5e1000>
|
||||
| |- 64-bit
|
||||
| |- linux,phandle = <2>
|
||||
|
|
||||
o memory@0
|
||||
| |- name = "memory"
|
||||
| |- device_type = "memory"
|
||||
| |- reg = <00000000 00000000 00000000 20000000>
|
||||
| |- reg = <0x00000000 0x00000000 0x00000000 0x20000000>
|
||||
| |- linux,phandle = <3>
|
||||
|
|
||||
o chosen
|
||||
|
@ -1010,8 +1011,8 @@ compatibility.
|
|||
#size-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
device_type = "soc";
|
||||
ranges = <00000000 e0000000 00100000>
|
||||
reg = <e0000000 00003000>;
|
||||
ranges = <0x00000000 0xe0000000 0x00100000>
|
||||
reg = <0xe0000000 0x00003000>;
|
||||
bus-frequency = <0>;
|
||||
}
|
||||
|
||||
|
@ -1085,16 +1086,16 @@ supported currently at the toplevel.
|
|||
* terminated string
|
||||
*/
|
||||
|
||||
property2 = <1234abcd>; /* define a property containing a
|
||||
property2 = <0x1234abcd>; /* define a property containing a
|
||||
* numerical 32-bit value (hexadecimal)
|
||||
*/
|
||||
|
||||
property3 = <12345678 12345678 deadbeef>;
|
||||
property3 = <0x12345678 0x12345678 0xdeadbeef>;
|
||||
/* define a property containing 3
|
||||
* numerical 32-bit values (cells) in
|
||||
* hexadecimal
|
||||
*/
|
||||
property4 = [0a 0b 0c 0d de ea ad be ef];
|
||||
property4 = [0x0a 0x0b 0x0c 0x0d 0xde 0xea 0xad 0xbe 0xef];
|
||||
/* define a property whose content is
|
||||
* an arbitrary array of bytes
|
||||
*/
|
||||
|
@ -1350,10 +1351,10 @@ Appendix A - Sample SOC node for MPC8540
|
|||
model = "TSEC";
|
||||
compatible = "gianfar", "simple-bus";
|
||||
reg = <0x24000 0x1000>;
|
||||
local-mac-address = [ 00 E0 0C 00 73 00 ];
|
||||
interrupts = <29 2 30 2 34 2>;
|
||||
local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x00 ];
|
||||
interrupts = <0x29 2 0x30 2 0x34 2>;
|
||||
phy-handle = <&phy0>;
|
||||
sleep = <&pmc 00000080>;
|
||||
sleep = <&pmc 0x00000080>;
|
||||
ranges;
|
||||
|
||||
mdio@24520 {
|
||||
|
@ -1385,10 +1386,10 @@ Appendix A - Sample SOC node for MPC8540
|
|||
model = "TSEC";
|
||||
compatible = "gianfar";
|
||||
reg = <0x25000 0x1000>;
|
||||
local-mac-address = [ 00 E0 0C 00 73 01 ];
|
||||
interrupts = <13 2 14 2 18 2>;
|
||||
local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x01 ];
|
||||
interrupts = <0x13 2 0x14 2 0x18 2>;
|
||||
phy-handle = <&phy1>;
|
||||
sleep = <&pmc 00000040>;
|
||||
sleep = <&pmc 0x00000040>;
|
||||
};
|
||||
|
||||
ethernet@26000 {
|
||||
|
@ -1396,17 +1397,17 @@ Appendix A - Sample SOC node for MPC8540
|
|||
model = "FEC";
|
||||
compatible = "gianfar";
|
||||
reg = <0x26000 0x1000>;
|
||||
local-mac-address = [ 00 E0 0C 00 73 02 ];
|
||||
interrupts = <41 2>;
|
||||
local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x02 ];
|
||||
interrupts = <0x41 2>;
|
||||
phy-handle = <&phy3>;
|
||||
sleep = <&pmc 00000020>;
|
||||
sleep = <&pmc 0x00000020>;
|
||||
};
|
||||
|
||||
serial@4500 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "fsl,mpc8540-duart", "simple-bus";
|
||||
sleep = <&pmc 00000002>;
|
||||
sleep = <&pmc 0x00000002>;
|
||||
ranges;
|
||||
|
||||
serial@4500 {
|
||||
|
@ -1414,7 +1415,7 @@ Appendix A - Sample SOC node for MPC8540
|
|||
compatible = "ns16550";
|
||||
reg = <0x4500 0x100>;
|
||||
clock-frequency = <0>;
|
||||
interrupts = <42 2>;
|
||||
interrupts = <0x42 2>;
|
||||
};
|
||||
|
||||
serial@4600 {
|
||||
|
@ -1422,7 +1423,7 @@ Appendix A - Sample SOC node for MPC8540
|
|||
compatible = "ns16550";
|
||||
reg = <0x4600 0x100>;
|
||||
clock-frequency = <0>;
|
||||
interrupts = <42 2>;
|
||||
interrupts = <0x42 2>;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1436,11 +1437,11 @@ Appendix A - Sample SOC node for MPC8540
|
|||
};
|
||||
|
||||
i2c@3000 {
|
||||
interrupts = <43 2>;
|
||||
interrupts = <0x43 2>;
|
||||
reg = <0x3000 0x100>;
|
||||
compatible = "fsl-i2c";
|
||||
dfsrr;
|
||||
sleep = <&pmc 00000004>;
|
||||
sleep = <&pmc 0x00000004>;
|
||||
};
|
||||
|
||||
pmc: power@e0070 {
|
||||
|
|
|
@ -29,13 +29,6 @@ The buffer-user
|
|||
in memory, mapped into its own address space, so it can access the same area
|
||||
of memory.
|
||||
|
||||
*IMPORTANT*: [see https://lkml.org/lkml/2011/12/20/211 for more details]
|
||||
For this first version, A buffer shared using the dma_buf sharing API:
|
||||
- *may* be exported to user space using "mmap" *ONLY* by exporter, outside of
|
||||
this framework.
|
||||
- with this new iteration of the dma-buf api cpu access from the kernel has been
|
||||
enable, see below for the details.
|
||||
|
||||
dma-buf operations for device dma only
|
||||
--------------------------------------
|
||||
|
||||
|
@ -300,6 +293,17 @@ Access to a dma_buf from the kernel context involves three steps:
|
|||
Note that these calls need to always succeed. The exporter needs to complete
|
||||
any preparations that might fail in begin_cpu_access.
|
||||
|
||||
For some cases the overhead of kmap can be too high, a vmap interface
|
||||
is introduced. This interface should be used very carefully, as vmalloc
|
||||
space is a limited resources on many architectures.
|
||||
|
||||
Interfaces:
|
||||
void *dma_buf_vmap(struct dma_buf *dmabuf)
|
||||
void dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr)
|
||||
|
||||
The vmap call can fail if there is no vmap support in the exporter, or if it
|
||||
runs out of vmalloc space. Fallback to kmap should be implemented.
|
||||
|
||||
3. Finish access
|
||||
|
||||
When the importer is done accessing the range specified in begin_cpu_access,
|
||||
|
@ -313,6 +317,83 @@ Access to a dma_buf from the kernel context involves three steps:
|
|||
enum dma_data_direction dir);
|
||||
|
||||
|
||||
Direct Userspace Access/mmap Support
|
||||
------------------------------------
|
||||
|
||||
Being able to mmap an export dma-buf buffer object has 2 main use-cases:
|
||||
- CPU fallback processing in a pipeline and
|
||||
- supporting existing mmap interfaces in importers.
|
||||
|
||||
1. CPU fallback processing in a pipeline
|
||||
|
||||
In many processing pipelines it is sometimes required that the cpu can access
|
||||
the data in a dma-buf (e.g. for thumbnail creation, snapshots, ...). To avoid
|
||||
the need to handle this specially in userspace frameworks for buffer sharing
|
||||
it's ideal if the dma_buf fd itself can be used to access the backing storage
|
||||
from userspace using mmap.
|
||||
|
||||
Furthermore Android's ION framework already supports this (and is otherwise
|
||||
rather similar to dma-buf from a userspace consumer side with using fds as
|
||||
handles, too). So it's beneficial to support this in a similar fashion on
|
||||
dma-buf to have a good transition path for existing Android userspace.
|
||||
|
||||
No special interfaces, userspace simply calls mmap on the dma-buf fd.
|
||||
|
||||
2. Supporting existing mmap interfaces in exporters
|
||||
|
||||
Similar to the motivation for kernel cpu access it is again important that
|
||||
the userspace code of a given importing subsystem can use the same interfaces
|
||||
with a imported dma-buf buffer object as with a native buffer object. This is
|
||||
especially important for drm where the userspace part of contemporary OpenGL,
|
||||
X, and other drivers is huge, and reworking them to use a different way to
|
||||
mmap a buffer rather invasive.
|
||||
|
||||
The assumption in the current dma-buf interfaces is that redirecting the
|
||||
initial mmap is all that's needed. A survey of some of the existing
|
||||
subsystems shows that no driver seems to do any nefarious thing like syncing
|
||||
up with outstanding asynchronous processing on the device or allocating
|
||||
special resources at fault time. So hopefully this is good enough, since
|
||||
adding interfaces to intercept pagefaults and allow pte shootdowns would
|
||||
increase the complexity quite a bit.
|
||||
|
||||
Interface:
|
||||
int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
|
||||
unsigned long);
|
||||
|
||||
If the importing subsystem simply provides a special-purpose mmap call to set
|
||||
up a mapping in userspace, calling do_mmap with dma_buf->file will equally
|
||||
achieve that for a dma-buf object.
|
||||
|
||||
3. Implementation notes for exporters
|
||||
|
||||
Because dma-buf buffers have invariant size over their lifetime, the dma-buf
|
||||
core checks whether a vma is too large and rejects such mappings. The
|
||||
exporter hence does not need to duplicate this check.
|
||||
|
||||
Because existing importing subsystems might presume coherent mappings for
|
||||
userspace, the exporter needs to set up a coherent mapping. If that's not
|
||||
possible, it needs to fake coherency by manually shooting down ptes when
|
||||
leaving the cpu domain and flushing caches at fault time. Note that all the
|
||||
dma_buf files share the same anon inode, hence the exporter needs to replace
|
||||
the dma_buf file stored in vma->vm_file with it's own if pte shootdown is
|
||||
requred. This is because the kernel uses the underlying inode's address_space
|
||||
for vma tracking (and hence pte tracking at shootdown time with
|
||||
unmap_mapping_range).
|
||||
|
||||
If the above shootdown dance turns out to be too expensive in certain
|
||||
scenarios, we can extend dma-buf with a more explicit cache tracking scheme
|
||||
for userspace mappings. But the current assumption is that using mmap is
|
||||
always a slower path, so some inefficiencies should be acceptable.
|
||||
|
||||
Exporters that shoot down mappings (for any reasons) shall not do any
|
||||
synchronization at fault time with outstanding device operations.
|
||||
Synchronization is an orthogonal issue to sharing the backing storage of a
|
||||
buffer and hence should not be handled by dma-buf itself. This is explictly
|
||||
mentioned here because many people seem to want something like this, but if
|
||||
different exporters handle this differently, buffer sharing can fail in
|
||||
interesting ways depending upong the exporter (if userspace starts depending
|
||||
upon this implicit synchronization).
|
||||
|
||||
Miscellaneous notes
|
||||
-------------------
|
||||
|
||||
|
@ -336,6 +417,20 @@ Miscellaneous notes
|
|||
the exporting driver to create a dmabuf fd must provide a way to let
|
||||
userspace control setting of O_CLOEXEC flag passed in to dma_buf_fd().
|
||||
|
||||
- If an exporter needs to manually flush caches and hence needs to fake
|
||||
coherency for mmap support, it needs to be able to zap all the ptes pointing
|
||||
at the backing storage. Now linux mm needs a struct address_space associated
|
||||
with the struct file stored in vma->vm_file to do that with the function
|
||||
unmap_mapping_range. But the dma_buf framework only backs every dma_buf fd
|
||||
with the anon_file struct file, i.e. all dma_bufs share the same file.
|
||||
|
||||
Hence exporters need to setup their own file (and address_space) association
|
||||
by setting vma->vm_file and adjusting vma->vm_pgoff in the dma_buf mmap
|
||||
callback. In the specific case of a gem driver the exporter could use the
|
||||
shmem file already provided by gem (and set vm_pgoff = 0). Exporters can then
|
||||
zap ptes by unmapping the corresponding range of the struct address_space
|
||||
associated with their own file.
|
||||
|
||||
References:
|
||||
[1] struct dma_buf_ops in include/linux/dma-buf.h
|
||||
[2] All interfaces mentioned above defined in include/linux/dma-buf.h
|
||||
|
|
|
@ -28,7 +28,8 @@ use IO::Handle;
|
|||
"opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718",
|
||||
"af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
|
||||
"lme2510c_s7395_old", "drxk", "drxk_terratec_h5",
|
||||
"drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137");
|
||||
"drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137",
|
||||
"drxk_pctv");
|
||||
|
||||
# Check args
|
||||
syntax() if (scalar(@ARGV) != 1);
|
||||
|
@ -730,6 +731,23 @@ sub tda10071 {
|
|||
"$fwfile";
|
||||
}
|
||||
|
||||
sub drxk_pctv {
|
||||
my $sourcefile = "PCTV_460e_reference.zip";
|
||||
my $url = "ftp://ftp.pctvsystems.com/TV/driver/PCTV%2070e%2080e%20100e%20320e%20330e%20800e/";
|
||||
my $hash = "4403de903bf2593464c8d74bbc200a57";
|
||||
my $fwfile = "dvb-demod-drxk-pctv.fw";
|
||||
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||
|
||||
checkstandard();
|
||||
|
||||
wgetfile($sourcefile, $url . $sourcefile);
|
||||
verify($sourcefile, $hash);
|
||||
unzip($sourcefile, $tmpdir);
|
||||
extract("$tmpdir/PCTV\ 70e\ 80e\ 100e\ 320e\ 330e\ 800e/32\ bit/emOEM.sys", 0x72b80, 42692, $fwfile);
|
||||
|
||||
"$fwfile";
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------
|
||||
# Utilities
|
||||
|
||||
|
|
|
@ -541,6 +541,18 @@ Who: Kees Cook <keescook@chromium.org>
|
|||
|
||||
----------------------------
|
||||
|
||||
What: Removing the pn544 raw driver.
|
||||
When: 3.6
|
||||
Why: With the introduction of the NFC HCI and SHDL kernel layers, pn544.c
|
||||
is being replaced by pn544_hci.c which is accessible through the netlink
|
||||
and socket NFC APIs. Moreover, pn544.c is outdated and does not seem to
|
||||
work properly with the latest Android stacks.
|
||||
Having 2 drivers for the same hardware is confusing and as such we
|
||||
should only keep the one following the kernel NFC APIs.
|
||||
Who: Samuel Ortiz <sameo@linux.intel.com>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: setitimer accepts user NULL pointer (value)
|
||||
When: 3.6
|
||||
Why: setitimer is not returning -EFAULT if user pointer is NULL. This
|
||||
|
@ -549,6 +561,15 @@ Who: Sasikantha Babu <sasikanth.v19@gmail.com>
|
|||
|
||||
----------------------------
|
||||
|
||||
What: remove bogus DV presets V4L2_DV_1080I29_97, V4L2_DV_1080I30 and
|
||||
V4L2_DV_1080I25
|
||||
When: 3.6
|
||||
Why: These HDTV formats do not exist and were added by a confused mind
|
||||
(that was me, to be precise...)
|
||||
Who: Hans Verkuil <hans.verkuil@cisco.com>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: V4L2_CID_HCENTER, V4L2_CID_VCENTER V4L2 controls
|
||||
When: 3.7
|
||||
Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated
|
||||
|
@ -567,3 +588,21 @@ Why: Remount currently allows changing bound subsystems and
|
|||
replaced with conventional fsnotify.
|
||||
|
||||
----------------------------
|
||||
|
||||
What: KVM debugfs statistics
|
||||
When: 2013
|
||||
Why: KVM tracepoints provide mostly equivalent information in a much more
|
||||
flexible fashion.
|
||||
|
||||
----------------------------
|
||||
|
||||
What: at91-mci driver ("CONFIG_MMC_AT91")
|
||||
When: 3.7
|
||||
Why: There are two mci drivers: at91-mci and atmel-mci. The PDC support
|
||||
was added to atmel-mci as a first step to support more chips.
|
||||
Then at91-mci was kept only for old IP versions (on at91rm9200 and
|
||||
at91sam9261). The support of these IP versions has just been added
|
||||
to atmel-mci, so atmel-mci can be used for all chips.
|
||||
Who: Ludovic Desroches <ludovic.desroches@atmel.com>
|
||||
|
||||
----------------------------
|
||||
|
|
|
@ -60,7 +60,6 @@ ata *);
|
|||
ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
|
||||
ssize_t (*listxattr) (struct dentry *, char *, size_t);
|
||||
int (*removexattr) (struct dentry *, const char *);
|
||||
void (*truncate_range)(struct inode *, loff_t, loff_t);
|
||||
int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len);
|
||||
|
||||
locking rules:
|
||||
|
@ -87,7 +86,6 @@ setxattr: yes
|
|||
getxattr: no
|
||||
listxattr: no
|
||||
removexattr: yes
|
||||
truncate_range: yes
|
||||
fiemap: no
|
||||
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
|
||||
victim.
|
||||
|
|
|
@ -59,9 +59,9 @@ commit=nrsec (*) Ext3 can be told to sync all its data and metadata
|
|||
Setting it to very large values will improve
|
||||
performance.
|
||||
|
||||
barrier=<0(*)|1> This enables/disables the use of write barriers in
|
||||
barrier the jbd code. barrier=0 disables, barrier=1 enables.
|
||||
nobarrier (*) This also requires an IO stack which can support
|
||||
barrier=<0|1(*)> This enables/disables the use of write barriers in
|
||||
barrier (*) the jbd code. barrier=0 disables, barrier=1 enables.
|
||||
nobarrier This also requires an IO stack which can support
|
||||
barriers, and if jbd gets an error on a barrier
|
||||
write, it will disable again with a warning.
|
||||
Write barriers enforce proper on-disk ordering
|
||||
|
|
|
@ -297,7 +297,8 @@ in the beginning of ->setattr unconditionally.
|
|||
be used instead. It gets called whenever the inode is evicted, whether it has
|
||||
remaining links or not. Caller does *not* evict the pagecache or inode-associated
|
||||
metadata buffers; getting rid of those is responsibility of method, as it had
|
||||
been for ->delete_inode().
|
||||
been for ->delete_inode(). Caller makes sure async writeback cannot be running
|
||||
for the inode while (or after) ->evict_inode() is called.
|
||||
|
||||
->drop_inode() returns int now; it's called on final iput() with
|
||||
inode->i_lock held and it returns true if filesystems wants the inode to be
|
||||
|
@ -306,14 +307,11 @@ updated appropriately. generic_delete_inode() is also alive and it consists
|
|||
simply of return 1. Note that all actual eviction work is done by caller after
|
||||
->drop_inode() returns.
|
||||
|
||||
clear_inode() is gone; use end_writeback() instead. As before, it must
|
||||
be called exactly once on each call of ->evict_inode() (as it used to be for
|
||||
each call of ->delete_inode()). Unlike before, if you are using inode-associated
|
||||
metadata buffers (i.e. mark_buffer_dirty_inode()), it's your responsibility to
|
||||
call invalidate_inode_buffers() before end_writeback().
|
||||
No async writeback (and thus no calls of ->write_inode()) will happen
|
||||
after end_writeback() returns, so actions that should not overlap with ->write_inode()
|
||||
(e.g. freeing on-disk inode if i_nlink is 0) ought to be done after that call.
|
||||
As before, clear_inode() must be called exactly once on each call of
|
||||
->evict_inode() (as it used to be for each call of ->delete_inode()). Unlike
|
||||
before, if you are using inode-associated metadata buffers (i.e.
|
||||
mark_buffer_dirty_inode()), it's your responsibility to call
|
||||
invalidate_inode_buffers() before clear_inode().
|
||||
|
||||
NOTE: checking i_nlink in the beginning of ->write_inode() and bailing out
|
||||
if it's zero is not *and* *never* *had* *been* enough. Final unlink() and iput()
|
||||
|
|
|
@ -743,6 +743,7 @@ Committed_AS: 100056 kB
|
|||
VmallocTotal: 112216 kB
|
||||
VmallocUsed: 428 kB
|
||||
VmallocChunk: 111088 kB
|
||||
AnonHugePages: 49152 kB
|
||||
|
||||
MemTotal: Total usable ram (i.e. physical ram minus a few reserved
|
||||
bits and the kernel binary code)
|
||||
|
@ -776,6 +777,7 @@ VmallocChunk: 111088 kB
|
|||
Dirty: Memory which is waiting to get written back to the disk
|
||||
Writeback: Memory which is actively being written back to the disk
|
||||
AnonPages: Non-file backed pages mapped into userspace page tables
|
||||
AnonHugePages: Non-file backed huge pages mapped into userspace page tables
|
||||
Mapped: files which have been mmaped, such as libraries
|
||||
Slab: in-kernel data structures cache
|
||||
SReclaimable: Part of Slab, that might be reclaimed, such as caches
|
||||
|
|
|
@ -363,7 +363,6 @@ struct inode_operations {
|
|||
ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t);
|
||||
ssize_t (*listxattr) (struct dentry *, char *, size_t);
|
||||
int (*removexattr) (struct dentry *, const char *);
|
||||
void (*truncate_range)(struct inode *, loff_t, loff_t);
|
||||
};
|
||||
|
||||
Again, all methods are called without any locks being held, unless
|
||||
|
@ -472,9 +471,6 @@ otherwise noted.
|
|||
removexattr: called by the VFS to remove an extended attribute from
|
||||
a file. This method is called by removexattr(2) system call.
|
||||
|
||||
truncate_range: a method provided by the underlying filesystem to truncate a
|
||||
range of blocks , i.e. punch a hole somewhere in a file.
|
||||
|
||||
|
||||
The Address Space Object
|
||||
========================
|
||||
|
@ -760,7 +756,7 @@ struct file_operations
|
|||
----------------------
|
||||
|
||||
This describes how the VFS can manipulate an open file. As of kernel
|
||||
2.6.22, the following members are defined:
|
||||
3.5, the following members are defined:
|
||||
|
||||
struct file_operations {
|
||||
struct module *owner;
|
||||
|
@ -790,6 +786,8 @@ struct file_operations {
|
|||
int (*flock) (struct file *, int, struct file_lock *);
|
||||
ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, size_t, unsigned int);
|
||||
ssize_t (*splice_read)(struct file *, struct pipe_inode_info *, size_t, unsigned int);
|
||||
int (*setlease)(struct file *, long arg, struct file_lock **);
|
||||
long (*fallocate)(struct file *, int mode, loff_t offset, loff_t len);
|
||||
};
|
||||
|
||||
Again, all methods are called without any locks being held, unless
|
||||
|
@ -858,6 +856,11 @@ otherwise noted.
|
|||
splice_read: called by the VFS to splice data from file to a pipe. This
|
||||
method is used by the splice(2) system call
|
||||
|
||||
setlease: called by the VFS to set or release a file lock lease.
|
||||
setlease has the file_lock_lock held and must not sleep.
|
||||
|
||||
fallocate: called by the VFS to preallocate blocks or punch a hole.
|
||||
|
||||
Note that the file operations are implemented by the specific
|
||||
filesystem in which the inode resides. When opening a device node
|
||||
(character or block special) most filesystems will call special
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue