Merge branch 'devicetree/merge' into spi/merge
This commit is contained in:
Коммит
c170093d31
|
@ -28,7 +28,7 @@
|
|||
<holder>Convergence GmbH</holder>
|
||||
</copyright>
|
||||
<copyright>
|
||||
<year>2009-2010</year>
|
||||
<year>2009-2011</year>
|
||||
<holder>Mauro Carvalho Chehab</holder>
|
||||
</copyright>
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<title>LINUX MEDIA INFRASTRUCTURE API</title>
|
||||
|
||||
<copyright>
|
||||
<year>2009-2010</year>
|
||||
<year>2009-2011</year>
|
||||
<holder>LinuxTV Developers</holder>
|
||||
</copyright>
|
||||
|
||||
|
@ -86,7 +86,7 @@ Foundation. A copy of the license is included in the chapter entitled
|
|||
</author>
|
||||
</authorgroup>
|
||||
<copyright>
|
||||
<year>2009-2010</year>
|
||||
<year>2009-2011</year>
|
||||
<holder>Mauro Carvalho Chehab</holder>
|
||||
</copyright>
|
||||
|
||||
|
|
|
@ -75,6 +75,7 @@ as follows:</para>
|
|||
</section>
|
||||
|
||||
<section>
|
||||
<title>RDS datastructures</title>
|
||||
<table frame="none" pgwide="1" id="v4l2-rds-data">
|
||||
<title>struct
|
||||
<structname>v4l2_rds_data</structname></title>
|
||||
|
@ -129,10 +130,11 @@ as follows:</para>
|
|||
|
||||
<table frame="none" pgwide="1" id="v4l2-rds-block-codes">
|
||||
<title>Block defines</title>
|
||||
<tgroup cols="3">
|
||||
<tgroup cols="4">
|
||||
<colspec colname="c1" colwidth="1*" />
|
||||
<colspec colname="c2" colwidth="1*" />
|
||||
<colspec colname="c3" colwidth="5*" />
|
||||
<colspec colname="c3" colwidth="1*" />
|
||||
<colspec colname="c4" colwidth="5*" />
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>V4L2_RDS_BLOCK_MSK</entry>
|
||||
|
|
|
@ -100,6 +100,7 @@ Remote Controller chapter.</contrib>
|
|||
<year>2008</year>
|
||||
<year>2009</year>
|
||||
<year>2010</year>
|
||||
<year>2011</year>
|
||||
<holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
|
||||
Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab</holder>
|
||||
</copyright>
|
||||
|
@ -381,7 +382,7 @@ and discussions on the V4L mailing list.</revremark>
|
|||
</partinfo>
|
||||
|
||||
<title>Video for Linux Two API Specification</title>
|
||||
<subtitle>Revision 2.6.33</subtitle>
|
||||
<subtitle>Revision 2.6.38</subtitle>
|
||||
|
||||
<chapter id="common">
|
||||
&sub-common;
|
||||
|
|
|
@ -65,13 +65,19 @@ looks at the connected hardware is beyond the scope of this document.
|
|||
The boot loader must ultimately be able to provide a MACH_TYPE_xxx
|
||||
value to the kernel. (see linux/arch/arm/tools/mach-types).
|
||||
|
||||
|
||||
4. Setup the kernel tagged list
|
||||
-------------------------------
|
||||
4. Setup boot data
|
||||
------------------
|
||||
|
||||
Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED
|
||||
New boot loaders: MANDATORY
|
||||
|
||||
The boot loader must provide either a tagged list or a dtb image for
|
||||
passing configuration data to the kernel. The physical address of the
|
||||
boot data is passed to the kernel in register r2.
|
||||
|
||||
4a. Setup the kernel tagged list
|
||||
--------------------------------
|
||||
|
||||
The boot loader must create and initialise the kernel tagged list.
|
||||
A valid tagged list starts with ATAG_CORE and ends with ATAG_NONE.
|
||||
The ATAG_CORE tag may or may not be empty. An empty ATAG_CORE tag
|
||||
|
@ -101,6 +107,24 @@ The tagged list must be placed in a region of memory where neither
|
|||
the kernel decompressor nor initrd 'bootp' program will overwrite
|
||||
it. The recommended placement is in the first 16KiB of RAM.
|
||||
|
||||
4b. Setup the device tree
|
||||
-------------------------
|
||||
|
||||
The boot loader must load a device tree image (dtb) into system ram
|
||||
at a 64bit aligned address and initialize it with the boot data. The
|
||||
dtb format is documented in Documentation/devicetree/booting-without-of.txt.
|
||||
The kernel will look for the dtb magic value of 0xd00dfeed at the dtb
|
||||
physical address to determine if a dtb has been passed instead of a
|
||||
tagged list.
|
||||
|
||||
The boot loader must pass at a minimum the size and location of the
|
||||
system memory, and the root filesystem location. The dtb must be
|
||||
placed in a region of memory where the kernel decompressor will not
|
||||
overwrite it. The recommended placement is in the first 16KiB of RAM
|
||||
with the caveat that it may not be located at physical address 0 since
|
||||
the kernel interprets a value of 0 in r2 to mean neither a tagged list
|
||||
nor a dtb were passed.
|
||||
|
||||
5. Calling the kernel image
|
||||
---------------------------
|
||||
|
||||
|
@ -125,7 +149,8 @@ In either case, the following conditions must be met:
|
|||
- CPU register settings
|
||||
r0 = 0,
|
||||
r1 = machine type number discovered in (3) above.
|
||||
r2 = physical address of tagged list in system RAM.
|
||||
r2 = physical address of tagged list in system RAM, or
|
||||
physical address of device tree block (dtb) in system RAM
|
||||
|
||||
- CPU mode
|
||||
All forms of interrupts must be disabled (IRQs and FIQs)
|
||||
|
|
|
@ -13,7 +13,7 @@ Table of Contents
|
|||
|
||||
I - Introduction
|
||||
1) Entry point for arch/powerpc
|
||||
2) Board support
|
||||
2) Entry point for arch/arm
|
||||
|
||||
II - The DT block format
|
||||
1) Header
|
||||
|
@ -41,13 +41,6 @@ Table of Contents
|
|||
VI - System-on-a-chip devices and nodes
|
||||
1) Defining child nodes of an SOC
|
||||
2) Representing devices without a current OF specification
|
||||
a) PHY nodes
|
||||
b) Interrupt controllers
|
||||
c) 4xx/Axon EMAC ethernet nodes
|
||||
d) Xilinx IP cores
|
||||
e) USB EHCI controllers
|
||||
f) MDIO on GPIOs
|
||||
g) SPI busses
|
||||
|
||||
VII - Specifying interrupt information for devices
|
||||
1) interrupts property
|
||||
|
@ -123,7 +116,7 @@ Revision Information
|
|||
I - Introduction
|
||||
================
|
||||
|
||||
During the recent development of the Linux/ppc64 kernel, and more
|
||||
During the development of the Linux/ppc64 kernel, and more
|
||||
specifically, the addition of new platform types outside of the old
|
||||
IBM pSeries/iSeries pair, it was decided to enforce some strict rules
|
||||
regarding the kernel entry and bootloader <-> kernel interfaces, in
|
||||
|
@ -146,7 +139,7 @@ section III, but, for example, the kernel does not require you to
|
|||
create a node for every PCI device in the system. It is a requirement
|
||||
to have a node for PCI host bridges in order to provide interrupt
|
||||
routing informations and memory/IO ranges, among others. It is also
|
||||
recommended to define nodes for on chip devices and other busses that
|
||||
recommended to define nodes for on chip devices and other buses that
|
||||
don't specifically fit in an existing OF specification. This creates a
|
||||
great flexibility in the way the kernel can then probe those and match
|
||||
drivers to device, without having to hard code all sorts of tables. It
|
||||
|
@ -158,7 +151,7 @@ it with special cases.
|
|||
1) Entry point for arch/powerpc
|
||||
-------------------------------
|
||||
|
||||
There is one and one single entry point to the kernel, at the start
|
||||
There is one single entry point to the kernel, at the start
|
||||
of the kernel image. That entry point supports two calling
|
||||
conventions:
|
||||
|
||||
|
@ -210,12 +203,6 @@ it with special cases.
|
|||
with all CPUs. The way to do that with method b) will be
|
||||
described in a later revision of this document.
|
||||
|
||||
|
||||
2) Board support
|
||||
----------------
|
||||
|
||||
64-bit kernels:
|
||||
|
||||
Board supports (platforms) are not exclusive config options. An
|
||||
arbitrary set of board supports can be built in a single kernel
|
||||
image. The kernel will "know" what set of functions to use for a
|
||||
|
@ -234,47 +221,49 @@ it with special cases.
|
|||
containing the various callbacks that the generic code will
|
||||
use to get to your platform specific code
|
||||
|
||||
c) Add a reference to your "ppc_md" structure in the
|
||||
"machines" table in arch/powerpc/kernel/setup_64.c if you are
|
||||
a 64-bit platform.
|
||||
|
||||
d) request and get assigned a platform number (see PLATFORM_*
|
||||
constants in arch/powerpc/include/asm/processor.h
|
||||
|
||||
32-bit embedded kernels:
|
||||
|
||||
Currently, board support is essentially an exclusive config option.
|
||||
The kernel is configured for a single platform. Part of the reason
|
||||
for this is to keep kernels on embedded systems small and efficient;
|
||||
part of this is due to the fact the code is already that way. In the
|
||||
future, a kernel may support multiple platforms, but only if the
|
||||
A kernel image may support multiple platforms, but only if the
|
||||
platforms feature the same core architecture. A single kernel build
|
||||
cannot support both configurations with Book E and configurations
|
||||
with classic Powerpc architectures.
|
||||
|
||||
32-bit embedded platforms that are moved into arch/powerpc using a
|
||||
flattened device tree should adopt the merged tree practice of
|
||||
setting ppc_md up dynamically, even though the kernel is currently
|
||||
built with support for only a single platform at a time. This allows
|
||||
unification of the setup code, and will make it easier to go to a
|
||||
multiple-platform-support model in the future.
|
||||
2) Entry point for arch/arm
|
||||
---------------------------
|
||||
|
||||
NOTE: I believe the above will be true once Ben's done with the merge
|
||||
of the boot sequences.... someone speak up if this is wrong!
|
||||
There is one single entry point to the kernel, at the start
|
||||
of the kernel image. That entry point supports two calling
|
||||
conventions. A summary of the interface is described here. A full
|
||||
description of the boot requirements is documented in
|
||||
Documentation/arm/Booting
|
||||
|
||||
To add a 32-bit embedded platform support, follow the instructions
|
||||
for 64-bit platforms above, with the exception that the Kconfig
|
||||
option should be set up such that the kernel builds exclusively for
|
||||
the platform selected. The processor type for the platform should
|
||||
enable another config option to select the specific board
|
||||
supported.
|
||||
a) ATAGS interface. Minimal information is passed from firmware
|
||||
to the kernel with a tagged list of predefined parameters.
|
||||
|
||||
NOTE: If Ben doesn't merge the setup files, may need to change this to
|
||||
point to setup_32.c
|
||||
r0 : 0
|
||||
|
||||
r1 : Machine type number
|
||||
|
||||
I will describe later the boot process and various callbacks that
|
||||
your platform should implement.
|
||||
r2 : Physical address of tagged list in system RAM
|
||||
|
||||
b) Entry with a flattened device-tree block. Firmware loads the
|
||||
physical address of the flattened device tree block (dtb) into r2,
|
||||
r1 is not used, but it is considered good practise to use a valid
|
||||
machine number as described in Documentation/arm/Booting.
|
||||
|
||||
r0 : 0
|
||||
|
||||
r1 : Valid machine type number. When using a device tree,
|
||||
a single machine type number will often be assigned to
|
||||
represent a class or family of SoCs.
|
||||
|
||||
r2 : physical pointer to the device-tree block
|
||||
(defined in chapter II) in RAM. Device tree can be located
|
||||
anywhere in system RAM, but it should be aligned on a 32 bit
|
||||
boundary.
|
||||
|
||||
The kernel will differentiate between ATAGS and device tree booting by
|
||||
reading the memory pointed to by r1 and looking for either the flattened
|
||||
device tree block magic value (0xd00dfeed) or the ATAG_CORE value at
|
||||
offset 0x4 from r2 (0x54410001).
|
||||
|
||||
|
||||
II - The DT block format
|
||||
|
@ -300,8 +289,8 @@ the block to RAM before passing it to the kernel.
|
|||
1) Header
|
||||
---------
|
||||
|
||||
The kernel is entered with r3 pointing to an area of memory that is
|
||||
roughly described in arch/powerpc/include/asm/prom.h by the structure
|
||||
The kernel is passed the physical address pointing to an area of memory
|
||||
that is roughly described in include/linux/of_fdt.h by the structure
|
||||
boot_param_header:
|
||||
|
||||
struct boot_param_header {
|
||||
|
@ -339,7 +328,7 @@ struct boot_param_header {
|
|||
All values in this header are in big endian format, the various
|
||||
fields in this header are defined more precisely below. All
|
||||
"offset" values are in bytes from the start of the header; that is
|
||||
from the value of r3.
|
||||
from the physical base address of the device tree block.
|
||||
|
||||
- magic
|
||||
|
||||
|
@ -437,7 +426,7 @@ struct boot_param_header {
|
|||
|
||||
|
||||
------------------------------
|
||||
r3 -> | struct boot_param_header |
|
||||
base -> | struct boot_param_header |
|
||||
------------------------------
|
||||
| (alignment gap) (*) |
|
||||
------------------------------
|
||||
|
@ -457,7 +446,7 @@ struct boot_param_header {
|
|||
-----> ------------------------------
|
||||
|
|
||||
|
|
||||
--- (r3 + totalsize)
|
||||
--- (base + totalsize)
|
||||
|
||||
(*) The alignment gaps are not necessarily present; their presence
|
||||
and size are dependent on the various alignment requirements of
|
||||
|
@ -500,7 +489,7 @@ the device-tree structure. It is typically used to represent "path" in
|
|||
the device-tree. More details about the actual format of these will be
|
||||
below.
|
||||
|
||||
The kernel powerpc generic code does not make any formal use of the
|
||||
The kernel generic code does not make any formal use of the
|
||||
unit address (though some board support code may do) so the only real
|
||||
requirement here for the unit address is to ensure uniqueness of
|
||||
the node unit name at a given level of the tree. Nodes with no notion
|
||||
|
@ -518,20 +507,21 @@ path to the root node is "/".
|
|||
|
||||
Every node which actually represents an actual device (that is, a node
|
||||
which isn't only a virtual "container" for more nodes, like "/cpus"
|
||||
is) is also required to have a "device_type" property indicating the
|
||||
type of node .
|
||||
is) is also required to have a "compatible" property indicating the
|
||||
specific hardware and an optional list of devices it is fully
|
||||
backwards compatible with.
|
||||
|
||||
Finally, every node that can be referenced from a property in another
|
||||
node is required to have a "linux,phandle" property. Real open
|
||||
firmware implementations provide a unique "phandle" value for every
|
||||
node that the "prom_init()" trampoline code turns into
|
||||
"linux,phandle" properties. However, this is made optional if the
|
||||
flattened device tree is used directly. An example of a node
|
||||
node is required to have either a "phandle" or a "linux,phandle"
|
||||
property. Real Open Firmware implementations provide a unique
|
||||
"phandle" value for every node that the "prom_init()" trampoline code
|
||||
turns into "linux,phandle" properties. However, this is made optional
|
||||
if the flattened device tree is used directly. An example of a node
|
||||
referencing another node via "phandle" is when laying out the
|
||||
interrupt tree which will be described in a further version of this
|
||||
document.
|
||||
|
||||
This "linux, phandle" property is a 32-bit value that uniquely
|
||||
The "phandle" property is a 32-bit value that uniquely
|
||||
identifies a node. You are free to use whatever values or system of
|
||||
values, internal pointers, or whatever to generate these, the only
|
||||
requirement is that every node for which you provide that property has
|
||||
|
@ -694,7 +684,7 @@ made of 3 cells, the bottom two containing the actual address itself
|
|||
while the top cell contains address space indication, flags, and pci
|
||||
bus & device numbers.
|
||||
|
||||
For busses that support dynamic allocation, it's the accepted practice
|
||||
For buses that support dynamic allocation, it's the accepted practice
|
||||
to then not provide the address in "reg" (keep it 0) though while
|
||||
providing a flag indicating the address is dynamically allocated, and
|
||||
then, to provide a separate "assigned-addresses" property that
|
||||
|
@ -711,7 +701,7 @@ prom_parse.c file of the recent kernels for your bus type.
|
|||
The "reg" property only defines addresses and sizes (if #size-cells is
|
||||
non-0) within a given bus. In order to translate addresses upward
|
||||
(that is into parent bus addresses, and possibly into CPU physical
|
||||
addresses), all busses must contain a "ranges" property. If the
|
||||
addresses), all buses must contain a "ranges" property. If the
|
||||
"ranges" property is missing at a given level, it's assumed that
|
||||
translation isn't possible, i.e., the registers are not visible on the
|
||||
parent bus. The format of the "ranges" property for a bus is a list
|
||||
|
@ -727,9 +717,9 @@ example, for a PCI host controller, that would be a CPU address. For a
|
|||
PCI<->ISA bridge, that would be a PCI address. It defines the base
|
||||
address in the parent bus where the beginning of that range is mapped.
|
||||
|
||||
For a new 64-bit powerpc board, I recommend either the 2/2 format or
|
||||
For new 64-bit board support, I recommend either the 2/2 format or
|
||||
Apple's 2/1 format which is slightly more compact since sizes usually
|
||||
fit in a single 32-bit word. New 32-bit powerpc boards should use a
|
||||
fit in a single 32-bit word. New 32-bit board support should use a
|
||||
1/1 format, unless the processor supports physical addresses greater
|
||||
than 32-bits, in which case a 2/1 format is recommended.
|
||||
|
||||
|
@ -754,7 +744,7 @@ of their actual names.
|
|||
While earlier users of Open Firmware like OldWorld macintoshes tended
|
||||
to use the actual device name for the "name" property, it's nowadays
|
||||
considered a good practice to use a name that is closer to the device
|
||||
class (often equal to device_type). For example, nowadays, ethernet
|
||||
class (often equal to device_type). For example, nowadays, Ethernet
|
||||
controllers are named "ethernet", an additional "model" property
|
||||
defining precisely the chip type/model, and "compatible" property
|
||||
defining the family in case a single driver can driver more than one
|
||||
|
@ -772,7 +762,7 @@ is present).
|
|||
4) Note about node and property names and character set
|
||||
-------------------------------------------------------
|
||||
|
||||
While open firmware provides more flexible usage of 8859-1, this
|
||||
While Open Firmware provides more flexible usage of 8859-1, this
|
||||
specification enforces more strict rules. Nodes and properties should
|
||||
be comprised only of ASCII characters 'a' to 'z', '0' to
|
||||
'9', ',', '.', '_', '+', '#', '?', and '-'. Node names additionally
|
||||
|
@ -792,7 +782,7 @@ address which can extend beyond that limit.
|
|||
--------------------------------
|
||||
These are all that are currently required. However, it is strongly
|
||||
recommended that you expose PCI host bridges as documented in the
|
||||
PCI binding to open firmware, and your interrupt tree as documented
|
||||
PCI binding to Open Firmware, and your interrupt tree as documented
|
||||
in OF interrupt tree specification.
|
||||
|
||||
a) The root node
|
||||
|
@ -802,20 +792,12 @@ address which can extend beyond that limit.
|
|||
- model : this is your board name/model
|
||||
- #address-cells : address representation for "root" devices
|
||||
- #size-cells: the size representation for "root" devices
|
||||
- device_type : This property shouldn't be necessary. However, if
|
||||
you decide to create a device_type for your root node, make sure it
|
||||
is _not_ "chrp" unless your platform is a pSeries or PAPR compliant
|
||||
one for 64-bit, or a CHRP-type machine for 32-bit as this will
|
||||
matched by the kernel this way.
|
||||
|
||||
Additionally, some recommended properties are:
|
||||
|
||||
- compatible : the board "family" generally finds its way here,
|
||||
for example, if you have 2 board models with a similar layout,
|
||||
that typically get driven by the same platform code in the
|
||||
kernel, you would use a different "model" property but put a
|
||||
value in "compatible". The kernel doesn't directly use that
|
||||
value but it is generally useful.
|
||||
kernel, you would specify the exact board model in the
|
||||
compatible property followed by an entry that represents the SoC
|
||||
model.
|
||||
|
||||
The root node is also generally where you add additional properties
|
||||
specific to your board like the serial number if any, that sort of
|
||||
|
@ -841,8 +823,11 @@ address which can extend beyond that limit.
|
|||
|
||||
So under /cpus, you are supposed to create a node for every CPU on
|
||||
the machine. There is no specific restriction on the name of the
|
||||
CPU, though It's common practice to call it PowerPC,<name>. For
|
||||
CPU, though it's common to call it <architecture>,<core>. For
|
||||
example, Apple uses PowerPC,G5 while IBM uses PowerPC,970FX.
|
||||
However, the Generic Names convention suggests that it would be
|
||||
better to simply use 'cpu' for each cpu node and use the compatible
|
||||
property to identify the specific cpu core.
|
||||
|
||||
Required properties:
|
||||
|
||||
|
@ -923,7 +908,7 @@ compatibility.
|
|||
|
||||
e) The /chosen node
|
||||
|
||||
This node is a bit "special". Normally, that's where open firmware
|
||||
This node is a bit "special". Normally, that's where Open Firmware
|
||||
puts some variable environment information, like the arguments, or
|
||||
the default input/output devices.
|
||||
|
||||
|
@ -940,11 +925,7 @@ compatibility.
|
|||
console device if any. Typically, if you have serial devices on
|
||||
your board, you may want to put the full path to the one set as
|
||||
the default console in the firmware here, for the kernel to pick
|
||||
it up as its own default console. If you look at the function
|
||||
set_preferred_console() in arch/ppc64/kernel/setup.c, you'll see
|
||||
that the kernel tries to find out the default console and has
|
||||
knowledge of various types like 8250 serial ports. You may want
|
||||
to extend this function to add your own.
|
||||
it up as its own default console.
|
||||
|
||||
Note that u-boot creates and fills in the chosen node for platforms
|
||||
that use it.
|
||||
|
@ -955,23 +936,23 @@ compatibility.
|
|||
|
||||
f) the /soc<SOCname> node
|
||||
|
||||
This node is used to represent a system-on-a-chip (SOC) and must be
|
||||
present if the processor is a SOC. The top-level soc node contains
|
||||
information that is global to all devices on the SOC. The node name
|
||||
should contain a unit address for the SOC, which is the base address
|
||||
of the memory-mapped register set for the SOC. The name of an soc
|
||||
This node is used to represent a system-on-a-chip (SoC) and must be
|
||||
present if the processor is a SoC. The top-level soc node contains
|
||||
information that is global to all devices on the SoC. The node name
|
||||
should contain a unit address for the SoC, which is the base address
|
||||
of the memory-mapped register set for the SoC. The name of an SoC
|
||||
node should start with "soc", and the remainder of the name should
|
||||
represent the part number for the soc. For example, the MPC8540's
|
||||
soc node would be called "soc8540".
|
||||
|
||||
Required properties:
|
||||
|
||||
- device_type : Should be "soc"
|
||||
- ranges : Should be defined as specified in 1) to describe the
|
||||
translation of SOC addresses for memory mapped SOC registers.
|
||||
- bus-frequency: Contains the bus frequency for the SOC node.
|
||||
translation of SoC addresses for memory mapped SoC registers.
|
||||
- bus-frequency: Contains the bus frequency for the SoC node.
|
||||
Typically, the value of this field is filled in by the boot
|
||||
loader.
|
||||
- compatible : Exact model of the SoC
|
||||
|
||||
|
||||
Recommended properties:
|
||||
|
@ -1155,12 +1136,13 @@ while all this has been defined and implemented.
|
|||
|
||||
- An example of code for iterating nodes & retrieving properties
|
||||
directly from the flattened tree format can be found in the kernel
|
||||
file arch/ppc64/kernel/prom.c, look at scan_flat_dt() function,
|
||||
file drivers/of/fdt.c. Look at the of_scan_flat_dt() function,
|
||||
its usage in early_init_devtree(), and the corresponding various
|
||||
early_init_dt_scan_*() callbacks. That code can be re-used in a
|
||||
GPL bootloader, and as the author of that code, I would be happy
|
||||
to discuss possible free licensing to any vendor who wishes to
|
||||
integrate all or part of this code into a non-GPL bootloader.
|
||||
(reference needed; who is 'I' here? ---gcl Jan 31, 2011)
|
||||
|
||||
|
||||
|
||||
|
@ -1203,18 +1185,19 @@ MPC8540.
|
|||
2) Representing devices without a current OF specification
|
||||
----------------------------------------------------------
|
||||
|
||||
Currently, there are many devices on SOCs that do not have a standard
|
||||
representation pre-defined as part of the open firmware
|
||||
specifications, mainly because the boards that contain these SOCs are
|
||||
not currently booted using open firmware. This section contains
|
||||
descriptions for the SOC devices for which new nodes have been
|
||||
defined; this list will expand as more and more SOC-containing
|
||||
platforms are moved over to use the flattened-device-tree model.
|
||||
Currently, there are many devices on SoCs that do not have a standard
|
||||
representation defined as part of the Open Firmware specifications,
|
||||
mainly because the boards that contain these SoCs are not currently
|
||||
booted using Open Firmware. Binding documentation for new devices
|
||||
should be added to the Documentation/devicetree/bindings directory.
|
||||
That directory will expand as device tree support is added to more and
|
||||
more SoCs.
|
||||
|
||||
|
||||
VII - Specifying interrupt information for devices
|
||||
===================================================
|
||||
|
||||
The device tree represents the busses and devices of a hardware
|
||||
The device tree represents the buses and devices of a hardware
|
||||
system in a form similar to the physical bus topology of the
|
||||
hardware.
|
||||
|
|
@ -357,14 +357,6 @@ Who: Dave Jones <davej@redhat.com>, Matthew Garrett <mjg@redhat.com>
|
|||
|
||||
-----------------------------
|
||||
|
||||
What: __do_IRQ all in one fits nothing interrupt handler
|
||||
When: 2.6.32
|
||||
Why: __do_IRQ was kept for easy migration to the type flow handlers.
|
||||
More than two years of migration time is enough.
|
||||
Who: Thomas Gleixner <tglx@linutronix.de>
|
||||
|
||||
-----------------------------
|
||||
|
||||
What: fakephp and associated sysfs files in /sys/bus/pci/slots/
|
||||
When: 2011
|
||||
Why: In 2.6.27, the semantics of /sys/bus/pci/slots was redefined to
|
||||
|
|
|
@ -39,6 +39,9 @@
|
|||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
#include <signal.h>
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
|
||||
#include <linux/virtio_config.h>
|
||||
#include <linux/virtio_net.h>
|
||||
#include <linux/virtio_blk.h>
|
||||
|
@ -298,20 +301,27 @@ static void *map_zeroed_pages(unsigned int num)
|
|||
|
||||
/*
|
||||
* We use a private mapping (ie. if we write to the page, it will be
|
||||
* copied).
|
||||
* copied). We allocate an extra two pages PROT_NONE to act as guard
|
||||
* pages against read/write attempts that exceed allocated space.
|
||||
*/
|
||||
addr = mmap(NULL, getpagesize() * num,
|
||||
PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, fd, 0);
|
||||
addr = mmap(NULL, getpagesize() * (num+2),
|
||||
PROT_NONE, MAP_PRIVATE, fd, 0);
|
||||
|
||||
if (addr == MAP_FAILED)
|
||||
err(1, "Mmapping %u pages of /dev/zero", num);
|
||||
|
||||
if (mprotect(addr + getpagesize(), getpagesize() * num,
|
||||
PROT_READ|PROT_WRITE) == -1)
|
||||
err(1, "mprotect rw %u pages failed", num);
|
||||
|
||||
/*
|
||||
* One neat mmap feature is that you can close the fd, and it
|
||||
* stays mapped.
|
||||
*/
|
||||
close(fd);
|
||||
|
||||
return addr;
|
||||
/* Return address after PROT_NONE page */
|
||||
return addr + getpagesize();
|
||||
}
|
||||
|
||||
/* Get some more pages for a device. */
|
||||
|
@ -343,7 +353,7 @@ static void map_at(int fd, void *addr, unsigned long offset, unsigned long len)
|
|||
* done to it. This allows us to share untouched memory between
|
||||
* Guests.
|
||||
*/
|
||||
if (mmap(addr, len, PROT_READ|PROT_WRITE|PROT_EXEC,
|
||||
if (mmap(addr, len, PROT_READ|PROT_WRITE,
|
||||
MAP_FIXED|MAP_PRIVATE, fd, offset) != MAP_FAILED)
|
||||
return;
|
||||
|
||||
|
@ -573,10 +583,10 @@ static void *_check_pointer(unsigned long addr, unsigned int size,
|
|||
unsigned int line)
|
||||
{
|
||||
/*
|
||||
* We have to separately check addr and addr+size, because size could
|
||||
* be huge and addr + size might wrap around.
|
||||
* Check if the requested address and size exceeds the allocated memory,
|
||||
* or addr + size wraps around.
|
||||
*/
|
||||
if (addr >= guest_limit || addr + size >= guest_limit)
|
||||
if ((addr + size) > guest_limit || (addr + size) < addr)
|
||||
errx(1, "%s:%i: Invalid address %#lx", __FILE__, line, addr);
|
||||
/*
|
||||
* We return a pointer for the caller's convenience, now we know it's
|
||||
|
@ -1872,6 +1882,8 @@ static struct option opts[] = {
|
|||
{ "block", 1, NULL, 'b' },
|
||||
{ "rng", 0, NULL, 'r' },
|
||||
{ "initrd", 1, NULL, 'i' },
|
||||
{ "username", 1, NULL, 'u' },
|
||||
{ "chroot", 1, NULL, 'c' },
|
||||
{ NULL },
|
||||
};
|
||||
static void usage(void)
|
||||
|
@ -1894,6 +1906,12 @@ int main(int argc, char *argv[])
|
|||
/* If they specify an initrd file to load. */
|
||||
const char *initrd_name = NULL;
|
||||
|
||||
/* Password structure for initgroups/setres[gu]id */
|
||||
struct passwd *user_details = NULL;
|
||||
|
||||
/* Directory to chroot to */
|
||||
char *chroot_path = NULL;
|
||||
|
||||
/* Save the args: we "reboot" by execing ourselves again. */
|
||||
main_args = argv;
|
||||
|
||||
|
@ -1950,6 +1968,14 @@ int main(int argc, char *argv[])
|
|||
case 'i':
|
||||
initrd_name = optarg;
|
||||
break;
|
||||
case 'u':
|
||||
user_details = getpwnam(optarg);
|
||||
if (!user_details)
|
||||
err(1, "getpwnam failed, incorrect username?");
|
||||
break;
|
||||
case 'c':
|
||||
chroot_path = optarg;
|
||||
break;
|
||||
default:
|
||||
warnx("Unknown argument %s", argv[optind]);
|
||||
usage();
|
||||
|
@ -2021,6 +2047,37 @@ int main(int argc, char *argv[])
|
|||
/* If we exit via err(), this kills all the threads, restores tty. */
|
||||
atexit(cleanup_devices);
|
||||
|
||||
/* If requested, chroot to a directory */
|
||||
if (chroot_path) {
|
||||
if (chroot(chroot_path) != 0)
|
||||
err(1, "chroot(\"%s\") failed", chroot_path);
|
||||
|
||||
if (chdir("/") != 0)
|
||||
err(1, "chdir(\"/\") failed");
|
||||
|
||||
verbose("chroot done\n");
|
||||
}
|
||||
|
||||
/* If requested, drop privileges */
|
||||
if (user_details) {
|
||||
uid_t u;
|
||||
gid_t g;
|
||||
|
||||
u = user_details->pw_uid;
|
||||
g = user_details->pw_gid;
|
||||
|
||||
if (initgroups(user_details->pw_name, g) != 0)
|
||||
err(1, "initgroups failed");
|
||||
|
||||
if (setresgid(g, g, g) != 0)
|
||||
err(1, "setresgid failed");
|
||||
|
||||
if (setresuid(u, u, u) != 0)
|
||||
err(1, "setresuid failed");
|
||||
|
||||
verbose("Dropping privileges completed\n");
|
||||
}
|
||||
|
||||
/* Finally, run the Guest. This doesn't return. */
|
||||
run_guest();
|
||||
}
|
||||
|
|
|
@ -117,6 +117,11 @@ Running Lguest:
|
|||
|
||||
for general information on how to get bridging to work.
|
||||
|
||||
- Random number generation. Using the --rng option will provide a
|
||||
/dev/hwrng in the guest that will read from the host's /dev/random.
|
||||
Use this option in conjunction with rng-tools (see ../hw_random.txt)
|
||||
to provide entropy to the guest kernel's /dev/random.
|
||||
|
||||
There is a helpful mailing list at http://ozlabs.org/mailman/listinfo/lguest
|
||||
|
||||
Good luck!
|
||||
|
|
|
@ -27,42 +27,38 @@ ASoC Codec driver breakdown
|
|||
|
||||
1 - Codec DAI and PCM configuration
|
||||
-----------------------------------
|
||||
Each codec driver must have a struct snd_soc_codec_dai to define its DAI and
|
||||
Each codec driver must have a struct snd_soc_dai_driver to define its DAI and
|
||||
PCM capabilities and operations. This struct is exported so that it can be
|
||||
registered with the core by your machine driver.
|
||||
|
||||
e.g.
|
||||
|
||||
struct snd_soc_codec_dai wm8731_dai = {
|
||||
.name = "WM8731",
|
||||
/* playback capabilities */
|
||||
static struct snd_soc_dai_ops wm8731_dai_ops = {
|
||||
.prepare = wm8731_pcm_prepare,
|
||||
.hw_params = wm8731_hw_params,
|
||||
.shutdown = wm8731_shutdown,
|
||||
.digital_mute = wm8731_mute,
|
||||
.set_sysclk = wm8731_set_dai_sysclk,
|
||||
.set_fmt = wm8731_set_dai_fmt,
|
||||
};
|
||||
|
||||
struct snd_soc_dai_driver wm8731_dai = {
|
||||
.name = "wm8731-hifi",
|
||||
.playback = {
|
||||
.stream_name = "Playback",
|
||||
.channels_min = 1,
|
||||
.channels_max = 2,
|
||||
.rates = WM8731_RATES,
|
||||
.formats = WM8731_FORMATS,},
|
||||
/* capture capabilities */
|
||||
.capture = {
|
||||
.stream_name = "Capture",
|
||||
.channels_min = 1,
|
||||
.channels_max = 2,
|
||||
.rates = WM8731_RATES,
|
||||
.formats = WM8731_FORMATS,},
|
||||
/* pcm operations - see section 4 below */
|
||||
.ops = {
|
||||
.prepare = wm8731_pcm_prepare,
|
||||
.hw_params = wm8731_hw_params,
|
||||
.shutdown = wm8731_shutdown,
|
||||
},
|
||||
/* DAI operations - see DAI.txt */
|
||||
.dai_ops = {
|
||||
.digital_mute = wm8731_mute,
|
||||
.set_sysclk = wm8731_set_dai_sysclk,
|
||||
.set_fmt = wm8731_set_dai_fmt,
|
||||
}
|
||||
.ops = &wm8731_dai_ops,
|
||||
.symmetric_rates = 1,
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(wm8731_dai);
|
||||
|
||||
|
||||
2 - Codec control IO
|
||||
|
@ -186,13 +182,14 @@ when the mute is applied or freed.
|
|||
|
||||
i.e.
|
||||
|
||||
static int wm8974_mute(struct snd_soc_codec *codec,
|
||||
struct snd_soc_codec_dai *dai, int mute)
|
||||
static int wm8974_mute(struct snd_soc_dai *dai, int mute)
|
||||
{
|
||||
u16 mute_reg = wm8974_read_reg_cache(codec, WM8974_DAC) & 0xffbf;
|
||||
if(mute)
|
||||
wm8974_write(codec, WM8974_DAC, mute_reg | 0x40);
|
||||
struct snd_soc_codec *codec = dai->codec;
|
||||
u16 mute_reg = snd_soc_read(codec, WM8974_DAC) & 0xffbf;
|
||||
|
||||
if (mute)
|
||||
snd_soc_write(codec, WM8974_DAC, mute_reg | 0x40);
|
||||
else
|
||||
wm8974_write(codec, WM8974_DAC, mute_reg);
|
||||
snd_soc_write(codec, WM8974_DAC, mute_reg);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,8 @@ the following struct:-
|
|||
struct snd_soc_card {
|
||||
char *name;
|
||||
|
||||
...
|
||||
|
||||
int (*probe)(struct platform_device *pdev);
|
||||
int (*remove)(struct platform_device *pdev);
|
||||
|
||||
|
@ -22,12 +24,13 @@ struct snd_soc_card {
|
|||
int (*resume_pre)(struct platform_device *pdev);
|
||||
int (*resume_post)(struct platform_device *pdev);
|
||||
|
||||
/* machine stream operations */
|
||||
struct snd_soc_ops *ops;
|
||||
...
|
||||
|
||||
/* CPU <--> Codec DAI links */
|
||||
struct snd_soc_dai_link *dai_link;
|
||||
int num_links;
|
||||
|
||||
...
|
||||
};
|
||||
|
||||
probe()/remove()
|
||||
|
@ -42,11 +45,6 @@ of any machine audio tasks that have to be done before or after the codec, DAIs
|
|||
and DMA is suspended and resumed. Optional.
|
||||
|
||||
|
||||
Machine operations
|
||||
------------------
|
||||
The machine specific audio operations can be set here. Again this is optional.
|
||||
|
||||
|
||||
Machine DAI Configuration
|
||||
-------------------------
|
||||
The machine DAI configuration glues all the codec and CPU DAIs together. It can
|
||||
|
@ -61,8 +59,10 @@ struct snd_soc_dai_link is used to set up each DAI in your machine. e.g.
|
|||
static struct snd_soc_dai_link corgi_dai = {
|
||||
.name = "WM8731",
|
||||
.stream_name = "WM8731",
|
||||
.cpu_dai = &pxa_i2s_dai,
|
||||
.codec_dai = &wm8731_dai,
|
||||
.cpu_dai_name = "pxa-is2-dai",
|
||||
.codec_dai_name = "wm8731-hifi",
|
||||
.platform_name = "pxa-pcm-audio",
|
||||
.codec_name = "wm8713-codec.0-001a",
|
||||
.init = corgi_wm8731_init,
|
||||
.ops = &corgi_ops,
|
||||
};
|
||||
|
@ -77,26 +77,6 @@ static struct snd_soc_card snd_soc_corgi = {
|
|||
};
|
||||
|
||||
|
||||
Machine Audio Subsystem
|
||||
-----------------------
|
||||
|
||||
The machine soc device glues the platform, machine and codec driver together.
|
||||
Private data can also be set here. e.g.
|
||||
|
||||
/* corgi audio private data */
|
||||
static struct wm8731_setup_data corgi_wm8731_setup = {
|
||||
.i2c_address = 0x1b,
|
||||
};
|
||||
|
||||
/* corgi audio subsystem */
|
||||
static struct snd_soc_device corgi_snd_devdata = {
|
||||
.machine = &snd_soc_corgi,
|
||||
.platform = &pxa2xx_soc_platform,
|
||||
.codec_dev = &soc_codec_dev_wm8731,
|
||||
.codec_data = &corgi_wm8731_setup,
|
||||
};
|
||||
|
||||
|
||||
Machine Power Map
|
||||
-----------------
|
||||
|
||||
|
|
|
@ -20,9 +20,10 @@ struct snd_soc_ops {
|
|||
int (*trigger)(struct snd_pcm_substream *, int);
|
||||
};
|
||||
|
||||
The platform driver exports its DMA functionality via struct snd_soc_platform:-
|
||||
The platform driver exports its DMA functionality via struct
|
||||
snd_soc_platform_driver:-
|
||||
|
||||
struct snd_soc_platform {
|
||||
struct snd_soc_platform_driver {
|
||||
char *name;
|
||||
|
||||
int (*probe)(struct platform_device *pdev);
|
||||
|
@ -34,6 +35,13 @@ struct snd_soc_platform {
|
|||
int (*pcm_new)(struct snd_card *, struct snd_soc_codec_dai *, struct snd_pcm *);
|
||||
void (*pcm_free)(struct snd_pcm *);
|
||||
|
||||
/*
|
||||
* For platform caused delay reporting.
|
||||
* Optional.
|
||||
*/
|
||||
snd_pcm_sframes_t (*delay)(struct snd_pcm_substream *,
|
||||
struct snd_soc_dai *);
|
||||
|
||||
/* platform stream ops */
|
||||
struct snd_pcm_ops *pcm_ops;
|
||||
};
|
||||
|
|
|
@ -285,6 +285,9 @@ implement g_volatile_ctrl like this:
|
|||
The 'new value' union is not used in g_volatile_ctrl. In general controls
|
||||
that need to implement g_volatile_ctrl are read-only controls.
|
||||
|
||||
Note that if one or more controls in a control cluster are marked as volatile,
|
||||
then all the controls in the cluster are seen as volatile.
|
||||
|
||||
To mark a control as volatile you have to set the is_volatile flag:
|
||||
|
||||
ctrl = v4l2_ctrl_new_std(&sd->ctrl_handler, ...);
|
||||
|
@ -462,6 +465,15 @@ pointer to the v4l2_ctrl_ops struct that is used for that cluster.
|
|||
Obviously, all controls in the cluster array must be initialized to either
|
||||
a valid control or to NULL.
|
||||
|
||||
In rare cases you might want to know which controls of a cluster actually
|
||||
were set explicitly by the user. For this you can check the 'is_new' flag of
|
||||
each control. For example, in the case of a volume/mute cluster the 'is_new'
|
||||
flag of the mute control would be set if the user called VIDIOC_S_CTRL for
|
||||
mute only. If the user would call VIDIOC_S_EXT_CTRLS for both mute and volume
|
||||
controls, then the 'is_new' flag would be 1 for both controls.
|
||||
|
||||
The 'is_new' flag is always 1 when called from v4l2_ctrl_handler_setup().
|
||||
|
||||
|
||||
VIDIOC_LOG_STATUS Support
|
||||
=========================
|
||||
|
|
62
MAINTAINERS
62
MAINTAINERS
|
@ -162,7 +162,7 @@ L: linux-serial@vger.kernel.org
|
|||
W: http://serial.sourceforge.net
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6.git
|
||||
F: drivers/serial/8250*
|
||||
F: drivers/tty/serial/8250*
|
||||
F: include/linux/serial_8250.h
|
||||
|
||||
8390 NETWORK DRIVERS [WD80x3/SMC-ELITE, SMC-ULTRA, NE2000, 3C503, etc.]
|
||||
|
@ -624,11 +624,15 @@ M: Lennert Buytenhek <kernel@wantstofly.org>
|
|||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
|
||||
ARM/ATMEL AT91RM9200 ARM ARCHITECTURE
|
||||
ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES
|
||||
M: Andrew Victor <linux@maxim.org.za>
|
||||
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
||||
M: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
W: http://maxim.org.za/at91_26.html
|
||||
S: Maintained
|
||||
W: http://www.linux4sam.org
|
||||
S: Supported
|
||||
F: arch/arm/mach-at91/
|
||||
|
||||
ARM/BCMRING ARM ARCHITECTURE
|
||||
M: Jiandong Zheng <jdzheng@broadcom.com>
|
||||
|
@ -888,8 +892,8 @@ F: arch/arm/mach-msm/
|
|||
F: drivers/video/msm/
|
||||
F: drivers/mmc/host/msm_sdcc.c
|
||||
F: drivers/mmc/host/msm_sdcc.h
|
||||
F: drivers/serial/msm_serial.h
|
||||
F: drivers/serial/msm_serial.c
|
||||
F: drivers/tty/serial/msm_serial.h
|
||||
F: drivers/tty/serial/msm_serial.c
|
||||
T: git git://codeaurora.org/quic/kernel/davidb/linux-msm.git
|
||||
S: Maintained
|
||||
|
||||
|
@ -1256,7 +1260,7 @@ F: drivers/mmc/host/atmel-mci-regs.h
|
|||
ATMEL AT91 / AT32 SERIAL DRIVER
|
||||
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
||||
S: Supported
|
||||
F: drivers/serial/atmel_serial.c
|
||||
F: drivers/tty/serial/atmel_serial.c
|
||||
|
||||
ATMEL LCDFB DRIVER
|
||||
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
||||
|
@ -1412,7 +1416,7 @@ M: Sonic Zhang <sonic.zhang@analog.com>
|
|||
L: uclinux-dist-devel@blackfin.uclinux.org
|
||||
W: http://blackfin.uclinux.org
|
||||
S: Supported
|
||||
F: drivers/serial/bfin_5xx.c
|
||||
F: drivers/tty/serial/bfin_5xx.c
|
||||
|
||||
BLACKFIN WATCHDOG DRIVER
|
||||
M: Mike Frysinger <vapier.adi@gmail.com>
|
||||
|
@ -1877,7 +1881,7 @@ L: linux-cris-kernel@axis.com
|
|||
W: http://developer.axis.com
|
||||
S: Maintained
|
||||
F: arch/cris/
|
||||
F: drivers/serial/crisv10.*
|
||||
F: drivers/tty/serial/crisv10.*
|
||||
|
||||
CRYPTO API
|
||||
M: Herbert Xu <herbert@gondor.apana.org.au>
|
||||
|
@ -2216,7 +2220,7 @@ F: drivers/net/wan/dscc4.c
|
|||
DZ DECSTATION DZ11 SERIAL DRIVER
|
||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||
S: Maintained
|
||||
F: drivers/serial/dz.*
|
||||
F: drivers/tty/serial/dz.*
|
||||
|
||||
EATA-DMA SCSI DRIVER
|
||||
M: Michael Neuffer <mike@i-Connect.Net>
|
||||
|
@ -2643,7 +2647,7 @@ FREESCALE QUICC ENGINE UCC UART DRIVER
|
|||
M: Timur Tabi <timur@freescale.com>
|
||||
L: linuxppc-dev@lists.ozlabs.org
|
||||
S: Supported
|
||||
F: drivers/serial/ucc_uart.c
|
||||
F: drivers/tty/serial/ucc_uart.c
|
||||
|
||||
FREESCALE SOC SOUND DRIVERS
|
||||
M: Timur Tabi <timur@freescale.com>
|
||||
|
@ -3155,7 +3159,7 @@ S: Orphan
|
|||
F: drivers/video/imsttfb.c
|
||||
|
||||
INFINIBAND SUBSYSTEM
|
||||
M: Roland Dreier <rolandd@cisco.com>
|
||||
M: Roland Dreier <roland@kernel.org>
|
||||
M: Sean Hefty <sean.hefty@intel.com>
|
||||
M: Hal Rosenstock <hal.rosenstock@gmail.com>
|
||||
L: linux-rdma@vger.kernel.org
|
||||
|
@ -3359,7 +3363,7 @@ IOC3 SERIAL DRIVER
|
|||
M: Pat Gefre <pfg@sgi.com>
|
||||
L: linux-serial@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/serial/ioc3_serial.c
|
||||
F: drivers/tty/serial/ioc3_serial.c
|
||||
|
||||
IP MASQUERADING
|
||||
M: Juanjo Ciarlante <jjciarla@raiz.uncu.edu.ar>
|
||||
|
@ -3536,7 +3540,7 @@ JSM Neo PCI based serial card
|
|||
M: Breno Leitao <leitao@linux.vnet.ibm.com>
|
||||
L: linux-serial@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/serial/jsm/
|
||||
F: drivers/tty/serial/jsm/
|
||||
|
||||
K10TEMP HARDWARE MONITORING DRIVER
|
||||
M: Clemens Ladisch <clemens@ladisch.de>
|
||||
|
@ -3686,7 +3690,7 @@ L: kgdb-bugreport@lists.sourceforge.net
|
|||
S: Maintained
|
||||
F: Documentation/DocBook/kgdb.tmpl
|
||||
F: drivers/misc/kgdbts.c
|
||||
F: drivers/serial/kgdboc.c
|
||||
F: drivers/tty/serial/kgdboc.c
|
||||
F: include/linux/kdb.h
|
||||
F: include/linux/kgdb.h
|
||||
F: kernel/debug/
|
||||
|
@ -4567,7 +4571,7 @@ F: drivers/i2c/busses/i2c-ocores.c
|
|||
|
||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
||||
M: Grant Likely <grant.likely@secretlab.ca>
|
||||
L: devicetree-discuss@lists.ozlabs.org
|
||||
L: devicetree-discuss@lists.ozlabs.org (moderated for non-subscribers)
|
||||
W: http://fdt.secretlab.ca
|
||||
T: git git://git.secretlab.ca/git/linux-2.6.git
|
||||
S: Maintained
|
||||
|
@ -5554,7 +5558,7 @@ M: Pat Gefre <pfg@sgi.com>
|
|||
L: linux-ia64@vger.kernel.org
|
||||
S: Supported
|
||||
F: Documentation/ia64/serial.txt
|
||||
F: drivers/serial/ioc?_serial.c
|
||||
F: drivers/tty/serial/ioc?_serial.c
|
||||
F: include/linux/ioc?.h
|
||||
|
||||
SGI VISUAL WORKSTATION 320 AND 540
|
||||
|
@ -5576,7 +5580,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
|||
S: Maintained
|
||||
F: Documentation/arm/Sharp-LH/ADC-LH7-Touchscreen
|
||||
F: arch/arm/mach-lh7a40x/
|
||||
F: drivers/serial/serial_lh7a40x.c
|
||||
F: drivers/tty/serial/serial_lh7a40x.c
|
||||
F: drivers/usb/gadget/lh7a40*
|
||||
F: drivers/usb/host/ohci-lh7a40*
|
||||
|
||||
|
@ -5796,14 +5800,14 @@ L: sparclinux@vger.kernel.org
|
|||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
|
||||
S: Maintained
|
||||
F: drivers/serial/suncore.c
|
||||
F: drivers/serial/suncore.h
|
||||
F: drivers/serial/sunhv.c
|
||||
F: drivers/serial/sunsab.c
|
||||
F: drivers/serial/sunsab.h
|
||||
F: drivers/serial/sunsu.c
|
||||
F: drivers/serial/sunzilog.c
|
||||
F: drivers/serial/sunzilog.h
|
||||
F: drivers/tty/serial/suncore.c
|
||||
F: drivers/tty/serial/suncore.h
|
||||
F: drivers/tty/serial/sunhv.c
|
||||
F: drivers/tty/serial/sunsab.c
|
||||
F: drivers/tty/serial/sunsab.h
|
||||
F: drivers/tty/serial/sunsu.c
|
||||
F: drivers/tty/serial/sunzilog.c
|
||||
F: drivers/tty/serial/sunzilog.h
|
||||
|
||||
SPEAR PLATFORM SUPPORT
|
||||
M: Viresh Kumar <viresh.kumar@st.com>
|
||||
|
@ -6133,8 +6137,8 @@ TTY LAYER
|
|||
M: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
S: Maintained
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6.git
|
||||
F: drivers/char/tty_*
|
||||
F: drivers/serial/serial_core.c
|
||||
F: drivers/tty/*
|
||||
F: drivers/tty/serial/serial_core.c
|
||||
F: include/linux/serial_core.h
|
||||
F: include/linux/serial.h
|
||||
F: include/linux/tty.h
|
||||
|
@ -6879,7 +6883,7 @@ XILINX UARTLITE SERIAL DRIVER
|
|||
M: Peter Korsgaard <jacmet@sunsite.dk>
|
||||
L: linux-serial@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/serial/uartlite.c
|
||||
F: drivers/tty/serial/uartlite.c
|
||||
|
||||
YAM DRIVER FOR AX.25
|
||||
M: Jean-Paul Roubelat <jpr@f6fbb.org>
|
||||
|
@ -6925,7 +6929,7 @@ F: drivers/media/video/zoran/
|
|||
ZS DECSTATION Z85C30 SERIAL DRIVER
|
||||
M: "Maciej W. Rozycki" <macro@linux-mips.org>
|
||||
S: Maintained
|
||||
F: drivers/serial/zs.*
|
||||
F: drivers/tty/serial/zs.*
|
||||
|
||||
GRE DEMULTIPLEXER DRIVER
|
||||
M: Dmitry Kozlov <xeb@mail.ru>
|
||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 38
|
||||
EXTRAVERSION = -rc1
|
||||
EXTRAVERSION = -rc2
|
||||
NAME = Flesh-Eating Bats with Fangs
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -8,6 +8,9 @@ config ALPHA
|
|||
select HAVE_IRQ_WORK
|
||||
select HAVE_PERF_EVENTS
|
||||
select HAVE_DMA_ATTRS
|
||||
select HAVE_GENERIC_HARDIRQS
|
||||
select GENERIC_IRQ_PROBE
|
||||
select AUTO_IRQ_AFFINITY if SMP
|
||||
help
|
||||
The Alpha is a 64-bit general-purpose processor designed and
|
||||
marketed by the Digital Equipment Corporation of blessed memory,
|
||||
|
@ -68,22 +71,6 @@ config GENERIC_IOMAP
|
|||
bool
|
||||
default n
|
||||
|
||||
config GENERIC_HARDIRQS_NO__DO_IRQ
|
||||
def_bool y
|
||||
|
||||
config GENERIC_HARDIRQS
|
||||
bool
|
||||
default y
|
||||
|
||||
config GENERIC_IRQ_PROBE
|
||||
bool
|
||||
default y
|
||||
|
||||
config AUTO_IRQ_AFFINITY
|
||||
bool
|
||||
depends on SMP
|
||||
default y
|
||||
|
||||
source "init/Kconfig"
|
||||
source "kernel/Kconfig.freezer"
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ CONFIG_NAMESPACES=y
|
|||
# CONFIG_PID_NS is not set
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_LOCALVERSION="gum"
|
|||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
# CONFIG_SHMEM is not set
|
||||
|
|
|
@ -17,7 +17,7 @@ CONFIG_SYSFS_DEPRECATED_V2=y
|
|||
CONFIG_RELAY=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=m
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_ARCH_SA1100=y
|
||||
|
|
|
@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_KALLSYMS_EXTRA_PASS=y
|
||||
# CONFIG_HOTPLUG is not set
|
||||
# CONFIG_ELF_CORE is not set
|
||||
|
|
|
@ -6,7 +6,7 @@ CONFIG_IKCONFIG_PROC=y
|
|||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_IKCONFIG_PROC=y
|
|||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_KALLSYMS_EXTRA_PASS=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
|
|
|
@ -4,7 +4,7 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
CONFIG_SLOB=y
|
||||
|
|
|
@ -4,7 +4,7 @@ CONFIG_BSD_PROCESS_ACCT=y
|
|||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_PROFILING=y
|
||||
CONFIG_OPROFILE=m
|
||||
CONFIG_MODULES=y
|
||||
|
|
|
@ -6,7 +6,7 @@ CONFIG_IKCONFIG=y
|
|||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
|
|
|
@ -6,7 +6,7 @@ CONFIG_IKCONFIG=y
|
|||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
|
|
|
@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_ARCH_EBSA110=y
|
||||
CONFIG_PCCARD=m
|
||||
|
|
|
@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_ARCH_CLPS711X=y
|
||||
CONFIG_ARCH_EDB7211=y
|
||||
|
|
|
@ -6,7 +6,7 @@ CONFIG_IKCONFIG_PROC=y
|
|||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
|
|
|
@ -4,7 +4,7 @@ CONFIG_IKCONFIG=y
|
|||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
|
|
|
@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_KALLSYMS is not set
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_SLAB=y
|
||||
|
|
|
@ -7,7 +7,7 @@ CONFIG_SYSFS_DEPRECATED_V2=y
|
|||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_RD_BZIP2=y
|
||||
CONFIG_RD_LZMA=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_ARCH_FOOTBRIDGE=y
|
||||
|
|
|
@ -2,7 +2,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_ARCH_CLPS711X=y
|
||||
CONFIG_ARCH_FORTUNET=y
|
||||
|
|
|
@ -4,7 +4,7 @@ CONFIG_IKCONFIG=y
|
|||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=16
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_UID16 is not set
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
|
|
|
@ -6,7 +6,7 @@ CONFIG_SYSFS_DEPRECATED_V2=y
|
|||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_RD_BZIP2=y
|
||||
CONFIG_RD_LZMA=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
|
|
|
@ -3,7 +3,7 @@ CONFIG_SYSVIPC=y
|
|||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче