Merge branch 'master' of /pub/scm/linux/kernel/git/torvalds/linux-2.6
This commit is contained in:
Коммит
e1f81c8a41
|
@ -954,14 +954,14 @@ elevator_allow_merge_fn called whenever the block layer determines
|
|||
results in some sort of conflict internally,
|
||||
this hook allows it to do that.
|
||||
|
||||
elevator_dispatch_fn fills the dispatch queue with ready requests.
|
||||
elevator_dispatch_fn* fills the dispatch queue with ready requests.
|
||||
I/O schedulers are free to postpone requests by
|
||||
not filling the dispatch queue unless @force
|
||||
is non-zero. Once dispatched, I/O schedulers
|
||||
are not allowed to manipulate the requests -
|
||||
they belong to generic dispatch queue.
|
||||
|
||||
elevator_add_req_fn called to add a new request into the scheduler
|
||||
elevator_add_req_fn* called to add a new request into the scheduler
|
||||
|
||||
elevator_queue_empty_fn returns true if the merge queue is empty.
|
||||
Drivers shouldn't use this, but rather check
|
||||
|
@ -991,7 +991,7 @@ elevator_activate_req_fn Called when device driver first sees a request.
|
|||
elevator_deactivate_req_fn Called when device driver decides to delay
|
||||
a request by requeueing it.
|
||||
|
||||
elevator_init_fn
|
||||
elevator_init_fn*
|
||||
elevator_exit_fn Allocate and free any elevator specific storage
|
||||
for a queue.
|
||||
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
Queue sysfs files
|
||||
=================
|
||||
|
||||
This text file will detail the queue files that are located in the sysfs tree
|
||||
for each block device. Note that stacked devices typically do not export
|
||||
any settings, since their queue merely functions are a remapping target.
|
||||
These files are the ones found in the /sys/block/xxx/queue/ directory.
|
||||
|
||||
Files denoted with a RO postfix are readonly and the RW postfix means
|
||||
read-write.
|
||||
|
||||
hw_sector_size (RO)
|
||||
-------------------
|
||||
This is the hardware sector size of the device, in bytes.
|
||||
|
||||
max_hw_sectors_kb (RO)
|
||||
----------------------
|
||||
This is the maximum number of kilobytes supported in a single data transfer.
|
||||
|
||||
max_sectors_kb (RW)
|
||||
-------------------
|
||||
This is the maximum number of kilobytes that the block layer will allow
|
||||
for a filesystem request. Must be smaller than or equal to the maximum
|
||||
size allowed by the hardware.
|
||||
|
||||
nomerges (RW)
|
||||
-------------
|
||||
This enables the user to disable the lookup logic involved with IO merging
|
||||
requests in the block layer. Merging may still occur through a direct
|
||||
1-hit cache, since that comes for (almost) free. The IO scheduler will not
|
||||
waste cycles doing tree/hash lookups for merges if nomerges is 1. Defaults
|
||||
to 0, enabling all merges.
|
||||
|
||||
nr_requests (RW)
|
||||
----------------
|
||||
This controls how many requests may be allocated in the block layer for
|
||||
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
|
||||
sum).
|
||||
|
||||
read_ahead_kb (RW)
|
||||
------------------
|
||||
Maximum number of kilobytes to read-ahead for filesystems on this block
|
||||
device.
|
||||
|
||||
rq_affinity (RW)
|
||||
----------------
|
||||
If this option is enabled, the block layer will migrate request completions
|
||||
to the CPU that originally submitted the request. For some workloads
|
||||
this provides a significant reduction in CPU cycles due to caching effects.
|
||||
|
||||
scheduler (RW)
|
||||
--------------
|
||||
When read, this file will display the current and available IO schedulers
|
||||
for this block device. The currently active IO scheduler will be enclosed
|
||||
in [] brackets. Writing an IO scheduler name to this file will switch
|
||||
control of this block device to that new IO scheduler. Note that writing
|
||||
an IO scheduler name to this file will attempt to load that IO scheduler
|
||||
module, if it isn't already present in the system.
|
||||
|
||||
|
||||
|
||||
Jens Axboe <jens.axboe@oracle.com>, February 2009
|
|
@ -2,14 +2,14 @@
|
|||
IP-Aliasing:
|
||||
============
|
||||
|
||||
IP-aliases are additional IP-addresses/masks hooked up to a base
|
||||
interface by adding a colon and a string when running ifconfig.
|
||||
IP-aliases are an obsolete way to manage multiple IP-addresses/masks
|
||||
per interface. Newer tools such as iproute2 support multiple
|
||||
address/prefixes per interface, but aliases are still supported
|
||||
for backwards compatibility.
|
||||
|
||||
An alias is formed by adding a colon and a string when running ifconfig.
|
||||
This string is usually numeric, but this is not a must.
|
||||
|
||||
IP-Aliases are avail if CONFIG_INET (`standard' IPv4 networking)
|
||||
is configured in the kernel.
|
||||
|
||||
|
||||
o Alias creation.
|
||||
Alias creation is done by 'magic' interface naming: eg. to create a
|
||||
200.1.1.1 alias for eth0 ...
|
||||
|
@ -38,16 +38,3 @@ o Relationship with main device
|
|||
|
||||
If the base device is shut down the added aliases will be deleted
|
||||
too.
|
||||
|
||||
|
||||
Contact
|
||||
-------
|
||||
Please finger or e-mail me:
|
||||
Juan Jose Ciarlante <jjciarla@raiz.uncu.edu.ar>
|
||||
|
||||
Updated by Erik Schoenfelder <schoenfr@gaertner.DE>
|
||||
|
||||
; local variables:
|
||||
; mode: indented-text
|
||||
; mode: auto-fill
|
||||
; end:
|
||||
|
|
|
@ -0,0 +1,180 @@
|
|||
MPC5200 Device Tree Bindings
|
||||
----------------------------
|
||||
|
||||
(c) 2006-2009 Secret Lab Technologies Ltd
|
||||
Grant Likely <grant.likely@secretlab.ca>
|
||||
|
||||
Naming conventions
|
||||
------------------
|
||||
For mpc5200 on-chip devices, the format for each compatible value is
|
||||
<chip>-<device>[-<mode>]. The OS should be able to match a device driver
|
||||
to the device based solely on the compatible value. If two drivers
|
||||
match on the compatible list; the 'most compatible' driver should be
|
||||
selected.
|
||||
|
||||
The split between the MPC5200 and the MPC5200B leaves a bit of a
|
||||
conundrum. How should the compatible property be set up to provide
|
||||
maximum compatibility information; but still accurately describe the
|
||||
chip? For the MPC5200; the answer is easy. Most of the SoC devices
|
||||
originally appeared on the MPC5200. Since they didn't exist anywhere
|
||||
else; the 5200 compatible properties will contain only one item;
|
||||
"fsl,mpc5200-<device>".
|
||||
|
||||
The 5200B is almost the same as the 5200, but not quite. It fixes
|
||||
silicon bugs and it adds a small number of enhancements. Most of the
|
||||
devices either provide exactly the same interface as on the 5200. A few
|
||||
devices have extra functions but still have a backwards compatible mode.
|
||||
To express this information as completely as possible, 5200B device trees
|
||||
should have two items in the compatible list:
|
||||
compatible = "fsl,mpc5200b-<device>","fsl,mpc5200-<device>";
|
||||
|
||||
It is *strongly* recommended that 5200B device trees follow this convention
|
||||
(instead of only listing the base mpc5200 item).
|
||||
|
||||
ie. ethernet on mpc5200: compatible = "fsl,mpc5200-fec";
|
||||
ethernet on mpc5200b: compatible = "fsl,mpc5200b-fec", "fsl,mpc5200-fec";
|
||||
|
||||
Modal devices, like PSCs, also append the configured function to the
|
||||
end of the compatible field. ie. A PSC in i2s mode would specify
|
||||
"fsl,mpc5200-psc-i2s", not "fsl,mpc5200-i2s". This convention is chosen to
|
||||
avoid naming conflicts with non-psc devices providing the same
|
||||
function. For example, "fsl,mpc5200-spi" and "fsl,mpc5200-psc-spi" describe
|
||||
the mpc5200 simple spi device and a PSC spi mode respectively.
|
||||
|
||||
At the time of writing, exact chip may be either 'fsl,mpc5200' or
|
||||
'fsl,mpc5200b'.
|
||||
|
||||
The soc node
|
||||
------------
|
||||
This node describes the on chip SOC peripherals. Every mpc5200 based
|
||||
board will have this node, and as such there is a common naming
|
||||
convention for SOC devices.
|
||||
|
||||
Required properties:
|
||||
name description
|
||||
---- -----------
|
||||
ranges Memory range of the internal memory mapped registers.
|
||||
Should be <0 [baseaddr] 0xc000>
|
||||
reg Should be <[baseaddr] 0x100>
|
||||
compatible mpc5200: "fsl,mpc5200-immr"
|
||||
mpc5200b: "fsl,mpc5200b-immr"
|
||||
system-frequency 'fsystem' frequency in Hz; XLB, IPB, USB and PCI
|
||||
clocks are derived from the fsystem clock.
|
||||
bus-frequency IPB bus frequency in Hz. Clock rate
|
||||
used by most of the soc devices.
|
||||
|
||||
soc child nodes
|
||||
---------------
|
||||
Any on chip SOC devices available to Linux must appear as soc5200 child nodes.
|
||||
|
||||
Note: The tables below show the value for the mpc5200. A mpc5200b device
|
||||
tree should use the "fsl,mpc5200b-<device>","fsl,mpc5200-<device>" form.
|
||||
|
||||
Required soc5200 child nodes:
|
||||
name compatible Description
|
||||
---- ---------- -----------
|
||||
cdm@<addr> fsl,mpc5200-cdm Clock Distribution
|
||||
interrupt-controller@<addr> fsl,mpc5200-pic need an interrupt
|
||||
controller to boot
|
||||
bestcomm@<addr> fsl,mpc5200-bestcomm Bestcomm DMA controller
|
||||
|
||||
Recommended soc5200 child nodes; populate as needed for your board
|
||||
name compatible Description
|
||||
---- ---------- -----------
|
||||
timer@<addr> fsl,mpc5200-gpt General purpose timers
|
||||
gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio controller
|
||||
gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio controller
|
||||
rtc@<addr> fsl,mpc5200-rtc Real time clock
|
||||
mscan@<addr> fsl,mpc5200-mscan CAN bus controller
|
||||
pci@<addr> fsl,mpc5200-pci PCI bridge
|
||||
serial@<addr> fsl,mpc5200-psc-uart PSC in serial mode
|
||||
i2s@<addr> fsl,mpc5200-psc-i2s PSC in i2s mode
|
||||
ac97@<addr> fsl,mpc5200-psc-ac97 PSC in ac97 mode
|
||||
spi@<addr> fsl,mpc5200-psc-spi PSC in spi mode
|
||||
irda@<addr> fsl,mpc5200-psc-irda PSC in IrDA mode
|
||||
spi@<addr> fsl,mpc5200-spi MPC5200 spi device
|
||||
ethernet@<addr> fsl,mpc5200-fec MPC5200 ethernet device
|
||||
ata@<addr> fsl,mpc5200-ata IDE ATA interface
|
||||
i2c@<addr> fsl,mpc5200-i2c I2C controller
|
||||
usb@<addr> fsl,mpc5200-ohci,ohci-be USB controller
|
||||
xlb@<addr> fsl,mpc5200-xlb XLB arbitrator
|
||||
|
||||
fsl,mpc5200-gpt nodes
|
||||
---------------------
|
||||
On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board
|
||||
design supports the internal wdt, then the device node for GPT0 should
|
||||
include the empty property 'fsl,has-wdt'.
|
||||
|
||||
An mpc5200-gpt can be used as a single line GPIO controller. To do so,
|
||||
add the following properties to the gpt node:
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
When referencing the GPIO line from another node, the first cell must always
|
||||
be zero and the second cell represents the gpio flags and described in the
|
||||
gpio device tree binding.
|
||||
|
||||
An mpc5200-gpt can be used as a single line edge sensitive interrupt
|
||||
controller. To do so, add the following properties to the gpt node:
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
When referencing the IRQ line from another node, the cell represents the
|
||||
sense mode; 1 for edge rising, 2 for edge falling.
|
||||
|
||||
fsl,mpc5200-psc nodes
|
||||
---------------------
|
||||
The PSCs should include a cell-index which is the index of the PSC in
|
||||
hardware. cell-index is used to determine which shared SoC registers to
|
||||
use when setting up PSC clocking. cell-index number starts at '0'. ie:
|
||||
PSC1 has 'cell-index = <0>'
|
||||
PSC4 has 'cell-index = <3>'
|
||||
|
||||
PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in
|
||||
i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the
|
||||
compatible field.
|
||||
|
||||
|
||||
fsl,mpc5200-gpio and fsl,mpc5200-gpio-wkup nodes
|
||||
------------------------------------------------
|
||||
Each GPIO controller node should have the empty property gpio-controller and
|
||||
#gpio-cells set to 2. First cell is the GPIO number which is interpreted
|
||||
according to the bit numbers in the GPIO control registers. The second cell
|
||||
is for flags which is currently unused.
|
||||
|
||||
fsl,mpc5200-fec nodes
|
||||
---------------------
|
||||
The FEC node can specify one of the following properties to configure
|
||||
the MII link:
|
||||
- fsl,7-wire-mode - An empty property that specifies the link uses 7-wire
|
||||
mode instead of MII
|
||||
- current-speed - Specifies that the MII should be configured for a fixed
|
||||
speed. This property should contain two cells. The
|
||||
first cell specifies the speed in Mbps and the second
|
||||
should be '0' for half duplex and '1' for full duplex
|
||||
- phy-handle - Contains a phandle to an Ethernet PHY.
|
||||
|
||||
Interrupt controller (fsl,mpc5200-pic) node
|
||||
-------------------------------------------
|
||||
The mpc5200 pic binding splits hardware IRQ numbers into two levels. The
|
||||
split reflects the layout of the PIC hardware itself, which groups
|
||||
interrupts into one of three groups; CRIT, MAIN or PERP. Also, the
|
||||
Bestcomm dma engine has it's own set of interrupt sources which are
|
||||
cascaded off of peripheral interrupt 0, which the driver interprets as a
|
||||
fourth group, SDMA.
|
||||
|
||||
The interrupts property for device nodes using the mpc5200 pic consists
|
||||
of three cells; <L1 L2 level>
|
||||
|
||||
L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]
|
||||
L2 := interrupt number; directly mapped from the value in the
|
||||
"ICTL PerStat, MainStat, CritStat Encoded Register"
|
||||
level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]
|
||||
|
||||
For external IRQs, use the following interrupt property values (how to
|
||||
specify external interrupts is a frequently asked question):
|
||||
External interrupts:
|
||||
external irq0: interrupts = <0 0 n>;
|
||||
external irq1: interrupts = <1 1 n>;
|
||||
external irq2: interrupts = <1 2 n>;
|
||||
external irq3: interrupts = <1 3 n>;
|
||||
'n' is sense (0: level high, 1: edge rising, 2: edge falling 3: level low)
|
||||
|
|
@ -1,277 +0,0 @@
|
|||
MPC5200 Device Tree Bindings
|
||||
----------------------------
|
||||
|
||||
(c) 2006-2007 Secret Lab Technologies Ltd
|
||||
Grant Likely <grant.likely at secretlab.ca>
|
||||
|
||||
********** DRAFT ***********
|
||||
* WARNING: Do not depend on the stability of these bindings just yet.
|
||||
* The MPC5200 device tree conventions are still in flux
|
||||
* Keep an eye on the linuxppc-dev mailing list for more details
|
||||
********** DRAFT ***********
|
||||
|
||||
I - Introduction
|
||||
================
|
||||
Boards supported by the arch/powerpc architecture require device tree be
|
||||
passed by the boot loader to the kernel at boot time. The device tree
|
||||
describes what devices are present on the board and how they are
|
||||
connected. The device tree can either be passed as a binary blob (as
|
||||
described in Documentation/powerpc/booting-without-of.txt), or passed
|
||||
by Open Firmware (IEEE 1275) compatible firmware using an OF compatible
|
||||
client interface API.
|
||||
|
||||
This document specifies the requirements on the device-tree for mpc5200
|
||||
based boards. These requirements are above and beyond the details
|
||||
specified in either the Open Firmware spec or booting-without-of.txt
|
||||
|
||||
All new mpc5200-based boards are expected to match this document. In
|
||||
cases where this document is not sufficient to support a new board port,
|
||||
this document should be updated as part of adding the new board support.
|
||||
|
||||
II - Philosophy
|
||||
===============
|
||||
The core of this document is naming convention. The whole point of
|
||||
defining this convention is to reduce or eliminate the number of
|
||||
special cases required to support a 5200 board. If all 5200 boards
|
||||
follow the same convention, then generic 5200 support code will work
|
||||
rather than coding special cases for each new board.
|
||||
|
||||
This section tries to capture the thought process behind why the naming
|
||||
convention is what it is.
|
||||
|
||||
1. names
|
||||
---------
|
||||
There is strong convention/requirements already established for children
|
||||
of the root node. 'cpus' describes the processor cores, 'memory'
|
||||
describes memory, and 'chosen' provides boot configuration. Other nodes
|
||||
are added to describe devices attached to the processor local bus.
|
||||
|
||||
Following convention already established with other system-on-chip
|
||||
processors, 5200 device trees should use the name 'soc5200' for the
|
||||
parent node of on chip devices, and the root node should be its parent.
|
||||
|
||||
Child nodes are typically named after the configured function. ie.
|
||||
the FEC node is named 'ethernet', and a PSC in uart mode is named 'serial'.
|
||||
|
||||
2. device_type property
|
||||
-----------------------
|
||||
similar to the node name convention above; the device_type reflects the
|
||||
configured function of a device. ie. 'serial' for a uart and 'spi' for
|
||||
an spi controller. However, while node names *should* reflect the
|
||||
configured function, device_type *must* match the configured function
|
||||
exactly.
|
||||
|
||||
3. compatible property
|
||||
----------------------
|
||||
Since device_type isn't enough to match devices to drivers, there also
|
||||
needs to be a naming convention for the compatible property. Compatible
|
||||
is an list of device descriptions sorted from specific to generic. For
|
||||
the mpc5200, the required format for each compatible value is
|
||||
<chip>-<device>[-<mode>]. The OS should be able to match a device driver
|
||||
to the device based solely on the compatible value. If two drivers
|
||||
match on the compatible list; the 'most compatible' driver should be
|
||||
selected.
|
||||
|
||||
The split between the MPC5200 and the MPC5200B leaves a bit of a
|
||||
conundrum. How should the compatible property be set up to provide
|
||||
maximum compatibility information; but still accurately describe the
|
||||
chip? For the MPC5200; the answer is easy. Most of the SoC devices
|
||||
originally appeared on the MPC5200. Since they didn't exist anywhere
|
||||
else; the 5200 compatible properties will contain only one item;
|
||||
"mpc5200-<device>".
|
||||
|
||||
The 5200B is almost the same as the 5200, but not quite. It fixes
|
||||
silicon bugs and it adds a small number of enhancements. Most of the
|
||||
devices either provide exactly the same interface as on the 5200. A few
|
||||
devices have extra functions but still have a backwards compatible mode.
|
||||
To express this information as completely as possible, 5200B device trees
|
||||
should have two items in the compatible list;
|
||||
"mpc5200b-<device>\0mpc5200-<device>". It is *strongly* recommended
|
||||
that 5200B device trees follow this convention (instead of only listing
|
||||
the base mpc5200 item).
|
||||
|
||||
If another chip appear on the market with one of the mpc5200 SoC
|
||||
devices, then the compatible list should include mpc5200-<device>.
|
||||
|
||||
ie. ethernet on mpc5200: compatible = "mpc5200-ethernet"
|
||||
ethernet on mpc5200b: compatible = "mpc5200b-ethernet\0mpc5200-ethernet"
|
||||
|
||||
Modal devices, like PSCs, also append the configured function to the
|
||||
end of the compatible field. ie. A PSC in i2s mode would specify
|
||||
"mpc5200-psc-i2s", not "mpc5200-i2s". This convention is chosen to
|
||||
avoid naming conflicts with non-psc devices providing the same
|
||||
function. For example, "mpc5200-spi" and "mpc5200-psc-spi" describe
|
||||
the mpc5200 simple spi device and a PSC spi mode respectively.
|
||||
|
||||
If the soc device is more generic and present on other SOCs, the
|
||||
compatible property can specify the more generic device type also.
|
||||
|
||||
ie. mscan: compatible = "mpc5200-mscan\0fsl,mscan";
|
||||
|
||||
At the time of writing, exact chip may be either 'mpc5200' or
|
||||
'mpc5200b'.
|
||||
|
||||
Device drivers should always try to match as generically as possible.
|
||||
|
||||
III - Structure
|
||||
===============
|
||||
The device tree for an mpc5200 board follows the structure defined in
|
||||
booting-without-of.txt with the following additional notes:
|
||||
|
||||
0) the root node
|
||||
----------------
|
||||
Typical root description node; see booting-without-of
|
||||
|
||||
1) The cpus node
|
||||
----------------
|
||||
The cpus node follows the basic layout described in booting-without-of.
|
||||
The bus-frequency property holds the XLB bus frequency
|
||||
The clock-frequency property holds the core frequency
|
||||
|
||||
2) The memory node
|
||||
------------------
|
||||
Typical memory description node; see booting-without-of.
|
||||
|
||||
3) The soc5200 node
|
||||
-------------------
|
||||
This node describes the on chip SOC peripherals. Every mpc5200 based
|
||||
board will have this node, and as such there is a common naming
|
||||
convention for SOC devices.
|
||||
|
||||
Required properties:
|
||||
name type description
|
||||
---- ---- -----------
|
||||
device_type string must be "soc"
|
||||
ranges int should be <0 baseaddr baseaddr+10000>
|
||||
reg int must be <baseaddr 10000>
|
||||
compatible string mpc5200: "mpc5200-soc"
|
||||
mpc5200b: "mpc5200b-soc\0mpc5200-soc"
|
||||
system-frequency int Fsystem frequency; source of all
|
||||
other clocks.
|
||||
bus-frequency int IPB bus frequency in HZ. Clock rate
|
||||
used by most of the soc devices.
|
||||
#interrupt-cells int must be <3>.
|
||||
|
||||
Recommended properties:
|
||||
name type description
|
||||
---- ---- -----------
|
||||
model string Exact model of the chip;
|
||||
ie: model="fsl,mpc5200"
|
||||
revision string Silicon revision of chip
|
||||
ie: revision="M08A"
|
||||
|
||||
The 'model' and 'revision' properties are *strongly* recommended. Having
|
||||
them presence acts as a bit of a safety net for working around as yet
|
||||
undiscovered bugs on one version of silicon. For example, device drivers
|
||||
can use the model and revision properties to decide if a bug fix should
|
||||
be turned on.
|
||||
|
||||
4) soc5200 child nodes
|
||||
----------------------
|
||||
Any on chip SOC devices available to Linux must appear as soc5200 child nodes.
|
||||
|
||||
Note: The tables below show the value for the mpc5200. A mpc5200b device
|
||||
tree should use the "mpc5200b-<device>\0mpc5200-<device> form.
|
||||
|
||||
Required soc5200 child nodes:
|
||||
name device_type compatible Description
|
||||
---- ----------- ---------- -----------
|
||||
cdm@<addr> cdm mpc5200-cmd Clock Distribution
|
||||
pic@<addr> interrupt-controller mpc5200-pic need an interrupt
|
||||
controller to boot
|
||||
bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires
|
||||
the bestcomm device
|
||||
|
||||
Recommended soc5200 child nodes; populate as needed for your board
|
||||
name device_type compatible Description
|
||||
---- ----------- ---------- -----------
|
||||
gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers
|
||||
gpt@<addr> gpt fsl,mpc5200-gpt-gpio General purpose
|
||||
timers in GPIO mode
|
||||
gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio
|
||||
controller
|
||||
gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio
|
||||
controller
|
||||
rtc@<addr> rtc mpc5200-rtc Real time clock
|
||||
mscan@<addr> mscan mpc5200-mscan CAN bus controller
|
||||
pci@<addr> pci mpc5200-pci PCI bridge
|
||||
serial@<addr> serial mpc5200-psc-uart PSC in serial mode
|
||||
i2s@<addr> sound mpc5200-psc-i2s PSC in i2s mode
|
||||
ac97@<addr> sound mpc5200-psc-ac97 PSC in ac97 mode
|
||||
spi@<addr> spi mpc5200-psc-spi PSC in spi mode
|
||||
irda@<addr> irda mpc5200-psc-irda PSC in IrDA mode
|
||||
spi@<addr> spi mpc5200-spi MPC5200 spi device
|
||||
ethernet@<addr> network mpc5200-fec MPC5200 ethernet device
|
||||
ata@<addr> ata mpc5200-ata IDE ATA interface
|
||||
i2c@<addr> i2c mpc5200-i2c I2C controller
|
||||
usb@<addr> usb-ohci-be mpc5200-ohci,ohci-be USB controller
|
||||
xlb@<addr> xlb mpc5200-xlb XLB arbitrator
|
||||
|
||||
Important child node properties
|
||||
name type description
|
||||
---- ---- -----------
|
||||
cell-index int When multiple devices are present, is the
|
||||
index of the device in the hardware (ie. There
|
||||
are 6 PSC on the 5200 numbered PSC1 to PSC6)
|
||||
PSC1 has 'cell-index = <0>'
|
||||
PSC4 has 'cell-index = <3>'
|
||||
|
||||
5) General Purpose Timer nodes (child of soc5200 node)
|
||||
On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board
|
||||
design supports the internal wdt, then the device node for GPT0 should
|
||||
include the empty property 'fsl,has-wdt'.
|
||||
|
||||
6) PSC nodes (child of soc5200 node)
|
||||
PSC nodes can define the optional 'port-number' property to force assignment
|
||||
order of serial ports. For example, PSC5 might be physically connected to
|
||||
the port labeled 'COM1' and PSC1 wired to 'COM1'. In this case, PSC5 would
|
||||
have a "port-number = <0>" property, and PSC1 would have "port-number = <1>".
|
||||
|
||||
PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in
|
||||
i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the
|
||||
compatible field.
|
||||
|
||||
7) GPIO controller nodes
|
||||
Each GPIO controller node should have the empty property gpio-controller and
|
||||
#gpio-cells set to 2. First cell is the GPIO number which is interpreted
|
||||
according to the bit numbers in the GPIO control registers. The second cell
|
||||
is for flags which is currently unsused.
|
||||
|
||||
8) FEC nodes
|
||||
The FEC node can specify one of the following properties to configure
|
||||
the MII link:
|
||||
"fsl,7-wire-mode" - An empty property that specifies the link uses 7-wire
|
||||
mode instead of MII
|
||||
"current-speed" - Specifies that the MII should be configured for a fixed
|
||||
speed. This property should contain two cells. The
|
||||
first cell specifies the speed in Mbps and the second
|
||||
should be '0' for half duplex and '1' for full duplex
|
||||
"phy-handle" - Contains a phandle to an Ethernet PHY.
|
||||
|
||||
IV - Extra Notes
|
||||
================
|
||||
|
||||
1. Interrupt mapping
|
||||
--------------------
|
||||
The mpc5200 pic driver splits hardware IRQ numbers into two levels. The
|
||||
split reflects the layout of the PIC hardware itself, which groups
|
||||
interrupts into one of three groups; CRIT, MAIN or PERP. Also, the
|
||||
Bestcomm dma engine has it's own set of interrupt sources which are
|
||||
cascaded off of peripheral interrupt 0, which the driver interprets as a
|
||||
fourth group, SDMA.
|
||||
|
||||
The interrupts property for device nodes using the mpc5200 pic consists
|
||||
of three cells; <L1 L2 level>
|
||||
|
||||
L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]
|
||||
L2 := interrupt number; directly mapped from the value in the
|
||||
"ICTL PerStat, MainStat, CritStat Encoded Register"
|
||||
level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]
|
||||
|
||||
2. Shared registers
|
||||
-------------------
|
||||
Some SoC devices share registers between them. ie. the i2c devices use
|
||||
a single clock control register, and almost all device are affected by
|
||||
the port_config register. Devices which need to manipulate shared regs
|
||||
should look to the parent SoC node. The soc node is responsible
|
||||
for arbitrating all shared register access.
|
|
@ -11,6 +11,15 @@
|
|||
* Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c
|
||||
* with minor modifications (Dave Forrest, drf5n@virginia.edu).
|
||||
*
|
||||
*
|
||||
* For some cameras you may need to pre-load libv4l to perform
|
||||
* the necessary decompression, e.g.:
|
||||
*
|
||||
* export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so
|
||||
* ./v4lgrab >image.ppm
|
||||
*
|
||||
* see http://hansdegoede.livejournal.com/3636.html for details.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
|
@ -24,7 +33,7 @@
|
|||
#include <linux/types.h>
|
||||
#include <linux/videodev.h>
|
||||
|
||||
#define FILE "/dev/video0"
|
||||
#define VIDEO_DEV "/dev/video0"
|
||||
|
||||
/* Stole this from tvset.c */
|
||||
|
||||
|
@ -90,7 +99,7 @@ int get_brightness_adj(unsigned char *image, long size, int *brightness) {
|
|||
|
||||
int main(int argc, char ** argv)
|
||||
{
|
||||
int fd = open(FILE, O_RDONLY), f;
|
||||
int fd = open(VIDEO_DEV, O_RDONLY), f;
|
||||
struct video_capability cap;
|
||||
struct video_window win;
|
||||
struct video_picture vpic;
|
||||
|
@ -100,13 +109,13 @@ int main(int argc, char ** argv)
|
|||
unsigned int i, src_depth;
|
||||
|
||||
if (fd < 0) {
|
||||
perror(FILE);
|
||||
perror(VIDEO_DEV);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (ioctl(fd, VIDIOCGCAP, &cap) < 0) {
|
||||
perror("VIDIOGCAP");
|
||||
fprintf(stderr, "(" FILE " not a video4linux device?)\n");
|
||||
fprintf(stderr, "(" VIDEO_DEV " not a video4linux device?)\n");
|
||||
close(fd);
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
@ -2836,8 +2836,6 @@ S: Maintained
|
|||
MAC80211
|
||||
P: Johannes Berg
|
||||
M: johannes@sipsolutions.net
|
||||
P: Michael Wu
|
||||
M: flamingice@sourmilk.net
|
||||
L: linux-wireless@vger.kernel.org
|
||||
W: http://linuxwireless.org/
|
||||
T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
#ifndef ASMARM_ARCH_MMC_H
|
||||
#define ASMARM_ARCH_MMC_H
|
||||
|
||||
#include <linux/mmc/host.h>
|
||||
|
||||
struct device;
|
||||
|
||||
/* board specific SDHC data, optional.
|
||||
* If not present, a writable card with 3,3V is assumed.
|
||||
*/
|
||||
struct imxmmc_platform_data {
|
||||
/* Return values for the get_ro callback should be:
|
||||
* 0 for a read/write card
|
||||
* 1 for a read-only card
|
||||
* -ENOSYS when not supported (equal to NULL callback)
|
||||
* or a negative errno value when something bad happened
|
||||
*/
|
||||
int (*get_ro)(struct device *);
|
||||
|
||||
/* board specific hook to (de)initialize the SD slot.
|
||||
* The board code can call 'handler' on a card detection
|
||||
* change giving data as argument.
|
||||
*/
|
||||
int (*init)(struct device *dev, irq_handler_t handler, void *data);
|
||||
void (*exit)(struct device *dev, void *data);
|
||||
|
||||
/* available voltages. If not given, assume
|
||||
* MMC_VDD_32_33 | MMC_VDD_33_34
|
||||
*/
|
||||
unsigned int ocr_avail;
|
||||
|
||||
/* adjust slot voltage */
|
||||
void (*setpower)(struct device *, unsigned int vdd);
|
||||
};
|
||||
|
||||
#endif
|
|
@ -351,7 +351,7 @@ config SGI_IP27
|
|||
select ARC64
|
||||
select BOOT_ELF64
|
||||
select DEFAULT_SGI_PARTITION
|
||||
select DMA_IP27
|
||||
select DMA_COHERENT
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
select HW_HAS_PCI
|
||||
select NR_CPUS_DEFAULT_64
|
||||
|
@ -761,9 +761,6 @@ config CFE
|
|||
config DMA_COHERENT
|
||||
bool
|
||||
|
||||
config DMA_IP27
|
||||
bool
|
||||
|
||||
config DMA_NONCOHERENT
|
||||
bool
|
||||
select DMA_NEED_PCI_MAP_STATE
|
||||
|
@ -1368,7 +1365,7 @@ config CPU_SUPPORTS_64BIT_KERNEL
|
|||
#
|
||||
config HARDWARE_WATCHPOINTS
|
||||
bool
|
||||
default y if CPU_MIPS32 || CPU_MIPS64
|
||||
default y if CPU_MIPSR1 || CPU_MIPSR2
|
||||
|
||||
menu "Kernel type"
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@ static struct clock_event_device au1x_rtcmatch2_clockdev = {
|
|||
.irq = AU1000_RTC_MATCH2_INT,
|
||||
.set_next_event = au1x_rtcmatch2_set_next_event,
|
||||
.set_mode = au1x_rtcmatch2_set_mode,
|
||||
.cpumask = CPU_MASK_ALL,
|
||||
.cpumask = CPU_MASK_ALL_PTR,
|
||||
};
|
||||
|
||||
static struct irqaction au1x_rtcmatch2_irqaction = {
|
||||
|
|
|
@ -15,13 +15,11 @@
|
|||
#include <linux/serial.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/string.h> /* for memset */
|
||||
#include <linux/serial.h>
|
||||
#include <linux/tty.h>
|
||||
#include <linux/time.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/serial_core.h>
|
||||
#include <linux/serial_8250.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#include <asm/processor.h>
|
||||
#include <asm/reboot.h>
|
||||
|
|
|
@ -53,7 +53,7 @@ CONFIG_GENERIC_TIME=y
|
|||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||
CONFIG_ARC=y
|
||||
CONFIG_DMA_IP27=y
|
||||
CONFIG_DMA_COHERENT=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_SYS_HAS_EARLY_PRINTK=y
|
||||
# CONFIG_NO_IOPORT is not set
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
static __inline__ void atomic_add(int i, atomic_t * v)
|
||||
{
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -62,7 +62,7 @@ static __inline__ void atomic_add(int i, atomic_t * v)
|
|||
: "=&r" (temp), "=m" (v->counter)
|
||||
: "Ir" (i), "m" (v->counter));
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -95,7 +95,7 @@ static __inline__ void atomic_add(int i, atomic_t * v)
|
|||
static __inline__ void atomic_sub(int i, atomic_t * v)
|
||||
{
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -107,7 +107,7 @@ static __inline__ void atomic_sub(int i, atomic_t * v)
|
|||
: "=&r" (temp), "=m" (v->counter)
|
||||
: "Ir" (i), "m" (v->counter));
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -135,12 +135,12 @@ static __inline__ void atomic_sub(int i, atomic_t * v)
|
|||
*/
|
||||
static __inline__ int atomic_add_return(int i, atomic_t * v)
|
||||
{
|
||||
unsigned long result;
|
||||
int result;
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -154,7 +154,7 @@ static __inline__ int atomic_add_return(int i, atomic_t * v)
|
|||
: "Ir" (i), "m" (v->counter)
|
||||
: "memory");
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -187,12 +187,12 @@ static __inline__ int atomic_add_return(int i, atomic_t * v)
|
|||
|
||||
static __inline__ int atomic_sub_return(int i, atomic_t * v)
|
||||
{
|
||||
unsigned long result;
|
||||
int result;
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -206,7 +206,7 @@ static __inline__ int atomic_sub_return(int i, atomic_t * v)
|
|||
: "Ir" (i), "m" (v->counter)
|
||||
: "memory");
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -247,12 +247,12 @@ static __inline__ int atomic_sub_return(int i, atomic_t * v)
|
|||
*/
|
||||
static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
|
||||
{
|
||||
unsigned long result;
|
||||
int result;
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -270,7 +270,7 @@ static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)
|
|||
: "Ir" (i), "m" (v->counter)
|
||||
: "memory");
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
int temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -429,7 +429,7 @@ static __inline__ int atomic_add_unless(atomic_t *v, int a, int u)
|
|||
static __inline__ void atomic64_add(long i, atomic64_t * v)
|
||||
{
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -441,7 +441,7 @@ static __inline__ void atomic64_add(long i, atomic64_t * v)
|
|||
: "=&r" (temp), "=m" (v->counter)
|
||||
: "Ir" (i), "m" (v->counter));
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -474,7 +474,7 @@ static __inline__ void atomic64_add(long i, atomic64_t * v)
|
|||
static __inline__ void atomic64_sub(long i, atomic64_t * v)
|
||||
{
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -486,7 +486,7 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
|
|||
: "=&r" (temp), "=m" (v->counter)
|
||||
: "Ir" (i), "m" (v->counter));
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -514,12 +514,12 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v)
|
|||
*/
|
||||
static __inline__ long atomic64_add_return(long i, atomic64_t * v)
|
||||
{
|
||||
unsigned long result;
|
||||
long result;
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -533,7 +533,7 @@ static __inline__ long atomic64_add_return(long i, atomic64_t * v)
|
|||
: "Ir" (i), "m" (v->counter)
|
||||
: "memory");
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -566,12 +566,12 @@ static __inline__ long atomic64_add_return(long i, atomic64_t * v)
|
|||
|
||||
static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
|
||||
{
|
||||
unsigned long result;
|
||||
long result;
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -585,7 +585,7 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
|
|||
: "Ir" (i), "m" (v->counter)
|
||||
: "memory");
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -626,12 +626,12 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v)
|
|||
*/
|
||||
static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
|
||||
{
|
||||
unsigned long result;
|
||||
long result;
|
||||
|
||||
smp_llsc_mb();
|
||||
|
||||
if (cpu_has_llsc && R10000_LLSC_WAR) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
@ -649,7 +649,7 @@ static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)
|
|||
: "Ir" (i), "m" (v->counter)
|
||||
: "memory");
|
||||
} else if (cpu_has_llsc) {
|
||||
unsigned long temp;
|
||||
long temp;
|
||||
|
||||
__asm__ __volatile__(
|
||||
" .set mips3 \n"
|
||||
|
|
|
@ -80,11 +80,8 @@ struct rb532_gpio_reg {
|
|||
/* Compact Flash GPIO pin */
|
||||
#define CF_GPIO_NUM 13
|
||||
|
||||
extern void set_434_reg(unsigned reg_offs, unsigned bit, unsigned len, unsigned val);
|
||||
extern unsigned get_434_reg(unsigned reg_offs);
|
||||
extern void set_latch_u5(unsigned char or_mask, unsigned char nand_mask);
|
||||
extern unsigned char get_latch_u5(void);
|
||||
extern void rb532_gpio_set_ilevel(int bit, unsigned gpio);
|
||||
extern void rb532_gpio_set_istat(int bit, unsigned gpio);
|
||||
extern void rb532_gpio_set_func(unsigned gpio);
|
||||
|
||||
#endif /* _RC32434_GPIO_H_ */
|
||||
|
|
|
@ -30,4 +30,7 @@
|
|||
#define ETH0_RX_OVR_IRQ (GROUP3_IRQ_BASE + 9)
|
||||
#define ETH0_TX_UND_IRQ (GROUP3_IRQ_BASE + 10)
|
||||
|
||||
#define GPIO_MAPPED_IRQ_BASE GROUP4_IRQ_BASE
|
||||
#define GPIO_MAPPED_IRQ_GROUP 4
|
||||
|
||||
#endif /* __ASM_RC32434_IRQ_H */
|
||||
|
|
|
@ -83,4 +83,7 @@ struct mpmc_device {
|
|||
void __iomem *base;
|
||||
};
|
||||
|
||||
extern void set_latch_u5(unsigned char or_mask, unsigned char nand_mask);
|
||||
extern unsigned char get_latch_u5(void);
|
||||
|
||||
#endif /* __ASM_RC32434_RB_H */
|
||||
|
|
|
@ -105,7 +105,7 @@ struct pt_watch_regs {
|
|||
enum pt_watch_style style;
|
||||
union {
|
||||
struct mips32_watch_regs mips32;
|
||||
struct mips32_watch_regs mips64;
|
||||
struct mips64_watch_regs mips64;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#ifndef _ASM_TERMIOS_H
|
||||
#define _ASM_TERMIOS_H
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <asm/termbits.h>
|
||||
#include <asm/ioctls.h>
|
||||
|
||||
|
@ -94,38 +95,81 @@ struct termio {
|
|||
/*
|
||||
* Translate a "termio" structure into a "termios". Ugh.
|
||||
*/
|
||||
#define user_termio_to_kernel_termios(termios, termio) \
|
||||
({ \
|
||||
unsigned short tmp; \
|
||||
get_user(tmp, &(termio)->c_iflag); \
|
||||
(termios)->c_iflag = (0xffff0000 & ((termios)->c_iflag)) | tmp; \
|
||||
get_user(tmp, &(termio)->c_oflag); \
|
||||
(termios)->c_oflag = (0xffff0000 & ((termios)->c_oflag)) | tmp; \
|
||||
get_user(tmp, &(termio)->c_cflag); \
|
||||
(termios)->c_cflag = (0xffff0000 & ((termios)->c_cflag)) | tmp; \
|
||||
get_user(tmp, &(termio)->c_lflag); \
|
||||
(termios)->c_lflag = (0xffff0000 & ((termios)->c_lflag)) | tmp; \
|
||||
get_user((termios)->c_line, &(termio)->c_line); \
|
||||
copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
|
||||
})
|
||||
static inline int user_termio_to_kernel_termios(struct ktermios *termios,
|
||||
struct termio __user *termio)
|
||||
{
|
||||
unsigned short iflag, oflag, cflag, lflag;
|
||||
unsigned int err;
|
||||
|
||||
if (!access_ok(VERIFY_READ, termio, sizeof(struct termio)))
|
||||
return -EFAULT;
|
||||
|
||||
err = __get_user(iflag, &termio->c_iflag);
|
||||
termios->c_iflag = (termios->c_iflag & 0xffff0000) | iflag;
|
||||
err |=__get_user(oflag, &termio->c_oflag);
|
||||
termios->c_oflag = (termios->c_oflag & 0xffff0000) | oflag;
|
||||
err |=__get_user(cflag, &termio->c_cflag);
|
||||
termios->c_cflag = (termios->c_cflag & 0xffff0000) | cflag;
|
||||
err |=__get_user(lflag, &termio->c_lflag);
|
||||
termios->c_lflag = (termios->c_lflag & 0xffff0000) | lflag;
|
||||
err |=__get_user(termios->c_line, &termio->c_line);
|
||||
if (err)
|
||||
return -EFAULT;
|
||||
|
||||
if (__copy_from_user(termios->c_cc, termio->c_cc, NCC))
|
||||
return -EFAULT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Translate a "termios" structure into a "termio". Ugh.
|
||||
*/
|
||||
#define kernel_termios_to_user_termio(termio, termios) \
|
||||
({ \
|
||||
put_user((termios)->c_iflag, &(termio)->c_iflag); \
|
||||
put_user((termios)->c_oflag, &(termio)->c_oflag); \
|
||||
put_user((termios)->c_cflag, &(termio)->c_cflag); \
|
||||
put_user((termios)->c_lflag, &(termio)->c_lflag); \
|
||||
put_user((termios)->c_line, &(termio)->c_line); \
|
||||
copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
|
||||
})
|
||||
static inline int kernel_termios_to_user_termio(struct termio __user *termio,
|
||||
struct ktermios *termios)
|
||||
{
|
||||
int err;
|
||||
|
||||
#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
|
||||
#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
|
||||
#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
|
||||
#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
|
||||
if (!access_ok(VERIFY_WRITE, termio, sizeof(struct termio)))
|
||||
return -EFAULT;
|
||||
|
||||
err = __put_user(termios->c_iflag, &termio->c_iflag);
|
||||
err |= __put_user(termios->c_oflag, &termio->c_oflag);
|
||||
err |= __put_user(termios->c_cflag, &termio->c_cflag);
|
||||
err |= __put_user(termios->c_lflag, &termio->c_lflag);
|
||||
err |= __put_user(termios->c_line, &termio->c_line);
|
||||
if (err)
|
||||
return -EFAULT;
|
||||
|
||||
if (__copy_to_user(termio->c_cc, termios->c_cc, NCC))
|
||||
return -EFAULT;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int user_termios_to_kernel_termios(struct ktermios __user *k,
|
||||
struct termios2 *u)
|
||||
{
|
||||
return copy_from_user(k, u, sizeof(struct termios2)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
static inline int kernel_termios_to_user_termios(struct termios2 __user *u,
|
||||
struct ktermios *k)
|
||||
{
|
||||
return copy_to_user(u, k, sizeof(struct termios2)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
static inline int user_termios_to_kernel_termios_1(struct ktermios *k,
|
||||
struct termios __user *u)
|
||||
{
|
||||
return copy_from_user(k, u, sizeof(struct termios)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
static inline int kernel_termios_to_user_termios_1(struct termios __user *u,
|
||||
struct ktermios *k)
|
||||
{
|
||||
return copy_to_user(u, k, sizeof(struct termios)) ? -EFAULT : 0;
|
||||
}
|
||||
|
||||
#endif /* defined(__KERNEL__) */
|
||||
|
||||
|
|
|
@ -541,5 +541,6 @@ void tx4939_irq_init(void);
|
|||
int tx4939_irq(void);
|
||||
void tx4939_mtd_init(int ch);
|
||||
void tx4939_ata_init(void);
|
||||
void tx4939_rtc_init(void);
|
||||
|
||||
#endif /* __ASM_TXX9_TX4939_H */
|
||||
|
|
|
@ -458,7 +458,11 @@ NESTED(nmi_handler, PT_SIZE, sp)
|
|||
BUILD_HANDLER fpe fpe fpe silent /* #15 */
|
||||
BUILD_HANDLER mdmx mdmx sti silent /* #22 */
|
||||
#ifdef CONFIG_HARDWARE_WATCHPOINTS
|
||||
BUILD_HANDLER watch watch sti silent /* #23 */
|
||||
/*
|
||||
* For watch, interrupts will be enabled after the watch
|
||||
* registers are read.
|
||||
*/
|
||||
BUILD_HANDLER watch watch cli silent /* #23 */
|
||||
#else
|
||||
BUILD_HANDLER watch watch sti verbose /* #23 */
|
||||
#endif
|
||||
|
|
|
@ -79,7 +79,8 @@ asmlinkage long mipsmt_sys_sched_setaffinity(pid_t pid, unsigned int len,
|
|||
|
||||
euid = current_euid();
|
||||
retval = -EPERM;
|
||||
if (euid != p->euid && euid != p->uid && !capable(CAP_SYS_NICE)) {
|
||||
if (euid != p->cred->euid && euid != p->cred->uid &&
|
||||
!capable(CAP_SYS_NICE)) {
|
||||
read_unlock(&tasklist_lock);
|
||||
goto out_unlock;
|
||||
}
|
||||
|
|
|
@ -944,6 +944,9 @@ asmlinkage void do_mdmx(struct pt_regs *regs)
|
|||
force_sig(SIGILL, current);
|
||||
}
|
||||
|
||||
/*
|
||||
* Called with interrupts disabled.
|
||||
*/
|
||||
asmlinkage void do_watch(struct pt_regs *regs)
|
||||
{
|
||||
u32 cause;
|
||||
|
@ -963,9 +966,12 @@ asmlinkage void do_watch(struct pt_regs *regs)
|
|||
*/
|
||||
if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) {
|
||||
mips_read_watch_registers();
|
||||
local_irq_enable();
|
||||
force_sig(SIGTRAP, current);
|
||||
} else
|
||||
} else {
|
||||
mips_clear_watch_registers();
|
||||
local_irq_enable();
|
||||
}
|
||||
}
|
||||
|
||||
asmlinkage void do_mcheck(struct pt_regs *regs)
|
||||
|
@ -1582,7 +1588,11 @@ void __init set_handler(unsigned long offset, void *addr, unsigned long size)
|
|||
static char panic_null_cerr[] __cpuinitdata =
|
||||
"Trying to set NULL cache error exception handler";
|
||||
|
||||
/* Install uncached CPU exception handler */
|
||||
/*
|
||||
* Install uncached CPU exception handler.
|
||||
* This is suitable only for the cache error exception which is the only
|
||||
* exception handler that is being run uncached.
|
||||
*/
|
||||
void __cpuinit set_uncached_handler(unsigned long offset, void *addr,
|
||||
unsigned long size)
|
||||
{
|
||||
|
@ -1593,7 +1603,7 @@ void __cpuinit set_uncached_handler(unsigned long offset, void *addr,
|
|||
unsigned long uncached_ebase = TO_UNCAC(ebase);
|
||||
#endif
|
||||
if (cpu_has_mips_r2)
|
||||
ebase += (read_c0_ebase() & 0x3ffff000);
|
||||
uncached_ebase += (read_c0_ebase() & 0x3ffff000);
|
||||
|
||||
if (!addr)
|
||||
panic(panic_null_cerr);
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
* end of memory on some systems. It's also a seriously bad idea on non
|
||||
* dma-coherent systems.
|
||||
*/
|
||||
#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)
|
||||
#ifdef CONFIG_DMA_NONCOHERENT
|
||||
#undef CONFIG_CPU_HAS_PREFETCH
|
||||
#endif
|
||||
#ifdef CONFIG_MIPS_MALTA
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
* end of memory on some systems. It's also a seriously bad idea on non
|
||||
* dma-coherent systems.
|
||||
*/
|
||||
#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)
|
||||
#ifdef CONFIG_DMA_NONCOHERENT
|
||||
#undef CONFIG_CPU_HAS_PREFETCH
|
||||
#endif
|
||||
#ifdef CONFIG_MIPS_MALTA
|
||||
|
|
|
@ -618,15 +618,35 @@ static void r4k_dma_cache_inv(unsigned long addr, unsigned long size)
|
|||
if (cpu_has_inclusive_pcaches) {
|
||||
if (size >= scache_size)
|
||||
r4k_blast_scache();
|
||||
else
|
||||
else {
|
||||
unsigned long lsize = cpu_scache_line_size();
|
||||
unsigned long almask = ~(lsize - 1);
|
||||
|
||||
/*
|
||||
* There is no clearly documented alignment requirement
|
||||
* for the cache instruction on MIPS processors and
|
||||
* some processors, among them the RM5200 and RM7000
|
||||
* QED processors will throw an address error for cache
|
||||
* hit ops with insufficient alignment. Solved by
|
||||
* aligning the address to cache line size.
|
||||
*/
|
||||
cache_op(Hit_Writeback_Inv_SD, addr & almask);
|
||||
cache_op(Hit_Writeback_Inv_SD,
|
||||
(addr + size - 1) & almask);
|
||||
blast_inv_scache_range(addr, addr + size);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (cpu_has_safe_index_cacheops && size >= dcache_size) {
|
||||
r4k_blast_dcache();
|
||||
} else {
|
||||
unsigned long lsize = cpu_dcache_line_size();
|
||||
unsigned long almask = ~(lsize - 1);
|
||||
|
||||
R4600_HIT_CACHEOP_WAR_IMPL;
|
||||
cache_op(Hit_Writeback_Inv_D, addr & almask);
|
||||
cache_op(Hit_Writeback_Inv_D, (addr + size - 1) & almask);
|
||||
blast_inv_dcache_range(addr, addr + size);
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,6 @@ good_area:
|
|||
goto bad_area;
|
||||
}
|
||||
|
||||
survive:
|
||||
/*
|
||||
* If for any reason at all we couldn't handle the fault,
|
||||
* make sure we exit gracefully rather than endlessly redo
|
||||
|
@ -167,21 +166,13 @@ no_context:
|
|||
field, regs->regs[31]);
|
||||
die("Oops", regs);
|
||||
|
||||
/*
|
||||
* We ran out of memory, or some other thing happened to us that made
|
||||
* us unable to handle the page fault gracefully.
|
||||
*/
|
||||
out_of_memory:
|
||||
up_read(&mm->mmap_sem);
|
||||
if (is_global_init(tsk)) {
|
||||
yield();
|
||||
down_read(&mm->mmap_sem);
|
||||
goto survive;
|
||||
}
|
||||
printk("VM: killing process %s\n", tsk->comm);
|
||||
if (user_mode(regs))
|
||||
do_group_exit(SIGKILL);
|
||||
goto no_context;
|
||||
/*
|
||||
* We ran out of memory, call the OOM killer, and return the userspace
|
||||
* (which will retry the fault, or kill us if we got oom-killed).
|
||||
*/
|
||||
pagefault_out_of_memory();
|
||||
return;
|
||||
|
||||
do_sigbus:
|
||||
up_read(&mm->mmap_sem);
|
||||
|
|
|
@ -205,6 +205,8 @@ static int __init rc32434_pcibridge_init(void)
|
|||
|
||||
static int __init rc32434_pci_init(void)
|
||||
{
|
||||
void __iomem *io_map_base;
|
||||
|
||||
pr_info("PCI: Initializing PCI\n");
|
||||
|
||||
ioport_resource.start = rc32434_res_pci_io1.start;
|
||||
|
@ -212,6 +214,15 @@ static int __init rc32434_pci_init(void)
|
|||
|
||||
rc32434_pcibridge_init();
|
||||
|
||||
io_map_base = ioremap(rc32434_res_pci_io1.start,
|
||||
rc32434_res_pci_io1.end - rc32434_res_pci_io1.start + 1);
|
||||
|
||||
if (!io_map_base)
|
||||
return -ENOMEM;
|
||||
|
||||
rc32434_controller.io_map_base =
|
||||
(unsigned long)io_map_base - rc32434_res_pci_io1.start;
|
||||
|
||||
register_pci_controller(&rc32434_controller);
|
||||
rc32434_sync();
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/gpio_keys.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/serial_8250.h>
|
||||
|
||||
#include <asm/bootinfo.h>
|
||||
|
||||
|
@ -39,6 +40,29 @@
|
|||
#define ETH0_RX_DMA_ADDR (DMA0_BASE_ADDR + 0 * DMA_CHAN_OFFSET)
|
||||
#define ETH0_TX_DMA_ADDR (DMA0_BASE_ADDR + 1 * DMA_CHAN_OFFSET)
|
||||
|
||||
extern unsigned int idt_cpu_freq;
|
||||
|
||||
static struct mpmc_device dev3;
|
||||
|
||||
void set_latch_u5(unsigned char or_mask, unsigned char nand_mask)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&dev3.lock, flags);
|
||||
|
||||
dev3.state = (dev3.state | or_mask) & ~nand_mask;
|
||||
writeb(dev3.state, dev3.base);
|
||||
|
||||
spin_unlock_irqrestore(&dev3.lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(set_latch_u5);
|
||||
|
||||
unsigned char get_latch_u5(void)
|
||||
{
|
||||
return dev3.state;
|
||||
}
|
||||
EXPORT_SYMBOL(get_latch_u5);
|
||||
|
||||
static struct resource korina_dev0_res[] = {
|
||||
{
|
||||
.name = "korina_regs",
|
||||
|
@ -86,7 +110,7 @@ static struct korina_device korina_dev0_data = {
|
|||
static struct platform_device korina_dev0 = {
|
||||
.id = -1,
|
||||
.name = "korina",
|
||||
.dev.platform_data = &korina_dev0_data,
|
||||
.dev.driver_data = &korina_dev0_data,
|
||||
.resource = korina_dev0_res,
|
||||
.num_resources = ARRAY_SIZE(korina_dev0_res),
|
||||
};
|
||||
|
@ -214,12 +238,32 @@ static struct platform_device rb532_wdt = {
|
|||
.num_resources = ARRAY_SIZE(rb532_wdt_res),
|
||||
};
|
||||
|
||||
static struct plat_serial8250_port rb532_uart_res[] = {
|
||||
{
|
||||
.membase = (char *)KSEG1ADDR(REGBASE + UART0BASE),
|
||||
.irq = UART0_IRQ,
|
||||
.regshift = 2,
|
||||
.iotype = UPIO_MEM,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
},
|
||||
{
|
||||
.flags = 0,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device rb532_uart = {
|
||||
.name = "serial8250",
|
||||
.id = PLAT8250_DEV_PLATFORM,
|
||||
.dev.platform_data = &rb532_uart_res,
|
||||
};
|
||||
|
||||
static struct platform_device *rb532_devs[] = {
|
||||
&korina_dev0,
|
||||
&nand_slot0,
|
||||
&cf_slot0,
|
||||
&rb532_led,
|
||||
&rb532_button,
|
||||
&rb532_uart,
|
||||
&rb532_wdt
|
||||
};
|
||||
|
||||
|
@ -291,9 +335,20 @@ static int __init plat_setup_devices(void)
|
|||
nand_slot0_res[0].start = readl(IDT434_REG_BASE + DEV2BASE);
|
||||
nand_slot0_res[0].end = nand_slot0_res[0].start + 0x1000;
|
||||
|
||||
/* Read and map device controller 3 */
|
||||
dev3.base = ioremap_nocache(readl(IDT434_REG_BASE + DEV3BASE), 1);
|
||||
|
||||
if (!dev3.base) {
|
||||
printk(KERN_ERR "rb532: cannot remap device controller 3\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
/* Initialise the NAND device */
|
||||
rb532_nand_setup();
|
||||
|
||||
/* set the uart clock to the current cpu frequency */
|
||||
rb532_uart_res[0].uartclk = idt_cpu_freq;
|
||||
|
||||
return platform_add_devices(rb532_devs, ARRAY_SIZE(rb532_devs));
|
||||
}
|
||||
|
||||
|
|
|
@ -41,8 +41,6 @@ struct rb532_gpio_chip {
|
|||
void __iomem *regbase;
|
||||
};
|
||||
|
||||
struct mpmc_device dev3;
|
||||
|
||||
static struct resource rb532_gpio_reg0_res[] = {
|
||||
{
|
||||
.name = "gpio_reg0",
|
||||
|
@ -52,61 +50,6 @@ static struct resource rb532_gpio_reg0_res[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static struct resource rb532_dev3_ctl_res[] = {
|
||||
{
|
||||
.name = "dev3_ctl",
|
||||
.start = REGBASE + DEV3BASE,
|
||||
.end = REGBASE + DEV3BASE + sizeof(struct dev_reg) - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
void set_434_reg(unsigned reg_offs, unsigned bit, unsigned len, unsigned val)
|
||||
{
|
||||
unsigned long flags;
|
||||
unsigned data;
|
||||
unsigned i = 0;
|
||||
|
||||
spin_lock_irqsave(&dev3.lock, flags);
|
||||
|
||||
data = readl(IDT434_REG_BASE + reg_offs);
|
||||
for (i = 0; i != len; ++i) {
|
||||
if (val & (1 << i))
|
||||
data |= (1 << (i + bit));
|
||||
else
|
||||
data &= ~(1 << (i + bit));
|
||||
}
|
||||
writel(data, (IDT434_REG_BASE + reg_offs));
|
||||
|
||||
spin_unlock_irqrestore(&dev3.lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(set_434_reg);
|
||||
|
||||
unsigned get_434_reg(unsigned reg_offs)
|
||||
{
|
||||
return readl(IDT434_REG_BASE + reg_offs);
|
||||
}
|
||||
EXPORT_SYMBOL(get_434_reg);
|
||||
|
||||
void set_latch_u5(unsigned char or_mask, unsigned char nand_mask)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&dev3.lock, flags);
|
||||
|
||||
dev3.state = (dev3.state | or_mask) & ~nand_mask;
|
||||
writel(dev3.state, &dev3.base);
|
||||
|
||||
spin_unlock_irqrestore(&dev3.lock, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(set_latch_u5);
|
||||
|
||||
unsigned char get_latch_u5(void)
|
||||
{
|
||||
return dev3.state;
|
||||
}
|
||||
EXPORT_SYMBOL(get_latch_u5);
|
||||
|
||||
/* rb532_set_bit - sanely set a bit
|
||||
*
|
||||
* bitval: new value for the bit
|
||||
|
@ -119,13 +62,11 @@ static inline void rb532_set_bit(unsigned bitval,
|
|||
unsigned long flags;
|
||||
u32 val;
|
||||
|
||||
bitval = !!bitval; /* map parameter to {0,1} */
|
||||
|
||||
local_irq_save(flags);
|
||||
|
||||
val = readl(ioaddr);
|
||||
val &= ~( ~bitval << offset ); /* unset bit if bitval == 0 */
|
||||
val |= ( bitval << offset ); /* set bit if bitval == 1 */
|
||||
val &= ~(!bitval << offset); /* unset bit if bitval == 0 */
|
||||
val |= (!!bitval << offset); /* set bit if bitval == 1 */
|
||||
writel(val, ioaddr);
|
||||
|
||||
local_irq_restore(flags);
|
||||
|
@ -171,8 +112,8 @@ static int rb532_gpio_direction_input(struct gpio_chip *chip, unsigned offset)
|
|||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
|
||||
if (rb532_get_bit(offset, gpch->regbase + GPIOFUNC))
|
||||
return 1; /* alternate function, GPIOCFG is ignored */
|
||||
/* disable alternate function in case it's set */
|
||||
rb532_set_bit(0, offset, gpch->regbase + GPIOFUNC);
|
||||
|
||||
rb532_set_bit(0, offset, gpch->regbase + GPIOCFG);
|
||||
return 0;
|
||||
|
@ -188,8 +129,8 @@ static int rb532_gpio_direction_output(struct gpio_chip *chip,
|
|||
|
||||
gpch = container_of(chip, struct rb532_gpio_chip, chip);
|
||||
|
||||
if (rb532_get_bit(offset, gpch->regbase + GPIOFUNC))
|
||||
return 1; /* alternate function, GPIOCFG is ignored */
|
||||
/* disable alternate function in case it's set */
|
||||
rb532_set_bit(0, offset, gpch->regbase + GPIOFUNC);
|
||||
|
||||
/* set the initial output value */
|
||||
rb532_set_bit(value, offset, gpch->regbase + GPIOD);
|
||||
|
@ -233,10 +174,11 @@ EXPORT_SYMBOL(rb532_gpio_set_istat);
|
|||
/*
|
||||
* Configure GPIO alternate function
|
||||
*/
|
||||
static void rb532_gpio_set_func(int bit, unsigned gpio)
|
||||
void rb532_gpio_set_func(unsigned gpio)
|
||||
{
|
||||
rb532_set_bit(bit, gpio, rb532_gpio_chip->regbase + GPIOFUNC);
|
||||
rb532_set_bit(1, gpio, rb532_gpio_chip->regbase + GPIOFUNC);
|
||||
}
|
||||
EXPORT_SYMBOL(rb532_gpio_set_func);
|
||||
|
||||
int __init rb532_gpio_init(void)
|
||||
{
|
||||
|
@ -253,20 +195,6 @@ int __init rb532_gpio_init(void)
|
|||
/* Register our GPIO chip */
|
||||
gpiochip_add(&rb532_gpio_chip->chip);
|
||||
|
||||
r = rb532_dev3_ctl_res;
|
||||
dev3.base = ioremap_nocache(r->start, r->end - r->start);
|
||||
|
||||
if (!dev3.base) {
|
||||
printk(KERN_ERR "rb532: cannot remap device controller 3\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
/* configure CF_GPIO_NUM as CFRDY IRQ source */
|
||||
rb532_gpio_set_func(0, CF_GPIO_NUM);
|
||||
rb532_gpio_direction_input(&rb532_gpio_chip->chip, CF_GPIO_NUM);
|
||||
rb532_gpio_set_ilevel(1, CF_GPIO_NUM);
|
||||
rb532_gpio_set_istat(0, CF_GPIO_NUM);
|
||||
|
||||
return 0;
|
||||
}
|
||||
arch_initcall(rb532_gpio_init);
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#include <asm/system.h>
|
||||
|
||||
#include <asm/mach-rc32434/irq.h>
|
||||
#include <asm/mach-rc32434/gpio.h>
|
||||
|
||||
struct intr_group {
|
||||
u32 mask; /* mask of valid bits in pending/mask registers */
|
||||
|
@ -150,6 +151,9 @@ static void rb532_disable_irq(unsigned int irq_nr)
|
|||
mask |= intr_bit;
|
||||
WRITE_MASK(addr, mask);
|
||||
|
||||
if (group == GPIO_MAPPED_IRQ_GROUP)
|
||||
rb532_gpio_set_istat(0, irq_nr - GPIO_MAPPED_IRQ_BASE);
|
||||
|
||||
/*
|
||||
* if there are no more interrupts enabled in this
|
||||
* group, disable corresponding IP
|
||||
|
@ -165,12 +169,35 @@ static void rb532_mask_and_ack_irq(unsigned int irq_nr)
|
|||
ack_local_irq(group_to_ip(irq_to_group(irq_nr)));
|
||||
}
|
||||
|
||||
static int rb532_set_type(unsigned int irq_nr, unsigned type)
|
||||
{
|
||||
int gpio = irq_nr - GPIO_MAPPED_IRQ_BASE;
|
||||
int group = irq_to_group(irq_nr);
|
||||
|
||||
if (group != GPIO_MAPPED_IRQ_GROUP)
|
||||
return (type == IRQ_TYPE_LEVEL_HIGH) ? 0 : -EINVAL;
|
||||
|
||||
switch (type) {
|
||||
case IRQ_TYPE_LEVEL_HIGH:
|
||||
rb532_gpio_set_ilevel(1, gpio);
|
||||
break;
|
||||
case IRQ_TYPE_LEVEL_LOW:
|
||||
rb532_gpio_set_ilevel(0, gpio);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct irq_chip rc32434_irq_type = {
|
||||
.name = "RB532",
|
||||
.ack = rb532_disable_irq,
|
||||
.mask = rb532_disable_irq,
|
||||
.mask_ack = rb532_mask_and_ack_irq,
|
||||
.unmask = rb532_enable_irq,
|
||||
.set_type = rb532_set_type,
|
||||
};
|
||||
|
||||
void __init arch_init_irq(void)
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
extern unsigned int idt_cpu_freq;
|
||||
|
||||
static struct uart_port rb532_uart = {
|
||||
.type = PORT_16550A,
|
||||
.flags = UPF_BOOT_AUTOCONF,
|
||||
.line = 0,
|
||||
.irq = UART0_IRQ,
|
||||
.iotype = UPIO_MEM,
|
||||
|
|
|
@ -435,6 +435,28 @@ void __init tx4939_ata_init(void)
|
|||
platform_device_register(&ata1_dev);
|
||||
}
|
||||
|
||||
void __init tx4939_rtc_init(void)
|
||||
{
|
||||
static struct resource res[] = {
|
||||
{
|
||||
.start = TX4939_RTC_REG & 0xfffffffffULL,
|
||||
.end = (TX4939_RTC_REG & 0xfffffffffULL) + 0x100 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = TXX9_IRQ_BASE + TX4939_IR_RTC,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
static struct platform_device rtc_dev = {
|
||||
.name = "tx4939rtc",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(res),
|
||||
.resource = res,
|
||||
};
|
||||
|
||||
platform_device_register(&rtc_dev);
|
||||
}
|
||||
|
||||
static void __init tx4939_stop_unused_modules(void)
|
||||
{
|
||||
__u64 pcfg, rst = 0, ckd = 0;
|
||||
|
|
|
@ -336,6 +336,7 @@ static void __init rbtx4939_device_init(void)
|
|||
rbtx4939_led_setup();
|
||||
tx4939_wdt_init();
|
||||
tx4939_ata_init();
|
||||
tx4939_rtc_init();
|
||||
}
|
||||
|
||||
static void __init rbtx4939_setup(void)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.28-rc4
|
||||
# Thu Nov 13 02:12:40 2008
|
||||
# Linux kernel version: 2.6.29-rc2
|
||||
# Mon Jan 26 21:41:58 2009
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
|
@ -43,7 +43,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_OF=y
|
||||
|
@ -71,14 +71,23 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
|
@ -110,7 +119,6 @@ CONFIG_SLUB_DEBUG=y
|
|||
CONFIG_SLUB=y
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_IOREMAP_PROT=y
|
||||
|
@ -121,13 +129,11 @@ CONFIG_HAVE_CLK=y
|
|||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_MODULES is not set
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
|
@ -143,7 +149,6 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
|
@ -182,9 +187,8 @@ CONFIG_PPC_MPC5200_SIMPLE=y
|
|||
# CONFIG_TAU is not set
|
||||
# CONFIG_FSL_ULI1575 is not set
|
||||
CONFIG_PPC_BESTCOMM=y
|
||||
# CONFIG_PPC_BESTCOMM_ATA is not set
|
||||
CONFIG_PPC_BESTCOMM_FEC=y
|
||||
# CONFIG_PPC_BESTCOMM_GEN_BD is not set
|
||||
# CONFIG_SIMPLE_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
@ -211,6 +215,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
|||
CONFIG_ARCH_HAS_WALK_MEMORY=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
|
@ -222,12 +227,14 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
|||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_PPC_4K_PAGES=y
|
||||
# CONFIG_PPC_16K_PAGES is not set
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
@ -268,6 +275,7 @@ CONFIG_NET=y
|
|||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
|
@ -324,6 +332,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
|
@ -336,6 +345,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
|
@ -426,6 +436,12 @@ CONFIG_MTD_PHYSMAP_OF=y
|
|||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
# CONFIG_MTD_QINFO_PROBE is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
|
@ -514,6 +530,9 @@ CONFIG_LXT_PHY=y
|
|||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_REALTEK_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_STE10XP is not set
|
||||
# CONFIG_LSI_ET1011C_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
|
@ -538,6 +557,10 @@ CONFIG_FEC_MPC52xx_MDIO=y
|
|||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
|
@ -588,8 +611,10 @@ CONFIG_SERIAL_MPC52xx=y
|
|||
CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
||||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_HVC_UDBG is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
|
@ -629,8 +654,6 @@ CONFIG_I2C_MPC=y
|
|||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
# CONFIG_EEPROM_LEGACY is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
|
@ -675,10 +698,12 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
|
@ -736,6 +761,7 @@ CONFIG_USB_DEVICEFS=y
|
|||
# USB Host Controller Drivers
|
||||
#
|
||||
# CONFIG_USB_C67X00_HCD is not set
|
||||
# CONFIG_USB_OXU210HP_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
# CONFIG_USB_ISP1760_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
|
@ -760,18 +786,17 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
|
|||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||
#
|
||||
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
# see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
|
@ -817,6 +842,10 @@ CONFIG_USB_STORAGE=y
|
|||
# CONFIG_USB_ISIGHTFW is not set
|
||||
# CONFIG_USB_VST is not set
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# OTG and related infrastructure
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
@ -826,7 +855,6 @@ CONFIG_USB_STORAGE=y
|
|||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
CONFIG_STAGING_EXCLUDE_BUILD=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -847,6 +875,7 @@ CONFIG_FS_MBCACHE=y
|
|||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
|
@ -883,10 +912,7 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
CONFIG_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
|
@ -906,6 +932,7 @@ CONFIG_JFFS2_ZLIB=y
|
|||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
|
@ -1002,6 +1029,7 @@ CONFIG_NLS_ISO8859_1=y
|
|||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
|
@ -1053,6 +1081,7 @@ CONFIG_SCHED_DEBUG=y
|
|||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
|
@ -1061,6 +1090,8 @@ CONFIG_SCHED_DEBUG=y
|
|||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
|
@ -1069,11 +1100,13 @@ CONFIG_HAVE_FUNCTION_TRACER=y
|
|||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_TRACE_BRANCH_PROFILING is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
CONFIG_PRINT_STACK_DEPTH=64
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
@ -1100,11 +1133,15 @@ CONFIG_CRYPTO=y
|
|||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_ALGAPI2=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_BLKCIPHER2=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.28-rc4
|
||||
# Thu Nov 13 02:10:16 2008
|
||||
# Linux kernel version: 2.6.29-rc2
|
||||
# Mon Jan 26 21:41:14 2009
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
|
@ -43,7 +43,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_OF=y
|
||||
|
@ -72,14 +72,23 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
# CONFIG_FAIR_GROUP_SCHED is not set
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
|
@ -112,7 +121,6 @@ CONFIG_SLUB_DEBUG=y
|
|||
CONFIG_SLUB=y
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_IOREMAP_PROT=y
|
||||
|
@ -123,7 +131,6 @@ CONFIG_HAVE_CLK=y
|
|||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_FORCE_LOAD is not set
|
||||
|
@ -131,11 +138,9 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
|
@ -151,7 +156,6 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
CONFIG_FREEZER=y
|
||||
|
||||
#
|
||||
|
@ -192,7 +196,7 @@ CONFIG_PPC_LITE5200=y
|
|||
CONFIG_PPC_BESTCOMM=y
|
||||
CONFIG_PPC_BESTCOMM_ATA=y
|
||||
CONFIG_PPC_BESTCOMM_FEC=y
|
||||
CONFIG_PPC_BESTCOMM_GEN_BD=y
|
||||
# CONFIG_SIMPLE_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
@ -220,6 +224,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
|||
CONFIG_ARCH_HAS_WALK_MEMORY=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
|
@ -231,12 +236,14 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
|||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_PPC_4K_PAGES=y
|
||||
# CONFIG_PPC_16K_PAGES is not set
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
@ -264,6 +271,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
|
|||
# CONFIG_PCI_MSI is not set
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
# CONFIG_PCI_STUB is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
# CONFIG_HAS_RAPIDIO is not set
|
||||
|
@ -286,6 +294,7 @@ CONFIG_NET=y
|
|||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
|
@ -342,6 +351,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
|
@ -354,6 +364,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
|
@ -396,13 +407,19 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
|
|||
# CONFIG_BLK_DEV_HD is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_PHANTOM is not set
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
# CONFIG_ICS932S401 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_HP_ILO is not set
|
||||
# CONFIG_C2PORT is not set
|
||||
|
||||
#
|
||||
# EEPROM support
|
||||
#
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
# CONFIG_EEPROM_LEGACY is not set
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
|
@ -445,6 +462,7 @@ CONFIG_SCSI_WAIT_SCAN=m
|
|||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_SCSI_CXGB3_ISCSI is not set
|
||||
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
|
||||
# CONFIG_SCSI_3W_9XXX is not set
|
||||
# CONFIG_SCSI_ACARD is not set
|
||||
|
@ -461,6 +479,8 @@ CONFIG_SCSI_LOWLEVEL=y
|
|||
# CONFIG_MEGARAID_SAS is not set
|
||||
# CONFIG_SCSI_HPTIOP is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_FCOE is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
|
@ -580,6 +600,9 @@ CONFIG_LXT_PHY=y
|
|||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_REALTEK_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_STE10XP is not set
|
||||
# CONFIG_LSI_ET1011C_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
|
@ -626,6 +649,7 @@ CONFIG_NETDEV_1000=y
|
|||
# CONFIG_JME is not set
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_CHELSIO_T1 is not set
|
||||
CONFIG_CHELSIO_T3_DEPENDS=y
|
||||
# CONFIG_CHELSIO_T3 is not set
|
||||
# CONFIG_ENIC is not set
|
||||
# CONFIG_IXGBE is not set
|
||||
|
@ -648,6 +672,10 @@ CONFIG_NETDEV_10000=y
|
|||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_FDDI is not set
|
||||
# CONFIG_HIPPI is not set
|
||||
|
@ -695,8 +723,10 @@ CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
|||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_HVC_UDBG is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
|
@ -762,8 +792,6 @@ CONFIG_I2C_MPC=y
|
|||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
# CONFIG_EEPROM_LEGACY is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
|
@ -796,10 +824,12 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
|
@ -846,9 +876,13 @@ CONFIG_USB_ARCH_HAS_EHCI=y
|
|||
#
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# OTG and related infrastructure
|
||||
#
|
||||
# CONFIG_UWB is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
|
@ -860,7 +894,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
|
|||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
CONFIG_STAGING_EXCLUDE_BUILD=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -881,6 +914,7 @@ CONFIG_FS_MBCACHE=y
|
|||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
|
@ -914,10 +948,7 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
CONFIG_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
|
@ -926,6 +957,7 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
|
@ -967,6 +999,7 @@ CONFIG_MSDOS_PARTITION=y
|
|||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
|
@ -1016,6 +1049,7 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
|
@ -1024,6 +1058,8 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
|
@ -1032,11 +1068,13 @@ CONFIG_HAVE_FUNCTION_TRACER=y
|
|||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_TRACE_BRANCH_PROFILING is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
CONFIG_PRINT_STACK_DEPTH=64
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
@ -1063,11 +1101,15 @@ CONFIG_CRYPTO=y
|
|||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_ALGAPI2=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_BLKCIPHER2=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.28-rc4
|
||||
# Thu Nov 13 02:11:02 2008
|
||||
# Linux kernel version: 2.6.29-rc2
|
||||
# Mon Jan 26 21:42:29 2009
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
|
@ -43,7 +43,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_OF=y
|
||||
|
@ -71,14 +71,23 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
|
@ -110,7 +119,6 @@ CONFIG_SLUB_DEBUG=y
|
|||
CONFIG_SLUB=y
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_IOREMAP_PROT=y
|
||||
|
@ -121,13 +129,11 @@ CONFIG_HAVE_CLK=y
|
|||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_MODULES is not set
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
|
@ -143,7 +149,6 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
|
@ -182,9 +187,9 @@ CONFIG_PPC_MPC5200_SIMPLE=y
|
|||
# CONFIG_TAU is not set
|
||||
# CONFIG_FSL_ULI1575 is not set
|
||||
CONFIG_PPC_BESTCOMM=y
|
||||
# CONFIG_PPC_BESTCOMM_ATA is not set
|
||||
CONFIG_PPC_BESTCOMM_ATA=y
|
||||
CONFIG_PPC_BESTCOMM_FEC=y
|
||||
# CONFIG_PPC_BESTCOMM_GEN_BD is not set
|
||||
# CONFIG_SIMPLE_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
@ -211,6 +216,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
|||
CONFIG_ARCH_HAS_WALK_MEMORY=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
|
@ -222,12 +228,14 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
|||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_PPC_4K_PAGES=y
|
||||
# CONFIG_PPC_16K_PAGES is not set
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
@ -268,6 +276,7 @@ CONFIG_NET=y
|
|||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
|
@ -324,6 +333,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
|
@ -336,6 +346,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
|
@ -426,6 +437,12 @@ CONFIG_MTD_ROM=y
|
|||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
# CONFIG_MTD_QINFO_PROBE is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
|
@ -447,10 +464,16 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
|
|||
# CONFIG_ATA_OVER_ETH is not set
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_ICS932S401 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_C2PORT is not set
|
||||
|
||||
#
|
||||
# EEPROM support
|
||||
#
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
|
@ -492,6 +515,7 @@ CONFIG_CHR_DEV_SG=y
|
|||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
CONFIG_ATA=y
|
||||
|
@ -525,6 +549,9 @@ CONFIG_SMSC_PHY=y
|
|||
CONFIG_BROADCOM_PHY=y
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
# CONFIG_REALTEK_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_STE10XP is not set
|
||||
# CONFIG_LSI_ET1011C_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
CONFIG_MDIO_BITBANG=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
|
@ -548,6 +575,10 @@ CONFIG_FEC_MPC52xx_MDIO=y
|
|||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
|
@ -590,8 +621,10 @@ CONFIG_SERIAL_MPC52xx=y
|
|||
CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
||||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_HVC_UDBG is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
|
@ -629,8 +662,6 @@ CONFIG_I2C_MPC=y
|
|||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
CONFIG_EEPROM_LEGACY=y
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
|
@ -659,6 +690,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_ADT7462 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ADT7475 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
|
@ -678,6 +710,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_LM93 is not set
|
||||
# CONFIG_SENSORS_LTC4245 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_MAX6650 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
|
@ -721,10 +754,12 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
|
@ -835,7 +870,6 @@ CONFIG_RTC_DRV_DS1307=y
|
|||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
CONFIG_STAGING_EXCLUDE_BUILD=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -856,6 +890,7 @@ CONFIG_FS_MBCACHE=y
|
|||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
|
@ -892,10 +927,7 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
CONFIG_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
|
@ -915,6 +947,7 @@ CONFIG_JFFS2_ZLIB=y
|
|||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
|
@ -1011,6 +1044,7 @@ CONFIG_NLS_ISO8859_1=y
|
|||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
|
@ -1062,6 +1096,7 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
|
@ -1070,6 +1105,8 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
|
@ -1078,11 +1115,13 @@ CONFIG_HAVE_FUNCTION_TRACER=y
|
|||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_TRACE_BRANCH_PROFILING is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
CONFIG_PRINT_STACK_DEPTH=64
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
@ -1109,11 +1148,15 @@ CONFIG_CRYPTO=y
|
|||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_ALGAPI2=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_BLKCIPHER2=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.28-rc4
|
||||
# Thu Nov 13 02:13:16 2008
|
||||
# Linux kernel version: 2.6.29-rc2
|
||||
# Mon Jan 26 21:41:33 2009
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
|
@ -43,7 +43,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_OF=y
|
||||
|
@ -72,15 +72,24 @@ CONFIG_POSIX_MQUEUE=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
|
@ -112,7 +121,6 @@ CONFIG_SLAB=y
|
|||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
|
@ -124,7 +132,6 @@ CONFIG_HAVE_CLK=y
|
|||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_FORCE_LOAD is not set
|
||||
|
@ -132,11 +139,9 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
|
@ -152,7 +157,6 @@ CONFIG_IOSCHED_NOOP=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
CONFIG_DEFAULT_NOOP=y
|
||||
CONFIG_DEFAULT_IOSCHED="noop"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
|
@ -191,9 +195,9 @@ CONFIG_PPC_MPC5200_SIMPLE=y
|
|||
# CONFIG_TAU is not set
|
||||
# CONFIG_FSL_ULI1575 is not set
|
||||
CONFIG_PPC_BESTCOMM=y
|
||||
CONFIG_PPC_BESTCOMM_ATA=y
|
||||
CONFIG_PPC_BESTCOMM_ATA=m
|
||||
CONFIG_PPC_BESTCOMM_FEC=y
|
||||
CONFIG_PPC_BESTCOMM_GEN_BD=y
|
||||
# CONFIG_SIMPLE_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
@ -212,7 +216,6 @@ CONFIG_SCHED_HRTICK=y
|
|||
# CONFIG_PREEMPT_NONE is not set
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
CONFIG_PREEMPT=y
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
|
@ -222,6 +225,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
|||
CONFIG_ARCH_HAS_WALK_MEMORY=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
|
@ -233,12 +237,14 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
|||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_PPC_4K_PAGES=y
|
||||
# CONFIG_PPC_16K_PAGES is not set
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
@ -261,6 +267,7 @@ CONFIG_PCI_SYSCALL=y
|
|||
CONFIG_ARCH_SUPPORTS_MSI=y
|
||||
# CONFIG_PCI_MSI is not set
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_STUB is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
# CONFIG_HAS_RAPIDIO is not set
|
||||
|
@ -283,6 +290,7 @@ CONFIG_NET=y
|
|||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
|
@ -333,6 +341,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
|
@ -345,6 +354,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
|
@ -365,6 +375,7 @@ CONFIG_MTD=y
|
|||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_TESTS is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_OF_PARTS is not set
|
||||
|
@ -413,9 +424,7 @@ CONFIG_MTD_CFI_UTIL=y
|
|||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_START=0x0
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x0
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=1
|
||||
# CONFIG_MTD_PHYSMAP_COMPAT is not set
|
||||
# CONFIG_MTD_PHYSMAP_OF is not set
|
||||
# CONFIG_MTD_INTEL_VR_NOR is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
@ -438,6 +447,12 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=1
|
|||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
# CONFIG_MTD_QINFO_PROBE is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
|
@ -587,6 +602,9 @@ CONFIG_PHYLIB=y
|
|||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_REALTEK_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_STE10XP is not set
|
||||
# CONFIG_LSI_ET1011C_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
|
@ -620,6 +638,10 @@ CONFIG_FEC_MPC52xx_MDIO=y
|
|||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
|
@ -675,7 +697,9 @@ CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
|||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
# CONFIG_HVC_UDBG is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_NVRAM is not set
|
||||
|
@ -740,8 +764,6 @@ CONFIG_I2C_MPC=y
|
|||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
CONFIG_EEPROM_LEGACY=m
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
|
@ -774,10 +796,12 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
|
@ -837,6 +861,7 @@ CONFIG_USB_DEVICEFS=y
|
|||
#
|
||||
# CONFIG_USB_C67X00_HCD is not set
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
# CONFIG_USB_OXU210HP_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
# CONFIG_USB_ISP1760_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=m
|
||||
|
@ -864,18 +889,17 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
|
|||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||
#
|
||||
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
# see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=m
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
|
@ -921,6 +945,10 @@ CONFIG_USB_STORAGE=m
|
|||
# CONFIG_USB_ISIGHTFW is not set
|
||||
# CONFIG_USB_VST is not set
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# OTG and related infrastructure
|
||||
#
|
||||
# CONFIG_UWB is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
|
@ -983,7 +1011,6 @@ CONFIG_RTC_DRV_PCF8563=m
|
|||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
CONFIG_STAGING_EXCLUDE_BUILD=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -1004,6 +1031,7 @@ CONFIG_FS_MBCACHE=m
|
|||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
|
@ -1039,10 +1067,7 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
CONFIG_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
|
@ -1062,6 +1087,7 @@ CONFIG_JFFS2_ZLIB=y
|
|||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
|
@ -1141,6 +1167,7 @@ CONFIG_NLS_ISO8859_1=y
|
|||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
|
@ -1173,6 +1200,8 @@ CONFIG_FRAME_WARN=1024
|
|||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
|
@ -1180,6 +1209,7 @@ CONFIG_HAVE_FUNCTION_TRACER=y
|
|||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
CONFIG_PRINT_STACK_DEPTH=64
|
||||
# CONFIG_IRQSTACKS is not set
|
||||
# CONFIG_BOOTX_TEXT is not set
|
||||
# CONFIG_PPC_EARLY_DEBUG is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.28-rc4
|
||||
# Thu Nov 13 02:09:30 2008
|
||||
# Linux kernel version: 2.6.29-rc2
|
||||
# Mon Jan 26 21:42:58 2009
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
|
@ -43,7 +43,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_OF=y
|
||||
|
@ -71,14 +71,23 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
|
@ -110,7 +119,6 @@ CONFIG_SLUB_DEBUG=y
|
|||
CONFIG_SLUB=y
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_IOREMAP_PROT=y
|
||||
|
@ -121,7 +129,6 @@ CONFIG_HAVE_CLK=y
|
|||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_FORCE_LOAD is not set
|
||||
|
@ -129,11 +136,9 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
|
@ -149,7 +154,6 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
|
@ -188,9 +192,9 @@ CONFIG_PPC_MPC5200_BUGFIX=y
|
|||
# CONFIG_TAU is not set
|
||||
# CONFIG_FSL_ULI1575 is not set
|
||||
CONFIG_PPC_BESTCOMM=y
|
||||
# CONFIG_PPC_BESTCOMM_ATA is not set
|
||||
CONFIG_PPC_BESTCOMM_ATA=y
|
||||
CONFIG_PPC_BESTCOMM_FEC=y
|
||||
# CONFIG_PPC_BESTCOMM_GEN_BD is not set
|
||||
# CONFIG_SIMPLE_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
@ -217,6 +221,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
|||
CONFIG_ARCH_HAS_WALK_MEMORY=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
|
@ -228,12 +233,14 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
|||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_PPC_4K_PAGES=y
|
||||
# CONFIG_PPC_16K_PAGES is not set
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
@ -274,6 +281,7 @@ CONFIG_NET=y
|
|||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
|
@ -330,6 +338,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
|
@ -342,6 +351,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
|
@ -364,6 +374,7 @@ CONFIG_MTD=y
|
|||
# CONFIG_MTD_DEBUG is not set
|
||||
CONFIG_MTD_CONCAT=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_TESTS is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_OF_PARTS is not set
|
||||
|
@ -432,6 +443,12 @@ CONFIG_MTD_PHYSMAP_OF=y
|
|||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
# CONFIG_MTD_QINFO_PROBE is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
|
@ -496,6 +513,7 @@ CONFIG_SCSI_WAIT_SCAN=m
|
|||
# CONFIG_SCSI_SRP_ATTRS is not set
|
||||
CONFIG_SCSI_LOWLEVEL=y
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
# CONFIG_SCSI_DH is not set
|
||||
CONFIG_ATA=y
|
||||
|
@ -530,6 +548,9 @@ CONFIG_LXT_PHY=y
|
|||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_REALTEK_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_STE10XP is not set
|
||||
# CONFIG_LSI_ET1011C_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
|
@ -554,6 +575,10 @@ CONFIG_FEC_MPC52xx_MDIO=y
|
|||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
|
@ -604,8 +629,10 @@ CONFIG_SERIAL_MPC52xx=y
|
|||
CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
||||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_HVC_UDBG is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
|
@ -645,8 +672,6 @@ CONFIG_I2C_MPC=y
|
|||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
# CONFIG_EEPROM_LEGACY is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
|
@ -675,6 +700,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_ADT7462 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ADT7475 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_F71805F is not set
|
||||
|
@ -694,6 +720,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_LM93 is not set
|
||||
# CONFIG_SENSORS_LTC4245 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_MAX6650 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
|
@ -742,10 +769,12 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
|
@ -803,6 +832,7 @@ CONFIG_USB_MON=y
|
|||
# USB Host Controller Drivers
|
||||
#
|
||||
# CONFIG_USB_C67X00_HCD is not set
|
||||
# CONFIG_USB_OXU210HP_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
# CONFIG_USB_ISP1760_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
|
@ -827,18 +857,17 @@ CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
|
|||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||
#
|
||||
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
# see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
|
@ -884,6 +913,10 @@ CONFIG_USB_STORAGE=y
|
|||
# CONFIG_USB_ISIGHTFW is not set
|
||||
# CONFIG_USB_VST is not set
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# OTG and related infrastructure
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
@ -947,7 +980,6 @@ CONFIG_RTC_DRV_DS1307=y
|
|||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
CONFIG_STAGING_EXCLUDE_BUILD=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -968,6 +1000,7 @@ CONFIG_FS_MBCACHE=y
|
|||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
|
@ -1004,10 +1037,7 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
CONFIG_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
|
@ -1027,6 +1057,7 @@ CONFIG_JFFS2_ZLIB=y
|
|||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
|
@ -1123,6 +1154,7 @@ CONFIG_NLS_ISO8859_1=y
|
|||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
|
@ -1174,6 +1206,7 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
|
@ -1182,6 +1215,8 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
|
@ -1190,11 +1225,13 @@ CONFIG_HAVE_FUNCTION_TRACER=y
|
|||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_TRACE_BRANCH_PROFILING is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
CONFIG_PRINT_STACK_DEPTH=64
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
@ -1221,11 +1258,15 @@ CONFIG_CRYPTO=y
|
|||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_ALGAPI2=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_BLKCIPHER2=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.28-rc4
|
||||
# Thu Nov 13 02:09:07 2008
|
||||
# Linux kernel version: 2.6.29-rc2
|
||||
# Mon Jan 26 21:40:44 2009
|
||||
#
|
||||
# CONFIG_PPC64 is not set
|
||||
|
||||
|
@ -43,7 +43,7 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y
|
|||
CONFIG_PPC=y
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
CONFIG_GENERIC_NVRAM=y
|
||||
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
|
||||
CONFIG_SCHED_OMIT_FRAME_POINTER=y
|
||||
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
|
||||
CONFIG_PPC_OF=y
|
||||
CONFIG_OF=y
|
||||
|
@ -72,10 +72,19 @@ CONFIG_SYSVIPC_SYSCTL=y
|
|||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_CGROUPS is not set
|
||||
# CONFIG_GROUP_SCHED is not set
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
|
@ -108,7 +117,6 @@ CONFIG_SLUB_DEBUG=y
|
|||
CONFIG_SLUB=y
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
# CONFIG_MARKERS is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
|
||||
CONFIG_HAVE_IOREMAP_PROT=y
|
||||
|
@ -119,7 +127,6 @@ CONFIG_HAVE_CLK=y
|
|||
# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_FORCE_LOAD is not set
|
||||
|
@ -127,11 +134,9 @@ CONFIG_MODULE_UNLOAD=y
|
|||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_LSF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
|
@ -147,7 +152,6 @@ CONFIG_DEFAULT_AS=y
|
|||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
CONFIG_FREEZER=y
|
||||
|
||||
#
|
||||
|
@ -192,7 +196,7 @@ CONFIG_RTAS_PROC=y
|
|||
CONFIG_PPC_BESTCOMM=y
|
||||
CONFIG_PPC_BESTCOMM_ATA=y
|
||||
CONFIG_PPC_BESTCOMM_FEC=y
|
||||
CONFIG_PPC_BESTCOMM_GEN_BD=y
|
||||
# CONFIG_SIMPLE_GPIO is not set
|
||||
|
||||
#
|
||||
# Kernel options
|
||||
|
@ -220,6 +224,7 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
|
|||
CONFIG_ARCH_HAS_WALK_MEMORY=y
|
||||
CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
|
@ -231,12 +236,14 @@ CONFIG_FLAT_NODE_MEM_MAP=y
|
|||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
CONFIG_MIGRATION=y
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_BOUNCE=y
|
||||
CONFIG_VIRT_TO_BUS=y
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
CONFIG_PPC_4K_PAGES=y
|
||||
# CONFIG_PPC_16K_PAGES is not set
|
||||
# CONFIG_PPC_64K_PAGES is not set
|
||||
CONFIG_FORCE_MAX_ZONEORDER=11
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
# CONFIG_CMDLINE_BOOL is not set
|
||||
|
@ -264,6 +271,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
|
|||
# CONFIG_PCI_MSI is not set
|
||||
CONFIG_PCI_LEGACY=y
|
||||
# CONFIG_PCI_DEBUG is not set
|
||||
# CONFIG_PCI_STUB is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
# CONFIG_HOTPLUG_PCI is not set
|
||||
# CONFIG_HAS_RAPIDIO is not set
|
||||
|
@ -286,6 +294,7 @@ CONFIG_NET=y
|
|||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
CONFIG_UNIX=y
|
||||
|
@ -342,6 +351,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
|
@ -354,6 +364,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
|||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
|
@ -376,6 +387,7 @@ CONFIG_MTD=y
|
|||
# CONFIG_MTD_DEBUG is not set
|
||||
CONFIG_MTD_CONCAT=y
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_TESTS is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_OF_PARTS is not set
|
||||
|
@ -446,6 +458,12 @@ CONFIG_MTD_PHYSMAP_OF=y
|
|||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
# CONFIG_MTD_QINFO_PROBE is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
|
@ -474,13 +492,19 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
|
|||
# CONFIG_BLK_DEV_HD is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_PHANTOM is not set
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
# CONFIG_ICS932S401 is not set
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_HP_ILO is not set
|
||||
# CONFIG_C2PORT is not set
|
||||
|
||||
#
|
||||
# EEPROM support
|
||||
#
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
# CONFIG_EEPROM_LEGACY is not set
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
|
@ -539,6 +563,8 @@ CONFIG_SCSI_LOWLEVEL=y
|
|||
# CONFIG_MEGARAID_SAS is not set
|
||||
# CONFIG_SCSI_HPTIOP is not set
|
||||
# CONFIG_SCSI_BUSLOGIC is not set
|
||||
# CONFIG_LIBFC is not set
|
||||
# CONFIG_FCOE is not set
|
||||
# CONFIG_SCSI_DMX3191D is not set
|
||||
# CONFIG_SCSI_EATA is not set
|
||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||
|
@ -659,6 +685,9 @@ CONFIG_PHYLIB=y
|
|||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_REALTEK_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_STE10XP is not set
|
||||
# CONFIG_LSI_ET1011C_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
|
@ -692,6 +721,10 @@ CONFIG_FEC_MPC52xx_MDIO=y
|
|||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
|
@ -774,9 +807,11 @@ CONFIG_SERIAL_MPC52xx_CONSOLE=y
|
|||
CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200
|
||||
# CONFIG_SERIAL_JSM is not set
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
# CONFIG_HVC_RTAS is not set
|
||||
# CONFIG_HVC_UDBG is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
|
@ -844,8 +879,6 @@ CONFIG_I2C_MPC=y
|
|||
# Miscellaneous I2C Chip support
|
||||
#
|
||||
# CONFIG_DS1682 is not set
|
||||
# CONFIG_EEPROM_AT24 is not set
|
||||
# CONFIG_EEPROM_LEGACY is not set
|
||||
# CONFIG_SENSORS_PCF8574 is not set
|
||||
# CONFIG_PCF8575 is not set
|
||||
# CONFIG_SENSORS_PCA9539 is not set
|
||||
|
@ -874,6 +907,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_ADT7462 is not set
|
||||
# CONFIG_SENSORS_ADT7470 is not set
|
||||
# CONFIG_SENSORS_ADT7473 is not set
|
||||
# CONFIG_SENSORS_ADT7475 is not set
|
||||
# CONFIG_SENSORS_ATXP1 is not set
|
||||
# CONFIG_SENSORS_DS1621 is not set
|
||||
# CONFIG_SENSORS_I5K_AMB is not set
|
||||
|
@ -894,6 +928,7 @@ CONFIG_HWMON=y
|
|||
# CONFIG_SENSORS_LM90 is not set
|
||||
# CONFIG_SENSORS_LM92 is not set
|
||||
# CONFIG_SENSORS_LM93 is not set
|
||||
# CONFIG_SENSORS_LTC4245 is not set
|
||||
# CONFIG_SENSORS_MAX1619 is not set
|
||||
# CONFIG_SENSORS_MAX6650 is not set
|
||||
# CONFIG_SENSORS_PC87360 is not set
|
||||
|
@ -953,10 +988,12 @@ CONFIG_SSB_POSSIBLE=y
|
|||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_TWL4030_CORE is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_PMIC_DA903X is not set
|
||||
# CONFIG_MFD_WM8400 is not set
|
||||
# CONFIG_MFD_WM8350_I2C is not set
|
||||
# CONFIG_MFD_PCF50633 is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
|
@ -1051,7 +1088,7 @@ CONFIG_LCD_CLASS_DEVICE=m
|
|||
# CONFIG_LCD_ILI9320 is not set
|
||||
# CONFIG_LCD_PLATFORM is not set
|
||||
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||
# CONFIG_BACKLIGHT_CORGI is not set
|
||||
CONFIG_BACKLIGHT_GENERIC=y
|
||||
|
||||
#
|
||||
# Display device support
|
||||
|
@ -1093,21 +1130,22 @@ CONFIG_HID_COMPAT=y
|
|||
CONFIG_HID_A4TECH=y
|
||||
# CONFIG_HID_APPLE is not set
|
||||
CONFIG_HID_BELKIN=y
|
||||
CONFIG_HID_BRIGHT=y
|
||||
CONFIG_HID_CHERRY=y
|
||||
# CONFIG_HID_CHICONY is not set
|
||||
CONFIG_HID_CYPRESS=y
|
||||
CONFIG_HID_DELL=y
|
||||
CONFIG_HID_EZKEY=y
|
||||
# CONFIG_HID_GYRATION is not set
|
||||
# CONFIG_HID_LOGITECH is not set
|
||||
# CONFIG_HID_MICROSOFT is not set
|
||||
# CONFIG_HID_MONTEREY is not set
|
||||
# CONFIG_HID_NTRIG is not set
|
||||
# CONFIG_HID_PANTHERLORD is not set
|
||||
# CONFIG_HID_PETALYNX is not set
|
||||
# CONFIG_HID_SAMSUNG is not set
|
||||
# CONFIG_HID_SONY is not set
|
||||
# CONFIG_HID_SUNPLUS is not set
|
||||
# CONFIG_GREENASIA_FF is not set
|
||||
# CONFIG_HID_TOPSEED is not set
|
||||
# CONFIG_THRUSTMASTER_FF is not set
|
||||
# CONFIG_ZEROPLUS_FF is not set
|
||||
CONFIG_USB_SUPPORT=y
|
||||
|
@ -1137,6 +1175,7 @@ CONFIG_USB_MON=y
|
|||
#
|
||||
# CONFIG_USB_C67X00_HCD is not set
|
||||
# CONFIG_USB_EHCI_HCD is not set
|
||||
# CONFIG_USB_OXU210HP_HCD is not set
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
# CONFIG_USB_ISP1760_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
|
@ -1164,18 +1203,17 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|||
# CONFIG_USB_TMC is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
|
||||
#
|
||||
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
# see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
# CONFIG_USB_STORAGE_DEBUG is not set
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_ISD200 is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
|
@ -1222,6 +1260,10 @@ CONFIG_USB_STORAGE=y
|
|||
# CONFIG_USB_ISIGHTFW is not set
|
||||
# CONFIG_USB_VST is not set
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# OTG and related infrastructure
|
||||
#
|
||||
# CONFIG_UWB is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
|
@ -1243,7 +1285,6 @@ CONFIG_NEW_LEDS=y
|
|||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
CONFIG_STAGING_EXCLUDE_BUILD=y
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -1264,6 +1305,7 @@ CONFIG_FS_MBCACHE=y
|
|||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
|
@ -1300,10 +1342,7 @@ CONFIG_TMPFS=y
|
|||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
CONFIG_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
|
@ -1323,6 +1362,7 @@ CONFIG_JFFS2_ZLIB=y
|
|||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
CONFIG_CRAMFS=y
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
|
@ -1403,6 +1443,7 @@ CONFIG_NLS_ISO8859_1=y
|
|||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
|
@ -1454,6 +1495,7 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
# CONFIG_DEBUG_SG is not set
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
# CONFIG_BOOT_PRINTK_DELAY is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
|
@ -1462,6 +1504,8 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
|
@ -1470,11 +1514,13 @@ CONFIG_HAVE_FUNCTION_TRACER=y
|
|||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_TRACE_BRANCH_PROFILING is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
CONFIG_PRINT_STACK_DEPTH=64
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_DEBUG_PAGEALLOC is not set
|
||||
|
@ -1501,11 +1547,15 @@ CONFIG_CRYPTO=y
|
|||
#
|
||||
# CONFIG_CRYPTO_FIPS is not set
|
||||
CONFIG_CRYPTO_ALGAPI=y
|
||||
CONFIG_CRYPTO_AEAD=y
|
||||
CONFIG_CRYPTO_ALGAPI2=y
|
||||
CONFIG_CRYPTO_AEAD2=y
|
||||
CONFIG_CRYPTO_BLKCIPHER=y
|
||||
CONFIG_CRYPTO_BLKCIPHER2=y
|
||||
CONFIG_CRYPTO_HASH=y
|
||||
CONFIG_CRYPTO_RNG=y
|
||||
CONFIG_CRYPTO_HASH2=y
|
||||
CONFIG_CRYPTO_RNG2=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_MANAGER2=y
|
||||
# CONFIG_CRYPTO_GF128MUL is not set
|
||||
# CONFIG_CRYPTO_NULL is not set
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
|
|
|
@ -16,8 +16,6 @@
|
|||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#define DEBUG
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/string.h>
|
||||
|
@ -258,7 +256,8 @@ int pci_read_irq_line(struct pci_dev *pci_dev)
|
|||
} else {
|
||||
pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",
|
||||
oirq.size, oirq.specifier[0], oirq.specifier[1],
|
||||
oirq.controller->full_name);
|
||||
oirq.controller ? oirq.controller->full_name :
|
||||
"<default>");
|
||||
|
||||
virq = irq_create_of_mapping(oirq.controller, oirq.specifier,
|
||||
oirq.size);
|
||||
|
|
|
@ -19,14 +19,6 @@
|
|||
#include <linux/kernel.h>
|
||||
|
||||
|
||||
/* ======================================================================== */
|
||||
/* PCI windows config */
|
||||
/* ======================================================================== */
|
||||
|
||||
#define MPC52xx_PCI_TARGET_IO 0xf0000000
|
||||
#define MPC52xx_PCI_TARGET_MEM 0x00000000
|
||||
|
||||
|
||||
/* ======================================================================== */
|
||||
/* Structures mapping & Defines for PCI Unit */
|
||||
/* ======================================================================== */
|
||||
|
@ -244,7 +236,7 @@ static struct pci_ops mpc52xx_pci_ops = {
|
|||
|
||||
static void __init
|
||||
mpc52xx_pci_setup(struct pci_controller *hose,
|
||||
struct mpc52xx_pci __iomem *pci_regs)
|
||||
struct mpc52xx_pci __iomem *pci_regs, phys_addr_t pci_phys)
|
||||
{
|
||||
struct resource *res;
|
||||
u32 tmp;
|
||||
|
@ -314,10 +306,14 @@ mpc52xx_pci_setup(struct pci_controller *hose,
|
|||
/* Set all the IWCR fields at once; they're in the same reg */
|
||||
out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));
|
||||
|
||||
out_be32(&pci_regs->tbatr0,
|
||||
MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );
|
||||
out_be32(&pci_regs->tbatr1,
|
||||
MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );
|
||||
/* Map IMMR onto PCI bus */
|
||||
pci_phys &= 0xfffc0000; /* bar0 has only 14 significant bits */
|
||||
out_be32(&pci_regs->tbatr0, MPC52xx_PCI_TBATR_ENABLE | pci_phys);
|
||||
out_be32(&pci_regs->bar0, PCI_BASE_ADDRESS_MEM_PREFETCH | pci_phys);
|
||||
|
||||
/* Map memory onto PCI bus */
|
||||
out_be32(&pci_regs->tbatr1, MPC52xx_PCI_TBATR_ENABLE);
|
||||
out_be32(&pci_regs->bar1, PCI_BASE_ADDRESS_MEM_PREFETCH);
|
||||
|
||||
out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD | MPC52xx_PCI_TCR_WCT8);
|
||||
|
||||
|
@ -414,7 +410,7 @@ mpc52xx_add_bridge(struct device_node *node)
|
|||
|
||||
/* Finish setting up PCI using values obtained by
|
||||
* pci_proces_bridge_OF_ranges */
|
||||
mpc52xx_pci_setup(hose, pci_regs);
|
||||
mpc52xx_pci_setup(hose, pci_regs, rsrc.start);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -269,9 +269,8 @@ void vesa_store_edid(void)
|
|||
we genuinely have to assume all registers are destroyed here. */
|
||||
|
||||
asm("pushw %%es; movw %2,%%es; "INT10"; popw %%es"
|
||||
: "+a" (ax), "+b" (bx)
|
||||
: "c" (cx), "D" (di)
|
||||
: "esi");
|
||||
: "+a" (ax), "+b" (bx), "+c" (cx), "+D" (di)
|
||||
: : "esi", "edx");
|
||||
|
||||
if (ax != 0x004f)
|
||||
return; /* No EDID */
|
||||
|
@ -285,9 +284,9 @@ void vesa_store_edid(void)
|
|||
dx = 0; /* EDID block number */
|
||||
di =(size_t) &boot_params.edid_info; /* (ES:)Pointer to block */
|
||||
asm(INT10
|
||||
: "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info)
|
||||
: "c" (cx), "D" (di)
|
||||
: "esi");
|
||||
: "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info),
|
||||
"+c" (cx), "+D" (di)
|
||||
: : "esi");
|
||||
#endif /* CONFIG_FIRMWARE_EDID */
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
#define E820_RESERVED_KERN 128
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <linux/types.h>
|
||||
struct e820entry {
|
||||
__u64 addr; /* start of memory segment */
|
||||
__u64 size; /* size of memory segment */
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <asm/types.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/* Architectural interrupt line count. */
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
#ifdef __x86_64__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <asm/ioctls.h>
|
||||
#include <asm/types.h>
|
||||
|
||||
/*
|
||||
* Machine Check support for x86
|
||||
|
@ -115,8 +115,6 @@ extern int mce_notify_user(void);
|
|||
|
||||
#endif /* !CONFIG_X86_32 */
|
||||
|
||||
|
||||
|
||||
#ifdef CONFIG_X86_MCE
|
||||
extern void mcheck_init(struct cpuinfo_x86 *c);
|
||||
#else
|
||||
|
@ -126,5 +124,4 @@ extern void stop_mce(void);
|
|||
extern void restart_mce(void);
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _ASM_X86_MCE_H */
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#ifndef _ASM_X86_MTRR_H
|
||||
#define _ASM_X86_MTRR_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/errno.h>
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
#ifdef CONFIG_X86_PTRACE_BTS
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
#include <asm/types.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/* configuration/status structure used in PTRACE_BTS_CONFIG and
|
||||
PTRACE_BTS_STATUS commands.
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
#define _ASM_X86_SIGCONTEXT_H
|
||||
|
||||
#include <linux/compiler.h>
|
||||
#include <asm/types.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define FP_XSTATE_MAGIC1 0x46505853U
|
||||
#define FP_XSTATE_MAGIC2 0x46505845U
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#ifndef _ASM_X86_SIGCONTEXT32_H
|
||||
#define _ASM_X86_SIGCONTEXT32_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* signal context for 32bit programs. */
|
||||
|
||||
#define X86_FXSR_MAGIC 0x0000
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _ASM_X86_SWAB_H
|
||||
#define _ASM_X86_SWAB_H
|
||||
|
||||
#include <asm/types.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/compiler.h>
|
||||
|
||||
static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
static void __cpuinit early_init_intel(struct cpuinfo_x86 *c)
|
||||
{
|
||||
/* Unmask CPUID levels if masked: */
|
||||
if (c->x86 == 6 && c->x86_model >= 15) {
|
||||
if (c->x86 > 6 || (c->x86 == 6 && c->x86_model >= 0xd)) {
|
||||
u64 misc_enable;
|
||||
|
||||
rdmsrl(MSR_IA32_MISC_ENABLE, misc_enable);
|
||||
|
|
|
@ -1594,8 +1594,7 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn)
|
|||
|
||||
/* kvm/qemu doesn't have mtrr set right, don't trim them all */
|
||||
if (!highest_pfn) {
|
||||
WARN(!kvm_para_available(), KERN_WARNING
|
||||
"WARNING: strange, CPU MTRRs all blank?\n");
|
||||
printk(KERN_INFO "CPU MTRRs all blank - virtualized system.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
* - buffer allocation (memory accounting)
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2007-2008 Intel Corporation.
|
||||
* Markus Metzger <markus.t.metzger@intel.com>, 2007-2008
|
||||
* Copyright (C) 2007-2009 Intel Corporation.
|
||||
* Markus Metzger <markus.t.metzger@intel.com>, 2007-2009
|
||||
*/
|
||||
|
||||
|
||||
|
@ -890,7 +890,7 @@ int ds_set_pebs_reset(struct pebs_tracer *tracer, u64 value)
|
|||
}
|
||||
|
||||
static const struct ds_configuration ds_cfg_netburst = {
|
||||
.name = "netburst",
|
||||
.name = "Netburst",
|
||||
.ctl[dsf_bts] = (1 << 2) | (1 << 3),
|
||||
.ctl[dsf_bts_kernel] = (1 << 5),
|
||||
.ctl[dsf_bts_user] = (1 << 6),
|
||||
|
@ -904,7 +904,7 @@ static const struct ds_configuration ds_cfg_netburst = {
|
|||
#endif
|
||||
};
|
||||
static const struct ds_configuration ds_cfg_pentium_m = {
|
||||
.name = "pentium m",
|
||||
.name = "Pentium M",
|
||||
.ctl[dsf_bts] = (1 << 6) | (1 << 7),
|
||||
|
||||
.sizeof_field = sizeof(long),
|
||||
|
@ -915,8 +915,8 @@ static const struct ds_configuration ds_cfg_pentium_m = {
|
|||
.sizeof_rec[ds_pebs] = sizeof(long) * 18,
|
||||
#endif
|
||||
};
|
||||
static const struct ds_configuration ds_cfg_core2 = {
|
||||
.name = "core 2",
|
||||
static const struct ds_configuration ds_cfg_core2_atom = {
|
||||
.name = "Core 2/Atom",
|
||||
.ctl[dsf_bts] = (1 << 6) | (1 << 7),
|
||||
.ctl[dsf_bts_kernel] = (1 << 9),
|
||||
.ctl[dsf_bts_user] = (1 << 10),
|
||||
|
@ -949,19 +949,22 @@ void __cpuinit ds_init_intel(struct cpuinfo_x86 *c)
|
|||
switch (c->x86) {
|
||||
case 0x6:
|
||||
switch (c->x86_model) {
|
||||
case 0 ... 0xC:
|
||||
/* sorry, don't know about them */
|
||||
break;
|
||||
case 0xD:
|
||||
case 0xE: /* Pentium M */
|
||||
case 0x9:
|
||||
case 0xd: /* Pentium M */
|
||||
ds_configure(&ds_cfg_pentium_m);
|
||||
break;
|
||||
default: /* Core2, Atom, ... */
|
||||
ds_configure(&ds_cfg_core2);
|
||||
case 0xf:
|
||||
case 0x17: /* Core2 */
|
||||
case 0x1c: /* Atom */
|
||||
ds_configure(&ds_cfg_core2_atom);
|
||||
break;
|
||||
case 0x1a: /* i7 */
|
||||
default:
|
||||
/* sorry, don't know about them */
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 0xF:
|
||||
case 0xf:
|
||||
switch (c->x86_model) {
|
||||
case 0x0:
|
||||
case 0x1:
|
||||
|
|
|
@ -572,6 +572,7 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
|
|||
case PCI_DEVICE_ID_INTEL_ICH7_1:
|
||||
case PCI_DEVICE_ID_INTEL_ICH7_30:
|
||||
case PCI_DEVICE_ID_INTEL_ICH7_31:
|
||||
case PCI_DEVICE_ID_INTEL_TGP_LPC:
|
||||
case PCI_DEVICE_ID_INTEL_ESB2_0:
|
||||
case PCI_DEVICE_ID_INTEL_ICH8_0:
|
||||
case PCI_DEVICE_ID_INTEL_ICH8_1:
|
||||
|
|
|
@ -302,7 +302,7 @@ static void bio_end_empty_barrier(struct bio *bio, int err)
|
|||
* Description:
|
||||
* Issue a flush for the block device in question. Caller can supply
|
||||
* room for storing the error offset in case of a flush error, if they
|
||||
* wish to. Caller must run wait_for_completion() on its own.
|
||||
* wish to.
|
||||
*/
|
||||
int blkdev_issue_flush(struct block_device *bdev, sector_t *error_sector)
|
||||
{
|
||||
|
|
100
block/blk-core.c
100
block/blk-core.c
|
@ -64,11 +64,12 @@ static struct workqueue_struct *kblockd_workqueue;
|
|||
|
||||
static void drive_stat_acct(struct request *rq, int new_io)
|
||||
{
|
||||
struct gendisk *disk = rq->rq_disk;
|
||||
struct hd_struct *part;
|
||||
int rw = rq_data_dir(rq);
|
||||
int cpu;
|
||||
|
||||
if (!blk_fs_request(rq) || !rq->rq_disk)
|
||||
if (!blk_fs_request(rq) || !disk || !blk_do_io_stat(disk->queue))
|
||||
return;
|
||||
|
||||
cpu = part_stat_lock();
|
||||
|
@ -599,8 +600,7 @@ blk_init_queue_node(request_fn_proc *rfn, spinlock_t *lock, int node_id)
|
|||
q->request_fn = rfn;
|
||||
q->prep_rq_fn = NULL;
|
||||
q->unplug_fn = generic_unplug_device;
|
||||
q->queue_flags = (1 << QUEUE_FLAG_CLUSTER |
|
||||
1 << QUEUE_FLAG_STACKABLE);
|
||||
q->queue_flags = QUEUE_FLAG_DEFAULT;
|
||||
q->queue_lock = lock;
|
||||
|
||||
blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);
|
||||
|
@ -1125,6 +1125,8 @@ void init_request_from_bio(struct request *req, struct bio *bio)
|
|||
|
||||
if (bio_sync(bio))
|
||||
req->cmd_flags |= REQ_RW_SYNC;
|
||||
if (bio_unplug(bio))
|
||||
req->cmd_flags |= REQ_UNPLUG;
|
||||
if (bio_rw_meta(bio))
|
||||
req->cmd_flags |= REQ_RW_META;
|
||||
|
||||
|
@ -1141,6 +1143,7 @@ static int __make_request(struct request_queue *q, struct bio *bio)
|
|||
int el_ret, nr_sectors;
|
||||
const unsigned short prio = bio_prio(bio);
|
||||
const int sync = bio_sync(bio);
|
||||
const int unplug = bio_unplug(bio);
|
||||
int rw_flags;
|
||||
|
||||
nr_sectors = bio_sectors(bio);
|
||||
|
@ -1244,7 +1247,7 @@ get_rq:
|
|||
blk_plug_device(q);
|
||||
add_request(q, req);
|
||||
out:
|
||||
if (sync || blk_queue_nonrot(q))
|
||||
if (unplug || blk_queue_nonrot(q))
|
||||
__generic_unplug_device(q);
|
||||
spin_unlock_irq(q->queue_lock);
|
||||
return 0;
|
||||
|
@ -1448,6 +1451,11 @@ static inline void __generic_make_request(struct bio *bio)
|
|||
err = -EOPNOTSUPP;
|
||||
goto end_io;
|
||||
}
|
||||
if (bio_barrier(bio) && bio_has_data(bio) &&
|
||||
(q->next_ordered == QUEUE_ORDERED_NONE)) {
|
||||
err = -EOPNOTSUPP;
|
||||
goto end_io;
|
||||
}
|
||||
|
||||
ret = q->make_request_fn(q, bio);
|
||||
} while (ret);
|
||||
|
@ -1655,6 +1663,55 @@ void blkdev_dequeue_request(struct request *req)
|
|||
}
|
||||
EXPORT_SYMBOL(blkdev_dequeue_request);
|
||||
|
||||
static void blk_account_io_completion(struct request *req, unsigned int bytes)
|
||||
{
|
||||
struct gendisk *disk = req->rq_disk;
|
||||
|
||||
if (!disk || !blk_do_io_stat(disk->queue))
|
||||
return;
|
||||
|
||||
if (blk_fs_request(req)) {
|
||||
const int rw = rq_data_dir(req);
|
||||
struct hd_struct *part;
|
||||
int cpu;
|
||||
|
||||
cpu = part_stat_lock();
|
||||
part = disk_map_sector_rcu(req->rq_disk, req->sector);
|
||||
part_stat_add(cpu, part, sectors[rw], bytes >> 9);
|
||||
part_stat_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
static void blk_account_io_done(struct request *req)
|
||||
{
|
||||
struct gendisk *disk = req->rq_disk;
|
||||
|
||||
if (!disk || !blk_do_io_stat(disk->queue))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Account IO completion. bar_rq isn't accounted as a normal
|
||||
* IO on queueing nor completion. Accounting the containing
|
||||
* request is enough.
|
||||
*/
|
||||
if (blk_fs_request(req) && req != &req->q->bar_rq) {
|
||||
unsigned long duration = jiffies - req->start_time;
|
||||
const int rw = rq_data_dir(req);
|
||||
struct hd_struct *part;
|
||||
int cpu;
|
||||
|
||||
cpu = part_stat_lock();
|
||||
part = disk_map_sector_rcu(disk, req->sector);
|
||||
|
||||
part_stat_inc(cpu, part, ios[rw]);
|
||||
part_stat_add(cpu, part, ticks[rw], duration);
|
||||
part_round_stats(cpu, part);
|
||||
part_dec_in_flight(part);
|
||||
|
||||
part_stat_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* __end_that_request_first - end I/O on a request
|
||||
* @req: the request being processed
|
||||
|
@ -1690,16 +1747,7 @@ static int __end_that_request_first(struct request *req, int error,
|
|||
(unsigned long long)req->sector);
|
||||
}
|
||||
|
||||
if (blk_fs_request(req) && req->rq_disk) {
|
||||
const int rw = rq_data_dir(req);
|
||||
struct hd_struct *part;
|
||||
int cpu;
|
||||
|
||||
cpu = part_stat_lock();
|
||||
part = disk_map_sector_rcu(req->rq_disk, req->sector);
|
||||
part_stat_add(cpu, part, sectors[rw], nr_bytes >> 9);
|
||||
part_stat_unlock();
|
||||
}
|
||||
blk_account_io_completion(req, nr_bytes);
|
||||
|
||||
total_bytes = bio_nbytes = 0;
|
||||
while ((bio = req->bio) != NULL) {
|
||||
|
@ -1779,8 +1827,6 @@ static int __end_that_request_first(struct request *req, int error,
|
|||
*/
|
||||
static void end_that_request_last(struct request *req, int error)
|
||||
{
|
||||
struct gendisk *disk = req->rq_disk;
|
||||
|
||||
if (blk_rq_tagged(req))
|
||||
blk_queue_end_tag(req->q, req);
|
||||
|
||||
|
@ -1792,27 +1838,7 @@ static void end_that_request_last(struct request *req, int error)
|
|||
|
||||
blk_delete_timer(req);
|
||||
|
||||
/*
|
||||
* Account IO completion. bar_rq isn't accounted as a normal
|
||||
* IO on queueing nor completion. Accounting the containing
|
||||
* request is enough.
|
||||
*/
|
||||
if (disk && blk_fs_request(req) && req != &req->q->bar_rq) {
|
||||
unsigned long duration = jiffies - req->start_time;
|
||||
const int rw = rq_data_dir(req);
|
||||
struct hd_struct *part;
|
||||
int cpu;
|
||||
|
||||
cpu = part_stat_lock();
|
||||
part = disk_map_sector_rcu(disk, req->sector);
|
||||
|
||||
part_stat_inc(cpu, part, ios[rw]);
|
||||
part_stat_add(cpu, part, ticks[rw], duration);
|
||||
part_round_stats(cpu, part);
|
||||
part_dec_in_flight(part);
|
||||
|
||||
part_stat_unlock();
|
||||
}
|
||||
blk_account_io_done(req);
|
||||
|
||||
if (req->end_io)
|
||||
req->end_io(req, error);
|
||||
|
|
|
@ -309,20 +309,20 @@ static struct kobj_type integrity_ktype = {
|
|||
/**
|
||||
* blk_integrity_register - Register a gendisk as being integrity-capable
|
||||
* @disk: struct gendisk pointer to make integrity-aware
|
||||
* @template: integrity profile
|
||||
* @template: optional integrity profile to register
|
||||
*
|
||||
* Description: When a device needs to advertise itself as being able
|
||||
* to send/receive integrity metadata it must use this function to
|
||||
* register the capability with the block layer. The template is a
|
||||
* blk_integrity struct with values appropriate for the underlying
|
||||
* hardware. See Documentation/block/data-integrity.txt.
|
||||
* hardware. If template is NULL the new profile is allocated but
|
||||
* not filled out. See Documentation/block/data-integrity.txt.
|
||||
*/
|
||||
int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)
|
||||
{
|
||||
struct blk_integrity *bi;
|
||||
|
||||
BUG_ON(disk == NULL);
|
||||
BUG_ON(template == NULL);
|
||||
|
||||
if (disk->integrity == NULL) {
|
||||
bi = kmem_cache_alloc(integrity_cachep,
|
||||
|
@ -346,6 +346,7 @@ int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)
|
|||
bi = disk->integrity;
|
||||
|
||||
/* Use the provided profile as template */
|
||||
if (template != NULL) {
|
||||
bi->name = template->name;
|
||||
bi->generate_fn = template->generate_fn;
|
||||
bi->verify_fn = template->verify_fn;
|
||||
|
@ -353,6 +354,8 @@ int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)
|
|||
bi->set_tag_fn = template->set_tag_fn;
|
||||
bi->get_tag_fn = template->get_tag_fn;
|
||||
bi->tag_size = template->tag_size;
|
||||
} else
|
||||
bi->name = "unsupported";
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -130,6 +130,27 @@ static ssize_t queue_max_hw_sectors_show(struct request_queue *q, char *page)
|
|||
return queue_var_show(max_hw_sectors_kb, (page));
|
||||
}
|
||||
|
||||
static ssize_t queue_nonrot_show(struct request_queue *q, char *page)
|
||||
{
|
||||
return queue_var_show(!blk_queue_nonrot(q), page);
|
||||
}
|
||||
|
||||
static ssize_t queue_nonrot_store(struct request_queue *q, const char *page,
|
||||
size_t count)
|
||||
{
|
||||
unsigned long nm;
|
||||
ssize_t ret = queue_var_store(&nm, page, count);
|
||||
|
||||
spin_lock_irq(q->queue_lock);
|
||||
if (nm)
|
||||
queue_flag_clear(QUEUE_FLAG_NONROT, q);
|
||||
else
|
||||
queue_flag_set(QUEUE_FLAG_NONROT, q);
|
||||
spin_unlock_irq(q->queue_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t queue_nomerges_show(struct request_queue *q, char *page)
|
||||
{
|
||||
return queue_var_show(blk_queue_nomerges(q), page);
|
||||
|
@ -146,8 +167,8 @@ static ssize_t queue_nomerges_store(struct request_queue *q, const char *page,
|
|||
queue_flag_set(QUEUE_FLAG_NOMERGES, q);
|
||||
else
|
||||
queue_flag_clear(QUEUE_FLAG_NOMERGES, q);
|
||||
|
||||
spin_unlock_irq(q->queue_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -176,6 +197,27 @@ queue_rq_affinity_store(struct request_queue *q, const char *page, size_t count)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static ssize_t queue_iostats_show(struct request_queue *q, char *page)
|
||||
{
|
||||
return queue_var_show(blk_queue_io_stat(q), page);
|
||||
}
|
||||
|
||||
static ssize_t queue_iostats_store(struct request_queue *q, const char *page,
|
||||
size_t count)
|
||||
{
|
||||
unsigned long stats;
|
||||
ssize_t ret = queue_var_store(&stats, page, count);
|
||||
|
||||
spin_lock_irq(q->queue_lock);
|
||||
if (stats)
|
||||
queue_flag_set(QUEUE_FLAG_IO_STAT, q);
|
||||
else
|
||||
queue_flag_clear(QUEUE_FLAG_IO_STAT, q);
|
||||
spin_unlock_irq(q->queue_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct queue_sysfs_entry queue_requests_entry = {
|
||||
.attr = {.name = "nr_requests", .mode = S_IRUGO | S_IWUSR },
|
||||
.show = queue_requests_show,
|
||||
|
@ -210,6 +252,12 @@ static struct queue_sysfs_entry queue_hw_sector_size_entry = {
|
|||
.show = queue_hw_sector_size_show,
|
||||
};
|
||||
|
||||
static struct queue_sysfs_entry queue_nonrot_entry = {
|
||||
.attr = {.name = "rotational", .mode = S_IRUGO | S_IWUSR },
|
||||
.show = queue_nonrot_show,
|
||||
.store = queue_nonrot_store,
|
||||
};
|
||||
|
||||
static struct queue_sysfs_entry queue_nomerges_entry = {
|
||||
.attr = {.name = "nomerges", .mode = S_IRUGO | S_IWUSR },
|
||||
.show = queue_nomerges_show,
|
||||
|
@ -222,6 +270,12 @@ static struct queue_sysfs_entry queue_rq_affinity_entry = {
|
|||
.store = queue_rq_affinity_store,
|
||||
};
|
||||
|
||||
static struct queue_sysfs_entry queue_iostats_entry = {
|
||||
.attr = {.name = "iostats", .mode = S_IRUGO | S_IWUSR },
|
||||
.show = queue_iostats_show,
|
||||
.store = queue_iostats_store,
|
||||
};
|
||||
|
||||
static struct attribute *default_attrs[] = {
|
||||
&queue_requests_entry.attr,
|
||||
&queue_ra_entry.attr,
|
||||
|
@ -229,8 +283,10 @@ static struct attribute *default_attrs[] = {
|
|||
&queue_max_sectors_entry.attr,
|
||||
&queue_iosched_entry.attr,
|
||||
&queue_hw_sector_size_entry.attr,
|
||||
&queue_nonrot_entry.attr,
|
||||
&queue_nomerges_entry.attr,
|
||||
&queue_rq_affinity_entry.attr,
|
||||
&queue_iostats_entry.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
|
|
@ -108,4 +108,12 @@ static inline int blk_cpu_to_group(int cpu)
|
|||
#endif
|
||||
}
|
||||
|
||||
static inline int blk_do_io_stat(struct request_queue *q)
|
||||
{
|
||||
if (q)
|
||||
return blk_queue_io_stat(q);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -187,59 +187,12 @@ static void __blk_add_trace(struct blk_trace *bt, sector_t sector, int bytes,
|
|||
|
||||
static struct dentry *blk_tree_root;
|
||||
static DEFINE_MUTEX(blk_tree_mutex);
|
||||
static unsigned int root_users;
|
||||
|
||||
static inline void blk_remove_root(void)
|
||||
{
|
||||
if (blk_tree_root) {
|
||||
debugfs_remove(blk_tree_root);
|
||||
blk_tree_root = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void blk_remove_tree(struct dentry *dir)
|
||||
{
|
||||
mutex_lock(&blk_tree_mutex);
|
||||
debugfs_remove(dir);
|
||||
if (--root_users == 0)
|
||||
blk_remove_root();
|
||||
mutex_unlock(&blk_tree_mutex);
|
||||
}
|
||||
|
||||
static struct dentry *blk_create_tree(const char *blk_name)
|
||||
{
|
||||
struct dentry *dir = NULL;
|
||||
int created = 0;
|
||||
|
||||
mutex_lock(&blk_tree_mutex);
|
||||
|
||||
if (!blk_tree_root) {
|
||||
blk_tree_root = debugfs_create_dir("block", NULL);
|
||||
if (!blk_tree_root)
|
||||
goto err;
|
||||
created = 1;
|
||||
}
|
||||
|
||||
dir = debugfs_create_dir(blk_name, blk_tree_root);
|
||||
if (dir)
|
||||
root_users++;
|
||||
else {
|
||||
/* Delete root only if we created it */
|
||||
if (created)
|
||||
blk_remove_root();
|
||||
}
|
||||
|
||||
err:
|
||||
mutex_unlock(&blk_tree_mutex);
|
||||
return dir;
|
||||
}
|
||||
|
||||
static void blk_trace_cleanup(struct blk_trace *bt)
|
||||
{
|
||||
relay_close(bt->rchan);
|
||||
debugfs_remove(bt->msg_file);
|
||||
debugfs_remove(bt->dropped_file);
|
||||
blk_remove_tree(bt->dir);
|
||||
relay_close(bt->rchan);
|
||||
free_percpu(bt->sequence);
|
||||
free_percpu(bt->msg_data);
|
||||
kfree(bt);
|
||||
|
@ -346,7 +299,18 @@ static int blk_subbuf_start_callback(struct rchan_buf *buf, void *subbuf,
|
|||
|
||||
static int blk_remove_buf_file_callback(struct dentry *dentry)
|
||||
{
|
||||
struct dentry *parent = dentry->d_parent;
|
||||
debugfs_remove(dentry);
|
||||
|
||||
/*
|
||||
* this will fail for all but the last file, but that is ok. what we
|
||||
* care about is the top level buts->name directory going away, when
|
||||
* the last trace file is gone. Then we don't have to rmdir() that
|
||||
* manually on trace stop, so it nicely solves the issue with
|
||||
* force killing of running traces.
|
||||
*/
|
||||
|
||||
debugfs_remove(parent);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -404,7 +368,15 @@ int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
|
|||
goto err;
|
||||
|
||||
ret = -ENOENT;
|
||||
dir = blk_create_tree(buts->name);
|
||||
|
||||
if (!blk_tree_root) {
|
||||
blk_tree_root = debugfs_create_dir("block", NULL);
|
||||
if (!blk_tree_root)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
dir = debugfs_create_dir(buts->name, blk_tree_root);
|
||||
|
||||
if (!dir)
|
||||
goto err;
|
||||
|
||||
|
@ -458,8 +430,6 @@ probe_err:
|
|||
atomic_dec(&blk_probes_ref);
|
||||
mutex_unlock(&blk_probe_mutex);
|
||||
err:
|
||||
if (dir)
|
||||
blk_remove_tree(dir);
|
||||
if (bt) {
|
||||
if (bt->msg_file)
|
||||
debugfs_remove(bt->msg_file);
|
||||
|
|
|
@ -84,6 +84,11 @@ struct cfq_data {
|
|||
*/
|
||||
struct cfq_rb_root service_tree;
|
||||
unsigned int busy_queues;
|
||||
/*
|
||||
* Used to track any pending rt requests so we can pre-empt current
|
||||
* non-RT cfqq in service when this value is non-zero.
|
||||
*/
|
||||
unsigned int busy_rt_queues;
|
||||
|
||||
int rq_in_driver;
|
||||
int sync_flight;
|
||||
|
@ -562,6 +567,8 @@ static void cfq_add_cfqq_rr(struct cfq_data *cfqd, struct cfq_queue *cfqq)
|
|||
BUG_ON(cfq_cfqq_on_rr(cfqq));
|
||||
cfq_mark_cfqq_on_rr(cfqq);
|
||||
cfqd->busy_queues++;
|
||||
if (cfq_class_rt(cfqq))
|
||||
cfqd->busy_rt_queues++;
|
||||
|
||||
cfq_resort_rr_list(cfqd, cfqq);
|
||||
}
|
||||
|
@ -581,6 +588,8 @@ static void cfq_del_cfqq_rr(struct cfq_data *cfqd, struct cfq_queue *cfqq)
|
|||
|
||||
BUG_ON(!cfqd->busy_queues);
|
||||
cfqd->busy_queues--;
|
||||
if (cfq_class_rt(cfqq))
|
||||
cfqd->busy_rt_queues--;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1004,6 +1013,20 @@ static struct cfq_queue *cfq_select_queue(struct cfq_data *cfqd)
|
|||
if (cfq_slice_used(cfqq))
|
||||
goto expire;
|
||||
|
||||
/*
|
||||
* If we have a RT cfqq waiting, then we pre-empt the current non-rt
|
||||
* cfqq.
|
||||
*/
|
||||
if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues) {
|
||||
/*
|
||||
* We simulate this as cfqq timed out so that it gets to bank
|
||||
* the remaining of its time slice.
|
||||
*/
|
||||
cfq_log_cfqq(cfqd, cfqq, "preempt");
|
||||
cfq_slice_expired(cfqd, 1);
|
||||
goto new_queue;
|
||||
}
|
||||
|
||||
/*
|
||||
* The active queue has requests and isn't expired, allow it to
|
||||
* dispatch.
|
||||
|
@ -1067,6 +1090,13 @@ __cfq_dispatch_requests(struct cfq_data *cfqd, struct cfq_queue *cfqq,
|
|||
if (RB_EMPTY_ROOT(&cfqq->sort_list))
|
||||
break;
|
||||
|
||||
/*
|
||||
* If there is a non-empty RT cfqq waiting for current
|
||||
* cfqq's timeslice to complete, pre-empt this cfqq
|
||||
*/
|
||||
if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues)
|
||||
break;
|
||||
|
||||
} while (dispatched < max_dispatch);
|
||||
|
||||
/*
|
||||
|
@ -1801,6 +1831,12 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
|
|||
if (rq_is_meta(rq) && !cfqq->meta_pending)
|
||||
return 1;
|
||||
|
||||
/*
|
||||
* Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice.
|
||||
*/
|
||||
if (cfq_class_rt(new_cfqq) && !cfq_class_rt(cfqq))
|
||||
return 1;
|
||||
|
||||
if (!cfqd->active_cic || !cfq_cfqq_wait_request(cfqq))
|
||||
return 0;
|
||||
|
||||
|
@ -1870,7 +1906,8 @@ cfq_rq_enqueued(struct cfq_data *cfqd, struct cfq_queue *cfqq,
|
|||
/*
|
||||
* not the active queue - expire current slice if it is
|
||||
* idle and has expired it's mean thinktime or this new queue
|
||||
* has some old slice time left and is of higher priority
|
||||
* has some old slice time left and is of higher priority or
|
||||
* this new queue is RT and the current one is BE
|
||||
*/
|
||||
cfq_preempt_queue(cfqd, cfqq);
|
||||
cfq_mark_cfqq_must_dispatch(cfqq);
|
||||
|
|
|
@ -268,7 +268,7 @@ int set_selection(const struct tiocl_selection __user *sel, struct tty_struct *t
|
|||
|
||||
/* Allocate a new buffer before freeing the old one ... */
|
||||
multiplier = use_unicode ? 3 : 1; /* chars can take up to 3 bytes */
|
||||
bp = kmalloc((sel_end-sel_start)/2*multiplier+1, GFP_KERNEL);
|
||||
bp = kmalloc(((sel_end-sel_start)/2+1)*multiplier, GFP_KERNEL);
|
||||
if (!bp) {
|
||||
printk(KERN_WARNING "selection: kmalloc() failed\n");
|
||||
clear_selection();
|
||||
|
|
|
@ -136,7 +136,7 @@ drm_gem_object_alloc(struct drm_device *dev, size_t size)
|
|||
obj = kcalloc(1, sizeof(*obj), GFP_KERNEL);
|
||||
|
||||
obj->dev = dev;
|
||||
obj->filp = shmem_file_setup("drm mm object", size, 0);
|
||||
obj->filp = shmem_file_setup("drm mm object", size, VM_NORESERVE);
|
||||
if (IS_ERR(obj->filp)) {
|
||||
kfree(obj);
|
||||
return NULL;
|
||||
|
|
|
@ -465,6 +465,16 @@ config BLK_DEV_CS5535
|
|||
|
||||
It is safe to say Y to this question.
|
||||
|
||||
config BLK_DEV_CS5536
|
||||
tristate "CS5536 chipset support"
|
||||
depends on X86_32
|
||||
select BLK_DEV_IDEDMA_PCI
|
||||
help
|
||||
This option enables support for the AMD CS5536
|
||||
companion chip used with the Geode LX processor family.
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config BLK_DEV_HPT366
|
||||
tristate "HPT36X/37X chipset support"
|
||||
select BLK_DEV_IDEDMA_PCI
|
||||
|
|
|
@ -43,6 +43,7 @@ obj-$(CONFIG_BLK_DEV_CMD64X) += cmd64x.o
|
|||
obj-$(CONFIG_BLK_DEV_CS5520) += cs5520.o
|
||||
obj-$(CONFIG_BLK_DEV_CS5530) += cs5530.o
|
||||
obj-$(CONFIG_BLK_DEV_CS5535) += cs5535.o
|
||||
obj-$(CONFIG_BLK_DEV_CS5536) += cs5536.o
|
||||
obj-$(CONFIG_BLK_DEV_SC1200) += sc1200.o
|
||||
obj-$(CONFIG_BLK_DEV_CY82C693) += cy82c693.o
|
||||
obj-$(CONFIG_BLK_DEV_DELKIN) += delkin_cb.o
|
||||
|
|
|
@ -0,0 +1,308 @@
|
|||
/*
|
||||
* CS5536 PATA support
|
||||
* (C) 2007 Martin K. Petersen <mkp@mkp.net>
|
||||
* (C) 2009 Bartlomiej Zolnierkiewicz
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Documentation:
|
||||
* Available from AMD web site.
|
||||
*
|
||||
* The IDE timing registers for the CS5536 live in the Geode Machine
|
||||
* Specific Register file and not PCI config space. Most BIOSes
|
||||
* virtualize the PCI registers so the chip looks like a standard IDE
|
||||
* controller. Unfortunately not all implementations get this right.
|
||||
* In particular some have problems with unaligned accesses to the
|
||||
* virtualized PCI registers. This driver always does full dword
|
||||
* writes to work around the issue. Also, in case of a bad BIOS this
|
||||
* driver can be loaded with the "msr=1" parameter which forces using
|
||||
* the Machine Specific Registers to configure the device.
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/ide.h>
|
||||
#include <asm/msr.h>
|
||||
|
||||
#define DRV_NAME "cs5536"
|
||||
|
||||
enum {
|
||||
MSR_IDE_CFG = 0x51300010,
|
||||
PCI_IDE_CFG = 0x40,
|
||||
|
||||
CFG = 0,
|
||||
DTC = 2,
|
||||
CAST = 3,
|
||||
ETC = 4,
|
||||
|
||||
IDE_CFG_CHANEN = (1 << 1),
|
||||
IDE_CFG_CABLE = (1 << 17) | (1 << 16),
|
||||
|
||||
IDE_D0_SHIFT = 24,
|
||||
IDE_D1_SHIFT = 16,
|
||||
IDE_DRV_MASK = 0xff,
|
||||
|
||||
IDE_CAST_D0_SHIFT = 6,
|
||||
IDE_CAST_D1_SHIFT = 4,
|
||||
IDE_CAST_DRV_MASK = 0x3,
|
||||
|
||||
IDE_CAST_CMD_SHIFT = 24,
|
||||
IDE_CAST_CMD_MASK = 0xff,
|
||||
|
||||
IDE_ETC_UDMA_MASK = 0xc0,
|
||||
};
|
||||
|
||||
static int use_msr;
|
||||
|
||||
static int cs5536_read(struct pci_dev *pdev, int reg, u32 *val)
|
||||
{
|
||||
if (unlikely(use_msr)) {
|
||||
u32 dummy;
|
||||
|
||||
rdmsr(MSR_IDE_CFG + reg, *val, dummy);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return pci_read_config_dword(pdev, PCI_IDE_CFG + reg * 4, val);
|
||||
}
|
||||
|
||||
static int cs5536_write(struct pci_dev *pdev, int reg, int val)
|
||||
{
|
||||
if (unlikely(use_msr)) {
|
||||
wrmsr(MSR_IDE_CFG + reg, val, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return pci_write_config_dword(pdev, PCI_IDE_CFG + reg * 4, val);
|
||||
}
|
||||
|
||||
static void cs5536_program_dtc(ide_drive_t *drive, u8 tim)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
|
||||
int dshift = (drive->dn & 1) ? IDE_D1_SHIFT : IDE_D0_SHIFT;
|
||||
u32 dtc;
|
||||
|
||||
cs5536_read(pdev, DTC, &dtc);
|
||||
dtc &= ~(IDE_DRV_MASK << dshift);
|
||||
dtc |= tim << dshift;
|
||||
cs5536_write(pdev, DTC, dtc);
|
||||
}
|
||||
|
||||
/**
|
||||
* cs5536_cable_detect - detect cable type
|
||||
* @hwif: Port to detect on
|
||||
*
|
||||
* Perform cable detection for ATA66 capable cable.
|
||||
*
|
||||
* Returns a cable type.
|
||||
*/
|
||||
|
||||
static u8 cs5536_cable_detect(ide_hwif_t *hwif)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(hwif->dev);
|
||||
u32 cfg;
|
||||
|
||||
cs5536_read(pdev, CFG, &cfg);
|
||||
|
||||
if (cfg & IDE_CFG_CABLE)
|
||||
return ATA_CBL_PATA80;
|
||||
else
|
||||
return ATA_CBL_PATA40;
|
||||
}
|
||||
|
||||
/**
|
||||
* cs5536_set_pio_mode - PIO timing setup
|
||||
* @drive: ATA device
|
||||
* @pio: PIO mode number
|
||||
*/
|
||||
|
||||
static void cs5536_set_pio_mode(ide_drive_t *drive, const u8 pio)
|
||||
{
|
||||
static const u8 drv_timings[5] = {
|
||||
0x98, 0x55, 0x32, 0x21, 0x20,
|
||||
};
|
||||
|
||||
static const u8 addr_timings[5] = {
|
||||
0x2, 0x1, 0x0, 0x0, 0x0,
|
||||
};
|
||||
|
||||
static const u8 cmd_timings[5] = {
|
||||
0x99, 0x92, 0x90, 0x22, 0x20,
|
||||
};
|
||||
|
||||
struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
|
||||
ide_drive_t *pair = ide_get_pair_dev(drive);
|
||||
int cshift = (drive->dn & 1) ? IDE_CAST_D1_SHIFT : IDE_CAST_D0_SHIFT;
|
||||
u32 cast;
|
||||
u8 cmd_pio = pio;
|
||||
|
||||
if (pair)
|
||||
cmd_pio = min(pio, ide_get_best_pio_mode(pair, 255, 4));
|
||||
|
||||
drive->drive_data &= (IDE_DRV_MASK << 8);
|
||||
drive->drive_data |= drv_timings[pio];
|
||||
|
||||
cs5536_program_dtc(drive, drv_timings[pio]);
|
||||
|
||||
cs5536_read(pdev, CAST, &cast);
|
||||
|
||||
cast &= ~(IDE_CAST_DRV_MASK << cshift);
|
||||
cast |= addr_timings[pio] << cshift;
|
||||
|
||||
cast &= ~(IDE_CAST_CMD_MASK << IDE_CAST_CMD_SHIFT);
|
||||
cast |= cmd_timings[cmd_pio] << IDE_CAST_CMD_SHIFT;
|
||||
|
||||
cs5536_write(pdev, CAST, cast);
|
||||
}
|
||||
|
||||
/**
|
||||
* cs5536_set_dma_mode - DMA timing setup
|
||||
* @drive: ATA device
|
||||
* @mode: DMA mode
|
||||
*/
|
||||
|
||||
static void cs5536_set_dma_mode(ide_drive_t *drive, const u8 mode)
|
||||
{
|
||||
static const u8 udma_timings[6] = {
|
||||
0xc2, 0xc1, 0xc0, 0xc4, 0xc5, 0xc6,
|
||||
};
|
||||
|
||||
static const u8 mwdma_timings[3] = {
|
||||
0x67, 0x21, 0x20,
|
||||
};
|
||||
|
||||
struct pci_dev *pdev = to_pci_dev(drive->hwif->dev);
|
||||
int dshift = (drive->dn & 1) ? IDE_D1_SHIFT : IDE_D0_SHIFT;
|
||||
u32 etc;
|
||||
|
||||
cs5536_read(pdev, ETC, &etc);
|
||||
|
||||
if (mode >= XFER_UDMA_0) {
|
||||
etc &= ~(IDE_DRV_MASK << dshift);
|
||||
etc |= udma_timings[mode - XFER_UDMA_0] << dshift;
|
||||
} else { /* MWDMA */
|
||||
etc &= ~(IDE_ETC_UDMA_MASK << dshift);
|
||||
drive->drive_data &= IDE_DRV_MASK;
|
||||
drive->drive_data |= mwdma_timings[mode - XFER_MW_DMA_0] << 8;
|
||||
}
|
||||
|
||||
cs5536_write(pdev, ETC, etc);
|
||||
}
|
||||
|
||||
static void cs5536_dma_start(ide_drive_t *drive)
|
||||
{
|
||||
if (drive->current_speed < XFER_UDMA_0 &&
|
||||
(drive->drive_data >> 8) != (drive->drive_data & IDE_DRV_MASK))
|
||||
cs5536_program_dtc(drive, drive->drive_data >> 8);
|
||||
|
||||
ide_dma_start(drive);
|
||||
}
|
||||
|
||||
static int cs5536_dma_end(ide_drive_t *drive)
|
||||
{
|
||||
int ret = ide_dma_end(drive);
|
||||
|
||||
if (drive->current_speed < XFER_UDMA_0 &&
|
||||
(drive->drive_data >> 8) != (drive->drive_data & IDE_DRV_MASK))
|
||||
cs5536_program_dtc(drive, drive->drive_data & IDE_DRV_MASK);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct ide_port_ops cs5536_port_ops = {
|
||||
.set_pio_mode = cs5536_set_pio_mode,
|
||||
.set_dma_mode = cs5536_set_dma_mode,
|
||||
.cable_detect = cs5536_cable_detect,
|
||||
};
|
||||
|
||||
static const struct ide_dma_ops cs5536_dma_ops = {
|
||||
.dma_host_set = ide_dma_host_set,
|
||||
.dma_setup = ide_dma_setup,
|
||||
.dma_exec_cmd = ide_dma_exec_cmd,
|
||||
.dma_start = cs5536_dma_start,
|
||||
.dma_end = cs5536_dma_end,
|
||||
.dma_test_irq = ide_dma_test_irq,
|
||||
.dma_lost_irq = ide_dma_lost_irq,
|
||||
.dma_timeout = ide_dma_timeout,
|
||||
};
|
||||
|
||||
static const struct ide_port_info cs5536_info = {
|
||||
.name = DRV_NAME,
|
||||
.port_ops = &cs5536_port_ops,
|
||||
.dma_ops = &cs5536_dma_ops,
|
||||
.host_flags = IDE_HFLAG_SINGLE,
|
||||
.pio_mask = ATA_PIO4,
|
||||
.mwdma_mask = ATA_MWDMA2,
|
||||
.udma_mask = ATA_UDMA5,
|
||||
};
|
||||
|
||||
/**
|
||||
* cs5536_init_one
|
||||
* @dev: PCI device
|
||||
* @id: Entry in match table
|
||||
*/
|
||||
|
||||
static int cs5536_init_one(struct pci_dev *dev, const struct pci_device_id *id)
|
||||
{
|
||||
u32 cfg;
|
||||
|
||||
if (use_msr)
|
||||
printk(KERN_INFO DRV_NAME ": Using MSR regs instead of PCI\n");
|
||||
|
||||
cs5536_read(dev, CFG, &cfg);
|
||||
|
||||
if ((cfg & IDE_CFG_CHANEN) == 0) {
|
||||
printk(KERN_ERR DRV_NAME ": disabled by BIOS\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
return ide_pci_init_one(dev, &cs5536_info, NULL);
|
||||
}
|
||||
|
||||
static const struct pci_device_id cs5536_pci_tbl[] = {
|
||||
{ PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_CS5536_IDE), },
|
||||
{ },
|
||||
};
|
||||
|
||||
static struct pci_driver cs5536_pci_driver = {
|
||||
.name = DRV_NAME,
|
||||
.id_table = cs5536_pci_tbl,
|
||||
.probe = cs5536_init_one,
|
||||
.remove = ide_pci_remove,
|
||||
.suspend = ide_pci_suspend,
|
||||
.resume = ide_pci_resume,
|
||||
};
|
||||
|
||||
static int __init cs5536_init(void)
|
||||
{
|
||||
return pci_register_driver(&cs5536_pci_driver);
|
||||
}
|
||||
|
||||
static void __exit cs5536_exit(void)
|
||||
{
|
||||
pci_unregister_driver(&cs5536_pci_driver);
|
||||
}
|
||||
|
||||
MODULE_AUTHOR("Martin K. Petersen, Bartlomiej Zolnierkiewicz");
|
||||
MODULE_DESCRIPTION("low-level driver for the CS5536 IDE controller");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DEVICE_TABLE(pci, cs5536_pci_tbl);
|
||||
|
||||
module_param_named(msr, use_msr, int, 0644);
|
||||
MODULE_PARM_DESC(msr, "Force using MSR to configure IDE function (Default: 0)");
|
||||
|
||||
module_init(cs5536_init);
|
||||
module_exit(cs5536_exit);
|
|
@ -534,7 +534,7 @@ icside_register_v6(struct icside_state *state, struct expansion_card *ec)
|
|||
d.dma_ops = NULL;
|
||||
}
|
||||
|
||||
ret = ide_host_register(host, NULL, hws);
|
||||
ret = ide_host_register(host, &d, hws);
|
||||
if (ret)
|
||||
goto err_free;
|
||||
|
||||
|
|
|
@ -282,7 +282,7 @@ static int do_drive_get_GTF(ide_drive_t *drive,
|
|||
port = hwif->channel ? drive->dn - 2: drive->dn;
|
||||
|
||||
DEBPRINT("ENTER: %s at %s, port#: %d, hard_port#: %d\n",
|
||||
hwif->name, dev->bus_id, port, hwif->channel);
|
||||
hwif->name, dev_name(dev), port, hwif->channel);
|
||||
|
||||
if ((drive->dev_flags & IDE_DFLAG_PRESENT) == 0) {
|
||||
DEBPRINT("%s drive %d:%d not present\n",
|
||||
|
|
|
@ -787,6 +787,9 @@ static ide_startstop_t cdrom_newpc_intr(ide_drive_t *drive)
|
|||
if (blk_fs_request(rq)) {
|
||||
ide_end_request(drive, 1, rq->nr_sectors);
|
||||
return ide_stopped;
|
||||
} else if (rq->cmd_type == REQ_TYPE_ATA_PC && !rq->bio) {
|
||||
ide_end_request(drive, 1, 1);
|
||||
return ide_stopped;
|
||||
}
|
||||
goto end_request;
|
||||
}
|
||||
|
|
|
@ -418,11 +418,14 @@ void ide_map_sg(ide_drive_t *drive, struct request *rq)
|
|||
ide_hwif_t *hwif = drive->hwif;
|
||||
struct scatterlist *sg = hwif->sg_table;
|
||||
|
||||
if (rq->cmd_type != REQ_TYPE_ATA_TASKFILE) {
|
||||
hwif->sg_nents = blk_rq_map_sg(drive->queue, rq, sg);
|
||||
} else {
|
||||
if (rq->cmd_type == REQ_TYPE_ATA_TASKFILE) {
|
||||
sg_init_one(sg, rq->buffer, rq->nr_sectors * SECTOR_SIZE);
|
||||
hwif->sg_nents = 1;
|
||||
} else if (!rq->bio) {
|
||||
sg_init_one(sg, rq->data, rq->data_len);
|
||||
hwif->sg_nents = 1;
|
||||
} else {
|
||||
hwif->sg_nents = blk_rq_map_sg(drive->queue, rq, sg);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1467,6 +1467,30 @@ struct ide_host *ide_host_alloc(const struct ide_port_info *d, hw_regs_t **hws)
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(ide_host_alloc);
|
||||
|
||||
static void ide_port_free(ide_hwif_t *hwif)
|
||||
{
|
||||
ide_port_free_devices(hwif);
|
||||
ide_free_port_slot(hwif->index);
|
||||
kfree(hwif);
|
||||
}
|
||||
|
||||
static void ide_disable_port(ide_hwif_t *hwif)
|
||||
{
|
||||
struct ide_host *host = hwif->host;
|
||||
int i;
|
||||
|
||||
printk(KERN_INFO "%s: disabling port\n", hwif->name);
|
||||
|
||||
for (i = 0; i < MAX_HOST_PORTS; i++) {
|
||||
if (host->ports[i] == hwif) {
|
||||
host->ports[i] = NULL;
|
||||
host->n_ports--;
|
||||
}
|
||||
}
|
||||
|
||||
ide_port_free(hwif);
|
||||
}
|
||||
|
||||
int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
|
||||
hw_regs_t **hws)
|
||||
{
|
||||
|
@ -1507,8 +1531,12 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
|
|||
hwif->present = 1;
|
||||
|
||||
if (hwif->chipset != ide_4drives || !hwif->mate ||
|
||||
!hwif->mate->present)
|
||||
ide_register_port(hwif);
|
||||
!hwif->mate->present) {
|
||||
if (ide_register_port(hwif)) {
|
||||
ide_disable_port(hwif);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (hwif->present)
|
||||
ide_port_tune_devices(hwif);
|
||||
|
@ -1521,7 +1549,8 @@ int ide_host_register(struct ide_host *host, const struct ide_port_info *d,
|
|||
if (hwif_init(hwif) == 0) {
|
||||
printk(KERN_INFO "%s: failed to initialize IDE "
|
||||
"interface\n", hwif->name);
|
||||
hwif->present = 0;
|
||||
device_unregister(&hwif->gendev);
|
||||
ide_disable_port(hwif);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1660,12 +1689,8 @@ void ide_host_free(struct ide_host *host)
|
|||
int i;
|
||||
|
||||
ide_host_for_each_port(i, hwif, host) {
|
||||
if (hwif == NULL)
|
||||
continue;
|
||||
|
||||
ide_port_free_devices(hwif);
|
||||
ide_free_port_slot(hwif->index);
|
||||
kfree(hwif);
|
||||
if (hwif)
|
||||
ide_port_free(hwif);
|
||||
}
|
||||
|
||||
kfree(host);
|
||||
|
|
|
@ -261,9 +261,9 @@ static int tx4939ide_build_dmatable(ide_drive_t *drive, struct request *rq)
|
|||
bcount = cur_len;
|
||||
/*
|
||||
* This workaround for zero count seems required.
|
||||
* (standard ide_build_dmatable do it too)
|
||||
* (standard ide_build_dmatable does it too)
|
||||
*/
|
||||
if ((bcount & 0xffff) == 0x0000)
|
||||
if (bcount == 0x10000)
|
||||
bcount = 0x8000;
|
||||
*table++ = bcount & 0xffff;
|
||||
*table++ = cur_addr;
|
||||
|
|
|
@ -448,6 +448,11 @@ static int __devinit via_init_one(struct pci_dev *dev, const struct pci_device_i
|
|||
d.host_flags |= IDE_HFLAG_FORCE_LEGACY_IRQS;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AMIGAONE
|
||||
if (machine_is(amigaone))
|
||||
d.host_flags |= IDE_HFLAG_FORCE_LEGACY_IRQS;
|
||||
#endif
|
||||
|
||||
d.udma_mask = via_config->udma_mask;
|
||||
|
||||
vdev = kzalloc(sizeof(*vdev), GFP_KERNEL);
|
||||
|
|
|
@ -576,6 +576,7 @@ static int set_control(struct saa7146_fh *fh, struct v4l2_control *c)
|
|||
vv->vflip = c->value;
|
||||
break;
|
||||
default: {
|
||||
mutex_unlock(&dev->lock);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -657,7 +657,7 @@ static int mxl5007t_get_status(struct dvb_frontend *fe, u32 *status)
|
|||
{
|
||||
struct mxl5007t_state *state = fe->tuner_priv;
|
||||
int rf_locked, ref_locked;
|
||||
s32 rf_input_level;
|
||||
s32 rf_input_level = 0;
|
||||
int ret;
|
||||
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
|
|
|
@ -93,6 +93,9 @@ struct dvb_ca_slot {
|
|||
/* current state of the CAM */
|
||||
int slot_state;
|
||||
|
||||
/* mutex used for serializing access to one CI slot */
|
||||
struct mutex slot_lock;
|
||||
|
||||
/* Number of CAMCHANGES that have occurred since last processing */
|
||||
atomic_t camchange_count;
|
||||
|
||||
|
@ -711,14 +714,20 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot, u8 * b
|
|||
dprintk("%s\n", __func__);
|
||||
|
||||
|
||||
// sanity check
|
||||
/* sanity check */
|
||||
if (bytes_write > ca->slot_info[slot].link_buf_size)
|
||||
return -EINVAL;
|
||||
|
||||
/* check if interface is actually waiting for us to read from it, or if a read is in progress */
|
||||
/* it is possible we are dealing with a single buffer implementation,
|
||||
thus if there is data available for read or if there is even a read
|
||||
already in progress, we do nothing but awake the kernel thread to
|
||||
process the data if necessary. */
|
||||
if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0)
|
||||
goto exitnowrite;
|
||||
if (status & (STATUSREG_DA | STATUSREG_RE)) {
|
||||
if (status & STATUSREG_DA)
|
||||
dvb_ca_en50221_thread_wakeup(ca);
|
||||
|
||||
status = -EAGAIN;
|
||||
goto exitnowrite;
|
||||
}
|
||||
|
@ -987,6 +996,8 @@ static int dvb_ca_en50221_thread(void *data)
|
|||
/* go through all the slots processing them */
|
||||
for (slot = 0; slot < ca->slot_count; slot++) {
|
||||
|
||||
mutex_lock(&ca->slot_info[slot].slot_lock);
|
||||
|
||||
// check the cam status + deal with CAMCHANGEs
|
||||
while (dvb_ca_en50221_check_camstatus(ca, slot)) {
|
||||
/* clear down an old CI slot if necessary */
|
||||
|
@ -1122,7 +1133,7 @@ static int dvb_ca_en50221_thread(void *data)
|
|||
|
||||
case DVB_CA_SLOTSTATE_RUNNING:
|
||||
if (!ca->open)
|
||||
continue;
|
||||
break;
|
||||
|
||||
// poll slots for data
|
||||
pktcount = 0;
|
||||
|
@ -1146,6 +1157,8 @@ static int dvb_ca_en50221_thread(void *data)
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
mutex_unlock(&ca->slot_info[slot].slot_lock);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1181,6 +1194,7 @@ static int dvb_ca_en50221_io_do_ioctl(struct inode *inode, struct file *file,
|
|||
switch (cmd) {
|
||||
case CA_RESET:
|
||||
for (slot = 0; slot < ca->slot_count; slot++) {
|
||||
mutex_lock(&ca->slot_info[slot].slot_lock);
|
||||
if (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_NONE) {
|
||||
dvb_ca_en50221_slot_shutdown(ca, slot);
|
||||
if (ca->flags & DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE)
|
||||
|
@ -1188,6 +1202,7 @@ static int dvb_ca_en50221_io_do_ioctl(struct inode *inode, struct file *file,
|
|||
slot,
|
||||
DVB_CA_EN50221_CAMCHANGE_INSERTED);
|
||||
}
|
||||
mutex_unlock(&ca->slot_info[slot].slot_lock);
|
||||
}
|
||||
ca->next_read_slot = 0;
|
||||
dvb_ca_en50221_thread_wakeup(ca);
|
||||
|
@ -1308,7 +1323,9 @@ static ssize_t dvb_ca_en50221_io_write(struct file *file,
|
|||
goto exit;
|
||||
}
|
||||
|
||||
mutex_lock(&ca->slot_info[slot].slot_lock);
|
||||
status = dvb_ca_en50221_write_data(ca, slot, fragbuf, fraglen + 2);
|
||||
mutex_unlock(&ca->slot_info[slot].slot_lock);
|
||||
if (status == (fraglen + 2)) {
|
||||
written = 1;
|
||||
break;
|
||||
|
@ -1664,6 +1681,7 @@ int dvb_ca_en50221_init(struct dvb_adapter *dvb_adapter,
|
|||
ca->slot_info[i].slot_state = DVB_CA_SLOTSTATE_NONE;
|
||||
atomic_set(&ca->slot_info[i].camchange_count, 0);
|
||||
ca->slot_info[i].camchange_type = DVB_CA_EN50221_CAMCHANGE_REMOVED;
|
||||
mutex_init(&ca->slot_info[i].slot_lock);
|
||||
}
|
||||
|
||||
if (signal_pending(current)) {
|
||||
|
|
|
@ -45,8 +45,10 @@ struct dvb_ca_en50221 {
|
|||
/* the module owning this structure */
|
||||
struct module* owner;
|
||||
|
||||
/* NOTE: the read_*, write_* and poll_slot_status functions must use locks as
|
||||
* they may be called from several threads at once */
|
||||
/* NOTE: the read_*, write_* and poll_slot_status functions will be
|
||||
* called for different slots concurrently and need to use locks where
|
||||
* and if appropriate. There will be no concurrent access to one slot.
|
||||
*/
|
||||
|
||||
/* functions for accessing attribute memory on the CAM */
|
||||
int (*read_attribute_mem)(struct dvb_ca_en50221* ca, int slot, int address);
|
||||
|
|
|
@ -220,7 +220,7 @@ static int af9005_get_post_vit_ber(struct dvb_frontend *fe,
|
|||
u16 * abort_count)
|
||||
{
|
||||
u32 loc_cw_count = 0, loc_err_count;
|
||||
u16 loc_abort_count;
|
||||
u16 loc_abort_count = 0;
|
||||
int ret;
|
||||
|
||||
ret =
|
||||
|
|
|
@ -694,7 +694,12 @@ static int af9015_read_config(struct usb_device *udev)
|
|||
|
||||
/* IR remote controller */
|
||||
req.addr = AF9015_EEPROM_IR_MODE;
|
||||
/* first message will timeout often due to possible hw bug */
|
||||
for (i = 0; i < 4; i++) {
|
||||
ret = af9015_rw_udev(udev, &req);
|
||||
if (!ret)
|
||||
break;
|
||||
}
|
||||
if (ret)
|
||||
goto error;
|
||||
deb_info("%s: IR mode:%d\n", __func__, val);
|
||||
|
@ -835,18 +840,19 @@ static int af9015_read_config(struct usb_device *udev)
|
|||
if (!dvb_usb_af9015_dual_mode)
|
||||
af9015_config.dual_mode = 0;
|
||||
|
||||
/* set buffer size according to USB port speed */
|
||||
/* Set adapter0 buffer size according to USB port speed, adapter1 buffer
|
||||
size can be static because it is enabled only USB2.0 */
|
||||
for (i = 0; i < af9015_properties_count; i++) {
|
||||
/* USB1.1 set smaller buffersize and disable 2nd adapter */
|
||||
if (udev->speed == USB_SPEED_FULL) {
|
||||
af9015_properties[i].adapter->stream.u.bulk.buffersize =
|
||||
TS_USB11_MAX_PACKET_SIZE;
|
||||
af9015_properties[i].adapter[0].stream.u.bulk.buffersize
|
||||
= TS_USB11_MAX_PACKET_SIZE;
|
||||
/* disable 2nd adapter because we don't have
|
||||
PID-filters */
|
||||
af9015_config.dual_mode = 0;
|
||||
} else {
|
||||
af9015_properties[i].adapter->stream.u.bulk.buffersize =
|
||||
TS_USB20_MAX_PACKET_SIZE;
|
||||
af9015_properties[i].adapter[0].stream.u.bulk.buffersize
|
||||
= TS_USB20_MAX_PACKET_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1254,6 +1260,12 @@ static struct dvb_usb_device_properties af9015_properties[] = {
|
|||
.type = USB_BULK,
|
||||
.count = 6,
|
||||
.endpoint = 0x85,
|
||||
.u = {
|
||||
.bulk = {
|
||||
.buffersize =
|
||||
TS_USB20_MAX_PACKET_SIZE,
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
@ -1353,6 +1365,12 @@ static struct dvb_usb_device_properties af9015_properties[] = {
|
|||
.type = USB_BULK,
|
||||
.count = 6,
|
||||
.endpoint = 0x85,
|
||||
.u = {
|
||||
.bulk = {
|
||||
.buffersize =
|
||||
TS_USB20_MAX_PACKET_SIZE,
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1393,6 +1393,9 @@ struct usb_device_id dib0700_usb_id_table[] = {
|
|||
{ USB_DEVICE(USB_VID_ASUS, USB_PID_ASUS_U3000H) },
|
||||
/* 40 */{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E) },
|
||||
{ USB_DEVICE(USB_VID_PINNACLE, USB_PID_PINNACLE_PCTV801E_SE) },
|
||||
{ USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_EXPRESS) },
|
||||
{ USB_DEVICE(USB_VID_TERRATEC,
|
||||
USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2) },
|
||||
{ 0 } /* Terminating entry */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, dib0700_usb_id_table);
|
||||
|
@ -1537,7 +1540,8 @@ struct dvb_usb_device_properties dib0700_devices[] = {
|
|||
{ "DiBcom STK7700D reference design",
|
||||
{ &dib0700_usb_id_table[14], NULL },
|
||||
{ NULL },
|
||||
}
|
||||
},
|
||||
|
||||
},
|
||||
|
||||
.rc_interval = DEFAULT_RC_INTERVAL,
|
||||
|
@ -1557,7 +1561,7 @@ struct dvb_usb_device_properties dib0700_devices[] = {
|
|||
},
|
||||
},
|
||||
|
||||
.num_device_descs = 2,
|
||||
.num_device_descs = 3,
|
||||
.devices = {
|
||||
{ "ASUS My Cinema U3000 Mini DVBT Tuner",
|
||||
{ &dib0700_usb_id_table[23], NULL },
|
||||
|
@ -1566,6 +1570,10 @@ struct dvb_usb_device_properties dib0700_devices[] = {
|
|||
{ "Yuan EC372S",
|
||||
{ &dib0700_usb_id_table[31], NULL },
|
||||
{ NULL },
|
||||
},
|
||||
{ "Terratec Cinergy T Express",
|
||||
{ &dib0700_usb_id_table[42], NULL },
|
||||
{ NULL },
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -1653,7 +1661,7 @@ struct dvb_usb_device_properties dib0700_devices[] = {
|
|||
}
|
||||
},
|
||||
|
||||
.num_device_descs = 4,
|
||||
.num_device_descs = 5,
|
||||
.devices = {
|
||||
{ "DiBcom STK7070PD reference design",
|
||||
{ &dib0700_usb_id_table[17], NULL },
|
||||
|
@ -1670,6 +1678,10 @@ struct dvb_usb_device_properties dib0700_devices[] = {
|
|||
{ "Hauppauge Nova-TD-500 (84xxx)",
|
||||
{ &dib0700_usb_id_table[36], NULL },
|
||||
{ NULL },
|
||||
},
|
||||
{ "Terratec Cinergy DT USB XS Diversity",
|
||||
{ &dib0700_usb_id_table[43], NULL },
|
||||
{ NULL },
|
||||
}
|
||||
}
|
||||
}, { DIB0700_DEFAULT_DEVICE_PROPERTIES,
|
||||
|
|
|
@ -162,8 +162,10 @@
|
|||
#define USB_PID_AVERMEDIA_A309 0xa309
|
||||
#define USB_PID_TECHNOTREND_CONNECT_S2400 0x3006
|
||||
#define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY 0x005a
|
||||
#define USB_PID_TERRATEC_CINERGY_DT_XS_DIVERSITY_2 0x0081
|
||||
#define USB_PID_TERRATEC_CINERGY_HT_USB_XE 0x0058
|
||||
#define USB_PID_TERRATEC_CINERGY_HT_EXPRESS 0x0060
|
||||
#define USB_PID_TERRATEC_CINERGY_T_EXPRESS 0x0062
|
||||
#define USB_PID_TERRATEC_CINERGY_T_XXS 0x0078
|
||||
#define USB_PID_PINNACLE_EXPRESSCARD_320CX 0x022e
|
||||
#define USB_PID_PINNACLE_PCTV2000E 0x022c
|
||||
|
|
|
@ -646,7 +646,7 @@ static int drx_tune(struct drx397xD_state *s,
|
|||
u32 edi = 0, ebx = 0, ebp = 0, edx = 0;
|
||||
u16 v20 = 0, v1E = 0, v16 = 0, v14 = 0, v12 = 0, v10 = 0, v0E = 0;
|
||||
|
||||
int rc, df_tuner;
|
||||
int rc, df_tuner = 0;
|
||||
int a, b, c, d;
|
||||
pr_debug("%s %d\n", __func__, s->config.d60);
|
||||
|
||||
|
|
|
@ -545,9 +545,6 @@ static int s5h1409_set_frontend(struct dvb_frontend *fe,
|
|||
|
||||
s5h1409_enable_modulation(fe, p->u.vsb.modulation);
|
||||
|
||||
/* Allow the demod to settle */
|
||||
msleep(100);
|
||||
|
||||
if (fe->ops.tuner_ops.set_params) {
|
||||
if (fe->ops.i2c_gate_ctrl)
|
||||
fe->ops.i2c_gate_ctrl(fe, 1);
|
||||
|
@ -562,6 +559,10 @@ static int s5h1409_set_frontend(struct dvb_frontend *fe,
|
|||
s5h1409_set_qam_interleave_mode(fe);
|
||||
}
|
||||
|
||||
/* Issue a reset to the demod so it knows to resync against the
|
||||
newly tuned frequency */
|
||||
s5h1409_softreset(fe);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@ inline u32 stb0899_do_div(u64 n, u32 d)
|
|||
return n;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* These functions are currently unused */
|
||||
/*
|
||||
* stb0899_calc_srate
|
||||
* Compute symbol rate
|
||||
|
@ -63,6 +65,7 @@ static u32 stb0899_get_srate(struct stb0899_state *state)
|
|||
|
||||
return stb0899_calc_srate(internal->master_clk, sfr);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* stb0899_set_srate
|
||||
|
|
|
@ -470,6 +470,7 @@ static void frontend_init(struct budget *budget)
|
|||
budget->dvb_frontend = dvb_attach(l64781_attach, &grundig_29504_401_config, &budget->i2c_adap);
|
||||
if (budget->dvb_frontend) {
|
||||
budget->dvb_frontend->ops.tuner_ops.set_params = grundig_29504_401_tuner_set_params;
|
||||
budget->dvb_frontend->tuner_priv = NULL;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -1384,7 +1384,7 @@ static int ttusb_dec_boot_dsp(struct ttusb_dec *dec)
|
|||
static int ttusb_dec_init_stb(struct ttusb_dec *dec)
|
||||
{
|
||||
int result;
|
||||
unsigned int mode, model, version;
|
||||
unsigned int mode = 0, model = 0, version = 0;
|
||||
|
||||
dprintk("%s\n", __func__);
|
||||
|
||||
|
|
|
@ -194,10 +194,10 @@ static int amradio_start(struct amradio_device *radio)
|
|||
return retval;
|
||||
}
|
||||
|
||||
mutex_unlock(&radio->lock);
|
||||
|
||||
radio->muted = 0;
|
||||
|
||||
mutex_unlock(&radio->lock);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -230,10 +230,10 @@ static int amradio_stop(struct amradio_device *radio)
|
|||
return retval;
|
||||
}
|
||||
|
||||
mutex_unlock(&radio->lock);
|
||||
|
||||
radio->muted = 1;
|
||||
|
||||
mutex_unlock(&radio->lock);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -284,10 +284,10 @@ static int amradio_setfreq(struct amradio_device *radio, int freq)
|
|||
return retval;
|
||||
}
|
||||
|
||||
mutex_unlock(&radio->lock);
|
||||
|
||||
radio->stereo = 0;
|
||||
|
||||
mutex_unlock(&radio->lock);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
*/
|
||||
|
||||
|
||||
#include <linux/version.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/i2c.h>
|
||||
|
|
|
@ -1586,7 +1586,8 @@ static int mpeg_open(struct file *file)
|
|||
lock_kernel();
|
||||
list_for_each(list, &cx23885_devlist) {
|
||||
h = list_entry(list, struct cx23885_dev, devlist);
|
||||
if (h->v4l_device->minor == minor) {
|
||||
if (h->v4l_device &&
|
||||
h->v4l_device->minor == minor) {
|
||||
dev = h;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -730,7 +730,8 @@ static int video_open(struct file *file)
|
|||
lock_kernel();
|
||||
list_for_each(list, &cx23885_devlist) {
|
||||
h = list_entry(list, struct cx23885_dev, devlist);
|
||||
if (h->video_dev->minor == minor) {
|
||||
if (h->video_dev &&
|
||||
h->video_dev->minor == minor) {
|
||||
dev = h;
|
||||
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
|
||||
}
|
||||
|
|
|
@ -1382,6 +1382,14 @@ static int cx25840_log_status(struct v4l2_subdev *sd)
|
|||
|
||||
static int cx25840_command(struct i2c_client *client, unsigned cmd, void *arg)
|
||||
{
|
||||
/* ignore this command */
|
||||
if (cmd == TUNER_SET_TYPE_ADDR || cmd == TUNER_SET_CONFIG)
|
||||
return 0;
|
||||
|
||||
/* Old-style drivers rely on initialization on first use, so
|
||||
call the init whenever a command is issued to this driver.
|
||||
New-style drivers using v4l2_subdev should call init explicitly. */
|
||||
cx25840_init(i2c_get_clientdata(client), 0);
|
||||
return v4l2_subdev_command(i2c_get_clientdata(client), cmd, arg);
|
||||
}
|
||||
|
||||
|
|
|
@ -614,35 +614,42 @@ static struct stv0288_config tevii_tuner_earda_config = {
|
|||
.set_ts_params = cx24116_set_ts_param,
|
||||
};
|
||||
|
||||
static int cx8802_alloc_frontends(struct cx8802_dev *dev)
|
||||
{
|
||||
struct cx88_core *core = dev->core;
|
||||
struct videobuf_dvb_frontend *fe = NULL;
|
||||
int i;
|
||||
|
||||
mutex_init(&dev->frontends.lock);
|
||||
INIT_LIST_HEAD(&dev->frontends.felist);
|
||||
|
||||
if (!core->board.num_frontends)
|
||||
return -ENODEV;
|
||||
|
||||
printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,
|
||||
core->board.num_frontends);
|
||||
for (i = 1; i <= core->board.num_frontends; i++) {
|
||||
fe = videobuf_dvb_alloc_frontend(&dev->frontends, i);
|
||||
if (!fe) {
|
||||
printk(KERN_ERR "%s() failed to alloc\n", __func__);
|
||||
videobuf_dvb_dealloc_frontends(&dev->frontends);
|
||||
return -ENOMEM;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dvb_register(struct cx8802_dev *dev)
|
||||
{
|
||||
struct cx88_core *core = dev->core;
|
||||
struct videobuf_dvb_frontend *fe0, *fe1 = NULL;
|
||||
int mfe_shared = 0; /* bus not shared by default */
|
||||
int i;
|
||||
|
||||
if (0 != core->i2c_rc) {
|
||||
printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);
|
||||
goto frontend_detach;
|
||||
}
|
||||
|
||||
if (!core->board.num_frontends)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_init(&dev->frontends.lock);
|
||||
INIT_LIST_HEAD(&dev->frontends.felist);
|
||||
|
||||
printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,
|
||||
core->board.num_frontends);
|
||||
for (i = 1; i <= core->board.num_frontends; i++) {
|
||||
fe0 = videobuf_dvb_alloc_frontend(&dev->frontends, i);
|
||||
if (!fe0) {
|
||||
printk(KERN_ERR "%s() failed to alloc\n", __func__);
|
||||
videobuf_dvb_dealloc_frontends(&dev->frontends);
|
||||
goto frontend_detach;
|
||||
}
|
||||
}
|
||||
|
||||
/* Get the first frontend */
|
||||
fe0 = videobuf_dvb_get_frontend(&dev->frontends, 1);
|
||||
if (!fe0)
|
||||
|
@ -1243,6 +1250,8 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)
|
|||
struct cx88_core *core = drv->core;
|
||||
struct cx8802_dev *dev = drv->core->dvbdev;
|
||||
int err;
|
||||
struct videobuf_dvb_frontend *fe;
|
||||
int i;
|
||||
|
||||
dprintk( 1, "%s\n", __func__);
|
||||
dprintk( 1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",
|
||||
|
@ -1258,17 +1267,17 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)
|
|||
/* If vp3054 isn't enabled, a stub will just return 0 */
|
||||
err = vp3054_i2c_probe(dev);
|
||||
if (0 != err)
|
||||
goto fail_probe;
|
||||
goto fail_core;
|
||||
|
||||
/* dvb stuff */
|
||||
printk(KERN_INFO "%s/2: cx2388x based DVB/ATSC card\n", core->name);
|
||||
dev->ts_gen_cntrl = 0x0c;
|
||||
|
||||
err = -ENODEV;
|
||||
if (core->board.num_frontends) {
|
||||
struct videobuf_dvb_frontend *fe;
|
||||
int i;
|
||||
err = cx8802_alloc_frontends(dev);
|
||||
if (err)
|
||||
goto fail_core;
|
||||
|
||||
err = -ENODEV;
|
||||
for (i = 1; i <= core->board.num_frontends; i++) {
|
||||
fe = videobuf_dvb_get_frontend(&core->dvbdev->frontends, i);
|
||||
if (fe == NULL) {
|
||||
|
@ -1285,12 +1294,7 @@ static int cx8802_dvb_probe(struct cx8802_driver *drv)
|
|||
/* init struct videobuf_dvb */
|
||||
fe->dvb.name = dev->core->name;
|
||||
}
|
||||
} else {
|
||||
/* no frontends allocated */
|
||||
printk(KERN_ERR "%s/2 .num_frontends should be non-zero\n",
|
||||
core->name);
|
||||
goto fail_core;
|
||||
}
|
||||
|
||||
err = dvb_register(dev);
|
||||
if (err)
|
||||
/* frontends/adapter de-allocated in dvb_register */
|
||||
|
|
|
@ -336,8 +336,8 @@ struct cx88_core {
|
|||
/* config info -- dvb */
|
||||
#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)
|
||||
int (*prev_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage);
|
||||
void (*gate_ctrl)(struct cx88_core *core, int open);
|
||||
#endif
|
||||
void (*gate_ctrl)(struct cx88_core *core, int open);
|
||||
|
||||
/* state info */
|
||||
struct task_struct *kthread;
|
||||
|
|
|
@ -62,9 +62,15 @@ static int em28xx_isoc_audio_deinit(struct em28xx *dev)
|
|||
|
||||
dprintk("Stopping isoc\n");
|
||||
for (i = 0; i < EM28XX_AUDIO_BUFS; i++) {
|
||||
if (!irqs_disabled())
|
||||
usb_kill_urb(dev->adev.urb[i]);
|
||||
else
|
||||
usb_unlink_urb(dev->adev.urb[i]);
|
||||
usb_free_urb(dev->adev.urb[i]);
|
||||
dev->adev.urb[i] = NULL;
|
||||
|
||||
kfree(dev->adev.transfer_buffer[i]);
|
||||
dev->adev.transfer_buffer[i] = NULL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -389,11 +395,15 @@ static int snd_em28xx_capture_trigger(struct snd_pcm_substream *substream,
|
|||
static snd_pcm_uframes_t snd_em28xx_capture_pointer(struct snd_pcm_substream
|
||||
*substream)
|
||||
{
|
||||
struct em28xx *dev;
|
||||
unsigned long flags;
|
||||
|
||||
struct em28xx *dev;
|
||||
snd_pcm_uframes_t hwptr_done;
|
||||
|
||||
dev = snd_pcm_substream_chip(substream);
|
||||
spin_lock_irqsave(&dev->adev.slock, flags);
|
||||
hwptr_done = dev->adev.hwptr_done_capture;
|
||||
spin_unlock_irqrestore(&dev->adev.slock, flags);
|
||||
|
||||
return hwptr_done;
|
||||
}
|
||||
|
|
|
@ -102,6 +102,18 @@ static struct em28xx_reg_seq em2880_msi_digivox_ad_analog[] = {
|
|||
/* Board - EM2870 Kworld 355u
|
||||
Analog - No input analog */
|
||||
|
||||
static struct em28xx_reg_seq kworld_330u_analog[] = {
|
||||
{EM28XX_R08_GPIO, 0x6d, ~EM_GPIO_4, 10},
|
||||
{EM2880_R04_GPO, 0x00, 0xff, 10},
|
||||
{ -1, -1, -1, -1},
|
||||
};
|
||||
|
||||
static struct em28xx_reg_seq kworld_330u_digital[] = {
|
||||
{EM28XX_R08_GPIO, 0x6e, ~EM_GPIO_4, 10},
|
||||
{EM2880_R04_GPO, 0x08, 0xff, 10},
|
||||
{ -1, -1, -1, -1},
|
||||
};
|
||||
|
||||
/* Callback for the most boards */
|
||||
static struct em28xx_reg_seq default_tuner_gpio[] = {
|
||||
{EM28XX_R08_GPIO, EM_GPIO_4, EM_GPIO_4, 10},
|
||||
|
@ -1177,29 +1189,33 @@ struct em28xx_board em28xx_boards[] = {
|
|||
.gpio = hauppauge_wintv_hvr_900_analog,
|
||||
} },
|
||||
},
|
||||
[EM2883_BOARD_KWORLD_HYBRID_A316] = {
|
||||
[EM2883_BOARD_KWORLD_HYBRID_330U] = {
|
||||
.name = "Kworld PlusTV HD Hybrid 330",
|
||||
.tuner_type = TUNER_XC2028,
|
||||
.tuner_gpio = default_tuner_gpio,
|
||||
.decoder = EM28XX_TVP5150,
|
||||
.mts_firmware = 1,
|
||||
.has_dvb = 1,
|
||||
.dvb_gpio = default_digital,
|
||||
.dvb_gpio = kworld_330u_digital,
|
||||
.xclk = EM28XX_XCLK_FREQUENCY_12MHZ,
|
||||
.i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE | EM28XX_I2C_EEPROM_ON_BOARD | EM28XX_I2C_EEPROM_KEY_VALID,
|
||||
.input = { {
|
||||
.type = EM28XX_VMUX_TELEVISION,
|
||||
.vmux = TVP5150_COMPOSITE0,
|
||||
.amux = EM28XX_AMUX_VIDEO,
|
||||
.gpio = default_analog,
|
||||
.gpio = kworld_330u_analog,
|
||||
.aout = EM28XX_AOUT_PCM_IN | EM28XX_AOUT_PCM_STEREO,
|
||||
}, {
|
||||
.type = EM28XX_VMUX_COMPOSITE1,
|
||||
.vmux = TVP5150_COMPOSITE1,
|
||||
.amux = EM28XX_AMUX_LINE_IN,
|
||||
.gpio = hauppauge_wintv_hvr_900_analog,
|
||||
.gpio = kworld_330u_analog,
|
||||
.aout = EM28XX_AOUT_PCM_IN | EM28XX_AOUT_PCM_STEREO,
|
||||
}, {
|
||||
.type = EM28XX_VMUX_SVIDEO,
|
||||
.vmux = TVP5150_SVIDEO,
|
||||
.amux = EM28XX_AMUX_LINE_IN,
|
||||
.gpio = hauppauge_wintv_hvr_900_analog,
|
||||
.gpio = kworld_330u_analog,
|
||||
} },
|
||||
},
|
||||
[EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU] = {
|
||||
|
@ -1249,7 +1265,7 @@ struct usb_device_id em28xx_id_table [] = {
|
|||
{ USB_DEVICE(0xeb1a, 0xe310),
|
||||
.driver_info = EM2880_BOARD_MSI_DIGIVOX_AD },
|
||||
{ USB_DEVICE(0xeb1a, 0xa316),
|
||||
.driver_info = EM2883_BOARD_KWORLD_HYBRID_A316 },
|
||||
.driver_info = EM2883_BOARD_KWORLD_HYBRID_330U },
|
||||
{ USB_DEVICE(0xeb1a, 0xe320),
|
||||
.driver_info = EM2880_BOARD_MSI_DIGIVOX_AD_II },
|
||||
{ USB_DEVICE(0xeb1a, 0xe323),
|
||||
|
@ -1526,6 +1542,10 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl)
|
|||
/* FIXME: Better to specify the needed IF */
|
||||
ctl->demod = XC3028_FE_DEFAULT;
|
||||
break;
|
||||
case EM2883_BOARD_KWORLD_HYBRID_330U:
|
||||
ctl->demod = XC3028_FE_CHINA;
|
||||
ctl->fname = XC2028_DEFAULT_FIRMWARE;
|
||||
break;
|
||||
default:
|
||||
ctl->demod = XC3028_FE_OREN538;
|
||||
}
|
||||
|
|
|
@ -438,6 +438,10 @@ int em28xx_audio_analog_set(struct em28xx *dev)
|
|||
if (dev->audio_mode.ac97 != EM28XX_NO_AC97) {
|
||||
int vol;
|
||||
|
||||
em28xx_write_ac97(dev, AC97_POWER_DOWN_CTRL, 0x4200);
|
||||
em28xx_write_ac97(dev, AC97_EXT_AUD_CTRL, 0x0031);
|
||||
em28xx_write_ac97(dev, AC97_PCM_IN_SRATE, 0xbb80);
|
||||
|
||||
/* LSB: left channel - both channels with the same level */
|
||||
vol = (0x1f - dev->volume) | ((0x1f - dev->volume) << 8);
|
||||
|
||||
|
@ -454,6 +458,15 @@ int em28xx_audio_analog_set(struct em28xx *dev)
|
|||
em28xx_warn("couldn't setup AC97 register %d\n",
|
||||
outputs[i].reg);
|
||||
}
|
||||
|
||||
if (dev->ctl_aoutput & EM28XX_AOUT_PCM_IN) {
|
||||
int sel = ac97_return_record_select(dev->ctl_aoutput);
|
||||
|
||||
/* Use the same input for both left and right channels */
|
||||
sel |= (sel << 8);
|
||||
|
||||
em28xx_write_ac97(dev, AC97_RECORD_SELECT, sel);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -847,8 +860,11 @@ void em28xx_uninit_isoc(struct em28xx *dev)
|
|||
for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {
|
||||
urb = dev->isoc_ctl.urb[i];
|
||||
if (urb) {
|
||||
if (!irqs_disabled())
|
||||
usb_kill_urb(urb);
|
||||
else
|
||||
usb_unlink_urb(urb);
|
||||
|
||||
if (dev->isoc_ctl.transfer_buffer[i]) {
|
||||
usb_buffer_free(dev->udev,
|
||||
urb->transfer_buffer_length,
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include "lgdt330x.h"
|
||||
#include "zl10353.h"
|
||||
#include "s5h1409.h"
|
||||
#ifdef EM28XX_DRX397XD_SUPPORT
|
||||
#include "drx397xD.h"
|
||||
#endif
|
||||
|
@ -232,6 +233,15 @@ static struct zl10353_config em28xx_zl10353_with_xc3028 = {
|
|||
.if2 = 45600,
|
||||
};
|
||||
|
||||
static struct s5h1409_config em28xx_s5h1409_with_xc3028 = {
|
||||
.demod_address = 0x32 >> 1,
|
||||
.output_mode = S5H1409_PARALLEL_OUTPUT,
|
||||
.gpio = S5H1409_GPIO_OFF,
|
||||
.inversion = S5H1409_INVERSION_OFF,
|
||||
.status_mode = S5H1409_DEMODLOCKING,
|
||||
.mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK
|
||||
};
|
||||
|
||||
#ifdef EM28XX_DRX397XD_SUPPORT
|
||||
/* [TODO] djh - not sure yet what the device config needs to contain */
|
||||
static struct drx397xD_config em28xx_drx397xD_with_xc3028 = {
|
||||
|
@ -412,7 +422,6 @@ static int dvb_init(struct em28xx *dev)
|
|||
case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850:
|
||||
case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
||||
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
|
||||
case EM2883_BOARD_KWORLD_HYBRID_A316:
|
||||
case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
|
||||
dvb->frontend = dvb_attach(lgdt330x_attach,
|
||||
&em2880_lgdt3303_dev,
|
||||
|
@ -433,6 +442,15 @@ static int dvb_init(struct em28xx *dev)
|
|||
goto out_free;
|
||||
}
|
||||
break;
|
||||
case EM2883_BOARD_KWORLD_HYBRID_330U:
|
||||
dvb->frontend = dvb_attach(s5h1409_attach,
|
||||
&em28xx_s5h1409_with_xc3028,
|
||||
&dev->i2c_adap);
|
||||
if (attach_xc3028(0x61, dev) < 0) {
|
||||
result = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
break;
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
||||
#ifdef EM28XX_DRX397XD_SUPPORT
|
||||
/* We don't have the config structure properly populated, so
|
||||
|
|
|
@ -886,10 +886,10 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int i)
|
|||
if (0 == INPUT(i)->type)
|
||||
return -EINVAL;
|
||||
|
||||
dev->ctl_input = i;
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
video_mux(dev, i);
|
||||
|
||||
video_mux(dev, dev->ctl_input);
|
||||
mutex_unlock(&dev->lock);
|
||||
return 0;
|
||||
}
|
||||
|
@ -939,6 +939,12 @@ static int vidioc_s_audio(struct file *file, void *priv, struct v4l2_audio *a)
|
|||
struct em28xx_fh *fh = priv;
|
||||
struct em28xx *dev = fh->dev;
|
||||
|
||||
|
||||
if (a->index >= MAX_EM28XX_INPUT)
|
||||
return -EINVAL;
|
||||
if (0 == INPUT(a->index)->type)
|
||||
return -EINVAL;
|
||||
|
||||
mutex_lock(&dev->lock);
|
||||
|
||||
dev->ctl_ainput = INPUT(a->index)->amux;
|
||||
|
@ -1950,6 +1956,7 @@ static struct video_device *em28xx_vdev_init(struct em28xx *dev,
|
|||
|
||||
int em28xx_register_analog_devices(struct em28xx *dev)
|
||||
{
|
||||
u8 val;
|
||||
int ret;
|
||||
|
||||
printk(KERN_INFO "%s: v4l2 driver version %d.%d.%d\n",
|
||||
|
@ -1957,23 +1964,6 @@ int em28xx_register_analog_devices(struct em28xx *dev)
|
|||
(EM28XX_VERSION_CODE >> 16) & 0xff,
|
||||
(EM28XX_VERSION_CODE >> 8) & 0xff, EM28XX_VERSION_CODE & 0xff);
|
||||
|
||||
/* Analog specific initialization */
|
||||
dev->format = &format[0];
|
||||
video_mux(dev, 0);
|
||||
|
||||
/* enable vbi capturing */
|
||||
|
||||
/* em28xx_write_reg(dev, EM28XX_R0E_AUDIOSRC, 0xc0); audio register */
|
||||
/* em28xx_write_reg(dev, EM28XX_R0F_XCLK, 0x80); clk register */
|
||||
em28xx_write_reg(dev, EM28XX_R11_VINCTRL, 0x51);
|
||||
|
||||
dev->mute = 1; /* maybe not the right place... */
|
||||
dev->volume = 0x1f;
|
||||
|
||||
em28xx_set_outfmt(dev);
|
||||
em28xx_colorlevels_set_default(dev);
|
||||
em28xx_compression_disable(dev);
|
||||
|
||||
/* set default norm */
|
||||
dev->norm = em28xx_video_template.current_norm;
|
||||
dev->width = norm_maxw(dev);
|
||||
|
@ -1981,9 +1971,26 @@ int em28xx_register_analog_devices(struct em28xx *dev)
|
|||
dev->interlaced = EM28XX_INTERLACED_DEFAULT;
|
||||
dev->hscale = 0;
|
||||
dev->vscale = 0;
|
||||
dev->ctl_input = 0;
|
||||
|
||||
/* FIXME: This is a very bad hack! Not all devices have TV on input 2 */
|
||||
dev->ctl_input = 2;
|
||||
/* Analog specific initialization */
|
||||
dev->format = &format[0];
|
||||
video_mux(dev, dev->ctl_input);
|
||||
|
||||
/* Audio defaults */
|
||||
dev->mute = 1;
|
||||
dev->volume = 0x1f;
|
||||
|
||||
/* enable vbi capturing */
|
||||
|
||||
/* em28xx_write_reg(dev, EM28XX_R0E_AUDIOSRC, 0xc0); audio register */
|
||||
val = (u8)em28xx_read_reg(dev, EM28XX_R0F_XCLK);
|
||||
em28xx_write_reg(dev, EM28XX_R0F_XCLK, (EM28XX_XCLK_AUDIO_UNMUTE | val));
|
||||
em28xx_write_reg(dev, EM28XX_R11_VINCTRL, 0x51);
|
||||
|
||||
em28xx_set_outfmt(dev);
|
||||
em28xx_colorlevels_set_default(dev);
|
||||
em28xx_compression_disable(dev);
|
||||
|
||||
/* allocate and fill video video_device struct */
|
||||
dev->vdev = em28xx_vdev_init(dev, &em28xx_video_template, "video");
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
#define EM2882_BOARD_KWORLD_VS_DVBT 54
|
||||
#define EM2882_BOARD_TERRATEC_HYBRID_XS 55
|
||||
#define EM2882_BOARD_PINNACLE_HYBRID_PRO 56
|
||||
#define EM2883_BOARD_KWORLD_HYBRID_A316 57
|
||||
#define EM2883_BOARD_KWORLD_HYBRID_330U 57
|
||||
#define EM2820_BOARD_COMPRO_VIDEOMATE_FORYOU 58
|
||||
#define EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850 60
|
||||
#define EM2820_BOARD_PROLINK_PLAYTV_BOX4_USB2 61
|
||||
|
@ -300,13 +300,32 @@ enum em28xx_amux {
|
|||
};
|
||||
|
||||
enum em28xx_aout {
|
||||
/* AC97 outputs */
|
||||
EM28XX_AOUT_MASTER = 1 << 0,
|
||||
EM28XX_AOUT_LINE = 1 << 1,
|
||||
EM28XX_AOUT_MONO = 1 << 2,
|
||||
EM28XX_AOUT_LFE = 1 << 3,
|
||||
EM28XX_AOUT_SURR = 1 << 4,
|
||||
|
||||
/* PCM IN Mixer - used by AC97_RECORD_SELECT register */
|
||||
EM28XX_AOUT_PCM_IN = 1 << 7,
|
||||
|
||||
/* Bits 10-8 are used to indicate the PCM IN record select */
|
||||
EM28XX_AOUT_PCM_MIC_PCM = 0 << 8,
|
||||
EM28XX_AOUT_PCM_CD = 1 << 8,
|
||||
EM28XX_AOUT_PCM_VIDEO = 2 << 8,
|
||||
EM28XX_AOUT_PCM_AUX = 3 << 8,
|
||||
EM28XX_AOUT_PCM_LINE = 4 << 8,
|
||||
EM28XX_AOUT_PCM_STEREO = 5 << 8,
|
||||
EM28XX_AOUT_PCM_MONO = 6 << 8,
|
||||
EM28XX_AOUT_PCM_PHONE = 7 << 8,
|
||||
};
|
||||
|
||||
static inline int ac97_return_record_select(int a_out)
|
||||
{
|
||||
return (a_out & 0x700) >> 8;
|
||||
}
|
||||
|
||||
struct em28xx_reg_seq {
|
||||
int reg;
|
||||
unsigned char val, mask;
|
||||
|
|
|
@ -423,6 +423,7 @@ static void destroy_urbs(struct gspca_dev *gspca_dev)
|
|||
break;
|
||||
|
||||
gspca_dev->urb[i] = NULL;
|
||||
if (!gspca_dev->present)
|
||||
usb_kill_urb(urb);
|
||||
if (urb->transfer_buffer != NULL)
|
||||
usb_buffer_free(gspca_dev->dev,
|
||||
|
@ -1950,7 +1951,6 @@ void gspca_disconnect(struct usb_interface *intf)
|
|||
struct gspca_dev *gspca_dev = usb_get_intfdata(intf);
|
||||
|
||||
gspca_dev->present = 0;
|
||||
gspca_dev->streaming = 0;
|
||||
|
||||
usb_set_intfdata(intf, NULL);
|
||||
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче