Merge ../linux-2.6/
This commit is contained in:
commit
bdf242eeb0
6
CREDITS
6
CREDITS
|
@ -1624,10 +1624,10 @@ E: ajoshi@shell.unixbox.com
|
||||||
D: fbdev hacking
|
D: fbdev hacking
|
||||||
|
|
||||||
N: Jesper Juhl
|
N: Jesper Juhl
|
||||||
E: juhl-lkml@dif.dk
|
E: jesper.juhl@gmail.com
|
||||||
D: Various small janitor fixes, cleanups etc.
|
D: Various fixes, cleanups and minor features.
|
||||||
S: Lemnosvej 1, 3.tv
|
S: Lemnosvej 1, 3.tv
|
||||||
S: 2300 Copenhagen S
|
S: 2300 Copenhagen S.
|
||||||
S: Denmark
|
S: Denmark
|
||||||
|
|
||||||
N: Jozsef Kadlecsik
|
N: Jozsef Kadlecsik
|
||||||
|
|
|
@ -65,6 +65,7 @@ o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version
|
||||||
o nfs-utils 1.0.5 # showmount --version
|
o nfs-utils 1.0.5 # showmount --version
|
||||||
o procps 3.2.0 # ps --version
|
o procps 3.2.0 # ps --version
|
||||||
o oprofile 0.9 # oprofiled --version
|
o oprofile 0.9 # oprofiled --version
|
||||||
|
o udev 058 # udevinfo -V
|
||||||
|
|
||||||
Kernel compilation
|
Kernel compilation
|
||||||
==================
|
==================
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
driver/acpi/hotkey.c implement:
|
||||||
|
1. /proc/acpi/hotkey/event_config
|
||||||
|
(event based hotkey or event config interface):
|
||||||
|
a. add a event based hotkey(event) :
|
||||||
|
echo "0:bus::action:method:num:num" > event_config
|
||||||
|
|
||||||
|
b. delete a event based hotkey(event):
|
||||||
|
echo "1:::::num:num" > event_config
|
||||||
|
|
||||||
|
c. modify a event based hotkey(event):
|
||||||
|
echo "2:bus::action:method:num:num" > event_config
|
||||||
|
|
||||||
|
2. /proc/acpi/hotkey/poll_config
|
||||||
|
(polling based hotkey or event config interface):
|
||||||
|
a.add a polling based hotkey(event) :
|
||||||
|
echo "0:bus:method:action:method:num" > poll_config
|
||||||
|
this adding command will create a proc file
|
||||||
|
/proc/acpi/hotkey/method, which is used to get
|
||||||
|
result of polling.
|
||||||
|
|
||||||
|
b.delete a polling based hotkey(event):
|
||||||
|
echo "1:::::num" > event_config
|
||||||
|
|
||||||
|
c.modify a polling based hotkey(event):
|
||||||
|
echo "2:bus:method:action:method:num" > poll_config
|
||||||
|
|
||||||
|
3./proc/acpi/hotkey/action
|
||||||
|
(interface to call aml method associated with a
|
||||||
|
specific hotkey(event))
|
||||||
|
echo "event_num:event_type:event_argument" >
|
||||||
|
/proc/acpi/hotkey/action.
|
||||||
|
The result of the execution of this aml method is
|
||||||
|
attached to /proc/acpi/hotkey/poll_method, which is dnyamically
|
||||||
|
created. Please use command "cat /proc/acpi/hotkey/polling_method"
|
||||||
|
to retrieve it.
|
|
@ -41,6 +41,7 @@ COPYING
|
||||||
CREDITS
|
CREDITS
|
||||||
CVS
|
CVS
|
||||||
ChangeSet
|
ChangeSet
|
||||||
|
Image
|
||||||
Kerntypes
|
Kerntypes
|
||||||
MODS.txt
|
MODS.txt
|
||||||
Module.symvers
|
Module.symvers
|
||||||
|
@ -103,6 +104,7 @@ logo_*.c
|
||||||
logo_*_clut224.c
|
logo_*_clut224.c
|
||||||
logo_*_mono.c
|
logo_*_mono.c
|
||||||
lxdialog
|
lxdialog
|
||||||
|
mach-types.h
|
||||||
make_times_h
|
make_times_h
|
||||||
map
|
map
|
||||||
maui_boot.h
|
maui_boot.h
|
||||||
|
|
|
@ -103,11 +103,11 @@ Who: Jody McIntyre <scjody@steamballoon.com>
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
What: register_serial/unregister_serial
|
What: register_serial/unregister_serial
|
||||||
When: December 2005
|
When: September 2005
|
||||||
Why: This interface does not allow serial ports to be registered against
|
Why: This interface does not allow serial ports to be registered against
|
||||||
a struct device, and as such does not allow correct power management
|
a struct device, and as such does not allow correct power management
|
||||||
of such ports. 8250-based ports should use serial8250_register_port
|
of such ports. 8250-based ports should use serial8250_register_port
|
||||||
and serial8250_unregister_port instead.
|
and serial8250_unregister_port, or platform devices instead.
|
||||||
Who: Russell King <rmk@arm.linux.org.uk>
|
Who: Russell King <rmk@arm.linux.org.uk>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
|
@ -0,0 +1,151 @@
|
||||||
|
inotify
|
||||||
|
a powerful yet simple file change notification system
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Document started 15 Mar 2005 by Robert Love <rml@novell.com>
|
||||||
|
|
||||||
|
|
||||||
|
(i) User Interface
|
||||||
|
|
||||||
|
Inotify is controlled by a set of three system calls and normal file I/O on a
|
||||||
|
returned file descriptor.
|
||||||
|
|
||||||
|
First step in using inotify is to initialise an inotify instance:
|
||||||
|
|
||||||
|
int fd = inotify_init ();
|
||||||
|
|
||||||
|
Each instance is associated with a unique, ordered queue.
|
||||||
|
|
||||||
|
Change events are managed by "watches". A watch is an (object,mask) pair where
|
||||||
|
the object is a file or directory and the mask is a bit mask of one or more
|
||||||
|
inotify events that the application wishes to receive. See <linux/inotify.h>
|
||||||
|
for valid events. A watch is referenced by a watch descriptor, or wd.
|
||||||
|
|
||||||
|
Watches are added via a path to the file.
|
||||||
|
|
||||||
|
Watches on a directory will return events on any files inside of the directory.
|
||||||
|
|
||||||
|
Adding a watch is simple:
|
||||||
|
|
||||||
|
int wd = inotify_add_watch (fd, path, mask);
|
||||||
|
|
||||||
|
Where "fd" is the return value from inotify_init(), path is the path to the
|
||||||
|
object to watch, and mask is the watch mask (see <linux/inotify.h>).
|
||||||
|
|
||||||
|
You can update an existing watch in the same manner, by passing in a new mask.
|
||||||
|
|
||||||
|
An existing watch is removed via
|
||||||
|
|
||||||
|
int ret = inotify_rm_watch (fd, wd);
|
||||||
|
|
||||||
|
Events are provided in the form of an inotify_event structure that is read(2)
|
||||||
|
from a given inotify instance. The filename is of dynamic length and follows
|
||||||
|
the struct. It is of size len. The filename is padded with null bytes to
|
||||||
|
ensure proper alignment. This padding is reflected in len.
|
||||||
|
|
||||||
|
You can slurp multiple events by passing a large buffer, for example
|
||||||
|
|
||||||
|
size_t len = read (fd, buf, BUF_LEN);
|
||||||
|
|
||||||
|
Where "buf" is a pointer to an array of "inotify_event" structures at least
|
||||||
|
BUF_LEN bytes in size. The above example will return as many events as are
|
||||||
|
available and fit in BUF_LEN.
|
||||||
|
|
||||||
|
Each inotify instance fd is also select()- and poll()-able.
|
||||||
|
|
||||||
|
You can find the size of the current event queue via the standard FIONREAD
|
||||||
|
ioctl on the fd returned by inotify_init().
|
||||||
|
|
||||||
|
All watches are destroyed and cleaned up on close.
|
||||||
|
|
||||||
|
|
||||||
|
(ii)
|
||||||
|
|
||||||
|
Prototypes:
|
||||||
|
|
||||||
|
int inotify_init (void);
|
||||||
|
int inotify_add_watch (int fd, const char *path, __u32 mask);
|
||||||
|
int inotify_rm_watch (int fd, __u32 mask);
|
||||||
|
|
||||||
|
|
||||||
|
(iii) Internal Kernel Implementation
|
||||||
|
|
||||||
|
Each inotify instance is associated with an inotify_device structure.
|
||||||
|
|
||||||
|
Each watch is associated with an inotify_watch structure. Watches are chained
|
||||||
|
off of each associated device and each associated inode.
|
||||||
|
|
||||||
|
See fs/inotify.c for the locking and lifetime rules.
|
||||||
|
|
||||||
|
|
||||||
|
(iv) Rationale
|
||||||
|
|
||||||
|
Q: What is the design decision behind not tying the watch to the open fd of
|
||||||
|
the watched object?
|
||||||
|
|
||||||
|
A: Watches are associated with an open inotify device, not an open file.
|
||||||
|
This solves the primary problem with dnotify: keeping the file open pins
|
||||||
|
the file and thus, worse, pins the mount. Dnotify is therefore infeasible
|
||||||
|
for use on a desktop system with removable media as the media cannot be
|
||||||
|
unmounted. Watching a file should not require that it be open.
|
||||||
|
|
||||||
|
Q: What is the design decision behind using an-fd-per-instance as opposed to
|
||||||
|
an fd-per-watch?
|
||||||
|
|
||||||
|
A: An fd-per-watch quickly consumes more file descriptors than are allowed,
|
||||||
|
more fd's than are feasible to manage, and more fd's than are optimally
|
||||||
|
select()-able. Yes, root can bump the per-process fd limit and yes, users
|
||||||
|
can use epoll, but requiring both is a silly and extraneous requirement.
|
||||||
|
A watch consumes less memory than an open file, separating the number
|
||||||
|
spaces is thus sensible. The current design is what user-space developers
|
||||||
|
want: Users initialize inotify, once, and add n watches, requiring but one
|
||||||
|
fd and no twiddling with fd limits. Initializing an inotify instance two
|
||||||
|
thousand times is silly. If we can implement user-space's preferences
|
||||||
|
cleanly--and we can, the idr layer makes stuff like this trivial--then we
|
||||||
|
should.
|
||||||
|
|
||||||
|
There are other good arguments. With a single fd, there is a single
|
||||||
|
item to block on, which is mapped to a single queue of events. The single
|
||||||
|
fd returns all watch events and also any potential out-of-band data. If
|
||||||
|
every fd was a separate watch,
|
||||||
|
|
||||||
|
- There would be no way to get event ordering. Events on file foo and
|
||||||
|
file bar would pop poll() on both fd's, but there would be no way to tell
|
||||||
|
which happened first. A single queue trivially gives you ordering. Such
|
||||||
|
ordering is crucial to existing applications such as Beagle. Imagine
|
||||||
|
"mv a b ; mv b a" events without ordering.
|
||||||
|
|
||||||
|
- We'd have to maintain n fd's and n internal queues with state,
|
||||||
|
versus just one. It is a lot messier in the kernel. A single, linear
|
||||||
|
queue is the data structure that makes sense.
|
||||||
|
|
||||||
|
- User-space developers prefer the current API. The Beagle guys, for
|
||||||
|
example, love it. Trust me, I asked. It is not a surprise: Who'd want
|
||||||
|
to manage and block on 1000 fd's via select?
|
||||||
|
|
||||||
|
- No way to get out of band data.
|
||||||
|
|
||||||
|
- 1024 is still too low. ;-)
|
||||||
|
|
||||||
|
When you talk about designing a file change notification system that
|
||||||
|
scales to 1000s of directories, juggling 1000s of fd's just does not seem
|
||||||
|
the right interface. It is too heavy.
|
||||||
|
|
||||||
|
Additionally, it _is_ possible to more than one instance and
|
||||||
|
juggle more than one queue and thus more than one associated fd. There
|
||||||
|
need not be a one-fd-per-process mapping; it is one-fd-per-queue and a
|
||||||
|
process can easily want more than one queue.
|
||||||
|
|
||||||
|
Q: Why the system call approach?
|
||||||
|
|
||||||
|
A: The poor user-space interface is the second biggest problem with dnotify.
|
||||||
|
Signals are a terrible, terrible interface for file notification. Or for
|
||||||
|
anything, for that matter. The ideal solution, from all perspectives, is a
|
||||||
|
file descriptor-based one that allows basic file I/O and poll/select.
|
||||||
|
Obtaining the fd and managing the watches could have been done either via a
|
||||||
|
device file or a family of new system calls. We decided to implement a
|
||||||
|
family of system calls because that is the preffered approach for new kernel
|
||||||
|
interfaces. The only real difference was whether we wanted to use open(2)
|
||||||
|
and ioctl(2) or a couple of new system calls. System calls beat ioctls.
|
||||||
|
|
|
@ -21,7 +21,7 @@ Overview
|
||||||
========
|
========
|
||||||
|
|
||||||
Linux-NTFS comes with a number of user-space programs known as ntfsprogs.
|
Linux-NTFS comes with a number of user-space programs known as ntfsprogs.
|
||||||
These include mkntfs, a full-featured ntfs file system format utility,
|
These include mkntfs, a full-featured ntfs filesystem format utility,
|
||||||
ntfsundelete used for recovering files that were unintentionally deleted
|
ntfsundelete used for recovering files that were unintentionally deleted
|
||||||
from an NTFS volume and ntfsresize which is used to resize an NTFS partition.
|
from an NTFS volume and ntfsresize which is used to resize an NTFS partition.
|
||||||
See the web site for more information.
|
See the web site for more information.
|
||||||
|
@ -149,7 +149,14 @@ case_sensitive=<BOOL> If case_sensitive is specified, treat all file names as
|
||||||
name, if it exists. If case_sensitive, you will need
|
name, if it exists. If case_sensitive, you will need
|
||||||
to provide the correct case of the short file name.
|
to provide the correct case of the short file name.
|
||||||
|
|
||||||
errors=opt What to do when critical file system errors are found.
|
disable_sparse=<BOOL> If disable_sparse is specified, creation of sparse
|
||||||
|
regions, i.e. holes, inside files is disabled for the
|
||||||
|
volume (for the duration of this mount only). By
|
||||||
|
default, creation of sparse regions is enabled, which
|
||||||
|
is consistent with the behaviour of traditional Unix
|
||||||
|
filesystems.
|
||||||
|
|
||||||
|
errors=opt What to do when critical filesystem errors are found.
|
||||||
Following values can be used for "opt":
|
Following values can be used for "opt":
|
||||||
continue: DEFAULT, try to clean-up as much as
|
continue: DEFAULT, try to clean-up as much as
|
||||||
possible, e.g. marking a corrupt inode as
|
possible, e.g. marking a corrupt inode as
|
||||||
|
@ -432,6 +439,24 @@ ChangeLog
|
||||||
|
|
||||||
Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
|
Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
|
||||||
|
|
||||||
|
2.1.23:
|
||||||
|
- Stamp the user space journal, aka transaction log, aka $UsnJrnl, if
|
||||||
|
it is present and active thus telling Windows and applications using
|
||||||
|
the transaction log that changes can have happened on the volume
|
||||||
|
which are not recorded in $UsnJrnl.
|
||||||
|
- Detect the case when Windows has been hibernated (suspended to disk)
|
||||||
|
and if this is the case do not allow (re)mounting read-write to
|
||||||
|
prevent data corruption when you boot back into the suspended
|
||||||
|
Windows session.
|
||||||
|
- Implement extension of resident files using the normal file write
|
||||||
|
code paths, i.e. most very small files can be extended to be a little
|
||||||
|
bit bigger but not by much.
|
||||||
|
- Add new mount option "disable_sparse". (See list of mount options
|
||||||
|
above for details.)
|
||||||
|
- Improve handling of ntfs volumes with errors and strange boot sectors
|
||||||
|
in particular.
|
||||||
|
- Fix various bugs including a nasty deadlock that appeared in recent
|
||||||
|
kernels (around 2.6.11-2.6.12 timeframe).
|
||||||
2.1.22:
|
2.1.22:
|
||||||
- Improve handling of ntfs volumes with errors.
|
- Improve handling of ntfs volumes with errors.
|
||||||
- Fix various bugs and race conditions.
|
- Fix various bugs and race conditions.
|
||||||
|
|
|
@ -2,10 +2,10 @@ Kernel driver max6875
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
Supported chips:
|
Supported chips:
|
||||||
* Maxim max6874, max6875
|
* Maxim MAX6874, MAX6875
|
||||||
Prefixes: 'max6875'
|
Prefix: 'max6875'
|
||||||
Addresses scanned: 0x50, 0x52
|
Addresses scanned: 0x50, 0x52
|
||||||
Datasheets:
|
Datasheet:
|
||||||
http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf
|
http://pdfserv.maxim-ic.com/en/ds/MAX6874-MAX6875.pdf
|
||||||
|
|
||||||
Author: Ben Gardner <bgardner@wabtec.com>
|
Author: Ben Gardner <bgardner@wabtec.com>
|
||||||
|
@ -23,14 +23,26 @@ Module Parameters
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
The MAXIM max6875 is a EEPROM-programmable power-supply sequencer/supervisor.
|
The Maxim MAX6875 is an EEPROM-programmable power-supply sequencer/supervisor.
|
||||||
It provides timed outputs that can be used as a watchdog, if properly wired.
|
It provides timed outputs that can be used as a watchdog, if properly wired.
|
||||||
It also provides 512 bytes of user EEPROM.
|
It also provides 512 bytes of user EEPROM.
|
||||||
|
|
||||||
At reset, the max6875 reads the configuration eeprom into its configuration
|
At reset, the MAX6875 reads the configuration EEPROM into its configuration
|
||||||
registers. The chip then begins to operate according to the values in the
|
registers. The chip then begins to operate according to the values in the
|
||||||
registers.
|
registers.
|
||||||
|
|
||||||
|
The Maxim MAX6874 is a similar, mostly compatible device, with more intputs
|
||||||
|
and outputs:
|
||||||
|
|
||||||
|
vin gpi vout
|
||||||
|
MAX6874 6 4 8
|
||||||
|
MAX6875 4 3 5
|
||||||
|
|
||||||
|
MAX6874 chips can have four different addresses (as opposed to only two for
|
||||||
|
the MAX6875). The additional addresses (0x54 and 0x56) are not probed by
|
||||||
|
this driver by default, but the probe module parameter can be used if
|
||||||
|
needed.
|
||||||
|
|
||||||
See the datasheet for details on how to program the EEPROM.
|
See the datasheet for details on how to program the EEPROM.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,12 @@ C example
|
||||||
=========
|
=========
|
||||||
|
|
||||||
So let's say you want to access an i2c adapter from a C program. The
|
So let's say you want to access an i2c adapter from a C program. The
|
||||||
first thing to do is `#include <linux/i2c.h>" and "#include <linux/i2c-dev.h>.
|
first thing to do is "#include <linux/i2c-dev.h>". Please note that
|
||||||
Yes, I know, you should never include kernel header files, but until glibc
|
there are two files named "i2c-dev.h" out there, one is distributed
|
||||||
knows about i2c, there is not much choice.
|
with the Linux kernel and is meant to be included from kernel
|
||||||
|
driver code, the other one is distributed with lm_sensors and is
|
||||||
|
meant to be included from user-space programs. You obviously want
|
||||||
|
the second one here.
|
||||||
|
|
||||||
Now, you have to decide which adapter you want to access. You should
|
Now, you have to decide which adapter you want to access. You should
|
||||||
inspect /sys/class/i2c-dev/ to decide this. Adapter numbers are assigned
|
inspect /sys/class/i2c-dev/ to decide this. Adapter numbers are assigned
|
||||||
|
@ -78,7 +81,7 @@ Full interface description
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
The following IOCTLs are defined and fully supported
|
The following IOCTLs are defined and fully supported
|
||||||
(see also i2c-dev.h and i2c.h):
|
(see also i2c-dev.h):
|
||||||
|
|
||||||
ioctl(file,I2C_SLAVE,long addr)
|
ioctl(file,I2C_SLAVE,long addr)
|
||||||
Change slave address. The address is passed in the 7 lower bits of the
|
Change slave address. The address is passed in the 7 lower bits of the
|
||||||
|
@ -97,10 +100,10 @@ ioctl(file,I2C_PEC,long select)
|
||||||
ioctl(file,I2C_FUNCS,unsigned long *funcs)
|
ioctl(file,I2C_FUNCS,unsigned long *funcs)
|
||||||
Gets the adapter functionality and puts it in *funcs.
|
Gets the adapter functionality and puts it in *funcs.
|
||||||
|
|
||||||
ioctl(file,I2C_RDWR,struct i2c_ioctl_rdwr_data *msgset)
|
ioctl(file,I2C_RDWR,struct i2c_rdwr_ioctl_data *msgset)
|
||||||
|
|
||||||
Do combined read/write transaction without stop in between.
|
Do combined read/write transaction without stop in between.
|
||||||
The argument is a pointer to a struct i2c_ioctl_rdwr_data {
|
The argument is a pointer to a struct i2c_rdwr_ioctl_data {
|
||||||
|
|
||||||
struct i2c_msg *msgs; /* ptr to array of simple messages */
|
struct i2c_msg *msgs; /* ptr to array of simple messages */
|
||||||
int nmsgs; /* number of messages to exchange */
|
int nmsgs; /* number of messages to exchange */
|
||||||
|
|
|
@ -27,7 +27,6 @@ address.
|
||||||
static struct i2c_driver foo_driver = {
|
static struct i2c_driver foo_driver = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.name = "Foo version 2.3 driver",
|
.name = "Foo version 2.3 driver",
|
||||||
.id = I2C_DRIVERID_FOO, /* from i2c-id.h, optional */
|
|
||||||
.flags = I2C_DF_NOTIFY,
|
.flags = I2C_DF_NOTIFY,
|
||||||
.attach_adapter = &foo_attach_adapter,
|
.attach_adapter = &foo_attach_adapter,
|
||||||
.detach_client = &foo_detach_client,
|
.detach_client = &foo_detach_client,
|
||||||
|
@ -37,12 +36,6 @@ static struct i2c_driver foo_driver = {
|
||||||
The name can be chosen freely, and may be upto 40 characters long. Please
|
The name can be chosen freely, and may be upto 40 characters long. Please
|
||||||
use something descriptive here.
|
use something descriptive here.
|
||||||
|
|
||||||
If used, the id should be a unique ID. The range 0xf000 to 0xffff is
|
|
||||||
reserved for local use, and you can use one of those until you start
|
|
||||||
distributing the driver, at which time you should contact the i2c authors
|
|
||||||
to get your own ID(s). Note that most of the time you don't need an ID
|
|
||||||
at all so you can just omit it.
|
|
||||||
|
|
||||||
Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This
|
Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This
|
||||||
means that your driver will be notified when new adapters are found.
|
means that your driver will be notified when new adapters are found.
|
||||||
This is almost always what you want.
|
This is almost always what you want.
|
||||||
|
|
|
@ -0,0 +1,114 @@
|
||||||
|
INFINIBAND MIDLAYER LOCKING
|
||||||
|
|
||||||
|
This guide is an attempt to make explicit the locking assumptions
|
||||||
|
made by the InfiniBand midlayer. It describes the requirements on
|
||||||
|
both low-level drivers that sit below the midlayer and upper level
|
||||||
|
protocols that use the midlayer.
|
||||||
|
|
||||||
|
Sleeping and interrupt context
|
||||||
|
|
||||||
|
With the following exceptions, a low-level driver implementation of
|
||||||
|
all of the methods in struct ib_device may sleep. The exceptions
|
||||||
|
are any methods from the list:
|
||||||
|
|
||||||
|
create_ah
|
||||||
|
modify_ah
|
||||||
|
query_ah
|
||||||
|
destroy_ah
|
||||||
|
bind_mw
|
||||||
|
post_send
|
||||||
|
post_recv
|
||||||
|
poll_cq
|
||||||
|
req_notify_cq
|
||||||
|
map_phys_fmr
|
||||||
|
|
||||||
|
which may not sleep and must be callable from any context.
|
||||||
|
|
||||||
|
The corresponding functions exported to upper level protocol
|
||||||
|
consumers:
|
||||||
|
|
||||||
|
ib_create_ah
|
||||||
|
ib_modify_ah
|
||||||
|
ib_query_ah
|
||||||
|
ib_destroy_ah
|
||||||
|
ib_bind_mw
|
||||||
|
ib_post_send
|
||||||
|
ib_post_recv
|
||||||
|
ib_req_notify_cq
|
||||||
|
ib_map_phys_fmr
|
||||||
|
|
||||||
|
are therefore safe to call from any context.
|
||||||
|
|
||||||
|
In addition, the function
|
||||||
|
|
||||||
|
ib_dispatch_event
|
||||||
|
|
||||||
|
used by low-level drivers to dispatch asynchronous events through
|
||||||
|
the midlayer is also safe to call from any context.
|
||||||
|
|
||||||
|
Reentrancy
|
||||||
|
|
||||||
|
All of the methods in struct ib_device exported by a low-level
|
||||||
|
driver must be fully reentrant. The low-level driver is required to
|
||||||
|
perform all synchronization necessary to maintain consistency, even
|
||||||
|
if multiple function calls using the same object are run
|
||||||
|
simultaneously.
|
||||||
|
|
||||||
|
The IB midlayer does not perform any serialization of function calls.
|
||||||
|
|
||||||
|
Because low-level drivers are reentrant, upper level protocol
|
||||||
|
consumers are not required to perform any serialization. However,
|
||||||
|
some serialization may be required to get sensible results. For
|
||||||
|
example, a consumer may safely call ib_poll_cq() on multiple CPUs
|
||||||
|
simultaneously. However, the ordering of the work completion
|
||||||
|
information between different calls of ib_poll_cq() is not defined.
|
||||||
|
|
||||||
|
Callbacks
|
||||||
|
|
||||||
|
A low-level driver must not perform a callback directly from the
|
||||||
|
same callchain as an ib_device method call. For example, it is not
|
||||||
|
allowed for a low-level driver to call a consumer's completion event
|
||||||
|
handler directly from its post_send method. Instead, the low-level
|
||||||
|
driver should defer this callback by, for example, scheduling a
|
||||||
|
tasklet to perform the callback.
|
||||||
|
|
||||||
|
The low-level driver is responsible for ensuring that multiple
|
||||||
|
completion event handlers for the same CQ are not called
|
||||||
|
simultaneously. The driver must guarantee that only one CQ event
|
||||||
|
handler for a given CQ is running at a time. In other words, the
|
||||||
|
following situation is not allowed:
|
||||||
|
|
||||||
|
CPU1 CPU2
|
||||||
|
|
||||||
|
low-level driver ->
|
||||||
|
consumer CQ event callback:
|
||||||
|
/* ... */
|
||||||
|
ib_req_notify_cq(cq, ...);
|
||||||
|
low-level driver ->
|
||||||
|
/* ... */ consumer CQ event callback:
|
||||||
|
/* ... */
|
||||||
|
return from CQ event handler
|
||||||
|
|
||||||
|
The context in which completion event and asynchronous event
|
||||||
|
callbacks run is not defined. Depending on the low-level driver, it
|
||||||
|
may be process context, softirq context, or interrupt context.
|
||||||
|
Upper level protocol consumers may not sleep in a callback.
|
||||||
|
|
||||||
|
Hot-plug
|
||||||
|
|
||||||
|
A low-level driver announces that a device is ready for use by
|
||||||
|
consumers when it calls ib_register_device(), all initialization
|
||||||
|
must be complete before this call. The device must remain usable
|
||||||
|
until the driver's call to ib_unregister_device() has returned.
|
||||||
|
|
||||||
|
A low-level driver must call ib_register_device() and
|
||||||
|
ib_unregister_device() from process context. It must not hold any
|
||||||
|
semaphores that could cause deadlock if a consumer calls back into
|
||||||
|
the driver across these calls.
|
||||||
|
|
||||||
|
An upper level protocol consumer may begin using an IB device as
|
||||||
|
soon as the add method of its struct ib_client is called for that
|
||||||
|
device. A consumer must finish all cleanup and free all resources
|
||||||
|
relating to a device before returning from the remove method.
|
||||||
|
|
||||||
|
A consumer is permitted to sleep in its add and remove methods.
|
|
@ -28,13 +28,37 @@ Creating MAD agents
|
||||||
|
|
||||||
Receiving MADs
|
Receiving MADs
|
||||||
|
|
||||||
MADs are received using read(). The buffer passed to read() must be
|
MADs are received using read(). The receive side now supports
|
||||||
large enough to hold at least one struct ib_user_mad. For example:
|
RMPP. The buffer passed to read() must be at least one
|
||||||
|
struct ib_user_mad + 256 bytes. For example:
|
||||||
|
|
||||||
struct ib_user_mad mad;
|
If the buffer passed is not large enough to hold the received
|
||||||
ret = read(fd, &mad, sizeof mad);
|
MAD (RMPP), the errno is set to ENOSPC and the length of the
|
||||||
if (ret != sizeof mad)
|
buffer needed is set in mad.length.
|
||||||
|
|
||||||
|
Example for normal MAD (non RMPP) reads:
|
||||||
|
struct ib_user_mad *mad;
|
||||||
|
mad = malloc(sizeof *mad + 256);
|
||||||
|
ret = read(fd, mad, sizeof *mad + 256);
|
||||||
|
if (ret != sizeof mad + 256) {
|
||||||
perror("read");
|
perror("read");
|
||||||
|
free(mad);
|
||||||
|
}
|
||||||
|
|
||||||
|
Example for RMPP reads:
|
||||||
|
struct ib_user_mad *mad;
|
||||||
|
mad = malloc(sizeof *mad + 256);
|
||||||
|
ret = read(fd, mad, sizeof *mad + 256);
|
||||||
|
if (ret == -ENOSPC)) {
|
||||||
|
length = mad.length;
|
||||||
|
free(mad);
|
||||||
|
mad = malloc(sizeof *mad + length);
|
||||||
|
ret = read(fd, mad, sizeof *mad + length);
|
||||||
|
}
|
||||||
|
if (ret < 0) {
|
||||||
|
perror("read");
|
||||||
|
free(mad);
|
||||||
|
}
|
||||||
|
|
||||||
In addition to the actual MAD contents, the other struct ib_user_mad
|
In addition to the actual MAD contents, the other struct ib_user_mad
|
||||||
fields will be filled in with information on the received MAD. For
|
fields will be filled in with information on the received MAD. For
|
||||||
|
@ -50,18 +74,21 @@ Sending MADs
|
||||||
|
|
||||||
MADs are sent using write(). The agent ID for sending should be
|
MADs are sent using write(). The agent ID for sending should be
|
||||||
filled into the id field of the MAD, the destination LID should be
|
filled into the id field of the MAD, the destination LID should be
|
||||||
filled into the lid field, and so on. For example:
|
filled into the lid field, and so on. The send side does support
|
||||||
|
RMPP so arbitrary length MAD can be sent. For example:
|
||||||
|
|
||||||
struct ib_user_mad mad;
|
struct ib_user_mad *mad;
|
||||||
|
|
||||||
/* fill in mad.data */
|
mad = malloc(sizeof *mad + mad_length);
|
||||||
|
|
||||||
mad.id = my_agent; /* req.id from agent registration */
|
/* fill in mad->data */
|
||||||
mad.lid = my_dest; /* in network byte order... */
|
|
||||||
|
mad->hdr.id = my_agent; /* req.id from agent registration */
|
||||||
|
mad->hdr.lid = my_dest; /* in network byte order... */
|
||||||
/* etc. */
|
/* etc. */
|
||||||
|
|
||||||
ret = write(fd, &mad, sizeof mad);
|
ret = write(fd, &mad, sizeof *mad + mad_length);
|
||||||
if (ret != sizeof mad)
|
if (ret != sizeof *mad + mad_length)
|
||||||
perror("write");
|
perror("write");
|
||||||
|
|
||||||
Setting IsSM Capability Bit
|
Setting IsSM Capability Bit
|
||||||
|
|
|
@ -37,7 +37,7 @@ restrictions referred to are that the relevant option is valid if:
|
||||||
IA-32 IA-32 aka i386 architecture is enabled.
|
IA-32 IA-32 aka i386 architecture is enabled.
|
||||||
IA-64 IA-64 architecture is enabled.
|
IA-64 IA-64 architecture is enabled.
|
||||||
IOSCHED More than one I/O scheduler is enabled.
|
IOSCHED More than one I/O scheduler is enabled.
|
||||||
IP_PNP IP DCHP, BOOTP, or RARP is enabled.
|
IP_PNP IP DHCP, BOOTP, or RARP is enabled.
|
||||||
ISAPNP ISA PnP code is enabled.
|
ISAPNP ISA PnP code is enabled.
|
||||||
ISDN Appropriate ISDN support is enabled.
|
ISDN Appropriate ISDN support is enabled.
|
||||||
JOY Appropriate joystick support is enabled.
|
JOY Appropriate joystick support is enabled.
|
||||||
|
@ -758,6 +758,9 @@ running once the system is up.
|
||||||
maxcpus= [SMP] Maximum number of processors that an SMP kernel
|
maxcpus= [SMP] Maximum number of processors that an SMP kernel
|
||||||
should make use of
|
should make use of
|
||||||
|
|
||||||
|
max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
|
||||||
|
equal to this physical address is ignored.
|
||||||
|
|
||||||
max_luns= [SCSI] Maximum number of LUNs to probe
|
max_luns= [SCSI] Maximum number of LUNs to probe
|
||||||
Should be between 1 and 2^32-1.
|
Should be between 1 and 2^32-1.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
This file details changes in 2.6 which affect PCMCIA card driver authors:
|
This file details changes in 2.6 which affect PCMCIA card driver authors:
|
||||||
|
|
||||||
* in-kernel device<->driver matching
|
* event handler initialization in struct pcmcia_driver (as of 2.6.13)
|
||||||
|
The event handler is notified of all events, and must be initialized
|
||||||
|
as the event() callback in the driver's struct pcmcia_driver.
|
||||||
|
|
||||||
|
* pcmcia/version.h should not be used (as of 2.6.13)
|
||||||
|
This file will be removed eventually.
|
||||||
|
|
||||||
|
* in-kernel device<->driver matching (as of 2.6.13)
|
||||||
PCMCIA devices and their correct drivers can now be matched in
|
PCMCIA devices and their correct drivers can now be matched in
|
||||||
kernelspace. See 'devicetable.txt' for details.
|
kernelspace. See 'devicetable.txt' for details.
|
||||||
|
|
||||||
|
@ -49,3 +56,12 @@ This file details changes in 2.6 which affect PCMCIA card driver authors:
|
||||||
memory regions in-use. The name argument should be a pointer to
|
memory regions in-use. The name argument should be a pointer to
|
||||||
your driver name. Eg, for pcnet_cs, name should point to the
|
your driver name. Eg, for pcnet_cs, name should point to the
|
||||||
string "pcnet_cs".
|
string "pcnet_cs".
|
||||||
|
|
||||||
|
* CardServices is gone
|
||||||
|
CardServices() in 2.4 is just a big switch statement to call various
|
||||||
|
services. In 2.6, all of those entry points are exported and called
|
||||||
|
directly (except for pcmcia_report_error(), just use cs_error() instead).
|
||||||
|
|
||||||
|
* struct pcmcia_driver
|
||||||
|
You need to use struct pcmcia_driver and pcmcia_{un,}register_driver
|
||||||
|
instead of {un,}register_pccard_driver
|
||||||
|
|
|
@ -388,7 +388,6 @@ Summary:
|
||||||
scsi_remove_device - detach and remove a SCSI device
|
scsi_remove_device - detach and remove a SCSI device
|
||||||
scsi_remove_host - detach and remove all SCSI devices owned by host
|
scsi_remove_host - detach and remove all SCSI devices owned by host
|
||||||
scsi_report_bus_reset - report scsi _bus_ reset observed
|
scsi_report_bus_reset - report scsi _bus_ reset observed
|
||||||
scsi_set_device - place device reference in host structure
|
|
||||||
scsi_track_queue_full - track successive QUEUE_FULL events
|
scsi_track_queue_full - track successive QUEUE_FULL events
|
||||||
scsi_unblock_requests - allow further commands to be queued to given host
|
scsi_unblock_requests - allow further commands to be queued to given host
|
||||||
scsi_unregister - [calls scsi_host_put()]
|
scsi_unregister - [calls scsi_host_put()]
|
||||||
|
@ -740,20 +739,6 @@ int scsi_remove_host(struct Scsi_Host *shost)
|
||||||
void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
|
void scsi_report_bus_reset(struct Scsi_Host * shost, int channel)
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* scsi_set_device - place device reference in host structure
|
|
||||||
* @shost: a pointer to a scsi host instance
|
|
||||||
* @pdev: pointer to device instance to assign
|
|
||||||
*
|
|
||||||
* Returns nothing
|
|
||||||
*
|
|
||||||
* Might block: no
|
|
||||||
*
|
|
||||||
* Defined in: include/scsi/scsi_host.h .
|
|
||||||
**/
|
|
||||||
void scsi_set_device(struct Scsi_Host * shost, struct device * dev)
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* scsi_track_queue_full - track successive QUEUE_FULL events on given
|
* scsi_track_queue_full - track successive QUEUE_FULL events on given
|
||||||
* device to determine if and when there is a need
|
* device to determine if and when there is a need
|
||||||
|
|
|
@ -636,11 +636,16 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
3stack-digout 3-jack in back, a HP out and a SPDIF out
|
3stack-digout 3-jack in back, a HP out and a SPDIF out
|
||||||
5stack 5-jack in back, 2-jack in front
|
5stack 5-jack in back, 2-jack in front
|
||||||
5stack-digout 5-jack in back, 2-jack in front, a SPDIF out
|
5stack-digout 5-jack in back, 2-jack in front, a SPDIF out
|
||||||
|
6stack 6-jack in back, 2-jack in front
|
||||||
|
6stack-digout 6-jack with a SPDIF out
|
||||||
w810 3-jack
|
w810 3-jack
|
||||||
z71v 3-jack (HP shared SPDIF)
|
z71v 3-jack (HP shared SPDIF)
|
||||||
asus 3-jack
|
asus 3-jack
|
||||||
uniwill 3-jack
|
uniwill 3-jack
|
||||||
F1734 2-jack
|
F1734 2-jack
|
||||||
|
test for testing/debugging purpose, almost all controls can be
|
||||||
|
adjusted. Appearing only when compiled with
|
||||||
|
$CONFIG_SND_DEBUG=y
|
||||||
|
|
||||||
CMI9880
|
CMI9880
|
||||||
minimal 3-jack in back
|
minimal 3-jack in back
|
||||||
|
@ -1054,6 +1059,13 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
|
|
||||||
The power-management is supported.
|
The power-management is supported.
|
||||||
|
|
||||||
|
Module snd-pxa2xx-ac97 (on arm only)
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
Module for AC97 driver for the Intel PXA2xx chip
|
||||||
|
|
||||||
|
For ARM architecture only.
|
||||||
|
|
||||||
Module snd-rme32
|
Module snd-rme32
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
@ -1173,6 +1185,13 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
|
|
||||||
Module supports up to 8 cards.
|
Module supports up to 8 cards.
|
||||||
|
|
||||||
|
Module snd-sun-dbri (on sparc only)
|
||||||
|
-----------------------------------
|
||||||
|
|
||||||
|
Module for DBRI sound chips found on Sparcs.
|
||||||
|
|
||||||
|
Module supports up to 8 cards.
|
||||||
|
|
||||||
Module snd-wavefront
|
Module snd-wavefront
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
|
@ -1371,7 +1390,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
Module snd-vxpocket
|
Module snd-vxpocket
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Module for Digigram VX-Pocket VX2 PCMCIA card.
|
Module for Digigram VX-Pocket VX2 and 440 PCMCIA cards.
|
||||||
|
|
||||||
ibl - Capture IBL size. (default = 0, minimum size)
|
ibl - Capture IBL size. (default = 0, minimum size)
|
||||||
|
|
||||||
|
@ -1391,29 +1410,6 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
|
|
||||||
Note: the driver is build only when CONFIG_ISA is set.
|
Note: the driver is build only when CONFIG_ISA is set.
|
||||||
|
|
||||||
Module snd-vxp440
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Module for Digigram VX-Pocket 440 PCMCIA card.
|
|
||||||
|
|
||||||
ibl - Capture IBL size. (default = 0, minimum size)
|
|
||||||
|
|
||||||
Module supports up to 8 cards. The module is compiled only when
|
|
||||||
PCMCIA is supported on kernel.
|
|
||||||
|
|
||||||
To activate the driver via the card manager, you'll need to set
|
|
||||||
up /etc/pcmcia/vxp440.conf. See the sound/pcmcia/vx/vxp440.c.
|
|
||||||
|
|
||||||
When the driver is compiled as a module and the hotplug firmware
|
|
||||||
is supported, the firmware data is loaded via hotplug automatically.
|
|
||||||
Install the necessary firmware files in alsa-firmware package.
|
|
||||||
When no hotplug fw loader is available, you need to load the
|
|
||||||
firmware via vxloader utility in alsa-tools package.
|
|
||||||
|
|
||||||
About capture IBL, see the description of snd-vx222 module.
|
|
||||||
|
|
||||||
Note: the driver is build only when CONFIG_ISA is set.
|
|
||||||
|
|
||||||
Module snd-ymfpci
|
Module snd-ymfpci
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
|
|
@ -132,7 +132,7 @@ to extra work for the USB developers. Since all Linux USB developers do
|
||||||
their work on their own time, asking programmers to do extra work for no
|
their work on their own time, asking programmers to do extra work for no
|
||||||
gain, for free, is not a possibility.
|
gain, for free, is not a possibility.
|
||||||
|
|
||||||
Security issues are also a very important for Linux. When a
|
Security issues are also very important for Linux. When a
|
||||||
security issue is found, it is fixed in a very short amount of time. A
|
security issue is found, it is fixed in a very short amount of time. A
|
||||||
number of times this has caused internal kernel interfaces to be
|
number of times this has caused internal kernel interfaces to be
|
||||||
reworked to prevent the security problem from occurring. When this
|
reworked to prevent the security problem from occurring. When this
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
Everything you ever wanted to know about Linux 2.6 -stable releases.
|
||||||
|
|
||||||
|
Rules on what kind of patches are accepted, and what ones are not, into
|
||||||
|
the "-stable" tree:
|
||||||
|
|
||||||
|
- It must be obviously correct and tested.
|
||||||
|
- It can not bigger than 100 lines, with context.
|
||||||
|
- It must fix only one thing.
|
||||||
|
- It must fix a real bug that bothers people (not a, "This could be a
|
||||||
|
problem..." type thing.)
|
||||||
|
- It must fix a problem that causes a build error (but not for things
|
||||||
|
marked CONFIG_BROKEN), an oops, a hang, data corruption, a real
|
||||||
|
security issue, or some "oh, that's not good" issue. In short,
|
||||||
|
something critical.
|
||||||
|
- No "theoretical race condition" issues, unless an explanation of how
|
||||||
|
the race can be exploited.
|
||||||
|
- It can not contain any "trivial" fixes in it (spelling changes,
|
||||||
|
whitespace cleanups, etc.)
|
||||||
|
- It must be accepted by the relevant subsystem maintainer.
|
||||||
|
- It must follow Documentation/SubmittingPatches rules.
|
||||||
|
|
||||||
|
|
||||||
|
Procedure for submitting patches to the -stable tree:
|
||||||
|
|
||||||
|
- Send the patch, after verifying that it follows the above rules, to
|
||||||
|
stable@kernel.org.
|
||||||
|
- The sender will receive an ack when the patch has been accepted into
|
||||||
|
the queue, or a nak if the patch is rejected. This response might
|
||||||
|
take a few days, according to the developer's schedules.
|
||||||
|
- If accepted, the patch will be added to the -stable queue, for review
|
||||||
|
by other developers.
|
||||||
|
- Security patches should not be sent to this alias, but instead to the
|
||||||
|
documented security@kernel.org.
|
||||||
|
|
||||||
|
|
||||||
|
Review cycle:
|
||||||
|
|
||||||
|
- When the -stable maintainers decide for a review cycle, the patches
|
||||||
|
will be sent to the review committee, and the maintainer of the
|
||||||
|
affected area of the patch (unless the submitter is the maintainer of
|
||||||
|
the area) and CC: to the linux-kernel mailing list.
|
||||||
|
- The review committee has 48 hours in which to ack or nak the patch.
|
||||||
|
- If the patch is rejected by a member of the committee, or linux-kernel
|
||||||
|
members object to the patch, bringing up issues that the maintainers
|
||||||
|
and members did not realize, the patch will be dropped from the
|
||||||
|
queue.
|
||||||
|
- At the end of the review cycle, the acked patches will be added to
|
||||||
|
the latest -stable release, and a new -stable release will happen.
|
||||||
|
- Security patches will be accepted into the -stable tree directly from
|
||||||
|
the security kernel team, and not go through the normal review cycle.
|
||||||
|
Contact the kernel security team for more details on this procedure.
|
||||||
|
|
||||||
|
|
||||||
|
Review committe:
|
||||||
|
|
||||||
|
- This will be made up of a number of kernel developers who have
|
||||||
|
volunteered for this task, and a few that haven't.
|
||||||
|
|
|
@ -297,6 +297,7 @@ Vendor ID Product ID
|
||||||
0x0c45 0x602a
|
0x0c45 0x602a
|
||||||
0x0c45 0x602b
|
0x0c45 0x602b
|
||||||
0x0c45 0x602c
|
0x0c45 0x602c
|
||||||
|
0x0c45 0x602d
|
||||||
0x0c45 0x6030
|
0x0c45 0x6030
|
||||||
0x0c45 0x6080
|
0x0c45 0x6080
|
||||||
0x0c45 0x6082
|
0x0c45 0x6082
|
||||||
|
@ -333,6 +334,7 @@ Model Manufacturer
|
||||||
----- ------------
|
----- ------------
|
||||||
HV7131D Hynix Semiconductor, Inc.
|
HV7131D Hynix Semiconductor, Inc.
|
||||||
MI-0343 Micron Technology, Inc.
|
MI-0343 Micron Technology, Inc.
|
||||||
|
OV7630 OmniVision Technologies, Inc.
|
||||||
PAS106B PixArt Imaging, Inc.
|
PAS106B PixArt Imaging, Inc.
|
||||||
PAS202BCB PixArt Imaging, Inc.
|
PAS202BCB PixArt Imaging, Inc.
|
||||||
TAS5110C1B Taiwan Advanced Sensor Corporation
|
TAS5110C1B Taiwan Advanced Sensor Corporation
|
||||||
|
@ -470,9 +472,11 @@ order):
|
||||||
- Luca Capello for the donation of a webcam;
|
- Luca Capello for the donation of a webcam;
|
||||||
- Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the
|
- Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the
|
||||||
donation of a webcam;
|
donation of a webcam;
|
||||||
|
- Jon Hollstrom for the donation of a webcam;
|
||||||
- Carlos Eduardo Medaglia Dyonisio, who added the support for the PAS202BCB
|
- Carlos Eduardo Medaglia Dyonisio, who added the support for the PAS202BCB
|
||||||
image sensor;
|
image sensor;
|
||||||
- Stefano Mozzi, who donated 45 EU;
|
- Stefano Mozzi, who donated 45 EU;
|
||||||
|
- Andrew Pearce for the donation of a webcam;
|
||||||
- Bertrik Sikken, who reverse-engineered and documented the Huffman compression
|
- Bertrik Sikken, who reverse-engineered and documented the Huffman compression
|
||||||
algorithm used in the SN9C10x controllers and implemented the first decoder;
|
algorithm used in the SN9C10x controllers and implemented the first decoder;
|
||||||
- Mizuno Takafumi for the donation of a webcam;
|
- Mizuno Takafumi for the donation of a webcam;
|
||||||
|
|
|
@ -101,6 +101,13 @@ Here is the list of words, from left to right:
|
||||||
or 3 and 2 positions, correspondingly.
|
or 3 and 2 positions, correspondingly.
|
||||||
- URB Status. This field makes no sense for submissions, but is present
|
- URB Status. This field makes no sense for submissions, but is present
|
||||||
to help scripts with parsing. In error case, it contains the error code.
|
to help scripts with parsing. In error case, it contains the error code.
|
||||||
|
In case of a setup packet, it contains a Setup Tag. If scripts read a number
|
||||||
|
in this field, the proceed to read Data Length. Otherwise, they read
|
||||||
|
the setup packet before reading the Data Length.
|
||||||
|
- Setup packet, if present, consists of 5 words: one of each for bmRequestType,
|
||||||
|
bRequest, wValue, wIndex, wLength, as specified by the USB Specification 2.0.
|
||||||
|
These words are safe to decode if Setup Tag was 's'. Otherwise, the setup
|
||||||
|
packet was present, but not captured, and the fields contain filler.
|
||||||
- Data Length. This is the actual length in the URB.
|
- Data Length. This is the actual length in the URB.
|
||||||
- Data tag. The usbmon may not always capture data, even if length is nonzero.
|
- Data tag. The usbmon may not always capture data, even if length is nonzero.
|
||||||
Only if tag is '=', the data words are present.
|
Only if tag is '=', the data words are present.
|
||||||
|
@ -125,25 +132,31 @@ class ParsedLine {
|
||||||
String data_str = st.nextToken();
|
String data_str = st.nextToken();
|
||||||
int len = data_str.length() / 2;
|
int len = data_str.length() / 2;
|
||||||
int i;
|
int i;
|
||||||
|
int b; // byte is signed, apparently?! XXX
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
data[data_len] = Byte.parseByte(
|
// data[data_len] = Byte.parseByte(
|
||||||
data_str.substring(i*2, i*2 + 2),
|
// data_str.substring(i*2, i*2 + 2),
|
||||||
16);
|
// 16);
|
||||||
|
b = Integer.parseInt(
|
||||||
|
data_str.substring(i*2, i*2 + 2),
|
||||||
|
16);
|
||||||
|
if (b >= 128)
|
||||||
|
b *= -1;
|
||||||
|
data[data_len] = (byte) b;
|
||||||
data_len++;
|
data_len++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
This format is obviously deficient. For example, the setup packet for control
|
This format may be changed in the future.
|
||||||
transfers is not delivered. This will change in the future.
|
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
An input control transfer to get a port status:
|
An input control transfer to get a port status.
|
||||||
|
|
||||||
d74ff9a0 2640288196 S Ci:001:00 -115 4 <
|
d5ea89a0 3575914555 S Ci:001:00 s a3 00 0000 0003 0004 4 <
|
||||||
d74ff9a0 2640288202 C Ci:001:00 0 4 = 01010100
|
d5ea89a0 3575914560 C Ci:001:00 0 4 = 01050000
|
||||||
|
|
||||||
An output bulk transfer to send a SCSI command 0x5E in a 31-byte Bulk wrapper
|
An output bulk transfer to send a SCSI command 0x5E in a 31-byte Bulk wrapper
|
||||||
to a storage device at address 5:
|
to a storage device at address 5:
|
||||||
|
|
|
@ -27,3 +27,5 @@ card=25 - Digital-Logic MICROSPACE Entertainment Center (MEC)
|
||||||
card=26 - IODATA GV/BCTV7E
|
card=26 - IODATA GV/BCTV7E
|
||||||
card=27 - PixelView PlayTV Ultra Pro (Stereo)
|
card=27 - PixelView PlayTV Ultra Pro (Stereo)
|
||||||
card=28 - DViCO FusionHDTV 3 Gold-T
|
card=28 - DViCO FusionHDTV 3 Gold-T
|
||||||
|
card=29 - ADS Tech Instant TV DVB-T PCI
|
||||||
|
card=30 - TerraTec Cinergy 1400 DVB-T
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
33 -> AVerMedia DVD EZMaker [1461:10ff]
|
33 -> AVerMedia DVD EZMaker [1461:10ff]
|
||||||
34 -> Noval Prime TV 7133
|
34 -> Noval Prime TV 7133
|
||||||
35 -> AverMedia AverTV Studio 305 [1461:2115]
|
35 -> AverMedia AverTV Studio 305 [1461:2115]
|
||||||
|
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]
|
||||||
|
@ -43,20 +44,21 @@
|
||||||
43 -> :Zolid Xpert TV7134
|
43 -> :Zolid Xpert TV7134
|
||||||
44 -> Empire PCI TV-Radio LE
|
44 -> Empire PCI TV-Radio LE
|
||||||
45 -> Avermedia AVerTV Studio 307 [1461:9715]
|
45 -> Avermedia AVerTV Studio 307 [1461:9715]
|
||||||
46 -> AVerMedia Cardbus TV/Radio [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]
|
||||||
52 -> AverMedia AverTV/305 [1461:2108]
|
52 -> AverMedia AverTV/305 [1461:2108]
|
||||||
|
53 -> ASUS TV-FM 7135 [1043:4845]
|
||||||
54 -> LifeView FlyTV Platinum FM [5168:0214,1489:0214]
|
54 -> LifeView FlyTV Platinum FM [5168:0214,1489:0214]
|
||||||
55 -> LifeView FlyDVB-T DUO [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]
|
||||||
59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
|
59 -> Kworld/Tevion V-Stream Xpert TV PVR7134
|
||||||
60 -> Typhoon DVB-T Duo Digital/Analog Cardbus
|
60 -> Typhoon DVB-T Duo Digital/Analog Cardbus [4e42:0502]
|
||||||
61 -> Philips TOUGH DVB-T reference design
|
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
|
||||||
|
|
|
@ -56,9 +56,9 @@ tuner=54 - tda8290+75
|
||||||
tuner=55 - LG PAL (TAPE series)
|
tuner=55 - LG PAL (TAPE series)
|
||||||
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
|
tuner=58 - Ymec TVision TVF-8531MF/8831MF/8731MF
|
||||||
tuner=59 - Ymec TVision TVF-5533MF
|
tuner=59 - Ymec TVision TVF-5533MF
|
||||||
tuner=60 - Thomson DDT 7611 (ATSC/NTSC)
|
tuner=60 - Thomson DDT 7611 (ATSC/NTSC)
|
||||||
tuner=61 - Tena TNF9533-D/IF
|
tuner=61 - Tena TNF9533-D/IF/TNF9533-B/DF
|
||||||
tuner=62 - Philips TEA5767HN FM Radio
|
tuner=62 - Philips TEA5767HN FM Radio
|
||||||
tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner
|
tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner
|
||||||
|
|
|
@ -34,4 +34,8 @@ MO_OUTPUT_FORMAT (0x310164)
|
||||||
2: HACTEXT
|
2: HACTEXT
|
||||||
1: HSFMT
|
1: HSFMT
|
||||||
|
|
||||||
|
0x47 is the sync byte for MPEG-2 transport stream packets.
|
||||||
|
Datasheet incorrectly states to use 47 decimal. 188 is the length.
|
||||||
|
All DVB compliant frontends output packets with this start code.
|
||||||
|
|
||||||
=================================================================================
|
=================================================================================
|
||||||
|
|
|
@ -47,7 +47,7 @@ Timing
|
||||||
notsc
|
notsc
|
||||||
Don't use the CPU time stamp counter to read the wall time.
|
Don't use the CPU time stamp counter to read the wall time.
|
||||||
This can be used to work around timing problems on multiprocessor systems
|
This can be used to work around timing problems on multiprocessor systems
|
||||||
with not properly synchronized CPUs. Only useful with a SMP kernel
|
with not properly synchronized CPUs.
|
||||||
|
|
||||||
report_lost_ticks
|
report_lost_ticks
|
||||||
Report when timer interrupts are lost because some code turned off
|
Report when timer interrupts are lost because some code turned off
|
||||||
|
@ -74,6 +74,9 @@ Idle loop
|
||||||
event. This will make the CPUs eat a lot more power, but may be useful
|
event. This will make the CPUs eat a lot more power, but may be useful
|
||||||
to get slightly better performance in multiprocessor benchmarks. It also
|
to get slightly better performance in multiprocessor benchmarks. It also
|
||||||
makes some profiling using performance counters more accurate.
|
makes some profiling using performance counters more accurate.
|
||||||
|
Please note that on systems with MONITOR/MWAIT support (like Intel EM64T
|
||||||
|
CPUs) this option has no performance advantage over the normal idle loop.
|
||||||
|
It may also interact badly with hyperthreading.
|
||||||
|
|
||||||
Rebooting
|
Rebooting
|
||||||
|
|
||||||
|
@ -178,6 +181,5 @@ Debugging
|
||||||
Misc
|
Misc
|
||||||
|
|
||||||
noreplacement Don't replace instructions with more appropiate ones
|
noreplacement Don't replace instructions with more appropiate ones
|
||||||
for the CPU. This may be useful on asymmetric MP systems
|
for the CPU. This may be useful on asymmetric MP systems
|
||||||
where some CPU have less capabilities than the others.
|
where some CPU have less capabilities than the others.
|
||||||
|
|
||||||
|
|
23
MAINTAINERS
23
MAINTAINERS
|
@ -1169,6 +1169,12 @@ L: linux-input@atrey.karlin.mff.cuni.cz
|
||||||
L: linux-joystick@atrey.karlin.mff.cuni.cz
|
L: linux-joystick@atrey.karlin.mff.cuni.cz
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
INOTIFY
|
||||||
|
P: John McCutchan and Robert Love
|
||||||
|
M: ttb@tentacle.dhs.org and rml@novell.com
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
INTEL 810/815 FRAMEBUFFER DRIVER
|
INTEL 810/815 FRAMEBUFFER DRIVER
|
||||||
P: Antonino Daplas
|
P: Antonino Daplas
|
||||||
M: adaplas@pol.net
|
M: adaplas@pol.net
|
||||||
|
@ -1240,7 +1246,7 @@ S: Maintained
|
||||||
|
|
||||||
IRDA SUBSYSTEM
|
IRDA SUBSYSTEM
|
||||||
P: Jean Tourrilhes
|
P: Jean Tourrilhes
|
||||||
L: irda-users@lists.sourceforge.net
|
L: irda-users@lists.sourceforge.net (subscribers-only)
|
||||||
W: http://irda.sourceforge.net/
|
W: http://irda.sourceforge.net/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
@ -1410,13 +1416,20 @@ W: http://www.penguinppc.org/
|
||||||
L: linuxppc-embedded@ozlabs.org
|
L: linuxppc-embedded@ozlabs.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
LINUX FOR POWERPC EMBEDDED PPC8XX AND BOOT CODE
|
LINUX FOR POWERPC BOOT CODE
|
||||||
P: Tom Rini
|
P: Tom Rini
|
||||||
M: trini@kernel.crashing.org
|
M: trini@kernel.crashing.org
|
||||||
W: http://www.penguinppc.org/
|
W: http://www.penguinppc.org/
|
||||||
L: linuxppc-embedded@ozlabs.org
|
L: linuxppc-embedded@ozlabs.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
LINUX FOR POWERPC EMBEDDED PPC8XX
|
||||||
|
P: Marcelo Tosatti
|
||||||
|
M: marcelo.tosatti@cyclades.com
|
||||||
|
W: http://www.penguinppc.org/
|
||||||
|
L: linuxppc-embedded@ozlabs.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
|
LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
|
||||||
P: Kumar Gala
|
P: Kumar Gala
|
||||||
M: kumar.gala@freescale.com
|
M: kumar.gala@freescale.com
|
||||||
|
@ -2420,6 +2433,12 @@ L: linux-usb-users@lists.sourceforge.net
|
||||||
L: linux-usb-devel@lists.sourceforge.net
|
L: linux-usb-devel@lists.sourceforge.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
USB OPTION-CARD DRIVER
|
||||||
|
P: Matthias Urlichs
|
||||||
|
M: smurf@smurf.noris.de
|
||||||
|
L: linux-usb-devel@lists.sourceforge.net
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
USB OV511 DRIVER
|
USB OV511 DRIVER
|
||||||
P: Mark McClelland
|
P: Mark McClelland
|
||||||
M: mmcclell@bigfoot.com
|
M: mmcclell@bigfoot.com
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 13
|
SUBLEVEL = 13
|
||||||
EXTRAVERSION =-rc2
|
EXTRAVERSION =-rc4
|
||||||
NAME=Woozy Numbat
|
NAME=Woozy Numbat
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
|
10
README
10
README
|
@ -87,6 +87,16 @@ INSTALLING the kernel:
|
||||||
kernel source. Patches are applied from the current directory, but
|
kernel source. Patches are applied from the current directory, but
|
||||||
an alternative directory can be specified as the second argument.
|
an alternative directory can be specified as the second argument.
|
||||||
|
|
||||||
|
- If you are upgrading between releases using the stable series patches
|
||||||
|
(for example, patch-2.6.xx.y), note that these "dot-releases" are
|
||||||
|
not incremental and must be applied to the 2.6.xx base tree. For
|
||||||
|
example, if your base kernel is 2.6.12 and you want to apply the
|
||||||
|
2.6.12.3 patch, you do not and indeed must not first apply the
|
||||||
|
2.6.12.1 and 2.6.12.2 patches. Similarly, if you are running kernel
|
||||||
|
version 2.6.12.2 and want to jump to 2.6.12.3, you must first
|
||||||
|
reverse the 2.6.12.2 patch (that is, patch -R) _before_ applying
|
||||||
|
the 2.6.12.3 patch.
|
||||||
|
|
||||||
- Make sure you have no stale .o files and dependencies lying around:
|
- Make sure you have no stale .o files and dependencies lying around:
|
||||||
|
|
||||||
cd linux
|
cd linux
|
||||||
|
|
|
@ -596,6 +596,8 @@ source "fs/Kconfig.binfmt"
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
source "drivers/Kconfig"
|
source "drivers/Kconfig"
|
||||||
|
|
||||||
source "fs/Kconfig"
|
source "fs/Kconfig"
|
||||||
|
|
|
@ -165,7 +165,6 @@ machine_restart(char *restart_cmd)
|
||||||
common_shutdown(LINUX_REBOOT_CMD_RESTART, restart_cmd);
|
common_shutdown(LINUX_REBOOT_CMD_RESTART, restart_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(machine_restart);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
machine_halt(void)
|
machine_halt(void)
|
||||||
|
@ -173,7 +172,6 @@ machine_halt(void)
|
||||||
common_shutdown(LINUX_REBOOT_CMD_HALT, NULL);
|
common_shutdown(LINUX_REBOOT_CMD_HALT, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(machine_halt);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
machine_power_off(void)
|
machine_power_off(void)
|
||||||
|
@ -181,7 +179,6 @@ machine_power_off(void)
|
||||||
common_shutdown(LINUX_REBOOT_CMD_POWER_OFF, NULL);
|
common_shutdown(LINUX_REBOOT_CMD_POWER_OFF, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(machine_power_off);
|
|
||||||
|
|
||||||
/* Used by sysrq-p, among others. I don't believe r9-r15 are ever
|
/* Used by sysrq-p, among others. I don't believe r9-r15 are ever
|
||||||
saved in the context it's used. */
|
saved in the context it's used. */
|
||||||
|
|
|
@ -461,6 +461,11 @@ sys_call_table:
|
||||||
.quad sys_add_key
|
.quad sys_add_key
|
||||||
.quad sys_request_key /* 440 */
|
.quad sys_request_key /* 440 */
|
||||||
.quad sys_keyctl
|
.quad sys_keyctl
|
||||||
|
.quad sys_ioprio_set
|
||||||
|
.quad sys_ioprio_get
|
||||||
|
.quad sys_inotify_init
|
||||||
|
.quad sys_inotify_add_watch /* 445 */
|
||||||
|
.quad sys_inotify_rm_watch
|
||||||
|
|
||||||
.size sys_call_table, . - sys_call_table
|
.size sys_call_table, . - sys_call_table
|
||||||
.type sys_call_table, @object
|
.type sys_call_table, @object
|
||||||
|
|
|
@ -223,7 +223,9 @@ source "arch/arm/mach-pxa/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-sa1100/Kconfig"
|
source "arch/arm/mach-sa1100/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-omap/Kconfig"
|
source "arch/arm/plat-omap/Kconfig"
|
||||||
|
|
||||||
|
source "arch/arm/mach-omap1/Kconfig"
|
||||||
|
|
||||||
source "arch/arm/mach-s3c2410/Kconfig"
|
source "arch/arm/mach-s3c2410/Kconfig"
|
||||||
|
|
||||||
|
@ -514,7 +516,7 @@ config XIP_PHYS_ADDR
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
if (ARCH_SA1100 || ARCH_INTEGRATOR)
|
if (ARCH_SA1100 || ARCH_INTEGRATOR || ARCH_OMAP1)
|
||||||
|
|
||||||
menu "CPU Frequency scaling"
|
menu "CPU Frequency scaling"
|
||||||
|
|
||||||
|
@ -698,6 +700,8 @@ config APM
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
source "net/Kconfig"
|
||||||
|
|
||||||
menu "Device Drivers"
|
menu "Device Drivers"
|
||||||
|
|
||||||
source "drivers/base/Kconfig"
|
source "drivers/base/Kconfig"
|
||||||
|
@ -730,7 +734,7 @@ source "drivers/ieee1394/Kconfig"
|
||||||
|
|
||||||
source "drivers/message/i2o/Kconfig"
|
source "drivers/message/i2o/Kconfig"
|
||||||
|
|
||||||
source "net/Kconfig"
|
source "drivers/net/Kconfig"
|
||||||
|
|
||||||
source "drivers/isdn/Kconfig"
|
source "drivers/isdn/Kconfig"
|
||||||
|
|
||||||
|
@ -742,6 +746,8 @@ source "drivers/char/Kconfig"
|
||||||
|
|
||||||
source "drivers/i2c/Kconfig"
|
source "drivers/i2c/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/hwmon/Kconfig"
|
||||||
|
|
||||||
#source "drivers/l3/Kconfig"
|
#source "drivers/l3/Kconfig"
|
||||||
|
|
||||||
source "drivers/misc/Kconfig"
|
source "drivers/misc/Kconfig"
|
||||||
|
|
|
@ -91,7 +91,8 @@ textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000
|
||||||
machine-$(CONFIG_ARCH_IOP3XX) := iop3xx
|
machine-$(CONFIG_ARCH_IOP3XX) := iop3xx
|
||||||
machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
|
machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
|
||||||
machine-$(CONFIG_ARCH_IXP2000) := ixp2000
|
machine-$(CONFIG_ARCH_IXP2000) := ixp2000
|
||||||
machine-$(CONFIG_ARCH_OMAP) := omap
|
machine-$(CONFIG_ARCH_OMAP1) := omap1
|
||||||
|
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
|
||||||
machine-$(CONFIG_ARCH_VERSATILE) := versatile
|
machine-$(CONFIG_ARCH_VERSATILE) := versatile
|
||||||
|
@ -142,6 +143,9 @@ core-$(CONFIG_FPE_NWFPE) += arch/arm/nwfpe/
|
||||||
core-$(CONFIG_FPE_FASTFPE) += $(FASTFPE_OBJ)
|
core-$(CONFIG_FPE_FASTFPE) += $(FASTFPE_OBJ)
|
||||||
core-$(CONFIG_VFP) += arch/arm/vfp/
|
core-$(CONFIG_VFP) += arch/arm/vfp/
|
||||||
|
|
||||||
|
# If we have a common platform directory, then include it in the build.
|
||||||
|
core-$(CONFIG_ARCH_OMAP) += arch/arm/plat-omap/
|
||||||
|
|
||||||
drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/
|
drivers-$(CONFIG_OPROFILE) += arch/arm/oprofile/
|
||||||
drivers-$(CONFIG_ARCH_CLPS7500) += drivers/acorn/char/
|
drivers-$(CONFIG_ARCH_CLPS7500) += drivers/acorn/char/
|
||||||
drivers-$(CONFIG_ARCH_L7200) += drivers/acorn/char/
|
drivers-$(CONFIG_ARCH_L7200) += drivers/acorn/char/
|
||||||
|
|
|
@ -63,8 +63,8 @@ __beginning: mov r4, r0 @ save the entry to the firmware
|
||||||
|
|
||||||
mov pc, r2
|
mov pc, r2
|
||||||
|
|
||||||
__copy_target: .long 0x08508000
|
__copy_target: .long 0x08507FFC
|
||||||
__copy_end: .long 0x08608000
|
__copy_end: .long 0x08607FFC
|
||||||
|
|
||||||
.word _start
|
.word _start
|
||||||
.word __bss_start
|
.word __bss_start
|
||||||
|
@ -73,9 +73,10 @@ __copy_end: .long 0x08608000
|
||||||
__temp_stack: .space 128
|
__temp_stack: .space 128
|
||||||
|
|
||||||
__mmu_off:
|
__mmu_off:
|
||||||
adr r0, __ofw_data
|
adr r0, __ofw_data @ read the 1. entry of the memory map
|
||||||
ldr r0, [r0, #4]
|
ldr r0, [r0, #4]
|
||||||
orr r0, r0, #0x00600000
|
orr r0, r0, #0x00600000
|
||||||
|
sub r0, r0, #4
|
||||||
|
|
||||||
ldr r1, __copy_end
|
ldr r1, __copy_end
|
||||||
ldr r3, __copy_target
|
ldr r3, __copy_target
|
||||||
|
@ -89,20 +90,43 @@ __mmu_off:
|
||||||
* from 0x08500000 to 0x08508000 if we have only 8MB
|
* from 0x08500000 to 0x08508000 if we have only 8MB
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* As we get more 2.6-kernels it gets more and more
|
||||||
|
* uncomfortable to be bound to kernel images of 1MB only.
|
||||||
|
* So we add a loop here, to be able to copy some more.
|
||||||
|
* Alexander Schulz 2005-07-17
|
||||||
|
*/
|
||||||
|
|
||||||
|
mov r4, #3 @ How many megabytes to copy
|
||||||
|
|
||||||
|
|
||||||
|
__MoveCode: sub r4, r4, #1
|
||||||
|
|
||||||
__Copy: ldr r2, [r0], #-4
|
__Copy: ldr r2, [r0], #-4
|
||||||
str r2, [r1], #-4
|
str r2, [r1], #-4
|
||||||
teq r1, r3
|
teq r1, r3
|
||||||
bne __Copy
|
bne __Copy
|
||||||
|
|
||||||
|
/* The firmware maps us in blocks of 1 MB, the next block is
|
||||||
|
_below_ the last one. So our decrementing source pointer
|
||||||
|
ist right here, but the destination pointer must be increased
|
||||||
|
by 2 MB */
|
||||||
|
add r1, r1, #0x00200000
|
||||||
|
add r3, r3, #0x00100000
|
||||||
|
|
||||||
|
teq r4, #0
|
||||||
|
bne __MoveCode
|
||||||
|
|
||||||
|
|
||||||
/* and jump to it */
|
/* and jump to it */
|
||||||
adr r2, __go_on
|
adr r2, __go_on @ where we want to jump
|
||||||
adr r0, __ofw_data
|
adr r0, __ofw_data @ read the 1. entry of the memory map
|
||||||
ldr r0, [r0, #4]
|
ldr r0, [r0, #4]
|
||||||
sub r2, r2, r0
|
sub r2, r2, r0 @ we are mapped add 0e50 now, sub that (-0e00)
|
||||||
sub r2, r2, #0x00500000
|
sub r2, r2, #0x00500000 @ -0050
|
||||||
ldr r0, __copy_target
|
ldr r0, __copy_target @ and add 0850 8000 instead
|
||||||
|
add r0, r0, #4
|
||||||
add r2, r2, r0
|
add r2, r2, r0
|
||||||
mov pc, r2
|
mov pc, r2 @ and jump there
|
||||||
|
|
||||||
__go_on:
|
__go_on:
|
||||||
adr sp, __temp_stack
|
adr sp, __temp_stack
|
||||||
|
|
|
@ -561,7 +561,6 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
#
|
#
|
||||||
CONFIG_SERIAL_S3C2410=y
|
CONFIG_SERIAL_S3C2410=y
|
||||||
CONFIG_SERIAL_S3C2410_CONSOLE=y
|
CONFIG_SERIAL_S3C2410_CONSOLE=y
|
||||||
CONFIG_SERIAL_BAST_SIO=y
|
|
||||||
CONFIG_SERIAL_CORE=y
|
CONFIG_SERIAL_CORE=y
|
||||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||||
CONFIG_UNIX98_PTYS=y
|
CONFIG_UNIX98_PTYS=y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.12-git6
|
# Linux kernel version: 2.6.13-rc2
|
||||||
# Sat Jun 25 00:57:29 2005
|
# Thu Jul 7 16:41:21 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -137,6 +137,7 @@ CONFIG_PCI_NAMES=y
|
||||||
#
|
#
|
||||||
# CONFIG_SMP is not set
|
# CONFIG_SMP is not set
|
||||||
# CONFIG_PREEMPT is not set
|
# CONFIG_PREEMPT is not set
|
||||||
|
# CONFIG_NO_IDLE_HZ is not set
|
||||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||||
CONFIG_SELECT_MEMORY_MODEL=y
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
CONFIG_FLATMEM_MANUAL=y
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
|
@ -345,10 +346,9 @@ CONFIG_PACKET_MMAP=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_FIB_HASH=y
|
|
||||||
# CONFIG_IP_FIB_TRIE is not set
|
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
CONFIG_IP_PNP_DHCP=y
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
|
@ -363,17 +363,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
# CONFIG_IP_TCPDIAG is not set
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
#
|
|
||||||
# TCP congestion control
|
|
||||||
#
|
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
CONFIG_TCP_CONG_WESTWOOD=m
|
|
||||||
CONFIG_TCP_CONG_HTCP=m
|
|
||||||
# CONFIG_TCP_CONG_HSTCP is not set
|
|
||||||
# CONFIG_TCP_CONG_HYBLA is not set
|
|
||||||
# CONFIG_TCP_CONG_VEGAS is not set
|
|
||||||
# CONFIG_TCP_CONG_SCALABLE is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
@ -931,4 +922,3 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
# CONFIG_TEXTSEARCH is not set
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.12-git6
|
# Linux kernel version: 2.6.13-rc2
|
||||||
# Sat Jun 25 00:58:38 2005
|
# Thu Jul 7 16:49:01 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -138,6 +138,7 @@ CONFIG_PCI_NAMES=y
|
||||||
#
|
#
|
||||||
# CONFIG_SMP is not set
|
# CONFIG_SMP is not set
|
||||||
# CONFIG_PREEMPT is not set
|
# CONFIG_PREEMPT is not set
|
||||||
|
# CONFIG_NO_IDLE_HZ is not set
|
||||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||||
CONFIG_SELECT_MEMORY_MODEL=y
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
CONFIG_FLATMEM_MANUAL=y
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
|
@ -346,10 +347,9 @@ CONFIG_PACKET_MMAP=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_FIB_HASH=y
|
|
||||||
# CONFIG_IP_FIB_TRIE is not set
|
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
CONFIG_IP_PNP_DHCP=y
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
|
@ -364,17 +364,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
# CONFIG_IP_TCPDIAG is not set
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
#
|
|
||||||
# TCP congestion control
|
|
||||||
#
|
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
CONFIG_TCP_CONG_WESTWOOD=m
|
|
||||||
CONFIG_TCP_CONG_HTCP=m
|
|
||||||
# CONFIG_TCP_CONG_HSTCP is not set
|
|
||||||
# CONFIG_TCP_CONG_HYBLA is not set
|
|
||||||
# CONFIG_TCP_CONG_VEGAS is not set
|
|
||||||
# CONFIG_TCP_CONG_SCALABLE is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
@ -932,4 +923,3 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
# CONFIG_TEXTSEARCH is not set
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.12-git6
|
# Linux kernel version: 2.6.13-rc2
|
||||||
# Sat Jun 25 00:59:35 2005
|
# Thu Jul 7 16:49:08 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -138,6 +138,7 @@ CONFIG_PCI_NAMES=y
|
||||||
#
|
#
|
||||||
# CONFIG_SMP is not set
|
# CONFIG_SMP is not set
|
||||||
# CONFIG_PREEMPT is not set
|
# CONFIG_PREEMPT is not set
|
||||||
|
# CONFIG_NO_IDLE_HZ is not set
|
||||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||||
CONFIG_SELECT_MEMORY_MODEL=y
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
CONFIG_FLATMEM_MANUAL=y
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
|
@ -346,10 +347,9 @@ CONFIG_PACKET_MMAP=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_FIB_HASH=y
|
|
||||||
# CONFIG_IP_FIB_TRIE is not set
|
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
CONFIG_IP_PNP_DHCP=y
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
|
@ -364,17 +364,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
CONFIG_IP_TCPDIAG=y
|
CONFIG_IP_TCPDIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
#
|
|
||||||
# TCP congestion control
|
|
||||||
#
|
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
CONFIG_TCP_CONG_WESTWOOD=m
|
|
||||||
CONFIG_TCP_CONG_HTCP=m
|
|
||||||
# CONFIG_TCP_CONG_HSTCP is not set
|
|
||||||
# CONFIG_TCP_CONG_HYBLA is not set
|
|
||||||
# CONFIG_TCP_CONG_VEGAS is not set
|
|
||||||
# CONFIG_TCP_CONG_SCALABLE is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
@ -933,4 +924,3 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
# CONFIG_TEXTSEARCH is not set
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.12-git6
|
# Linux kernel version: 2.6.13-rc2
|
||||||
# Sat Jun 25 01:00:27 2005
|
# Thu Jul 7 16:49:20 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -138,6 +138,7 @@ CONFIG_PCI_NAMES=y
|
||||||
#
|
#
|
||||||
# CONFIG_SMP is not set
|
# CONFIG_SMP is not set
|
||||||
# CONFIG_PREEMPT is not set
|
# CONFIG_PREEMPT is not set
|
||||||
|
# CONFIG_NO_IDLE_HZ is not set
|
||||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||||
CONFIG_SELECT_MEMORY_MODEL=y
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
CONFIG_FLATMEM_MANUAL=y
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
|
@ -346,10 +347,9 @@ CONFIG_PACKET_MMAP=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_FIB_HASH=y
|
|
||||||
# CONFIG_IP_FIB_TRIE is not set
|
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
CONFIG_IP_PNP_DHCP=y
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
|
@ -364,17 +364,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
# CONFIG_IP_TCPDIAG is not set
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
#
|
|
||||||
# TCP congestion control
|
|
||||||
#
|
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
CONFIG_TCP_CONG_WESTWOOD=m
|
|
||||||
CONFIG_TCP_CONG_HTCP=m
|
|
||||||
# CONFIG_TCP_CONG_HSTCP is not set
|
|
||||||
# CONFIG_TCP_CONG_HYBLA is not set
|
|
||||||
# CONFIG_TCP_CONG_VEGAS is not set
|
|
||||||
# CONFIG_TCP_CONG_SCALABLE is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
@ -932,4 +923,3 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
# CONFIG_TEXTSEARCH is not set
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.12-git6
|
# Linux kernel version: 2.6.13-rc2
|
||||||
# Sat Jun 25 01:01:18 2005
|
# Thu Jul 7 16:49:13 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
|
@ -138,6 +138,7 @@ CONFIG_PCI_NAMES=y
|
||||||
#
|
#
|
||||||
# CONFIG_SMP is not set
|
# CONFIG_SMP is not set
|
||||||
# CONFIG_PREEMPT is not set
|
# CONFIG_PREEMPT is not set
|
||||||
|
# CONFIG_NO_IDLE_HZ is not set
|
||||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||||
CONFIG_SELECT_MEMORY_MODEL=y
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
CONFIG_FLATMEM_MANUAL=y
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
|
@ -346,10 +347,9 @@ CONFIG_PACKET_MMAP=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
CONFIG_IP_FIB_HASH=y
|
|
||||||
# CONFIG_IP_FIB_TRIE is not set
|
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
CONFIG_IP_PNP_DHCP=y
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
|
@ -364,17 +364,8 @@ CONFIG_SYN_COOKIES=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
# CONFIG_IP_TCPDIAG is not set
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
#
|
|
||||||
# TCP congestion control
|
|
||||||
#
|
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_BIC=y
|
||||||
CONFIG_TCP_CONG_WESTWOOD=m
|
|
||||||
CONFIG_TCP_CONG_HTCP=m
|
|
||||||
# CONFIG_TCP_CONG_HSTCP is not set
|
|
||||||
# CONFIG_TCP_CONG_HYBLA is not set
|
|
||||||
# CONFIG_TCP_CONG_VEGAS is not set
|
|
||||||
# CONFIG_TCP_CONG_SCALABLE is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
@ -933,4 +924,3 @@ CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=y
|
CONFIG_ZLIB_INFLATE=y
|
||||||
CONFIG_ZLIB_DEFLATE=y
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
# CONFIG_TEXTSEARCH is not set
|
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.12-rc1-bk2
|
# Linux kernel version: 2.6.13-rc2
|
||||||
# Sun Mar 27 17:52:41 2005
|
# Fri Jul 8 04:49:34 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
CONFIG_UID16=y
|
CONFIG_UID16=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_GENERIC_IOMAP=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Code maturity level options
|
# Code maturity level options
|
||||||
|
@ -17,6 +16,7 @@ CONFIG_EXPERIMENTAL=y
|
||||||
CONFIG_CLEAN_COMPILE=y
|
CONFIG_CLEAN_COMPILE=y
|
||||||
CONFIG_BROKEN_ON_SMP=y
|
CONFIG_BROKEN_ON_SMP=y
|
||||||
CONFIG_LOCK_KERNEL=y
|
CONFIG_LOCK_KERNEL=y
|
||||||
|
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
|
|
||||||
#
|
#
|
||||||
# General setup
|
# General setup
|
||||||
|
@ -33,8 +33,9 @@ CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
|
||||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||||
|
CONFIG_PRINTK=y
|
||||||
|
CONFIG_BUG=y
|
||||||
CONFIG_BASE_FULL=y
|
CONFIG_BASE_FULL=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
|
@ -82,10 +83,28 @@ CONFIG_ARCH_OMAP=y
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE 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
|
||||||
|
|
||||||
#
|
#
|
||||||
# TI OMAP Implementations
|
# TI OMAP Implementations
|
||||||
#
|
#
|
||||||
|
CONFIG_ARCH_OMAP_OTG=y
|
||||||
|
CONFIG_ARCH_OMAP1=y
|
||||||
|
# CONFIG_ARCH_OMAP2 is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OMAP Feature Selections
|
||||||
|
#
|
||||||
|
# CONFIG_OMAP_RESET_CLOCKS is not set
|
||||||
|
CONFIG_OMAP_MUX=y
|
||||||
|
# CONFIG_OMAP_MUX_DEBUG is not set
|
||||||
|
CONFIG_OMAP_MUX_WARNINGS=y
|
||||||
|
# CONFIG_OMAP_MPU_TIMER is not set
|
||||||
|
CONFIG_OMAP_32K_TIMER=y
|
||||||
|
CONFIG_OMAP_32K_TIMER_HZ=128
|
||||||
|
CONFIG_OMAP_LL_DEBUG_UART1=y
|
||||||
|
# CONFIG_OMAP_LL_DEBUG_UART2 is not set
|
||||||
|
# CONFIG_OMAP_LL_DEBUG_UART3 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# OMAP Core Type
|
# OMAP Core Type
|
||||||
|
@ -93,7 +112,6 @@ CONFIG_ARCH_OMAP=y
|
||||||
# CONFIG_ARCH_OMAP730 is not set
|
# CONFIG_ARCH_OMAP730 is not set
|
||||||
# CONFIG_ARCH_OMAP1510 is not set
|
# CONFIG_ARCH_OMAP1510 is not set
|
||||||
CONFIG_ARCH_OMAP16XX=y
|
CONFIG_ARCH_OMAP16XX=y
|
||||||
CONFIG_ARCH_OMAP_OTG=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# OMAP Board Type
|
# OMAP Board Type
|
||||||
|
@ -101,21 +119,14 @@ CONFIG_ARCH_OMAP_OTG=y
|
||||||
# CONFIG_MACH_OMAP_INNOVATOR is not set
|
# CONFIG_MACH_OMAP_INNOVATOR is not set
|
||||||
CONFIG_MACH_OMAP_H2=y
|
CONFIG_MACH_OMAP_H2=y
|
||||||
# CONFIG_MACH_OMAP_H3 is not set
|
# CONFIG_MACH_OMAP_H3 is not set
|
||||||
# CONFIG_MACH_OMAP_H4 is not set
|
|
||||||
# CONFIG_MACH_OMAP_OSK is not set
|
# CONFIG_MACH_OMAP_OSK is not set
|
||||||
# CONFIG_MACH_OMAP_GENERIC is not set
|
# CONFIG_MACH_OMAP_GENERIC is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# OMAP Feature Selections
|
# OMAP CPU Speed
|
||||||
#
|
#
|
||||||
CONFIG_OMAP_MUX=y
|
# CONFIG_OMAP_CLOCKS_SET_BY_BOOTLOADER is not set
|
||||||
# CONFIG_OMAP_MUX_DEBUG is not set
|
# CONFIG_OMAP_ARM_216MHZ is not set
|
||||||
CONFIG_OMAP_MUX_WARNINGS=y
|
|
||||||
CONFIG_OMAP_MPU_TIMER=y
|
|
||||||
# CONFIG_OMAP_32K_TIMER is not set
|
|
||||||
CONFIG_OMAP_LL_DEBUG_UART1=y
|
|
||||||
# CONFIG_OMAP_LL_DEBUG_UART2 is not set
|
|
||||||
# CONFIG_OMAP_LL_DEBUG_UART3 is not set
|
|
||||||
CONFIG_OMAP_ARM_192MHZ=y
|
CONFIG_OMAP_ARM_192MHZ=y
|
||||||
# CONFIG_OMAP_ARM_168MHZ is not set
|
# CONFIG_OMAP_ARM_168MHZ is not set
|
||||||
# CONFIG_OMAP_ARM_120MHZ is not set
|
# CONFIG_OMAP_ARM_120MHZ is not set
|
||||||
|
@ -145,6 +156,7 @@ CONFIG_ARM_THUMB=y
|
||||||
#
|
#
|
||||||
# Bus support
|
# Bus support
|
||||||
#
|
#
|
||||||
|
CONFIG_ISA_DMA_API=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# PCCARD (PCMCIA/CardBus) support
|
# PCCARD (PCMCIA/CardBus) support
|
||||||
|
@ -154,7 +166,16 @@ CONFIG_ARM_THUMB=y
|
||||||
#
|
#
|
||||||
# Kernel Features
|
# Kernel Features
|
||||||
#
|
#
|
||||||
|
# CONFIG_SMP is not set
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
|
CONFIG_NO_IDLE_HZ=y
|
||||||
|
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||||
|
CONFIG_SELECT_MEMORY_MODEL=y
|
||||||
|
CONFIG_FLATMEM_MANUAL=y
|
||||||
|
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||||
|
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||||
|
CONFIG_FLATMEM=y
|
||||||
|
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||||
# CONFIG_LEDS is not set
|
# CONFIG_LEDS is not set
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
CONFIG_ALIGNMENT_TRAP=y
|
||||||
|
|
||||||
|
@ -166,6 +187,22 @@ CONFIG_ZBOOT_ROM_BSS=0x0
|
||||||
CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
|
CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
|
||||||
# CONFIG_XIP_KERNEL is not set
|
# CONFIG_XIP_KERNEL is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# CPU Frequency scaling
|
||||||
|
#
|
||||||
|
CONFIG_CPU_FREQ=y
|
||||||
|
CONFIG_CPU_FREQ_TABLE=y
|
||||||
|
# CONFIG_CPU_FREQ_DEBUG is not set
|
||||||
|
CONFIG_CPU_FREQ_STAT=y
|
||||||
|
# CONFIG_CPU_FREQ_STAT_DETAILS is not set
|
||||||
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||||
|
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
|
||||||
|
# CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set
|
||||||
|
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
|
||||||
|
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||||
|
# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set
|
||||||
|
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Floating point emulation
|
# Floating point emulation
|
||||||
#
|
#
|
||||||
|
@ -202,7 +239,6 @@ CONFIG_PM=y
|
||||||
CONFIG_STANDALONE=y
|
CONFIG_STANDALONE=y
|
||||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
CONFIG_DEBUG_DRIVER=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Memory Technology Devices (MTD)
|
# Memory Technology Devices (MTD)
|
||||||
|
@ -292,7 +328,6 @@ CONFIG_MTD_CFI_UTIL=y
|
||||||
#
|
#
|
||||||
# Block devices
|
# Block devices
|
||||||
#
|
#
|
||||||
# CONFIG_BLK_DEV_FD is not set
|
|
||||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||||
CONFIG_BLK_DEV_LOOP=y
|
CONFIG_BLK_DEV_LOOP=y
|
||||||
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
|
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
|
||||||
|
@ -327,6 +362,7 @@ CONFIG_SCSI_PROC_FS=y
|
||||||
# CONFIG_CHR_DEV_OSST is not set
|
# CONFIG_CHR_DEV_OSST is not set
|
||||||
# CONFIG_BLK_DEV_SR is not set
|
# CONFIG_BLK_DEV_SR is not set
|
||||||
# CONFIG_CHR_DEV_SG is not set
|
# CONFIG_CHR_DEV_SG is not set
|
||||||
|
# CONFIG_CHR_DEV_SCH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
||||||
|
@ -356,6 +392,7 @@ CONFIG_SCSI_PROC_FS=y
|
||||||
#
|
#
|
||||||
# Fusion MPT device support
|
# Fusion MPT device support
|
||||||
#
|
#
|
||||||
|
# CONFIG_FUSION is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# IEEE 1394 (FireWire) support
|
# IEEE 1394 (FireWire) support
|
||||||
|
@ -375,12 +412,12 @@ CONFIG_NET=y
|
||||||
#
|
#
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
# CONFIG_PACKET_MMAP is not set
|
# CONFIG_PACKET_MMAP is not set
|
||||||
# CONFIG_NETLINK_DEV is not set
|
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||||
|
CONFIG_IP_FIB_HASH=y
|
||||||
CONFIG_IP_PNP=y
|
CONFIG_IP_PNP=y
|
||||||
CONFIG_IP_PNP_DHCP=y
|
CONFIG_IP_PNP_DHCP=y
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
CONFIG_IP_PNP_BOOTP=y
|
||||||
|
@ -395,6 +432,8 @@ CONFIG_IP_PNP_BOOTP=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
CONFIG_IP_TCPDIAG=y
|
CONFIG_IP_TCPDIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
|
CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
|
||||||
|
@ -442,6 +481,7 @@ CONFIG_NETDEVICES=y
|
||||||
CONFIG_NET_ETHERNET=y
|
CONFIG_NET_ETHERNET=y
|
||||||
CONFIG_MII=y
|
CONFIG_MII=y
|
||||||
CONFIG_SMC91X=y
|
CONFIG_SMC91X=y
|
||||||
|
# CONFIG_DM9000 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (1000 Mbit)
|
# Ethernet (1000 Mbit)
|
||||||
|
@ -518,7 +558,6 @@ CONFIG_SERIO=y
|
||||||
CONFIG_SERIO_SERPORT=y
|
CONFIG_SERIO_SERPORT=y
|
||||||
# CONFIG_SERIO_RAW is not set
|
# CONFIG_SERIO_RAW is not set
|
||||||
# CONFIG_GAMEPORT is not set
|
# CONFIG_GAMEPORT is not set
|
||||||
CONFIG_SOUND_GAMEPORT=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Character devices
|
# Character devices
|
||||||
|
@ -567,13 +606,11 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
#
|
#
|
||||||
# Ftape, the floppy tape device driver
|
# Ftape, the floppy tape device driver
|
||||||
#
|
#
|
||||||
# CONFIG_DRM is not set
|
|
||||||
# CONFIG_RAW_DRIVER is not set
|
# CONFIG_RAW_DRIVER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -604,7 +641,9 @@ CONFIG_I2C_CHARDEV=y
|
||||||
# CONFIG_SENSORS_ADM1025 is not set
|
# CONFIG_SENSORS_ADM1025 is not set
|
||||||
# CONFIG_SENSORS_ADM1026 is not set
|
# CONFIG_SENSORS_ADM1026 is not set
|
||||||
# CONFIG_SENSORS_ADM1031 is not set
|
# CONFIG_SENSORS_ADM1031 is not set
|
||||||
|
# CONFIG_SENSORS_ADM9240 is not set
|
||||||
# CONFIG_SENSORS_ASB100 is not set
|
# CONFIG_SENSORS_ASB100 is not set
|
||||||
|
# CONFIG_SENSORS_ATXP1 is not set
|
||||||
# CONFIG_SENSORS_DS1621 is not set
|
# CONFIG_SENSORS_DS1621 is not set
|
||||||
# CONFIG_SENSORS_FSCHER is not set
|
# CONFIG_SENSORS_FSCHER is not set
|
||||||
# CONFIG_SENSORS_FSCPOS is not set
|
# CONFIG_SENSORS_FSCPOS is not set
|
||||||
|
@ -620,6 +659,7 @@ CONFIG_I2C_CHARDEV=y
|
||||||
# CONFIG_SENSORS_LM85 is not set
|
# CONFIG_SENSORS_LM85 is not set
|
||||||
# CONFIG_SENSORS_LM87 is not set
|
# CONFIG_SENSORS_LM87 is not set
|
||||||
# CONFIG_SENSORS_LM90 is not set
|
# CONFIG_SENSORS_LM90 is not set
|
||||||
|
# CONFIG_SENSORS_LM92 is not set
|
||||||
# CONFIG_SENSORS_MAX1619 is not set
|
# CONFIG_SENSORS_MAX1619 is not set
|
||||||
# CONFIG_SENSORS_PC87360 is not set
|
# CONFIG_SENSORS_PC87360 is not set
|
||||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||||
|
@ -627,15 +667,21 @@ CONFIG_I2C_CHARDEV=y
|
||||||
# CONFIG_SENSORS_W83781D is not set
|
# CONFIG_SENSORS_W83781D is not set
|
||||||
# CONFIG_SENSORS_W83L785TS is not set
|
# CONFIG_SENSORS_W83L785TS is not set
|
||||||
# CONFIG_SENSORS_W83627HF is not set
|
# CONFIG_SENSORS_W83627HF is not set
|
||||||
|
# CONFIG_SENSORS_W83627EHF is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Other I2C Chip support
|
# Other I2C Chip support
|
||||||
#
|
#
|
||||||
|
# CONFIG_SENSORS_DS1337 is not set
|
||||||
|
# CONFIG_SENSORS_DS1374 is not set
|
||||||
# CONFIG_SENSORS_EEPROM is not set
|
# CONFIG_SENSORS_EEPROM is not set
|
||||||
# CONFIG_SENSORS_PCF8574 is not set
|
# CONFIG_SENSORS_PCF8574 is not set
|
||||||
|
# CONFIG_SENSORS_PCA9539 is not set
|
||||||
# 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_ISP1301_OMAP=y
|
CONFIG_ISP1301_OMAP=y
|
||||||
|
CONFIG_TPS65010=y
|
||||||
|
# CONFIG_SENSORS_MAX6875 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
|
||||||
|
@ -663,8 +709,10 @@ CONFIG_FB=y
|
||||||
# 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_SOFT_CURSOR 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
|
||||||
|
# CONFIG_FB_S1D13XXX is not set
|
||||||
# CONFIG_FB_VIRTUAL is not set
|
# CONFIG_FB_VIRTUAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -677,11 +725,13 @@ CONFIG_FONTS=y
|
||||||
CONFIG_FONT_8x8=y
|
CONFIG_FONT_8x8=y
|
||||||
CONFIG_FONT_8x16=y
|
CONFIG_FONT_8x16=y
|
||||||
# CONFIG_FONT_6x11 is not set
|
# CONFIG_FONT_6x11 is not set
|
||||||
|
# CONFIG_FONT_7x14 is not set
|
||||||
# CONFIG_FONT_PEARL_8x8 is not set
|
# CONFIG_FONT_PEARL_8x8 is not set
|
||||||
# CONFIG_FONT_ACORN_8x8 is not set
|
# CONFIG_FONT_ACORN_8x8 is not set
|
||||||
# CONFIG_FONT_MINI_4x6 is not set
|
# CONFIG_FONT_MINI_4x6 is not set
|
||||||
# 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
|
||||||
|
|
||||||
#
|
#
|
||||||
# Logo configuration
|
# Logo configuration
|
||||||
|
@ -729,14 +779,14 @@ CONFIG_USB_ARCH_HAS_OHCI=y
|
||||||
#
|
#
|
||||||
CONFIG_USB_GADGET=y
|
CONFIG_USB_GADGET=y
|
||||||
# CONFIG_USB_GADGET_DEBUG_FILES 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_SA1100 is not set
|
|
||||||
# CONFIG_USB_GADGET_LH7A40X is not set
|
# CONFIG_USB_GADGET_LH7A40X is not set
|
||||||
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
|
||||||
CONFIG_USB_GADGET_OMAP=y
|
CONFIG_USB_GADGET_OMAP=y
|
||||||
CONFIG_USB_OMAP=y
|
CONFIG_USB_OMAP=y
|
||||||
|
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
||||||
# CONFIG_USB_GADGET_DUALSPEED 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=y
|
||||||
|
@ -755,6 +805,7 @@ CONFIG_USB_ETH_RNDIS=y
|
||||||
#
|
#
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
# CONFIG_EXT2_FS_XATTR is not set
|
# CONFIG_EXT2_FS_XATTR is not set
|
||||||
|
# CONFIG_EXT2_FS_XIP is not set
|
||||||
# CONFIG_EXT3_FS is not set
|
# CONFIG_EXT3_FS is not set
|
||||||
# CONFIG_JBD is not set
|
# CONFIG_JBD is not set
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
|
@ -791,7 +842,6 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_DEVFS_FS is not set
|
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
# 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
|
||||||
|
@ -828,12 +878,14 @@ CONFIG_CRAMFS=y
|
||||||
#
|
#
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=y
|
||||||
CONFIG_NFS_V3=y
|
CONFIG_NFS_V3=y
|
||||||
|
# CONFIG_NFS_V3_ACL is not set
|
||||||
CONFIG_NFS_V4=y
|
CONFIG_NFS_V4=y
|
||||||
# CONFIG_NFS_DIRECTIO is not set
|
# CONFIG_NFS_DIRECTIO is not set
|
||||||
# CONFIG_NFSD is not set
|
# CONFIG_NFSD is not set
|
||||||
CONFIG_ROOT_NFS=y
|
CONFIG_ROOT_NFS=y
|
||||||
CONFIG_LOCKD=y
|
CONFIG_LOCKD=y
|
||||||
CONFIG_LOCKD_V4=y
|
CONFIG_LOCKD_V4=y
|
||||||
|
CONFIG_NFS_COMMON=y
|
||||||
CONFIG_SUNRPC=y
|
CONFIG_SUNRPC=y
|
||||||
CONFIG_SUNRPC_GSS=y
|
CONFIG_SUNRPC_GSS=y
|
||||||
CONFIG_RPCSEC_GSS_KRB5=y
|
CONFIG_RPCSEC_GSS_KRB5=y
|
||||||
|
@ -903,24 +955,11 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
||||||
# Kernel hacking
|
# Kernel hacking
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
# CONFIG_DEBUG_KERNEL is not set
|
||||||
# CONFIG_MAGIC_SYSRQ is not set
|
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
# CONFIG_SCHEDSTATS is not set
|
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
|
||||||
CONFIG_DEBUG_PREEMPT=y
|
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
CONFIG_DEBUG_INFO=y
|
|
||||||
# CONFIG_DEBUG_FS is not set
|
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
CONFIG_DEBUG_USER=y
|
# CONFIG_DEBUG_USER is not set
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
|
||||||
CONFIG_DEBUG_ERRORS=y
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
# CONFIG_DEBUG_ICEDCC is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Security options
|
# Security options
|
||||||
|
|
|
@ -570,7 +570,6 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||||
#
|
#
|
||||||
CONFIG_SERIAL_S3C2410=y
|
CONFIG_SERIAL_S3C2410=y
|
||||||
CONFIG_SERIAL_S3C2410_CONSOLE=y
|
CONFIG_SERIAL_S3C2410_CONSOLE=y
|
||||||
CONFIG_SERIAL_BAST_SIO=y
|
|
||||||
CONFIG_SERIAL_CORE=y
|
CONFIG_SERIAL_CORE=y
|
||||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||||
CONFIG_UNIX98_PTYS=y
|
CONFIG_UNIX98_PTYS=y
|
||||||
|
|
|
@ -1,22 +1,21 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.12-rc1-bk2
|
# Linux kernel version: 2.6.12-git3
|
||||||
# Sun Mar 27 23:59:14 2005
|
# Sat Jul 16 15:21:47 2005
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
CONFIG_UID16=y
|
CONFIG_UID16=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_GENERIC_IOMAP=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Code maturity level options
|
# Code maturity level options
|
||||||
#
|
#
|
||||||
CONFIG_EXPERIMENTAL=y
|
CONFIG_EXPERIMENTAL=y
|
||||||
# CONFIG_CLEAN_COMPILE is not set
|
CONFIG_CLEAN_COMPILE=y
|
||||||
CONFIG_BROKEN=y
|
|
||||||
CONFIG_BROKEN_ON_SMP=y
|
CONFIG_BROKEN_ON_SMP=y
|
||||||
|
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
|
|
||||||
#
|
#
|
||||||
# General setup
|
# General setup
|
||||||
|
@ -33,7 +32,10 @@ CONFIG_KOBJECT_UEVENT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||||
|
CONFIG_PRINTK=y
|
||||||
|
CONFIG_BUG=y
|
||||||
CONFIG_BASE_FULL=y
|
CONFIG_BASE_FULL=y
|
||||||
CONFIG_FUTEX=y
|
CONFIG_FUTEX=y
|
||||||
CONFIG_EPOLL=y
|
CONFIG_EPOLL=y
|
||||||
|
@ -81,6 +83,7 @@ CONFIG_ARCH_SHARK=y
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
# CONFIG_ARCH_VERSATILE 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
|
||||||
|
|
||||||
#
|
#
|
||||||
# Processor Type
|
# Processor Type
|
||||||
|
@ -103,10 +106,12 @@ CONFIG_CPU_TLB_V4WB=y
|
||||||
#
|
#
|
||||||
CONFIG_ISA=y
|
CONFIG_ISA=y
|
||||||
CONFIG_ISA_DMA=y
|
CONFIG_ISA_DMA=y
|
||||||
|
CONFIG_ISA_DMA_API=y
|
||||||
CONFIG_PCI=y
|
CONFIG_PCI=y
|
||||||
CONFIG_PCI_HOST_VIA82C505=y
|
CONFIG_PCI_HOST_VIA82C505=y
|
||||||
CONFIG_PCI_LEGACY_PROC=y
|
CONFIG_PCI_LEGACY_PROC=y
|
||||||
# CONFIG_PCI_NAMES is not set
|
# CONFIG_PCI_NAMES is not set
|
||||||
|
# CONFIG_PCI_DEBUG is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# PCCARD (PCMCIA/CardBus) support
|
# PCCARD (PCMCIA/CardBus) support
|
||||||
|
@ -116,7 +121,9 @@ CONFIG_PCI_LEGACY_PROC=y
|
||||||
#
|
#
|
||||||
# Kernel Features
|
# Kernel Features
|
||||||
#
|
#
|
||||||
|
# CONFIG_SMP is not set
|
||||||
# CONFIG_PREEMPT is not set
|
# CONFIG_PREEMPT is not set
|
||||||
|
# CONFIG_DISCONTIGMEM is not set
|
||||||
CONFIG_LEDS=y
|
CONFIG_LEDS=y
|
||||||
CONFIG_LEDS_TIMER=y
|
CONFIG_LEDS_TIMER=y
|
||||||
# CONFIG_LEDS_CPU is not set
|
# CONFIG_LEDS_CPU is not set
|
||||||
|
@ -163,6 +170,7 @@ CONFIG_BINFMT_ELF=y
|
||||||
# CONFIG_STANDALONE is not set
|
# CONFIG_STANDALONE is not set
|
||||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
# CONFIG_FW_LOADER is not set
|
# CONFIG_FW_LOADER is not set
|
||||||
|
# CONFIG_DEBUG_DRIVER is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Memory Technology Devices (MTD)
|
# Memory Technology Devices (MTD)
|
||||||
|
@ -172,8 +180,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
#
|
#
|
||||||
CONFIG_PARPORT=y
|
CONFIG_PARPORT=m
|
||||||
CONFIG_PARPORT_PC=y
|
CONFIG_PARPORT_PC=m
|
||||||
# CONFIG_PARPORT_SERIAL is not set
|
# CONFIG_PARPORT_SERIAL is not set
|
||||||
# CONFIG_PARPORT_PC_FIFO is not set
|
# CONFIG_PARPORT_PC_FIFO is not set
|
||||||
# CONFIG_PARPORT_PC_SUPERIO is not set
|
# CONFIG_PARPORT_PC_SUPERIO is not set
|
||||||
|
@ -189,7 +197,6 @@ CONFIG_PARPORT_PC=y
|
||||||
#
|
#
|
||||||
# Block devices
|
# Block devices
|
||||||
#
|
#
|
||||||
# CONFIG_BLK_DEV_FD is not set
|
|
||||||
# CONFIG_BLK_DEV_XD is not set
|
# CONFIG_BLK_DEV_XD is not set
|
||||||
# CONFIG_PARIDE is not set
|
# CONFIG_PARIDE is not set
|
||||||
# CONFIG_BLK_CPQ_DA is not set
|
# CONFIG_BLK_CPQ_DA is not set
|
||||||
|
@ -229,7 +236,7 @@ CONFIG_BLK_DEV_IDE=y
|
||||||
# CONFIG_BLK_DEV_IDE_SATA is not set
|
# CONFIG_BLK_DEV_IDE_SATA is not set
|
||||||
CONFIG_BLK_DEV_IDEDISK=y
|
CONFIG_BLK_DEV_IDEDISK=y
|
||||||
# CONFIG_IDEDISK_MULTI_MODE is not set
|
# CONFIG_IDEDISK_MULTI_MODE is not set
|
||||||
CONFIG_BLK_DEV_IDECD=y
|
CONFIG_BLK_DEV_IDECD=m
|
||||||
# CONFIG_BLK_DEV_IDETAPE is not set
|
# CONFIG_BLK_DEV_IDETAPE is not set
|
||||||
CONFIG_BLK_DEV_IDEFLOPPY=y
|
CONFIG_BLK_DEV_IDEFLOPPY=y
|
||||||
# CONFIG_BLK_DEV_IDESCSI is not set
|
# CONFIG_BLK_DEV_IDESCSI is not set
|
||||||
|
@ -261,6 +268,7 @@ CONFIG_CHR_DEV_ST=m
|
||||||
CONFIG_BLK_DEV_SR=m
|
CONFIG_BLK_DEV_SR=m
|
||||||
# CONFIG_BLK_DEV_SR_VENDOR is not set
|
# CONFIG_BLK_DEV_SR_VENDOR is not set
|
||||||
CONFIG_CHR_DEV_SG=m
|
CONFIG_CHR_DEV_SG=m
|
||||||
|
# CONFIG_CHR_DEV_SCH is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
||||||
|
@ -290,17 +298,14 @@ CONFIG_CHR_DEV_SG=m
|
||||||
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
# CONFIG_SCSI_AIC7XXX_OLD is not set
|
||||||
# CONFIG_SCSI_AIC79XX is not set
|
# CONFIG_SCSI_AIC79XX is not set
|
||||||
# CONFIG_SCSI_DPT_I2O is not set
|
# CONFIG_SCSI_DPT_I2O is not set
|
||||||
# CONFIG_SCSI_ADVANSYS is not set
|
|
||||||
# CONFIG_SCSI_IN2000 is not set
|
# CONFIG_SCSI_IN2000 is not set
|
||||||
# CONFIG_MEGARAID_NEWGEN is not set
|
# CONFIG_MEGARAID_NEWGEN is not set
|
||||||
# CONFIG_MEGARAID_LEGACY is not set
|
# CONFIG_MEGARAID_LEGACY is not set
|
||||||
# CONFIG_SCSI_SATA is not set
|
# CONFIG_SCSI_SATA is not set
|
||||||
# CONFIG_SCSI_BUSLOGIC is not set
|
# CONFIG_SCSI_BUSLOGIC is not set
|
||||||
# CONFIG_SCSI_CPQFCTS is not set
|
|
||||||
# CONFIG_SCSI_DMX3191D is not set
|
# CONFIG_SCSI_DMX3191D is not set
|
||||||
# CONFIG_SCSI_DTC3280 is not set
|
# CONFIG_SCSI_DTC3280 is not set
|
||||||
# CONFIG_SCSI_EATA is not set
|
# CONFIG_SCSI_EATA is not set
|
||||||
# CONFIG_SCSI_EATA_PIO is not set
|
|
||||||
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
# CONFIG_SCSI_FUTURE_DOMAIN is not set
|
||||||
# CONFIG_SCSI_GDTH is not set
|
# CONFIG_SCSI_GDTH is not set
|
||||||
# CONFIG_SCSI_GENERIC_NCR5380 is not set
|
# CONFIG_SCSI_GENERIC_NCR5380 is not set
|
||||||
|
@ -314,11 +319,8 @@ CONFIG_CHR_DEV_SG=m
|
||||||
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
# CONFIG_SCSI_SYM53C8XX_2 is not set
|
||||||
# CONFIG_SCSI_IPR is not set
|
# CONFIG_SCSI_IPR is not set
|
||||||
# CONFIG_SCSI_PAS16 is not set
|
# CONFIG_SCSI_PAS16 is not set
|
||||||
# CONFIG_SCSI_PCI2000 is not set
|
|
||||||
# CONFIG_SCSI_PCI2220I is not set
|
|
||||||
# CONFIG_SCSI_PSI240I is not set
|
# CONFIG_SCSI_PSI240I is not set
|
||||||
# CONFIG_SCSI_QLOGIC_FAS is not set
|
# CONFIG_SCSI_QLOGIC_FAS is not set
|
||||||
# CONFIG_SCSI_QLOGIC_ISP is not set
|
|
||||||
# CONFIG_SCSI_QLOGIC_FC is not set
|
# CONFIG_SCSI_QLOGIC_FC is not set
|
||||||
# CONFIG_SCSI_QLOGIC_1280 is not set
|
# CONFIG_SCSI_QLOGIC_1280 is not set
|
||||||
CONFIG_SCSI_QLA2XXX=m
|
CONFIG_SCSI_QLA2XXX=m
|
||||||
|
@ -327,6 +329,7 @@ CONFIG_SCSI_QLA2XXX=m
|
||||||
# CONFIG_SCSI_QLA2300 is not set
|
# CONFIG_SCSI_QLA2300 is not set
|
||||||
# CONFIG_SCSI_QLA2322 is not set
|
# CONFIG_SCSI_QLA2322 is not set
|
||||||
# CONFIG_SCSI_QLA6312 is not set
|
# CONFIG_SCSI_QLA6312 is not set
|
||||||
|
# CONFIG_SCSI_LPFC is not set
|
||||||
# CONFIG_SCSI_SYM53C416 is not set
|
# CONFIG_SCSI_SYM53C416 is not set
|
||||||
# CONFIG_SCSI_DC395x is not set
|
# CONFIG_SCSI_DC395x is not set
|
||||||
# CONFIG_SCSI_DC390T is not set
|
# CONFIG_SCSI_DC390T is not set
|
||||||
|
@ -344,6 +347,8 @@ CONFIG_SCSI_QLA2XXX=m
|
||||||
# Fusion MPT device support
|
# Fusion MPT device support
|
||||||
#
|
#
|
||||||
# CONFIG_FUSION is not set
|
# CONFIG_FUSION is not set
|
||||||
|
# CONFIG_FUSION_SPI is not set
|
||||||
|
# CONFIG_FUSION_FC is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# IEEE 1394 (FireWire) support
|
# IEEE 1394 (FireWire) support
|
||||||
|
@ -365,7 +370,6 @@ CONFIG_NET=y
|
||||||
#
|
#
|
||||||
CONFIG_PACKET=y
|
CONFIG_PACKET=y
|
||||||
# CONFIG_PACKET_MMAP is not set
|
# CONFIG_PACKET_MMAP is not set
|
||||||
# CONFIG_NETLINK_DEV is not set
|
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
|
@ -380,7 +384,7 @@ CONFIG_INET=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_IP_TCPDIAG=y
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_NETFILTER is not set
|
# CONFIG_NETFILTER is not set
|
||||||
|
@ -439,6 +443,7 @@ CONFIG_NET_ETHERNET=y
|
||||||
# CONFIG_LANCE is not set
|
# CONFIG_LANCE is not set
|
||||||
# CONFIG_NET_VENDOR_SMC is not set
|
# CONFIG_NET_VENDOR_SMC is not set
|
||||||
# CONFIG_SMC91X is not set
|
# CONFIG_SMC91X is not set
|
||||||
|
# CONFIG_DM9000 is not set
|
||||||
# CONFIG_NET_VENDOR_RACAL is not set
|
# CONFIG_NET_VENDOR_RACAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -483,9 +488,11 @@ CONFIG_CS89x0=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_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
|
||||||
# CONFIG_TIGON3 is not set
|
# CONFIG_TIGON3 is not set
|
||||||
|
# CONFIG_BNX2 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10000 Mbit)
|
# Ethernet (10000 Mbit)
|
||||||
|
@ -569,7 +576,6 @@ CONFIG_SERIO_I8042=y
|
||||||
CONFIG_SERIO_LIBPS2=y
|
CONFIG_SERIO_LIBPS2=y
|
||||||
# CONFIG_SERIO_RAW is not set
|
# CONFIG_SERIO_RAW is not set
|
||||||
# CONFIG_GAMEPORT is not set
|
# CONFIG_GAMEPORT is not set
|
||||||
CONFIG_SOUND_GAMEPORT=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Character devices
|
# Character devices
|
||||||
|
@ -592,6 +598,7 @@ CONFIG_SERIAL_8250_NR_UARTS=4
|
||||||
#
|
#
|
||||||
CONFIG_SERIAL_CORE=y
|
CONFIG_SERIAL_CORE=y
|
||||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||||
|
# CONFIG_SERIAL_JSM is not set
|
||||||
CONFIG_UNIX98_PTYS=y
|
CONFIG_UNIX98_PTYS=y
|
||||||
CONFIG_LEGACY_PTYS=y
|
CONFIG_LEGACY_PTYS=y
|
||||||
CONFIG_LEGACY_PTY_COUNT=256
|
CONFIG_LEGACY_PTY_COUNT=256
|
||||||
|
@ -653,6 +660,7 @@ CONFIG_FB_CFB_FILLRECT=y
|
||||||
CONFIG_FB_CFB_COPYAREA=y
|
CONFIG_FB_CFB_COPYAREA=y
|
||||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||||
CONFIG_FB_SOFT_CURSOR=y
|
CONFIG_FB_SOFT_CURSOR=y
|
||||||
|
# CONFIG_FB_MACMODES is not set
|
||||||
# CONFIG_FB_MODE_HELPERS is not set
|
# CONFIG_FB_MODE_HELPERS is not set
|
||||||
# CONFIG_FB_TILEBLITTING is not set
|
# CONFIG_FB_TILEBLITTING is not set
|
||||||
# CONFIG_FB_CIRRUS is not set
|
# CONFIG_FB_CIRRUS is not set
|
||||||
|
@ -674,7 +682,7 @@ CONFIG_FB_CYBER2000=y
|
||||||
# CONFIG_FB_3DFX is not set
|
# CONFIG_FB_3DFX is not set
|
||||||
# CONFIG_FB_VOODOO1 is not set
|
# CONFIG_FB_VOODOO1 is not set
|
||||||
# CONFIG_FB_TRIDENT is not set
|
# CONFIG_FB_TRIDENT is not set
|
||||||
# CONFIG_FB_PM3 is not set
|
# CONFIG_FB_S1D13XXX is not set
|
||||||
# CONFIG_FB_VIRTUAL is not set
|
# CONFIG_FB_VIRTUAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -808,7 +816,7 @@ CONFIG_DNOTIFY=y
|
||||||
#
|
#
|
||||||
# CD-ROM/DVD Filesystems
|
# CD-ROM/DVD Filesystems
|
||||||
#
|
#
|
||||||
CONFIG_ISO9660_FS=y
|
CONFIG_ISO9660_FS=m
|
||||||
CONFIG_JOLIET=y
|
CONFIG_JOLIET=y
|
||||||
# CONFIG_ZISOFS is not set
|
# CONFIG_ZISOFS is not set
|
||||||
# CONFIG_UDF_FS is not set
|
# CONFIG_UDF_FS is not set
|
||||||
|
@ -816,9 +824,9 @@ CONFIG_JOLIET=y
|
||||||
#
|
#
|
||||||
# DOS/FAT/NT Filesystems
|
# DOS/FAT/NT Filesystems
|
||||||
#
|
#
|
||||||
CONFIG_FAT_FS=y
|
CONFIG_FAT_FS=m
|
||||||
CONFIG_MSDOS_FS=y
|
CONFIG_MSDOS_FS=m
|
||||||
CONFIG_VFAT_FS=y
|
CONFIG_VFAT_FS=m
|
||||||
CONFIG_FAT_DEFAULT_CODEPAGE=437
|
CONFIG_FAT_DEFAULT_CODEPAGE=437
|
||||||
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||||
# CONFIG_NTFS_FS is not set
|
# CONFIG_NTFS_FS is not set
|
||||||
|
@ -833,7 +841,6 @@ CONFIG_DEVFS_MOUNT=y
|
||||||
# CONFIG_DEVFS_DEBUG is not set
|
# CONFIG_DEVFS_DEBUG is not set
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||||
# CONFIG_TMPFS is not set
|
# CONFIG_TMPFS is not set
|
||||||
# CONFIG_HUGETLBFS is not set
|
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
|
|
||||||
|
@ -857,13 +864,14 @@ CONFIG_RAMFS=y
|
||||||
#
|
#
|
||||||
# Network File Systems
|
# Network File Systems
|
||||||
#
|
#
|
||||||
CONFIG_NFS_FS=y
|
CONFIG_NFS_FS=m
|
||||||
# CONFIG_NFS_V3 is not set
|
CONFIG_NFS_V3=y
|
||||||
# CONFIG_NFS_V4 is not set
|
# CONFIG_NFS_V4 is not set
|
||||||
# CONFIG_NFS_DIRECTIO is not set
|
# CONFIG_NFS_DIRECTIO is not set
|
||||||
# CONFIG_NFSD is not set
|
# CONFIG_NFSD is not set
|
||||||
CONFIG_LOCKD=y
|
CONFIG_LOCKD=m
|
||||||
CONFIG_SUNRPC=y
|
CONFIG_LOCKD_V4=y
|
||||||
|
CONFIG_SUNRPC=m
|
||||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||||
# CONFIG_SMB_FS is not set
|
# CONFIG_SMB_FS is not set
|
||||||
|
@ -895,12 +903,12 @@ CONFIG_MSDOS_PARTITION=y
|
||||||
#
|
#
|
||||||
# Native Language Support
|
# Native Language Support
|
||||||
#
|
#
|
||||||
CONFIG_NLS=y
|
CONFIG_NLS=m
|
||||||
CONFIG_NLS_DEFAULT="iso8859-1"
|
CONFIG_NLS_DEFAULT="iso8859-1"
|
||||||
CONFIG_NLS_CODEPAGE_437=y
|
CONFIG_NLS_CODEPAGE_437=m
|
||||||
# CONFIG_NLS_CODEPAGE_737 is not set
|
# CONFIG_NLS_CODEPAGE_737 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_775 is not set
|
# CONFIG_NLS_CODEPAGE_775 is not set
|
||||||
CONFIG_NLS_CODEPAGE_850=y
|
CONFIG_NLS_CODEPAGE_850=m
|
||||||
# CONFIG_NLS_CODEPAGE_852 is not set
|
# CONFIG_NLS_CODEPAGE_852 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_855 is not set
|
# CONFIG_NLS_CODEPAGE_855 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_857 is not set
|
# CONFIG_NLS_CODEPAGE_857 is not set
|
||||||
|
@ -921,7 +929,7 @@ CONFIG_NLS_CODEPAGE_850=y
|
||||||
# CONFIG_NLS_CODEPAGE_1250 is not set
|
# CONFIG_NLS_CODEPAGE_1250 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_1251 is not set
|
# CONFIG_NLS_CODEPAGE_1251 is not set
|
||||||
# CONFIG_NLS_ASCII is not set
|
# CONFIG_NLS_ASCII is not set
|
||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=m
|
||||||
# CONFIG_NLS_ISO8859_2 is not set
|
# CONFIG_NLS_ISO8859_2 is not set
|
||||||
# CONFIG_NLS_ISO8859_3 is not set
|
# CONFIG_NLS_ISO8859_3 is not set
|
||||||
# CONFIG_NLS_ISO8859_4 is not set
|
# CONFIG_NLS_ISO8859_4 is not set
|
||||||
|
@ -945,11 +953,22 @@ CONFIG_NLS_ISO8859_1=y
|
||||||
# Kernel hacking
|
# Kernel hacking
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
# CONFIG_DEBUG_KERNEL is not set
|
CONFIG_DEBUG_KERNEL=y
|
||||||
|
# CONFIG_MAGIC_SYSRQ is not set
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
|
# CONFIG_SCHEDSTATS is not set
|
||||||
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
|
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||||
|
# CONFIG_DEBUG_KOBJECT is not set
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
|
# CONFIG_DEBUG_INFO is not set
|
||||||
|
# CONFIG_DEBUG_FS is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
|
# CONFIG_DEBUG_ERRORS is not set
|
||||||
|
# CONFIG_DEBUG_LL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Security options
|
# Security options
|
||||||
|
|
|
@ -131,7 +131,6 @@ void machine_halt(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(machine_halt);
|
|
||||||
|
|
||||||
void machine_power_off(void)
|
void machine_power_off(void)
|
||||||
{
|
{
|
||||||
|
@ -139,7 +138,6 @@ void machine_power_off(void)
|
||||||
pm_power_off();
|
pm_power_off();
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(machine_power_off);
|
|
||||||
|
|
||||||
void machine_restart(char * __unused)
|
void machine_restart(char * __unused)
|
||||||
{
|
{
|
||||||
|
@ -169,8 +167,6 @@ void machine_restart(char * __unused)
|
||||||
while (1);
|
while (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(machine_restart);
|
|
||||||
|
|
||||||
void __show_regs(struct pt_regs *regs)
|
void __show_regs(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
unsigned long flags = condition_codes(regs);
|
unsigned long flags = condition_codes(regs);
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
* The present bitmask indicates that the CPU is physically present.
|
* The present bitmask indicates that the CPU is physically present.
|
||||||
* The online bitmask indicates that the CPU is up and running.
|
* The online bitmask indicates that the CPU is up and running.
|
||||||
*/
|
*/
|
||||||
cpumask_t cpu_present_mask;
|
cpumask_t cpu_possible_map;
|
||||||
cpumask_t cpu_online_map;
|
cpumask_t cpu_online_map;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -78,7 +78,7 @@ struct smp_call_struct {
|
||||||
static struct smp_call_struct * volatile smp_call_function_data;
|
static struct smp_call_struct * volatile smp_call_function_data;
|
||||||
static DEFINE_SPINLOCK(smp_call_function_lock);
|
static DEFINE_SPINLOCK(smp_call_function_lock);
|
||||||
|
|
||||||
int __init __cpu_up(unsigned int cpu)
|
int __cpuinit __cpu_up(unsigned int cpu)
|
||||||
{
|
{
|
||||||
struct task_struct *idle;
|
struct task_struct *idle;
|
||||||
pgd_t *pgd;
|
pgd_t *pgd;
|
||||||
|
@ -159,7 +159,7 @@ int __init __cpu_up(unsigned int cpu)
|
||||||
* This is the secondary CPU boot entry. We're using this CPUs
|
* This is the secondary CPU boot entry. We're using this CPUs
|
||||||
* idle thread stack, but a set of temporary page tables.
|
* idle thread stack, but a set of temporary page tables.
|
||||||
*/
|
*/
|
||||||
asmlinkage void __init 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 = smp_processor_id();
|
||||||
|
@ -176,6 +176,7 @@ asmlinkage void __init secondary_start_kernel(void)
|
||||||
cpu_set(cpu, mm->cpu_vm_mask);
|
cpu_set(cpu, mm->cpu_vm_mask);
|
||||||
cpu_switch_mm(mm->pgd, mm);
|
cpu_switch_mm(mm->pgd, mm);
|
||||||
enter_lazy_tlb(mm, current);
|
enter_lazy_tlb(mm, current);
|
||||||
|
local_flush_tlb_all();
|
||||||
|
|
||||||
cpu_init();
|
cpu_init();
|
||||||
|
|
||||||
|
@ -209,7 +210,7 @@ asmlinkage void __init secondary_start_kernel(void)
|
||||||
* Called by both boot and secondaries to move global data into
|
* Called by both boot and secondaries to move global data into
|
||||||
* per-processor storage.
|
* per-processor storage.
|
||||||
*/
|
*/
|
||||||
void __init smp_store_cpu_info(unsigned int cpuid)
|
void __cpuinit smp_store_cpu_info(unsigned int cpuid)
|
||||||
{
|
{
|
||||||
struct cpuinfo_arm *cpu_info = &per_cpu(cpu_data, cpuid);
|
struct cpuinfo_arm *cpu_info = &per_cpu(cpu_data, cpuid);
|
||||||
|
|
||||||
|
@ -235,7 +236,8 @@ void __init smp_prepare_boot_cpu(void)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
|
|
||||||
cpu_set(cpu, cpu_present_mask);
|
cpu_set(cpu, cpu_possible_map);
|
||||||
|
cpu_set(cpu, cpu_present_map);
|
||||||
cpu_set(cpu, cpu_online_map);
|
cpu_set(cpu, cpu_online_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,7 +357,7 @@ void show_ipi_list(struct seq_file *p)
|
||||||
|
|
||||||
seq_puts(p, "IPI:");
|
seq_puts(p, "IPI:");
|
||||||
|
|
||||||
for_each_online_cpu(cpu)
|
for_each_present_cpu(cpu)
|
||||||
seq_printf(p, " %10lu", per_cpu(ipi_data, cpu).ipi_count);
|
seq_printf(p, " %10lu", per_cpu(ipi_data, cpu).ipi_count);
|
||||||
|
|
||||||
seq_putc(p, '\n');
|
seq_putc(p, '\n');
|
||||||
|
|
|
@ -248,16 +248,20 @@ static DEFINE_SPINLOCK(undef_lock);
|
||||||
|
|
||||||
void register_undef_hook(struct undef_hook *hook)
|
void register_undef_hook(struct undef_hook *hook)
|
||||||
{
|
{
|
||||||
spin_lock_irq(&undef_lock);
|
unsigned long flags;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&undef_lock, flags);
|
||||||
list_add(&hook->node, &undef_hook);
|
list_add(&hook->node, &undef_hook);
|
||||||
spin_unlock_irq(&undef_lock);
|
spin_unlock_irqrestore(&undef_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregister_undef_hook(struct undef_hook *hook)
|
void unregister_undef_hook(struct undef_hook *hook)
|
||||||
{
|
{
|
||||||
spin_lock_irq(&undef_lock);
|
unsigned long flags;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&undef_lock, flags);
|
||||||
list_del(&hook->node);
|
list_del(&hook->node);
|
||||||
spin_unlock_irq(&undef_lock);
|
spin_unlock_irqrestore(&undef_lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
asmlinkage void do_undefinstr(struct pt_regs *regs)
|
asmlinkage void do_undefinstr(struct pt_regs *regs)
|
||||||
|
|
|
@ -1,3 +1,33 @@
|
||||||
|
#if __LINUX_ARM_ARCH__ >= 6
|
||||||
|
.macro bitop, instr
|
||||||
|
mov r2, #1
|
||||||
|
and r3, r0, #7 @ Get bit offset
|
||||||
|
add r1, r1, r0, lsr #3 @ Get byte offset
|
||||||
|
mov r3, r2, lsl r3
|
||||||
|
1: ldrexb r2, [r1]
|
||||||
|
\instr r2, r2, r3
|
||||||
|
strexb r0, r2, [r1]
|
||||||
|
cmp r0, #0
|
||||||
|
bne 1b
|
||||||
|
mov pc, lr
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro testop, instr, store
|
||||||
|
and r3, r0, #7 @ Get bit offset
|
||||||
|
mov r2, #1
|
||||||
|
add r1, r1, r0, lsr #3 @ Get byte offset
|
||||||
|
mov r3, r2, lsl r3 @ create mask
|
||||||
|
1: ldrexb r2, [r1]
|
||||||
|
ands r0, r2, r3 @ save old value of bit
|
||||||
|
\instr r2, r2, r3 @ toggle bit
|
||||||
|
strexb ip, r2, [r1]
|
||||||
|
cmp ip, #0
|
||||||
|
bne 1b
|
||||||
|
cmp r0, #0
|
||||||
|
movne r0, #1
|
||||||
|
2: mov pc, lr
|
||||||
|
.endm
|
||||||
|
#else
|
||||||
.macro bitop, instr
|
.macro bitop, instr
|
||||||
and r2, r0, #7
|
and r2, r0, #7
|
||||||
mov r3, #1
|
mov r3, #1
|
||||||
|
@ -31,3 +61,4 @@
|
||||||
moveq r0, #0
|
moveq r0, #0
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
.endm
|
.endm
|
||||||
|
#endif
|
||||||
|
|
|
@ -11,73 +11,3 @@
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
#include <linux/kernel.h>
|
|
||||||
|
|
||||||
#include <asm/io.h>
|
|
||||||
|
|
||||||
void print_warning(void)
|
|
||||||
{
|
|
||||||
printk(KERN_WARNING "ins?/outs? not implemented on this architecture\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
void insl(unsigned int port, void *to, int len)
|
|
||||||
{
|
|
||||||
print_warning();
|
|
||||||
}
|
|
||||||
|
|
||||||
void insb(unsigned int port, void *to, int len)
|
|
||||||
{
|
|
||||||
print_warning();
|
|
||||||
}
|
|
||||||
|
|
||||||
void outsl(unsigned int port, const void *from, int len)
|
|
||||||
{
|
|
||||||
print_warning();
|
|
||||||
}
|
|
||||||
|
|
||||||
void outsb(unsigned int port, const void *from, int len)
|
|
||||||
{
|
|
||||||
print_warning();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* these should be in assembler again */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Purpose: read a block of data from a hardware register to memory.
|
|
||||||
* Proto : insw(int from_port, void *to, int len_in_words);
|
|
||||||
* Proto : inswb(int from_port, void *to, int len_in_bytes);
|
|
||||||
* Notes : increment to
|
|
||||||
*/
|
|
||||||
|
|
||||||
void insw(unsigned int port, void *to, int len)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
((unsigned short *) to)[i] = inw(port);
|
|
||||||
}
|
|
||||||
|
|
||||||
void inswb(unsigned int port, void *to, int len)
|
|
||||||
{
|
|
||||||
insw(port, to, len >> 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Purpose: write a block of data from memory to a hardware register.
|
|
||||||
* Proto : outsw(int to_reg, void *from, int len_in_words);
|
|
||||||
* Proto : outswb(int to_reg, void *from, int len_in_bytes);
|
|
||||||
* Notes : increments from
|
|
||||||
*/
|
|
||||||
|
|
||||||
void outsw(unsigned int port, const void *from, int len)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < len; i++)
|
|
||||||
outw(((unsigned short *) from)[i], port);
|
|
||||||
}
|
|
||||||
|
|
||||||
void outswb(unsigned int port, const void *from, int len)
|
|
||||||
{
|
|
||||||
outsw(port, from, len >> 2);
|
|
||||||
}
|
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/delay.h>
|
#include <asm/delay.h>
|
||||||
#include <asm/mmu_context.h>
|
#include <asm/mmu_context.h>
|
||||||
#include <asm/procinfo.h>
|
#include <asm/procinfo.h>
|
||||||
|
@ -27,12 +28,12 @@ extern void integrator_secondary_startup(void);
|
||||||
* control for which core is the next to come out of the secondary
|
* control for which core is the next to come out of the secondary
|
||||||
* boot "holding pen"
|
* boot "holding pen"
|
||||||
*/
|
*/
|
||||||
volatile int __initdata pen_release = -1;
|
volatile int __cpuinitdata pen_release = -1;
|
||||||
unsigned long __initdata phys_pen_release = 0;
|
unsigned long __cpuinitdata phys_pen_release = 0;
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(boot_lock);
|
static DEFINE_SPINLOCK(boot_lock);
|
||||||
|
|
||||||
void __init platform_secondary_init(unsigned int cpu)
|
void __cpuinit platform_secondary_init(unsigned int cpu)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* the primary core may have used a "cross call" soft interrupt
|
* the primary core may have used a "cross call" soft interrupt
|
||||||
|
@ -61,7 +62,7 @@ void __init platform_secondary_init(unsigned int cpu)
|
||||||
spin_unlock(&boot_lock);
|
spin_unlock(&boot_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init boot_secondary(unsigned int cpu, struct task_struct *idle)
|
int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
|
||||||
{
|
{
|
||||||
unsigned long timeout;
|
unsigned long timeout;
|
||||||
|
|
||||||
|
@ -80,6 +81,7 @@ int __init boot_secondary(unsigned int cpu, struct task_struct *idle)
|
||||||
* "cpu" is Linux's internal ID.
|
* "cpu" is Linux's internal ID.
|
||||||
*/
|
*/
|
||||||
pen_release = cpu;
|
pen_release = cpu;
|
||||||
|
flush_cache_all();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* XXX
|
* XXX
|
||||||
|
@ -174,11 +176,13 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
|
||||||
max_cpus = ncores;
|
max_cpus = ncores;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise the present mask - this tells us which CPUs should
|
* Initialise the possible/present maps.
|
||||||
* be present.
|
* cpu_possible_map describes the set of CPUs which may be present
|
||||||
|
* cpu_present_map describes the set of CPUs populated
|
||||||
*/
|
*/
|
||||||
for (i = 0; i < max_cpus; i++) {
|
for (i = 0; i < max_cpus; i++) {
|
||||||
cpu_set(i, cpu_present_mask);
|
cpu_set(i, cpu_possible_map);
|
||||||
|
cpu_set(i, cpu_present_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
#include <linux/serial.h>
|
#include <linux/serial.h>
|
||||||
#include <linux/tty.h>
|
#include <linux/tty.h>
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_8250.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
|
|
||||||
#include <asm/types.h>
|
#include <asm/types.h>
|
||||||
|
@ -125,19 +125,6 @@ static struct map_desc ixp2000_io_desc[] __initdata = {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct uart_port ixp2000_serial_port = {
|
|
||||||
.membase = (char *)(IXP2000_UART_VIRT_BASE + 3),
|
|
||||||
.mapbase = IXP2000_UART_PHYS_BASE + 3,
|
|
||||||
.irq = IRQ_IXP2000_UART,
|
|
||||||
.flags = UPF_SKIP_TEST,
|
|
||||||
.iotype = UPIO_MEM,
|
|
||||||
.regshift = 2,
|
|
||||||
.uartclk = 50000000,
|
|
||||||
.line = 0,
|
|
||||||
.type = PORT_XSCALE,
|
|
||||||
.fifosize = 16
|
|
||||||
};
|
|
||||||
|
|
||||||
void __init ixp2000_map_io(void)
|
void __init ixp2000_map_io(void)
|
||||||
{
|
{
|
||||||
extern unsigned int processor_id;
|
extern unsigned int processor_id;
|
||||||
|
@ -157,12 +144,50 @@ void __init ixp2000_map_io(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
iotable_init(ixp2000_io_desc, ARRAY_SIZE(ixp2000_io_desc));
|
iotable_init(ixp2000_io_desc, ARRAY_SIZE(ixp2000_io_desc));
|
||||||
early_serial_setup(&ixp2000_serial_port);
|
|
||||||
|
|
||||||
/* Set slowport to 8-bit mode. */
|
/* Set slowport to 8-bit mode. */
|
||||||
ixp2000_reg_write(IXP2000_SLOWPORT_FRM, 1);
|
ixp2000_reg_write(IXP2000_SLOWPORT_FRM, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
* Serial port support for IXP2000
|
||||||
|
*************************************************************************/
|
||||||
|
static struct plat_serial8250_port ixp2000_serial_port[] = {
|
||||||
|
{
|
||||||
|
.mapbase = IXP2000_UART_PHYS_BASE,
|
||||||
|
.membase = (char *)(IXP2000_UART_VIRT_BASE + 3),
|
||||||
|
.irq = IRQ_IXP2000_UART,
|
||||||
|
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
|
||||||
|
.iotype = UPIO_MEM,
|
||||||
|
.regshift = 2,
|
||||||
|
.uartclk = 50000000,
|
||||||
|
},
|
||||||
|
{ },
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct resource ixp2000_uart_resource = {
|
||||||
|
.start = IXP2000_UART_PHYS_BASE,
|
||||||
|
.end = IXP2000_UART_PHYS_BASE + 0xffff,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device ixp2000_serial_device = {
|
||||||
|
.name = "serial8250",
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = ixp2000_serial_port,
|
||||||
|
},
|
||||||
|
.num_resources = 1,
|
||||||
|
.resource = &ixp2000_uart_resource,
|
||||||
|
};
|
||||||
|
|
||||||
|
void __init ixp2000_uart_init(void)
|
||||||
|
{
|
||||||
|
platform_device_register(&ixp2000_serial_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* Timer-tick functions for IXP2000
|
* Timer-tick functions for IXP2000
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
|
@ -219,6 +219,7 @@ static struct platform_device *enp2611_devices[] __initdata = {
|
||||||
static void __init enp2611_init_machine(void)
|
static void __init enp2611_init_machine(void)
|
||||||
{
|
{
|
||||||
platform_add_devices(enp2611_devices, ARRAY_SIZE(enp2611_devices));
|
platform_add_devices(enp2611_devices, ARRAY_SIZE(enp2611_devices));
|
||||||
|
ixp2000_uart_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -303,5 +303,6 @@ void __init ixdp2x00_init_machine(void)
|
||||||
gpio_line_config(IXDP2X00_GPIO_I2C_ENABLE, GPIO_OUT);
|
gpio_line_config(IXDP2X00_GPIO_I2C_ENABLE, GPIO_OUT);
|
||||||
|
|
||||||
platform_add_devices(ixdp2x00_devices, ARRAY_SIZE(ixdp2x00_devices));
|
platform_add_devices(ixdp2x00_devices, ARRAY_SIZE(ixdp2x00_devices));
|
||||||
|
ixp2000_uart_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -370,6 +370,7 @@ static void __init ixdp2x01_init_machine(void)
|
||||||
((*IXDP2X01_CPLD_FLASH_REG & IXDP2X01_CPLD_FLASH_BANK_MASK) + 1);
|
((*IXDP2X01_CPLD_FLASH_REG & IXDP2X01_CPLD_FLASH_BANK_MASK) + 1);
|
||||||
|
|
||||||
platform_add_devices(ixdp2x01_devices, ARRAY_SIZE(ixdp2x01_devices));
|
platform_add_devices(ixdp2x01_devices, ARRAY_SIZE(ixdp2x01_devices));
|
||||||
|
ixp2000_uart_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,221 +0,0 @@
|
||||||
if ARCH_OMAP
|
|
||||||
|
|
||||||
menu "TI OMAP Implementations"
|
|
||||||
|
|
||||||
comment "OMAP Core Type"
|
|
||||||
|
|
||||||
config ARCH_OMAP730
|
|
||||||
depends on ARCH_OMAP
|
|
||||||
bool "OMAP730 Based System"
|
|
||||||
select ARCH_OMAP_OTG
|
|
||||||
|
|
||||||
config ARCH_OMAP1510
|
|
||||||
depends on ARCH_OMAP
|
|
||||||
default y
|
|
||||||
bool "OMAP1510 Based System"
|
|
||||||
|
|
||||||
config ARCH_OMAP16XX
|
|
||||||
depends on ARCH_OMAP
|
|
||||||
bool "OMAP16XX Based System"
|
|
||||||
select ARCH_OMAP_OTG
|
|
||||||
|
|
||||||
config ARCH_OMAP_OTG
|
|
||||||
bool
|
|
||||||
|
|
||||||
comment "OMAP Board Type"
|
|
||||||
|
|
||||||
config MACH_OMAP_INNOVATOR
|
|
||||||
bool "TI Innovator"
|
|
||||||
depends on ARCH_OMAP1510 || ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
TI OMAP 1510 or 1610 Innovator board support. Say Y here if you
|
|
||||||
have such a board.
|
|
||||||
|
|
||||||
config MACH_OMAP_H2
|
|
||||||
bool "TI H2 Support"
|
|
||||||
depends on ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
TI OMAP 1610/1611B H2 board support. Say Y here if you have such
|
|
||||||
a board.
|
|
||||||
|
|
||||||
config MACH_OMAP_H3
|
|
||||||
bool "TI H3 Support"
|
|
||||||
depends on ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
TI OMAP 1710 H3 board support. Say Y here if you have such
|
|
||||||
a board.
|
|
||||||
|
|
||||||
config MACH_OMAP_H4
|
|
||||||
bool "TI H4 Support"
|
|
||||||
depends on ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
TI OMAP 1610 H4 board support. Say Y here if you have such
|
|
||||||
a board.
|
|
||||||
|
|
||||||
config MACH_OMAP_OSK
|
|
||||||
bool "TI OSK Support"
|
|
||||||
depends on ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
TI OMAP 5912 OSK (OMAP Starter Kit) board support. Say Y here
|
|
||||||
if you have such a board.
|
|
||||||
|
|
||||||
config MACH_OMAP_PERSEUS2
|
|
||||||
bool "TI Perseus2"
|
|
||||||
depends on ARCH_OMAP730
|
|
||||||
help
|
|
||||||
Support for TI OMAP 730 Perseus2 board. Say Y here if you have such
|
|
||||||
a board.
|
|
||||||
|
|
||||||
config MACH_VOICEBLUE
|
|
||||||
bool "Voiceblue"
|
|
||||||
depends on ARCH_OMAP1510
|
|
||||||
help
|
|
||||||
Support for Voiceblue GSM/VoIP gateway. Say Y here if you have such
|
|
||||||
board.
|
|
||||||
|
|
||||||
config MACH_NETSTAR
|
|
||||||
bool "NetStar"
|
|
||||||
depends on ARCH_OMAP1510
|
|
||||||
help
|
|
||||||
Support for NetStar PBX. Say Y here if you have such a board.
|
|
||||||
|
|
||||||
config MACH_OMAP_GENERIC
|
|
||||||
bool "Generic OMAP board"
|
|
||||||
depends on ARCH_OMAP1510 || ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
Support for generic OMAP-1510, 1610 or 1710 board with
|
|
||||||
no FPGA. Can be used as template for porting Linux to
|
|
||||||
custom OMAP boards. Say Y here if you have a custom
|
|
||||||
board.
|
|
||||||
|
|
||||||
comment "OMAP Feature Selections"
|
|
||||||
|
|
||||||
#config OMAP_BOOT_TAG
|
|
||||||
# bool "OMAP bootloader information passing"
|
|
||||||
# depends on ARCH_OMAP
|
|
||||||
# default n
|
|
||||||
# help
|
|
||||||
# Say Y, if you have a bootloader which passes information
|
|
||||||
# about your board and its peripheral configuration.
|
|
||||||
|
|
||||||
config OMAP_MUX
|
|
||||||
bool "OMAP multiplexing support"
|
|
||||||
depends on ARCH_OMAP
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Pin multiplexing support for OMAP boards. If your bootloader
|
|
||||||
sets the multiplexing correctly, say N. Otherwise, or if unsure,
|
|
||||||
say Y.
|
|
||||||
|
|
||||||
config OMAP_MUX_DEBUG
|
|
||||||
bool "Multiplexing debug output"
|
|
||||||
depends on OMAP_MUX
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
Makes the multiplexing functions print out a lot of debug info.
|
|
||||||
This is useful if you want to find out the correct values of the
|
|
||||||
multiplexing registers.
|
|
||||||
|
|
||||||
config OMAP_MUX_WARNINGS
|
|
||||||
bool "Warn about pins the bootloader didn't set up"
|
|
||||||
depends on OMAP_MUX
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Choose Y here to warn whenever driver initialization logic needs
|
|
||||||
to change the pin multiplexing setup. When there are no warnings
|
|
||||||
printed, it's safe to deselect OMAP_MUX for your product.
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "System timer"
|
|
||||||
default OMAP_MPU_TIMER
|
|
||||||
|
|
||||||
config OMAP_MPU_TIMER
|
|
||||||
bool "Use mpu timer"
|
|
||||||
help
|
|
||||||
Select this option if you want to use the OMAP mpu timer. This
|
|
||||||
timer provides more intra-tick resolution than the 32KHz timer,
|
|
||||||
but consumes more power.
|
|
||||||
|
|
||||||
config OMAP_32K_TIMER
|
|
||||||
bool "Use 32KHz timer"
|
|
||||||
depends on ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
Select this option if you want to enable the OMAP 32KHz timer.
|
|
||||||
This timer saves power compared to the OMAP_MPU_TIMER, and has
|
|
||||||
support for no tick during idle. The 32KHz timer provides less
|
|
||||||
intra-tick resolution than OMAP_MPU_TIMER. The 32KHz timer is
|
|
||||||
currently only available for OMAP-16xx.
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config OMAP_32K_TIMER_HZ
|
|
||||||
int "Kernel internal timer frequency for 32KHz timer"
|
|
||||||
range 32 1024
|
|
||||||
depends on OMAP_32K_TIMER
|
|
||||||
default "128"
|
|
||||||
help
|
|
||||||
Kernel internal timer frequency should be a divisor of 32768,
|
|
||||||
such as 64 or 128.
|
|
||||||
|
|
||||||
choice
|
|
||||||
prompt "Low-level debug console UART"
|
|
||||||
depends on ARCH_OMAP
|
|
||||||
default OMAP_LL_DEBUG_UART1
|
|
||||||
|
|
||||||
config OMAP_LL_DEBUG_UART1
|
|
||||||
bool "UART1"
|
|
||||||
|
|
||||||
config OMAP_LL_DEBUG_UART2
|
|
||||||
bool "UART2"
|
|
||||||
|
|
||||||
config OMAP_LL_DEBUG_UART3
|
|
||||||
bool "UART3"
|
|
||||||
|
|
||||||
endchoice
|
|
||||||
|
|
||||||
config OMAP_ARM_195MHZ
|
|
||||||
bool "OMAP ARM 195 MHz CPU"
|
|
||||||
depends on ARCH_OMAP730
|
|
||||||
help
|
|
||||||
Enable 195MHz clock for OMAP CPU. If unsure, say N.
|
|
||||||
|
|
||||||
config OMAP_ARM_192MHZ
|
|
||||||
bool "OMAP ARM 192 MHz CPU"
|
|
||||||
depends on ARCH_OMAP16XX
|
|
||||||
help
|
|
||||||
Enable 192MHz clock for OMAP CPU. If unsure, say N.
|
|
||||||
|
|
||||||
config OMAP_ARM_182MHZ
|
|
||||||
bool "OMAP ARM 182 MHz CPU"
|
|
||||||
depends on ARCH_OMAP730
|
|
||||||
help
|
|
||||||
Enable 182MHz clock for OMAP CPU. If unsure, say N.
|
|
||||||
|
|
||||||
config OMAP_ARM_168MHZ
|
|
||||||
bool "OMAP ARM 168 MHz CPU"
|
|
||||||
depends on ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730
|
|
||||||
help
|
|
||||||
Enable 168MHz clock for OMAP CPU. If unsure, say N.
|
|
||||||
|
|
||||||
config OMAP_ARM_120MHZ
|
|
||||||
bool "OMAP ARM 120 MHz CPU"
|
|
||||||
depends on ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730
|
|
||||||
help
|
|
||||||
Enable 120MHz clock for OMAP CPU. If unsure, say N.
|
|
||||||
|
|
||||||
config OMAP_ARM_60MHZ
|
|
||||||
bool "OMAP ARM 60 MHz CPU"
|
|
||||||
depends on ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Enable 60MHz clock for OMAP CPU. If unsure, say Y.
|
|
||||||
|
|
||||||
config OMAP_ARM_30MHZ
|
|
||||||
bool "OMAP ARM 30 MHz CPU"
|
|
||||||
depends on ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730
|
|
||||||
help
|
|
||||||
Enable 30MHz clock for OMAP CPU. If unsure, say N.
|
|
||||||
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
endif
|
|
|
@ -1,40 +0,0 @@
|
||||||
#
|
|
||||||
# Makefile for the linux kernel.
|
|
||||||
#
|
|
||||||
|
|
||||||
# Common support
|
|
||||||
obj-y := common.o time.o irq.o dma.o clock.o mux.o gpio.o mcbsp.o usb.o
|
|
||||||
obj-m :=
|
|
||||||
obj-n :=
|
|
||||||
obj- :=
|
|
||||||
led-y := leds.o
|
|
||||||
|
|
||||||
# Specific board support
|
|
||||||
obj-$(CONFIG_MACH_OMAP_H2) += board-h2.o
|
|
||||||
obj-$(CONFIG_MACH_OMAP_INNOVATOR) += board-innovator.o
|
|
||||||
obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o
|
|
||||||
obj-$(CONFIG_MACH_OMAP_PERSEUS2) += board-perseus2.o
|
|
||||||
obj-$(CONFIG_MACH_OMAP_OSK) += board-osk.o
|
|
||||||
obj-$(CONFIG_MACH_OMAP_H3) += board-h3.o
|
|
||||||
obj-$(CONFIG_MACH_VOICEBLUE) += board-voiceblue.o
|
|
||||||
obj-$(CONFIG_MACH_NETSTAR) += board-netstar.o
|
|
||||||
|
|
||||||
# OCPI interconnect support for 1710, 1610 and 5912
|
|
||||||
obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
|
|
||||||
|
|
||||||
# LEDs support
|
|
||||||
led-$(CONFIG_MACH_OMAP_H2) += leds-h2p2-debug.o
|
|
||||||
led-$(CONFIG_MACH_OMAP_INNOVATOR) += leds-innovator.o
|
|
||||||
led-$(CONFIG_MACH_OMAP_PERSEUS2) += leds-h2p2-debug.o
|
|
||||||
obj-$(CONFIG_LEDS) += $(led-y)
|
|
||||||
|
|
||||||
# Power Management
|
|
||||||
obj-$(CONFIG_PM) += pm.o sleep.o
|
|
||||||
|
|
||||||
ifeq ($(CONFIG_ARCH_OMAP1510),y)
|
|
||||||
# Innovator-1510 FPGA
|
|
||||||
obj-$(CONFIG_MACH_OMAP_INNOVATOR) += fpga.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
# kgdb support
|
|
||||||
obj-$(CONFIG_KGDB_SERIAL) += kgdb-serial.o
|
|
|
@ -1,549 +0,0 @@
|
||||||
/*
|
|
||||||
* linux/arch/arm/mach-omap/common.c
|
|
||||||
*
|
|
||||||
* Code common to all OMAP machines.
|
|
||||||
*
|
|
||||||
* 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 <linux/delay.h>
|
|
||||||
#include <linux/pm.h>
|
|
||||||
#include <linux/console.h>
|
|
||||||
#include <linux/serial.h>
|
|
||||||
#include <linux/tty.h>
|
|
||||||
#include <linux/serial_8250.h>
|
|
||||||
#include <linux/serial_reg.h>
|
|
||||||
|
|
||||||
#include <asm/hardware.h>
|
|
||||||
#include <asm/system.h>
|
|
||||||
#include <asm/pgtable.h>
|
|
||||||
#include <asm/mach/map.h>
|
|
||||||
#include <asm/hardware/clock.h>
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/mach-types.h>
|
|
||||||
|
|
||||||
#include <asm/arch/board.h>
|
|
||||||
#include <asm/arch/mux.h>
|
|
||||||
#include <asm/arch/fpga.h>
|
|
||||||
|
|
||||||
#include "clock.h"
|
|
||||||
|
|
||||||
#define DEBUG 1
|
|
||||||
|
|
||||||
struct omap_id {
|
|
||||||
u16 jtag_id; /* Used to determine OMAP type */
|
|
||||||
u8 die_rev; /* Processor revision */
|
|
||||||
u32 omap_id; /* OMAP revision */
|
|
||||||
u32 type; /* Cpu id bits [31:08], cpu class bits [07:00] */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Register values to detect the OMAP version */
|
|
||||||
static struct omap_id omap_ids[] __initdata = {
|
|
||||||
{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
|
|
||||||
{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
|
|
||||||
{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
|
|
||||||
{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000},
|
|
||||||
{ .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
|
|
||||||
{ .jtag_id = 0xb576, .die_rev = 0x3, .omap_id = 0x03320100, .type = 0x16100c00},
|
|
||||||
{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320200, .type = 0x16100d00},
|
|
||||||
{ .jtag_id = 0xb613, .die_rev = 0x0, .omap_id = 0x03320300, .type = 0x1610ef00},
|
|
||||||
{ .jtag_id = 0xb613, .die_rev = 0x0, .omap_id = 0x03320300, .type = 0x1610ef00},
|
|
||||||
{ .jtag_id = 0xb576, .die_rev = 0x1, .omap_id = 0x03320100, .type = 0x16110000},
|
|
||||||
{ .jtag_id = 0xb58c, .die_rev = 0x2, .omap_id = 0x03320200, .type = 0x16110b00},
|
|
||||||
{ .jtag_id = 0xb58c, .die_rev = 0x3, .omap_id = 0x03320200, .type = 0x16110c00},
|
|
||||||
{ .jtag_id = 0xb65f, .die_rev = 0x0, .omap_id = 0x03320400, .type = 0x16212300},
|
|
||||||
{ .jtag_id = 0xb65f, .die_rev = 0x1, .omap_id = 0x03320400, .type = 0x16212300},
|
|
||||||
{ .jtag_id = 0xb65f, .die_rev = 0x1, .omap_id = 0x03320500, .type = 0x16212300},
|
|
||||||
{ .jtag_id = 0xb5f7, .die_rev = 0x0, .omap_id = 0x03330000, .type = 0x17100000},
|
|
||||||
{ .jtag_id = 0xb5f7, .die_rev = 0x1, .omap_id = 0x03330100, .type = 0x17100000},
|
|
||||||
{ .jtag_id = 0xb5f7, .die_rev = 0x2, .omap_id = 0x03330100, .type = 0x17100000},
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get OMAP type from PROD_ID.
|
|
||||||
* 1710 has the PROD_ID in bits 15:00, not in 16:01 as documented in TRM.
|
|
||||||
* 1510 PROD_ID is empty, and 1610 PROD_ID does not make sense.
|
|
||||||
* Undocumented register in TEST BLOCK is used as fallback; This seems to
|
|
||||||
* work on 1510, 1610 & 1710. The official way hopefully will work in future
|
|
||||||
* processors.
|
|
||||||
*/
|
|
||||||
static u16 __init omap_get_jtag_id(void)
|
|
||||||
{
|
|
||||||
u32 prod_id, omap_id;
|
|
||||||
|
|
||||||
prod_id = omap_readl(OMAP_PRODUCTION_ID_1);
|
|
||||||
omap_id = omap_readl(OMAP32_ID_1);
|
|
||||||
|
|
||||||
/* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730 */
|
|
||||||
if (((prod_id >> 20) == 0) || (prod_id == omap_id))
|
|
||||||
prod_id = 0;
|
|
||||||
else
|
|
||||||
prod_id &= 0xffff;
|
|
||||||
|
|
||||||
if (prod_id)
|
|
||||||
return prod_id;
|
|
||||||
|
|
||||||
/* Use OMAP32_ID_1 as fallback */
|
|
||||||
prod_id = ((omap_id >> 12) & 0xffff);
|
|
||||||
|
|
||||||
return prod_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get OMAP revision from DIE_REV.
|
|
||||||
* Early 1710 processors may have broken OMAP_DIE_ID, it contains PROD_ID.
|
|
||||||
* Undocumented register in the TEST BLOCK is used as fallback.
|
|
||||||
* REVISIT: This does not seem to work on 1510
|
|
||||||
*/
|
|
||||||
static u8 __init omap_get_die_rev(void)
|
|
||||||
{
|
|
||||||
u32 die_rev;
|
|
||||||
|
|
||||||
die_rev = omap_readl(OMAP_DIE_ID_1);
|
|
||||||
|
|
||||||
/* Check for broken OMAP_DIE_ID on early 1710 */
|
|
||||||
if (((die_rev >> 12) & 0xffff) == omap_get_jtag_id())
|
|
||||||
die_rev = 0;
|
|
||||||
|
|
||||||
die_rev = (die_rev >> 17) & 0xf;
|
|
||||||
if (die_rev)
|
|
||||||
return die_rev;
|
|
||||||
|
|
||||||
die_rev = (omap_readl(OMAP32_ID_1) >> 28) & 0xf;
|
|
||||||
|
|
||||||
return die_rev;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init omap_check_revision(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
u16 jtag_id;
|
|
||||||
u8 die_rev;
|
|
||||||
u32 omap_id;
|
|
||||||
u8 cpu_type;
|
|
||||||
|
|
||||||
jtag_id = omap_get_jtag_id();
|
|
||||||
die_rev = omap_get_die_rev();
|
|
||||||
omap_id = omap_readl(OMAP32_ID_0);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
printk("OMAP_DIE_ID_0: 0x%08x\n", omap_readl(OMAP_DIE_ID_0));
|
|
||||||
printk("OMAP_DIE_ID_1: 0x%08x DIE_REV: %i\n",
|
|
||||||
omap_readl(OMAP_DIE_ID_1),
|
|
||||||
(omap_readl(OMAP_DIE_ID_1) >> 17) & 0xf);
|
|
||||||
printk("OMAP_PRODUCTION_ID_0: 0x%08x\n", omap_readl(OMAP_PRODUCTION_ID_0));
|
|
||||||
printk("OMAP_PRODUCTION_ID_1: 0x%08x JTAG_ID: 0x%04x\n",
|
|
||||||
omap_readl(OMAP_PRODUCTION_ID_1),
|
|
||||||
omap_readl(OMAP_PRODUCTION_ID_1) & 0xffff);
|
|
||||||
printk("OMAP32_ID_0: 0x%08x\n", omap_readl(OMAP32_ID_0));
|
|
||||||
printk("OMAP32_ID_1: 0x%08x\n", omap_readl(OMAP32_ID_1));
|
|
||||||
printk("JTAG_ID: 0x%04x DIE_REV: %i\n", jtag_id, die_rev);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
system_serial_high = omap_readl(OMAP_DIE_ID_0);
|
|
||||||
system_serial_low = omap_readl(OMAP_DIE_ID_1);
|
|
||||||
|
|
||||||
/* First check only the major version in a safe way */
|
|
||||||
for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
|
|
||||||
if (jtag_id == (omap_ids[i].jtag_id)) {
|
|
||||||
system_rev = omap_ids[i].type;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if we can find the die revision */
|
|
||||||
for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
|
|
||||||
if (jtag_id == omap_ids[i].jtag_id && die_rev == omap_ids[i].die_rev) {
|
|
||||||
system_rev = omap_ids[i].type;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finally check also the omap_id */
|
|
||||||
for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
|
|
||||||
if (jtag_id == omap_ids[i].jtag_id
|
|
||||||
&& die_rev == omap_ids[i].die_rev
|
|
||||||
&& omap_id == omap_ids[i].omap_id) {
|
|
||||||
system_rev = omap_ids[i].type;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add the cpu class info (7xx, 15xx, 16xx, 24xx) */
|
|
||||||
cpu_type = system_rev >> 24;
|
|
||||||
|
|
||||||
switch (cpu_type) {
|
|
||||||
case 0x07:
|
|
||||||
system_rev |= 0x07;
|
|
||||||
break;
|
|
||||||
case 0x15:
|
|
||||||
system_rev |= 0x15;
|
|
||||||
break;
|
|
||||||
case 0x16:
|
|
||||||
case 0x17:
|
|
||||||
system_rev |= 0x16;
|
|
||||||
break;
|
|
||||||
case 0x24:
|
|
||||||
system_rev |= 0x24;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
printk("Unknown OMAP cpu type: 0x%02x\n", cpu_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
printk("OMAP%04x", system_rev >> 16);
|
|
||||||
if ((system_rev >> 8) & 0xff)
|
|
||||||
printk("%x", (system_rev >> 8) & 0xff);
|
|
||||||
printk(" revision %i handled as %02xxx id: %08x%08x\n",
|
|
||||||
die_rev, system_rev & 0xff, system_serial_low,
|
|
||||||
system_serial_high);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
* OMAP I/O mapping
|
|
||||||
*
|
|
||||||
* The machine specific code may provide the extra mapping besides the
|
|
||||||
* default mapping provided here.
|
|
||||||
* ----------------------------------------------------------------------------
|
|
||||||
*/
|
|
||||||
|
|
||||||
static struct map_desc omap_io_desc[] __initdata = {
|
|
||||||
{ IO_VIRT, IO_PHYS, IO_SIZE, MT_DEVICE },
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP730
|
|
||||||
static struct map_desc omap730_io_desc[] __initdata = {
|
|
||||||
{ OMAP730_DSP_BASE, OMAP730_DSP_START, OMAP730_DSP_SIZE, MT_DEVICE },
|
|
||||||
{ OMAP730_DSPREG_BASE, OMAP730_DSPREG_START, OMAP730_DSPREG_SIZE, MT_DEVICE },
|
|
||||||
{ OMAP730_SRAM_BASE, OMAP730_SRAM_START, OMAP730_SRAM_SIZE, MT_DEVICE }
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
|
||||||
static struct map_desc omap1510_io_desc[] __initdata = {
|
|
||||||
{ OMAP1510_DSP_BASE, OMAP1510_DSP_START, OMAP1510_DSP_SIZE, MT_DEVICE },
|
|
||||||
{ OMAP1510_DSPREG_BASE, OMAP1510_DSPREG_START, OMAP1510_DSPREG_SIZE, MT_DEVICE },
|
|
||||||
{ OMAP1510_SRAM_BASE, OMAP1510_SRAM_START, OMAP1510_SRAM_SIZE, MT_DEVICE }
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_ARCH_OMAP16XX)
|
|
||||||
static struct map_desc omap1610_io_desc[] __initdata = {
|
|
||||||
{ OMAP16XX_DSP_BASE, OMAP16XX_DSP_START, OMAP16XX_DSP_SIZE, MT_DEVICE },
|
|
||||||
{ OMAP16XX_DSPREG_BASE, OMAP16XX_DSPREG_START, OMAP16XX_DSPREG_SIZE, MT_DEVICE },
|
|
||||||
{ OMAP16XX_SRAM_BASE, OMAP16XX_SRAM_START, OMAP1610_SRAM_SIZE, MT_DEVICE }
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct map_desc omap5912_io_desc[] __initdata = {
|
|
||||||
{ OMAP16XX_DSP_BASE, OMAP16XX_DSP_START, OMAP16XX_DSP_SIZE, MT_DEVICE },
|
|
||||||
{ OMAP16XX_DSPREG_BASE, OMAP16XX_DSPREG_START, OMAP16XX_DSPREG_SIZE, MT_DEVICE },
|
|
||||||
/*
|
|
||||||
* The OMAP5912 has 250kByte internal SRAM. Because the mapping is baseed on page
|
|
||||||
* size (4kByte), it seems that the last 2kByte (=0x800) of the 250kByte are not mapped.
|
|
||||||
* Add additional 2kByte (0x800) so that the last page is mapped and the last 2kByte
|
|
||||||
* can be used.
|
|
||||||
*/
|
|
||||||
{ OMAP16XX_SRAM_BASE, OMAP16XX_SRAM_START, OMAP5912_SRAM_SIZE + 0x800, MT_DEVICE }
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int initialized = 0;
|
|
||||||
|
|
||||||
static void __init _omap_map_io(void)
|
|
||||||
{
|
|
||||||
initialized = 1;
|
|
||||||
|
|
||||||
/* We have to initialize the IO space mapping before we can run
|
|
||||||
* cpu_is_omapxxx() macros. */
|
|
||||||
iotable_init(omap_io_desc, ARRAY_SIZE(omap_io_desc));
|
|
||||||
omap_check_revision();
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP730
|
|
||||||
if (cpu_is_omap730()) {
|
|
||||||
iotable_init(omap730_io_desc, ARRAY_SIZE(omap730_io_desc));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
|
||||||
if (cpu_is_omap1510()) {
|
|
||||||
iotable_init(omap1510_io_desc, ARRAY_SIZE(omap1510_io_desc));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_ARCH_OMAP16XX)
|
|
||||||
if (cpu_is_omap1610() || cpu_is_omap1710()) {
|
|
||||||
iotable_init(omap1610_io_desc, ARRAY_SIZE(omap1610_io_desc));
|
|
||||||
}
|
|
||||||
if (cpu_is_omap5912()) {
|
|
||||||
iotable_init(omap5912_io_desc, ARRAY_SIZE(omap5912_io_desc));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort
|
|
||||||
* on a Posted Write in the TIPB Bridge".
|
|
||||||
*/
|
|
||||||
omap_writew(0x0, MPU_PUBLIC_TIPB_CNTL);
|
|
||||||
omap_writew(0x0, MPU_PRIVATE_TIPB_CNTL);
|
|
||||||
|
|
||||||
/* Must init clocks early to assure that timer interrupt works
|
|
||||||
*/
|
|
||||||
clk_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This should only get called from board specific init
|
|
||||||
*/
|
|
||||||
void omap_map_io(void)
|
|
||||||
{
|
|
||||||
if (!initialized)
|
|
||||||
_omap_map_io();
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned int omap_serial_in(struct plat_serial8250_port *up,
|
|
||||||
int offset)
|
|
||||||
{
|
|
||||||
offset <<= up->regshift;
|
|
||||||
return (unsigned int)__raw_readb(up->membase + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void omap_serial_outp(struct plat_serial8250_port *p, int offset,
|
|
||||||
int value)
|
|
||||||
{
|
|
||||||
offset <<= p->regshift;
|
|
||||||
__raw_writeb(value, 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 void __init omap_serial_reset(struct plat_serial8250_port *p)
|
|
||||||
{
|
|
||||||
omap_serial_outp(p, UART_OMAP_MDR1, 0x07); /* disable UART */
|
|
||||||
omap_serial_outp(p, UART_OMAP_SCR, 0x08); /* TX watermark */
|
|
||||||
omap_serial_outp(p, UART_OMAP_MDR1, 0x00); /* enable UART */
|
|
||||||
|
|
||||||
if (!cpu_is_omap1510()) {
|
|
||||||
omap_serial_outp(p, UART_OMAP_SYSC, 0x01);
|
|
||||||
while (!(omap_serial_in(p, UART_OMAP_SYSC) & 0x01));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct plat_serial8250_port serial_platform_data[] = {
|
|
||||||
{
|
|
||||||
.membase = (char*)IO_ADDRESS(OMAP_UART1_BASE),
|
|
||||||
.mapbase = (unsigned long)OMAP_UART1_BASE,
|
|
||||||
.irq = INT_UART1,
|
|
||||||
.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 = INT_UART2,
|
|
||||||
.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 = INT_UART3,
|
|
||||||
.flags = UPF_BOOT_AUTOCONF,
|
|
||||||
.iotype = UPIO_MEM,
|
|
||||||
.regshift = 2,
|
|
||||||
.uartclk = OMAP16XX_BASE_BAUD * 16,
|
|
||||||
},
|
|
||||||
{ },
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device serial_device = {
|
|
||||||
.name = "serial8250",
|
|
||||||
.id = 0,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = serial_platform_data,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Note that on Innovator-1510 UART2 pins conflict with USB2.
|
|
||||||
* By default UART2 does not work on Innovator-1510 if you have
|
|
||||||
* USB OHCI enabled. To use UART2, you must disable USB2 first.
|
|
||||||
*/
|
|
||||||
void __init omap_serial_init(int ports[OMAP_MAX_NR_PORTS])
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (cpu_is_omap730()) {
|
|
||||||
serial_platform_data[0].regshift = 0;
|
|
||||||
serial_platform_data[1].regshift = 0;
|
|
||||||
serial_platform_data[0].irq = INT_730_UART_MODEM_1;
|
|
||||||
serial_platform_data[1].irq = INT_730_UART_MODEM_IRDA_2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cpu_is_omap1510()) {
|
|
||||||
serial_platform_data[0].uartclk = OMAP1510_BASE_BAUD * 16;
|
|
||||||
serial_platform_data[1].uartclk = OMAP1510_BASE_BAUD * 16;
|
|
||||||
serial_platform_data[2].uartclk = OMAP1510_BASE_BAUD * 16;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
|
|
||||||
unsigned char reg;
|
|
||||||
|
|
||||||
if (ports[i] == 0) {
|
|
||||||
serial_platform_data[i].membase = 0;
|
|
||||||
serial_platform_data[i].mapbase = 0;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (i) {
|
|
||||||
case 0:
|
|
||||||
if (cpu_is_omap1510()) {
|
|
||||||
omap_cfg_reg(UART1_TX);
|
|
||||||
omap_cfg_reg(UART1_RTS);
|
|
||||||
if (machine_is_omap_innovator()) {
|
|
||||||
reg = fpga_read(OMAP1510_FPGA_POWER);
|
|
||||||
reg |= OMAP1510_FPGA_PCR_COM1_EN;
|
|
||||||
fpga_write(reg, OMAP1510_FPGA_POWER);
|
|
||||||
udelay(10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
if (cpu_is_omap1510()) {
|
|
||||||
omap_cfg_reg(UART2_TX);
|
|
||||||
omap_cfg_reg(UART2_RTS);
|
|
||||||
if (machine_is_omap_innovator()) {
|
|
||||||
reg = fpga_read(OMAP1510_FPGA_POWER);
|
|
||||||
reg |= OMAP1510_FPGA_PCR_COM2_EN;
|
|
||||||
fpga_write(reg, OMAP1510_FPGA_POWER);
|
|
||||||
udelay(10);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
if (cpu_is_omap1510()) {
|
|
||||||
omap_cfg_reg(UART3_TX);
|
|
||||||
omap_cfg_reg(UART3_RX);
|
|
||||||
}
|
|
||||||
if (cpu_is_omap1710()) {
|
|
||||||
clk_enable(clk_get(0, "uart3_ck"));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
omap_serial_reset(&serial_platform_data[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __init omap_init(void)
|
|
||||||
{
|
|
||||||
return platform_device_register(&serial_device);
|
|
||||||
}
|
|
||||||
arch_initcall(omap_init);
|
|
||||||
|
|
||||||
#define NO_LENGTH_CHECK 0xffffffff
|
|
||||||
|
|
||||||
extern int omap_bootloader_tag_len;
|
|
||||||
extern u8 omap_bootloader_tag[];
|
|
||||||
|
|
||||||
struct omap_board_config_kernel *omap_board_config;
|
|
||||||
int omap_board_config_size = 0;
|
|
||||||
|
|
||||||
static const void *get_config(u16 tag, size_t len, int skip, size_t *len_out)
|
|
||||||
{
|
|
||||||
struct omap_board_config_kernel *kinfo = NULL;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
#ifdef CONFIG_OMAP_BOOT_TAG
|
|
||||||
struct omap_board_config_entry *info = NULL;
|
|
||||||
|
|
||||||
if (omap_bootloader_tag_len > 4)
|
|
||||||
info = (struct omap_board_config_entry *) omap_bootloader_tag;
|
|
||||||
while (info != NULL) {
|
|
||||||
u8 *next;
|
|
||||||
|
|
||||||
if (info->tag == tag) {
|
|
||||||
if (skip == 0)
|
|
||||||
break;
|
|
||||||
skip--;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((info->len & 0x03) != 0) {
|
|
||||||
/* We bail out to avoid an alignment fault */
|
|
||||||
printk(KERN_ERR "OMAP peripheral config: Length (%d) not word-aligned (tag %04x)\n",
|
|
||||||
info->len, info->tag);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
next = (u8 *) info + sizeof(*info) + info->len;
|
|
||||||
if (next >= omap_bootloader_tag + omap_bootloader_tag_len)
|
|
||||||
info = NULL;
|
|
||||||
else
|
|
||||||
info = (struct omap_board_config_entry *) next;
|
|
||||||
}
|
|
||||||
if (info != NULL) {
|
|
||||||
/* Check the length as a lame attempt to check for
|
|
||||||
* binary inconsistancy. */
|
|
||||||
if (len != NO_LENGTH_CHECK) {
|
|
||||||
/* Word-align len */
|
|
||||||
if (len & 0x03)
|
|
||||||
len = (len + 3) & ~0x03;
|
|
||||||
if (info->len != len) {
|
|
||||||
printk(KERN_ERR "OMAP peripheral config: Length mismatch with tag %x (want %d, got %d)\n",
|
|
||||||
tag, len, info->len);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (len_out != NULL)
|
|
||||||
*len_out = info->len;
|
|
||||||
return info->data;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
/* Try to find the config from the board-specific structures
|
|
||||||
* in the kernel. */
|
|
||||||
for (i = 0; i < omap_board_config_size; i++) {
|
|
||||||
if (omap_board_config[i].tag == tag) {
|
|
||||||
kinfo = &omap_board_config[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (kinfo == NULL)
|
|
||||||
return NULL;
|
|
||||||
return kinfo->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
const void *__omap_get_config(u16 tag, size_t len, int nr)
|
|
||||||
{
|
|
||||||
return get_config(tag, len, nr, NULL);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(__omap_get_config);
|
|
||||||
|
|
||||||
const void *omap_get_var_config(u16 tag, size_t *len)
|
|
||||||
{
|
|
||||||
return get_config(tag, NO_LENGTH_CHECK, 0, len);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(omap_get_var_config);
|
|
||||||
|
|
||||||
static int __init omap_add_serial_console(void)
|
|
||||||
{
|
|
||||||
const struct omap_uart_config *info;
|
|
||||||
|
|
||||||
info = omap_get_config(OMAP_TAG_UART, struct omap_uart_config);
|
|
||||||
if (info != NULL && info->console_uart) {
|
|
||||||
static char speed[11], *opt = NULL;
|
|
||||||
|
|
||||||
if (info->console_speed) {
|
|
||||||
snprintf(speed, sizeof(speed), "%u", info->console_speed);
|
|
||||||
opt = speed;
|
|
||||||
}
|
|
||||||
return add_preferred_console("ttyS", info->console_uart - 1, opt);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
console_initcall(omap_add_serial_console);
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
comment "OMAP Core Type"
|
||||||
|
depends on ARCH_OMAP1
|
||||||
|
|
||||||
|
config ARCH_OMAP730
|
||||||
|
depends on ARCH_OMAP1
|
||||||
|
bool "OMAP730 Based System"
|
||||||
|
select ARCH_OMAP_OTG
|
||||||
|
|
||||||
|
config ARCH_OMAP1510
|
||||||
|
depends on ARCH_OMAP1
|
||||||
|
default y
|
||||||
|
bool "OMAP1510 Based System"
|
||||||
|
|
||||||
|
config ARCH_OMAP16XX
|
||||||
|
depends on ARCH_OMAP1
|
||||||
|
bool "OMAP16xx Based System"
|
||||||
|
select ARCH_OMAP_OTG
|
||||||
|
|
||||||
|
comment "OMAP Board Type"
|
||||||
|
depends on ARCH_OMAP1
|
||||||
|
|
||||||
|
config MACH_OMAP_INNOVATOR
|
||||||
|
bool "TI Innovator"
|
||||||
|
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX)
|
||||||
|
help
|
||||||
|
TI OMAP 1510 or 1610 Innovator board support. Say Y here if you
|
||||||
|
have such a board.
|
||||||
|
|
||||||
|
config MACH_OMAP_H2
|
||||||
|
bool "TI H2 Support"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP16XX
|
||||||
|
help
|
||||||
|
TI OMAP 1610/1611B H2 board support. Say Y here if you have such
|
||||||
|
a board.
|
||||||
|
|
||||||
|
config MACH_OMAP_H3
|
||||||
|
bool "TI H3 Support"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP16XX
|
||||||
|
help
|
||||||
|
TI OMAP 1710 H3 board support. Say Y here if you have such
|
||||||
|
a board.
|
||||||
|
|
||||||
|
config MACH_OMAP_OSK
|
||||||
|
bool "TI OSK Support"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP16XX
|
||||||
|
help
|
||||||
|
TI OMAP 5912 OSK (OMAP Starter Kit) board support. Say Y here
|
||||||
|
if you have such a board.
|
||||||
|
|
||||||
|
config MACH_OMAP_PERSEUS2
|
||||||
|
bool "TI Perseus2"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP730
|
||||||
|
help
|
||||||
|
Support for TI OMAP 730 Perseus2 board. Say Y here if you have such
|
||||||
|
a board.
|
||||||
|
|
||||||
|
config MACH_VOICEBLUE
|
||||||
|
bool "Voiceblue"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP1510
|
||||||
|
help
|
||||||
|
Support for Voiceblue GSM/VoIP gateway. Say Y here if you have
|
||||||
|
such a board.
|
||||||
|
|
||||||
|
config MACH_NETSTAR
|
||||||
|
bool "NetStar"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP1510
|
||||||
|
help
|
||||||
|
Support for NetStar PBX. Say Y here if you have such a board.
|
||||||
|
|
||||||
|
config MACH_OMAP_GENERIC
|
||||||
|
bool "Generic OMAP board"
|
||||||
|
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX)
|
||||||
|
help
|
||||||
|
Support for generic OMAP-1510, 1610 or 1710 board with
|
||||||
|
no FPGA. Can be used as template for porting Linux to
|
||||||
|
custom OMAP boards. Say Y here if you have a custom
|
||||||
|
board.
|
||||||
|
|
||||||
|
comment "OMAP CPU Speed"
|
||||||
|
depends on ARCH_OMAP1
|
||||||
|
|
||||||
|
config OMAP_CLOCKS_SET_BY_BOOTLOADER
|
||||||
|
bool "OMAP clocks set by bootloader"
|
||||||
|
depends on ARCH_OMAP1
|
||||||
|
help
|
||||||
|
Enable this option to prevent the kernel from overriding the clock
|
||||||
|
frequencies programmed by bootloader for MPU, DSP, MMUs, TC,
|
||||||
|
internal LCD controller and MPU peripherals.
|
||||||
|
|
||||||
|
config OMAP_ARM_216MHZ
|
||||||
|
bool "OMAP ARM 216 MHz CPU (1710 only)"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP16XX
|
||||||
|
help
|
||||||
|
Enable 216 MHz clock for OMAP1710 CPU. If unsure, say N.
|
||||||
|
|
||||||
|
config OMAP_ARM_195MHZ
|
||||||
|
bool "OMAP ARM 195 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP730
|
||||||
|
help
|
||||||
|
Enable 195MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
|
config OMAP_ARM_192MHZ
|
||||||
|
bool "OMAP ARM 192 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP16XX
|
||||||
|
help
|
||||||
|
Enable 192MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
|
config OMAP_ARM_182MHZ
|
||||||
|
bool "OMAP ARM 182 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP730
|
||||||
|
help
|
||||||
|
Enable 182MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
|
config OMAP_ARM_168MHZ
|
||||||
|
bool "OMAP ARM 168 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
|
help
|
||||||
|
Enable 168MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
|
config OMAP_ARM_150MHZ
|
||||||
|
bool "OMAP ARM 150 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && ARCH_OMAP1510
|
||||||
|
help
|
||||||
|
Enable 150MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
|
config OMAP_ARM_120MHZ
|
||||||
|
bool "OMAP ARM 120 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
|
help
|
||||||
|
Enable 120MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
||||||
|
config OMAP_ARM_60MHZ
|
||||||
|
bool "OMAP ARM 60 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable 60MHz clock for OMAP CPU. If unsure, say Y.
|
||||||
|
|
||||||
|
config OMAP_ARM_30MHZ
|
||||||
|
bool "OMAP ARM 30 MHz CPU"
|
||||||
|
depends on ARCH_OMAP1 && (ARCH_OMAP1510 || ARCH_OMAP16XX || ARCH_OMAP730)
|
||||||
|
help
|
||||||
|
Enable 30MHz clock for OMAP CPU. If unsure, say N.
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
#
|
||||||
|
# Makefile for the linux kernel.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Common support
|
||||||
|
obj-y := io.o id.o irq.o time.o serial.o
|
||||||
|
led-y := leds.o
|
||||||
|
|
||||||
|
# Specific board support
|
||||||
|
obj-$(CONFIG_MACH_OMAP_H2) += board-h2.o
|
||||||
|
obj-$(CONFIG_MACH_OMAP_INNOVATOR) += board-innovator.o
|
||||||
|
obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o
|
||||||
|
obj-$(CONFIG_MACH_OMAP_PERSEUS2) += board-perseus2.o
|
||||||
|
obj-$(CONFIG_MACH_OMAP_OSK) += board-osk.o
|
||||||
|
obj-$(CONFIG_MACH_OMAP_H3) += board-h3.o
|
||||||
|
obj-$(CONFIG_MACH_VOICEBLUE) += board-voiceblue.o
|
||||||
|
obj-$(CONFIG_MACH_NETSTAR) += board-netstar.o
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_ARCH_OMAP1510),y)
|
||||||
|
# Innovator-1510 FPGA
|
||||||
|
obj-$(CONFIG_MACH_OMAP_INNOVATOR) += fpga.o
|
||||||
|
endif
|
||||||
|
|
||||||
|
# LEDs support
|
||||||
|
led-$(CONFIG_MACH_OMAP_H2) += leds-h2p2-debug.o
|
||||||
|
led-$(CONFIG_MACH_OMAP_INNOVATOR) += leds-innovator.o
|
||||||
|
led-$(CONFIG_MACH_OMAP_PERSEUS2) += leds-h2p2-debug.o
|
||||||
|
led-$(CONFIG_MACH_OMAP_OSK) += leds-osk.o
|
||||||
|
obj-$(CONFIG_LEDS) += $(led-y)
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
zreladdr-y := 0x10008000
|
zreladdr-y := 0x10008000
|
||||||
params_phys-y := 0x10000100
|
params_phys-y := 0x10000100
|
||||||
initrd_phys-y := 0x10800000
|
initrd_phys-y := 0x10800000
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* linux/arch/arm/mach-omap/board-generic.c
|
* linux/arch/arm/mach-omap1/board-generic.c
|
||||||
*
|
*
|
||||||
* Modified from board-innovator1510.c
|
* Modified from board-innovator1510.c
|
||||||
*
|
*
|
||||||
|
@ -26,8 +26,7 @@
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
#include <asm/arch/board.h>
|
#include <asm/arch/board.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
static int __initdata generic_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
static int __initdata generic_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
||||||
|
|
||||||
|
@ -84,7 +83,7 @@ static void __init omap_generic_init(void)
|
||||||
|
|
||||||
static void __init omap_generic_map_io(void)
|
static void __init omap_generic_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_io();
|
omap_map_common_io()
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
|
MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710")
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* linux/arch/arm/mach-omap/board-h2.c
|
* linux/arch/arm/mach-omap1/board-h2.c
|
||||||
*
|
*
|
||||||
* Board specific inits for OMAP-1610 H2
|
* Board specific inits for OMAP-1610 H2
|
||||||
*
|
*
|
||||||
|
@ -35,8 +35,7 @@
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
#include <asm/arch/tc.h>
|
#include <asm/arch/tc.h>
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
extern int omap_gpio_init(void);
|
extern int omap_gpio_init(void);
|
||||||
|
|
||||||
|
@ -172,7 +171,7 @@ static void __init h2_init(void)
|
||||||
|
|
||||||
static void __init h2_map_io(void)
|
static void __init h2_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(h2_serial_ports);
|
omap_serial_init(h2_serial_ports);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* linux/arch/arm/mach-omap/board-h3.c
|
* linux/arch/arm/mach-omap1/board-h3.c
|
||||||
*
|
*
|
||||||
* This file contains OMAP1710 H3 specific code.
|
* This file contains OMAP1710 H3 specific code.
|
||||||
*
|
*
|
||||||
|
@ -37,8 +37,7 @@
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/tc.h>
|
#include <asm/arch/tc.h>
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
extern int omap_gpio_init(void);
|
extern int omap_gpio_init(void);
|
||||||
|
|
||||||
|
@ -190,7 +189,7 @@ void h3_init_irq(void)
|
||||||
|
|
||||||
static void __init h3_map_io(void)
|
static void __init h3_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(h3_serial_ports);
|
omap_serial_init(h3_serial_ports);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* linux/arch/arm/mach-omap/board-innovator.c
|
* linux/arch/arm/mach-omap1/board-innovator.c
|
||||||
*
|
*
|
||||||
* Board specific inits for OMAP-1510 and OMAP-1610 Innovator
|
* Board specific inits for OMAP-1510 and OMAP-1610 Innovator
|
||||||
*
|
*
|
||||||
|
@ -33,8 +33,7 @@
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
#include <asm/arch/tc.h>
|
#include <asm/arch/tc.h>
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
static int __initdata innovator_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
static int __initdata innovator_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
||||||
|
|
||||||
|
@ -252,7 +251,7 @@ static void __init innovator_init(void)
|
||||||
|
|
||||||
static void __init innovator_map_io(void)
|
static void __init innovator_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_io();
|
omap_map_common_io();
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP1510
|
#ifdef CONFIG_ARCH_OMAP1510
|
||||||
if (cpu_is_omap1510()) {
|
if (cpu_is_omap1510()) {
|
|
@ -26,8 +26,7 @@
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
extern void __init omap_init_time(void);
|
extern void __init omap_init_time(void);
|
||||||
extern int omap_gpio_init(void);
|
extern int omap_gpio_init(void);
|
||||||
|
@ -100,7 +99,7 @@ static int __initdata omap_serial_ports[OMAP_MAX_NR_PORTS] = {1, 1, 1};
|
||||||
|
|
||||||
static void __init netstar_map_io(void)
|
static void __init netstar_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(omap_serial_ports);
|
omap_serial_init(omap_serial_ports);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* linux/arch/arm/mach-omap/board-osk.c
|
* linux/arch/arm/mach-omap1/board-osk.c
|
||||||
*
|
*
|
||||||
* Board specific init for OMAP5912 OSK
|
* Board specific init for OMAP5912 OSK
|
||||||
*
|
*
|
||||||
|
@ -39,8 +39,7 @@
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/tc.h>
|
#include <asm/arch/tc.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
static struct map_desc osk5912_io_desc[] __initdata = {
|
static struct map_desc osk5912_io_desc[] __initdata = {
|
||||||
{ OMAP_OSK_NOR_FLASH_BASE, OMAP_OSK_NOR_FLASH_START, OMAP_OSK_NOR_FLASH_SIZE,
|
{ OMAP_OSK_NOR_FLASH_BASE, OMAP_OSK_NOR_FLASH_START, OMAP_OSK_NOR_FLASH_SIZE,
|
||||||
|
@ -153,7 +152,7 @@ static void __init osk_init(void)
|
||||||
|
|
||||||
static void __init osk_map_io(void)
|
static void __init osk_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_io();
|
omap_map_common_io();
|
||||||
iotable_init(osk5912_io_desc, ARRAY_SIZE(osk5912_io_desc));
|
iotable_init(osk5912_io_desc, ARRAY_SIZE(osk5912_io_desc));
|
||||||
omap_serial_init(osk_serial_ports);
|
omap_serial_init(osk_serial_ports);
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* linux/arch/arm/mach-omap/board-perseus2.c
|
* linux/arch/arm/mach-omap1/board-perseus2.c
|
||||||
*
|
*
|
||||||
* Modified from board-generic.c
|
* Modified from board-generic.c
|
||||||
*
|
*
|
||||||
|
@ -27,8 +27,7 @@
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
#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 "common.h"
|
|
||||||
|
|
||||||
static struct resource smc91x_resources[] = {
|
static struct resource smc91x_resources[] = {
|
||||||
[0] = {
|
[0] = {
|
||||||
|
@ -140,7 +139,7 @@ static struct map_desc omap_perseus2_io_desc[] __initdata = {
|
||||||
|
|
||||||
static void __init omap_perseus2_map_io(void)
|
static void __init omap_perseus2_map_io(void)
|
||||||
{
|
{
|
||||||
omap_map_io();
|
omap_map_common_io();
|
||||||
iotable_init(omap_perseus2_io_desc,
|
iotable_init(omap_perseus2_io_desc,
|
||||||
ARRAY_SIZE(omap_perseus2_io_desc));
|
ARRAY_SIZE(omap_perseus2_io_desc));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* linux/arch/arm/mach-omap/board-voiceblue.c
|
* linux/arch/arm/mach-omap1/board-voiceblue.c
|
||||||
*
|
*
|
||||||
* Modified from board-generic.c
|
* Modified from board-generic.c
|
||||||
*
|
*
|
||||||
|
@ -31,8 +31,7 @@
|
||||||
#include <asm/arch/tc.h>
|
#include <asm/arch/tc.h>
|
||||||
#include <asm/arch/mux.h>
|
#include <asm/arch/mux.h>
|
||||||
#include <asm/arch/usb.h>
|
#include <asm/arch/usb.h>
|
||||||
|
#include <asm/arch/common.h>
|
||||||
#include "common.h"
|
|
||||||
|
|
||||||
extern void omap_init_time(void);
|
extern void omap_init_time(void);
|
||||||
extern int omap_gpio_init(void);
|
extern int omap_gpio_init(void);
|
||||||
|
@ -170,7 +169,7 @@ 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_io();
|
omap_map_common_io();
|
||||||
omap_serial_init(omap_serial_ports);
|
omap_serial_init(omap_serial_ports);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,188 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/mach-omap1/id.c
|
||||||
|
*
|
||||||
|
* OMAP1 CPU identification code
|
||||||
|
*
|
||||||
|
* Copyright (C) 2004 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>
|
||||||
|
|
||||||
|
struct omap_id {
|
||||||
|
u16 jtag_id; /* Used to determine OMAP type */
|
||||||
|
u8 die_rev; /* Processor revision */
|
||||||
|
u32 omap_id; /* OMAP revision */
|
||||||
|
u32 type; /* Cpu id bits [31:08], cpu class bits [07:00] */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Register values to detect the OMAP version */
|
||||||
|
static struct omap_id omap_ids[] __initdata = {
|
||||||
|
{ .jtag_id = 0x355f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300100},
|
||||||
|
{ .jtag_id = 0xb55f, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x07300300},
|
||||||
|
{ .jtag_id = 0xb470, .die_rev = 0x0, .omap_id = 0x03310100, .type = 0x15100000},
|
||||||
|
{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320000, .type = 0x16100000},
|
||||||
|
{ .jtag_id = 0xb576, .die_rev = 0x2, .omap_id = 0x03320100, .type = 0x16110000},
|
||||||
|
{ .jtag_id = 0xb576, .die_rev = 0x3, .omap_id = 0x03320100, .type = 0x16100c00},
|
||||||
|
{ .jtag_id = 0xb576, .die_rev = 0x0, .omap_id = 0x03320200, .type = 0x16100d00},
|
||||||
|
{ .jtag_id = 0xb613, .die_rev = 0x0, .omap_id = 0x03320300, .type = 0x1610ef00},
|
||||||
|
{ .jtag_id = 0xb613, .die_rev = 0x0, .omap_id = 0x03320300, .type = 0x1610ef00},
|
||||||
|
{ .jtag_id = 0xb576, .die_rev = 0x1, .omap_id = 0x03320100, .type = 0x16110000},
|
||||||
|
{ .jtag_id = 0xb58c, .die_rev = 0x2, .omap_id = 0x03320200, .type = 0x16110b00},
|
||||||
|
{ .jtag_id = 0xb58c, .die_rev = 0x3, .omap_id = 0x03320200, .type = 0x16110c00},
|
||||||
|
{ .jtag_id = 0xb65f, .die_rev = 0x0, .omap_id = 0x03320400, .type = 0x16212300},
|
||||||
|
{ .jtag_id = 0xb65f, .die_rev = 0x1, .omap_id = 0x03320400, .type = 0x16212300},
|
||||||
|
{ .jtag_id = 0xb65f, .die_rev = 0x1, .omap_id = 0x03320500, .type = 0x16212300},
|
||||||
|
{ .jtag_id = 0xb5f7, .die_rev = 0x0, .omap_id = 0x03330000, .type = 0x17100000},
|
||||||
|
{ .jtag_id = 0xb5f7, .die_rev = 0x1, .omap_id = 0x03330100, .type = 0x17100000},
|
||||||
|
{ .jtag_id = 0xb5f7, .die_rev = 0x2, .omap_id = 0x03330100, .type = 0x17100000},
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get OMAP type from PROD_ID.
|
||||||
|
* 1710 has the PROD_ID in bits 15:00, not in 16:01 as documented in TRM.
|
||||||
|
* 1510 PROD_ID is empty, and 1610 PROD_ID does not make sense.
|
||||||
|
* Undocumented register in TEST BLOCK is used as fallback; This seems to
|
||||||
|
* work on 1510, 1610 & 1710. The official way hopefully will work in future
|
||||||
|
* processors.
|
||||||
|
*/
|
||||||
|
static u16 __init omap_get_jtag_id(void)
|
||||||
|
{
|
||||||
|
u32 prod_id, omap_id;
|
||||||
|
|
||||||
|
prod_id = omap_readl(OMAP_PRODUCTION_ID_1);
|
||||||
|
omap_id = omap_readl(OMAP32_ID_1);
|
||||||
|
|
||||||
|
/* Check for unusable OMAP_PRODUCTION_ID_1 on 1611B/5912 and 730 */
|
||||||
|
if (((prod_id >> 20) == 0) || (prod_id == omap_id))
|
||||||
|
prod_id = 0;
|
||||||
|
else
|
||||||
|
prod_id &= 0xffff;
|
||||||
|
|
||||||
|
if (prod_id)
|
||||||
|
return prod_id;
|
||||||
|
|
||||||
|
/* Use OMAP32_ID_1 as fallback */
|
||||||
|
prod_id = ((omap_id >> 12) & 0xffff);
|
||||||
|
|
||||||
|
return prod_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get OMAP revision from DIE_REV.
|
||||||
|
* Early 1710 processors may have broken OMAP_DIE_ID, it contains PROD_ID.
|
||||||
|
* Undocumented register in the TEST BLOCK is used as fallback.
|
||||||
|
* REVISIT: This does not seem to work on 1510
|
||||||
|
*/
|
||||||
|
static u8 __init omap_get_die_rev(void)
|
||||||
|
{
|
||||||
|
u32 die_rev;
|
||||||
|
|
||||||
|
die_rev = omap_readl(OMAP_DIE_ID_1);
|
||||||
|
|
||||||
|
/* Check for broken OMAP_DIE_ID on early 1710 */
|
||||||
|
if (((die_rev >> 12) & 0xffff) == omap_get_jtag_id())
|
||||||
|
die_rev = 0;
|
||||||
|
|
||||||
|
die_rev = (die_rev >> 17) & 0xf;
|
||||||
|
if (die_rev)
|
||||||
|
return die_rev;
|
||||||
|
|
||||||
|
die_rev = (omap_readl(OMAP32_ID_1) >> 28) & 0xf;
|
||||||
|
|
||||||
|
return die_rev;
|
||||||
|
}
|
||||||
|
|
||||||
|
void __init omap_check_revision(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
u16 jtag_id;
|
||||||
|
u8 die_rev;
|
||||||
|
u32 omap_id;
|
||||||
|
u8 cpu_type;
|
||||||
|
|
||||||
|
jtag_id = omap_get_jtag_id();
|
||||||
|
die_rev = omap_get_die_rev();
|
||||||
|
omap_id = omap_readl(OMAP32_ID_0);
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
printk("OMAP_DIE_ID_0: 0x%08x\n", omap_readl(OMAP_DIE_ID_0));
|
||||||
|
printk("OMAP_DIE_ID_1: 0x%08x DIE_REV: %i\n",
|
||||||
|
omap_readl(OMAP_DIE_ID_1),
|
||||||
|
(omap_readl(OMAP_DIE_ID_1) >> 17) & 0xf);
|
||||||
|
printk("OMAP_PRODUCTION_ID_0: 0x%08x\n", omap_readl(OMAP_PRODUCTION_ID_0));
|
||||||
|
printk("OMAP_PRODUCTION_ID_1: 0x%08x JTAG_ID: 0x%04x\n",
|
||||||
|
omap_readl(OMAP_PRODUCTION_ID_1),
|
||||||
|
omap_readl(OMAP_PRODUCTION_ID_1) & 0xffff);
|
||||||
|
printk("OMAP32_ID_0: 0x%08x\n", omap_readl(OMAP32_ID_0));
|
||||||
|
printk("OMAP32_ID_1: 0x%08x\n", omap_readl(OMAP32_ID_1));
|
||||||
|
printk("JTAG_ID: 0x%04x DIE_REV: %i\n", jtag_id, die_rev);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
system_serial_high = omap_readl(OMAP_DIE_ID_0);
|
||||||
|
system_serial_low = omap_readl(OMAP_DIE_ID_1);
|
||||||
|
|
||||||
|
/* First check only the major version in a safe way */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
|
||||||
|
if (jtag_id == (omap_ids[i].jtag_id)) {
|
||||||
|
system_rev = omap_ids[i].type;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check if we can find the die revision */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
|
||||||
|
if (jtag_id == omap_ids[i].jtag_id && die_rev == omap_ids[i].die_rev) {
|
||||||
|
system_rev = omap_ids[i].type;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Finally check also the omap_id */
|
||||||
|
for (i = 0; i < ARRAY_SIZE(omap_ids); i++) {
|
||||||
|
if (jtag_id == omap_ids[i].jtag_id
|
||||||
|
&& die_rev == omap_ids[i].die_rev
|
||||||
|
&& omap_id == omap_ids[i].omap_id) {
|
||||||
|
system_rev = omap_ids[i].type;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add the cpu class info (7xx, 15xx, 16xx, 24xx) */
|
||||||
|
cpu_type = system_rev >> 24;
|
||||||
|
|
||||||
|
switch (cpu_type) {
|
||||||
|
case 0x07:
|
||||||
|
system_rev |= 0x07;
|
||||||
|
break;
|
||||||
|
case 0x15:
|
||||||
|
system_rev |= 0x15;
|
||||||
|
break;
|
||||||
|
case 0x16:
|
||||||
|
case 0x17:
|
||||||
|
system_rev |= 0x16;
|
||||||
|
break;
|
||||||
|
case 0x24:
|
||||||
|
system_rev |= 0x24;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printk("Unknown OMAP cpu type: 0x%02x\n", cpu_type);
|
||||||
|
}
|
||||||
|
|
||||||
|
printk("OMAP%04x", system_rev >> 16);
|
||||||
|
if ((system_rev >> 8) & 0xff)
|
||||||
|
printk("%x", (system_rev >> 8) & 0xff);
|
||||||
|
printk(" revision %i handled as %02xxx id: %08x%08x\n",
|
||||||
|
die_rev, system_rev & 0xff, system_serial_low,
|
||||||
|
system_serial_high);
|
||||||
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue