Merge branch 'master'
This commit is contained in:
commit
f4256e301d
|
@ -133,3 +133,32 @@ hardware and it is important to prevent the kernel from attempting to directly
|
||||||
access these devices too, as if the array controller were merely a SCSI
|
access these devices too, as if the array controller were merely a SCSI
|
||||||
controller in the same way that we are allowing it to access SCSI tape drives.
|
controller in the same way that we are allowing it to access SCSI tape drives.
|
||||||
|
|
||||||
|
SCSI error handling for tape drives and medium changers
|
||||||
|
-------------------------------------------------------
|
||||||
|
|
||||||
|
The linux SCSI mid layer provides an error handling protocol which
|
||||||
|
kicks into gear whenever a SCSI command fails to complete within a
|
||||||
|
certain amount of time (which can vary depending on the command).
|
||||||
|
The cciss driver participates in this protocol to some extent. The
|
||||||
|
normal protocol is a four step process. First the device is told
|
||||||
|
to abort the command. If that doesn't work, the device is reset.
|
||||||
|
If that doesn't work, the SCSI bus is reset. If that doesn't work
|
||||||
|
the host bus adapter is reset. Because the cciss driver is a block
|
||||||
|
driver as well as a SCSI driver and only the tape drives and medium
|
||||||
|
changers are presented to the SCSI mid layer, and unlike more
|
||||||
|
straightforward SCSI drivers, disk i/o continues through the block
|
||||||
|
side during the SCSI error recovery process, the cciss driver only
|
||||||
|
implements the first two of these actions, aborting the command, and
|
||||||
|
resetting the device. Additionally, most tape drives will not oblige
|
||||||
|
in aborting commands, and sometimes it appears they will not even
|
||||||
|
obey a reset coommand, though in most circumstances they will. In
|
||||||
|
the case that the command cannot be aborted and the device cannot be
|
||||||
|
reset, the device will be set offline.
|
||||||
|
|
||||||
|
In the event the error handling code is triggered and a tape drive is
|
||||||
|
successfully reset or the tardy command is successfully aborted, the
|
||||||
|
tape drive may still not allow i/o to continue until some command
|
||||||
|
is issued which positions the tape to a known position. Typically you
|
||||||
|
must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example)
|
||||||
|
before i/o can proceed again to a tape drive which was reset.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
How to get the Nebula, PCTV and Twinhan DST cards working
|
How to get the Nebula, PCTV, FusionHDTV Lite and Twinhan DST cards working
|
||||||
=========================================================
|
==========================================================================
|
||||||
|
|
||||||
This class of cards has a bt878a as the PCI interface, and
|
This class of cards has a bt878a as the PCI interface, and
|
||||||
require the bttv driver.
|
require the bttv driver.
|
||||||
|
@ -26,27 +26,31 @@ Furthermore you need to enable
|
||||||
|
|
||||||
In general you need to load the bttv driver, which will handle the gpio and
|
In general you need to load the bttv driver, which will handle the gpio and
|
||||||
i2c communication for us, plus the common dvb-bt8xx device driver.
|
i2c communication for us, plus the common dvb-bt8xx device driver.
|
||||||
The frontends for Nebula (nxt6000), Pinnacle PCTV (cx24110) and
|
The frontends for Nebula (nxt6000), Pinnacle PCTV (cx24110), TwinHan (dst),
|
||||||
TwinHan (dst) are loaded automatically by the dvb-bt8xx device driver.
|
FusionHDTV DVB-T Lite (mt352) and FusionHDTV5 Lite (lgdt330x) are loaded
|
||||||
|
automatically by the dvb-bt8xx device driver.
|
||||||
|
|
||||||
3a) Nebula / Pinnacle PCTV
|
3a) Nebula / Pinnacle PCTV / FusionHDTV Lite
|
||||||
--------------------------
|
---------------------------------------------
|
||||||
|
|
||||||
$ modprobe bttv (normally bttv is being loaded automatically by kmod)
|
$ modprobe bttv (normally bttv is being loaded automatically by kmod)
|
||||||
$ modprobe dvb-bt8xx (or just place dvb-bt8xx in /etc/modules for automatic loading)
|
$ modprobe dvb-bt8xx
|
||||||
|
|
||||||
|
(or just place dvb-bt8xx in /etc/modules for automatic loading)
|
||||||
|
|
||||||
|
|
||||||
3b) TwinHan and Clones
|
3b) TwinHan and Clones
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
$ modprobe bttv i2c_hw=1 card=0x71
|
$ modprobe bttv card=0x71
|
||||||
$ modprobe dvb-bt8xx
|
$ modprobe dvb-bt8xx
|
||||||
$ modprobe dst
|
$ modprobe dst
|
||||||
|
|
||||||
The value 0x71 will override the PCI type detection for dvb-bt8xx,
|
The value 0x71 will override the PCI type detection for dvb-bt8xx,
|
||||||
which is necessary for TwinHan cards.
|
which is necessary for TwinHan cards. Omission of this parameter might result
|
||||||
|
in a system lockup.
|
||||||
|
|
||||||
If you're having an older card (blue color circuit) and card=0x71 locks
|
If you're having an older card (blue color PCB) and card=0x71 locks up
|
||||||
your machine, try using 0x68, too. If that does not work, ask on the
|
your machine, try using 0x68, too. If that does not work, ask on the
|
||||||
mailing list.
|
mailing list.
|
||||||
|
|
||||||
|
@ -64,11 +68,47 @@ verbose=0 means complete disabling of messages
|
||||||
dst_addons takes values 0 and 0x20. A value of 0 means it is a FTA card.
|
dst_addons takes values 0 and 0x20. A value of 0 means it is a FTA card.
|
||||||
0x20 means it has a Conditional Access slot.
|
0x20 means it has a Conditional Access slot.
|
||||||
|
|
||||||
The autodected values are determined bythe cards 'response
|
The autodetected values are determined by the cards 'response string'
|
||||||
string' which you can see in your logs e.g.
|
which you can see in your logs e.g.
|
||||||
|
|
||||||
dst_get_device_id: Recognise [DSTMCI]
|
dst_get_device_id: Recognise [DSTMCI]
|
||||||
|
|
||||||
|
If you need to sent in bug reports on the dst, please do send in a complete
|
||||||
|
log with the verbose=4 module parameter. For general usage, the default setting
|
||||||
|
of verbose=1 is ideal.
|
||||||
|
|
||||||
|
|
||||||
|
4) Multiple cards
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
If you happen to be running multiple cards, it would be advisable to load
|
||||||
|
the bttv module with the card id. This would help to solve any module loading
|
||||||
|
problems that you might face.
|
||||||
|
|
||||||
|
For example, if you have a Twinhan and Clones card along with a FusionHDTV5 Lite
|
||||||
|
|
||||||
|
$ modprobe bttv card=0x71 card=0x87
|
||||||
|
|
||||||
|
Here the order of the card id is important and should be the same as that of the
|
||||||
|
physical order of the cards. Here card=0x71 represents the Twinhan and clones
|
||||||
|
and card=0x87 represents Fusion HDTV5 Lite. These arguments can also be
|
||||||
|
specified in decimal, rather than hex:
|
||||||
|
|
||||||
|
$ modprobe bttv card=113 card=135
|
||||||
|
|
||||||
|
Some examples of card-id's
|
||||||
|
|
||||||
|
Pinnacle Sat 0x5e (94)
|
||||||
|
Nebula Digi TV 0x68 (104)
|
||||||
|
PC HDTV 0x70 (112)
|
||||||
|
Twinhan 0x71 (113)
|
||||||
|
FusionHDTV DVB-T Lite 0x80 (128)
|
||||||
|
FusionHDTV5 Lite 0x87 (135)
|
||||||
|
|
||||||
|
For a full list of card-id's, see the V4L Documentation within the kernel
|
||||||
|
source: linux/Documentation/video4linux/CARDLIST.bttv
|
||||||
|
|
||||||
|
If you have problems with this please do ask on the mailing list.
|
||||||
|
|
||||||
--
|
--
|
||||||
Authors: Richard Walker, Jamie Honan, Michael Hunold, Manu Abraham
|
Authors: Richard Walker, Jamie Honan, Michael Hunold, Manu Abraham
|
||||||
|
|
|
@ -41,6 +41,12 @@ o Frontends drivers:
|
||||||
- dib3000mb : DiBcom 3000-MB demodulator
|
- dib3000mb : DiBcom 3000-MB demodulator
|
||||||
DVB-S/C/T:
|
DVB-S/C/T:
|
||||||
- dst : TwinHan DST Frontend
|
- dst : TwinHan DST Frontend
|
||||||
|
ATSC:
|
||||||
|
- nxt200x : Nxtwave NXT2002 & NXT2004
|
||||||
|
- or51211 : or51211 based (pcHDTV HD2000 card)
|
||||||
|
- or51132 : or51132 based (pcHDTV HD3000 card)
|
||||||
|
- bcm3510 : Broadcom BCM3510
|
||||||
|
- lgdt330x : LG Electronics DT3302 & DT3303
|
||||||
|
|
||||||
|
|
||||||
o Cards based on the Phillips saa7146 multimedia PCI bridge chip:
|
o Cards based on the Phillips saa7146 multimedia PCI bridge chip:
|
||||||
|
@ -62,6 +68,10 @@ o Cards based on the Conexant Bt8xx PCI bridge:
|
||||||
- Nebula Electronics DigiTV
|
- Nebula Electronics DigiTV
|
||||||
- TwinHan DST
|
- TwinHan DST
|
||||||
- Avermedia DVB-T
|
- Avermedia DVB-T
|
||||||
|
- ChainTech digitop DST-1000 DVB-S
|
||||||
|
- pcHDTV HD-2000 TV
|
||||||
|
- DViCO FusionHDTV DVB-T Lite
|
||||||
|
- DViCO FusionHDTV5 Lite
|
||||||
|
|
||||||
o Technotrend / Hauppauge DVB USB devices:
|
o Technotrend / Hauppauge DVB USB devices:
|
||||||
- Nova USB
|
- Nova USB
|
||||||
|
@ -83,3 +93,30 @@ o DiBcom DVB-T USB based devices:
|
||||||
- DiBcom USB2.0 DVB-T reference device (non-public)
|
- DiBcom USB2.0 DVB-T reference device (non-public)
|
||||||
|
|
||||||
o Experimental support for the analog module of the Siemens DVB-C PCI card
|
o Experimental support for the analog module of the Siemens DVB-C PCI card
|
||||||
|
|
||||||
|
o Cards based on the Conexant cx2388x PCI bridge:
|
||||||
|
- ADS Tech Instant TV DVB-T PCI
|
||||||
|
- ATI HDTV Wonder
|
||||||
|
- digitalnow DNTV Live! DVB-T
|
||||||
|
- DViCO FusionHDTV DVB-T1
|
||||||
|
- DViCO FusionHDTV DVB-T Plus
|
||||||
|
- DViCO FusionHDTV3 Gold-Q
|
||||||
|
- DViCO FusionHDTV3 Gold-T
|
||||||
|
- DViCO FusionHDTV5 Gold
|
||||||
|
- Hauppauge Nova-T DVB-T
|
||||||
|
- KWorld/VStream XPert DVB-T
|
||||||
|
- pcHDTV HD3000 HDTV
|
||||||
|
- TerraTec Cinergy 1400 DVB-T
|
||||||
|
- WinFast DTV1000-T
|
||||||
|
|
||||||
|
o Cards based on the Phillips saa7134 PCI bridge:
|
||||||
|
- Medion 7134
|
||||||
|
- Pinnacle PCTV 300i DVB-T + PAL
|
||||||
|
- LifeView FlyDVB-T DUO
|
||||||
|
- Typhoon DVB-T Duo Digital/Analog Cardbus
|
||||||
|
- Philips TOUGH DVB-T reference design
|
||||||
|
- Philips EUROPA V3 reference design
|
||||||
|
- Compro Videomate DVB-T300
|
||||||
|
- Compro Videomate DVB-T200
|
||||||
|
- AVerMedia AVerTVHD MCE A180
|
||||||
|
|
||||||
|
|
|
@ -75,5 +75,22 @@ Ernst Peinlich <e.peinlich@inode.at>
|
||||||
Peter Beutner <p.beutner@gmx.net>
|
Peter Beutner <p.beutner@gmx.net>
|
||||||
for the IR code for the ttusb-dec driver
|
for the IR code for the ttusb-dec driver
|
||||||
|
|
||||||
|
Wilson Michaels <wilsonmichaels@earthlink.net>
|
||||||
|
for the lgdt330x frontend driver, and various bugfixes
|
||||||
|
|
||||||
|
Michael Krufky <mkrufky@m1k.net>
|
||||||
|
for maintaining v4l/dvb inter-tree dependencies
|
||||||
|
|
||||||
|
Taylor Jacob <rtjacob@earthlink.net>
|
||||||
|
for the nxt2002 frontend driver
|
||||||
|
|
||||||
|
Jean-Francois Thibert <jeanfrancois@sagetv.com>
|
||||||
|
for the nxt2004 frontend driver
|
||||||
|
|
||||||
|
Kirk Lapray <kirk.lapray@gmail.com>
|
||||||
|
for the or51211 and or51132 frontend drivers, and
|
||||||
|
for merging the nxt2002 and nxt2004 modules into a
|
||||||
|
single nxt200x frontend driver.
|
||||||
|
|
||||||
(If you think you should be in this list, but you are not, drop a
|
(If you think you should be in this list, but you are not, drop a
|
||||||
line to the DVB mailing list)
|
line to the DVB mailing list)
|
||||||
|
|
|
@ -22,7 +22,7 @@ use File::Temp qw/ tempdir /;
|
||||||
use IO::Handle;
|
use IO::Handle;
|
||||||
|
|
||||||
@components = ( "sp8870", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t",
|
@components = ( "sp8870", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t",
|
||||||
"dec2540t", "dec3000s", "vp7041", "dibusb", "nxt2002",
|
"dec2540t", "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004",
|
||||||
"or51211", "or51132_qam", "or51132_vsb");
|
"or51211", "or51132_qam", "or51132_vsb");
|
||||||
|
|
||||||
# Check args
|
# Check args
|
||||||
|
@ -252,6 +252,23 @@ sub nxt2002 {
|
||||||
$outfile;
|
$outfile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub nxt2004 {
|
||||||
|
my $sourcefile = "AVerTVHD_MCE_A180_Drv_v1.2.2.16.zip";
|
||||||
|
my $url = "http://www.aver.com/support/Drivers/$sourcefile";
|
||||||
|
my $hash = "111cb885b1e009188346d72acfed024c";
|
||||||
|
my $outfile = "dvb-fe-nxt2004.fw";
|
||||||
|
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
|
||||||
|
|
||||||
|
checkstandard();
|
||||||
|
|
||||||
|
wgetfile($sourcefile, $url);
|
||||||
|
unzip($sourcefile, $tmpdir);
|
||||||
|
verify("$tmpdir/3xHybrid.sys", $hash);
|
||||||
|
extract("$tmpdir/3xHybrid.sys", 465304, 9584, $outfile);
|
||||||
|
|
||||||
|
$outfile;
|
||||||
|
}
|
||||||
|
|
||||||
sub or51211 {
|
sub or51211 {
|
||||||
my $fwfile = "dvb-fe-or51211.fw";
|
my $fwfile = "dvb-fe-or51211.fw";
|
||||||
my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
|
my $url = "http://linuxtv.org/downloads/firmware/$fwfile";
|
||||||
|
|
|
@ -28,7 +28,7 @@ the image from specifications.
|
||||||
CPIO ARCHIVE method
|
CPIO ARCHIVE method
|
||||||
|
|
||||||
You can create a cpio archive that contains the early userspace image.
|
You can create a cpio archive that contains the early userspace image.
|
||||||
Youre cpio archive should be specified in CONFIG_INITRAMFS_SOURCE and it
|
Your cpio archive should be specified in CONFIG_INITRAMFS_SOURCE and it
|
||||||
will be used directly. Only a single cpio file may be specified in
|
will be used directly. Only a single cpio file may be specified in
|
||||||
CONFIG_INITRAMFS_SOURCE and directory and file names are not allowed in
|
CONFIG_INITRAMFS_SOURCE and directory and file names are not allowed in
|
||||||
combination with a cpio archive.
|
combination with a cpio archive.
|
||||||
|
|
|
@ -0,0 +1,152 @@
|
||||||
|
The Framebuffer Console
|
||||||
|
=======================
|
||||||
|
|
||||||
|
The framebuffer console (fbcon), as its name implies, is a text
|
||||||
|
console running on top of the framebuffer device. It has the functionality of
|
||||||
|
any standard text console driver, such as the VGA console, with the added
|
||||||
|
features that can be attributed to the graphical nature of the framebuffer.
|
||||||
|
|
||||||
|
In the x86 architecture, the framebuffer console is optional, and
|
||||||
|
some even treat it as a toy. For other architectures, it is the only available
|
||||||
|
display device, text or graphical.
|
||||||
|
|
||||||
|
What are the features of fbcon? The framebuffer console supports
|
||||||
|
high resolutions, varying font types, display rotation, primitive multihead,
|
||||||
|
etc. Theoretically, multi-colored fonts, blending, aliasing, and any feature
|
||||||
|
made available by the underlying graphics card are also possible.
|
||||||
|
|
||||||
|
A. Configuration
|
||||||
|
|
||||||
|
The framebuffer console can be enabled by using your favorite kernel
|
||||||
|
configuration tool. It is under Device Drivers->Graphics Support->Support for
|
||||||
|
framebuffer devices->Framebuffer Console Support. Select 'y' to compile
|
||||||
|
support statically, or 'm' for module support. The module will be fbcon.
|
||||||
|
|
||||||
|
In order for fbcon to activate, at least one framebuffer driver is
|
||||||
|
required, so choose from any of the numerous drivers available. For x86
|
||||||
|
systems, they almost universally have VGA cards, so vga16fb and vesafb will
|
||||||
|
always be available. However, using a chipset-specific driver will give you
|
||||||
|
more speed and features, such as the ability to change the video mode
|
||||||
|
dynamically.
|
||||||
|
|
||||||
|
To display the penguin logo, choose any logo available in Logo
|
||||||
|
Configuration->Boot up logo.
|
||||||
|
|
||||||
|
Also, you will need to select at least one compiled-in fonts, but if
|
||||||
|
you don't do anything, the kernel configuration tool will select one for you,
|
||||||
|
usually an 8x16 font.
|
||||||
|
|
||||||
|
GOTCHA: A common bug report is enabling the framebuffer without enabling the
|
||||||
|
framebuffer console. Depending on the driver, you may get a blanked or
|
||||||
|
garbled display, but the system still boots to completion. If you are
|
||||||
|
fortunate to have a driver that does not alter the graphics chip, then you
|
||||||
|
will still get a VGA console.
|
||||||
|
|
||||||
|
B. Loading
|
||||||
|
|
||||||
|
Possible scenarios:
|
||||||
|
|
||||||
|
1. Driver and fbcon are compiled statically
|
||||||
|
|
||||||
|
Usually, fbcon will automatically take over your console. The notable
|
||||||
|
exception is vesafb. It needs to be explicitly activated with the
|
||||||
|
vga= boot option parameter.
|
||||||
|
|
||||||
|
2. Driver is compiled statically, fbcon is compiled as a module
|
||||||
|
|
||||||
|
Depending on the driver, you either get a standard console, or a
|
||||||
|
garbled display, as mentioned above. To get a framebuffer console,
|
||||||
|
do a 'modprobe fbcon'.
|
||||||
|
|
||||||
|
3. Driver is compiled as a module, fbcon is compiled statically
|
||||||
|
|
||||||
|
You get your standard console. Once the driver is loaded with
|
||||||
|
'modprobe xxxfb', fbcon automatically takes over the console with
|
||||||
|
the possible exception of using the fbcon=map:n option. See below.
|
||||||
|
|
||||||
|
4. Driver and fbcon are compiled as a module.
|
||||||
|
|
||||||
|
You can load them in any order. Once both are loaded, fbcon will take
|
||||||
|
over the console.
|
||||||
|
|
||||||
|
C. Boot options
|
||||||
|
|
||||||
|
The framebuffer console has several, largely unknown, boot options
|
||||||
|
that can change its behavior.
|
||||||
|
|
||||||
|
1. fbcon=font:<name>
|
||||||
|
|
||||||
|
Select the initial font to use. The value 'name' can be any of the
|
||||||
|
compiled-in fonts: VGA8x16, 7x14, 10x18, VGA8x8, MINI4x6, RomanLarge,
|
||||||
|
SUN8x16, SUN12x22, ProFont6x11, Acorn8x8, PEARL8x8.
|
||||||
|
|
||||||
|
Note, not all drivers can handle font with widths not divisible by 8,
|
||||||
|
such as vga16fb.
|
||||||
|
|
||||||
|
2. fbcon=scrollback:<value>[k]
|
||||||
|
|
||||||
|
The scrollback buffer is memory that is used to preserve display
|
||||||
|
contents that has already scrolled past your view. This is accessed
|
||||||
|
by using the Shift-PageUp key combination. The value 'value' is any
|
||||||
|
integer. It defaults to 32KB. The 'k' suffix is optional, and will
|
||||||
|
multiply the 'value' by 1024.
|
||||||
|
|
||||||
|
3. fbcon=map:<0123>
|
||||||
|
|
||||||
|
This is an interesting option. It tells which driver gets mapped to
|
||||||
|
which console. The value '0123' is a sequence that gets repeated until
|
||||||
|
the total length is 64 which is the number of consoles available. In
|
||||||
|
the above example, it is expanded to 012301230123... and the mapping
|
||||||
|
will be:
|
||||||
|
|
||||||
|
tty | 1 2 3 4 5 6 7 8 9 ...
|
||||||
|
fb | 0 1 2 3 0 1 2 3 0 ...
|
||||||
|
|
||||||
|
('cat /proc/fb' should tell you what the fb numbers are)
|
||||||
|
|
||||||
|
One side effect that may be useful is using a map value that exceeds
|
||||||
|
the number of loaded fb drivers. For example, if only one driver is
|
||||||
|
available, fb0, adding fbcon=map:1 tells fbcon not to take over the
|
||||||
|
console.
|
||||||
|
|
||||||
|
Later on, when you want to map the console the to the framebuffer
|
||||||
|
device, you can use the con2fbmap utility.
|
||||||
|
|
||||||
|
4. fbcon=vc:<n1>-<n2>
|
||||||
|
|
||||||
|
This option tells fbcon to take over only a range of consoles as
|
||||||
|
specified by the values 'n1' and 'n2'. The rest of the consoles
|
||||||
|
outside the given range will still be controlled by the standard
|
||||||
|
console driver.
|
||||||
|
|
||||||
|
NOTE: For x86 machines, the standard console is the VGA console which
|
||||||
|
is typically located on the same video card. Thus, the consoles that
|
||||||
|
are controlled by the VGA console will be garbled.
|
||||||
|
|
||||||
|
4. fbcon=rotate:<n>
|
||||||
|
|
||||||
|
This option changes the orientation angle of the console display. The
|
||||||
|
value 'n' accepts the following:
|
||||||
|
|
||||||
|
0 - normal orientation (0 degree)
|
||||||
|
1 - clockwise orientation (90 degrees)
|
||||||
|
2 - upside down orientation (180 degrees)
|
||||||
|
3 - counterclockwise orientation (270 degrees)
|
||||||
|
|
||||||
|
The angle can be changed anytime afterwards by 'echoing' the same
|
||||||
|
numbers to any one of the 2 attributes found in
|
||||||
|
/sys/class/graphics/fb{x}
|
||||||
|
|
||||||
|
con_rotate - rotate the display of the active console
|
||||||
|
con_rotate_all - rotate the display of all consoles
|
||||||
|
|
||||||
|
Console rotation will only become available if Console Rotation
|
||||||
|
Support is compiled in your kernel.
|
||||||
|
|
||||||
|
NOTE: This is purely console rotation. Any other applications that
|
||||||
|
use the framebuffer will remain at their 'normal'orientation.
|
||||||
|
Actually, the underlying fb driver is totally ignorant of console
|
||||||
|
rotation.
|
||||||
|
|
||||||
|
---
|
||||||
|
Antonino Daplas <adaplas@pol.net>
|
|
@ -25,6 +25,13 @@ Who: Adrian Bunk <bunk@stusta.de>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
What: drivers depending on OBSOLETE_OSS_DRIVER
|
||||||
|
When: January 2006
|
||||||
|
Why: OSS drivers with ALSA replacements
|
||||||
|
Who: Adrian Bunk <bunk@stusta.de>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
What: RCU API moves to EXPORT_SYMBOL_GPL
|
What: RCU API moves to EXPORT_SYMBOL_GPL
|
||||||
When: April 2006
|
When: April 2006
|
||||||
Files: include/linux/rcupdate.h, kernel/rcupdate.c
|
Files: include/linux/rcupdate.h, kernel/rcupdate.c
|
||||||
|
@ -60,6 +67,21 @@ Who: Jody McIntyre <scjody@steamballoon.com>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
|
What: Video4Linux API 1 ioctls and video_decoder.h from Video devices.
|
||||||
|
When: July 2006
|
||||||
|
Why: V4L1 AP1 was replaced by V4L2 API. during migration from 2.4 to 2.6
|
||||||
|
series. The old API have lots of drawbacks and don't provide enough
|
||||||
|
means to work with all video and audio standards. The newer API is
|
||||||
|
already available on the main drivers and should be used instead.
|
||||||
|
Newer drivers should use v4l_compat_translate_ioctl function to handle
|
||||||
|
old calls, replacing to newer ones.
|
||||||
|
Decoder iocts are using internally to allow video drivers to
|
||||||
|
communicate with video decoders. This should also be improved to allow
|
||||||
|
V4L2 calls being translated into compatible internal ioctls.
|
||||||
|
Who: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
What: i2c sysfs name change: in1_ref, vid deprecated in favour of cpu0_vid
|
What: i2c sysfs name change: in1_ref, vid deprecated in favour of cpu0_vid
|
||||||
When: November 2005
|
When: November 2005
|
||||||
Files: drivers/i2c/chips/adm1025.c, drivers/i2c/chips/adm1026.c
|
Files: drivers/i2c/chips/adm1025.c, drivers/i2c/chips/adm1026.c
|
||||||
|
@ -111,3 +133,10 @@ Why: This interface has been obsoleted by the new layer3-independent
|
||||||
to link against API-compatible library on top of libnfnetlink_queue
|
to link against API-compatible library on top of libnfnetlink_queue
|
||||||
instead of the current 'libipq'.
|
instead of the current 'libipq'.
|
||||||
Who: Harald Welte <laforge@netfilter.org>
|
Who: Harald Welte <laforge@netfilter.org>
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
What: EXPORT_SYMBOL(lookup_hash)
|
||||||
|
When: January 2006
|
||||||
|
Why: Too low-level interface. Use lookup_one_len or lookup_create instead.
|
||||||
|
Who: Christoph Hellwig <hch@lst.de>
|
||||||
|
|
|
@ -17,8 +17,6 @@ set using tune2fs(8). Kernel-determined defaults are indicated by (*).
|
||||||
bsddf (*) Makes `df' act like BSD.
|
bsddf (*) Makes `df' act like BSD.
|
||||||
minixdf Makes `df' act like Minix.
|
minixdf Makes `df' act like Minix.
|
||||||
|
|
||||||
check Check block and inode bitmaps at mount time
|
|
||||||
(requires CONFIG_EXT2_CHECK).
|
|
||||||
check=none, nocheck (*) Don't do extra checking of bitmaps on mount
|
check=none, nocheck (*) Don't do extra checking of bitmaps on mount
|
||||||
(check=normal and check=strict options removed)
|
(check=normal and check=strict options removed)
|
||||||
|
|
||||||
|
|
|
@ -7,12 +7,10 @@ Supported adapters:
|
||||||
* VIA Technologies, Inc. VT82C686A/B
|
* VIA Technologies, Inc. VT82C686A/B
|
||||||
Datasheet: Sometimes available at the VIA website
|
Datasheet: Sometimes available at the VIA website
|
||||||
|
|
||||||
* VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237
|
* VIA Technologies, Inc. VT8231, VT8233, VT8233A, VT8235, VT8237R
|
||||||
Datasheet: available on request from Via
|
Datasheet: available on request from VIA
|
||||||
|
|
||||||
Authors:
|
Authors:
|
||||||
Frodo Looijaard <frodol@dds.nl>,
|
|
||||||
Philip Edelbrock <phil@netroedge.com>,
|
|
||||||
Kyösti Mälkki <kmalkki@cc.hut.fi>,
|
Kyösti Mälkki <kmalkki@cc.hut.fi>,
|
||||||
Mark D. Studebaker <mdsxyz123@yahoo.com>,
|
Mark D. Studebaker <mdsxyz123@yahoo.com>,
|
||||||
Jean Delvare <khali@linux-fr.org>
|
Jean Delvare <khali@linux-fr.org>
|
||||||
|
|
|
@ -412,7 +412,7 @@ For now, you can ignore the `flags' parameter. It is there for future use.
|
||||||
release_region(address,FOO_EXTENT);
|
release_region(address,FOO_EXTENT);
|
||||||
/* SENSORS ONLY END */
|
/* SENSORS ONLY END */
|
||||||
ERROR1:
|
ERROR1:
|
||||||
kfree(new_client);
|
kfree(data);
|
||||||
ERROR0:
|
ERROR0:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
@ -443,7 +443,7 @@ much simpler than the attachment code, fortunately!
|
||||||
release_region(client->addr,LM78_EXTENT);
|
release_region(client->addr,LM78_EXTENT);
|
||||||
/* HYBRID SENSORS CHIP ONLY END */
|
/* HYBRID SENSORS CHIP ONLY END */
|
||||||
|
|
||||||
kfree(data);
|
kfree(i2c_get_clientdata(client));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,3 +116,122 @@ and it's role in the array.
|
||||||
|
|
||||||
Once started with RUN_ARRAY, uninitialized spares can be added with
|
Once started with RUN_ARRAY, uninitialized spares can be added with
|
||||||
HOT_ADD_DISK.
|
HOT_ADD_DISK.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MD devices in sysfs
|
||||||
|
-------------------
|
||||||
|
md devices appear in sysfs (/sys) as regular block devices,
|
||||||
|
e.g.
|
||||||
|
/sys/block/md0
|
||||||
|
|
||||||
|
Each 'md' device will contain a subdirectory called 'md' which
|
||||||
|
contains further md-specific information about the device.
|
||||||
|
|
||||||
|
All md devices contain:
|
||||||
|
level
|
||||||
|
a text file indicating the 'raid level'. This may be a standard
|
||||||
|
numerical level prefixed by "RAID-" - e.g. "RAID-5", or some
|
||||||
|
other name such as "linear" or "multipath".
|
||||||
|
If no raid level has been set yet (array is still being
|
||||||
|
assembled), this file will be empty.
|
||||||
|
|
||||||
|
raid_disks
|
||||||
|
a text file with a simple number indicating the number of devices
|
||||||
|
in a fully functional array. If this is not yet known, the file
|
||||||
|
will be empty. If an array is being resized (not currently
|
||||||
|
possible) this will contain the larger of the old and new sizes.
|
||||||
|
|
||||||
|
As component devices are added to an md array, they appear in the 'md'
|
||||||
|
directory as new directories named
|
||||||
|
dev-XXX
|
||||||
|
where XXX is a name that the kernel knows for the device, e.g. hdb1.
|
||||||
|
Each directory contains:
|
||||||
|
|
||||||
|
block
|
||||||
|
a symlink to the block device in /sys/block, e.g.
|
||||||
|
/sys/block/md0/md/dev-hdb1/block -> ../../../../block/hdb/hdb1
|
||||||
|
|
||||||
|
super
|
||||||
|
A file containing an image of the superblock read from, or
|
||||||
|
written to, that device.
|
||||||
|
|
||||||
|
state
|
||||||
|
A file recording the current state of the device in the array
|
||||||
|
which can be a comma separated list of
|
||||||
|
faulty - device has been kicked from active use due to
|
||||||
|
a detected fault
|
||||||
|
in_sync - device is a fully in-sync member of the array
|
||||||
|
spare - device is working, but not a full member.
|
||||||
|
This includes spares that are in the process
|
||||||
|
of being recoverred to
|
||||||
|
This list make grow in future.
|
||||||
|
|
||||||
|
|
||||||
|
An active md device will also contain and entry for each active device
|
||||||
|
in the array. These are named
|
||||||
|
|
||||||
|
rdNN
|
||||||
|
|
||||||
|
where 'NN' is the possition in the array, starting from 0.
|
||||||
|
So for a 3 drive array there will be rd0, rd1, rd2.
|
||||||
|
These are symbolic links to the appropriate 'dev-XXX' entry.
|
||||||
|
Thus, for example,
|
||||||
|
cat /sys/block/md*/md/rd*/state
|
||||||
|
will show 'in_sync' on every line.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Active md devices for levels that support data redundancy (1,4,5,6)
|
||||||
|
also have
|
||||||
|
|
||||||
|
sync_action
|
||||||
|
a text file that can be used to monitor and control the rebuild
|
||||||
|
process. It contains one word which can be one of:
|
||||||
|
resync - redundancy is being recalculated after unclean
|
||||||
|
shutdown or creation
|
||||||
|
recover - a hot spare is being built to replace a
|
||||||
|
failed/missing device
|
||||||
|
idle - nothing is happening
|
||||||
|
check - A full check of redundancy was requested and is
|
||||||
|
happening. This reads all block and checks
|
||||||
|
them. A repair may also happen for some raid
|
||||||
|
levels.
|
||||||
|
repair - A full check and repair is happening. This is
|
||||||
|
similar to 'resync', but was requested by the
|
||||||
|
user, and the write-intent bitmap is NOT used to
|
||||||
|
optimise the process.
|
||||||
|
|
||||||
|
This file is writable, and each of the strings that could be
|
||||||
|
read are meaningful for writing.
|
||||||
|
|
||||||
|
'idle' will stop an active resync/recovery etc. There is no
|
||||||
|
guarantee that another resync/recovery may not be automatically
|
||||||
|
started again, though some event will be needed to trigger
|
||||||
|
this.
|
||||||
|
'resync' or 'recovery' can be used to restart the
|
||||||
|
corresponding operation if it was stopped with 'idle'.
|
||||||
|
'check' and 'repair' will start the appropriate process
|
||||||
|
providing the current state is 'idle'.
|
||||||
|
|
||||||
|
mismatch_count
|
||||||
|
When performing 'check' and 'repair', and possibly when
|
||||||
|
performing 'resync', md will count the number of errors that are
|
||||||
|
found. The count in 'mismatch_cnt' is the number of sectors
|
||||||
|
that were re-written, or (for 'check') would have been
|
||||||
|
re-written. As most raid levels work in units of pages rather
|
||||||
|
than sectors, this my be larger than the number of actual errors
|
||||||
|
by a factor of the number of sectors in a page.
|
||||||
|
|
||||||
|
Each active md device may also have attributes specific to the
|
||||||
|
personality module that manages it.
|
||||||
|
These are specific to the implementation of the module and could
|
||||||
|
change substantially if the implementation changes.
|
||||||
|
|
||||||
|
These currently include
|
||||||
|
|
||||||
|
stripe_cache_size (currently raid5 only)
|
||||||
|
number of entries in the stripe cache. This is writable, but
|
||||||
|
there are upper and lower limits (32768, 16). Default is 128.
|
||||||
|
strip_cache_active (currently raid5 only)
|
||||||
|
number of active entries in the stripe cache
|
||||||
|
|
|
@ -1,27 +1,82 @@
|
||||||
|
|
||||||
===========================
|
Intel(R) PRO/Wireless 2100 Driver for Linux in support of:
|
||||||
Intel(R) PRO/Wireless 2100 Network Connection Driver for Linux
|
|
||||||
|
Intel(R) PRO/Wireless 2100 Network Connection
|
||||||
|
|
||||||
|
Copyright (C) 2003-2005, Intel Corporation
|
||||||
|
|
||||||
README.ipw2100
|
README.ipw2100
|
||||||
|
|
||||||
March 14, 2005
|
Version: 1.1.3
|
||||||
|
Date : October 17, 2005
|
||||||
|
|
||||||
===========================
|
|
||||||
Index
|
Index
|
||||||
---------------------------
|
-----------------------------------------------
|
||||||
0. Introduction
|
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||||
1. Release 1.1.0 Current Features
|
1. Introduction
|
||||||
2. Command Line Parameters
|
2. Release 1.1.3 Current Features
|
||||||
3. Sysfs Helper Files
|
3. Command Line Parameters
|
||||||
4. Radio Kill Switch
|
4. Sysfs Helper Files
|
||||||
5. Dynamic Firmware
|
5. Radio Kill Switch
|
||||||
6. Power Management
|
6. Dynamic Firmware
|
||||||
7. Support
|
7. Power Management
|
||||||
8. License
|
8. Support
|
||||||
|
9. License
|
||||||
|
|
||||||
|
|
||||||
===========================
|
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||||
0. Introduction
|
-----------------------------------------------
|
||||||
------------ ----- ----- ---- --- -- -
|
|
||||||
|
Important Notice FOR ALL USERS OR DISTRIBUTORS!!!!
|
||||||
|
|
||||||
|
Intel wireless LAN adapters are engineered, manufactured, tested, and
|
||||||
|
quality checked to ensure that they meet all necessary local and
|
||||||
|
governmental regulatory agency requirements for the regions that they
|
||||||
|
are designated and/or marked to ship into. Since wireless LANs are
|
||||||
|
generally unlicensed devices that share spectrum with radars,
|
||||||
|
satellites, and other licensed and unlicensed devices, it is sometimes
|
||||||
|
necessary to dynamically detect, avoid, and limit usage to avoid
|
||||||
|
interference with these devices. In many instances Intel is required to
|
||||||
|
provide test data to prove regional and local compliance to regional and
|
||||||
|
governmental regulations before certification or approval to use the
|
||||||
|
product is granted. Intel's wireless LAN's EEPROM, firmware, and
|
||||||
|
software driver are designed to carefully control parameters that affect
|
||||||
|
radio operation and to ensure electromagnetic compliance (EMC). These
|
||||||
|
parameters include, without limitation, RF power, spectrum usage,
|
||||||
|
channel scanning, and human exposure.
|
||||||
|
|
||||||
|
For these reasons Intel cannot permit any manipulation by third parties
|
||||||
|
of the software provided in binary format with the wireless WLAN
|
||||||
|
adapters (e.g., the EEPROM and firmware). Furthermore, if you use any
|
||||||
|
patches, utilities, or code with the Intel wireless LAN adapters that
|
||||||
|
have been manipulated by an unauthorized party (i.e., patches,
|
||||||
|
utilities, or code (including open source code modifications) which have
|
||||||
|
not been validated by Intel), (i) you will be solely responsible for
|
||||||
|
ensuring the regulatory compliance of the products, (ii) Intel will bear
|
||||||
|
no liability, under any theory of liability for any issues associated
|
||||||
|
with the modified products, including without limitation, claims under
|
||||||
|
the warranty and/or issues arising from regulatory non-compliance, and
|
||||||
|
(iii) Intel will not provide or be required to assist in providing
|
||||||
|
support to any third parties for such modified products.
|
||||||
|
|
||||||
|
Note: Many regulatory agencies consider Wireless LAN adapters to be
|
||||||
|
modules, and accordingly, condition system-level regulatory approval
|
||||||
|
upon receipt and review of test data documenting that the antennas and
|
||||||
|
system configuration do not cause the EMC and radio operation to be
|
||||||
|
non-compliant.
|
||||||
|
|
||||||
|
The drivers available for download from SourceForge are provided as a
|
||||||
|
part of a development project. Conformance to local regulatory
|
||||||
|
requirements is the responsibility of the individual developer. As
|
||||||
|
such, if you are interested in deploying or shipping a driver as part of
|
||||||
|
solution intended to be used for purposes other than development, please
|
||||||
|
obtain a tested driver from Intel Customer Support at:
|
||||||
|
|
||||||
|
http://support.intel.com/support/notebook/sb/CS-006408.htm
|
||||||
|
|
||||||
|
|
||||||
|
1. Introduction
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
This document provides a brief overview of the features supported by the
|
This document provides a brief overview of the features supported by the
|
||||||
IPW2100 driver project. The main project website, where the latest
|
IPW2100 driver project. The main project website, where the latest
|
||||||
|
@ -34,9 +89,8 @@ potential fixes and patches, as well as links to the development mailing list
|
||||||
for the driver project.
|
for the driver project.
|
||||||
|
|
||||||
|
|
||||||
===========================
|
2. Release 1.1.3 Current Supported Features
|
||||||
1. Release 1.1.0 Current Supported Features
|
-----------------------------------------------
|
||||||
---------------------------
|
|
||||||
- Managed (BSS) and Ad-Hoc (IBSS)
|
- Managed (BSS) and Ad-Hoc (IBSS)
|
||||||
- WEP (shared key and open)
|
- WEP (shared key and open)
|
||||||
- Wireless Tools support
|
- Wireless Tools support
|
||||||
|
@ -51,9 +105,8 @@ on the amount of validation and interoperability testing that has been
|
||||||
performed on a given feature.
|
performed on a given feature.
|
||||||
|
|
||||||
|
|
||||||
===========================
|
3. Command Line Parameters
|
||||||
2. Command Line Parameters
|
-----------------------------------------------
|
||||||
---------------------------
|
|
||||||
|
|
||||||
If the driver is built as a module, the following optional parameters are used
|
If the driver is built as a module, the following optional parameters are used
|
||||||
by entering them on the command line with the modprobe command using this
|
by entering them on the command line with the modprobe command using this
|
||||||
|
@ -75,9 +128,9 @@ associate boolean associate=0 /* Do NOT auto associate */
|
||||||
disable boolean disable=1 /* Do not power the HW */
|
disable boolean disable=1 /* Do not power the HW */
|
||||||
|
|
||||||
|
|
||||||
===========================
|
4. Sysfs Helper Files
|
||||||
3. Sysfs Helper Files
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
There are several ways to control the behavior of the driver. Many of the
|
There are several ways to control the behavior of the driver. Many of the
|
||||||
general capabilities are exposed through the Wireless Tools (iwconfig). There
|
general capabilities are exposed through the Wireless Tools (iwconfig). There
|
||||||
|
@ -120,9 +173,8 @@ For the device level files, see /sys/bus/pci/drivers/ipw2100:
|
||||||
based RF kill from ON -> OFF -> ON, the radio will NOT come back on
|
based RF kill from ON -> OFF -> ON, the radio will NOT come back on
|
||||||
|
|
||||||
|
|
||||||
===========================
|
5. Radio Kill Switch
|
||||||
4. Radio Kill Switch
|
-----------------------------------------------
|
||||||
---------------------------
|
|
||||||
Most laptops provide the ability for the user to physically disable the radio.
|
Most laptops provide the ability for the user to physically disable the radio.
|
||||||
Some vendors have implemented this as a physical switch that requires no
|
Some vendors have implemented this as a physical switch that requires no
|
||||||
software to turn the radio off and on. On other laptops, however, the switch
|
software to turn the radio off and on. On other laptops, however, the switch
|
||||||
|
@ -134,9 +186,8 @@ See the Sysfs helper file 'rf_kill' for determining the state of the RF switch
|
||||||
on your system.
|
on your system.
|
||||||
|
|
||||||
|
|
||||||
===========================
|
6. Dynamic Firmware
|
||||||
5. Dynamic Firmware
|
-----------------------------------------------
|
||||||
---------------------------
|
|
||||||
As the firmware is licensed under a restricted use license, it can not be
|
As the firmware is licensed under a restricted use license, it can not be
|
||||||
included within the kernel sources. To enable the IPW2100 you will need a
|
included within the kernel sources. To enable the IPW2100 you will need a
|
||||||
firmware image to load into the wireless NIC's processors.
|
firmware image to load into the wireless NIC's processors.
|
||||||
|
@ -146,9 +197,8 @@ You can obtain these images from <http://ipw2100.sf.net/firmware.php>.
|
||||||
See INSTALL for instructions on installing the firmware.
|
See INSTALL for instructions on installing the firmware.
|
||||||
|
|
||||||
|
|
||||||
===========================
|
7. Power Management
|
||||||
6. Power Management
|
-----------------------------------------------
|
||||||
---------------------------
|
|
||||||
The IPW2100 supports the configuration of the Power Save Protocol
|
The IPW2100 supports the configuration of the Power Save Protocol
|
||||||
through a private wireless extension interface. The IPW2100 supports
|
through a private wireless extension interface. The IPW2100 supports
|
||||||
the following different modes:
|
the following different modes:
|
||||||
|
@ -200,9 +250,8 @@ xxxx/yyyy will be replaced with 'off' -- the level reported will be the active
|
||||||
level if `iwconfig eth1 power on` is invoked.
|
level if `iwconfig eth1 power on` is invoked.
|
||||||
|
|
||||||
|
|
||||||
===========================
|
8. Support
|
||||||
7. Support
|
-----------------------------------------------
|
||||||
---------------------------
|
|
||||||
|
|
||||||
For general development information and support,
|
For general development information and support,
|
||||||
go to:
|
go to:
|
||||||
|
@ -218,9 +267,8 @@ For installation support on the ipw2100 1.1.0 driver on Linux kernels
|
||||||
|
|
||||||
http://supportmail.intel.com
|
http://supportmail.intel.com
|
||||||
|
|
||||||
===========================
|
9. License
|
||||||
8. License
|
-----------------------------------------------
|
||||||
---------------------------
|
|
||||||
|
|
||||||
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
||||||
|
|
||||||
|
|
|
@ -14,20 +14,76 @@ Copyright (C) 2004-2005, Intel Corporation
|
||||||
|
|
||||||
README.ipw2200
|
README.ipw2200
|
||||||
|
|
||||||
Version: 1.0.0
|
Version: 1.0.8
|
||||||
Date : January 31, 2005
|
Date : October 20, 2005
|
||||||
|
|
||||||
|
|
||||||
Index
|
Index
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||||
1. Introduction
|
1. Introduction
|
||||||
1.1. Overview of features
|
1.1. Overview of features
|
||||||
1.2. Module parameters
|
1.2. Module parameters
|
||||||
1.3. Wireless Extension Private Methods
|
1.3. Wireless Extension Private Methods
|
||||||
1.4. Sysfs Helper Files
|
1.4. Sysfs Helper Files
|
||||||
2. About the Version Numbers
|
2. Ad-Hoc Networking
|
||||||
3. Support
|
3. Interacting with Wireless Tools
|
||||||
4. License
|
3.1. iwconfig mode
|
||||||
|
4. About the Version Numbers
|
||||||
|
5. Firmware installation
|
||||||
|
6. Support
|
||||||
|
7. License
|
||||||
|
|
||||||
|
|
||||||
|
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
Important Notice FOR ALL USERS OR DISTRIBUTORS!!!!
|
||||||
|
|
||||||
|
Intel wireless LAN adapters are engineered, manufactured, tested, and
|
||||||
|
quality checked to ensure that they meet all necessary local and
|
||||||
|
governmental regulatory agency requirements for the regions that they
|
||||||
|
are designated and/or marked to ship into. Since wireless LANs are
|
||||||
|
generally unlicensed devices that share spectrum with radars,
|
||||||
|
satellites, and other licensed and unlicensed devices, it is sometimes
|
||||||
|
necessary to dynamically detect, avoid, and limit usage to avoid
|
||||||
|
interference with these devices. In many instances Intel is required to
|
||||||
|
provide test data to prove regional and local compliance to regional and
|
||||||
|
governmental regulations before certification or approval to use the
|
||||||
|
product is granted. Intel's wireless LAN's EEPROM, firmware, and
|
||||||
|
software driver are designed to carefully control parameters that affect
|
||||||
|
radio operation and to ensure electromagnetic compliance (EMC). These
|
||||||
|
parameters include, without limitation, RF power, spectrum usage,
|
||||||
|
channel scanning, and human exposure.
|
||||||
|
|
||||||
|
For these reasons Intel cannot permit any manipulation by third parties
|
||||||
|
of the software provided in binary format with the wireless WLAN
|
||||||
|
adapters (e.g., the EEPROM and firmware). Furthermore, if you use any
|
||||||
|
patches, utilities, or code with the Intel wireless LAN adapters that
|
||||||
|
have been manipulated by an unauthorized party (i.e., patches,
|
||||||
|
utilities, or code (including open source code modifications) which have
|
||||||
|
not been validated by Intel), (i) you will be solely responsible for
|
||||||
|
ensuring the regulatory compliance of the products, (ii) Intel will bear
|
||||||
|
no liability, under any theory of liability for any issues associated
|
||||||
|
with the modified products, including without limitation, claims under
|
||||||
|
the warranty and/or issues arising from regulatory non-compliance, and
|
||||||
|
(iii) Intel will not provide or be required to assist in providing
|
||||||
|
support to any third parties for such modified products.
|
||||||
|
|
||||||
|
Note: Many regulatory agencies consider Wireless LAN adapters to be
|
||||||
|
modules, and accordingly, condition system-level regulatory approval
|
||||||
|
upon receipt and review of test data documenting that the antennas and
|
||||||
|
system configuration do not cause the EMC and radio operation to be
|
||||||
|
non-compliant.
|
||||||
|
|
||||||
|
The drivers available for download from SourceForge are provided as a
|
||||||
|
part of a development project. Conformance to local regulatory
|
||||||
|
requirements is the responsibility of the individual developer. As
|
||||||
|
such, if you are interested in deploying or shipping a driver as part of
|
||||||
|
solution intended to be used for purposes other than development, please
|
||||||
|
obtain a tested driver from Intel Customer Support at:
|
||||||
|
|
||||||
|
http://support.intel.com/support/notebook/sb/CS-006408.htm
|
||||||
|
|
||||||
|
|
||||||
1. Introduction
|
1. Introduction
|
||||||
|
@ -45,7 +101,7 @@ file.
|
||||||
|
|
||||||
1.1. Overview of Features
|
1.1. Overview of Features
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
The current release (1.0.0) supports the following features:
|
The current release (1.0.8) supports the following features:
|
||||||
|
|
||||||
+ BSS mode (Infrastructure, Managed)
|
+ BSS mode (Infrastructure, Managed)
|
||||||
+ IBSS mode (Ad-Hoc)
|
+ IBSS mode (Ad-Hoc)
|
||||||
|
@ -56,7 +112,17 @@ The current release (1.0.0) supports the following features:
|
||||||
+ Full A rate support (2915 only)
|
+ Full A rate support (2915 only)
|
||||||
+ Transmit power control
|
+ Transmit power control
|
||||||
+ S state support (ACPI suspend/resume)
|
+ S state support (ACPI suspend/resume)
|
||||||
|
|
||||||
|
The following features are currently enabled, but not officially
|
||||||
|
supported:
|
||||||
|
|
||||||
|
+ WPA
|
||||||
+ long/short preamble support
|
+ long/short preamble support
|
||||||
|
+ Monitor mode (aka RFMon)
|
||||||
|
|
||||||
|
The distinction between officially supported and enabled is a reflection
|
||||||
|
on the amount of validation and interoperability testing that has been
|
||||||
|
performed on a given feature.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -64,9 +130,9 @@ The current release (1.0.0) supports the following features:
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
Like many modules used in the Linux kernel, the Intel(R) PRO/Wireless
|
Like many modules used in the Linux kernel, the Intel(R) PRO/Wireless
|
||||||
2915ABG Driver for Linux allows certain configuration options to be
|
2915ABG Driver for Linux allows configuration options to be provided
|
||||||
provided as module parameters. The most common way to specify a module
|
as module parameters. The most common way to specify a module parameter
|
||||||
parameter is via the command line.
|
is via the command line.
|
||||||
|
|
||||||
The general form is:
|
The general form is:
|
||||||
|
|
||||||
|
@ -96,14 +162,18 @@ Where the supported parameter are:
|
||||||
|
|
||||||
debug
|
debug
|
||||||
If using a debug build, this is used to control the amount of debug
|
If using a debug build, this is used to control the amount of debug
|
||||||
info is logged. See the 'dval' and 'load' script for more info on
|
info is logged. See the 'dvals' and 'load' script for more info on
|
||||||
how to use this (the dval and load scripts are provided as part
|
how to use this (the dvals and load scripts are provided as part
|
||||||
of the ipw2200 development snapshot releases available from the
|
of the ipw2200 development snapshot releases available from the
|
||||||
SourceForge project at http://ipw2200.sf.net)
|
SourceForge project at http://ipw2200.sf.net)
|
||||||
|
|
||||||
|
led
|
||||||
|
Can be used to turn on experimental LED code.
|
||||||
|
0 = Off, 1 = On. Default is 0.
|
||||||
|
|
||||||
mode
|
mode
|
||||||
Can be used to set the default mode of the adapter.
|
Can be used to set the default mode of the adapter.
|
||||||
0 = Managed, 1 = Ad-Hoc
|
0 = Managed, 1 = Ad-Hoc, 2 = Monitor
|
||||||
|
|
||||||
|
|
||||||
1.3. Wireless Extension Private Methods
|
1.3. Wireless Extension Private Methods
|
||||||
|
@ -184,13 +254,13 @@ You can set the debug level via:
|
||||||
|
|
||||||
Where $VALUE would be a number in the case of this sysfs entry. The
|
Where $VALUE would be a number in the case of this sysfs entry. The
|
||||||
input to sysfs files does not have to be a number. For example, the
|
input to sysfs files does not have to be a number. For example, the
|
||||||
firmware loader used by hotplug utilizes sysfs entries for transferring
|
firmware loader used by hotplug utilizes sysfs entries for transfering
|
||||||
the firmware image from user space into the driver.
|
the firmware image from user space into the driver.
|
||||||
|
|
||||||
The Intel(R) PRO/Wireless 2915ABG Driver for Linux exposes sysfs entries
|
The Intel(R) PRO/Wireless 2915ABG Driver for Linux exposes sysfs entries
|
||||||
at two levels -- driver level, which apply to all instances of the
|
at two levels -- driver level, which apply to all instances of the driver
|
||||||
driver (in the event that there are more than one device installed) and
|
(in the event that there are more than one device installed) and device
|
||||||
device level, which applies only to the single specific instance.
|
level, which applies only to the single specific instance.
|
||||||
|
|
||||||
|
|
||||||
1.4.1 Driver Level Sysfs Helper Files
|
1.4.1 Driver Level Sysfs Helper Files
|
||||||
|
@ -203,6 +273,7 @@ For the driver level files, look in /sys/bus/pci/drivers/ipw2200/
|
||||||
This controls the same global as the 'debug' module parameter
|
This controls the same global as the 'debug' module parameter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1.4.2 Device Level Sysfs Helper Files
|
1.4.2 Device Level Sysfs Helper Files
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
|
@ -213,7 +284,7 @@ For the device level files, look in
|
||||||
For example:
|
For example:
|
||||||
/sys/bus/pci/drivers/ipw2200/0000:02:01.0
|
/sys/bus/pci/drivers/ipw2200/0000:02:01.0
|
||||||
|
|
||||||
For the device level files, see /sys/bus/pci/[drivers/ipw2200:
|
For the device level files, see /sys/bus/pci/drivers/ipw2200:
|
||||||
|
|
||||||
rf_kill
|
rf_kill
|
||||||
read -
|
read -
|
||||||
|
@ -231,8 +302,59 @@ For the device level files, see /sys/bus/pci/[drivers/ipw2200:
|
||||||
ucode
|
ucode
|
||||||
read-only access to the ucode version number
|
read-only access to the ucode version number
|
||||||
|
|
||||||
|
led
|
||||||
|
read -
|
||||||
|
0 = LED code disabled
|
||||||
|
1 = LED code enabled
|
||||||
|
write -
|
||||||
|
0 = Disable LED code
|
||||||
|
1 = Enable LED code
|
||||||
|
|
||||||
2. About the Version Numbers
|
NOTE: The LED code has been reported to hang some systems when
|
||||||
|
running ifconfig and is therefore disabled by default.
|
||||||
|
|
||||||
|
|
||||||
|
2. Ad-Hoc Networking
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
When using a device in an Ad-Hoc network, it is useful to understand the
|
||||||
|
sequence and requirements for the driver to be able to create, join, or
|
||||||
|
merge networks.
|
||||||
|
|
||||||
|
The following attempts to provide enough information so that you can
|
||||||
|
have a consistent experience while using the driver as a member of an
|
||||||
|
Ad-Hoc network.
|
||||||
|
|
||||||
|
2.1. Joining an Ad-Hoc Network
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
The easiest way to get onto an Ad-Hoc network is to join one that
|
||||||
|
already exists.
|
||||||
|
|
||||||
|
2.2. Creating an Ad-Hoc Network
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
An Ad-Hoc networks is created using the syntax of the Wireless tool.
|
||||||
|
|
||||||
|
For Example:
|
||||||
|
iwconfig eth1 mode ad-hoc essid testing channel 2
|
||||||
|
|
||||||
|
2.3. Merging Ad-Hoc Networks
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
3. Interaction with Wireless Tools
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
3.1 iwconfig mode
|
||||||
|
-----------------------------------------------
|
||||||
|
|
||||||
|
When configuring the mode of the adapter, all run-time configured parameters
|
||||||
|
are reset to the value used when the module was loaded. This includes
|
||||||
|
channels, rates, ESSID, etc.
|
||||||
|
|
||||||
|
|
||||||
|
4. About the Version Numbers
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
Due to the nature of open source development projects, there are
|
Due to the nature of open source development projects, there are
|
||||||
|
@ -259,11 +381,22 @@ available as quickly as possible, unknown anomalies should be expected.
|
||||||
The major version number will be incremented when significant changes
|
The major version number will be incremented when significant changes
|
||||||
are made to the driver. Currently, there are no major changes planned.
|
are made to the driver. Currently, there are no major changes planned.
|
||||||
|
|
||||||
|
5. Firmware installation
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
3. Support
|
The driver requires a firmware image, download it and extract the
|
||||||
|
files under /lib/firmware (or wherever your hotplug's firmware.agent
|
||||||
|
will look for firmware files)
|
||||||
|
|
||||||
|
The firmware can be downloaded from the following URL:
|
||||||
|
|
||||||
|
http://ipw2200.sf.net/
|
||||||
|
|
||||||
|
|
||||||
|
6. Support
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
For installation support of the 1.0.0 version, you can contact
|
For direct support of the 1.0.0 version, you can contact
|
||||||
http://supportmail.intel.com, or you can use the open source project
|
http://supportmail.intel.com, or you can use the open source project
|
||||||
support.
|
support.
|
||||||
|
|
||||||
|
@ -272,7 +405,7 @@ For general information and support, go to:
|
||||||
http://ipw2200.sf.net/
|
http://ipw2200.sf.net/
|
||||||
|
|
||||||
|
|
||||||
4. License
|
7. License
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
|
|
||||||
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
||||||
|
@ -297,4 +430,3 @@ For general information and support, go to:
|
||||||
James P. Ketrenos <ipw2100-admin@linux.intel.com>
|
James P. Ketrenos <ipw2100-admin@linux.intel.com>
|
||||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
DCCP protocol
|
||||||
|
============
|
||||||
|
|
||||||
|
Last updated: 10 November 2005
|
||||||
|
|
||||||
|
Contents
|
||||||
|
========
|
||||||
|
|
||||||
|
- Introduction
|
||||||
|
- Missing features
|
||||||
|
- Socket options
|
||||||
|
- Notes
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
Datagram Congestion Control Protocol (DCCP) is an unreliable, connection
|
||||||
|
based protocol designed to solve issues present in UDP and TCP particularly
|
||||||
|
for real time and multimedia traffic.
|
||||||
|
|
||||||
|
It has a base protocol and pluggable congestion control IDs (CCIDs).
|
||||||
|
|
||||||
|
It is at draft RFC status and the homepage for DCCP as a protocol is at:
|
||||||
|
http://www.icir.org/kohler/dcp/
|
||||||
|
|
||||||
|
Missing features
|
||||||
|
================
|
||||||
|
|
||||||
|
The DCCP implementation does not currently have all the features that are in
|
||||||
|
the draft RFC.
|
||||||
|
|
||||||
|
In particular the following are missing:
|
||||||
|
- CCID2 support
|
||||||
|
- feature negotiation
|
||||||
|
|
||||||
|
When testing against other implementations it appears that elapsed time
|
||||||
|
options are not coded compliant to the specification.
|
||||||
|
|
||||||
|
Socket options
|
||||||
|
==============
|
||||||
|
|
||||||
|
DCCP_SOCKOPT_PACKET_SIZE is used for CCID3 to set default packet size for
|
||||||
|
calculations.
|
||||||
|
|
||||||
|
DCCP_SOCKOPT_SERVICE sets the service. This is compulsory as per the
|
||||||
|
specification. If you don't set it you will get EPROTO.
|
||||||
|
|
||||||
|
Notes
|
||||||
|
=====
|
||||||
|
|
||||||
|
SELinux does not yet have support for DCCP. You will need to turn it off or
|
||||||
|
else you will get EACCES.
|
||||||
|
|
||||||
|
DCCP does not travel through NAT successfully at present. This is because
|
||||||
|
the checksum covers the psuedo-header as per TCP and UDP. It should be
|
||||||
|
relatively trivial to add Linux NAT support for DCCP.
|
|
@ -78,6 +78,11 @@ inet_peer_gc_maxtime - INTEGER
|
||||||
|
|
||||||
TCP variables:
|
TCP variables:
|
||||||
|
|
||||||
|
tcp_abc - INTEGER
|
||||||
|
Controls Appropriate Byte Count defined in RFC3465. If set to
|
||||||
|
0 then does congestion avoid once per ack. 1 is conservative
|
||||||
|
value, and 2 is more agressive.
|
||||||
|
|
||||||
tcp_syn_retries - INTEGER
|
tcp_syn_retries - INTEGER
|
||||||
Number of times initial SYNs for an active TCP connection attempt
|
Number of times initial SYNs for an active TCP connection attempt
|
||||||
will be retransmitted. Should not be higher than 255. Default value
|
will be retransmitted. Should not be higher than 255. Default value
|
||||||
|
|
|
@ -871,7 +871,7 @@ by playing with the --adjust-vma parameter to objdump.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern inline void spin_lock(spinlock_t *lp)
|
static inline void spin_lock(spinlock_t *lp)
|
||||||
{
|
{
|
||||||
a0: 18 34 lr %r3,%r4
|
a0: 18 34 lr %r3,%r4
|
||||||
a2: a7 3a 03 bc ahi %r3,956
|
a2: a7 3a 03 bc ahi %r3,956
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
CPU Scheduler implementation hints for architecture specific code
|
||||||
|
|
||||||
|
Nick Piggin, 2005
|
||||||
|
|
||||||
|
Context switch
|
||||||
|
==============
|
||||||
|
1. Runqueue locking
|
||||||
|
By default, the switch_to arch function is called with the runqueue
|
||||||
|
locked. This is usually not a problem unless switch_to may need to
|
||||||
|
take the runqueue lock. This is usually due to a wake up operation in
|
||||||
|
the context switch. See include/asm-ia64/system.h for an example.
|
||||||
|
|
||||||
|
To request the scheduler call switch_to with the runqueue unlocked,
|
||||||
|
you must `#define __ARCH_WANT_UNLOCKED_CTXSW` in a header file
|
||||||
|
(typically the one where switch_to is defined).
|
||||||
|
|
||||||
|
Unlocked context switches introduce only a very minor performance
|
||||||
|
penalty to the core scheduler implementation in the CONFIG_SMP case.
|
||||||
|
|
||||||
|
2. Interrupt status
|
||||||
|
By default, the switch_to arch function is called with interrupts
|
||||||
|
disabled. Interrupts may be enabled over the call if it is likely to
|
||||||
|
introduce a significant interrupt latency by adding the line
|
||||||
|
`#define __ARCH_WANT_INTERRUPTS_ON_CTXSW` in the same place as for
|
||||||
|
unlocked context switches. This define also implies
|
||||||
|
`__ARCH_WANT_UNLOCKED_CTXSW`. See include/asm-arm/system.h for an
|
||||||
|
example.
|
||||||
|
|
||||||
|
|
||||||
|
CPU idle
|
||||||
|
========
|
||||||
|
Your cpu_idle routines need to obey the following rules:
|
||||||
|
|
||||||
|
1. Preempt should now disabled over idle routines. Should only
|
||||||
|
be enabled to call schedule() then disabled again.
|
||||||
|
|
||||||
|
2. need_resched/TIF_NEED_RESCHED is only ever set, and will never
|
||||||
|
be cleared until the running task has called schedule(). Idle
|
||||||
|
threads need only ever query need_resched, and may never set or
|
||||||
|
clear it.
|
||||||
|
|
||||||
|
3. When cpu_idle finds (need_resched() == 'true'), it should call
|
||||||
|
schedule(). It should not call schedule() otherwise.
|
||||||
|
|
||||||
|
4. The only time interrupts need to be disabled when checking
|
||||||
|
need_resched is if we are about to sleep the processor until
|
||||||
|
the next interrupt (this doesn't provide any protection of
|
||||||
|
need_resched, it prevents losing an interrupt).
|
||||||
|
|
||||||
|
4a. Common problem with this type of sleep appears to be:
|
||||||
|
local_irq_disable();
|
||||||
|
if (!need_resched()) {
|
||||||
|
local_irq_enable();
|
||||||
|
*** resched interrupt arrives here ***
|
||||||
|
__asm__("sleep until next interrupt");
|
||||||
|
}
|
||||||
|
|
||||||
|
5. TIF_POLLING_NRFLAG can be set by idle routines that do not
|
||||||
|
need an interrupt to wake them up when need_resched goes high.
|
||||||
|
In other words, they must be periodically polling need_resched,
|
||||||
|
although it may be reasonable to do some background work or enter
|
||||||
|
a low CPU priority.
|
||||||
|
|
||||||
|
5a. If TIF_POLLING_NRFLAG is set, and we do decide to enter
|
||||||
|
an interrupt sleep, it needs to be cleared then a memory
|
||||||
|
barrier issued (followed by a test of need_resched with
|
||||||
|
interrupts disabled, as explained in 3).
|
||||||
|
|
||||||
|
arch/i386/kernel/process.c has examples of both polling and
|
||||||
|
sleeping idle functions.
|
||||||
|
|
||||||
|
|
||||||
|
Possible arch/ problems
|
||||||
|
=======================
|
||||||
|
|
||||||
|
Possible arch problems I found (and either tried to fix or didn't):
|
||||||
|
|
||||||
|
h8300 - Is such sleeping racy vs interrupts? (See #4a).
|
||||||
|
The H8/300 manual I found indicates yes, however disabling IRQs
|
||||||
|
over the sleep mean only NMIs can wake it up, so can't fix easily
|
||||||
|
without doing spin waiting.
|
||||||
|
|
||||||
|
ia64 - is safe_halt call racy vs interrupts? (does it sleep?) (See #4a)
|
||||||
|
|
||||||
|
sh64 - Is sleeping racy vs interrupts? (See #4a)
|
||||||
|
|
||||||
|
sparc - IRQs on at this point(?), change local_irq_save to _disable.
|
||||||
|
- TODO: needs secondary CPUs to disable preempt (See #1)
|
||||||
|
|
|
@ -52,8 +52,6 @@ ppa.txt
|
||||||
- info on driver for IOmega zip drive
|
- info on driver for IOmega zip drive
|
||||||
qlogicfas.txt
|
qlogicfas.txt
|
||||||
- info on driver for QLogic FASxxx based adapters
|
- info on driver for QLogic FASxxx based adapters
|
||||||
qlogicisp.txt
|
|
||||||
- info on driver for QLogic ISP 1020 based adapters
|
|
||||||
scsi-generic.txt
|
scsi-generic.txt
|
||||||
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
|
- info on the sg driver for generic (non-disk/CD/tape) SCSI devices.
|
||||||
scsi.txt
|
scsi.txt
|
||||||
|
|
|
@ -11,8 +11,7 @@ Qlogic boards:
|
||||||
* IQ-PCI-10
|
* IQ-PCI-10
|
||||||
* IQ-PCI-D
|
* IQ-PCI-D
|
||||||
|
|
||||||
is provided by the qlogicisp.c driver. Check README.qlogicisp for
|
is provided by the qla1280 driver.
|
||||||
details.
|
|
||||||
|
|
||||||
Nor does it support the PCI-Basic, which is supported by the
|
Nor does it support the PCI-Basic, which is supported by the
|
||||||
'am53c974' driver.
|
'am53c974' driver.
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
Notes for the QLogic ISP1020 PCI SCSI Driver:
|
|
||||||
|
|
||||||
This driver works well in practice, but does not support disconnect/
|
|
||||||
reconnect, which makes using it with tape drives impractical.
|
|
||||||
|
|
||||||
It should work for most host adaptors with the ISP1020 chip. The
|
|
||||||
QLogic Corporation produces several PCI SCSI adapters which should
|
|
||||||
work:
|
|
||||||
|
|
||||||
* IQ-PCI
|
|
||||||
* IQ-PCI-10
|
|
||||||
* IQ-PCI-D
|
|
||||||
|
|
||||||
This driver may work with boards containing the ISP1020A or ISP1040A
|
|
||||||
chips, but that has not been tested.
|
|
||||||
|
|
||||||
This driver will NOT work with:
|
|
||||||
|
|
||||||
* ISA or VL Bus Qlogic cards (they use the 'qlogicfas' driver)
|
|
||||||
* PCI-basic (it uses the 'am53c974' driver)
|
|
||||||
|
|
||||||
Much thanks to QLogic's tech support for providing the latest ISP1020
|
|
||||||
firmware, and for taking the time to review my code.
|
|
||||||
|
|
||||||
Erik Moe
|
|
||||||
ehm@cris.com
|
|
||||||
|
|
||||||
Revised:
|
|
||||||
Michael A. Griffith
|
|
||||||
grif@cs.ucr.edu
|
|
|
@ -83,11 +83,11 @@ with the command.
|
||||||
The timeout handler is scsi_times_out(). When a timeout occurs, this
|
The timeout handler is scsi_times_out(). When a timeout occurs, this
|
||||||
function
|
function
|
||||||
|
|
||||||
1. invokes optional hostt->eh_timedout() callback. Return value can
|
1. invokes optional hostt->eh_timed_out() callback. Return value can
|
||||||
be one of
|
be one of
|
||||||
|
|
||||||
- EH_HANDLED
|
- EH_HANDLED
|
||||||
This indicates that eh_timedout() dealt with the timeout. The
|
This indicates that eh_timed_out() dealt with the timeout. The
|
||||||
scmd is passed to __scsi_done() and thus linked into per-cpu
|
scmd is passed to __scsi_done() and thus linked into per-cpu
|
||||||
scsi_done_q. Normal command completion described in [1-2-1]
|
scsi_done_q. Normal command completion described in [1-2-1]
|
||||||
follows.
|
follows.
|
||||||
|
@ -105,7 +105,7 @@ function
|
||||||
command will time out again.
|
command will time out again.
|
||||||
|
|
||||||
- EH_NOT_HANDLED
|
- EH_NOT_HANDLED
|
||||||
This is the same as when eh_timedout() callback doesn't exist.
|
This is the same as when eh_timed_out() callback doesn't exist.
|
||||||
Step #2 is taken.
|
Step #2 is taken.
|
||||||
|
|
||||||
2. scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD) is invoked for the
|
2. scsi_eh_scmd_add(scmd, SCSI_EH_CANCEL_CMD) is invoked for the
|
||||||
|
@ -142,7 +142,7 @@ are linked on shost->eh_cmd_q.
|
||||||
Note that this does not mean lower layers are quiescent. If a LLDD
|
Note that this does not mean lower layers are quiescent. If a LLDD
|
||||||
completed a scmd with error status, the LLDD and lower layers are
|
completed a scmd with error status, the LLDD and lower layers are
|
||||||
assumed to forget about the scmd at that point. However, if a scmd
|
assumed to forget about the scmd at that point. However, if a scmd
|
||||||
has timed out, unless hostt->eh_timedout() made lower layers forget
|
has timed out, unless hostt->eh_timed_out() made lower layers forget
|
||||||
about the scmd, which currently no LLDD does, the command is still
|
about the scmd, which currently no LLDD does, the command is still
|
||||||
active as long as lower layers are concerned and completion could
|
active as long as lower layers are concerned and completion could
|
||||||
occur at any time. Of course, all such completions are ignored as the
|
occur at any time. Of course, all such completions are ignored as the
|
||||||
|
|
|
@ -346,7 +346,7 @@ Next, there is a movement to "outlaw" typedefs introducing synonyms for
|
||||||
struct tags. Both can be still found in the SCSI subsystem, but
|
struct tags. Both can be still found in the SCSI subsystem, but
|
||||||
the typedefs have been moved to a single file, scsi_typedefs.h to
|
the typedefs have been moved to a single file, scsi_typedefs.h to
|
||||||
make their future removal easier, for example:
|
make their future removal easier, for example:
|
||||||
"typedef struct scsi_host_template Scsi_Host_Template;"
|
"typedef struct scsi_cmnd Scsi_Cmnd;"
|
||||||
|
|
||||||
Also, most C99 enhancements are encouraged to the extent they are supported
|
Also, most C99 enhancements are encouraged to the extent they are supported
|
||||||
by the relevant gcc compilers. So C99 style structure and array
|
by the relevant gcc compilers. So C99 style structure and array
|
||||||
|
@ -718,7 +718,7 @@ void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
|
||||||
*
|
*
|
||||||
* Defined in: drivers/scsi/scsi.c .
|
* Defined in: drivers/scsi/scsi.c .
|
||||||
**/
|
**/
|
||||||
int scsi_track_queue_full(Scsi_Device *sdev, int depth)
|
int scsi_track_queue_full(struct scsi_device *sdev, int depth)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -8,7 +8,7 @@ V4L original API</a>
|
||||||
</td><td>
|
</td><td>
|
||||||
Obsoleted by V4L2 API
|
Obsoleted by V4L2 API
|
||||||
</td></tr><tr><td>
|
</td></tr><tr><td>
|
||||||
<A HREF=http://www.linuxtv.org/downloads/video4linux/API/V4L2_API.html>
|
<A HREF=http://www.linuxtv.org/downloads/video4linux/API/V4L2_API>
|
||||||
V4L2 API</a>
|
V4L2 API</a>
|
||||||
</td><td>
|
</td><td>
|
||||||
Should be used for new projects
|
Should be used for new projects
|
||||||
|
|
|
@ -1,137 +1,142 @@
|
||||||
card=0 - *** UNKNOWN/GENERIC ***
|
0 -> *** UNKNOWN/GENERIC ***
|
||||||
card=1 - MIRO PCTV
|
1 -> MIRO PCTV
|
||||||
card=2 - Hauppauge (bt848)
|
2 -> Hauppauge (bt848)
|
||||||
card=3 - STB, Gateway P/N 6000699 (bt848)
|
3 -> STB, Gateway P/N 6000699 (bt848)
|
||||||
card=4 - Intel Create and Share PCI/ Smart Video Recorder III
|
4 -> Intel Create and Share PCI/ Smart Video Recorder III
|
||||||
card=5 - Diamond DTV2000
|
5 -> Diamond DTV2000
|
||||||
card=6 - AVerMedia TVPhone
|
6 -> AVerMedia TVPhone
|
||||||
card=7 - MATRIX-Vision MV-Delta
|
7 -> MATRIX-Vision MV-Delta
|
||||||
card=8 - Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26
|
8 -> Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26
|
||||||
card=9 - IMS/IXmicro TurboTV
|
9 -> IMS/IXmicro TurboTV
|
||||||
card=10 - Hauppauge (bt878)
|
10 -> Hauppauge (bt878) [0070:13eb,0070:3900,2636:10b4]
|
||||||
card=11 - MIRO PCTV pro
|
11 -> MIRO PCTV pro
|
||||||
card=12 - ADS Technologies Channel Surfer TV (bt848)
|
12 -> ADS Technologies Channel Surfer TV (bt848)
|
||||||
card=13 - AVerMedia TVCapture 98
|
13 -> AVerMedia TVCapture 98 [1461:0002,1461:0004,1461:0300]
|
||||||
card=14 - Aimslab Video Highway Xtreme (VHX)
|
14 -> Aimslab Video Highway Xtreme (VHX)
|
||||||
card=15 - Zoltrix TV-Max
|
15 -> Zoltrix TV-Max [a1a0:a0fc]
|
||||||
card=16 - Prolink Pixelview PlayTV (bt878)
|
16 -> Prolink Pixelview PlayTV (bt878)
|
||||||
card=17 - Leadtek WinView 601
|
17 -> Leadtek WinView 601
|
||||||
card=18 - AVEC Intercapture
|
18 -> AVEC Intercapture
|
||||||
card=19 - Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)
|
19 -> Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)
|
||||||
card=20 - CEI Raffles Card
|
20 -> CEI Raffles Card
|
||||||
card=21 - Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50
|
21 -> Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50
|
||||||
card=22 - Askey CPH050/ Phoebe Tv Master + FM
|
22 -> Askey CPH050/ Phoebe Tv Master + FM [14ff:3002]
|
||||||
card=23 - Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878
|
23 -> Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878 [14c7:0101]
|
||||||
card=24 - Askey CPH05X/06X (bt878) [many vendors]
|
24 -> Askey CPH05X/06X (bt878) [many vendors] [144f:3002,144f:3005,144f:5000,14ff:3000]
|
||||||
card=25 - Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar
|
25 -> Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar
|
||||||
card=26 - Hauppauge WinCam newer (bt878)
|
26 -> Hauppauge WinCam newer (bt878)
|
||||||
card=27 - Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50
|
27 -> Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50
|
||||||
card=28 - Terratec TerraTV+ Version 1.1 (bt878)
|
28 -> Terratec TerraTV+ Version 1.1 (bt878) [153b:1127,1852:1852]
|
||||||
card=29 - Imagenation PXC200
|
29 -> Imagenation PXC200 [1295:200a]
|
||||||
card=30 - Lifeview FlyVideo 98 LR50
|
30 -> Lifeview FlyVideo 98 LR50 [1f7f:1850]
|
||||||
card=31 - Formac iProTV, Formac ProTV I (bt848)
|
31 -> Formac iProTV, Formac ProTV I (bt848)
|
||||||
card=32 - Intel Create and Share PCI/ Smart Video Recorder III
|
32 -> Intel Create and Share PCI/ Smart Video Recorder III
|
||||||
card=33 - Terratec TerraTValue Version Bt878
|
33 -> Terratec TerraTValue Version Bt878 [153b:1117,153b:1118,153b:1119,153b:111a,153b:1134,153b:5018]
|
||||||
card=34 - Leadtek WinFast 2000/ WinFast 2000 XP
|
34 -> Leadtek WinFast 2000/ WinFast 2000 XP [107d:6606,107d:6609,6606:217d,f6ff:fff6]
|
||||||
card=35 - Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II
|
35 -> Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II [1851:1850,1851:a050]
|
||||||
card=36 - Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner
|
36 -> Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner [1852:1852]
|
||||||
card=37 - Prolink PixelView PlayTV pro
|
37 -> Prolink PixelView PlayTV pro
|
||||||
card=38 - Askey CPH06X TView99
|
38 -> Askey CPH06X TView99 [144f:3000,144f:a005,a04f:a0fc]
|
||||||
card=39 - Pinnacle PCTV Studio/Rave
|
39 -> Pinnacle PCTV Studio/Rave [11bd:0012,bd11:1200,bd11:ff00,11bd:ff12]
|
||||||
card=40 - STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100
|
40 -> STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100 [10b4:2636,10b4:2645,121a:3060]
|
||||||
card=41 - AVerMedia TVPhone 98
|
41 -> AVerMedia TVPhone 98 [1461:0001,1461:0003]
|
||||||
card=42 - ProVideo PV951
|
42 -> ProVideo PV951 [aa0c:146c]
|
||||||
card=43 - Little OnAir TV
|
43 -> Little OnAir TV
|
||||||
card=44 - Sigma TVII-FM
|
44 -> Sigma TVII-FM
|
||||||
card=45 - MATRIX-Vision MV-Delta 2
|
45 -> MATRIX-Vision MV-Delta 2
|
||||||
card=46 - Zoltrix Genie TV/FM
|
46 -> Zoltrix Genie TV/FM [15b0:4000,15b0:400a,15b0:400d,15b0:4010,15b0:4016]
|
||||||
card=47 - Terratec TV/Radio+
|
47 -> Terratec TV/Radio+ [153b:1123]
|
||||||
card=48 - Askey CPH03x/ Dynalink Magic TView
|
48 -> Askey CPH03x/ Dynalink Magic TView
|
||||||
card=49 - IODATA GV-BCTV3/PCI
|
49 -> IODATA GV-BCTV3/PCI [10fc:4020]
|
||||||
card=50 - Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP
|
50 -> Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP
|
||||||
card=51 - Eagle Wireless Capricorn2 (bt878A)
|
51 -> Eagle Wireless Capricorn2 (bt878A)
|
||||||
card=52 - Pinnacle PCTV Studio Pro
|
52 -> Pinnacle PCTV Studio Pro
|
||||||
card=53 - Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS
|
53 -> Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS
|
||||||
card=54 - Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]
|
54 -> Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]
|
||||||
card=55 - Askey CPH031/ BESTBUY Easy TV
|
55 -> Askey CPH031/ BESTBUY Easy TV
|
||||||
card=56 - Lifeview FlyVideo 98FM LR50
|
56 -> Lifeview FlyVideo 98FM LR50 [a051:41a0]
|
||||||
card=57 - GrandTec 'Grand Video Capture' (Bt848)
|
57 -> GrandTec 'Grand Video Capture' (Bt848) [4344:4142]
|
||||||
card=58 - Askey CPH060/ Phoebe TV Master Only (No FM)
|
58 -> Askey CPH060/ Phoebe TV Master Only (No FM)
|
||||||
card=59 - Askey CPH03x TV Capturer
|
59 -> Askey CPH03x TV Capturer
|
||||||
card=60 - Modular Technology MM100PCTV
|
60 -> Modular Technology MM100PCTV
|
||||||
card=61 - AG Electronics GMV1
|
61 -> AG Electronics GMV1 [15cb:0101]
|
||||||
card=62 - Askey CPH061/ BESTBUY Easy TV (bt878)
|
62 -> Askey CPH061/ BESTBUY Easy TV (bt878)
|
||||||
card=63 - ATI TV-Wonder
|
63 -> ATI TV-Wonder [1002:0001]
|
||||||
card=64 - ATI TV-Wonder VE
|
64 -> ATI TV-Wonder VE [1002:0003]
|
||||||
card=65 - Lifeview FlyVideo 2000S LR90
|
65 -> Lifeview FlyVideo 2000S LR90
|
||||||
card=66 - Terratec TValueRadio
|
66 -> Terratec TValueRadio [153b:1135,153b:ff3b]
|
||||||
card=67 - IODATA GV-BCTV4/PCI
|
67 -> IODATA GV-BCTV4/PCI [10fc:4050]
|
||||||
card=68 - 3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)
|
68 -> 3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA) [121a:3000,10b4:2637]
|
||||||
card=69 - Active Imaging AIMMS
|
69 -> Active Imaging AIMMS
|
||||||
card=70 - Prolink Pixelview PV-BT878P+ (Rev.4C,8E)
|
70 -> Prolink Pixelview PV-BT878P+ (Rev.4C,8E)
|
||||||
card=71 - Lifeview FlyVideo 98EZ (capture only) LR51
|
71 -> Lifeview FlyVideo 98EZ (capture only) LR51 [1851:1851]
|
||||||
card=72 - Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)
|
72 -> Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM) [1554:4011]
|
||||||
card=73 - Sensoray 311
|
73 -> Sensoray 311 [6000:0311]
|
||||||
card=74 - RemoteVision MX (RV605)
|
74 -> RemoteVision MX (RV605)
|
||||||
card=75 - Powercolor MTV878/ MTV878R/ MTV878F
|
75 -> Powercolor MTV878/ MTV878R/ MTV878F
|
||||||
card=76 - Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)
|
76 -> Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP) [0e11:0079]
|
||||||
card=77 - GrandTec Multi Capture Card (Bt878)
|
77 -> GrandTec Multi Capture Card (Bt878)
|
||||||
card=78 - Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF
|
78 -> Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF [0a01:17de]
|
||||||
card=79 - DSP Design TCVIDEO
|
79 -> DSP Design TCVIDEO
|
||||||
card=80 - Hauppauge WinTV PVR
|
80 -> Hauppauge WinTV PVR [0070:4500]
|
||||||
card=81 - IODATA GV-BCTV5/PCI
|
81 -> IODATA GV-BCTV5/PCI [10fc:4070,10fc:d018]
|
||||||
card=82 - Osprey 100/150 (878)
|
82 -> Osprey 100/150 (878) [0070:ff00]
|
||||||
card=83 - Osprey 100/150 (848)
|
83 -> Osprey 100/150 (848)
|
||||||
card=84 - Osprey 101 (848)
|
84 -> Osprey 101 (848)
|
||||||
card=85 - Osprey 101/151
|
85 -> Osprey 101/151
|
||||||
card=86 - Osprey 101/151 w/ svid
|
86 -> Osprey 101/151 w/ svid
|
||||||
card=87 - Osprey 200/201/250/251
|
87 -> Osprey 200/201/250/251
|
||||||
card=88 - Osprey 200/250
|
88 -> Osprey 200/250 [0070:ff01]
|
||||||
card=89 - Osprey 210/220
|
89 -> Osprey 210/220
|
||||||
card=90 - Osprey 500
|
90 -> Osprey 500 [0070:ff02]
|
||||||
card=91 - Osprey 540
|
91 -> Osprey 540 [0070:ff04]
|
||||||
card=92 - Osprey 2000
|
92 -> Osprey 2000 [0070:ff03]
|
||||||
card=93 - IDS Eagle
|
93 -> IDS Eagle
|
||||||
card=94 - Pinnacle PCTV Sat
|
94 -> Pinnacle PCTV Sat [11bd:001c]
|
||||||
card=95 - Formac ProTV II (bt878)
|
95 -> Formac ProTV II (bt878)
|
||||||
card=96 - MachTV
|
96 -> MachTV
|
||||||
card=97 - Euresys Picolo
|
97 -> Euresys Picolo
|
||||||
card=98 - ProVideo PV150
|
98 -> ProVideo PV150 [aa00:1460,aa01:1461,aa02:1462,aa03:1463,aa04:1464,aa05:1465,aa06:1466,aa07:1467]
|
||||||
card=99 - AD-TVK503
|
99 -> AD-TVK503
|
||||||
card=100 - Hercules Smart TV Stereo
|
100 -> Hercules Smart TV Stereo
|
||||||
card=101 - Pace TV & Radio Card
|
101 -> Pace TV & Radio Card
|
||||||
card=102 - IVC-200
|
102 -> IVC-200 [0000:a155,0001:a155,0002:a155,0003:a155,0100:a155,0101:a155,0102:a155,0103:a155]
|
||||||
card=103 - Grand X-Guard / Trust 814PCI
|
103 -> Grand X-Guard / Trust 814PCI [0304:0102]
|
||||||
card=104 - Nebula Electronics DigiTV
|
104 -> Nebula Electronics DigiTV [0071:0101]
|
||||||
card=105 - ProVideo PV143
|
105 -> ProVideo PV143 [aa00:1430,aa00:1431,aa00:1432,aa00:1433,aa03:1433]
|
||||||
card=106 - PHYTEC VD-009-X1 MiniDIN (bt878)
|
106 -> PHYTEC VD-009-X1 MiniDIN (bt878)
|
||||||
card=107 - PHYTEC VD-009-X1 Combi (bt878)
|
107 -> PHYTEC VD-009-X1 Combi (bt878)
|
||||||
card=108 - PHYTEC VD-009 MiniDIN (bt878)
|
108 -> PHYTEC VD-009 MiniDIN (bt878)
|
||||||
card=109 - PHYTEC VD-009 Combi (bt878)
|
109 -> PHYTEC VD-009 Combi (bt878)
|
||||||
card=110 - IVC-100
|
110 -> IVC-100 [ff00:a132]
|
||||||
card=111 - IVC-120G
|
111 -> IVC-120G [ff00:a182,ff01:a182,ff02:a182,ff03:a182,ff04:a182,ff05:a182,ff06:a182,ff07:a182,ff08:a182,ff09:a182,ff0a:a182,ff0b:a182,ff0c:a182,ff0d:a182,ff0e:a182,ff0f:a182]
|
||||||
card=112 - pcHDTV HD-2000 TV
|
112 -> pcHDTV HD-2000 TV [7063:2000]
|
||||||
card=113 - Twinhan DST + clones
|
113 -> Twinhan DST + clones [11bd:0026,1822:0001,270f:fc00]
|
||||||
card=114 - Winfast VC100
|
114 -> Winfast VC100 [107d:6607]
|
||||||
card=115 - Teppro TEV-560/InterVision IV-560
|
115 -> Teppro TEV-560/InterVision IV-560
|
||||||
card=116 - SIMUS GVC1100
|
116 -> SIMUS GVC1100 [aa6a:82b2]
|
||||||
card=117 - NGS NGSTV+
|
117 -> NGS NGSTV+
|
||||||
card=118 - LMLBT4
|
118 -> LMLBT4
|
||||||
card=119 - Tekram M205 PRO
|
119 -> Tekram M205 PRO
|
||||||
card=120 - Conceptronic CONTVFMi
|
120 -> Conceptronic CONTVFMi
|
||||||
card=121 - Euresys Picolo Tetra
|
121 -> Euresys Picolo Tetra [1805:0105,1805:0106,1805:0107,1805:0108]
|
||||||
card=122 - Spirit TV Tuner
|
122 -> Spirit TV Tuner
|
||||||
card=123 - AVerMedia AVerTV DVB-T 771
|
123 -> AVerMedia AVerTV DVB-T 771 [1461:0771]
|
||||||
card=124 - AverMedia AverTV DVB-T 761
|
124 -> AverMedia AverTV DVB-T 761 [1461:0761]
|
||||||
card=125 - MATRIX Vision Sigma-SQ
|
125 -> MATRIX Vision Sigma-SQ
|
||||||
card=126 - MATRIX Vision Sigma-SLC
|
126 -> MATRIX Vision Sigma-SLC
|
||||||
card=127 - APAC Viewcomp 878(AMAX)
|
127 -> APAC Viewcomp 878(AMAX)
|
||||||
card=128 - DViCO FusionHDTV DVB-T Lite
|
128 -> DViCO FusionHDTV DVB-T Lite [18ac:db10]
|
||||||
card=129 - V-Gear MyVCD
|
129 -> V-Gear MyVCD
|
||||||
card=130 - Super TV Tuner
|
130 -> Super TV Tuner
|
||||||
card=131 - Tibet Systems 'Progress DVR' CS16
|
131 -> Tibet Systems 'Progress DVR' CS16
|
||||||
card=132 - Kodicom 4400R (master)
|
132 -> Kodicom 4400R (master)
|
||||||
card=133 - Kodicom 4400R (slave)
|
133 -> Kodicom 4400R (slave)
|
||||||
card=134 - Adlink RTV24
|
134 -> Adlink RTV24
|
||||||
card=135 - DViCO FusionHDTV 5 Lite
|
135 -> DViCO FusionHDTV 5 Lite [18ac:d500]
|
||||||
card=136 - Acorp Y878F
|
136 -> Acorp Y878F [9511:1540]
|
||||||
|
137 -> Conceptronic CTVFMi v2
|
||||||
|
138 -> Prolink Pixelview PV-BT878P+ (Rev.2E)
|
||||||
|
139 -> Prolink PixelView PlayTV MPEG2 PV-M4900
|
||||||
|
140 -> Osprey 440 [0070:ff07]
|
||||||
|
141 -> Asound Skyeye PCTV
|
||||||
|
|
|
@ -1,32 +1,37 @@
|
||||||
card=0 - UNKNOWN/GENERIC
|
0 -> UNKNOWN/GENERIC
|
||||||
card=1 - Hauppauge WinTV 34xxx models
|
1 -> Hauppauge WinTV 34xxx models [0070:3400,0070:3401]
|
||||||
card=2 - GDI Black Gold
|
2 -> GDI Black Gold [14c7:0106,14c7:0107]
|
||||||
card=3 - PixelView
|
3 -> PixelView [1554:4811]
|
||||||
card=4 - ATI TV Wonder Pro
|
4 -> ATI TV Wonder Pro [1002:00f8]
|
||||||
card=5 - Leadtek Winfast 2000XP Expert
|
5 -> Leadtek Winfast 2000XP Expert [107d:6611,107d:6613]
|
||||||
card=6 - AverTV Studio 303 (M126)
|
6 -> AverTV Studio 303 (M126) [1461:000b]
|
||||||
card=7 - MSI TV-@nywhere Master
|
7 -> MSI TV-@nywhere Master [1462:8606]
|
||||||
card=8 - Leadtek Winfast DV2000
|
8 -> Leadtek Winfast DV2000 [107d:6620]
|
||||||
card=9 - Leadtek PVR 2000
|
9 -> Leadtek PVR 2000 [107d:663b,107d:663C]
|
||||||
card=10 - IODATA GV-VCP3/PCI
|
10 -> IODATA GV-VCP3/PCI [10fc:d003]
|
||||||
card=11 - Prolink PlayTV PVR
|
11 -> Prolink PlayTV PVR
|
||||||
card=12 - ASUS PVR-416
|
12 -> ASUS PVR-416 [1043:4823]
|
||||||
card=13 - MSI TV-@nywhere
|
13 -> MSI TV-@nywhere
|
||||||
card=14 - KWorld/VStream XPert DVB-T
|
14 -> KWorld/VStream XPert DVB-T [17de:08a6]
|
||||||
card=15 - DViCO FusionHDTV DVB-T1
|
15 -> DViCO FusionHDTV DVB-T1 [18ac:db00]
|
||||||
card=16 - KWorld LTV883RF
|
16 -> KWorld LTV883RF
|
||||||
card=17 - DViCO FusionHDTV 3 Gold-Q
|
17 -> DViCO FusionHDTV 3 Gold-Q [18ac:d810]
|
||||||
card=18 - Hauppauge Nova-T DVB-T
|
18 -> Hauppauge Nova-T DVB-T [0070:9002]
|
||||||
card=19 - Conexant DVB-T reference design
|
19 -> Conexant DVB-T reference design [14f1:0187]
|
||||||
card=20 - Provideo PV259
|
20 -> Provideo PV259 [1540:2580]
|
||||||
card=21 - DViCO FusionHDTV DVB-T Plus
|
21 -> DViCO FusionHDTV DVB-T Plus [18ac:db10]
|
||||||
card=22 - digitalnow DNTV Live! DVB-T
|
22 -> pcHDTV HD3000 HDTV [7063:3000]
|
||||||
card=23 - pcHDTV HD3000 HDTV
|
23 -> digitalnow DNTV Live! DVB-T [17de:a8a6]
|
||||||
card=24 - Hauppauge WinTV 28xxx (Roslyn) models
|
24 -> Hauppauge WinTV 28xxx (Roslyn) models [0070:2801]
|
||||||
card=25 - Digital-Logic MICROSPACE Entertainment Center (MEC)
|
25 -> Digital-Logic MICROSPACE Entertainment Center (MEC) [14f1:0342]
|
||||||
card=26 - IODATA GV/BCTV7E
|
26 -> IODATA GV/BCTV7E [10fc:d035]
|
||||||
card=27 - PixelView PlayTV Ultra Pro (Stereo)
|
27 -> PixelView PlayTV Ultra Pro (Stereo)
|
||||||
card=28 - DViCO FusionHDTV 3 Gold-T
|
28 -> DViCO FusionHDTV 3 Gold-T [18ac:d820]
|
||||||
card=29 - ADS Tech Instant TV DVB-T PCI
|
29 -> ADS Tech Instant TV DVB-T PCI [1421:0334]
|
||||||
card=30 - TerraTec Cinergy 1400 DVB-T
|
30 -> TerraTec Cinergy 1400 DVB-T [153b:1166]
|
||||||
card=31 - DViCO FusionHDTV 5 Gold
|
31 -> DViCO FusionHDTV 5 Gold [18ac:d500]
|
||||||
|
32 -> AverMedia UltraTV Media Center PCI 550 [1461:8011]
|
||||||
|
33 -> Kworld V-Stream Xpert DVD
|
||||||
|
34 -> ATI HDTV Wonder [1002:a101]
|
||||||
|
35 -> WinFast DTV1000-T [107d:665f]
|
||||||
|
36 -> AVerTV 303 (M126) [1461:000a]
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
0 -> Unknown EM2800 video grabber (em2800) [eb1a:2800]
|
||||||
|
1 -> Unknown EM2820/2840 video grabber (em2820/em2840)
|
||||||
|
2 -> Terratec Cinergy 250 USB (em2820/em2840) [0ccd:0036]
|
||||||
|
3 -> Pinnacle PCTV USB 2 (em2820/em2840) [2304:0208]
|
||||||
|
4 -> Hauppauge WinTV USB 2 (em2820/em2840) [2040:4200]
|
||||||
|
5 -> MSI VOX USB 2.0 (em2820/em2840) [eb1a:2820]
|
||||||
|
6 -> Terratec Cinergy 200 USB (em2800)
|
||||||
|
7 -> Leadtek Winfast USB II (em2800)
|
||||||
|
8 -> Kworld USB2800 (em2800)
|
||||||
|
9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207]
|
|
@ -6,10 +6,10 @@
|
||||||
5 -> SKNet Monster TV [1131:4e85]
|
5 -> SKNet Monster TV [1131:4e85]
|
||||||
6 -> Tevion MD 9717
|
6 -> Tevion MD 9717
|
||||||
7 -> KNC One TV-Station RDS / Typhoon TV Tuner RDS [1131:fe01,1894:fe01]
|
7 -> KNC One TV-Station RDS / Typhoon TV Tuner RDS [1131:fe01,1894:fe01]
|
||||||
8 -> Terratec Cinergy 400 TV [153B:1142]
|
8 -> Terratec Cinergy 400 TV [153b:1142]
|
||||||
9 -> Medion 5044
|
9 -> Medion 5044
|
||||||
10 -> Kworld/KuroutoShikou SAA7130-TVPCI
|
10 -> Kworld/KuroutoShikou SAA7130-TVPCI
|
||||||
11 -> Terratec Cinergy 600 TV [153B:1143]
|
11 -> Terratec Cinergy 600 TV [153b:1143]
|
||||||
12 -> Medion 7134 [16be:0003]
|
12 -> Medion 7134 [16be:0003]
|
||||||
13 -> Typhoon TV+Radio 90031
|
13 -> Typhoon TV+Radio 90031
|
||||||
14 -> ELSA EX-VISION 300TV [1048:226b]
|
14 -> ELSA EX-VISION 300TV [1048:226b]
|
||||||
|
@ -36,8 +36,8 @@
|
||||||
35 -> AverMedia AverTV Studio 305 [1461:2115]
|
35 -> AverMedia AverTV Studio 305 [1461:2115]
|
||||||
36 -> UPMOST PURPLE TV [12ab:0800]
|
36 -> UPMOST PURPLE TV [12ab:0800]
|
||||||
37 -> Items MuchTV Plus / IT-005
|
37 -> Items MuchTV Plus / IT-005
|
||||||
38 -> Terratec Cinergy 200 TV [153B:1152]
|
38 -> Terratec Cinergy 200 TV [153b:1152]
|
||||||
39 -> LifeView FlyTV Platinum Mini [5168:0212]
|
39 -> LifeView FlyTV Platinum Mini [5168:0212,4e42:0212]
|
||||||
40 -> Compro VideoMate TV PVR/FM [185b:c100]
|
40 -> Compro VideoMate TV PVR/FM [185b:c100]
|
||||||
41 -> Compro VideoMate TV Gold+ [185b:c100]
|
41 -> Compro VideoMate TV Gold+ [185b:c100]
|
||||||
42 -> Sabrent SBT-TVFM (saa7130)
|
42 -> Sabrent SBT-TVFM (saa7130)
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
45 -> Avermedia AVerTV Studio 307 [1461:9715]
|
45 -> Avermedia AVerTV Studio 307 [1461:9715]
|
||||||
46 -> AVerMedia Cardbus TV/Radio (E500) [1461:d6ee]
|
46 -> AVerMedia Cardbus TV/Radio (E500) [1461:d6ee]
|
||||||
47 -> Terratec Cinergy 400 mobile [153b:1162]
|
47 -> Terratec Cinergy 400 mobile [153b:1162]
|
||||||
48 -> Terratec Cinergy 600 TV MK3 [153B:1158]
|
48 -> Terratec Cinergy 600 TV MK3 [153b:1158]
|
||||||
49 -> Compro VideoMate Gold+ Pal [185b:c200]
|
49 -> Compro VideoMate Gold+ Pal [185b:c200]
|
||||||
50 -> Pinnacle PCTV 300i DVB-T + PAL [11bd:002d]
|
50 -> Pinnacle PCTV 300i DVB-T + PAL [11bd:002d]
|
||||||
51 -> ProVideo PV952 [1540:9524]
|
51 -> ProVideo PV952 [1540:9524]
|
||||||
|
@ -56,12 +56,27 @@
|
||||||
55 -> LifeView FlyDVB-T DUO [5168:0502,5168:0306]
|
55 -> LifeView FlyDVB-T DUO [5168:0502,5168:0306]
|
||||||
56 -> Avermedia AVerTV 307 [1461:a70a]
|
56 -> Avermedia AVerTV 307 [1461:a70a]
|
||||||
57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
|
57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
|
||||||
58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0370]
|
58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0370,1421:1370]
|
||||||
59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
|
59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
|
||||||
60 -> Typhoon DVB-T Duo Digital/Analog Cardbus [4e42:0502]
|
60 -> Typhoon DVB-T Duo Digital/Analog Cardbus [4e42:0502]
|
||||||
61 -> Philips TOUGH DVB-T reference design [1131:2004]
|
61 -> Philips TOUGH DVB-T reference design [1131:2004]
|
||||||
62 -> Compro VideoMate TV Gold+II
|
62 -> Compro VideoMate TV Gold+II
|
||||||
63 -> Kworld Xpert TV PVR7134
|
63 -> Kworld Xpert TV PVR7134
|
||||||
64 -> FlyTV mini Asus Digimatrix [1043:0210,1043:0210]
|
64 -> FlyTV mini Asus Digimatrix [1043:0210]
|
||||||
65 -> V-Stream Studio TV Terminator
|
65 -> V-Stream Studio TV Terminator
|
||||||
66 -> Yuan TUN-900 (saa7135)
|
66 -> Yuan TUN-900 (saa7135)
|
||||||
|
67 -> Beholder BeholdTV 409 FM [0000:4091]
|
||||||
|
68 -> GoTView 7135 PCI [5456:7135]
|
||||||
|
69 -> Philips EUROPA V3 reference design [1131:2004]
|
||||||
|
70 -> Compro Videomate DVB-T300 [185b:c900]
|
||||||
|
71 -> Compro Videomate DVB-T200 [185b:c901]
|
||||||
|
72 -> RTD Embedded Technologies VFG7350 [1435:7350]
|
||||||
|
73 -> RTD Embedded Technologies VFG7330 [1435:7330]
|
||||||
|
74 -> LifeView FlyTV Platinum Mini2 [14c0:1212]
|
||||||
|
75 -> AVerMedia AVerTVHD MCE A180 [1461:1044]
|
||||||
|
76 -> SKNet MonsterTV Mobile [1131:4ee9]
|
||||||
|
77 -> Pinnacle PCTV 110i (saa7133) [11bd:002e]
|
||||||
|
78 -> ASUSTeK P7131 Dual [1043:4862]
|
||||||
|
79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B)
|
||||||
|
80 -> ASUS Digimatrix TV [1043:0210]
|
||||||
|
81 -> Philips Tiger reference design [1131:2018]
|
||||||
|
|
|
@ -53,7 +53,7 @@ tuner=51 - Philips PAL/SECAM_D (FM 1256 I-H3)
|
||||||
tuner=52 - Thomson DDT 7610 (ATSC/NTSC)
|
tuner=52 - Thomson DDT 7610 (ATSC/NTSC)
|
||||||
tuner=53 - Philips FQ1286
|
tuner=53 - Philips FQ1286
|
||||||
tuner=54 - tda8290+75
|
tuner=54 - tda8290+75
|
||||||
tuner=55 - LG PAL (TAPE series)
|
tuner=55 - TCL 2002MB
|
||||||
tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4)
|
tuner=56 - Philips PAL/SECAM multi (FQ1216AME MK4)
|
||||||
tuner=57 - Philips FQ1236A MK4
|
tuner=57 - Philips FQ1236A MK4
|
||||||
tuner=58 - Ymec TVision TVF-8531MF/8831MF/8731MF
|
tuner=58 - Ymec TVision TVF-8531MF/8831MF/8731MF
|
||||||
|
@ -65,3 +65,5 @@ tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner
|
||||||
tuner=64 - LG TDVS-H062F/TUA6034
|
tuner=64 - LG TDVS-H062F/TUA6034
|
||||||
tuner=65 - Ymec TVF66T5-B/DFF
|
tuner=65 - Ymec TVF66T5-B/DFF
|
||||||
tuner=66 - LG NTSC (TALN mini series)
|
tuner=66 - LG NTSC (TALN mini series)
|
||||||
|
tuner=67 - Philips TD1316 Hybrid Tuner
|
||||||
|
tuner=68 - Philips TUV1236D ATSC/NTSC dual in
|
||||||
|
|
21
MAINTAINERS
21
MAINTAINERS
|
@ -707,7 +707,7 @@ DCCP PROTOCOL
|
||||||
P: Arnaldo Carvalho de Melo
|
P: Arnaldo Carvalho de Melo
|
||||||
M: acme@mandriva.com
|
M: acme@mandriva.com
|
||||||
L: dccp@vger.kernel.org
|
L: dccp@vger.kernel.org
|
||||||
W: http://www.wlug.org.nz/DCCP
|
W: http://linux-net.osdl.org/index.php/DCCP
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
DECnet NETWORK LAYER
|
DECnet NETWORK LAYER
|
||||||
|
@ -1330,6 +1330,24 @@ M: john.ronciak@intel.com
|
||||||
W: http://sourceforge.net/projects/e1000/
|
W: http://sourceforge.net/projects/e1000/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
|
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
|
||||||
|
P: Yi Zhu
|
||||||
|
M: yi.zhu@intel.com
|
||||||
|
P: James Ketrenos
|
||||||
|
M: jketreno@linux.intel.com
|
||||||
|
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
||||||
|
W: http://ipw2100.sourceforge.net
|
||||||
|
S: Supported
|
||||||
|
|
||||||
|
INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
|
||||||
|
P: Yi Zhu
|
||||||
|
M: yi.zhu@intel.com
|
||||||
|
P: James Ketrenos
|
||||||
|
M: jketreno@linux.intel.com
|
||||||
|
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
||||||
|
W: http://ipw2200.sourceforge.net
|
||||||
|
S: Supported
|
||||||
|
|
||||||
IOC3 DRIVER
|
IOC3 DRIVER
|
||||||
P: Ralf Baechle
|
P: Ralf Baechle
|
||||||
M: ralf@linux-mips.org
|
M: ralf@linux-mips.org
|
||||||
|
@ -1970,7 +1988,6 @@ PKTCDVD DRIVER
|
||||||
P: Peter Osterlund
|
P: Peter Osterlund
|
||||||
M: petero2@telia.com
|
M: petero2@telia.com
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
L: packet-writing@suse.com
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
POSIX CLOCKS and TIMERS
|
POSIX CLOCKS and TIMERS
|
||||||
|
|
11
Makefile
11
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 14
|
SUBLEVEL = 15
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =-rc1
|
||||||
NAME=Affluent Albatross
|
NAME=Affluent Albatross
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -168,7 +168,8 @@ KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(LOCALVERSION)
|
||||||
|
|
||||||
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
|
SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
|
||||||
-e s/arm.*/arm/ -e s/sa110/arm/ \
|
-e s/arm.*/arm/ -e s/sa110/arm/ \
|
||||||
-e s/s390x/s390/ -e s/parisc64/parisc/ )
|
-e s/s390x/s390/ -e s/parisc64/parisc/ \
|
||||||
|
-e s/ppc64/powerpc/ )
|
||||||
|
|
||||||
# Cross compiling and selecting different set of gcc/bin-utils
|
# Cross compiling and selecting different set of gcc/bin-utils
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
@ -347,7 +348,7 @@ AFLAGS_KERNEL =
|
||||||
# Needed to be compatible with the O= option
|
# Needed to be compatible with the O= option
|
||||||
LINUXINCLUDE := -Iinclude \
|
LINUXINCLUDE := -Iinclude \
|
||||||
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
|
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) \
|
||||||
-imacros include/linux/autoconf.h
|
-include include/linux/autoconf.h
|
||||||
|
|
||||||
CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
|
CPPFLAGS := -D__KERNEL__ $(LINUXINCLUDE)
|
||||||
|
|
||||||
|
@ -407,7 +408,7 @@ outputmakefile:
|
||||||
# of make so .config is not included in this case either (for *config).
|
# of make so .config is not included in this case either (for *config).
|
||||||
|
|
||||||
no-dot-config-targets := clean mrproper distclean \
|
no-dot-config-targets := clean mrproper distclean \
|
||||||
cscope TAGS tags help %docs check%
|
cscope TAGS tags help %docs check% kernelrelease
|
||||||
|
|
||||||
config-targets := 0
|
config-targets := 0
|
||||||
mixed-targets := 0
|
mixed-targets := 0
|
||||||
|
|
|
@ -43,21 +43,17 @@
|
||||||
#include "proto.h"
|
#include "proto.h"
|
||||||
#include "pci_impl.h"
|
#include "pci_impl.h"
|
||||||
|
|
||||||
void default_idle(void)
|
|
||||||
{
|
|
||||||
barrier();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
cpu_idle(void)
|
cpu_idle(void)
|
||||||
{
|
{
|
||||||
|
set_thread_flag(TIF_POLLING_NRFLAG);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
void (*idle)(void) = default_idle;
|
|
||||||
/* FIXME -- EV6 and LCA45 know how to power down
|
/* FIXME -- EV6 and LCA45 know how to power down
|
||||||
the CPU. */
|
the CPU. */
|
||||||
|
|
||||||
while (!need_resched())
|
while (!need_resched())
|
||||||
idle();
|
cpu_relax();
|
||||||
schedule();
|
schedule();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -239,6 +239,8 @@ source "arch/arm/plat-omap/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-omap1/Kconfig"
|
source "arch/arm/mach-omap1/Kconfig"
|
||||||
|
|
||||||
|
source "arch/arm/mach-omap2/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-s3c2410/Kconfig"
|
source "arch/arm/mach-s3c2410/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-lh7a40x/Kconfig"
|
source "arch/arm/mach-lh7a40x/Kconfig"
|
||||||
|
@ -358,7 +360,7 @@ config HOTPLUG_CPU
|
||||||
|
|
||||||
config LOCAL_TIMERS
|
config LOCAL_TIMERS
|
||||||
bool "Use local timer interrupts"
|
bool "Use local timer interrupts"
|
||||||
depends on SMP && n
|
depends on SMP && REALVIEW_MPCORE
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Enable support for local timers on SMP platforms, rather then the
|
Enable support for local timers on SMP platforms, rather then the
|
||||||
|
|
|
@ -93,6 +93,7 @@ textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000
|
||||||
machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
|
machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
|
||||||
machine-$(CONFIG_ARCH_IXP2000) := ixp2000
|
machine-$(CONFIG_ARCH_IXP2000) := ixp2000
|
||||||
machine-$(CONFIG_ARCH_OMAP1) := omap1
|
machine-$(CONFIG_ARCH_OMAP1) := omap1
|
||||||
|
machine-$(CONFIG_ARCH_OMAP2) := omap2
|
||||||
incdir-$(CONFIG_ARCH_OMAP) := omap
|
incdir-$(CONFIG_ARCH_OMAP) := omap
|
||||||
machine-$(CONFIG_ARCH_S3C2410) := s3c2410
|
machine-$(CONFIG_ARCH_S3C2410) := s3c2410
|
||||||
machine-$(CONFIG_ARCH_LH7A40X) := lh7a40x
|
machine-$(CONFIG_ARCH_LH7A40X) := lh7a40x
|
||||||
|
|
|
@ -550,9 +550,9 @@ struct locomo_save_data {
|
||||||
u16 LCM_SPIMD;
|
u16 LCM_SPIMD;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int locomo_suspend(struct device *dev, pm_message_t state)
|
static int locomo_suspend(struct platform_device *dev, pm_message_t state)
|
||||||
{
|
{
|
||||||
struct locomo *lchip = dev_get_drvdata(dev);
|
struct locomo *lchip = platform_get_drvdata(dev);
|
||||||
struct locomo_save_data *save;
|
struct locomo_save_data *save;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
|
@ -560,7 +560,7 @@ static int locomo_suspend(struct device *dev, pm_message_t state)
|
||||||
if (!save)
|
if (!save)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
dev->power.saved_state = (void *) save;
|
dev->dev.power.saved_state = (void *) save;
|
||||||
|
|
||||||
spin_lock_irqsave(&lchip->lock, flags);
|
spin_lock_irqsave(&lchip->lock, flags);
|
||||||
|
|
||||||
|
@ -594,14 +594,14 @@ static int locomo_suspend(struct device *dev, pm_message_t state)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int locomo_resume(struct device *dev)
|
static int locomo_resume(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct locomo *lchip = dev_get_drvdata(dev);
|
struct locomo *lchip = platform_get_drvdata(dev);
|
||||||
struct locomo_save_data *save;
|
struct locomo_save_data *save;
|
||||||
unsigned long r;
|
unsigned long r;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
save = (struct locomo_save_data *) dev->power.saved_state;
|
save = (struct locomo_save_data *) dev->dev.power.saved_state;
|
||||||
if (!save)
|
if (!save)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -760,27 +760,26 @@ static void __locomo_remove(struct locomo *lchip)
|
||||||
kfree(lchip);
|
kfree(lchip);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int locomo_probe(struct device *dev)
|
static int locomo_probe(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct platform_device *pdev = to_platform_device(dev);
|
|
||||||
struct resource *mem;
|
struct resource *mem;
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
mem = platform_get_resource(dev, IORESOURCE_MEM, 0);
|
||||||
if (!mem)
|
if (!mem)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
irq = platform_get_irq(pdev, 0);
|
irq = platform_get_irq(dev, 0);
|
||||||
|
|
||||||
return __locomo_probe(dev, mem, irq);
|
return __locomo_probe(&dev->dev, mem, irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int locomo_remove(struct device *dev)
|
static int locomo_remove(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct locomo *lchip = dev_get_drvdata(dev);
|
struct locomo *lchip = platform__get_drvdata(dev);
|
||||||
|
|
||||||
if (lchip) {
|
if (lchip) {
|
||||||
__locomo_remove(lchip);
|
__locomo_remove(lchip);
|
||||||
dev_set_drvdata(dev, NULL);
|
platform_set_drvdata(dev, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -792,15 +791,16 @@ static int locomo_remove(struct device *dev)
|
||||||
* the per-machine level, and then have this driver pick
|
* the per-machine level, and then have this driver pick
|
||||||
* up the registered devices.
|
* up the registered devices.
|
||||||
*/
|
*/
|
||||||
static struct device_driver locomo_device_driver = {
|
static struct platform_driver locomo_device_driver = {
|
||||||
.name = "locomo",
|
|
||||||
.bus = &platform_bus_type,
|
|
||||||
.probe = locomo_probe,
|
.probe = locomo_probe,
|
||||||
.remove = locomo_remove,
|
.remove = locomo_remove,
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
.suspend = locomo_suspend,
|
.suspend = locomo_suspend,
|
||||||
.resume = locomo_resume,
|
.resume = locomo_resume,
|
||||||
#endif
|
#endif
|
||||||
|
.driver = {
|
||||||
|
.name = "locomo",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1126,13 +1126,13 @@ static int __init locomo_init(void)
|
||||||
{
|
{
|
||||||
int ret = bus_register(&locomo_bus_type);
|
int ret = bus_register(&locomo_bus_type);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
driver_register(&locomo_device_driver);
|
platform_driver_register(&locomo_device_driver);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit locomo_exit(void)
|
static void __exit locomo_exit(void)
|
||||||
{
|
{
|
||||||
driver_unregister(&locomo_device_driver);
|
platform_driver_unregister(&locomo_device_driver);
|
||||||
bus_unregister(&locomo_bus_type);
|
bus_unregister(&locomo_bus_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -801,9 +801,9 @@ struct sa1111_save_data {
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
|
|
||||||
static int sa1111_suspend(struct device *dev, pm_message_t state)
|
static int sa1111_suspend(struct platform_device *dev, pm_message_t state)
|
||||||
{
|
{
|
||||||
struct sa1111 *sachip = dev_get_drvdata(dev);
|
struct sa1111 *sachip = platform_get_drvdata(dev);
|
||||||
struct sa1111_save_data *save;
|
struct sa1111_save_data *save;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned int val;
|
unsigned int val;
|
||||||
|
@ -812,7 +812,7 @@ static int sa1111_suspend(struct device *dev, pm_message_t state)
|
||||||
save = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL);
|
save = kmalloc(sizeof(struct sa1111_save_data), GFP_KERNEL);
|
||||||
if (!save)
|
if (!save)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
dev->power.saved_state = save;
|
dev->dev.power.saved_state = save;
|
||||||
|
|
||||||
spin_lock_irqsave(&sachip->lock, flags);
|
spin_lock_irqsave(&sachip->lock, flags);
|
||||||
|
|
||||||
|
@ -859,14 +859,14 @@ static int sa1111_suspend(struct device *dev, pm_message_t state)
|
||||||
* restored by their respective drivers, and must be called
|
* restored by their respective drivers, and must be called
|
||||||
* via LDM after this function.
|
* via LDM after this function.
|
||||||
*/
|
*/
|
||||||
static int sa1111_resume(struct device *dev)
|
static int sa1111_resume(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct sa1111 *sachip = dev_get_drvdata(dev);
|
struct sa1111 *sachip = platform_get_drvdata(dev);
|
||||||
struct sa1111_save_data *save;
|
struct sa1111_save_data *save;
|
||||||
unsigned long flags, id;
|
unsigned long flags, id;
|
||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
|
|
||||||
save = (struct sa1111_save_data *)dev->power.saved_state;
|
save = (struct sa1111_save_data *)dev->dev.power.saved_state;
|
||||||
if (!save)
|
if (!save)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -879,7 +879,7 @@ static int sa1111_resume(struct device *dev)
|
||||||
id = sa1111_readl(sachip->base + SA1111_SKID);
|
id = sa1111_readl(sachip->base + SA1111_SKID);
|
||||||
if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
|
if ((id & SKID_ID_MASK) != SKID_SA1111_ID) {
|
||||||
__sa1111_remove(sachip);
|
__sa1111_remove(sachip);
|
||||||
dev_set_drvdata(dev, NULL);
|
platform_set_drvdata(dev, NULL);
|
||||||
kfree(save);
|
kfree(save);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -911,7 +911,7 @@ static int sa1111_resume(struct device *dev)
|
||||||
|
|
||||||
spin_unlock_irqrestore(&sachip->lock, flags);
|
spin_unlock_irqrestore(&sachip->lock, flags);
|
||||||
|
|
||||||
dev->power.saved_state = NULL;
|
dev->dev.power.saved_state = NULL;
|
||||||
kfree(save);
|
kfree(save);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -922,9 +922,8 @@ static int sa1111_resume(struct device *dev)
|
||||||
#define sa1111_resume NULL
|
#define sa1111_resume NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int sa1111_probe(struct device *dev)
|
static int sa1111_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct platform_device *pdev = to_platform_device(dev);
|
|
||||||
struct resource *mem;
|
struct resource *mem;
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
@ -933,20 +932,20 @@ static int sa1111_probe(struct device *dev)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
irq = platform_get_irq(pdev, 0);
|
irq = platform_get_irq(pdev, 0);
|
||||||
|
|
||||||
return __sa1111_probe(dev, mem, irq);
|
return __sa1111_probe(&pdev->dev, mem, irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sa1111_remove(struct device *dev)
|
static int sa1111_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct sa1111 *sachip = dev_get_drvdata(dev);
|
struct sa1111 *sachip = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
if (sachip) {
|
if (sachip) {
|
||||||
__sa1111_remove(sachip);
|
__sa1111_remove(sachip);
|
||||||
dev_set_drvdata(dev, NULL);
|
platform_set_drvdata(pdev, NULL);
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
kfree(dev->power.saved_state);
|
kfree(pdev->dev.power.saved_state);
|
||||||
dev->power.saved_state = NULL;
|
pdev->dev.power.saved_state = NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -962,13 +961,14 @@ static int sa1111_remove(struct device *dev)
|
||||||
* We also need to handle the SDRAM configuration for
|
* We also need to handle the SDRAM configuration for
|
||||||
* PXA250/SA1110 machine classes.
|
* PXA250/SA1110 machine classes.
|
||||||
*/
|
*/
|
||||||
static struct device_driver sa1111_device_driver = {
|
static struct platform_driver sa1111_device_driver = {
|
||||||
.name = "sa1111",
|
|
||||||
.bus = &platform_bus_type,
|
|
||||||
.probe = sa1111_probe,
|
.probe = sa1111_probe,
|
||||||
.remove = sa1111_remove,
|
.remove = sa1111_remove,
|
||||||
.suspend = sa1111_suspend,
|
.suspend = sa1111_suspend,
|
||||||
.resume = sa1111_resume,
|
.resume = sa1111_resume,
|
||||||
|
.driver = {
|
||||||
|
.name = "sa1111",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1256,13 +1256,13 @@ static int __init sa1111_init(void)
|
||||||
{
|
{
|
||||||
int ret = bus_register(&sa1111_bus_type);
|
int ret = bus_register(&sa1111_bus_type);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
driver_register(&sa1111_device_driver);
|
platform_driver_register(&sa1111_device_driver);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __exit sa1111_exit(void)
|
static void __exit sa1111_exit(void)
|
||||||
{
|
{
|
||||||
driver_unregister(&sa1111_device_driver);
|
platform_driver_unregister(&sa1111_device_driver);
|
||||||
bus_unregister(&sa1111_bus_type);
|
bus_unregister(&sa1111_bus_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,9 +98,9 @@ static void check_scoop_reg(struct scoop_dev *sdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
static int scoop_suspend(struct device *dev, pm_message_t state)
|
static int scoop_suspend(struct platform_device *dev, pm_message_t state)
|
||||||
{
|
{
|
||||||
struct scoop_dev *sdev = dev_get_drvdata(dev);
|
struct scoop_dev *sdev = platform_get_drvdata(dev);
|
||||||
|
|
||||||
check_scoop_reg(sdev);
|
check_scoop_reg(sdev);
|
||||||
sdev->scoop_gpwr = SCOOP_REG(sdev->base, SCOOP_GPWR);
|
sdev->scoop_gpwr = SCOOP_REG(sdev->base, SCOOP_GPWR);
|
||||||
|
@ -109,9 +109,9 @@ static int scoop_suspend(struct device *dev, pm_message_t state)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int scoop_resume(struct device *dev)
|
static int scoop_resume(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct scoop_dev *sdev = dev_get_drvdata(dev);
|
struct scoop_dev *sdev = platform_get_drvdata(dev);
|
||||||
|
|
||||||
check_scoop_reg(sdev);
|
check_scoop_reg(sdev);
|
||||||
SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr;
|
SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr;
|
||||||
|
@ -123,11 +123,10 @@ static int scoop_resume(struct device *dev)
|
||||||
#define scoop_resume NULL
|
#define scoop_resume NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int __init scoop_probe(struct device *dev)
|
int __init scoop_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct scoop_dev *devptr;
|
struct scoop_dev *devptr;
|
||||||
struct scoop_config *inf;
|
struct scoop_config *inf;
|
||||||
struct platform_device *pdev = to_platform_device(dev);
|
|
||||||
struct resource *mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
struct resource *mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
|
||||||
if (!mem)
|
if (!mem)
|
||||||
|
@ -141,7 +140,7 @@ int __init scoop_probe(struct device *dev)
|
||||||
memset(devptr, 0, sizeof(struct scoop_dev));
|
memset(devptr, 0, sizeof(struct scoop_dev));
|
||||||
spin_lock_init(&devptr->scoop_lock);
|
spin_lock_init(&devptr->scoop_lock);
|
||||||
|
|
||||||
inf = dev->platform_data;
|
inf = pdev->dev.platform_data;
|
||||||
devptr->base = ioremap(mem->start, mem->end - mem->start + 1);
|
devptr->base = ioremap(mem->start, mem->end - mem->start + 1);
|
||||||
|
|
||||||
if (!devptr->base) {
|
if (!devptr->base) {
|
||||||
|
@ -149,7 +148,7 @@ int __init scoop_probe(struct device *dev)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_set_drvdata(dev, devptr);
|
platform_set_drvdata(pdev, devptr);
|
||||||
|
|
||||||
printk("Sharp Scoop Device found at 0x%08x -> 0x%08x\n",(unsigned int)mem->start,(unsigned int)devptr->base);
|
printk("Sharp Scoop Device found at 0x%08x -> 0x%08x\n",(unsigned int)mem->start,(unsigned int)devptr->base);
|
||||||
|
|
||||||
|
@ -164,29 +163,30 @@ int __init scoop_probe(struct device *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int scoop_remove(struct device *dev)
|
static int scoop_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct scoop_dev *sdev = dev_get_drvdata(dev);
|
struct scoop_dev *sdev = platform_get_drvdata(pdev);
|
||||||
if (sdev) {
|
if (sdev) {
|
||||||
iounmap(sdev->base);
|
iounmap(sdev->base);
|
||||||
kfree(sdev);
|
kfree(sdev);
|
||||||
dev_set_drvdata(dev, NULL);
|
platform_set_drvdata(pdev, NULL);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct device_driver scoop_driver = {
|
static struct platform_driver scoop_driver = {
|
||||||
.name = "sharp-scoop",
|
|
||||||
.bus = &platform_bus_type,
|
|
||||||
.probe = scoop_probe,
|
.probe = scoop_probe,
|
||||||
.remove = scoop_remove,
|
.remove = scoop_remove,
|
||||||
.suspend = scoop_suspend,
|
.suspend = scoop_suspend,
|
||||||
.resume = scoop_resume,
|
.resume = scoop_resume,
|
||||||
|
.driver = {
|
||||||
|
.name = "sharp-scoop",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init scoop_init(void)
|
int __init scoop_init(void)
|
||||||
{
|
{
|
||||||
return driver_register(&scoop_driver);
|
return platform_driver_register(&scoop_driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
subsys_initcall(scoop_init);
|
subsys_initcall(scoop_init);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13
|
# Linux kernel version: 2.6.14-git13
|
||||||
# Wed Sep 14 10:51:52 2005
|
# Thu Nov 10 15:12:48 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -21,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
# General setup
|
# General setup
|
||||||
#
|
#
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
|
@ -31,6 +32,7 @@ CONFIG_SYSCTL=y
|
||||||
# CONFIG_HOTPLUG is not set
|
# CONFIG_HOTPLUG is not set
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -60,6 +62,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -82,6 +101,7 @@ CONFIG_ARCH_IXP2000=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -124,7 +144,6 @@ CONFIG_XSCALE_PMU=y
|
||||||
CONFIG_ISA_DMA_API=y
|
CONFIG_ISA_DMA_API=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_LEGACY_PROC=y
|
CONFIG_PCI_LEGACY_PROC=y
|
||||||
CONFIG_PCI_NAMES=y
|
|
||||||
# CONFIG_PCI_DEBUG is not set
|
# CONFIG_PCI_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -144,6 +163,8 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -162,6 +183,7 @@ CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmw
|
||||||
# At least one emulation must be selected
|
# At least one emulation must be selected
|
||||||
#
|
#
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_FPE_NWFPE=y
|
||||||
|
CONFIG_FPE_NWFPE_XP=y
|
||||||
# CONFIG_FPE_FASTFPE is not set
|
# CONFIG_FPE_FASTFPE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -205,13 +227,18 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_ESP is not set
|
# CONFIG_INET_ESP is not set
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
CONFIG_INET_DIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DCCP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_DCCP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
#
|
#
|
||||||
|
@ -228,6 +255,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
@ -238,6 +269,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_HAMRADIO is not set
|
# CONFIG_HAMRADIO is not set
|
||||||
# CONFIG_IRDA is not set
|
# CONFIG_IRDA is not set
|
||||||
# CONFIG_BT is not set
|
# CONFIG_BT is not set
|
||||||
|
# CONFIG_IEEE80211 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
|
@ -273,6 +305,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_FTL is not set
|
# CONFIG_FTL is not set
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -307,7 +340,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
# CONFIG_MTD_PHYSMAP is not set
|
# CONFIG_MTD_PHYSMAP is not set
|
||||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||||
CONFIG_MTD_IXP2000=y
|
CONFIG_MTD_IXP2000=y
|
||||||
# CONFIG_MTD_EDB7312 is not set
|
|
||||||
# CONFIG_MTD_PCI is not set
|
# CONFIG_MTD_PCI is not set
|
||||||
# CONFIG_MTD_PLATRAM is not set
|
# CONFIG_MTD_PLATRAM is not set
|
||||||
|
|
||||||
|
@ -333,6 +365,11 @@ CONFIG_MTD_IXP2000=y
|
||||||
#
|
#
|
||||||
# CONFIG_MTD_NAND is not set
|
# CONFIG_MTD_NAND is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
|
@ -358,21 +395,13 @@ CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI device support
|
# SCSI device support
|
||||||
#
|
#
|
||||||
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -409,6 +438,11 @@ CONFIG_DUMMY=y
|
||||||
#
|
#
|
||||||
# CONFIG_ARCNET is not set
|
# CONFIG_ARCNET is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# PHY device support
|
||||||
|
#
|
||||||
|
# CONFIG_PHYLIB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10 or 100Mbit)
|
# Ethernet (10 or 100Mbit)
|
||||||
#
|
#
|
||||||
|
@ -416,6 +450,7 @@ CONFIG_NET_ETHERNET=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
# CONFIG_HAPPYMEAL is not set
|
# CONFIG_HAPPYMEAL is not set
|
||||||
# CONFIG_SUNGEM is not set
|
# CONFIG_SUNGEM is not set
|
||||||
|
# CONFIG_CASSINI is not set
|
||||||
# CONFIG_NET_VENDOR_3COM is not set
|
# CONFIG_NET_VENDOR_3COM is not set
|
||||||
# CONFIG_SMC91X is not set
|
# CONFIG_SMC91X is not set
|
||||||
# CONFIG_DM9000 is not set
|
# CONFIG_DM9000 is not set
|
||||||
|
@ -455,6 +490,7 @@ CONFIG_EEPRO100=y
|
||||||
# CONFIG_HAMACHI is not set
|
# CONFIG_HAMACHI is not set
|
||||||
# CONFIG_YELLOWFIN is not set
|
# CONFIG_YELLOWFIN is not set
|
||||||
# CONFIG_R8169 is not set
|
# CONFIG_R8169 is not set
|
||||||
|
# CONFIG_SIS190 is not set
|
||||||
# CONFIG_SKGE is not set
|
# CONFIG_SKGE is not set
|
||||||
# CONFIG_SK98LIN is not set
|
# CONFIG_SK98LIN is not set
|
||||||
# CONFIG_VIA_VELOCITY is not set
|
# CONFIG_VIA_VELOCITY is not set
|
||||||
|
@ -464,6 +500,7 @@ CONFIG_EEPRO100=y
|
||||||
#
|
#
|
||||||
# Ethernet (10000 Mbit)
|
# Ethernet (10000 Mbit)
|
||||||
#
|
#
|
||||||
|
# CONFIG_CHELSIO_T1 is not set
|
||||||
# CONFIG_IXGB is not set
|
# CONFIG_IXGB is not set
|
||||||
# CONFIG_S2IO is not set
|
# CONFIG_S2IO is not set
|
||||||
|
|
||||||
|
@ -609,6 +646,7 @@ CONFIG_IXP2000_WATCHDOG=y
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -634,7 +672,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
# CONFIG_I2C_I801 is not set
|
# CONFIG_I2C_I801 is not set
|
||||||
# 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_IXP2000=y
|
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
|
||||||
|
@ -649,7 +686,6 @@ CONFIG_I2C_IXP2000=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
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous I2C Chip support
|
# Miscellaneous I2C Chip support
|
||||||
|
@ -662,6 +698,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# CONFIG_SENSORS_PCF8591 is not set
|
# CONFIG_SENSORS_PCF8591 is not set
|
||||||
# CONFIG_SENSORS_RTC8564 is not set
|
# CONFIG_SENSORS_RTC8564 is not set
|
||||||
# CONFIG_SENSORS_MAX6875 is not set
|
# CONFIG_SENSORS_MAX6875 is not set
|
||||||
|
# CONFIG_RTC_X1205_I2C is not set
|
||||||
# CONFIG_I2C_DEBUG_CORE is not set
|
# CONFIG_I2C_DEBUG_CORE is not set
|
||||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||||
# CONFIG_I2C_DEBUG_BUS is not set
|
# CONFIG_I2C_DEBUG_BUS is not set
|
||||||
|
@ -671,6 +708,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
|
# CONFIG_HWMON_VID is not set
|
||||||
# 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
|
||||||
|
@ -701,6 +739,7 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_SMSC47B397 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_W83792D 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
|
||||||
|
@ -710,6 +749,10 @@ CONFIG_HWMON=y
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia Capabilities Port drivers
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
|
@ -737,6 +780,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
# CONFIG_USB is not set
|
# CONFIG_USB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Gadget Support
|
# USB Gadget Support
|
||||||
#
|
#
|
||||||
|
@ -765,10 +812,6 @@ CONFIG_FS_MBCACHE=y
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
CONFIG_FS_POSIX_ACL=y
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
|
||||||
#
|
|
||||||
# XFS support
|
|
||||||
#
|
|
||||||
# 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
|
||||||
|
@ -777,6 +820,7 @@ CONFIG_INOTIFY=y
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
# CONFIG_FUSE_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# CD-ROM/DVD Filesystems
|
# CD-ROM/DVD Filesystems
|
||||||
|
@ -796,11 +840,10 @@ CONFIG_DNOTIFY=y
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_TMPFS_XATTR is not set
|
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
|
# CONFIG_RELAYFS_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous filesystems
|
# Miscellaneous filesystems
|
||||||
|
@ -816,6 +859,7 @@ CONFIG_RAMFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
# CONFIG_JFFS2_SUMMARY 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
|
||||||
|
@ -848,6 +892,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
# CONFIG_9P_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Partition Types
|
# Partition Types
|
||||||
|
@ -886,6 +931,7 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
@ -894,7 +940,9 @@ CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
CONFIG_DEBUG_ERRORS=y
|
CONFIG_DEBUG_ERRORS=y
|
||||||
|
@ -920,6 +968,7 @@ CONFIG_DEBUG_LL=y
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
# CONFIG_CRC_CCITT is not set
|
# CONFIG_CRC_CCITT is not set
|
||||||
|
# CONFIG_CRC16 is not set
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13
|
# Linux kernel version: 2.6.14-git13
|
||||||
# Wed Sep 14 10:52:01 2005
|
# Thu Nov 10 15:14:13 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -21,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
# General setup
|
# General setup
|
||||||
#
|
#
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
|
@ -31,6 +32,7 @@ CONFIG_SYSCTL=y
|
||||||
# CONFIG_HOTPLUG is not set
|
# CONFIG_HOTPLUG is not set
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -60,6 +62,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -82,6 +101,7 @@ CONFIG_ARCH_IXP2000=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -125,7 +145,6 @@ CONFIG_XSCALE_PMU=y
|
||||||
CONFIG_ISA_DMA_API=y
|
CONFIG_ISA_DMA_API=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_LEGACY_PROC=y
|
CONFIG_PCI_LEGACY_PROC=y
|
||||||
CONFIG_PCI_NAMES=y
|
|
||||||
# CONFIG_PCI_DEBUG is not set
|
# CONFIG_PCI_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -145,6 +164,8 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -163,6 +184,7 @@ CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firmw
|
||||||
# At least one emulation must be selected
|
# At least one emulation must be selected
|
||||||
#
|
#
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_FPE_NWFPE=y
|
||||||
|
CONFIG_FPE_NWFPE_XP=y
|
||||||
# CONFIG_FPE_FASTFPE is not set
|
# CONFIG_FPE_FASTFPE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -206,13 +228,18 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_ESP is not set
|
# CONFIG_INET_ESP is not set
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
CONFIG_INET_DIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DCCP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_DCCP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
#
|
#
|
||||||
|
@ -229,6 +256,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
@ -239,6 +270,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_HAMRADIO is not set
|
# CONFIG_HAMRADIO is not set
|
||||||
# CONFIG_IRDA is not set
|
# CONFIG_IRDA is not set
|
||||||
# CONFIG_BT is not set
|
# CONFIG_BT is not set
|
||||||
|
# CONFIG_IEEE80211 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
|
@ -274,6 +306,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_FTL is not set
|
# CONFIG_FTL is not set
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -308,7 +341,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
# CONFIG_MTD_PHYSMAP is not set
|
# CONFIG_MTD_PHYSMAP is not set
|
||||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||||
CONFIG_MTD_IXP2000=y
|
CONFIG_MTD_IXP2000=y
|
||||||
# CONFIG_MTD_EDB7312 is not set
|
|
||||||
# CONFIG_MTD_PCI is not set
|
# CONFIG_MTD_PCI is not set
|
||||||
# CONFIG_MTD_PLATRAM is not set
|
# CONFIG_MTD_PLATRAM is not set
|
||||||
|
|
||||||
|
@ -334,6 +366,11 @@ CONFIG_MTD_IXP2000=y
|
||||||
#
|
#
|
||||||
# CONFIG_MTD_NAND is not set
|
# CONFIG_MTD_NAND is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
|
@ -359,21 +396,13 @@ CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI device support
|
# SCSI device support
|
||||||
#
|
#
|
||||||
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -410,6 +439,11 @@ CONFIG_DUMMY=y
|
||||||
#
|
#
|
||||||
# CONFIG_ARCNET is not set
|
# CONFIG_ARCNET is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# PHY device support
|
||||||
|
#
|
||||||
|
# CONFIG_PHYLIB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10 or 100Mbit)
|
# Ethernet (10 or 100Mbit)
|
||||||
#
|
#
|
||||||
|
@ -417,6 +451,7 @@ CONFIG_NET_ETHERNET=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
# CONFIG_HAPPYMEAL is not set
|
# CONFIG_HAPPYMEAL is not set
|
||||||
# CONFIG_SUNGEM is not set
|
# CONFIG_SUNGEM is not set
|
||||||
|
# CONFIG_CASSINI is not set
|
||||||
# CONFIG_NET_VENDOR_3COM is not set
|
# CONFIG_NET_VENDOR_3COM is not set
|
||||||
# CONFIG_SMC91X is not set
|
# CONFIG_SMC91X is not set
|
||||||
# CONFIG_DM9000 is not set
|
# CONFIG_DM9000 is not set
|
||||||
|
@ -456,6 +491,7 @@ CONFIG_EEPRO100=y
|
||||||
# CONFIG_HAMACHI is not set
|
# CONFIG_HAMACHI is not set
|
||||||
# CONFIG_YELLOWFIN is not set
|
# CONFIG_YELLOWFIN is not set
|
||||||
# CONFIG_R8169 is not set
|
# CONFIG_R8169 is not set
|
||||||
|
# CONFIG_SIS190 is not set
|
||||||
# CONFIG_SKGE is not set
|
# CONFIG_SKGE is not set
|
||||||
# CONFIG_SK98LIN is not set
|
# CONFIG_SK98LIN is not set
|
||||||
# CONFIG_VIA_VELOCITY is not set
|
# CONFIG_VIA_VELOCITY is not set
|
||||||
|
@ -465,6 +501,7 @@ CONFIG_EEPRO100=y
|
||||||
#
|
#
|
||||||
# Ethernet (10000 Mbit)
|
# Ethernet (10000 Mbit)
|
||||||
#
|
#
|
||||||
|
# CONFIG_CHELSIO_T1 is not set
|
||||||
# CONFIG_IXGB is not set
|
# CONFIG_IXGB is not set
|
||||||
# CONFIG_S2IO is not set
|
# CONFIG_S2IO is not set
|
||||||
|
|
||||||
|
@ -610,6 +647,7 @@ CONFIG_IXP2000_WATCHDOG=y
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -635,7 +673,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
# CONFIG_I2C_I801 is not set
|
# CONFIG_I2C_I801 is not set
|
||||||
# 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_IXP2000=y
|
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
|
||||||
|
@ -650,7 +687,6 @@ CONFIG_I2C_IXP2000=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
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous I2C Chip support
|
# Miscellaneous I2C Chip support
|
||||||
|
@ -663,6 +699,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# CONFIG_SENSORS_PCF8591 is not set
|
# CONFIG_SENSORS_PCF8591 is not set
|
||||||
# CONFIG_SENSORS_RTC8564 is not set
|
# CONFIG_SENSORS_RTC8564 is not set
|
||||||
# CONFIG_SENSORS_MAX6875 is not set
|
# CONFIG_SENSORS_MAX6875 is not set
|
||||||
|
# CONFIG_RTC_X1205_I2C is not set
|
||||||
# CONFIG_I2C_DEBUG_CORE is not set
|
# CONFIG_I2C_DEBUG_CORE is not set
|
||||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||||
# CONFIG_I2C_DEBUG_BUS is not set
|
# CONFIG_I2C_DEBUG_BUS is not set
|
||||||
|
@ -672,6 +709,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
|
# CONFIG_HWMON_VID is not set
|
||||||
# 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
|
||||||
|
@ -702,6 +740,7 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_SMSC47B397 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_W83792D 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
|
||||||
|
@ -711,6 +750,10 @@ CONFIG_HWMON=y
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia Capabilities Port drivers
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
|
@ -738,6 +781,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
# CONFIG_USB is not set
|
# CONFIG_USB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Gadget Support
|
# USB Gadget Support
|
||||||
#
|
#
|
||||||
|
@ -766,10 +813,6 @@ CONFIG_FS_MBCACHE=y
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
CONFIG_FS_POSIX_ACL=y
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
|
||||||
#
|
|
||||||
# XFS support
|
|
||||||
#
|
|
||||||
# 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
|
||||||
|
@ -778,6 +821,7 @@ CONFIG_INOTIFY=y
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
# CONFIG_FUSE_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# CD-ROM/DVD Filesystems
|
# CD-ROM/DVD Filesystems
|
||||||
|
@ -797,11 +841,10 @@ CONFIG_DNOTIFY=y
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_TMPFS_XATTR is not set
|
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
|
# CONFIG_RELAYFS_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous filesystems
|
# Miscellaneous filesystems
|
||||||
|
@ -817,6 +860,7 @@ CONFIG_RAMFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
# CONFIG_JFFS2_SUMMARY 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
|
||||||
|
@ -849,6 +893,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
# CONFIG_9P_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Partition Types
|
# Partition Types
|
||||||
|
@ -887,6 +932,7 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
@ -895,7 +941,9 @@ CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
CONFIG_DEBUG_ERRORS=y
|
CONFIG_DEBUG_ERRORS=y
|
||||||
|
@ -921,6 +969,7 @@ CONFIG_DEBUG_LL=y
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
# CONFIG_CRC_CCITT is not set
|
# CONFIG_CRC_CCITT is not set
|
||||||
|
# CONFIG_CRC16 is not set
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13
|
# Linux kernel version: 2.6.14-git13
|
||||||
# Wed Sep 14 10:52:10 2005
|
# Thu Nov 10 15:14:50 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -21,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
# General setup
|
# General setup
|
||||||
#
|
#
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
|
@ -31,6 +32,7 @@ CONFIG_SYSCTL=y
|
||||||
# CONFIG_HOTPLUG is not set
|
# CONFIG_HOTPLUG is not set
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -60,6 +62,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -82,6 +101,7 @@ CONFIG_ARCH_IXP2000=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -125,7 +145,6 @@ CONFIG_XSCALE_PMU=y
|
||||||
CONFIG_ISA_DMA_API=y
|
CONFIG_ISA_DMA_API=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_LEGACY_PROC=y
|
CONFIG_PCI_LEGACY_PROC=y
|
||||||
CONFIG_PCI_NAMES=y
|
|
||||||
# CONFIG_PCI_DEBUG is not set
|
# CONFIG_PCI_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -145,6 +164,8 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -163,6 +184,7 @@ CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firm
|
||||||
# At least one emulation must be selected
|
# At least one emulation must be selected
|
||||||
#
|
#
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_FPE_NWFPE=y
|
||||||
|
CONFIG_FPE_NWFPE_XP=y
|
||||||
# CONFIG_FPE_FASTFPE is not set
|
# CONFIG_FPE_FASTFPE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -206,13 +228,18 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_ESP is not set
|
# CONFIG_INET_ESP is not set
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
CONFIG_IP_TCPDIAG=y
|
CONFIG_INET_DIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DCCP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_DCCP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
#
|
#
|
||||||
|
@ -229,6 +256,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
@ -239,6 +270,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_HAMRADIO is not set
|
# CONFIG_HAMRADIO is not set
|
||||||
# CONFIG_IRDA is not set
|
# CONFIG_IRDA is not set
|
||||||
# CONFIG_BT is not set
|
# CONFIG_BT is not set
|
||||||
|
# CONFIG_IEEE80211 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
|
@ -274,6 +306,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_FTL is not set
|
# CONFIG_FTL is not set
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -308,7 +341,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
# CONFIG_MTD_PHYSMAP is not set
|
# CONFIG_MTD_PHYSMAP is not set
|
||||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||||
CONFIG_MTD_IXP2000=y
|
CONFIG_MTD_IXP2000=y
|
||||||
# CONFIG_MTD_EDB7312 is not set
|
|
||||||
# CONFIG_MTD_PCI is not set
|
# CONFIG_MTD_PCI is not set
|
||||||
# CONFIG_MTD_PLATRAM is not set
|
# CONFIG_MTD_PLATRAM is not set
|
||||||
|
|
||||||
|
@ -334,6 +366,11 @@ CONFIG_MTD_IXP2000=y
|
||||||
#
|
#
|
||||||
# CONFIG_MTD_NAND is not set
|
# CONFIG_MTD_NAND is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
|
@ -359,21 +396,13 @@ CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI device support
|
# SCSI device support
|
||||||
#
|
#
|
||||||
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -410,6 +439,11 @@ CONFIG_DUMMY=y
|
||||||
#
|
#
|
||||||
# CONFIG_ARCNET is not set
|
# CONFIG_ARCNET is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# PHY device support
|
||||||
|
#
|
||||||
|
# CONFIG_PHYLIB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10 or 100Mbit)
|
# Ethernet (10 or 100Mbit)
|
||||||
#
|
#
|
||||||
|
@ -417,6 +451,7 @@ CONFIG_NET_ETHERNET=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
# CONFIG_HAPPYMEAL is not set
|
# CONFIG_HAPPYMEAL is not set
|
||||||
# CONFIG_SUNGEM is not set
|
# CONFIG_SUNGEM is not set
|
||||||
|
# CONFIG_CASSINI is not set
|
||||||
# CONFIG_NET_VENDOR_3COM is not set
|
# CONFIG_NET_VENDOR_3COM is not set
|
||||||
# CONFIG_SMC91X is not set
|
# CONFIG_SMC91X is not set
|
||||||
# CONFIG_DM9000 is not set
|
# CONFIG_DM9000 is not set
|
||||||
|
@ -457,6 +492,7 @@ CONFIG_EEPRO100=y
|
||||||
# CONFIG_HAMACHI is not set
|
# CONFIG_HAMACHI is not set
|
||||||
# CONFIG_YELLOWFIN is not set
|
# CONFIG_YELLOWFIN is not set
|
||||||
# CONFIG_R8169 is not set
|
# CONFIG_R8169 is not set
|
||||||
|
# CONFIG_SIS190 is not set
|
||||||
# CONFIG_SKGE is not set
|
# CONFIG_SKGE is not set
|
||||||
# CONFIG_SK98LIN is not set
|
# CONFIG_SK98LIN is not set
|
||||||
# CONFIG_VIA_VELOCITY is not set
|
# CONFIG_VIA_VELOCITY is not set
|
||||||
|
@ -466,6 +502,7 @@ CONFIG_EEPRO100=y
|
||||||
#
|
#
|
||||||
# Ethernet (10000 Mbit)
|
# Ethernet (10000 Mbit)
|
||||||
#
|
#
|
||||||
|
# CONFIG_CHELSIO_T1 is not set
|
||||||
# CONFIG_IXGB is not set
|
# CONFIG_IXGB is not set
|
||||||
# CONFIG_S2IO is not set
|
# CONFIG_S2IO is not set
|
||||||
|
|
||||||
|
@ -611,6 +648,7 @@ CONFIG_IXP2000_WATCHDOG=y
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -636,7 +674,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
# CONFIG_I2C_I801 is not set
|
# CONFIG_I2C_I801 is not set
|
||||||
# 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_IXP2000=y
|
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
|
||||||
|
@ -651,7 +688,6 @@ CONFIG_I2C_IXP2000=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
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous I2C Chip support
|
# Miscellaneous I2C Chip support
|
||||||
|
@ -664,6 +700,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# CONFIG_SENSORS_PCF8591 is not set
|
# CONFIG_SENSORS_PCF8591 is not set
|
||||||
# CONFIG_SENSORS_RTC8564 is not set
|
# CONFIG_SENSORS_RTC8564 is not set
|
||||||
# CONFIG_SENSORS_MAX6875 is not set
|
# CONFIG_SENSORS_MAX6875 is not set
|
||||||
|
# CONFIG_RTC_X1205_I2C is not set
|
||||||
# CONFIG_I2C_DEBUG_CORE is not set
|
# CONFIG_I2C_DEBUG_CORE is not set
|
||||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||||
# CONFIG_I2C_DEBUG_BUS is not set
|
# CONFIG_I2C_DEBUG_BUS is not set
|
||||||
|
@ -673,6 +710,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
|
# CONFIG_HWMON_VID is not set
|
||||||
# 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
|
||||||
|
@ -703,6 +741,7 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_SMSC47B397 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_W83792D 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
|
||||||
|
@ -712,6 +751,10 @@ CONFIG_HWMON=y
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia Capabilities Port drivers
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
|
@ -739,6 +782,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
# CONFIG_USB is not set
|
# CONFIG_USB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Gadget Support
|
# USB Gadget Support
|
||||||
#
|
#
|
||||||
|
@ -767,10 +814,6 @@ CONFIG_FS_MBCACHE=y
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
CONFIG_FS_POSIX_ACL=y
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
|
||||||
#
|
|
||||||
# XFS support
|
|
||||||
#
|
|
||||||
# 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
|
||||||
|
@ -779,6 +822,7 @@ CONFIG_INOTIFY=y
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
# CONFIG_FUSE_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# CD-ROM/DVD Filesystems
|
# CD-ROM/DVD Filesystems
|
||||||
|
@ -798,11 +842,10 @@ CONFIG_DNOTIFY=y
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_TMPFS_XATTR is not set
|
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
|
# CONFIG_RELAYFS_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous filesystems
|
# Miscellaneous filesystems
|
||||||
|
@ -818,6 +861,7 @@ CONFIG_RAMFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
# CONFIG_JFFS2_SUMMARY 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
|
||||||
|
@ -850,6 +894,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
# CONFIG_9P_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Partition Types
|
# Partition Types
|
||||||
|
@ -888,6 +933,7 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
@ -896,7 +942,9 @@ CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
CONFIG_DEBUG_ERRORS=y
|
CONFIG_DEBUG_ERRORS=y
|
||||||
|
@ -922,6 +970,7 @@ CONFIG_DEBUG_LL=y
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
# CONFIG_CRC_CCITT is not set
|
# CONFIG_CRC_CCITT is not set
|
||||||
|
# CONFIG_CRC16 is not set
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13
|
# Linux kernel version: 2.6.14-git13
|
||||||
# Wed Sep 14 10:52:23 2005
|
# Thu Nov 10 15:14:56 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -21,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
# General setup
|
# General setup
|
||||||
#
|
#
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
|
@ -31,6 +32,7 @@ CONFIG_SYSCTL=y
|
||||||
# CONFIG_HOTPLUG is not set
|
# CONFIG_HOTPLUG is not set
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -60,6 +62,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -82,6 +101,7 @@ CONFIG_ARCH_IXP2000=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -125,7 +145,6 @@ CONFIG_XSCALE_PMU=y
|
||||||
CONFIG_ISA_DMA_API=y
|
CONFIG_ISA_DMA_API=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_LEGACY_PROC=y
|
CONFIG_PCI_LEGACY_PROC=y
|
||||||
CONFIG_PCI_NAMES=y
|
|
||||||
# CONFIG_PCI_DEBUG is not set
|
# CONFIG_PCI_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -145,6 +164,8 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -163,6 +184,7 @@ CONFIG_CMDLINE="console=ttyS0,9600 root=/dev/nfs ip=bootp mem=64M@0x0"
|
||||||
# At least one emulation must be selected
|
# At least one emulation must be selected
|
||||||
#
|
#
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_FPE_NWFPE=y
|
||||||
|
CONFIG_FPE_NWFPE_XP=y
|
||||||
# CONFIG_FPE_FASTFPE is not set
|
# CONFIG_FPE_FASTFPE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -206,13 +228,18 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_ESP is not set
|
# CONFIG_INET_ESP is not set
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
CONFIG_INET_DIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DCCP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_DCCP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
#
|
#
|
||||||
|
@ -229,6 +256,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
@ -239,6 +270,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_HAMRADIO is not set
|
# CONFIG_HAMRADIO is not set
|
||||||
# CONFIG_IRDA is not set
|
# CONFIG_IRDA is not set
|
||||||
# CONFIG_BT is not set
|
# CONFIG_BT is not set
|
||||||
|
# CONFIG_IEEE80211 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
|
@ -274,6 +306,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_FTL is not set
|
# CONFIG_FTL is not set
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -308,7 +341,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
# CONFIG_MTD_PHYSMAP is not set
|
# CONFIG_MTD_PHYSMAP is not set
|
||||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||||
CONFIG_MTD_IXP2000=y
|
CONFIG_MTD_IXP2000=y
|
||||||
# CONFIG_MTD_EDB7312 is not set
|
|
||||||
# CONFIG_MTD_PCI is not set
|
# CONFIG_MTD_PCI is not set
|
||||||
# CONFIG_MTD_PLATRAM is not set
|
# CONFIG_MTD_PLATRAM is not set
|
||||||
|
|
||||||
|
@ -334,6 +366,11 @@ CONFIG_MTD_IXP2000=y
|
||||||
#
|
#
|
||||||
# CONFIG_MTD_NAND is not set
|
# CONFIG_MTD_NAND is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
|
@ -359,21 +396,13 @@ CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI device support
|
# SCSI device support
|
||||||
#
|
#
|
||||||
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -410,6 +439,11 @@ CONFIG_DUMMY=y
|
||||||
#
|
#
|
||||||
# CONFIG_ARCNET is not set
|
# CONFIG_ARCNET is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# PHY device support
|
||||||
|
#
|
||||||
|
# CONFIG_PHYLIB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10 or 100Mbit)
|
# Ethernet (10 or 100Mbit)
|
||||||
#
|
#
|
||||||
|
@ -417,6 +451,7 @@ CONFIG_NET_ETHERNET=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
# CONFIG_HAPPYMEAL is not set
|
# CONFIG_HAPPYMEAL is not set
|
||||||
# CONFIG_SUNGEM is not set
|
# CONFIG_SUNGEM is not set
|
||||||
|
# CONFIG_CASSINI is not set
|
||||||
# CONFIG_NET_VENDOR_3COM is not set
|
# CONFIG_NET_VENDOR_3COM is not set
|
||||||
# CONFIG_SMC91X is not set
|
# CONFIG_SMC91X is not set
|
||||||
# CONFIG_DM9000 is not set
|
# CONFIG_DM9000 is not set
|
||||||
|
@ -456,6 +491,7 @@ CONFIG_EEPRO100=y
|
||||||
# CONFIG_HAMACHI is not set
|
# CONFIG_HAMACHI is not set
|
||||||
# CONFIG_YELLOWFIN is not set
|
# CONFIG_YELLOWFIN is not set
|
||||||
# CONFIG_R8169 is not set
|
# CONFIG_R8169 is not set
|
||||||
|
# CONFIG_SIS190 is not set
|
||||||
# CONFIG_SKGE is not set
|
# CONFIG_SKGE is not set
|
||||||
# CONFIG_SK98LIN is not set
|
# CONFIG_SK98LIN is not set
|
||||||
# CONFIG_VIA_VELOCITY is not set
|
# CONFIG_VIA_VELOCITY is not set
|
||||||
|
@ -465,6 +501,7 @@ CONFIG_EEPRO100=y
|
||||||
#
|
#
|
||||||
# Ethernet (10000 Mbit)
|
# Ethernet (10000 Mbit)
|
||||||
#
|
#
|
||||||
|
# CONFIG_CHELSIO_T1 is not set
|
||||||
# CONFIG_IXGB is not set
|
# CONFIG_IXGB is not set
|
||||||
# CONFIG_S2IO is not set
|
# CONFIG_S2IO is not set
|
||||||
|
|
||||||
|
@ -610,6 +647,7 @@ CONFIG_IXP2000_WATCHDOG=y
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -635,7 +673,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
# CONFIG_I2C_I801 is not set
|
# CONFIG_I2C_I801 is not set
|
||||||
# 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_IXP2000=y
|
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
|
||||||
|
@ -650,7 +687,6 @@ CONFIG_I2C_IXP2000=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
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous I2C Chip support
|
# Miscellaneous I2C Chip support
|
||||||
|
@ -663,6 +699,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# CONFIG_SENSORS_PCF8591 is not set
|
# CONFIG_SENSORS_PCF8591 is not set
|
||||||
# CONFIG_SENSORS_RTC8564 is not set
|
# CONFIG_SENSORS_RTC8564 is not set
|
||||||
# CONFIG_SENSORS_MAX6875 is not set
|
# CONFIG_SENSORS_MAX6875 is not set
|
||||||
|
# CONFIG_RTC_X1205_I2C is not set
|
||||||
# CONFIG_I2C_DEBUG_CORE is not set
|
# CONFIG_I2C_DEBUG_CORE is not set
|
||||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||||
# CONFIG_I2C_DEBUG_BUS is not set
|
# CONFIG_I2C_DEBUG_BUS is not set
|
||||||
|
@ -672,6 +709,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
|
# CONFIG_HWMON_VID is not set
|
||||||
# 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
|
||||||
|
@ -702,6 +740,7 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_SMSC47B397 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_W83792D 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
|
||||||
|
@ -711,6 +750,10 @@ CONFIG_HWMON=y
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia Capabilities Port drivers
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
|
@ -738,6 +781,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
# CONFIG_USB is not set
|
# CONFIG_USB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Gadget Support
|
# USB Gadget Support
|
||||||
#
|
#
|
||||||
|
@ -766,10 +813,6 @@ CONFIG_FS_MBCACHE=y
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
CONFIG_FS_POSIX_ACL=y
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
|
||||||
#
|
|
||||||
# XFS support
|
|
||||||
#
|
|
||||||
# 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
|
||||||
|
@ -778,6 +821,7 @@ CONFIG_INOTIFY=y
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
# CONFIG_FUSE_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# CD-ROM/DVD Filesystems
|
# CD-ROM/DVD Filesystems
|
||||||
|
@ -797,11 +841,10 @@ CONFIG_DNOTIFY=y
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_TMPFS_XATTR is not set
|
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
|
# CONFIG_RELAYFS_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous filesystems
|
# Miscellaneous filesystems
|
||||||
|
@ -817,6 +860,7 @@ CONFIG_RAMFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
# CONFIG_JFFS2_SUMMARY 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
|
||||||
|
@ -849,6 +893,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
# CONFIG_9P_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Partition Types
|
# Partition Types
|
||||||
|
@ -887,6 +932,7 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
@ -895,7 +941,9 @@ CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
CONFIG_DEBUG_ERRORS=y
|
CONFIG_DEBUG_ERRORS=y
|
||||||
|
@ -921,6 +969,7 @@ CONFIG_DEBUG_LL=y
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
# CONFIG_CRC_CCITT is not set
|
# CONFIG_CRC_CCITT is not set
|
||||||
|
# CONFIG_CRC16 is not set
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13
|
# Linux kernel version: 2.6.14-git13
|
||||||
# Wed Sep 14 10:52:16 2005
|
# Thu Nov 10 15:15:03 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -21,6 +21,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
# General setup
|
# General setup
|
||||||
#
|
#
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
|
@ -31,6 +32,7 @@ CONFIG_SYSCTL=y
|
||||||
# CONFIG_HOTPLUG is not set
|
# CONFIG_HOTPLUG is not set
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
|
@ -60,6 +62,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -82,6 +101,7 @@ CONFIG_ARCH_IXP2000=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
# CONFIG_ARCH_OMAP is not set
|
# CONFIG_ARCH_OMAP is not set
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -125,7 +145,6 @@ CONFIG_XSCALE_PMU=y
|
||||||
CONFIG_ISA_DMA_API=y
|
CONFIG_ISA_DMA_API=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_LEGACY_PROC=y
|
CONFIG_PCI_LEGACY_PROC=y
|
||||||
CONFIG_PCI_NAMES=y
|
|
||||||
# CONFIG_PCI_DEBUG is not set
|
# CONFIG_PCI_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -145,6 +164,8 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -163,6 +184,7 @@ CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M@0x0 pci=firm
|
||||||
# At least one emulation must be selected
|
# At least one emulation must be selected
|
||||||
#
|
#
|
||||||
CONFIG_FPE_NWFPE=y
|
CONFIG_FPE_NWFPE=y
|
||||||
|
CONFIG_FPE_NWFPE_XP=y
|
||||||
# CONFIG_FPE_FASTFPE is not set
|
# CONFIG_FPE_FASTFPE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -206,13 +228,18 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_ESP is not set
|
# CONFIG_INET_ESP is not set
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
CONFIG_INET_DIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DCCP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_DCCP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
#
|
#
|
||||||
|
@ -229,6 +256,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
@ -239,6 +270,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_HAMRADIO is not set
|
# CONFIG_HAMRADIO is not set
|
||||||
# CONFIG_IRDA is not set
|
# CONFIG_IRDA is not set
|
||||||
# CONFIG_BT is not set
|
# CONFIG_BT is not set
|
||||||
|
# CONFIG_IEEE80211 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
|
@ -274,6 +306,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_FTL is not set
|
# CONFIG_FTL is not set
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -308,7 +341,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
# CONFIG_MTD_PHYSMAP is not set
|
# CONFIG_MTD_PHYSMAP is not set
|
||||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||||
CONFIG_MTD_IXP2000=y
|
CONFIG_MTD_IXP2000=y
|
||||||
# CONFIG_MTD_EDB7312 is not set
|
|
||||||
# CONFIG_MTD_PCI is not set
|
# CONFIG_MTD_PCI is not set
|
||||||
# CONFIG_MTD_PLATRAM is not set
|
# CONFIG_MTD_PLATRAM is not set
|
||||||
|
|
||||||
|
@ -334,6 +366,11 @@ CONFIG_MTD_IXP2000=y
|
||||||
#
|
#
|
||||||
# CONFIG_MTD_NAND is not set
|
# CONFIG_MTD_NAND is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
|
@ -359,21 +396,13 @@ CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI device support
|
# SCSI device support
|
||||||
#
|
#
|
||||||
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -410,6 +439,11 @@ CONFIG_DUMMY=y
|
||||||
#
|
#
|
||||||
# CONFIG_ARCNET is not set
|
# CONFIG_ARCNET is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# PHY device support
|
||||||
|
#
|
||||||
|
# CONFIG_PHYLIB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10 or 100Mbit)
|
# Ethernet (10 or 100Mbit)
|
||||||
#
|
#
|
||||||
|
@ -417,6 +451,7 @@ CONFIG_NET_ETHERNET=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
# CONFIG_HAPPYMEAL is not set
|
# CONFIG_HAPPYMEAL is not set
|
||||||
# CONFIG_SUNGEM is not set
|
# CONFIG_SUNGEM is not set
|
||||||
|
# CONFIG_CASSINI is not set
|
||||||
# CONFIG_NET_VENDOR_3COM is not set
|
# CONFIG_NET_VENDOR_3COM is not set
|
||||||
# CONFIG_SMC91X is not set
|
# CONFIG_SMC91X is not set
|
||||||
# CONFIG_DM9000 is not set
|
# CONFIG_DM9000 is not set
|
||||||
|
@ -457,6 +492,7 @@ CONFIG_EEPRO100=y
|
||||||
# CONFIG_HAMACHI is not set
|
# CONFIG_HAMACHI is not set
|
||||||
# CONFIG_YELLOWFIN is not set
|
# CONFIG_YELLOWFIN is not set
|
||||||
# CONFIG_R8169 is not set
|
# CONFIG_R8169 is not set
|
||||||
|
# CONFIG_SIS190 is not set
|
||||||
# CONFIG_SKGE is not set
|
# CONFIG_SKGE is not set
|
||||||
# CONFIG_SK98LIN is not set
|
# CONFIG_SK98LIN is not set
|
||||||
# CONFIG_VIA_VELOCITY is not set
|
# CONFIG_VIA_VELOCITY is not set
|
||||||
|
@ -466,6 +502,7 @@ CONFIG_EEPRO100=y
|
||||||
#
|
#
|
||||||
# Ethernet (10000 Mbit)
|
# Ethernet (10000 Mbit)
|
||||||
#
|
#
|
||||||
|
# CONFIG_CHELSIO_T1 is not set
|
||||||
# CONFIG_IXGB is not set
|
# CONFIG_IXGB is not set
|
||||||
# CONFIG_S2IO is not set
|
# CONFIG_S2IO is not set
|
||||||
|
|
||||||
|
@ -611,6 +648,7 @@ CONFIG_IXP2000_WATCHDOG=y
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -636,7 +674,6 @@ CONFIG_I2C_ALGOBIT=y
|
||||||
# CONFIG_I2C_I801 is not set
|
# CONFIG_I2C_I801 is not set
|
||||||
# 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_IXP2000=y
|
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
|
||||||
|
@ -651,7 +688,6 @@ CONFIG_I2C_IXP2000=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
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous I2C Chip support
|
# Miscellaneous I2C Chip support
|
||||||
|
@ -664,6 +700,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# CONFIG_SENSORS_PCF8591 is not set
|
# CONFIG_SENSORS_PCF8591 is not set
|
||||||
# CONFIG_SENSORS_RTC8564 is not set
|
# CONFIG_SENSORS_RTC8564 is not set
|
||||||
# CONFIG_SENSORS_MAX6875 is not set
|
# CONFIG_SENSORS_MAX6875 is not set
|
||||||
|
# CONFIG_RTC_X1205_I2C is not set
|
||||||
# CONFIG_I2C_DEBUG_CORE is not set
|
# CONFIG_I2C_DEBUG_CORE is not set
|
||||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||||
# CONFIG_I2C_DEBUG_BUS is not set
|
# CONFIG_I2C_DEBUG_BUS is not set
|
||||||
|
@ -673,6 +710,7 @@ CONFIG_SENSORS_EEPROM=y
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
|
# CONFIG_HWMON_VID is not set
|
||||||
# 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
|
||||||
|
@ -703,6 +741,7 @@ CONFIG_HWMON=y
|
||||||
# CONFIG_SENSORS_SMSC47B397 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_W83792D 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
|
||||||
|
@ -712,6 +751,10 @@ CONFIG_HWMON=y
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia Capabilities Port drivers
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
|
@ -739,6 +782,10 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
# CONFIG_USB is not set
|
# CONFIG_USB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Gadget Support
|
# USB Gadget Support
|
||||||
#
|
#
|
||||||
|
@ -767,10 +814,6 @@ CONFIG_FS_MBCACHE=y
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
CONFIG_FS_POSIX_ACL=y
|
CONFIG_FS_POSIX_ACL=y
|
||||||
|
|
||||||
#
|
|
||||||
# XFS support
|
|
||||||
#
|
|
||||||
# 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
|
||||||
|
@ -779,6 +822,7 @@ CONFIG_INOTIFY=y
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
# CONFIG_FUSE_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# CD-ROM/DVD Filesystems
|
# CD-ROM/DVD Filesystems
|
||||||
|
@ -798,11 +842,10 @@ CONFIG_DNOTIFY=y
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
# CONFIG_TMPFS_XATTR is not set
|
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
|
# CONFIG_RELAYFS_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous filesystems
|
# Miscellaneous filesystems
|
||||||
|
@ -818,6 +861,7 @@ CONFIG_RAMFS=y
|
||||||
CONFIG_JFFS2_FS=y
|
CONFIG_JFFS2_FS=y
|
||||||
CONFIG_JFFS2_FS_DEBUG=0
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
# CONFIG_JFFS2_SUMMARY 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
|
||||||
|
@ -850,6 +894,7 @@ CONFIG_SUNRPC=y
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
# CONFIG_9P_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Partition Types
|
# Partition Types
|
||||||
|
@ -888,6 +933,7 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
@ -896,7 +942,9 @@ CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
|
# CONFIG_DEBUG_VM is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
CONFIG_DEBUG_ERRORS=y
|
CONFIG_DEBUG_ERRORS=y
|
||||||
|
@ -922,6 +970,7 @@ CONFIG_DEBUG_LL=y
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
# CONFIG_CRC_CCITT is not set
|
# CONFIG_CRC_CCITT is not set
|
||||||
|
# CONFIG_CRC16 is not set
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.13
|
# Linux kernel version: 2.6.14
|
||||||
# Mon Sep 5 18:07:12 2005
|
# Wed Nov 9 18:53:40 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -22,6 +22,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
# General setup
|
# General setup
|
||||||
#
|
#
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
|
@ -31,6 +32,7 @@ CONFIG_SYSCTL=y
|
||||||
# CONFIG_HOTPLUG is not set
|
# CONFIG_HOTPLUG is not set
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||||
|
@ -59,6 +61,23 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
# CONFIG_KMOD is not set
|
# CONFIG_KMOD is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Block layer
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# IO Schedulers
|
||||||
|
#
|
||||||
|
CONFIG_IOSCHED_NOOP=y
|
||||||
|
CONFIG_IOSCHED_AS=y
|
||||||
|
CONFIG_IOSCHED_DEADLINE=y
|
||||||
|
CONFIG_IOSCHED_CFQ=y
|
||||||
|
CONFIG_DEFAULT_AS=y
|
||||||
|
# CONFIG_DEFAULT_DEADLINE is not set
|
||||||
|
# CONFIG_DEFAULT_CFQ is not set
|
||||||
|
# CONFIG_DEFAULT_NOOP is not set
|
||||||
|
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||||
|
|
||||||
#
|
#
|
||||||
# System Type
|
# System Type
|
||||||
#
|
#
|
||||||
|
@ -81,6 +100,7 @@ CONFIG_OBSOLETE_MODPARM=y
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
# CONFIG_ARCH_LH7A40X is not set
|
||||||
CONFIG_ARCH_OMAP=y
|
CONFIG_ARCH_OMAP=y
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE is not set
|
||||||
|
# CONFIG_ARCH_REALVIEW is not set
|
||||||
# CONFIG_ARCH_IMX is not set
|
# CONFIG_ARCH_IMX is not set
|
||||||
# CONFIG_ARCH_H720X is not set
|
# CONFIG_ARCH_H720X is not set
|
||||||
# CONFIG_ARCH_AAEC2000 is not set
|
# CONFIG_ARCH_AAEC2000 is not set
|
||||||
|
@ -112,7 +132,7 @@ CONFIG_OMAP_SERIAL_WAKE=y
|
||||||
# OMAP Core Type
|
# OMAP Core Type
|
||||||
#
|
#
|
||||||
# CONFIG_ARCH_OMAP730 is not set
|
# CONFIG_ARCH_OMAP730 is not set
|
||||||
# CONFIG_ARCH_OMAP1510 is not set
|
# CONFIG_ARCH_OMAP15XX is not set
|
||||||
CONFIG_ARCH_OMAP16XX=y
|
CONFIG_ARCH_OMAP16XX=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -177,6 +197,8 @@ CONFIG_FLATMEM_MANUAL=y
|
||||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
CONFIG_FLATMEM=y
|
CONFIG_FLATMEM=y
|
||||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
|
# CONFIG_SPARSEMEM_STATIC is not set
|
||||||
|
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||||
# CONFIG_LEDS is not set
|
# CONFIG_LEDS is not set
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
|
@ -258,13 +280,18 @@ CONFIG_IP_PNP_BOOTP=y
|
||||||
# CONFIG_INET_ESP is not set
|
# CONFIG_INET_ESP is not set
|
||||||
# CONFIG_INET_IPCOMP is not set
|
# CONFIG_INET_IPCOMP is not set
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
CONFIG_IP_TCPDIAG=y
|
CONFIG_INET_DIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# DCCP Configuration (EXPERIMENTAL)
|
||||||
|
#
|
||||||
|
# CONFIG_IP_DCCP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
# SCTP Configuration (EXPERIMENTAL)
|
||||||
#
|
#
|
||||||
|
@ -281,6 +308,10 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_NET_DIVERT is not set
|
# CONFIG_NET_DIVERT is not set
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# QoS and/or fair queueing
|
||||||
|
#
|
||||||
# CONFIG_NET_SCHED is not set
|
# CONFIG_NET_SCHED is not set
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
# CONFIG_NET_CLS_ROUTE is not set
|
||||||
|
|
||||||
|
@ -291,6 +322,7 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_HAMRADIO is not set
|
# CONFIG_HAMRADIO is not set
|
||||||
# CONFIG_IRDA is not set
|
# CONFIG_IRDA is not set
|
||||||
# CONFIG_BT is not set
|
# CONFIG_BT is not set
|
||||||
|
# CONFIG_IEEE80211 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device Drivers
|
# Device Drivers
|
||||||
|
@ -328,21 +360,13 @@ CONFIG_BLK_DEV_RAM=y
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
CONFIG_ATA_OVER_ETH=m
|
CONFIG_ATA_OVER_ETH=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI device support
|
# SCSI device support
|
||||||
#
|
#
|
||||||
|
# CONFIG_RAID_ATTRS is not set
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
CONFIG_SCSI_PROC_FS=y
|
CONFIG_SCSI_PROC_FS=y
|
||||||
|
|
||||||
|
@ -369,10 +393,12 @@ CONFIG_SCSI_PROC_FS=y
|
||||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||||
# CONFIG_SCSI_FC_ATTRS is not set
|
# CONFIG_SCSI_FC_ATTRS is not set
|
||||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||||
|
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI low-level drivers
|
# SCSI low-level drivers
|
||||||
#
|
#
|
||||||
|
# CONFIG_ISCSI_TCP is not set
|
||||||
# CONFIG_SCSI_SATA is not set
|
# CONFIG_SCSI_SATA is not set
|
||||||
# CONFIG_SCSI_DEBUG is not set
|
# CONFIG_SCSI_DEBUG is not set
|
||||||
|
|
||||||
|
@ -403,6 +429,11 @@ CONFIG_NETDEVICES=y
|
||||||
# CONFIG_EQUALIZER is not set
|
# CONFIG_EQUALIZER is not set
|
||||||
# CONFIG_TUN is not set
|
# CONFIG_TUN is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# PHY device support
|
||||||
|
#
|
||||||
|
# CONFIG_PHYLIB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10 or 100Mbit)
|
# Ethernet (10 or 100Mbit)
|
||||||
#
|
#
|
||||||
|
@ -439,6 +470,7 @@ CONFIG_PPP=y
|
||||||
# CONFIG_PPP_SYNC_TTY is not set
|
# CONFIG_PPP_SYNC_TTY is not set
|
||||||
# CONFIG_PPP_DEFLATE is not set
|
# CONFIG_PPP_DEFLATE is not set
|
||||||
# CONFIG_PPP_BSDCOMP is not set
|
# CONFIG_PPP_BSDCOMP is not set
|
||||||
|
# CONFIG_PPP_MPPE is not set
|
||||||
# CONFIG_PPPOE is not set
|
# CONFIG_PPPOE is not set
|
||||||
CONFIG_SLIP=y
|
CONFIG_SLIP=y
|
||||||
CONFIG_SLIP_COMPRESSED=y
|
CONFIG_SLIP_COMPRESSED=y
|
||||||
|
@ -541,24 +573,28 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
#
|
#
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
|
# CONFIG_TELCLOCK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
#
|
#
|
||||||
# CONFIG_I2C is not set
|
# CONFIG_I2C is not set
|
||||||
# CONFIG_I2C_SENSOR is not set
|
|
||||||
CONFIG_ISP1301_OMAP=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
#
|
#
|
||||||
CONFIG_HWMON=y
|
CONFIG_HWMON=y
|
||||||
|
# CONFIG_HWMON_VID is not set
|
||||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Multimedia Capabilities Port drivers
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
|
@ -576,7 +612,6 @@ CONFIG_FB=y
|
||||||
# CONFIG_FB_CFB_FILLRECT is not set
|
# CONFIG_FB_CFB_FILLRECT is not set
|
||||||
# CONFIG_FB_CFB_COPYAREA is not set
|
# CONFIG_FB_CFB_COPYAREA is not set
|
||||||
# CONFIG_FB_CFB_IMAGEBLIT is not set
|
# CONFIG_FB_CFB_IMAGEBLIT is not set
|
||||||
# CONFIG_FB_SOFT_CURSOR is not set
|
|
||||||
# CONFIG_FB_MACMODES is not set
|
# CONFIG_FB_MACMODES is not set
|
||||||
CONFIG_FB_MODE_HELPERS=y
|
CONFIG_FB_MODE_HELPERS=y
|
||||||
# CONFIG_FB_TILEBLITTING is not set
|
# CONFIG_FB_TILEBLITTING is not set
|
||||||
|
@ -589,6 +624,7 @@ CONFIG_FB_MODE_HELPERS=y
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
CONFIG_DUMMY_CONSOLE=y
|
CONFIG_DUMMY_CONSOLE=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
|
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
|
||||||
CONFIG_FONTS=y
|
CONFIG_FONTS=y
|
||||||
CONFIG_FONT_8x8=y
|
CONFIG_FONT_8x8=y
|
||||||
CONFIG_FONT_8x16=y
|
CONFIG_FONT_8x16=y
|
||||||
|
@ -600,6 +636,7 @@ CONFIG_FONT_8x16=y
|
||||||
# CONFIG_FONT_SUN8x16 is not set
|
# CONFIG_FONT_SUN8x16 is not set
|
||||||
# CONFIG_FONT_SUN12x22 is not set
|
# CONFIG_FONT_SUN12x22 is not set
|
||||||
# CONFIG_FONT_10x18 is not set
|
# CONFIG_FONT_10x18 is not set
|
||||||
|
# CONFIG_FONT_RL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Logo configuration
|
# Logo configuration
|
||||||
|
@ -624,10 +661,10 @@ CONFIG_SOUND=y
|
||||||
# Open Sound System
|
# Open Sound System
|
||||||
#
|
#
|
||||||
CONFIG_SOUND_PRIME=y
|
CONFIG_SOUND_PRIME=y
|
||||||
|
# CONFIG_OBSOLETE_OSS_DRIVER is not set
|
||||||
# CONFIG_SOUND_MSNDCLAS is not set
|
# CONFIG_SOUND_MSNDCLAS is not set
|
||||||
# CONFIG_SOUND_MSNDPIN is not set
|
# CONFIG_SOUND_MSNDPIN is not set
|
||||||
# CONFIG_SOUND_OSS is not set
|
# CONFIG_SOUND_OSS is not set
|
||||||
# CONFIG_SOUND_AD1980 is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB support
|
# USB support
|
||||||
|
@ -636,23 +673,22 @@ CONFIG_USB_ARCH_HAS_HCD=y
|
||||||
CONFIG_USB_ARCH_HAS_OHCI=y
|
CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
# CONFIG_USB is not set
|
# CONFIG_USB is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB Gadget Support
|
# USB Gadget Support
|
||||||
#
|
#
|
||||||
CONFIG_USB_GADGET=y
|
# CONFIG_USB_GADGET is not set
|
||||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
|
||||||
CONFIG_USB_GADGET_SELECTED=y
|
|
||||||
# CONFIG_USB_GADGET_NET2280 is not set
|
# CONFIG_USB_GADGET_NET2280 is not set
|
||||||
# CONFIG_USB_GADGET_PXA2XX is not set
|
# CONFIG_USB_GADGET_PXA2XX is not set
|
||||||
# CONFIG_USB_GADGET_GOKU is not set
|
# CONFIG_USB_GADGET_GOKU is not set
|
||||||
# CONFIG_USB_GADGET_LH7A40X is not set
|
# CONFIG_USB_GADGET_LH7A40X is not set
|
||||||
CONFIG_USB_GADGET_OMAP=y
|
# CONFIG_USB_GADGET_OMAP is not set
|
||||||
CONFIG_USB_OMAP=y
|
|
||||||
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
||||||
# CONFIG_USB_GADGET_DUALSPEED is not set
|
|
||||||
# CONFIG_USB_ZERO is not set
|
# CONFIG_USB_ZERO is not set
|
||||||
CONFIG_USB_ETH=y
|
# CONFIG_USB_ETH is not set
|
||||||
CONFIG_USB_ETH_RNDIS=y
|
|
||||||
# CONFIG_USB_GADGETFS is not set
|
# CONFIG_USB_GADGETFS is not set
|
||||||
# CONFIG_USB_FILE_STORAGE is not set
|
# CONFIG_USB_FILE_STORAGE is not set
|
||||||
# CONFIG_USB_G_SERIAL is not set
|
# CONFIG_USB_G_SERIAL is not set
|
||||||
|
@ -673,10 +709,6 @@ CONFIG_EXT2_FS=y
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
# CONFIG_FS_POSIX_ACL is not set
|
# CONFIG_FS_POSIX_ACL is not set
|
||||||
|
|
||||||
#
|
|
||||||
# XFS support
|
|
||||||
#
|
|
||||||
# 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=y
|
CONFIG_ROMFS_FS=y
|
||||||
|
@ -685,6 +717,7 @@ CONFIG_INOTIFY=y
|
||||||
CONFIG_DNOTIFY=y
|
CONFIG_DNOTIFY=y
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
# CONFIG_AUTOFS4_FS is not set
|
||||||
|
# CONFIG_FUSE_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# CD-ROM/DVD Filesystems
|
# CD-ROM/DVD Filesystems
|
||||||
|
@ -706,10 +739,10 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
|
||||||
# CONFIG_TMPFS is not set
|
# CONFIG_TMPFS is not set
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
|
# CONFIG_RELAYFS_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Miscellaneous filesystems
|
# Miscellaneous filesystems
|
||||||
|
@ -750,6 +783,7 @@ CONFIG_RPCSEC_GSS_KRB5=y
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
# CONFIG_9P_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Partition Types
|
# Partition Types
|
||||||
|
@ -859,6 +893,7 @@ CONFIG_CRYPTO_DES=y
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
# CONFIG_CRC_CCITT is not set
|
# CONFIG_CRC_CCITT is not set
|
||||||
|
# CONFIG_CRC16 is not set
|
||||||
CONFIG_CRC32=y
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
|
|
@ -86,12 +86,16 @@ EXPORT_SYMBOL(pm_power_off);
|
||||||
*/
|
*/
|
||||||
void default_idle(void)
|
void default_idle(void)
|
||||||
{
|
{
|
||||||
|
if (hlt_counter)
|
||||||
|
cpu_relax();
|
||||||
|
else {
|
||||||
local_irq_disable();
|
local_irq_disable();
|
||||||
if (!need_resched() && !hlt_counter) {
|
if (!need_resched()) {
|
||||||
timer_dyn_reprogram();
|
timer_dyn_reprogram();
|
||||||
arch_idle();
|
arch_idle();
|
||||||
}
|
}
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -116,13 +120,13 @@ void cpu_idle(void)
|
||||||
|
|
||||||
if (!idle)
|
if (!idle)
|
||||||
idle = default_idle;
|
idle = default_idle;
|
||||||
preempt_disable();
|
|
||||||
leds_event(led_idle_start);
|
leds_event(led_idle_start);
|
||||||
while (!need_resched())
|
while (!need_resched())
|
||||||
idle();
|
idle();
|
||||||
leds_event(led_idle_end);
|
leds_event(led_idle_end);
|
||||||
preempt_enable();
|
preempt_enable_no_resched();
|
||||||
schedule();
|
schedule();
|
||||||
|
preempt_disable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,7 +359,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start,
|
||||||
struct thread_info *thread = p->thread_info;
|
struct thread_info *thread = p->thread_info;
|
||||||
struct pt_regs *childregs;
|
struct pt_regs *childregs;
|
||||||
|
|
||||||
childregs = ((struct pt_regs *)((unsigned long)thread + THREAD_START_SP)) - 1;
|
childregs = (void *)thread + THREAD_START_SP - sizeof(*regs);
|
||||||
*childregs = *regs;
|
*childregs = *regs;
|
||||||
childregs->ARM_r0 = 0;
|
childregs->ARM_r0 = 0;
|
||||||
childregs->ARM_sp = stack_start;
|
childregs->ARM_sp = stack_start;
|
||||||
|
|
|
@ -256,7 +256,9 @@ void __cpuexit cpu_die(void)
|
||||||
asmlinkage void __cpuinit secondary_start_kernel(void)
|
asmlinkage void __cpuinit secondary_start_kernel(void)
|
||||||
{
|
{
|
||||||
struct mm_struct *mm = &init_mm;
|
struct mm_struct *mm = &init_mm;
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu;
|
||||||
|
|
||||||
|
cpu = smp_processor_id();
|
||||||
|
|
||||||
printk("CPU%u: Booted secondary processor\n", cpu);
|
printk("CPU%u: Booted secondary processor\n", cpu);
|
||||||
|
|
||||||
|
@ -273,6 +275,7 @@ asmlinkage void __cpuinit secondary_start_kernel(void)
|
||||||
local_flush_tlb_all();
|
local_flush_tlb_all();
|
||||||
|
|
||||||
cpu_init();
|
cpu_init();
|
||||||
|
preempt_disable();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Give the platform a chance to do its own initialisation.
|
* Give the platform a chance to do its own initialisation.
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
and r2, r0, #7
|
and r2, r0, #7
|
||||||
mov r3, #1
|
mov r3, #1
|
||||||
mov r3, r3, lsl r2
|
mov r3, r3, lsl r2
|
||||||
save_and_disable_irqs ip, r2
|
save_and_disable_irqs ip
|
||||||
ldrb r2, [r1, r0, lsr #3]
|
ldrb r2, [r1, r0, lsr #3]
|
||||||
\instr r2, r2, r3
|
\instr r2, r2, r3
|
||||||
strb r2, [r1, r0, lsr #3]
|
strb r2, [r1, r0, lsr #3]
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
add r1, r1, r0, lsr #3
|
add r1, r1, r0, lsr #3
|
||||||
and r3, r0, #7
|
and r3, r0, #7
|
||||||
mov r0, #1
|
mov r0, #1
|
||||||
save_and_disable_irqs ip, r2
|
save_and_disable_irqs ip
|
||||||
ldrb r2, [r1]
|
ldrb r2, [r1]
|
||||||
tst r2, r0, lsl r3
|
tst r2, r0, lsl r3
|
||||||
\instr r2, r2, r0, lsl r3
|
\instr r2, r2, r0, lsl r3
|
||||||
|
|
|
@ -26,7 +26,7 @@ td1 .req r4 @ save before use
|
||||||
td2 .req r5 @ save before use
|
td2 .req r5 @ save before use
|
||||||
td3 .req lr
|
td3 .req lr
|
||||||
|
|
||||||
.zero: mov r0, sum
|
.Lzero: mov r0, sum
|
||||||
add sp, sp, #4
|
add sp, sp, #4
|
||||||
ldr pc, [sp], #4
|
ldr pc, [sp], #4
|
||||||
|
|
||||||
|
@ -34,21 +34,22 @@ td3 .req lr
|
||||||
* Handle 0 to 7 bytes, with any alignment of source and
|
* Handle 0 to 7 bytes, with any alignment of source and
|
||||||
* destination pointers. Note that when we get here, C = 0
|
* destination pointers. Note that when we get here, C = 0
|
||||||
*/
|
*/
|
||||||
.less8: teq len, #0 @ check for zero count
|
.Lless8: teq len, #0 @ check for zero count
|
||||||
beq .zero
|
beq .Lzero
|
||||||
|
|
||||||
/* we must have at least one byte. */
|
/* we must have at least one byte. */
|
||||||
tst buf, #1 @ odd address?
|
tst buf, #1 @ odd address?
|
||||||
|
movne sum, sum, ror #8
|
||||||
ldrneb td0, [buf], #1
|
ldrneb td0, [buf], #1
|
||||||
subne len, len, #1
|
subne len, len, #1
|
||||||
adcnes sum, sum, td0, put_byte_1
|
adcnes sum, sum, td0, put_byte_1
|
||||||
|
|
||||||
.less4: tst len, #6
|
.Lless4: tst len, #6
|
||||||
beq .less8_byte
|
beq .Lless8_byte
|
||||||
|
|
||||||
/* we are now half-word aligned */
|
/* we are now half-word aligned */
|
||||||
|
|
||||||
.less8_wordlp:
|
.Lless8_wordlp:
|
||||||
#if __LINUX_ARM_ARCH__ >= 4
|
#if __LINUX_ARM_ARCH__ >= 4
|
||||||
ldrh td0, [buf], #2
|
ldrh td0, [buf], #2
|
||||||
sub len, len, #2
|
sub len, len, #2
|
||||||
|
@ -64,19 +65,19 @@ td3 .req lr
|
||||||
#endif
|
#endif
|
||||||
adcs sum, sum, td0
|
adcs sum, sum, td0
|
||||||
tst len, #6
|
tst len, #6
|
||||||
bne .less8_wordlp
|
bne .Lless8_wordlp
|
||||||
|
|
||||||
.less8_byte: tst len, #1 @ odd number of bytes
|
.Lless8_byte: tst len, #1 @ odd number of bytes
|
||||||
ldrneb td0, [buf], #1 @ include last byte
|
ldrneb td0, [buf], #1 @ include last byte
|
||||||
adcnes sum, sum, td0, put_byte_0 @ update checksum
|
adcnes sum, sum, td0, put_byte_0 @ update checksum
|
||||||
|
|
||||||
.done: adc r0, sum, #0 @ collect up the last carry
|
.Ldone: adc r0, sum, #0 @ collect up the last carry
|
||||||
ldr td0, [sp], #4
|
ldr td0, [sp], #4
|
||||||
tst td0, #1 @ check buffer alignment
|
tst td0, #1 @ check buffer alignment
|
||||||
movne r0, r0, ror #8 @ rotate checksum by 8 bits
|
movne r0, r0, ror #8 @ rotate checksum by 8 bits
|
||||||
ldr pc, [sp], #4 @ return
|
ldr pc, [sp], #4 @ return
|
||||||
|
|
||||||
.not_aligned: tst buf, #1 @ odd address
|
.Lnot_aligned: tst buf, #1 @ odd address
|
||||||
ldrneb td0, [buf], #1 @ make even
|
ldrneb td0, [buf], #1 @ make even
|
||||||
subne len, len, #1
|
subne len, len, #1
|
||||||
adcnes sum, sum, td0, put_byte_1 @ update checksum
|
adcnes sum, sum, td0, put_byte_1 @ update checksum
|
||||||
|
@ -101,11 +102,14 @@ td3 .req lr
|
||||||
ENTRY(csum_partial)
|
ENTRY(csum_partial)
|
||||||
stmfd sp!, {buf, lr}
|
stmfd sp!, {buf, lr}
|
||||||
cmp len, #8 @ Ensure that we have at least
|
cmp len, #8 @ Ensure that we have at least
|
||||||
blo .less8 @ 8 bytes to copy.
|
blo .Lless8 @ 8 bytes to copy.
|
||||||
|
|
||||||
|
tst buf, #1
|
||||||
|
movne sum, sum, ror #8
|
||||||
|
|
||||||
adds sum, sum, #0 @ C = 0
|
adds sum, sum, #0 @ C = 0
|
||||||
tst buf, #3 @ Test destination alignment
|
tst buf, #3 @ Test destination alignment
|
||||||
blne .not_aligned @ aligh destination, return here
|
blne .Lnot_aligned @ align destination, return here
|
||||||
|
|
||||||
1: bics ip, len, #31
|
1: bics ip, len, #31
|
||||||
beq 3f
|
beq 3f
|
||||||
|
@ -127,11 +131,11 @@ ENTRY(csum_partial)
|
||||||
ldmfd sp!, {r4 - r5}
|
ldmfd sp!, {r4 - r5}
|
||||||
|
|
||||||
3: tst len, #0x1c @ should not change C
|
3: tst len, #0x1c @ should not change C
|
||||||
beq .less4
|
beq .Lless4
|
||||||
|
|
||||||
4: ldr td0, [buf], #4
|
4: ldr td0, [buf], #4
|
||||||
sub len, len, #4
|
sub len, len, #4
|
||||||
adcs sum, sum, td0
|
adcs sum, sum, td0
|
||||||
tst len, #0x1c
|
tst len, #0x1c
|
||||||
bne 4b
|
bne 4b
|
||||||
b .less4
|
b .Lless4
|
||||||
|
|
|
@ -22,7 +22,7 @@ dst .req r1
|
||||||
len .req r2
|
len .req r2
|
||||||
sum .req r3
|
sum .req r3
|
||||||
|
|
||||||
.zero: mov r0, sum
|
.Lzero: mov r0, sum
|
||||||
load_regs ea
|
load_regs ea
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -31,8 +31,9 @@ sum .req r3
|
||||||
* the length. Note that the source pointer hasn't been
|
* the length. Note that the source pointer hasn't been
|
||||||
* aligned yet.
|
* aligned yet.
|
||||||
*/
|
*/
|
||||||
.dst_unaligned: tst dst, #1
|
.Ldst_unaligned:
|
||||||
beq .dst_16bit
|
tst dst, #1
|
||||||
|
beq .Ldst_16bit
|
||||||
|
|
||||||
load1b ip
|
load1b ip
|
||||||
sub len, len, #1
|
sub len, len, #1
|
||||||
|
@ -41,7 +42,7 @@ sum .req r3
|
||||||
tst dst, #2
|
tst dst, #2
|
||||||
moveq pc, lr @ dst is now 32bit aligned
|
moveq pc, lr @ dst is now 32bit aligned
|
||||||
|
|
||||||
.dst_16bit: load2b r8, ip
|
.Ldst_16bit: load2b r8, ip
|
||||||
sub len, len, #2
|
sub len, len, #2
|
||||||
adcs sum, sum, r8, put_byte_0
|
adcs sum, sum, r8, put_byte_0
|
||||||
strb r8, [dst], #1
|
strb r8, [dst], #1
|
||||||
|
@ -53,12 +54,12 @@ sum .req r3
|
||||||
* Handle 0 to 7 bytes, with any alignment of source and
|
* Handle 0 to 7 bytes, with any alignment of source and
|
||||||
* destination pointers. Note that when we get here, C = 0
|
* destination pointers. Note that when we get here, C = 0
|
||||||
*/
|
*/
|
||||||
.less8: teq len, #0 @ check for zero count
|
.Lless8: teq len, #0 @ check for zero count
|
||||||
beq .zero
|
beq .Lzero
|
||||||
|
|
||||||
/* we must have at least one byte. */
|
/* we must have at least one byte. */
|
||||||
tst dst, #1 @ dst 16-bit aligned
|
tst dst, #1 @ dst 16-bit aligned
|
||||||
beq .less8_aligned
|
beq .Lless8_aligned
|
||||||
|
|
||||||
/* Align dst */
|
/* Align dst */
|
||||||
load1b ip
|
load1b ip
|
||||||
|
@ -66,7 +67,7 @@ sum .req r3
|
||||||
adcs sum, sum, ip, put_byte_1 @ update checksum
|
adcs sum, sum, ip, put_byte_1 @ update checksum
|
||||||
strb ip, [dst], #1
|
strb ip, [dst], #1
|
||||||
tst len, #6
|
tst len, #6
|
||||||
beq .less8_byteonly
|
beq .Lless8_byteonly
|
||||||
|
|
||||||
1: load2b r8, ip
|
1: load2b r8, ip
|
||||||
sub len, len, #2
|
sub len, len, #2
|
||||||
|
@ -74,15 +75,16 @@ sum .req r3
|
||||||
strb r8, [dst], #1
|
strb r8, [dst], #1
|
||||||
adcs sum, sum, ip, put_byte_1
|
adcs sum, sum, ip, put_byte_1
|
||||||
strb ip, [dst], #1
|
strb ip, [dst], #1
|
||||||
.less8_aligned: tst len, #6
|
.Lless8_aligned:
|
||||||
|
tst len, #6
|
||||||
bne 1b
|
bne 1b
|
||||||
.less8_byteonly:
|
.Lless8_byteonly:
|
||||||
tst len, #1
|
tst len, #1
|
||||||
beq .done
|
beq .Ldone
|
||||||
load1b r8
|
load1b r8
|
||||||
adcs sum, sum, r8, put_byte_0 @ update checksum
|
adcs sum, sum, r8, put_byte_0 @ update checksum
|
||||||
strb r8, [dst], #1
|
strb r8, [dst], #1
|
||||||
b .done
|
b .Ldone
|
||||||
|
|
||||||
FN_ENTRY
|
FN_ENTRY
|
||||||
mov ip, sp
|
mov ip, sp
|
||||||
|
@ -90,11 +92,11 @@ FN_ENTRY
|
||||||
sub fp, ip, #4
|
sub fp, ip, #4
|
||||||
|
|
||||||
cmp len, #8 @ Ensure that we have at least
|
cmp len, #8 @ Ensure that we have at least
|
||||||
blo .less8 @ 8 bytes to copy.
|
blo .Lless8 @ 8 bytes to copy.
|
||||||
|
|
||||||
adds sum, sum, #0 @ C = 0
|
adds sum, sum, #0 @ C = 0
|
||||||
tst dst, #3 @ Test destination alignment
|
tst dst, #3 @ Test destination alignment
|
||||||
blne .dst_unaligned @ align destination, return here
|
blne .Ldst_unaligned @ align destination, return here
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ok, the dst pointer is now 32bit aligned, and we know
|
* Ok, the dst pointer is now 32bit aligned, and we know
|
||||||
|
@ -103,7 +105,7 @@ FN_ENTRY
|
||||||
*/
|
*/
|
||||||
|
|
||||||
tst src, #3 @ Test source alignment
|
tst src, #3 @ Test source alignment
|
||||||
bne .src_not_aligned
|
bne .Lsrc_not_aligned
|
||||||
|
|
||||||
/* Routine for src & dst aligned */
|
/* Routine for src & dst aligned */
|
||||||
|
|
||||||
|
@ -136,17 +138,17 @@ FN_ENTRY
|
||||||
adcs sum, sum, r4
|
adcs sum, sum, r4
|
||||||
|
|
||||||
4: ands len, len, #3
|
4: ands len, len, #3
|
||||||
beq .done
|
beq .Ldone
|
||||||
load1l r4
|
load1l r4
|
||||||
tst len, #2
|
tst len, #2
|
||||||
mov r5, r4, get_byte_0
|
mov r5, r4, get_byte_0
|
||||||
beq .exit
|
beq .Lexit
|
||||||
adcs sum, sum, r4, push #16
|
adcs sum, sum, r4, push #16
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
mov r5, r4, get_byte_1
|
mov r5, r4, get_byte_1
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
mov r5, r4, get_byte_2
|
mov r5, r4, get_byte_2
|
||||||
.exit: tst len, #1
|
.Lexit: tst len, #1
|
||||||
strneb r5, [dst], #1
|
strneb r5, [dst], #1
|
||||||
andne r5, r5, #255
|
andne r5, r5, #255
|
||||||
adcnes sum, sum, r5, put_byte_0
|
adcnes sum, sum, r5, put_byte_0
|
||||||
|
@ -157,20 +159,20 @@ FN_ENTRY
|
||||||
* the inefficient byte manipulations in the
|
* the inefficient byte manipulations in the
|
||||||
* architecture independent code.
|
* architecture independent code.
|
||||||
*/
|
*/
|
||||||
.done: adc r0, sum, #0
|
.Ldone: adc r0, sum, #0
|
||||||
ldr sum, [sp, #0] @ dst
|
ldr sum, [sp, #0] @ dst
|
||||||
tst sum, #1
|
tst sum, #1
|
||||||
movne r0, r0, ror #8
|
movne r0, r0, ror #8
|
||||||
load_regs ea
|
load_regs ea
|
||||||
|
|
||||||
.src_not_aligned:
|
.Lsrc_not_aligned:
|
||||||
adc sum, sum, #0 @ include C from dst alignment
|
adc sum, sum, #0 @ include C from dst alignment
|
||||||
and ip, src, #3
|
and ip, src, #3
|
||||||
bic src, src, #3
|
bic src, src, #3
|
||||||
load1l r5
|
load1l r5
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
beq .src2_aligned
|
beq .Lsrc2_aligned
|
||||||
bhi .src3_aligned
|
bhi .Lsrc3_aligned
|
||||||
mov r4, r5, pull #8 @ C = 0
|
mov r4, r5, pull #8 @ C = 0
|
||||||
bics ip, len, #15
|
bics ip, len, #15
|
||||||
beq 2f
|
beq 2f
|
||||||
|
@ -211,18 +213,18 @@ FN_ENTRY
|
||||||
adcs sum, sum, r4
|
adcs sum, sum, r4
|
||||||
mov r4, r5, pull #8
|
mov r4, r5, pull #8
|
||||||
4: ands len, len, #3
|
4: ands len, len, #3
|
||||||
beq .done
|
beq .Ldone
|
||||||
mov r5, r4, get_byte_0
|
mov r5, r4, get_byte_0
|
||||||
tst len, #2
|
tst len, #2
|
||||||
beq .exit
|
beq .Lexit
|
||||||
adcs sum, sum, r4, push #16
|
adcs sum, sum, r4, push #16
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
mov r5, r4, get_byte_1
|
mov r5, r4, get_byte_1
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
mov r5, r4, get_byte_2
|
mov r5, r4, get_byte_2
|
||||||
b .exit
|
b .Lexit
|
||||||
|
|
||||||
.src2_aligned: mov r4, r5, pull #16
|
.Lsrc2_aligned: mov r4, r5, pull #16
|
||||||
adds sum, sum, #0
|
adds sum, sum, #0
|
||||||
bics ip, len, #15
|
bics ip, len, #15
|
||||||
beq 2f
|
beq 2f
|
||||||
|
@ -263,20 +265,20 @@ FN_ENTRY
|
||||||
adcs sum, sum, r4
|
adcs sum, sum, r4
|
||||||
mov r4, r5, pull #16
|
mov r4, r5, pull #16
|
||||||
4: ands len, len, #3
|
4: ands len, len, #3
|
||||||
beq .done
|
beq .Ldone
|
||||||
mov r5, r4, get_byte_0
|
mov r5, r4, get_byte_0
|
||||||
tst len, #2
|
tst len, #2
|
||||||
beq .exit
|
beq .Lexit
|
||||||
adcs sum, sum, r4
|
adcs sum, sum, r4
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
mov r5, r4, get_byte_1
|
mov r5, r4, get_byte_1
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
tst len, #1
|
tst len, #1
|
||||||
beq .done
|
beq .Ldone
|
||||||
load1b r5
|
load1b r5
|
||||||
b .exit
|
b .Lexit
|
||||||
|
|
||||||
.src3_aligned: mov r4, r5, pull #24
|
.Lsrc3_aligned: mov r4, r5, pull #24
|
||||||
adds sum, sum, #0
|
adds sum, sum, #0
|
||||||
bics ip, len, #15
|
bics ip, len, #15
|
||||||
beq 2f
|
beq 2f
|
||||||
|
@ -317,10 +319,10 @@ FN_ENTRY
|
||||||
adcs sum, sum, r4
|
adcs sum, sum, r4
|
||||||
mov r4, r5, pull #24
|
mov r4, r5, pull #24
|
||||||
4: ands len, len, #3
|
4: ands len, len, #3
|
||||||
beq .done
|
beq .Ldone
|
||||||
mov r5, r4, get_byte_0
|
mov r5, r4, get_byte_0
|
||||||
tst len, #2
|
tst len, #2
|
||||||
beq .exit
|
beq .Lexit
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
adcs sum, sum, r4
|
adcs sum, sum, r4
|
||||||
load1l r4
|
load1l r4
|
||||||
|
@ -328,4 +330,4 @@ FN_ENTRY
|
||||||
strb r5, [dst], #1
|
strb r5, [dst], #1
|
||||||
adcs sum, sum, r4, push #24
|
adcs sum, sum, r4, push #24
|
||||||
mov r5, r4, get_byte_1
|
mov r5, r4, get_byte_1
|
||||||
b .exit
|
b .Lexit
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
.text
|
.text
|
||||||
|
|
||||||
LC0: .word loops_per_jiffy
|
.LC0: .word loops_per_jiffy
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 0 <= r0 <= 2000
|
* 0 <= r0 <= 2000
|
||||||
|
@ -21,7 +21,7 @@ ENTRY(__udelay)
|
||||||
orr r2, r2, #0x00db
|
orr r2, r2, #0x00db
|
||||||
mul r0, r2, r0
|
mul r0, r2, r0
|
||||||
ENTRY(__const_udelay) @ 0 <= r0 <= 0x01ffffff
|
ENTRY(__const_udelay) @ 0 <= r0 <= 0x01ffffff
|
||||||
ldr r2, LC0
|
ldr r2, .LC0
|
||||||
ldr r2, [r2] @ max = 0x0fffffff
|
ldr r2, [r2] @ max = 0x0fffffff
|
||||||
mov r0, r0, lsr #11 @ max = 0x00003fff
|
mov r0, r0, lsr #11 @ max = 0x00003fff
|
||||||
mov r2, r2, lsr #11 @ max = 0x0003ffff
|
mov r2, r2, lsr #11 @ max = 0x0003ffff
|
||||||
|
|
|
@ -27,7 +27,7 @@ ENTRY(_find_first_zero_bit_le)
|
||||||
mov r2, #0
|
mov r2, #0
|
||||||
1: ldrb r3, [r0, r2, lsr #3]
|
1: ldrb r3, [r0, r2, lsr #3]
|
||||||
eors r3, r3, #0xff @ invert bits
|
eors r3, r3, #0xff @ invert bits
|
||||||
bne .found @ any now set - found zero bit
|
bne .L_found @ any now set - found zero bit
|
||||||
add r2, r2, #8 @ next bit pointer
|
add r2, r2, #8 @ next bit pointer
|
||||||
2: cmp r2, r1 @ any more?
|
2: cmp r2, r1 @ any more?
|
||||||
blo 1b
|
blo 1b
|
||||||
|
@ -46,7 +46,7 @@ ENTRY(_find_next_zero_bit_le)
|
||||||
ldrb r3, [r0, r2, lsr #3]
|
ldrb r3, [r0, r2, lsr #3]
|
||||||
eor r3, r3, #0xff @ now looking for a 1 bit
|
eor r3, r3, #0xff @ now looking for a 1 bit
|
||||||
movs r3, r3, lsr ip @ shift off unused bits
|
movs r3, r3, lsr ip @ shift off unused bits
|
||||||
bne .found
|
bne .L_found
|
||||||
orr r2, r2, #7 @ if zero, then no bits here
|
orr r2, r2, #7 @ if zero, then no bits here
|
||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
|
@ -61,7 +61,7 @@ ENTRY(_find_first_bit_le)
|
||||||
mov r2, #0
|
mov r2, #0
|
||||||
1: ldrb r3, [r0, r2, lsr #3]
|
1: ldrb r3, [r0, r2, lsr #3]
|
||||||
movs r3, r3
|
movs r3, r3
|
||||||
bne .found @ any now set - found zero bit
|
bne .L_found @ any now set - found zero bit
|
||||||
add r2, r2, #8 @ next bit pointer
|
add r2, r2, #8 @ next bit pointer
|
||||||
2: cmp r2, r1 @ any more?
|
2: cmp r2, r1 @ any more?
|
||||||
blo 1b
|
blo 1b
|
||||||
|
@ -79,7 +79,7 @@ ENTRY(_find_next_bit_le)
|
||||||
beq 1b @ If new byte, goto old routine
|
beq 1b @ If new byte, goto old routine
|
||||||
ldrb r3, [r0, r2, lsr #3]
|
ldrb r3, [r0, r2, lsr #3]
|
||||||
movs r3, r3, lsr ip @ shift off unused bits
|
movs r3, r3, lsr ip @ shift off unused bits
|
||||||
bne .found
|
bne .L_found
|
||||||
orr r2, r2, #7 @ if zero, then no bits here
|
orr r2, r2, #7 @ if zero, then no bits here
|
||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
|
@ -93,7 +93,7 @@ ENTRY(_find_first_zero_bit_be)
|
||||||
1: eor r3, r2, #0x18 @ big endian byte ordering
|
1: eor r3, r2, #0x18 @ big endian byte ordering
|
||||||
ldrb r3, [r0, r3, lsr #3]
|
ldrb r3, [r0, r3, lsr #3]
|
||||||
eors r3, r3, #0xff @ invert bits
|
eors r3, r3, #0xff @ invert bits
|
||||||
bne .found @ any now set - found zero bit
|
bne .L_found @ any now set - found zero bit
|
||||||
add r2, r2, #8 @ next bit pointer
|
add r2, r2, #8 @ next bit pointer
|
||||||
2: cmp r2, r1 @ any more?
|
2: cmp r2, r1 @ any more?
|
||||||
blo 1b
|
blo 1b
|
||||||
|
@ -109,7 +109,7 @@ ENTRY(_find_next_zero_bit_be)
|
||||||
ldrb r3, [r0, r3, lsr #3]
|
ldrb r3, [r0, r3, lsr #3]
|
||||||
eor r3, r3, #0xff @ now looking for a 1 bit
|
eor r3, r3, #0xff @ now looking for a 1 bit
|
||||||
movs r3, r3, lsr ip @ shift off unused bits
|
movs r3, r3, lsr ip @ shift off unused bits
|
||||||
bne .found
|
bne .L_found
|
||||||
orr r2, r2, #7 @ if zero, then no bits here
|
orr r2, r2, #7 @ if zero, then no bits here
|
||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
|
@ -121,7 +121,7 @@ ENTRY(_find_first_bit_be)
|
||||||
1: eor r3, r2, #0x18 @ big endian byte ordering
|
1: eor r3, r2, #0x18 @ big endian byte ordering
|
||||||
ldrb r3, [r0, r3, lsr #3]
|
ldrb r3, [r0, r3, lsr #3]
|
||||||
movs r3, r3
|
movs r3, r3
|
||||||
bne .found @ any now set - found zero bit
|
bne .L_found @ any now set - found zero bit
|
||||||
add r2, r2, #8 @ next bit pointer
|
add r2, r2, #8 @ next bit pointer
|
||||||
2: cmp r2, r1 @ any more?
|
2: cmp r2, r1 @ any more?
|
||||||
blo 1b
|
blo 1b
|
||||||
|
@ -136,7 +136,7 @@ ENTRY(_find_next_bit_be)
|
||||||
eor r3, r2, #0x18 @ big endian byte ordering
|
eor r3, r2, #0x18 @ big endian byte ordering
|
||||||
ldrb r3, [r0, r3, lsr #3]
|
ldrb r3, [r0, r3, lsr #3]
|
||||||
movs r3, r3, lsr ip @ shift off unused bits
|
movs r3, r3, lsr ip @ shift off unused bits
|
||||||
bne .found
|
bne .L_found
|
||||||
orr r2, r2, #7 @ if zero, then no bits here
|
orr r2, r2, #7 @ if zero, then no bits here
|
||||||
add r2, r2, #1 @ align bit pointer
|
add r2, r2, #1 @ align bit pointer
|
||||||
b 2b @ loop for next bit
|
b 2b @ loop for next bit
|
||||||
|
@ -146,7 +146,7 @@ ENTRY(_find_next_bit_be)
|
||||||
/*
|
/*
|
||||||
* One or more bits in the LSB of r3 are assumed to be set.
|
* One or more bits in the LSB of r3 are assumed to be set.
|
||||||
*/
|
*/
|
||||||
.found:
|
.L_found:
|
||||||
#if __LINUX_ARM_ARCH__ >= 5
|
#if __LINUX_ARM_ARCH__ >= 5
|
||||||
rsb r1, r3, #0
|
rsb r1, r3, #0
|
||||||
and r3, r3, r1
|
and r3, r3, r1
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
.text
|
.text
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.iosl_warning:
|
.Liosl_warning:
|
||||||
.ascii "<4>insl/outsl not implemented, called from %08lX\0"
|
.ascii "<4>insl/outsl not implemented, called from %08lX\0"
|
||||||
.align
|
.align
|
||||||
|
|
||||||
|
@ -27,6 +27,6 @@
|
||||||
*/
|
*/
|
||||||
ENTRY(insl)
|
ENTRY(insl)
|
||||||
ENTRY(outsl)
|
ENTRY(outsl)
|
||||||
adr r0, .iosl_warning
|
adr r0, .Liosl_warning
|
||||||
mov r1, lr
|
mov r1, lr
|
||||||
b printk
|
b printk
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include <linux/linkage.h>
|
#include <linux/linkage.h>
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
.insb_align: rsb ip, ip, #4
|
.Linsb_align: rsb ip, ip, #4
|
||||||
cmp ip, r2
|
cmp ip, r2
|
||||||
movgt ip, r2
|
movgt ip, r2
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
|
@ -21,20 +21,20 @@
|
||||||
ldrgtb r3, [r0]
|
ldrgtb r3, [r0]
|
||||||
strgtb r3, [r1], #1
|
strgtb r3, [r1], #1
|
||||||
subs r2, r2, ip
|
subs r2, r2, ip
|
||||||
bne .insb_aligned
|
bne .Linsb_aligned
|
||||||
|
|
||||||
ENTRY(__raw_readsb)
|
ENTRY(__raw_readsb)
|
||||||
teq r2, #0 @ do we have to check for the zero len?
|
teq r2, #0 @ do we have to check for the zero len?
|
||||||
moveq pc, lr
|
moveq pc, lr
|
||||||
ands ip, r1, #3
|
ands ip, r1, #3
|
||||||
bne .insb_align
|
bne .Linsb_align
|
||||||
|
|
||||||
.insb_aligned: stmfd sp!, {r4 - r6, lr}
|
.Linsb_aligned: stmfd sp!, {r4 - r6, lr}
|
||||||
|
|
||||||
subs r2, r2, #16
|
subs r2, r2, #16
|
||||||
bmi .insb_no_16
|
bmi .Linsb_no_16
|
||||||
|
|
||||||
.insb_16_lp: ldrb r3, [r0]
|
.Linsb_16_lp: ldrb r3, [r0]
|
||||||
ldrb r4, [r0]
|
ldrb r4, [r0]
|
||||||
ldrb r5, [r0]
|
ldrb r5, [r0]
|
||||||
mov r3, r3, put_byte_0
|
mov r3, r3, put_byte_0
|
||||||
|
@ -69,13 +69,13 @@ ENTRY(__raw_readsb)
|
||||||
stmia r1!, {r3 - r6}
|
stmia r1!, {r3 - r6}
|
||||||
|
|
||||||
subs r2, r2, #16
|
subs r2, r2, #16
|
||||||
bpl .insb_16_lp
|
bpl .Linsb_16_lp
|
||||||
|
|
||||||
tst r2, #15
|
tst r2, #15
|
||||||
LOADREGS(eqfd, sp!, {r4 - r6, pc})
|
LOADREGS(eqfd, sp!, {r4 - r6, pc})
|
||||||
|
|
||||||
.insb_no_16: tst r2, #8
|
.Linsb_no_16: tst r2, #8
|
||||||
beq .insb_no_8
|
beq .Linsb_no_8
|
||||||
|
|
||||||
ldrb r3, [r0]
|
ldrb r3, [r0]
|
||||||
ldrb r4, [r0]
|
ldrb r4, [r0]
|
||||||
|
@ -95,8 +95,8 @@ ENTRY(__raw_readsb)
|
||||||
orr r4, r4, ip, put_byte_3
|
orr r4, r4, ip, put_byte_3
|
||||||
stmia r1!, {r3, r4}
|
stmia r1!, {r3, r4}
|
||||||
|
|
||||||
.insb_no_8: tst r2, #4
|
.Linsb_no_8: tst r2, #4
|
||||||
beq .insb_no_4
|
beq .Linsb_no_4
|
||||||
|
|
||||||
ldrb r3, [r0]
|
ldrb r3, [r0]
|
||||||
ldrb r4, [r0]
|
ldrb r4, [r0]
|
||||||
|
@ -108,7 +108,7 @@ ENTRY(__raw_readsb)
|
||||||
orr r3, r3, r6, put_byte_3
|
orr r3, r3, r6, put_byte_3
|
||||||
str r3, [r1], #4
|
str r3, [r1], #4
|
||||||
|
|
||||||
.insb_no_4: ands r2, r2, #3
|
.Linsb_no_4: ands r2, r2, #3
|
||||||
LOADREGS(eqfd, sp!, {r4 - r6, pc})
|
LOADREGS(eqfd, sp!, {r4 - r6, pc})
|
||||||
|
|
||||||
cmp r2, #2
|
cmp r2, #2
|
||||||
|
|
|
@ -11,16 +11,16 @@
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/hardware.h>
|
#include <asm/hardware.h>
|
||||||
|
|
||||||
.insw_bad_alignment:
|
.Linsw_bad_alignment:
|
||||||
adr r0, .insw_bad_align_msg
|
adr r0, .Linsw_bad_align_msg
|
||||||
mov r2, lr
|
mov r2, lr
|
||||||
b panic
|
b panic
|
||||||
.insw_bad_align_msg:
|
.Linsw_bad_align_msg:
|
||||||
.asciz "insw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
|
.asciz "insw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.insw_align: tst r1, #1
|
.Linsw_align: tst r1, #1
|
||||||
bne .insw_bad_alignment
|
bne .Linsw_bad_alignment
|
||||||
|
|
||||||
ldr r3, [r0]
|
ldr r3, [r0]
|
||||||
strb r3, [r1], #1
|
strb r3, [r1], #1
|
||||||
|
@ -34,16 +34,16 @@ ENTRY(__raw_readsw)
|
||||||
teq r2, #0 @ do we have to check for the zero len?
|
teq r2, #0 @ do we have to check for the zero len?
|
||||||
moveq pc, lr
|
moveq pc, lr
|
||||||
tst r1, #3
|
tst r1, #3
|
||||||
bne .insw_align
|
bne .Linsw_align
|
||||||
|
|
||||||
.insw_aligned: mov ip, #0xff
|
.Linsw_aligned: mov ip, #0xff
|
||||||
orr ip, ip, ip, lsl #8
|
orr ip, ip, ip, lsl #8
|
||||||
stmfd sp!, {r4, r5, r6, lr}
|
stmfd sp!, {r4, r5, r6, lr}
|
||||||
|
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
bmi .no_insw_8
|
bmi .Lno_insw_8
|
||||||
|
|
||||||
.insw_8_lp: ldr r3, [r0]
|
.Linsw_8_lp: ldr r3, [r0]
|
||||||
and r3, r3, ip
|
and r3, r3, ip
|
||||||
ldr r4, [r0]
|
ldr r4, [r0]
|
||||||
orr r3, r3, r4, lsl #16
|
orr r3, r3, r4, lsl #16
|
||||||
|
@ -66,13 +66,13 @@ ENTRY(__raw_readsw)
|
||||||
stmia r1!, {r3 - r6}
|
stmia r1!, {r3 - r6}
|
||||||
|
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
bpl .insw_8_lp
|
bpl .Linsw_8_lp
|
||||||
|
|
||||||
tst r2, #7
|
tst r2, #7
|
||||||
LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
|
LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
|
||||||
|
|
||||||
.no_insw_8: tst r2, #4
|
.Lno_insw_8: tst r2, #4
|
||||||
beq .no_insw_4
|
beq .Lno_insw_4
|
||||||
|
|
||||||
ldr r3, [r0]
|
ldr r3, [r0]
|
||||||
and r3, r3, ip
|
and r3, r3, ip
|
||||||
|
@ -86,8 +86,8 @@ ENTRY(__raw_readsw)
|
||||||
|
|
||||||
stmia r1!, {r3, r4}
|
stmia r1!, {r3, r4}
|
||||||
|
|
||||||
.no_insw_4: tst r2, #2
|
.Lno_insw_4: tst r2, #2
|
||||||
beq .no_insw_2
|
beq .Lno_insw_2
|
||||||
|
|
||||||
ldr r3, [r0]
|
ldr r3, [r0]
|
||||||
and r3, r3, ip
|
and r3, r3, ip
|
||||||
|
@ -96,7 +96,7 @@ ENTRY(__raw_readsw)
|
||||||
|
|
||||||
str r3, [r1], #4
|
str r3, [r1], #4
|
||||||
|
|
||||||
.no_insw_2: tst r2, #1
|
.Lno_insw_2: tst r2, #1
|
||||||
ldrne r3, [r0]
|
ldrne r3, [r0]
|
||||||
strneb r3, [r1], #1
|
strneb r3, [r1], #1
|
||||||
movne r3, r3, lsr #8
|
movne r3, r3, lsr #8
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.insw_align: movs ip, r1, lsl #31
|
.Linsw_align: movs ip, r1, lsl #31
|
||||||
bne .insw_noalign
|
bne .Linsw_noalign
|
||||||
ldrh ip, [r0]
|
ldrh ip, [r0]
|
||||||
sub r2, r2, #1
|
sub r2, r2, #1
|
||||||
strh ip, [r1], #2
|
strh ip, [r1], #2
|
||||||
|
@ -28,14 +28,14 @@ ENTRY(__raw_readsw)
|
||||||
teq r2, #0
|
teq r2, #0
|
||||||
moveq pc, lr
|
moveq pc, lr
|
||||||
tst r1, #3
|
tst r1, #3
|
||||||
bne .insw_align
|
bne .Linsw_align
|
||||||
|
|
||||||
stmfd sp!, {r4, r5, lr}
|
stmfd sp!, {r4, r5, lr}
|
||||||
|
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
bmi .no_insw_8
|
bmi .Lno_insw_8
|
||||||
|
|
||||||
.insw_8_lp: ldrh r3, [r0]
|
.Linsw_8_lp: ldrh r3, [r0]
|
||||||
ldrh r4, [r0]
|
ldrh r4, [r0]
|
||||||
pack r3, r3, r4
|
pack r3, r3, r4
|
||||||
|
|
||||||
|
@ -53,10 +53,10 @@ ENTRY(__raw_readsw)
|
||||||
|
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
stmia r1!, {r3 - r5, ip}
|
stmia r1!, {r3 - r5, ip}
|
||||||
bpl .insw_8_lp
|
bpl .Linsw_8_lp
|
||||||
|
|
||||||
.no_insw_8: tst r2, #4
|
.Lno_insw_8: tst r2, #4
|
||||||
beq .no_insw_4
|
beq .Lno_insw_4
|
||||||
|
|
||||||
ldrh r3, [r0]
|
ldrh r3, [r0]
|
||||||
ldrh r4, [r0]
|
ldrh r4, [r0]
|
||||||
|
@ -68,15 +68,15 @@ ENTRY(__raw_readsw)
|
||||||
|
|
||||||
stmia r1!, {r3, r4}
|
stmia r1!, {r3, r4}
|
||||||
|
|
||||||
.no_insw_4: movs r2, r2, lsl #31
|
.Lno_insw_4: movs r2, r2, lsl #31
|
||||||
bcc .no_insw_2
|
bcc .Lno_insw_2
|
||||||
|
|
||||||
ldrh r3, [r0]
|
ldrh r3, [r0]
|
||||||
ldrh ip, [r0]
|
ldrh ip, [r0]
|
||||||
pack r3, r3, ip
|
pack r3, r3, ip
|
||||||
str r3, [r1], #4
|
str r3, [r1], #4
|
||||||
|
|
||||||
.no_insw_2: ldrneh r3, [r0]
|
.Lno_insw_2: ldrneh r3, [r0]
|
||||||
strneh r3, [r1]
|
strneh r3, [r1]
|
||||||
|
|
||||||
ldmfd sp!, {r4, r5, pc}
|
ldmfd sp!, {r4, r5, pc}
|
||||||
|
@ -93,7 +93,7 @@ ENTRY(__raw_readsw)
|
||||||
#define pull_hbyte1 lsr #8
|
#define pull_hbyte1 lsr #8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.insw_noalign: stmfd sp!, {r4, lr}
|
.Linsw_noalign: stmfd sp!, {r4, lr}
|
||||||
ldrccb ip, [r1, #-1]!
|
ldrccb ip, [r1, #-1]!
|
||||||
bcc 1f
|
bcc 1f
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.outsb_align: rsb ip, ip, #4
|
.Loutsb_align: rsb ip, ip, #4
|
||||||
cmp ip, r2
|
cmp ip, r2
|
||||||
movgt ip, r2
|
movgt ip, r2
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
|
@ -41,44 +41,45 @@
|
||||||
ldrgtb r3, [r1], #1
|
ldrgtb r3, [r1], #1
|
||||||
strgtb r3, [r0]
|
strgtb r3, [r0]
|
||||||
subs r2, r2, ip
|
subs r2, r2, ip
|
||||||
bne .outsb_aligned
|
bne .Loutsb_aligned
|
||||||
|
|
||||||
ENTRY(__raw_writesb)
|
ENTRY(__raw_writesb)
|
||||||
teq r2, #0 @ do we have to check for the zero len?
|
teq r2, #0 @ do we have to check for the zero len?
|
||||||
moveq pc, lr
|
moveq pc, lr
|
||||||
ands ip, r1, #3
|
ands ip, r1, #3
|
||||||
bne .outsb_align
|
bne .Loutsb_align
|
||||||
|
|
||||||
.outsb_aligned: stmfd sp!, {r4, r5, lr}
|
.Loutsb_aligned:
|
||||||
|
stmfd sp!, {r4, r5, lr}
|
||||||
|
|
||||||
subs r2, r2, #16
|
subs r2, r2, #16
|
||||||
bmi .outsb_no_16
|
bmi .Loutsb_no_16
|
||||||
|
|
||||||
.outsb_16_lp: ldmia r1!, {r3, r4, r5, ip}
|
.Loutsb_16_lp: ldmia r1!, {r3, r4, r5, ip}
|
||||||
outword r3
|
outword r3
|
||||||
outword r4
|
outword r4
|
||||||
outword r5
|
outword r5
|
||||||
outword ip
|
outword ip
|
||||||
subs r2, r2, #16
|
subs r2, r2, #16
|
||||||
bpl .outsb_16_lp
|
bpl .Loutsb_16_lp
|
||||||
|
|
||||||
tst r2, #15
|
tst r2, #15
|
||||||
LOADREGS(eqfd, sp!, {r4, r5, pc})
|
LOADREGS(eqfd, sp!, {r4, r5, pc})
|
||||||
|
|
||||||
.outsb_no_16: tst r2, #8
|
.Loutsb_no_16: tst r2, #8
|
||||||
beq .outsb_no_8
|
beq .Loutsb_no_8
|
||||||
|
|
||||||
ldmia r1!, {r3, r4}
|
ldmia r1!, {r3, r4}
|
||||||
outword r3
|
outword r3
|
||||||
outword r4
|
outword r4
|
||||||
|
|
||||||
.outsb_no_8: tst r2, #4
|
.Loutsb_no_8: tst r2, #4
|
||||||
beq .outsb_no_4
|
beq .Loutsb_no_4
|
||||||
|
|
||||||
ldr r3, [r1], #4
|
ldr r3, [r1], #4
|
||||||
outword r3
|
outword r3
|
||||||
|
|
||||||
.outsb_no_4: ands r2, r2, #3
|
.Loutsb_no_4: ands r2, r2, #3
|
||||||
LOADREGS(eqfd, sp!, {r4, r5, pc})
|
LOADREGS(eqfd, sp!, {r4, r5, pc})
|
||||||
|
|
||||||
cmp r2, #2
|
cmp r2, #2
|
||||||
|
|
|
@ -11,16 +11,16 @@
|
||||||
#include <asm/assembler.h>
|
#include <asm/assembler.h>
|
||||||
#include <asm/hardware.h>
|
#include <asm/hardware.h>
|
||||||
|
|
||||||
.outsw_bad_alignment:
|
.Loutsw_bad_alignment:
|
||||||
adr r0, .outsw_bad_align_msg
|
adr r0, .Loutsw_bad_align_msg
|
||||||
mov r2, lr
|
mov r2, lr
|
||||||
b panic
|
b panic
|
||||||
.outsw_bad_align_msg:
|
.Loutsw_bad_align_msg:
|
||||||
.asciz "outsw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
|
.asciz "outsw: bad buffer alignment (0x%p, lr=0x%08lX)\n"
|
||||||
.align
|
.align
|
||||||
|
|
||||||
.outsw_align: tst r1, #1
|
.Loutsw_align: tst r1, #1
|
||||||
bne .outsw_bad_alignment
|
bne .Loutsw_bad_alignment
|
||||||
|
|
||||||
add r1, r1, #2
|
add r1, r1, #2
|
||||||
|
|
||||||
|
@ -35,14 +35,14 @@ ENTRY(__raw_writesw)
|
||||||
teq r2, #0 @ do we have to check for the zero len?
|
teq r2, #0 @ do we have to check for the zero len?
|
||||||
moveq pc, lr
|
moveq pc, lr
|
||||||
tst r1, #3
|
tst r1, #3
|
||||||
bne .outsw_align
|
bne .Loutsw_align
|
||||||
|
|
||||||
.outsw_aligned: stmfd sp!, {r4, r5, r6, lr}
|
stmfd sp!, {r4, r5, r6, lr}
|
||||||
|
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
bmi .no_outsw_8
|
bmi .Lno_outsw_8
|
||||||
|
|
||||||
.outsw_8_lp: ldmia r1!, {r3, r4, r5, r6}
|
.Loutsw_8_lp: ldmia r1!, {r3, r4, r5, r6}
|
||||||
|
|
||||||
mov ip, r3, lsl #16
|
mov ip, r3, lsl #16
|
||||||
orr ip, ip, ip, lsr #16
|
orr ip, ip, ip, lsr #16
|
||||||
|
@ -77,13 +77,13 @@ ENTRY(__raw_writesw)
|
||||||
str ip, [r0]
|
str ip, [r0]
|
||||||
|
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
bpl .outsw_8_lp
|
bpl .Loutsw_8_lp
|
||||||
|
|
||||||
tst r2, #7
|
tst r2, #7
|
||||||
LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
|
LOADREGS(eqfd, sp!, {r4, r5, r6, pc})
|
||||||
|
|
||||||
.no_outsw_8: tst r2, #4
|
.Lno_outsw_8: tst r2, #4
|
||||||
beq .no_outsw_4
|
beq .Lno_outsw_4
|
||||||
|
|
||||||
ldmia r1!, {r3, r4}
|
ldmia r1!, {r3, r4}
|
||||||
|
|
||||||
|
@ -103,8 +103,8 @@ ENTRY(__raw_writesw)
|
||||||
orr ip, ip, ip, lsl #16
|
orr ip, ip, ip, lsl #16
|
||||||
str ip, [r0]
|
str ip, [r0]
|
||||||
|
|
||||||
.no_outsw_4: tst r2, #2
|
.Lno_outsw_4: tst r2, #2
|
||||||
beq .no_outsw_2
|
beq .Lno_outsw_2
|
||||||
|
|
||||||
ldr r3, [r1], #4
|
ldr r3, [r1], #4
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ ENTRY(__raw_writesw)
|
||||||
orr ip, ip, ip, lsl #16
|
orr ip, ip, ip, lsl #16
|
||||||
str ip, [r0]
|
str ip, [r0]
|
||||||
|
|
||||||
.no_outsw_2: tst r2, #1
|
.Lno_outsw_2: tst r2, #1
|
||||||
|
|
||||||
ldrne r3, [r1]
|
ldrne r3, [r1]
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,8 @@
|
||||||
#endif
|
#endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.outsw_align: movs ip, r1, lsl #31
|
.Loutsw_align: movs ip, r1, lsl #31
|
||||||
bne .outsw_noalign
|
bne .Loutsw_noalign
|
||||||
|
|
||||||
ldrh r3, [r1], #2
|
ldrh r3, [r1], #2
|
||||||
sub r2, r2, #1
|
sub r2, r2, #1
|
||||||
|
@ -33,35 +33,35 @@ ENTRY(__raw_writesw)
|
||||||
teq r2, #0
|
teq r2, #0
|
||||||
moveq pc, lr
|
moveq pc, lr
|
||||||
ands r3, r1, #3
|
ands r3, r1, #3
|
||||||
bne .outsw_align
|
bne .Loutsw_align
|
||||||
|
|
||||||
stmfd sp!, {r4, r5, lr}
|
stmfd sp!, {r4, r5, lr}
|
||||||
|
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
bmi .no_outsw_8
|
bmi .Lno_outsw_8
|
||||||
|
|
||||||
.outsw_8_lp: ldmia r1!, {r3, r4, r5, ip}
|
.Loutsw_8_lp: ldmia r1!, {r3, r4, r5, ip}
|
||||||
subs r2, r2, #8
|
subs r2, r2, #8
|
||||||
outword r3
|
outword r3
|
||||||
outword r4
|
outword r4
|
||||||
outword r5
|
outword r5
|
||||||
outword ip
|
outword ip
|
||||||
bpl .outsw_8_lp
|
bpl .Loutsw_8_lp
|
||||||
|
|
||||||
.no_outsw_8: tst r2, #4
|
.Lno_outsw_8: tst r2, #4
|
||||||
beq .no_outsw_4
|
beq .Lno_outsw_4
|
||||||
|
|
||||||
ldmia r1!, {r3, ip}
|
ldmia r1!, {r3, ip}
|
||||||
outword r3
|
outword r3
|
||||||
outword ip
|
outword ip
|
||||||
|
|
||||||
.no_outsw_4: movs r2, r2, lsl #31
|
.Lno_outsw_4: movs r2, r2, lsl #31
|
||||||
bcc .no_outsw_2
|
bcc .Lno_outsw_2
|
||||||
|
|
||||||
ldr r3, [r1], #4
|
ldr r3, [r1], #4
|
||||||
outword r3
|
outword r3
|
||||||
|
|
||||||
.no_outsw_2: ldrneh r3, [r1]
|
.Lno_outsw_2: ldrneh r3, [r1]
|
||||||
strneh r3, [r0]
|
strneh r3, [r0]
|
||||||
|
|
||||||
ldmfd sp!, {r4, r5, pc}
|
ldmfd sp!, {r4, r5, pc}
|
||||||
|
@ -74,7 +74,8 @@ ENTRY(__raw_writesw)
|
||||||
#define push_hbyte1 lsl #8
|
#define push_hbyte1 lsl #8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
.outsw_noalign: ldr r3, [r1, -r3]!
|
.Loutsw_noalign:
|
||||||
|
ldr r3, [r1, -r3]!
|
||||||
subcs r2, r2, #1
|
subcs r2, r2, #1
|
||||||
bcs 2f
|
bcs 2f
|
||||||
subs r2, r2, #2
|
subs r2, r2, #2
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
* Returns : Number of bytes NOT copied.
|
* Returns : Number of bytes NOT copied.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.c2u_dest_not_aligned:
|
.Lc2u_dest_not_aligned:
|
||||||
rsb ip, ip, #4
|
rsb ip, ip, #4
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
ldrb r3, [r1], #1
|
ldrb r3, [r1], #1
|
||||||
|
@ -37,32 +37,32 @@ USER( strgebt r3, [r0], #1) @ May fault
|
||||||
ldrgtb r3, [r1], #1
|
ldrgtb r3, [r1], #1
|
||||||
USER( strgtbt r3, [r0], #1) @ May fault
|
USER( strgtbt r3, [r0], #1) @ May fault
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
b .c2u_dest_aligned
|
b .Lc2u_dest_aligned
|
||||||
|
|
||||||
ENTRY(__arch_copy_to_user)
|
ENTRY(__arch_copy_to_user)
|
||||||
stmfd sp!, {r2, r4 - r7, lr}
|
stmfd sp!, {r2, r4 - r7, lr}
|
||||||
cmp r2, #4
|
cmp r2, #4
|
||||||
blt .c2u_not_enough
|
blt .Lc2u_not_enough
|
||||||
ands ip, r0, #3
|
ands ip, r0, #3
|
||||||
bne .c2u_dest_not_aligned
|
bne .Lc2u_dest_not_aligned
|
||||||
.c2u_dest_aligned:
|
.Lc2u_dest_aligned:
|
||||||
|
|
||||||
ands ip, r1, #3
|
ands ip, r1, #3
|
||||||
bne .c2u_src_not_aligned
|
bne .Lc2u_src_not_aligned
|
||||||
/*
|
/*
|
||||||
* Seeing as there has to be at least 8 bytes to copy, we can
|
* Seeing as there has to be at least 8 bytes to copy, we can
|
||||||
* copy one word, and force a user-mode page fault...
|
* copy one word, and force a user-mode page fault...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.c2u_0fupi: subs r2, r2, #4
|
.Lc2u_0fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .c2u_0nowords
|
bmi .Lc2u_0nowords
|
||||||
ldr r3, [r1], #4
|
ldr r3, [r1], #4
|
||||||
USER( strt r3, [r0], #4) @ May fault
|
USER( strt r3, [r0], #4) @ May fault
|
||||||
mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
|
mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .c2u_0fupi
|
beq .Lc2u_0fupi
|
||||||
/*
|
/*
|
||||||
* ip = max no. of bytes to copy before needing another "strt" insn
|
* ip = max no. of bytes to copy before needing another "strt" insn
|
||||||
*/
|
*/
|
||||||
|
@ -70,16 +70,16 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #32
|
subs ip, ip, #32
|
||||||
blt .c2u_0rem8lp
|
blt .Lc2u_0rem8lp
|
||||||
|
|
||||||
.c2u_0cpy8lp: ldmia r1!, {r3 - r6}
|
.Lc2u_0cpy8lp: ldmia r1!, {r3 - r6}
|
||||||
stmia r0!, {r3 - r6} @ Shouldnt fault
|
stmia r0!, {r3 - r6} @ Shouldnt fault
|
||||||
ldmia r1!, {r3 - r6}
|
ldmia r1!, {r3 - r6}
|
||||||
subs ip, ip, #32
|
subs ip, ip, #32
|
||||||
stmia r0!, {r3 - r6} @ Shouldnt fault
|
stmia r0!, {r3 - r6} @ Shouldnt fault
|
||||||
bpl .c2u_0cpy8lp
|
bpl .Lc2u_0cpy8lp
|
||||||
|
|
||||||
.c2u_0rem8lp: cmn ip, #16
|
.Lc2u_0rem8lp: cmn ip, #16
|
||||||
ldmgeia r1!, {r3 - r6}
|
ldmgeia r1!, {r3 - r6}
|
||||||
stmgeia r0!, {r3 - r6} @ Shouldnt fault
|
stmgeia r0!, {r3 - r6} @ Shouldnt fault
|
||||||
tst ip, #8
|
tst ip, #8
|
||||||
|
@ -89,33 +89,33 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
ldrne r3, [r1], #4
|
ldrne r3, [r1], #4
|
||||||
strnet r3, [r0], #4 @ Shouldnt fault
|
strnet r3, [r0], #4 @ Shouldnt fault
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .c2u_0fupi
|
beq .Lc2u_0fupi
|
||||||
.c2u_0nowords: teq ip, #0
|
.Lc2u_0nowords: teq ip, #0
|
||||||
beq .c2u_finished
|
beq .Lc2u_finished
|
||||||
.c2u_nowords: cmp ip, #2
|
.Lc2u_nowords: cmp ip, #2
|
||||||
ldrb r3, [r1], #1
|
ldrb r3, [r1], #1
|
||||||
USER( strbt r3, [r0], #1) @ May fault
|
USER( strbt r3, [r0], #1) @ May fault
|
||||||
ldrgeb r3, [r1], #1
|
ldrgeb r3, [r1], #1
|
||||||
USER( strgebt r3, [r0], #1) @ May fault
|
USER( strgebt r3, [r0], #1) @ May fault
|
||||||
ldrgtb r3, [r1], #1
|
ldrgtb r3, [r1], #1
|
||||||
USER( strgtbt r3, [r0], #1) @ May fault
|
USER( strgtbt r3, [r0], #1) @ May fault
|
||||||
b .c2u_finished
|
b .Lc2u_finished
|
||||||
|
|
||||||
.c2u_not_enough:
|
.Lc2u_not_enough:
|
||||||
movs ip, r2
|
movs ip, r2
|
||||||
bne .c2u_nowords
|
bne .Lc2u_nowords
|
||||||
.c2u_finished: mov r0, #0
|
.Lc2u_finished: mov r0, #0
|
||||||
LOADREGS(fd,sp!,{r2, r4 - r7, pc})
|
LOADREGS(fd,sp!,{r2, r4 - r7, pc})
|
||||||
|
|
||||||
.c2u_src_not_aligned:
|
.Lc2u_src_not_aligned:
|
||||||
bic r1, r1, #3
|
bic r1, r1, #3
|
||||||
ldr r7, [r1], #4
|
ldr r7, [r1], #4
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
bgt .c2u_3fupi
|
bgt .Lc2u_3fupi
|
||||||
beq .c2u_2fupi
|
beq .Lc2u_2fupi
|
||||||
.c2u_1fupi: subs r2, r2, #4
|
.Lc2u_1fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .c2u_1nowords
|
bmi .Lc2u_1nowords
|
||||||
mov r3, r7, pull #8
|
mov r3, r7, pull #8
|
||||||
ldr r7, [r1], #4
|
ldr r7, [r1], #4
|
||||||
orr r3, r3, r7, push #24
|
orr r3, r3, r7, push #24
|
||||||
|
@ -123,14 +123,14 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
mov ip, r0, lsl #32 - PAGE_SHIFT
|
mov ip, r0, lsl #32 - PAGE_SHIFT
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .c2u_1fupi
|
beq .Lc2u_1fupi
|
||||||
cmp r2, ip
|
cmp r2, ip
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
blt .c2u_1rem8lp
|
blt .Lc2u_1rem8lp
|
||||||
|
|
||||||
.c2u_1cpy8lp: mov r3, r7, pull #8
|
.Lc2u_1cpy8lp: mov r3, r7, pull #8
|
||||||
ldmia r1!, {r4 - r7}
|
ldmia r1!, {r4 - r7}
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
orr r3, r3, r4, push #24
|
orr r3, r3, r4, push #24
|
||||||
|
@ -141,9 +141,9 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
mov r6, r6, pull #8
|
mov r6, r6, pull #8
|
||||||
orr r6, r6, r7, push #24
|
orr r6, r6, r7, push #24
|
||||||
stmia r0!, {r3 - r6} @ Shouldnt fault
|
stmia r0!, {r3 - r6} @ Shouldnt fault
|
||||||
bpl .c2u_1cpy8lp
|
bpl .Lc2u_1cpy8lp
|
||||||
|
|
||||||
.c2u_1rem8lp: tst ip, #8
|
.Lc2u_1rem8lp: tst ip, #8
|
||||||
movne r3, r7, pull #8
|
movne r3, r7, pull #8
|
||||||
ldmneia r1!, {r4, r7}
|
ldmneia r1!, {r4, r7}
|
||||||
orrne r3, r3, r4, push #24
|
orrne r3, r3, r4, push #24
|
||||||
|
@ -156,21 +156,21 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
orrne r3, r3, r7, push #24
|
orrne r3, r3, r7, push #24
|
||||||
strnet r3, [r0], #4 @ Shouldnt fault
|
strnet r3, [r0], #4 @ Shouldnt fault
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .c2u_1fupi
|
beq .Lc2u_1fupi
|
||||||
.c2u_1nowords: mov r3, r7, get_byte_1
|
.Lc2u_1nowords: mov r3, r7, get_byte_1
|
||||||
teq ip, #0
|
teq ip, #0
|
||||||
beq .c2u_finished
|
beq .Lc2u_finished
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
USER( strbt r3, [r0], #1) @ May fault
|
USER( strbt r3, [r0], #1) @ May fault
|
||||||
movge r3, r7, get_byte_2
|
movge r3, r7, get_byte_2
|
||||||
USER( strgebt r3, [r0], #1) @ May fault
|
USER( strgebt r3, [r0], #1) @ May fault
|
||||||
movgt r3, r7, get_byte_3
|
movgt r3, r7, get_byte_3
|
||||||
USER( strgtbt r3, [r0], #1) @ May fault
|
USER( strgtbt r3, [r0], #1) @ May fault
|
||||||
b .c2u_finished
|
b .Lc2u_finished
|
||||||
|
|
||||||
.c2u_2fupi: subs r2, r2, #4
|
.Lc2u_2fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .c2u_2nowords
|
bmi .Lc2u_2nowords
|
||||||
mov r3, r7, pull #16
|
mov r3, r7, pull #16
|
||||||
ldr r7, [r1], #4
|
ldr r7, [r1], #4
|
||||||
orr r3, r3, r7, push #16
|
orr r3, r3, r7, push #16
|
||||||
|
@ -178,14 +178,14 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
mov ip, r0, lsl #32 - PAGE_SHIFT
|
mov ip, r0, lsl #32 - PAGE_SHIFT
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .c2u_2fupi
|
beq .Lc2u_2fupi
|
||||||
cmp r2, ip
|
cmp r2, ip
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
blt .c2u_2rem8lp
|
blt .Lc2u_2rem8lp
|
||||||
|
|
||||||
.c2u_2cpy8lp: mov r3, r7, pull #16
|
.Lc2u_2cpy8lp: mov r3, r7, pull #16
|
||||||
ldmia r1!, {r4 - r7}
|
ldmia r1!, {r4 - r7}
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
orr r3, r3, r4, push #16
|
orr r3, r3, r4, push #16
|
||||||
|
@ -196,9 +196,9 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
mov r6, r6, pull #16
|
mov r6, r6, pull #16
|
||||||
orr r6, r6, r7, push #16
|
orr r6, r6, r7, push #16
|
||||||
stmia r0!, {r3 - r6} @ Shouldnt fault
|
stmia r0!, {r3 - r6} @ Shouldnt fault
|
||||||
bpl .c2u_2cpy8lp
|
bpl .Lc2u_2cpy8lp
|
||||||
|
|
||||||
.c2u_2rem8lp: tst ip, #8
|
.Lc2u_2rem8lp: tst ip, #8
|
||||||
movne r3, r7, pull #16
|
movne r3, r7, pull #16
|
||||||
ldmneia r1!, {r4, r7}
|
ldmneia r1!, {r4, r7}
|
||||||
orrne r3, r3, r4, push #16
|
orrne r3, r3, r4, push #16
|
||||||
|
@ -211,21 +211,21 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
orrne r3, r3, r7, push #16
|
orrne r3, r3, r7, push #16
|
||||||
strnet r3, [r0], #4 @ Shouldnt fault
|
strnet r3, [r0], #4 @ Shouldnt fault
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .c2u_2fupi
|
beq .Lc2u_2fupi
|
||||||
.c2u_2nowords: mov r3, r7, get_byte_2
|
.Lc2u_2nowords: mov r3, r7, get_byte_2
|
||||||
teq ip, #0
|
teq ip, #0
|
||||||
beq .c2u_finished
|
beq .Lc2u_finished
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
USER( strbt r3, [r0], #1) @ May fault
|
USER( strbt r3, [r0], #1) @ May fault
|
||||||
movge r3, r7, get_byte_3
|
movge r3, r7, get_byte_3
|
||||||
USER( strgebt r3, [r0], #1) @ May fault
|
USER( strgebt r3, [r0], #1) @ May fault
|
||||||
ldrgtb r3, [r1], #0
|
ldrgtb r3, [r1], #0
|
||||||
USER( strgtbt r3, [r0], #1) @ May fault
|
USER( strgtbt r3, [r0], #1) @ May fault
|
||||||
b .c2u_finished
|
b .Lc2u_finished
|
||||||
|
|
||||||
.c2u_3fupi: subs r2, r2, #4
|
.Lc2u_3fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .c2u_3nowords
|
bmi .Lc2u_3nowords
|
||||||
mov r3, r7, pull #24
|
mov r3, r7, pull #24
|
||||||
ldr r7, [r1], #4
|
ldr r7, [r1], #4
|
||||||
orr r3, r3, r7, push #8
|
orr r3, r3, r7, push #8
|
||||||
|
@ -233,14 +233,14 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
mov ip, r0, lsl #32 - PAGE_SHIFT
|
mov ip, r0, lsl #32 - PAGE_SHIFT
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .c2u_3fupi
|
beq .Lc2u_3fupi
|
||||||
cmp r2, ip
|
cmp r2, ip
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
blt .c2u_3rem8lp
|
blt .Lc2u_3rem8lp
|
||||||
|
|
||||||
.c2u_3cpy8lp: mov r3, r7, pull #24
|
.Lc2u_3cpy8lp: mov r3, r7, pull #24
|
||||||
ldmia r1!, {r4 - r7}
|
ldmia r1!, {r4 - r7}
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
orr r3, r3, r4, push #8
|
orr r3, r3, r4, push #8
|
||||||
|
@ -251,9 +251,9 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
mov r6, r6, pull #24
|
mov r6, r6, pull #24
|
||||||
orr r6, r6, r7, push #8
|
orr r6, r6, r7, push #8
|
||||||
stmia r0!, {r3 - r6} @ Shouldnt fault
|
stmia r0!, {r3 - r6} @ Shouldnt fault
|
||||||
bpl .c2u_3cpy8lp
|
bpl .Lc2u_3cpy8lp
|
||||||
|
|
||||||
.c2u_3rem8lp: tst ip, #8
|
.Lc2u_3rem8lp: tst ip, #8
|
||||||
movne r3, r7, pull #24
|
movne r3, r7, pull #24
|
||||||
ldmneia r1!, {r4, r7}
|
ldmneia r1!, {r4, r7}
|
||||||
orrne r3, r3, r4, push #8
|
orrne r3, r3, r4, push #8
|
||||||
|
@ -266,17 +266,17 @@ USER( strt r3, [r0], #4) @ May fault
|
||||||
orrne r3, r3, r7, push #8
|
orrne r3, r3, r7, push #8
|
||||||
strnet r3, [r0], #4 @ Shouldnt fault
|
strnet r3, [r0], #4 @ Shouldnt fault
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .c2u_3fupi
|
beq .Lc2u_3fupi
|
||||||
.c2u_3nowords: mov r3, r7, get_byte_3
|
.Lc2u_3nowords: mov r3, r7, get_byte_3
|
||||||
teq ip, #0
|
teq ip, #0
|
||||||
beq .c2u_finished
|
beq .Lc2u_finished
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
USER( strbt r3, [r0], #1) @ May fault
|
USER( strbt r3, [r0], #1) @ May fault
|
||||||
ldrgeb r3, [r1], #1
|
ldrgeb r3, [r1], #1
|
||||||
USER( strgebt r3, [r0], #1) @ May fault
|
USER( strgebt r3, [r0], #1) @ May fault
|
||||||
ldrgtb r3, [r1], #0
|
ldrgtb r3, [r1], #0
|
||||||
USER( strgtbt r3, [r0], #1) @ May fault
|
USER( strgtbt r3, [r0], #1) @ May fault
|
||||||
b .c2u_finished
|
b .Lc2u_finished
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.section .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
|
@ -290,7 +290,7 @@ USER( strgtbt r3, [r0], #1) @ May fault
|
||||||
* : n - number of bytes to copy
|
* : n - number of bytes to copy
|
||||||
* Returns : Number of bytes NOT copied.
|
* Returns : Number of bytes NOT copied.
|
||||||
*/
|
*/
|
||||||
.cfu_dest_not_aligned:
|
.Lcfu_dest_not_aligned:
|
||||||
rsb ip, ip, #4
|
rsb ip, ip, #4
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
USER( ldrbt r3, [r1], #1) @ May fault
|
USER( ldrbt r3, [r1], #1) @ May fault
|
||||||
|
@ -300,31 +300,32 @@ USER( ldrgebt r3, [r1], #1) @ May fault
|
||||||
USER( ldrgtbt r3, [r1], #1) @ May fault
|
USER( ldrgtbt r3, [r1], #1) @ May fault
|
||||||
strgtb r3, [r0], #1
|
strgtb r3, [r0], #1
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
b .cfu_dest_aligned
|
b .Lcfu_dest_aligned
|
||||||
|
|
||||||
ENTRY(__arch_copy_from_user)
|
ENTRY(__arch_copy_from_user)
|
||||||
stmfd sp!, {r0, r2, r4 - r7, lr}
|
stmfd sp!, {r0, r2, r4 - r7, lr}
|
||||||
cmp r2, #4
|
cmp r2, #4
|
||||||
blt .cfu_not_enough
|
blt .Lcfu_not_enough
|
||||||
ands ip, r0, #3
|
ands ip, r0, #3
|
||||||
bne .cfu_dest_not_aligned
|
bne .Lcfu_dest_not_aligned
|
||||||
.cfu_dest_aligned:
|
.Lcfu_dest_aligned:
|
||||||
ands ip, r1, #3
|
ands ip, r1, #3
|
||||||
bne .cfu_src_not_aligned
|
bne .Lcfu_src_not_aligned
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Seeing as there has to be at least 8 bytes to copy, we can
|
* Seeing as there has to be at least 8 bytes to copy, we can
|
||||||
* copy one word, and force a user-mode page fault...
|
* copy one word, and force a user-mode page fault...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.cfu_0fupi: subs r2, r2, #4
|
.Lcfu_0fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .cfu_0nowords
|
bmi .Lcfu_0nowords
|
||||||
USER( ldrt r3, [r1], #4)
|
USER( ldrt r3, [r1], #4)
|
||||||
str r3, [r0], #4
|
str r3, [r0], #4
|
||||||
mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
|
mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .cfu_0fupi
|
beq .Lcfu_0fupi
|
||||||
/*
|
/*
|
||||||
* ip = max no. of bytes to copy before needing another "strt" insn
|
* ip = max no. of bytes to copy before needing another "strt" insn
|
||||||
*/
|
*/
|
||||||
|
@ -332,16 +333,16 @@ USER( ldrt r3, [r1], #4)
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #32
|
subs ip, ip, #32
|
||||||
blt .cfu_0rem8lp
|
blt .Lcfu_0rem8lp
|
||||||
|
|
||||||
.cfu_0cpy8lp: ldmia r1!, {r3 - r6} @ Shouldnt fault
|
.Lcfu_0cpy8lp: ldmia r1!, {r3 - r6} @ Shouldnt fault
|
||||||
stmia r0!, {r3 - r6}
|
stmia r0!, {r3 - r6}
|
||||||
ldmia r1!, {r3 - r6} @ Shouldnt fault
|
ldmia r1!, {r3 - r6} @ Shouldnt fault
|
||||||
subs ip, ip, #32
|
subs ip, ip, #32
|
||||||
stmia r0!, {r3 - r6}
|
stmia r0!, {r3 - r6}
|
||||||
bpl .cfu_0cpy8lp
|
bpl .Lcfu_0cpy8lp
|
||||||
|
|
||||||
.cfu_0rem8lp: cmn ip, #16
|
.Lcfu_0rem8lp: cmn ip, #16
|
||||||
ldmgeia r1!, {r3 - r6} @ Shouldnt fault
|
ldmgeia r1!, {r3 - r6} @ Shouldnt fault
|
||||||
stmgeia r0!, {r3 - r6}
|
stmgeia r0!, {r3 - r6}
|
||||||
tst ip, #8
|
tst ip, #8
|
||||||
|
@ -351,34 +352,34 @@ USER( ldrt r3, [r1], #4)
|
||||||
ldrnet r3, [r1], #4 @ Shouldnt fault
|
ldrnet r3, [r1], #4 @ Shouldnt fault
|
||||||
strne r3, [r0], #4
|
strne r3, [r0], #4
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .cfu_0fupi
|
beq .Lcfu_0fupi
|
||||||
.cfu_0nowords: teq ip, #0
|
.Lcfu_0nowords: teq ip, #0
|
||||||
beq .cfu_finished
|
beq .Lcfu_finished
|
||||||
.cfu_nowords: cmp ip, #2
|
.Lcfu_nowords: cmp ip, #2
|
||||||
USER( ldrbt r3, [r1], #1) @ May fault
|
USER( ldrbt r3, [r1], #1) @ May fault
|
||||||
strb r3, [r0], #1
|
strb r3, [r0], #1
|
||||||
USER( ldrgebt r3, [r1], #1) @ May fault
|
USER( ldrgebt r3, [r1], #1) @ May fault
|
||||||
strgeb r3, [r0], #1
|
strgeb r3, [r0], #1
|
||||||
USER( ldrgtbt r3, [r1], #1) @ May fault
|
USER( ldrgtbt r3, [r1], #1) @ May fault
|
||||||
strgtb r3, [r0], #1
|
strgtb r3, [r0], #1
|
||||||
b .cfu_finished
|
b .Lcfu_finished
|
||||||
|
|
||||||
.cfu_not_enough:
|
.Lcfu_not_enough:
|
||||||
movs ip, r2
|
movs ip, r2
|
||||||
bne .cfu_nowords
|
bne .Lcfu_nowords
|
||||||
.cfu_finished: mov r0, #0
|
.Lcfu_finished: mov r0, #0
|
||||||
add sp, sp, #8
|
add sp, sp, #8
|
||||||
LOADREGS(fd,sp!,{r4 - r7, pc})
|
LOADREGS(fd,sp!,{r4 - r7, pc})
|
||||||
|
|
||||||
.cfu_src_not_aligned:
|
.Lcfu_src_not_aligned:
|
||||||
bic r1, r1, #3
|
bic r1, r1, #3
|
||||||
USER( ldrt r7, [r1], #4) @ May fault
|
USER( ldrt r7, [r1], #4) @ May fault
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
bgt .cfu_3fupi
|
bgt .Lcfu_3fupi
|
||||||
beq .cfu_2fupi
|
beq .Lcfu_2fupi
|
||||||
.cfu_1fupi: subs r2, r2, #4
|
.Lcfu_1fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .cfu_1nowords
|
bmi .Lcfu_1nowords
|
||||||
mov r3, r7, pull #8
|
mov r3, r7, pull #8
|
||||||
USER( ldrt r7, [r1], #4) @ May fault
|
USER( ldrt r7, [r1], #4) @ May fault
|
||||||
orr r3, r3, r7, push #24
|
orr r3, r3, r7, push #24
|
||||||
|
@ -386,14 +387,14 @@ USER( ldrt r7, [r1], #4) @ May fault
|
||||||
mov ip, r1, lsl #32 - PAGE_SHIFT
|
mov ip, r1, lsl #32 - PAGE_SHIFT
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .cfu_1fupi
|
beq .Lcfu_1fupi
|
||||||
cmp r2, ip
|
cmp r2, ip
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
blt .cfu_1rem8lp
|
blt .Lcfu_1rem8lp
|
||||||
|
|
||||||
.cfu_1cpy8lp: mov r3, r7, pull #8
|
.Lcfu_1cpy8lp: mov r3, r7, pull #8
|
||||||
ldmia r1!, {r4 - r7} @ Shouldnt fault
|
ldmia r1!, {r4 - r7} @ Shouldnt fault
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
orr r3, r3, r4, push #24
|
orr r3, r3, r4, push #24
|
||||||
|
@ -404,9 +405,9 @@ USER( ldrt r7, [r1], #4) @ May fault
|
||||||
mov r6, r6, pull #8
|
mov r6, r6, pull #8
|
||||||
orr r6, r6, r7, push #24
|
orr r6, r6, r7, push #24
|
||||||
stmia r0!, {r3 - r6}
|
stmia r0!, {r3 - r6}
|
||||||
bpl .cfu_1cpy8lp
|
bpl .Lcfu_1cpy8lp
|
||||||
|
|
||||||
.cfu_1rem8lp: tst ip, #8
|
.Lcfu_1rem8lp: tst ip, #8
|
||||||
movne r3, r7, pull #8
|
movne r3, r7, pull #8
|
||||||
ldmneia r1!, {r4, r7} @ Shouldnt fault
|
ldmneia r1!, {r4, r7} @ Shouldnt fault
|
||||||
orrne r3, r3, r4, push #24
|
orrne r3, r3, r4, push #24
|
||||||
|
@ -419,21 +420,21 @@ USER( ldrnet r7, [r1], #4) @ May fault
|
||||||
orrne r3, r3, r7, push #24
|
orrne r3, r3, r7, push #24
|
||||||
strne r3, [r0], #4
|
strne r3, [r0], #4
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .cfu_1fupi
|
beq .Lcfu_1fupi
|
||||||
.cfu_1nowords: mov r3, r7, get_byte_1
|
.Lcfu_1nowords: mov r3, r7, get_byte_1
|
||||||
teq ip, #0
|
teq ip, #0
|
||||||
beq .cfu_finished
|
beq .Lcfu_finished
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
strb r3, [r0], #1
|
strb r3, [r0], #1
|
||||||
movge r3, r7, get_byte_2
|
movge r3, r7, get_byte_2
|
||||||
strgeb r3, [r0], #1
|
strgeb r3, [r0], #1
|
||||||
movgt r3, r7, get_byte_3
|
movgt r3, r7, get_byte_3
|
||||||
strgtb r3, [r0], #1
|
strgtb r3, [r0], #1
|
||||||
b .cfu_finished
|
b .Lcfu_finished
|
||||||
|
|
||||||
.cfu_2fupi: subs r2, r2, #4
|
.Lcfu_2fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .cfu_2nowords
|
bmi .Lcfu_2nowords
|
||||||
mov r3, r7, pull #16
|
mov r3, r7, pull #16
|
||||||
USER( ldrt r7, [r1], #4) @ May fault
|
USER( ldrt r7, [r1], #4) @ May fault
|
||||||
orr r3, r3, r7, push #16
|
orr r3, r3, r7, push #16
|
||||||
|
@ -441,14 +442,15 @@ USER( ldrt r7, [r1], #4) @ May fault
|
||||||
mov ip, r1, lsl #32 - PAGE_SHIFT
|
mov ip, r1, lsl #32 - PAGE_SHIFT
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .cfu_2fupi
|
beq .Lcfu_2fupi
|
||||||
cmp r2, ip
|
cmp r2, ip
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
blt .cfu_2rem8lp
|
blt .Lcfu_2rem8lp
|
||||||
|
|
||||||
.cfu_2cpy8lp: mov r3, r7, pull #16
|
|
||||||
|
.Lcfu_2cpy8lp: mov r3, r7, pull #16
|
||||||
ldmia r1!, {r4 - r7} @ Shouldnt fault
|
ldmia r1!, {r4 - r7} @ Shouldnt fault
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
orr r3, r3, r4, push #16
|
orr r3, r3, r4, push #16
|
||||||
|
@ -459,9 +461,9 @@ USER( ldrt r7, [r1], #4) @ May fault
|
||||||
mov r6, r6, pull #16
|
mov r6, r6, pull #16
|
||||||
orr r6, r6, r7, push #16
|
orr r6, r6, r7, push #16
|
||||||
stmia r0!, {r3 - r6}
|
stmia r0!, {r3 - r6}
|
||||||
bpl .cfu_2cpy8lp
|
bpl .Lcfu_2cpy8lp
|
||||||
|
|
||||||
.cfu_2rem8lp: tst ip, #8
|
.Lcfu_2rem8lp: tst ip, #8
|
||||||
movne r3, r7, pull #16
|
movne r3, r7, pull #16
|
||||||
ldmneia r1!, {r4, r7} @ Shouldnt fault
|
ldmneia r1!, {r4, r7} @ Shouldnt fault
|
||||||
orrne r3, r3, r4, push #16
|
orrne r3, r3, r4, push #16
|
||||||
|
@ -474,21 +476,21 @@ USER( ldrnet r7, [r1], #4) @ May fault
|
||||||
orrne r3, r3, r7, push #16
|
orrne r3, r3, r7, push #16
|
||||||
strne r3, [r0], #4
|
strne r3, [r0], #4
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .cfu_2fupi
|
beq .Lcfu_2fupi
|
||||||
.cfu_2nowords: mov r3, r7, get_byte_2
|
.Lcfu_2nowords: mov r3, r7, get_byte_2
|
||||||
teq ip, #0
|
teq ip, #0
|
||||||
beq .cfu_finished
|
beq .Lcfu_finished
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
strb r3, [r0], #1
|
strb r3, [r0], #1
|
||||||
movge r3, r7, get_byte_3
|
movge r3, r7, get_byte_3
|
||||||
strgeb r3, [r0], #1
|
strgeb r3, [r0], #1
|
||||||
USER( ldrgtbt r3, [r1], #0) @ May fault
|
USER( ldrgtbt r3, [r1], #0) @ May fault
|
||||||
strgtb r3, [r0], #1
|
strgtb r3, [r0], #1
|
||||||
b .cfu_finished
|
b .Lcfu_finished
|
||||||
|
|
||||||
.cfu_3fupi: subs r2, r2, #4
|
.Lcfu_3fupi: subs r2, r2, #4
|
||||||
addmi ip, r2, #4
|
addmi ip, r2, #4
|
||||||
bmi .cfu_3nowords
|
bmi .Lcfu_3nowords
|
||||||
mov r3, r7, pull #24
|
mov r3, r7, pull #24
|
||||||
USER( ldrt r7, [r1], #4) @ May fault
|
USER( ldrt r7, [r1], #4) @ May fault
|
||||||
orr r3, r3, r7, push #8
|
orr r3, r3, r7, push #8
|
||||||
|
@ -496,14 +498,14 @@ USER( ldrt r7, [r1], #4) @ May fault
|
||||||
mov ip, r1, lsl #32 - PAGE_SHIFT
|
mov ip, r1, lsl #32 - PAGE_SHIFT
|
||||||
rsb ip, ip, #0
|
rsb ip, ip, #0
|
||||||
movs ip, ip, lsr #32 - PAGE_SHIFT
|
movs ip, ip, lsr #32 - PAGE_SHIFT
|
||||||
beq .cfu_3fupi
|
beq .Lcfu_3fupi
|
||||||
cmp r2, ip
|
cmp r2, ip
|
||||||
movlt ip, r2
|
movlt ip, r2
|
||||||
sub r2, r2, ip
|
sub r2, r2, ip
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
blt .cfu_3rem8lp
|
blt .Lcfu_3rem8lp
|
||||||
|
|
||||||
.cfu_3cpy8lp: mov r3, r7, pull #24
|
.Lcfu_3cpy8lp: mov r3, r7, pull #24
|
||||||
ldmia r1!, {r4 - r7} @ Shouldnt fault
|
ldmia r1!, {r4 - r7} @ Shouldnt fault
|
||||||
orr r3, r3, r4, push #8
|
orr r3, r3, r4, push #8
|
||||||
mov r4, r4, pull #24
|
mov r4, r4, pull #24
|
||||||
|
@ -514,9 +516,9 @@ USER( ldrt r7, [r1], #4) @ May fault
|
||||||
orr r6, r6, r7, push #8
|
orr r6, r6, r7, push #8
|
||||||
stmia r0!, {r3 - r6}
|
stmia r0!, {r3 - r6}
|
||||||
subs ip, ip, #16
|
subs ip, ip, #16
|
||||||
bpl .cfu_3cpy8lp
|
bpl .Lcfu_3cpy8lp
|
||||||
|
|
||||||
.cfu_3rem8lp: tst ip, #8
|
.Lcfu_3rem8lp: tst ip, #8
|
||||||
movne r3, r7, pull #24
|
movne r3, r7, pull #24
|
||||||
ldmneia r1!, {r4, r7} @ Shouldnt fault
|
ldmneia r1!, {r4, r7} @ Shouldnt fault
|
||||||
orrne r3, r3, r4, push #8
|
orrne r3, r3, r4, push #8
|
||||||
|
@ -529,17 +531,17 @@ USER( ldrnet r7, [r1], #4) @ May fault
|
||||||
orrne r3, r3, r7, push #8
|
orrne r3, r3, r7, push #8
|
||||||
strne r3, [r0], #4
|
strne r3, [r0], #4
|
||||||
ands ip, ip, #3
|
ands ip, ip, #3
|
||||||
beq .cfu_3fupi
|
beq .Lcfu_3fupi
|
||||||
.cfu_3nowords: mov r3, r7, get_byte_3
|
.Lcfu_3nowords: mov r3, r7, get_byte_3
|
||||||
teq ip, #0
|
teq ip, #0
|
||||||
beq .cfu_finished
|
beq .Lcfu_finished
|
||||||
cmp ip, #2
|
cmp ip, #2
|
||||||
strb r3, [r0], #1
|
strb r3, [r0], #1
|
||||||
USER( ldrgebt r3, [r1], #1) @ May fault
|
USER( ldrgebt r3, [r1], #1) @ May fault
|
||||||
strgeb r3, [r0], #1
|
strgeb r3, [r0], #1
|
||||||
USER( ldrgtbt r3, [r1], #1) @ May fault
|
USER( ldrgtbt r3, [r1], #1) @ May fault
|
||||||
strgtb r3, [r0], #1
|
strgtb r3, [r0], #1
|
||||||
b .cfu_finished
|
b .Lcfu_finished
|
||||||
|
|
||||||
.section .fixup,"ax"
|
.section .fixup,"ax"
|
||||||
.align 0
|
.align 0
|
||||||
|
|
|
@ -8,6 +8,16 @@ menu "Intel IXP4xx Implementation Options"
|
||||||
|
|
||||||
comment "IXP4xx Platforms"
|
comment "IXP4xx Platforms"
|
||||||
|
|
||||||
|
# This entry is placed on top because otherwise it would have
|
||||||
|
# been shown as a submenu.
|
||||||
|
config MACH_NSLU2
|
||||||
|
bool
|
||||||
|
prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715)
|
||||||
|
help
|
||||||
|
Say 'Y' here if you want your kernel to support Linksys's
|
||||||
|
NSLU2 NAS device. For more information on this platform,
|
||||||
|
see http://www.nslu2-linux.org
|
||||||
|
|
||||||
config ARCH_AVILA
|
config ARCH_AVILA
|
||||||
bool "Avila"
|
bool "Avila"
|
||||||
help
|
help
|
||||||
|
|
|
@ -8,4 +8,5 @@ obj-$(CONFIG_ARCH_IXDP4XX) += ixdp425-pci.o ixdp425-setup.o
|
||||||
obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
|
obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o
|
||||||
obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
|
obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o
|
||||||
obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
|
obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o
|
||||||
|
obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
* arch/arm/mach-ixp4xx/nslu2-pci.c
|
||||||
|
*
|
||||||
|
* NSLU2 board-level PCI initialization
|
||||||
|
*
|
||||||
|
* based on ixdp425-pci.c:
|
||||||
|
* Copyright (C) 2002 Intel Corporation.
|
||||||
|
* Copyright (C) 2003-2004 MontaVista Software, Inc.
|
||||||
|
*
|
||||||
|
* Maintainer: http://www.nslu2-linux.org/
|
||||||
|
*
|
||||||
|
* 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/config.h>
|
||||||
|
#include <linux/pci.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
|
||||||
|
#include <asm/mach/pci.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
|
||||||
|
void __init nslu2_pci_preinit(void)
|
||||||
|
{
|
||||||
|
set_irq_type(IRQ_NSLU2_PCI_INTA, IRQT_LOW);
|
||||||
|
set_irq_type(IRQ_NSLU2_PCI_INTB, IRQT_LOW);
|
||||||
|
set_irq_type(IRQ_NSLU2_PCI_INTC, IRQT_LOW);
|
||||||
|
|
||||||
|
gpio_line_isr_clear(NSLU2_PCI_INTA_PIN);
|
||||||
|
gpio_line_isr_clear(NSLU2_PCI_INTB_PIN);
|
||||||
|
gpio_line_isr_clear(NSLU2_PCI_INTC_PIN);
|
||||||
|
|
||||||
|
/* INTD is not configured as GPIO is used
|
||||||
|
* for the power input button.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ixp4xx_pci_preinit();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init nslu2_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
|
{
|
||||||
|
static int pci_irq_table[NSLU2_PCI_IRQ_LINES] = {
|
||||||
|
IRQ_NSLU2_PCI_INTA,
|
||||||
|
IRQ_NSLU2_PCI_INTB,
|
||||||
|
IRQ_NSLU2_PCI_INTC,
|
||||||
|
};
|
||||||
|
|
||||||
|
int irq = -1;
|
||||||
|
|
||||||
|
if (slot >= 1 && slot <= NSLU2_PCI_MAX_DEV &&
|
||||||
|
pin >= 1 && pin <= NSLU2_PCI_IRQ_LINES) {
|
||||||
|
irq = pci_irq_table[(slot + pin - 2) % NSLU2_PCI_IRQ_LINES];
|
||||||
|
}
|
||||||
|
|
||||||
|
return irq;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct hw_pci __initdata nslu2_pci = {
|
||||||
|
.nr_controllers = 1,
|
||||||
|
.preinit = nslu2_pci_preinit,
|
||||||
|
.swizzle = pci_std_swizzle,
|
||||||
|
.setup = ixp4xx_setup,
|
||||||
|
.scan = ixp4xx_scan_bus,
|
||||||
|
.map_irq = nslu2_map_irq,
|
||||||
|
};
|
||||||
|
|
||||||
|
int __init nslu2_pci_init(void) /* monkey see, monkey do */
|
||||||
|
{
|
||||||
|
if (machine_is_nslu2())
|
||||||
|
pci_common_init(&nslu2_pci);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
subsys_initcall(nslu2_pci_init);
|
|
@ -0,0 +1,92 @@
|
||||||
|
/*
|
||||||
|
* arch/arm/mach-ixp4xx/nslu2-power.c
|
||||||
|
*
|
||||||
|
* NSLU2 Power/Reset driver
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Tower Technologies
|
||||||
|
*
|
||||||
|
* based on nslu2-io.c
|
||||||
|
* Copyright (C) 2004 Karen Spearel
|
||||||
|
*
|
||||||
|
* Author: Alessandro Zummo <a.zummo@towertech.it>
|
||||||
|
* Maintainers: http://www.nslu2-linux.org/
|
||||||
|
*
|
||||||
|
* 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/module.h>
|
||||||
|
#include <linux/reboot.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
|
||||||
|
extern void ctrl_alt_del(void);
|
||||||
|
|
||||||
|
static irqreturn_t nslu2_power_handler(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
/* Signal init to do the ctrlaltdel action, this will bypass init if
|
||||||
|
* it hasn't started and do a kernel_restart.
|
||||||
|
*/
|
||||||
|
ctrl_alt_del();
|
||||||
|
|
||||||
|
return IRQ_HANDLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
static irqreturn_t nslu2_reset_handler(int irq, void *dev_id, struct pt_regs *regs)
|
||||||
|
{
|
||||||
|
/* This is the paper-clip reset, it shuts the machine down directly.
|
||||||
|
*/
|
||||||
|
machine_power_off();
|
||||||
|
|
||||||
|
return IRQ_HANDLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init nslu2_power_init(void)
|
||||||
|
{
|
||||||
|
if (!(machine_is_nslu2()))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
*IXP4XX_GPIO_GPISR = 0x20400000; /* read the 2 irqs to clr */
|
||||||
|
|
||||||
|
set_irq_type(NSLU2_RB_IRQ, IRQT_LOW);
|
||||||
|
set_irq_type(NSLU2_PB_IRQ, IRQT_HIGH);
|
||||||
|
|
||||||
|
gpio_line_isr_clear(NSLU2_RB_GPIO);
|
||||||
|
gpio_line_isr_clear(NSLU2_PB_GPIO);
|
||||||
|
|
||||||
|
if (request_irq(NSLU2_RB_IRQ, &nslu2_reset_handler,
|
||||||
|
SA_INTERRUPT, "NSLU2 reset button", NULL) < 0) {
|
||||||
|
|
||||||
|
printk(KERN_DEBUG "Reset Button IRQ %d not available\n",
|
||||||
|
NSLU2_RB_IRQ);
|
||||||
|
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request_irq(NSLU2_PB_IRQ, &nslu2_power_handler,
|
||||||
|
SA_INTERRUPT, "NSLU2 power button", NULL) < 0) {
|
||||||
|
|
||||||
|
printk(KERN_DEBUG "Power Button IRQ %d not available\n",
|
||||||
|
NSLU2_PB_IRQ);
|
||||||
|
|
||||||
|
return -EIO;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __exit nslu2_power_exit(void)
|
||||||
|
{
|
||||||
|
free_irq(NSLU2_RB_IRQ, NULL);
|
||||||
|
free_irq(NSLU2_PB_IRQ, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(nslu2_power_init);
|
||||||
|
module_exit(nslu2_power_exit);
|
||||||
|
|
||||||
|
MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
|
||||||
|
MODULE_DESCRIPTION("NSLU2 Power/Reset driver");
|
||||||
|
MODULE_LICENSE("GPL");
|
|
@ -0,0 +1,134 @@
|
||||||
|
/*
|
||||||
|
* arch/arm/mach-ixp4xx/nslu2-setup.c
|
||||||
|
*
|
||||||
|
* NSLU2 board-setup
|
||||||
|
*
|
||||||
|
* based ixdp425-setup.c:
|
||||||
|
* Copyright (C) 2003-2004 MontaVista Software, Inc.
|
||||||
|
*
|
||||||
|
* Author: Mark Rakes <mrakes at mac.com>
|
||||||
|
* Maintainers: http://www.nslu2-linux.org/
|
||||||
|
*
|
||||||
|
* Fixed missing init_time in MACHINE_START kas11 10/22/04
|
||||||
|
* Changed to conform to new style __init ixdp425 kas11 10/22/04
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/serial.h>
|
||||||
|
#include <linux/serial_8250.h>
|
||||||
|
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/flash.h>
|
||||||
|
|
||||||
|
static struct flash_platform_data nslu2_flash_data = {
|
||||||
|
.map_name = "cfi_probe",
|
||||||
|
.width = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource nslu2_flash_resource = {
|
||||||
|
.start = NSLU2_FLASH_BASE,
|
||||||
|
.end = NSLU2_FLASH_BASE + NSLU2_FLASH_SIZE,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device nslu2_flash = {
|
||||||
|
.name = "IXP4XX-Flash",
|
||||||
|
.id = 0,
|
||||||
|
.dev.platform_data = &nslu2_flash_data,
|
||||||
|
.num_resources = 1,
|
||||||
|
.resource = &nslu2_flash_resource,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct ixp4xx_i2c_pins nslu2_i2c_gpio_pins = {
|
||||||
|
.sda_pin = NSLU2_SDA_PIN,
|
||||||
|
.scl_pin = NSLU2_SCL_PIN,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device nslu2_i2c_controller = {
|
||||||
|
.name = "IXP4XX-I2C",
|
||||||
|
.id = 0,
|
||||||
|
.dev.platform_data = &nslu2_i2c_gpio_pins,
|
||||||
|
.num_resources = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource nslu2_uart_resources[] = {
|
||||||
|
{
|
||||||
|
.start = IXP4XX_UART1_BASE_PHYS,
|
||||||
|
.end = IXP4XX_UART1_BASE_PHYS + 0x0fff,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = IXP4XX_UART2_BASE_PHYS,
|
||||||
|
.end = IXP4XX_UART2_BASE_PHYS + 0x0fff,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct plat_serial8250_port nslu2_uart_data[] = {
|
||||||
|
{
|
||||||
|
.mapbase = IXP4XX_UART1_BASE_PHYS,
|
||||||
|
.membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET,
|
||||||
|
.irq = IRQ_IXP4XX_UART1,
|
||||||
|
.flags = UPF_BOOT_AUTOCONF,
|
||||||
|
.iotype = UPIO_MEM,
|
||||||
|
.regshift = 2,
|
||||||
|
.uartclk = IXP4XX_UART_XTAL,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.mapbase = IXP4XX_UART2_BASE_PHYS,
|
||||||
|
.membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
|
||||||
|
.irq = IRQ_IXP4XX_UART2,
|
||||||
|
.flags = UPF_BOOT_AUTOCONF,
|
||||||
|
.iotype = UPIO_MEM,
|
||||||
|
.regshift = 2,
|
||||||
|
.uartclk = IXP4XX_UART_XTAL,
|
||||||
|
},
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device nslu2_uart = {
|
||||||
|
.name = "serial8250",
|
||||||
|
.id = PLAT8250_DEV_PLATFORM,
|
||||||
|
.dev.platform_data = nslu2_uart_data,
|
||||||
|
.num_resources = 2,
|
||||||
|
.resource = nslu2_uart_resources,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device *nslu2_devices[] __initdata = {
|
||||||
|
&nslu2_i2c_controller,
|
||||||
|
&nslu2_flash,
|
||||||
|
&nslu2_uart,
|
||||||
|
};
|
||||||
|
|
||||||
|
static void nslu2_power_off(void)
|
||||||
|
{
|
||||||
|
/* This causes the box to drop the power and go dead. */
|
||||||
|
|
||||||
|
/* enable the pwr cntl gpio */
|
||||||
|
gpio_line_config(NSLU2_PO_GPIO, IXP4XX_GPIO_OUT);
|
||||||
|
|
||||||
|
/* do the deed */
|
||||||
|
gpio_line_set(NSLU2_PO_GPIO, IXP4XX_GPIO_HIGH);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init nslu2_init(void)
|
||||||
|
{
|
||||||
|
ixp4xx_sys_init();
|
||||||
|
|
||||||
|
pm_power_off = nslu2_power_off;
|
||||||
|
|
||||||
|
platform_add_devices(nslu2_devices, ARRAY_SIZE(nslu2_devices));
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_START(NSLU2, "Linksys NSLU2")
|
||||||
|
/* Maintainer: www.nslu2-linux.org */
|
||||||
|
.phys_ram = PHYS_OFFSET,
|
||||||
|
.phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
|
||||||
|
.io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC,
|
||||||
|
.boot_params = 0x00000100,
|
||||||
|
.map_io = ixp4xx_map_io,
|
||||||
|
.init_irq = ixp4xx_init_irq,
|
||||||
|
.timer = &ixp4xx_timer,
|
||||||
|
.init_machine = nslu2_init,
|
||||||
|
MACHINE_END
|
|
@ -6,10 +6,10 @@ config ARCH_OMAP730
|
||||||
bool "OMAP730 Based System"
|
bool "OMAP730 Based System"
|
||||||
select ARCH_OMAP_OTG
|
select ARCH_OMAP_OTG
|
||||||
|
|
||||||
config ARCH_OMAP1510
|
config ARCH_OMAP15XX
|
||||||
depends on ARCH_OMAP1
|
depends on ARCH_OMAP1
|
||||||
default y
|
default y
|
||||||
bool "OMAP1510 Based System"
|
bool "OMAP15xx Based System"
|
||||||
|
|
||||||
config ARCH_OMAP16XX
|
config ARCH_OMAP16XX
|
||||||
depends on ARCH_OMAP1
|
depends on ARCH_OMAP1
|
||||||
|
@ -21,7 +21,7 @@ comment "OMAP Board Type"
|
||||||
|
|
||||||
config MACH_OMAP_INNOVATOR
|
config MACH_OMAP_INNOVATOR
|
||||||
bool "TI Innovator"
|
bool "TI Innovator"
|
||||||
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX)
|
depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX)
|
||||||
help
|
help
|
||||||
TI OMAP 1510 or 1610 Innovator board support. Say Y here if you
|
TI OMAP 1510 or 1610 Innovator board support. Say Y here if you
|
||||||
have such a board.
|
have such a board.
|
||||||
|
@ -64,20 +64,30 @@ config MACH_OMAP_PERSEUS2
|
||||||
|
|
||||||
config MACH_VOICEBLUE
|
config MACH_VOICEBLUE
|
||||||
bool "Voiceblue"
|
bool "Voiceblue"
|
||||||
depends on ARCH_OMAP1 && ARCH_OMAP1510
|
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
||||||
help
|
help
|
||||||
Support for Voiceblue GSM/VoIP gateway. Say Y here if you have
|
Support for Voiceblue GSM/VoIP gateway. Say Y here if you have
|
||||||
such a board.
|
such a board.
|
||||||
|
|
||||||
config MACH_NETSTAR
|
config MACH_NETSTAR
|
||||||
bool "NetStar"
|
bool "NetStar"
|
||||||
depends on ARCH_OMAP1 && ARCH_OMAP1510
|
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
||||||
help
|
help
|
||||||
Support for NetStar PBX. Say Y here if you have such a board.
|
Support for NetStar PBX. Say Y here if you have such a board.
|
||||||
|
|
||||||
|
config MACH_OMAP_PALMTE
|
||||||
|
bool "Palm Tungsten E"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
||||||
|
help
|
||||||
|
Support for the Palm Tungsten E PDA. Currently only the LCD panel
|
||||||
|
is supported. To boot the kernel, you'll need a PalmOS compatible
|
||||||
|
bootloader; check out http://palmtelinux.sourceforge.net for more
|
||||||
|
informations.
|
||||||
|
Say Y here if you have such a PDA, say NO otherwise.
|
||||||
|
|
||||||
config MACH_OMAP_GENERIC
|
config MACH_OMAP_GENERIC
|
||||||
bool "Generic OMAP board"
|
bool "Generic OMAP board"
|
||||||
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX)
|
depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX)
|
||||||
help
|
help
|
||||||
Support for generic OMAP-1510, 1610 or 1710 board with
|
Support for generic OMAP-1510, 1610 or 1710 board with
|
||||||
no FPGA. Can be used as template for porting Linux to
|
no FPGA. Can be used as template for porting Linux to
|
||||||
|
@ -121,32 +131,32 @@ config OMAP_ARM_182MHZ
|
||||||
|
|
||||||
config OMAP_ARM_168MHZ
|
config OMAP_ARM_168MHZ
|
||||||
bool "OMAP ARM 168 MHz CPU"
|
bool "OMAP ARM 168 MHz CPU"
|
||||||
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
help
|
help
|
||||||
Enable 168MHz clock for OMAP CPU. If unsure, say N.
|
Enable 168MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
config OMAP_ARM_150MHZ
|
config OMAP_ARM_150MHZ
|
||||||
bool "OMAP ARM 150 MHz CPU"
|
bool "OMAP ARM 150 MHz CPU"
|
||||||
depends on ARCH_OMAP1 && ARCH_OMAP1510
|
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
||||||
help
|
help
|
||||||
Enable 150MHz clock for OMAP CPU. If unsure, say N.
|
Enable 150MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
config OMAP_ARM_120MHZ
|
config OMAP_ARM_120MHZ
|
||||||
bool "OMAP ARM 120 MHz CPU"
|
bool "OMAP ARM 120 MHz CPU"
|
||||||
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
help
|
help
|
||||||
Enable 120MHz clock for OMAP CPU. If unsure, say N.
|
Enable 120MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
config OMAP_ARM_60MHZ
|
config OMAP_ARM_60MHZ
|
||||||
bool "OMAP ARM 60 MHz CPU"
|
bool "OMAP ARM 60 MHz CPU"
|
||||||
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
default y
|
default y
|
||||||
help
|
help
|
||||||
Enable 60MHz clock for OMAP CPU. If unsure, say Y.
|
Enable 60MHz clock for OMAP CPU. If unsure, say Y.
|
||||||
|
|
||||||
config OMAP_ARM_30MHZ
|
config OMAP_ARM_30MHZ
|
||||||
bool "OMAP ARM 30 MHz CPU"
|
bool "OMAP ARM 30 MHz CPU"
|
||||||
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
depends on ARCH_OMAP1 && (ARCH_OMAP15XX || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
help
|
help
|
||||||
Enable 30MHz clock for OMAP CPU. If unsure, say N.
|
Enable 30MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
# Common support
|
# Common support
|
||||||
obj-y := io.o id.o irq.o time.o serial.o devices.o
|
obj-y := io.o id.o clock.o irq.o time.o mux.o serial.o devices.o
|
||||||
led-y := leds.o
|
led-y := leds.o
|
||||||
|
|
||||||
# Specific board support
|
# Specific board support
|
||||||
|
@ -15,8 +15,9 @@ obj-$(CONFIG_MACH_OMAP_OSK) += board-osk.o
|
||||||
obj-$(CONFIG_MACH_OMAP_H3) += board-h3.o
|
obj-$(CONFIG_MACH_OMAP_H3) += board-h3.o
|
||||||
obj-$(CONFIG_MACH_VOICEBLUE) += board-voiceblue.o
|
obj-$(CONFIG_MACH_VOICEBLUE) += board-voiceblue.o
|
||||||
obj-$(CONFIG_MACH_NETSTAR) += board-netstar.o
|
obj-$(CONFIG_MACH_NETSTAR) += board-netstar.o
|
||||||
|
obj-$(CONFIG_MACH_OMAP_PALMTE) += board-palmte.o
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_OMAP1510),y)
|
ifeq ($(CONFIG_ARCH_OMAP15XX),y)
|
||||||
# Innovator-1510 FPGA
|
# Innovator-1510 FPGA
|
||||||
obj-$(CONFIG_MACH_OMAP_INNOVATOR) += fpga.o
|
obj-$(CONFIG_MACH_OMAP_INNOVATOR) += fpga.o
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/device.h>
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
#include <asm/hardware.h>
|
#include <asm/hardware.h>
|
||||||
#include <asm/mach-types.h>
|
#include <asm/mach-types.h>
|
||||||
|
@ -28,8 +28,6 @@
|
||||||
#include <asm/arch/board.h>
|
#include <asm/arch/board.h>
|
||||||
#include <asm/arch/common.h>
|
#include <asm/arch/common.h>
|
||||||
|
|
||||||
static int __initdata generic_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
|
||||||
|
|
||||||
static void __init omap_generic_init_irq(void)
|
static void __init omap_generic_init_irq(void)
|
||||||
{
|
{
|
||||||
omap_init_irq();
|
omap_init_irq();
|
||||||
|
@ -37,7 +35,7 @@ static void __init omap_generic_init_irq(void)
|
||||||
|
|
||||||
/* assume no Mini-AB port */
|
/* assume no Mini-AB port */
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
static struct omap_usb_config generic1510_usb_config __initdata = {
|
static struct omap_usb_config generic1510_usb_config __initdata = {
|
||||||
.register_host = 1,
|
.register_host = 1,
|
||||||
.register_dev = 1,
|
.register_dev = 1,
|
||||||
|
@ -76,21 +74,19 @@ static struct omap_mmc_config generic_mmc_config __initdata = {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static struct omap_uart_config generic_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
static struct omap_board_config_kernel generic_config[] = {
|
static struct omap_board_config_kernel generic_config[] = {
|
||||||
{ OMAP_TAG_USB, NULL },
|
{ OMAP_TAG_USB, NULL },
|
||||||
{ OMAP_TAG_MMC, &generic_mmc_config },
|
{ OMAP_TAG_MMC, &generic_mmc_config },
|
||||||
|
{ OMAP_TAG_UART, &generic_uart_config },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init omap_generic_init(void)
|
static void __init omap_generic_init(void)
|
||||||
{
|
{
|
||||||
const struct omap_uart_config *uart_conf;
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
|
|
||||||
/*
|
|
||||||
* Make sure the serial ports are muxed on at this point.
|
|
||||||
* You have to mux them off in device drivers later on
|
|
||||||
* if not needed.
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
|
||||||
if (cpu_is_omap1510()) {
|
if (cpu_is_omap1510()) {
|
||||||
generic_config[0].data = &generic1510_usb_config;
|
generic_config[0].data = &generic1510_usb_config;
|
||||||
}
|
}
|
||||||
|
@ -101,20 +97,9 @@ static void __init omap_generic_init(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
uart_conf = omap_get_config(OMAP_TAG_UART, struct omap_uart_config);
|
|
||||||
if (uart_conf != NULL) {
|
|
||||||
unsigned int enabled_ports, i;
|
|
||||||
|
|
||||||
enabled_ports = uart_conf->enabled_uarts;
|
|
||||||
for (i = 0; i < 3; i++) {
|
|
||||||
if (!(enabled_ports & (1 << i)))
|
|
||||||
generic_serial_ports[i] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
omap_board_config = generic_config;
|
omap_board_config = generic_config;
|
||||||
omap_board_config_size = ARRAY_SIZE(generic_config);
|
omap_board_config_size = ARRAY_SIZE(generic_config);
|
||||||
omap_serial_init(generic_serial_ports);
|
omap_serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init omap_generic_map_io(void)
|
static void __init omap_generic_map_io(void)
|
||||||
|
|
|
@ -40,8 +40,6 @@
|
||||||
|
|
||||||
extern int omap_gpio_init(void);
|
extern int omap_gpio_init(void);
|
||||||
|
|
||||||
static int __initdata h2_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
|
||||||
|
|
||||||
static struct mtd_partition h2_partitions[] = {
|
static struct mtd_partition h2_partitions[] = {
|
||||||
/* bootloader (U-Boot, etc) in first sector */
|
/* bootloader (U-Boot, etc) in first sector */
|
||||||
{
|
{
|
||||||
|
@ -160,9 +158,20 @@ static struct omap_mmc_config h2_mmc_config __initdata = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_uart_config h2_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config h2_lcd_config __initdata = {
|
||||||
|
.panel_name = "h2",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
|
|
||||||
static struct omap_board_config_kernel h2_config[] = {
|
static struct omap_board_config_kernel h2_config[] = {
|
||||||
{ OMAP_TAG_USB, &h2_usb_config },
|
{ OMAP_TAG_USB, &h2_usb_config },
|
||||||
{ OMAP_TAG_MMC, &h2_mmc_config },
|
{ OMAP_TAG_MMC, &h2_mmc_config },
|
||||||
|
{ OMAP_TAG_UART, &h2_uart_config },
|
||||||
|
{ OMAP_TAG_LCD, &h2_lcd_config },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init h2_init(void)
|
static void __init h2_init(void)
|
||||||
|
@ -180,12 +189,12 @@ static void __init h2_init(void)
|
||||||
platform_add_devices(h2_devices, ARRAY_SIZE(h2_devices));
|
platform_add_devices(h2_devices, ARRAY_SIZE(h2_devices));
|
||||||
omap_board_config = h2_config;
|
omap_board_config = h2_config;
|
||||||
omap_board_config_size = ARRAY_SIZE(h2_config);
|
omap_board_config_size = ARRAY_SIZE(h2_config);
|
||||||
|
omap_serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init h2_map_io(void)
|
static void __init h2_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_common_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(h2_serial_ports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(OMAP_H2, "TI-H2")
|
MACHINE_START(OMAP_H2, "TI-H2")
|
||||||
|
|
|
@ -41,8 +41,6 @@
|
||||||
|
|
||||||
extern int omap_gpio_init(void);
|
extern int omap_gpio_init(void);
|
||||||
|
|
||||||
static int __initdata h3_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
|
||||||
|
|
||||||
static struct mtd_partition h3_partitions[] = {
|
static struct mtd_partition h3_partitions[] = {
|
||||||
/* bootloader (U-Boot, etc) in first sector */
|
/* bootloader (U-Boot, etc) in first sector */
|
||||||
{
|
{
|
||||||
|
@ -168,9 +166,20 @@ static struct omap_mmc_config h3_mmc_config __initdata = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_uart_config h3_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config h3_lcd_config __initdata = {
|
||||||
|
.panel_name = "h3",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
|
|
||||||
static struct omap_board_config_kernel h3_config[] = {
|
static struct omap_board_config_kernel h3_config[] = {
|
||||||
{ OMAP_TAG_USB, &h3_usb_config },
|
{ OMAP_TAG_USB, &h3_usb_config },
|
||||||
{ OMAP_TAG_MMC, &h3_mmc_config },
|
{ OMAP_TAG_MMC, &h3_mmc_config },
|
||||||
|
{ OMAP_TAG_UART, &h3_uart_config },
|
||||||
|
{ OMAP_TAG_LCD, &h3_lcd_config },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init h3_init(void)
|
static void __init h3_init(void)
|
||||||
|
@ -180,6 +189,7 @@ static void __init h3_init(void)
|
||||||
(void) platform_add_devices(devices, ARRAY_SIZE(devices));
|
(void) platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
omap_board_config = h3_config;
|
omap_board_config = h3_config;
|
||||||
omap_board_config_size = ARRAY_SIZE(h3_config);
|
omap_board_config_size = ARRAY_SIZE(h3_config);
|
||||||
|
omap_serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init h3_init_smc91x(void)
|
static void __init h3_init_smc91x(void)
|
||||||
|
@ -201,7 +211,6 @@ void h3_init_irq(void)
|
||||||
static void __init h3_map_io(void)
|
static void __init h3_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_common_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(h3_serial_ports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
|
MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board")
|
||||||
|
|
|
@ -36,8 +36,6 @@
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
#include <asm/arch/common.h>
|
#include <asm/arch/common.h>
|
||||||
|
|
||||||
static int __initdata innovator_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
|
||||||
|
|
||||||
static struct mtd_partition innovator_partitions[] = {
|
static struct mtd_partition innovator_partitions[] = {
|
||||||
/* bootloader (U-Boot, etc) in first sector */
|
/* bootloader (U-Boot, etc) in first sector */
|
||||||
{
|
{
|
||||||
|
@ -99,7 +97,7 @@ static struct platform_device innovator_flash_device = {
|
||||||
.resource = &innovator_flash_resource,
|
.resource = &innovator_flash_resource,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
|
|
||||||
/* Only FPGA needs to be mapped here. All others are done with ioremap */
|
/* Only FPGA needs to be mapped here. All others are done with ioremap */
|
||||||
static struct map_desc innovator1510_io_desc[] __initdata = {
|
static struct map_desc innovator1510_io_desc[] __initdata = {
|
||||||
|
@ -136,7 +134,7 @@ static struct platform_device *innovator1510_devices[] __initdata = {
|
||||||
&innovator1510_smc91x_device,
|
&innovator1510_smc91x_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* CONFIG_ARCH_OMAP1510 */
|
#endif /* CONFIG_ARCH_OMAP15XX */
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP16XX
|
#ifdef CONFIG_ARCH_OMAP16XX
|
||||||
|
|
||||||
|
@ -185,7 +183,7 @@ void innovator_init_irq(void)
|
||||||
{
|
{
|
||||||
omap_init_irq();
|
omap_init_irq();
|
||||||
omap_gpio_init();
|
omap_gpio_init();
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
if (cpu_is_omap1510()) {
|
if (cpu_is_omap1510()) {
|
||||||
omap1510_fpga_init_irq();
|
omap1510_fpga_init_irq();
|
||||||
}
|
}
|
||||||
|
@ -193,7 +191,7 @@ void innovator_init_irq(void)
|
||||||
innovator_init_smc91x();
|
innovator_init_smc91x();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
static struct omap_usb_config innovator1510_usb_config __initdata = {
|
static struct omap_usb_config innovator1510_usb_config __initdata = {
|
||||||
/* for bundled non-standard host and peripheral cables */
|
/* for bundled non-standard host and peripheral cables */
|
||||||
.hmc_mode = 4,
|
.hmc_mode = 4,
|
||||||
|
@ -205,6 +203,11 @@ static struct omap_usb_config innovator1510_usb_config __initdata = {
|
||||||
.register_dev = 1,
|
.register_dev = 1,
|
||||||
.pins[0] = 2,
|
.pins[0] = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config innovator1510_lcd_config __initdata = {
|
||||||
|
.panel_name = "inn1510",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP16XX
|
#ifdef CONFIG_ARCH_OMAP16XX
|
||||||
|
@ -222,6 +225,11 @@ static struct omap_usb_config h2_usb_config __initdata = {
|
||||||
|
|
||||||
.pins[1] = 3,
|
.pins[1] = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config innovator1610_lcd_config __initdata = {
|
||||||
|
.panel_name = "inn1610",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct omap_mmc_config innovator_mmc_config __initdata = {
|
static struct omap_mmc_config innovator_mmc_config __initdata = {
|
||||||
|
@ -234,14 +242,20 @@ static struct omap_mmc_config innovator_mmc_config __initdata = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_uart_config innovator_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
static struct omap_board_config_kernel innovator_config[] = {
|
static struct omap_board_config_kernel innovator_config[] = {
|
||||||
{ OMAP_TAG_USB, NULL },
|
{ OMAP_TAG_USB, NULL },
|
||||||
|
{ OMAP_TAG_LCD, NULL },
|
||||||
{ OMAP_TAG_MMC, &innovator_mmc_config },
|
{ OMAP_TAG_MMC, &innovator_mmc_config },
|
||||||
|
{ OMAP_TAG_UART, &innovator_uart_config },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init innovator_init(void)
|
static void __init innovator_init(void)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
if (cpu_is_omap1510()) {
|
if (cpu_is_omap1510()) {
|
||||||
platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
|
platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
|
||||||
}
|
}
|
||||||
|
@ -252,23 +266,28 @@ static void __init innovator_init(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
if (cpu_is_omap1510())
|
if (cpu_is_omap1510()) {
|
||||||
innovator_config[0].data = &innovator1510_usb_config;
|
innovator_config[0].data = &innovator1510_usb_config;
|
||||||
|
innovator_config[1].data = &innovator1510_lcd_config;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_ARCH_OMAP16XX
|
#ifdef CONFIG_ARCH_OMAP16XX
|
||||||
if (cpu_is_omap1610())
|
if (cpu_is_omap1610()) {
|
||||||
innovator_config[0].data = &h2_usb_config;
|
innovator_config[0].data = &h2_usb_config;
|
||||||
|
innovator_config[1].data = &innovator1610_lcd_config;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
omap_board_config = innovator_config;
|
omap_board_config = innovator_config;
|
||||||
omap_board_config_size = ARRAY_SIZE(innovator_config);
|
omap_board_config_size = ARRAY_SIZE(innovator_config);
|
||||||
|
omap_serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init innovator_map_io(void)
|
static void __init innovator_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_common_io();
|
omap_map_common_io();
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
if (cpu_is_omap1510()) {
|
if (cpu_is_omap1510()) {
|
||||||
iotable_init(innovator1510_io_desc, ARRAY_SIZE(innovator1510_io_desc));
|
iotable_init(innovator1510_io_desc, ARRAY_SIZE(innovator1510_io_desc));
|
||||||
udelay(10); /* Delay needed for FPGA */
|
udelay(10); /* Delay needed for FPGA */
|
||||||
|
@ -280,7 +299,6 @@ static void __init innovator_map_io(void)
|
||||||
fpga_read(OMAP1510_FPGA_BOARD_REV));
|
fpga_read(OMAP1510_FPGA_BOARD_REV));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
omap_serial_init(innovator_serial_ports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
|
MACHINE_START(OMAP_INNOVATOR, "TI-Innovator")
|
||||||
|
|
|
@ -55,6 +55,14 @@ static struct platform_device *netstar_devices[] __initdata = {
|
||||||
&netstar_smc91x_device,
|
&netstar_smc91x_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_uart_config netstar_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_board_config_kernel netstar_config[] = {
|
||||||
|
{ OMAP_TAG_UART, &netstar_uart_config },
|
||||||
|
};
|
||||||
|
|
||||||
static void __init netstar_init_irq(void)
|
static void __init netstar_init_irq(void)
|
||||||
{
|
{
|
||||||
omap_init_irq();
|
omap_init_irq();
|
||||||
|
@ -92,14 +100,15 @@ static void __init netstar_init(void)
|
||||||
/* Switch off red LED */
|
/* Switch off red LED */
|
||||||
omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */
|
omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */
|
||||||
omap_writeb(0x80, OMAP_LPG1_LCR);
|
omap_writeb(0x80, OMAP_LPG1_LCR);
|
||||||
}
|
|
||||||
|
|
||||||
static int __initdata omap_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
omap_board_config = netstar_config;
|
||||||
|
omap_board_config_size = ARRAY_SIZE(netstar_config);
|
||||||
|
omap_serial_init();
|
||||||
|
}
|
||||||
|
|
||||||
static void __init netstar_map_io(void)
|
static void __init netstar_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_common_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(omap_serial_ports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MACHINE_PANICED 1
|
#define MACHINE_PANICED 1
|
||||||
|
|
|
@ -46,8 +46,6 @@
|
||||||
#include <asm/arch/tc.h>
|
#include <asm/arch/tc.h>
|
||||||
#include <asm/arch/common.h>
|
#include <asm/arch/common.h>
|
||||||
|
|
||||||
static int __initdata osk_serial_ports[OMAP_MAX_NR_PORTS] = {1, 0, 0};
|
|
||||||
|
|
||||||
static struct mtd_partition osk_partitions[] = {
|
static struct mtd_partition osk_partitions[] = {
|
||||||
/* bootloader (U-Boot, etc) in first sector */
|
/* bootloader (U-Boot, etc) in first sector */
|
||||||
{
|
{
|
||||||
|
@ -155,7 +153,7 @@ static void __init osk_init_smc91x(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check EMIFS wait states to fix errors with SMC_GET_PKT_HDR */
|
/* Check EMIFS wait states to fix errors with SMC_GET_PKT_HDR */
|
||||||
EMIFS_CCS(1) |= 0x2;
|
EMIFS_CCS(1) |= 0x3;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init osk_init_cf(void)
|
static void __init osk_init_cf(void)
|
||||||
|
@ -193,8 +191,19 @@ static struct omap_usb_config osk_usb_config __initdata = {
|
||||||
.pins[0] = 2,
|
.pins[0] = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_uart_config osk_uart_config __initdata = {
|
||||||
|
.enabled_uarts = (1 << 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config osk_lcd_config __initdata = {
|
||||||
|
.panel_name = "osk",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
|
|
||||||
static struct omap_board_config_kernel osk_config[] = {
|
static struct omap_board_config_kernel osk_config[] = {
|
||||||
{ OMAP_TAG_USB, &osk_usb_config },
|
{ OMAP_TAG_USB, &osk_usb_config },
|
||||||
|
{ OMAP_TAG_UART, &osk_uart_config },
|
||||||
|
{ OMAP_TAG_LCD, &osk_lcd_config },
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_OSK_MISTRAL
|
#ifdef CONFIG_OMAP_OSK_MISTRAL
|
||||||
|
@ -254,13 +263,13 @@ static void __init osk_init(void)
|
||||||
omap_board_config_size = ARRAY_SIZE(osk_config);
|
omap_board_config_size = ARRAY_SIZE(osk_config);
|
||||||
USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
|
USB_TRANSCEIVER_CTRL_REG |= (3 << 1);
|
||||||
|
|
||||||
|
omap_serial_init();
|
||||||
osk_mistral_init();
|
osk_mistral_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init osk_map_io(void)
|
static void __init osk_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_common_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(osk_serial_ports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(OMAP_OSK, "TI-OSK")
|
MACHINE_START(OMAP_OSK, "TI-OSK")
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap1/board-palmte.c
|
||||||
|
*
|
||||||
|
* Modified from board-generic.c
|
||||||
|
*
|
||||||
|
* Support for the Palm Tungsten E PDA.
|
||||||
|
*
|
||||||
|
* Original version : Laurent Gonzalez
|
||||||
|
*
|
||||||
|
* Maintainters : http://palmtelinux.sf.net
|
||||||
|
* palmtelinux-developpers@lists.sf.net
|
||||||
|
*
|
||||||
|
* 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/platform_device.h>
|
||||||
|
#include <linux/notifier.h>
|
||||||
|
|
||||||
|
#include <asm/hardware.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include <asm/arch/gpio.h>
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/board.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
|
#include <asm/hardware/clock.h>
|
||||||
|
|
||||||
|
static void __init omap_generic_init_irq(void)
|
||||||
|
{
|
||||||
|
omap_init_irq();
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct omap_usb_config palmte_usb_config __initdata = {
|
||||||
|
.register_dev = 1,
|
||||||
|
.hmc_mode = 0,
|
||||||
|
.pins[0] = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_mmc_config palmte_mmc_config __initdata = {
|
||||||
|
.mmc [0] = {
|
||||||
|
.enabled = 1,
|
||||||
|
.wire4 = 1,
|
||||||
|
.wp_pin = OMAP_MPUIO(3),
|
||||||
|
.power_pin = -1,
|
||||||
|
.switch_pin = -1,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config palmte_lcd_config __initdata = {
|
||||||
|
.panel_name = "palmte",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_board_config_kernel palmte_config[] = {
|
||||||
|
{ OMAP_TAG_USB, &palmte_usb_config },
|
||||||
|
{ OMAP_TAG_MMC, &palmte_mmc_config },
|
||||||
|
{ OMAP_TAG_LCD, &palmte_lcd_config },
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init omap_generic_init(void)
|
||||||
|
{
|
||||||
|
omap_board_config = palmte_config;
|
||||||
|
omap_board_config_size = ARRAY_SIZE(palmte_config);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init omap_generic_map_io(void)
|
||||||
|
{
|
||||||
|
omap_map_common_io();
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
|
||||||
|
.phys_ram = 0x10000000,
|
||||||
|
.phys_io = 0xfff00000,
|
||||||
|
.io_pg_offst = ((0xfef00000) >> 18) & 0xfffc,
|
||||||
|
.boot_params = 0x10000100,
|
||||||
|
.map_io = omap_generic_map_io,
|
||||||
|
.init_irq = omap_generic_init_irq,
|
||||||
|
.init_machine = omap_generic_init,
|
||||||
|
.timer = &omap_timer,
|
||||||
|
MACHINE_END
|
|
@ -29,6 +29,7 @@
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/fpga.h>
|
#include <asm/arch/fpga.h>
|
||||||
#include <asm/arch/common.h>
|
#include <asm/arch/common.h>
|
||||||
|
#include <asm/arch/board.h>
|
||||||
|
|
||||||
static struct resource smc91x_resources[] = {
|
static struct resource smc91x_resources[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
|
@ -43,8 +44,6 @@ static struct resource smc91x_resources[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __initdata p2_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 0};
|
|
||||||
|
|
||||||
static struct mtd_partition p2_partitions[] = {
|
static struct mtd_partition p2_partitions[] = {
|
||||||
/* bootloader (U-Boot, etc) in first sector */
|
/* bootloader (U-Boot, etc) in first sector */
|
||||||
{
|
{
|
||||||
|
@ -111,9 +110,27 @@ static struct platform_device *devices[] __initdata = {
|
||||||
&smc91x_device,
|
&smc91x_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_uart_config perseus2_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1)),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config perseus2_lcd_config __initdata = {
|
||||||
|
.panel_name = "p2",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_board_config_kernel perseus2_config[] = {
|
||||||
|
{ OMAP_TAG_UART, &perseus2_uart_config },
|
||||||
|
{ OMAP_TAG_LCD, &perseus2_lcd_config },
|
||||||
|
};
|
||||||
|
|
||||||
static void __init omap_perseus2_init(void)
|
static void __init omap_perseus2_init(void)
|
||||||
{
|
{
|
||||||
(void) platform_add_devices(devices, ARRAY_SIZE(devices));
|
(void) platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||||
|
|
||||||
|
omap_board_config = perseus2_config;
|
||||||
|
omap_board_config_size = ARRAY_SIZE(perseus2_config);
|
||||||
|
omap_serial_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __init perseus2_init_smc91x(void)
|
static void __init perseus2_init_smc91x(void)
|
||||||
|
@ -131,7 +148,6 @@ void omap_perseus2_init_irq(void)
|
||||||
omap_gpio_init();
|
omap_gpio_init();
|
||||||
perseus2_init_smc91x();
|
perseus2_init_smc91x();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Only FPGA needs to be mapped here. All others are done with ioremap */
|
/* Only FPGA needs to be mapped here. All others are done with ioremap */
|
||||||
static struct map_desc omap_perseus2_io_desc[] __initdata = {
|
static struct map_desc omap_perseus2_io_desc[] __initdata = {
|
||||||
{
|
{
|
||||||
|
@ -179,7 +195,6 @@ static void __init omap_perseus2_map_io(void)
|
||||||
* It is used as the Ethernet controller interrupt
|
* It is used as the Ethernet controller interrupt
|
||||||
*/
|
*/
|
||||||
omap_writel(omap_readl(OMAP730_IO_CONF_9) & 0x1FFFFFFF, OMAP730_IO_CONF_9);
|
omap_writel(omap_readl(OMAP730_IO_CONF_9) & 0x1FFFFFFF, OMAP730_IO_CONF_9);
|
||||||
omap_serial_init(p2_serial_ports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
|
MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2")
|
||||||
|
|
|
@ -150,9 +150,14 @@ static struct omap_mmc_config voiceblue_mmc_config __initdata = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct omap_uart_config voiceblue_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
static struct omap_board_config_kernel voiceblue_config[] = {
|
static struct omap_board_config_kernel voiceblue_config[] = {
|
||||||
{ OMAP_TAG_USB, &voiceblue_usb_config },
|
{ OMAP_TAG_USB, &voiceblue_usb_config },
|
||||||
{ OMAP_TAG_MMC, &voiceblue_mmc_config },
|
{ OMAP_TAG_MMC, &voiceblue_mmc_config },
|
||||||
|
{ OMAP_TAG_UART, &voiceblue_uart_config },
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init voiceblue_init_irq(void)
|
static void __init voiceblue_init_irq(void)
|
||||||
|
@ -191,6 +196,7 @@ static void __init voiceblue_init(void)
|
||||||
platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
|
platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
|
||||||
omap_board_config = voiceblue_config;
|
omap_board_config = voiceblue_config;
|
||||||
omap_board_config_size = ARRAY_SIZE(voiceblue_config);
|
omap_board_config_size = ARRAY_SIZE(voiceblue_config);
|
||||||
|
omap_serial_init();
|
||||||
|
|
||||||
/* There is a good chance board is going up, so enable power LED
|
/* There is a good chance board is going up, so enable power LED
|
||||||
* (it is connected through invertor) */
|
* (it is connected through invertor) */
|
||||||
|
@ -198,12 +204,9 @@ static void __init voiceblue_init(void)
|
||||||
omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */
|
omap_writeb(0x00, OMAP_LPG1_PMR); /* Disable clock */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __initdata omap_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
|
||||||
|
|
||||||
static void __init voiceblue_map_io(void)
|
static void __init voiceblue_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_common_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(omap_serial_ports);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MACHINE_PANICED 1
|
#define MACHINE_PANICED 1
|
||||||
|
|
|
@ -0,0 +1,792 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap1/clock.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 - 2005 Nokia corporation
|
||||||
|
* Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>
|
||||||
|
*
|
||||||
|
* Modified to use omap shared clock framework by
|
||||||
|
* Tony Lindgren <tony@atomide.com>
|
||||||
|
*
|
||||||
|
* 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/module.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/errno.h>
|
||||||
|
#include <linux/err.h>
|
||||||
|
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/hardware/clock.h>
|
||||||
|
|
||||||
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/clock.h>
|
||||||
|
#include <asm/arch/sram.h>
|
||||||
|
|
||||||
|
#include "clock.h"
|
||||||
|
|
||||||
|
__u32 arm_idlect1_mask;
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
* Omap1 specific clock functions
|
||||||
|
*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static void omap1_watchdog_recalc(struct clk * clk)
|
||||||
|
{
|
||||||
|
clk->rate = clk->parent->rate / 14;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_uart_recalc(struct clk * clk)
|
||||||
|
{
|
||||||
|
unsigned int val = omap_readl(clk->enable_reg);
|
||||||
|
if (val & clk->enable_bit)
|
||||||
|
clk->rate = 48000000;
|
||||||
|
else
|
||||||
|
clk->rate = 12000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int omap1_clk_enable_dsp_domain(struct clk *clk)
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
|
||||||
|
retval = omap1_clk_use(&api_ck.clk);
|
||||||
|
if (!retval) {
|
||||||
|
retval = omap1_clk_enable(clk);
|
||||||
|
omap1_clk_unuse(&api_ck.clk);
|
||||||
|
}
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_clk_disable_dsp_domain(struct clk *clk)
|
||||||
|
{
|
||||||
|
if (omap1_clk_use(&api_ck.clk) == 0) {
|
||||||
|
omap1_clk_disable(clk);
|
||||||
|
omap1_clk_unuse(&api_ck.clk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int omap1_clk_enable_uart_functional(struct clk *clk)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
struct uart_clk *uclk;
|
||||||
|
|
||||||
|
ret = omap1_clk_enable(clk);
|
||||||
|
if (ret == 0) {
|
||||||
|
/* Set smart idle acknowledgement mode */
|
||||||
|
uclk = (struct uart_clk *)clk;
|
||||||
|
omap_writeb((omap_readb(uclk->sysc_addr) & ~0x10) | 8,
|
||||||
|
uclk->sysc_addr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_clk_disable_uart_functional(struct clk *clk)
|
||||||
|
{
|
||||||
|
struct uart_clk *uclk;
|
||||||
|
|
||||||
|
/* Set force idle acknowledgement mode */
|
||||||
|
uclk = (struct uart_clk *)clk;
|
||||||
|
omap_writeb((omap_readb(uclk->sysc_addr) & ~0x18), uclk->sysc_addr);
|
||||||
|
|
||||||
|
omap1_clk_disable(clk);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_clk_allow_idle(struct clk *clk)
|
||||||
|
{
|
||||||
|
struct arm_idlect1_clk * iclk = (struct arm_idlect1_clk *)clk;
|
||||||
|
|
||||||
|
if (!(clk->flags & CLOCK_IDLE_CONTROL))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (iclk->no_idle_count > 0 && !(--iclk->no_idle_count))
|
||||||
|
arm_idlect1_mask |= 1 << iclk->idlect_shift;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_clk_deny_idle(struct clk *clk)
|
||||||
|
{
|
||||||
|
struct arm_idlect1_clk * iclk = (struct arm_idlect1_clk *)clk;
|
||||||
|
|
||||||
|
if (!(clk->flags & CLOCK_IDLE_CONTROL))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (iclk->no_idle_count++ == 0)
|
||||||
|
arm_idlect1_mask &= ~(1 << iclk->idlect_shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
static __u16 verify_ckctl_value(__u16 newval)
|
||||||
|
{
|
||||||
|
/* This function checks for following limitations set
|
||||||
|
* by the hardware (all conditions must be true):
|
||||||
|
* DSPMMU_CK == DSP_CK or DSPMMU_CK == DSP_CK/2
|
||||||
|
* ARM_CK >= TC_CK
|
||||||
|
* DSP_CK >= TC_CK
|
||||||
|
* DSPMMU_CK >= TC_CK
|
||||||
|
*
|
||||||
|
* In addition following rules are enforced:
|
||||||
|
* LCD_CK <= TC_CK
|
||||||
|
* ARMPER_CK <= TC_CK
|
||||||
|
*
|
||||||
|
* However, maximum frequencies are not checked for!
|
||||||
|
*/
|
||||||
|
__u8 per_exp;
|
||||||
|
__u8 lcd_exp;
|
||||||
|
__u8 arm_exp;
|
||||||
|
__u8 dsp_exp;
|
||||||
|
__u8 tc_exp;
|
||||||
|
__u8 dspmmu_exp;
|
||||||
|
|
||||||
|
per_exp = (newval >> CKCTL_PERDIV_OFFSET) & 3;
|
||||||
|
lcd_exp = (newval >> CKCTL_LCDDIV_OFFSET) & 3;
|
||||||
|
arm_exp = (newval >> CKCTL_ARMDIV_OFFSET) & 3;
|
||||||
|
dsp_exp = (newval >> CKCTL_DSPDIV_OFFSET) & 3;
|
||||||
|
tc_exp = (newval >> CKCTL_TCDIV_OFFSET) & 3;
|
||||||
|
dspmmu_exp = (newval >> CKCTL_DSPMMUDIV_OFFSET) & 3;
|
||||||
|
|
||||||
|
if (dspmmu_exp < dsp_exp)
|
||||||
|
dspmmu_exp = dsp_exp;
|
||||||
|
if (dspmmu_exp > dsp_exp+1)
|
||||||
|
dspmmu_exp = dsp_exp+1;
|
||||||
|
if (tc_exp < arm_exp)
|
||||||
|
tc_exp = arm_exp;
|
||||||
|
if (tc_exp < dspmmu_exp)
|
||||||
|
tc_exp = dspmmu_exp;
|
||||||
|
if (tc_exp > lcd_exp)
|
||||||
|
lcd_exp = tc_exp;
|
||||||
|
if (tc_exp > per_exp)
|
||||||
|
per_exp = tc_exp;
|
||||||
|
|
||||||
|
newval &= 0xf000;
|
||||||
|
newval |= per_exp << CKCTL_PERDIV_OFFSET;
|
||||||
|
newval |= lcd_exp << CKCTL_LCDDIV_OFFSET;
|
||||||
|
newval |= arm_exp << CKCTL_ARMDIV_OFFSET;
|
||||||
|
newval |= dsp_exp << CKCTL_DSPDIV_OFFSET;
|
||||||
|
newval |= tc_exp << CKCTL_TCDIV_OFFSET;
|
||||||
|
newval |= dspmmu_exp << CKCTL_DSPMMUDIV_OFFSET;
|
||||||
|
|
||||||
|
return newval;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int calc_dsor_exp(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
/* Note: If target frequency is too low, this function will return 4,
|
||||||
|
* which is invalid value. Caller must check for this value and act
|
||||||
|
* accordingly.
|
||||||
|
*
|
||||||
|
* Note: This function does not check for following limitations set
|
||||||
|
* by the hardware (all conditions must be true):
|
||||||
|
* DSPMMU_CK == DSP_CK or DSPMMU_CK == DSP_CK/2
|
||||||
|
* ARM_CK >= TC_CK
|
||||||
|
* DSP_CK >= TC_CK
|
||||||
|
* DSPMMU_CK >= TC_CK
|
||||||
|
*/
|
||||||
|
unsigned long realrate;
|
||||||
|
struct clk * parent;
|
||||||
|
unsigned dsor_exp;
|
||||||
|
|
||||||
|
if (unlikely(!(clk->flags & RATE_CKCTL)))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
parent = clk->parent;
|
||||||
|
if (unlikely(parent == 0))
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
realrate = parent->rate;
|
||||||
|
for (dsor_exp=0; dsor_exp<4; dsor_exp++) {
|
||||||
|
if (realrate <= rate)
|
||||||
|
break;
|
||||||
|
|
||||||
|
realrate /= 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return dsor_exp;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_ckctl_recalc(struct clk * clk)
|
||||||
|
{
|
||||||
|
int dsor;
|
||||||
|
|
||||||
|
/* Calculate divisor encoded as 2-bit exponent */
|
||||||
|
dsor = 1 << (3 & (omap_readw(ARM_CKCTL) >> clk->rate_offset));
|
||||||
|
|
||||||
|
if (unlikely(clk->rate == clk->parent->rate / dsor))
|
||||||
|
return; /* No change, quick exit */
|
||||||
|
clk->rate = clk->parent->rate / dsor;
|
||||||
|
|
||||||
|
if (unlikely(clk->flags & RATE_PROPAGATES))
|
||||||
|
propagate_rate(clk);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_ckctl_recalc_dsp_domain(struct clk * clk)
|
||||||
|
{
|
||||||
|
int dsor;
|
||||||
|
|
||||||
|
/* Calculate divisor encoded as 2-bit exponent
|
||||||
|
*
|
||||||
|
* The clock control bits are in DSP domain,
|
||||||
|
* so api_ck is needed for access.
|
||||||
|
* Note that DSP_CKCTL virt addr = phys addr, so
|
||||||
|
* we must use __raw_readw() instead of omap_readw().
|
||||||
|
*/
|
||||||
|
omap1_clk_use(&api_ck.clk);
|
||||||
|
dsor = 1 << (3 & (__raw_readw(DSP_CKCTL) >> clk->rate_offset));
|
||||||
|
omap1_clk_unuse(&api_ck.clk);
|
||||||
|
|
||||||
|
if (unlikely(clk->rate == clk->parent->rate / dsor))
|
||||||
|
return; /* No change, quick exit */
|
||||||
|
clk->rate = clk->parent->rate / dsor;
|
||||||
|
|
||||||
|
if (unlikely(clk->flags & RATE_PROPAGATES))
|
||||||
|
propagate_rate(clk);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* MPU virtual clock functions */
|
||||||
|
static int omap1_select_table_rate(struct clk * clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
/* Find the highest supported frequency <= rate and switch to it */
|
||||||
|
struct mpu_rate * ptr;
|
||||||
|
|
||||||
|
if (clk != &virtual_ck_mpu)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
for (ptr = rate_table; ptr->rate; ptr++) {
|
||||||
|
if (ptr->xtal != ck_ref.rate)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* DPLL1 cannot be reprogrammed without risking system crash */
|
||||||
|
if (likely(ck_dpll1.rate!=0) && ptr->pll_rate != ck_dpll1.rate)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Can check only after xtal frequency check */
|
||||||
|
if (ptr->rate <= rate)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ptr->rate)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* In most cases we should not need to reprogram DPLL.
|
||||||
|
* Reprogramming the DPLL is tricky, it must be done from SRAM.
|
||||||
|
*/
|
||||||
|
omap_sram_reprogram_clock(ptr->dpllctl_val, ptr->ckctl_val);
|
||||||
|
|
||||||
|
ck_dpll1.rate = ptr->pll_rate;
|
||||||
|
propagate_rate(&ck_dpll1);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int omap1_clk_set_rate_dsp_domain(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
int ret = -EINVAL;
|
||||||
|
int dsor_exp;
|
||||||
|
__u16 regval;
|
||||||
|
|
||||||
|
if (clk->flags & RATE_CKCTL) {
|
||||||
|
dsor_exp = calc_dsor_exp(clk, rate);
|
||||||
|
if (dsor_exp > 3)
|
||||||
|
dsor_exp = -EINVAL;
|
||||||
|
if (dsor_exp < 0)
|
||||||
|
return dsor_exp;
|
||||||
|
|
||||||
|
regval = __raw_readw(DSP_CKCTL);
|
||||||
|
regval &= ~(3 << clk->rate_offset);
|
||||||
|
regval |= dsor_exp << clk->rate_offset;
|
||||||
|
__raw_writew(regval, DSP_CKCTL);
|
||||||
|
clk->rate = clk->parent->rate / (1 << dsor_exp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unlikely(ret == 0 && (clk->flags & RATE_PROPAGATES)))
|
||||||
|
propagate_rate(clk);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long omap1_round_to_table_rate(struct clk * clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
/* Find the highest supported frequency <= rate */
|
||||||
|
struct mpu_rate * ptr;
|
||||||
|
long highest_rate;
|
||||||
|
|
||||||
|
if (clk != &virtual_ck_mpu)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
highest_rate = -EINVAL;
|
||||||
|
|
||||||
|
for (ptr = rate_table; ptr->rate; ptr++) {
|
||||||
|
if (ptr->xtal != ck_ref.rate)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
highest_rate = ptr->rate;
|
||||||
|
|
||||||
|
/* Can check only after xtal frequency check */
|
||||||
|
if (ptr->rate <= rate)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return highest_rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
static unsigned calc_ext_dsor(unsigned long rate)
|
||||||
|
{
|
||||||
|
unsigned dsor;
|
||||||
|
|
||||||
|
/* MCLK and BCLK divisor selection is not linear:
|
||||||
|
* freq = 96MHz / dsor
|
||||||
|
*
|
||||||
|
* RATIO_SEL range: dsor <-> RATIO_SEL
|
||||||
|
* 0..6: (RATIO_SEL+2) <-> (dsor-2)
|
||||||
|
* 6..48: (8+(RATIO_SEL-6)*2) <-> ((dsor-8)/2+6)
|
||||||
|
* Minimum dsor is 2 and maximum is 96. Odd divisors starting from 9
|
||||||
|
* can not be used.
|
||||||
|
*/
|
||||||
|
for (dsor = 2; dsor < 96; ++dsor) {
|
||||||
|
if ((dsor & 1) && dsor > 8)
|
||||||
|
continue;
|
||||||
|
if (rate >= 96000000 / dsor)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return dsor;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Only needed on 1510 */
|
||||||
|
static int omap1_set_uart_rate(struct clk * clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
unsigned int val;
|
||||||
|
|
||||||
|
val = omap_readl(clk->enable_reg);
|
||||||
|
if (rate == 12000000)
|
||||||
|
val &= ~(1 << clk->enable_bit);
|
||||||
|
else if (rate == 48000000)
|
||||||
|
val |= (1 << clk->enable_bit);
|
||||||
|
else
|
||||||
|
return -EINVAL;
|
||||||
|
omap_writel(val, clk->enable_reg);
|
||||||
|
clk->rate = rate;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* External clock (MCLK & BCLK) functions */
|
||||||
|
static int omap1_set_ext_clk_rate(struct clk * clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
unsigned dsor;
|
||||||
|
__u16 ratio_bits;
|
||||||
|
|
||||||
|
dsor = calc_ext_dsor(rate);
|
||||||
|
clk->rate = 96000000 / dsor;
|
||||||
|
if (dsor > 8)
|
||||||
|
ratio_bits = ((dsor - 8) / 2 + 6) << 2;
|
||||||
|
else
|
||||||
|
ratio_bits = (dsor - 2) << 2;
|
||||||
|
|
||||||
|
ratio_bits |= omap_readw(clk->enable_reg) & ~0xfd;
|
||||||
|
omap_writew(ratio_bits, clk->enable_reg);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long omap1_round_ext_clk_rate(struct clk * clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
return 96000000 / calc_ext_dsor(rate);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_init_ext_clk(struct clk * clk)
|
||||||
|
{
|
||||||
|
unsigned dsor;
|
||||||
|
__u16 ratio_bits;
|
||||||
|
|
||||||
|
/* Determine current rate and ensure clock is based on 96MHz APLL */
|
||||||
|
ratio_bits = omap_readw(clk->enable_reg) & ~1;
|
||||||
|
omap_writew(ratio_bits, clk->enable_reg);
|
||||||
|
|
||||||
|
ratio_bits = (ratio_bits & 0xfc) >> 2;
|
||||||
|
if (ratio_bits > 6)
|
||||||
|
dsor = (ratio_bits - 6) * 2 + 8;
|
||||||
|
else
|
||||||
|
dsor = ratio_bits + 2;
|
||||||
|
|
||||||
|
clk-> rate = 96000000 / dsor;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int omap1_clk_use(struct clk *clk)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
if (clk->usecount++ == 0) {
|
||||||
|
if (likely(clk->parent)) {
|
||||||
|
ret = omap1_clk_use(clk->parent);
|
||||||
|
|
||||||
|
if (unlikely(ret != 0)) {
|
||||||
|
clk->usecount--;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clk->flags & CLOCK_NO_IDLE_PARENT)
|
||||||
|
if (!cpu_is_omap24xx())
|
||||||
|
omap1_clk_deny_idle(clk->parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = clk->enable(clk);
|
||||||
|
|
||||||
|
if (unlikely(ret != 0) && clk->parent) {
|
||||||
|
omap1_clk_unuse(clk->parent);
|
||||||
|
clk->usecount--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_clk_unuse(struct clk *clk)
|
||||||
|
{
|
||||||
|
if (clk->usecount > 0 && !(--clk->usecount)) {
|
||||||
|
clk->disable(clk);
|
||||||
|
if (likely(clk->parent)) {
|
||||||
|
omap1_clk_unuse(clk->parent);
|
||||||
|
if (clk->flags & CLOCK_NO_IDLE_PARENT)
|
||||||
|
if (!cpu_is_omap24xx())
|
||||||
|
omap1_clk_allow_idle(clk->parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int omap1_clk_enable(struct clk *clk)
|
||||||
|
{
|
||||||
|
__u16 regval16;
|
||||||
|
__u32 regval32;
|
||||||
|
|
||||||
|
if (clk->flags & ALWAYS_ENABLED)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (unlikely(clk->enable_reg == 0)) {
|
||||||
|
printk(KERN_ERR "clock.c: Enable for %s without enable code\n",
|
||||||
|
clk->name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clk->flags & ENABLE_REG_32BIT) {
|
||||||
|
if (clk->flags & VIRTUAL_IO_ADDRESS) {
|
||||||
|
regval32 = __raw_readl(clk->enable_reg);
|
||||||
|
regval32 |= (1 << clk->enable_bit);
|
||||||
|
__raw_writel(regval32, clk->enable_reg);
|
||||||
|
} else {
|
||||||
|
regval32 = omap_readl(clk->enable_reg);
|
||||||
|
regval32 |= (1 << clk->enable_bit);
|
||||||
|
omap_writel(regval32, clk->enable_reg);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clk->flags & VIRTUAL_IO_ADDRESS) {
|
||||||
|
regval16 = __raw_readw(clk->enable_reg);
|
||||||
|
regval16 |= (1 << clk->enable_bit);
|
||||||
|
__raw_writew(regval16, clk->enable_reg);
|
||||||
|
} else {
|
||||||
|
regval16 = omap_readw(clk->enable_reg);
|
||||||
|
regval16 |= (1 << clk->enable_bit);
|
||||||
|
omap_writew(regval16, clk->enable_reg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap1_clk_disable(struct clk *clk)
|
||||||
|
{
|
||||||
|
__u16 regval16;
|
||||||
|
__u32 regval32;
|
||||||
|
|
||||||
|
if (clk->enable_reg == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (clk->flags & ENABLE_REG_32BIT) {
|
||||||
|
if (clk->flags & VIRTUAL_IO_ADDRESS) {
|
||||||
|
regval32 = __raw_readl(clk->enable_reg);
|
||||||
|
regval32 &= ~(1 << clk->enable_bit);
|
||||||
|
__raw_writel(regval32, clk->enable_reg);
|
||||||
|
} else {
|
||||||
|
regval32 = omap_readl(clk->enable_reg);
|
||||||
|
regval32 &= ~(1 << clk->enable_bit);
|
||||||
|
omap_writel(regval32, clk->enable_reg);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clk->flags & VIRTUAL_IO_ADDRESS) {
|
||||||
|
regval16 = __raw_readw(clk->enable_reg);
|
||||||
|
regval16 &= ~(1 << clk->enable_bit);
|
||||||
|
__raw_writew(regval16, clk->enable_reg);
|
||||||
|
} else {
|
||||||
|
regval16 = omap_readw(clk->enable_reg);
|
||||||
|
regval16 &= ~(1 << clk->enable_bit);
|
||||||
|
omap_writew(regval16, clk->enable_reg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static long omap1_clk_round_rate(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
int dsor_exp;
|
||||||
|
|
||||||
|
if (clk->flags & RATE_FIXED)
|
||||||
|
return clk->rate;
|
||||||
|
|
||||||
|
if (clk->flags & RATE_CKCTL) {
|
||||||
|
dsor_exp = calc_dsor_exp(clk, rate);
|
||||||
|
if (dsor_exp < 0)
|
||||||
|
return dsor_exp;
|
||||||
|
if (dsor_exp > 3)
|
||||||
|
dsor_exp = 3;
|
||||||
|
return clk->parent->rate / (1 << dsor_exp);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(clk->round_rate != 0)
|
||||||
|
return clk->round_rate(clk, rate);
|
||||||
|
|
||||||
|
return clk->rate;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int omap1_clk_set_rate(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
int ret = -EINVAL;
|
||||||
|
int dsor_exp;
|
||||||
|
__u16 regval;
|
||||||
|
|
||||||
|
if (clk->set_rate)
|
||||||
|
ret = clk->set_rate(clk, rate);
|
||||||
|
else if (clk->flags & RATE_CKCTL) {
|
||||||
|
dsor_exp = calc_dsor_exp(clk, rate);
|
||||||
|
if (dsor_exp > 3)
|
||||||
|
dsor_exp = -EINVAL;
|
||||||
|
if (dsor_exp < 0)
|
||||||
|
return dsor_exp;
|
||||||
|
|
||||||
|
regval = omap_readw(ARM_CKCTL);
|
||||||
|
regval &= ~(3 << clk->rate_offset);
|
||||||
|
regval |= dsor_exp << clk->rate_offset;
|
||||||
|
regval = verify_ckctl_value(regval);
|
||||||
|
omap_writew(regval, ARM_CKCTL);
|
||||||
|
clk->rate = clk->parent->rate / (1 << dsor_exp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (unlikely(ret == 0 && (clk->flags & RATE_PROPAGATES)))
|
||||||
|
propagate_rate(clk);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
* Omap1 clock reset and init functions
|
||||||
|
*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_OMAP_RESET_CLOCKS
|
||||||
|
/*
|
||||||
|
* Resets some clocks that may be left on from bootloader,
|
||||||
|
* but leaves serial clocks on. See also omap_late_clk_reset().
|
||||||
|
*/
|
||||||
|
static inline void omap1_early_clk_reset(void)
|
||||||
|
{
|
||||||
|
//omap_writel(0x3 << 29, MOD_CONF_CTRL_0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init omap1_late_clk_reset(void)
|
||||||
|
{
|
||||||
|
/* Turn off all unused clocks */
|
||||||
|
struct clk *p;
|
||||||
|
__u32 regval32;
|
||||||
|
|
||||||
|
/* USB_REQ_EN will be disabled later if necessary (usb_dc_ck) */
|
||||||
|
regval32 = omap_readw(SOFT_REQ_REG) & (1 << 4);
|
||||||
|
omap_writew(regval32, SOFT_REQ_REG);
|
||||||
|
omap_writew(0, SOFT_REQ_REG2);
|
||||||
|
|
||||||
|
list_for_each_entry(p, &clocks, node) {
|
||||||
|
if (p->usecount > 0 || (p->flags & ALWAYS_ENABLED) ||
|
||||||
|
p->enable_reg == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Clocks in the DSP domain need api_ck. Just assume bootloader
|
||||||
|
* has not enabled any DSP clocks */
|
||||||
|
if ((u32)p->enable_reg == DSP_IDLECT2) {
|
||||||
|
printk(KERN_INFO "Skipping reset check for DSP domain "
|
||||||
|
"clock \"%s\"\n", p->name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Is the clock already disabled? */
|
||||||
|
if (p->flags & ENABLE_REG_32BIT) {
|
||||||
|
if (p->flags & VIRTUAL_IO_ADDRESS)
|
||||||
|
regval32 = __raw_readl(p->enable_reg);
|
||||||
|
else
|
||||||
|
regval32 = omap_readl(p->enable_reg);
|
||||||
|
} else {
|
||||||
|
if (p->flags & VIRTUAL_IO_ADDRESS)
|
||||||
|
regval32 = __raw_readw(p->enable_reg);
|
||||||
|
else
|
||||||
|
regval32 = omap_readw(p->enable_reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((regval32 & (1 << p->enable_bit)) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* FIXME: This clock seems to be necessary but no-one
|
||||||
|
* has asked for its activation. */
|
||||||
|
if (p == &tc2_ck // FIX: pm.c (SRAM), CCP, Camera
|
||||||
|
|| p == &ck_dpll1out.clk // FIX: SoSSI, SSR
|
||||||
|
|| p == &arm_gpio_ck // FIX: GPIO code for 1510
|
||||||
|
) {
|
||||||
|
printk(KERN_INFO "FIXME: Clock \"%s\" seems unused\n",
|
||||||
|
p->name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
printk(KERN_INFO "Disabling unused clock \"%s\"... ", p->name);
|
||||||
|
p->disable(p);
|
||||||
|
printk(" done\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
late_initcall(omap1_late_clk_reset);
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define omap1_early_clk_reset() {}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static struct clk_functions omap1_clk_functions = {
|
||||||
|
.clk_use = omap1_clk_use,
|
||||||
|
.clk_unuse = omap1_clk_unuse,
|
||||||
|
.clk_round_rate = omap1_clk_round_rate,
|
||||||
|
.clk_set_rate = omap1_clk_set_rate,
|
||||||
|
};
|
||||||
|
|
||||||
|
int __init omap1_clk_init(void)
|
||||||
|
{
|
||||||
|
struct clk ** clkp;
|
||||||
|
const struct omap_clock_config *info;
|
||||||
|
int crystal_type = 0; /* Default 12 MHz */
|
||||||
|
|
||||||
|
omap1_early_clk_reset();
|
||||||
|
clk_init(&omap1_clk_functions);
|
||||||
|
|
||||||
|
/* By default all idlect1 clocks are allowed to idle */
|
||||||
|
arm_idlect1_mask = ~0;
|
||||||
|
|
||||||
|
for (clkp = onchip_clks; clkp < onchip_clks+ARRAY_SIZE(onchip_clks); clkp++) {
|
||||||
|
if (((*clkp)->flags &CLOCK_IN_OMAP1510) && cpu_is_omap1510()) {
|
||||||
|
clk_register(*clkp);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((*clkp)->flags &CLOCK_IN_OMAP16XX) && cpu_is_omap16xx()) {
|
||||||
|
clk_register(*clkp);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (((*clkp)->flags &CLOCK_IN_OMAP730) && cpu_is_omap730()) {
|
||||||
|
clk_register(*clkp);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
info = omap_get_config(OMAP_TAG_CLOCK, struct omap_clock_config);
|
||||||
|
if (info != NULL) {
|
||||||
|
if (!cpu_is_omap1510())
|
||||||
|
crystal_type = info->system_clock_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_ARCH_OMAP730)
|
||||||
|
ck_ref.rate = 13000000;
|
||||||
|
#elif defined(CONFIG_ARCH_OMAP16XX)
|
||||||
|
if (crystal_type == 2)
|
||||||
|
ck_ref.rate = 19200000;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
printk("Clocks: ARM_SYSST: 0x%04x DPLL_CTL: 0x%04x ARM_CKCTL: 0x%04x\n",
|
||||||
|
omap_readw(ARM_SYSST), omap_readw(DPLL_CTL),
|
||||||
|
omap_readw(ARM_CKCTL));
|
||||||
|
|
||||||
|
/* We want to be in syncronous scalable mode */
|
||||||
|
omap_writew(0x1000, ARM_SYSST);
|
||||||
|
|
||||||
|
#ifdef CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER
|
||||||
|
/* Use values set by bootloader. Determine PLL rate and recalculate
|
||||||
|
* dependent clocks as if kernel had changed PLL or divisors.
|
||||||
|
*/
|
||||||
|
{
|
||||||
|
unsigned pll_ctl_val = omap_readw(DPLL_CTL);
|
||||||
|
|
||||||
|
ck_dpll1.rate = ck_ref.rate; /* Base xtal rate */
|
||||||
|
if (pll_ctl_val & 0x10) {
|
||||||
|
/* PLL enabled, apply multiplier and divisor */
|
||||||
|
if (pll_ctl_val & 0xf80)
|
||||||
|
ck_dpll1.rate *= (pll_ctl_val & 0xf80) >> 7;
|
||||||
|
ck_dpll1.rate /= ((pll_ctl_val & 0x60) >> 5) + 1;
|
||||||
|
} else {
|
||||||
|
/* PLL disabled, apply bypass divisor */
|
||||||
|
switch (pll_ctl_val & 0xc) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 0x4:
|
||||||
|
ck_dpll1.rate /= 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ck_dpll1.rate /= 4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
propagate_rate(&ck_dpll1);
|
||||||
|
#else
|
||||||
|
/* Find the highest supported frequency and enable it */
|
||||||
|
if (omap1_select_table_rate(&virtual_ck_mpu, ~0)) {
|
||||||
|
printk(KERN_ERR "System frequencies not set. Check your config.\n");
|
||||||
|
/* Guess sane values (60MHz) */
|
||||||
|
omap_writew(0x2290, DPLL_CTL);
|
||||||
|
omap_writew(0x1005, ARM_CKCTL);
|
||||||
|
ck_dpll1.rate = 60000000;
|
||||||
|
propagate_rate(&ck_dpll1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
/* Cache rates for clocks connected to ck_ref (not dpll1) */
|
||||||
|
propagate_rate(&ck_ref);
|
||||||
|
printk(KERN_INFO "Clocking rate (xtal/DPLL1/MPU): "
|
||||||
|
"%ld.%01ld/%ld.%01ld/%ld.%01ld MHz\n",
|
||||||
|
ck_ref.rate / 1000000, (ck_ref.rate / 100000) % 10,
|
||||||
|
ck_dpll1.rate / 1000000, (ck_dpll1.rate / 100000) % 10,
|
||||||
|
arm_ck.rate / 1000000, (arm_ck.rate / 100000) % 10);
|
||||||
|
|
||||||
|
#ifdef CONFIG_MACH_OMAP_PERSEUS2
|
||||||
|
/* Select slicer output as OMAP input clock */
|
||||||
|
omap_writew(omap_readw(OMAP730_PCC_UPLD_CTRL) & ~0x1, OMAP730_PCC_UPLD_CTRL);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Turn off DSP and ARM_TIMXO. Make sure ARM_INTHCK is not divided */
|
||||||
|
omap_writew(omap_readw(ARM_CKCTL) & 0x0fff, ARM_CKCTL);
|
||||||
|
|
||||||
|
/* Put DSP/MPUI into reset until needed */
|
||||||
|
omap_writew(0, ARM_RSTCT1);
|
||||||
|
omap_writew(1, ARM_RSTCT2);
|
||||||
|
omap_writew(0x400, ARM_IDLECT1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* According to OMAP5910 Erratum SYS_DMA_1, bit DMACK_REQ (bit 8)
|
||||||
|
* of the ARM_IDLECT2 register must be set to zero. The power-on
|
||||||
|
* default value of this bit is one.
|
||||||
|
*/
|
||||||
|
omap_writew(0x0000, ARM_IDLECT2); /* Turn LCD clock off also */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Only enable those clocks we will need, let the drivers
|
||||||
|
* enable other clocks as necessary
|
||||||
|
*/
|
||||||
|
clk_use(&armper_ck.clk);
|
||||||
|
clk_use(&armxor_ck.clk);
|
||||||
|
clk_use(&armtim_ck.clk); /* This should be done by timer code */
|
||||||
|
|
||||||
|
if (cpu_is_omap1510())
|
||||||
|
clk_enable(&arm_gpio_ck);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,768 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap1/clock.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 - 2005 Nokia corporation
|
||||||
|
* Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>
|
||||||
|
* Based on clocks.h by Tony Lindgren, Gordon McNutt and RidgeRun, Inc
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ARCH_ARM_MACH_OMAP1_CLOCK_H
|
||||||
|
#define __ARCH_ARM_MACH_OMAP1_CLOCK_H
|
||||||
|
|
||||||
|
static int omap1_clk_enable(struct clk * clk);
|
||||||
|
static void omap1_clk_disable(struct clk * clk);
|
||||||
|
static void omap1_ckctl_recalc(struct clk * clk);
|
||||||
|
static void omap1_watchdog_recalc(struct clk * clk);
|
||||||
|
static void omap1_ckctl_recalc_dsp_domain(struct clk * clk);
|
||||||
|
static int omap1_clk_enable_dsp_domain(struct clk * clk);
|
||||||
|
static int omap1_clk_set_rate_dsp_domain(struct clk * clk, unsigned long rate);
|
||||||
|
static void omap1_clk_disable_dsp_domain(struct clk * clk);
|
||||||
|
static int omap1_set_uart_rate(struct clk * clk, unsigned long rate);
|
||||||
|
static void omap1_uart_recalc(struct clk * clk);
|
||||||
|
static int omap1_clk_enable_uart_functional(struct clk * clk);
|
||||||
|
static void omap1_clk_disable_uart_functional(struct clk * clk);
|
||||||
|
static int omap1_set_ext_clk_rate(struct clk * clk, unsigned long rate);
|
||||||
|
static long omap1_round_ext_clk_rate(struct clk * clk, unsigned long rate);
|
||||||
|
static void omap1_init_ext_clk(struct clk * clk);
|
||||||
|
static int omap1_select_table_rate(struct clk * clk, unsigned long rate);
|
||||||
|
static long omap1_round_to_table_rate(struct clk * clk, unsigned long rate);
|
||||||
|
static int omap1_clk_use(struct clk *clk);
|
||||||
|
static void omap1_clk_unuse(struct clk *clk);
|
||||||
|
|
||||||
|
struct mpu_rate {
|
||||||
|
unsigned long rate;
|
||||||
|
unsigned long xtal;
|
||||||
|
unsigned long pll_rate;
|
||||||
|
__u16 ckctl_val;
|
||||||
|
__u16 dpllctl_val;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct uart_clk {
|
||||||
|
struct clk clk;
|
||||||
|
unsigned long sysc_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Provide a method for preventing idling some ARM IDLECT clocks */
|
||||||
|
struct arm_idlect1_clk {
|
||||||
|
struct clk clk;
|
||||||
|
unsigned long no_idle_count;
|
||||||
|
__u8 idlect_shift;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* ARM_CKCTL bit shifts */
|
||||||
|
#define CKCTL_PERDIV_OFFSET 0
|
||||||
|
#define CKCTL_LCDDIV_OFFSET 2
|
||||||
|
#define CKCTL_ARMDIV_OFFSET 4
|
||||||
|
#define CKCTL_DSPDIV_OFFSET 6
|
||||||
|
#define CKCTL_TCDIV_OFFSET 8
|
||||||
|
#define CKCTL_DSPMMUDIV_OFFSET 10
|
||||||
|
/*#define ARM_TIMXO 12*/
|
||||||
|
#define EN_DSPCK 13
|
||||||
|
/*#define ARM_INTHCK_SEL 14*/ /* Divide-by-2 for mpu inth_ck */
|
||||||
|
/* DSP_CKCTL bit shifts */
|
||||||
|
#define CKCTL_DSPPERDIV_OFFSET 0
|
||||||
|
|
||||||
|
/* ARM_IDLECT2 bit shifts */
|
||||||
|
#define EN_WDTCK 0
|
||||||
|
#define EN_XORPCK 1
|
||||||
|
#define EN_PERCK 2
|
||||||
|
#define EN_LCDCK 3
|
||||||
|
#define EN_LBCK 4 /* Not on 1610/1710 */
|
||||||
|
/*#define EN_HSABCK 5*/
|
||||||
|
#define EN_APICK 6
|
||||||
|
#define EN_TIMCK 7
|
||||||
|
#define DMACK_REQ 8
|
||||||
|
#define EN_GPIOCK 9 /* Not on 1610/1710 */
|
||||||
|
/*#define EN_LBFREECK 10*/
|
||||||
|
#define EN_CKOUT_ARM 11
|
||||||
|
|
||||||
|
/* ARM_IDLECT3 bit shifts */
|
||||||
|
#define EN_OCPI_CK 0
|
||||||
|
#define EN_TC1_CK 2
|
||||||
|
#define EN_TC2_CK 4
|
||||||
|
|
||||||
|
/* DSP_IDLECT2 bit shifts (0,1,2 are same as for ARM_IDLECT2) */
|
||||||
|
#define EN_DSPTIMCK 5
|
||||||
|
|
||||||
|
/* Various register defines for clock controls scattered around OMAP chip */
|
||||||
|
#define USB_MCLK_EN_BIT 4 /* In ULPD_CLKC_CTRL */
|
||||||
|
#define USB_HOST_HHC_UHOST_EN 9 /* In MOD_CONF_CTRL_0 */
|
||||||
|
#define SWD_ULPD_PLL_CLK_REQ 1 /* In SWD_CLK_DIV_CTRL_SEL */
|
||||||
|
#define COM_ULPD_PLL_CLK_REQ 1 /* In COM_CLK_DIV_CTRL_SEL */
|
||||||
|
#define SWD_CLK_DIV_CTRL_SEL 0xfffe0874
|
||||||
|
#define COM_CLK_DIV_CTRL_SEL 0xfffe0878
|
||||||
|
#define SOFT_REQ_REG 0xfffe0834
|
||||||
|
#define SOFT_REQ_REG2 0xfffe0880
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
* Omap1 MPU rate table
|
||||||
|
*-------------------------------------------------------------------------*/
|
||||||
|
static struct mpu_rate rate_table[] = {
|
||||||
|
/* MPU MHz, xtal MHz, dpll1 MHz, CKCTL, DPLL_CTL
|
||||||
|
* NOTE: Comment order here is different from bits in CKCTL value:
|
||||||
|
* armdiv, dspdiv, dspmmu, tcdiv, perdiv, lcddiv
|
||||||
|
*/
|
||||||
|
#if defined(CONFIG_OMAP_ARM_216MHZ)
|
||||||
|
{ 216000000, 12000000, 216000000, 0x050d, 0x2910 }, /* 1/1/2/2/2/8 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_195MHZ)
|
||||||
|
{ 195000000, 13000000, 195000000, 0x050e, 0x2790 }, /* 1/1/2/2/4/8 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_192MHZ)
|
||||||
|
{ 192000000, 19200000, 192000000, 0x050f, 0x2510 }, /* 1/1/2/2/8/8 */
|
||||||
|
{ 192000000, 12000000, 192000000, 0x050f, 0x2810 }, /* 1/1/2/2/8/8 */
|
||||||
|
{ 96000000, 12000000, 192000000, 0x055f, 0x2810 }, /* 2/2/2/2/8/8 */
|
||||||
|
{ 48000000, 12000000, 192000000, 0x0baf, 0x2810 }, /* 4/4/4/8/8/8 */
|
||||||
|
{ 24000000, 12000000, 192000000, 0x0fff, 0x2810 }, /* 8/8/8/8/8/8 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_182MHZ)
|
||||||
|
{ 182000000, 13000000, 182000000, 0x050e, 0x2710 }, /* 1/1/2/2/4/8 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_168MHZ)
|
||||||
|
{ 168000000, 12000000, 168000000, 0x010f, 0x2710 }, /* 1/1/1/2/8/8 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_150MHZ)
|
||||||
|
{ 150000000, 12000000, 150000000, 0x010a, 0x2cb0 }, /* 1/1/1/2/4/4 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_120MHZ)
|
||||||
|
{ 120000000, 12000000, 120000000, 0x010a, 0x2510 }, /* 1/1/1/2/4/4 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_96MHZ)
|
||||||
|
{ 96000000, 12000000, 96000000, 0x0005, 0x2410 }, /* 1/1/1/1/2/2 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_60MHZ)
|
||||||
|
{ 60000000, 12000000, 60000000, 0x0005, 0x2290 }, /* 1/1/1/1/2/2 */
|
||||||
|
#endif
|
||||||
|
#if defined(CONFIG_OMAP_ARM_30MHZ)
|
||||||
|
{ 30000000, 12000000, 60000000, 0x0555, 0x2290 }, /* 2/2/2/2/2/2 */
|
||||||
|
#endif
|
||||||
|
{ 0, 0, 0, 0, 0 },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
* Omap1 clocks
|
||||||
|
*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static struct clk ck_ref = {
|
||||||
|
.name = "ck_ref",
|
||||||
|
.rate = 12000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
ALWAYS_ENABLED,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk ck_dpll1 = {
|
||||||
|
.name = "ck_dpll1",
|
||||||
|
.parent = &ck_ref,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_PROPAGATES | ALWAYS_ENABLED,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk ck_dpll1out = {
|
||||||
|
.clk = {
|
||||||
|
.name = "ck_dpll1out",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_CKOUT_ARM,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 12,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk arm_ck = {
|
||||||
|
.name = "arm_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_CKCTL | RATE_PROPAGATES | ALWAYS_ENABLED,
|
||||||
|
.rate_offset = CKCTL_ARMDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk armper_ck = {
|
||||||
|
.clk = {
|
||||||
|
.name = "armper_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_CKCTL | CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_PERCK,
|
||||||
|
.rate_offset = CKCTL_PERDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk arm_gpio_ck = {
|
||||||
|
.name = "arm_gpio_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_GPIOCK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk armxor_ck = {
|
||||||
|
.clk = {
|
||||||
|
.name = "armxor_ck",
|
||||||
|
.parent = &ck_ref,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_XORPCK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk armtim_ck = {
|
||||||
|
.clk = {
|
||||||
|
.name = "armtim_ck",
|
||||||
|
.parent = &ck_ref,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_TIMCK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 9,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk armwdt_ck = {
|
||||||
|
.clk = {
|
||||||
|
.name = "armwdt_ck",
|
||||||
|
.parent = &ck_ref,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_WDTCK,
|
||||||
|
.recalc = &omap1_watchdog_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk arminth_ck16xx = {
|
||||||
|
.name = "arminth_ck",
|
||||||
|
.parent = &arm_ck,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
/* Note: On 16xx the frequency can be divided by 2 by programming
|
||||||
|
* ARM_CKCTL:ARM_INTHCK_SEL(14) to 1
|
||||||
|
*
|
||||||
|
* 1510 version is in TC clocks.
|
||||||
|
*/
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk dsp_ck = {
|
||||||
|
.name = "dsp_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_CKCTL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_CKCTL,
|
||||||
|
.enable_bit = EN_DSPCK,
|
||||||
|
.rate_offset = CKCTL_DSPDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk dspmmu_ck = {
|
||||||
|
.name = "dspmmu_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_CKCTL | ALWAYS_ENABLED,
|
||||||
|
.rate_offset = CKCTL_DSPMMUDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk dspper_ck = {
|
||||||
|
.name = "dspper_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_CKCTL | VIRTUAL_IO_ADDRESS,
|
||||||
|
.enable_reg = (void __iomem *)DSP_IDLECT2,
|
||||||
|
.enable_bit = EN_PERCK,
|
||||||
|
.rate_offset = CKCTL_PERDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc_dsp_domain,
|
||||||
|
.set_rate = &omap1_clk_set_rate_dsp_domain,
|
||||||
|
.enable = &omap1_clk_enable_dsp_domain,
|
||||||
|
.disable = &omap1_clk_disable_dsp_domain,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk dspxor_ck = {
|
||||||
|
.name = "dspxor_ck",
|
||||||
|
.parent = &ck_ref,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
VIRTUAL_IO_ADDRESS,
|
||||||
|
.enable_reg = (void __iomem *)DSP_IDLECT2,
|
||||||
|
.enable_bit = EN_XORPCK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable_dsp_domain,
|
||||||
|
.disable = &omap1_clk_disable_dsp_domain,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk dsptim_ck = {
|
||||||
|
.name = "dsptim_ck",
|
||||||
|
.parent = &ck_ref,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
VIRTUAL_IO_ADDRESS,
|
||||||
|
.enable_reg = (void __iomem *)DSP_IDLECT2,
|
||||||
|
.enable_bit = EN_DSPTIMCK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable_dsp_domain,
|
||||||
|
.disable = &omap1_clk_disable_dsp_domain,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Tie ARM_IDLECT1:IDLIF_ARM to this logical clock structure */
|
||||||
|
static struct arm_idlect1_clk tc_ck = {
|
||||||
|
.clk = {
|
||||||
|
.name = "tc_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
CLOCK_IN_OMAP730 | RATE_CKCTL |
|
||||||
|
RATE_PROPAGATES | ALWAYS_ENABLED |
|
||||||
|
CLOCK_IDLE_CONTROL,
|
||||||
|
.rate_offset = CKCTL_TCDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 6,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk arminth_ck1510 = {
|
||||||
|
.name = "arminth_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | ALWAYS_ENABLED,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
/* Note: On 1510 the frequency follows TC_CK
|
||||||
|
*
|
||||||
|
* 16xx version is in MPU clocks.
|
||||||
|
*/
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk tipb_ck = {
|
||||||
|
/* No-idle controlled by "tc_ck" */
|
||||||
|
.name = "tibp_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | ALWAYS_ENABLED,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk l3_ocpi_ck = {
|
||||||
|
/* No-idle controlled by "tc_ck" */
|
||||||
|
.name = "l3_ocpi_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT3,
|
||||||
|
.enable_bit = EN_OCPI_CK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk tc1_ck = {
|
||||||
|
.name = "tc1_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT3,
|
||||||
|
.enable_bit = EN_TC1_CK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk tc2_ck = {
|
||||||
|
.name = "tc2_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT3,
|
||||||
|
.enable_bit = EN_TC2_CK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk dma_ck = {
|
||||||
|
/* No-idle controlled by "tc_ck" */
|
||||||
|
.name = "dma_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
ALWAYS_ENABLED,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk dma_lcdfree_ck = {
|
||||||
|
.name = "dma_lcdfree_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk api_ck = {
|
||||||
|
.clk = {
|
||||||
|
.name = "api_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_APICK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 8,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk lb_ck = {
|
||||||
|
.clk = {
|
||||||
|
.name = "lb_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_LBCK,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk rhea1_ck = {
|
||||||
|
.name = "rhea1_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk rhea2_ck = {
|
||||||
|
.name = "rhea2_ck",
|
||||||
|
.parent = &tc_ck.clk,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED,
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk lcd_ck_16xx = {
|
||||||
|
.name = "lcd_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | CLOCK_IN_OMAP730 | RATE_CKCTL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_LCDCK,
|
||||||
|
.rate_offset = CKCTL_LCDDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct arm_idlect1_clk lcd_ck_1510 = {
|
||||||
|
.clk = {
|
||||||
|
.name = "lcd_ck",
|
||||||
|
.parent = &ck_dpll1,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | RATE_CKCTL |
|
||||||
|
CLOCK_IDLE_CONTROL,
|
||||||
|
.enable_reg = (void __iomem *)ARM_IDLECT2,
|
||||||
|
.enable_bit = EN_LCDCK,
|
||||||
|
.rate_offset = CKCTL_LCDDIV_OFFSET,
|
||||||
|
.recalc = &omap1_ckctl_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
},
|
||||||
|
.idlect_shift = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk uart1_1510 = {
|
||||||
|
.name = "uart1_ck",
|
||||||
|
/* Direct from ULPD, no real parent */
|
||||||
|
.parent = &armper_ck.clk,
|
||||||
|
.rate = 12000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | ENABLE_REG_32BIT |
|
||||||
|
ALWAYS_ENABLED | CLOCK_NO_IDLE_PARENT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = 29, /* Chooses between 12MHz and 48MHz */
|
||||||
|
.set_rate = &omap1_set_uart_rate,
|
||||||
|
.recalc = &omap1_uart_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct uart_clk uart1_16xx = {
|
||||||
|
.clk = {
|
||||||
|
.name = "uart1_ck",
|
||||||
|
/* Direct from ULPD, no real parent */
|
||||||
|
.parent = &armper_ck.clk,
|
||||||
|
.rate = 48000000,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | RATE_FIXED |
|
||||||
|
ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = 29,
|
||||||
|
.enable = &omap1_clk_enable_uart_functional,
|
||||||
|
.disable = &omap1_clk_disable_uart_functional,
|
||||||
|
},
|
||||||
|
.sysc_addr = 0xfffb0054,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk uart2_ck = {
|
||||||
|
.name = "uart2_ck",
|
||||||
|
/* Direct from ULPD, no real parent */
|
||||||
|
.parent = &armper_ck.clk,
|
||||||
|
.rate = 12000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
ENABLE_REG_32BIT | ALWAYS_ENABLED |
|
||||||
|
CLOCK_NO_IDLE_PARENT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = 30, /* Chooses between 12MHz and 48MHz */
|
||||||
|
.set_rate = &omap1_set_uart_rate,
|
||||||
|
.recalc = &omap1_uart_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk uart3_1510 = {
|
||||||
|
.name = "uart3_ck",
|
||||||
|
/* Direct from ULPD, no real parent */
|
||||||
|
.parent = &armper_ck.clk,
|
||||||
|
.rate = 12000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | ENABLE_REG_32BIT |
|
||||||
|
ALWAYS_ENABLED | CLOCK_NO_IDLE_PARENT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = 31, /* Chooses between 12MHz and 48MHz */
|
||||||
|
.set_rate = &omap1_set_uart_rate,
|
||||||
|
.recalc = &omap1_uart_recalc,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct uart_clk uart3_16xx = {
|
||||||
|
.clk = {
|
||||||
|
.name = "uart3_ck",
|
||||||
|
/* Direct from ULPD, no real parent */
|
||||||
|
.parent = &armper_ck.clk,
|
||||||
|
.rate = 48000000,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | RATE_FIXED |
|
||||||
|
ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = 31,
|
||||||
|
.enable = &omap1_clk_enable_uart_functional,
|
||||||
|
.disable = &omap1_clk_disable_uart_functional,
|
||||||
|
},
|
||||||
|
.sysc_addr = 0xfffb9854,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk usb_clko = { /* 6 MHz output on W4_USB_CLKO */
|
||||||
|
.name = "usb_clko",
|
||||||
|
/* Direct from ULPD, no parent */
|
||||||
|
.rate = 6000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_FIXED | ENABLE_REG_32BIT,
|
||||||
|
.enable_reg = (void __iomem *)ULPD_CLOCK_CTRL,
|
||||||
|
.enable_bit = USB_MCLK_EN_BIT,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk usb_hhc_ck1510 = {
|
||||||
|
.name = "usb_hhc_ck",
|
||||||
|
/* Direct from ULPD, no parent */
|
||||||
|
.rate = 48000000, /* Actually 2 clocks, 12MHz and 48MHz */
|
||||||
|
.flags = CLOCK_IN_OMAP1510 |
|
||||||
|
RATE_FIXED | ENABLE_REG_32BIT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = USB_HOST_HHC_UHOST_EN,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk usb_hhc_ck16xx = {
|
||||||
|
.name = "usb_hhc_ck",
|
||||||
|
/* Direct from ULPD, no parent */
|
||||||
|
.rate = 48000000,
|
||||||
|
/* OTG_SYSCON_2.OTG_PADEN == 0 (not 1510-compatible) */
|
||||||
|
.flags = CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_FIXED | ENABLE_REG_32BIT,
|
||||||
|
.enable_reg = (void __iomem *)OTG_BASE + 0x08 /* OTG_SYSCON_2 */,
|
||||||
|
.enable_bit = 8 /* UHOST_EN */,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk usb_dc_ck = {
|
||||||
|
.name = "usb_dc_ck",
|
||||||
|
/* Direct from ULPD, no parent */
|
||||||
|
.rate = 48000000,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX | RATE_FIXED,
|
||||||
|
.enable_reg = (void __iomem *)SOFT_REQ_REG,
|
||||||
|
.enable_bit = 4,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk mclk_1510 = {
|
||||||
|
.name = "mclk",
|
||||||
|
/* Direct from ULPD, no parent. May be enabled by ext hardware. */
|
||||||
|
.rate = 12000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | RATE_FIXED,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk mclk_16xx = {
|
||||||
|
.name = "mclk",
|
||||||
|
/* Direct from ULPD, no parent. May be enabled by ext hardware. */
|
||||||
|
.flags = CLOCK_IN_OMAP16XX,
|
||||||
|
.enable_reg = (void __iomem *)COM_CLK_DIV_CTRL_SEL,
|
||||||
|
.enable_bit = COM_ULPD_PLL_CLK_REQ,
|
||||||
|
.set_rate = &omap1_set_ext_clk_rate,
|
||||||
|
.round_rate = &omap1_round_ext_clk_rate,
|
||||||
|
.init = &omap1_init_ext_clk,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk bclk_1510 = {
|
||||||
|
.name = "bclk",
|
||||||
|
/* Direct from ULPD, no parent. May be enabled by ext hardware. */
|
||||||
|
.rate = 12000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | RATE_FIXED,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk bclk_16xx = {
|
||||||
|
.name = "bclk",
|
||||||
|
/* Direct from ULPD, no parent. May be enabled by ext hardware. */
|
||||||
|
.flags = CLOCK_IN_OMAP16XX,
|
||||||
|
.enable_reg = (void __iomem *)SWD_CLK_DIV_CTRL_SEL,
|
||||||
|
.enable_bit = SWD_ULPD_PLL_CLK_REQ,
|
||||||
|
.set_rate = &omap1_set_ext_clk_rate,
|
||||||
|
.round_rate = &omap1_round_ext_clk_rate,
|
||||||
|
.init = &omap1_init_ext_clk,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk mmc1_ck = {
|
||||||
|
.name = "mmc1_ck",
|
||||||
|
/* Functional clock is direct from ULPD, interface clock is ARMPER */
|
||||||
|
.parent = &armper_ck.clk,
|
||||||
|
.rate = 48000000,
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = 23,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk mmc2_ck = {
|
||||||
|
.name = "mmc2_ck",
|
||||||
|
/* Functional clock is direct from ULPD, interface clock is ARMPER */
|
||||||
|
.parent = &armper_ck.clk,
|
||||||
|
.rate = 48000000,
|
||||||
|
.flags = CLOCK_IN_OMAP16XX |
|
||||||
|
RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT,
|
||||||
|
.enable_reg = (void __iomem *)MOD_CONF_CTRL_0,
|
||||||
|
.enable_bit = 20,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk virtual_ck_mpu = {
|
||||||
|
.name = "mpu",
|
||||||
|
.flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX |
|
||||||
|
VIRTUAL_CLOCK | ALWAYS_ENABLED,
|
||||||
|
.parent = &arm_ck, /* Is smarter alias for */
|
||||||
|
.recalc = &followparent_recalc,
|
||||||
|
.set_rate = &omap1_select_table_rate,
|
||||||
|
.round_rate = &omap1_round_to_table_rate,
|
||||||
|
.enable = &omap1_clk_enable,
|
||||||
|
.disable = &omap1_clk_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk * onchip_clks[] = {
|
||||||
|
/* non-ULPD clocks */
|
||||||
|
&ck_ref,
|
||||||
|
&ck_dpll1,
|
||||||
|
/* CK_GEN1 clocks */
|
||||||
|
&ck_dpll1out.clk,
|
||||||
|
&arm_ck,
|
||||||
|
&armper_ck.clk,
|
||||||
|
&arm_gpio_ck,
|
||||||
|
&armxor_ck.clk,
|
||||||
|
&armtim_ck.clk,
|
||||||
|
&armwdt_ck.clk,
|
||||||
|
&arminth_ck1510, &arminth_ck16xx,
|
||||||
|
/* CK_GEN2 clocks */
|
||||||
|
&dsp_ck,
|
||||||
|
&dspmmu_ck,
|
||||||
|
&dspper_ck,
|
||||||
|
&dspxor_ck,
|
||||||
|
&dsptim_ck,
|
||||||
|
/* CK_GEN3 clocks */
|
||||||
|
&tc_ck.clk,
|
||||||
|
&tipb_ck,
|
||||||
|
&l3_ocpi_ck,
|
||||||
|
&tc1_ck,
|
||||||
|
&tc2_ck,
|
||||||
|
&dma_ck,
|
||||||
|
&dma_lcdfree_ck,
|
||||||
|
&api_ck.clk,
|
||||||
|
&lb_ck.clk,
|
||||||
|
&rhea1_ck,
|
||||||
|
&rhea2_ck,
|
||||||
|
&lcd_ck_16xx,
|
||||||
|
&lcd_ck_1510.clk,
|
||||||
|
/* ULPD clocks */
|
||||||
|
&uart1_1510,
|
||||||
|
&uart1_16xx.clk,
|
||||||
|
&uart2_ck,
|
||||||
|
&uart3_1510,
|
||||||
|
&uart3_16xx.clk,
|
||||||
|
&usb_clko,
|
||||||
|
&usb_hhc_ck1510, &usb_hhc_ck16xx,
|
||||||
|
&usb_dc_ck,
|
||||||
|
&mclk_1510, &mclk_16xx,
|
||||||
|
&bclk_1510, &bclk_16xx,
|
||||||
|
&mmc1_ck,
|
||||||
|
&mmc2_ck,
|
||||||
|
/* Virtual clocks */
|
||||||
|
&virtual_ck_mpu,
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -25,56 +25,7 @@
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
|
|
||||||
|
extern void omap_nop_release(struct device *dev);
|
||||||
static void omap_nop_release(struct device *dev)
|
|
||||||
{
|
|
||||||
/* Nothing */
|
|
||||||
}
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
|
|
||||||
|
|
||||||
#define OMAP_I2C_BASE 0xfffb3800
|
|
||||||
|
|
||||||
static struct resource i2c_resources[] = {
|
|
||||||
{
|
|
||||||
.start = OMAP_I2C_BASE,
|
|
||||||
.end = OMAP_I2C_BASE + 0x3f,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.start = INT_I2C,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/* DMA not used; works around erratum writing to non-empty i2c fifo */
|
|
||||||
|
|
||||||
static struct platform_device omap_i2c_device = {
|
|
||||||
.name = "i2c_omap",
|
|
||||||
.id = -1,
|
|
||||||
.dev = {
|
|
||||||
.release = omap_nop_release,
|
|
||||||
},
|
|
||||||
.num_resources = ARRAY_SIZE(i2c_resources),
|
|
||||||
.resource = i2c_resources,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void omap_init_i2c(void)
|
|
||||||
{
|
|
||||||
/* FIXME define and use a boot tag, in case of boards that
|
|
||||||
* either don't wire up I2C, or chips that mux it differently...
|
|
||||||
* it can include clocking and address info, maybe more.
|
|
||||||
*/
|
|
||||||
omap_cfg_reg(I2C_SCL);
|
|
||||||
omap_cfg_reg(I2C_SDA);
|
|
||||||
|
|
||||||
(void) platform_device_register(&omap_i2c_device);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline void omap_init_i2c(void) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -110,137 +61,6 @@ static inline void omap_init_irda(void) {}
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
#if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
|
|
||||||
|
|
||||||
#define OMAP_MMC1_BASE 0xfffb7800
|
|
||||||
#define OMAP_MMC2_BASE 0xfffb7c00 /* omap16xx only */
|
|
||||||
|
|
||||||
static struct omap_mmc_conf mmc1_conf;
|
|
||||||
|
|
||||||
static u64 mmc1_dmamask = 0xffffffff;
|
|
||||||
|
|
||||||
static struct resource mmc1_resources[] = {
|
|
||||||
{
|
|
||||||
.start = IO_ADDRESS(OMAP_MMC1_BASE),
|
|
||||||
.end = IO_ADDRESS(OMAP_MMC1_BASE) + 0x7f,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.start = INT_MMC,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device mmc_omap_device1 = {
|
|
||||||
.name = "mmci-omap",
|
|
||||||
.id = 1,
|
|
||||||
.dev = {
|
|
||||||
.release = omap_nop_release,
|
|
||||||
.dma_mask = &mmc1_dmamask,
|
|
||||||
.platform_data = &mmc1_conf,
|
|
||||||
},
|
|
||||||
.num_resources = ARRAY_SIZE(mmc1_resources),
|
|
||||||
.resource = mmc1_resources,
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP16XX
|
|
||||||
|
|
||||||
static struct omap_mmc_conf mmc2_conf;
|
|
||||||
|
|
||||||
static u64 mmc2_dmamask = 0xffffffff;
|
|
||||||
|
|
||||||
static struct resource mmc2_resources[] = {
|
|
||||||
{
|
|
||||||
.start = IO_ADDRESS(OMAP_MMC2_BASE),
|
|
||||||
.end = IO_ADDRESS(OMAP_MMC2_BASE) + 0x7f,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.start = INT_1610_MMC2,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device mmc_omap_device2 = {
|
|
||||||
.name = "mmci-omap",
|
|
||||||
.id = 2,
|
|
||||||
.dev = {
|
|
||||||
.release = omap_nop_release,
|
|
||||||
.dma_mask = &mmc2_dmamask,
|
|
||||||
.platform_data = &mmc2_conf,
|
|
||||||
},
|
|
||||||
.num_resources = ARRAY_SIZE(mmc2_resources),
|
|
||||||
.resource = mmc2_resources,
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void __init omap_init_mmc(void)
|
|
||||||
{
|
|
||||||
const struct omap_mmc_config *mmc_conf;
|
|
||||||
const struct omap_mmc_conf *mmc;
|
|
||||||
|
|
||||||
/* NOTE: assumes MMC was never (wrongly) enabled */
|
|
||||||
mmc_conf = omap_get_config(OMAP_TAG_MMC, struct omap_mmc_config);
|
|
||||||
if (!mmc_conf)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* block 1 is always available and has just one pinout option */
|
|
||||||
mmc = &mmc_conf->mmc[0];
|
|
||||||
if (mmc->enabled) {
|
|
||||||
omap_cfg_reg(MMC_CMD);
|
|
||||||
omap_cfg_reg(MMC_CLK);
|
|
||||||
omap_cfg_reg(MMC_DAT0);
|
|
||||||
if (cpu_is_omap1710()) {
|
|
||||||
omap_cfg_reg(M15_1710_MMC_CLKI);
|
|
||||||
omap_cfg_reg(P19_1710_MMC_CMDDIR);
|
|
||||||
omap_cfg_reg(P20_1710_MMC_DATDIR0);
|
|
||||||
}
|
|
||||||
if (mmc->wire4) {
|
|
||||||
omap_cfg_reg(MMC_DAT1);
|
|
||||||
/* NOTE: DAT2 can be on W10 (here) or M15 */
|
|
||||||
if (!mmc->nomux)
|
|
||||||
omap_cfg_reg(MMC_DAT2);
|
|
||||||
omap_cfg_reg(MMC_DAT3);
|
|
||||||
}
|
|
||||||
mmc1_conf = *mmc;
|
|
||||||
(void) platform_device_register(&mmc_omap_device1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP16XX
|
|
||||||
/* block 2 is on newer chips, and has many pinout options */
|
|
||||||
mmc = &mmc_conf->mmc[1];
|
|
||||||
if (mmc->enabled) {
|
|
||||||
if (!mmc->nomux) {
|
|
||||||
omap_cfg_reg(Y8_1610_MMC2_CMD);
|
|
||||||
omap_cfg_reg(Y10_1610_MMC2_CLK);
|
|
||||||
omap_cfg_reg(R18_1610_MMC2_CLKIN);
|
|
||||||
omap_cfg_reg(W8_1610_MMC2_DAT0);
|
|
||||||
if (mmc->wire4) {
|
|
||||||
omap_cfg_reg(V8_1610_MMC2_DAT1);
|
|
||||||
omap_cfg_reg(W15_1610_MMC2_DAT2);
|
|
||||||
omap_cfg_reg(R10_1610_MMC2_DAT3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* These are needed for the level shifter */
|
|
||||||
omap_cfg_reg(V9_1610_MMC2_CMDDIR);
|
|
||||||
omap_cfg_reg(V5_1610_MMC2_DATDIR0);
|
|
||||||
omap_cfg_reg(W19_1610_MMC2_DATDIR1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Feedback clock must be set on OMAP-1710 MMC2 */
|
|
||||||
if (cpu_is_omap1710())
|
|
||||||
omap_writel(omap_readl(MOD_CONF_CTRL_1) | (1 << 24),
|
|
||||||
MOD_CONF_CTRL_1);
|
|
||||||
mmc2_conf = *mmc;
|
|
||||||
(void) platform_device_register(&mmc_omap_device2);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline void omap_init_mmc(void) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_OMAP_RTC) || defined(CONFIG_OMAP_RTC)
|
#if defined(CONFIG_OMAP_RTC) || defined(CONFIG_OMAP_RTC)
|
||||||
|
|
||||||
#define OMAP_RTC_BASE 0xfffb4800
|
#define OMAP_RTC_BASE 0xfffb4800
|
||||||
|
@ -279,38 +99,6 @@ static void omap_init_rtc(void)
|
||||||
static inline void omap_init_rtc(void) {}
|
static inline void omap_init_rtc(void) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
#if defined(CONFIG_OMAP16XX_WATCHDOG) || defined(CONFIG_OMAP16XX_WATCHDOG_MODULE)
|
|
||||||
|
|
||||||
#define OMAP_WDT_BASE 0xfffeb000
|
|
||||||
|
|
||||||
static struct resource wdt_resources[] = {
|
|
||||||
{
|
|
||||||
.start = OMAP_WDT_BASE,
|
|
||||||
.end = OMAP_WDT_BASE + 0x4f,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device omap_wdt_device = {
|
|
||||||
.name = "omap1610_wdt",
|
|
||||||
.id = -1,
|
|
||||||
.dev = {
|
|
||||||
.release = omap_nop_release,
|
|
||||||
},
|
|
||||||
.num_resources = ARRAY_SIZE(wdt_resources),
|
|
||||||
.resource = wdt_resources,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void omap_init_wdt(void)
|
|
||||||
{
|
|
||||||
(void) platform_device_register(&omap_wdt_device);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline void omap_init_wdt(void) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -334,18 +122,15 @@ static inline void omap_init_wdt(void) {}
|
||||||
* may be handled by the boot loader, and drivers should expect it will
|
* may be handled by the boot loader, and drivers should expect it will
|
||||||
* normally have been done by the time they're probed.
|
* normally have been done by the time they're probed.
|
||||||
*/
|
*/
|
||||||
static int __init omap_init_devices(void)
|
static int __init omap1_init_devices(void)
|
||||||
{
|
{
|
||||||
/* please keep these calls, and their implementations above,
|
/* please keep these calls, and their implementations above,
|
||||||
* in alphabetical order so they're easier to sort through.
|
* in alphabetical order so they're easier to sort through.
|
||||||
*/
|
*/
|
||||||
omap_init_i2c();
|
|
||||||
omap_init_irda();
|
omap_init_irda();
|
||||||
omap_init_mmc();
|
|
||||||
omap_init_rtc();
|
omap_init_rtc();
|
||||||
omap_init_wdt();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
arch_initcall(omap_init_devices);
|
arch_initcall(omap1_init_devices);
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,13 @@
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
#define OMAP_DIE_ID_0 0xfffe1800
|
||||||
|
#define OMAP_DIE_ID_1 0xfffe1804
|
||||||
|
#define OMAP_PRODUCTION_ID_0 0xfffe2000
|
||||||
|
#define OMAP_PRODUCTION_ID_1 0xfffe2004
|
||||||
|
#define OMAP32_ID_0 0xfffed400
|
||||||
|
#define OMAP32_ID_1 0xfffed404
|
||||||
|
|
||||||
struct omap_id {
|
struct omap_id {
|
||||||
u16 jtag_id; /* Used to determine OMAP type */
|
u16 jtag_id; /* Used to determine OMAP type */
|
||||||
u8 die_rev; /* Processor revision */
|
u8 die_rev; /* Processor revision */
|
||||||
|
@ -27,6 +34,7 @@ struct omap_id {
|
||||||
|
|
||||||
/* Register values to detect the OMAP version */
|
/* Register values to detect the OMAP version */
|
||||||
static struct omap_id omap_ids[] __initdata = {
|
static struct omap_id omap_ids[] __initdata = {
|
||||||
|
{ .jtag_id = 0xb574, .die_rev = 0x2, .omap_id = 0x03310315, .type = 0x03100000},
|
||||||
{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
|
{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
|
||||||
{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
|
{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
|
||||||
{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
|
{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
|
||||||
|
@ -164,6 +172,7 @@ void __init omap_check_revision(void)
|
||||||
case 0x07:
|
case 0x07:
|
||||||
system_rev |= 0x07;
|
system_rev |= 0x07;
|
||||||
break;
|
break;
|
||||||
|
case 0x03:
|
||||||
case 0x15:
|
case 0x15:
|
||||||
system_rev |= 0x15;
|
system_rev |= 0x15;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -15,9 +15,10 @@
|
||||||
|
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/tc.h>
|
#include <asm/arch/tc.h>
|
||||||
|
|
||||||
extern int clk_init(void);
|
extern int omap1_clk_init(void);
|
||||||
extern void omap_check_revision(void);
|
extern void omap_check_revision(void);
|
||||||
extern void omap_sram_init(void);
|
extern void omap_sram_init(void);
|
||||||
|
|
||||||
|
@ -50,7 +51,7 @@ static struct map_desc omap730_io_desc[] __initdata = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
static struct map_desc omap1510_io_desc[] __initdata = {
|
static struct map_desc omap1510_io_desc[] __initdata = {
|
||||||
{
|
{
|
||||||
.virtual = OMAP1510_DSP_BASE,
|
.virtual = OMAP1510_DSP_BASE,
|
||||||
|
@ -98,7 +99,7 @@ static void __init _omap_map_io(void)
|
||||||
iotable_init(omap730_io_desc, ARRAY_SIZE(omap730_io_desc));
|
iotable_init(omap730_io_desc, ARRAY_SIZE(omap730_io_desc));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
if (cpu_is_omap1510()) {
|
if (cpu_is_omap1510()) {
|
||||||
iotable_init(omap1510_io_desc, ARRAY_SIZE(omap1510_io_desc));
|
iotable_init(omap1510_io_desc, ARRAY_SIZE(omap1510_io_desc));
|
||||||
}
|
}
|
||||||
|
@ -119,7 +120,7 @@ static void __init _omap_map_io(void)
|
||||||
|
|
||||||
/* Must init clocks early to assure that timer interrupt works
|
/* Must init clocks early to assure that timer interrupt works
|
||||||
*/
|
*/
|
||||||
clk_init();
|
omap1_clk_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -127,7 +128,9 @@ static void __init _omap_map_io(void)
|
||||||
*/
|
*/
|
||||||
void __init omap_map_common_io(void)
|
void __init omap_map_common_io(void)
|
||||||
{
|
{
|
||||||
if (!initialized)
|
if (!initialized) {
|
||||||
_omap_map_io();
|
_omap_map_io();
|
||||||
|
omap1_mux_init();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/mach/irq.h>
|
#include <asm/mach/irq.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
|
#include <asm/arch/cpu.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
@ -147,11 +148,15 @@ static struct omap_irq_bank omap730_irq_banks[] = {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
static struct omap_irq_bank omap1510_irq_banks[] = {
|
static struct omap_irq_bank omap1510_irq_banks[] = {
|
||||||
{ .base_reg = OMAP_IH1_BASE, .trigger_map = 0xb3febfff },
|
{ .base_reg = OMAP_IH1_BASE, .trigger_map = 0xb3febfff },
|
||||||
{ .base_reg = OMAP_IH2_BASE, .trigger_map = 0xffbfffed },
|
{ .base_reg = OMAP_IH2_BASE, .trigger_map = 0xffbfffed },
|
||||||
};
|
};
|
||||||
|
static struct omap_irq_bank omap310_irq_banks[] = {
|
||||||
|
{ .base_reg = OMAP_IH1_BASE, .trigger_map = 0xb3faefc3 },
|
||||||
|
{ .base_reg = OMAP_IH2_BASE, .trigger_map = 0x65b3c061 },
|
||||||
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP16XX)
|
#if defined(CONFIG_ARCH_OMAP16XX)
|
||||||
|
@ -181,11 +186,15 @@ void __init omap_init_irq(void)
|
||||||
irq_bank_count = ARRAY_SIZE(omap730_irq_banks);
|
irq_bank_count = ARRAY_SIZE(omap730_irq_banks);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
if (cpu_is_omap1510()) {
|
if (cpu_is_omap1510()) {
|
||||||
irq_banks = omap1510_irq_banks;
|
irq_banks = omap1510_irq_banks;
|
||||||
irq_bank_count = ARRAY_SIZE(omap1510_irq_banks);
|
irq_bank_count = ARRAY_SIZE(omap1510_irq_banks);
|
||||||
}
|
}
|
||||||
|
if (cpu_is_omap310()) {
|
||||||
|
irq_banks = omap310_irq_banks;
|
||||||
|
irq_bank_count = ARRAY_SIZE(omap310_irq_banks);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIG_ARCH_OMAP16XX)
|
#if defined(CONFIG_ARCH_OMAP16XX)
|
||||||
if (cpu_is_omap16xx()) {
|
if (cpu_is_omap16xx()) {
|
||||||
|
@ -226,9 +235,11 @@ void __init omap_init_irq(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unmask level 2 handler */
|
/* Unmask level 2 handler */
|
||||||
if (cpu_is_omap730()) {
|
|
||||||
|
if (cpu_is_omap730())
|
||||||
omap_unmask_irq(INT_730_IH2_IRQ);
|
omap_unmask_irq(INT_730_IH2_IRQ);
|
||||||
} else {
|
else if (cpu_is_omap1510())
|
||||||
omap_unmask_irq(INT_IH2_IRQ);
|
omap_unmask_irq(INT_1510_IH2_IRQ);
|
||||||
}
|
else if (cpu_is_omap16xx())
|
||||||
|
omap_unmask_irq(INT_1610_IH2_IRQ);
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,12 +13,12 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kernel_stat.h>
|
#include <linux/kernel_stat.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/version.h>
|
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/hardware.h>
|
#include <asm/hardware.h>
|
||||||
#include <asm/leds.h>
|
#include <asm/leds.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
|
||||||
#include <asm/arch/fpga.h>
|
#include <asm/arch/fpga.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
|
@ -64,14 +64,19 @@ void h2p2_dbg_leds_event(led_event_t evt)
|
||||||
case led_stop:
|
case led_stop:
|
||||||
case led_halted:
|
case led_halted:
|
||||||
/* all leds off during suspend or shutdown */
|
/* all leds off during suspend or shutdown */
|
||||||
|
|
||||||
|
if (! machine_is_omap_perseus2()) {
|
||||||
omap_set_gpio_dataout(GPIO_TIMER, 0);
|
omap_set_gpio_dataout(GPIO_TIMER, 0);
|
||||||
omap_set_gpio_dataout(GPIO_IDLE, 0);
|
omap_set_gpio_dataout(GPIO_IDLE, 0);
|
||||||
|
}
|
||||||
|
|
||||||
__raw_writew(~0, &fpga->leds);
|
__raw_writew(~0, &fpga->leds);
|
||||||
led_state &= ~LED_STATE_ENABLED;
|
led_state &= ~LED_STATE_ENABLED;
|
||||||
if (evt == led_halted) {
|
if (evt == led_halted) {
|
||||||
iounmap(fpga);
|
iounmap(fpga);
|
||||||
fpga = NULL;
|
fpga = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
case led_claim:
|
case led_claim:
|
||||||
|
@ -86,18 +91,37 @@ void h2p2_dbg_leds_event(led_event_t evt)
|
||||||
#ifdef CONFIG_LEDS_TIMER
|
#ifdef CONFIG_LEDS_TIMER
|
||||||
case led_timer:
|
case led_timer:
|
||||||
led_state ^= LED_TIMER_ON;
|
led_state ^= LED_TIMER_ON;
|
||||||
|
|
||||||
|
if (machine_is_omap_perseus2())
|
||||||
|
hw_led_state ^= H2P2_DBG_FPGA_P2_LED_TIMER;
|
||||||
|
else {
|
||||||
omap_set_gpio_dataout(GPIO_TIMER, led_state & LED_TIMER_ON);
|
omap_set_gpio_dataout(GPIO_TIMER, led_state & LED_TIMER_ON);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_LEDS_CPU
|
#ifdef CONFIG_LEDS_CPU
|
||||||
case led_idle_start:
|
case led_idle_start:
|
||||||
|
if (machine_is_omap_perseus2())
|
||||||
|
hw_led_state |= H2P2_DBG_FPGA_P2_LED_IDLE;
|
||||||
|
else {
|
||||||
omap_set_gpio_dataout(GPIO_IDLE, 1);
|
omap_set_gpio_dataout(GPIO_IDLE, 1);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
case led_idle_end:
|
case led_idle_end:
|
||||||
|
if (machine_is_omap_perseus2())
|
||||||
|
hw_led_state &= ~H2P2_DBG_FPGA_P2_LED_IDLE;
|
||||||
|
else {
|
||||||
omap_set_gpio_dataout(GPIO_IDLE, 0);
|
omap_set_gpio_dataout(GPIO_IDLE, 0);
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case led_green_on:
|
case led_green_on:
|
||||||
|
@ -136,7 +160,7 @@ void h2p2_dbg_leds_event(led_event_t evt)
|
||||||
/*
|
/*
|
||||||
* Actually burn the LEDs
|
* Actually burn the LEDs
|
||||||
*/
|
*/
|
||||||
if (led_state & LED_STATE_CLAIMED)
|
if (led_state & LED_STATE_ENABLED)
|
||||||
__raw_writew(~hw_led_state, &fpga->leds);
|
__raw_writew(~hw_led_state, &fpga->leds);
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
|
@ -33,7 +33,6 @@ omap_leds_init(void)
|
||||||
|
|
||||||
if (machine_is_omap_h2()
|
if (machine_is_omap_h2()
|
||||||
|| machine_is_omap_h3()
|
|| machine_is_omap_h3()
|
||||||
|| machine_is_omap_perseus2()
|
|
||||||
#ifdef CONFIG_OMAP_OSK_MISTRAL
|
#ifdef CONFIG_OMAP_OSK_MISTRAL
|
||||||
|| machine_is_omap_osk()
|
|| machine_is_omap_osk()
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,289 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap1/mux.c
|
||||||
|
*
|
||||||
|
* OMAP1 pin multiplexing configurations
|
||||||
|
*
|
||||||
|
* Copyright (C) 2003 - 2005 Nokia Corporation
|
||||||
|
*
|
||||||
|
* Written by Tony Lindgren <tony.lindgren@nokia.com>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <linux/config.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <asm/system.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_OMAP730
|
||||||
|
struct pin_config __initdata_or_module omap730_pins[] = {
|
||||||
|
MUX_CFG_730("E2_730_KBR0", 12, 21, 0, 0, 20, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("J7_730_KBR1", 12, 25, 0, 0, 24, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("E1_730_KBR2", 12, 29, 0, 0, 28, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("F3_730_KBR3", 13, 1, 0, 0, 0, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("D2_730_KBR4", 13, 5, 0, 0, 4, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("C2_730_KBC0", 13, 9, 0, 0, 8, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("D3_730_KBC1", 13, 13, 0, 0, 12, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("E4_730_KBC2", 13, 17, 0, 0, 16, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("F4_730_KBC3", 13, 21, 0, 0, 20, 1, NA, 0, 0)
|
||||||
|
MUX_CFG_730("E3_730_KBC4", 13, 25, 0, 0, 24, 1, NA, 0, 0)
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
|
||||||
|
struct pin_config __initdata_or_module omap1xxx_pins[] = {
|
||||||
|
/*
|
||||||
|
* description mux mode mux pull pull pull pu_pd pu dbg
|
||||||
|
* reg offset mode reg bit ena reg
|
||||||
|
*/
|
||||||
|
MUX_CFG("UART1_TX", 9, 21, 1, 2, 3, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("UART1_RTS", 9, 12, 1, 2, 0, 0, NA, 0, 0)
|
||||||
|
|
||||||
|
/* UART2 (COM_UART_GATING), conflicts with USB2 */
|
||||||
|
MUX_CFG("UART2_TX", C, 27, 1, 3, 3, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("UART2_RX", C, 18, 0, 3, 1, 1, NA, 0, 0)
|
||||||
|
MUX_CFG("UART2_CTS", C, 21, 0, 3, 1, 1, NA, 0, 0)
|
||||||
|
MUX_CFG("UART2_RTS", C, 24, 1, 3, 2, 0, NA, 0, 0)
|
||||||
|
|
||||||
|
/* UART3 (GIGA_UART_GATING) */
|
||||||
|
MUX_CFG("UART3_TX", 6, 0, 1, 0, 30, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("UART3_RX", 6, 3, 0, 0, 31, 1, NA, 0, 0)
|
||||||
|
MUX_CFG("UART3_CTS", 5, 12, 2, 0, 24, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("UART3_RTS", 5, 15, 2, 0, 25, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("UART3_CLKREQ", 9, 27, 0, 2, 5, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("UART3_BCLK", A, 0, 0, 2, 6, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("Y15_1610_UART3_RTS", A, 0, 1, 2, 6, 0, NA, 0, 0)
|
||||||
|
|
||||||
|
/* PWT & PWL, conflicts with UART3 */
|
||||||
|
MUX_CFG("PWT", 6, 0, 2, 0, 30, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("PWL", 6, 3, 1, 0, 31, 1, NA, 0, 0)
|
||||||
|
|
||||||
|
/* USB internal master generic */
|
||||||
|
MUX_CFG("R18_USB_VBUS", 7, 9, 2, 1, 11, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("R18_1510_USB_GPIO0", 7, 9, 0, 1, 11, 1, NA, 0, 1)
|
||||||
|
/* works around erratum: W4_USB_PUEN and W4_USB_PUDIS are switched! */
|
||||||
|
MUX_CFG("W4_USB_PUEN", D, 3, 3, 3, 5, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("W4_USB_CLKO", D, 3, 1, 3, 5, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("W4_USB_HIGHZ", D, 3, 4, 3, 5, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("W4_GPIO58", D, 3, 7, 3, 5, 0, 3, 0, 1)
|
||||||
|
|
||||||
|
/* USB1 master */
|
||||||
|
MUX_CFG("USB1_SUSP", 8, 27, 2, 1, 27, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB1_SE0", 9, 0, 2, 1, 28, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("W13_1610_USB1_SE0", 9, 0, 4, 1, 28, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB1_TXEN", 9, 3, 2, 1, 29, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB1_TXD", 9, 24, 1, 2, 4, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB1_VP", A, 3, 1, 2, 7, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB1_VM", A, 6, 1, 2, 8, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB1_RCV", A, 9, 1, 2, 9, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB1_SPEED", A, 12, 2, 2, 10, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("R13_1610_USB1_SPEED", A, 12, 5, 2, 10, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("R13_1710_USB1_SEO", A, 12, 5, 2, 10, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* USB2 master */
|
||||||
|
MUX_CFG("USB2_SUSP", B, 3, 1, 2, 17, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB2_VP", B, 6, 1, 2, 18, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB2_TXEN", B, 9, 1, 2, 19, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB2_VM", C, 18, 1, 3, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB2_RCV", C, 21, 1, 3, 1, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB2_SE0", C, 24, 2, 3, 2, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("USB2_TXD", C, 27, 2, 3, 3, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* OMAP-1510 GPIO */
|
||||||
|
MUX_CFG("R18_1510_GPIO0", 7, 9, 0, 1, 11, 1, 0, 0, 1)
|
||||||
|
MUX_CFG("R19_1510_GPIO1", 7, 6, 0, 1, 10, 1, 0, 0, 1)
|
||||||
|
MUX_CFG("M14_1510_GPIO2", 7, 3, 0, 1, 9, 1, 0, 0, 1)
|
||||||
|
|
||||||
|
/* OMAP1610 GPIO */
|
||||||
|
MUX_CFG("P18_1610_GPIO3", 7, 0, 0, 1, 8, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("Y15_1610_GPIO17", A, 0, 7, 2, 6, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* OMAP-1710 GPIO */
|
||||||
|
MUX_CFG("R18_1710_GPIO0", 7, 9, 0, 1, 11, 1, 1, 1, 1)
|
||||||
|
MUX_CFG("V2_1710_GPIO10", F, 27, 1, 4, 3, 1, 4, 1, 1)
|
||||||
|
MUX_CFG("N21_1710_GPIO14", 6, 9, 0, 1, 1, 1, 1, 1, 1)
|
||||||
|
MUX_CFG("W15_1710_GPIO40", 9, 27, 7, 2, 5, 1, 2, 1, 1)
|
||||||
|
|
||||||
|
/* MPUIO */
|
||||||
|
MUX_CFG("MPUIO2", 7, 18, 0, 1, 14, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("N15_1610_MPUIO2", 7, 18, 0, 1, 14, 1, 1, 0, 1)
|
||||||
|
MUX_CFG("MPUIO4", 7, 15, 0, 1, 13, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("MPUIO5", 7, 12, 0, 1, 12, 1, NA, 0, 1)
|
||||||
|
|
||||||
|
MUX_CFG("T20_1610_MPUIO5", 7, 12, 0, 1, 12, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("W11_1610_MPUIO6", 10, 15, 2, 3, 8, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("V10_1610_MPUIO7", A, 24, 2, 2, 14, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("W11_1610_MPUIO9", 10, 15, 1, 3, 8, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("V10_1610_MPUIO10", A, 24, 1, 2, 14, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("W10_1610_MPUIO11", A, 18, 2, 2, 11, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("E20_1610_MPUIO13", 3, 21, 1, 0, 7, 0, 0, 0, 1)
|
||||||
|
MUX_CFG("U20_1610_MPUIO14", 9, 6, 6, 0, 30, 0, 0, 0, 1)
|
||||||
|
MUX_CFG("E19_1610_MPUIO15", 3, 18, 1, 0, 6, 0, 0, 0, 1)
|
||||||
|
|
||||||
|
/* MCBSP2 */
|
||||||
|
MUX_CFG("MCBSP2_CLKR", C, 6, 0, 2, 27, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("MCBSP2_CLKX", C, 9, 0, 2, 29, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("MCBSP2_DR", C, 0, 0, 2, 26, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("MCBSP2_DX", C, 15, 0, 2, 31, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("MCBSP2_FSR", C, 12, 0, 2, 30, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("MCBSP2_FSX", C, 3, 0, 2, 27, 1, NA, 0, 1)
|
||||||
|
|
||||||
|
/* MCBSP3 NOTE: Mode must 1 for clock */
|
||||||
|
MUX_CFG("MCBSP3_CLKX", 9, 3, 1, 1, 29, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* Misc ballouts */
|
||||||
|
MUX_CFG("BALLOUT_V8_ARMIO3", B, 18, 0, 2, 25, 1, NA, 0, 1)
|
||||||
|
MUX_CFG("N20_HDQ", 6, 18, 1, 1, 4, 0, 1, 4, 0)
|
||||||
|
|
||||||
|
/* OMAP-1610 MMC2 */
|
||||||
|
MUX_CFG("W8_1610_MMC2_DAT0", B, 21, 6, 2, 23, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("V8_1610_MMC2_DAT1", B, 27, 6, 2, 25, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("W15_1610_MMC2_DAT2", 9, 12, 6, 2, 5, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("R10_1610_MMC2_DAT3", B, 18, 6, 2, 22, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("Y10_1610_MMC2_CLK", B, 3, 6, 2, 17, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("Y8_1610_MMC2_CMD", B, 24, 6, 2, 24, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("V9_1610_MMC2_CMDDIR", B, 12, 6, 2, 20, 0, 2, 1, 1)
|
||||||
|
MUX_CFG("V5_1610_MMC2_DATDIR0", B, 15, 6, 2, 21, 0, 2, 1, 1)
|
||||||
|
MUX_CFG("W19_1610_MMC2_DATDIR1", 8, 15, 6, 1, 23, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("R18_1610_MMC2_CLKIN", 7, 9, 6, 1, 11, 0, 1, 11, 1)
|
||||||
|
|
||||||
|
/* OMAP-1610 External Trace Interface */
|
||||||
|
MUX_CFG("M19_1610_ETM_PSTAT0", 5, 27, 1, 0, 29, 0, 0, 0, 1)
|
||||||
|
MUX_CFG("L15_1610_ETM_PSTAT1", 5, 24, 1, 0, 28, 0, 0, 0, 1)
|
||||||
|
MUX_CFG("L18_1610_ETM_PSTAT2", 5, 21, 1, 0, 27, 0, 0, 0, 1)
|
||||||
|
MUX_CFG("L19_1610_ETM_D0", 5, 18, 1, 0, 26, 0, 0, 0, 1)
|
||||||
|
MUX_CFG("J19_1610_ETM_D6", 5, 0, 1, 0, 20, 0, 0, 0, 1)
|
||||||
|
MUX_CFG("J18_1610_ETM_D7", 5, 27, 1, 0, 19, 0, 0, 0, 1)
|
||||||
|
|
||||||
|
/* OMAP16XX GPIO */
|
||||||
|
MUX_CFG("P20_1610_GPIO4", 6, 27, 0, 1, 7, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("V9_1610_GPIO7", B, 12, 1, 2, 20, 0, 2, 1, 1)
|
||||||
|
MUX_CFG("W8_1610_GPIO9", B, 21, 0, 2, 23, 0, 2, 1, 1)
|
||||||
|
MUX_CFG("N20_1610_GPIO11", 6, 18, 0, 1, 4, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("N19_1610_GPIO13", 6, 12, 0, 1, 2, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("P10_1610_GPIO22", C, 0, 7, 2, 26, 0, 2, 1, 1)
|
||||||
|
MUX_CFG("V5_1610_GPIO24", B, 15, 7, 2, 21, 0, 2, 1, 1)
|
||||||
|
MUX_CFG("AA20_1610_GPIO_41", 9, 9, 7, 1, 31, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("W19_1610_GPIO48", 8, 15, 7, 1, 23, 1, 1, 0, 1)
|
||||||
|
MUX_CFG("M7_1610_GPIO62", 10, 0, 0, 4, 24, 0, 4, 0, 1)
|
||||||
|
MUX_CFG("V14_16XX_GPIO37", 9, 18, 7, 2, 2, 0, 2, 2, 0)
|
||||||
|
MUX_CFG("R9_16XX_GPIO18", C, 18, 7, 3, 0, 0, 3, 0, 0)
|
||||||
|
MUX_CFG("L14_16XX_GPIO49", 6, 3, 7, 0, 31, 0, 0, 31, 0)
|
||||||
|
|
||||||
|
/* OMAP-1610 uWire */
|
||||||
|
MUX_CFG("V19_1610_UWIRE_SCLK", 8, 6, 0, 1, 20, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("U18_1610_UWIRE_SDI", 8, 0, 0, 1, 18, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("W21_1610_UWIRE_SDO", 8, 3, 0, 1, 19, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("N14_1610_UWIRE_CS0", 8, 9, 1, 1, 21, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("P15_1610_UWIRE_CS3", 8, 12, 1, 1, 22, 0, 1, 1, 1)
|
||||||
|
MUX_CFG("N15_1610_UWIRE_CS1", 7, 18, 2, 1, 14, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* OMAP-1610 Flash */
|
||||||
|
MUX_CFG("L3_1610_FLASH_CS2B_OE",10, 6, 1, NA, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("M8_1610_FLASH_CS2B_WE",10, 3, 1, NA, 0, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* First MMC interface, same on 1510, 1610 and 1710 */
|
||||||
|
MUX_CFG("MMC_CMD", A, 27, 0, 2, 15, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("MMC_DAT1", A, 24, 0, 2, 14, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("MMC_DAT2", A, 18, 0, 2, 12, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("MMC_DAT0", B, 0, 0, 2, 16, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("MMC_CLK", A, 21, 0, NA, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("MMC_DAT3", 10, 15, 0, 3, 8, 1, 3, 1, 1)
|
||||||
|
MUX_CFG("M15_1710_MMC_CLKI", 6, 21, 2, 0, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("P19_1710_MMC_CMDDIR", 6, 24, 6, 0, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("P20_1710_MMC_DATDIR0", 6, 27, 5, 0, 0, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* OMAP-1610 USB0 alternate configuration */
|
||||||
|
MUX_CFG("W9_USB0_TXEN", B, 9, 5, 2, 19, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("AA9_USB0_VP", B, 6, 5, 2, 18, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("Y5_USB0_RCV", C, 21, 5, 3, 1, 0, 1, 0, 1)
|
||||||
|
MUX_CFG("R9_USB0_VM", C, 18, 5, 3, 0, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("V6_USB0_TXD", C, 27, 5, 3, 3, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("W5_USB0_SE0", C, 24, 5, 3, 2, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("V9_USB0_SPEED", B, 12, 5, 2, 20, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("Y10_USB0_SUSP", B, 3, 5, 2, 17, 0, 2, 0, 1)
|
||||||
|
|
||||||
|
/* USB2 interface */
|
||||||
|
MUX_CFG("W9_USB2_TXEN", B, 9, 1, NA, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("AA9_USB2_VP", B, 6, 1, NA, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("Y5_USB2_RCV", C, 21, 1, NA, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("R9_USB2_VM", C, 18, 1, NA, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("V6_USB2_TXD", C, 27, 2, NA, 0, 0, NA, 0, 1)
|
||||||
|
MUX_CFG("W5_USB2_SE0", C, 24, 2, NA, 0, 0, NA, 0, 1)
|
||||||
|
|
||||||
|
/* 16XX UART */
|
||||||
|
MUX_CFG("R13_1610_UART1_TX", A, 12, 6, 2, 10, 0, 2, 10, 1)
|
||||||
|
MUX_CFG("V14_16XX_UART1_RX", 9, 18, 0, 2, 2, 0, 2, 2, 1)
|
||||||
|
MUX_CFG("R14_1610_UART1_CTS", 9, 15, 0, 2, 1, 0, 2, 1, 1)
|
||||||
|
MUX_CFG("AA15_1610_UART1_RTS", 9, 12, 1, 2, 0, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("R9_16XX_UART2_RX", C, 18, 0, 3, 0, 0, 3, 0, 1)
|
||||||
|
MUX_CFG("L14_16XX_UART3_RX", 6, 3, 0, 0, 31, 0, 0, 31, 1)
|
||||||
|
|
||||||
|
/* I2C interface */
|
||||||
|
MUX_CFG("I2C_SCL", 7, 24, 0, NA, 0, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("I2C_SDA", 7, 27, 0, NA, 0, 0, NA, 0, 0)
|
||||||
|
|
||||||
|
/* Keypad */
|
||||||
|
MUX_CFG("F18_1610_KBC0", 3, 15, 0, 0, 5, 1, 0, 0, 0)
|
||||||
|
MUX_CFG("D20_1610_KBC1", 3, 12, 0, 0, 4, 1, 0, 0, 0)
|
||||||
|
MUX_CFG("D19_1610_KBC2", 3, 9, 0, 0, 3, 1, 0, 0, 0)
|
||||||
|
MUX_CFG("E18_1610_KBC3", 3, 6, 0, 0, 2, 1, 0, 0, 0)
|
||||||
|
MUX_CFG("C21_1610_KBC4", 3, 3, 0, 0, 1, 1, 0, 0, 0)
|
||||||
|
MUX_CFG("G18_1610_KBR0", 4, 0, 0, 0, 10, 1, 0, 1, 0)
|
||||||
|
MUX_CFG("F19_1610_KBR1", 3, 27, 0, 0, 9, 1, 0, 1, 0)
|
||||||
|
MUX_CFG("H14_1610_KBR2", 3, 24, 0, 0, 8, 1, 0, 1, 0)
|
||||||
|
MUX_CFG("E20_1610_KBR3", 3, 21, 0, 0, 7, 1, 0, 1, 0)
|
||||||
|
MUX_CFG("E19_1610_KBR4", 3, 18, 0, 0, 6, 1, 0, 1, 0)
|
||||||
|
MUX_CFG("N19_1610_KBR5", 6, 12, 1, 1, 2, 1, 1, 1, 0)
|
||||||
|
|
||||||
|
/* Power management */
|
||||||
|
MUX_CFG("T20_1610_LOW_PWR", 7, 12, 1, NA, 0, 0, NA, 0, 0)
|
||||||
|
|
||||||
|
/* MCLK Settings */
|
||||||
|
MUX_CFG("V5_1710_MCLK_ON", B, 15, 0, NA, 0, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("V5_1710_MCLK_OFF", B, 15, 6, NA, 0, 0, NA, 0, 0)
|
||||||
|
MUX_CFG("R10_1610_MCLK_ON", B, 18, 0, NA, 22, 0, NA, 1, 0)
|
||||||
|
MUX_CFG("R10_1610_MCLK_OFF", B, 18, 6, 2, 22, 1, 2, 1, 1)
|
||||||
|
|
||||||
|
/* CompactFlash controller, conflicts with MMC1 */
|
||||||
|
MUX_CFG("P11_1610_CF_CD2", A, 27, 3, 2, 15, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("R11_1610_CF_IOIS16", B, 0, 3, 2, 16, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("V10_1610_CF_IREQ", A, 24, 3, 2, 14, 0, 2, 0, 1)
|
||||||
|
MUX_CFG("W10_1610_CF_RESET", A, 18, 3, 2, 12, 1, 2, 1, 1)
|
||||||
|
MUX_CFG("W11_1610_CF_CD1", 10, 15, 3, 3, 8, 1, 3, 1, 1)
|
||||||
|
};
|
||||||
|
#endif /* CONFIG_ARCH_OMAP15XX || CONFIG_ARCH_OMAP16XX */
|
||||||
|
|
||||||
|
int __init omap1_mux_init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_OMAP730
|
||||||
|
omap_mux_register(omap730_pins, ARRAY_SIZE(omap730_pins));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_ARCH_OMAP15XX) || defined(CONFIG_ARCH_OMAP16XX)
|
||||||
|
omap_mux_register(omap1xxx_pins, ARRAY_SIZE(omap1xxx_pins));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -109,9 +109,10 @@ static struct platform_device serial_device = {
|
||||||
* By default UART2 does not work on Innovator-1510 if you have
|
* By default UART2 does not work on Innovator-1510 if you have
|
||||||
* USB OHCI enabled. To use UART2, you must disable USB2 first.
|
* USB OHCI enabled. To use UART2, you must disable USB2 first.
|
||||||
*/
|
*/
|
||||||
void __init omap_serial_init(int ports[OMAP_MAX_NR_PORTS])
|
void __init omap_serial_init(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
const struct omap_uart_config *info;
|
||||||
|
|
||||||
if (cpu_is_omap730()) {
|
if (cpu_is_omap730()) {
|
||||||
serial_platform_data[0].regshift = 0;
|
serial_platform_data[0].regshift = 0;
|
||||||
|
@ -126,10 +127,14 @@ void __init omap_serial_init(int ports[OMAP_MAX_NR_PORTS])
|
||||||
serial_platform_data[2].uartclk = OMAP1510_BASE_BAUD * 16;
|
serial_platform_data[2].uartclk = OMAP1510_BASE_BAUD * 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info = omap_get_config(OMAP_TAG_UART, struct omap_uart_config);
|
||||||
|
if (info == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
|
for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
|
||||||
unsigned char reg;
|
unsigned char reg;
|
||||||
|
|
||||||
if (ports[i] == 0) {
|
if (!((1 << i) & info->enabled_uarts)) {
|
||||||
serial_platform_data[i].membase = NULL;
|
serial_platform_data[i].membase = NULL;
|
||||||
serial_platform_data[i].mapbase = 0;
|
serial_platform_data[i].mapbase = 0;
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -226,8 +226,8 @@ unsigned long long sched_clock(void)
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_32K_TIMER
|
#ifdef CONFIG_OMAP_32K_TIMER
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP15XX
|
||||||
#error OMAP 32KHz timer does not currently work on 1510!
|
#error OMAP 32KHz timer does not currently work on 15XX!
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
comment "OMAP Core Type"
|
||||||
|
depends on ARCH_OMAP2
|
||||||
|
|
||||||
|
config ARCH_OMAP24XX
|
||||||
|
bool "OMAP24xx Based System"
|
||||||
|
depends on ARCH_OMAP2
|
||||||
|
|
||||||
|
config ARCH_OMAP2420
|
||||||
|
bool "OMAP2420 support"
|
||||||
|
depends on ARCH_OMAP24XX
|
||||||
|
|
||||||
|
comment "OMAP Board Type"
|
||||||
|
depends on ARCH_OMAP2
|
||||||
|
|
||||||
|
config MACH_OMAP_GENERIC
|
||||||
|
bool "Generic OMAP board"
|
||||||
|
depends on ARCH_OMAP2 && ARCH_OMAP24XX
|
||||||
|
|
||||||
|
config MACH_OMAP_H4
|
||||||
|
bool "OMAP 2420 H4 board"
|
||||||
|
depends on ARCH_OMAP2 && ARCH_OMAP24XX
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
#
|
||||||
|
# Makefile for the linux kernel.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Common support
|
||||||
|
obj-y := irq.o id.o io.o sram-fn.o clock.o mux.o devices.o serial.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_OMAP_MPU_TIMER) += timer-gp.o
|
||||||
|
|
||||||
|
# Specific board support
|
||||||
|
obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o
|
||||||
|
obj-$(CONFIG_MACH_OMAP_H4) += board-h4.o
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
zreladdr-y := 0x80008000
|
||||||
|
params_phys-y := 0x80000100
|
||||||
|
initrd_phys-y := 0x80800000
|
|
@ -0,0 +1,80 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap/omap2/board-generic.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Nokia Corporation
|
||||||
|
* Author: Paul Mundt <paul.mundt@nokia.com>
|
||||||
|
*
|
||||||
|
* Modified from mach-omap/omap1/board-generic.c
|
||||||
|
*
|
||||||
|
* Code for generic OMAP2 board. Should work on many OMAP2 systems where
|
||||||
|
* the bootloader passes the board-specific data to the kernel.
|
||||||
|
* Do not put any board specific code to this file; create a new machine
|
||||||
|
* type if you need custom low-level initializations.
|
||||||
|
*
|
||||||
|
* 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 <asm/hardware.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include <asm/arch/gpio.h>
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/board.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
|
|
||||||
|
static void __init omap_generic_init_irq(void)
|
||||||
|
{
|
||||||
|
omap_init_irq();
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct omap_uart_config generic_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_mmc_config generic_mmc_config __initdata = {
|
||||||
|
.mmc [0] = {
|
||||||
|
.enabled = 0,
|
||||||
|
.wire4 = 0,
|
||||||
|
.wp_pin = -1,
|
||||||
|
.power_pin = -1,
|
||||||
|
.switch_pin = -1,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_board_config_kernel generic_config[] = {
|
||||||
|
{ OMAP_TAG_UART, &generic_uart_config },
|
||||||
|
{ OMAP_TAG_MMC, &generic_mmc_config },
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init omap_generic_init(void)
|
||||||
|
{
|
||||||
|
omap_board_config = generic_config;
|
||||||
|
omap_board_config_size = ARRAY_SIZE(generic_config);
|
||||||
|
omap_serial_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init omap_generic_map_io(void)
|
||||||
|
{
|
||||||
|
omap_map_common_io();
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx")
|
||||||
|
/* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
|
||||||
|
.phys_ram = 0x80000000,
|
||||||
|
.phys_io = 0x48000000,
|
||||||
|
.io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
|
||||||
|
.boot_params = 0x80000100,
|
||||||
|
.map_io = omap_generic_map_io,
|
||||||
|
.init_irq = omap_generic_init_irq,
|
||||||
|
.init_machine = omap_generic_init,
|
||||||
|
.timer = &omap_timer,
|
||||||
|
MACHINE_END
|
|
@ -0,0 +1,197 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap/omap2/board-h4.c
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Nokia Corporation
|
||||||
|
* Author: Paul Mundt <paul.mundt@nokia.com>
|
||||||
|
*
|
||||||
|
* Modified from mach-omap/omap1/board-generic.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/platform_device.h>
|
||||||
|
#include <linux/mtd/mtd.h>
|
||||||
|
#include <linux/mtd/partitions.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
|
|
||||||
|
#include <asm/hardware.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
#include <asm/mach/flash.h>
|
||||||
|
|
||||||
|
#include <asm/arch/gpio.h>
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/board.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
|
#include <asm/arch/prcm.h>
|
||||||
|
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/delay.h>
|
||||||
|
|
||||||
|
static struct mtd_partition h4_partitions[] = {
|
||||||
|
/* bootloader (U-Boot, etc) in first sector */
|
||||||
|
{
|
||||||
|
.name = "bootloader",
|
||||||
|
.offset = 0,
|
||||||
|
.size = SZ_128K,
|
||||||
|
.mask_flags = MTD_WRITEABLE, /* force read-only */
|
||||||
|
},
|
||||||
|
/* bootloader params in the next sector */
|
||||||
|
{
|
||||||
|
.name = "params",
|
||||||
|
.offset = MTDPART_OFS_APPEND,
|
||||||
|
.size = SZ_128K,
|
||||||
|
.mask_flags = 0,
|
||||||
|
},
|
||||||
|
/* kernel */
|
||||||
|
{
|
||||||
|
.name = "kernel",
|
||||||
|
.offset = MTDPART_OFS_APPEND,
|
||||||
|
.size = SZ_2M,
|
||||||
|
.mask_flags = 0
|
||||||
|
},
|
||||||
|
/* file system */
|
||||||
|
{
|
||||||
|
.name = "filesystem",
|
||||||
|
.offset = MTDPART_OFS_APPEND,
|
||||||
|
.size = MTDPART_SIZ_FULL,
|
||||||
|
.mask_flags = 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct flash_platform_data h4_flash_data = {
|
||||||
|
.map_name = "cfi_probe",
|
||||||
|
.width = 2,
|
||||||
|
.parts = h4_partitions,
|
||||||
|
.nr_parts = ARRAY_SIZE(h4_partitions),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource h4_flash_resource = {
|
||||||
|
.start = H4_CS0_BASE,
|
||||||
|
.end = H4_CS0_BASE + SZ_64M - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device h4_flash_device = {
|
||||||
|
.name = "omapflash",
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &h4_flash_data,
|
||||||
|
},
|
||||||
|
.num_resources = 1,
|
||||||
|
.resource = &h4_flash_resource,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource h4_smc91x_resources[] = {
|
||||||
|
[0] = {
|
||||||
|
.start = OMAP24XX_ETHR_START, /* Physical */
|
||||||
|
.end = OMAP24XX_ETHR_START + 0xf,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
[1] = {
|
||||||
|
.start = OMAP_GPIO_IRQ(OMAP24XX_ETHR_GPIO_IRQ),
|
||||||
|
.end = OMAP_GPIO_IRQ(OMAP24XX_ETHR_GPIO_IRQ),
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device h4_smc91x_device = {
|
||||||
|
.name = "smc91x",
|
||||||
|
.id = -1,
|
||||||
|
.num_resources = ARRAY_SIZE(h4_smc91x_resources),
|
||||||
|
.resource = h4_smc91x_resources,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device *h4_devices[] __initdata = {
|
||||||
|
&h4_smc91x_device,
|
||||||
|
&h4_flash_device,
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline void __init h4_init_smc91x(void)
|
||||||
|
{
|
||||||
|
/* Make sure CS1 timings are correct */
|
||||||
|
GPMC_CONFIG1_1 = 0x00011200;
|
||||||
|
GPMC_CONFIG2_1 = 0x001f1f01;
|
||||||
|
GPMC_CONFIG3_1 = 0x00080803;
|
||||||
|
GPMC_CONFIG4_1 = 0x1c091c09;
|
||||||
|
GPMC_CONFIG5_1 = 0x041f1f1f;
|
||||||
|
GPMC_CONFIG6_1 = 0x000004c4;
|
||||||
|
GPMC_CONFIG7_1 = 0x00000f40 | (0x08000000 >> 24);
|
||||||
|
udelay(100);
|
||||||
|
|
||||||
|
omap_cfg_reg(M15_24XX_GPIO92);
|
||||||
|
if (omap_request_gpio(OMAP24XX_ETHR_GPIO_IRQ) < 0) {
|
||||||
|
printk(KERN_ERR "Failed to request GPIO%d for smc91x IRQ\n",
|
||||||
|
OMAP24XX_ETHR_GPIO_IRQ);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
omap_set_gpio_direction(OMAP24XX_ETHR_GPIO_IRQ, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init omap_h4_init_irq(void)
|
||||||
|
{
|
||||||
|
omap_init_irq();
|
||||||
|
omap_gpio_init();
|
||||||
|
h4_init_smc91x();
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct omap_uart_config h4_uart_config __initdata = {
|
||||||
|
.enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_mmc_config h4_mmc_config __initdata = {
|
||||||
|
.mmc [0] = {
|
||||||
|
.enabled = 1,
|
||||||
|
.wire4 = 1,
|
||||||
|
.wp_pin = -1,
|
||||||
|
.power_pin = -1,
|
||||||
|
.switch_pin = -1,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_lcd_config h4_lcd_config __initdata = {
|
||||||
|
.panel_name = "h4",
|
||||||
|
.ctrl_name = "internal",
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_board_config_kernel h4_config[] = {
|
||||||
|
{ OMAP_TAG_UART, &h4_uart_config },
|
||||||
|
{ OMAP_TAG_MMC, &h4_mmc_config },
|
||||||
|
{ OMAP_TAG_LCD, &h4_lcd_config },
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init omap_h4_init(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Make sure the serial ports are muxed on at this point.
|
||||||
|
* You have to mux them off in device drivers later on
|
||||||
|
* if not needed.
|
||||||
|
*/
|
||||||
|
platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices));
|
||||||
|
omap_board_config = h4_config;
|
||||||
|
omap_board_config_size = ARRAY_SIZE(h4_config);
|
||||||
|
omap_serial_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init omap_h4_map_io(void)
|
||||||
|
{
|
||||||
|
omap_map_common_io();
|
||||||
|
}
|
||||||
|
|
||||||
|
MACHINE_START(OMAP_H4, "OMAP2420 H4 board")
|
||||||
|
/* Maintainer: Paul Mundt <paul.mundt@nokia.com> */
|
||||||
|
.phys_ram = 0x80000000,
|
||||||
|
.phys_io = 0x48000000,
|
||||||
|
.io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
|
||||||
|
.boot_params = 0x80000100,
|
||||||
|
.map_io = omap_h4_map_io,
|
||||||
|
.init_irq = omap_h4_init_irq,
|
||||||
|
.init_machine = omap_h4_init,
|
||||||
|
.timer = &omap_timer,
|
||||||
|
MACHINE_END
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,89 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap2/devices.c
|
||||||
|
*
|
||||||
|
* OMAP2 platform device setup/initialization
|
||||||
|
*
|
||||||
|
* 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/config.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
|
||||||
|
#include <asm/hardware.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/mach-types.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
|
#include <asm/arch/tc.h>
|
||||||
|
#include <asm/arch/board.h>
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
|
#include <asm/arch/gpio.h>
|
||||||
|
|
||||||
|
extern void omap_nop_release(struct device *dev);
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
|
||||||
|
|
||||||
|
#define OMAP2_I2C_BASE2 0x48072000
|
||||||
|
#define OMAP2_I2C_INT2 57
|
||||||
|
|
||||||
|
static struct resource i2c_resources2[] = {
|
||||||
|
{
|
||||||
|
.start = OMAP2_I2C_BASE2,
|
||||||
|
.end = OMAP2_I2C_BASE2 + 0x3f,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.start = OMAP2_I2C_INT2,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device omap_i2c_device2 = {
|
||||||
|
.name = "i2c_omap",
|
||||||
|
.id = 2,
|
||||||
|
.dev = {
|
||||||
|
.release = omap_nop_release,
|
||||||
|
},
|
||||||
|
.num_resources = ARRAY_SIZE(i2c_resources2),
|
||||||
|
.resource = i2c_resources2,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* See also arch/arm/plat-omap/devices.c for first I2C on 24xx */
|
||||||
|
static void omap_init_i2c(void)
|
||||||
|
{
|
||||||
|
/* REVISIT: Second I2C not in use on H4? */
|
||||||
|
if (machine_is_omap_h4())
|
||||||
|
return;
|
||||||
|
|
||||||
|
omap_cfg_reg(J15_24XX_I2C2_SCL);
|
||||||
|
omap_cfg_reg(H19_24XX_I2C2_SDA);
|
||||||
|
(void) platform_device_register(&omap_i2c_device2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static void omap_init_i2c(void) {}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*-------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
static int __init omap2_init_devices(void)
|
||||||
|
{
|
||||||
|
/* please keep these calls, and their implementations above,
|
||||||
|
* in alphabetical order so they're easier to sort through.
|
||||||
|
*/
|
||||||
|
omap_init_i2c();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
arch_initcall(omap2_init_devices);
|
||||||
|
|
|
@ -0,0 +1,124 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap2/id.c
|
||||||
|
*
|
||||||
|
* OMAP2 CPU identification code
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Nokia Corporation
|
||||||
|
* Written by Tony Lindgren <tony@atomide.com>
|
||||||
|
*
|
||||||
|
* 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/config.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
|
||||||
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
#define OMAP24XX_TAP_BASE io_p2v(0x48014000)
|
||||||
|
|
||||||
|
#define OMAP_TAP_IDCODE 0x0204
|
||||||
|
#define OMAP_TAP_PROD_ID 0x0208
|
||||||
|
|
||||||
|
#define OMAP_TAP_DIE_ID_0 0x0218
|
||||||
|
#define OMAP_TAP_DIE_ID_1 0x021C
|
||||||
|
#define OMAP_TAP_DIE_ID_2 0x0220
|
||||||
|
#define OMAP_TAP_DIE_ID_3 0x0224
|
||||||
|
|
||||||
|
/* system_rev fields for OMAP2 processors:
|
||||||
|
* CPU id bits [31:16],
|
||||||
|
* CPU device type [15:12], (unprg,normal,POP)
|
||||||
|
* CPU revision [11:08]
|
||||||
|
* CPU class bits [07:00]
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct omap_id {
|
||||||
|
u16 hawkeye; /* Silicon type (Hawkeye id) */
|
||||||
|
u8 dev; /* Device type from production_id reg */
|
||||||
|
u32 type; /* combined type id copied to system_rev */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Register values to detect the OMAP version */
|
||||||
|
static struct omap_id omap_ids[] __initdata = {
|
||||||
|
{ .hawkeye = 0xb5d9, .dev = 0x0, .type = 0x24200000 },
|
||||||
|
{ .hawkeye = 0xb5d9, .dev = 0x1, .type = 0x24201000 },
|
||||||
|
{ .hawkeye = 0xb5d9, .dev = 0x2, .type = 0x24202000 },
|
||||||
|
{ .hawkeye = 0xb5d9, .dev = 0x4, .type = 0x24220000 },
|
||||||
|
{ .hawkeye = 0xb5d9, .dev = 0x8, .type = 0x24230000 },
|
||||||
|
{ .hawkeye = 0xb68a, .dev = 0x0, .type = 0x24300000 },
|
||||||
|
};
|
||||||
|
|
||||||
|
static u32 __init read_tap_reg(int reg)
|
||||||
|
{
|
||||||
|
return __raw_readl(OMAP24XX_TAP_BASE + reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init omap2_check_revision(void)
|
||||||
|
{
|
||||||
|
int i, j;
|
||||||
|
u32 idcode;
|
||||||
|
u32 prod_id;
|
||||||
|
u16 hawkeye;
|
||||||
|
u8 dev_type;
|
||||||
|
u8 rev;
|
||||||
|
|
||||||
|
idcode = read_tap_reg(OMAP_TAP_IDCODE);
|
||||||
|
prod_id = read_tap_reg(OMAP_TAP_PROD_ID);
|
||||||
|
hawkeye = (idcode >> 12) & 0xffff;
|
||||||
|
rev = (idcode >> 28) & 0x0f;
|
||||||
|
dev_type = (prod_id >> 16) & 0x0f;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printk(KERN_DEBUG "OMAP_TAP_IDCODE 0x%08x REV %i HAWKEYE 0x%04x MANF %03x\n",
|
||||||
|
idcode, rev, hawkeye, (idcode >> 1) & 0x7ff);
|
||||||
|
printk(KERN_DEBUG "OMAP_TAP_DIE_ID_0: 0x%08x\n",
|
||||||
|
read_tap_reg(OMAP_TAP_DIE_ID_0));
|
||||||
|
printk(KERN_DEBUG "OMAP_TAP_DIE_ID_1: 0x%08x DEV_REV: %i\n",
|
||||||
|
read_tap_reg(OMAP_TAP_DIE_ID_1),
|
||||||
|
(read_tap_reg(OMAP_TAP_DIE_ID_1) >> 28) & 0xf);
|
||||||
|
printk(KERN_DEBUG "OMAP_TAP_DIE_ID_2: 0x%08x\n",
|
||||||
|
read_tap_reg(OMAP_TAP_DIE_ID_2));
|
||||||
|
printk(KERN_DEBUG "OMAP_TAP_DIE_ID_3: 0x%08x\n",
|
||||||
|
read_tap_reg(OMAP_TAP_DIE_ID_3));
|
||||||
|
printk(KERN_DEBUG "OMAP_TAP_PROD_ID_0: 0x%08x DEV_TYPE: %i\n",
|
||||||
|
prod_id, dev_type);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Check hawkeye ids */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
|
||||||
|
if (hawkeye == omap_ids[i].hawkeye)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == ARRAY_SIZE(omap_ids)) {
|
||||||
|
printk(KERN_ERR "Unknown OMAP CPU id\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j = i; j < ARRAY_SIZE(omap_ids); j++) {
|
||||||
|
if (dev_type == omap_ids[j].dev)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j == ARRAY_SIZE(omap_ids)) {
|
||||||
|
printk(KERN_ERR "Unknown OMAP device type. "
|
||||||
|
"Handling it as OMAP%04x\n",
|
||||||
|
omap_ids[i].type >> 16);
|
||||||
|
j = i;
|
||||||
|
}
|
||||||
|
system_rev = omap_ids[j].type;
|
||||||
|
|
||||||
|
system_rev |= rev << 8;
|
||||||
|
|
||||||
|
/* Add the cpu class info (24xx) */
|
||||||
|
system_rev |= 0x24;
|
||||||
|
|
||||||
|
pr_info("OMAP%04x", system_rev >> 16);
|
||||||
|
if ((system_rev >> 8) & 0x0f)
|
||||||
|
printk("%x", (system_rev >> 8) & 0x0f);
|
||||||
|
printk("\n");
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap2/io.c
|
||||||
|
*
|
||||||
|
* OMAP2 I/O mapping code
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Nokia Corporation
|
||||||
|
* Author: Juha Yrjölä <juha.yrjola@nokia.com>
|
||||||
|
*
|
||||||
|
* 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/config.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
|
|
||||||
|
extern void omap_sram_init(void);
|
||||||
|
extern int omap2_clk_init(void);
|
||||||
|
extern void omap2_check_revision(void);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The machine specific code may provide the extra mapping besides the
|
||||||
|
* default mapping provided here.
|
||||||
|
*/
|
||||||
|
static struct map_desc omap2_io_desc[] __initdata = {
|
||||||
|
{
|
||||||
|
.virtual = L3_24XX_VIRT,
|
||||||
|
.pfn = __phys_to_pfn(L3_24XX_PHYS),
|
||||||
|
.length = L3_24XX_SIZE,
|
||||||
|
.type = MT_DEVICE
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.virtual = L4_24XX_VIRT,
|
||||||
|
.pfn = __phys_to_pfn(L4_24XX_PHYS),
|
||||||
|
.length = L4_24XX_SIZE,
|
||||||
|
.type = MT_DEVICE
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void __init omap_map_common_io(void)
|
||||||
|
{
|
||||||
|
iotable_init(omap2_io_desc, ARRAY_SIZE(omap2_io_desc));
|
||||||
|
omap2_check_revision();
|
||||||
|
omap_sram_init();
|
||||||
|
omap2_mux_init();
|
||||||
|
omap2_clk_init();
|
||||||
|
}
|
|
@ -0,0 +1,149 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap/omap2/irq.c
|
||||||
|
*
|
||||||
|
* Interrupt handler for OMAP2 boards.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Nokia Corporation
|
||||||
|
* Author: Paul Mundt <paul.mundt@nokia.com>
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/config.h>
|
||||||
|
#include <linux/interrupt.h>
|
||||||
|
#include <asm/hardware.h>
|
||||||
|
#include <asm/mach/irq.h>
|
||||||
|
#include <asm/irq.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
#define INTC_REVISION 0x0000
|
||||||
|
#define INTC_SYSCONFIG 0x0010
|
||||||
|
#define INTC_SYSSTATUS 0x0014
|
||||||
|
#define INTC_CONTROL 0x0048
|
||||||
|
#define INTC_MIR_CLEAR0 0x0088
|
||||||
|
#define INTC_MIR_SET0 0x008c
|
||||||
|
|
||||||
|
/*
|
||||||
|
* OMAP2 has a number of different interrupt controllers, each interrupt
|
||||||
|
* controller is identified as its own "bank". Register definitions are
|
||||||
|
* fairly consistent for each bank, but not all registers are implemented
|
||||||
|
* for each bank.. when in doubt, consult the TRM.
|
||||||
|
*/
|
||||||
|
static struct omap_irq_bank {
|
||||||
|
unsigned long base_reg;
|
||||||
|
unsigned int nr_irqs;
|
||||||
|
} __attribute__ ((aligned(4))) irq_banks[] = {
|
||||||
|
{
|
||||||
|
/* MPU INTC */
|
||||||
|
.base_reg = OMAP24XX_IC_BASE,
|
||||||
|
.nr_irqs = 96,
|
||||||
|
}, {
|
||||||
|
/* XXX: DSP INTC */
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/*
|
||||||
|
* Commented out for now until we fix the IVA clocking
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_ARCH_OMAP2420
|
||||||
|
}, {
|
||||||
|
/* IVA INTC (2420 only) */
|
||||||
|
.base_reg = OMAP24XX_IVA_INTC_BASE,
|
||||||
|
.nr_irqs = 16, /* Actually 32, but only 16 are used */
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* XXX: FIQ and additional INTC support (only MPU at the moment) */
|
||||||
|
static void omap_ack_irq(unsigned int irq)
|
||||||
|
{
|
||||||
|
omap_writel(0x1, irq_banks[0].base_reg + INTC_CONTROL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap_mask_irq(unsigned int irq)
|
||||||
|
{
|
||||||
|
int offset = (irq >> 5) << 5;
|
||||||
|
|
||||||
|
if (irq >= 64) {
|
||||||
|
irq %= 64;
|
||||||
|
} else if (irq >= 32) {
|
||||||
|
irq %= 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
omap_writel(1 << irq, irq_banks[0].base_reg + INTC_MIR_SET0 + offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap_unmask_irq(unsigned int irq)
|
||||||
|
{
|
||||||
|
int offset = (irq >> 5) << 5;
|
||||||
|
|
||||||
|
if (irq >= 64) {
|
||||||
|
irq %= 64;
|
||||||
|
} else if (irq >= 32) {
|
||||||
|
irq %= 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
omap_writel(1 << irq, irq_banks[0].base_reg + INTC_MIR_CLEAR0 + offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void omap_mask_ack_irq(unsigned int irq)
|
||||||
|
{
|
||||||
|
omap_mask_irq(irq);
|
||||||
|
omap_ack_irq(irq);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct irqchip omap_irq_chip = {
|
||||||
|
.ack = omap_mask_ack_irq,
|
||||||
|
.mask = omap_mask_irq,
|
||||||
|
.unmask = omap_unmask_irq,
|
||||||
|
};
|
||||||
|
|
||||||
|
static void __init omap_irq_bank_init_one(struct omap_irq_bank *bank)
|
||||||
|
{
|
||||||
|
unsigned long tmp;
|
||||||
|
|
||||||
|
tmp = omap_readl(bank->base_reg + INTC_REVISION) & 0xff;
|
||||||
|
printk(KERN_INFO "IRQ: Found an INTC at 0x%08lx "
|
||||||
|
"(revision %ld.%ld) with %d interrupts\n",
|
||||||
|
bank->base_reg, tmp >> 4, tmp & 0xf, bank->nr_irqs);
|
||||||
|
|
||||||
|
tmp = omap_readl(bank->base_reg + INTC_SYSCONFIG);
|
||||||
|
tmp |= 1 << 1; /* soft reset */
|
||||||
|
omap_writel(tmp, bank->base_reg + INTC_SYSCONFIG);
|
||||||
|
|
||||||
|
while (!(omap_readl(bank->base_reg + INTC_SYSSTATUS) & 0x1))
|
||||||
|
/* Wait for reset to complete */;
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init omap_init_irq(void)
|
||||||
|
{
|
||||||
|
unsigned long nr_irqs = 0;
|
||||||
|
unsigned int nr_banks = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
|
||||||
|
struct omap_irq_bank *bank = irq_banks + i;
|
||||||
|
|
||||||
|
/* XXX */
|
||||||
|
if (!bank->base_reg)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
omap_irq_bank_init_one(bank);
|
||||||
|
|
||||||
|
nr_irqs += bank->nr_irqs;
|
||||||
|
nr_banks++;
|
||||||
|
}
|
||||||
|
|
||||||
|
printk(KERN_INFO "Total of %ld interrupts on %d active controller%s\n",
|
||||||
|
nr_irqs, nr_banks, nr_banks > 1 ? "s" : "");
|
||||||
|
|
||||||
|
for (i = 0; i < nr_irqs; i++) {
|
||||||
|
set_irq_chip(i, &omap_irq_chip);
|
||||||
|
set_irq_handler(i, do_level_IRQ);
|
||||||
|
set_irq_flags(i, IRQF_VALID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap2/mux.c
|
||||||
|
*
|
||||||
|
* OMAP1 pin multiplexing configurations
|
||||||
|
*
|
||||||
|
* Copyright (C) 2003 - 2005 Nokia Corporation
|
||||||
|
*
|
||||||
|
* Written by Tony Lindgren <tony.lindgren@nokia.com>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <linux/config.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <asm/system.h>
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <linux/spinlock.h>
|
||||||
|
|
||||||
|
#include <asm/arch/mux.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_OMAP_MUX
|
||||||
|
|
||||||
|
/* NOTE: See mux.h for the enumeration */
|
||||||
|
|
||||||
|
struct pin_config __initdata_or_module omap24xx_pins[] = {
|
||||||
|
/*
|
||||||
|
* description mux mux pull pull debug
|
||||||
|
* offset mode ena type
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* 24xx I2C */
|
||||||
|
MUX_CFG_24XX("M19_24XX_I2C1_SCL", 0x111, 0, 0, 0, 1)
|
||||||
|
MUX_CFG_24XX("L15_24XX_I2C1_SDA", 0x112, 0, 0, 0, 1)
|
||||||
|
MUX_CFG_24XX("J15_24XX_I2C2_SCL", 0x113, 0, 0, 0, 1)
|
||||||
|
MUX_CFG_24XX("H19_24XX_I2C2_SDA", 0x114, 0, 0, 0, 1)
|
||||||
|
|
||||||
|
/* Menelaus interrupt */
|
||||||
|
MUX_CFG_24XX("W19_24XX_SYS_NIRQ", 0x12c, 0, 1, 1, 1)
|
||||||
|
|
||||||
|
/* 24xx GPIO */
|
||||||
|
MUX_CFG_24XX("Y20_24XX_GPIO60", 0x12c, 3, 0, 0, 1)
|
||||||
|
MUX_CFG_24XX("M15_24XX_GPIO92", 0x10a, 3, 0, 0, 1)
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
int __init omap2_mux_init(void)
|
||||||
|
{
|
||||||
|
omap_mux_register(omap24xx_pins, ARRAY_SIZE(omap24xx_pins));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,419 @@
|
||||||
|
/*
|
||||||
|
* prcm.h - Access definations for use in OMAP24XX clock and power management
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Texas Instruments, Inc.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __ASM_ARM_ARCH_DPM_PRCM_H
|
||||||
|
#define __ASM_ARM_ARCH_DPM_PRCM_H
|
||||||
|
|
||||||
|
/* SET_PERFORMANCE_LEVEL PARAMETERS */
|
||||||
|
#define PRCM_HALF_SPEED 1
|
||||||
|
#define PRCM_FULL_SPEED 2
|
||||||
|
|
||||||
|
#ifndef __ASSEMBLER__
|
||||||
|
|
||||||
|
#define PRCM_REG32(offset) __REG32(OMAP24XX_PRCM_BASE + (offset))
|
||||||
|
|
||||||
|
#define PRCM_REVISION PRCM_REG32(0x000)
|
||||||
|
#define PRCM_SYSCONFIG PRCM_REG32(0x010)
|
||||||
|
#define PRCM_IRQSTATUS_MPU PRCM_REG32(0x018)
|
||||||
|
#define PRCM_IRQENABLE_MPU PRCM_REG32(0x01C)
|
||||||
|
#define PRCM_VOLTCTRL PRCM_REG32(0x050)
|
||||||
|
#define PRCM_VOLTST PRCM_REG32(0x054)
|
||||||
|
#define PRCM_CLKSRC_CTRL PRCM_REG32(0x060)
|
||||||
|
#define PRCM_CLKOUT_CTRL PRCM_REG32(0x070)
|
||||||
|
#define PRCM_CLKEMUL_CTRL PRCM_REG32(0x078)
|
||||||
|
#define PRCM_CLKCFG_CTRL PRCM_REG32(0x080)
|
||||||
|
#define PRCM_CLKCFG_STATUS PRCM_REG32(0x084)
|
||||||
|
#define PRCM_VOLTSETUP PRCM_REG32(0x090)
|
||||||
|
#define PRCM_CLKSSETUP PRCM_REG32(0x094)
|
||||||
|
#define PRCM_POLCTRL PRCM_REG32(0x098)
|
||||||
|
|
||||||
|
/* GENERAL PURPOSE */
|
||||||
|
#define GENERAL_PURPOSE1 PRCM_REG32(0x0B0)
|
||||||
|
#define GENERAL_PURPOSE2 PRCM_REG32(0x0B4)
|
||||||
|
#define GENERAL_PURPOSE3 PRCM_REG32(0x0B8)
|
||||||
|
#define GENERAL_PURPOSE4 PRCM_REG32(0x0BC)
|
||||||
|
#define GENERAL_PURPOSE5 PRCM_REG32(0x0C0)
|
||||||
|
#define GENERAL_PURPOSE6 PRCM_REG32(0x0C4)
|
||||||
|
#define GENERAL_PURPOSE7 PRCM_REG32(0x0C8)
|
||||||
|
#define GENERAL_PURPOSE8 PRCM_REG32(0x0CC)
|
||||||
|
#define GENERAL_PURPOSE9 PRCM_REG32(0x0D0)
|
||||||
|
#define GENERAL_PURPOSE10 PRCM_REG32(0x0D4)
|
||||||
|
#define GENERAL_PURPOSE11 PRCM_REG32(0x0D8)
|
||||||
|
#define GENERAL_PURPOSE12 PRCM_REG32(0x0DC)
|
||||||
|
#define GENERAL_PURPOSE13 PRCM_REG32(0x0E0)
|
||||||
|
#define GENERAL_PURPOSE14 PRCM_REG32(0x0E4)
|
||||||
|
#define GENERAL_PURPOSE15 PRCM_REG32(0x0E8)
|
||||||
|
#define GENERAL_PURPOSE16 PRCM_REG32(0x0EC)
|
||||||
|
#define GENERAL_PURPOSE17 PRCM_REG32(0x0F0)
|
||||||
|
#define GENERAL_PURPOSE18 PRCM_REG32(0x0F4)
|
||||||
|
#define GENERAL_PURPOSE19 PRCM_REG32(0x0F8)
|
||||||
|
#define GENERAL_PURPOSE20 PRCM_REG32(0x0FC)
|
||||||
|
|
||||||
|
/* MPU */
|
||||||
|
#define CM_CLKSEL_MPU PRCM_REG32(0x140)
|
||||||
|
#define CM_CLKSTCTRL_MPU PRCM_REG32(0x148)
|
||||||
|
#define RM_RSTST_MPU PRCM_REG32(0x158)
|
||||||
|
#define PM_WKDEP_MPU PRCM_REG32(0x1C8)
|
||||||
|
#define PM_EVGENCTRL_MPU PRCM_REG32(0x1D4)
|
||||||
|
#define PM_EVEGENONTIM_MPU PRCM_REG32(0x1D8)
|
||||||
|
#define PM_EVEGENOFFTIM_MPU PRCM_REG32(0x1DC)
|
||||||
|
#define PM_PWSTCTRL_MPU PRCM_REG32(0x1E0)
|
||||||
|
#define PM_PWSTST_MPU PRCM_REG32(0x1E4)
|
||||||
|
|
||||||
|
/* CORE */
|
||||||
|
#define CM_FCLKEN1_CORE PRCM_REG32(0x200)
|
||||||
|
#define CM_FCLKEN2_CORE PRCM_REG32(0x204)
|
||||||
|
#define CM_FCLKEN3_CORE PRCM_REG32(0x208)
|
||||||
|
#define CM_ICLKEN1_CORE PRCM_REG32(0x210)
|
||||||
|
#define CM_ICLKEN2_CORE PRCM_REG32(0x214)
|
||||||
|
#define CM_ICLKEN3_CORE PRCM_REG32(0x218)
|
||||||
|
#define CM_ICLKEN4_CORE PRCM_REG32(0x21C)
|
||||||
|
#define CM_IDLEST1_CORE PRCM_REG32(0x220)
|
||||||
|
#define CM_IDLEST2_CORE PRCM_REG32(0x224)
|
||||||
|
#define CM_IDLEST3_CORE PRCM_REG32(0x228)
|
||||||
|
#define CM_IDLEST4_CORE PRCM_REG32(0x22C)
|
||||||
|
#define CM_AUTOIDLE1_CORE PRCM_REG32(0x230)
|
||||||
|
#define CM_AUTOIDLE2_CORE PRCM_REG32(0x234)
|
||||||
|
#define CM_AUTOIDLE3_CORE PRCM_REG32(0x238)
|
||||||
|
#define CM_AUTOIDLE4_CORE PRCM_REG32(0x23C)
|
||||||
|
#define CM_CLKSEL1_CORE PRCM_REG32(0x240)
|
||||||
|
#define CM_CLKSEL2_CORE PRCM_REG32(0x244)
|
||||||
|
#define CM_CLKSTCTRL_CORE PRCM_REG32(0x248)
|
||||||
|
#define PM_WKEN1_CORE PRCM_REG32(0x2A0)
|
||||||
|
#define PM_WKEN2_CORE PRCM_REG32(0x2A4)
|
||||||
|
#define PM_WKST1_CORE PRCM_REG32(0x2B0)
|
||||||
|
#define PM_WKST2_CORE PRCM_REG32(0x2B4)
|
||||||
|
#define PM_WKDEP_CORE PRCM_REG32(0x2C8)
|
||||||
|
#define PM_PWSTCTRL_CORE PRCM_REG32(0x2E0)
|
||||||
|
#define PM_PWSTST_CORE PRCM_REG32(0x2E4)
|
||||||
|
|
||||||
|
/* GFX */
|
||||||
|
#define CM_FCLKEN_GFX PRCM_REG32(0x300)
|
||||||
|
#define CM_ICLKEN_GFX PRCM_REG32(0x310)
|
||||||
|
#define CM_IDLEST_GFX PRCM_REG32(0x320)
|
||||||
|
#define CM_CLKSEL_GFX PRCM_REG32(0x340)
|
||||||
|
#define CM_CLKSTCTRL_GFX PRCM_REG32(0x348)
|
||||||
|
#define RM_RSTCTRL_GFX PRCM_REG32(0x350)
|
||||||
|
#define RM_RSTST_GFX PRCM_REG32(0x358)
|
||||||
|
#define PM_WKDEP_GFX PRCM_REG32(0x3C8)
|
||||||
|
#define PM_PWSTCTRL_GFX PRCM_REG32(0x3E0)
|
||||||
|
#define PM_PWSTST_GFX PRCM_REG32(0x3E4)
|
||||||
|
|
||||||
|
/* WAKE-UP */
|
||||||
|
#define CM_FCLKEN_WKUP PRCM_REG32(0x400)
|
||||||
|
#define CM_ICLKEN_WKUP PRCM_REG32(0x410)
|
||||||
|
#define CM_IDLEST_WKUP PRCM_REG32(0x420)
|
||||||
|
#define CM_AUTOIDLE_WKUP PRCM_REG32(0x430)
|
||||||
|
#define CM_CLKSEL_WKUP PRCM_REG32(0x440)
|
||||||
|
#define RM_RSTCTRL_WKUP PRCM_REG32(0x450)
|
||||||
|
#define RM_RSTTIME_WKUP PRCM_REG32(0x454)
|
||||||
|
#define RM_RSTST_WKUP PRCM_REG32(0x458)
|
||||||
|
#define PM_WKEN_WKUP PRCM_REG32(0x4A0)
|
||||||
|
#define PM_WKST_WKUP PRCM_REG32(0x4B0)
|
||||||
|
|
||||||
|
/* CLOCKS */
|
||||||
|
#define CM_CLKEN_PLL PRCM_REG32(0x500)
|
||||||
|
#define CM_IDLEST_CKGEN PRCM_REG32(0x520)
|
||||||
|
#define CM_AUTOIDLE_PLL PRCM_REG32(0x530)
|
||||||
|
#define CM_CLKSEL1_PLL PRCM_REG32(0x540)
|
||||||
|
#define CM_CLKSEL2_PLL PRCM_REG32(0x544)
|
||||||
|
|
||||||
|
/* DSP */
|
||||||
|
#define CM_FCLKEN_DSP PRCM_REG32(0x800)
|
||||||
|
#define CM_ICLKEN_DSP PRCM_REG32(0x810)
|
||||||
|
#define CM_IDLEST_DSP PRCM_REG32(0x820)
|
||||||
|
#define CM_AUTOIDLE_DSP PRCM_REG32(0x830)
|
||||||
|
#define CM_CLKSEL_DSP PRCM_REG32(0x840)
|
||||||
|
#define CM_CLKSTCTRL_DSP PRCM_REG32(0x848)
|
||||||
|
#define RM_RSTCTRL_DSP PRCM_REG32(0x850)
|
||||||
|
#define RM_RSTST_DSP PRCM_REG32(0x858)
|
||||||
|
#define PM_WKEN_DSP PRCM_REG32(0x8A0)
|
||||||
|
#define PM_WKDEP_DSP PRCM_REG32(0x8C8)
|
||||||
|
#define PM_PWSTCTRL_DSP PRCM_REG32(0x8E0)
|
||||||
|
#define PM_PWSTST_DSP PRCM_REG32(0x8E4)
|
||||||
|
#define PRCM_IRQSTATUS_DSP PRCM_REG32(0x8F0)
|
||||||
|
#define PRCM_IRQENABLE_DSP PRCM_REG32(0x8F4)
|
||||||
|
|
||||||
|
/* IVA */
|
||||||
|
#define PRCM_IRQSTATUS_IVA PRCM_REG32(0x8F8)
|
||||||
|
#define PRCM_IRQENABLE_IVA PRCM_REG32(0x8FC)
|
||||||
|
|
||||||
|
/* Modem on 2430 */
|
||||||
|
#define CM_FCLKEN_MDM PRCM_REG32(0xC00)
|
||||||
|
#define CM_ICLKEN_MDM PRCM_REG32(0xC10)
|
||||||
|
#define CM_IDLEST_MDM PRCM_REG32(0xC20)
|
||||||
|
#define CM_CLKSEL_MDM PRCM_REG32(0xC40)
|
||||||
|
|
||||||
|
/* FIXME: Move to header for 2430 */
|
||||||
|
#define DISP_BASE (OMAP24XX_L4_IO_BASE+0x50000)
|
||||||
|
#define DISP_REG32(offset) __REG32(DISP_BASE + (offset))
|
||||||
|
|
||||||
|
#define GPMC_BASE (OMAP24XX_GPMC_BASE)
|
||||||
|
#define GPMC_REG32(offset) __REG32(GPMC_BASE + (offset))
|
||||||
|
|
||||||
|
#define GPT1_BASE (OMAP24XX_GPT1)
|
||||||
|
#define GPT1_REG32(offset) __REG32(GPT1_BASE + (offset))
|
||||||
|
|
||||||
|
/* Misc sysconfig */
|
||||||
|
#define DISPC_SYSCONFIG DISP_REG32(0x410)
|
||||||
|
#define SPI_BASE (OMAP24XX_L4_IO_BASE+0x98000)
|
||||||
|
#define MCSPI1_SYSCONFIG __REG32(SPI_BASE + 0x10)
|
||||||
|
#define MCSPI2_SYSCONFIG __REG32(SPI_BASE+0x2000 + 0x10)
|
||||||
|
|
||||||
|
//#define DSP_MMU_SYSCONFIG 0x5A000010
|
||||||
|
#define CAMERA_MMU_SYSCONFIG __REG32(DISP_BASE+0x2C10)
|
||||||
|
//#define IVA_MMU_SYSCONFIG 0x5D000010
|
||||||
|
//#define DSP_DMA_SYSCONFIG 0x00FCC02C
|
||||||
|
#define CAMERA_DMA_SYSCONFIG __REG32(DISP_BASE+0x282C)
|
||||||
|
#define SYSTEM_DMA_SYSCONFIG __REG32(DISP_BASE+0x602C)
|
||||||
|
#define GPMC_SYSCONFIG GPMC_REG32(0x010)
|
||||||
|
#define MAILBOXES_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE+0x94010)
|
||||||
|
#define UART1_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE+0x6A054)
|
||||||
|
#define UART2_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE+0x6C054)
|
||||||
|
#define UART3_SYSCONFIG __REG32(OMAP24XX_L4_IO_BASE+0x6E054)
|
||||||
|
//#define IVA_SYSCONFIG 0x5C060010
|
||||||
|
#define SDRC_SYSCONFIG __REG32(OMAP24XX_SDRC_BASE+0x10)
|
||||||
|
#define SMS_SYSCONFIG __REG32(OMAP24XX_SMS_BASE+0x10)
|
||||||
|
#define SSI_SYSCONFIG __REG32(DISP_BASE+0x8010)
|
||||||
|
//#define VLYNQ_SYSCONFIG 0x67FFFE10
|
||||||
|
|
||||||
|
/* rkw - good cannidates for PM_ to start what nm was trying */
|
||||||
|
#define OMAP24XX_GPT2 (OMAP24XX_L4_IO_BASE+0x2A000)
|
||||||
|
#define OMAP24XX_GPT3 (OMAP24XX_L4_IO_BASE+0x78000)
|
||||||
|
#define OMAP24XX_GPT4 (OMAP24XX_L4_IO_BASE+0x7A000)
|
||||||
|
#define OMAP24XX_GPT5 (OMAP24XX_L4_IO_BASE+0x7C000)
|
||||||
|
#define OMAP24XX_GPT6 (OMAP24XX_L4_IO_BASE+0x7E000)
|
||||||
|
#define OMAP24XX_GPT7 (OMAP24XX_L4_IO_BASE+0x80000)
|
||||||
|
#define OMAP24XX_GPT8 (OMAP24XX_L4_IO_BASE+0x82000)
|
||||||
|
#define OMAP24XX_GPT9 (OMAP24XX_L4_IO_BASE+0x84000)
|
||||||
|
#define OMAP24XX_GPT10 (OMAP24XX_L4_IO_BASE+0x86000)
|
||||||
|
#define OMAP24XX_GPT11 (OMAP24XX_L4_IO_BASE+0x88000)
|
||||||
|
#define OMAP24XX_GPT12 (OMAP24XX_L4_IO_BASE+0x8A000)
|
||||||
|
|
||||||
|
#define GPTIMER1_SYSCONFIG GPT1_REG32(0x010)
|
||||||
|
#define GPTIMER2_SYSCONFIG __REG32(OMAP24XX_GPT2 + 0x10)
|
||||||
|
#define GPTIMER3_SYSCONFIG __REG32(OMAP24XX_GPT3 + 0x10)
|
||||||
|
#define GPTIMER4_SYSCONFIG __REG32(OMAP24XX_GPT4 + 0x10)
|
||||||
|
#define GPTIMER5_SYSCONFIG __REG32(OMAP24XX_GPT5 + 0x10)
|
||||||
|
#define GPTIMER6_SYSCONFIG __REG32(OMAP24XX_GPT6 + 0x10)
|
||||||
|
#define GPTIMER7_SYSCONFIG __REG32(OMAP24XX_GPT7 + 0x10)
|
||||||
|
#define GPTIMER8_SYSCONFIG __REG32(OMAP24XX_GPT8 + 0x10)
|
||||||
|
#define GPTIMER9_SYSCONFIG __REG32(OMAP24XX_GPT9 + 0x10)
|
||||||
|
#define GPTIMER10_SYSCONFIG __REG32(OMAP24XX_GPT10 + 0x10)
|
||||||
|
#define GPTIMER11_SYSCONFIG __REG32(OMAP24XX_GPT11 + 0x10)
|
||||||
|
#define GPTIMER12_SYSCONFIG __REG32(OMAP24XX_GPT12 + 0x10)
|
||||||
|
|
||||||
|
#define GPIOX_BASE(X) (OMAP24XX_GPIO_BASE+(0x2000*((X)-1)))
|
||||||
|
|
||||||
|
#define GPIO1_SYSCONFIG __REG32((GPIOX_BASE(1)+0x10))
|
||||||
|
#define GPIO2_SYSCONFIG __REG32((GPIOX_BASE(2)+0x10))
|
||||||
|
#define GPIO3_SYSCONFIG __REG32((GPIOX_BASE(3)+0x10))
|
||||||
|
#define GPIO4_SYSCONFIG __REG32((GPIOX_BASE(4)+0x10))
|
||||||
|
|
||||||
|
/* GP TIMER 1 */
|
||||||
|
#define GPTIMER1_TISTAT GPT1_REG32(0x014)
|
||||||
|
#define GPTIMER1_TISR GPT1_REG32(0x018)
|
||||||
|
#define GPTIMER1_TIER GPT1_REG32(0x01C)
|
||||||
|
#define GPTIMER1_TWER GPT1_REG32(0x020)
|
||||||
|
#define GPTIMER1_TCLR GPT1_REG32(0x024)
|
||||||
|
#define GPTIMER1_TCRR GPT1_REG32(0x028)
|
||||||
|
#define GPTIMER1_TLDR GPT1_REG32(0x02C)
|
||||||
|
#define GPTIMER1_TTGR GPT1_REG32(0x030)
|
||||||
|
#define GPTIMER1_TWPS GPT1_REG32(0x034)
|
||||||
|
#define GPTIMER1_TMAR GPT1_REG32(0x038)
|
||||||
|
#define GPTIMER1_TCAR1 GPT1_REG32(0x03C)
|
||||||
|
#define GPTIMER1_TSICR GPT1_REG32(0x040)
|
||||||
|
#define GPTIMER1_TCAR2 GPT1_REG32(0x044)
|
||||||
|
|
||||||
|
/* rkw -- base fix up please... */
|
||||||
|
#define GPTIMER3_TISR __REG32(OMAP24XX_L4_IO_BASE+0x78018)
|
||||||
|
|
||||||
|
/* SDRC */
|
||||||
|
#define SDRC_DLLA_CTRL __REG32(OMAP24XX_SDRC_BASE+0x060)
|
||||||
|
#define SDRC_DLLA_STATUS __REG32(OMAP24XX_SDRC_BASE+0x064)
|
||||||
|
#define SDRC_DLLB_CTRL __REG32(OMAP24XX_SDRC_BASE+0x068)
|
||||||
|
#define SDRC_DLLB_STATUS __REG32(OMAP24XX_SDRC_BASE+0x06C)
|
||||||
|
#define SDRC_POWER __REG32(OMAP24XX_SDRC_BASE+0x070)
|
||||||
|
#define SDRC_MR_0 __REG32(OMAP24XX_SDRC_BASE+0x084)
|
||||||
|
|
||||||
|
/* GPIO 1 */
|
||||||
|
#define GPIO1_BASE GPIOX_BASE(1)
|
||||||
|
#define GPIO1_REG32(offset) __REG32(GPIO1_BASE + (offset))
|
||||||
|
#define GPIO1_IRQENABLE1 GPIO1_REG32(0x01C)
|
||||||
|
#define GPIO1_IRQSTATUS1 GPIO1_REG32(0x018)
|
||||||
|
#define GPIO1_IRQENABLE2 GPIO1_REG32(0x02C)
|
||||||
|
#define GPIO1_IRQSTATUS2 GPIO1_REG32(0x028)
|
||||||
|
#define GPIO1_WAKEUPENABLE GPIO1_REG32(0x020)
|
||||||
|
#define GPIO1_RISINGDETECT GPIO1_REG32(0x048)
|
||||||
|
#define GPIO1_DATAIN GPIO1_REG32(0x038)
|
||||||
|
#define GPIO1_OE GPIO1_REG32(0x034)
|
||||||
|
#define GPIO1_DATAOUT GPIO1_REG32(0x03C)
|
||||||
|
|
||||||
|
/* GPIO2 */
|
||||||
|
#define GPIO2_BASE GPIOX_BASE(2)
|
||||||
|
#define GPIO2_REG32(offset) __REG32(GPIO2_BASE + (offset))
|
||||||
|
#define GPIO2_IRQENABLE1 GPIO2_REG32(0x01C)
|
||||||
|
#define GPIO2_IRQSTATUS1 GPIO2_REG32(0x018)
|
||||||
|
#define GPIO2_IRQENABLE2 GPIO2_REG32(0x02C)
|
||||||
|
#define GPIO2_IRQSTATUS2 GPIO2_REG32(0x028)
|
||||||
|
#define GPIO2_WAKEUPENABLE GPIO2_REG32(0x020)
|
||||||
|
#define GPIO2_RISINGDETECT GPIO2_REG32(0x048)
|
||||||
|
#define GPIO2_DATAIN GPIO2_REG32(0x038)
|
||||||
|
#define GPIO2_OE GPIO2_REG32(0x034)
|
||||||
|
#define GPIO2_DATAOUT GPIO2_REG32(0x03C)
|
||||||
|
|
||||||
|
/* GPIO 3 */
|
||||||
|
#define GPIO3_BASE GPIOX_BASE(3)
|
||||||
|
#define GPIO3_REG32(offset) __REG32(GPIO3_BASE + (offset))
|
||||||
|
#define GPIO3_IRQENABLE1 GPIO3_REG32(0x01C)
|
||||||
|
#define GPIO3_IRQSTATUS1 GPIO3_REG32(0x018)
|
||||||
|
#define GPIO3_IRQENABLE2 GPIO3_REG32(0x02C)
|
||||||
|
#define GPIO3_IRQSTATUS2 GPIO3_REG32(0x028)
|
||||||
|
#define GPIO3_WAKEUPENABLE GPIO3_REG32(0x020)
|
||||||
|
#define GPIO3_RISINGDETECT GPIO3_REG32(0x048)
|
||||||
|
#define GPIO3_FALLINGDETECT GPIO3_REG32(0x04C)
|
||||||
|
#define GPIO3_DATAIN GPIO3_REG32(0x038)
|
||||||
|
#define GPIO3_OE GPIO3_REG32(0x034)
|
||||||
|
#define GPIO3_DATAOUT GPIO3_REG32(0x03C)
|
||||||
|
#define GPIO3_DEBOUNCENABLE GPIO3_REG32(0x050)
|
||||||
|
#define GPIO3_DEBOUNCINGTIME GPIO3_REG32(0x054)
|
||||||
|
|
||||||
|
/* GPIO 4 */
|
||||||
|
#define GPIO4_BASE GPIOX_BASE(4)
|
||||||
|
#define GPIO4_REG32(offset) __REG32(GPIO4_BASE + (offset))
|
||||||
|
#define GPIO4_IRQENABLE1 GPIO4_REG32(0x01C)
|
||||||
|
#define GPIO4_IRQSTATUS1 GPIO4_REG32(0x018)
|
||||||
|
#define GPIO4_IRQENABLE2 GPIO4_REG32(0x02C)
|
||||||
|
#define GPIO4_IRQSTATUS2 GPIO4_REG32(0x028)
|
||||||
|
#define GPIO4_WAKEUPENABLE GPIO4_REG32(0x020)
|
||||||
|
#define GPIO4_RISINGDETECT GPIO4_REG32(0x048)
|
||||||
|
#define GPIO4_FALLINGDETECT GPIO4_REG32(0x04C)
|
||||||
|
#define GPIO4_DATAIN GPIO4_REG32(0x038)
|
||||||
|
#define GPIO4_OE GPIO4_REG32(0x034)
|
||||||
|
#define GPIO4_DATAOUT GPIO4_REG32(0x03C)
|
||||||
|
#define GPIO4_DEBOUNCENABLE GPIO4_REG32(0x050)
|
||||||
|
#define GPIO4_DEBOUNCINGTIME GPIO4_REG32(0x054)
|
||||||
|
|
||||||
|
|
||||||
|
/* IO CONFIG */
|
||||||
|
#define CONTROL_BASE (OMAP24XX_CTRL_BASE)
|
||||||
|
#define CONTROL_REG32(offset) __REG32(CONTROL_BASE + (offset))
|
||||||
|
|
||||||
|
#define CONTROL_PADCONF_SPI1_NCS2 CONTROL_REG32(0x104)
|
||||||
|
#define CONTROL_PADCONF_SYS_XTALOUT CONTROL_REG32(0x134)
|
||||||
|
#define CONTROL_PADCONF_UART1_RX CONTROL_REG32(0x0C8)
|
||||||
|
#define CONTROL_PADCONF_MCBSP1_DX CONTROL_REG32(0x10C)
|
||||||
|
#define CONTROL_PADCONF_GPMC_NCS4 CONTROL_REG32(0x090)
|
||||||
|
#define CONTROL_PADCONF_DSS_D5 CONTROL_REG32(0x0B8)
|
||||||
|
#define CONTROL_PADCONF_DSS_D9 CONTROL_REG32(0x0BC)
|
||||||
|
#define CONTROL_PADCONF_DSS_D13 CONTROL_REG32(0x0C0)
|
||||||
|
#define CONTROL_PADCONF_DSS_VSYNC CONTROL_REG32(0x0CC)
|
||||||
|
|
||||||
|
/* CONTROL */
|
||||||
|
#define CONTROL_DEVCONF CONTROL_REG32(0x274)
|
||||||
|
|
||||||
|
/* INTERRUPT CONTROLLER */
|
||||||
|
#define INTC_BASE (OMAP24XX_L4_IO_BASE+0xfe000)
|
||||||
|
#define INTC_REG32(offset) __REG32(INTC_BASE + (offset))
|
||||||
|
|
||||||
|
#define INTC1_U_BASE INTC_REG32(0x000)
|
||||||
|
#define INTC_MIR0 INTC_REG32(0x084)
|
||||||
|
#define INTC_MIR_SET0 INTC_REG32(0x08C)
|
||||||
|
#define INTC_MIR_CLEAR0 INTC_REG32(0x088)
|
||||||
|
#define INTC_ISR_CLEAR0 INTC_REG32(0x094)
|
||||||
|
#define INTC_MIR1 INTC_REG32(0x0A4)
|
||||||
|
#define INTC_MIR_SET1 INTC_REG32(0x0AC)
|
||||||
|
#define INTC_MIR_CLEAR1 INTC_REG32(0x0A8)
|
||||||
|
#define INTC_ISR_CLEAR1 INTC_REG32(0x0B4)
|
||||||
|
#define INTC_MIR2 INTC_REG32(0x0C4)
|
||||||
|
#define INTC_MIR_SET2 INTC_REG32(0x0CC)
|
||||||
|
#define INTC_MIR_CLEAR2 INTC_REG32(0x0C8)
|
||||||
|
#define INTC_ISR_CLEAR2 INTC_REG32(0x0D4)
|
||||||
|
#define INTC_SIR_IRQ INTC_REG32(0x040)
|
||||||
|
#define INTC_CONTROL INTC_REG32(0x048)
|
||||||
|
#define INTC_ILR11 INTC_REG32(0x12C)
|
||||||
|
#define INTC_ILR32 INTC_REG32(0x180)
|
||||||
|
#define INTC_ILR37 INTC_REG32(0x194)
|
||||||
|
#define INTC_SYSCONFIG INTC_REG32(0x010)
|
||||||
|
|
||||||
|
/* RAM FIREWALL */
|
||||||
|
#define RAMFW_BASE (0x68005000)
|
||||||
|
#define RAMFW_REG32(offset) __REG32(RAMFW_BASE + (offset))
|
||||||
|
|
||||||
|
#define RAMFW_REQINFOPERM0 RAMFW_REG32(0x048)
|
||||||
|
#define RAMFW_READPERM0 RAMFW_REG32(0x050)
|
||||||
|
#define RAMFW_WRITEPERM0 RAMFW_REG32(0x058)
|
||||||
|
|
||||||
|
/* GPMC CS1 FPGA ON USER INTERFACE MODULE */
|
||||||
|
//#define DEBUG_BOARD_LED_REGISTER 0x04000014
|
||||||
|
|
||||||
|
/* GPMC CS0 */
|
||||||
|
#define GPMC_CONFIG1_0 GPMC_REG32(0x060)
|
||||||
|
#define GPMC_CONFIG2_0 GPMC_REG32(0x064)
|
||||||
|
#define GPMC_CONFIG3_0 GPMC_REG32(0x068)
|
||||||
|
#define GPMC_CONFIG4_0 GPMC_REG32(0x06C)
|
||||||
|
#define GPMC_CONFIG5_0 GPMC_REG32(0x070)
|
||||||
|
#define GPMC_CONFIG6_0 GPMC_REG32(0x074)
|
||||||
|
#define GPMC_CONFIG7_0 GPMC_REG32(0x078)
|
||||||
|
|
||||||
|
/* DSS */
|
||||||
|
#define DSS_CONTROL DISP_REG32(0x040)
|
||||||
|
#define DISPC_CONTROL DISP_REG32(0x440)
|
||||||
|
#define DISPC_SYSSTATUS DISP_REG32(0x414)
|
||||||
|
#define DISPC_IRQSTATUS DISP_REG32(0x418)
|
||||||
|
#define DISPC_IRQENABLE DISP_REG32(0x41C)
|
||||||
|
#define DISPC_CONFIG DISP_REG32(0x444)
|
||||||
|
#define DISPC_DEFAULT_COLOR0 DISP_REG32(0x44C)
|
||||||
|
#define DISPC_DEFAULT_COLOR1 DISP_REG32(0x450)
|
||||||
|
#define DISPC_TRANS_COLOR0 DISP_REG32(0x454)
|
||||||
|
#define DISPC_TRANS_COLOR1 DISP_REG32(0x458)
|
||||||
|
#define DISPC_LINE_NUMBER DISP_REG32(0x460)
|
||||||
|
#define DISPC_TIMING_H DISP_REG32(0x464)
|
||||||
|
#define DISPC_TIMING_V DISP_REG32(0x468)
|
||||||
|
#define DISPC_POL_FREQ DISP_REG32(0x46C)
|
||||||
|
#define DISPC_DIVISOR DISP_REG32(0x470)
|
||||||
|
#define DISPC_SIZE_DIG DISP_REG32(0x478)
|
||||||
|
#define DISPC_SIZE_LCD DISP_REG32(0x47C)
|
||||||
|
#define DISPC_GFX_BA0 DISP_REG32(0x480)
|
||||||
|
#define DISPC_GFX_BA1 DISP_REG32(0x484)
|
||||||
|
#define DISPC_GFX_POSITION DISP_REG32(0x488)
|
||||||
|
#define DISPC_GFX_SIZE DISP_REG32(0x48C)
|
||||||
|
#define DISPC_GFX_ATTRIBUTES DISP_REG32(0x4A0)
|
||||||
|
#define DISPC_GFX_FIFO_THRESHOLD DISP_REG32(0x4A4)
|
||||||
|
#define DISPC_GFX_ROW_INC DISP_REG32(0x4AC)
|
||||||
|
#define DISPC_GFX_PIXEL_INC DISP_REG32(0x4B0)
|
||||||
|
#define DISPC_GFX_WINDOW_SKIP DISP_REG32(0x4B4)
|
||||||
|
#define DISPC_GFX_TABLE_BA DISP_REG32(0x4B8)
|
||||||
|
#define DISPC_DATA_CYCLE1 DISP_REG32(0x5D4)
|
||||||
|
#define DISPC_DATA_CYCLE2 DISP_REG32(0x5D8)
|
||||||
|
#define DISPC_DATA_CYCLE3 DISP_REG32(0x5DC)
|
||||||
|
|
||||||
|
/* Wake up define for board */
|
||||||
|
#define GPIO97 (1 << 1)
|
||||||
|
#define GPIO88 (1 << 24)
|
||||||
|
|
||||||
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,180 @@
|
||||||
|
/*
|
||||||
|
* arch/arm/mach-omap/omap2/serial.c
|
||||||
|
*
|
||||||
|
* OMAP2 serial support.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2005 Nokia Corporation
|
||||||
|
* Author: Paul Mundt <paul.mundt@nokia.com>
|
||||||
|
*
|
||||||
|
* Based off of arch/arm/mach-omap/omap1/serial.c
|
||||||
|
*
|
||||||
|
* This file is subject to the terms and conditions of the GNU General Public
|
||||||
|
* License. See the file "COPYING" in the main directory of this archive
|
||||||
|
* for more details.
|
||||||
|
*/
|
||||||
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/init.h>
|
||||||
|
#include <linux/serial_8250.h>
|
||||||
|
#include <linux/serial_reg.h>
|
||||||
|
|
||||||
|
#include <asm/io.h>
|
||||||
|
#include <asm/hardware/clock.h>
|
||||||
|
|
||||||
|
#include <asm/arch/common.h>
|
||||||
|
#include <asm/arch/board.h>
|
||||||
|
|
||||||
|
static struct clk * uart1_ick = NULL;
|
||||||
|
static struct clk * uart1_fck = NULL;
|
||||||
|
static struct clk * uart2_ick = NULL;
|
||||||
|
static struct clk * uart2_fck = NULL;
|
||||||
|
static struct clk * uart3_ick = NULL;
|
||||||
|
static struct clk * uart3_fck = NULL;
|
||||||
|
|
||||||
|
static struct plat_serial8250_port serial_platform_data[] = {
|
||||||
|
{
|
||||||
|
.membase = (char *)IO_ADDRESS(OMAP_UART1_BASE),
|
||||||
|
.mapbase = (unsigned long)OMAP_UART1_BASE,
|
||||||
|
.irq = 72,
|
||||||
|
.flags = UPF_BOOT_AUTOCONF,
|
||||||
|
.iotype = UPIO_MEM,
|
||||||
|
.regshift = 2,
|
||||||
|
.uartclk = OMAP16XX_BASE_BAUD * 16,
|
||||||
|
}, {
|
||||||
|
.membase = (char *)IO_ADDRESS(OMAP_UART2_BASE),
|
||||||
|
.mapbase = (unsigned long)OMAP_UART2_BASE,
|
||||||
|
.irq = 73,
|
||||||
|
.flags = UPF_BOOT_AUTOCONF,
|
||||||
|
.iotype = UPIO_MEM,
|
||||||
|
.regshift = 2,
|
||||||
|
.uartclk = OMAP16XX_BASE_BAUD * 16,
|
||||||
|
}, {
|
||||||
|
.membase = (char *)IO_ADDRESS(OMAP_UART3_BASE),
|
||||||
|
.mapbase = (unsigned long)OMAP_UART3_BASE,
|
||||||
|
.irq = 74,
|
||||||
|
.flags = UPF_BOOT_AUTOCONF,
|
||||||
|
.iotype = UPIO_MEM,
|
||||||
|
.regshift = 2,
|
||||||
|
.uartclk = OMAP16XX_BASE_BAUD * 16,
|
||||||
|
}, {
|
||||||
|
.flags = 0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static inline unsigned int serial_read_reg(struct plat_serial8250_port *up,
|
||||||
|
int offset)
|
||||||
|
{
|
||||||
|
offset <<= up->regshift;
|
||||||
|
return (unsigned int)__raw_readb(up->membase + offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void serial_write_reg(struct plat_serial8250_port *p, int offset,
|
||||||
|
int value)
|
||||||
|
{
|
||||||
|
offset <<= p->regshift;
|
||||||
|
__raw_writeb(value, (unsigned long)(p->membase + offset));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Internal UARTs need to be initialized for the 8250 autoconfig to work
|
||||||
|
* properly. Note that the TX watermark initialization may not be needed
|
||||||
|
* once the 8250.c watermark handling code is merged.
|
||||||
|
*/
|
||||||
|
static inline void __init omap_serial_reset(struct plat_serial8250_port *p)
|
||||||
|
{
|
||||||
|
serial_write_reg(p, UART_OMAP_MDR1, 0x07);
|
||||||
|
serial_write_reg(p, UART_OMAP_SCR, 0x08);
|
||||||
|
serial_write_reg(p, UART_OMAP_MDR1, 0x00);
|
||||||
|
serial_write_reg(p, UART_OMAP_SYSC, 0x01);
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init omap_serial_init()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
const struct omap_uart_config *info;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure the serial ports are muxed on at this point.
|
||||||
|
* You have to mux them off in device drivers later on
|
||||||
|
* if not needed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
info = omap_get_config(OMAP_TAG_UART,
|
||||||
|
struct omap_uart_config);
|
||||||
|
|
||||||
|
if (info == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
|
||||||
|
struct plat_serial8250_port *p = serial_platform_data + i;
|
||||||
|
|
||||||
|
if (!(info->enabled_uarts & (1 << i))) {
|
||||||
|
p->membase = 0;
|
||||||
|
p->mapbase = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (i) {
|
||||||
|
case 0:
|
||||||
|
uart1_ick = clk_get(NULL, "uart1_ick");
|
||||||
|
if (IS_ERR(uart1_ick))
|
||||||
|
printk("Could not get uart1_ick\n");
|
||||||
|
else {
|
||||||
|
clk_use(uart1_ick);
|
||||||
|
}
|
||||||
|
|
||||||
|
uart1_fck = clk_get(NULL, "uart1_fck");
|
||||||
|
if (IS_ERR(uart1_fck))
|
||||||
|
printk("Could not get uart1_fck\n");
|
||||||
|
else {
|
||||||
|
clk_use(uart1_fck);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
uart2_ick = clk_get(NULL, "uart2_ick");
|
||||||
|
if (IS_ERR(uart2_ick))
|
||||||
|
printk("Could not get uart2_ick\n");
|
||||||
|
else {
|
||||||
|
clk_use(uart2_ick);
|
||||||
|
}
|
||||||
|
|
||||||
|
uart2_fck = clk_get(NULL, "uart2_fck");
|
||||||
|
if (IS_ERR(uart2_fck))
|
||||||
|
printk("Could not get uart2_fck\n");
|
||||||
|
else {
|
||||||
|
clk_use(uart2_fck);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
uart3_ick = clk_get(NULL, "uart3_ick");
|
||||||
|
if (IS_ERR(uart3_ick))
|
||||||
|
printk("Could not get uart3_ick\n");
|
||||||
|
else {
|
||||||
|
clk_use(uart3_ick);
|
||||||
|
}
|
||||||
|
|
||||||
|
uart3_fck = clk_get(NULL, "uart3_fck");
|
||||||
|
if (IS_ERR(uart3_fck))
|
||||||
|
printk("Could not get uart3_fck\n");
|
||||||
|
else {
|
||||||
|
clk_use(uart3_fck);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
omap_serial_reset(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct platform_device serial_device = {
|
||||||
|
.name = "serial8250",
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = serial_platform_data,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init omap_init(void)
|
||||||
|
{
|
||||||
|
return platform_device_register(&serial_device);
|
||||||
|
}
|
||||||
|
arch_initcall(omap_init);
|
|
@ -0,0 +1,333 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap1/sram.S
|
||||||
|
*
|
||||||
|
* Omap2 specific functions that need to be run in internal SRAM
|
||||||
|
*
|
||||||
|
* (C) Copyright 2004
|
||||||
|
* Texas Instruments, <www.ti.com>
|
||||||
|
* Richard Woodruff <r-woodruff2@ti.com>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||||
|
* MA 02111-1307 USA
|
||||||
|
*/
|
||||||
|
#include <linux/config.h>
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
#include <asm/arch/io.h>
|
||||||
|
#include <asm/hardware.h>
|
||||||
|
|
||||||
|
#include <asm/arch/prcm.h>
|
||||||
|
|
||||||
|
#define TIMER_32KSYNCT_CR_V IO_ADDRESS(OMAP24XX_32KSYNCT_BASE + 0x010)
|
||||||
|
|
||||||
|
#define CM_CLKSEL2_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x544)
|
||||||
|
#define PRCM_VOLTCTRL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x050)
|
||||||
|
#define PRCM_CLKCFG_CTRL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x080)
|
||||||
|
#define CM_CLKEN_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x500)
|
||||||
|
#define CM_IDLEST_CKGEN_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x520)
|
||||||
|
#define CM_CLKSEL1_PLL_V IO_ADDRESS(OMAP24XX_PRCM_BASE + 0x540)
|
||||||
|
|
||||||
|
#define SDRC_DLLA_CTRL_V IO_ADDRESS(OMAP24XX_SDRC_BASE + 0x060)
|
||||||
|
#define SDRC_RFR_CTRL_V IO_ADDRESS(OMAP24XX_SDRC_BASE + 0x0a4)
|
||||||
|
|
||||||
|
.text
|
||||||
|
|
||||||
|
ENTRY(sram_ddr_init)
|
||||||
|
stmfd sp!, {r0 - r12, lr} @ save registers on stack
|
||||||
|
|
||||||
|
mov r12, r2 @ capture CS1 vs CS0
|
||||||
|
mov r8, r3 @ capture force parameter
|
||||||
|
|
||||||
|
/* frequency shift down */
|
||||||
|
ldr r2, cm_clksel2_pll @ get address of dpllout reg
|
||||||
|
mov r3, #0x1 @ value for 1x operation
|
||||||
|
str r3, [r2] @ go to L1-freq operation
|
||||||
|
|
||||||
|
/* voltage shift down */
|
||||||
|
mov r9, #0x1 @ set up for L1 voltage call
|
||||||
|
bl voltage_shift @ go drop voltage
|
||||||
|
|
||||||
|
/* dll lock mode */
|
||||||
|
ldr r11, sdrc_dlla_ctrl @ addr of dlla ctrl
|
||||||
|
ldr r10, [r11] @ get current val
|
||||||
|
cmp r12, #0x1 @ cs1 base (2422 es2.05/1)
|
||||||
|
addeq r11, r11, #0x8 @ if cs1 base, move to DLLB
|
||||||
|
mvn r9, #0x4 @ mask to get clear bit2
|
||||||
|
and r10, r10, r9 @ clear bit2 for lock mode.
|
||||||
|
orr r10, r10, #0x8 @ make sure DLL on (es2 bit pos)
|
||||||
|
orr r10, r10, #0x2 @ 90 degree phase for all below 133Mhz
|
||||||
|
str r10, [r11] @ commit to DLLA_CTRL
|
||||||
|
bl i_dll_wait @ wait for dll to lock
|
||||||
|
|
||||||
|
/* get dll value */
|
||||||
|
add r11, r11, #0x4 @ get addr of status reg
|
||||||
|
ldr r10, [r11] @ get locked value
|
||||||
|
|
||||||
|
/* voltage shift up */
|
||||||
|
mov r9, #0x0 @ shift back to L0-voltage
|
||||||
|
bl voltage_shift @ go raise voltage
|
||||||
|
|
||||||
|
/* frequency shift up */
|
||||||
|
mov r3, #0x2 @ value for 2x operation
|
||||||
|
str r3, [r2] @ go to L0-freq operation
|
||||||
|
|
||||||
|
/* reset entry mode for dllctrl */
|
||||||
|
sub r11, r11, #0x4 @ move from status to ctrl
|
||||||
|
cmp r12, #0x1 @ normalize if cs1 based
|
||||||
|
subeq r11, r11, #0x8 @ possibly back to DLLA
|
||||||
|
cmp r8, #0x1 @ if forced unlock exit
|
||||||
|
orreq r1, r1, #0x4 @ make sure exit with unlocked value
|
||||||
|
str r1, [r11] @ restore DLLA_CTRL high value
|
||||||
|
add r11, r11, #0x8 @ move to DLLB_CTRL addr
|
||||||
|
str r1, [r11] @ set value DLLB_CTRL
|
||||||
|
bl i_dll_wait @ wait for possible lock
|
||||||
|
|
||||||
|
/* set up for return, DDR should be good */
|
||||||
|
str r10, [r0] @ write dll_status and return counter
|
||||||
|
ldmfd sp!, {r0 - r12, pc} @ restore regs and return
|
||||||
|
|
||||||
|
/* ensure the DLL has relocked */
|
||||||
|
i_dll_wait:
|
||||||
|
mov r4, #0x800 @ delay DLL relock, min 0x400 L3 clocks
|
||||||
|
i_dll_delay:
|
||||||
|
subs r4, r4, #0x1
|
||||||
|
bne i_dll_delay
|
||||||
|
mov pc, lr
|
||||||
|
|
||||||
|
/*
|
||||||
|
* shift up or down voltage, use R9 as input to tell level.
|
||||||
|
* wait for it to finish, use 32k sync counter, 1tick=31uS.
|
||||||
|
*/
|
||||||
|
voltage_shift:
|
||||||
|
ldr r4, prcm_voltctrl @ get addr of volt ctrl.
|
||||||
|
ldr r5, [r4] @ get value.
|
||||||
|
ldr r6, prcm_mask_val @ get value of mask
|
||||||
|
and r5, r5, r6 @ apply mask to clear bits
|
||||||
|
orr r5, r5, r9 @ bulld value for L0/L1-volt operation.
|
||||||
|
str r5, [r4] @ set up for change.
|
||||||
|
mov r3, #0x4000 @ get val for force
|
||||||
|
orr r5, r5, r3 @ build value for force
|
||||||
|
str r5, [r4] @ Force transition to L1
|
||||||
|
|
||||||
|
ldr r3, timer_32ksynct_cr @ get addr of counter
|
||||||
|
ldr r5, [r3] @ get value
|
||||||
|
add r5, r5, #0x3 @ give it at most 93uS
|
||||||
|
volt_delay:
|
||||||
|
ldr r7, [r3] @ get timer value
|
||||||
|
cmp r5, r7 @ time up?
|
||||||
|
bhi volt_delay @ not yet->branch
|
||||||
|
mov pc, lr @ back to caller.
|
||||||
|
|
||||||
|
/* relative load constants */
|
||||||
|
cm_clksel2_pll:
|
||||||
|
.word CM_CLKSEL2_PLL_V
|
||||||
|
sdrc_dlla_ctrl:
|
||||||
|
.word SDRC_DLLA_CTRL_V
|
||||||
|
prcm_voltctrl:
|
||||||
|
.word PRCM_VOLTCTRL_V
|
||||||
|
prcm_mask_val:
|
||||||
|
.word 0xFFFF3FFC
|
||||||
|
timer_32ksynct_cr:
|
||||||
|
.word TIMER_32KSYNCT_CR_V
|
||||||
|
ENTRY(sram_ddr_init_sz)
|
||||||
|
.word . - sram_ddr_init
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reprograms memory timings.
|
||||||
|
* r0 = [PRCM_FULL | PRCM_HALF] r1 = SDRC_DLLA_CTRL value r2 = [DDR | SDR]
|
||||||
|
* PRCM_FULL = 2, PRCM_HALF = 1, DDR = 1, SDR = 0
|
||||||
|
*/
|
||||||
|
ENTRY(sram_reprogram_sdrc)
|
||||||
|
stmfd sp!, {r0 - r10, lr} @ save registers on stack
|
||||||
|
mov r3, #0x0 @ clear for mrc call
|
||||||
|
mcr p15, 0, r3, c7, c10, 4 @ memory barrier, finish ARM SDR/DDR
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
ldr r6, ddr_sdrc_rfr_ctrl @ get addr of refresh reg
|
||||||
|
ldr r5, [r6] @ get value
|
||||||
|
mov r5, r5, lsr #8 @ isolate rfr field and drop burst
|
||||||
|
|
||||||
|
cmp r0, #0x1 @ going to half speed?
|
||||||
|
movne r9, #0x0 @ if up set flag up for pre up, hi volt
|
||||||
|
|
||||||
|
blne voltage_shift_c @ adjust voltage
|
||||||
|
|
||||||
|
cmp r0, #0x1 @ going to half speed (post branch link)
|
||||||
|
moveq r5, r5, lsr #1 @ divide by 2 if to half
|
||||||
|
movne r5, r5, lsl #1 @ mult by 2 if to full
|
||||||
|
mov r5, r5, lsl #8 @ put rfr field back into place
|
||||||
|
add r5, r5, #0x1 @ turn on burst of 1
|
||||||
|
ldr r4, ddr_cm_clksel2_pll @ get address of out reg
|
||||||
|
ldr r3, [r4] @ get curr value
|
||||||
|
orr r3, r3, #0x3
|
||||||
|
bic r3, r3, #0x3 @ clear lower bits
|
||||||
|
orr r3, r3, r0 @ new state value
|
||||||
|
str r3, [r4] @ set new state (pll/x, x=1 or 2)
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
|
||||||
|
moveq r9, #0x1 @ if speed down, post down, drop volt
|
||||||
|
bleq voltage_shift_c
|
||||||
|
|
||||||
|
mcr p15, 0, r3, c7, c10, 4 @ memory barrier
|
||||||
|
str r5, [r6] @ set new RFR_1 value
|
||||||
|
add r6, r6, #0x30 @ get RFR_2 addr
|
||||||
|
str r5, [r6] @ set RFR_2
|
||||||
|
nop
|
||||||
|
cmp r2, #0x1 @ (SDR or DDR) do we need to adjust DLL
|
||||||
|
bne freq_out @ leave if SDR, no DLL function
|
||||||
|
|
||||||
|
/* With DDR, we need to take care of the DLL for the frequency change */
|
||||||
|
ldr r2, ddr_sdrc_dlla_ctrl @ addr of dlla ctrl
|
||||||
|
str r1, [r2] @ write out new SDRC_DLLA_CTRL
|
||||||
|
add r2, r2, #0x8 @ addr to SDRC_DLLB_CTRL
|
||||||
|
str r1, [r2] @ commit to SDRC_DLLB_CTRL
|
||||||
|
mov r1, #0x2000 @ wait DLL relock, min 0x400 L3 clocks
|
||||||
|
dll_wait:
|
||||||
|
subs r1, r1, #0x1
|
||||||
|
bne dll_wait
|
||||||
|
freq_out:
|
||||||
|
ldmfd sp!, {r0 - r10, pc} @ restore regs and return
|
||||||
|
|
||||||
|
/*
|
||||||
|
* shift up or down voltage, use R9 as input to tell level.
|
||||||
|
* wait for it to finish, use 32k sync counter, 1tick=31uS.
|
||||||
|
*/
|
||||||
|
voltage_shift_c:
|
||||||
|
ldr r10, ddr_prcm_voltctrl @ get addr of volt ctrl
|
||||||
|
ldr r8, [r10] @ get value
|
||||||
|
ldr r7, ddr_prcm_mask_val @ get value of mask
|
||||||
|
and r8, r8, r7 @ apply mask to clear bits
|
||||||
|
orr r8, r8, r9 @ bulld value for L0/L1-volt operation.
|
||||||
|
str r8, [r10] @ set up for change.
|
||||||
|
mov r7, #0x4000 @ get val for force
|
||||||
|
orr r8, r8, r7 @ build value for force
|
||||||
|
str r8, [r10] @ Force transition to L1
|
||||||
|
|
||||||
|
ldr r10, ddr_timer_32ksynct @ get addr of counter
|
||||||
|
ldr r8, [r10] @ get value
|
||||||
|
add r8, r8, #0x2 @ give it at most 62uS (min 31+)
|
||||||
|
volt_delay_c:
|
||||||
|
ldr r7, [r10] @ get timer value
|
||||||
|
cmp r8, r7 @ time up?
|
||||||
|
bhi volt_delay_c @ not yet->branch
|
||||||
|
mov pc, lr @ back to caller
|
||||||
|
|
||||||
|
ddr_cm_clksel2_pll:
|
||||||
|
.word CM_CLKSEL2_PLL_V
|
||||||
|
ddr_sdrc_dlla_ctrl:
|
||||||
|
.word SDRC_DLLA_CTRL_V
|
||||||
|
ddr_sdrc_rfr_ctrl:
|
||||||
|
.word SDRC_RFR_CTRL_V
|
||||||
|
ddr_prcm_voltctrl:
|
||||||
|
.word PRCM_VOLTCTRL_V
|
||||||
|
ddr_prcm_mask_val:
|
||||||
|
.word 0xFFFF3FFC
|
||||||
|
ddr_timer_32ksynct:
|
||||||
|
.word TIMER_32KSYNCT_CR_V
|
||||||
|
|
||||||
|
ENTRY(sram_reprogram_sdrc_sz)
|
||||||
|
.word . - sram_reprogram_sdrc
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set dividers and pll. Also recalculate DLL value for DDR and unlock mode.
|
||||||
|
*/
|
||||||
|
ENTRY(sram_set_prcm)
|
||||||
|
stmfd sp!, {r0-r12, lr} @ regs to stack
|
||||||
|
adr r4, pbegin @ addr of preload start
|
||||||
|
adr r8, pend @ addr of preload end
|
||||||
|
mcrr p15, 1, r8, r4, c12 @ preload into icache
|
||||||
|
pbegin:
|
||||||
|
/* move into fast relock bypass */
|
||||||
|
ldr r8, pll_ctl @ get addr
|
||||||
|
ldr r5, [r8] @ get val
|
||||||
|
mvn r6, #0x3 @ clear mask
|
||||||
|
and r5, r5, r6 @ clear field
|
||||||
|
orr r7, r5, #0x2 @ fast relock val
|
||||||
|
str r7, [r8] @ go to fast relock
|
||||||
|
ldr r4, pll_stat @ addr of stat
|
||||||
|
block:
|
||||||
|
/* wait for bypass */
|
||||||
|
ldr r8, [r4] @ stat value
|
||||||
|
and r8, r8, #0x3 @ mask for stat
|
||||||
|
cmp r8, #0x1 @ there yet
|
||||||
|
bne block @ loop if not
|
||||||
|
|
||||||
|
/* set new dpll dividers _after_ in bypass */
|
||||||
|
ldr r4, pll_div @ get addr
|
||||||
|
str r0, [r4] @ set dpll ctrl val
|
||||||
|
|
||||||
|
ldr r4, set_config @ get addr
|
||||||
|
mov r8, #1 @ valid cfg msk
|
||||||
|
str r8, [r4] @ make dividers take
|
||||||
|
|
||||||
|
mov r4, #100 @ dead spin a bit
|
||||||
|
wait_a_bit:
|
||||||
|
subs r4, r4, #1 @ dec loop
|
||||||
|
bne wait_a_bit @ delay done?
|
||||||
|
|
||||||
|
/* check if staying in bypass */
|
||||||
|
cmp r2, #0x1 @ stay in bypass?
|
||||||
|
beq pend @ jump over dpll relock
|
||||||
|
|
||||||
|
/* relock DPLL with new vals */
|
||||||
|
ldr r5, pll_stat @ get addr
|
||||||
|
ldr r4, pll_ctl @ get addr
|
||||||
|
orr r8, r7, #0x3 @ val for lock dpll
|
||||||
|
str r8, [r4] @ set val
|
||||||
|
mov r0, #1000 @ dead spin a bit
|
||||||
|
wait_more:
|
||||||
|
subs r0, r0, #1 @ dec loop
|
||||||
|
bne wait_more @ delay done?
|
||||||
|
wait_lock:
|
||||||
|
ldr r8, [r5] @ get lock val
|
||||||
|
and r8, r8, #3 @ isolate field
|
||||||
|
cmp r8, #2 @ locked?
|
||||||
|
bne wait_lock @ wait if not
|
||||||
|
pend:
|
||||||
|
/* update memory timings & briefly lock dll */
|
||||||
|
ldr r4, sdrc_rfr @ get addr
|
||||||
|
str r1, [r4] @ update refresh timing
|
||||||
|
ldr r11, dlla_ctrl @ get addr of DLLA ctrl
|
||||||
|
ldr r10, [r11] @ get current val
|
||||||
|
mvn r9, #0x4 @ mask to get clear bit2
|
||||||
|
and r10, r10, r9 @ clear bit2 for lock mode
|
||||||
|
orr r10, r10, #0x8 @ make sure DLL on (es2 bit pos)
|
||||||
|
str r10, [r11] @ commit to DLLA_CTRL
|
||||||
|
add r11, r11, #0x8 @ move to dllb
|
||||||
|
str r10, [r11] @ hit DLLB also
|
||||||
|
|
||||||
|
mov r4, #0x800 @ relock time (min 0x400 L3 clocks)
|
||||||
|
wait_dll_lock:
|
||||||
|
subs r4, r4, #0x1
|
||||||
|
bne wait_dll_lock
|
||||||
|
nop
|
||||||
|
ldmfd sp!, {r0-r12, pc} @ restore regs and return
|
||||||
|
|
||||||
|
set_config:
|
||||||
|
.word PRCM_CLKCFG_CTRL_V
|
||||||
|
pll_ctl:
|
||||||
|
.word CM_CLKEN_PLL_V
|
||||||
|
pll_stat:
|
||||||
|
.word CM_IDLEST_CKGEN_V
|
||||||
|
pll_div:
|
||||||
|
.word CM_CLKSEL1_PLL_V
|
||||||
|
sdrc_rfr:
|
||||||
|
.word SDRC_RFR_CTRL_V
|
||||||
|
dlla_ctrl:
|
||||||
|
.word SDRC_DLLA_CTRL_V
|
||||||
|
|
||||||
|
ENTRY(sram_set_prcm_sz)
|
||||||
|
.word . - sram_set_prcm
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue