Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
This commit is contained in:
commit
fac805f8c1
1766 changed files with 90001 additions and 43478 deletions
|
@ -0,0 +1,5 @@
|
||||||
|
What: /proc/sys/vm/nr_pdflush_threads
|
||||||
|
Date: June 2012
|
||||||
|
Contact: Wanpeng Li <liwp@linux.vnet.ibm.com>
|
||||||
|
Description: Since pdflush is replaced by per-BDI flusher, the interface of old pdflush
|
||||||
|
exported in /proc/sys/vm/ should be removed.
|
|
@ -39,6 +39,17 @@ Users: udev rules to set ownership and access permissions or ACLs of
|
||||||
/dev/fw[0-9]+ character device files
|
/dev/fw[0-9]+ character device files
|
||||||
|
|
||||||
|
|
||||||
|
What: /sys/bus/firewire/devices/fw[0-9]+/is_local
|
||||||
|
Date: July 2012
|
||||||
|
KernelVersion: 3.6
|
||||||
|
Contact: linux1394-devel@lists.sourceforge.net
|
||||||
|
Description:
|
||||||
|
IEEE 1394 node device attribute.
|
||||||
|
Read-only and immutable.
|
||||||
|
Values: 1: The sysfs entry represents a local node (a controller card).
|
||||||
|
0: The sysfs entry represents a remote node.
|
||||||
|
|
||||||
|
|
||||||
What: /sys/bus/firewire/devices/fw[0-9]+[.][0-9]+/
|
What: /sys/bus/firewire/devices/fw[0-9]+[.][0-9]+/
|
||||||
Date: May 2007
|
Date: May 2007
|
||||||
KernelVersion: 2.6.22
|
KernelVersion: 2.6.22
|
||||||
|
|
|
@ -35,8 +35,14 @@ name
|
||||||
|
|
||||||
pool
|
pool
|
||||||
|
|
||||||
The pool where this rbd image resides. The pool-name pair is unique
|
The name of the storage pool where this rbd image resides.
|
||||||
per rados system.
|
An rbd image name is unique within its pool.
|
||||||
|
|
||||||
|
pool_id
|
||||||
|
|
||||||
|
The unique identifier for the rbd image's pool. This is
|
||||||
|
a permanent attribute of the pool. A pool's id will never
|
||||||
|
change.
|
||||||
|
|
||||||
size
|
size
|
||||||
|
|
||||||
|
|
140
Documentation/ABI/testing/sysfs-devices-edac
Normal file
140
Documentation/ABI/testing/sysfs-devices-edac
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/reset_counters
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This write-only control file will zero all the statistical
|
||||||
|
counters for UE and CE errors on the given memory controller.
|
||||||
|
Zeroing the counters will also reset the timer indicating how
|
||||||
|
long since the last counter were reset. This is useful for
|
||||||
|
computing errors/time. Since the counters are always reset
|
||||||
|
at driver initialization time, no module/kernel parameter
|
||||||
|
is available.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/seconds_since_reset
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays how many seconds have elapsed
|
||||||
|
since the last counter reset. This can be used with the error
|
||||||
|
counters to measure error rates.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/mc_name
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays the type of memory controller
|
||||||
|
that is being utilized.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/size_mb
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays, in count of megabytes, of memory
|
||||||
|
that this memory controller manages.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/ue_count
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays the total count of uncorrectable
|
||||||
|
errors that have occurred on this memory controller. If
|
||||||
|
panic_on_ue is set, this counter will not have a chance to
|
||||||
|
increment, since EDAC will panic the system
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/ue_noinfo_count
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays the number of UEs that have
|
||||||
|
occurred on this memory controller with no information as to
|
||||||
|
which DIMM slot is having errors.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/ce_count
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays the total count of correctable
|
||||||
|
errors that have occurred on this memory controller. This
|
||||||
|
count is very important to examine. CEs provide early
|
||||||
|
indications that a DIMM is beginning to fail. This count
|
||||||
|
field should be monitored for non-zero values and report
|
||||||
|
such information to the system administrator.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/ce_noinfo_count
|
||||||
|
Date: January 2006
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays the number of CEs that
|
||||||
|
have occurred on this memory controller wherewith no
|
||||||
|
information as to which DIMM slot is having errors. Memory is
|
||||||
|
handicapped, but operational, yet no information is available
|
||||||
|
to indicate which slot the failing memory is in. This count
|
||||||
|
field should be also be monitored for non-zero values.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/sdram_scrub_rate
|
||||||
|
Date: February 2007
|
||||||
|
Contact: linux-edac@vger.kernel.org
|
||||||
|
Description: Read/Write attribute file that controls memory scrubbing.
|
||||||
|
The scrubbing rate used by the memory controller is set by
|
||||||
|
writing a minimum bandwidth in bytes/sec to the attribute file.
|
||||||
|
The rate will be translated to an internal value that gives at
|
||||||
|
least the specified rate.
|
||||||
|
Reading the file will return the actual scrubbing rate employed.
|
||||||
|
If configuration fails or memory scrubbing is not implemented,
|
||||||
|
the value of the attribute file will be -1.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/max_location
|
||||||
|
Date: April 2012
|
||||||
|
Contact: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||||
|
linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file displays the information about the last
|
||||||
|
available memory slot in this memory controller. It is used by
|
||||||
|
userspace tools in order to display the memory filling layout.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/size
|
||||||
|
Date: April 2012
|
||||||
|
Contact: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||||
|
linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file will display the size of dimm or rank.
|
||||||
|
For dimm*/size, this is the size, in MB of the DIMM memory
|
||||||
|
stick. For rank*/size, this is the size, in MB for one rank
|
||||||
|
of the DIMM memory stick. On single rank memories (1R), this
|
||||||
|
is also the total size of the dimm. On dual rank (2R) memories,
|
||||||
|
this is half the size of the total DIMM memories.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_dev_type
|
||||||
|
Date: April 2012
|
||||||
|
Contact: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||||
|
linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file will display what type of DRAM device is
|
||||||
|
being utilized on this DIMM (x1, x2, x4, x8, ...).
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_edac_mode
|
||||||
|
Date: April 2012
|
||||||
|
Contact: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||||
|
linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file will display what type of Error detection
|
||||||
|
and correction is being utilized. For example: S4ECD4ED would
|
||||||
|
mean a Chipkill with x4 DRAM.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_label
|
||||||
|
Date: April 2012
|
||||||
|
Contact: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||||
|
linux-edac@vger.kernel.org
|
||||||
|
Description: This control file allows this DIMM to have a label assigned
|
||||||
|
to it. With this label in the module, when errors occur
|
||||||
|
the output can provide the DIMM label in the system log.
|
||||||
|
This becomes vital for panic events to isolate the
|
||||||
|
cause of the UE event.
|
||||||
|
DIMM Labels must be assigned after booting, with information
|
||||||
|
that correctly identifies the physical slot with its
|
||||||
|
silk screen label. This information is currently very
|
||||||
|
motherboard specific and determination of this information
|
||||||
|
must occur in userland at this time.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_location
|
||||||
|
Date: April 2012
|
||||||
|
Contact: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||||
|
linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file will display the location (csrow/channel,
|
||||||
|
branch/channel/slot or channel/slot) of the dimm or rank.
|
||||||
|
|
||||||
|
What: /sys/devices/system/edac/mc/mc*/(dimm|rank)*/dimm_mem_type
|
||||||
|
Date: April 2012
|
||||||
|
Contact: Mauro Carvalho Chehab <mchehab@redhat.com>
|
||||||
|
linux-edac@vger.kernel.org
|
||||||
|
Description: This attribute file will display what type of memory is
|
||||||
|
currently on this csrow. Normally, either buffered or
|
||||||
|
unbuffered memory (for example, Unbuffered-DDR3).
|
|
@ -0,0 +1,44 @@
|
||||||
|
What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_alpha
|
||||||
|
Date: May 2012
|
||||||
|
Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
|
Description:
|
||||||
|
This file is only available on fb[0-9] devices corresponding
|
||||||
|
to overlay planes.
|
||||||
|
|
||||||
|
Stores the alpha blending value for the overlay. Values range
|
||||||
|
from 0 (transparent) to 255 (opaque). The value is ignored if
|
||||||
|
the mode is not set to Alpha Blending.
|
||||||
|
|
||||||
|
What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_mode
|
||||||
|
Date: May 2012
|
||||||
|
Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
|
Description:
|
||||||
|
This file is only available on fb[0-9] devices corresponding
|
||||||
|
to overlay planes.
|
||||||
|
|
||||||
|
Selects the composition mode for the overlay. Possible values
|
||||||
|
are
|
||||||
|
|
||||||
|
0 - Alpha Blending
|
||||||
|
1 - ROP3
|
||||||
|
|
||||||
|
What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_position
|
||||||
|
Date: May 2012
|
||||||
|
Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
|
Description:
|
||||||
|
This file is only available on fb[0-9] devices corresponding
|
||||||
|
to overlay planes.
|
||||||
|
|
||||||
|
Stores the x,y overlay position on the display in pixels. The
|
||||||
|
position format is `[0-9]+,[0-9]+'.
|
||||||
|
|
||||||
|
What: /sys/devices/platform/sh_mobile_lcdc_fb.[0-3]/graphics/fb[0-9]/ovl_rop3
|
||||||
|
Date: May 2012
|
||||||
|
Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
|
||||||
|
Description:
|
||||||
|
This file is only available on fb[0-9] devices corresponding
|
||||||
|
to overlay planes.
|
||||||
|
|
||||||
|
Stores the raster operation (ROP3) for the overlay. Values
|
||||||
|
range from 0 to 255. The value is ignored if the mode is not
|
||||||
|
set to ROP3.
|
|
@ -29,3 +29,10 @@ KernelVersion: 2.6.39
|
||||||
Contact: "Corentin Chary" <corentincj@iksaif.net>
|
Contact: "Corentin Chary" <corentincj@iksaif.net>
|
||||||
Description:
|
Description:
|
||||||
Control the card touchpad. 1 means on, 0 means off.
|
Control the card touchpad. 1 means on, 0 means off.
|
||||||
|
|
||||||
|
What: /sys/devices/platform/<platform>/lid_resume
|
||||||
|
Date: May 2012
|
||||||
|
KernelVersion: 3.5
|
||||||
|
Contact: "AceLan Kao" <acelan.kao@canonical.com>
|
||||||
|
Description:
|
||||||
|
Resume on lid open. 1 means on, 0 means off.
|
||||||
|
|
|
@ -49,3 +49,45 @@ DMA_ATTR_NON_CONSISTENT lets the platform to choose to return either
|
||||||
consistent or non-consistent memory as it sees fit. By using this API,
|
consistent or non-consistent memory as it sees fit. By using this API,
|
||||||
you are guaranteeing to the platform that you have all the correct and
|
you are guaranteeing to the platform that you have all the correct and
|
||||||
necessary sync points for this memory in the driver.
|
necessary sync points for this memory in the driver.
|
||||||
|
|
||||||
|
DMA_ATTR_NO_KERNEL_MAPPING
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
DMA_ATTR_NO_KERNEL_MAPPING lets the platform to avoid creating a kernel
|
||||||
|
virtual mapping for the allocated buffer. On some architectures creating
|
||||||
|
such mapping is non-trivial task and consumes very limited resources
|
||||||
|
(like kernel virtual address space or dma consistent address space).
|
||||||
|
Buffers allocated with this attribute can be only passed to user space
|
||||||
|
by calling dma_mmap_attrs(). By using this API, you are guaranteeing
|
||||||
|
that you won't dereference the pointer returned by dma_alloc_attr(). You
|
||||||
|
can threat it as a cookie that must be passed to dma_mmap_attrs() and
|
||||||
|
dma_free_attrs(). Make sure that both of these also get this attribute
|
||||||
|
set on each call.
|
||||||
|
|
||||||
|
Since it is optional for platforms to implement
|
||||||
|
DMA_ATTR_NO_KERNEL_MAPPING, those that do not will simply ignore the
|
||||||
|
attribute and exhibit default behavior.
|
||||||
|
|
||||||
|
DMA_ATTR_SKIP_CPU_SYNC
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
By default dma_map_{single,page,sg} functions family transfer a given
|
||||||
|
buffer from CPU domain to device domain. Some advanced use cases might
|
||||||
|
require sharing a buffer between more than one device. This requires
|
||||||
|
having a mapping created separately for each device and is usually
|
||||||
|
performed by calling dma_map_{single,page,sg} function more than once
|
||||||
|
for the given buffer with device pointer to each device taking part in
|
||||||
|
the buffer sharing. The first call transfers a buffer from 'CPU' domain
|
||||||
|
to 'device' domain, what synchronizes CPU caches for the given region
|
||||||
|
(usually it means that the cache has been flushed or invalidated
|
||||||
|
depending on the dma direction). However, next calls to
|
||||||
|
dma_map_{single,page,sg}() for other devices will perform exactly the
|
||||||
|
same sychronization operation on the CPU cache. CPU cache sychronization
|
||||||
|
might be a time consuming operation, especially if the buffers are
|
||||||
|
large, so it is highly recommended to avoid it if possible.
|
||||||
|
DMA_ATTR_SKIP_CPU_SYNC allows platform code to skip synchronization of
|
||||||
|
the CPU cache for the given buffer assuming that it has been already
|
||||||
|
transferred to 'device' domain. This attribute can be also used for
|
||||||
|
dma_unmap_{single,page,sg} functions family to force buffer to stay in
|
||||||
|
device domain after releasing a mapping for it. Use this attribute with
|
||||||
|
care!
|
||||||
|
|
|
@ -194,7 +194,7 @@ in the frequency range from 87,5 to 108,0 MHz</title>
|
||||||
<corpauthor>National Radio Systems Committee
|
<corpauthor>National Radio Systems Committee
|
||||||
(<ulink url="http://www.nrscstandards.org">http://www.nrscstandards.org</ulink>)</corpauthor>
|
(<ulink url="http://www.nrscstandards.org">http://www.nrscstandards.org</ulink>)</corpauthor>
|
||||||
</authorgroup>
|
</authorgroup>
|
||||||
<title>NTSC-4: United States RBDS Standard</title>
|
<title>NRSC-4: United States RBDS Standard</title>
|
||||||
</biblioentry>
|
</biblioentry>
|
||||||
|
|
||||||
<biblioentry id="iso12232">
|
<biblioentry id="iso12232">
|
||||||
|
|
|
@ -464,14 +464,14 @@ The <structfield>type</structfield> field of the respective
|
||||||
<structfield>tuner</structfield> field contains the index number of
|
<structfield>tuner</structfield> field contains the index number of
|
||||||
the tuner.</para>
|
the tuner.</para>
|
||||||
|
|
||||||
<para>Radio devices have exactly one tuner with index zero, no
|
<para>Radio input devices have exactly one tuner with index zero, no
|
||||||
video inputs.</para>
|
video inputs.</para>
|
||||||
|
|
||||||
<para>To query and change tuner properties applications use the
|
<para>To query and change tuner properties applications use the
|
||||||
&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctl, respectively. The
|
&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctl, respectively. The
|
||||||
&v4l2-tuner; returned by <constant>VIDIOC_G_TUNER</constant> also
|
&v4l2-tuner; returned by <constant>VIDIOC_G_TUNER</constant> also
|
||||||
contains signal status information applicable when the tuner of the
|
contains signal status information applicable when the tuner of the
|
||||||
current video input, or a radio tuner is queried. Note that
|
current video or radio input is queried. Note that
|
||||||
<constant>VIDIOC_S_TUNER</constant> does not switch the current tuner,
|
<constant>VIDIOC_S_TUNER</constant> does not switch the current tuner,
|
||||||
when there is more than one at all. The tuner is solely determined by
|
when there is more than one at all. The tuner is solely determined by
|
||||||
the current video input. Drivers must support both ioctls and set the
|
the current video input. Drivers must support both ioctls and set the
|
||||||
|
@ -491,8 +491,17 @@ the modulator. The <structfield>type</structfield> field of the
|
||||||
respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is
|
respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is
|
||||||
set to <constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> and its
|
set to <constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> and its
|
||||||
<structfield>modulator</structfield> field contains the index number
|
<structfield>modulator</structfield> field contains the index number
|
||||||
of the modulator. This specification does not define radio output
|
of the modulator.</para>
|
||||||
devices.</para>
|
|
||||||
|
<para>Radio output devices have exactly one modulator with index
|
||||||
|
zero, no video outputs.</para>
|
||||||
|
|
||||||
|
<para>A video or radio device cannot support both a tuner and a
|
||||||
|
modulator. Two separate device nodes will have to be used for such
|
||||||
|
hardware, one that supports the tuner functionality and one that supports
|
||||||
|
the modulator functionality. The reason is a limitation with the
|
||||||
|
&VIDIOC-S-FREQUENCY; ioctl where you cannot specify whether the frequency
|
||||||
|
is for a tuner or a modulator.</para>
|
||||||
|
|
||||||
<para>To query and change modulator properties applications use
|
<para>To query and change modulator properties applications use
|
||||||
the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that
|
the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that
|
||||||
|
|
|
@ -2377,10 +2377,11 @@ that used it. It was originally scheduled for removal in 2.6.35.
|
||||||
<para>V4L2_CTRL_FLAG_VOLATILE was added to signal volatile controls to userspace.</para>
|
<para>V4L2_CTRL_FLAG_VOLATILE was added to signal volatile controls to userspace.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Add selection API for extended control over cropping and
|
<para>Add selection API for extended control over cropping
|
||||||
composing. Does not affect the compatibility of current drivers and
|
and composing. Does not affect the compatibility of current
|
||||||
applications. See <link linkend="selection-api"> selection API </link> for
|
drivers and applications. See <link
|
||||||
details.</para>
|
linkend="selection-api"> selection API </link> for
|
||||||
|
details.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</orderedlist>
|
</orderedlist>
|
||||||
</section>
|
</section>
|
||||||
|
@ -2458,6 +2459,36 @@ details.</para>
|
||||||
</orderedlist>
|
</orderedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title>V4L2 in Linux 3.6</title>
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Replaced <structfield>input</structfield> in
|
||||||
|
<structname>v4l2_buffer</structname> by
|
||||||
|
<structfield>reserved2</structfield> and removed
|
||||||
|
<constant>V4L2_BUF_FLAG_INPUT</constant>.</para>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title>V4L2 in Linux 3.6</title>
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE capabilities.</para>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<title>V4L2 in Linux 3.6</title>
|
||||||
|
<orderedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Added support for frequency band enumerations: &VIDIOC-ENUM-FREQ-BANDS;.</para>
|
||||||
|
</listitem>
|
||||||
|
</orderedlist>
|
||||||
|
</section>
|
||||||
|
|
||||||
<section id="other">
|
<section id="other">
|
||||||
<title>Relation of V4L2 to other Linux multimedia APIs</title>
|
<title>Relation of V4L2 to other Linux multimedia APIs</title>
|
||||||
|
|
||||||
|
@ -2587,6 +2618,9 @@ ioctls.</para>
|
||||||
<para><link linkend="v4l2-auto-focus-area"><constant>
|
<para><link linkend="v4l2-auto-focus-area"><constant>
|
||||||
V4L2_CID_AUTO_FOCUS_AREA</constant></link> control.</para>
|
V4L2_CID_AUTO_FOCUS_AREA</constant></link> control.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>Support for frequency band enumeration: &VIDIOC-ENUM-FREQ-BANDS; ioctl.</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -372,6 +372,11 @@ minimum value disables backlight compensation.</entry>
|
||||||
Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
|
Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CID_AUTOBRIGHTNESS</constant></entry>
|
||||||
|
<entry>boolean</entry>
|
||||||
|
<entry>Enable Automatic Brightness.</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><constant>V4L2_CID_ROTATE</constant></entry>
|
<entry><constant>V4L2_CID_ROTATE</constant></entry>
|
||||||
<entry>integer</entry>
|
<entry>integer</entry>
|
||||||
|
|
|
@ -276,7 +276,7 @@
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section id="v4l2-subdev-selections">
|
||||||
<title>Selections: cropping, scaling and composition</title>
|
<title>Selections: cropping, scaling and composition</title>
|
||||||
|
|
||||||
<para>Many sub-devices support cropping frames on their input or output
|
<para>Many sub-devices support cropping frames on their input or output
|
||||||
|
@ -290,8 +290,8 @@
|
||||||
size. Both the coordinates and sizes are expressed in pixels.</para>
|
size. Both the coordinates and sizes are expressed in pixels.</para>
|
||||||
|
|
||||||
<para>As for pad formats, drivers store try and active
|
<para>As for pad formats, drivers store try and active
|
||||||
rectangles for the selection targets of ACTUAL type <xref
|
rectangles for the selection targets <xref
|
||||||
linkend="v4l2-subdev-selection-targets">.</xref></para>
|
linkend="v4l2-selections-common" />.</para>
|
||||||
|
|
||||||
<para>On sink pads, cropping is applied relative to the
|
<para>On sink pads, cropping is applied relative to the
|
||||||
current pad format. The pad format represents the image size as
|
current pad format. The pad format represents the image size as
|
||||||
|
@ -308,7 +308,7 @@
|
||||||
<para>Scaling support is optional. When supported by a subdev,
|
<para>Scaling support is optional. When supported by a subdev,
|
||||||
the crop rectangle on the subdev's sink pad is scaled to the
|
the crop rectangle on the subdev's sink pad is scaled to the
|
||||||
size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL
|
size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL
|
||||||
using <constant>V4L2_SUBDEV_SEL_COMPOSE_ACTUAL</constant>
|
using <constant>V4L2_SEL_TGT_COMPOSE</constant>
|
||||||
selection target on the same pad. If the subdev supports scaling
|
selection target on the same pad. If the subdev supports scaling
|
||||||
but not composing, the top and left values are not used and must
|
but not composing, the top and left values are not used and must
|
||||||
always be set to zero.</para>
|
always be set to zero.</para>
|
||||||
|
@ -323,32 +323,32 @@
|
||||||
<para>The drivers should always use the closest possible
|
<para>The drivers should always use the closest possible
|
||||||
rectangle the user requests on all selection targets, unless
|
rectangle the user requests on all selection targets, unless
|
||||||
specifically told otherwise.
|
specifically told otherwise.
|
||||||
<constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant> and
|
<constant>V4L2_SEL_FLAG_GE</constant> and
|
||||||
<constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant> flags may be
|
<constant>V4L2_SEL_FLAG_LE</constant> flags may be
|
||||||
used to round the image size either up or down. <xref
|
used to round the image size either up or down. <xref
|
||||||
linkend="v4l2-subdev-selection-flags"></xref></para>
|
linkend="v4l2-selection-flags" /></para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title>Types of selection targets</title>
|
<title>Types of selection targets</title>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title>ACTUAL targets</title>
|
<title>Actual targets</title>
|
||||||
|
|
||||||
<para>ACTUAL targets reflect the actual hardware configuration
|
<para>Actual targets (without a postfix) reflect the actual
|
||||||
at any point of time. There is a BOUNDS target
|
hardware configuration at any point of time. There is a BOUNDS
|
||||||
corresponding to every ACTUAL.</para>
|
target corresponding to every actual target.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<title>BOUNDS targets</title>
|
<title>BOUNDS targets</title>
|
||||||
|
|
||||||
<para>BOUNDS targets is the smallest rectangle that contains
|
<para>BOUNDS targets is the smallest rectangle that contains all
|
||||||
all valid ACTUAL rectangles. It may not be possible to set the
|
valid actual rectangles. It may not be possible to set the actual
|
||||||
ACTUAL rectangle as large as the BOUNDS rectangle, however.
|
rectangle as large as the BOUNDS rectangle, however. This may be
|
||||||
This may be because e.g. a sensor's pixel array is not
|
because e.g. a sensor's pixel array is not rectangular but
|
||||||
rectangular but cross-shaped or round. The maximum size may
|
cross-shaped or round. The maximum size may also be smaller than the
|
||||||
also be smaller than the BOUNDS rectangle.</para>
|
BOUNDS rectangle.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
@ -362,7 +362,7 @@
|
||||||
performed by the user: the changes made will be propagated to
|
performed by the user: the changes made will be propagated to
|
||||||
any subsequent stages. If this behaviour is not desired, the
|
any subsequent stages. If this behaviour is not desired, the
|
||||||
user must set
|
user must set
|
||||||
<constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant> flag. This
|
<constant>V4L2_SEL_FLAG_KEEP_CONFIG</constant> flag. This
|
||||||
flag causes no propagation of the changes are allowed in any
|
flag causes no propagation of the changes are allowed in any
|
||||||
circumstances. This may also cause the accessed rectangle to be
|
circumstances. This may also cause the accessed rectangle to be
|
||||||
adjusted by the driver, depending on the properties of the
|
adjusted by the driver, depending on the properties of the
|
||||||
|
|
|
@ -683,14 +683,12 @@ memory, set by the application. See <xref linkend="userp" /> for details.
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>input</structfield></entry>
|
<entry><structfield>reserved2</structfield></entry>
|
||||||
<entry></entry>
|
<entry></entry>
|
||||||
<entry>Some video capture drivers support rapid and
|
<entry>A place holder for future extensions and custom
|
||||||
synchronous video input changes, a function useful for example in
|
(driver defined) buffer types
|
||||||
video surveillance applications. For this purpose applications set the
|
<constant>V4L2_BUF_TYPE_PRIVATE</constant> and higher. Applications
|
||||||
<constant>V4L2_BUF_FLAG_INPUT</constant> flag, and this field to the
|
should set this to 0.</entry>
|
||||||
number of a video input as in &v4l2-input; field
|
|
||||||
<structfield>index</structfield>.</entry>
|
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -921,13 +919,6 @@ previous key frame.</entry>
|
||||||
<entry>The <structfield>timecode</structfield> field is valid.
|
<entry>The <structfield>timecode</structfield> field is valid.
|
||||||
Drivers set or clear this flag when the <constant>VIDIOC_DQBUF</constant>
|
Drivers set or clear this flag when the <constant>VIDIOC_DQBUF</constant>
|
||||||
ioctl is called.</entry>
|
ioctl is called.</entry>
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_BUF_FLAG_INPUT</constant></entry>
|
|
||||||
<entry>0x0200</entry>
|
|
||||||
<entry>The <structfield>input</structfield> field is valid.
|
|
||||||
Applications set or clear this flag before calling the
|
|
||||||
<constant>VIDIOC_QBUF</constant> ioctl.</entry>
|
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><constant>V4L2_BUF_FLAG_PREPARED</constant></entry>
|
<entry><constant>V4L2_BUF_FLAG_PREPARED</constant></entry>
|
||||||
|
|
|
@ -53,11 +53,11 @@ cropping and composing rectangles have the same size.</para>
|
||||||
</mediaobject>
|
</mediaobject>
|
||||||
</figure>
|
</figure>
|
||||||
|
|
||||||
For complete list of the available selection targets see table <xref
|
|
||||||
linkend="v4l2-sel-target"/>
|
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
See <xref linkend="v4l2-selection-targets" /> for more
|
||||||
|
information.
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
||||||
<title>Configuration</title>
|
<title>Configuration</title>
|
||||||
|
@ -74,7 +74,7 @@ cropping/composing rectangles may have to be aligned, and both the source and
|
||||||
the sink may have arbitrary upper and lower size limits. Therefore, as usual,
|
the sink may have arbitrary upper and lower size limits. Therefore, as usual,
|
||||||
drivers are expected to adjust the requested parameters and return the actual
|
drivers are expected to adjust the requested parameters and return the actual
|
||||||
values selected. An application can control the rounding behaviour using <link
|
values selected. An application can control the rounding behaviour using <link
|
||||||
linkend="v4l2-sel-flags"> constraint flags </link>.</para>
|
linkend="v4l2-selection-flags"> constraint flags </link>.</para>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ top/left corner at position <constant> (0,0) </constant>. The rectangle's
|
||||||
coordinates are expressed in pixels.</para>
|
coordinates are expressed in pixels.</para>
|
||||||
|
|
||||||
<para>The top left corner, width and height of the source rectangle, that is
|
<para>The top left corner, width and height of the source rectangle, that is
|
||||||
the area actually sampled, is given by the <constant> V4L2_SEL_TGT_CROP_ACTIVE
|
the area actually sampled, is given by the <constant> V4L2_SEL_TGT_CROP
|
||||||
</constant> target. It uses the same coordinate system as <constant>
|
</constant> target. It uses the same coordinate system as <constant>
|
||||||
V4L2_SEL_TGT_CROP_BOUNDS </constant>. The active cropping area must lie
|
V4L2_SEL_TGT_CROP_BOUNDS </constant>. The active cropping area must lie
|
||||||
completely inside the capture boundaries. The driver may further adjust the
|
completely inside the capture boundaries. The driver may further adjust the
|
||||||
|
@ -111,13 +111,13 @@ height are equal to the image size set by <constant> VIDIOC_S_FMT </constant>.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>The part of a buffer into which the image is inserted by the hardware is
|
<para>The part of a buffer into which the image is inserted by the hardware is
|
||||||
controlled by the <constant> V4L2_SEL_TGT_COMPOSE_ACTIVE </constant> target.
|
controlled by the <constant> V4L2_SEL_TGT_COMPOSE </constant> target.
|
||||||
The rectangle's coordinates are also expressed in the same coordinate system as
|
The rectangle's coordinates are also expressed in the same coordinate system as
|
||||||
the bounds rectangle. The composing rectangle must lie completely inside bounds
|
the bounds rectangle. The composing rectangle must lie completely inside bounds
|
||||||
rectangle. The driver must adjust the composing rectangle to fit to the
|
rectangle. The driver must adjust the composing rectangle to fit to the
|
||||||
bounding limits. Moreover, the driver can perform other adjustments according
|
bounding limits. Moreover, the driver can perform other adjustments according
|
||||||
to hardware limitations. The application can control rounding behaviour using
|
to hardware limitations. The application can control rounding behaviour using
|
||||||
<link linkend="v4l2-sel-flags"> constraint flags </link>.</para>
|
<link linkend="v4l2-selection-flags"> constraint flags </link>.</para>
|
||||||
|
|
||||||
<para>For capture devices the default composing rectangle is queried using
|
<para>For capture devices the default composing rectangle is queried using
|
||||||
<constant> V4L2_SEL_TGT_COMPOSE_DEFAULT </constant>. It is usually equal to the
|
<constant> V4L2_SEL_TGT_COMPOSE_DEFAULT </constant>. It is usually equal to the
|
||||||
|
@ -125,7 +125,7 @@ bounding rectangle.</para>
|
||||||
|
|
||||||
<para>The part of a buffer that is modified by the hardware is given by
|
<para>The part of a buffer that is modified by the hardware is given by
|
||||||
<constant> V4L2_SEL_TGT_COMPOSE_PADDED </constant>. It contains all pixels
|
<constant> V4L2_SEL_TGT_COMPOSE_PADDED </constant>. It contains all pixels
|
||||||
defined using <constant> V4L2_SEL_TGT_COMPOSE_ACTIVE </constant> plus all
|
defined using <constant> V4L2_SEL_TGT_COMPOSE </constant> plus all
|
||||||
padding data modified by hardware during insertion process. All pixels outside
|
padding data modified by hardware during insertion process. All pixels outside
|
||||||
this rectangle <emphasis>must not</emphasis> be changed by the hardware. The
|
this rectangle <emphasis>must not</emphasis> be changed by the hardware. The
|
||||||
content of pixels that lie inside the padded area but outside active area is
|
content of pixels that lie inside the padded area but outside active area is
|
||||||
|
@ -153,7 +153,7 @@ specified using <constant> VIDIOC_S_FMT </constant> ioctl.</para>
|
||||||
|
|
||||||
<para>The top left corner, width and height of the source rectangle, that is
|
<para>The top left corner, width and height of the source rectangle, that is
|
||||||
the area from which image date are processed by the hardware, is given by the
|
the area from which image date are processed by the hardware, is given by the
|
||||||
<constant> V4L2_SEL_TGT_CROP_ACTIVE </constant>. Its coordinates are expressed
|
<constant> V4L2_SEL_TGT_CROP </constant>. Its coordinates are expressed
|
||||||
in in the same coordinate system as the bounds rectangle. The active cropping
|
in in the same coordinate system as the bounds rectangle. The active cropping
|
||||||
area must lie completely inside the crop boundaries and the driver may further
|
area must lie completely inside the crop boundaries and the driver may further
|
||||||
adjust the requested size and/or position according to hardware
|
adjust the requested size and/or position according to hardware
|
||||||
|
@ -165,7 +165,7 @@ bounding rectangle.</para>
|
||||||
|
|
||||||
<para>The part of a video signal or graphics display where the image is
|
<para>The part of a video signal or graphics display where the image is
|
||||||
inserted by the hardware is controlled by <constant>
|
inserted by the hardware is controlled by <constant>
|
||||||
V4L2_SEL_TGT_COMPOSE_ACTIVE </constant> target. The rectangle's coordinates
|
V4L2_SEL_TGT_COMPOSE </constant> target. The rectangle's coordinates
|
||||||
are expressed in pixels. The composing rectangle must lie completely inside the
|
are expressed in pixels. The composing rectangle must lie completely inside the
|
||||||
bounds rectangle. The driver must adjust the area to fit to the bounding
|
bounds rectangle. The driver must adjust the area to fit to the bounding
|
||||||
limits. Moreover, the driver can perform other adjustments according to
|
limits. Moreover, the driver can perform other adjustments according to
|
||||||
|
@ -184,7 +184,7 @@ such a padded area is driver-dependent feature not covered by this document.
|
||||||
Driver developers are encouraged to keep padded rectangle equal to active one.
|
Driver developers are encouraged to keep padded rectangle equal to active one.
|
||||||
The padded target is accessed by the <constant> V4L2_SEL_TGT_COMPOSE_PADDED
|
The padded target is accessed by the <constant> V4L2_SEL_TGT_COMPOSE_PADDED
|
||||||
</constant> identifier. It must contain all pixels from the <constant>
|
</constant> identifier. It must contain all pixels from the <constant>
|
||||||
V4L2_SEL_TGT_COMPOSE_ACTIVE </constant> target.</para>
|
V4L2_SEL_TGT_COMPOSE </constant> target.</para>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -193,8 +193,8 @@ V4L2_SEL_TGT_COMPOSE_ACTIVE </constant> target.</para>
|
||||||
<title>Scaling control</title>
|
<title>Scaling control</title>
|
||||||
|
|
||||||
<para>An application can detect if scaling is performed by comparing the width
|
<para>An application can detect if scaling is performed by comparing the width
|
||||||
and the height of rectangles obtained using <constant> V4L2_SEL_TGT_CROP_ACTIVE
|
and the height of rectangles obtained using <constant> V4L2_SEL_TGT_CROP
|
||||||
</constant> and <constant> V4L2_SEL_TGT_COMPOSE_ACTIVE </constant> targets. If
|
</constant> and <constant> V4L2_SEL_TGT_COMPOSE </constant> targets. If
|
||||||
these are not equal then the scaling is applied. The application can compute
|
these are not equal then the scaling is applied. The application can compute
|
||||||
the scaling ratios using these values.</para>
|
the scaling ratios using these values.</para>
|
||||||
|
|
||||||
|
@ -252,7 +252,7 @@ area)</para>
|
||||||
ret = ioctl(fd, &VIDIOC-G-SELECTION;, &sel);
|
ret = ioctl(fd, &VIDIOC-G-SELECTION;, &sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
sel.target = V4L2_SEL_TGT_CROP_ACTIVE;
|
sel.target = V4L2_SEL_TGT_CROP;
|
||||||
ret = ioctl(fd, &VIDIOC-S-SELECTION;, &sel);
|
ret = ioctl(fd, &VIDIOC-S-SELECTION;, &sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
@ -281,7 +281,7 @@ area)</para>
|
||||||
r.left = sel.r.width / 4;
|
r.left = sel.r.width / 4;
|
||||||
r.top = sel.r.height / 4;
|
r.top = sel.r.height / 4;
|
||||||
sel.r = r;
|
sel.r = r;
|
||||||
sel.target = V4L2_SEL_TGT_COMPOSE_ACTIVE;
|
sel.target = V4L2_SEL_TGT_COMPOSE;
|
||||||
sel.flags = V4L2_SEL_FLAG_LE;
|
sel.flags = V4L2_SEL_FLAG_LE;
|
||||||
ret = ioctl(fd, &VIDIOC-S-SELECTION;, &sel);
|
ret = ioctl(fd, &VIDIOC-S-SELECTION;, &sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
|
@ -298,11 +298,11 @@ V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> for other devices</para>
|
||||||
|
|
||||||
&v4l2-selection; compose = {
|
&v4l2-selection; compose = {
|
||||||
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
||||||
.target = V4L2_SEL_TGT_COMPOSE_ACTIVE,
|
.target = V4L2_SEL_TGT_COMPOSE,
|
||||||
};
|
};
|
||||||
&v4l2-selection; crop = {
|
&v4l2-selection; crop = {
|
||||||
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
.type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
|
||||||
.target = V4L2_SEL_TGT_CROP_ACTIVE,
|
.target = V4L2_SEL_TGT_CROP,
|
||||||
};
|
};
|
||||||
double hscale, vscale;
|
double hscale, vscale;
|
||||||
|
|
||||||
|
|
164
Documentation/DocBook/media/v4l/selections-common.xml
Normal file
164
Documentation/DocBook/media/v4l/selections-common.xml
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
<section id="v4l2-selections-common">
|
||||||
|
|
||||||
|
<title>Common selection definitions</title>
|
||||||
|
|
||||||
|
<para>While the <link linkend="selection-api">V4L2 selection
|
||||||
|
API</link> and <link linkend="v4l2-subdev-selections">V4L2 subdev
|
||||||
|
selection APIs</link> are very similar, there's one fundamental
|
||||||
|
difference between the two. On sub-device API, the selection
|
||||||
|
rectangle refers to the media bus format, and is bound to a
|
||||||
|
sub-device's pad. On the V4L2 interface the selection rectangles
|
||||||
|
refer to the in-memory pixel format.</para>
|
||||||
|
|
||||||
|
<para>This section defines the common definitions of the
|
||||||
|
selection interfaces on the two APIs.</para>
|
||||||
|
|
||||||
|
<section id="v4l2-selection-targets">
|
||||||
|
|
||||||
|
<title>Selection targets</title>
|
||||||
|
|
||||||
|
<para>The precise meaning of the selection targets may be
|
||||||
|
dependent on which of the two interfaces they are used.</para>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="v4l2-selection-targets-table">
|
||||||
|
<title>Selection target definitions</title>
|
||||||
|
<tgroup cols="5">
|
||||||
|
<colspec colname="c1" />
|
||||||
|
<colspec colname="c2" />
|
||||||
|
<colspec colname="c3" />
|
||||||
|
<colspec colname="c4" />
|
||||||
|
<colspec colname="c5" />
|
||||||
|
&cs-def;
|
||||||
|
<thead>
|
||||||
|
<row rowsep="1">
|
||||||
|
<entry align="left">Target name</entry>
|
||||||
|
<entry align="left">id</entry>
|
||||||
|
<entry align="left">Definition</entry>
|
||||||
|
<entry align="left">Valid for V4L2</entry>
|
||||||
|
<entry align="left">Valid for V4L2 subdev</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_TGT_CROP</constant></entry>
|
||||||
|
<entry>0x0000</entry>
|
||||||
|
<entry>Crop rectangle. Defines the cropped area.</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_TGT_CROP_DEFAULT</constant></entry>
|
||||||
|
<entry>0x0001</entry>
|
||||||
|
<entry>Suggested cropping rectangle that covers the "whole picture".</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>No</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_TGT_CROP_BOUNDS</constant></entry>
|
||||||
|
<entry>0x0002</entry>
|
||||||
|
<entry>Bounds of the crop rectangle. All valid crop
|
||||||
|
rectangles fit inside the crop bounds rectangle.
|
||||||
|
</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_TGT_COMPOSE</constant></entry>
|
||||||
|
<entry>0x0100</entry>
|
||||||
|
<entry>Compose rectangle. Used to configure scaling
|
||||||
|
and composition.</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant></entry>
|
||||||
|
<entry>0x0101</entry>
|
||||||
|
<entry>Suggested composition rectangle that covers the "whole picture".</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>No</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
|
||||||
|
<entry>0x0102</entry>
|
||||||
|
<entry>Bounds of the compose rectangle. All valid compose
|
||||||
|
rectangles fit inside the compose bounds rectangle.</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant></entry>
|
||||||
|
<entry>0x0103</entry>
|
||||||
|
<entry>The active area and all padding pixels that are inserted or
|
||||||
|
modified by hardware.</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>No</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section id="v4l2-selection-flags">
|
||||||
|
|
||||||
|
<title>Selection flags</title>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="v4l2-selection-flags-table">
|
||||||
|
<title>Selection flag definitions</title>
|
||||||
|
<tgroup cols="5">
|
||||||
|
<colspec colname="c1" />
|
||||||
|
<colspec colname="c2" />
|
||||||
|
<colspec colname="c3" />
|
||||||
|
<colspec colname="c4" />
|
||||||
|
<colspec colname="c5" />
|
||||||
|
&cs-def;
|
||||||
|
<thead>
|
||||||
|
<row rowsep="1">
|
||||||
|
<entry align="left">Flag name</entry>
|
||||||
|
<entry align="left">id</entry>
|
||||||
|
<entry align="left">Definition</entry>
|
||||||
|
<entry align="left">Valid for V4L2</entry>
|
||||||
|
<entry align="left">Valid for V4L2 subdev</entry>
|
||||||
|
</row>
|
||||||
|
</thead>
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_FLAG_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_SEL_FLAG_LE</constant>) the
|
||||||
|
behaviour is to choose the closest possible
|
||||||
|
rectangle.</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_FLAG_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>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_SEL_FLAG_KEEP_CONFIG</constant></entry>
|
||||||
|
<entry>(1 << 2)</entry>
|
||||||
|
<entry>The configuration must 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>
|
||||||
|
<entry>No</entry>
|
||||||
|
<entry>Yes</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</section>
|
|
@ -140,6 +140,11 @@ structs, ioctls) must be noted in more detail in the history chapter
|
||||||
applications. -->
|
applications. -->
|
||||||
|
|
||||||
<revision>
|
<revision>
|
||||||
|
<revnumber>3.6</revnumber>
|
||||||
|
<date>2012-07-02</date>
|
||||||
|
<authorinitials>hv</authorinitials>
|
||||||
|
<revremark>Added VIDIOC_ENUM_FREQ_BANDS.
|
||||||
|
</revremark>
|
||||||
<revnumber>3.5</revnumber>
|
<revnumber>3.5</revnumber>
|
||||||
<date>2012-05-07</date>
|
<date>2012-05-07</date>
|
||||||
<authorinitials>sa, sn</authorinitials>
|
<authorinitials>sa, sn</authorinitials>
|
||||||
|
@ -534,6 +539,7 @@ and discussions on the V4L mailing list.</revremark>
|
||||||
&sub-enum-fmt;
|
&sub-enum-fmt;
|
||||||
&sub-enum-framesizes;
|
&sub-enum-framesizes;
|
||||||
&sub-enum-frameintervals;
|
&sub-enum-frameintervals;
|
||||||
|
&sub-enum-freq-bands;
|
||||||
&sub-enuminput;
|
&sub-enuminput;
|
||||||
&sub-enumoutput;
|
&sub-enumoutput;
|
||||||
&sub-enumstd;
|
&sub-enumstd;
|
||||||
|
@ -589,6 +595,11 @@ and discussions on the V4L mailing list.</revremark>
|
||||||
&sub-write;
|
&sub-write;
|
||||||
</appendix>
|
</appendix>
|
||||||
|
|
||||||
|
<appendix>
|
||||||
|
<title>Common definitions for V4L2 and V4L2 subdev interfaces</title>
|
||||||
|
&sub-selections-common;
|
||||||
|
</appendix>
|
||||||
|
|
||||||
<appendix id="videodev">
|
<appendix id="videodev">
|
||||||
<title>Video For Linux Two Header File</title>
|
<title>Video For Linux Two Header File</title>
|
||||||
&sub-videodev2-h;
|
&sub-videodev2-h;
|
||||||
|
|
|
@ -64,7 +64,7 @@ different sizes.</para>
|
||||||
<para>To allocate device buffers applications initialize relevant fields of
|
<para>To allocate device buffers applications initialize relevant fields of
|
||||||
the <structname>v4l2_create_buffers</structname> structure. They set the
|
the <structname>v4l2_create_buffers</structname> structure. They set the
|
||||||
<structfield>type</structfield> field in the
|
<structfield>type</structfield> field in the
|
||||||
<structname>v4l2_format</structname> structure, embedded in this
|
&v4l2-format; structure, embedded in this
|
||||||
structure, to the respective stream or buffer type.
|
structure, to the respective stream or buffer type.
|
||||||
<structfield>count</structfield> must be set to the number of required buffers.
|
<structfield>count</structfield> must be set to the number of required buffers.
|
||||||
<structfield>memory</structfield> specifies the required I/O method. The
|
<structfield>memory</structfield> specifies the required I/O method. The
|
||||||
|
@ -97,7 +97,13 @@ information.</para>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>count</structfield></entry>
|
<entry><structfield>count</structfield></entry>
|
||||||
<entry>The number of buffers requested or granted.</entry>
|
<entry>The number of buffers requested or granted. If count == 0, then
|
||||||
|
<constant>VIDIOC_CREATE_BUFS</constant> will set <structfield>index</structfield>
|
||||||
|
to the current number of created buffers, and it will check the validity of
|
||||||
|
<structfield>memory</structfield> and <structfield>format.type</structfield>.
|
||||||
|
If those are invalid -1 is returned and errno is set to &EINVAL;,
|
||||||
|
otherwise <constant>VIDIOC_CREATE_BUFS</constant> returns 0. It will
|
||||||
|
never set errno to &EBUSY; in this particular case.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -108,7 +114,7 @@ information.</para>
|
||||||
/></entry>
|
/></entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>struct v4l2_format</entry>
|
<entry>&v4l2-format;</entry>
|
||||||
<entry><structfield>format</structfield></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.</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
|
@ -54,15 +54,9 @@
|
||||||
interface and may change in the future.</para>
|
interface and may change in the future.</para>
|
||||||
</note>
|
</note>
|
||||||
|
|
||||||
<para>To query the available timings, applications initialize the
|
<para>To query the capabilities of the DV receiver/transmitter applications can call
|
||||||
<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-timings-cap;
|
this ioctl and the driver will fill in the structure. Note that drivers may return
|
||||||
and call the <constant>VIDIOC_DV_TIMINGS_CAP</constant> ioctl with a pointer to this
|
different values after switching the video input or output.</para>
|
||||||
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">
|
<table pgwide="1" frame="none" id="v4l2-bt-timings-cap">
|
||||||
<title>struct <structname>v4l2_bt_timings_cap</structname></title>
|
<title>struct <structname>v4l2_bt_timings_cap</structname></title>
|
||||||
|
@ -115,7 +109,7 @@ output.</para>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>reserved</structfield>[16]</entry>
|
<entry><structfield>reserved</structfield>[16]</entry>
|
||||||
<entry></entry>
|
<entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
|
||||||
</row>
|
</row>
|
||||||
</tbody>
|
</tbody>
|
||||||
</tgroup>
|
</tgroup>
|
||||||
|
|
179
Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
Normal file
179
Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
<refentry id="vidioc-enum-freq-bands">
|
||||||
|
<refmeta>
|
||||||
|
<refentrytitle>ioctl VIDIOC_ENUM_FREQ_BANDS</refentrytitle>
|
||||||
|
&manvol;
|
||||||
|
</refmeta>
|
||||||
|
|
||||||
|
<refnamediv>
|
||||||
|
<refname>VIDIOC_ENUM_FREQ_BANDS</refname>
|
||||||
|
<refpurpose>Enumerate supported frequency bands</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_frequency_band
|
||||||
|
*<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_FREQ_BANDS</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>Enumerates the frequency bands that a tuner or modulator supports.
|
||||||
|
To do this applications initialize the <structfield>tuner</structfield>,
|
||||||
|
<structfield>type</structfield> and <structfield>index</structfield> fields,
|
||||||
|
and zero out the <structfield>reserved</structfield> array of a &v4l2-frequency-band; and
|
||||||
|
call the <constant>VIDIOC_ENUM_FREQ_BANDS</constant> ioctl with a pointer
|
||||||
|
to this structure.</para>
|
||||||
|
|
||||||
|
<para>This ioctl is supported if the <constant>V4L2_TUNER_CAP_FREQ_BANDS</constant> capability
|
||||||
|
of the corresponding tuner/modulator is set.</para>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="v4l2-frequency-band">
|
||||||
|
<title>struct <structname>v4l2_frequency_band</structname></title>
|
||||||
|
<tgroup cols="3">
|
||||||
|
&cs-str;
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>tuner</structfield></entry>
|
||||||
|
<entry>The tuner or modulator index number. This is the
|
||||||
|
same value as in the &v4l2-input; <structfield>tuner</structfield>
|
||||||
|
field and the &v4l2-tuner; <structfield>index</structfield> field, or
|
||||||
|
the &v4l2-output; <structfield>modulator</structfield> field and the
|
||||||
|
&v4l2-modulator; <structfield>index</structfield> field.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<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
|
||||||
|
to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
|
||||||
|
device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
|
||||||
|
for all others. Set this field to <constant>V4L2_TUNER_RADIO</constant> for
|
||||||
|
modulators (currently only radio modulators are supported).
|
||||||
|
See <xref linkend="v4l2-tuner-type" /></entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>index</structfield></entry>
|
||||||
|
<entry>Identifies the frequency band, set by the application.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>capability</structfield></entry>
|
||||||
|
<entry spanname="hspan">The tuner/modulator capability flags for
|
||||||
|
this frequency band, see <xref linkend="tuner-capability" />. The <constant>V4L2_TUNER_CAP_LOW</constant>
|
||||||
|
capability must be the same for all frequency bands of the selected tuner/modulator.
|
||||||
|
So either all bands have that capability set, or none of them have that capability.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>rangelow</structfield></entry>
|
||||||
|
<entry spanname="hspan">The lowest tunable frequency in
|
||||||
|
units of 62.5 kHz, or if the <structfield>capability</structfield>
|
||||||
|
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
|
||||||
|
Hz, for this frequency band.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>rangehigh</structfield></entry>
|
||||||
|
<entry spanname="hspan">The highest tunable frequency in
|
||||||
|
units of 62.5 kHz, or if the <structfield>capability</structfield>
|
||||||
|
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
|
||||||
|
Hz, for this frequency band.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>modulation</structfield></entry>
|
||||||
|
<entry spanname="hspan">The supported modulation systems of this frequency band.
|
||||||
|
See <xref linkend="band-modulation" />. Note that currently only one
|
||||||
|
modulation system per frequency band is supported. More work will need to
|
||||||
|
be done if multiple modulation systems are possible. Contact the
|
||||||
|
linux-media mailing list (&v4l-ml;) if you need that functionality.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>reserved</structfield>[9]</entry>
|
||||||
|
<entry>Reserved for future extensions. Applications and drivers
|
||||||
|
must set the array to zero.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table pgwide="1" frame="none" id="band-modulation">
|
||||||
|
<title>Band Modulation Systems</title>
|
||||||
|
<tgroup cols="3">
|
||||||
|
&cs-def;
|
||||||
|
<tbody valign="top">
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_BAND_MODULATION_VSB</constant></entry>
|
||||||
|
<entry>0x02</entry>
|
||||||
|
<entry>Vestigial Sideband modulation, used for analog TV.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_BAND_MODULATION_FM</constant></entry>
|
||||||
|
<entry>0x04</entry>
|
||||||
|
<entry>Frequency Modulation, commonly used for analog radio.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_BAND_MODULATION_AM</constant></entry>
|
||||||
|
<entry>0x08</entry>
|
||||||
|
<entry>Amplitude Modulation, commonly used for analog radio.</entry>
|
||||||
|
</row>
|
||||||
|
</tbody>
|
||||||
|
</tgroup>
|
||||||
|
</table>
|
||||||
|
</refsect1>
|
||||||
|
|
||||||
|
<refsect1>
|
||||||
|
&return-value;
|
||||||
|
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errorcode>EINVAL</errorcode></term>
|
||||||
|
<listitem>
|
||||||
|
<para>The <structfield>tuner</structfield> or <structfield>index</structfield>
|
||||||
|
is out of bounds or the <structfield>type</structfield> field is wrong.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</refsect1>
|
||||||
|
</refentry>
|
|
@ -98,11 +98,12 @@ the &v4l2-output; <structfield>modulator</structfield> field and the
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>type</structfield></entry>
|
<entry><structfield>type</structfield></entry>
|
||||||
<entry>The tuner type. This is the same value as in the
|
<entry>The tuner type. This is the same value as in the
|
||||||
&v4l2-tuner; <structfield>type</structfield> field. See The type must be set
|
&v4l2-tuner; <structfield>type</structfield> field. The type must be set
|
||||||
to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
|
to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
|
||||||
device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
|
device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
|
||||||
for all others. The field is not applicable to modulators, &ie; ignored
|
for all others. Set this field to <constant>V4L2_TUNER_RADIO</constant> for
|
||||||
by drivers. See <xref linkend="v4l2-tuner-type" /></entry>
|
modulators (currently only radio modulators are supported).
|
||||||
|
See <xref linkend="v4l2-tuner-type" /></entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -135,6 +136,12 @@ bounds or the value in the <structfield>type</structfield> field is
|
||||||
wrong.</para>
|
wrong.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errorcode>EBUSY</errorcode></term>
|
||||||
|
<listitem>
|
||||||
|
<para>A hardware seek is in progress.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
</refentry>
|
</refentry>
|
||||||
|
|
|
@ -65,9 +65,9 @@ Do not use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||||
</constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of
|
</constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of
|
||||||
<constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is
|
<constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is
|
||||||
setting the value of &v4l2-selection; <structfield>target</structfield> field
|
setting the value of &v4l2-selection; <structfield>target</structfield> field
|
||||||
to <constant> V4L2_SEL_TGT_CROP_ACTIVE </constant> (<constant>
|
to <constant> V4L2_SEL_TGT_CROP </constant> (<constant>
|
||||||
V4L2_SEL_TGT_COMPOSE_ACTIVE </constant>). Please refer to table <xref
|
V4L2_SEL_TGT_COMPOSE </constant>). Please refer to table <xref
|
||||||
linkend="v4l2-sel-target" /> or <xref linkend="selection-api" /> for additional
|
linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> for additional
|
||||||
targets. The <structfield>flags</structfield> and <structfield>reserved
|
targets. The <structfield>flags</structfield> and <structfield>reserved
|
||||||
</structfield> fields of &v4l2-selection; are ignored and they must be filled
|
</structfield> fields of &v4l2-selection; are ignored and they must be filled
|
||||||
with zeros. The driver fills the rest of the structure or
|
with zeros. The driver fills the rest of the structure or
|
||||||
|
@ -86,9 +86,9 @@ use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE
|
||||||
</constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of
|
</constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of
|
||||||
<constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is
|
<constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is
|
||||||
setting the value of &v4l2-selection; <structfield>target</structfield> to
|
setting the value of &v4l2-selection; <structfield>target</structfield> to
|
||||||
<constant>V4L2_SEL_TGT_CROP_ACTIVE</constant> (<constant>
|
<constant>V4L2_SEL_TGT_CROP</constant> (<constant>
|
||||||
V4L2_SEL_TGT_COMPOSE_ACTIVE </constant>). Please refer to table <xref
|
V4L2_SEL_TGT_COMPOSE </constant>). Please refer to table <xref
|
||||||
linkend="v4l2-sel-target" /> or <xref linkend="selection-api" /> for additional
|
linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> for additional
|
||||||
targets. The &v4l2-rect; <structfield>r</structfield> rectangle need to be
|
targets. The &v4l2-rect; <structfield>r</structfield> rectangle need to be
|
||||||
set to the desired active area. Field &v4l2-selection; <structfield> reserved
|
set to the desired active area. Field &v4l2-selection; <structfield> reserved
|
||||||
</structfield> is ignored and must be filled with zeros. The driver may adjust
|
</structfield> is ignored and must be filled with zeros. The driver may adjust
|
||||||
|
@ -154,74 +154,8 @@ exist no rectangle </emphasis> that satisfies the constraints.</para>
|
||||||
|
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
<refsect1>
|
<para>Selection targets and flags are documented in <xref
|
||||||
<table frame="none" pgwide="1" id="v4l2-sel-target">
|
linkend="v4l2-selections-common"/>.</para>
|
||||||
<title>Selection targets.</title>
|
|
||||||
<tgroup cols="3">
|
|
||||||
&cs-def;
|
|
||||||
<tbody valign="top">
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_TGT_CROP_ACTIVE</constant></entry>
|
|
||||||
<entry>0x0000</entry>
|
|
||||||
<entry>The area that is currently cropped by hardware.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_TGT_CROP_DEFAULT</constant></entry>
|
|
||||||
<entry>0x0001</entry>
|
|
||||||
<entry>Suggested cropping rectangle that covers the "whole picture".</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_TGT_CROP_BOUNDS</constant></entry>
|
|
||||||
<entry>0x0002</entry>
|
|
||||||
<entry>Limits for the cropping rectangle.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_TGT_COMPOSE_ACTIVE</constant></entry>
|
|
||||||
<entry>0x0100</entry>
|
|
||||||
<entry>The area to which data is composed by hardware.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant></entry>
|
|
||||||
<entry>0x0101</entry>
|
|
||||||
<entry>Suggested composing rectangle that covers the "whole picture".</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
|
|
||||||
<entry>0x0102</entry>
|
|
||||||
<entry>Limits for the composing rectangle.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant></entry>
|
|
||||||
<entry>0x0103</entry>
|
|
||||||
<entry>The active area and all padding pixels that are inserted or modified by hardware.</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<refsect1>
|
|
||||||
<table frame="none" pgwide="1" id="v4l2-sel-flags">
|
|
||||||
<title>Selection constraint flags</title>
|
|
||||||
<tgroup cols="3">
|
|
||||||
&cs-def;
|
|
||||||
<tbody valign="top">
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_FLAG_GE</constant></entry>
|
|
||||||
<entry>0x00000001</entry>
|
|
||||||
<entry>Indicates that the adjusted rectangle must contain the original
|
|
||||||
&v4l2-selection; <structfield>r</structfield> rectangle.</entry>
|
|
||||||
</row>
|
|
||||||
<row>
|
|
||||||
<entry><constant>V4L2_SEL_FLAG_LE</constant></entry>
|
|
||||||
<entry>0x00000002</entry>
|
|
||||||
<entry>Indicates that the adjusted rectangle must be inside the original
|
|
||||||
&v4l2-rect; <structfield>r</structfield> rectangle.</entry>
|
|
||||||
</row>
|
|
||||||
</tbody>
|
|
||||||
</tgroup>
|
|
||||||
</table>
|
|
||||||
</refsect1>
|
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<figure id="sel-const-adjust">
|
<figure id="sel-const-adjust">
|
||||||
|
@ -252,14 +186,14 @@ exist no rectangle </emphasis> that satisfies the constraints.</para>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>target</structfield></entry>
|
<entry><structfield>target</structfield></entry>
|
||||||
<entry>Used to select between <link linkend="v4l2-sel-target"> cropping
|
<entry>Used to select between <link linkend="v4l2-selections-common"> cropping
|
||||||
and composing rectangles</link>.</entry>
|
and composing rectangles</link>.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>flags</structfield></entry>
|
<entry><structfield>flags</structfield></entry>
|
||||||
<entry>Flags controlling the selection rectangle adjustments, refer to
|
<entry>Flags controlling the selection rectangle adjustments, refer to
|
||||||
<link linkend="v4l2-sel-flags">selection flags</link>.</entry>
|
<link linkend="v4l2-selection-flags">selection flags</link>.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>&v4l2-rect;</entry>
|
<entry>&v4l2-rect;</entry>
|
||||||
|
|
|
@ -119,10 +119,14 @@ field is not quite clear.--></para></entry>
|
||||||
<xref linkend="tuner-capability" />. Audio flags indicate the ability
|
<xref linkend="tuner-capability" />. Audio flags indicate the ability
|
||||||
to decode audio subprograms. They will <emphasis>not</emphasis>
|
to decode audio subprograms. They will <emphasis>not</emphasis>
|
||||||
change, for example with the current video standard.</para><para>When
|
change, for example with the current video standard.</para><para>When
|
||||||
the structure refers to a radio tuner only the
|
the structure refers to a radio tuner the
|
||||||
<constant>V4L2_TUNER_CAP_LOW</constant>,
|
<constant>V4L2_TUNER_CAP_LANG1</constant>,
|
||||||
<constant>V4L2_TUNER_CAP_STEREO</constant> and
|
<constant>V4L2_TUNER_CAP_LANG2</constant> and
|
||||||
<constant>V4L2_TUNER_CAP_RDS</constant> flags can be set.</para></entry>
|
<constant>V4L2_TUNER_CAP_NORM</constant> flags can't be used.</para>
|
||||||
|
<para>If multiple frequency bands are supported, then
|
||||||
|
<structfield>capability</structfield> is the union of all
|
||||||
|
<structfield>capability></structfield> fields of each &v4l2-frequency-band;.
|
||||||
|
</para></entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -130,7 +134,9 @@ the structure refers to a radio tuner only the
|
||||||
<entry spanname="hspan">The lowest tunable frequency in
|
<entry spanname="hspan">The lowest tunable frequency in
|
||||||
units of 62.5 kHz, or if the <structfield>capability</structfield>
|
units of 62.5 kHz, or if the <structfield>capability</structfield>
|
||||||
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
|
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
|
||||||
Hz.</entry>
|
Hz. If multiple frequency bands are supported, then
|
||||||
|
<structfield>rangelow</structfield> is the lowest frequency
|
||||||
|
of all the frequency bands.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -138,7 +144,9 @@ Hz.</entry>
|
||||||
<entry spanname="hspan">The highest tunable frequency in
|
<entry spanname="hspan">The highest tunable frequency in
|
||||||
units of 62.5 kHz, or if the <structfield>capability</structfield>
|
units of 62.5 kHz, or if the <structfield>capability</structfield>
|
||||||
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
|
flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
|
||||||
Hz.</entry>
|
Hz. If multiple frequency bands are supported, then
|
||||||
|
<structfield>rangehigh</structfield> is the highest frequency
|
||||||
|
of all the frequency bands.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -275,6 +283,18 @@ can or must be switched. (B/G PAL tuners for example are typically not
|
||||||
see the description of ioctl &VIDIOC-ENUMINPUT; for details. Only
|
see the description of ioctl &VIDIOC-ENUMINPUT; for details. Only
|
||||||
<constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
|
<constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_TUNER_CAP_HWSEEK_BOUNDED</constant></entry>
|
||||||
|
<entry>0x0004</entry>
|
||||||
|
<entry>If set, then this tuner supports the hardware seek functionality
|
||||||
|
where the seek stops when it reaches the end of the frequency range.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_TUNER_CAP_HWSEEK_WRAP</constant></entry>
|
||||||
|
<entry>0x0008</entry>
|
||||||
|
<entry>If set, then this tuner supports the hardware seek functionality
|
||||||
|
where the seek wraps around when it reaches the end of the frequency range.</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><constant>V4L2_TUNER_CAP_STEREO</constant></entry>
|
<entry><constant>V4L2_TUNER_CAP_STEREO</constant></entry>
|
||||||
<entry>0x0010</entry>
|
<entry>0x0010</entry>
|
||||||
|
@ -328,6 +348,12 @@ radio tuners.</entry>
|
||||||
<entry>0x0200</entry>
|
<entry>0x0200</entry>
|
||||||
<entry>The RDS data is parsed by the hardware and set via controls.</entry>
|
<entry>The RDS data is parsed by the hardware and set via controls.</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_TUNER_CAP_FREQ_BANDS</constant></entry>
|
||||||
|
<entry>0x0400</entry>
|
||||||
|
<entry>The &VIDIOC-ENUM-FREQ-BANDS; ioctl can be used to enumerate
|
||||||
|
the available frequency bands.</entry>
|
||||||
|
</row>
|
||||||
</tbody>
|
</tbody>
|
||||||
</tgroup>
|
</tgroup>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -71,12 +71,9 @@ initialize the <structfield>bytesused</structfield>,
|
||||||
<structfield>field</structfield> and
|
<structfield>field</structfield> and
|
||||||
<structfield>timestamp</structfield> fields, see <xref
|
<structfield>timestamp</structfield> fields, see <xref
|
||||||
linkend="buffer" /> for details.
|
linkend="buffer" /> for details.
|
||||||
Applications must also set <structfield>flags</structfield> to 0. If a driver
|
Applications must also set <structfield>flags</structfield> to 0.
|
||||||
supports capturing from specific video inputs and you want to specify a video
|
The <structfield>reserved2</structfield> and
|
||||||
input, then <structfield>flags</structfield> should be set to
|
<structfield>reserved</structfield> fields must be set to 0. When using
|
||||||
<constant>V4L2_BUF_FLAG_INPUT</constant> and the field
|
|
||||||
<structfield>input</structfield> must be initialized to the desired input.
|
|
||||||
The <structfield>reserved</structfield> field must be set to 0. When using
|
|
||||||
the <link linkend="planar-apis">multi-planar API</link>, the
|
the <link linkend="planar-apis">multi-planar API</link>, the
|
||||||
<structfield>m.planes</structfield> field must contain a userspace pointer
|
<structfield>m.planes</structfield> field must contain a userspace pointer
|
||||||
to a filled-in array of &v4l2-plane; and the <structfield>length</structfield>
|
to a filled-in array of &v4l2-plane; and the <structfield>length</structfield>
|
||||||
|
|
|
@ -191,6 +191,19 @@ linkend="output">Video Output</link> interface.</entry>
|
||||||
<link linkend="planar-apis">multi-planar API</link> through the
|
<link linkend="planar-apis">multi-planar API</link> through the
|
||||||
<link linkend="output">Video Output</link> interface.</entry>
|
<link linkend="output">Video Output</link> interface.</entry>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CAP_VIDEO_M2M</constant></entry>
|
||||||
|
<entry>0x00004000</entry>
|
||||||
|
<entry>The device supports the single-planar API through the
|
||||||
|
Video Memory-To-Memory interface.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry><constant>V4L2_CAP_VIDEO_M2M_MPLANE</constant></entry>
|
||||||
|
<entry>0x00008000</entry>
|
||||||
|
<entry>The device supports the
|
||||||
|
<link linkend="planar-apis">multi-planar API</link> through the
|
||||||
|
Video Memory-To-Memory interface.</entry>
|
||||||
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry>
|
<entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry>
|
||||||
<entry>0x00000004</entry>
|
<entry>0x00000004</entry>
|
||||||
|
|
|
@ -52,11 +52,26 @@
|
||||||
<para>Start a hardware frequency seek from the current frequency.
|
<para>Start a hardware frequency seek from the current frequency.
|
||||||
To do this applications initialize the <structfield>tuner</structfield>,
|
To do this applications initialize the <structfield>tuner</structfield>,
|
||||||
<structfield>type</structfield>, <structfield>seek_upward</structfield>,
|
<structfield>type</structfield>, <structfield>seek_upward</structfield>,
|
||||||
<structfield>spacing</structfield> and
|
<structfield>wrap_around</structfield>, <structfield>spacing</structfield>,
|
||||||
<structfield>wrap_around</structfield> fields, and zero out the
|
<structfield>rangelow</structfield> and <structfield>rangehigh</structfield>
|
||||||
<structfield>reserved</structfield> array of a &v4l2-hw-freq-seek; and
|
fields, and zero out the <structfield>reserved</structfield> array of a
|
||||||
call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant> ioctl with a pointer
|
&v4l2-hw-freq-seek; and call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant>
|
||||||
to this structure.</para>
|
ioctl with a pointer to this structure.</para>
|
||||||
|
|
||||||
|
<para>The <structfield>rangelow</structfield> and
|
||||||
|
<structfield>rangehigh</structfield> fields can be set to a non-zero value to
|
||||||
|
tell the driver to search a specific band. If the &v4l2-tuner;
|
||||||
|
<structfield>capability</structfield> field has the
|
||||||
|
<constant>V4L2_TUNER_CAP_HWSEEK_PROG_LIM</constant> flag set, these values
|
||||||
|
must fall within one of the bands returned by &VIDIOC-ENUM-FREQ-BANDS;. If
|
||||||
|
the <constant>V4L2_TUNER_CAP_HWSEEK_PROG_LIM</constant> flag is not set,
|
||||||
|
then these values must exactly match those of one of the bands returned by
|
||||||
|
&VIDIOC-ENUM-FREQ-BANDS;. If the current frequency of the tuner does not fall
|
||||||
|
within the selected band it will be clamped to fit in the band before the
|
||||||
|
seek is started.</para>
|
||||||
|
|
||||||
|
<para>If an error is returned, then the original frequency will
|
||||||
|
be restored.</para>
|
||||||
|
|
||||||
<para>This ioctl is supported if the <constant>V4L2_CAP_HW_FREQ_SEEK</constant> capability is set.</para>
|
<para>This ioctl is supported if the <constant>V4L2_CAP_HW_FREQ_SEEK</constant> capability is set.</para>
|
||||||
|
|
||||||
|
@ -87,7 +102,10 @@ field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>wrap_around</structfield></entry>
|
<entry><structfield>wrap_around</structfield></entry>
|
||||||
<entry>If non-zero, wrap around when at the end of the frequency range, else stop seeking.</entry>
|
<entry>If non-zero, wrap around when at the end of the frequency range, else stop seeking.
|
||||||
|
The &v4l2-tuner; <structfield>capability</structfield> field will tell you what the
|
||||||
|
hardware supports.
|
||||||
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
|
@ -96,7 +114,27 @@ field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>reserved</structfield>[7]</entry>
|
<entry><structfield>rangelow</structfield></entry>
|
||||||
|
<entry>If non-zero, the lowest tunable frequency of the band to
|
||||||
|
search in units of 62.5 kHz, or if the &v4l2-tuner;
|
||||||
|
<structfield>capability</structfield> field has the
|
||||||
|
<constant>V4L2_TUNER_CAP_LOW</constant> flag set, in units of 62.5 Hz.
|
||||||
|
If <structfield>rangelow</structfield> is zero a reasonable default value
|
||||||
|
is used.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>rangehigh</structfield></entry>
|
||||||
|
<entry>If non-zero, the highest tunable frequency of the band to
|
||||||
|
search in units of 62.5 kHz, or if the &v4l2-tuner;
|
||||||
|
<structfield>capability</structfield> field has the
|
||||||
|
<constant>V4L2_TUNER_CAP_LOW</constant> flag set, in units of 62.5 Hz.
|
||||||
|
If <structfield>rangehigh</structfield> is zero a reasonable default value
|
||||||
|
is used.</entry>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<entry>__u32</entry>
|
||||||
|
<entry><structfield>reserved</structfield>[5]</entry>
|
||||||
<entry>Reserved for future extensions. Applications
|
<entry>Reserved for future extensions. Applications
|
||||||
must set the array to zero.</entry>
|
must set the array to zero.</entry>
|
||||||
</row>
|
</row>
|
||||||
|
@ -113,14 +151,22 @@ field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
|
||||||
<term><errorcode>EINVAL</errorcode></term>
|
<term><errorcode>EINVAL</errorcode></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>The <structfield>tuner</structfield> index is out of
|
<para>The <structfield>tuner</structfield> index is out of
|
||||||
bounds, the wrap_around value is not supported or the value in the <structfield>type</structfield> field is
|
bounds, the <structfield>wrap_around</structfield> value is not supported or
|
||||||
wrong.</para>
|
one of the values in the <structfield>type</structfield>,
|
||||||
|
<structfield>rangelow</structfield> or <structfield>rangehigh</structfield>
|
||||||
|
fields is wrong.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term><errorcode>EAGAIN</errorcode></term>
|
<term><errorcode>ENODATA</errorcode></term>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>The ioctl timed-out. Try again.</para>
|
<para>The hardware seek found no channels.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term><errorcode>EBUSY</errorcode></term>
|
||||||
|
<listitem>
|
||||||
|
<para>Another hardware seek is already in progress.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
|
@ -72,10 +72,10 @@
|
||||||
<section>
|
<section>
|
||||||
<title>Types of selection targets</title>
|
<title>Types of selection targets</title>
|
||||||
|
|
||||||
<para>There are two types of selection targets: actual and bounds.
|
<para>There are two types of selection targets: actual and bounds. The
|
||||||
The ACTUAL targets are the targets which configure the hardware.
|
actual targets are the targets which configure the hardware. The BOUNDS
|
||||||
The BOUNDS target will return a rectangle that contain all
|
target will return a rectangle that contain all possible actual
|
||||||
possible ACTUAL rectangles.</para>
|
rectangles.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
|
@ -87,71 +87,8 @@
|
||||||
<constant>EINVAL</constant>.</para>
|
<constant>EINVAL</constant>.</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<table pgwide="1" frame="none" id="v4l2-subdev-selection-targets">
|
<para>Selection targets and flags are documented in <xref
|
||||||
<title>V4L2 subdev selection targets</title>
|
linkend="v4l2-selections-common"/>.</para>
|
||||||
<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">
|
<table pgwide="1" frame="none" id="v4l2-subdev-selection">
|
||||||
<title>struct <structname>v4l2_subdev_selection</structname></title>
|
<title>struct <structname>v4l2_subdev_selection</structname></title>
|
||||||
|
@ -173,13 +110,13 @@
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>target</structfield></entry>
|
<entry><structfield>target</structfield></entry>
|
||||||
<entry>Target selection rectangle. See
|
<entry>Target selection rectangle. See
|
||||||
<xref linkend="v4l2-subdev-selection-targets">.</xref>.</entry>
|
<xref linkend="v4l2-selections-common" />.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>__u32</entry>
|
<entry>__u32</entry>
|
||||||
<entry><structfield>flags</structfield></entry>
|
<entry><structfield>flags</structfield></entry>
|
||||||
<entry>Flags. See
|
<entry>Flags. See
|
||||||
<xref linkend="v4l2-subdev-selection-flags">.</xref></entry>
|
<xref linkend="v4l2-selection-flags" />.</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<entry>&v4l2-rect;</entry>
|
<entry>&v4l2-rect;</entry>
|
||||||
|
|
|
@ -93,6 +93,7 @@ Linux IRQ number into the hardware.
|
||||||
Most drivers cannot use this mapping.
|
Most drivers cannot use this mapping.
|
||||||
|
|
||||||
==== Legacy ====
|
==== Legacy ====
|
||||||
|
irq_domain_add_simple()
|
||||||
irq_domain_add_legacy()
|
irq_domain_add_legacy()
|
||||||
irq_domain_add_legacy_isa()
|
irq_domain_add_legacy_isa()
|
||||||
|
|
||||||
|
@ -115,3 +116,7 @@ The legacy map should only be used if fixed IRQ mappings must be
|
||||||
supported. For example, ISA controllers would use the legacy map for
|
supported. For example, ISA controllers would use the legacy map for
|
||||||
mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ
|
mapping Linux IRQs 0-15 so that existing ISA drivers get the correct IRQ
|
||||||
numbers.
|
numbers.
|
||||||
|
|
||||||
|
Most users of legacy mappings should use irq_domain_add_simple() which
|
||||||
|
will use a legacy domain only if an IRQ range is supplied by the
|
||||||
|
system and will otherwise use a linear domain mapping.
|
||||||
|
|
|
@ -38,6 +38,13 @@ read or write requests. Note that the total allocated number may be twice
|
||||||
this amount, since it applies only to reads or writes (not the accumulated
|
this amount, since it applies only to reads or writes (not the accumulated
|
||||||
sum).
|
sum).
|
||||||
|
|
||||||
|
To avoid priority inversion through request starvation, a request
|
||||||
|
queue maintains a separate request pool per each cgroup when
|
||||||
|
CONFIG_BLK_CGROUP is enabled, and this parameter applies to each such
|
||||||
|
per-block-cgroup request pool. IOW, if there are N block cgroups,
|
||||||
|
each request queue may have upto N request pools, each independently
|
||||||
|
regulated by nr_requests.
|
||||||
|
|
||||||
read_ahead_kb (RW)
|
read_ahead_kb (RW)
|
||||||
------------------
|
------------------
|
||||||
Maximum number of kilobytes to read-ahead for filesystems on this block
|
Maximum number of kilobytes to read-ahead for filesystems on this block
|
||||||
|
|
45
Documentation/cgroups/hugetlb.txt
Normal file
45
Documentation/cgroups/hugetlb.txt
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
HugeTLB Controller
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The HugeTLB controller allows to limit the HugeTLB usage per control group and
|
||||||
|
enforces the controller limit during page fault. Since HugeTLB doesn't
|
||||||
|
support page reclaim, enforcing the limit at page fault time implies that,
|
||||||
|
the application will get SIGBUS signal if it tries to access HugeTLB pages
|
||||||
|
beyond its limit. This requires the application to know beforehand how much
|
||||||
|
HugeTLB pages it would require for its use.
|
||||||
|
|
||||||
|
HugeTLB controller can be created by first mounting the cgroup filesystem.
|
||||||
|
|
||||||
|
# mount -t cgroup -o hugetlb none /sys/fs/cgroup
|
||||||
|
|
||||||
|
With the above step, the initial or the parent HugeTLB group becomes
|
||||||
|
visible at /sys/fs/cgroup. At bootup, this group includes all the tasks in
|
||||||
|
the system. /sys/fs/cgroup/tasks lists the tasks in this cgroup.
|
||||||
|
|
||||||
|
New groups can be created under the parent group /sys/fs/cgroup.
|
||||||
|
|
||||||
|
# cd /sys/fs/cgroup
|
||||||
|
# mkdir g1
|
||||||
|
# echo $$ > g1/tasks
|
||||||
|
|
||||||
|
The above steps create a new group g1 and move the current shell
|
||||||
|
process (bash) into it.
|
||||||
|
|
||||||
|
Brief summary of control files
|
||||||
|
|
||||||
|
hugetlb.<hugepagesize>.limit_in_bytes # set/show limit of "hugepagesize" hugetlb usage
|
||||||
|
hugetlb.<hugepagesize>.max_usage_in_bytes # show max "hugepagesize" hugetlb usage recorded
|
||||||
|
hugetlb.<hugepagesize>.usage_in_bytes # show current res_counter usage for "hugepagesize" hugetlb
|
||||||
|
hugetlb.<hugepagesize>.failcnt # show the number of allocation failure due to HugeTLB limit
|
||||||
|
|
||||||
|
For a system supporting two hugepage size (16M and 16G) the control
|
||||||
|
files include:
|
||||||
|
|
||||||
|
hugetlb.16GB.limit_in_bytes
|
||||||
|
hugetlb.16GB.max_usage_in_bytes
|
||||||
|
hugetlb.16GB.usage_in_bytes
|
||||||
|
hugetlb.16GB.failcnt
|
||||||
|
hugetlb.16MB.limit_in_bytes
|
||||||
|
hugetlb.16MB.max_usage_in_bytes
|
||||||
|
hugetlb.16MB.usage_in_bytes
|
||||||
|
hugetlb.16MB.failcnt
|
|
@ -73,6 +73,8 @@ Brief summary of control files.
|
||||||
|
|
||||||
memory.kmem.tcp.limit_in_bytes # set/show hard limit for tcp buf memory
|
memory.kmem.tcp.limit_in_bytes # set/show hard limit for tcp buf memory
|
||||||
memory.kmem.tcp.usage_in_bytes # show current tcp buf memory allocation
|
memory.kmem.tcp.usage_in_bytes # show current tcp buf memory allocation
|
||||||
|
memory.kmem.tcp.failcnt # show the number of tcp buf memory usage hits limits
|
||||||
|
memory.kmem.tcp.max_usage_in_bytes # show max tcp buf memory usage recorded
|
||||||
|
|
||||||
1. History
|
1. History
|
||||||
|
|
||||||
|
@ -187,12 +189,12 @@ 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
|
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.
|
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.
|
Exception: If CONFIG_CGROUP_CGROUP_MEMCG_SWAP is not used.
|
||||||
When you do swapoff and make swapped-out pages of shmem(tmpfs) to
|
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
|
be backed into memory in force, charges for pages are accounted against the
|
||||||
caller of swapoff rather than the users of shmem.
|
caller of swapoff rather than the users of shmem.
|
||||||
|
|
||||||
2.4 Swap Extension (CONFIG_CGROUP_MEM_RES_CTLR_SWAP)
|
2.4 Swap Extension (CONFIG_MEMCG_SWAP)
|
||||||
|
|
||||||
Swap Extension allows you to record charge for swap. A swapped-in page is
|
Swap Extension allows you to record charge for swap. A swapped-in page is
|
||||||
charged back to original page allocator if possible.
|
charged back to original page allocator if possible.
|
||||||
|
@ -259,7 +261,7 @@ When oom event notifier is registered, event will be delivered.
|
||||||
per-zone-per-cgroup LRU (cgroup's private LRU) is just guarded by
|
per-zone-per-cgroup LRU (cgroup's private LRU) is just guarded by
|
||||||
zone->lru_lock, it has no lock of its own.
|
zone->lru_lock, it has no lock of its own.
|
||||||
|
|
||||||
2.7 Kernel Memory Extension (CONFIG_CGROUP_MEM_RES_CTLR_KMEM)
|
2.7 Kernel Memory Extension (CONFIG_MEMCG_KMEM)
|
||||||
|
|
||||||
With the Kernel memory extension, the Memory Controller is able to limit
|
With the Kernel memory extension, the Memory Controller is able to limit
|
||||||
the amount of kernel memory used by the system. Kernel memory is fundamentally
|
the amount of kernel memory used by the system. Kernel memory is fundamentally
|
||||||
|
@ -286,8 +288,8 @@ per cgroup, instead of globally.
|
||||||
|
|
||||||
a. Enable CONFIG_CGROUPS
|
a. Enable CONFIG_CGROUPS
|
||||||
b. Enable CONFIG_RESOURCE_COUNTERS
|
b. Enable CONFIG_RESOURCE_COUNTERS
|
||||||
c. Enable CONFIG_CGROUP_MEM_RES_CTLR
|
c. Enable CONFIG_MEMCG
|
||||||
d. Enable CONFIG_CGROUP_MEM_RES_CTLR_SWAP (to use swap extension)
|
d. Enable CONFIG_MEMCG_SWAP (to use swap extension)
|
||||||
|
|
||||||
1. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?)
|
1. Prepare the cgroups (see cgroups.txt, Why are cgroups needed?)
|
||||||
# mount -t tmpfs none /sys/fs/cgroup
|
# mount -t tmpfs none /sys/fs/cgroup
|
||||||
|
|
|
@ -27,6 +27,10 @@ The target is named "raid" and it accepts the following parameters:
|
||||||
- rotating parity N (right-to-left) with data restart
|
- rotating parity N (right-to-left) with data restart
|
||||||
raid6_nc RAID6 N continue
|
raid6_nc RAID6 N continue
|
||||||
- rotating parity N (right-to-left) with data continuation
|
- rotating parity N (right-to-left) with data continuation
|
||||||
|
raid10 Various RAID10 inspired algorithms chosen by additional params
|
||||||
|
- RAID10: Striped Mirrors (aka 'Striping on top of mirrors')
|
||||||
|
- RAID1E: Integrated Adjacent Stripe Mirroring
|
||||||
|
- and other similar RAID10 variants
|
||||||
|
|
||||||
Reference: Chapter 4 of
|
Reference: Chapter 4 of
|
||||||
http://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf
|
http://www.snia.org/sites/default/files/SNIA_DDF_Technical_Position_v2.0.pdf
|
||||||
|
@ -59,6 +63,28 @@ The target is named "raid" and it accepts the following parameters:
|
||||||
logical size of the array. The bitmap records the device
|
logical size of the array. The bitmap records the device
|
||||||
synchronisation state for each region.
|
synchronisation state for each region.
|
||||||
|
|
||||||
|
[raid10_copies <# copies>]
|
||||||
|
[raid10_format near]
|
||||||
|
These two options are used to alter the default layout of
|
||||||
|
a RAID10 configuration. The number of copies is can be
|
||||||
|
specified, but the default is 2. There are other variations
|
||||||
|
to how the copies are laid down - the default and only current
|
||||||
|
option is "near". Near copies are what most people think of
|
||||||
|
with respect to mirroring. If these options are left
|
||||||
|
unspecified, or 'raid10_copies 2' and/or 'raid10_format near'
|
||||||
|
are given, then the layouts for 2, 3 and 4 devices are:
|
||||||
|
2 drives 3 drives 4 drives
|
||||||
|
-------- ---------- --------------
|
||||||
|
A1 A1 A1 A1 A2 A1 A1 A2 A2
|
||||||
|
A2 A2 A2 A3 A3 A3 A3 A4 A4
|
||||||
|
A3 A3 A4 A4 A5 A5 A5 A6 A6
|
||||||
|
A4 A4 A5 A6 A6 A7 A7 A8 A8
|
||||||
|
.. .. .. .. .. .. .. .. ..
|
||||||
|
The 2-device layout is equivalent 2-way RAID1. The 4-device
|
||||||
|
layout is what a traditional RAID10 would look like. The
|
||||||
|
3-device layout is what might be called a 'RAID1E - Integrated
|
||||||
|
Adjacent Stripe Mirroring'.
|
||||||
|
|
||||||
<#raid_devs>: The number of devices composing the array.
|
<#raid_devs>: The number of devices composing the array.
|
||||||
Each device consists of two entries. The first is the device
|
Each device consists of two entries. The first is the device
|
||||||
containing the metadata (if any); the second is the one containing the
|
containing the metadata (if any); the second is the one containing the
|
||||||
|
|
|
@ -9,15 +9,14 @@ devices in parallel.
|
||||||
|
|
||||||
Parameters: <num devs> <chunk size> [<dev path> <offset>]+
|
Parameters: <num devs> <chunk size> [<dev path> <offset>]+
|
||||||
<num devs>: Number of underlying devices.
|
<num devs>: Number of underlying devices.
|
||||||
<chunk size>: Size of each chunk of data. Must be a power-of-2 and at
|
<chunk size>: Size of each chunk of data. Must be at least as
|
||||||
least as large as the system's PAGE_SIZE.
|
large as the system's PAGE_SIZE.
|
||||||
<dev path>: Full pathname to the underlying block-device, or a
|
<dev path>: Full pathname to the underlying block-device, or a
|
||||||
"major:minor" device-number.
|
"major:minor" device-number.
|
||||||
<offset>: Starting sector within the device.
|
<offset>: Starting sector within the device.
|
||||||
|
|
||||||
One or more underlying devices can be specified. The striped device size must
|
One or more underlying devices can be specified. The striped device size must
|
||||||
be a multiple of the chunk size and a multiple of the number of underlying
|
be a multiple of the chunk size multiplied by the number of underlying devices.
|
||||||
devices.
|
|
||||||
|
|
||||||
|
|
||||||
Example scripts
|
Example scripts
|
||||||
|
|
|
@ -231,6 +231,9 @@ i) Constructor
|
||||||
no_discard_passdown: Don't pass discards down to the underlying
|
no_discard_passdown: Don't pass discards down to the underlying
|
||||||
data device, but just remove the mapping.
|
data device, but just remove the mapping.
|
||||||
|
|
||||||
|
read_only: Don't allow any changes to be made to the pool
|
||||||
|
metadata.
|
||||||
|
|
||||||
Data block size must be between 64KB (128 sectors) and 1GB
|
Data block size must be between 64KB (128 sectors) and 1GB
|
||||||
(2097152 sectors) inclusive.
|
(2097152 sectors) inclusive.
|
||||||
|
|
||||||
|
@ -239,7 +242,7 @@ ii) Status
|
||||||
|
|
||||||
<transaction id> <used metadata blocks>/<total metadata blocks>
|
<transaction id> <used metadata blocks>/<total metadata blocks>
|
||||||
<used data blocks>/<total data blocks> <held metadata root>
|
<used data blocks>/<total data blocks> <held metadata root>
|
||||||
|
[no_]discard_passdown ro|rw
|
||||||
|
|
||||||
transaction id:
|
transaction id:
|
||||||
A 64-bit number used by userspace to help synchronise with metadata
|
A 64-bit number used by userspace to help synchronise with metadata
|
||||||
|
@ -257,6 +260,21 @@ ii) Status
|
||||||
held root. This feature is not yet implemented so '-' is
|
held root. This feature is not yet implemented so '-' is
|
||||||
always returned.
|
always returned.
|
||||||
|
|
||||||
|
discard_passdown|no_discard_passdown
|
||||||
|
Whether or not discards are actually being passed down to the
|
||||||
|
underlying device. When this is enabled when loading the table,
|
||||||
|
it can get disabled if the underlying device doesn't support it.
|
||||||
|
|
||||||
|
ro|rw
|
||||||
|
If the pool encounters certain types of device failures it will
|
||||||
|
drop into a read-only metadata mode in which no changes to
|
||||||
|
the pool metadata (like allocating new blocks) are permitted.
|
||||||
|
|
||||||
|
In serious cases where even a read-only mode is deemed unsafe
|
||||||
|
no further I/O will be permitted and the status will just
|
||||||
|
contain the string 'Fail'. The userspace recovery tools
|
||||||
|
should then be used.
|
||||||
|
|
||||||
iii) Messages
|
iii) Messages
|
||||||
|
|
||||||
create_thin <dev id>
|
create_thin <dev id>
|
||||||
|
@ -329,3 +347,7 @@ regain some space then send the 'trim' message to the pool.
|
||||||
ii) Status
|
ii) Status
|
||||||
|
|
||||||
<nr mapped sectors> <highest mapped sector>
|
<nr mapped sectors> <highest mapped sector>
|
||||||
|
|
||||||
|
If the pool has encountered device errors and failed, the status
|
||||||
|
will just contain the string 'Fail'. The userspace recovery
|
||||||
|
tools should then be used.
|
||||||
|
|
15
Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt
Normal file
15
Documentation/devicetree/bindings/arm/calxeda/l2ecc.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
Calxeda Highbank L2 cache ECC
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible : Should be "calxeda,hb-sregs-l2-ecc"
|
||||||
|
- reg : Address and size for ECC error interrupt clear registers.
|
||||||
|
- interrupts : Should be single bit error interrupt, then double bit error
|
||||||
|
interrupt.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
sregs@fff3c200 {
|
||||||
|
compatible = "calxeda,hb-sregs-l2-ecc";
|
||||||
|
reg = <0xfff3c200 0x100>;
|
||||||
|
interrupts = <0 71 4 0 72 4>;
|
||||||
|
};
|
14
Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt
Normal file
14
Documentation/devicetree/bindings/arm/calxeda/mem-ctrlr.txt
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Calxeda DDR memory controller
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible : Should be "calxeda,hb-ddr-ctrl"
|
||||||
|
- reg : Address and size for DDR controller registers.
|
||||||
|
- interrupts : Interrupt for DDR controller.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
memory-controller@fff00000 {
|
||||||
|
compatible = "calxeda,hb-ddr-ctrl";
|
||||||
|
reg = <0xfff00000 0x1000>;
|
||||||
|
interrupts = <0 91 4>;
|
||||||
|
};
|
|
@ -0,0 +1,30 @@
|
||||||
|
* Compact Flash
|
||||||
|
|
||||||
|
The Cavium Compact Flash device is connected to the Octeon Boot Bus,
|
||||||
|
and is thus a child of the Boot Bus device. It can read and write
|
||||||
|
industry standard compact flash devices.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,ebt3000-compact-flash";
|
||||||
|
|
||||||
|
Compatibility with many Cavium evaluation boards.
|
||||||
|
|
||||||
|
- reg: The base address of the the CF chip select banks. Depending on
|
||||||
|
the device configuration, there may be one or two banks.
|
||||||
|
|
||||||
|
- cavium,bus-width: The width of the connection to the CF devices. Valid
|
||||||
|
values are 8 and 16.
|
||||||
|
|
||||||
|
- cavium,true-ide: Optional, if present the CF connection is in True IDE mode.
|
||||||
|
|
||||||
|
- cavium,dma-engine-handle: Optional, a phandle for the DMA Engine connected
|
||||||
|
to this device.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
compact-flash@5,0 {
|
||||||
|
compatible = "cavium,ebt3000-compact-flash";
|
||||||
|
reg = <5 0 0x10000>, <6 0 0x10000>;
|
||||||
|
cavium,bus-width = <16>;
|
||||||
|
cavium,true-ide;
|
||||||
|
cavium,dma-engine-handle = <&dma0>;
|
||||||
|
};
|
|
@ -0,0 +1,49 @@
|
||||||
|
* General Purpose Input Output (GPIO) bus.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-3860-gpio"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the GPIO unit's register bank.
|
||||||
|
|
||||||
|
- gpio-controller: This is a GPIO controller.
|
||||||
|
|
||||||
|
- #gpio-cells: Must be <2>. The first cell is the GPIO pin.
|
||||||
|
|
||||||
|
- interrupt-controller: The GPIO controller is also an interrupt
|
||||||
|
controller, many of its pins may be configured as an interrupt
|
||||||
|
source.
|
||||||
|
|
||||||
|
- #interrupt-cells: Must be <2>. The first cell is the GPIO pin
|
||||||
|
connected to the interrupt source. The second cell is the interrupt
|
||||||
|
triggering protocol and may have one of four values:
|
||||||
|
1 - edge triggered on the rising edge.
|
||||||
|
2 - edge triggered on the falling edge
|
||||||
|
4 - level triggered active high.
|
||||||
|
8 - level triggered active low.
|
||||||
|
|
||||||
|
- interrupts: Interrupt routing for each pin.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
gpio-controller@1070000000800 {
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
compatible = "cavium,octeon-3860-gpio";
|
||||||
|
reg = <0x10700 0x00000800 0x0 0x100>;
|
||||||
|
gpio-controller;
|
||||||
|
/* Interrupts are specified by two parts:
|
||||||
|
* 1) GPIO pin number (0..15)
|
||||||
|
* 2) Triggering (1 - edge rising
|
||||||
|
* 2 - edge falling
|
||||||
|
* 4 - level active high
|
||||||
|
* 8 - level active low)
|
||||||
|
*/
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
/* The GPIO pin connect to 16 consecutive CUI bits */
|
||||||
|
interrupts = <0 16>, <0 17>, <0 18>, <0 19>,
|
||||||
|
<0 20>, <0 21>, <0 22>, <0 23>,
|
||||||
|
<0 24>, <0 25>, <0 26>, <0 27>,
|
||||||
|
<0 28>, <0 29>, <0 30>, <0 31>;
|
||||||
|
};
|
34
Documentation/devicetree/bindings/i2c/cavium-i2c.txt
Normal file
34
Documentation/devicetree/bindings/i2c/cavium-i2c.txt
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
* Two Wire Serial Interface (TWSI) / I2C
|
||||||
|
|
||||||
|
- compatible: "cavium,octeon-3860-twsi"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the TWSI/I2C bus controller register bank.
|
||||||
|
|
||||||
|
- #address-cells: Must be <1>.
|
||||||
|
|
||||||
|
- #size-cells: Must be <0>. I2C addresses have no size component.
|
||||||
|
|
||||||
|
- interrupts: A single interrupt specifier.
|
||||||
|
|
||||||
|
- clock-frequency: The I2C bus clock rate in Hz.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
twsi0: i2c@1180000001000 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
compatible = "cavium,octeon-3860-twsi";
|
||||||
|
reg = <0x11800 0x00001000 0x0 0x200>;
|
||||||
|
interrupts = <0 45>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
|
||||||
|
rtc@68 {
|
||||||
|
compatible = "dallas,ds1337";
|
||||||
|
reg = <0x68>;
|
||||||
|
};
|
||||||
|
tmp@4c {
|
||||||
|
compatible = "ti,tmp421";
|
||||||
|
reg = <0x4c>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -4,6 +4,8 @@ Required properties:
|
||||||
- compatible: Should be "fsl,<chip>-i2c"
|
- compatible: Should be "fsl,<chip>-i2c"
|
||||||
- reg: Should contain registers location and length
|
- reg: Should contain registers location and length
|
||||||
- interrupts: Should contain ERROR and DMA interrupts
|
- interrupts: Should contain ERROR and DMA interrupts
|
||||||
|
- clock-frequency: Desired I2C bus clock frequency in Hz.
|
||||||
|
Only 100000Hz and 400000Hz modes are supported.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
@ -13,4 +15,5 @@ i2c0: i2c@80058000 {
|
||||||
compatible = "fsl,imx28-i2c";
|
compatible = "fsl,imx28-i2c";
|
||||||
reg = <0x80058000 2000>;
|
reg = <0x80058000 2000>;
|
||||||
interrupts = <111 68>;
|
interrupts = <111 68>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
};
|
};
|
||||||
|
|
33
Documentation/devicetree/bindings/i2c/i2c-ocores.txt
Normal file
33
Documentation/devicetree/bindings/i2c/i2c-ocores.txt
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
Device tree configuration for i2c-ocores
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : "opencores,i2c-ocores"
|
||||||
|
- reg : bus address start and address range size of device
|
||||||
|
- interrupts : interrupt number
|
||||||
|
- clock-frequency : frequency of bus clock in Hz
|
||||||
|
- #address-cells : should be <1>
|
||||||
|
- #size-cells : should be <0>
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- reg-shift : device register offsets are shifted by this value
|
||||||
|
- reg-io-width : io register width in bytes (1, 2 or 4)
|
||||||
|
- regstep : deprecated, use reg-shift above
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
i2c0: ocores@a0000000 {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
compatible = "opencores,i2c-ocores";
|
||||||
|
reg = <0xa0000000 0x8>;
|
||||||
|
interrupts = <10>;
|
||||||
|
clock-frequency = <20000000>;
|
||||||
|
|
||||||
|
reg-shift = <0>; /* 8 bit registers */
|
||||||
|
reg-io-width = <1>; /* 8 bit read/write */
|
||||||
|
|
||||||
|
dummy@60 {
|
||||||
|
compatible = "dummy";
|
||||||
|
reg = <0x60>;
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,4 +1,4 @@
|
||||||
* I2C
|
* Marvell MMP I2C controller
|
||||||
|
|
||||||
Required properties :
|
Required properties :
|
||||||
|
|
||||||
|
@ -32,3 +32,20 @@ Examples:
|
||||||
interrupts = <58>;
|
interrupts = <58>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
* Marvell MV64XXX I2C controller
|
||||||
|
|
||||||
|
Required properties :
|
||||||
|
|
||||||
|
- reg : Offset and length of the register set for the device
|
||||||
|
- compatible : Should be "marvell,mv64xxx-i2c"
|
||||||
|
- interrupts : The interrupt number
|
||||||
|
- clock-frequency : Desired I2C bus clock frequency in Hz.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
i2c@11000 {
|
||||||
|
compatible = "marvell,mv64xxx-i2c";
|
||||||
|
reg = <0x11000 0x20>;
|
||||||
|
interrupts = <29>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
|
};
|
||||||
|
|
123
Documentation/devicetree/bindings/mfd/ab8500.txt
Normal file
123
Documentation/devicetree/bindings/mfd/ab8500.txt
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
* AB8500 Multi-Functional Device (MFD)
|
||||||
|
|
||||||
|
Required parent device properties:
|
||||||
|
- compatible : contains "stericsson,ab8500";
|
||||||
|
- interrupts : contains the IRQ line for the AB8500
|
||||||
|
- interrupt-controller : describes the AB8500 as an Interrupt Controller (has its own domain)
|
||||||
|
- #interrupt-cells : should be 2, for 2-cell format
|
||||||
|
- The first cell is the AB8500 local IRQ number
|
||||||
|
- The second cell is used to specify optional parameters
|
||||||
|
- bits[3:0] 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
|
||||||
|
|
||||||
|
Optional parent device properties:
|
||||||
|
- reg : contains the PRCMU mailbox address for the AB8500 i2c port
|
||||||
|
|
||||||
|
The AB8500 consists of a large and varied group of sub-devices:
|
||||||
|
|
||||||
|
Device IRQ Names Supply Names Description
|
||||||
|
------ --------- ------------ -----------
|
||||||
|
ab8500-bm : : : Battery Manager
|
||||||
|
ab8500-btemp : : : Battery Temperature
|
||||||
|
ab8500-charger : : : Battery Charger
|
||||||
|
ab8500-fg : : : Fuel Gauge
|
||||||
|
ab8500-gpadc : HW_CONV_END : vddadc : Analogue to Digital Converter
|
||||||
|
SW_CONV_END : :
|
||||||
|
ab8500-gpio : : : GPIO Controller
|
||||||
|
ab8500-ponkey : ONKEY_DBF : : Power-on Key
|
||||||
|
ONKEY_DBR : :
|
||||||
|
ab8500-pwm : : : Pulse Width Modulator
|
||||||
|
ab8500-regulator : : : Regulators
|
||||||
|
ab8500-rtc : 60S : : Real Time Clock
|
||||||
|
: ALARM : :
|
||||||
|
ab8500-sysctrl : : : System Control
|
||||||
|
ab8500-usb : ID_WAKEUP_R : vddulpivio18 : Universal Serial Bus
|
||||||
|
: ID_WAKEUP_F : v-ape :
|
||||||
|
: VBUS_DET_F : musb_1v8 :
|
||||||
|
: VBUS_DET_R : :
|
||||||
|
: USB_LINK_STATUS : :
|
||||||
|
: USB_ADP_PROBE_PLUG : :
|
||||||
|
: USB_ADP_PROBE_UNPLUG : :
|
||||||
|
|
||||||
|
Required child device properties:
|
||||||
|
- compatible : "stericsson,ab8500-[bm|btemp|charger|fg|gpadc|gpio|ponkey|
|
||||||
|
pwm|regulator|rtc|sysctrl|usb]";
|
||||||
|
|
||||||
|
Optional child device properties:
|
||||||
|
- interrupts : contains the device IRQ(s) using the 2-cell format (see above)
|
||||||
|
- interrupt-names : contains names of IRQ resource in the order in which they were
|
||||||
|
supplied in the interrupts property
|
||||||
|
- <supply_name>-supply : contains a phandle to the regulator supply node in Device Tree
|
||||||
|
|
||||||
|
ab8500@5 {
|
||||||
|
compatible = "stericsson,ab8500";
|
||||||
|
reg = <5>; /* mailbox 5 is i2c */
|
||||||
|
interrupts = <0 40 0x4>;
|
||||||
|
interrupt-controller;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
|
||||||
|
ab8500-rtc {
|
||||||
|
compatible = "stericsson,ab8500-rtc";
|
||||||
|
interrupts = <17 0x4
|
||||||
|
18 0x4>;
|
||||||
|
interrupt-names = "60S", "ALARM";
|
||||||
|
};
|
||||||
|
|
||||||
|
ab8500-gpadc {
|
||||||
|
compatible = "stericsson,ab8500-gpadc";
|
||||||
|
interrupts = <32 0x4
|
||||||
|
39 0x4>;
|
||||||
|
interrupt-names = "HW_CONV_END", "SW_CONV_END";
|
||||||
|
vddadc-supply = <&ab8500_ldo_tvout_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ab8500-usb {
|
||||||
|
compatible = "stericsson,ab8500-usb";
|
||||||
|
interrupts = < 90 0x4
|
||||||
|
96 0x4
|
||||||
|
14 0x4
|
||||||
|
15 0x4
|
||||||
|
79 0x4
|
||||||
|
74 0x4
|
||||||
|
75 0x4>;
|
||||||
|
interrupt-names = "ID_WAKEUP_R",
|
||||||
|
"ID_WAKEUP_F",
|
||||||
|
"VBUS_DET_F",
|
||||||
|
"VBUS_DET_R",
|
||||||
|
"USB_LINK_STATUS",
|
||||||
|
"USB_ADP_PROBE_PLUG",
|
||||||
|
"USB_ADP_PROBE_UNPLUG";
|
||||||
|
vddulpivio18-supply = <&ab8500_ldo_initcore_reg>;
|
||||||
|
v-ape-supply = <&db8500_vape_reg>;
|
||||||
|
musb_1v8-supply = <&db8500_vsmps2_reg>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ab8500-ponkey {
|
||||||
|
compatible = "stericsson,ab8500-ponkey";
|
||||||
|
interrupts = <6 0x4
|
||||||
|
7 0x4>;
|
||||||
|
interrupt-names = "ONKEY_DBF", "ONKEY_DBR";
|
||||||
|
};
|
||||||
|
|
||||||
|
ab8500-sysctrl {
|
||||||
|
compatible = "stericsson,ab8500-sysctrl";
|
||||||
|
};
|
||||||
|
|
||||||
|
ab8500-pwm {
|
||||||
|
compatible = "stericsson,ab8500-pwm";
|
||||||
|
};
|
||||||
|
|
||||||
|
ab8500-regulators {
|
||||||
|
compatible = "stericsson,ab8500-regulator";
|
||||||
|
|
||||||
|
ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
|
||||||
|
/*
|
||||||
|
* See: Documentation/devicetree/bindings/regulator/regulator.txt
|
||||||
|
* for more information on regulators
|
||||||
|
*/
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
59
Documentation/devicetree/bindings/mfd/max77686.txt
Normal file
59
Documentation/devicetree/bindings/mfd/max77686.txt
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
Maxim MAX77686 multi-function device
|
||||||
|
|
||||||
|
MAX77686 is a Mulitifunction device with PMIC, RTC and Charger on chip. It is
|
||||||
|
interfaced to host controller using i2c interface. PMIC and Charger submodules
|
||||||
|
are addressed using same i2c slave address whereas RTC submodule uses
|
||||||
|
different i2c slave address,presently for which we are statically creating i2c
|
||||||
|
client while probing.This document describes the binding for mfd device and
|
||||||
|
PMIC submodule.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible : Must be "maxim,max77686";
|
||||||
|
- reg : Specifies the i2c slave address of PMIC block.
|
||||||
|
- interrupts : This i2c device has an IRQ line connected to the main SoC.
|
||||||
|
- interrupt-parent : The parent interrupt controller.
|
||||||
|
|
||||||
|
Optional node:
|
||||||
|
- voltage-regulators : The regulators of max77686 have to be instantiated
|
||||||
|
under subnode named "voltage-regulators" using the following format.
|
||||||
|
|
||||||
|
regulator_name {
|
||||||
|
regulator-compatible = LDOn/BUCKn
|
||||||
|
standard regulator constraints....
|
||||||
|
};
|
||||||
|
refer Documentation/devicetree/bindings/regulator/regulator.txt
|
||||||
|
|
||||||
|
The regulator-compatible property of regulator should initialized with string
|
||||||
|
to get matched with their hardware counterparts as follow:
|
||||||
|
|
||||||
|
-LDOn : for LDOs, where n can lie in range 1 to 26.
|
||||||
|
example: LDO1, LDO2, LDO26.
|
||||||
|
-BUCKn : for BUCKs, where n can lie in range 1 to 9.
|
||||||
|
example: BUCK1, BUCK5, BUCK9.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
max77686@09 {
|
||||||
|
compatible = "maxim,max77686";
|
||||||
|
interrupt-parent = <&wakeup_eint>;
|
||||||
|
interrupts = <26 0>;
|
||||||
|
reg = <0x09>;
|
||||||
|
|
||||||
|
voltage-regulators {
|
||||||
|
ldo11_reg {
|
||||||
|
regulator-compatible = "LDO11";
|
||||||
|
regulator-name = "vdd_ldo11";
|
||||||
|
regulator-min-microvolt = <1900000>;
|
||||||
|
regulator-max-microvolt = <1900000>;
|
||||||
|
regulator-always-on;
|
||||||
|
};
|
||||||
|
|
||||||
|
buck1_reg {
|
||||||
|
regulator-compatible = "BUCK1";
|
||||||
|
regulator-name = "vdd_mif";
|
||||||
|
regulator-min-microvolt = <950000>;
|
||||||
|
regulator-max-microvolt = <1300000>;
|
||||||
|
regulator-always-on;
|
||||||
|
regulator-boot-on;
|
||||||
|
};
|
||||||
|
}
|
|
@ -81,7 +81,7 @@ Example:
|
||||||
|
|
||||||
ti,vmbch-threshold = 0;
|
ti,vmbch-threshold = 0;
|
||||||
ti,vmbch2-threshold = 0;
|
ti,vmbch2-threshold = 0;
|
||||||
|
ti,en-ck32k-xtal;
|
||||||
ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
|
ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
|
||||||
|
|
||||||
vcc1-supply = <®_parent>;
|
vcc1-supply = <®_parent>;
|
||||||
|
|
|
@ -6,7 +6,7 @@ They are connected ot the host processor via i2c for commands, McPDM for audio
|
||||||
data and commands.
|
data and commands.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible : Must be "ti,twl6040";
|
- compatible : "ti,twl6040" for twl6040, "ti,twl6041" for twl6041
|
||||||
- reg: must be 0x4b for i2c address
|
- reg: must be 0x4b for i2c address
|
||||||
- interrupts: twl6040 has one interrupt line connecteded to the main SoC
|
- interrupts: twl6040 has one interrupt line connecteded to the main SoC
|
||||||
- interrupt-parent: The parent interrupt controller
|
- interrupt-parent: The parent interrupt controller
|
||||||
|
|
126
Documentation/devicetree/bindings/mips/cavium/bootbus.txt
Normal file
126
Documentation/devicetree/bindings/mips/cavium/bootbus.txt
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
* Boot Bus
|
||||||
|
|
||||||
|
The Octeon Boot Bus is a configurable parallel bus with 8 chip
|
||||||
|
selects. Each chip select is independently configurable.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-3860-bootbus"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the Boot Bus' register bank.
|
||||||
|
|
||||||
|
- #address-cells: Must be <2>. The first cell is the chip select
|
||||||
|
within the bootbus. The second cell is the offset from the chip select.
|
||||||
|
|
||||||
|
- #size-cells: Must be <1>.
|
||||||
|
|
||||||
|
- ranges: There must be one one triplet of (child-bus-address,
|
||||||
|
parent-bus-address, length) for each active chip select. If the
|
||||||
|
length element for any triplet is zero, the chip select is disabled,
|
||||||
|
making it inactive.
|
||||||
|
|
||||||
|
The configuration parameters for each chip select are stored in child
|
||||||
|
nodes.
|
||||||
|
|
||||||
|
Configuration Properties:
|
||||||
|
- compatible: "cavium,octeon-3860-bootbus-config"
|
||||||
|
|
||||||
|
- cavium,cs-index: A single cell indicating the chip select that
|
||||||
|
corresponds to this configuration.
|
||||||
|
|
||||||
|
- cavium,t-adr: A cell specifying the ADR timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-ce: A cell specifying the CE timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-oe: A cell specifying the OE timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-we: A cell specifying the WE timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-rd-hld: A cell specifying the RD_HLD timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-wr-hld: A cell specifying the WR_HLD timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-pause: A cell specifying the PAUSE timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-wait: A cell specifying the WAIT timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-page: A cell specifying the PAGE timing (in nS).
|
||||||
|
|
||||||
|
- cavium,t-rd-dly: A cell specifying the RD_DLY timing (in nS).
|
||||||
|
|
||||||
|
- cavium,pages: A cell specifying the PAGES parameter (0 = 8 bytes, 1
|
||||||
|
= 2 bytes, 2 = 4 bytes, 3 = 8 bytes).
|
||||||
|
|
||||||
|
- cavium,wait-mode: Optional. If present, wait mode (WAITM) is selected.
|
||||||
|
|
||||||
|
- cavium,page-mode: Optional. If present, page mode (PAGEM) is selected.
|
||||||
|
|
||||||
|
- cavium,bus-width: A cell specifying the WIDTH parameter (in bits) of
|
||||||
|
the bus for this chip select.
|
||||||
|
|
||||||
|
- cavium,ale-mode: Optional. If present, ALE mode is selected.
|
||||||
|
|
||||||
|
- cavium,sam-mode: Optional. If present, SAM mode is selected.
|
||||||
|
|
||||||
|
- cavium,or-mode: Optional. If present, OR mode is selected.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
bootbus: bootbus@1180000000000 {
|
||||||
|
compatible = "cavium,octeon-3860-bootbus";
|
||||||
|
reg = <0x11800 0x00000000 0x0 0x200>;
|
||||||
|
/* The chip select number and offset */
|
||||||
|
#address-cells = <2>;
|
||||||
|
/* The size of the chip select region */
|
||||||
|
#size-cells = <1>;
|
||||||
|
ranges = <0 0 0x0 0x1f400000 0xc00000>,
|
||||||
|
<1 0 0x10000 0x30000000 0>,
|
||||||
|
<2 0 0x10000 0x40000000 0>,
|
||||||
|
<3 0 0x10000 0x50000000 0>,
|
||||||
|
<4 0 0x0 0x1d020000 0x10000>,
|
||||||
|
<5 0 0x0 0x1d040000 0x10000>,
|
||||||
|
<6 0 0x0 0x1d050000 0x10000>,
|
||||||
|
<7 0 0x10000 0x90000000 0>;
|
||||||
|
|
||||||
|
cavium,cs-config@0 {
|
||||||
|
compatible = "cavium,octeon-3860-bootbus-config";
|
||||||
|
cavium,cs-index = <0>;
|
||||||
|
cavium,t-adr = <20>;
|
||||||
|
cavium,t-ce = <60>;
|
||||||
|
cavium,t-oe = <60>;
|
||||||
|
cavium,t-we = <45>;
|
||||||
|
cavium,t-rd-hld = <35>;
|
||||||
|
cavium,t-wr-hld = <45>;
|
||||||
|
cavium,t-pause = <0>;
|
||||||
|
cavium,t-wait = <0>;
|
||||||
|
cavium,t-page = <35>;
|
||||||
|
cavium,t-rd-dly = <0>;
|
||||||
|
|
||||||
|
cavium,pages = <0>;
|
||||||
|
cavium,bus-width = <8>;
|
||||||
|
};
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.
|
||||||
|
cavium,cs-config@6 {
|
||||||
|
compatible = "cavium,octeon-3860-bootbus-config";
|
||||||
|
cavium,cs-index = <6>;
|
||||||
|
cavium,t-adr = <5>;
|
||||||
|
cavium,t-ce = <300>;
|
||||||
|
cavium,t-oe = <270>;
|
||||||
|
cavium,t-we = <150>;
|
||||||
|
cavium,t-rd-hld = <100>;
|
||||||
|
cavium,t-wr-hld = <70>;
|
||||||
|
cavium,t-pause = <0>;
|
||||||
|
cavium,t-wait = <0>;
|
||||||
|
cavium,t-page = <320>;
|
||||||
|
cavium,t-rd-dly = <0>;
|
||||||
|
|
||||||
|
cavium,pages = <0>;
|
||||||
|
cavium,wait-mode;
|
||||||
|
cavium,bus-width = <16>;
|
||||||
|
};
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.
|
||||||
|
};
|
26
Documentation/devicetree/bindings/mips/cavium/ciu.txt
Normal file
26
Documentation/devicetree/bindings/mips/cavium/ciu.txt
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
* Central Interrupt Unit
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-3860-ciu"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn63XX SOCs.
|
||||||
|
|
||||||
|
- interrupt-controller: This is an interrupt controller.
|
||||||
|
|
||||||
|
- reg: The base address of the CIU's register bank.
|
||||||
|
|
||||||
|
- #interrupt-cells: Must be <2>. The first cell is the bank within
|
||||||
|
the CIU and may have a value of 0 or 1. The second cell is the bit
|
||||||
|
within the bank and may have a value between 0 and 63.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
interrupt-controller@1070000000000 {
|
||||||
|
compatible = "cavium,octeon-3860-ciu";
|
||||||
|
interrupt-controller;
|
||||||
|
/* Interrupts are specified by two parts:
|
||||||
|
* 1) Controller register (0 or 1)
|
||||||
|
* 2) Bit within the register (0..63)
|
||||||
|
*/
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x10700 0x00000000 0x0 0x7000>;
|
||||||
|
};
|
27
Documentation/devicetree/bindings/mips/cavium/ciu2.txt
Normal file
27
Documentation/devicetree/bindings/mips/cavium/ciu2.txt
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
* Central Interrupt Unit
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-6880-ciu2"
|
||||||
|
|
||||||
|
Compatibility with 68XX SOCs.
|
||||||
|
|
||||||
|
- interrupt-controller: This is an interrupt controller.
|
||||||
|
|
||||||
|
- reg: The base address of the CIU's register bank.
|
||||||
|
|
||||||
|
- #interrupt-cells: Must be <2>. The first cell is the bank within
|
||||||
|
the CIU and may have a value between 0 and 63. The second cell is
|
||||||
|
the bit within the bank and may also have a value between 0 and 63.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
interrupt-controller@1070100000000 {
|
||||||
|
compatible = "cavium,octeon-6880-ciu2";
|
||||||
|
interrupt-controller;
|
||||||
|
/* Interrupts are specified by two parts:
|
||||||
|
* 1) Controller register (0..63)
|
||||||
|
* 2) Bit within the register (0..63)
|
||||||
|
*/
|
||||||
|
#address-cells = <0>;
|
||||||
|
#interrupt-cells = <2>;
|
||||||
|
reg = <0x10701 0x00000000 0x0 0x4000000>;
|
||||||
|
};
|
21
Documentation/devicetree/bindings/mips/cavium/dma-engine.txt
Normal file
21
Documentation/devicetree/bindings/mips/cavium/dma-engine.txt
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
* DMA Engine.
|
||||||
|
|
||||||
|
The Octeon DMA Engine transfers between the Boot Bus and main memory.
|
||||||
|
The DMA Engine will be refered to by phandle by any device that is
|
||||||
|
connected to it.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-5750-bootbus-dma"
|
||||||
|
|
||||||
|
Compatibility with all cn52XX, cn56XX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the DMA Engine's register bank.
|
||||||
|
|
||||||
|
- interrupts: A single interrupt specifier.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
dma0: dma-engine@1180000000100 {
|
||||||
|
compatible = "cavium,octeon-5750-bootbus-dma";
|
||||||
|
reg = <0x11800 0x00000100 0x0 0x8>;
|
||||||
|
interrupts = <0 63>;
|
||||||
|
};
|
46
Documentation/devicetree/bindings/mips/cavium/uctl.txt
Normal file
46
Documentation/devicetree/bindings/mips/cavium/uctl.txt
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
* UCTL USB controller glue
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-6335-uctl"
|
||||||
|
|
||||||
|
Compatibility with all cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the UCTL register bank.
|
||||||
|
|
||||||
|
- #address-cells: Must be <2>.
|
||||||
|
|
||||||
|
- #size-cells: Must be <2>.
|
||||||
|
|
||||||
|
- ranges: Empty to signify direct mapping of the children.
|
||||||
|
|
||||||
|
- refclk-frequency: A single cell containing the reference clock
|
||||||
|
frequency in Hz.
|
||||||
|
|
||||||
|
- refclk-type: A string describing the reference clock connection
|
||||||
|
either "crystal" or "external".
|
||||||
|
|
||||||
|
Example:
|
||||||
|
uctl@118006f000000 {
|
||||||
|
compatible = "cavium,octeon-6335-uctl";
|
||||||
|
reg = <0x11800 0x6f000000 0x0 0x100>;
|
||||||
|
ranges; /* Direct mapping */
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
/* 12MHz, 24MHz and 48MHz allowed */
|
||||||
|
refclk-frequency = <24000000>;
|
||||||
|
/* Either "crystal" or "external" */
|
||||||
|
refclk-type = "crystal";
|
||||||
|
|
||||||
|
ehci@16f0000000000 {
|
||||||
|
compatible = "cavium,octeon-6335-ehci","usb-ehci";
|
||||||
|
reg = <0x16f00 0x00000000 0x0 0x100>;
|
||||||
|
interrupts = <0 56>;
|
||||||
|
big-endian-regs;
|
||||||
|
};
|
||||||
|
ohci@16f0000000400 {
|
||||||
|
compatible = "cavium,octeon-6335-ohci","usb-ohci";
|
||||||
|
reg = <0x16f00 0x00000400 0x0 0x100>;
|
||||||
|
interrupts = <0 56>;
|
||||||
|
big-endian-regs;
|
||||||
|
};
|
||||||
|
};
|
27
Documentation/devicetree/bindings/net/cavium-mdio.txt
Normal file
27
Documentation/devicetree/bindings/net/cavium-mdio.txt
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
* System Management Interface (SMI) / MDIO
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-3860-mdio"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the MDIO bus controller register bank.
|
||||||
|
|
||||||
|
- #address-cells: Must be <1>.
|
||||||
|
|
||||||
|
- #size-cells: Must be <0>. MDIO addresses have no size component.
|
||||||
|
|
||||||
|
Typically an MDIO bus might have several children.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
mdio@1180000001800 {
|
||||||
|
compatible = "cavium,octeon-3860-mdio";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <0x11800 0x00001800 0x0 0x40>;
|
||||||
|
|
||||||
|
ethernet-phy@0 {
|
||||||
|
...
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
};
|
39
Documentation/devicetree/bindings/net/cavium-mix.txt
Normal file
39
Documentation/devicetree/bindings/net/cavium-mix.txt
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
* MIX Ethernet controller.
|
||||||
|
|
||||||
|
Properties:
|
||||||
|
- compatible: "cavium,octeon-5750-mix"
|
||||||
|
|
||||||
|
Compatibility with all cn5XXX and cn6XXX SOCs populated with MIX
|
||||||
|
devices.
|
||||||
|
|
||||||
|
- reg: The base addresses of four separate register banks. The first
|
||||||
|
bank contains the MIX registers. The second bank the corresponding
|
||||||
|
AGL registers. The third bank are the AGL registers shared by all
|
||||||
|
MIX devices present. The fourth bank is the AGL_PRT_CTL shared by
|
||||||
|
all MIX devices present.
|
||||||
|
|
||||||
|
- cell-index: A single cell specifying which portion of the shared
|
||||||
|
register banks corresponds to this MIX device.
|
||||||
|
|
||||||
|
- interrupts: Two interrupt specifiers. The first is the MIX
|
||||||
|
interrupt routing and the second the routing for the AGL interrupts.
|
||||||
|
|
||||||
|
- mac-address: Optional, the MAC address to assign to the device.
|
||||||
|
|
||||||
|
- local-mac-address: Optional, the MAC address to assign to the device
|
||||||
|
if mac-address is not specified.
|
||||||
|
|
||||||
|
- phy-handle: Optional, a phandle for the PHY device connected to this device.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
ethernet@1070000100800 {
|
||||||
|
compatible = "cavium,octeon-5750-mix";
|
||||||
|
reg = <0x10700 0x00100800 0x0 0x100>, /* MIX */
|
||||||
|
<0x11800 0xE0000800 0x0 0x300>, /* AGL */
|
||||||
|
<0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED */
|
||||||
|
<0x11800 0xE0002008 0x0 0x8>; /* AGL_PRT_CTL */
|
||||||
|
cell-index = <1>;
|
||||||
|
interrupts = <1 18>, < 1 46>;
|
||||||
|
local-mac-address = [ 00 0f b7 10 63 54 ];
|
||||||
|
phy-handle = <&phy1>;
|
||||||
|
};
|
98
Documentation/devicetree/bindings/net/cavium-pip.txt
Normal file
98
Documentation/devicetree/bindings/net/cavium-pip.txt
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
* PIP Ethernet nexus.
|
||||||
|
|
||||||
|
The PIP Ethernet nexus can control several data packet input/output
|
||||||
|
devices. The devices have a two level grouping scheme. There may be
|
||||||
|
several interfaces, and each interface may have several ports. These
|
||||||
|
ports might be an individual Ethernet PHY.
|
||||||
|
|
||||||
|
|
||||||
|
Properties for the PIP nexus:
|
||||||
|
- compatible: "cavium,octeon-3860-pip"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the PIP's register bank.
|
||||||
|
|
||||||
|
- #address-cells: Must be <1>.
|
||||||
|
|
||||||
|
- #size-cells: Must be <0>.
|
||||||
|
|
||||||
|
Properties for PIP interfaces which is a child the PIP nexus:
|
||||||
|
- compatible: "cavium,octeon-3860-pip-interface"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The interface number.
|
||||||
|
|
||||||
|
- #address-cells: Must be <1>.
|
||||||
|
|
||||||
|
- #size-cells: Must be <0>.
|
||||||
|
|
||||||
|
Properties for PIP port which is a child the PIP interface:
|
||||||
|
- compatible: "cavium,octeon-3860-pip-port"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The port number within the interface group.
|
||||||
|
|
||||||
|
- mac-address: Optional, the MAC address to assign to the device.
|
||||||
|
|
||||||
|
- local-mac-address: Optional, the MAC address to assign to the device
|
||||||
|
if mac-address is not specified.
|
||||||
|
|
||||||
|
- phy-handle: Optional, a phandle for the PHY device connected to this device.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
pip@11800a0000000 {
|
||||||
|
compatible = "cavium,octeon-3860-pip";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <0x11800 0xa0000000 0x0 0x2000>;
|
||||||
|
|
||||||
|
interface@0 {
|
||||||
|
compatible = "cavium,octeon-3860-pip-interface";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <0>; /* interface */
|
||||||
|
|
||||||
|
ethernet@0 {
|
||||||
|
compatible = "cavium,octeon-3860-pip-port";
|
||||||
|
reg = <0x0>; /* Port */
|
||||||
|
local-mac-address = [ 00 0f b7 10 63 60 ];
|
||||||
|
phy-handle = <&phy2>;
|
||||||
|
};
|
||||||
|
ethernet@1 {
|
||||||
|
compatible = "cavium,octeon-3860-pip-port";
|
||||||
|
reg = <0x1>; /* Port */
|
||||||
|
local-mac-address = [ 00 0f b7 10 63 61 ];
|
||||||
|
phy-handle = <&phy3>;
|
||||||
|
};
|
||||||
|
ethernet@2 {
|
||||||
|
compatible = "cavium,octeon-3860-pip-port";
|
||||||
|
reg = <0x2>; /* Port */
|
||||||
|
local-mac-address = [ 00 0f b7 10 63 62 ];
|
||||||
|
phy-handle = <&phy4>;
|
||||||
|
};
|
||||||
|
ethernet@3 {
|
||||||
|
compatible = "cavium,octeon-3860-pip-port";
|
||||||
|
reg = <0x3>; /* Port */
|
||||||
|
local-mac-address = [ 00 0f b7 10 63 63 ];
|
||||||
|
phy-handle = <&phy5>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
interface@1 {
|
||||||
|
compatible = "cavium,octeon-3860-pip-interface";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
reg = <1>; /* interface */
|
||||||
|
|
||||||
|
ethernet@0 {
|
||||||
|
compatible = "cavium,octeon-3860-pip-port";
|
||||||
|
reg = <0x0>; /* Port */
|
||||||
|
local-mac-address = [ 00 0f b7 10 63 64 ];
|
||||||
|
phy-handle = <&phy6>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
12
Documentation/devicetree/bindings/pwm/lpc32xx-pwm.txt
Normal file
12
Documentation/devicetree/bindings/pwm/lpc32xx-pwm.txt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
LPC32XX PWM controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: should be "nxp,lpc3220-pwm"
|
||||||
|
- reg: physical base address and length of the controller's registers
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
pwm@0x4005C000 {
|
||||||
|
compatible = "nxp,lpc3220-pwm";
|
||||||
|
reg = <0x4005C000 0x8>;
|
||||||
|
};
|
17
Documentation/devicetree/bindings/pwm/mxs-pwm.txt
Normal file
17
Documentation/devicetree/bindings/pwm/mxs-pwm.txt
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
Freescale MXS PWM controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: should be "fsl,imx23-pwm"
|
||||||
|
- reg: physical base address and length of the controller's registers
|
||||||
|
- #pwm-cells: should be 2. The first cell specifies the per-chip index
|
||||||
|
of the PWM to use and the second cell is the duty cycle in nanoseconds.
|
||||||
|
- fsl,pwm-number: the number of PWM devices
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
pwm: pwm@80064000 {
|
||||||
|
compatible = "fsl,imx28-pwm", "fsl,imx23-pwm";
|
||||||
|
reg = <0x80064000 2000>;
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
fsl,pwm-number = <8>;
|
||||||
|
};
|
18
Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
Normal file
18
Documentation/devicetree/bindings/pwm/nvidia,tegra20-pwm.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
Tegra SoC PWFM controller
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: should be one of:
|
||||||
|
- "nvidia,tegra20-pwm"
|
||||||
|
- "nvidia,tegra30-pwm"
|
||||||
|
- reg: physical base address and length of the controller's registers
|
||||||
|
- #pwm-cells: On Tegra the number of cells used to specify a PWM is 2. The
|
||||||
|
first cell specifies the per-chip index of the PWM to use and the second
|
||||||
|
cell is the duty cycle in nanoseconds.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
pwm: pwm@7000a000 {
|
||||||
|
compatible = "nvidia,tegra20-pwm";
|
||||||
|
reg = <0x7000a000 0x100>;
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
};
|
57
Documentation/devicetree/bindings/pwm/pwm.txt
Normal file
57
Documentation/devicetree/bindings/pwm/pwm.txt
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
Specifying PWM information for devices
|
||||||
|
======================================
|
||||||
|
|
||||||
|
1) PWM user nodes
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
PWM users should specify a list of PWM devices that they want to use
|
||||||
|
with a property containing a 'pwm-list':
|
||||||
|
|
||||||
|
pwm-list ::= <single-pwm> [pwm-list]
|
||||||
|
single-pwm ::= <pwm-phandle> <pwm-specifier>
|
||||||
|
pwm-phandle : phandle to PWM controller node
|
||||||
|
pwm-specifier : array of #pwm-cells specifying the given PWM
|
||||||
|
(controller specific)
|
||||||
|
|
||||||
|
PWM properties should be named "pwms". The exact meaning of each pwms
|
||||||
|
property must be documented in the device tree binding for each device.
|
||||||
|
An optional property "pwm-names" may contain a list of strings to label
|
||||||
|
each of the PWM devices listed in the "pwms" property. If no "pwm-names"
|
||||||
|
property is given, the name of the user node will be used as fallback.
|
||||||
|
|
||||||
|
Drivers for devices that use more than a single PWM device can use the
|
||||||
|
"pwm-names" property to map the name of the PWM device requested by the
|
||||||
|
pwm_get() call to an index into the list given by the "pwms" property.
|
||||||
|
|
||||||
|
The following example could be used to describe a PWM-based backlight
|
||||||
|
device:
|
||||||
|
|
||||||
|
pwm: pwm {
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
[...]
|
||||||
|
|
||||||
|
bl: backlight {
|
||||||
|
pwms = <&pwm 0 5000000>;
|
||||||
|
pwm-names = "backlight";
|
||||||
|
};
|
||||||
|
|
||||||
|
pwm-specifier typically encodes the chip-relative PWM number and the PWM
|
||||||
|
period in nanoseconds. Note that in the example above, specifying the
|
||||||
|
"pwm-names" is redundant because the name "backlight" would be used as
|
||||||
|
fallback anyway.
|
||||||
|
|
||||||
|
2) PWM controller nodes
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
PWM controller nodes must specify the number of cells used for the
|
||||||
|
specifier using the '#pwm-cells' property.
|
||||||
|
|
||||||
|
An example PWM controller might look like this:
|
||||||
|
|
||||||
|
pwm: pwm@7000a000 {
|
||||||
|
compatible = "nvidia,tegra20-pwm";
|
||||||
|
reg = <0x7000a000 0x100>;
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
};
|
19
Documentation/devicetree/bindings/serial/cavium-uart.txt
Normal file
19
Documentation/devicetree/bindings/serial/cavium-uart.txt
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
* Universal Asynchronous Receiver/Transmitter (UART)
|
||||||
|
|
||||||
|
- compatible: "cavium,octeon-3860-uart"
|
||||||
|
|
||||||
|
Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
|
||||||
|
|
||||||
|
- reg: The base address of the UART register bank.
|
||||||
|
|
||||||
|
- interrupts: A single interrupt specifier.
|
||||||
|
|
||||||
|
- current-speed: Optional, the current bit rate in bits per second.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
uart1: serial@1180000000c00 {
|
||||||
|
compatible = "cavium,octeon-3860-uart","ns16550";
|
||||||
|
reg = <0x11800 0x00000c00 0x0 0x400>;
|
||||||
|
current-speed = <115200>;
|
||||||
|
interrupts = <0 35>;
|
||||||
|
};
|
|
@ -0,0 +1,28 @@
|
||||||
|
pwm-backlight bindings
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
- compatible: "pwm-backlight"
|
||||||
|
- pwms: OF device-tree PWM specification (see PWM binding[0])
|
||||||
|
- brightness-levels: Array of distinct brightness levels. Typically these
|
||||||
|
are in the range from 0 to 255, but any range starting at 0 will do.
|
||||||
|
The actual brightness level (PWM duty cycle) will be interpolated
|
||||||
|
from these values. 0 means a 0% duty cycle (darkest/off), while the
|
||||||
|
last value in the array represents a 100% duty cycle (brightest).
|
||||||
|
- default-brightness-level: the default brightness level (index into the
|
||||||
|
array defined by the "brightness-levels" property)
|
||||||
|
|
||||||
|
Optional properties:
|
||||||
|
- pwm-names: a list of names for the PWM devices specified in the
|
||||||
|
"pwms" property (see PWM binding[0])
|
||||||
|
|
||||||
|
[0]: Documentation/devicetree/bindings/pwm/pwm.txt
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
backlight {
|
||||||
|
compatible = "pwm-backlight";
|
||||||
|
pwms = <&pwm 0 5000000>;
|
||||||
|
|
||||||
|
brightness-levels = <0 4 8 16 32 64 128 255>;
|
||||||
|
default-brightness-level = <6>;
|
||||||
|
};
|
|
@ -150,7 +150,6 @@ keywords.c
|
||||||
ksym.c*
|
ksym.c*
|
||||||
ksym.h*
|
ksym.h*
|
||||||
kxgettext
|
kxgettext
|
||||||
lkc_defs.h
|
|
||||||
lex.c
|
lex.c
|
||||||
lex.*.c
|
lex.*.c
|
||||||
linux
|
linux
|
||||||
|
|
|
@ -29,7 +29,7 @@ use IO::Handle;
|
||||||
"af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
|
"af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
|
||||||
"lme2510c_s7395_old", "drxk", "drxk_terratec_h5",
|
"lme2510c_s7395_old", "drxk", "drxk_terratec_h5",
|
||||||
"drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137",
|
"drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137",
|
||||||
"drxk_pctv");
|
"drxk_pctv", "drxk_terratec_htc_stick", "sms1xxx_hcw");
|
||||||
|
|
||||||
# Check args
|
# Check args
|
||||||
syntax() if (scalar(@ARGV) != 1);
|
syntax() if (scalar(@ARGV) != 1);
|
||||||
|
@ -676,6 +676,24 @@ sub drxk_terratec_h5 {
|
||||||
"$fwfile"
|
"$fwfile"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub drxk_terratec_htc_stick {
|
||||||
|
my $url = "http://ftp.terratec.de/Receiver/Cinergy_HTC_Stick/Updates/";
|
||||||
|
my $zipfile = "Cinergy_HTC_Stick_Drv_5.09.1202.00_XP_Vista_7.exe";
|
||||||
|
my $hash = "6722a2442a05423b781721fbc069ed5e";
|
||||||
|
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 0);
|
||||||
|
my $drvfile = "Cinergy HTC Stick/BDA Driver 5.09.1202.00/Windows 32 Bit/emOEM.sys";
|
||||||
|
my $fwfile = "dvb-usb-terratec-htc-stick-drxk.fw";
|
||||||
|
|
||||||
|
checkstandard();
|
||||||
|
|
||||||
|
wgetfile($zipfile, $url . $zipfile);
|
||||||
|
verify($zipfile, $hash);
|
||||||
|
unzip($zipfile, $tmpdir);
|
||||||
|
extract("$tmpdir/$drvfile", 0x4e5c0, 42692, "$fwfile");
|
||||||
|
|
||||||
|
"$fwfile"
|
||||||
|
}
|
||||||
|
|
||||||
sub it9135 {
|
sub it9135 {
|
||||||
my $sourcefile = "dvb-usb-it9135.zip";
|
my $sourcefile = "dvb-usb-it9135.zip";
|
||||||
my $url = "http://www.ite.com.tw/uploads/firmware/v3.6.0.0/$sourcefile";
|
my $url = "http://www.ite.com.tw/uploads/firmware/v3.6.0.0/$sourcefile";
|
||||||
|
@ -748,6 +766,28 @@ sub drxk_pctv {
|
||||||
"$fwfile";
|
"$fwfile";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub sms1xxx_hcw {
|
||||||
|
my $url = "http://steventoth.net/linux/sms1xxx/";
|
||||||
|
my %files = (
|
||||||
|
'sms1xxx-hcw-55xxx-dvbt-01.fw' => "afb6f9fb9a71d64392e8564ef9577e5a",
|
||||||
|
'sms1xxx-hcw-55xxx-dvbt-02.fw' => "b44807098ba26e52cbedeadc052ba58f",
|
||||||
|
'sms1xxx-hcw-55xxx-isdbt-02.fw' => "dae934eeea85225acbd63ce6cfe1c9e4",
|
||||||
|
);
|
||||||
|
|
||||||
|
checkstandard();
|
||||||
|
|
||||||
|
my $allfiles;
|
||||||
|
foreach my $fwfile (keys %files) {
|
||||||
|
wgetfile($fwfile, "$url/$fwfile");
|
||||||
|
verify($fwfile, $files{$fwfile});
|
||||||
|
$allfiles .= " $fwfile";
|
||||||
|
}
|
||||||
|
|
||||||
|
$allfiles =~ s/^\s//;
|
||||||
|
|
||||||
|
$allfiles;
|
||||||
|
}
|
||||||
|
|
||||||
# ---------------------------------------------------------------
|
# ---------------------------------------------------------------
|
||||||
# Utilities
|
# Utilities
|
||||||
|
|
||||||
|
|
|
@ -232,116 +232,20 @@ EDAC control and attribute files.
|
||||||
|
|
||||||
|
|
||||||
In 'mcX' directories are EDAC control and attribute files for
|
In 'mcX' directories are EDAC control and attribute files for
|
||||||
this 'X' instance of the memory controllers:
|
this 'X' instance of the memory controllers.
|
||||||
|
|
||||||
|
|
||||||
Counter reset control file:
|
|
||||||
|
|
||||||
'reset_counters'
|
|
||||||
|
|
||||||
This write-only control file will zero all the statistical counters
|
|
||||||
for UE and CE errors. Zeroing the counters will also reset the timer
|
|
||||||
indicating how long since the last counter zero. This is useful
|
|
||||||
for computing errors/time. Since the counters are always reset at
|
|
||||||
driver initialization time, no module/kernel parameter is available.
|
|
||||||
|
|
||||||
RUN TIME: echo "anything" >/sys/devices/system/edac/mc/mc0/counter_reset
|
|
||||||
|
|
||||||
This resets the counters on memory controller 0
|
|
||||||
|
|
||||||
|
|
||||||
Seconds since last counter reset control file:
|
|
||||||
|
|
||||||
'seconds_since_reset'
|
|
||||||
|
|
||||||
This attribute file displays how many seconds have elapsed since the
|
|
||||||
last counter reset. This can be used with the error counters to
|
|
||||||
measure error rates.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Memory Controller name attribute file:
|
|
||||||
|
|
||||||
'mc_name'
|
|
||||||
|
|
||||||
This attribute file displays the type of memory controller
|
|
||||||
that is being utilized.
|
|
||||||
|
|
||||||
|
|
||||||
Total memory managed by this memory controller attribute file:
|
|
||||||
|
|
||||||
'size_mb'
|
|
||||||
|
|
||||||
This attribute file displays, in count of megabytes, of memory
|
|
||||||
that this instance of memory controller manages.
|
|
||||||
|
|
||||||
|
|
||||||
Total Uncorrectable Errors count attribute file:
|
|
||||||
|
|
||||||
'ue_count'
|
|
||||||
|
|
||||||
This attribute file displays the total count of uncorrectable
|
|
||||||
errors that have occurred on this memory controller. If panic_on_ue
|
|
||||||
is set this counter will not have a chance to increment,
|
|
||||||
since EDAC will panic the system.
|
|
||||||
|
|
||||||
|
|
||||||
Total UE count that had no information attribute fileY:
|
|
||||||
|
|
||||||
'ue_noinfo_count'
|
|
||||||
|
|
||||||
This attribute file displays the number of UEs that have occurred
|
|
||||||
with no information as to which DIMM slot is having errors.
|
|
||||||
|
|
||||||
|
|
||||||
Total Correctable Errors count attribute file:
|
|
||||||
|
|
||||||
'ce_count'
|
|
||||||
|
|
||||||
This attribute file displays the total count of correctable
|
|
||||||
errors that have occurred on this memory controller. This
|
|
||||||
count is very important to examine. CEs provide early
|
|
||||||
indications that a DIMM is beginning to fail. This count
|
|
||||||
field should be monitored for non-zero values and report
|
|
||||||
such information to the system administrator.
|
|
||||||
|
|
||||||
|
|
||||||
Total Correctable Errors count attribute file:
|
|
||||||
|
|
||||||
'ce_noinfo_count'
|
|
||||||
|
|
||||||
This attribute file displays the number of CEs that
|
|
||||||
have occurred wherewith no information as to which DIMM slot
|
|
||||||
is having errors. Memory is handicapped, but operational,
|
|
||||||
yet no information is available to indicate which slot
|
|
||||||
the failing memory is in. This count field should be also
|
|
||||||
be monitored for non-zero values.
|
|
||||||
|
|
||||||
Device Symlink:
|
|
||||||
|
|
||||||
'device'
|
|
||||||
|
|
||||||
Symlink to the memory controller device.
|
|
||||||
|
|
||||||
Sdram memory scrubbing rate:
|
|
||||||
|
|
||||||
'sdram_scrub_rate'
|
|
||||||
|
|
||||||
Read/Write attribute file that controls memory scrubbing. The scrubbing
|
|
||||||
rate is set by writing a minimum bandwidth in bytes/sec to the attribute
|
|
||||||
file. The rate will be translated to an internal value that gives at
|
|
||||||
least the specified rate.
|
|
||||||
|
|
||||||
Reading the file will return the actual scrubbing rate employed.
|
|
||||||
|
|
||||||
If configuration fails or memory scrubbing is not implemented, accessing
|
|
||||||
that attribute will fail.
|
|
||||||
|
|
||||||
|
For a description of the sysfs API, please see:
|
||||||
|
Documentation/ABI/testing/sysfs/devices-edac
|
||||||
|
|
||||||
|
|
||||||
============================================================================
|
============================================================================
|
||||||
'csrowX' DIRECTORIES
|
'csrowX' DIRECTORIES
|
||||||
|
|
||||||
|
When CONFIG_EDAC_LEGACY_SYSFS is enabled, the sysfs will contain the
|
||||||
|
csrowX directories. As this API doesn't work properly for Rambus, FB-DIMMs
|
||||||
|
and modern Intel Memory Controllers, this is being deprecated in favor
|
||||||
|
of dimmX directories.
|
||||||
|
|
||||||
In the 'csrowX' directories are EDAC control and attribute files for
|
In the 'csrowX' directories are EDAC control and attribute files for
|
||||||
this 'X' instance of csrow:
|
this 'X' instance of csrow:
|
||||||
|
|
||||||
|
|
|
@ -240,3 +240,30 @@ trap "echo 0 > /sys/kernel/debug/$FAILTYPE/probability" SIGINT SIGTERM EXIT
|
||||||
echo "Injecting errors into the module $module... (interrupt to stop)"
|
echo "Injecting errors into the module $module... (interrupt to stop)"
|
||||||
sleep 1000000
|
sleep 1000000
|
||||||
|
|
||||||
|
Tool to run command with failslab or fail_page_alloc
|
||||||
|
----------------------------------------------------
|
||||||
|
In order to make it easier to accomplish the tasks mentioned above, we can use
|
||||||
|
tools/testing/fault-injection/failcmd.sh. Please run a command
|
||||||
|
"./tools/testing/fault-injection/failcmd.sh --help" for more information and
|
||||||
|
see the following examples.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
Run a command "make -C tools/testing/selftests/ run_tests" with injecting slab
|
||||||
|
allocation failure.
|
||||||
|
|
||||||
|
# ./tools/testing/fault-injection/failcmd.sh \
|
||||||
|
-- make -C tools/testing/selftests/ run_tests
|
||||||
|
|
||||||
|
Same as above except to specify 100 times failures at most instead of one time
|
||||||
|
at most by default.
|
||||||
|
|
||||||
|
# ./tools/testing/fault-injection/failcmd.sh --times=100 \
|
||||||
|
-- make -C tools/testing/selftests/ run_tests
|
||||||
|
|
||||||
|
Same as above except to inject page allocation failure instead of slab
|
||||||
|
allocation failure.
|
||||||
|
|
||||||
|
# env FAILCMD_TYPE=fail_page_alloc \
|
||||||
|
./tools/testing/fault-injection/failcmd.sh --times=100 \
|
||||||
|
-- make -C tools/testing/selftests/ run_tests
|
||||||
|
|
99
Documentation/fault-injection/notifier-error-inject.txt
Normal file
99
Documentation/fault-injection/notifier-error-inject.txt
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
Notifier error injection
|
||||||
|
========================
|
||||||
|
|
||||||
|
Notifier error injection provides the ability to inject artifical errors to
|
||||||
|
specified notifier chain callbacks. It is useful to test the error handling of
|
||||||
|
notifier call chain failures which is rarely executed. There are kernel
|
||||||
|
modules that can be used to test the following notifiers.
|
||||||
|
|
||||||
|
* CPU notifier
|
||||||
|
* PM notifier
|
||||||
|
* Memory hotplug notifier
|
||||||
|
* powerpc pSeries reconfig notifier
|
||||||
|
|
||||||
|
CPU notifier error injection module
|
||||||
|
-----------------------------------
|
||||||
|
This feature can be used to test the error handling of the CPU notifiers by
|
||||||
|
injecting artifical errors to CPU notifier chain callbacks.
|
||||||
|
|
||||||
|
If the notifier call chain should be failed with some events notified, write
|
||||||
|
the error code to debugfs interface
|
||||||
|
/sys/kernel/debug/notifier-error-inject/cpu/actions/<notifier event>/error
|
||||||
|
|
||||||
|
Possible CPU notifier events to be failed are:
|
||||||
|
|
||||||
|
* CPU_UP_PREPARE
|
||||||
|
* CPU_UP_PREPARE_FROZEN
|
||||||
|
* CPU_DOWN_PREPARE
|
||||||
|
* CPU_DOWN_PREPARE_FROZEN
|
||||||
|
|
||||||
|
Example1: Inject CPU offline error (-1 == -EPERM)
|
||||||
|
|
||||||
|
# cd /sys/kernel/debug/notifier-error-inject/cpu
|
||||||
|
# echo -1 > actions/CPU_DOWN_PREPARE/error
|
||||||
|
# echo 0 > /sys/devices/system/cpu/cpu1/online
|
||||||
|
bash: echo: write error: Operation not permitted
|
||||||
|
|
||||||
|
Example2: inject CPU online error (-2 == -ENOENT)
|
||||||
|
|
||||||
|
# echo -2 > actions/CPU_UP_PREPARE/error
|
||||||
|
# echo 1 > /sys/devices/system/cpu/cpu1/online
|
||||||
|
bash: echo: write error: No such file or directory
|
||||||
|
|
||||||
|
PM notifier error injection module
|
||||||
|
----------------------------------
|
||||||
|
This feature is controlled through debugfs interface
|
||||||
|
/sys/kernel/debug/notifier-error-inject/pm/actions/<notifier event>/error
|
||||||
|
|
||||||
|
Possible PM notifier events to be failed are:
|
||||||
|
|
||||||
|
* PM_HIBERNATION_PREPARE
|
||||||
|
* PM_SUSPEND_PREPARE
|
||||||
|
* PM_RESTORE_PREPARE
|
||||||
|
|
||||||
|
Example: Inject PM suspend error (-12 = -ENOMEM)
|
||||||
|
|
||||||
|
# cd /sys/kernel/debug/notifier-error-inject/pm/
|
||||||
|
# echo -12 > actions/PM_SUSPEND_PREPARE/error
|
||||||
|
# echo mem > /sys/power/state
|
||||||
|
bash: echo: write error: Cannot allocate memory
|
||||||
|
|
||||||
|
Memory hotplug notifier error injection module
|
||||||
|
----------------------------------------------
|
||||||
|
This feature is controlled through debugfs interface
|
||||||
|
/sys/kernel/debug/notifier-error-inject/memory/actions/<notifier event>/error
|
||||||
|
|
||||||
|
Possible memory notifier events to be failed are:
|
||||||
|
|
||||||
|
* MEM_GOING_ONLINE
|
||||||
|
* MEM_GOING_OFFLINE
|
||||||
|
|
||||||
|
Example: Inject memory hotplug offline error (-12 == -ENOMEM)
|
||||||
|
|
||||||
|
# cd /sys/kernel/debug/notifier-error-inject/memory
|
||||||
|
# echo -12 > actions/MEM_GOING_OFFLINE/error
|
||||||
|
# echo offline > /sys/devices/system/memory/memoryXXX/state
|
||||||
|
bash: echo: write error: Cannot allocate memory
|
||||||
|
|
||||||
|
powerpc pSeries reconfig notifier error injection module
|
||||||
|
--------------------------------------------------------
|
||||||
|
This feature is controlled through debugfs interface
|
||||||
|
/sys/kernel/debug/notifier-error-inject/pSeries-reconfig/actions/<notifier event>/error
|
||||||
|
|
||||||
|
Possible pSeries reconfig notifier events to be failed are:
|
||||||
|
|
||||||
|
* PSERIES_RECONFIG_ADD
|
||||||
|
* PSERIES_RECONFIG_REMOVE
|
||||||
|
* PSERIES_DRCONF_MEM_ADD
|
||||||
|
* PSERIES_DRCONF_MEM_REMOVE
|
||||||
|
|
||||||
|
For more usage examples
|
||||||
|
-----------------------
|
||||||
|
There are tools/testing/selftests using the notifier error injection features
|
||||||
|
for CPU and memory notifiers.
|
||||||
|
|
||||||
|
* tools/testing/selftests/cpu-hotplug/on-off-test.sh
|
||||||
|
* tools/testing/selftests/memory-hotplug/on-off-test.sh
|
||||||
|
|
||||||
|
These scripts first do simple online and offline tests and then do fault
|
||||||
|
injection tests if notifier error injection module is available.
|
|
@ -13,6 +13,14 @@ Who: Jim Cromie <jim.cromie@gmail.com>, Jason Baron <jbaron@redhat.com>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
What: /proc/sys/vm/nr_pdflush_threads
|
||||||
|
When: 2012
|
||||||
|
Why: Since pdflush is deprecated, the interface exported in /proc/sys/vm/
|
||||||
|
should be removed.
|
||||||
|
Who: Wanpeng Li <liwp@linux.vnet.ibm.com>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
What: CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle
|
What: CONFIG_APM_CPU_IDLE, and its ability to call APM BIOS in idle
|
||||||
When: 2012
|
When: 2012
|
||||||
Why: This optional sub-feature of APM is of dubious reliability,
|
Why: This optional sub-feature of APM is of dubious reliability,
|
||||||
|
@ -70,20 +78,6 @@ Who: Luis R. Rodriguez <lrodriguez@atheros.com>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
What: IRQF_SAMPLE_RANDOM
|
|
||||||
Check: IRQF_SAMPLE_RANDOM
|
|
||||||
When: July 2009
|
|
||||||
|
|
||||||
Why: Many of IRQF_SAMPLE_RANDOM users are technically bogus as entropy
|
|
||||||
sources in the kernel's current entropy model. To resolve this, every
|
|
||||||
input point to the kernel's entropy pool needs to better document the
|
|
||||||
type of entropy source it actually is. This will be replaced with
|
|
||||||
additional add_*_randomness functions in drivers/char/random.c
|
|
||||||
|
|
||||||
Who: Robin Getz <rgetz@blackfin.uclinux.org> & Matt Mackall <mpm@selenic.com>
|
|
||||||
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
What: The ieee80211_regdom module parameter
|
What: The ieee80211_regdom module parameter
|
||||||
When: March 2010 / desktop catchup
|
When: March 2010 / desktop catchup
|
||||||
|
|
||||||
|
@ -600,3 +594,46 @@ When: June 2013
|
||||||
Why: Unsupported/unmaintained/unused since 2.6
|
Why: Unsupported/unmaintained/unused since 2.6
|
||||||
|
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
||||||
|
What: V4L2 selections API target rectangle and flags unification, the
|
||||||
|
following definitions will be removed: V4L2_SEL_TGT_CROP_ACTIVE,
|
||||||
|
V4L2_SEL_TGT_COMPOSE_ACTIVE, V4L2_SUBDEV_SEL_*, V4L2_SUBDEV_SEL_FLAG_*
|
||||||
|
in favor of common V4L2_SEL_TGT_* and V4L2_SEL_FLAG_* definitions.
|
||||||
|
For more details see include/linux/v4l2-common.h.
|
||||||
|
When: 3.8
|
||||||
|
Why: The regular V4L2 selections and the subdev selection API originally
|
||||||
|
defined distinct names for the target rectangles and flags - V4L2_SEL_*
|
||||||
|
and V4L2_SUBDEV_SEL_*. Although, it turned out that the meaning of these
|
||||||
|
target rectangles is virtually identical and the APIs were consolidated
|
||||||
|
to use single set of names - V4L2_SEL_*. This didn't involve any ABI
|
||||||
|
changes. Alias definitions were created for the original ones to avoid
|
||||||
|
any instabilities in the user space interface. After few cycles these
|
||||||
|
backward compatibility definitions will be removed.
|
||||||
|
Who: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
What: Using V4L2_CAP_VIDEO_CAPTURE and V4L2_CAP_VIDEO_OUTPUT flags
|
||||||
|
to indicate a V4L2 memory-to-memory device capability
|
||||||
|
When: 3.8
|
||||||
|
Why: New drivers should use new V4L2_CAP_VIDEO_M2M capability flag
|
||||||
|
to indicate a V4L2 video memory-to-memory (M2M) device and
|
||||||
|
applications can now identify a M2M video device by checking
|
||||||
|
for V4L2_CAP_VIDEO_M2M, with VIDIOC_QUERYCAP ioctl. Using ORed
|
||||||
|
V4L2_CAP_VIDEO_CAPTURE and V4L2_CAP_VIDEO_OUTPUT flags for M2M
|
||||||
|
devices is ambiguous and may lead, for example, to identifying
|
||||||
|
a M2M device as a video capture or output device.
|
||||||
|
Who: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
What: OMAP private DMA implementation
|
||||||
|
When: 2013
|
||||||
|
Why: We have a DMA engine implementation; all users should be updated
|
||||||
|
to use this rather than persisting with the old APIs. The old APIs
|
||||||
|
block merging the old DMA engine implementation into the DMA
|
||||||
|
engine driver.
|
||||||
|
Who: Russell King <linux@arm.linux.org.uk>,
|
||||||
|
Santosh Shilimkar <santosh.shilimkar@ti.com>
|
||||||
|
|
||||||
|
----------------------------
|
||||||
|
|
|
@ -138,8 +138,8 @@ evict_inode:
|
||||||
put_super: write
|
put_super: write
|
||||||
write_super: read
|
write_super: read
|
||||||
sync_fs: read
|
sync_fs: read
|
||||||
freeze_fs: read
|
freeze_fs: write
|
||||||
unfreeze_fs: read
|
unfreeze_fs: write
|
||||||
statfs: maybe(read) (see below)
|
statfs: maybe(read) (see below)
|
||||||
remount_fs: write
|
remount_fs: write
|
||||||
umount_begin: no
|
umount_begin: no
|
||||||
|
@ -206,6 +206,8 @@ prototypes:
|
||||||
int (*launder_page)(struct page *);
|
int (*launder_page)(struct page *);
|
||||||
int (*is_partially_uptodate)(struct page *, read_descriptor_t *, unsigned long);
|
int (*is_partially_uptodate)(struct page *, read_descriptor_t *, unsigned long);
|
||||||
int (*error_remove_page)(struct address_space *, struct page *);
|
int (*error_remove_page)(struct address_space *, struct page *);
|
||||||
|
int (*swap_activate)(struct file *);
|
||||||
|
int (*swap_deactivate)(struct file *);
|
||||||
|
|
||||||
locking rules:
|
locking rules:
|
||||||
All except set_page_dirty and freepage may block
|
All except set_page_dirty and freepage may block
|
||||||
|
@ -229,6 +231,8 @@ migratepage: yes (both)
|
||||||
launder_page: yes
|
launder_page: yes
|
||||||
is_partially_uptodate: yes
|
is_partially_uptodate: yes
|
||||||
error_remove_page: yes
|
error_remove_page: yes
|
||||||
|
swap_activate: no
|
||||||
|
swap_deactivate: no
|
||||||
|
|
||||||
->write_begin(), ->write_end(), ->sync_page() and ->readpage()
|
->write_begin(), ->write_end(), ->sync_page() and ->readpage()
|
||||||
may be called from the request handler (/dev/loop).
|
may be called from the request handler (/dev/loop).
|
||||||
|
@ -330,6 +334,15 @@ cleaned, or an error value if not. Note that in order to prevent the page
|
||||||
getting mapped back in and redirtied, it needs to be kept locked
|
getting mapped back in and redirtied, it needs to be kept locked
|
||||||
across the entire operation.
|
across the entire operation.
|
||||||
|
|
||||||
|
->swap_activate will be called with a non-zero argument on
|
||||||
|
files backing (non block device backed) swapfiles. A return value
|
||||||
|
of zero indicates success, in which case this file can be used for
|
||||||
|
backing swapspace. The swapspace operations will be proxied to the
|
||||||
|
address space operations.
|
||||||
|
|
||||||
|
->swap_deactivate() will be called in the sys_swapoff()
|
||||||
|
path after ->swap_activate() returned success.
|
||||||
|
|
||||||
----------------------- file_lock_operations ------------------------------
|
----------------------- file_lock_operations ------------------------------
|
||||||
prototypes:
|
prototypes:
|
||||||
void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
|
void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
|
||||||
|
@ -346,7 +359,6 @@ prototypes:
|
||||||
int (*lm_compare_owner)(struct file_lock *, struct file_lock *);
|
int (*lm_compare_owner)(struct file_lock *, struct file_lock *);
|
||||||
void (*lm_notify)(struct file_lock *); /* unblock callback */
|
void (*lm_notify)(struct file_lock *); /* unblock callback */
|
||||||
int (*lm_grant)(struct file_lock *, struct file_lock *, int);
|
int (*lm_grant)(struct file_lock *, struct file_lock *, int);
|
||||||
void (*lm_release_private)(struct file_lock *);
|
|
||||||
void (*lm_break)(struct file_lock *); /* break_lease callback */
|
void (*lm_break)(struct file_lock *); /* break_lease callback */
|
||||||
int (*lm_change)(struct file_lock **, int);
|
int (*lm_change)(struct file_lock **, int);
|
||||||
|
|
||||||
|
@ -355,7 +367,6 @@ locking rules:
|
||||||
lm_compare_owner: yes no
|
lm_compare_owner: yes no
|
||||||
lm_notify: yes no
|
lm_notify: yes no
|
||||||
lm_grant: no no
|
lm_grant: no no
|
||||||
lm_release_private: maybe no
|
|
||||||
lm_break: yes no
|
lm_break: yes no
|
||||||
lm_change yes no
|
lm_change yes no
|
||||||
|
|
||||||
|
|
|
@ -592,6 +592,8 @@ struct address_space_operations {
|
||||||
int (*migratepage) (struct page *, struct page *);
|
int (*migratepage) (struct page *, struct page *);
|
||||||
int (*launder_page) (struct page *);
|
int (*launder_page) (struct page *);
|
||||||
int (*error_remove_page) (struct mapping *mapping, struct page *page);
|
int (*error_remove_page) (struct mapping *mapping, struct page *page);
|
||||||
|
int (*swap_activate)(struct file *);
|
||||||
|
int (*swap_deactivate)(struct file *);
|
||||||
};
|
};
|
||||||
|
|
||||||
writepage: called by the VM to write a dirty page to backing store.
|
writepage: called by the VM to write a dirty page to backing store.
|
||||||
|
@ -760,6 +762,16 @@ struct address_space_operations {
|
||||||
Setting this implies you deal with pages going away under you,
|
Setting this implies you deal with pages going away under you,
|
||||||
unless you have them locked or reference counts increased.
|
unless you have them locked or reference counts increased.
|
||||||
|
|
||||||
|
swap_activate: Called when swapon is used on a file to allocate
|
||||||
|
space if necessary and pin the block lookup information in
|
||||||
|
memory. A return value of zero indicates success,
|
||||||
|
in which case this file can be used to back swapspace. The
|
||||||
|
swapspace operations will be proxied to this address space's
|
||||||
|
->swap_{out,in} methods.
|
||||||
|
|
||||||
|
swap_deactivate: Called during swapoff on files where swap_activate
|
||||||
|
was successful.
|
||||||
|
|
||||||
|
|
||||||
The File Object
|
The File Object
|
||||||
===============
|
===============
|
||||||
|
|
54
Documentation/input/edt-ft5x06.txt
Normal file
54
Documentation/input/edt-ft5x06.txt
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
EDT ft5x06 based Polytouch devices
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
The edt-ft5x06 driver is useful for the EDT "Polytouch" family of capacitive
|
||||||
|
touch screens. Note that it is *not* suitable for other devices based on the
|
||||||
|
focaltec ft5x06 devices, since they contain vendor-specific firmware. In
|
||||||
|
particular this driver is not suitable for the Nook tablet.
|
||||||
|
|
||||||
|
It has been tested with the following devices:
|
||||||
|
* EP0350M06
|
||||||
|
* EP0430M06
|
||||||
|
* EP0570M06
|
||||||
|
* EP0700M06
|
||||||
|
|
||||||
|
The driver allows configuration of the touch screen via a set of sysfs files:
|
||||||
|
|
||||||
|
/sys/class/input/eventX/device/device/threshold:
|
||||||
|
allows setting the "click"-threshold in the range from 20 to 80.
|
||||||
|
|
||||||
|
/sys/class/input/eventX/device/device/gain:
|
||||||
|
allows setting the sensitivity in the range from 0 to 31. Note that
|
||||||
|
lower values indicate higher sensitivity.
|
||||||
|
|
||||||
|
/sys/class/input/eventX/device/device/offset:
|
||||||
|
allows setting the edge compensation in the range from 0 to 31.
|
||||||
|
|
||||||
|
/sys/class/input/eventX/device/device/report_rate:
|
||||||
|
allows setting the report rate in the range from 3 to 14.
|
||||||
|
|
||||||
|
|
||||||
|
For debugging purposes the driver provides a few files in the debug
|
||||||
|
filesystem (if available in the kernel). In /sys/kernel/debug/edt_ft5x06
|
||||||
|
you'll find the following files:
|
||||||
|
|
||||||
|
num_x, num_y:
|
||||||
|
(readonly) contains the number of sensor fields in X- and
|
||||||
|
Y-direction.
|
||||||
|
|
||||||
|
mode:
|
||||||
|
allows switching the sensor between "factory mode" and "operation
|
||||||
|
mode" by writing "1" or "0" to it. In factory mode (1) it is
|
||||||
|
possible to get the raw data from the sensor. Note that in factory
|
||||||
|
mode regular events don't get delivered and the options described
|
||||||
|
above are unavailable.
|
||||||
|
|
||||||
|
raw_data:
|
||||||
|
contains num_x * num_y big endian 16 bit values describing the raw
|
||||||
|
values for each sensor field. Note that each read() call on this
|
||||||
|
files triggers a new readout. It is recommended to provide a buffer
|
||||||
|
big enough to contain num_x * num_y * 2 bytes.
|
||||||
|
|
||||||
|
Note that reading raw_data gives a I/O error when the device is not in factory
|
||||||
|
mode. The same happens when reading/writing to the parameter files when the
|
||||||
|
device is not in regular operation mode.
|
|
@ -88,6 +88,7 @@ Code Seq#(hex) Include File Comments
|
||||||
and kernel/power/user.c
|
and kernel/power/user.c
|
||||||
'8' all SNP8023 advanced NIC card
|
'8' all SNP8023 advanced NIC card
|
||||||
<mailto:mcr@solidum.com>
|
<mailto:mcr@solidum.com>
|
||||||
|
';' 64-7F linux/vfio.h
|
||||||
'@' 00-0F linux/radeonfb.h conflict!
|
'@' 00-0F linux/radeonfb.h conflict!
|
||||||
'@' 00-0F drivers/video/aty/aty128fb.c conflict!
|
'@' 00-0F drivers/video/aty/aty128fb.c conflict!
|
||||||
'A' 00-1F linux/apm_bios.h conflict!
|
'A' 00-1F linux/apm_bios.h conflict!
|
||||||
|
|
|
@ -526,7 +526,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
||||||
|
|
||||||
coherent_pool=nn[KMG] [ARM,KNL]
|
coherent_pool=nn[KMG] [ARM,KNL]
|
||||||
Sets the size of memory pool for coherent, atomic dma
|
Sets the size of memory pool for coherent, atomic dma
|
||||||
allocations if Contiguous Memory Allocator (CMA) is used.
|
allocations, by default set to 256K.
|
||||||
|
|
||||||
code_bytes [X86] How many bytes of object code to print
|
code_bytes [X86] How many bytes of object code to print
|
||||||
in an oops report.
|
in an oops report.
|
||||||
|
|
|
@ -112,14 +112,24 @@ CHARGE_COUNTER - the current charge counter (in µAh). This could easily
|
||||||
be negative; there is no empty or full value. It is only useful for
|
be negative; there is no empty or full value. It is only useful for
|
||||||
relative, time-based measurements.
|
relative, time-based measurements.
|
||||||
|
|
||||||
|
CONSTANT_CHARGE_CURRENT - constant charge current programmed by charger.
|
||||||
|
|
||||||
|
CONSTANT_CHARGE_VOLTAGE - constant charge voltage programmed by charger.
|
||||||
|
|
||||||
ENERGY_FULL, ENERGY_EMPTY - same as above but for energy.
|
ENERGY_FULL, ENERGY_EMPTY - same as above but for energy.
|
||||||
|
|
||||||
CAPACITY - capacity in percents.
|
CAPACITY - capacity in percents.
|
||||||
|
CAPACITY_ALERT_MIN - minimum capacity alert value in percents.
|
||||||
|
CAPACITY_ALERT_MAX - maximum capacity alert value in percents.
|
||||||
CAPACITY_LEVEL - capacity level. This corresponds to
|
CAPACITY_LEVEL - capacity level. This corresponds to
|
||||||
POWER_SUPPLY_CAPACITY_LEVEL_*.
|
POWER_SUPPLY_CAPACITY_LEVEL_*.
|
||||||
|
|
||||||
TEMP - temperature of the power supply.
|
TEMP - temperature of the power supply.
|
||||||
|
TEMP_ALERT_MIN - minimum battery temperature alert value in milli centigrade.
|
||||||
|
TEMP_ALERT_MAX - maximum battery temperature alert value in milli centigrade.
|
||||||
TEMP_AMBIENT - ambient temperature.
|
TEMP_AMBIENT - ambient temperature.
|
||||||
|
TEMP_AMBIENT_ALERT_MIN - minimum ambient temperature alert value in milli centigrade.
|
||||||
|
TEMP_AMBIENT_ALERT_MAX - maximum ambient temperature alert value in milli centigrade.
|
||||||
|
|
||||||
TIME_TO_EMPTY - seconds left for battery to be considered empty (i.e.
|
TIME_TO_EMPTY - seconds left for battery to be considered empty (i.e.
|
||||||
while battery powers a load)
|
while battery powers a load)
|
||||||
|
|
|
@ -53,9 +53,20 @@ Struct Resources:
|
||||||
For printing struct resources. The 'R' and 'r' specifiers result in a
|
For printing struct resources. The 'R' and 'r' specifiers result in a
|
||||||
printed resource with ('R') or without ('r') a decoded flags member.
|
printed resource with ('R') or without ('r') a decoded flags member.
|
||||||
|
|
||||||
|
Raw buffer as a hex string:
|
||||||
|
%*ph 00 01 02 ... 3f
|
||||||
|
%*phC 00:01:02: ... :3f
|
||||||
|
%*phD 00-01-02- ... -3f
|
||||||
|
%*phN 000102 ... 3f
|
||||||
|
|
||||||
|
For printing a small buffers (up to 64 bytes long) as a hex string with
|
||||||
|
certain separator. For the larger buffers consider to use
|
||||||
|
print_hex_dump().
|
||||||
|
|
||||||
MAC/FDDI addresses:
|
MAC/FDDI addresses:
|
||||||
|
|
||||||
%pM 00:01:02:03:04:05
|
%pM 00:01:02:03:04:05
|
||||||
|
%pMR 05:04:03:02:01:00
|
||||||
%pMF 00-01-02-03-04-05
|
%pMF 00-01-02-03-04-05
|
||||||
%pm 000102030405
|
%pm 000102030405
|
||||||
|
|
||||||
|
@ -67,6 +78,10 @@ MAC/FDDI addresses:
|
||||||
the 'M' specifier to use dash ('-') separators instead of the default
|
the 'M' specifier to use dash ('-') separators instead of the default
|
||||||
separator.
|
separator.
|
||||||
|
|
||||||
|
For Bluetooth addresses the 'R' specifier shall be used after the 'M'
|
||||||
|
specifier to use reversed byte order suitable for visual interpretation
|
||||||
|
of Bluetooth addresses which are in the little endian order.
|
||||||
|
|
||||||
IPv4 addresses:
|
IPv4 addresses:
|
||||||
|
|
||||||
%pI4 1.2.3.4
|
%pI4 1.2.3.4
|
||||||
|
|
76
Documentation/pwm.txt
Normal file
76
Documentation/pwm.txt
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
Pulse Width Modulation (PWM) interface
|
||||||
|
|
||||||
|
This provides an overview about the Linux PWM interface
|
||||||
|
|
||||||
|
PWMs are commonly used for controlling LEDs, fans or vibrators in
|
||||||
|
cell phones. PWMs with a fixed purpose have no need implementing
|
||||||
|
the Linux PWM API (although they could). However, PWMs are often
|
||||||
|
found as discrete devices on SoCs which have no fixed purpose. It's
|
||||||
|
up to the board designer to connect them to LEDs or fans. To provide
|
||||||
|
this kind of flexibility the generic PWM API exists.
|
||||||
|
|
||||||
|
Identifying PWMs
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Users of the legacy PWM API use unique IDs to refer to PWM devices.
|
||||||
|
|
||||||
|
Instead of referring to a PWM device via its unique ID, board setup code
|
||||||
|
should instead register a static mapping that can be used to match PWM
|
||||||
|
consumers to providers, as given in the following example:
|
||||||
|
|
||||||
|
static struct pwm_lookup board_pwm_lookup[] = {
|
||||||
|
PWM_LOOKUP("tegra-pwm", 0, "pwm-backlight", NULL),
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init board_init(void)
|
||||||
|
{
|
||||||
|
...
|
||||||
|
pwm_add_table(board_pwm_lookup, ARRAY_SIZE(board_pwm_lookup));
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
Using PWMs
|
||||||
|
----------
|
||||||
|
|
||||||
|
Legacy users can request a PWM device using pwm_request() and free it
|
||||||
|
after usage with pwm_free().
|
||||||
|
|
||||||
|
New users should use the pwm_get() function and pass to it the consumer
|
||||||
|
device or a consumer name. pwm_put() is used to free the PWM device.
|
||||||
|
|
||||||
|
After being requested a PWM has to be configured using:
|
||||||
|
|
||||||
|
int pwm_config(struct pwm_device *pwm, int duty_ns, int period_ns);
|
||||||
|
|
||||||
|
To start/stop toggling the PWM output use pwm_enable()/pwm_disable().
|
||||||
|
|
||||||
|
Implementing a PWM driver
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Currently there are two ways to implement pwm drivers. Traditionally
|
||||||
|
there only has been the barebone API meaning that each driver has
|
||||||
|
to implement the pwm_*() functions itself. This means that it's impossible
|
||||||
|
to have multiple PWM drivers in the system. For this reason it's mandatory
|
||||||
|
for new drivers to use the generic PWM framework.
|
||||||
|
|
||||||
|
A new PWM controller/chip can be added using pwmchip_add() and removed
|
||||||
|
again with pwmchip_remove(). pwmchip_add() takes a filled in struct
|
||||||
|
pwm_chip as argument which provides a description of the PWM chip, the
|
||||||
|
number of PWM devices provider by the chip and the chip-specific
|
||||||
|
implementation of the supported PWM operations to the framework.
|
||||||
|
|
||||||
|
Locking
|
||||||
|
-------
|
||||||
|
|
||||||
|
The PWM core list manipulations are protected by a mutex, so pwm_request()
|
||||||
|
and pwm_free() may not be called from an atomic context. Currently the
|
||||||
|
PWM core does not enforce any locking to pwm_enable(), pwm_disable() and
|
||||||
|
pwm_config(), so the calling context is currently driver specific. This
|
||||||
|
is an issue derived from the former barebone API and should be fixed soon.
|
||||||
|
|
||||||
|
Helpers
|
||||||
|
-------
|
||||||
|
|
||||||
|
Currently a PWM can only be configured with period_ns and duty_ns. For several
|
||||||
|
use cases freq_hz and duty_percent might be better. Instead of calculating
|
||||||
|
this in your driver please consider adding appropriate helpers to the framework.
|
|
@ -53,6 +53,7 @@ ALC882/883/885/888/889
|
||||||
acer-aspire-8930g Acer Aspire 8330G/6935G
|
acer-aspire-8930g Acer Aspire 8330G/6935G
|
||||||
acer-aspire Acer Aspire others
|
acer-aspire Acer Aspire others
|
||||||
inv-dmic Inverted internal mic workaround
|
inv-dmic Inverted internal mic workaround
|
||||||
|
no-primary-hp VAIO Z workaround (for fixed speaker DAC)
|
||||||
|
|
||||||
ALC861/660
|
ALC861/660
|
||||||
==========
|
==========
|
||||||
|
@ -273,6 +274,10 @@ STAC92HD83*
|
||||||
dell-s14 Dell laptop
|
dell-s14 Dell laptop
|
||||||
dell-vostro-3500 Dell Vostro 3500 laptop
|
dell-vostro-3500 Dell Vostro 3500 laptop
|
||||||
hp-dv7-4000 HP dv-7 4000
|
hp-dv7-4000 HP dv-7 4000
|
||||||
|
hp_cNB11_intquad HP CNB models with 4 speakers
|
||||||
|
hp-zephyr HP Zephyr
|
||||||
|
hp-led HP with broken BIOS for mute LED
|
||||||
|
hp-inv-led HP with broken BIOS for inverted mute LED
|
||||||
auto BIOS setup (default)
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC9872
|
STAC9872
|
||||||
|
|
|
@ -32,6 +32,8 @@ Currently, these files are in /proc/sys/fs:
|
||||||
- nr_open
|
- nr_open
|
||||||
- overflowuid
|
- overflowuid
|
||||||
- overflowgid
|
- overflowgid
|
||||||
|
- protected_hardlinks
|
||||||
|
- protected_symlinks
|
||||||
- suid_dumpable
|
- suid_dumpable
|
||||||
- super-max
|
- super-max
|
||||||
- super-nr
|
- super-nr
|
||||||
|
@ -157,22 +159,68 @@ The default is 65534.
|
||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
protected_hardlinks:
|
||||||
|
|
||||||
|
A long-standing class of security issues is the hardlink-based
|
||||||
|
time-of-check-time-of-use race, most commonly seen in world-writable
|
||||||
|
directories like /tmp. The common method of exploitation of this flaw
|
||||||
|
is to cross privilege boundaries when following a given hardlink (i.e. a
|
||||||
|
root process follows a hardlink created by another user). Additionally,
|
||||||
|
on systems without separated partitions, this stops unauthorized users
|
||||||
|
from "pinning" vulnerable setuid/setgid files against being upgraded by
|
||||||
|
the administrator, or linking to special files.
|
||||||
|
|
||||||
|
When set to "0", hardlink creation behavior is unrestricted.
|
||||||
|
|
||||||
|
When set to "1" hardlinks cannot be created by users if they do not
|
||||||
|
already own the source file, or do not have read/write access to it.
|
||||||
|
|
||||||
|
This protection is based on the restrictions in Openwall and grsecurity.
|
||||||
|
|
||||||
|
==============================================================
|
||||||
|
|
||||||
|
protected_symlinks:
|
||||||
|
|
||||||
|
A long-standing class of security issues is the symlink-based
|
||||||
|
time-of-check-time-of-use race, most commonly seen in world-writable
|
||||||
|
directories like /tmp. The common method of exploitation of this flaw
|
||||||
|
is to cross privilege boundaries when following a given symlink (i.e. a
|
||||||
|
root process follows a symlink belonging to another user). For a likely
|
||||||
|
incomplete list of hundreds of examples across the years, please see:
|
||||||
|
http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp
|
||||||
|
|
||||||
|
When set to "0", symlink following behavior is unrestricted.
|
||||||
|
|
||||||
|
When set to "1" symlinks are permitted to be followed only when outside
|
||||||
|
a sticky world-writable directory, or when the uid of the symlink and
|
||||||
|
follower match, or when the directory owner matches the symlink's owner.
|
||||||
|
|
||||||
|
This protection is based on the restrictions in Openwall and grsecurity.
|
||||||
|
|
||||||
|
==============================================================
|
||||||
|
|
||||||
suid_dumpable:
|
suid_dumpable:
|
||||||
|
|
||||||
This value can be used to query and set the core dump mode for setuid
|
This value can be used to query and set the core dump mode for setuid
|
||||||
or otherwise protected/tainted binaries. The modes are
|
or otherwise protected/tainted binaries. The modes are
|
||||||
|
|
||||||
0 - (default) - traditional behaviour. Any process which has changed
|
0 - (default) - traditional behaviour. Any process which has changed
|
||||||
privilege levels or is execute only will not be dumped
|
privilege levels or is execute only will not be dumped.
|
||||||
1 - (debug) - all processes dump core when possible. The core dump is
|
1 - (debug) - all processes dump core when possible. The core dump is
|
||||||
owned by the current user and no security is applied. This is
|
owned by the current user and no security is applied. This is
|
||||||
intended for system debugging situations only. Ptrace is unchecked.
|
intended for system debugging situations only. Ptrace is unchecked.
|
||||||
|
This is insecure as it allows regular users to examine the memory
|
||||||
|
contents of privileged processes.
|
||||||
2 - (suidsafe) - any binary which normally would not be dumped is dumped
|
2 - (suidsafe) - any binary which normally would not be dumped is dumped
|
||||||
readable by root only. This allows the end user to remove
|
anyway, but only if the "core_pattern" kernel sysctl is set to
|
||||||
such a dump but not access it directly. For security reasons
|
either a pipe handler or a fully qualified path. (For more details
|
||||||
core dumps in this mode will not overwrite one another or
|
on this limitation, see CVE-2006-2451.) This mode is appropriate
|
||||||
other files. This mode is appropriate when administrators are
|
when administrators are attempting to debug problems in a normal
|
||||||
attempting to debug problems in a normal environment.
|
environment, and either have a core dump pipe handler that knows
|
||||||
|
to treat privileged core dumps with care, or specific directory
|
||||||
|
defined for catching core dumps. If a core dump happens without
|
||||||
|
a pipe handler or fully qualifid path, a message will be emitted
|
||||||
|
to syslog warning about the lack of a correct setting.
|
||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ Currently, these files are in /proc/sys/vm:
|
||||||
- mmap_min_addr
|
- mmap_min_addr
|
||||||
- nr_hugepages
|
- nr_hugepages
|
||||||
- nr_overcommit_hugepages
|
- nr_overcommit_hugepages
|
||||||
- nr_pdflush_threads
|
|
||||||
- nr_trim_pages (only if CONFIG_MMU=n)
|
- nr_trim_pages (only if CONFIG_MMU=n)
|
||||||
- numa_zonelist_order
|
- numa_zonelist_order
|
||||||
- oom_dump_tasks
|
- oom_dump_tasks
|
||||||
|
@ -426,16 +425,6 @@ See Documentation/vm/hugetlbpage.txt
|
||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
nr_pdflush_threads
|
|
||||||
|
|
||||||
The current number of pdflush threads. This value is read-only.
|
|
||||||
The value changes according to the number of dirty pages in the system.
|
|
||||||
|
|
||||||
When necessary, additional pdflush threads are created, one per second, up to
|
|
||||||
nr_pdflush_threads_max.
|
|
||||||
|
|
||||||
==============================================================
|
|
||||||
|
|
||||||
nr_trim_pages
|
nr_trim_pages
|
||||||
|
|
||||||
This is available only on NOMMU kernels.
|
This is available only on NOMMU kernels.
|
||||||
|
@ -502,9 +491,10 @@ oom_dump_tasks
|
||||||
|
|
||||||
Enables a system-wide task dump (excluding kernel threads) to be
|
Enables a system-wide task dump (excluding kernel threads) to be
|
||||||
produced when the kernel performs an OOM-killing and includes such
|
produced when the kernel performs an OOM-killing and includes such
|
||||||
information as pid, uid, tgid, vm size, rss, cpu, oom_adj score, and
|
information as pid, uid, tgid, vm size, rss, nr_ptes, swapents,
|
||||||
name. This is helpful to determine why the OOM killer was invoked
|
oom_score_adj score, and name. This is helpful to determine why the
|
||||||
and to identify the rogue task that caused it.
|
OOM killer was invoked, to identify the rogue task that caused it,
|
||||||
|
and to determine why the OOM killer chose the task it did to kill.
|
||||||
|
|
||||||
If this is set to zero, this information is suppressed. On very
|
If this is set to zero, this information is suppressed. On very
|
||||||
large systems with thousands of tasks it may not be feasible to dump
|
large systems with thousands of tasks it may not be feasible to dump
|
||||||
|
@ -574,16 +564,24 @@ of physical RAM. See above.
|
||||||
|
|
||||||
page-cluster
|
page-cluster
|
||||||
|
|
||||||
page-cluster controls the number of pages which are written to swap in
|
page-cluster controls the number of pages up to which consecutive pages
|
||||||
a single attempt. The swap I/O size.
|
are read in from swap in a single attempt. This is the swap counterpart
|
||||||
|
to page cache readahead.
|
||||||
|
The mentioned consecutivity is not in terms of virtual/physical addresses,
|
||||||
|
but consecutive on swap space - that means they were swapped out together.
|
||||||
|
|
||||||
It is a logarithmic value - setting it to zero means "1 page", setting
|
It is a logarithmic value - setting it to zero means "1 page", setting
|
||||||
it to 1 means "2 pages", setting it to 2 means "4 pages", etc.
|
it to 1 means "2 pages", setting it to 2 means "4 pages", etc.
|
||||||
|
Zero disables swap readahead completely.
|
||||||
|
|
||||||
The default value is three (eight pages at a time). There may be some
|
The default value is three (eight pages at a time). There may be some
|
||||||
small benefits in tuning this to a different value if your workload is
|
small benefits in tuning this to a different value if your workload is
|
||||||
swap-intensive.
|
swap-intensive.
|
||||||
|
|
||||||
|
Lower values mean lower latencies for initial faults, but at the same time
|
||||||
|
extra faults and I/O delays for following faults if they would have been part of
|
||||||
|
that consecutive pages readahead would have brought in.
|
||||||
|
|
||||||
=============================================================
|
=============================================================
|
||||||
|
|
||||||
panic_on_oom
|
panic_on_oom
|
||||||
|
|
314
Documentation/vfio.txt
Normal file
314
Documentation/vfio.txt
Normal file
|
@ -0,0 +1,314 @@
|
||||||
|
VFIO - "Virtual Function I/O"[1]
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
Many modern system now provide DMA and interrupt remapping facilities
|
||||||
|
to help ensure I/O devices behave within the boundaries they've been
|
||||||
|
allotted. This includes x86 hardware with AMD-Vi and Intel VT-d,
|
||||||
|
POWER systems with Partitionable Endpoints (PEs) and embedded PowerPC
|
||||||
|
systems such as Freescale PAMU. The VFIO driver is an IOMMU/device
|
||||||
|
agnostic framework for exposing direct device access to userspace, in
|
||||||
|
a secure, IOMMU protected environment. In other words, this allows
|
||||||
|
safe[2], non-privileged, userspace drivers.
|
||||||
|
|
||||||
|
Why do we want that? Virtual machines often make use of direct device
|
||||||
|
access ("device assignment") when configured for the highest possible
|
||||||
|
I/O performance. From a device and host perspective, this simply
|
||||||
|
turns the VM into a userspace driver, with the benefits of
|
||||||
|
significantly reduced latency, higher bandwidth, and direct use of
|
||||||
|
bare-metal device drivers[3].
|
||||||
|
|
||||||
|
Some applications, particularly in the high performance computing
|
||||||
|
field, also benefit from low-overhead, direct device access from
|
||||||
|
userspace. Examples include network adapters (often non-TCP/IP based)
|
||||||
|
and compute accelerators. Prior to VFIO, these drivers had to either
|
||||||
|
go through the full development cycle to become proper upstream
|
||||||
|
driver, be maintained out of tree, or make use of the UIO framework,
|
||||||
|
which has no notion of IOMMU protection, limited interrupt support,
|
||||||
|
and requires root privileges to access things like PCI configuration
|
||||||
|
space.
|
||||||
|
|
||||||
|
The VFIO driver framework intends to unify these, replacing both the
|
||||||
|
KVM PCI specific device assignment code as well as provide a more
|
||||||
|
secure, more featureful userspace driver environment than UIO.
|
||||||
|
|
||||||
|
Groups, Devices, and IOMMUs
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Devices are the main target of any I/O driver. Devices typically
|
||||||
|
create a programming interface made up of I/O access, interrupts,
|
||||||
|
and DMA. Without going into the details of each of these, DMA is
|
||||||
|
by far the most critical aspect for maintaining a secure environment
|
||||||
|
as allowing a device read-write access to system memory imposes the
|
||||||
|
greatest risk to the overall system integrity.
|
||||||
|
|
||||||
|
To help mitigate this risk, many modern IOMMUs now incorporate
|
||||||
|
isolation properties into what was, in many cases, an interface only
|
||||||
|
meant for translation (ie. solving the addressing problems of devices
|
||||||
|
with limited address spaces). With this, devices can now be isolated
|
||||||
|
from each other and from arbitrary memory access, thus allowing
|
||||||
|
things like secure direct assignment of devices into virtual machines.
|
||||||
|
|
||||||
|
This isolation is not always at the granularity of a single device
|
||||||
|
though. Even when an IOMMU is capable of this, properties of devices,
|
||||||
|
interconnects, and IOMMU topologies can each reduce this isolation.
|
||||||
|
For instance, an individual device may be part of a larger multi-
|
||||||
|
function enclosure. While the IOMMU may be able to distinguish
|
||||||
|
between devices within the enclosure, the enclosure may not require
|
||||||
|
transactions between devices to reach the IOMMU. Examples of this
|
||||||
|
could be anything from a multi-function PCI device with backdoors
|
||||||
|
between functions to a non-PCI-ACS (Access Control Services) capable
|
||||||
|
bridge allowing redirection without reaching the IOMMU. Topology
|
||||||
|
can also play a factor in terms of hiding devices. A PCIe-to-PCI
|
||||||
|
bridge masks the devices behind it, making transaction appear as if
|
||||||
|
from the bridge itself. Obviously IOMMU design plays a major factor
|
||||||
|
as well.
|
||||||
|
|
||||||
|
Therefore, while for the most part an IOMMU may have device level
|
||||||
|
granularity, any system is susceptible to reduced granularity. The
|
||||||
|
IOMMU API therefore supports a notion of IOMMU groups. A group is
|
||||||
|
a set of devices which is isolatable from all other devices in the
|
||||||
|
system. Groups are therefore the unit of ownership used by VFIO.
|
||||||
|
|
||||||
|
While the group is the minimum granularity that must be used to
|
||||||
|
ensure secure user access, it's not necessarily the preferred
|
||||||
|
granularity. In IOMMUs which make use of page tables, it may be
|
||||||
|
possible to share a set of page tables between different groups,
|
||||||
|
reducing the overhead both to the platform (reduced TLB thrashing,
|
||||||
|
reduced duplicate page tables), and to the user (programming only
|
||||||
|
a single set of translations). For this reason, VFIO makes use of
|
||||||
|
a container class, which may hold one or more groups. A container
|
||||||
|
is created by simply opening the /dev/vfio/vfio character device.
|
||||||
|
|
||||||
|
On its own, the container provides little functionality, with all
|
||||||
|
but a couple version and extension query interfaces locked away.
|
||||||
|
The user needs to add a group into the container for the next level
|
||||||
|
of functionality. To do this, the user first needs to identify the
|
||||||
|
group associated with the desired device. This can be done using
|
||||||
|
the sysfs links described in the example below. By unbinding the
|
||||||
|
device from the host driver and binding it to a VFIO driver, a new
|
||||||
|
VFIO group will appear for the group as /dev/vfio/$GROUP, where
|
||||||
|
$GROUP is the IOMMU group number of which the device is a member.
|
||||||
|
If the IOMMU group contains multiple devices, each will need to
|
||||||
|
be bound to a VFIO driver before operations on the VFIO group
|
||||||
|
are allowed (it's also sufficient to only unbind the device from
|
||||||
|
host drivers if a VFIO driver is unavailable; this will make the
|
||||||
|
group available, but not that particular device). TBD - interface
|
||||||
|
for disabling driver probing/locking a device.
|
||||||
|
|
||||||
|
Once the group is ready, it may be added to the container by opening
|
||||||
|
the VFIO group character device (/dev/vfio/$GROUP) and using the
|
||||||
|
VFIO_GROUP_SET_CONTAINER ioctl, passing the file descriptor of the
|
||||||
|
previously opened container file. If desired and if the IOMMU driver
|
||||||
|
supports sharing the IOMMU context between groups, multiple groups may
|
||||||
|
be set to the same container. If a group fails to set to a container
|
||||||
|
with existing groups, a new empty container will need to be used
|
||||||
|
instead.
|
||||||
|
|
||||||
|
With a group (or groups) attached to a container, the remaining
|
||||||
|
ioctls become available, enabling access to the VFIO IOMMU interfaces.
|
||||||
|
Additionally, it now becomes possible to get file descriptors for each
|
||||||
|
device within a group using an ioctl on the VFIO group file descriptor.
|
||||||
|
|
||||||
|
The VFIO device API includes ioctls for describing the device, the I/O
|
||||||
|
regions and their read/write/mmap offsets on the device descriptor, as
|
||||||
|
well as mechanisms for describing and registering interrupt
|
||||||
|
notifications.
|
||||||
|
|
||||||
|
VFIO Usage Example
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Assume user wants to access PCI device 0000:06:0d.0
|
||||||
|
|
||||||
|
$ readlink /sys/bus/pci/devices/0000:06:0d.0/iommu_group
|
||||||
|
../../../../kernel/iommu_groups/26
|
||||||
|
|
||||||
|
This device is therefore in IOMMU group 26. This device is on the
|
||||||
|
pci bus, therefore the user will make use of vfio-pci to manage the
|
||||||
|
group:
|
||||||
|
|
||||||
|
# modprobe vfio-pci
|
||||||
|
|
||||||
|
Binding this device to the vfio-pci driver creates the VFIO group
|
||||||
|
character devices for this group:
|
||||||
|
|
||||||
|
$ lspci -n -s 0000:06:0d.0
|
||||||
|
06:0d.0 0401: 1102:0002 (rev 08)
|
||||||
|
# echo 0000:06:0d.0 > /sys/bus/pci/devices/0000:06:0d.0/driver/unbind
|
||||||
|
# echo 1102 0002 > /sys/bus/pci/drivers/vfio/new_id
|
||||||
|
|
||||||
|
Now we need to look at what other devices are in the group to free
|
||||||
|
it for use by VFIO:
|
||||||
|
|
||||||
|
$ ls -l /sys/bus/pci/devices/0000:06:0d.0/iommu_group/devices
|
||||||
|
total 0
|
||||||
|
lrwxrwxrwx. 1 root root 0 Apr 23 16:13 0000:00:1e.0 ->
|
||||||
|
../../../../devices/pci0000:00/0000:00:1e.0
|
||||||
|
lrwxrwxrwx. 1 root root 0 Apr 23 16:13 0000:06:0d.0 ->
|
||||||
|
../../../../devices/pci0000:00/0000:00:1e.0/0000:06:0d.0
|
||||||
|
lrwxrwxrwx. 1 root root 0 Apr 23 16:13 0000:06:0d.1 ->
|
||||||
|
../../../../devices/pci0000:00/0000:00:1e.0/0000:06:0d.1
|
||||||
|
|
||||||
|
This device is behind a PCIe-to-PCI bridge[4], therefore we also
|
||||||
|
need to add device 0000:06:0d.1 to the group following the same
|
||||||
|
procedure as above. Device 0000:00:1e.0 is a bridge that does
|
||||||
|
not currently have a host driver, therefore it's not required to
|
||||||
|
bind this device to the vfio-pci driver (vfio-pci does not currently
|
||||||
|
support PCI bridges).
|
||||||
|
|
||||||
|
The final step is to provide the user with access to the group if
|
||||||
|
unprivileged operation is desired (note that /dev/vfio/vfio provides
|
||||||
|
no capabilities on its own and is therefore expected to be set to
|
||||||
|
mode 0666 by the system).
|
||||||
|
|
||||||
|
# chown user:user /dev/vfio/26
|
||||||
|
|
||||||
|
The user now has full access to all the devices and the iommu for this
|
||||||
|
group and can access them as follows:
|
||||||
|
|
||||||
|
int container, group, device, i;
|
||||||
|
struct vfio_group_status group_status =
|
||||||
|
{ .argsz = sizeof(group_status) };
|
||||||
|
struct vfio_iommu_x86_info iommu_info = { .argsz = sizeof(iommu_info) };
|
||||||
|
struct vfio_iommu_x86_dma_map dma_map = { .argsz = sizeof(dma_map) };
|
||||||
|
struct vfio_device_info device_info = { .argsz = sizeof(device_info) };
|
||||||
|
|
||||||
|
/* Create a new container */
|
||||||
|
container = open("/dev/vfio/vfio, O_RDWR);
|
||||||
|
|
||||||
|
if (ioctl(container, VFIO_GET_API_VERSION) != VFIO_API_VERSION)
|
||||||
|
/* Unknown API version */
|
||||||
|
|
||||||
|
if (!ioctl(container, VFIO_CHECK_EXTENSION, VFIO_X86_IOMMU))
|
||||||
|
/* Doesn't support the IOMMU driver we want. */
|
||||||
|
|
||||||
|
/* Open the group */
|
||||||
|
group = open("/dev/vfio/26", O_RDWR);
|
||||||
|
|
||||||
|
/* Test the group is viable and available */
|
||||||
|
ioctl(group, VFIO_GROUP_GET_STATUS, &group_status);
|
||||||
|
|
||||||
|
if (!(group_status.flags & VFIO_GROUP_FLAGS_VIABLE))
|
||||||
|
/* Group is not viable (ie, not all devices bound for vfio) */
|
||||||
|
|
||||||
|
/* Add the group to the container */
|
||||||
|
ioctl(group, VFIO_GROUP_SET_CONTAINER, &container);
|
||||||
|
|
||||||
|
/* Enable the IOMMU model we want */
|
||||||
|
ioctl(container, VFIO_SET_IOMMU, VFIO_X86_IOMMU)
|
||||||
|
|
||||||
|
/* Get addition IOMMU info */
|
||||||
|
ioctl(container, VFIO_IOMMU_GET_INFO, &iommu_info);
|
||||||
|
|
||||||
|
/* Allocate some space and setup a DMA mapping */
|
||||||
|
dma_map.vaddr = mmap(0, 1024 * 1024, PROT_READ | PROT_WRITE,
|
||||||
|
MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
|
||||||
|
dma_map.size = 1024 * 1024;
|
||||||
|
dma_map.iova = 0; /* 1MB starting at 0x0 from device view */
|
||||||
|
dma_map.flags = VFIO_DMA_MAP_FLAG_READ | VFIO_DMA_MAP_FLAG_WRITE;
|
||||||
|
|
||||||
|
ioctl(container, VFIO_IOMMU_MAP_DMA, &dma_map);
|
||||||
|
|
||||||
|
/* Get a file descriptor for the device */
|
||||||
|
device = ioctl(group, VFIO_GROUP_GET_DEVICE_FD, "0000:06:0d.0");
|
||||||
|
|
||||||
|
/* Test and setup the device */
|
||||||
|
ioctl(device, VFIO_DEVICE_GET_INFO, &device_info);
|
||||||
|
|
||||||
|
for (i = 0; i < device_info.num_regions; i++) {
|
||||||
|
struct vfio_region_info reg = { .argsz = sizeof(reg) };
|
||||||
|
|
||||||
|
reg.index = i;
|
||||||
|
|
||||||
|
ioctl(device, VFIO_DEVICE_GET_REGION_INFO, ®);
|
||||||
|
|
||||||
|
/* Setup mappings... read/write offsets, mmaps
|
||||||
|
* For PCI devices, config space is a region */
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < device_info.num_irqs; i++) {
|
||||||
|
struct vfio_irq_info irq = { .argsz = sizeof(irq) };
|
||||||
|
|
||||||
|
irq.index = i;
|
||||||
|
|
||||||
|
ioctl(device, VFIO_DEVICE_GET_IRQ_INFO, ®);
|
||||||
|
|
||||||
|
/* Setup IRQs... eventfds, VFIO_DEVICE_SET_IRQS */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Gratuitous device reset and go... */
|
||||||
|
ioctl(device, VFIO_DEVICE_RESET);
|
||||||
|
|
||||||
|
VFIO User API
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Please see include/linux/vfio.h for complete API documentation.
|
||||||
|
|
||||||
|
VFIO bus driver API
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
VFIO bus drivers, such as vfio-pci make use of only a few interfaces
|
||||||
|
into VFIO core. When devices are bound and unbound to the driver,
|
||||||
|
the driver should call vfio_add_group_dev() and vfio_del_group_dev()
|
||||||
|
respectively:
|
||||||
|
|
||||||
|
extern int vfio_add_group_dev(struct iommu_group *iommu_group,
|
||||||
|
struct device *dev,
|
||||||
|
const struct vfio_device_ops *ops,
|
||||||
|
void *device_data);
|
||||||
|
|
||||||
|
extern void *vfio_del_group_dev(struct device *dev);
|
||||||
|
|
||||||
|
vfio_add_group_dev() indicates to the core to begin tracking the
|
||||||
|
specified iommu_group and register the specified dev as owned by
|
||||||
|
a VFIO bus driver. The driver provides an ops structure for callbacks
|
||||||
|
similar to a file operations structure:
|
||||||
|
|
||||||
|
struct vfio_device_ops {
|
||||||
|
int (*open)(void *device_data);
|
||||||
|
void (*release)(void *device_data);
|
||||||
|
ssize_t (*read)(void *device_data, char __user *buf,
|
||||||
|
size_t count, loff_t *ppos);
|
||||||
|
ssize_t (*write)(void *device_data, const char __user *buf,
|
||||||
|
size_t size, loff_t *ppos);
|
||||||
|
long (*ioctl)(void *device_data, unsigned int cmd,
|
||||||
|
unsigned long arg);
|
||||||
|
int (*mmap)(void *device_data, struct vm_area_struct *vma);
|
||||||
|
};
|
||||||
|
|
||||||
|
Each function is passed the device_data that was originally registered
|
||||||
|
in the vfio_add_group_dev() call above. This allows the bus driver
|
||||||
|
an easy place to store its opaque, private data. The open/release
|
||||||
|
callbacks are issued when a new file descriptor is created for a
|
||||||
|
device (via VFIO_GROUP_GET_DEVICE_FD). The ioctl interface provides
|
||||||
|
a direct pass through for VFIO_DEVICE_* ioctls. The read/write/mmap
|
||||||
|
interfaces implement the device region access defined by the device's
|
||||||
|
own VFIO_DEVICE_GET_REGION_INFO ioctl.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
[1] VFIO was originally an acronym for "Virtual Function I/O" in its
|
||||||
|
initial implementation by Tom Lyon while as Cisco. We've since
|
||||||
|
outgrown the acronym, but it's catchy.
|
||||||
|
|
||||||
|
[2] "safe" also depends upon a device being "well behaved". It's
|
||||||
|
possible for multi-function devices to have backdoors between
|
||||||
|
functions and even for single function devices to have alternative
|
||||||
|
access to things like PCI config space through MMIO registers. To
|
||||||
|
guard against the former we can include additional precautions in the
|
||||||
|
IOMMU driver to group multi-function PCI devices together
|
||||||
|
(iommu=group_mf). The latter we can't prevent, but the IOMMU should
|
||||||
|
still provide isolation. For PCI, SR-IOV Virtual Functions are the
|
||||||
|
best indicator of "well behaved", as these are designed for
|
||||||
|
virtualization usage models.
|
||||||
|
|
||||||
|
[3] As always there are trade-offs to virtual machine device
|
||||||
|
assignment that are beyond the scope of VFIO. It's expected that
|
||||||
|
future IOMMU technologies will reduce some, but maybe not all, of
|
||||||
|
these trade-offs.
|
||||||
|
|
||||||
|
[4] In this case the device is below a PCI bridge, so transactions
|
||||||
|
from either function of the device are indistinguishable to the iommu:
|
||||||
|
|
||||||
|
-[0000:00]-+-1e.0-[06]--+-0d.0
|
||||||
|
\-0d.1
|
||||||
|
|
||||||
|
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev 90)
|
|
@ -3,4 +3,4 @@
|
||||||
2 -> Hauppauge HVR850 (au0828) [2040:7240]
|
2 -> Hauppauge HVR850 (au0828) [2040:7240]
|
||||||
3 -> DViCO FusionHDTV USB (au0828) [0fe9:d620]
|
3 -> DViCO FusionHDTV USB (au0828) [0fe9:d620]
|
||||||
4 -> Hauppauge HVR950Q rev xxF8 (au0828) [2040:7201,2040:7211,2040:7281]
|
4 -> Hauppauge HVR950Q rev xxF8 (au0828) [2040:7201,2040:7211,2040:7281]
|
||||||
5 -> Hauppauge Woodbury (au0828) [2040:8200]
|
5 -> Hauppauge Woodbury (au0828) [05e1:0480,2040:8200]
|
||||||
|
|
|
@ -159,3 +159,4 @@
|
||||||
158 -> Geovision GV-800(S) (slave) [800b:763d,800c:763d,800d:763d]
|
158 -> Geovision GV-800(S) (slave) [800b:763d,800c:763d,800d:763d]
|
||||||
159 -> ProVideo PV183 [1830:1540,1831:1540,1832:1540,1833:1540,1834:1540,1835:1540,1836:1540,1837:1540]
|
159 -> ProVideo PV183 [1830:1540,1831:1540,1832:1540,1833:1540,1834:1540,1835:1540,1836:1540,1837:1540]
|
||||||
160 -> Tongwei Video Technology TD-3116 [f200:3116]
|
160 -> Tongwei Video Technology TD-3116 [f200:3116]
|
||||||
|
161 -> Aposonic W-DVR [0279:0228]
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
17 -> NetUP Dual DVB-S2 CI [1b55:2a2c]
|
17 -> NetUP Dual DVB-S2 CI [1b55:2a2c]
|
||||||
18 -> Hauppauge WinTV-HVR1270 [0070:2211]
|
18 -> Hauppauge WinTV-HVR1270 [0070:2211]
|
||||||
19 -> Hauppauge WinTV-HVR1275 [0070:2215,0070:221d,0070:22f2]
|
19 -> Hauppauge WinTV-HVR1275 [0070:2215,0070:221d,0070:22f2]
|
||||||
20 -> Hauppauge WinTV-HVR1255 [0070:2251,0070:2259,0070:22f1]
|
20 -> Hauppauge WinTV-HVR1255 [0070:2251,0070:22f1]
|
||||||
21 -> Hauppauge WinTV-HVR1210 [0070:2291,0070:2295,0070:2299,0070:229d,0070:22f0,0070:22f3,0070:22f4,0070:22f5]
|
21 -> Hauppauge WinTV-HVR1210 [0070:2291,0070:2295,0070:2299,0070:229d,0070:22f0,0070:22f3,0070:22f4,0070:22f5]
|
||||||
22 -> Mygica X8506 DMB-TH [14f1:8651]
|
22 -> Mygica X8506 DMB-TH [14f1:8651]
|
||||||
23 -> Magic-Pro ProHDTV Extreme 2 [14f1:8657]
|
23 -> Magic-Pro ProHDTV Extreme 2 [14f1:8657]
|
||||||
|
@ -33,3 +33,5 @@
|
||||||
32 -> MPX-885
|
32 -> MPX-885
|
||||||
33 -> Mygica X8507 [14f1:8502]
|
33 -> Mygica X8507 [14f1:8502]
|
||||||
34 -> TerraTec Cinergy T PCIe Dual [153b:117e]
|
34 -> TerraTec Cinergy T PCIe Dual [153b:117e]
|
||||||
|
35 -> TeVii S471 [d471:9022]
|
||||||
|
36 -> Hauppauge WinTV-HVR1255 [0070:2259]
|
||||||
|
|
|
@ -188,3 +188,4 @@
|
||||||
187 -> Beholder BeholdTV 503 FM [5ace:5030]
|
187 -> Beholder BeholdTV 503 FM [5ace:5030]
|
||||||
188 -> Sensoray 811/911 [6000:0811,6000:0911]
|
188 -> Sensoray 811/911 [6000:0811,6000:0911]
|
||||||
189 -> Kworld PC150-U [17de:a134]
|
189 -> Kworld PC150-U [17de:a134]
|
||||||
|
190 -> Asus My Cinema PS3-100 [1043:48cd]
|
||||||
|
|
|
@ -594,6 +594,15 @@ You should also set these fields:
|
||||||
unlocked_ioctl file operation is called this lock will be taken by the
|
unlocked_ioctl file operation is called this lock will be taken by the
|
||||||
core and released afterwards. See the next section for more details.
|
core and released afterwards. See the next section for more details.
|
||||||
|
|
||||||
|
- queue: a pointer to the struct vb2_queue associated with this device node.
|
||||||
|
If queue is non-NULL, and queue->lock is non-NULL, then queue->lock is
|
||||||
|
used for the queuing ioctls (VIDIOC_REQBUFS, CREATE_BUFS, QBUF, DQBUF,
|
||||||
|
QUERYBUF, PREPARE_BUF, STREAMON and STREAMOFF) instead of the lock above.
|
||||||
|
That way the vb2 queuing framework does not have to wait for other ioctls.
|
||||||
|
This queue pointer is also used by the vb2 helper functions to check for
|
||||||
|
queuing ownership (i.e. is the filehandle calling it allowed to do the
|
||||||
|
operation).
|
||||||
|
|
||||||
- prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY.
|
- prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY.
|
||||||
If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device.
|
If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device.
|
||||||
If you want to have a separate priority state per (group of) device node(s),
|
If you want to have a separate priority state per (group of) device node(s),
|
||||||
|
@ -647,47 +656,43 @@ manually set the struct media_entity type and name fields.
|
||||||
A reference to the entity will be automatically acquired/released when the
|
A reference to the entity will be automatically acquired/released when the
|
||||||
video device is opened/closed.
|
video device is opened/closed.
|
||||||
|
|
||||||
v4l2_file_operations and locking
|
ioctls and locking
|
||||||
--------------------------------
|
------------------
|
||||||
|
|
||||||
You can set a pointer to a mutex_lock in struct video_device. Usually this
|
The V4L core provides optional locking services. The main service is the
|
||||||
will be either a top-level mutex or a mutex per device node. By default this
|
lock field in struct video_device, which is a pointer to a mutex. If you set
|
||||||
lock will be used for unlocked_ioctl, but you can disable locking for
|
this pointer, then that will be used by unlocked_ioctl to serialize all ioctls.
|
||||||
selected ioctls by calling:
|
|
||||||
|
|
||||||
void v4l2_disable_ioctl_locking(struct video_device *vdev, unsigned int cmd);
|
If you are using the videobuf2 framework, then there is a second lock that you
|
||||||
|
can set: video_device->queue->lock. If set, then this lock will be used instead
|
||||||
|
of video_device->lock to serialize all queuing ioctls (see the previous section
|
||||||
|
for the full list of those ioctls).
|
||||||
|
|
||||||
E.g.: v4l2_disable_ioctl_locking(vdev, VIDIOC_DQBUF);
|
The advantage of using a different lock for the queuing ioctls is that for some
|
||||||
|
drivers (particularly USB drivers) certain commands such as setting controls
|
||||||
|
can take a long time, so you want to use a separate lock for the buffer queuing
|
||||||
|
ioctls. That way your VIDIOC_DQBUF doesn't stall because the driver is busy
|
||||||
|
changing the e.g. exposure of the webcam.
|
||||||
|
|
||||||
You have to call this before you register the video_device.
|
Of course, you can always do all the locking yourself by leaving both lock
|
||||||
|
pointers at NULL.
|
||||||
|
|
||||||
Particularly with USB drivers where certain commands such as setting controls
|
If you use the old videobuf then you must pass the video_device lock to the
|
||||||
can take a long time you may want to do your own locking for the buffer queuing
|
videobuf queue initialize function: if videobuf has to wait for a frame to
|
||||||
ioctls.
|
arrive, then it will temporarily unlock the lock and relock it afterwards. If
|
||||||
|
your driver also waits in the code, then you should do the same to allow other
|
||||||
If you want still finer-grained locking then you have to set mutex_lock to NULL
|
processes to access the device node while the first process is waiting for
|
||||||
and do you own locking completely.
|
something.
|
||||||
|
|
||||||
It is up to the driver developer to decide which method to use. However, if
|
|
||||||
your driver has high-latency operations (for example, changing the exposure
|
|
||||||
of a USB webcam might take a long time), then you might be better off with
|
|
||||||
doing your own locking if you want to allow the user to do other things with
|
|
||||||
the device while waiting for the high-latency command to finish.
|
|
||||||
|
|
||||||
If a lock is specified then all ioctl commands will be serialized on that
|
|
||||||
lock. If you use videobuf then you must pass the same lock to the videobuf
|
|
||||||
queue initialize function: if videobuf has to wait for a frame to arrive, then
|
|
||||||
it will temporarily unlock the lock and relock it afterwards. If your driver
|
|
||||||
also waits in the code, then you should do the same to allow other processes
|
|
||||||
to access the device node while the first process is waiting for something.
|
|
||||||
|
|
||||||
In the case of videobuf2 you will need to implement the wait_prepare and
|
In the case of videobuf2 you will need to implement the wait_prepare and
|
||||||
wait_finish callbacks to unlock/lock if applicable. In particular, if you use
|
wait_finish callbacks to unlock/lock if applicable. If you use the queue->lock
|
||||||
the lock in struct video_device then you must unlock/lock this mutex in
|
pointer, then you can use the helper functions vb2_ops_wait_prepare/finish.
|
||||||
wait_prepare and wait_finish.
|
|
||||||
|
|
||||||
The implementation of a hotplug disconnect should also take the lock before
|
The implementation of a hotplug disconnect should also take the lock from
|
||||||
calling v4l2_device_disconnect.
|
video_device before calling v4l2_device_disconnect. If you are also using
|
||||||
|
video_device->queue->lock, then you have to first lock video_device->queue->lock
|
||||||
|
followed by video_device->lock. That way you can be sure no ioctl is running
|
||||||
|
when you call v4l2_device_disconnect.
|
||||||
|
|
||||||
video_device registration
|
video_device registration
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
50
MAINTAINERS
50
MAINTAINERS
|
@ -1789,15 +1789,16 @@ F: arch/powerpc/oprofile/*cell*
|
||||||
F: arch/powerpc/platforms/cell/
|
F: arch/powerpc/platforms/cell/
|
||||||
|
|
||||||
CEPH DISTRIBUTED FILE SYSTEM CLIENT
|
CEPH DISTRIBUTED FILE SYSTEM CLIENT
|
||||||
M: Sage Weil <sage@newdream.net>
|
M: Sage Weil <sage@inktank.com>
|
||||||
L: ceph-devel@vger.kernel.org
|
L: ceph-devel@vger.kernel.org
|
||||||
W: http://ceph.newdream.net/
|
W: http://ceph.com/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/filesystems/ceph.txt
|
F: Documentation/filesystems/ceph.txt
|
||||||
F: fs/ceph
|
F: fs/ceph
|
||||||
F: net/ceph
|
F: net/ceph
|
||||||
F: include/linux/ceph
|
F: include/linux/ceph
|
||||||
|
F: include/linux/crush
|
||||||
|
|
||||||
CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
|
CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
|
||||||
L: linux-usb@vger.kernel.org
|
L: linux-usb@vger.kernel.org
|
||||||
|
@ -2750,6 +2751,7 @@ M: Jingoo Han <jg1.han@samsung.com>
|
||||||
L: linux-fbdev@vger.kernel.org
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/exynos/exynos_dp*
|
F: drivers/video/exynos/exynos_dp*
|
||||||
|
F: include/video/exynos_dp*
|
||||||
|
|
||||||
EXYNOS MIPI DISPLAY DRIVERS
|
EXYNOS MIPI DISPLAY DRIVERS
|
||||||
M: Inki Dae <inki.dae@samsung.com>
|
M: Inki Dae <inki.dae@samsung.com>
|
||||||
|
@ -3155,8 +3157,7 @@ S: Maintained
|
||||||
F: drivers/media/video/gspca/t613.c
|
F: drivers/media/video/gspca/t613.c
|
||||||
|
|
||||||
GSPCA USB WEBCAM DRIVER
|
GSPCA USB WEBCAM DRIVER
|
||||||
M: Jean-Francois Moine <moinejf@free.fr>
|
M: Hans de Goede <hdegoede@redhat.com>
|
||||||
W: http://moinejf.free.fr
|
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
@ -5526,6 +5527,18 @@ S: Maintained
|
||||||
F: Documentation/video4linux/README.pvrusb2
|
F: Documentation/video4linux/README.pvrusb2
|
||||||
F: drivers/media/video/pvrusb2/
|
F: drivers/media/video/pvrusb2/
|
||||||
|
|
||||||
|
PWM SUBSYSTEM
|
||||||
|
M: Thierry Reding <thierry.reding@avionic-design.de>
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
W: http://gitorious.org/linux-pwm
|
||||||
|
T: git git://gitorious.org/linux-pwm/linux-pwm.git
|
||||||
|
F: Documentation/pwm.txt
|
||||||
|
F: Documentation/devicetree/bindings/pwm/
|
||||||
|
F: include/linux/pwm.h
|
||||||
|
F: include/linux/of_pwm.h
|
||||||
|
F: drivers/pwm/
|
||||||
|
|
||||||
PXA2xx/PXA3xx SUPPORT
|
PXA2xx/PXA3xx SUPPORT
|
||||||
M: Eric Miao <eric.y.miao@gmail.com>
|
M: Eric Miao <eric.y.miao@gmail.com>
|
||||||
M: Russell King <linux@arm.linux.org.uk>
|
M: Russell King <linux@arm.linux.org.uk>
|
||||||
|
@ -5627,10 +5640,12 @@ S: Supported
|
||||||
F: arch/hexagon/
|
F: arch/hexagon/
|
||||||
|
|
||||||
RADOS BLOCK DEVICE (RBD)
|
RADOS BLOCK DEVICE (RBD)
|
||||||
F: include/linux/qnxtypes.h
|
M: Yehuda Sadeh <yehuda@inktank.com>
|
||||||
M: Yehuda Sadeh <yehuda@hq.newdream.net>
|
M: Sage Weil <sage@inktank.com>
|
||||||
M: Sage Weil <sage@newdream.net>
|
M: Alex Elder <elder@inktank.com>
|
||||||
M: ceph-devel@vger.kernel.org
|
M: ceph-devel@vger.kernel.org
|
||||||
|
W: http://ceph.com/
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/block/rbd.c
|
F: drivers/block/rbd.c
|
||||||
F: drivers/block/rbd_types.h
|
F: drivers/block/rbd_types.h
|
||||||
|
@ -5667,7 +5682,7 @@ F: Documentation/blockdev/ramdisk.txt
|
||||||
F: drivers/block/brd.c
|
F: drivers/block/brd.c
|
||||||
|
|
||||||
RANDOM NUMBER DRIVER
|
RANDOM NUMBER DRIVER
|
||||||
M: Matt Mackall <mpm@selenic.com>
|
M: Theodore Ts'o" <tytso@mit.edu>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/char/random.c
|
F: drivers/char/random.c
|
||||||
|
|
||||||
|
@ -5900,6 +5915,16 @@ L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/s3c-fb.c
|
F: drivers/video/s3c-fb.c
|
||||||
|
|
||||||
|
SAMSUNG MULTIFUNCTION DEVICE DRIVERS
|
||||||
|
M: Sangbeom Kim <sbkim73@samsung.com>
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: drivers/mfd/sec*.c
|
||||||
|
F: drivers/regulator/s2m*.c
|
||||||
|
F: drivers/regulator/s5m*.c
|
||||||
|
F: drivers/rtc/rtc-sec.c
|
||||||
|
F: include/linux/mfd/samsung/
|
||||||
|
|
||||||
SERIAL DRIVERS
|
SERIAL DRIVERS
|
||||||
M: Alan Cox <alan@linux.intel.com>
|
M: Alan Cox <alan@linux.intel.com>
|
||||||
L: linux-serial@vger.kernel.org
|
L: linux-serial@vger.kernel.org
|
||||||
|
@ -7357,6 +7382,7 @@ W: http://user-mode-linux.sourceforge.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/virtual/uml/
|
F: Documentation/virtual/uml/
|
||||||
F: arch/um/
|
F: arch/um/
|
||||||
|
F: arch/x86/um/
|
||||||
F: fs/hostfs/
|
F: fs/hostfs/
|
||||||
F: fs/hppfs/
|
F: fs/hppfs/
|
||||||
|
|
||||||
|
@ -7389,6 +7415,14 @@ S: Maintained
|
||||||
F: Documentation/filesystems/vfat.txt
|
F: Documentation/filesystems/vfat.txt
|
||||||
F: fs/fat/
|
F: fs/fat/
|
||||||
|
|
||||||
|
VFIO DRIVER
|
||||||
|
M: Alex Williamson <alex.williamson@redhat.com>
|
||||||
|
L: kvm@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
F: Documentation/vfio.txt
|
||||||
|
F: drivers/vfio/
|
||||||
|
F: include/linux/vfio.h
|
||||||
|
|
||||||
VIDEOBUF2 FRAMEWORK
|
VIDEOBUF2 FRAMEWORK
|
||||||
M: Pawel Osciak <pawel@osciak.com>
|
M: Pawel Osciak <pawel@osciak.com>
|
||||||
M: Marek Szyprowski <m.szyprowski@samsung.com>
|
M: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||||
|
|
24
Makefile
24
Makefile
|
@ -535,11 +535,11 @@ PHONY += include/config/auto.conf
|
||||||
|
|
||||||
include/config/auto.conf:
|
include/config/auto.conf:
|
||||||
$(Q)test -e include/generated/autoconf.h -a -e $@ || ( \
|
$(Q)test -e include/generated/autoconf.h -a -e $@ || ( \
|
||||||
echo; \
|
echo >&2; \
|
||||||
echo " ERROR: Kernel configuration is invalid."; \
|
echo >&2 " ERROR: Kernel configuration is invalid."; \
|
||||||
echo " include/generated/autoconf.h or $@ are missing.";\
|
echo >&2 " include/generated/autoconf.h or $@ are missing.";\
|
||||||
echo " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
|
echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \
|
||||||
echo; \
|
echo >&2 ; \
|
||||||
/bin/false)
|
/bin/false)
|
||||||
|
|
||||||
endif # KBUILD_EXTMOD
|
endif # KBUILD_EXTMOD
|
||||||
|
@ -796,8 +796,8 @@ prepare3: include/config/kernel.release
|
||||||
ifneq ($(KBUILD_SRC),)
|
ifneq ($(KBUILD_SRC),)
|
||||||
@$(kecho) ' Using $(srctree) as source for kernel'
|
@$(kecho) ' Using $(srctree) as source for kernel'
|
||||||
$(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
|
$(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
|
||||||
echo " $(srctree) is not clean, please run 'make mrproper'"; \
|
echo >&2 " $(srctree) is not clean, please run 'make mrproper'"; \
|
||||||
echo " in the '$(srctree)' directory.";\
|
echo >&2 " in the '$(srctree)' directory.";\
|
||||||
/bin/false; \
|
/bin/false; \
|
||||||
fi;
|
fi;
|
||||||
endif
|
endif
|
||||||
|
@ -971,11 +971,11 @@ else # CONFIG_MODULES
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
modules modules_install: FORCE
|
modules modules_install: FORCE
|
||||||
@echo
|
@echo >&2
|
||||||
@echo "The present kernel configuration has modules disabled."
|
@echo >&2 "The present kernel configuration has modules disabled."
|
||||||
@echo "Type 'make config' and enable loadable module support."
|
@echo >&2 "Type 'make config' and enable loadable module support."
|
||||||
@echo "Then build a kernel with module support enabled."
|
@echo >&2 "Then build a kernel with module support enabled."
|
||||||
@echo
|
@echo >&2
|
||||||
@exit 1
|
@exit 1
|
||||||
|
|
||||||
endif # CONFIG_MODULES
|
endif # CONFIG_MODULES
|
||||||
|
|
|
@ -248,7 +248,14 @@ config HAVE_CMPXCHG_LOCAL
|
||||||
config HAVE_CMPXCHG_DOUBLE
|
config HAVE_CMPXCHG_DOUBLE
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config ARCH_WANT_IPC_PARSE_VERSION
|
||||||
|
bool
|
||||||
|
|
||||||
|
config ARCH_WANT_COMPAT_IPC_PARSE_VERSION
|
||||||
|
bool
|
||||||
|
|
||||||
config ARCH_WANT_OLD_COMPAT_IPC
|
config ARCH_WANT_OLD_COMPAT_IPC
|
||||||
|
select ARCH_WANT_COMPAT_IPC_PARSE_VERSION
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config HAVE_ARCH_SECCOMP_FILTER
|
config HAVE_ARCH_SECCOMP_FILTER
|
||||||
|
|
|
@ -14,6 +14,7 @@ config ALPHA
|
||||||
select AUTO_IRQ_AFFINITY if SMP
|
select AUTO_IRQ_AFFINITY if SMP
|
||||||
select GENERIC_IRQ_SHOW
|
select GENERIC_IRQ_SHOW
|
||||||
select ARCH_WANT_OPTIONAL_GPIOLIB
|
select ARCH_WANT_OPTIONAL_GPIOLIB
|
||||||
|
select ARCH_WANT_IPC_PARSE_VERSION
|
||||||
select ARCH_HAVE_NMI_SAFE_CMPXCHG
|
select ARCH_HAVE_NMI_SAFE_CMPXCHG
|
||||||
select GENERIC_SMP_IDLE_THREAD
|
select GENERIC_SMP_IDLE_THREAD
|
||||||
select GENERIC_CMOS_UPDATE
|
select GENERIC_CMOS_UPDATE
|
||||||
|
|
|
@ -470,7 +470,6 @@
|
||||||
|
|
||||||
#define NR_SYSCALLS 504
|
#define NR_SYSCALLS 504
|
||||||
|
|
||||||
#define __ARCH_WANT_IPC_PARSE_VERSION
|
|
||||||
#define __ARCH_WANT_OLD_READDIR
|
#define __ARCH_WANT_OLD_READDIR
|
||||||
#define __ARCH_WANT_STAT64
|
#define __ARCH_WANT_STAT64
|
||||||
#define __ARCH_WANT_SYS_GETHOSTNAME
|
#define __ARCH_WANT_SYS_GETHOSTNAME
|
||||||
|
|
|
@ -933,18 +933,6 @@ void SMC37c669_display_device_info(
|
||||||
*
|
*
|
||||||
*--
|
*--
|
||||||
*/
|
*/
|
||||||
#if 0
|
|
||||||
/* $INCLUDE_OPTIONS$ */
|
|
||||||
#include "cp$inc:platform_io.h"
|
|
||||||
/* $INCLUDE_OPTIONS_END$ */
|
|
||||||
#include "cp$src:common.h"
|
|
||||||
#include "cp$inc:prototypes.h"
|
|
||||||
#include "cp$src:kernel_def.h"
|
|
||||||
#include "cp$src:msg_def.h"
|
|
||||||
#include "cp$src:smcc669_def.h"
|
|
||||||
/* Platform-specific includes */
|
|
||||||
#include "cp$src:platform.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef TRUE
|
#ifndef TRUE
|
||||||
#define TRUE 1
|
#define TRUE 1
|
||||||
|
|
|
@ -11,6 +11,7 @@ config ARM
|
||||||
select RTC_LIB
|
select RTC_LIB
|
||||||
select SYS_SUPPORTS_APM_EMULATION
|
select SYS_SUPPORTS_APM_EMULATION
|
||||||
select GENERIC_ATOMIC64 if (CPU_V6 || !CPU_32v6K || !AEABI)
|
select GENERIC_ATOMIC64 if (CPU_V6 || !CPU_32v6K || !AEABI)
|
||||||
|
select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
|
||||||
select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
|
select HAVE_OPROFILE if (HAVE_PERF_EVENTS)
|
||||||
select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
|
select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
|
||||||
select HAVE_ARCH_KGDB
|
select HAVE_ARCH_KGDB
|
||||||
|
@ -38,6 +39,7 @@ config ARM
|
||||||
select GENERIC_IRQ_PROBE
|
select GENERIC_IRQ_PROBE
|
||||||
select GENERIC_IRQ_SHOW
|
select GENERIC_IRQ_SHOW
|
||||||
select GENERIC_IRQ_PROBE
|
select GENERIC_IRQ_PROBE
|
||||||
|
select ARCH_WANT_IPC_PARSE_VERSION
|
||||||
select HARDIRQS_SW_RESEND
|
select HARDIRQS_SW_RESEND
|
||||||
select CPU_PM if (SUSPEND || CPU_IDLE)
|
select CPU_PM if (SUSPEND || CPU_IDLE)
|
||||||
select GENERIC_PCI_IOMAP
|
select GENERIC_PCI_IOMAP
|
||||||
|
@ -1009,7 +1011,6 @@ config ARCH_VT8500
|
||||||
select ARCH_HAS_CPUFREQ
|
select ARCH_HAS_CPUFREQ
|
||||||
select GENERIC_CLOCKEVENTS
|
select GENERIC_CLOCKEVENTS
|
||||||
select ARCH_REQUIRE_GPIOLIB
|
select ARCH_REQUIRE_GPIOLIB
|
||||||
select HAVE_PWM
|
|
||||||
help
|
help
|
||||||
Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
|
Support for VIA/WonderMedia VT8500/WM85xx System-on-Chip.
|
||||||
|
|
||||||
|
|
|
@ -130,6 +130,12 @@
|
||||||
clocks = <&eclk>;
|
clocks = <&eclk>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
memory-controller@fff00000 {
|
||||||
|
compatible = "calxeda,hb-ddr-ctrl";
|
||||||
|
reg = <0xfff00000 0x1000>;
|
||||||
|
interrupts = <0 91 4>;
|
||||||
|
};
|
||||||
|
|
||||||
ipc@fff20000 {
|
ipc@fff20000 {
|
||||||
compatible = "arm,pl320", "arm,primecell";
|
compatible = "arm,pl320", "arm,primecell";
|
||||||
reg = <0xfff20000 0x1000>;
|
reg = <0xfff20000 0x1000>;
|
||||||
|
@ -275,6 +281,12 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sregs@fff3c200 {
|
||||||
|
compatible = "calxeda,hb-sregs-l2-ecc";
|
||||||
|
reg = <0xfff3c200 0x100>;
|
||||||
|
interrupts = <0 71 4 0 72 4>;
|
||||||
|
};
|
||||||
|
|
||||||
dma@fff3d000 {
|
dma@fff3d000 {
|
||||||
compatible = "arm,pl330", "arm,primecell";
|
compatible = "arm,pl330", "arm,primecell";
|
||||||
reg = <0xfff3d000 0x1000>;
|
reg = <0xfff3d000 0x1000>;
|
||||||
|
|
|
@ -660,6 +660,7 @@
|
||||||
compatible = "fsl,imx28-i2c";
|
compatible = "fsl,imx28-i2c";
|
||||||
reg = <0x80058000 2000>;
|
reg = <0x80058000 2000>;
|
||||||
interrupts = <111 68>;
|
interrupts = <111 68>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -669,6 +670,7 @@
|
||||||
compatible = "fsl,imx28-i2c";
|
compatible = "fsl,imx28-i2c";
|
||||||
reg = <0x8005a000 2000>;
|
reg = <0x8005a000 2000>;
|
||||||
interrupts = <110 69>;
|
interrupts = <110 69>;
|
||||||
|
clock-frequency = <100000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
21
arch/arm/boot/dts/r8a7740.dtsi
Normal file
21
arch/arm/boot/dts/r8a7740.dtsi
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Device Tree Source for the r8a7740 SoC
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Solutions Corp.
|
||||||
|
*
|
||||||
|
* This file is licensed under the terms of the GNU General Public License
|
||||||
|
* version 2. This program is licensed "as is" without any warranty of any
|
||||||
|
* kind, whether express or implied.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/include/ "skeleton.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "renesas,r8a7740";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
cpu@0 {
|
||||||
|
compatible = "arm,cortex-a9";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
21
arch/arm/boot/dts/sh7377.dtsi
Normal file
21
arch/arm/boot/dts/sh7377.dtsi
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* Device Tree Source for the sh7377 SoC
|
||||||
|
*
|
||||||
|
* Copyright (C) 2012 Renesas Solutions Corp.
|
||||||
|
*
|
||||||
|
* This file is licensed under the terms of the GNU General Public License
|
||||||
|
* version 2. This program is licensed "as is" without any warranty of any
|
||||||
|
* kind, whether express or implied.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/include/ "skeleton.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
compatible = "renesas,sh7377";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
cpu@0 {
|
||||||
|
compatible = "arm,cortex-a8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -123,6 +123,12 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pwm {
|
||||||
|
compatible = "nvidia,tegra20-pwm";
|
||||||
|
reg = <0x7000a000 0x100>;
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
i2c@7000c000 {
|
i2c@7000c000 {
|
||||||
compatible = "nvidia,tegra20-i2c";
|
compatible = "nvidia,tegra20-i2c";
|
||||||
reg = <0x7000c000 0x100>;
|
reg = <0x7000c000 0x100>;
|
||||||
|
|
|
@ -117,6 +117,12 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pwm {
|
||||||
|
compatible = "nvidia,tegra30-pwm", "nvidia,tegra20-pwm";
|
||||||
|
reg = <0x7000a000 0x100>;
|
||||||
|
#pwm-cells = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
i2c@7000c000 {
|
i2c@7000c000 {
|
||||||
compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
|
compatible = "nvidia,tegra30-i2c", "nvidia,tegra20-i2c";
|
||||||
reg = <0x7000c000 0x100>;
|
reg = <0x7000c000 0x100>;
|
||||||
|
|
|
@ -452,6 +452,7 @@ static struct dma_map_ops dmabounce_ops = {
|
||||||
.alloc = arm_dma_alloc,
|
.alloc = arm_dma_alloc,
|
||||||
.free = arm_dma_free,
|
.free = arm_dma_free,
|
||||||
.mmap = arm_dma_mmap,
|
.mmap = arm_dma_mmap,
|
||||||
|
.get_sgtable = arm_dma_get_sgtable,
|
||||||
.map_page = dmabounce_map_page,
|
.map_page = dmabounce_map_page,
|
||||||
.unmap_page = dmabounce_unmap_page,
|
.unmap_page = dmabounce_unmap_page,
|
||||||
.sync_single_for_cpu = dmabounce_sync_for_cpu,
|
.sync_single_for_cpu = dmabounce_sync_for_cpu,
|
||||||
|
|
|
@ -5,10 +5,7 @@ CONFIG_IKCONFIG_PROC=y
|
||||||
CONFIG_LOG_BUF_SHIFT=16
|
CONFIG_LOG_BUF_SHIFT=16
|
||||||
# CONFIG_UTS_NS is not set
|
# CONFIG_UTS_NS is not set
|
||||||
# CONFIG_IPC_NS is not set
|
# CONFIG_IPC_NS is not set
|
||||||
# CONFIG_USER_NS is not set
|
|
||||||
# CONFIG_PID_NS is not set
|
# CONFIG_PID_NS is not set
|
||||||
CONFIG_SYSFS_DEPRECATED=y
|
|
||||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
CONFIG_SLAB=y
|
CONFIG_SLAB=y
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
|
@ -21,7 +18,7 @@ CONFIG_ARCH_SHMOBILE=y
|
||||||
CONFIG_ARCH_R8A7740=y
|
CONFIG_ARCH_R8A7740=y
|
||||||
CONFIG_MACH_ARMADILLO800EVA=y
|
CONFIG_MACH_ARMADILLO800EVA=y
|
||||||
# CONFIG_SH_TIMER_TMU is not set
|
# CONFIG_SH_TIMER_TMU is not set
|
||||||
# CONFIG_ARM_THUMB is not set
|
CONFIG_ARM_THUMB=y
|
||||||
CONFIG_CPU_BPREDICT_DISABLE=y
|
CONFIG_CPU_BPREDICT_DISABLE=y
|
||||||
# CONFIG_CACHE_L2X0 is not set
|
# CONFIG_CACHE_L2X0 is not set
|
||||||
CONFIG_ARM_ERRATA_430973=y
|
CONFIG_ARM_ERRATA_430973=y
|
||||||
|
@ -39,6 +36,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096"
|
CONFIG_CMDLINE="console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096"
|
||||||
CONFIG_CMDLINE_FORCE=y
|
CONFIG_CMDLINE_FORCE=y
|
||||||
CONFIG_KEXEC=y
|
CONFIG_KEXEC=y
|
||||||
|
CONFIG_VFP=y
|
||||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
# CONFIG_SUSPEND is not set
|
# CONFIG_SUSPEND is not set
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
|
@ -89,26 +87,32 @@ CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||||
CONFIG_I2C=y
|
CONFIG_I2C=y
|
||||||
CONFIG_I2C_SH_MOBILE=y
|
CONFIG_I2C_SH_MOBILE=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
|
CONFIG_MEDIA_SUPPORT=y
|
||||||
|
CONFIG_VIDEO_DEV=y
|
||||||
|
# CONFIG_RC_CORE is not set
|
||||||
|
# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set
|
||||||
|
# CONFIG_V4L_USB_DRIVERS is not set
|
||||||
|
CONFIG_V4L_PLATFORM_DRIVERS=y
|
||||||
|
CONFIG_SOC_CAMERA=y
|
||||||
|
CONFIG_SOC_CAMERA_MT9T112=y
|
||||||
|
CONFIG_VIDEO_SH_MOBILE_CEU=y
|
||||||
|
# CONFIG_RADIO_ADAPTERS is not set
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_MODE_HELPERS=y
|
|
||||||
CONFIG_FB_SH_MOBILE_LCDC=y
|
CONFIG_FB_SH_MOBILE_LCDC=y
|
||||||
|
CONFIG_FB_SH_MOBILE_HDMI=y
|
||||||
CONFIG_LCD_CLASS_DEVICE=y
|
CONFIG_LCD_CLASS_DEVICE=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
|
||||||
CONFIG_LOGO=y
|
CONFIG_LOGO=y
|
||||||
# CONFIG_LOGO_LINUX_MONO is not set
|
# CONFIG_LOGO_LINUX_MONO is not set
|
||||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||||
CONFIG_SOUND=y
|
|
||||||
CONFIG_SND=y
|
|
||||||
# CONFIG_SND_SUPPORT_OLD_API is not set
|
# CONFIG_SND_SUPPORT_OLD_API is not set
|
||||||
# CONFIG_SND_VERBOSE_PROCFS is not set
|
# CONFIG_SND_VERBOSE_PROCFS is not set
|
||||||
# CONFIG_SND_DRIVERS is not set
|
# CONFIG_SND_DRIVERS is not set
|
||||||
# CONFIG_SND_ARM is not set
|
# CONFIG_SND_ARM is not set
|
||||||
CONFIG_SND_SOC=y
|
|
||||||
CONFIG_SND_SOC_SH4_FSI=y
|
CONFIG_SND_SOC_SH4_FSI=y
|
||||||
# CONFIG_HID_SUPPORT is not set
|
# CONFIG_HID_SUPPORT is not set
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
# CONFIG_USB_DEVICE_CLASS is not set
|
|
||||||
CONFIG_USB_RENESAS_USBHS=y
|
CONFIG_USB_RENESAS_USBHS=y
|
||||||
CONFIG_USB_GADGET=y
|
CONFIG_USB_GADGET=y
|
||||||
CONFIG_USB_RENESAS_USBHS_UDC=y
|
CONFIG_USB_RENESAS_USBHS_UDC=y
|
||||||
|
@ -116,6 +120,8 @@ CONFIG_USB_ETH=m
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
CONFIG_MMC_SDHI=y
|
CONFIG_MMC_SDHI=y
|
||||||
CONFIG_MMC_SH_MMCIF=y
|
CONFIG_MMC_SH_MMCIF=y
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_SH_DMAE=y
|
||||||
CONFIG_UIO=y
|
CONFIG_UIO=y
|
||||||
CONFIG_UIO_PDRV_GENIRQ=y
|
CONFIG_UIO_PDRV_GENIRQ=y
|
||||||
# CONFIG_DNOTIFY is not set
|
# CONFIG_DNOTIFY is not set
|
||||||
|
@ -124,7 +130,6 @@ CONFIG_VFAT_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_MISC_FILESYSTEMS is not set
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
CONFIG_NFS_V3_ACL=y
|
CONFIG_NFS_V3_ACL=y
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
CONFIG_NFS_V4_1=y
|
CONFIG_NFS_V4_1=y
|
||||||
|
|
89
arch/arm/configs/kzm9d_defconfig
Normal file
89
arch/arm/configs/kzm9d_defconfig
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
# CONFIG_ARM_PATCH_PHYS_VIRT is not set
|
||||||
|
CONFIG_EXPERIMENTAL=y
|
||||||
|
CONFIG_SYSVIPC=y
|
||||||
|
CONFIG_NO_HZ=y
|
||||||
|
CONFIG_IKCONFIG=y
|
||||||
|
CONFIG_IKCONFIG_PROC=y
|
||||||
|
CONFIG_LOG_BUF_SHIFT=16
|
||||||
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
CONFIG_SYSCTL_SYSCALL=y
|
||||||
|
CONFIG_EMBEDDED=y
|
||||||
|
CONFIG_SLAB=y
|
||||||
|
# CONFIG_BLK_DEV_BSG is not set
|
||||||
|
# CONFIG_IOSCHED_DEADLINE is not set
|
||||||
|
# CONFIG_IOSCHED_CFQ is not set
|
||||||
|
CONFIG_ARCH_SHMOBILE=y
|
||||||
|
CONFIG_ARCH_EMEV2=y
|
||||||
|
CONFIG_MACH_KZM9D=y
|
||||||
|
CONFIG_MEMORY_START=0x40000000
|
||||||
|
CONFIG_MEMORY_SIZE=0x10000000
|
||||||
|
# CONFIG_SH_TIMER_TMU is not set
|
||||||
|
# CONFIG_SWP_EMULATE is not set
|
||||||
|
# CONFIG_CACHE_L2X0 is not set
|
||||||
|
CONFIG_SMP=y
|
||||||
|
CONFIG_NR_CPUS=2
|
||||||
|
CONFIG_HOTPLUG_CPU=y
|
||||||
|
# CONFIG_LOCAL_TIMERS is not set
|
||||||
|
CONFIG_AEABI=y
|
||||||
|
# CONFIG_OABI_COMPAT is not set
|
||||||
|
# CONFIG_CROSS_MEMORY_ATTACH is not set
|
||||||
|
CONFIG_FORCE_MAX_ZONEORDER=13
|
||||||
|
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||||
|
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
|
CONFIG_ARM_APPENDED_DTB=y
|
||||||
|
CONFIG_CMDLINE="console=tty0 console=ttyS1,115200n81 earlyprintk=serial8250-em.1,115200n81 mem=128M@0x40000000 ignore_loglevel root=/dev/nfs ip=dhcp nfsroot=,rsize=4096,wsize=4096"
|
||||||
|
CONFIG_CMDLINE_FORCE=y
|
||||||
|
CONFIG_VFP=y
|
||||||
|
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||||
|
# CONFIG_SUSPEND is not set
|
||||||
|
CONFIG_NET=y
|
||||||
|
CONFIG_PACKET=y
|
||||||
|
CONFIG_UNIX=y
|
||||||
|
CONFIG_INET=y
|
||||||
|
CONFIG_IP_PNP=y
|
||||||
|
CONFIG_IP_PNP_DHCP=y
|
||||||
|
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||||
|
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||||
|
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||||
|
# CONFIG_INET_LRO is not set
|
||||||
|
# CONFIG_INET_DIAG is not set
|
||||||
|
# CONFIG_IPV6 is not set
|
||||||
|
# CONFIG_WIRELESS is not set
|
||||||
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
# CONFIG_BLK_DEV is not set
|
||||||
|
CONFIG_NETDEVICES=y
|
||||||
|
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||||
|
# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||||
|
# CONFIG_NET_VENDOR_CIRRUS is not set
|
||||||
|
# CONFIG_NET_VENDOR_FARADAY is not set
|
||||||
|
# CONFIG_NET_VENDOR_INTEL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||||
|
# CONFIG_NET_VENDOR_MICREL is not set
|
||||||
|
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||||
|
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||||
|
CONFIG_SMSC911X=y
|
||||||
|
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||||
|
# CONFIG_NET_VENDOR_WIZNET is not set
|
||||||
|
# CONFIG_WLAN is not set
|
||||||
|
# CONFIG_INPUT_MOUSEDEV is not set
|
||||||
|
# CONFIG_INPUT_KEYBOARD is not set
|
||||||
|
# CONFIG_INPUT_MOUSE is not set
|
||||||
|
# CONFIG_SERIO is not set
|
||||||
|
# CONFIG_LEGACY_PTYS is not set
|
||||||
|
# CONFIG_DEVKMEM is not set
|
||||||
|
CONFIG_SERIAL_8250=y
|
||||||
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
CONFIG_SERIAL_8250_EM=y
|
||||||
|
# CONFIG_HW_RANDOM is not set
|
||||||
|
CONFIG_GPIOLIB=y
|
||||||
|
CONFIG_GPIO_EM=y
|
||||||
|
# CONFIG_HWMON is not set
|
||||||
|
# CONFIG_HID_SUPPORT is not set
|
||||||
|
# CONFIG_USB_SUPPORT is not set
|
||||||
|
# CONFIG_IOMMU_SUPPORT is not set
|
||||||
|
# CONFIG_DNOTIFY is not set
|
||||||
|
CONFIG_TMPFS=y
|
||||||
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
|
CONFIG_NFS_FS=y
|
||||||
|
CONFIG_ROOT_NFS=y
|
||||||
|
# CONFIG_FTRACE is not set
|
|
@ -100,7 +100,12 @@ CONFIG_SND_SOC_SH4_FSI=y
|
||||||
CONFIG_USB=y
|
CONFIG_USB=y
|
||||||
CONFIG_USB_DEVICEFS=y
|
CONFIG_USB_DEVICEFS=y
|
||||||
CONFIG_USB_R8A66597_HCD=y
|
CONFIG_USB_R8A66597_HCD=y
|
||||||
|
CONFIG_USB_RENESAS_USBHS=y
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_USB_GADGET=y
|
||||||
|
CONFIG_USB_RENESAS_USBHS_UDC=y
|
||||||
|
CONFIG_USB_ETH=m
|
||||||
|
CONFIG_USB_MASS_STORAGE=m
|
||||||
CONFIG_MMC=y
|
CONFIG_MMC=y
|
||||||
# CONFIG_MMC_BLOCK_BOUNCE is not set
|
# CONFIG_MMC_BLOCK_BOUNCE is not set
|
||||||
CONFIG_MMC_SDHI=y
|
CONFIG_MMC_SDHI=y
|
||||||
|
@ -108,12 +113,13 @@ CONFIG_MMC_SH_MMCIF=y
|
||||||
CONFIG_NEW_LEDS=y
|
CONFIG_NEW_LEDS=y
|
||||||
CONFIG_LEDS_CLASS=y
|
CONFIG_LEDS_CLASS=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
|
CONFIG_RTC_DRV_RS5C372=y
|
||||||
CONFIG_DMADEVICES=y
|
CONFIG_DMADEVICES=y
|
||||||
CONFIG_SH_DMAE=y
|
CONFIG_SH_DMAE=y
|
||||||
CONFIG_ASYNC_TX_DMA=y
|
CONFIG_ASYNC_TX_DMA=y
|
||||||
CONFIG_STAGING=y
|
CONFIG_STAGING=y
|
||||||
# CONFIG_DNOTIFY is not set
|
# CONFIG_DNOTIFY is not set
|
||||||
# CONFIG_INOTIFY_USER is not set
|
CONFIG_INOTIFY_USER=y
|
||||||
CONFIG_VFAT_FS=y
|
CONFIG_VFAT_FS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_MISC_FILESYSTEMS is not set
|
# CONFIG_MISC_FILESYSTEMS is not set
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue