Merge /spare/repo/linux-2.6/

This commit is contained in:
Jeff Garzik 2005-09-21 22:30:42 -04:00
commit 08217637fe
768 changed files with 20293 additions and 9223 deletions

26
CREDITS
View File

@ -2211,6 +2211,15 @@ D: OV511 driver
S: (address available on request) S: (address available on request)
S: USA S: USA
N: Ian McDonald
E: iam4@cs.waikato.ac.nz
E: imcdnzl@gmail.com
W: http://wand.net.nz/~iam4
W: http://imcdnzl.blogspot.com
D: DCCP, CCID3
S: Hamilton
S: New Zealand
N: Patrick McHardy N: Patrick McHardy
E: kaber@trash.net E: kaber@trash.net
P: 1024D/12155E80 B128 7DE6 FF0A C2B2 48BE AB4C C9D4 964E 1215 5E80 P: 1024D/12155E80 B128 7DE6 FF0A C2B2 48BE AB4C C9D4 964E 1215 5E80
@ -2246,19 +2255,12 @@ S: D-90453 Nuernberg
S: Germany S: Germany
N: Arnaldo Carvalho de Melo N: Arnaldo Carvalho de Melo
E: acme@conectiva.com.br E: acme@mandriva.com
E: acme@kernel.org E: acme@ghostprotocols.net
E: acme@gnu.org W: http://oops.ghostprotocols.net:81/blog/
W: http://bazar2.conectiva.com.br/~acme
W: http://advogato.org/person/acme
P: 1024D/9224DF01 D5DF E3BB E3C8 BCBB F8AD 841A B6AB 4681 9224 DF01 P: 1024D/9224DF01 D5DF E3BB E3C8 BCBB F8AD 841A B6AB 4681 9224 DF01
D: wanrouter hacking D: IPX, LLC, DCCP, cyc2x, wl3501_cs, net/ hacks
D: misc Makefile, Config.in, drivers and network stacks fixes S: Mandriva
D: IPX & LLC network stacks maintainer
D: Cyclom 2X synchronous card driver
D: wl3501 PCMCIA wireless card driver
D: i18n for minicom, net-tools, util-linux, fetchmail, etc
S: Conectiva S.A.
S: R. Tocantins, 89 - Cristo Rei S: R. Tocantins, 89 - Cristo Rei
S: 80050-430 - Curitiba - Paraná S: 80050-430 - Curitiba - Paraná
S: Brazil S: Brazil

View File

@ -410,7 +410,26 @@ Kernel messages do not have to be terminated with a period.
Printing numbers in parentheses (%d) adds no value and should be avoided. Printing numbers in parentheses (%d) adds no value and should be avoided.
Chapter 13: References Chapter 13: Allocating memory
The kernel provides the following general purpose memory allocators:
kmalloc(), kzalloc(), kcalloc(), and vmalloc(). Please refer to the API
documentation for further information about them.
The preferred form for passing a size of a struct is the following:
p = kmalloc(sizeof(*p), ...);
The alternative form where struct name is spelled out hurts readability and
introduces an opportunity for a bug when the pointer variable type is changed
but the corresponding sizeof that is passed to a memory allocator is not.
Casting the return value which is a void pointer is redundant. The conversion
from void pointer to any other pointer type is guaranteed by the C programming
language.
Chapter 14: References
The C Programming Language, Second Edition The C Programming Language, Second Edition
by Brian W. Kernighan and Dennis M. Ritchie. by Brian W. Kernighan and Dennis M. Ritchie.

View File

@ -1105,7 +1105,7 @@ static struct block_device_operations opt_fops = {
</listitem> </listitem>
<listitem> <listitem>
<para> <para>
Function names as strings (__func__). Function names as strings (__FUNCTION__).
</para> </para>
</listitem> </listitem>
<listitem> <listitem>

View File

@ -17,7 +17,9 @@ This driver is known to work with the following cards:
* SA P600 * SA P600
* SA P800 * SA P800
* SA E400 * SA E400
* SA E300 * SA P400i
* SA E200
* SA E200i
If nodes are not already created in the /dev/cciss directory, run as root: If nodes are not already created in the /dev/cciss directory, run as root:

View File

@ -13,6 +13,8 @@ the BIOS on Dell servers (starting from servers sold since 1999), desktops
and notebooks (starting from those sold in 2005). and notebooks (starting from those sold in 2005).
Please go to http://support.dell.com register and you can find info on Please go to http://support.dell.com register and you can find info on
OpenManage and Dell Update packages (DUP). OpenManage and Dell Update packages (DUP).
Libsmbios can also be used to update BIOS on Dell systems go to
http://linux.dell.com/libsmbios/ for details.
Dell_RBU driver supports BIOS update using the monilothic image and packetized Dell_RBU driver supports BIOS update using the monilothic image and packetized
image methods. In case of moniolithic the driver allocates a contiguous chunk image methods. In case of moniolithic the driver allocates a contiguous chunk
@ -22,8 +24,8 @@ would place each packet in contiguous physical memory. The driver also
maintains a link list of packets for reading them back. maintains a link list of packets for reading them back.
If the dell_rbu driver is unloaded all the allocated memory is freed. If the dell_rbu driver is unloaded all the allocated memory is freed.
The rbu driver needs to have an application which will inform the BIOS to The rbu driver needs to have an application (as mentioned above)which will
enable the update in the next system reboot. inform the BIOS to enable the update in the next system reboot.
The user should not unload the rbu driver after downloading the BIOS image The user should not unload the rbu driver after downloading the BIOS image
or updating. or updating.
@ -42,9 +44,11 @@ In case of packet mechanism the single memory can be broken in smaller chuks
of contiguous memory and the BIOS image is scattered in these packets. of contiguous memory and the BIOS image is scattered in these packets.
By default the driver uses monolithic memory for the update type. This can be By default the driver uses monolithic memory for the update type. This can be
changed to contiguous during the driver load time by specifying the load changed to packets during the driver load time by specifying the load
parameter image_type=packet. This can also be changed later as below parameter image_type=packet. This can also be changed later as below
echo packet > /sys/devices/platform/dell_rbu/image_type echo packet > /sys/devices/platform/dell_rbu/image_type
Also echoing either mono ,packet or init in to image_type will free up the
memory allocated by the driver.
Do the steps below to download the BIOS image. Do the steps below to download the BIOS image.
1) echo 1 > /sys/class/firmware/dell_rbu/loading 1) echo 1 > /sys/class/firmware/dell_rbu/loading
@ -53,9 +57,13 @@ Do the steps below to download the BIOS image.
The /sys/class/firmware/dell_rbu/ entries will remain till the following is The /sys/class/firmware/dell_rbu/ entries will remain till the following is
done. done.
echo -1 > /sys/class/firmware/dell_rbu/loading echo -1 > /sys/class/firmware/dell_rbu/loading.
Until this step is completed the drivr cannot be unloaded. Until this step is completed the drivr cannot be unloaded.
If an user by accident executes steps 1 and 3 above without executing step 2;
it will make the /sys/class/firmware/dell_rbu/ entries to disappear.
The entries can be recreated by doing the following
echo init > /sys/devices/platform/dell_rbu/image_type
NOTE: echoing init in image_type does not change it original value.
Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to
read back the image downloaded. This is useful in case of packet update read back the image downloaded. This is useful in case of packet update

View File

@ -55,6 +55,7 @@ aic7*seq.h*
aicasm aicasm
aicdb.h* aicdb.h*
asm asm
asm-offsets.*
asm_offsets.* asm_offsets.*
autoconf.h* autoconf.h*
bbootsect bbootsect

View File

@ -17,15 +17,6 @@ Who: Greg Kroah-Hartman <greg@kroah.com>
--------------------------- ---------------------------
What: io_remap_page_range() (macro or function)
When: September 2005
Why: Replaced by io_remap_pfn_range() which allows more memory space
addressabilty (by using a pfn) and supports sparc & sparc64
iospace as part of the pfn.
Who: Randy Dunlap <rddunlap@osdl.org>
---------------------------
What: RAW driver (CONFIG_RAW_DRIVER) What: RAW driver (CONFIG_RAW_DRIVER)
When: December 2005 When: December 2005
Why: declared obsolete since kernel 2.6.3 Why: declared obsolete since kernel 2.6.3

View File

@ -15,7 +15,7 @@ retrieve the data as it becomes available.
The format of the data logged into the channel buffers is completely The format of the data logged into the channel buffers is completely
up to the relayfs client; relayfs does however provide hooks which up to the relayfs client; relayfs does however provide hooks which
allow clients to impose some stucture on the buffer data. Nor does allow clients to impose some structure on the buffer data. Nor does
relayfs implement any form of data filtering - this also is left to relayfs implement any form of data filtering - this also is left to
the client. The purpose is to keep relayfs as simple as possible. the client. The purpose is to keep relayfs as simple as possible.

194
Documentation/ia64/mca.txt Normal file
View File

@ -0,0 +1,194 @@
An ad-hoc collection of notes on IA64 MCA and INIT processing. Feel
free to update it with notes about any area that is not clear.
---
MCA/INIT are completely asynchronous. They can occur at any time, when
the OS is in any state. Including when one of the cpus is already
holding a spinlock. Trying to get any lock from MCA/INIT state is
asking for deadlock. Also the state of structures that are protected
by locks is indeterminate, including linked lists.
---
The complicated ia64 MCA process. All of this is mandated by Intel's
specification for ia64 SAL, error recovery and and unwind, it is not as
if we have a choice here.
* MCA occurs on one cpu, usually due to a double bit memory error.
This is the monarch cpu.
* SAL sends an MCA rendezvous interrupt (which is a normal interrupt)
to all the other cpus, the slaves.
* Slave cpus that receive the MCA interrupt call down into SAL, they
end up spinning disabled while the MCA is being serviced.
* If any slave cpu was already spinning disabled when the MCA occurred
then it cannot service the MCA interrupt. SAL waits ~20 seconds then
sends an unmaskable INIT event to the slave cpus that have not
already rendezvoused.
* Because MCA/INIT can be delivered at any time, including when the cpu
is down in PAL in physical mode, the registers at the time of the
event are _completely_ undefined. In particular the MCA/INIT
handlers cannot rely on the thread pointer, PAL physical mode can
(and does) modify TP. It is allowed to do that as long as it resets
TP on return. However MCA/INIT events expose us to these PAL
internal TP changes. Hence curr_task().
* If an MCA/INIT event occurs while the kernel was running (not user
space) and the kernel has called PAL then the MCA/INIT handler cannot
assume that the kernel stack is in a fit state to be used. Mainly
because PAL may or may not maintain the stack pointer internally.
Because the MCA/INIT handlers cannot trust the kernel stack, they
have to use their own, per-cpu stacks. The MCA/INIT stacks are
preformatted with just enough task state to let the relevant handlers
do their job.
* Unlike most other architectures, the ia64 struct task is embedded in
the kernel stack[1]. So switching to a new kernel stack means that
we switch to a new task as well. Because various bits of the kernel
assume that current points into the struct task, switching to a new
stack also means a new value for current.
* Once all slaves have rendezvoused and are spinning disabled, the
monarch is entered. The monarch now tries to diagnose the problem
and decide if it can recover or not.
* Part of the monarch's job is to look at the state of all the other
tasks. The only way to do that on ia64 is to call the unwinder,
as mandated by Intel.
* The starting point for the unwind depends on whether a task is
running or not. That is, whether it is on a cpu or is blocked. The
monarch has to determine whether or not a task is on a cpu before it
knows how to start unwinding it. The tasks that received an MCA or
INIT event are no longer running, they have been converted to blocked
tasks. But (and its a big but), the cpus that received the MCA
rendezvous interrupt are still running on their normal kernel stacks!
* To distinguish between these two cases, the monarch must know which
tasks are on a cpu and which are not. Hence each slave cpu that
switches to an MCA/INIT stack, registers its new stack using
set_curr_task(), so the monarch can tell that the _original_ task is
no longer running on that cpu. That gives us a decent chance of
getting a valid backtrace of the _original_ task.
* MCA/INIT can be nested, to a depth of 2 on any cpu. In the case of a
nested error, we want diagnostics on the MCA/INIT handler that
failed, not on the task that was originally running. Again this
requires set_curr_task() so the MCA/INIT handlers can register their
own stack as running on that cpu. Then a recursive error gets a
trace of the failing handler's "task".
[1] My (Keith Owens) original design called for ia64 to separate its
struct task and the kernel stacks. Then the MCA/INIT data would be
chained stacks like i386 interrupt stacks. But that required
radical surgery on the rest of ia64, plus extra hard wired TLB
entries with its associated performance degradation. David
Mosberger vetoed that approach. Which meant that separate kernel
stacks meant separate "tasks" for the MCA/INIT handlers.
---
INIT is less complicated than MCA. Pressing the nmi button or using
the equivalent command on the management console sends INIT to all
cpus. SAL picks one one of the cpus as the monarch and the rest are
slaves. All the OS INIT handlers are entered at approximately the same
time. The OS monarch prints the state of all tasks and returns, after
which the slaves return and the system resumes.
At least that is what is supposed to happen. Alas there are broken
versions of SAL out there. Some drive all the cpus as monarchs. Some
drive them all as slaves. Some drive one cpu as monarch, wait for that
cpu to return from the OS then drive the rest as slaves. Some versions
of SAL cannot even cope with returning from the OS, they spin inside
SAL on resume. The OS INIT code has workarounds for some of these
broken SAL symptoms, but some simply cannot be fixed from the OS side.
---
The scheduler hooks used by ia64 (curr_task, set_curr_task) are layer
violations. Unfortunately MCA/INIT start off as massive layer
violations (can occur at _any_ time) and they build from there.
At least ia64 makes an attempt at recovering from hardware errors, but
it is a difficult problem because of the asynchronous nature of these
errors. When processing an unmaskable interrupt we sometimes need
special code to cope with our inability to take any locks.
---
How is ia64 MCA/INIT different from x86 NMI?
* x86 NMI typically gets delivered to one cpu. MCA/INIT gets sent to
all cpus.
* x86 NMI cannot be nested. MCA/INIT can be nested, to a depth of 2
per cpu.
* x86 has a separate struct task which points to one of multiple kernel
stacks. ia64 has the struct task embedded in the single kernel
stack, so switching stack means switching task.
* x86 does not call the BIOS so the NMI handler does not have to worry
about any registers having changed. MCA/INIT can occur while the cpu
is in PAL in physical mode, with undefined registers and an undefined
kernel stack.
* i386 backtrace is not very sensitive to whether a process is running
or not. ia64 unwind is very, very sensitive to whether a process is
running or not.
---
What happens when MCA/INIT is delivered what a cpu is running user
space code?
The user mode registers are stored in the RSE area of the MCA/INIT on
entry to the OS and are restored from there on return to SAL, so user
mode registers are preserved across a recoverable MCA/INIT. Since the
OS has no idea what unwind data is available for the user space stack,
MCA/INIT never tries to backtrace user space. Which means that the OS
does not bother making the user space process look like a blocked task,
i.e. the OS does not copy pt_regs and switch_stack to the user space
stack. Also the OS has no idea how big the user space RSE and memory
stacks are, which makes it too risky to copy the saved state to a user
mode stack.
---
How do we get a backtrace on the tasks that were running when MCA/INIT
was delivered?
mca.c:::ia64_mca_modify_original_stack(). That identifies and
verifies the original kernel stack, copies the dirty registers from
the MCA/INIT stack's RSE to the original stack's RSE, copies the
skeleton struct pt_regs and switch_stack to the original stack, fills
in the skeleton structures from the PAL minstate area and updates the
original stack's thread.ksp. That makes the original stack look
exactly like any other blocked task, i.e. it now appears to be
sleeping. To get a backtrace, just start with thread.ksp for the
original task and unwind like any other sleeping task.
---
How do we identify the tasks that were running when MCA/INIT was
delivered?
If the previous task has been verified and converted to a blocked
state, then sos->prev_task on the MCA/INIT stack is updated to point to
the previous task. You can look at that field in dumps or debuggers.
To help distinguish between the handler and the original tasks,
handlers have _TIF_MCA_INIT set in thread_info.flags.
The sos data is always in the MCA/INIT handler stack, at offset
MCA_SOS_OFFSET. You can get that value from mca_asm.h or calculate it
as KERNEL_STACK_SIZE - sizeof(struct pt_regs) - sizeof(struct
ia64_sal_os_state), with 16 byte alignment for all structures.
Also the comm field of the MCA/INIT task is modified to include the pid
of the original task, for humans to use. For example, a comm field of
'MCA 12159' means that pid 12159 was running when the MCA was
delivered.

View File

@ -95,6 +95,11 @@ SETUP
hence have memory less than 4GB. hence have memory less than 4GB.
iii) Specify "irqpoll" as command line parameter. This reduces driver iii) Specify "irqpoll" as command line parameter. This reduces driver
initialization failures in second kernel due to shared interrupts. initialization failures in second kernel due to shared interrupts.
iv) <root-dev> needs to be specified in a format corresponding to
the root device name in the output of mount command.
v) If you have built the drivers required to mount root file
system as modules in <second-kernel>, then, specify
--initrd=<initrd-for-second-kernel>.
5) System reboots into the second kernel when a panic occurs. A module can be 5) System reboots into the second kernel when a panic occurs. A module can be
written to force the panic or "ALT-SysRq-c" can be used initiate a crash written to force the panic or "ALT-SysRq-c" can be used initiate a crash

View File

@ -205,8 +205,8 @@ Phone: 701-234-7556
Tainted kernels: Tainted kernels:
Some oops reports contain the string 'Tainted: ' after the program Some oops reports contain the string 'Tainted: ' after the program
counter, this indicates that the kernel has been tainted by some counter. This indicates that the kernel has been tainted by some
mechanism. The string is followed by a series of position sensitive mechanism. The string is followed by a series of position-sensitive
characters, each representing a particular tainted value. characters, each representing a particular tainted value.
1: 'G' if all modules loaded have a GPL or compatible license, 'P' if 1: 'G' if all modules loaded have a GPL or compatible license, 'P' if
@ -214,7 +214,7 @@ characters, each representing a particular tainted value.
MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by MODULE_LICENSE or with a MODULE_LICENSE that is not recognised by
insmod as GPL compatible are assumed to be proprietary. insmod as GPL compatible are assumed to be proprietary.
2: 'F' if any module was force loaded by insmod -f, ' ' if all 2: 'F' if any module was force loaded by "insmod -f", ' ' if all
modules were loaded normally. modules were loaded normally.
3: 'S' if the oops occurred on an SMP kernel running on hardware that 3: 'S' if the oops occurred on an SMP kernel running on hardware that
@ -222,8 +222,17 @@ characters, each representing a particular tainted value.
Currently this occurs only on various Athlons that are not Currently this occurs only on various Athlons that are not
SMP capable. SMP capable.
4: 'R' if a module was force unloaded by "rmmod -f", ' ' if all
modules were unloaded normally.
5: 'M' if any processor has reported a Machine Check Exception,
' ' if no Machine Check Exceptions have occurred.
6: 'B' if a page-release function has found a bad page reference or
some unexpected page flags.
The primary reason for the 'Tainted: ' string is to tell kernel The primary reason for the 'Tainted: ' string is to tell kernel
debuggers if this is a clean kernel or if anything unusual has debuggers if this is a clean kernel or if anything unusual has
occurred. Tainting is permanent, even if an offending module is occurred. Tainting is permanent: even if an offending module is
unloading the tainted value remains to indicate that the kernel is not unloaded, the tainted value remains to indicate that the kernel is not
trustworthy. trustworthy.

View File

@ -38,6 +38,12 @@ system the associated daemon will exit gracefully.
Driver Interface -- OBSOLETE, DO NOT USE! Driver Interface -- OBSOLETE, DO NOT USE!
----------------************************* ----------------*************************
Note: pm_register(), pm_access(), pm_dev_idle() and friends are
obsolete. Please do not use them. Instead you should properly hook
your driver into the driver model, and use its suspend()/resume()
callbacks to do this kind of stuff.
If you are writing a new driver or maintaining an old driver, it If you are writing a new driver or maintaining an old driver, it
should include power management support. Without power management should include power management support. Without power management
support, a single driver may prevent a system with power management support, a single driver may prevent a system with power management

View File

@ -75,7 +75,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
adsp_map - PCM device number maps assigned to the 2st OSS device. adsp_map - PCM device number maps assigned to the 2st OSS device.
- Default: 1 - Default: 1
nonblock_open nonblock_open
- Don't block opening busy PCM devices. - Don't block opening busy PCM devices. Default: 1
For example, when dsp_map=2, /dev/dsp will be mapped to PCM #2 of For example, when dsp_map=2, /dev/dsp will be mapped to PCM #2 of
the card #0. Similarly, when adsp_map=0, /dev/adsp will be mapped the card #0. Similarly, when adsp_map=0, /dev/adsp will be mapped
@ -148,6 +148,16 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
Module supports up to 8 cards. This module does not support autoprobe Module supports up to 8 cards. This module does not support autoprobe
thus main port must be specified!!! Other ports are optional. thus main port must be specified!!! Other ports are optional.
Module snd-ad1889
-----------------
Module for Analog Devices AD1889 chips.
ac97_quirk - AC'97 workaround for strange hardware
See the description of intel8x0 module for details.
This module supports up to 8 cards.
Module snd-ali5451 Module snd-ali5451
------------------ ------------------
@ -189,15 +199,20 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
Module snd-atiixp Module snd-atiixp
----------------- -----------------
Module for ATI IXP 150/200/250 AC97 controllers. Module for ATI IXP 150/200/250/400 AC97 controllers.
ac97_clock - AC'97 clock (defalut = 48000) ac97_clock - AC'97 clock (default = 48000)
ac97_quirk - AC'97 workaround for strange hardware ac97_quirk - AC'97 workaround for strange hardware
See the description of intel8x0 module for details. See "AC97 Quirk Option" section below.
spdif_aclink - S/PDIF transfer over AC-link (default = 1) spdif_aclink - S/PDIF transfer over AC-link (default = 1)
This module supports up to 8 cards and autoprobe. This module supports up to 8 cards and autoprobe.
ATI IXP has two different methods to control SPDIF output. One is
over AC-link and another is over the "direct" SPDIF output. The
implementation depends on the motherboard, and you'll need to
choose the correct one via spdif_aclink module option.
Module snd-atiixp-modem Module snd-atiixp-modem
----------------------- -----------------------
@ -230,7 +245,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
The hardware EQ hardware and SPDIF is only present in the Vortex2 and The hardware EQ hardware and SPDIF is only present in the Vortex2 and
Advantage. Advantage.
Note: Some ALSA mixer applicactions don't handle the SPDIF samplerate Note: Some ALSA mixer applications don't handle the SPDIF sample rate
control correctly. If you have problems regarding this, try control correctly. If you have problems regarding this, try
another ALSA compliant mixer (alsamixer works). another ALSA compliant mixer (alsamixer works).
@ -302,7 +317,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
mpu_port - 0x300,0x310,0x320,0x330, 0 = disable (default) mpu_port - 0x300,0x310,0x320,0x330, 0 = disable (default)
fm_port - 0x388 (default), 0 = disable (default) fm_port - 0x388 (default), 0 = disable (default)
soft_ac3 - Sofware-conversion of raw SPDIF packets (model 033 only) soft_ac3 - Software-conversion of raw SPDIF packets (model 033 only)
(default = 1) (default = 1)
joystick_port - Joystick port address (0 = disable, 1 = auto-detect) joystick_port - Joystick port address (0 = disable, 1 = auto-detect)
@ -384,7 +399,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
Module for PCI sound cards based on CS4610/CS4612/CS4614/CS4615/CS4622/ Module for PCI sound cards based on CS4610/CS4612/CS4614/CS4615/CS4622/
CS4624/CS4630/CS4280 PCI chips. CS4624/CS4630/CS4280 PCI chips.
external_amp - Force to enable external amplifer. external_amp - Force to enable external amplifier.
thinkpad - Force to enable Thinkpad's CLKRUN control. thinkpad - Force to enable Thinkpad's CLKRUN control.
mmap_valid - Support OSS mmap mode (default = 0). mmap_valid - Support OSS mmap mode (default = 0).
@ -620,7 +635,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
VIA VT8251/VT8237A VIA VT8251/VT8237A
model - force the model name model - force the model name
position_fix - Fix DMA pointer (0 = FIFO size, 1 = none, 2 = POSBUF) position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)
Module supports up to 8 cards. Module supports up to 8 cards.
@ -656,6 +671,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
allout 5-jack in back, 2-jack in front, SPDIF out allout 5-jack in back, 2-jack in front, SPDIF out
auto auto-config reading BIOS (default) auto auto-config reading BIOS (default)
If the default configuration doesn't work and one of the above
matches with your device, report it together with the PCI
subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel
ML (see the section "Links and Addresses").
Note 2: If you get click noises on output, try the module option Note 2: If you get click noises on output, try the module option
position_fix=1 or 2. position_fix=1 will use the SD_LPIB position_fix=1 or 2. position_fix=1 will use the SD_LPIB
register value without FIFO size correction as the current register value without FIFO size correction as the current
@ -783,20 +803,13 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
ac97_clock - AC'97 codec clock base (0 = auto-detect) ac97_clock - AC'97 codec clock base (0 = auto-detect)
ac97_quirk - AC'97 workaround for strange hardware ac97_quirk - AC'97 workaround for strange hardware
The following strings are accepted: See "AC97 Quirk Option" section below.
default = don't override the default setting
disable = disable the quirk
hp_only = use headphone control as master
swap_hp = swap headphone and master controls
swap_surround = swap master and surround controls
ad_sharing = for AD1985, turn on OMS bit and use headphone
alc_jack = for ALC65x, turn on the jack sense mode
inv_eapd = inverted EAPD implementation
mute_led = bind EAPD bit for turning on/off mute LED
For backward compatibility, the corresponding integer
value -1, 0, ... are accepted, too.
buggy_irq - Enable workaround for buggy interrupts on some buggy_irq - Enable workaround for buggy interrupts on some
motherboards (default off) motherboards (default yes on nForce chips,
otherwise off)
buggy_semaphore - Enable workaround for hardwares with buggy
semaphores (e.g. on some ASUS laptops)
(default off)
Module supports autoprobe and multiple bus-master chips (max 8). Module supports autoprobe and multiple bus-master chips (max 8).
@ -808,13 +821,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
motherboard has these devices, use the ns558 or snd-mpu401 motherboard has these devices, use the ns558 or snd-mpu401
modules, respectively. modules, respectively.
The ac97_quirk option is used to enable/override the workaround
for specific devices. Some hardware have swapped output pins
between Master and Headphone, or Surround. The driver provides
the auto-detection of known problematic devices, but some might
be unknown or wrongly detected. In such a case, pass the proper
value with this option.
The power-management is supported. The power-management is supported.
Module snd-intel8x0m Module snd-intel8x0m
@ -966,7 +972,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
with machines with other (most likely CS423x or OPL3SAx) chips, with machines with other (most likely CS423x or OPL3SAx) chips,
even though the device is detected in lspci. In such a case, try even though the device is detected in lspci. In such a case, try
other drivers, e.g. snd-cs4232 or snd-opl3sa2. Some has ISA-PnP other drivers, e.g. snd-cs4232 or snd-opl3sa2. Some has ISA-PnP
but some doesn't have ISA PnP. You'll need to speicfy isapnp=0 but some doesn't have ISA PnP. You'll need to specify isapnp=0
and proper hardware parameters in the case without ISA PnP. and proper hardware parameters in the case without ISA PnP.
Note: some laptops need a workaround for AC97 RESET. For the Note: some laptops need a workaround for AC97 RESET. For the
@ -1302,7 +1308,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
channels channels
[VIA8233/C, 8235, 8237 only] [VIA8233/C, 8235, 8237 only]
ac97_quirk - AC'97 workaround for strange hardware ac97_quirk - AC'97 workaround for strange hardware
See the description of intel8x0 module for details. See "AC97 Quirk Option" section below.
Module supports autoprobe and multiple bus-master chips (max 8). Module supports autoprobe and multiple bus-master chips (max 8).
@ -1327,16 +1333,17 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
"lspci -nv"). "lspci -nv").
If dxs_support=5 does not work, try dxs_support=4; if it If dxs_support=5 does not work, try dxs_support=4; if it
doesn't work too, try dxs_support=1. (dxs_support=1 is doesn't work too, try dxs_support=1. (dxs_support=1 is
usually for old motherboards. The correct implementated usually for old motherboards. The correct implemented
board should work with 4 or 5.) If it still doesn't board should work with 4 or 5.) If it still doesn't
work and the default setting is ok, dxs_support=3 is the work and the default setting is ok, dxs_support=3 is the
right choice. If the default setting doesn't work at all, right choice. If the default setting doesn't work at all,
try dxs_support=2 to disable the DXS channels. try dxs_support=2 to disable the DXS channels.
In any cases, please let us know the result and the In any cases, please let us know the result and the
subsystem vendor/device ids. subsystem vendor/device ids. See "Links and Addresses"
below.
Note: for the MPU401 on VIA823x, use snd-mpu401 driver Note: for the MPU401 on VIA823x, use snd-mpu401 driver
additonally. The mpu_port option is for VIA686 chips only. additionally. The mpu_port option is for VIA686 chips only.
Module snd-via82xx-modem Module snd-via82xx-modem
------------------------ ------------------------
@ -1398,8 +1405,10 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
Module supports up to 8 cards. The module is compiled only when Module supports up to 8 cards. The module is compiled only when
PCMCIA is supported on kernel. PCMCIA is supported on kernel.
To activate the driver via the card manager, you'll need to set With the older 2.6.x kernel, to activate the driver via the card
up /etc/pcmcia/vxpocket.conf. See the sound/pcmcia/vx/vxpocket.c. manager, you'll need to set up /etc/pcmcia/vxpocket.conf. See the
sound/pcmcia/vx/vxpocket.c. 2.6.13 or later kernel requires no
longer require a config file.
When the driver is compiled as a module and the hotplug firmware When the driver is compiled as a module and the hotplug firmware
is supported, the firmware data is loaded via hotplug automatically. is supported, the firmware data is loaded via hotplug automatically.
@ -1411,6 +1420,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
Note: the driver is build only when CONFIG_ISA is set. Note: the driver is build only when CONFIG_ISA is set.
Note2: snd-vxp440 driver is merged to snd-vxpocket driver since
ALSA 1.0.10.
Module snd-ymfpci Module snd-ymfpci
----------------- -----------------
@ -1436,6 +1448,37 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
Note: the driver is build only when CONFIG_ISA is set. Note: the driver is build only when CONFIG_ISA is set.
AC97 Quirk Option
=================
The ac97_quirk option is used to enable/override the workaround for
specific devices on drivers for on-board AC'97 controllers like
snd-intel8x0. Some hardware have swapped output pins between Master
and Headphone, or Surround (thanks to confusion of AC'97
specifications from version to version :-)
The driver provides the auto-detection of known problematic devices,
but some might be unknown or wrongly detected. In such a case, pass
the proper value with this option.
The following strings are accepted:
- default Don't override the default setting
- disable Disable the quirk
- hp_only Bind Master and Headphone controls as a single control
- swap_hp Swap headphone and master controls
- swap_surround Swap master and surround controls
- ad_sharing For AD1985, turn on OMS bit and use headphone
- alc_jack For ALC65x, turn on the jack sense mode
- inv_eapd Inverted EAPD implementation
- mute_led Bind EAPD bit for turning on/off mute LED
For backward compatibility, the corresponding integer value -1, 0,
... are accepted, too.
For example, if "Master" volume control has no effect on your device
but only "Headphone" does, pass ac97_quirk=hp_only module option.
Configuring Non-ISAPNP Cards Configuring Non-ISAPNP Cards
============================ ============================
@ -1553,6 +1596,8 @@ Proc interfaces (/proc/asound)
- whole-frag write only whole fragments (optimization affecting - whole-frag write only whole fragments (optimization affecting
playback only) playback only)
- no-silence do not fill silence ahead to avoid clicks - no-silence do not fill silence ahead to avoid clicks
- buggy-ptr Returns the whitespace blocks in GETOPTR ioctl
instead of filled blocks
Example: echo "x11amp 128 16384" > /proc/asound/card0/pcm0p/oss Example: echo "x11amp 128 16384" > /proc/asound/card0/pcm0p/oss
echo "squake 0 0 disable" > /proc/asound/card0/pcm0c/oss echo "squake 0 0 disable" > /proc/asound/card0/pcm0c/oss
@ -1589,9 +1634,14 @@ commands to the snd-page-alloc driver:
use. use.
Links Links and Addresses
===== ===================
ALSA project homepage ALSA project homepage
http://www.alsa-project.org http://www.alsa-project.org
ALSA Bug Tracking System
https://bugtrack.alsa-project.org/bugs/
ALSA Developers ML
mailto:alsa-devel@lists.sourceforge.net

View File

@ -447,7 +447,7 @@
.... ....
/* allocate a chip-specific data with zero filled */ /* allocate a chip-specific data with zero filled */
chip = kcalloc(1, sizeof(*chip), GFP_KERNEL); chip = kzalloc(sizeof(*chip), GFP_KERNEL);
if (chip == NULL) if (chip == NULL)
return -ENOMEM; return -ENOMEM;
@ -949,7 +949,7 @@
After allocating a card instance via After allocating a card instance via
<function>snd_card_new()</function> (with <function>snd_card_new()</function> (with
<constant>NULL</constant> on the 4th arg), call <constant>NULL</constant> on the 4th arg), call
<function>kcalloc()</function>. <function>kzalloc()</function>.
<informalexample> <informalexample>
<programlisting> <programlisting>
@ -958,7 +958,7 @@
mychip_t *chip; mychip_t *chip;
card = snd_card_new(index[dev], id[dev], THIS_MODULE, NULL); card = snd_card_new(index[dev], id[dev], THIS_MODULE, NULL);
..... .....
chip = kcalloc(1, sizeof(*chip), GFP_KERNEL); chip = kzalloc(sizeof(*chip), GFP_KERNEL);
]]> ]]>
</programlisting> </programlisting>
</informalexample> </informalexample>
@ -1136,7 +1136,7 @@
return -ENXIO; return -ENXIO;
} }
chip = kcalloc(1, sizeof(*chip), GFP_KERNEL); chip = kzalloc(sizeof(*chip), GFP_KERNEL);
if (chip == NULL) { if (chip == NULL) {
pci_disable_device(pci); pci_disable_device(pci);
return -ENOMEM; return -ENOMEM;
@ -1292,7 +1292,7 @@
need to initialize this number as -1 before actual allocation, need to initialize this number as -1 before actual allocation,
since irq 0 is valid. The port address and its resource pointer since irq 0 is valid. The port address and its resource pointer
can be initialized as null by can be initialized as null by
<function>kcalloc()</function> automatically, so you <function>kzalloc()</function> automatically, so you
don't have to take care of resetting them. don't have to take care of resetting them.
</para> </para>

View File

@ -370,7 +370,10 @@ W: http://atmelwlandriver.sourceforge.net/
S: Maintained S: Maintained
AUDIT SUBSYSTEM AUDIT SUBSYSTEM
L: linux-audit@redhat.com (subscribers-only) P: David Woodhouse
M: dwmw2@infradead.org
L: linux-audit@redhat.com
W: http://people.redhat.com/sgrubb/audit/
S: Maintained S: Maintained
AX.25 NETWORK LAYER AX.25 NETWORK LAYER
@ -683,6 +686,13 @@ P: Guennadi Liakhovetski
M: g.liakhovetski@gmx.de M: g.liakhovetski@gmx.de
S: Maintained S: Maintained
DCCP PROTOCOL
P: Arnaldo Carvalho de Melo
M: acme@mandriva.com
L: dccp@vger.kernel.org
W: http://www.wlug.org.nz/DCCP
S: Maintained
DECnet NETWORK LAYER DECnet NETWORK LAYER
P: Patrick Caulfield P: Patrick Caulfield
M: patrick@tykepenguin.com M: patrick@tykepenguin.com
@ -2256,6 +2266,12 @@ M: kristen.c.accardi@intel.com
L: pcihpd-discuss@lists.sourceforge.net L: pcihpd-discuss@lists.sourceforge.net
S: Maintained S: Maintained
SKGE, SKY2 10/100/1000 GIGABIT ETHERNET DRIVERS
P: Stephen Hemminger
M: shemminger@osdl.org
L: netdev@vger.kernel.org
S: Maintained
SPARC (sparc32): SPARC (sparc32):
P: William L. Irwin P: William L. Irwin
M: wli@holomorphy.com M: wli@holomorphy.com
@ -2268,12 +2284,6 @@ M: R.E.Wolff@BitWizard.nl
L: linux-kernel@vger.kernel.org ? L: linux-kernel@vger.kernel.org ?
S: Supported S: Supported
SPX NETWORK LAYER
P: Jay Schulist
M: jschlst@samba.org
L: netdev@vger.kernel.org
S: Supported
SRM (Alpha) environment access SRM (Alpha) environment access
P: Jan-Benedict Glaw P: Jan-Benedict Glaw
M: jbglaw@lug-owl.de M: jbglaw@lug-owl.de

View File

@ -1,7 +1,7 @@
VERSION = 2 VERSION = 2
PATCHLEVEL = 6 PATCHLEVEL = 6
SUBLEVEL = 14 SUBLEVEL = 14
EXTRAVERSION =-rc1 EXTRAVERSION =-rc2
NAME=Affluent Albatross NAME=Affluent Albatross
# *DOCUMENTATION* # *DOCUMENTATION*

9
README
View File

@ -149,6 +149,9 @@ CONFIGURING the kernel:
"make gconfig" X windows (Gtk) based configuration tool. "make gconfig" X windows (Gtk) based configuration tool.
"make oldconfig" Default all questions based on the contents of "make oldconfig" Default all questions based on the contents of
your existing ./.config file. your existing ./.config file.
"make silentoldconfig"
Like above, but avoids cluttering the screen
with question already answered.
NOTES on "make config": NOTES on "make config":
- having unnecessary drivers will make the kernel bigger, and can - having unnecessary drivers will make the kernel bigger, and can
@ -169,9 +172,6 @@ CONFIGURING the kernel:
should probably answer 'n' to the questions for should probably answer 'n' to the questions for
"development", "experimental", or "debugging" features. "development", "experimental", or "debugging" features.
- Check the top Makefile for further site-dependent configuration
(default SVGA mode etc).
COMPILING the kernel: COMPILING the kernel:
- Make sure you have gcc 2.95.3 available. - Make sure you have gcc 2.95.3 available.
@ -199,6 +199,9 @@ COMPILING the kernel:
are installing a new kernel with the same version number as your are installing a new kernel with the same version number as your
working kernel, make a backup of your modules directory before you working kernel, make a backup of your modules directory before you
do a "make modules_install". do a "make modules_install".
In alternative, before compiling, edit your Makefile and change the
"EXTRAVERSION" line - its content is appended to the regular kernel
version.
- In order to boot your new kernel, you'll need to copy the kernel - In order to boot your new kernel, you'll need to copy the kernel
image (e.g. .../linux/arch/i386/boot/bzImage after compilation) image (e.g. .../linux/arch/i386/boot/bzImage after compilation)

View File

@ -37,6 +37,7 @@
#include <linux/namei.h> #include <linux/namei.h>
#include <linux/uio.h> #include <linux/uio.h>
#include <linux/vfs.h> #include <linux/vfs.h>
#include <linux/rcupdate.h>
#include <asm/fpu.h> #include <asm/fpu.h>
#include <asm/io.h> #include <asm/io.h>
@ -975,6 +976,7 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
long timeout; long timeout;
int ret = -EINVAL; int ret = -EINVAL;
struct fdtable *fdt; struct fdtable *fdt;
int max_fdset;
timeout = MAX_SCHEDULE_TIMEOUT; timeout = MAX_SCHEDULE_TIMEOUT;
if (tvp) { if (tvp) {
@ -996,8 +998,11 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
} }
} }
rcu_read_lock();
fdt = files_fdtable(current->files); fdt = files_fdtable(current->files);
if (n < 0 || n > fdt->max_fdset) max_fdset = fdt->max_fdset;
rcu_read_unlock();
if (n < 0 || n > max_fdset)
goto out_nofds; goto out_nofds;
/* /*

View File

@ -394,6 +394,22 @@ clipper_init_irq(void)
* 10 64 bit PCI option slot 3 (not bus 0) * 10 64 bit PCI option slot 3 (not bus 0)
*/ */
static int __init
isa_irq_fixup(struct pci_dev *dev, int irq)
{
u8 irq8;
if (irq > 0)
return irq;
/* This interrupt is routed via ISA bridge, so we'll
just have to trust whatever value the console might
have assigned. */
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq8);
return irq8 & 0xf;
}
static int __init static int __init
dp264_map_irq(struct pci_dev *dev, u8 slot, u8 pin) dp264_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{ {
@ -407,25 +423,13 @@ dp264_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{ 16+ 3, 16+ 3, 16+ 2, 16+ 1, 16+ 0} /* IdSel 10 slot 3 */ { 16+ 3, 16+ 3, 16+ 2, 16+ 1, 16+ 0} /* IdSel 10 slot 3 */
}; };
const long min_idsel = 5, max_idsel = 10, irqs_per_slot = 5; const long min_idsel = 5, max_idsel = 10, irqs_per_slot = 5;
struct pci_controller *hose = dev->sysdata; struct pci_controller *hose = dev->sysdata;
int irq = COMMON_TABLE_LOOKUP; int irq = COMMON_TABLE_LOOKUP;
if (irq > 0) { if (irq > 0)
irq += 16 * hose->index; irq += 16 * hose->index;
} else {
/* ??? The Contaq IDE controller on the ISA bridge uses
"legacy" interrupts 14 and 15. I don't know if anything
can wind up at the same slot+pin on hose1, so we'll
just have to trust whatever value the console might
have assigned. */
u8 irq8; return isa_irq_fixup(dev, irq);
pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq8);
irq = irq8;
}
return irq;
} }
static int __init static int __init
@ -453,7 +457,8 @@ monet_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{ 24, 24, 25, 26, 27} /* IdSel 15 slot 5 PCI2*/ { 24, 24, 25, 26, 27} /* IdSel 15 slot 5 PCI2*/
}; };
const long min_idsel = 3, max_idsel = 15, irqs_per_slot = 5; const long min_idsel = 3, max_idsel = 15, irqs_per_slot = 5;
return COMMON_TABLE_LOOKUP;
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
} }
static u8 __init static u8 __init
@ -507,7 +512,8 @@ webbrick_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{ 47, 47, 46, 45, 44}, /* IdSel 17 slot 3 */ { 47, 47, 46, 45, 44}, /* IdSel 17 slot 3 */
}; };
const long min_idsel = 7, max_idsel = 17, irqs_per_slot = 5; const long min_idsel = 7, max_idsel = 17, irqs_per_slot = 5;
return COMMON_TABLE_LOOKUP;
return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
} }
static int __init static int __init
@ -524,14 +530,13 @@ clipper_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{ -1, -1, -1, -1, -1} /* IdSel 7 ISA Bridge */ { -1, -1, -1, -1, -1} /* IdSel 7 ISA Bridge */
}; };
const long min_idsel = 1, max_idsel = 7, irqs_per_slot = 5; const long min_idsel = 1, max_idsel = 7, irqs_per_slot = 5;
struct pci_controller *hose = dev->sysdata; struct pci_controller *hose = dev->sysdata;
int irq = COMMON_TABLE_LOOKUP; int irq = COMMON_TABLE_LOOKUP;
if (irq > 0) if (irq > 0)
irq += 16 * hose->index; irq += 16 * hose->index;
return irq; return isa_irq_fixup(dev, irq);
} }
static void __init static void __init

View File

@ -256,5 +256,5 @@ asmlinkage void ofw_init(ofw_handle_t o, int *nomr, int *pointer)
temp[11]='\0'; temp[11]='\0';
mem_len = OF_getproplen(o,phandle, temp); mem_len = OF_getproplen(o,phandle, temp);
OF_getprop(o,phandle, temp, buffer, mem_len); OF_getprop(o,phandle, temp, buffer, mem_len);
(unsigned char) pointer[32] = ((unsigned char *) buffer)[mem_len-2]; * ((unsigned char *) &pointer[32]) = ((unsigned char *) buffer)[mem_len-2];
} }

View File

@ -551,7 +551,7 @@ struct locomo_save_data {
u16 LCM_SPIMD; u16 LCM_SPIMD;
}; };
static int locomo_suspend(struct device *dev, u32 pm_message_t, u32 level) static int locomo_suspend(struct device *dev, pm_message_t state, u32 level)
{ {
struct locomo *lchip = dev_get_drvdata(dev); struct locomo *lchip = dev_get_drvdata(dev);
struct locomo_save_data *save; struct locomo_save_data *save;

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.13-rc2 # Linux kernel version: 2.6.13
# Thu Jul 7 16:41:21 2005 # Wed Sep 14 10:51:52 2005
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
@ -135,7 +135,6 @@ CONFIG_PCI_NAMES=y
# #
# Kernel Features # Kernel Features
# #
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set # CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
@ -178,6 +177,68 @@ CONFIG_BINFMT_ELF=y
# #
# CONFIG_PM is not set # CONFIG_PM is not set
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# #
# Device Drivers # Device Drivers
# #
@ -248,6 +309,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_IXP2000=y CONFIG_MTD_IXP2000=y
# CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_PCI is not set # CONFIG_MTD_PCI is not set
# CONFIG_MTD_PLATRAM is not set
# #
# Self-contained MTD device drivers # Self-contained MTD device drivers
@ -334,72 +396,8 @@ CONFIG_IOSCHED_CFQ=y
# CONFIG_I2O is not set # CONFIG_I2O is not set
# #
# Networking support # Network device support
# #
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_DUMMY=y CONFIG_DUMMY=y
# CONFIG_BONDING is not set # CONFIG_BONDING is not set
@ -509,6 +507,8 @@ CONFIG_DLCI_MAX=8
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set # CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# #
# ISDN subsystem # ISDN subsystem
@ -635,7 +635,7 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_I810 is not set # CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_ISA is not set # CONFIG_I2C_ISA is not set
# CONFIG_I2C_IXP2000 is not set CONFIG_I2C_IXP2000=y
# CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_PROSAVAGE is not set
@ -649,11 +649,28 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set # CONFIG_I2C_PCA_ISA is not set
CONFIG_I2C_SENSOR=y
# #
# Hardware Sensors Chip support # Miscellaneous I2C Chip support
# #
CONFIG_I2C_SENSOR=y # CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# Hardware Monitoring support
#
CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1026 is not set
@ -679,30 +696,15 @@ CONFIG_I2C_SENSOR=y
# CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Other I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# #
# Misc devices # Misc devices
@ -770,6 +772,7 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
@ -812,8 +815,7 @@ CONFIG_RAMFS=y
# CONFIG_JFFS_FS is not set # CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_JFFS2_FS_NAND is not set CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_NOR_ECC is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RTIME=y

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.13-rc2 # Linux kernel version: 2.6.13
# Thu Jul 7 16:49:01 2005 # Wed Sep 14 10:52:01 2005
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
# #
# Kernel Features # Kernel Features
# #
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set # CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
# #
# CONFIG_PM is not set # CONFIG_PM is not set
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# #
# Device Drivers # Device Drivers
# #
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_IXP2000=y CONFIG_MTD_IXP2000=y
# CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_PCI is not set # CONFIG_MTD_PCI is not set
# CONFIG_MTD_PLATRAM is not set
# #
# Self-contained MTD device drivers # Self-contained MTD device drivers
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
# CONFIG_I2O is not set # CONFIG_I2O is not set
# #
# Networking support # Network device support
# #
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_DUMMY=y CONFIG_DUMMY=y
# CONFIG_BONDING is not set # CONFIG_BONDING is not set
@ -510,6 +508,8 @@ CONFIG_DLCI_MAX=8
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set # CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# #
# ISDN subsystem # ISDN subsystem
@ -636,7 +636,7 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_I810 is not set # CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_ISA is not set # CONFIG_I2C_ISA is not set
# CONFIG_I2C_IXP2000 is not set CONFIG_I2C_IXP2000=y
# CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_PROSAVAGE is not set
@ -650,11 +650,28 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set # CONFIG_I2C_PCA_ISA is not set
CONFIG_I2C_SENSOR=y
# #
# Hardware Sensors Chip support # Miscellaneous I2C Chip support
# #
CONFIG_I2C_SENSOR=y # CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# Hardware Monitoring support
#
CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1026 is not set
@ -680,30 +697,15 @@ CONFIG_I2C_SENSOR=y
# CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Other I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# #
# Misc devices # Misc devices
@ -771,6 +773,7 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
@ -813,8 +816,7 @@ CONFIG_RAMFS=y
# CONFIG_JFFS_FS is not set # CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_JFFS2_FS_NAND is not set CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_NOR_ECC is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RTIME=y

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.13-rc2 # Linux kernel version: 2.6.13
# Thu Jul 7 16:49:08 2005 # Wed Sep 14 10:52:10 2005
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
# #
# Kernel Features # Kernel Features
# #
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set # CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
# #
# CONFIG_PM is not set # CONFIG_PM is not set
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
CONFIG_IP_TCPDIAG=y
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# #
# Device Drivers # Device Drivers
# #
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_IXP2000=y CONFIG_MTD_IXP2000=y
# CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_PCI is not set # CONFIG_MTD_PCI is not set
# CONFIG_MTD_PLATRAM is not set
# #
# Self-contained MTD device drivers # Self-contained MTD device drivers
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
# CONFIG_I2O is not set # CONFIG_I2O is not set
# #
# Networking support # Network device support
# #
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
CONFIG_IP_TCPDIAG=y
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_DUMMY=y CONFIG_DUMMY=y
# CONFIG_BONDING is not set # CONFIG_BONDING is not set
@ -511,6 +509,8 @@ CONFIG_DLCI_MAX=8
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set # CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# #
# ISDN subsystem # ISDN subsystem
@ -637,7 +637,7 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_I810 is not set # CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_ISA is not set # CONFIG_I2C_ISA is not set
# CONFIG_I2C_IXP2000 is not set CONFIG_I2C_IXP2000=y
# CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_PROSAVAGE is not set
@ -651,11 +651,28 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set # CONFIG_I2C_PCA_ISA is not set
CONFIG_I2C_SENSOR=y
# #
# Hardware Sensors Chip support # Miscellaneous I2C Chip support
# #
CONFIG_I2C_SENSOR=y # CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# Hardware Monitoring support
#
CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1026 is not set
@ -681,30 +698,15 @@ CONFIG_I2C_SENSOR=y
# CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Other I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# #
# Misc devices # Misc devices
@ -772,6 +774,7 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
@ -814,8 +817,7 @@ CONFIG_RAMFS=y
# CONFIG_JFFS_FS is not set # CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_JFFS2_FS_NAND is not set CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_NOR_ECC is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RTIME=y

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.13-rc2 # Linux kernel version: 2.6.13
# Thu Jul 7 16:49:20 2005 # Wed Sep 14 10:52:23 2005
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
# #
# Kernel Features # Kernel Features
# #
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set # CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
# #
# CONFIG_PM is not set # CONFIG_PM is not set
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# #
# Device Drivers # Device Drivers
# #
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_IXP2000=y CONFIG_MTD_IXP2000=y
# CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_PCI is not set # CONFIG_MTD_PCI is not set
# CONFIG_MTD_PLATRAM is not set
# #
# Self-contained MTD device drivers # Self-contained MTD device drivers
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
# CONFIG_I2O is not set # CONFIG_I2O is not set
# #
# Networking support # Network device support
# #
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_DUMMY=y CONFIG_DUMMY=y
# CONFIG_BONDING is not set # CONFIG_BONDING is not set
@ -510,6 +508,8 @@ CONFIG_DLCI_MAX=8
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set # CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# #
# ISDN subsystem # ISDN subsystem
@ -636,7 +636,7 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_I810 is not set # CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_ISA is not set # CONFIG_I2C_ISA is not set
# CONFIG_I2C_IXP2000 is not set CONFIG_I2C_IXP2000=y
# CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_PROSAVAGE is not set
@ -650,11 +650,28 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set # CONFIG_I2C_PCA_ISA is not set
CONFIG_I2C_SENSOR=y
# #
# Hardware Sensors Chip support # Miscellaneous I2C Chip support
# #
CONFIG_I2C_SENSOR=y # CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# Hardware Monitoring support
#
CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1026 is not set
@ -680,30 +697,15 @@ CONFIG_I2C_SENSOR=y
# CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Other I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# #
# Misc devices # Misc devices
@ -771,6 +773,7 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
@ -813,8 +816,7 @@ CONFIG_RAMFS=y
# CONFIG_JFFS_FS is not set # CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_JFFS2_FS_NAND is not set CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_NOR_ECC is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RTIME=y

View File

@ -1,7 +1,7 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.13-rc2 # Linux kernel version: 2.6.13
# Thu Jul 7 16:49:13 2005 # Wed Sep 14 10:52:16 2005
# #
CONFIG_ARM=y CONFIG_ARM=y
CONFIG_MMU=y CONFIG_MMU=y
@ -136,7 +136,6 @@ CONFIG_PCI_NAMES=y
# #
# Kernel Features # Kernel Features
# #
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set # CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
@ -179,6 +178,68 @@ CONFIG_BINFMT_ELF=y
# #
# CONFIG_PM is not set # CONFIG_PM is not set
#
# Networking
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# #
# Device Drivers # Device Drivers
# #
@ -249,6 +310,7 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_IXP2000=y CONFIG_MTD_IXP2000=y
# CONFIG_MTD_EDB7312 is not set # CONFIG_MTD_EDB7312 is not set
# CONFIG_MTD_PCI is not set # CONFIG_MTD_PCI is not set
# CONFIG_MTD_PLATRAM is not set
# #
# Self-contained MTD device drivers # Self-contained MTD device drivers
@ -335,72 +397,8 @@ CONFIG_IOSCHED_CFQ=y
# CONFIG_I2O is not set # CONFIG_I2O is not set
# #
# Networking support # Network device support
# #
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_NETFILTER is not set
#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_NET_DIVERT is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y CONFIG_NETDEVICES=y
CONFIG_DUMMY=y CONFIG_DUMMY=y
# CONFIG_BONDING is not set # CONFIG_BONDING is not set
@ -511,6 +509,8 @@ CONFIG_DLCI_MAX=8
# CONFIG_SLIP is not set # CONFIG_SLIP is not set
# CONFIG_SHAPER is not set # CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set # CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# #
# ISDN subsystem # ISDN subsystem
@ -637,7 +637,7 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_I810 is not set # CONFIG_I2C_I810 is not set
# CONFIG_I2C_PIIX4 is not set # CONFIG_I2C_PIIX4 is not set
# CONFIG_I2C_ISA is not set # CONFIG_I2C_ISA is not set
# CONFIG_I2C_IXP2000 is not set CONFIG_I2C_IXP2000=y
# CONFIG_I2C_NFORCE2 is not set # CONFIG_I2C_NFORCE2 is not set
# CONFIG_I2C_PARPORT_LIGHT is not set # CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_PROSAVAGE is not set # CONFIG_I2C_PROSAVAGE is not set
@ -651,11 +651,28 @@ CONFIG_I2C_ALGOBIT=y
# CONFIG_I2C_VIAPRO is not set # CONFIG_I2C_VIAPRO is not set
# CONFIG_I2C_VOODOO3 is not set # CONFIG_I2C_VOODOO3 is not set
# CONFIG_I2C_PCA_ISA is not set # CONFIG_I2C_PCA_ISA is not set
CONFIG_I2C_SENSOR=y
# #
# Hardware Sensors Chip support # Miscellaneous I2C Chip support
# #
CONFIG_I2C_SENSOR=y # CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# Hardware Monitoring support
#
CONFIG_HWMON=y
# CONFIG_SENSORS_ADM1021 is not set # CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set # CONFIG_SENSORS_ADM1025 is not set
# CONFIG_SENSORS_ADM1026 is not set # CONFIG_SENSORS_ADM1026 is not set
@ -681,30 +698,15 @@ CONFIG_I2C_SENSOR=y
# CONFIG_SENSORS_LM92 is not set # CONFIG_SENSORS_LM92 is not set
# CONFIG_SENSORS_MAX1619 is not set # CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_PC87360 is not set # CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_SIS5595 is not set # CONFIG_SENSORS_SIS5595 is not set
# CONFIG_SENSORS_SMSC47M1 is not set # CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
# CONFIG_SENSORS_VIA686A is not set # CONFIG_SENSORS_VIA686A is not set
# CONFIG_SENSORS_W83781D is not set # CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83L785TS is not set # CONFIG_SENSORS_W83L785TS is not set
# CONFIG_SENSORS_W83627HF is not set # CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set # CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
#
# Other I2C Chip support
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
CONFIG_SENSORS_EEPROM=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_RTC8564 is not set
# CONFIG_SENSORS_MAX6875 is not set
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
# #
# Misc devices # Misc devices
@ -772,6 +774,7 @@ CONFIG_FS_POSIX_ACL=y
# CONFIG_XFS_FS is not set # CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set # CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set # CONFIG_ROMFS_FS is not set
CONFIG_INOTIFY=y
# CONFIG_QUOTA is not set # CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set # CONFIG_AUTOFS_FS is not set
@ -814,8 +817,7 @@ CONFIG_RAMFS=y
# CONFIG_JFFS_FS is not set # CONFIG_JFFS_FS is not set
CONFIG_JFFS2_FS=y CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0 CONFIG_JFFS2_FS_DEBUG=0
# CONFIG_JFFS2_FS_NAND is not set CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_JFFS2_FS_NOR_ECC is not set
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y CONFIG_JFFS2_RTIME=y

View File

@ -131,7 +131,7 @@ __syscall_start:
.long sys_wait4 .long sys_wait4
/* 115 */ .long sys_swapoff /* 115 */ .long sys_swapoff
.long sys_sysinfo .long sys_sysinfo
.long sys_ipc .long sys_ipc_wrapper
.long sys_fsync .long sys_fsync
.long sys_sigreturn_wrapper .long sys_sigreturn_wrapper
/* 120 */ .long sys_clone_wrapper /* 120 */ .long sys_clone_wrapper

View File

@ -273,6 +273,10 @@ sys_mbind_wrapper:
str r5, [sp, #4] str r5, [sp, #4]
b sys_mbind b sys_mbind
sys_ipc_wrapper:
str r5, [sp, #4] @ push sixth arg
b sys_ipc
/* /*
* Note: off_4k (r5) is always units of 4K. If we can't do the requested * Note: off_4k (r5) is always units of 4K. If we can't do the requested
* offset, we return EINVAL. * offset, we return EINVAL.

View File

@ -178,7 +178,7 @@ int __down_trylock(struct semaphore * sem)
* registers (r0 to r3 and lr), but not ip, as we use it as a return * registers (r0 to r3 and lr), but not ip, as we use it as a return
* value in some cases.. * value in some cases..
*/ */
asm(" .section .sched.text,\"ax\" \n\ asm(" .section .sched.text,\"ax\",%progbits \n\
.align 5 \n\ .align 5 \n\
.globl __down_failed \n\ .globl __down_failed \n\
__down_failed: \n\ __down_failed: \n\

View File

@ -624,6 +624,9 @@ void __attribute__((noreturn)) __bug(const char *file, int line, void *data)
printk(" - extra data = %p", data); printk(" - extra data = %p", data);
printk("\n"); printk("\n");
*(int *)0 = 0; *(int *)0 = 0;
/* Avoid "noreturn function does return" */
for (;;);
} }
EXPORT_SYMBOL(__bug); EXPORT_SYMBOL(__bug);

View File

@ -23,20 +23,20 @@ SECTIONS
*(.init.text) *(.init.text)
_einittext = .; _einittext = .;
__proc_info_begin = .; __proc_info_begin = .;
*(.proc.info) *(.proc.info.init)
__proc_info_end = .; __proc_info_end = .;
__arch_info_begin = .; __arch_info_begin = .;
*(.arch.info) *(.arch.info.init)
__arch_info_end = .; __arch_info_end = .;
__tagtable_begin = .; __tagtable_begin = .;
*(.taglist) *(.taglist.init)
__tagtable_end = .; __tagtable_end = .;
. = ALIGN(16); . = ALIGN(16);
__setup_start = .; __setup_start = .;
*(.init.setup) *(.init.setup)
__setup_end = .; __setup_end = .;
__early_begin = .; __early_begin = .;
*(__early_param) *(.early_param.init)
__early_end = .; __early_end = .;
__initcall_start = .; __initcall_start = .;
*(.initcall1.init) *(.initcall1.init)

View File

@ -123,6 +123,7 @@ static void __init ixdp425_init(void)
platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices)); platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices));
} }
#ifdef CONFIG_ARCH_IXDP465
MACHINE_START(IXDP425, "Intel IXDP425 Development Platform") MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
/* Maintainer: MontaVista Software, Inc. */ /* Maintainer: MontaVista Software, Inc. */
.phys_ram = PHYS_OFFSET, .phys_ram = PHYS_OFFSET,
@ -134,7 +135,9 @@ MACHINE_START(IXDP425, "Intel IXDP425 Development Platform")
.boot_params = 0x0100, .boot_params = 0x0100,
.init_machine = ixdp425_init, .init_machine = ixdp425_init,
MACHINE_END MACHINE_END
#endif
#ifdef CONFIG_MACH_IXDP465
MACHINE_START(IXDP465, "Intel IXDP465 Development Platform") MACHINE_START(IXDP465, "Intel IXDP465 Development Platform")
/* Maintainer: MontaVista Software, Inc. */ /* Maintainer: MontaVista Software, Inc. */
.phys_ram = PHYS_OFFSET, .phys_ram = PHYS_OFFSET,
@ -146,7 +149,9 @@ MACHINE_START(IXDP465, "Intel IXDP465 Development Platform")
.boot_params = 0x0100, .boot_params = 0x0100,
.init_machine = ixdp425_init, .init_machine = ixdp425_init,
MACHINE_END MACHINE_END
#endif
#ifdef CONFIG_ARCH_PRPMC1100
MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform") MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
/* Maintainer: MontaVista Software, Inc. */ /* Maintainer: MontaVista Software, Inc. */
.phys_ram = PHYS_OFFSET, .phys_ram = PHYS_OFFSET,
@ -158,6 +163,7 @@ MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform")
.boot_params = 0x0100, .boot_params = 0x0100,
.init_machine = ixdp425_init, .init_machine = ixdp425_init,
MACHINE_END MACHINE_END
#endif
/* /*
* Avila is functionally equivalent to IXDP425 except that it adds * Avila is functionally equivalent to IXDP425 except that it adds

View File

@ -20,40 +20,66 @@ config ARCH_PXA_IDP
select PXA25x select PXA25x
config PXA_SHARPSL config PXA_SHARPSL
bool "SHARP SL-5600 and SL-C7xx Models" bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models"
select PXA25x
select SHARP_SCOOP select SHARP_SCOOP
select SHARP_PARAM select SHARP_PARAM
help help
Say Y here if you intend to run this kernel on a Say Y here if you intend to run this kernel on a
Sharp SL-5600 (Poodle), Sharp SL-C700 (Corgi), Sharp Zaurus SL-5600 (Poodle), SL-C700 (Corgi),
SL-C750 (Shepherd) or a Sharp SL-C760 (Husky) SL-C750 (Shepherd), SL-C760 (Husky), SL-C1000 (Akita),
handheld computer. SL-C3000 (Spitz) or SL-C3100 (Borzoi) handheld computer.
endchoice endchoice
if PXA_SHARPSL
choice
prompt "Select target Sharp Zaurus device range"
config PXA_SHARPSL_25x
bool "Sharp PXA25x models (SL-5600 and SL-C7xx)"
select PXA25x
config PXA_SHARPSL_27x
bool "Sharp PXA270 models (SL-Cxx00)"
select PXA27x
endchoice
endif
endmenu endmenu
config MACH_POODLE config MACH_POODLE
bool "Enable Sharp SL-5600 (Poodle) Support" bool "Enable Sharp SL-5600 (Poodle) Support"
depends PXA_SHARPSL depends PXA_SHARPSL_25x
select SHARP_LOCOMO select SHARP_LOCOMO
config MACH_CORGI config MACH_CORGI
bool "Enable Sharp SL-C700 (Corgi) Support" bool "Enable Sharp SL-C700 (Corgi) Support"
depends PXA_SHARPSL depends PXA_SHARPSL_25x
select PXA_SHARP_C7xx select PXA_SHARP_C7xx
config MACH_SHEPHERD config MACH_SHEPHERD
bool "Enable Sharp SL-C750 (Shepherd) Support" bool "Enable Sharp SL-C750 (Shepherd) Support"
depends PXA_SHARPSL depends PXA_SHARPSL_25x
select PXA_SHARP_C7xx select PXA_SHARP_C7xx
config MACH_HUSKY config MACH_HUSKY
bool "Enable Sharp SL-C760 (Husky) Support" bool "Enable Sharp SL-C760 (Husky) Support"
depends PXA_SHARPSL depends PXA_SHARPSL_25x
select PXA_SHARP_C7xx select PXA_SHARP_C7xx
config MACH_SPITZ
bool "Enable Sharp Zaurus SL-3000 (Spitz) Support"
depends PXA_SHARPSL_27x
select PXA_SHARP_Cxx00
config MACH_BORZOI
bool "Enable Sharp Zaurus SL-3100 (Borzoi) Support"
depends PXA_SHARPSL_27x
select PXA_SHARP_Cxx00
config PXA25x config PXA25x
bool bool
help help
@ -74,4 +100,9 @@ config PXA_SHARP_C7xx
help help
Enable support for all Sharp C7xx models Enable support for all Sharp C7xx models
config PXA_SHARP_Cxx00
bool
help
Enable common support for Sharp Cxx00 models
endif endif

View File

@ -12,6 +12,7 @@ obj-$(CONFIG_ARCH_LUBBOCK) += lubbock.o
obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o obj-$(CONFIG_MACH_MAINSTONE) += mainstone.o
obj-$(CONFIG_ARCH_PXA_IDP) += idp.o obj-$(CONFIG_ARCH_PXA_IDP) += idp.o
obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o corgi_ssp.o corgi_lcd.o ssp.o obj-$(CONFIG_PXA_SHARP_C7xx) += corgi.o corgi_ssp.o corgi_lcd.o ssp.o
obj-$(CONFIG_PXA_SHARP_Cxx00) += spitz.o corgi_ssp.o corgi_lcd.o ssp.o
obj-$(CONFIG_MACH_POODLE) += poodle.o obj-$(CONFIG_MACH_POODLE) += poodle.o
# Support for blinky lights # Support for blinky lights

View File

@ -41,6 +41,7 @@
#include <asm/hardware/scoop.h> #include <asm/hardware/scoop.h>
#include "generic.h" #include "generic.h"
#include "sharpsl.h"
/* /*
@ -94,14 +95,30 @@ struct platform_device corgissp_device = {
.id = -1, .id = -1,
}; };
struct corgissp_machinfo corgi_ssp_machinfo = {
.port = 1,
.cs_lcdcon = CORGI_GPIO_LCDCON_CS,
.cs_ads7846 = CORGI_GPIO_ADS7846_CS,
.cs_max1111 = CORGI_GPIO_MAX1111_CS,
.clk_lcdcon = 76,
.clk_ads7846 = 2,
.clk_max1111 = 8,
};
/* /*
* Corgi Backlight Device * Corgi Backlight Device
*/ */
static struct corgibl_machinfo corgi_bl_machinfo = {
.max_intensity = 0x2f,
.set_bl_intensity = corgi_bl_set_intensity,
};
static struct platform_device corgibl_device = { static struct platform_device corgibl_device = {
.name = "corgi-bl", .name = "corgi-bl",
.dev = { .dev = {
.parent = &corgifb_device.dev, .parent = &corgifb_device.dev,
.platform_data = &corgi_bl_machinfo,
}, },
.id = -1, .id = -1,
}; };
@ -119,12 +136,29 @@ static struct platform_device corgikbd_device = {
/* /*
* Corgi Touch Screen Device * Corgi Touch Screen Device
*/ */
static struct resource corgits_resources[] = {
[0] = {
.start = CORGI_IRQ_GPIO_TP_INT,
.end = CORGI_IRQ_GPIO_TP_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct corgits_machinfo corgi_ts_machinfo = {
.get_hsync_len = corgi_get_hsync_len,
.put_hsync = corgi_put_hsync,
.wait_hsync = corgi_wait_hsync,
};
static struct platform_device corgits_device = { static struct platform_device corgits_device = {
.name = "corgi-ts", .name = "corgi-ts",
.dev = { .dev = {
.parent = &corgissp_device.dev, .parent = &corgissp_device.dev,
.platform_data = &corgi_ts_machinfo,
}, },
.id = -1, .id = -1,
.num_resources = ARRAY_SIZE(corgits_resources),
.resource = corgits_resources,
}; };
@ -164,13 +198,10 @@ static void corgi_mci_setpower(struct device *dev, unsigned int vdd)
{ {
struct pxamci_platform_data* p_d = dev->platform_data; struct pxamci_platform_data* p_d = dev->platform_data;
if (( 1 << vdd) & p_d->ocr_mask) { if (( 1 << vdd) & p_d->ocr_mask)
printk(KERN_DEBUG "%s: on\n", __FUNCTION__);
GPSR1 = GPIO_bit(CORGI_GPIO_SD_PWR); GPSR1 = GPIO_bit(CORGI_GPIO_SD_PWR);
} else { else
printk(KERN_DEBUG "%s: off\n", __FUNCTION__);
GPCR1 = GPIO_bit(CORGI_GPIO_SD_PWR); GPCR1 = GPIO_bit(CORGI_GPIO_SD_PWR);
}
} }
static int corgi_mci_get_ro(struct device *dev) static int corgi_mci_get_ro(struct device *dev)
@ -225,7 +256,20 @@ static struct platform_device *devices[] __initdata = {
static void __init corgi_init(void) static void __init corgi_init(void)
{ {
/* setup sleep mode values */
PWER = 0x00000002;
PFER = 0x00000000;
PRER = 0x00000002;
PGSR0 = 0x0158C000;
PGSR1 = 0x00FF0080;
PGSR2 = 0x0001C004;
/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
PCFR |= PCFR_OPDE;
corgi_ssp_set_machinfo(&corgi_ssp_machinfo);
pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT); pxa_gpio_mode(CORGI_GPIO_USB_PULLUP | GPIO_OUT);
pxa_gpio_mode(CORGI_GPIO_HSYNC | GPIO_IN);
pxa_set_udc_info(&udc_info); pxa_set_udc_info(&udc_info);
pxa_set_mci_info(&corgi_mci_platform_data); pxa_set_mci_info(&corgi_mci_platform_data);
@ -248,42 +292,14 @@ static void __init fixup_corgi(struct machine_desc *desc,
mi->bank[0].size = (64*1024*1024); mi->bank[0].size = (64*1024*1024);
} }
static void __init corgi_init_irq(void)
{
pxa_init_irq();
}
static struct map_desc corgi_io_desc[] __initdata = {
/* virtual physical length */
/* { 0xf1000000, 0x08000000, 0x01000000, MT_DEVICE },*/ /* LCDC (readable for Qt driver) */
/* { 0xef700000, 0x10800000, 0x00001000, MT_DEVICE },*/ /* SCOOP */
{ 0xef800000, 0x00000000, 0x00800000, MT_DEVICE }, /* Boot Flash */
};
static void __init corgi_map_io(void)
{
pxa_map_io();
iotable_init(corgi_io_desc,ARRAY_SIZE(corgi_io_desc));
/* setup sleep mode values */
PWER = 0x00000002;
PFER = 0x00000000;
PRER = 0x00000002;
PGSR0 = 0x0158C000;
PGSR1 = 0x00FF0080;
PGSR2 = 0x0001C004;
/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
PCFR |= PCFR_OPDE;
}
#ifdef CONFIG_MACH_CORGI #ifdef CONFIG_MACH_CORGI
MACHINE_START(CORGI, "SHARP Corgi") MACHINE_START(CORGI, "SHARP Corgi")
.phys_ram = 0xa0000000, .phys_ram = 0xa0000000,
.phys_io = 0x40000000, .phys_io = 0x40000000,
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.fixup = fixup_corgi, .fixup = fixup_corgi,
.map_io = corgi_map_io, .map_io = pxa_map_io,
.init_irq = corgi_init_irq, .init_irq = pxa_init_irq,
.init_machine = corgi_init, .init_machine = corgi_init,
.timer = &pxa_timer, .timer = &pxa_timer,
MACHINE_END MACHINE_END
@ -295,8 +311,8 @@ MACHINE_START(SHEPHERD, "SHARP Shepherd")
.phys_io = 0x40000000, .phys_io = 0x40000000,
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.fixup = fixup_corgi, .fixup = fixup_corgi,
.map_io = corgi_map_io, .map_io = pxa_map_io,
.init_irq = corgi_init_irq, .init_irq = pxa_init_irq,
.init_machine = corgi_init, .init_machine = corgi_init,
.timer = &pxa_timer, .timer = &pxa_timer,
MACHINE_END MACHINE_END
@ -308,8 +324,8 @@ MACHINE_START(HUSKY, "SHARP Husky")
.phys_io = 0x40000000, .phys_io = 0x40000000,
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.fixup = fixup_corgi, .fixup = fixup_corgi,
.map_io = corgi_map_io, .map_io = pxa_map_io,
.init_irq = corgi_init_irq, .init_irq = pxa_init_irq,
.init_machine = corgi_init, .init_machine = corgi_init,
.timer = &pxa_timer, .timer = &pxa_timer,
MACHINE_END MACHINE_END

View File

@ -1,10 +1,14 @@
/* /*
* linux/drivers/video/w100fb.c * linux/drivers/video/w100fb.c
* *
* Corgi LCD Specific Code for ATI Imageon w100 (Wallaby) * Corgi/Spitz LCD Specific Code
* *
* Copyright (C) 2005 Richard Purdie * Copyright (C) 2005 Richard Purdie
* *
* Connectivity:
* Corgi - LCD to ATI Imageon w100 (Wallaby)
* Spitz - LCD to PXA Framebuffer
*
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation. * published by the Free Software Foundation.
@ -14,9 +18,17 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/module.h>
#include <asm/mach-types.h>
#include <asm/arch/akita.h>
#include <asm/arch/corgi.h> #include <asm/arch/corgi.h>
#include <asm/arch/hardware.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/sharpsl.h>
#include <asm/arch/spitz.h>
#include <asm/hardware/scoop.h>
#include <asm/mach/sharpsl_param.h> #include <asm/mach/sharpsl_param.h>
#include <video/w100fb.h> #include "generic.h"
/* Register Addresses */ /* Register Addresses */
#define RESCTL_ADRS 0x00 #define RESCTL_ADRS 0x00
@ -134,10 +146,10 @@ static void lcdtg_set_common_voltage(u8 base_data, u8 data)
} }
/* Set Phase Adjuct */ /* Set Phase Adjuct */
static void lcdtg_set_phadadj(struct w100fb_par *par) static void lcdtg_set_phadadj(int mode)
{ {
int adj; int adj;
switch(par->xres) { switch(mode) {
case 480: case 480:
case 640: case 640:
/* Setting for VGA */ /* Setting for VGA */
@ -161,7 +173,7 @@ static void lcdtg_set_phadadj(struct w100fb_par *par)
static int lcd_inited; static int lcd_inited;
static void lcdtg_hw_init(struct w100fb_par *par) static void lcdtg_hw_init(int mode)
{ {
if (!lcd_inited) { if (!lcd_inited) {
int comadj; int comadj;
@ -215,7 +227,7 @@ static void lcdtg_hw_init(struct w100fb_par *par)
corgi_ssp_lcdtg_send(PICTRL_ADRS, 0); corgi_ssp_lcdtg_send(PICTRL_ADRS, 0);
/* Set Phase Adjuct */ /* Set Phase Adjuct */
lcdtg_set_phadadj(par); lcdtg_set_phadadj(mode);
/* Initialize for Input Signals from ATI */ /* Initialize for Input Signals from ATI */
corgi_ssp_lcdtg_send(POLCTRL_ADRS, POLCTRL_SYNC_POL_RISE | POLCTRL_EN_POL_RISE corgi_ssp_lcdtg_send(POLCTRL_ADRS, POLCTRL_SYNC_POL_RISE | POLCTRL_EN_POL_RISE
@ -224,10 +236,10 @@ static void lcdtg_hw_init(struct w100fb_par *par)
lcd_inited=1; lcd_inited=1;
} else { } else {
lcdtg_set_phadadj(par); lcdtg_set_phadadj(mode);
} }
switch(par->xres) { switch(mode) {
case 480: case 480:
case 640: case 640:
/* Set Lcd Resolution (VGA) */ /* Set Lcd Resolution (VGA) */
@ -242,7 +254,7 @@ static void lcdtg_hw_init(struct w100fb_par *par)
} }
} }
static void lcdtg_suspend(struct w100fb_par *par) static void lcdtg_suspend(void)
{ {
/* 60Hz x 2 frame = 16.7msec x 2 = 33.4 msec */ /* 60Hz x 2 frame = 16.7msec x 2 = 33.4 msec */
mdelay(34); mdelay(34);
@ -276,15 +288,30 @@ static void lcdtg_suspend(struct w100fb_par *par)
lcd_inited = 0; lcd_inited = 0;
} }
static struct w100_tg_info corgi_lcdtg_info = {
.change=lcdtg_hw_init,
.suspend=lcdtg_suspend,
.resume=lcdtg_hw_init,
};
/* /*
* Corgi w100 Frame Buffer Device * Corgi w100 Frame Buffer Device
*/ */
#ifdef CONFIG_PXA_SHARP_C7xx
#include <video/w100fb.h>
static void w100_lcdtg_suspend(struct w100fb_par *par)
{
lcdtg_suspend();
}
static void w100_lcdtg_init(struct w100fb_par *par)
{
lcdtg_hw_init(par->xres);
}
static struct w100_tg_info corgi_lcdtg_info = {
.change = w100_lcdtg_init,
.suspend = w100_lcdtg_suspend,
.resume = w100_lcdtg_init,
};
static struct w100_mem_info corgi_fb_mem = { static struct w100_mem_info corgi_fb_mem = {
.ext_cntl = 0x00040003, .ext_cntl = 0x00040003,
@ -394,3 +421,145 @@ struct platform_device corgifb_device = {
}, },
}; };
#endif
/*
* Spitz PXA Frame Buffer Device
*/
#ifdef CONFIG_PXA_SHARP_Cxx00
#include <asm/arch/pxafb.h>
void spitz_lcd_power(int on)
{
if (on)
lcdtg_hw_init(480);
else
lcdtg_suspend();
}
#endif
/*
* Corgi/Spitz Touchscreen to LCD interface
*/
static unsigned long (*get_hsync_time)(struct device *dev);
static void inline sharpsl_wait_sync(int gpio)
{
while((GPLR(gpio) & GPIO_bit(gpio)) == 0);
while((GPLR(gpio) & GPIO_bit(gpio)) != 0);
}
#ifdef CONFIG_PXA_SHARP_C7xx
unsigned long corgi_get_hsync_len(void)
{
if (!get_hsync_time)
get_hsync_time = symbol_get(w100fb_get_hsynclen);
if (!get_hsync_time)
return 0;
return get_hsync_time(&corgifb_device.dev);
}
void corgi_put_hsync(void)
{
if (get_hsync_time)
symbol_put(w100fb_get_hsynclen);
}
void corgi_wait_hsync(void)
{
sharpsl_wait_sync(CORGI_GPIO_HSYNC);
}
#endif
#ifdef CONFIG_PXA_SHARP_Cxx00
unsigned long spitz_get_hsync_len(void)
{
if (!get_hsync_time)
get_hsync_time = symbol_get(pxafb_get_hsync_time);
if (!get_hsync_time)
return 0;
return pxafb_get_hsync_time(&pxafb_device.dev);
}
void spitz_put_hsync(void)
{
if (get_hsync_time)
symbol_put(pxafb_get_hsync_time);
}
void spitz_wait_hsync(void)
{
sharpsl_wait_sync(SPITZ_GPIO_HSYNC);
}
#endif
/*
* Corgi/Spitz Backlight Power
*/
#ifdef CONFIG_PXA_SHARP_C7xx
void corgi_bl_set_intensity(int intensity)
{
if (intensity > 0x10)
intensity += 0x10;
/* Bits 0-4 are accessed via the SSP interface */
corgi_ssp_blduty_set(intensity & 0x1f);
/* Bit 5 is via SCOOP */
if (intensity & 0x0020)
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_BACKLIGHT_CONT);
else
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_BACKLIGHT_CONT);
}
#endif
#if defined(CONFIG_MACH_SPITZ) || defined(CONFIG_MACH_BORZOI)
void spitz_bl_set_intensity(int intensity)
{
if (intensity > 0x10)
intensity += 0x10;
/* Bits 0-4 are accessed via the SSP interface */
corgi_ssp_blduty_set(intensity & 0x1f);
/* Bit 5 is via SCOOP */
if (intensity & 0x0020)
reset_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_BACKLIGHT_CONT);
else
set_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_BACKLIGHT_CONT);
if (intensity)
set_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_BACKLIGHT_ON);
else
reset_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_BACKLIGHT_ON);
}
#endif
#ifdef CONFIG_MACH_AKITA
void akita_bl_set_intensity(int intensity)
{
if (intensity > 0x10)
intensity += 0x10;
/* Bits 0-4 are accessed via the SSP interface */
corgi_ssp_blduty_set(intensity & 0x1f);
/* Bit 5 is via IO-Expander */
if (intensity & 0x0020)
akita_reset_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_BACKLIGHT_CONT);
else
akita_set_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_BACKLIGHT_CONT);
if (intensity)
akita_set_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_BACKLIGHT_ON);
else
akita_reset_ioexp(&akitaioexp_device.dev, AKITA_IOEXP_BACKLIGHT_ON);
}
#endif

View File

@ -1,7 +1,7 @@
/* /*
* SSP control code for Sharp Corgi devices * SSP control code for Sharp Corgi devices
* *
* Copyright (c) 2004 Richard Purdie * Copyright (c) 2004-2005 Richard Purdie
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License version 2 as
@ -17,14 +17,16 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/device.h> #include <linux/device.h>
#include <asm/hardware.h> #include <asm/hardware.h>
#include <asm/mach-types.h>
#include <asm/arch/ssp.h> #include <asm/arch/ssp.h>
#include <asm/arch/corgi.h>
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include "sharpsl.h"
static DEFINE_SPINLOCK(corgi_ssp_lock); static DEFINE_SPINLOCK(corgi_ssp_lock);
static struct ssp_dev corgi_ssp_dev; static struct ssp_dev corgi_ssp_dev;
static struct ssp_state corgi_ssp_state; static struct ssp_state corgi_ssp_state;
static struct corgissp_machinfo *ssp_machinfo;
/* /*
* There are three devices connected to the SSP interface: * There are three devices connected to the SSP interface:
@ -48,12 +50,12 @@ unsigned long corgi_ssp_ads7846_putget(ulong data)
unsigned long ret,flag; unsigned long ret,flag;
spin_lock_irqsave(&corgi_ssp_lock, flag); spin_lock_irqsave(&corgi_ssp_lock, flag);
GPCR0 = GPIO_bit(CORGI_GPIO_ADS7846_CS); GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
ssp_write_word(&corgi_ssp_dev,data); ssp_write_word(&corgi_ssp_dev,data);
ret = ssp_read_word(&corgi_ssp_dev); ret = ssp_read_word(&corgi_ssp_dev);
GPSR0 = GPIO_bit(CORGI_GPIO_ADS7846_CS); GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
spin_unlock_irqrestore(&corgi_ssp_lock, flag); spin_unlock_irqrestore(&corgi_ssp_lock, flag);
return ret; return ret;
@ -66,12 +68,12 @@ unsigned long corgi_ssp_ads7846_putget(ulong data)
void corgi_ssp_ads7846_lock(void) void corgi_ssp_ads7846_lock(void)
{ {
spin_lock(&corgi_ssp_lock); spin_lock(&corgi_ssp_lock);
GPCR0 = GPIO_bit(CORGI_GPIO_ADS7846_CS); GPCR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
} }
void corgi_ssp_ads7846_unlock(void) void corgi_ssp_ads7846_unlock(void)
{ {
GPSR0 = GPIO_bit(CORGI_GPIO_ADS7846_CS); GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846);
spin_unlock(&corgi_ssp_lock); spin_unlock(&corgi_ssp_lock);
} }
@ -97,23 +99,27 @@ EXPORT_SYMBOL(corgi_ssp_ads7846_get);
*/ */
unsigned long corgi_ssp_dac_put(ulong data) unsigned long corgi_ssp_dac_put(ulong data)
{ {
unsigned long flag; unsigned long flag, sscr1 = SSCR1_SPH;
spin_lock_irqsave(&corgi_ssp_lock, flag); spin_lock_irqsave(&corgi_ssp_lock, flag);
GPCR0 = GPIO_bit(CORGI_GPIO_LCDCON_CS);
if (machine_is_spitz() || machine_is_akita() || machine_is_borzoi())
sscr1 = 0;
ssp_disable(&corgi_ssp_dev); ssp_disable(&corgi_ssp_dev);
ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), SSCR1_SPH, 0, SSCR0_SerClkDiv(76)); ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), sscr1, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_lcdcon));
ssp_enable(&corgi_ssp_dev); ssp_enable(&corgi_ssp_dev);
GPCR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);
ssp_write_word(&corgi_ssp_dev,data); ssp_write_word(&corgi_ssp_dev,data);
/* Read null data back from device to prevent SSP overflow */ /* Read null data back from device to prevent SSP overflow */
ssp_read_word(&corgi_ssp_dev); ssp_read_word(&corgi_ssp_dev);
GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon);
ssp_disable(&corgi_ssp_dev); ssp_disable(&corgi_ssp_dev);
ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(2)); ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
ssp_enable(&corgi_ssp_dev); ssp_enable(&corgi_ssp_dev);
GPSR0 = GPIO_bit(CORGI_GPIO_LCDCON_CS);
spin_unlock_irqrestore(&corgi_ssp_lock, flag); spin_unlock_irqrestore(&corgi_ssp_lock, flag);
return 0; return 0;
@ -141,9 +147,9 @@ int corgi_ssp_max1111_get(ulong data)
int voltage,voltage1,voltage2; int voltage,voltage1,voltage2;
spin_lock_irqsave(&corgi_ssp_lock, flag); spin_lock_irqsave(&corgi_ssp_lock, flag);
GPCR0 = GPIO_bit(CORGI_GPIO_MAX1111_CS); GPCR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111);
ssp_disable(&corgi_ssp_dev); ssp_disable(&corgi_ssp_dev);
ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(8)); ssp_config(&corgi_ssp_dev, (SSCR0_Motorola | (SSCR0_DSS & 0x07 )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_max1111));
ssp_enable(&corgi_ssp_dev); ssp_enable(&corgi_ssp_dev);
udelay(1); udelay(1);
@ -161,9 +167,9 @@ int corgi_ssp_max1111_get(ulong data)
voltage2=ssp_read_word(&corgi_ssp_dev); voltage2=ssp_read_word(&corgi_ssp_dev);
ssp_disable(&corgi_ssp_dev); ssp_disable(&corgi_ssp_dev);
ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(2)); ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
ssp_enable(&corgi_ssp_dev); ssp_enable(&corgi_ssp_dev);
GPSR0 = GPIO_bit(CORGI_GPIO_MAX1111_CS); GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111);
spin_unlock_irqrestore(&corgi_ssp_lock, flag); spin_unlock_irqrestore(&corgi_ssp_lock, flag);
if (voltage1 & 0xc0 || voltage2 & 0x3f) if (voltage1 & 0xc0 || voltage2 & 0x3f)
@ -179,25 +185,31 @@ EXPORT_SYMBOL(corgi_ssp_max1111_get);
/* /*
* Support Routines * Support Routines
*/ */
int __init corgi_ssp_probe(struct device *dev)
void __init corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo)
{
ssp_machinfo = machinfo;
}
static int __init corgi_ssp_probe(struct device *dev)
{ {
int ret; int ret;
/* Chip Select - Disable All */ /* Chip Select - Disable All */
GPDR0 |= GPIO_bit(CORGI_GPIO_LCDCON_CS); /* output */ GPDR(ssp_machinfo->cs_lcdcon) |= GPIO_bit(ssp_machinfo->cs_lcdcon); /* output */
GPSR0 = GPIO_bit(CORGI_GPIO_LCDCON_CS); /* High - Disable LCD Control/Timing Gen */ GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); /* High - Disable LCD Control/Timing Gen */
GPDR0 |= GPIO_bit(CORGI_GPIO_MAX1111_CS); /* output */ GPDR(ssp_machinfo->cs_max1111) |= GPIO_bit(ssp_machinfo->cs_max1111); /* output */
GPSR0 = GPIO_bit(CORGI_GPIO_MAX1111_CS); /* High - Disable MAX1111*/ GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/
GPDR0 |= GPIO_bit(CORGI_GPIO_ADS7846_CS); /* output */ GPDR(ssp_machinfo->cs_ads7846) |= GPIO_bit(ssp_machinfo->cs_ads7846); /* output */
GPSR0 = GPIO_bit(CORGI_GPIO_ADS7846_CS); /* High - Disable ADS7846*/ GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/
ret=ssp_init(&corgi_ssp_dev,1); ret = ssp_init(&corgi_ssp_dev,ssp_machinfo->port);
if (ret) if (ret)
printk(KERN_ERR "Unable to register SSP handler!\n"); printk(KERN_ERR "Unable to register SSP handler!\n");
else { else {
ssp_disable(&corgi_ssp_dev); ssp_disable(&corgi_ssp_dev);
ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(2)); ssp_config(&corgi_ssp_dev, (SSCR0_National | (SSCR0_DSS & 0x0b )), 0, 0, SSCR0_SerClkDiv(ssp_machinfo->clk_ads7846));
ssp_enable(&corgi_ssp_dev); ssp_enable(&corgi_ssp_dev);
} }
@ -222,9 +234,9 @@ static int corgi_ssp_suspend(struct device *dev, pm_message_t state, u32 level)
static int corgi_ssp_resume(struct device *dev, u32 level) static int corgi_ssp_resume(struct device *dev, u32 level)
{ {
if (level == RESUME_POWER_ON) { if (level == RESUME_POWER_ON) {
GPSR0 = GPIO_bit(CORGI_GPIO_LCDCON_CS); /* High - Disable LCD Control/Timing Gen */ GPSR(ssp_machinfo->cs_lcdcon) = GPIO_bit(ssp_machinfo->cs_lcdcon); /* High - Disable LCD Control/Timing Gen */
GPSR0 = GPIO_bit(CORGI_GPIO_MAX1111_CS); /* High - Disable MAX1111*/ GPSR(ssp_machinfo->cs_max1111) = GPIO_bit(ssp_machinfo->cs_max1111); /* High - Disable MAX1111*/
GPSR0 = GPIO_bit(CORGI_GPIO_ADS7846_CS); /* High - Disable ADS7846*/ GPSR(ssp_machinfo->cs_ads7846) = GPIO_bit(ssp_machinfo->cs_ads7846); /* High - Disable ADS7846*/
ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state); ssp_restore_state(&corgi_ssp_dev,&corgi_ssp_state);
ssp_enable(&corgi_ssp_dev); ssp_enable(&corgi_ssp_dev);
} }

View File

@ -146,6 +146,11 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
// no D+ pullup; lubbock can't connect/disconnect in software // no D+ pullup; lubbock can't connect/disconnect in software
}; };
static struct platform_device lub_audio_device = {
.name = "pxa2xx-ac97",
.id = -1,
};
static struct resource sa1111_resources[] = { static struct resource sa1111_resources[] = {
[0] = { [0] = {
.start = 0x10000000, .start = 0x10000000,
@ -195,6 +200,7 @@ static struct platform_device smc91x_device = {
static struct platform_device *devices[] __initdata = { static struct platform_device *devices[] __initdata = {
&sa1111_device, &sa1111_device,
&lub_audio_device,
&smc91x_device, &smc91x_device,
}; };

View File

@ -30,6 +30,8 @@
#include <asm/arch/pxa-regs.h> #include <asm/arch/pxa-regs.h>
#include <asm/arch/irq.h> #include <asm/arch/irq.h>
#include <asm/arch/mmc.h>
#include <asm/arch/udc.h>
#include <asm/arch/poodle.h> #include <asm/arch/poodle.h>
#include <asm/arch/pxafb.h> #include <asm/arch/pxafb.h>
@ -93,6 +95,83 @@ static struct platform_device locomo_device = {
.resource = locomo_resources, .resource = locomo_resources,
}; };
/*
* MMC/SD Device
*
* The card detect interrupt isn't debounced so we delay it by 250ms
* to give the card a chance to fully insert/eject.
*/
static struct pxamci_platform_data poodle_mci_platform_data;
static int poodle_mci_init(struct device *dev, irqreturn_t (*poodle_detect_int)(int, void *, struct pt_regs *), void *data)
{
int err;
/* setup GPIO for PXA25x MMC controller */
pxa_gpio_mode(GPIO6_MMCCLK_MD);
pxa_gpio_mode(GPIO8_MMCCS0_MD);
pxa_gpio_mode(POODLE_GPIO_nSD_DETECT | GPIO_IN);
pxa_gpio_mode(POODLE_GPIO_SD_PWR | GPIO_OUT);
poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250);
err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int, SA_INTERRUPT,
"MMC card detect", data);
if (err) {
printk(KERN_ERR "poodle_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
return -1;
}
set_irq_type(POODLE_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE);
return 0;
}
static void poodle_mci_setpower(struct device *dev, unsigned int vdd)
{
struct pxamci_platform_data* p_d = dev->platform_data;
if (( 1 << vdd) & p_d->ocr_mask)
GPSR1 = GPIO_bit(POODLE_GPIO_SD_PWR);
else
GPCR1 = GPIO_bit(POODLE_GPIO_SD_PWR);
}
static void poodle_mci_exit(struct device *dev, void *data)
{
free_irq(POODLE_IRQ_GPIO_nSD_DETECT, data);
}
static struct pxamci_platform_data poodle_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.init = poodle_mci_init,
.setpower = poodle_mci_setpower,
.exit = poodle_mci_exit,
};
/*
* USB Device Controller
*/
static void poodle_udc_command(int cmd)
{
switch(cmd) {
case PXA2XX_UDC_CMD_CONNECT:
GPSR(POODLE_GPIO_USB_PULLUP) = GPIO_bit(POODLE_GPIO_USB_PULLUP);
break;
case PXA2XX_UDC_CMD_DISCONNECT:
GPCR(POODLE_GPIO_USB_PULLUP) = GPIO_bit(POODLE_GPIO_USB_PULLUP);
break;
}
}
static struct pxa2xx_udc_mach_info udc_info __initdata = {
/* no connect GPIO; poodle can't tell connection status */
.udc_command = poodle_udc_command,
};
/* PXAFB device */ /* PXAFB device */
static struct pxafb_mach_info poodle_fb_info __initdata = { static struct pxafb_mach_info poodle_fb_info __initdata = {
.pixclock = 144700, .pixclock = 144700,
@ -126,6 +205,15 @@ static void __init poodle_init(void)
{ {
int ret = 0; int ret = 0;
/* setup sleep mode values */
PWER = 0x00000002;
PFER = 0x00000000;
PRER = 0x00000002;
PGSR0 = 0x00008000;
PGSR1 = 0x003F0202;
PGSR2 = 0x0001C000;
PCFR |= PCFR_OPDE;
/* cpu initialize */ /* cpu initialize */
/* Pgsr Register */ /* Pgsr Register */
PGSR0 = 0x0146dd80; PGSR0 = 0x0146dd80;
@ -155,6 +243,9 @@ static void __init poodle_init(void)
GPSR2 = 0x00000000; GPSR2 = 0x00000000;
set_pxa_fb_info(&poodle_fb_info); set_pxa_fb_info(&poodle_fb_info);
pxa_gpio_mode(POODLE_GPIO_USB_PULLUP | GPIO_OUT);
pxa_set_udc_info(&udc_info);
pxa_set_mci_info(&poodle_mci_platform_data);
scoop_num = 1; scoop_num = 1;
scoop_devs = &poodle_pcmcia_scoop[0]; scoop_devs = &poodle_pcmcia_scoop[0];
@ -171,32 +262,12 @@ static void __init fixup_poodle(struct machine_desc *desc,
sharpsl_save_param(); sharpsl_save_param();
} }
static struct map_desc poodle_io_desc[] __initdata = {
/* virtual physical length */
{ 0xef800000, 0x00000000, 0x00800000, MT_DEVICE }, /* Boot Flash */
};
static void __init poodle_map_io(void)
{
pxa_map_io();
iotable_init(poodle_io_desc, ARRAY_SIZE(poodle_io_desc));
/* setup sleep mode values */
PWER = 0x00000002;
PFER = 0x00000000;
PRER = 0x00000002;
PGSR0 = 0x00008000;
PGSR1 = 0x003F0202;
PGSR2 = 0x0001C000;
PCFR |= PCFR_OPDE;
}
MACHINE_START(POODLE, "SHARP Poodle") MACHINE_START(POODLE, "SHARP Poodle")
.phys_ram = 0xa0000000, .phys_ram = 0xa0000000,
.phys_io = 0x40000000, .phys_io = 0x40000000,
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.fixup = fixup_poodle, .fixup = fixup_poodle,
.map_io = poodle_map_io, .map_io = pxa_map_io,
.init_irq = pxa_init_irq, .init_irq = pxa_init_irq,
.timer = &pxa_timer, .timer = &pxa_timer,
.init_machine = poodle_init, .init_machine = poodle_init,

View File

@ -0,0 +1,34 @@
/*
* SharpSL SSP Driver
*/
struct corgissp_machinfo {
int port;
int cs_lcdcon;
int cs_ads7846;
int cs_max1111;
int clk_lcdcon;
int clk_ads7846;
int clk_max1111;
};
void corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo);
/*
* SharpSL Backlight
*/
void corgi_bl_set_intensity(int intensity);
void spitz_bl_set_intensity(int intensity);
void akita_bl_set_intensity(int intensity);
/*
* SharpSL Touchscreen Driver
*/
unsigned long corgi_get_hsync_len(void);
unsigned long spitz_get_hsync_len(void);
void corgi_put_hsync(void);
void spitz_put_hsync(void);
void corgi_wait_hsync(void);
void spitz_wait_hsync(void);

380
arch/arm/mach-pxa/spitz.c Normal file
View File

@ -0,0 +1,380 @@
/*
* Support for Sharp SL-Cxx00 Series of PDAs
* Models: SL-C3000 (Spitz), SL-C1000 (Akita) and SL-C3100 (Borzoi)
*
* Copyright (c) 2005 Richard Purdie
*
* Based on Sharp's 2.4 kernel patches/lubbock.c
*
* 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.
*
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/delay.h>
#include <linux/major.h>
#include <linux/fs.h>
#include <linux/interrupt.h>
#include <linux/mmc/host.h>
#include <asm/setup.h>
#include <asm/memory.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/irq.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/irq.h>
#include <asm/arch/mmc.h>
#include <asm/arch/udc.h>
#include <asm/arch/ohci.h>
#include <asm/arch/pxafb.h>
#include <asm/arch/akita.h>
#include <asm/arch/spitz.h>
#include <asm/arch/sharpsl.h>
#include <asm/mach/sharpsl_param.h>
#include <asm/hardware/scoop.h>
#include "generic.h"
#include "sharpsl.h"
/*
* Spitz SCOOP Device #1
*/
static struct resource spitz_scoop_resources[] = {
[0] = {
.start = 0x10800000,
.end = 0x10800fff,
.flags = IORESOURCE_MEM,
},
};
static struct scoop_config spitz_scoop_setup = {
.io_dir = SPITZ_SCP_IO_DIR,
.io_out = SPITZ_SCP_IO_OUT,
.suspend_clr = SPITZ_SCP_SUS_CLR,
.suspend_set = SPITZ_SCP_SUS_SET,
};
struct platform_device spitzscoop_device = {
.name = "sharp-scoop",
.id = 0,
.dev = {
.platform_data = &spitz_scoop_setup,
},
.num_resources = ARRAY_SIZE(spitz_scoop_resources),
.resource = spitz_scoop_resources,
};
/*
* Spitz SCOOP Device #2
*/
static struct resource spitz_scoop2_resources[] = {
[0] = {
.start = 0x08800040,
.end = 0x08800fff,
.flags = IORESOURCE_MEM,
},
};
static struct scoop_config spitz_scoop2_setup = {
.io_dir = SPITZ_SCP2_IO_DIR,
.io_out = SPITZ_SCP2_IO_OUT,
.suspend_clr = SPITZ_SCP2_SUS_CLR,
.suspend_set = SPITZ_SCP2_SUS_SET,
};
struct platform_device spitzscoop2_device = {
.name = "sharp-scoop",
.id = 1,
.dev = {
.platform_data = &spitz_scoop2_setup,
},
.num_resources = ARRAY_SIZE(spitz_scoop2_resources),
.resource = spitz_scoop2_resources,
};
static struct scoop_pcmcia_dev spitz_pcmcia_scoop[] = {
{
.dev = &spitzscoop_device.dev,
.irq = SPITZ_IRQ_GPIO_CF_IRQ,
.cd_irq = SPITZ_IRQ_GPIO_CF_CD,
.cd_irq_str = "PCMCIA0 CD",
},{
.dev = &spitzscoop2_device.dev,
.irq = SPITZ_IRQ_GPIO_CF2_IRQ,
.cd_irq = -1,
},
};
/*
* Spitz SSP Device
*
* Set the parent as the scoop device because a lot of SSP devices
* also use scoop functions and this makes the power up/down order
* work correctly.
*/
struct platform_device spitzssp_device = {
.name = "corgi-ssp",
.dev = {
.parent = &spitzscoop_device.dev,
},
.id = -1,
};
struct corgissp_machinfo spitz_ssp_machinfo = {
.port = 2,
.cs_lcdcon = SPITZ_GPIO_LCDCON_CS,
.cs_ads7846 = SPITZ_GPIO_ADS7846_CS,
.cs_max1111 = SPITZ_GPIO_MAX1111_CS,
.clk_lcdcon = 520,
.clk_ads7846 = 14,
.clk_max1111 = 56,
};
/*
* Spitz Backlight Device
*/
static struct corgibl_machinfo spitz_bl_machinfo = {
.max_intensity = 0x2f,
};
static struct platform_device spitzbl_device = {
.name = "corgi-bl",
.dev = {
.platform_data = &spitz_bl_machinfo,
},
.id = -1,
};
/*
* Spitz Keyboard Device
*/
static struct platform_device spitzkbd_device = {
.name = "spitz-keyboard",
.id = -1,
};
/*
* Spitz Touch Screen Device
*/
static struct resource spitzts_resources[] = {
[0] = {
.start = SPITZ_IRQ_GPIO_TP_INT,
.end = SPITZ_IRQ_GPIO_TP_INT,
.flags = IORESOURCE_IRQ,
},
};
static struct corgits_machinfo spitz_ts_machinfo = {
.get_hsync_len = spitz_get_hsync_len,
.put_hsync = spitz_put_hsync,
.wait_hsync = spitz_wait_hsync,
};
static struct platform_device spitzts_device = {
.name = "corgi-ts",
.dev = {
.parent = &spitzssp_device.dev,
.platform_data = &spitz_ts_machinfo,
},
.id = -1,
.num_resources = ARRAY_SIZE(spitzts_resources),
.resource = spitzts_resources,
};
/*
* MMC/SD Device
*
* The card detect interrupt isn't debounced so we delay it by 250ms
* to give the card a chance to fully insert/eject.
*/
static struct pxamci_platform_data spitz_mci_platform_data;
static int spitz_mci_init(struct device *dev, irqreturn_t (*spitz_detect_int)(int, void *, struct pt_regs *), void *data)
{
int err;
/* setup GPIO for PXA27x MMC controller */
pxa_gpio_mode(GPIO32_MMCCLK_MD);
pxa_gpio_mode(GPIO112_MMCCMD_MD);
pxa_gpio_mode(GPIO92_MMCDAT0_MD);
pxa_gpio_mode(GPIO109_MMCDAT1_MD);
pxa_gpio_mode(GPIO110_MMCDAT2_MD);
pxa_gpio_mode(GPIO111_MMCDAT3_MD);
pxa_gpio_mode(SPITZ_GPIO_nSD_DETECT | GPIO_IN);
pxa_gpio_mode(SPITZ_GPIO_nSD_WP | GPIO_IN);
spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250);
err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int, SA_INTERRUPT,
"MMC card detect", data);
if (err) {
printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n");
return -1;
}
set_irq_type(SPITZ_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE);
return 0;
}
/* Power control is shared with one of the CF slots so we have a mess */
static void spitz_mci_setpower(struct device *dev, unsigned int vdd)
{
struct pxamci_platform_data* p_d = dev->platform_data;
unsigned short cpr = read_scoop_reg(&spitzscoop_device.dev, SCOOP_CPR);
if (( 1 << vdd) & p_d->ocr_mask) {
/* printk(KERN_DEBUG "%s: on\n", __FUNCTION__); */
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_CF_POWER);
mdelay(2);
write_scoop_reg(&spitzscoop_device.dev, SCOOP_CPR, cpr | 0x04);
} else {
/* printk(KERN_DEBUG "%s: off\n", __FUNCTION__); */
write_scoop_reg(&spitzscoop_device.dev, SCOOP_CPR, cpr & ~0x04);
if (!(cpr | 0x02)) {
mdelay(1);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_CF_POWER);
}
}
}
static int spitz_mci_get_ro(struct device *dev)
{
return GPLR(SPITZ_GPIO_nSD_WP) & GPIO_bit(SPITZ_GPIO_nSD_WP);
}
static void spitz_mci_exit(struct device *dev, void *data)
{
free_irq(SPITZ_IRQ_GPIO_nSD_DETECT, data);
}
static struct pxamci_platform_data spitz_mci_platform_data = {
.ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34,
.init = spitz_mci_init,
.get_ro = spitz_mci_get_ro,
.setpower = spitz_mci_setpower,
.exit = spitz_mci_exit,
};
/*
* Spitz PXA Framebuffer
*/
static struct pxafb_mach_info spitz_pxafb_info __initdata = {
.pixclock = 19231,
.xres = 480,
.yres = 640,
.bpp = 16,
.hsync_len = 40,
.left_margin = 46,
.right_margin = 125,
.vsync_len = 3,
.upper_margin = 1,
.lower_margin = 0,
.sync = 0,
.lccr0 = LCCR0_Color | LCCR0_Sngl | LCCR0_Act | LCCR0_LDDALT | LCCR0_OUC | LCCR0_CMDIM | LCCR0_RDSTM,
.lccr3 = LCCR3_PixRsEdg | LCCR3_OutEnH,
.pxafb_lcd_power = spitz_lcd_power,
};
static struct platform_device *devices[] __initdata = {
&spitzscoop_device,
&spitzssp_device,
&spitzkbd_device,
&spitzts_device,
&spitzbl_device,
&spitzbattery_device,
};
static void __init common_init(void)
{
PMCR = 0x00;
/* setup sleep mode values */
PWER = 0x00000002;
PFER = 0x00000000;
PRER = 0x00000002;
PGSR0 = 0x0158C000;
PGSR1 = 0x00FF0080;
PGSR2 = 0x0001C004;
/* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
PCFR |= PCFR_OPDE;
corgi_ssp_set_machinfo(&spitz_ssp_machinfo);
pxa_gpio_mode(SPITZ_GPIO_HSYNC | GPIO_IN);
platform_add_devices(devices, ARRAY_SIZE(devices));
pxa_set_mci_info(&spitz_mci_platform_data);
pxafb_device.dev.parent = &spitzssp_device.dev;
set_pxa_fb_info(&spitz_pxafb_info);
}
static void __init spitz_init(void)
{
scoop_num = 2;
scoop_devs = &spitz_pcmcia_scoop[0];
spitz_bl_machinfo.set_bl_intensity = spitz_bl_set_intensity;
common_init();
platform_device_register(&spitzscoop2_device);
}
static void __init fixup_spitz(struct machine_desc *desc,
struct tag *tags, char **cmdline, struct meminfo *mi)
{
sharpsl_save_param();
mi->nr_banks = 1;
mi->bank[0].start = 0xa0000000;
mi->bank[0].node = 0;
mi->bank[0].size = (64*1024*1024);
}
#ifdef CONFIG_MACH_SPITZ
MACHINE_START(SPITZ, "SHARP Spitz")
.phys_ram = 0xa0000000,
.phys_io = 0x40000000,
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.fixup = fixup_spitz,
.map_io = pxa_map_io,
.init_irq = pxa_init_irq,
.init_machine = spitz_init,
.timer = &pxa_timer,
MACHINE_END
#endif
#ifdef CONFIG_MACH_BORZOI
MACHINE_START(BORZOI, "SHARP Borzoi")
.phys_ram = 0xa0000000,
.phys_io = 0x40000000,
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.fixup = fixup_spitz,
.map_io = pxa_map_io,
.init_irq = pxa_init_irq,
.init_machine = spitz_init,
.timer = &pxa_timer,
MACHINE_END
#endif

View File

@ -12,6 +12,7 @@
* *
* Modifications: * Modifications:
* 02-May-2005 BJD Copied from mach-bast.c * 02-May-2005 BJD Copied from mach-bast.c
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
@ -232,7 +233,7 @@ static struct s3c24xx_board anubis_board __initdata = {
.clocks_count = ARRAY_SIZE(anubis_clocks) .clocks_count = ARRAY_SIZE(anubis_clocks)
}; };
void __init anubis_map_io(void) static void __init anubis_map_io(void)
{ {
/* initialise the clocks */ /* initialise the clocks */

View File

@ -31,6 +31,7 @@
* 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s * 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s
* 25-Jul-2005 BJD Removed ASIX static mappings * 25-Jul-2005 BJD Removed ASIX static mappings
* 27-Jul-2005 BJD Ensure maximum frequency of i2c bus * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
@ -428,7 +429,7 @@ static struct s3c24xx_board bast_board __initdata = {
.clocks_count = ARRAY_SIZE(bast_clocks) .clocks_count = ARRAY_SIZE(bast_clocks)
}; };
void __init bast_map_io(void) static void __init bast_map_io(void)
{ {
/* initialise the clocks */ /* initialise the clocks */

View File

@ -24,6 +24,7 @@
* 10-Jan-2005 BJD Removed include of s3c2410.h * 10-Jan-2005 BJD Removed include of s3c2410.h
* 14-Jan-2005 BJD Added clock init * 14-Jan-2005 BJD Added clock init
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
@ -147,7 +148,7 @@ static struct s3c24xx_board h1940_board __initdata = {
.devices_count = ARRAY_SIZE(h1940_devices) .devices_count = ARRAY_SIZE(h1940_devices)
}; };
void __init h1940_map_io(void) static void __init h1940_map_io(void)
{ {
s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc)); s3c24xx_init_io(h1940_iodesc, ARRAY_SIZE(h1940_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
@ -155,13 +156,13 @@ void __init h1940_map_io(void)
s3c24xx_set_board(&h1940_board); s3c24xx_set_board(&h1940_board);
} }
void __init h1940_init_irq(void) static void __init h1940_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }
void __init h1940_init(void) static void __init h1940_init(void)
{ {
set_s3c2410fb_info(&h1940_lcdcfg); set_s3c2410fb_info(&h1940_lcdcfg);
} }

View File

@ -97,7 +97,7 @@ static struct s3c24xx_board n30_board __initdata = {
.devices_count = ARRAY_SIZE(n30_devices) .devices_count = ARRAY_SIZE(n30_devices)
}; };
void __init n30_map_io(void) static void __init n30_map_io(void)
{ {
s3c24xx_init_io(n30_iodesc, ARRAY_SIZE(n30_iodesc)); s3c24xx_init_io(n30_iodesc, ARRAY_SIZE(n30_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
@ -105,14 +105,14 @@ void __init n30_map_io(void)
s3c24xx_set_board(&n30_board); s3c24xx_set_board(&n30_board);
} }
void __init n30_init_irq(void) static void __init n30_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }
/* GPB3 is the line that controls the pull-up for the USB D+ line */ /* GPB3 is the line that controls the pull-up for the USB D+ line */
void __init n30_init(void) static void __init n30_init(void)
{ {
s3c_device_i2c.dev.platform_data = &n30_i2ccfg; s3c_device_i2c.dev.platform_data = &n30_i2ccfg;

View File

@ -136,7 +136,7 @@ static void __init nexcoder_sensorboard_init(void)
s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_OUTP); // CAM_GPIO6 => CAM_PWRDN s3c2410_gpio_cfgpin(S3C2410_GPF2, S3C2410_GPF2_OUTP); // CAM_GPIO6 => CAM_PWRDN
} }
void __init nexcoder_map_io(void) static void __init nexcoder_map_io(void)
{ {
s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc)); s3c24xx_init_io(nexcoder_iodesc, ARRAY_SIZE(nexcoder_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);

View File

@ -105,7 +105,7 @@ static struct s3c24xx_board otom11_board __initdata = {
}; };
void __init otom11_map_io(void) static void __init otom11_map_io(void)
{ {
s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc)); s3c24xx_init_io(otom11_iodesc, ARRAY_SIZE(otom11_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);

View File

@ -16,6 +16,7 @@
* 14-Jan-2005 BJD Added new clock init * 14-Jan-2005 BJD Added new clock init
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 14-Mar-2005 BJD Fixed __iomem warnings * 14-Mar-2005 BJD Fixed __iomem warnings
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
@ -108,7 +109,7 @@ static struct s3c24xx_board rx3715_board __initdata = {
.devices_count = ARRAY_SIZE(rx3715_devices) .devices_count = ARRAY_SIZE(rx3715_devices)
}; };
void __init rx3715_map_io(void) static void __init rx3715_map_io(void)
{ {
s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc)); s3c24xx_init_io(rx3715_iodesc, ARRAY_SIZE(rx3715_iodesc));
s3c24xx_init_clocks(16934000); s3c24xx_init_clocks(16934000);
@ -116,7 +117,7 @@ void __init rx3715_map_io(void)
s3c24xx_set_board(&rx3715_board); s3c24xx_set_board(&rx3715_board);
} }
void __init rx3715_init_irq(void) static void __init rx3715_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }

View File

@ -28,6 +28,7 @@
* Ben Dooks <ben@simtec.co.uk> * Ben Dooks <ben@simtec.co.uk>
* *
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 20-Sep-2005 BJD Added static to non-exported items
* *
***********************************************************************/ ***********************************************************************/
@ -97,7 +98,7 @@ static struct s3c24xx_board smdk2410_board __initdata = {
.devices_count = ARRAY_SIZE(smdk2410_devices) .devices_count = ARRAY_SIZE(smdk2410_devices)
}; };
void __init smdk2410_map_io(void) static void __init smdk2410_map_io(void)
{ {
s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc)); s3c24xx_init_io(smdk2410_iodesc, ARRAY_SIZE(smdk2410_iodesc));
s3c24xx_init_clocks(0); s3c24xx_init_clocks(0);
@ -105,7 +106,7 @@ void __init smdk2410_map_io(void)
s3c24xx_set_board(&smdk2410_board); s3c24xx_set_board(&smdk2410_board);
} }
void __init smdk2410_init_irq(void) static void __init smdk2410_init_irq(void)
{ {
s3c24xx_init_irq(); s3c24xx_init_irq();
} }

View File

@ -18,6 +18,7 @@
* 22-Feb-2005 BJD Updated for 2.6.11-rc5 relesa * 22-Feb-2005 BJD Updated for 2.6.11-rc5 relesa
* 10-Mar-2005 LCVR Replaced S3C2410_VA by S3C24XX_VA * 10-Mar-2005 LCVR Replaced S3C2410_VA by S3C24XX_VA
* 14-Mar-2005 BJD void __iomem fixes * 14-Mar-2005 BJD void __iomem fixes
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
@ -98,7 +99,7 @@ static struct s3c24xx_board smdk2440_board __initdata = {
.devices_count = ARRAY_SIZE(smdk2440_devices) .devices_count = ARRAY_SIZE(smdk2440_devices)
}; };
void __init smdk2440_map_io(void) static void __init smdk2440_map_io(void)
{ {
s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc)); s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));
s3c24xx_init_clocks(16934400); s3c24xx_init_clocks(16934400);
@ -106,7 +107,7 @@ void __init smdk2440_map_io(void)
s3c24xx_set_board(&smdk2440_board); s3c24xx_set_board(&smdk2440_board);
} }
void __init smdk2440_machine_init(void) static void __init smdk2440_machine_init(void)
{ {
/* Configure the LEDs (even if we have no LED support)*/ /* Configure the LEDs (even if we have no LED support)*/

View File

@ -28,6 +28,7 @@
* 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA
* 14-Mar-2006 BJD void __iomem fixes * 14-Mar-2006 BJD void __iomem fixes
* 22-Jun-2006 BJD Added DM9000 platform information * 22-Jun-2006 BJD Added DM9000 platform information
* 20-Sep-2005 BJD Added static to non-exported items
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
@ -347,7 +348,7 @@ static void vr1000_power_off(void)
s3c2410_gpio_setpin(S3C2410_GPB9, 1); s3c2410_gpio_setpin(S3C2410_GPB9, 1);
} }
void __init vr1000_map_io(void) static void __init vr1000_map_io(void)
{ {
/* initialise clock sources */ /* initialise clock sources */

View File

@ -111,12 +111,11 @@ static struct mtd_partition collie_partitions[] = {
static void collie_set_vpp(int vpp) static void collie_set_vpp(int vpp)
{ {
write_scoop_reg(SCOOP_GPCR, read_scoop_reg(SCOOP_GPCR) | COLLIE_SCP_VPEN); write_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR, read_scoop_reg(SCOOP_GPCR) | COLLIE_SCP_VPEN);
if (vpp) { if (vpp)
write_scoop_reg(SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) | COLLIE_SCP_VPEN); write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) | COLLIE_SCP_VPEN);
} else { else
write_scoop_reg(SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) & ~COLLIE_SCP_VPEN); write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) & ~COLLIE_SCP_VPEN);
}
} }
static struct flash_platform_data collie_flash_data = { static struct flash_platform_data collie_flash_data = {

View File

@ -39,3 +39,6 @@ extern void sa11x0_set_ssp_data(struct sa11x0_ssp_plat_ops *ops);
struct irda_platform_data; struct irda_platform_data;
void sa11x0_set_irda_data(struct irda_platform_data *irda); void sa11x0_set_irda_data(struct irda_platform_data *irda);
struct mcp_plat_data;
void sa11x0_set_mcp_data(struct mcp_plat_data *data);

View File

@ -233,7 +233,17 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
if (in_interrupt() || !mm) if (in_interrupt() || !mm)
goto no_context; goto no_context;
/*
* As per x86, we may deadlock here. However, since the kernel only
* validly references user space from well defined areas of the code,
* we can bug out early if this is from code which shouldn't.
*/
if (!down_read_trylock(&mm->mmap_sem)) {
if (!user_mode(regs) && !search_exception_tables(regs->ARM_pc))
goto no_context;
down_read(&mm->mmap_sem); down_read(&mm->mmap_sem);
}
fault = __do_page_fault(mm, addr, fsr, tsk); fault = __do_page_fault(mm, addr, fsr, tsk);
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);

View File

@ -509,7 +509,7 @@ cpu_arm1020_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1020_proc_info,#object .type __arm1020_proc_info,#object
__arm1020_proc_info: __arm1020_proc_info:

View File

@ -491,7 +491,7 @@ cpu_arm1020e_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1020e_proc_info,#object .type __arm1020e_proc_info,#object
__arm1020e_proc_info: __arm1020e_proc_info:

View File

@ -473,7 +473,7 @@ cpu_arm1022_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1022_proc_info,#object .type __arm1022_proc_info,#object
__arm1022_proc_info: __arm1022_proc_info:

View File

@ -469,7 +469,7 @@ cpu_arm1026_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm1026_proc_info,#object .type __arm1026_proc_info,#object
__arm1026_proc_info: __arm1026_proc_info:

View File

@ -332,7 +332,7 @@ cpu_arm710_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm6_proc_info, #object .type __arm6_proc_info, #object
__arm6_proc_info: __arm6_proc_info:

View File

@ -222,7 +222,7 @@ cpu_arm720_name:
* See linux/include/asm-arm/procinfo.h for a definition of this structure. * See linux/include/asm-arm/procinfo.h for a definition of this structure.
*/ */
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm710_proc_info, #object .type __arm710_proc_info, #object
__arm710_proc_info: __arm710_proc_info:

View File

@ -452,7 +452,7 @@ cpu_arm920_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm920_proc_info,#object .type __arm920_proc_info,#object
__arm920_proc_info: __arm920_proc_info:

View File

@ -456,7 +456,7 @@ cpu_arm922_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm922_proc_info,#object .type __arm922_proc_info,#object
__arm922_proc_info: __arm922_proc_info:

View File

@ -521,7 +521,7 @@ cpu_arm925_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm925_proc_info,#object .type __arm925_proc_info,#object
__arm925_proc_info: __arm925_proc_info:

View File

@ -471,7 +471,7 @@ cpu_arm926_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __arm926_proc_info,#object .type __arm926_proc_info,#object
__arm926_proc_info: __arm926_proc_info:

View File

@ -249,7 +249,7 @@ cpu_sa110_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __sa110_proc_info,#object .type __sa110_proc_info,#object
__sa110_proc_info: __sa110_proc_info:

View File

@ -280,7 +280,7 @@ cpu_sa1110_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __sa1100_proc_info,#object .type __sa1100_proc_info,#object
__sa1100_proc_info: __sa1100_proc_info:

View File

@ -240,7 +240,7 @@ cpu_elf_name:
.size cpu_elf_name, . - cpu_elf_name .size cpu_elf_name, . - cpu_elf_name
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
/* /*
* Match any ARMv6 processor core. * Match any ARMv6 processor core.

View File

@ -578,7 +578,7 @@ cpu_pxa270_name:
.align .align
.section ".proc.info", #alloc, #execinstr .section ".proc.info.init", #alloc, #execinstr
.type __80200_proc_info,#object .type __80200_proc_info,#object
__80200_proc_info: __80200_proc_info:

View File

@ -1,74 +0,0 @@
/*
* Bright Star Engineering Inc.
*
* code for readng parameters from the
* parameter blocks of the boot block
* flash memory
*
*/
static int strcmp(const char *s1, const char *s2)
{
while (*s1 != '\0' && *s1 == *s2)
{
s1++;
s2++;
}
return (*(unsigned char *) s1) - (*(unsigned char *) s2);
}
struct pblk_t {
char type;
unsigned short size;
};
static char *bse_getflashparam(char *name) {
unsigned int esize;
char *q,*r;
unsigned char *p,*e;
struct pblk_t *thepb = (struct pblk_t *) 0x00004000;
struct pblk_t *altpb = (struct pblk_t *) 0x00006000;
if (thepb->type&1) {
if (altpb->type&1) {
/* no valid param block */
return (char*)0;
} else {
/* altpb is valid */
struct pblk_t *tmp;
tmp = thepb;
thepb = altpb;
altpb = tmp;
}
}
p = (char*)thepb + sizeof(struct pblk_t);
e = p + thepb->size;
while (p < e) {
q = p;
esize = *p;
if (esize == 0xFF) break;
if (esize == 0) break;
if (esize > 127) {
esize = (esize&0x7F)<<8 | p[1];
q++;
}
q++;
r=q;
if (*r && ((name == 0) || (!strcmp(name,r)))) {
while (*q++) ;
return q;
}
p+=esize;
}
return (char*)0;
}
void bse_setup(void) {
/* extract the linux cmdline from flash */
char *name=bse_getflashparam("linuxboot");
char *x = (char *)0xc0000100;
if (name) {
while (*name) *x++=*name++;
}
*x=0;
}

View File

@ -908,11 +908,6 @@ config IRQBALANCE
The default yes will allow the kernel to do irq load balancing. The default yes will allow the kernel to do irq load balancing.
Saying no will keep the kernel from doing irq load balancing. Saying no will keep the kernel from doing irq load balancing.
config HAVE_DEC_LOCK
bool
depends on (SMP || PREEMPT) && X86_CMPXCHG
default y
# turning this on wastes a bunch of space. # turning this on wastes a bunch of space.
# Summit needs it only when NUMA is on # Summit needs it only when NUMA is on
config BOOT_IOREMAP config BOOT_IOREMAP

View File

@ -7,7 +7,6 @@
#include <linux/pci.h> #include <linux/pci.h>
#include <asm/pci-direct.h> #include <asm/pci-direct.h>
#include <asm/acpi.h> #include <asm/acpi.h>
#include <asm/apic.h>
static int __init check_bridge(int vendor, int device) static int __init check_bridge(int vendor, int device)
{ {
@ -16,15 +15,6 @@ static int __init check_bridge(int vendor, int device)
if (vendor == PCI_VENDOR_ID_NVIDIA) { if (vendor == PCI_VENDOR_ID_NVIDIA) {
acpi_skip_timer_override = 1; acpi_skip_timer_override = 1;
} }
#ifdef CONFIG_X86_LOCAL_APIC
/*
* ATI IXP chipsets get double timer interrupts.
* For now just do this for all ATI chipsets.
* FIXME: this needs to be checked for the non ACPI case too.
*/
if (vendor == PCI_VENDOR_ID_ATI)
disable_timer_pin_1 = 1;
#endif
return 0; return 0;
} }

View File

@ -11,6 +11,7 @@
#include <linux/mc146818rtc.h> #include <linux/mc146818rtc.h>
#include <linux/efi.h> #include <linux/efi.h>
#include <linux/dmi.h> #include <linux/dmi.h>
#include <linux/ctype.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/apic.h> #include <asm/apic.h>
#include <asm/desc.h> #include <asm/desc.h>
@ -28,8 +29,6 @@ static int reboot_thru_bios;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
static int reboot_cpu = -1; static int reboot_cpu = -1;
/* shamelessly grabbed from lib/vsprintf.c for readability */
#define is_digit(c) ((c) >= '0' && (c) <= '9')
#endif #endif
static int __init reboot_setup(char *str) static int __init reboot_setup(char *str)
{ {
@ -49,9 +48,9 @@ static int __init reboot_setup(char *str)
break; break;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
case 's': /* "smp" reboot by executing reset on BSP or other CPU*/ case 's': /* "smp" reboot by executing reset on BSP or other CPU*/
if (is_digit(*(str+1))) { if (isdigit(*(str+1))) {
reboot_cpu = (int) (*(str+1) - '0'); reboot_cpu = (int) (*(str+1) - '0');
if (is_digit(*(str+2))) if (isdigit(*(str+2)))
reboot_cpu = reboot_cpu*10 + (int)(*(str+2) - '0'); reboot_cpu = reboot_cpu*10 + (int)(*(str+2) - '0');
} }
/* we will leave sorting out the final value /* we will leave sorting out the final value

View File

@ -848,9 +848,7 @@ static void __init parse_cmdline_early (char ** cmdline_p)
#ifdef CONFIG_X86_IO_APIC #ifdef CONFIG_X86_IO_APIC
else if (!memcmp(from, "acpi_skip_timer_override", 24)) else if (!memcmp(from, "acpi_skip_timer_override", 24))
acpi_skip_timer_override = 1; acpi_skip_timer_override = 1;
#endif
#ifdef CONFIG_X86_LOCAL_APIC
if (!memcmp(from, "disable_timer_pin_1", 19)) if (!memcmp(from, "disable_timer_pin_1", 19))
disable_timer_pin_1 = 1; disable_timer_pin_1 = 1;
if (!memcmp(from, "enable_timer_pin_1", 18)) if (!memcmp(from, "enable_timer_pin_1", 18))
@ -859,7 +857,7 @@ static void __init parse_cmdline_early (char ** cmdline_p)
/* disable IO-APIC */ /* disable IO-APIC */
else if (!memcmp(from, "noapic", 6)) else if (!memcmp(from, "noapic", 6))
disable_ioapic_setup(); disable_ioapic_setup();
#endif /* CONFIG_X86_LOCAL_APIC */ #endif /* CONFIG_X86_IO_APIC */
#endif /* CONFIG_ACPI */ #endif /* CONFIG_ACPI */
#ifdef CONFIG_X86_LOCAL_APIC #ifdef CONFIG_X86_LOCAL_APIC

View File

@ -202,7 +202,7 @@ static void __devinit smp_store_cpu_info(int id)
goto valid_k7; goto valid_k7;
/* If we get here, it's not a certified SMP capable AMD system. */ /* If we get here, it's not a certified SMP capable AMD system. */
tainted |= TAINT_UNSAFE_SMP; add_taint(TAINT_UNSAFE_SMP);
} }
valid_k7: valid_k7:

View File

@ -807,8 +807,9 @@ void math_error(void __user *eip)
cwd = get_fpu_cwd(task); cwd = get_fpu_cwd(task);
swd = get_fpu_swd(task); swd = get_fpu_swd(task);
switch (swd & ~cwd & 0x3f) { switch (swd & ~cwd & 0x3f) {
case 0x000: case 0x000: /* No unmasked exception */
default: return;
default: /* Multiple exceptions */
break; break;
case 0x001: /* Invalid Op */ case 0x001: /* Invalid Op */
/* /*

View File

@ -7,4 +7,3 @@ lib-y = checksum.o delay.o usercopy.o getuser.o putuser.o memcpy.o strstr.o \
bitops.o bitops.o
lib-$(CONFIG_X86_USE_3DNOW) += mmx.o lib-$(CONFIG_X86_USE_3DNOW) += mmx.o
lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o

View File

@ -1,42 +0,0 @@
/*
* x86 version of "atomic_dec_and_lock()" using
* the atomic "cmpxchg" instruction.
*
* (For CPU's lacking cmpxchg, we use the slow
* generic version, and this one never even gets
* compiled).
*/
#include <linux/spinlock.h>
#include <linux/module.h>
#include <asm/atomic.h>
int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
{
int counter;
int newcount;
repeat:
counter = atomic_read(atomic);
newcount = counter-1;
if (!newcount)
goto slow_path;
asm volatile("lock; cmpxchgl %1,%2"
:"=a" (newcount)
:"r" (newcount), "m" (atomic->counter), "0" (counter));
/* If the above failed, "eax" will have changed */
if (newcount != counter)
goto repeat;
return 0;
slow_path:
spin_lock(lock);
if (atomic_dec_and_test(atomic))
return 1;
spin_unlock(lock);
return 0;
}
EXPORT_SYMBOL(_atomic_dec_and_lock);

View File

@ -298,11 +298,6 @@ config PREEMPT
source "mm/Kconfig" source "mm/Kconfig"
config HAVE_DEC_LOCK
bool
depends on (SMP || PREEMPT)
default y
config IA32_SUPPORT config IA32_SUPPORT
bool "Support for Linux/x86 binaries" bool "Support for Linux/x86 binaries"
help help

View File

@ -82,17 +82,7 @@ unwcheck: vmlinux
archclean: archclean:
$(Q)$(MAKE) $(clean)=$(boot) $(Q)$(MAKE) $(clean)=$(boot)
archprepare: include/asm-ia64/.offsets.h.stamp CLEAN_FILES += vmlinux.gz bootloader
include/asm-ia64/.offsets.h.stamp:
mkdir -p include/asm-ia64
[ -s include/asm-ia64/asm-offsets.h ] \
|| echo "#define IA64_TASK_SIZE 0" > include/asm-ia64/asm-offsets.h
touch $@
CLEAN_FILES += vmlinux.gz bootloader include/asm-ia64/.offsets.h.stamp
boot: lib/lib.a vmlinux boot: lib/lib.a vmlinux
$(Q)$(MAKE) $(build)=$(boot) $@ $(Q)$(MAKE) $(build)=$(boot) $@

View File

@ -216,12 +216,6 @@ ia32_setup_arg_pages (struct linux_binprm *bprm, int executable_stack)
if (!mpnt) if (!mpnt)
return -ENOMEM; return -ENOMEM;
if (security_vm_enough_memory((IA32_STACK_TOP - (PAGE_MASK & (unsigned long) bprm->p))
>> PAGE_SHIFT)) {
kmem_cache_free(vm_area_cachep, mpnt);
return -ENOMEM;
}
memset(mpnt, 0, sizeof(*mpnt)); memset(mpnt, 0, sizeof(*mpnt));
down_write(&current->mm->mmap_sem); down_write(&current->mm->mmap_sem);

View File

@ -899,7 +899,7 @@ int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base)
if ((err = iosapic_init(phys_addr, gsi_base))) if ((err = iosapic_init(phys_addr, gsi_base)))
return err; return err;
#if CONFIG_ACPI_NUMA #ifdef CONFIG_ACPI_NUMA
acpi_map_iosapic(handle, 0, NULL, NULL); acpi_map_iosapic(handle, 0, NULL, NULL);
#endif /* CONFIG_ACPI_NUMA */ #endif /* CONFIG_ACPI_NUMA */

View File

@ -4,6 +4,7 @@
* to extract and format the required data. * to extract and format the required data.
*/ */
#define ASM_OFFSETS_C 1
#include <linux/config.h> #include <linux/config.h>
#include <linux/sched.h> #include <linux/sched.h>

View File

@ -491,7 +491,7 @@ GLOBAL_ENTRY(prefetch_stack)
;; ;;
lfetch.fault [r16], 128 lfetch.fault [r16], 128
br.ret.sptk.many rp br.ret.sptk.many rp
END(prefetch_switch_stack) END(prefetch_stack)
GLOBAL_ENTRY(execve) GLOBAL_ENTRY(execve)
mov r15=__NR_execve // put syscall number in place mov r15=__NR_execve // put syscall number in place

View File

@ -84,23 +84,23 @@ mca_page_isolate(unsigned long paddr)
struct page *p; struct page *p;
/* whether physical address is valid or not */ /* whether physical address is valid or not */
if ( !ia64_phys_addr_valid(paddr) ) if (!ia64_phys_addr_valid(paddr))
return ISOLATE_NG; return ISOLATE_NG;
/* convert physical address to physical page number */ /* convert physical address to physical page number */
p = pfn_to_page(paddr>>PAGE_SHIFT); p = pfn_to_page(paddr>>PAGE_SHIFT);
/* check whether a page number have been already registered or not */ /* check whether a page number have been already registered or not */
for( i = 0; i < num_page_isolate; i++ ) for (i = 0; i < num_page_isolate; i++)
if( page_isolate[i] == p ) if (page_isolate[i] == p)
return ISOLATE_OK; /* already listed */ return ISOLATE_OK; /* already listed */
/* limitation check */ /* limitation check */
if( num_page_isolate == MAX_PAGE_ISOLATE ) if (num_page_isolate == MAX_PAGE_ISOLATE)
return ISOLATE_NG; return ISOLATE_NG;
/* kick pages having attribute 'SLAB' or 'Reserved' */ /* kick pages having attribute 'SLAB' or 'Reserved' */
if( PageSlab(p) || PageReserved(p) ) if (PageSlab(p) || PageReserved(p))
return ISOLATE_NG; return ISOLATE_NG;
/* add attribute 'Reserved' and register the page */ /* add attribute 'Reserved' and register the page */
@ -172,7 +172,7 @@ mca_make_peidx(sal_log_processor_info_t *slpi, peidx_table_t *peidx)
* 1 if record has platform error / 0 if not * 1 if record has platform error / 0 if not
*/ */
#define LOG_INDEX_ADD_SECT_PTR(sect, ptr) \ #define LOG_INDEX_ADD_SECT_PTR(sect, ptr) \
{ slidx_list_t *hl = &slidx_pool.buffer[slidx_pool.cur_idx]; \ {slidx_list_t *hl = &slidx_pool.buffer[slidx_pool.cur_idx]; \
hl->hdr = ptr; \ hl->hdr = ptr; \
list_add(&hl->list, &(sect)); \ list_add(&hl->list, &(sect)); \
slidx_pool.cur_idx = (slidx_pool.cur_idx + 1)%slidx_pool.max_idx; } slidx_pool.cur_idx = (slidx_pool.cur_idx + 1)%slidx_pool.max_idx; }
@ -214,28 +214,36 @@ mca_make_slidx(void *buffer, slidx_table_t *slidx)
sp = (sal_log_section_hdr_t *)((char*)buffer + ercd_pos); sp = (sal_log_section_hdr_t *)((char*)buffer + ercd_pos);
if (!efi_guidcmp(sp->guid, SAL_PROC_DEV_ERR_SECT_GUID)) { if (!efi_guidcmp(sp->guid, SAL_PROC_DEV_ERR_SECT_GUID)) {
LOG_INDEX_ADD_SECT_PTR(slidx->proc_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->proc_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_MEM_DEV_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_MEM_DEV_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->mem_dev_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->mem_dev_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_SEL_DEV_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_SEL_DEV_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->sel_dev_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->sel_dev_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_PCI_BUS_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_PCI_BUS_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->pci_bus_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->pci_bus_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_SMBIOS_DEV_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_SMBIOS_DEV_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->smbios_dev_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->smbios_dev_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_PCI_COMP_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_PCI_COMP_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->pci_comp_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->pci_comp_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_SPECIFIC_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_SPECIFIC_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->plat_specific_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->plat_specific_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_HOST_CTLR_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_HOST_CTLR_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->host_ctlr_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->host_ctlr_err, sp);
} else if (!efi_guidcmp(sp->guid, SAL_PLAT_BUS_ERR_SECT_GUID)) { } else if (!efi_guidcmp(sp->guid,
SAL_PLAT_BUS_ERR_SECT_GUID)) {
platform_err = 1; platform_err = 1;
LOG_INDEX_ADD_SECT_PTR(slidx->plat_bus_err, sp); LOG_INDEX_ADD_SECT_PTR(slidx->plat_bus_err, sp);
} else { } else {
@ -261,7 +269,8 @@ init_record_index_pools(void)
int sect_min_size; /* Minimum size of SAL error sections */ int sect_min_size; /* Minimum size of SAL error sections */
/* minimum size table of each section */ /* minimum size table of each section */
static int sal_log_sect_min_sizes[] = { static int sal_log_sect_min_sizes[] = {
sizeof(sal_log_processor_info_t) + sizeof(sal_processor_static_info_t), sizeof(sal_log_processor_info_t)
+ sizeof(sal_processor_static_info_t),
sizeof(sal_log_mem_dev_err_info_t), sizeof(sal_log_mem_dev_err_info_t),
sizeof(sal_log_sel_dev_err_info_t), sizeof(sal_log_sel_dev_err_info_t),
sizeof(sal_log_pci_bus_err_info_t), sizeof(sal_log_pci_bus_err_info_t),
@ -294,7 +303,8 @@ init_record_index_pools(void)
/* - 3 - */ /* - 3 - */
slidx_pool.max_idx = (rec_max_size/sect_min_size) * 2 + 1; slidx_pool.max_idx = (rec_max_size/sect_min_size) * 2 + 1;
slidx_pool.buffer = (slidx_list_t *) kmalloc(slidx_pool.max_idx * sizeof(slidx_list_t), GFP_KERNEL); slidx_pool.buffer = (slidx_list_t *)
kmalloc(slidx_pool.max_idx * sizeof(slidx_list_t), GFP_KERNEL);
return slidx_pool.buffer ? 0 : -ENOMEM; return slidx_pool.buffer ? 0 : -ENOMEM;
} }
@ -308,6 +318,7 @@ init_record_index_pools(void)
* is_mca_global - Check whether this MCA is global or not * is_mca_global - Check whether this MCA is global or not
* @peidx: pointer of index of processor error section * @peidx: pointer of index of processor error section
* @pbci: pointer to pal_bus_check_info_t * @pbci: pointer to pal_bus_check_info_t
* @sos: pointer to hand off struct between SAL and OS
* *
* Return value: * Return value:
* MCA_IS_LOCAL / MCA_IS_GLOBAL * MCA_IS_LOCAL / MCA_IS_GLOBAL
@ -317,7 +328,8 @@ static mca_type_t
is_mca_global(peidx_table_t *peidx, pal_bus_check_info_t *pbci, is_mca_global(peidx_table_t *peidx, pal_bus_check_info_t *pbci,
struct ia64_sal_os_state *sos) struct ia64_sal_os_state *sos)
{ {
pal_processor_state_info_t *psp = (pal_processor_state_info_t*)peidx_psp(peidx); pal_processor_state_info_t *psp =
(pal_processor_state_info_t*)peidx_psp(peidx);
/* /*
* PAL can request a rendezvous, if the MCA has a global scope. * PAL can request a rendezvous, if the MCA has a global scope.
@ -381,13 +393,15 @@ is_mca_global(peidx_table_t *peidx, pal_bus_check_info_t *pbci,
* @slidx: pointer of index of SAL error record * @slidx: pointer of index of SAL error record
* @peidx: pointer of index of processor error section * @peidx: pointer of index of processor error section
* @pbci: pointer of pal_bus_check_info * @pbci: pointer of pal_bus_check_info
* @sos: pointer to hand off struct between SAL and OS
* *
* Return value: * Return value:
* 1 on Success / 0 on Failure * 1 on Success / 0 on Failure
*/ */
static int static int
recover_from_read_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_check_info_t *pbci, recover_from_read_error(slidx_table_t *slidx,
peidx_table_t *peidx, pal_bus_check_info_t *pbci,
struct ia64_sal_os_state *sos) struct ia64_sal_os_state *sos)
{ {
sal_log_mod_error_info_t *smei; sal_log_mod_error_info_t *smei;
@ -453,24 +467,28 @@ recover_from_read_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_chec
* @slidx: pointer of index of SAL error record * @slidx: pointer of index of SAL error record
* @peidx: pointer of index of processor error section * @peidx: pointer of index of processor error section
* @pbci: pointer of pal_bus_check_info * @pbci: pointer of pal_bus_check_info
* @sos: pointer to hand off struct between SAL and OS
* *
* Return value: * Return value:
* 1 on Success / 0 on Failure * 1 on Success / 0 on Failure
*/ */
static int static int
recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_check_info_t *pbci, recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx,
pal_bus_check_info_t *pbci,
struct ia64_sal_os_state *sos) struct ia64_sal_os_state *sos)
{ {
int status = 0; int status = 0;
pal_processor_state_info_t *psp = (pal_processor_state_info_t*)peidx_psp(peidx); pal_processor_state_info_t *psp =
(pal_processor_state_info_t*)peidx_psp(peidx);
if (psp->bc && pbci->eb && pbci->bsi == 0) { if (psp->bc && pbci->eb && pbci->bsi == 0) {
switch(pbci->type) { switch(pbci->type) {
case 1: /* partial read */ case 1: /* partial read */
case 3: /* full line(cpu) read */ case 3: /* full line(cpu) read */
case 9: /* I/O space read */ case 9: /* I/O space read */
status = recover_from_read_error(slidx, peidx, pbci, sos); status = recover_from_read_error(slidx, peidx, pbci,
sos);
break; break;
case 0: /* unknown */ case 0: /* unknown */
case 2: /* partial write */ case 2: /* partial write */
@ -481,7 +499,8 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_
case 8: /* write coalescing transactions */ case 8: /* write coalescing transactions */
case 10: /* I/O space write */ case 10: /* I/O space write */
case 11: /* inter-processor interrupt message(IPI) */ case 11: /* inter-processor interrupt message(IPI) */
case 12: /* interrupt acknowledge or external task priority cycle */ case 12: /* interrupt acknowledge or
external task priority cycle */
default: default:
break; break;
} }
@ -496,6 +515,7 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_
* @slidx: pointer of index of SAL error record * @slidx: pointer of index of SAL error record
* @peidx: pointer of index of processor error section * @peidx: pointer of index of processor error section
* @pbci: pointer of pal_bus_check_info * @pbci: pointer of pal_bus_check_info
* @sos: pointer to hand off struct between SAL and OS
* *
* Return value: * Return value:
* 1 on Success / 0 on Failure * 1 on Success / 0 on Failure
@ -509,10 +529,12 @@ recover_from_platform_error(slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_
*/ */
static int static int
recover_from_processor_error(int platform, slidx_table_t *slidx, peidx_table_t *peidx, pal_bus_check_info_t *pbci, recover_from_processor_error(int platform, slidx_table_t *slidx,
peidx_table_t *peidx, pal_bus_check_info_t *pbci,
struct ia64_sal_os_state *sos) struct ia64_sal_os_state *sos)
{ {
pal_processor_state_info_t *psp = (pal_processor_state_info_t*)peidx_psp(peidx); pal_processor_state_info_t *psp =
(pal_processor_state_info_t*)peidx_psp(peidx);
/* /*
* We cannot recover errors with other than bus_check. * We cannot recover errors with other than bus_check.
@ -557,14 +579,14 @@ recover_from_processor_error(int platform, slidx_table_t *slidx, peidx_table_t *
/** /**
* mca_try_to_recover - Try to recover from MCA * mca_try_to_recover - Try to recover from MCA
* @rec: pointer to a SAL error record * @rec: pointer to a SAL error record
* @sos: pointer to hand off struct between SAL and OS
* *
* Return value: * Return value:
* 1 on Success / 0 on Failure * 1 on Success / 0 on Failure
*/ */
static int static int
mca_try_to_recover(void *rec, mca_try_to_recover(void *rec, struct ia64_sal_os_state *sos)
struct ia64_sal_os_state *sos)
{ {
int platform_err; int platform_err;
int n_proc_err; int n_proc_err;
@ -588,7 +610,8 @@ mca_try_to_recover(void *rec,
} }
/* Make index of processor error section */ /* Make index of processor error section */
mca_make_peidx((sal_log_processor_info_t*)slidx_first_entry(&slidx.proc_err)->hdr, &peidx); mca_make_peidx((sal_log_processor_info_t*)
slidx_first_entry(&slidx.proc_err)->hdr, &peidx);
/* Extract Processor BUS_CHECK[0] */ /* Extract Processor BUS_CHECK[0] */
*((u64*)&pbci) = peidx_check_info(&peidx, bus_check, 0); *((u64*)&pbci) = peidx_check_info(&peidx, bus_check, 0);
@ -598,7 +621,8 @@ mca_try_to_recover(void *rec,
return 0; return 0;
/* Try to recover a processor error */ /* Try to recover a processor error */
return recover_from_processor_error(platform_err, &slidx, &peidx, &pbci, sos); return recover_from_processor_error(platform_err, &slidx, &peidx,
&pbci, sos);
} }
/* /*
@ -611,7 +635,7 @@ int __init mca_external_handler_init(void)
return -ENOMEM; return -ENOMEM;
/* register external mca handlers */ /* register external mca handlers */
if (ia64_reg_MCA_extension(mca_try_to_recover)){ if (ia64_reg_MCA_extension(mca_try_to_recover)) {
printk(KERN_ERR "ia64_reg_MCA_extension failed.\n"); printk(KERN_ERR "ia64_reg_MCA_extension failed.\n");
kfree(slidx_pool.buffer); kfree(slidx_pool.buffer);
return -EFAULT; return -EFAULT;

View File

@ -14,10 +14,10 @@
GLOBAL_ENTRY(mca_handler_bhhook) GLOBAL_ENTRY(mca_handler_bhhook)
invala // clear RSE ? invala // clear RSE ?
;; // ;;
cover // cover
;; // ;;
clrrrb // clrrrb
;; ;;
alloc r16=ar.pfs,0,2,1,0 // make a new frame alloc r16=ar.pfs,0,2,1,0 // make a new frame
;; ;;

View File

@ -574,7 +574,7 @@ pfm_protect_ctx_ctxsw(pfm_context_t *x)
return 0UL; return 0UL;
} }
static inline unsigned long static inline void
pfm_unprotect_ctx_ctxsw(pfm_context_t *x, unsigned long f) pfm_unprotect_ctx_ctxsw(pfm_context_t *x, unsigned long f)
{ {
spin_unlock(&(x)->ctx_lock); spin_unlock(&(x)->ctx_lock);
@ -2218,12 +2218,13 @@ static void
pfm_free_fd(int fd, struct file *file) pfm_free_fd(int fd, struct file *file)
{ {
struct files_struct *files = current->files; struct files_struct *files = current->files;
struct fdtable *fdt = files_fdtable(files); struct fdtable *fdt;
/* /*
* there ie no fd_uninstall(), so we do it here * there ie no fd_uninstall(), so we do it here
*/ */
spin_lock(&files->file_lock); spin_lock(&files->file_lock);
fdt = files_fdtable(files);
rcu_assign_pointer(fdt->fd[fd], NULL); rcu_assign_pointer(fdt->fd[fd], NULL);
spin_unlock(&files->file_lock); spin_unlock(&files->file_lock);

View File

@ -15,7 +15,6 @@ lib-$(CONFIG_ITANIUM) += copy_page.o copy_user.o memcpy.o
lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o lib-$(CONFIG_MCKINLEY) += copy_page_mck.o memcpy_mck.o
lib-$(CONFIG_PERFMON) += carta_random.o lib-$(CONFIG_PERFMON) += carta_random.o
lib-$(CONFIG_MD_RAID5) += xor.o lib-$(CONFIG_MD_RAID5) += xor.o
lib-$(CONFIG_HAVE_DEC_LOCK) += dec_and_lock.o
AFLAGS___divdi3.o = AFLAGS___divdi3.o =
AFLAGS___udivdi3.o = -DUNSIGNED AFLAGS___udivdi3.o = -DUNSIGNED

View File

@ -1,42 +0,0 @@
/*
* Copyright (C) 2003 Jerome Marchand, Bull S.A.
* Cleaned up by David Mosberger-Tang <davidm@hpl.hp.com>
*
* This file is released under the GPLv2, or at your option any later version.
*
* ia64 version of "atomic_dec_and_lock()" using the atomic "cmpxchg" instruction. This
* code is an adaptation of the x86 version of "atomic_dec_and_lock()".
*/
#include <linux/compiler.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <asm/atomic.h>
/*
* Decrement REFCOUNT and if the count reaches zero, acquire the spinlock. Both of these
* operations have to be done atomically, so that the count doesn't drop to zero without
* acquiring the spinlock first.
*/
int
_atomic_dec_and_lock (atomic_t *refcount, spinlock_t *lock)
{
int old, new;
do {
old = atomic_read(refcount);
new = old - 1;
if (unlikely (old == 1)) {
/* oops, we may be decrementing to zero, do it the slow way... */
spin_lock(lock);
if (atomic_dec_and_test(refcount))
return 1;
spin_unlock(lock);
return 0;
}
} while (cmpxchg(&refcount->counter, old, new) != old);
return 0;
}
EXPORT_SYMBOL(_atomic_dec_and_lock);

View File

@ -220,11 +220,6 @@ config PREEMPT
Say Y here if you are building a kernel for a desktop, embedded Say Y here if you are building a kernel for a desktop, embedded
or real-time system. Say N if you are unsure. or real-time system. Say N if you are unsure.
config HAVE_DEC_LOCK
bool
depends on (SMP || PREEMPT)
default n
config SMP config SMP
bool "Symmetric multi-processing support" bool "Symmetric multi-processing support"
---help--- ---help---

View File

@ -1009,10 +1009,6 @@ config GENERIC_CALIBRATE_DELAY
bool bool
default y default y
config HAVE_DEC_LOCK
bool
default y
# #
# Select some configuration options automatically based on user selections. # Select some configuration options automatically based on user selections.
# #

View File

@ -581,18 +581,13 @@ asmlinkage int irix_brk(unsigned long brk)
} }
/* /*
* Check if we have enough memory.. * Ok, looks good - let it rip.
*/ */
if (security_vm_enough_memory((newbrk-oldbrk) >> PAGE_SHIFT)) { if (do_brk(oldbrk, newbrk-oldbrk) != oldbrk) {
ret = -ENOMEM; ret = -ENOMEM;
goto out; goto out;
} }
/*
* Ok, looks good - let it rip.
*/
mm->brk = brk; mm->brk = brk;
do_brk(oldbrk, newbrk-oldbrk);
ret = 0; ret = 0;
out: out:

View File

@ -2,7 +2,7 @@
# Makefile for MIPS-specific library files.. # Makefile for MIPS-specific library files..
# #
lib-y += csum_partial_copy.o dec_and_lock.o memcpy.o promlib.o \ lib-y += csum_partial_copy.o memcpy.o promlib.o \
strlen_user.o strncpy_user.o strnlen_user.o strlen_user.o strncpy_user.o strnlen_user.o
obj-y += iomap.o obj-y += iomap.o

View File

@ -1,47 +0,0 @@
/*
* MIPS version of atomic_dec_and_lock() using cmpxchg
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <linux/module.h>
#include <linux/spinlock.h>
#include <asm/atomic.h>
#include <asm/system.h>
/*
* This is an implementation of the notion of "decrement a
* reference count, and return locked if it decremented to zero".
*
* This implementation can be used on any architecture that
* has a cmpxchg, and where atomic->value is an int holding
* the value of the atomic (i.e. the high bits aren't used
* for a lock or anything like that).
*/
int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
{
int counter;
int newcount;
for (;;) {
counter = atomic_read(atomic);
newcount = counter - 1;
if (!newcount)
break; /* do it the slow way */
newcount = cmpxchg(&atomic->counter, counter, newcount);
if (newcount == counter)
return 0;
}
spin_lock(lock);
if (atomic_dec_and_test(atomic))
return 1;
spin_unlock(lock);
return 0;
}
EXPORT_SYMBOL(_atomic_dec_and_lock);

View File

@ -26,10 +26,6 @@ config GENERIC_CALIBRATE_DELAY
bool bool
default y default y
config HAVE_DEC_LOCK
bool
default y
config PPC config PPC
bool bool
default y default y

View File

@ -21,7 +21,6 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/init.h> #include <linux/init.h>
#include <asm/segment.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/reg.h> #include <asm/reg.h>
#include <asm/nvram.h> #include <asm/nvram.h>

View File

@ -58,7 +58,6 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/profile.h> #include <linux/profile.h>
#include <asm/segment.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/nvram.h> #include <asm/nvram.h>
#include <asm/cache.h> #include <asm/cache.h>

View File

@ -96,6 +96,9 @@ SECTIONS
*(.init.text) *(.init.text)
_einittext = .; _einittext = .;
} }
/* .exit.text is discarded at runtime, not link time,
to deal with references from __bug_table */
.exit.text : { *(.exit.text) }
.init.data : { .init.data : {
*(.init.data); *(.init.data);
__vtop_table_begin = .; __vtop_table_begin = .;
@ -190,5 +193,6 @@ SECTIONS
/* Sections to be discarded. */ /* Sections to be discarded. */
/DISCARD/ : { /DISCARD/ : {
*(.exitcall.exit) *(.exitcall.exit)
*(.exit.data)
} }
} }

View File

@ -2,7 +2,7 @@
# Makefile for ppc-specific library files.. # Makefile for ppc-specific library files..
# #
obj-y := checksum.o string.o strcase.o dec_and_lock.o div64.o obj-y := checksum.o string.o strcase.o div64.o
obj-$(CONFIG_8xx) += rheap.o obj-$(CONFIG_8xx) += rheap.o
obj-$(CONFIG_CPM2) += rheap.o obj-$(CONFIG_CPM2) += rheap.o

View File

@ -1,38 +0,0 @@
#include <linux/module.h>
#include <linux/spinlock.h>
#include <asm/atomic.h>
#include <asm/system.h>
/*
* This is an implementation of the notion of "decrement a
* reference count, and return locked if it decremented to zero".
*
* This implementation can be used on any architecture that
* has a cmpxchg, and where atomic->value is an int holding
* the value of the atomic (i.e. the high bits aren't used
* for a lock or anything like that).
*/
int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock)
{
int counter;
int newcount;
for (;;) {
counter = atomic_read(atomic);
newcount = counter - 1;
if (!newcount)
break; /* do it the slow way */
newcount = cmpxchg(&atomic->counter, counter, newcount);
if (newcount == counter)
return 0;
}
spin_lock(lock);
if (atomic_dec_and_test(atomic))
return 1;
spin_unlock(lock);
return 0;
}
EXPORT_SYMBOL(_atomic_dec_and_lock);

View File

@ -22,7 +22,6 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/bcd.h> #include <linux/bcd.h>
#include <asm/segment.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/nvram.h> #include <asm/nvram.h>
#include <asm/prom.h> #include <asm/prom.h>

Some files were not shown because too many files have changed in this diff Show More