Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
This commit is contained in:
commit
bd3c97a7c7
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -20,6 +20,7 @@
|
|||
# Top-level generic files
|
||||
#
|
||||
tags
|
||||
TAGS
|
||||
vmlinux*
|
||||
System.map
|
||||
Module.symvers
|
||||
|
|
8
CREDITS
8
CREDITS
|
@ -45,7 +45,7 @@ S: Longford, Ireland
|
|||
S: Sydney, Australia
|
||||
|
||||
N: Tigran A. Aivazian
|
||||
E: tigran@veritas.com
|
||||
E: tigran@aivazian.fsnet.co.uk
|
||||
W: http://www.moses.uklinux.net/patches
|
||||
D: BFS filesystem
|
||||
D: Intel IA32 CPU microcode update support
|
||||
|
@ -3511,14 +3511,12 @@ D: The Linux Support Team Erlangen
|
|||
|
||||
N: David Weinehall
|
||||
E: tao@acc.umu.se
|
||||
P: 1024D/DC47CA16 7ACE 0FB0 7A74 F994 9B36 E1D1 D14E 8526 DC47 CA16
|
||||
W: http://www.acc.umu.se/~tao/
|
||||
W: http://www.acc.umu.se/~mcalinux/
|
||||
D: v2.0 kernel maintainer
|
||||
D: Fixes for the NE/2-driver
|
||||
D: Miscellaneous MCA-support
|
||||
D: Cleanup of the Config-files
|
||||
S: Axtorpsvagen 40:20
|
||||
S: S-903 37 UMEA
|
||||
S: Sweden
|
||||
|
||||
N: Matt Welsh
|
||||
E: mdw@metalab.unc.edu
|
||||
|
|
|
@ -21,7 +21,7 @@ Description:
|
|||
these states.
|
||||
|
||||
What: /sys/power/disk
|
||||
Date: August 2006
|
||||
Date: September 2006
|
||||
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
||||
Description:
|
||||
The /sys/power/disk file controls the operating mode of the
|
||||
|
@ -39,6 +39,19 @@ Description:
|
|||
'reboot' - the memory image will be saved by the kernel and
|
||||
the system will be rebooted.
|
||||
|
||||
Additionally, /sys/power/disk can be used to turn on one of the
|
||||
two testing modes of the suspend-to-disk mechanism: 'testproc'
|
||||
or 'test'. If the suspend-to-disk mechanism is in the
|
||||
'testproc' mode, writing 'disk' to /sys/power/state will cause
|
||||
the kernel to disable nonboot CPUs and freeze tasks, wait for 5
|
||||
seconds, unfreeze tasks and enable nonboot CPUs. If it is in
|
||||
the 'test' mode, writing 'disk' to /sys/power/state will cause
|
||||
the kernel to disable nonboot CPUs and freeze tasks, shrink
|
||||
memory, suspend devices, wait for 5 seconds, resume devices,
|
||||
unfreeze tasks and enable nonboot CPUs. Then, we are able to
|
||||
look in the log messages and work out, for example, which code
|
||||
is being slow and which device drivers are misbehaving.
|
||||
|
||||
The suspend-to-disk method may be chosen by writing to this
|
||||
file one of the accepted strings:
|
||||
|
||||
|
@ -46,6 +59,8 @@ Description:
|
|||
'platform'
|
||||
'shutdown'
|
||||
'reboot'
|
||||
'testproc'
|
||||
'test'
|
||||
|
||||
It will only change to 'firmware' or 'platform' if the system
|
||||
supports that.
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
|
||||
kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
|
||||
procfs-guide.xml writing_usb_driver.xml \
|
||||
kernel-api.xml journal-api.xml lsm.xml usb.xml \
|
||||
kernel-api.xml filesystems.xml lsm.xml usb.xml \
|
||||
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
||||
genericirq.xml
|
||||
|
||||
|
|
|
@ -2,9 +2,106 @@
|
|||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||
|
||||
<book id="LinuxJBDAPI">
|
||||
<book id="Linux-filesystems-API">
|
||||
<bookinfo>
|
||||
<title>Linux Filesystems API</title>
|
||||
|
||||
<legalnotice>
|
||||
<para>
|
||||
This documentation is free software; you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later
|
||||
version.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This program is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You should have received a copy of the GNU General Public
|
||||
License along with this program; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
MA 02111-1307 USA
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For more details see the file COPYING in the source
|
||||
distribution of Linux.
|
||||
</para>
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
|
||||
<toc></toc>
|
||||
|
||||
<chapter id="vfs">
|
||||
<title>The Linux VFS</title>
|
||||
<sect1><title>The Filesystem types</title>
|
||||
!Iinclude/linux/fs.h
|
||||
</sect1>
|
||||
<sect1><title>The Directory Cache</title>
|
||||
!Efs/dcache.c
|
||||
!Iinclude/linux/dcache.h
|
||||
</sect1>
|
||||
<sect1><title>Inode Handling</title>
|
||||
!Efs/inode.c
|
||||
!Efs/bad_inode.c
|
||||
</sect1>
|
||||
<sect1><title>Registration and Superblocks</title>
|
||||
!Efs/super.c
|
||||
</sect1>
|
||||
<sect1><title>File Locks</title>
|
||||
!Efs/locks.c
|
||||
!Ifs/locks.c
|
||||
</sect1>
|
||||
<sect1><title>Other Functions</title>
|
||||
!Efs/mpage.c
|
||||
!Efs/namei.c
|
||||
!Efs/buffer.c
|
||||
!Efs/bio.c
|
||||
!Efs/seq_file.c
|
||||
!Efs/filesystems.c
|
||||
!Efs/fs-writeback.c
|
||||
!Efs/block_dev.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="proc">
|
||||
<title>The proc filesystem</title>
|
||||
|
||||
<sect1><title>sysctl interface</title>
|
||||
!Ekernel/sysctl.c
|
||||
</sect1>
|
||||
|
||||
<sect1><title>proc filesystem interface</title>
|
||||
!Ifs/proc/base.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="sysfs">
|
||||
<title>The Filesystem for Exporting Kernel Objects</title>
|
||||
!Efs/sysfs/file.c
|
||||
!Efs/sysfs/symlink.c
|
||||
!Efs/sysfs/bin.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="debugfs">
|
||||
<title>The debugfs filesystem</title>
|
||||
|
||||
<sect1><title>debugfs interface</title>
|
||||
!Efs/debugfs/inode.c
|
||||
!Efs/debugfs/file.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="LinuxJDBAPI">
|
||||
<chapterinfo>
|
||||
<title>The Linux Journalling API</title>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Roger</firstname>
|
||||
|
@ -14,9 +111,9 @@
|
|||
<email>rgammans@computer-surgery.co.uk</email>
|
||||
</address>
|
||||
</affiliation>
|
||||
</author>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<firstname>Stephen</firstname>
|
||||
|
@ -33,50 +130,21 @@
|
|||
<year>2002</year>
|
||||
<holder>Roger Gammans</holder>
|
||||
</copyright>
|
||||
</chapterinfo>
|
||||
|
||||
<legalnotice>
|
||||
<para>
|
||||
This documentation is free software; you can redistribute
|
||||
it and/or modify it under the terms of the GNU General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2 of the License, or (at your option) any later
|
||||
version.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
This program is distributed in the hope that it will be
|
||||
useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
You should have received a copy of the GNU General Public
|
||||
License along with this program; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
MA 02111-1307 USA
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For more details see the file COPYING in the source
|
||||
distribution of Linux.
|
||||
</para>
|
||||
</legalnotice>
|
||||
</bookinfo>
|
||||
<title>The Linux Journalling API</title>
|
||||
|
||||
<toc></toc>
|
||||
|
||||
<chapter id="Overview">
|
||||
<sect1>
|
||||
<title>Overview</title>
|
||||
<sect1>
|
||||
<sect2>
|
||||
<title>Details</title>
|
||||
<para>
|
||||
The journalling layer is easy to use. You need to
|
||||
The journalling layer is easy to use. You need to
|
||||
first of all create a journal_t data structure. There are
|
||||
two calls to do this dependent on how you decide to allocate the physical
|
||||
media on which the journal resides. The journal_init_inode() call
|
||||
media on which the journal resides. The journal_init_inode() call
|
||||
is for journals stored in filesystem inodes, or the journal_init_dev()
|
||||
call can be use for journal stored on a raw device (in a continuous range
|
||||
call can be use for journal stored on a raw device (in a continuous range
|
||||
of blocks). A journal_t is a typedef for a struct pointer, so when
|
||||
you are finally finished make sure you call journal_destroy() on it
|
||||
to free up any used kernel memory.
|
||||
|
@ -91,27 +159,26 @@ need to call journal_create().
|
|||
<para>
|
||||
Most of the time however your journal file will already have been created, but
|
||||
before you load it you must call journal_wipe() to empty the journal file.
|
||||
Hang on, you say , what if the filesystem wasn't cleanly umount()'d . Well, it is the
|
||||
Hang on, you say , what if the filesystem wasn't cleanly umount()'d . Well, it is the
|
||||
job of the client file system to detect this and skip the call to journal_wipe().
|
||||
</para>
|
||||
|
||||
<para>
|
||||
In either case the next call should be to journal_load() which prepares the
|
||||
journal file for use. Note that journal_wipe(..,0) calls journal_skip_recovery()
|
||||
journal file for use. Note that journal_wipe(..,0) calls journal_skip_recovery()
|
||||
for you if it detects any outstanding transactions in the journal and similarly
|
||||
journal_load() will call journal_recover() if necessary.
|
||||
I would advise reading fs/ext3/super.c for examples on this stage.
|
||||
[RGG: Why is the journal_wipe() call necessary - doesn't this needlessly
|
||||
complicate the API. Or isn't a good idea for the journal layer to hide
|
||||
[RGG: Why is the journal_wipe() call necessary - doesn't this needlessly
|
||||
complicate the API. Or isn't a good idea for the journal layer to hide
|
||||
dirty mounts from the client fs]
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Now you can go ahead and start modifying the underlying
|
||||
Now you can go ahead and start modifying the underlying
|
||||
filesystem. Almost.
|
||||
</para>
|
||||
|
||||
|
||||
<para>
|
||||
|
||||
You still need to actually journal your filesystem changes, this
|
||||
|
@ -138,10 +205,10 @@ individual buffers (blocks). Before you start to modify a buffer you
|
|||
need to call journal_get_{create,write,undo}_access() as appropriate,
|
||||
this allows the journalling layer to copy the unmodified data if it
|
||||
needs to. After all the buffer may be part of a previously uncommitted
|
||||
transaction.
|
||||
transaction.
|
||||
At this point you are at last ready to modify a buffer, and once
|
||||
you are have done so you need to call journal_dirty_{meta,}data().
|
||||
Or if you've asked for access to a buffer you now know is now longer
|
||||
Or if you've asked for access to a buffer you now know is now longer
|
||||
required to be pushed back on the device you can call journal_forget()
|
||||
in much the same way as you might have used bforget() in the past.
|
||||
</para>
|
||||
|
@ -156,7 +223,6 @@ Then at umount time , in your put_super() (2.4) or write_super() (2.5)
|
|||
you can then call journal_destroy() to clean up your in-core journal object.
|
||||
</para>
|
||||
|
||||
|
||||
<para>
|
||||
Unfortunately there a couple of ways the journal layer can cause a deadlock.
|
||||
The first thing to note is that each task can only have
|
||||
|
@ -164,19 +230,19 @@ a single outstanding transaction at any one time, remember nothing
|
|||
commits until the outermost journal_stop(). This means
|
||||
you must complete the transaction at the end of each file/inode/address
|
||||
etc. operation you perform, so that the journalling system isn't re-entered
|
||||
on another journal. Since transactions can't be nested/batched
|
||||
on another journal. Since transactions can't be nested/batched
|
||||
across differing journals, and another filesystem other than
|
||||
yours (say ext3) may be modified in a later syscall.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The second case to bear in mind is that journal_start() can
|
||||
block if there isn't enough space in the journal for your transaction
|
||||
The second case to bear in mind is that journal_start() can
|
||||
block if there isn't enough space in the journal for your transaction
|
||||
(based on the passed nblocks param) - when it blocks it merely(!) needs to
|
||||
wait for transactions to complete and be committed from other tasks,
|
||||
so essentially we are waiting for journal_stop(). So to avoid
|
||||
wait for transactions to complete and be committed from other tasks,
|
||||
so essentially we are waiting for journal_stop(). So to avoid
|
||||
deadlocks you must treat journal_start/stop() as if they
|
||||
were semaphores and include them in your semaphore ordering rules to prevent
|
||||
were semaphores and include them in your semaphore ordering rules to prevent
|
||||
deadlocks. Note that journal_extend() has similar blocking behaviour to
|
||||
journal_start() so you can deadlock here just as easily as on journal_start().
|
||||
</para>
|
||||
|
@ -184,7 +250,7 @@ journal_start() so you can deadlock here just as easily as on journal_start().
|
|||
<para>
|
||||
Try to reserve the right number of blocks the first time. ;-). This will
|
||||
be the maximum number of blocks you are going to touch in this transaction.
|
||||
I advise having a look at at least ext3_jbd.h to see the basis on which
|
||||
I advise having a look at at least ext3_jbd.h to see the basis on which
|
||||
ext3 uses to make these decisions.
|
||||
</para>
|
||||
|
||||
|
@ -193,13 +259,13 @@ Another wriggle to watch out for is your on-disk block allocation strategy.
|
|||
why? Because, if you undo a delete, you need to ensure you haven't reused any
|
||||
of the freed blocks in a later transaction. One simple way of doing this
|
||||
is make sure any blocks you allocate only have checkpointed transactions
|
||||
listed against them. Ext3 does this in ext3_test_allocatable().
|
||||
listed against them. Ext3 does this in ext3_test_allocatable().
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Lock is also providing through journal_{un,}lock_updates(),
|
||||
ext3 uses this when it wants a window with a clean and stable fs for a moment.
|
||||
eg.
|
||||
eg.
|
||||
</para>
|
||||
|
||||
<programlisting>
|
||||
|
@ -230,19 +296,19 @@ extend it like this:-
|
|||
struct journal_callback for_jbd;
|
||||
// Stuff for myfs allocated together.
|
||||
myfs_inode* i_commited;
|
||||
|
||||
|
||||
}
|
||||
</programlisting>
|
||||
|
||||
<para>
|
||||
this would be useful if you needed to know when data was committed to a
|
||||
this would be useful if you needed to know when data was committed to a
|
||||
particular inode.
|
||||
</para>
|
||||
|
||||
</sect1>
|
||||
</sect2>
|
||||
|
||||
<sect1>
|
||||
<title>Summary</title>
|
||||
<sect2>
|
||||
<title>Summary</title>
|
||||
<para>
|
||||
Using the journal is a matter of wrapping the different context changes,
|
||||
being each mount, each modification (transaction) and each changed buffer
|
||||
|
@ -260,15 +326,15 @@ an example.
|
|||
if (clean) journal_wipe();
|
||||
journal_load();
|
||||
|
||||
foreach(transaction) { /*transactions must be
|
||||
foreach(transaction) { /*transactions must be
|
||||
completed before
|
||||
a syscall returns to
|
||||
a syscall returns to
|
||||
userspace*/
|
||||
|
||||
handle_t * xct=journal_start(my_jnrl);
|
||||
foreach(bh) {
|
||||
journal_get_{create,write,undo}_access(xact,bh);
|
||||
if ( myfs_modify(bh) ) { /* returns true
|
||||
if ( myfs_modify(bh) ) { /* returns true
|
||||
if makes changes */
|
||||
journal_dirty_{meta,}data(xact,bh);
|
||||
} else {
|
||||
|
@ -279,55 +345,57 @@ an example.
|
|||
}
|
||||
journal_destroy(my_jrnl);
|
||||
</programlisting>
|
||||
</sect1>
|
||||
</sect2>
|
||||
|
||||
</chapter>
|
||||
</sect1>
|
||||
|
||||
<chapter id="adt">
|
||||
<sect1>
|
||||
<title>Data Types</title>
|
||||
<para>
|
||||
<para>
|
||||
The journalling layer uses typedefs to 'hide' the concrete definitions
|
||||
of the structures used. As a client of the JBD layer you can
|
||||
just rely on the using the pointer as a magic cookie of some sort.
|
||||
|
||||
Obviously the hiding is not enforced as this is 'C'.
|
||||
</para>
|
||||
<sect1><title>Structures</title>
|
||||
!Iinclude/linux/jbd.h
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="calls">
|
||||
Obviously the hiding is not enforced as this is 'C'.
|
||||
</para>
|
||||
<sect2><title>Structures</title>
|
||||
!Iinclude/linux/jbd.h
|
||||
</sect2>
|
||||
</sect1>
|
||||
|
||||
<sect1>
|
||||
<title>Functions</title>
|
||||
<para>
|
||||
<para>
|
||||
The functions here are split into two groups those that
|
||||
affect a journal as a whole, and those which are used to
|
||||
manage transactions
|
||||
</para>
|
||||
<sect1><title>Journal Level</title>
|
||||
</para>
|
||||
<sect2><title>Journal Level</title>
|
||||
!Efs/jbd/journal.c
|
||||
!Ifs/jbd/recovery.c
|
||||
</sect1>
|
||||
<sect1><title>Transasction Level</title>
|
||||
!Efs/jbd/transaction.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
<chapter>
|
||||
</sect2>
|
||||
<sect2><title>Transasction Level</title>
|
||||
!Efs/jbd/transaction.c
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1>
|
||||
<title>See also</title>
|
||||
<para>
|
||||
<citation>
|
||||
<citation>
|
||||
<ulink url="ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz">
|
||||
Journaling the Linux ext2fs Filesystem,LinuxExpo 98, Stephen Tweedie
|
||||
Journaling the Linux ext2fs Filesystem, LinuxExpo 98, Stephen Tweedie
|
||||
</ulink>
|
||||
</citation>
|
||||
</para>
|
||||
<para>
|
||||
</citation>
|
||||
</para>
|
||||
<para>
|
||||
<citation>
|
||||
<ulink url="http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html">
|
||||
Ext3 Journalling FileSystem , OLS 2000, Dr. Stephen Tweedie
|
||||
Ext3 Journalling FileSystem, OLS 2000, Dr. Stephen Tweedie
|
||||
</ulink>
|
||||
</citation>
|
||||
</para>
|
||||
</chapter>
|
||||
</para>
|
||||
</sect1>
|
||||
|
||||
</chapter>
|
||||
|
||||
</book>
|
|
@ -182,66 +182,6 @@ X!Ilib/string.c
|
|||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="vfs">
|
||||
<title>The Linux VFS</title>
|
||||
<sect1><title>The Filesystem types</title>
|
||||
!Iinclude/linux/fs.h
|
||||
</sect1>
|
||||
<sect1><title>The Directory Cache</title>
|
||||
!Efs/dcache.c
|
||||
!Iinclude/linux/dcache.h
|
||||
</sect1>
|
||||
<sect1><title>Inode Handling</title>
|
||||
!Efs/inode.c
|
||||
!Efs/bad_inode.c
|
||||
</sect1>
|
||||
<sect1><title>Registration and Superblocks</title>
|
||||
!Efs/super.c
|
||||
</sect1>
|
||||
<sect1><title>File Locks</title>
|
||||
!Efs/locks.c
|
||||
!Ifs/locks.c
|
||||
</sect1>
|
||||
<sect1><title>Other Functions</title>
|
||||
!Efs/mpage.c
|
||||
!Efs/namei.c
|
||||
!Efs/buffer.c
|
||||
!Efs/bio.c
|
||||
!Efs/seq_file.c
|
||||
!Efs/filesystems.c
|
||||
!Efs/fs-writeback.c
|
||||
!Efs/block_dev.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="proc">
|
||||
<title>The proc filesystem</title>
|
||||
|
||||
<sect1><title>sysctl interface</title>
|
||||
!Ekernel/sysctl.c
|
||||
</sect1>
|
||||
|
||||
<sect1><title>proc filesystem interface</title>
|
||||
!Ifs/proc/base.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="sysfs">
|
||||
<title>The Filesystem for Exporting Kernel Objects</title>
|
||||
!Efs/sysfs/file.c
|
||||
!Efs/sysfs/symlink.c
|
||||
!Efs/sysfs/bin.c
|
||||
</chapter>
|
||||
|
||||
<chapter id="debugfs">
|
||||
<title>The debugfs filesystem</title>
|
||||
|
||||
<sect1><title>debugfs interface</title>
|
||||
!Efs/debugfs/inode.c
|
||||
!Efs/debugfs/file.c
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="relayfs">
|
||||
<title>relay interface support</title>
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ __u64 stime, utime;
|
|||
}
|
||||
|
||||
/* Maximum size of response requested or message sent */
|
||||
#define MAX_MSG_SIZE 256
|
||||
#define MAX_MSG_SIZE 1024
|
||||
/* Maximum number of cpus expected to be specified in a cpumask */
|
||||
#define MAX_CPUS 32
|
||||
/* Maximum length of pathname to log file */
|
||||
|
|
|
@ -53,18 +53,6 @@ Who: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
|
|||
|
||||
---------------------------
|
||||
|
||||
What: sys_sysctl
|
||||
When: January 2007
|
||||
Why: The same information is available through /proc/sys and that is the
|
||||
interface user space prefers to use. And there do not appear to be
|
||||
any existing user in user space of sys_sysctl. The additional
|
||||
maintenance overhead of keeping a set of binary names gets
|
||||
in the way of doing a good job of maintaining this interface.
|
||||
|
||||
Who: Eric Biederman <ebiederm@xmission.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
|
||||
When: November 2005
|
||||
Files: drivers/pcmcia/: pcmcia_ioctl.c
|
||||
|
|
|
@ -7,8 +7,17 @@ If you encounter problems with reading UDF discs using this driver,
|
|||
please report them to linux_udf@hpesjro.fc.hp.com, which is the
|
||||
developer's list.
|
||||
|
||||
Write support requires a block driver which supports writing. The current
|
||||
scsi and ide cdrom drivers do not support writing.
|
||||
Write support requires a block driver which supports writing. Currently
|
||||
dvd+rw drives and media support true random sector writes, and so a udf
|
||||
filesystem on such devices can be directly mounted read/write. CD-RW
|
||||
media however, does not support this. Instead the media can be formatted
|
||||
for packet mode using the utility cdrwtool, then the pktcdvd driver can
|
||||
be bound to the underlying cd device to provide the required buffering
|
||||
and read-modify-write cycles to allow the filesystem random sector writes
|
||||
while providing the hardware with only full packet writes. While not
|
||||
required for dvd+rw media, use of the pktcdvd driver often enhances
|
||||
performance due to very poor read-modify-write support supplied internally
|
||||
by drive firmware.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
The following mount options are supported:
|
||||
|
|
|
@ -17,7 +17,7 @@ are:
|
|||
special place-holders for where the extracted documentation should
|
||||
go.
|
||||
|
||||
- scripts/docproc.c
|
||||
- scripts/basic/docproc.c
|
||||
|
||||
This is a program for converting SGML template files into SGML
|
||||
files. When a file is referenced it is searched for symbols
|
||||
|
|
|
@ -164,6 +164,10 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
acpi_skip_timer_override [HW,ACPI]
|
||||
Recognize and ignore IRQ0/pin2 Interrupt Override.
|
||||
For broken nForce2 BIOS resulting in XT-PIC timer.
|
||||
acpi_use_timer_override [HW,ACPI}
|
||||
Use timer override. For some broken Nvidia NF5 boards
|
||||
that require a timer override, but don't have
|
||||
HPET
|
||||
|
||||
acpi_dbg_layer= [HW,ACPI]
|
||||
Format: <int>
|
||||
|
|
|
@ -442,9 +442,10 @@ static int __init kprobe_init(void)
|
|||
kp.fault_handler = handler_fault;
|
||||
kp.symbol_name = "do_fork";
|
||||
|
||||
if ((ret = register_kprobe(&kp) < 0)) {
|
||||
ret = register_kprobe(&kp);
|
||||
if (ret < 0) {
|
||||
printk("register_kprobe failed, returned %d\n", ret);
|
||||
return -1;
|
||||
return ret;
|
||||
}
|
||||
printk("kprobe registered\n");
|
||||
return 0;
|
||||
|
|
|
@ -1016,7 +1016,7 @@ There are some more advanced barrier functions:
|
|||
|
||||
(*) set_mb(var, value)
|
||||
|
||||
This assigns the value to the variable and then inserts at least a write
|
||||
This assigns the value to the variable and then inserts a full memory
|
||||
barrier after it, depending on the function. It isn't guaranteed to
|
||||
insert anything more than a compiler barrier in a UP compilation.
|
||||
|
||||
|
|
|
@ -38,19 +38,14 @@ The new time code provide the following services:
|
|||
|
||||
a) Implements functions required by Linux common code:
|
||||
time_init
|
||||
do_gettimeofday
|
||||
do_settimeofday
|
||||
|
||||
b) provides an abstraction of RTC and null RTC implementation as default.
|
||||
extern unsigned long (*rtc_get_time)(void);
|
||||
extern int (*rtc_set_time)(unsigned long);
|
||||
|
||||
c) a set of gettimeoffset functions for different CPUs and different
|
||||
needs.
|
||||
|
||||
d) high-level and low-level timer interrupt routines where the timer
|
||||
interrupt source may or may not be the CPU timer. The high-level
|
||||
routine is dispatched through do_IRQ() while the low-level is
|
||||
c) high-level and low-level timer interrupt routines where the timer
|
||||
interrupt source may or may not be the CPU timer. The high-level
|
||||
routine is dispatched through do_IRQ() while the low-level is
|
||||
dispatched in assemably code (usually int-handler.S)
|
||||
|
||||
|
||||
|
@ -63,7 +58,7 @@ the following functions or values:
|
|||
a) board_time_init - a function pointer. Invoked at the beginnig of
|
||||
time_init(). It is optional.
|
||||
1. (optional) set up RTC routines
|
||||
2. (optional) calibrate and set the mips_counter_frequency
|
||||
2. (optional) calibrate and set the mips_hpt_frequency
|
||||
|
||||
b) plat_timer_setup - a function pointer. Invoked at the end of time_init()
|
||||
1. (optional) over-ride any decisions made in time_init()
|
||||
|
@ -72,9 +67,8 @@ the following functions or values:
|
|||
|
||||
c) (optional) board-specific RTC routines.
|
||||
|
||||
d) (optional) mips_counter_frequency - It must be definied if the board
|
||||
is using CPU counter for timer interrupt or it is using fixed rate
|
||||
gettimeoffset().
|
||||
d) (optional) mips_hpt_frequency - It must be definied if the board
|
||||
is using CPU counter for timer interrupt.
|
||||
|
||||
|
||||
PORTING GUIDE
|
||||
|
@ -89,22 +83,12 @@ Step 1: decide how you like to implement the time services.
|
|||
If the answer is no, you need a timer to provide the timer interrupt
|
||||
at 100 HZ speed.
|
||||
|
||||
You cannot use the fast gettimeoffset functions, i.e.,
|
||||
|
||||
unsigned long fixed_rate_gettimeoffset(void);
|
||||
unsigned long calibrate_div32_gettimeoffset(void);
|
||||
unsigned long calibrate_div64_gettimeoffset(void);
|
||||
|
||||
You can use null_gettimeoffset() will gives the same time resolution as
|
||||
jiffy. Or you can implement your own gettimeoffset (probably based on
|
||||
some ad hoc hardware on your machine.)
|
||||
|
||||
c) The following sub steps assume your CPU has counter register.
|
||||
Do you plan to use the CPU counter register as the timer interrupt
|
||||
or use an exnternal timer?
|
||||
|
||||
In order to use CPU counter register as the timer interrupt source, you
|
||||
must know the counter speed (mips_counter_frequency). It is usually the
|
||||
must know the counter speed (mips_hpt_frequency). It is usually the
|
||||
same as the CPU speed or an integral divisor of it.
|
||||
|
||||
d) decide on whether you want to use high-level or low-level timer
|
||||
|
@ -121,10 +105,10 @@ Step 3: implement rtc routines, board_time_init() and plat_timer_setup()
|
|||
if needed.
|
||||
|
||||
board_time_init() -
|
||||
a) (optional) set up RTC routines,
|
||||
b) (optional) calibrate and set the mips_counter_frequency
|
||||
(only needed if you intended to use fixed_rate_gettimeoffset
|
||||
or use cpu counter as timer interrupt source)
|
||||
a) (optional) set up RTC routines,
|
||||
b) (optional) calibrate and set the mips_hpt_frequency
|
||||
(only needed if you intended to use cpu counter as timer interrupt
|
||||
source)
|
||||
|
||||
plat_timer_setup() -
|
||||
a) (optional) over-write any choices made above by time_init().
|
||||
|
@ -154,8 +138,8 @@ for some of the functions in time.c.
|
|||
For example, you may define your own timer interrupt routine, which does
|
||||
some of its own processing and then calls timer_interrupt().
|
||||
|
||||
You can also over-ride any of the built-in functions (gettimeoffset,
|
||||
RTC routines and/or timer interrupt routine).
|
||||
You can also over-ride any of the built-in functions (RTC routines
|
||||
and/or timer interrupt routine).
|
||||
|
||||
|
||||
PORTING NOTES FOR SMP
|
||||
|
@ -187,10 +171,3 @@ You need to decide on your timer interrupt sources.
|
|||
|
||||
You can also do the low-level version of those interrupt routines,
|
||||
following similar dispatching routes described above.
|
||||
|
||||
Note about do_gettimeoffset():
|
||||
|
||||
It is very likely the CPU counter registers are not sync'ed up in a SMP box.
|
||||
Therefore you cannot really use the many of the existing routines that
|
||||
are based on CPU counter. You should wirte your own gettimeoffset rouinte
|
||||
if you want intra-jiffy resolution.
|
||||
|
|
|
@ -30,6 +30,17 @@ testing). The system will support either 'firmware' or 'platform', and
|
|||
that is known a priori. But, the user may choose 'shutdown' or
|
||||
'reboot' as alternatives.
|
||||
|
||||
Additionally, /sys/power/disk can be used to turn on one of the two testing
|
||||
modes of the suspend-to-disk mechanism: 'testproc' or 'test'. If the
|
||||
suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to
|
||||
/sys/power/state will cause the kernel to disable nonboot CPUs and freeze
|
||||
tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs. If it is
|
||||
in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel
|
||||
to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait
|
||||
for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then,
|
||||
we are able to look in the log messages and work out, for example, which code
|
||||
is being slow and which device drivers are misbehaving.
|
||||
|
||||
Reading from this file will display what the mode is currently set
|
||||
to. Writing to this file will accept one of
|
||||
|
||||
|
@ -37,6 +48,8 @@ to. Writing to this file will accept one of
|
|||
'platform'
|
||||
'shutdown'
|
||||
'reboot'
|
||||
'testproc'
|
||||
'test'
|
||||
|
||||
It will only change to 'firmware' or 'platform' if the system supports
|
||||
it.
|
||||
|
|
|
@ -1,12 +1,49 @@
|
|||
|
||||
Real Time Clock Driver for Linux
|
||||
================================
|
||||
Real Time Clock (RTC) Drivers for Linux
|
||||
=======================================
|
||||
|
||||
When Linux developers talk about a "Real Time Clock", they usually mean
|
||||
something that tracks wall clock time and is battery backed so that it
|
||||
works even with system power off. Such clocks will normally not track
|
||||
the local time zone or daylight savings time -- unless they dual boot
|
||||
with MS-Windows -- but will instead be set to Coordinated Universal Time
|
||||
(UTC, formerly "Greenwich Mean Time").
|
||||
|
||||
The newest non-PC hardware tends to just count seconds, like the time(2)
|
||||
system call reports, but RTCs also very commonly represent time using
|
||||
the Gregorian calendar and 24 hour time, as reported by gmtime(3).
|
||||
|
||||
Linux has two largely-compatible userspace RTC API families you may
|
||||
need to know about:
|
||||
|
||||
* /dev/rtc ... is the RTC provided by PC compatible systems,
|
||||
so it's not very portable to non-x86 systems.
|
||||
|
||||
* /dev/rtc0, /dev/rtc1 ... are part of a framework that's
|
||||
supported by a wide variety of RTC chips on all systems.
|
||||
|
||||
Programmers need to understand that the PC/AT functionality is not
|
||||
always available, and some systems can do much more. That is, the
|
||||
RTCs use the same API to make requests in both RTC frameworks (using
|
||||
different filenames of course), but the hardware may not offer the
|
||||
same functionality. For example, not every RTC is hooked up to an
|
||||
IRQ, so they can't all issue alarms; and where standard PC RTCs can
|
||||
only issue an alarm up to 24 hours in the future, other hardware may
|
||||
be able to schedule one any time in the upcoming century.
|
||||
|
||||
|
||||
Old PC/AT-Compatible driver: /dev/rtc
|
||||
--------------------------------------
|
||||
|
||||
All PCs (even Alpha machines) have a Real Time Clock built into them.
|
||||
Usually they are built into the chipset of the computer, but some may
|
||||
actually have a Motorola MC146818 (or clone) on the board. This is the
|
||||
clock that keeps the date and time while your computer is turned off.
|
||||
|
||||
ACPI has standardized that MC146818 functionality, and extended it in
|
||||
a few ways (enabling longer alarm periods, and wake-from-hibernate).
|
||||
That functionality is NOT exposed in the old driver.
|
||||
|
||||
However it can also be used to generate signals from a slow 2Hz to a
|
||||
relatively fast 8192Hz, in increments of powers of two. These signals
|
||||
are reported by interrupt number 8. (Oh! So *that* is what IRQ 8 is
|
||||
|
@ -63,223 +100,331 @@ Rather than write 50 pages describing the ioctl() and so on, it is
|
|||
perhaps more useful to include a small test program that demonstrates
|
||||
how to use them, and demonstrates the features of the driver. This is
|
||||
probably a lot more useful to people interested in writing applications
|
||||
that will be using this driver.
|
||||
that will be using this driver. See the code at the end of this document.
|
||||
|
||||
(The original /dev/rtc driver was written by Paul Gortmaker.)
|
||||
|
||||
|
||||
New portable "RTC Class" drivers: /dev/rtcN
|
||||
--------------------------------------------
|
||||
|
||||
Because Linux supports many non-ACPI and non-PC platforms, some of which
|
||||
have more than one RTC style clock, it needed a more portable solution
|
||||
than expecting a single battery-backed MC146818 clone on every system.
|
||||
Accordingly, a new "RTC Class" framework has been defined. It offers
|
||||
three different userspace interfaces:
|
||||
|
||||
* /dev/rtcN ... much the same as the older /dev/rtc interface
|
||||
|
||||
* /sys/class/rtc/rtcN ... sysfs attributes support readonly
|
||||
access to some RTC attributes.
|
||||
|
||||
* /proc/driver/rtc ... the first RTC (rtc0) may expose itself
|
||||
using a procfs interface. More information is (currently) shown
|
||||
here than through sysfs.
|
||||
|
||||
The RTC Class framework supports a wide variety of RTCs, ranging from those
|
||||
integrated into embeddable system-on-chip (SOC) processors to discrete chips
|
||||
using I2C, SPI, or some other bus to communicate with the host CPU. There's
|
||||
even support for PC-style RTCs ... including the features exposed on newer PCs
|
||||
through ACPI.
|
||||
|
||||
The new framework also removes the "one RTC per system" restriction. For
|
||||
example, maybe the low-power battery-backed RTC is a discrete I2C chip, but
|
||||
a high functionality RTC is integrated into the SOC. That system might read
|
||||
the system clock from the discrete RTC, but use the integrated one for all
|
||||
other tasks, because of its greater functionality.
|
||||
|
||||
The ioctl() calls supported by /dev/rtc are also supported by the RTC class
|
||||
framework. However, because the chips and systems are not standardized,
|
||||
some PC/AT functionality might not be provided. And in the same way, some
|
||||
newer features -- including those enabled by ACPI -- are exposed by the
|
||||
RTC class framework, but can't be supported by the older driver.
|
||||
|
||||
* RTC_RD_TIME, RTC_SET_TIME ... every RTC supports at least reading
|
||||
time, returning the result as a Gregorian calendar date and 24 hour
|
||||
wall clock time. To be most useful, this time may also be updated.
|
||||
|
||||
* RTC_AIE_ON, RTC_AIE_OFF, RTC_ALM_SET, RTC_ALM_READ ... when the RTC
|
||||
is connected to an IRQ line, it can often issue an alarm IRQ up to
|
||||
24 hours in the future.
|
||||
|
||||
* RTC_WKALM_SET, RTC_WKALM_READ ... RTCs that can issue alarms beyond
|
||||
the next 24 hours use a slightly more powerful API, which supports
|
||||
setting the longer alarm time and enabling its IRQ using a single
|
||||
request (using the same model as EFI firmware).
|
||||
|
||||
* RTC_UIE_ON, RTC_UIE_OFF ... if the RTC offers IRQs, it probably
|
||||
also offers update IRQs whenever the "seconds" counter changes.
|
||||
If needed, the RTC framework can emulate this mechanism.
|
||||
|
||||
* RTC_PIE_ON, RTC_PIE_OFF, RTC_IRQP_SET, RTC_IRQP_READ ... another
|
||||
feature often accessible with an IRQ line is a periodic IRQ, issued
|
||||
at settable frequencies (usually 2^N Hz).
|
||||
|
||||
In many cases, the RTC alarm can be a system wake event, used to force
|
||||
Linux out of a low power sleep state (or hibernation) back to a fully
|
||||
operational state. For example, a system could enter a deep power saving
|
||||
state until it's time to execute some scheduled tasks.
|
||||
|
||||
Paul Gortmaker
|
||||
|
||||
-------------------- 8< ---------------- 8< -----------------------------
|
||||
|
||||
/*
|
||||
* Real Time Clock Driver Test/Example Program
|
||||
* Real Time Clock Driver Test/Example Program
|
||||
*
|
||||
* Compile with:
|
||||
* gcc -s -Wall -Wstrict-prototypes rtctest.c -o rtctest
|
||||
* Compile with:
|
||||
* gcc -s -Wall -Wstrict-prototypes rtctest.c -o rtctest
|
||||
*
|
||||
* Copyright (C) 1996, Paul Gortmaker.
|
||||
* Copyright (C) 1996, Paul Gortmaker.
|
||||
*
|
||||
* Released under the GNU General Public License, version 2,
|
||||
* included herein by reference.
|
||||
* Released under the GNU General Public License, version 2,
|
||||
* included herein by reference.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <linux/rtc.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
int main(void) {
|
||||
|
||||
int i, fd, retval, irqcount = 0;
|
||||
unsigned long tmp, data;
|
||||
struct rtc_time rtc_tm;
|
||||
/*
|
||||
* This expects the new RTC class driver framework, working with
|
||||
* clocks that will often not be clones of what the PC-AT had.
|
||||
* Use the command line to specify another RTC if you need one.
|
||||
*/
|
||||
static const char default_rtc[] = "/dev/rtc0";
|
||||
|
||||
fd = open ("/dev/rtc", O_RDONLY);
|
||||
|
||||
if (fd == -1) {
|
||||
perror("/dev/rtc");
|
||||
exit(errno);
|
||||
}
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, fd, retval, irqcount = 0;
|
||||
unsigned long tmp, data;
|
||||
struct rtc_time rtc_tm;
|
||||
const char *rtc = default_rtc;
|
||||
|
||||
fprintf(stderr, "\n\t\t\tRTC Driver Test Example.\n\n");
|
||||
switch (argc) {
|
||||
case 2:
|
||||
rtc = argv[1];
|
||||
/* FALLTHROUGH */
|
||||
case 1:
|
||||
break;
|
||||
default:
|
||||
fprintf(stderr, "usage: rtctest [rtcdev]\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Turn on update interrupts (one per second) */
|
||||
retval = ioctl(fd, RTC_UIE_ON, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
fd = open(rtc, O_RDONLY);
|
||||
|
||||
fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading /dev/rtc:");
|
||||
fflush(stderr);
|
||||
for (i=1; i<6; i++) {
|
||||
/* This read will block */
|
||||
retval = read(fd, &data, sizeof(unsigned long));
|
||||
if (retval == -1) {
|
||||
perror("read");
|
||||
if (fd == -1) {
|
||||
perror(rtc);
|
||||
exit(errno);
|
||||
}
|
||||
fprintf(stderr, " %d",i);
|
||||
fflush(stderr);
|
||||
irqcount++;
|
||||
}
|
||||
|
||||
fprintf(stderr, "\nAgain, from using select(2) on /dev/rtc:");
|
||||
fflush(stderr);
|
||||
for (i=1; i<6; i++) {
|
||||
struct timeval tv = {5, 0}; /* 5 second timeout on select */
|
||||
fd_set readfds;
|
||||
fprintf(stderr, "\n\t\t\tRTC Driver Test Example.\n\n");
|
||||
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(fd, &readfds);
|
||||
/* The select will wait until an RTC interrupt happens. */
|
||||
retval = select(fd+1, &readfds, NULL, NULL, &tv);
|
||||
if (retval == -1) {
|
||||
perror("select");
|
||||
exit(errno);
|
||||
}
|
||||
/* This read won't block unlike the select-less case above. */
|
||||
retval = read(fd, &data, sizeof(unsigned long));
|
||||
if (retval == -1) {
|
||||
perror("read");
|
||||
exit(errno);
|
||||
}
|
||||
fprintf(stderr, " %d",i);
|
||||
fflush(stderr);
|
||||
irqcount++;
|
||||
}
|
||||
|
||||
/* Turn off update interrupts */
|
||||
retval = ioctl(fd, RTC_UIE_OFF, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
/* Read the RTC time/date */
|
||||
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
|
||||
rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
|
||||
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
|
||||
|
||||
/* Set the alarm to 5 sec in the future, and check for rollover */
|
||||
rtc_tm.tm_sec += 5;
|
||||
if (rtc_tm.tm_sec >= 60) {
|
||||
rtc_tm.tm_sec %= 60;
|
||||
rtc_tm.tm_min++;
|
||||
}
|
||||
if (rtc_tm.tm_min == 60) {
|
||||
rtc_tm.tm_min = 0;
|
||||
rtc_tm.tm_hour++;
|
||||
}
|
||||
if (rtc_tm.tm_hour == 24)
|
||||
rtc_tm.tm_hour = 0;
|
||||
|
||||
retval = ioctl(fd, RTC_ALM_SET, &rtc_tm);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
/* Read the current alarm settings */
|
||||
retval = ioctl(fd, RTC_ALM_READ, &rtc_tm);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "Alarm time now set to %02d:%02d:%02d.\n",
|
||||
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
|
||||
|
||||
/* Enable alarm interrupts */
|
||||
retval = ioctl(fd, RTC_AIE_ON, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "Waiting 5 seconds for alarm...");
|
||||
fflush(stderr);
|
||||
/* This blocks until the alarm ring causes an interrupt */
|
||||
retval = read(fd, &data, sizeof(unsigned long));
|
||||
if (retval == -1) {
|
||||
perror("read");
|
||||
exit(errno);
|
||||
}
|
||||
irqcount++;
|
||||
fprintf(stderr, " okay. Alarm rang.\n");
|
||||
|
||||
/* Disable alarm interrupts */
|
||||
retval = ioctl(fd, RTC_AIE_OFF, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
/* Read periodic IRQ rate */
|
||||
retval = ioctl(fd, RTC_IRQP_READ, &tmp);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
fprintf(stderr, "\nPeriodic IRQ rate was %ldHz.\n", tmp);
|
||||
|
||||
fprintf(stderr, "Counting 20 interrupts at:");
|
||||
fflush(stderr);
|
||||
|
||||
/* The frequencies 128Hz, 256Hz, ... 8192Hz are only allowed for root. */
|
||||
for (tmp=2; tmp<=64; tmp*=2) {
|
||||
|
||||
retval = ioctl(fd, RTC_IRQP_SET, tmp);
|
||||
/* Turn on update interrupts (one per second) */
|
||||
retval = ioctl(fd, RTC_UIE_ON, 0);
|
||||
if (retval == -1) {
|
||||
if (errno == ENOTTY) {
|
||||
fprintf(stderr,
|
||||
"\n...Update IRQs not supported.\n");
|
||||
goto test_READ;
|
||||
}
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "\n%ldHz:\t", tmp);
|
||||
fprintf(stderr, "Counting 5 update (1/sec) interrupts from reading %s:",
|
||||
rtc);
|
||||
fflush(stderr);
|
||||
|
||||
/* Enable periodic interrupts */
|
||||
retval = ioctl(fd, RTC_PIE_ON, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
for (i=1; i<21; i++) {
|
||||
/* This blocks */
|
||||
for (i=1; i<6; i++) {
|
||||
/* This read will block */
|
||||
retval = read(fd, &data, sizeof(unsigned long));
|
||||
if (retval == -1) {
|
||||
perror("read");
|
||||
exit(errno);
|
||||
perror("read");
|
||||
exit(errno);
|
||||
}
|
||||
fprintf(stderr, " %d",i);
|
||||
fflush(stderr);
|
||||
irqcount++;
|
||||
}
|
||||
|
||||
/* Disable periodic interrupts */
|
||||
retval = ioctl(fd, RTC_PIE_OFF, 0);
|
||||
fprintf(stderr, "\nAgain, from using select(2) on /dev/rtc:");
|
||||
fflush(stderr);
|
||||
for (i=1; i<6; i++) {
|
||||
struct timeval tv = {5, 0}; /* 5 second timeout on select */
|
||||
fd_set readfds;
|
||||
|
||||
FD_ZERO(&readfds);
|
||||
FD_SET(fd, &readfds);
|
||||
/* The select will wait until an RTC interrupt happens. */
|
||||
retval = select(fd+1, &readfds, NULL, NULL, &tv);
|
||||
if (retval == -1) {
|
||||
perror("select");
|
||||
exit(errno);
|
||||
}
|
||||
/* This read won't block unlike the select-less case above. */
|
||||
retval = read(fd, &data, sizeof(unsigned long));
|
||||
if (retval == -1) {
|
||||
perror("read");
|
||||
exit(errno);
|
||||
}
|
||||
fprintf(stderr, " %d",i);
|
||||
fflush(stderr);
|
||||
irqcount++;
|
||||
}
|
||||
|
||||
/* Turn off update interrupts */
|
||||
retval = ioctl(fd, RTC_UIE_OFF, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
test_READ:
|
||||
/* Read the RTC time/date */
|
||||
retval = ioctl(fd, RTC_RD_TIME, &rtc_tm);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "\n\nCurrent RTC date/time is %d-%d-%d, %02d:%02d:%02d.\n",
|
||||
rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
|
||||
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
|
||||
|
||||
/* Set the alarm to 5 sec in the future, and check for rollover */
|
||||
rtc_tm.tm_sec += 5;
|
||||
if (rtc_tm.tm_sec >= 60) {
|
||||
rtc_tm.tm_sec %= 60;
|
||||
rtc_tm.tm_min++;
|
||||
}
|
||||
if (rtc_tm.tm_min == 60) {
|
||||
rtc_tm.tm_min = 0;
|
||||
rtc_tm.tm_hour++;
|
||||
}
|
||||
if (rtc_tm.tm_hour == 24)
|
||||
rtc_tm.tm_hour = 0;
|
||||
|
||||
retval = ioctl(fd, RTC_ALM_SET, &rtc_tm);
|
||||
if (retval == -1) {
|
||||
if (errno == ENOTTY) {
|
||||
fprintf(stderr,
|
||||
"\n...Alarm IRQs not supported.\n");
|
||||
goto test_PIE;
|
||||
}
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
/* Read the current alarm settings */
|
||||
retval = ioctl(fd, RTC_ALM_READ, &rtc_tm);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "Alarm time now set to %02d:%02d:%02d.\n",
|
||||
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
|
||||
|
||||
/* Enable alarm interrupts */
|
||||
retval = ioctl(fd, RTC_AIE_ON, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "Waiting 5 seconds for alarm...");
|
||||
fflush(stderr);
|
||||
/* This blocks until the alarm ring causes an interrupt */
|
||||
retval = read(fd, &data, sizeof(unsigned long));
|
||||
if (retval == -1) {
|
||||
perror("read");
|
||||
exit(errno);
|
||||
}
|
||||
irqcount++;
|
||||
fprintf(stderr, " okay. Alarm rang.\n");
|
||||
|
||||
/* Disable alarm interrupts */
|
||||
retval = ioctl(fd, RTC_AIE_OFF, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
test_PIE:
|
||||
/* Read periodic IRQ rate */
|
||||
retval = ioctl(fd, RTC_IRQP_READ, &tmp);
|
||||
if (retval == -1) {
|
||||
/* not all RTCs support periodic IRQs */
|
||||
if (errno == ENOTTY) {
|
||||
fprintf(stderr, "\nNo periodic IRQ support\n");
|
||||
return 0;
|
||||
}
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
fprintf(stderr, "\nPeriodic IRQ rate is %ldHz.\n", tmp);
|
||||
|
||||
fprintf(stderr, "Counting 20 interrupts at:");
|
||||
fflush(stderr);
|
||||
|
||||
/* The frequencies 128Hz, 256Hz, ... 8192Hz are only allowed for root. */
|
||||
for (tmp=2; tmp<=64; tmp*=2) {
|
||||
|
||||
retval = ioctl(fd, RTC_IRQP_SET, tmp);
|
||||
if (retval == -1) {
|
||||
/* not all RTCs can change their periodic IRQ rate */
|
||||
if (errno == ENOTTY) {
|
||||
fprintf(stderr,
|
||||
"\n...Periodic IRQ rate is fixed\n");
|
||||
goto done;
|
||||
}
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
fprintf(stderr, "\n%ldHz:\t", tmp);
|
||||
fflush(stderr);
|
||||
|
||||
/* Enable periodic interrupts */
|
||||
retval = ioctl(fd, RTC_PIE_ON, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
|
||||
for (i=1; i<21; i++) {
|
||||
/* This blocks */
|
||||
retval = read(fd, &data, sizeof(unsigned long));
|
||||
if (retval == -1) {
|
||||
perror("read");
|
||||
exit(errno);
|
||||
}
|
||||
fprintf(stderr, " %d",i);
|
||||
fflush(stderr);
|
||||
irqcount++;
|
||||
}
|
||||
|
||||
/* Disable periodic interrupts */
|
||||
retval = ioctl(fd, RTC_PIE_OFF, 0);
|
||||
if (retval == -1) {
|
||||
perror("ioctl");
|
||||
exit(errno);
|
||||
}
|
||||
}
|
||||
|
||||
done:
|
||||
fprintf(stderr, "\n\n\t\t\t *** Test complete ***\n");
|
||||
|
||||
close(fd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
fprintf(stderr, "\n\n\t\t\t *** Test complete ***\n");
|
||||
fprintf(stderr, "\nTyping \"cat /proc/interrupts\" will show %d more events on IRQ 8.\n\n",
|
||||
irqcount);
|
||||
|
||||
close(fd);
|
||||
return 0;
|
||||
|
||||
} /* end main */
|
||||
|
|
|
@ -753,7 +753,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
|||
position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)
|
||||
single_cmd - Use single immediate commands to communicate with
|
||||
codecs (for debugging only)
|
||||
disable_msi - Disable Message Signaled Interrupt (MSI)
|
||||
enable_msi - Enable Message Signaled Interrupt (MSI) (default = off)
|
||||
|
||||
This module supports one card and autoprobe.
|
||||
|
||||
|
|
|
@ -428,12 +428,6 @@ Options supported:
|
|||
See http://www.uuhaus.de/linux/palmconnect.html for up-to-date
|
||||
information on this driver.
|
||||
|
||||
AIRcable USB Dongle Bluetooth driver
|
||||
If there is the cdc_acm driver loaded in the system, you will find that the
|
||||
cdc_acm claims the device before AIRcable can. This is simply corrected
|
||||
by unloading both modules and then loading the aircable module before
|
||||
cdc_acm module
|
||||
|
||||
Generic Serial driver
|
||||
|
||||
If your device is not one of the above listed devices, compatible with
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
int main(int argc, const char *argv[]) {
|
||||
|
|
20
MAINTAINERS
20
MAINTAINERS
|
@ -353,6 +353,12 @@ P: Richard Purdie
|
|||
M: rpurdie@rpsys.net
|
||||
S: Maintained
|
||||
|
||||
ARM/HP JORNADA 7XX MACHINE SUPPORT
|
||||
P: Kristoffer Ericson
|
||||
M: kristoffer_e1@hotmail.com
|
||||
W: www.jlime.com
|
||||
S: Maintained
|
||||
|
||||
ARM/TOSA MACHINE SUPPORT
|
||||
P: Dirk Opfer
|
||||
M: dirk@opfer-online.de
|
||||
|
@ -493,7 +499,7 @@ S: Maintained
|
|||
|
||||
BFS FILE SYSTEM
|
||||
P: Tigran A. Aivazian
|
||||
M: tigran@veritas.com
|
||||
M: tigran@aivazian.fsnet.co.uk
|
||||
L: linux-kernel@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
|
@ -1513,7 +1519,7 @@ S: Maintained
|
|||
|
||||
INTEL IA32 MICROCODE UPDATE SUPPORT
|
||||
P: Tigran Aivazian
|
||||
M: tigran@veritas.com
|
||||
M: tigran@aivazian.fsnet.co.uk
|
||||
S: Maintained
|
||||
|
||||
INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
|
||||
|
@ -3072,6 +3078,13 @@ L: video4linux-list@redhat.com
|
|||
W: http://www.linux-projects.org
|
||||
S: Maintained
|
||||
|
||||
USB GADGET/PERIPHERAL SUBSYSTEM
|
||||
P: David Brownell
|
||||
M: dbrownell@users.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
W: http://www.linux-usb.org/gadget
|
||||
S: Maintained
|
||||
|
||||
USB HID/HIDBP DRIVERS
|
||||
P: Vojtech Pavlik
|
||||
M: vojtech@suse.cz
|
||||
|
@ -3255,10 +3268,11 @@ L: linux-usb-users@lists.sourceforge.net
|
|||
L: linux-usb-devel@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
USB "USBNET" DRIVER
|
||||
USB "USBNET" DRIVER FRAMEWORK
|
||||
P: David Brownell
|
||||
M: dbrownell@users.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
W: http://www.linux-usb.org/usbnet
|
||||
S: Maintained
|
||||
|
||||
USB W996[87]CF DRIVER
|
||||
|
|
3
Makefile
3
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 2
|
||||
PATCHLEVEL = 6
|
||||
SUBLEVEL = 19
|
||||
EXTRAVERSION =-rc2
|
||||
EXTRAVERSION =
|
||||
NAME=Avast! A bilge rat!
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
@ -499,6 +499,7 @@ endif
|
|||
|
||||
ifdef CONFIG_UNWIND_INFO
|
||||
CFLAGS += -fasynchronous-unwind-tables
|
||||
LDFLAGS_vmlinux += --eh-frame-hdr
|
||||
endif
|
||||
|
||||
ifdef CONFIG_DEBUG_INFO
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* srm_env.c - Access to SRM environment
|
||||
* variables through linux' procfs
|
||||
*
|
||||
* Copyright (C) 2001-2002 Jan-Benedict Glaw <jbglaw@lug-owl.de>
|
||||
* (C) 2001,2002,2006 by Jan-Benedict Glaw <jbglaw@lug-owl.de>
|
||||
*
|
||||
* This driver is at all a modified version of Erik Mouw's
|
||||
* Documentation/DocBook/procfs_example.c, so: thank
|
||||
|
@ -21,7 +21,7 @@
|
|||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
* PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc., 59 Temple Place,
|
||||
|
@ -29,33 +29,6 @@
|
|||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* Changelog
|
||||
* ~~~~~~~~~
|
||||
*
|
||||
* Thu, 22 Aug 2002 15:10:43 +0200
|
||||
* - Update Config.help entry. I got a number of emails asking
|
||||
* me to tell their senders if they could make use of this
|
||||
* piece of code... So: "SRM is something like BIOS for your
|
||||
* Alpha"
|
||||
* - Update code formatting a bit to better conform CodingStyle
|
||||
* rules.
|
||||
* - So this is v0.0.5, with no changes (except formatting)
|
||||
*
|
||||
* Wed, 22 May 2002 00:11:21 +0200
|
||||
* - Fix typo on comment (SRC -> SRM)
|
||||
* - Call this "Version 0.0.4"
|
||||
*
|
||||
* Tue, 9 Apr 2002 18:44:40 +0200
|
||||
* - Implement access by variable name and additionally
|
||||
* by number. This is done by creating two subdirectories
|
||||
* where one holds all names (like the old directory
|
||||
* did) and the other holding 256 files named like "0",
|
||||
* "1" and so on.
|
||||
* - Call this "Version 0.0.3"
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
|
@ -67,7 +40,7 @@
|
|||
#define BASE_DIR "srm_environment" /* Subdir in /proc/ */
|
||||
#define NAMED_DIR "named_variables" /* Subdir for known variables */
|
||||
#define NUMBERED_DIR "numbered_variables" /* Subdir for all variables */
|
||||
#define VERSION "0.0.5" /* Module version */
|
||||
#define VERSION "0.0.6" /* Module version */
|
||||
#define NAME "srm_env" /* Module name */
|
||||
|
||||
MODULE_AUTHOR("Jan-Benedict Glaw <jbglaw@lug-owl.de>");
|
||||
|
@ -106,7 +79,6 @@ static srm_env_t srm_named_entries[] = {
|
|||
static srm_env_t srm_numbered_entries[256];
|
||||
|
||||
|
||||
|
||||
static int
|
||||
srm_env_read(char *page, char **start, off_t off, int count, int *eof,
|
||||
void *data)
|
||||
|
@ -115,21 +87,23 @@ srm_env_read(char *page, char **start, off_t off, int count, int *eof,
|
|||
unsigned long ret;
|
||||
srm_env_t *entry;
|
||||
|
||||
if(off != 0)
|
||||
return -EFAULT;
|
||||
if (off != 0) {
|
||||
*eof = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
entry = (srm_env_t *) data;
|
||||
ret = callback_getenv(entry->id, page, count);
|
||||
|
||||
if((ret >> 61) == 0)
|
||||
if ((ret >> 61) == 0) {
|
||||
nbytes = (int) ret;
|
||||
else
|
||||
*eof = 1;
|
||||
} else
|
||||
nbytes = -EFAULT;
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
srm_env_write(struct file *file, const char __user *buffer, unsigned long count,
|
||||
void *data)
|
||||
|
@ -155,7 +129,7 @@ srm_env_write(struct file *file, const char __user *buffer, unsigned long count,
|
|||
|
||||
ret1 = callback_setenv(entry->id, buf, count);
|
||||
if ((ret1 >> 61) == 0) {
|
||||
do
|
||||
do
|
||||
ret2 = callback_save_env();
|
||||
while((ret2 >> 61) == 1);
|
||||
res = (int) ret1;
|
||||
|
@ -172,14 +146,14 @@ srm_env_cleanup(void)
|
|||
srm_env_t *entry;
|
||||
unsigned long var_num;
|
||||
|
||||
if(base_dir) {
|
||||
if (base_dir) {
|
||||
/*
|
||||
* Remove named entries
|
||||
*/
|
||||
if(named_dir) {
|
||||
if (named_dir) {
|
||||
entry = srm_named_entries;
|
||||
while(entry->name != NULL && entry->id != 0) {
|
||||
if(entry->proc_entry) {
|
||||
while (entry->name != NULL && entry->id != 0) {
|
||||
if (entry->proc_entry) {
|
||||
remove_proc_entry(entry->name,
|
||||
named_dir);
|
||||
entry->proc_entry = NULL;
|
||||
|
@ -192,11 +166,11 @@ srm_env_cleanup(void)
|
|||
/*
|
||||
* Remove numbered entries
|
||||
*/
|
||||
if(numbered_dir) {
|
||||
for(var_num = 0; var_num <= 255; var_num++) {
|
||||
if (numbered_dir) {
|
||||
for (var_num = 0; var_num <= 255; var_num++) {
|
||||
entry = &srm_numbered_entries[var_num];
|
||||
|
||||
if(entry->proc_entry) {
|
||||
if (entry->proc_entry) {
|
||||
remove_proc_entry(entry->name,
|
||||
numbered_dir);
|
||||
entry->proc_entry = NULL;
|
||||
|
@ -212,7 +186,6 @@ srm_env_cleanup(void)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
static int __init
|
||||
srm_env_init(void)
|
||||
{
|
||||
|
@ -222,7 +195,7 @@ srm_env_init(void)
|
|||
/*
|
||||
* Check system
|
||||
*/
|
||||
if(!alpha_using_srm) {
|
||||
if (!alpha_using_srm) {
|
||||
printk(KERN_INFO "%s: This Alpha system doesn't "
|
||||
"know about SRM (or you've booted "
|
||||
"SRM->MILO->Linux, which gets "
|
||||
|
@ -233,14 +206,14 @@ srm_env_init(void)
|
|||
/*
|
||||
* Init numbers
|
||||
*/
|
||||
for(var_num = 0; var_num <= 255; var_num++)
|
||||
for (var_num = 0; var_num <= 255; var_num++)
|
||||
sprintf(number[var_num], "%ld", var_num);
|
||||
|
||||
/*
|
||||
* Create base directory
|
||||
*/
|
||||
base_dir = proc_mkdir(BASE_DIR, NULL);
|
||||
if(base_dir == NULL) {
|
||||
if (!base_dir) {
|
||||
printk(KERN_ERR "Couldn't create base dir /proc/%s\n",
|
||||
BASE_DIR);
|
||||
goto cleanup;
|
||||
|
@ -251,7 +224,7 @@ srm_env_init(void)
|
|||
* Create per-name subdirectory
|
||||
*/
|
||||
named_dir = proc_mkdir(NAMED_DIR, base_dir);
|
||||
if(named_dir == NULL) {
|
||||
if (!named_dir) {
|
||||
printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n",
|
||||
BASE_DIR, NAMED_DIR);
|
||||
goto cleanup;
|
||||
|
@ -262,7 +235,7 @@ srm_env_init(void)
|
|||
* Create per-number subdirectory
|
||||
*/
|
||||
numbered_dir = proc_mkdir(NUMBERED_DIR, base_dir);
|
||||
if(numbered_dir == NULL) {
|
||||
if (!numbered_dir) {
|
||||
printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n",
|
||||
BASE_DIR, NUMBERED_DIR);
|
||||
goto cleanup;
|
||||
|
@ -274,10 +247,10 @@ srm_env_init(void)
|
|||
* Create all named nodes
|
||||
*/
|
||||
entry = srm_named_entries;
|
||||
while(entry->name != NULL && entry->id != 0) {
|
||||
while (entry->name && entry->id) {
|
||||
entry->proc_entry = create_proc_entry(entry->name,
|
||||
0644, named_dir);
|
||||
if(entry->proc_entry == NULL)
|
||||
if (!entry->proc_entry)
|
||||
goto cleanup;
|
||||
|
||||
entry->proc_entry->data = (void *) entry;
|
||||
|
@ -291,13 +264,13 @@ srm_env_init(void)
|
|||
/*
|
||||
* Create all numbered nodes
|
||||
*/
|
||||
for(var_num = 0; var_num <= 255; var_num++) {
|
||||
for (var_num = 0; var_num <= 255; var_num++) {
|
||||
entry = &srm_numbered_entries[var_num];
|
||||
entry->name = number[var_num];
|
||||
|
||||
entry->proc_entry = create_proc_entry(entry->name,
|
||||
0644, numbered_dir);
|
||||
if(entry->proc_entry == NULL)
|
||||
if (!entry->proc_entry)
|
||||
goto cleanup;
|
||||
|
||||
entry->id = var_num;
|
||||
|
@ -318,7 +291,6 @@ cleanup:
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
||||
static void __exit
|
||||
srm_env_exit(void)
|
||||
{
|
||||
|
@ -328,7 +300,5 @@ srm_env_exit(void)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
module_init(srm_env_init);
|
||||
module_exit(srm_env_exit);
|
||||
|
||||
|
|
|
@ -48,13 +48,7 @@ SECTIONS
|
|||
. = ALIGN(8);
|
||||
__initcall_start = .;
|
||||
.initcall.init : {
|
||||
*(.initcall1.init)
|
||||
*(.initcall2.init)
|
||||
*(.initcall3.init)
|
||||
*(.initcall4.init)
|
||||
*(.initcall5.init)
|
||||
*(.initcall6.init)
|
||||
*(.initcall7.init)
|
||||
INITCALLS
|
||||
}
|
||||
__initcall_end = .;
|
||||
|
||||
|
|
|
@ -879,6 +879,8 @@ endif
|
|||
|
||||
source "drivers/scsi/Kconfig"
|
||||
|
||||
source "drivers/ata/Kconfig"
|
||||
|
||||
source "drivers/md/Kconfig"
|
||||
|
||||
source "drivers/message/fusion/Kconfig"
|
||||
|
|
|
@ -174,11 +174,13 @@ libs-y := arch/arm/lib/ $(libs-y)
|
|||
|
||||
# Default target when executing plain make
|
||||
ifeq ($(CONFIG_XIP_KERNEL),y)
|
||||
all: xipImage
|
||||
KBUILD_IMAGE := xipImage
|
||||
else
|
||||
all: zImage
|
||||
KBUILD_IMAGE := zImage
|
||||
endif
|
||||
|
||||
all: $(KBUILD_IMAGE)
|
||||
|
||||
boot := arch/arm/boot
|
||||
|
||||
# Update machine arch and proc symlinks if something which affects
|
||||
|
|
|
@ -662,7 +662,8 @@ EXPORT_SYMBOL(dma_map_single);
|
|||
EXPORT_SYMBOL(dma_unmap_single);
|
||||
EXPORT_SYMBOL(dma_map_sg);
|
||||
EXPORT_SYMBOL(dma_unmap_sg);
|
||||
EXPORT_SYMBOL(dma_sync_single);
|
||||
EXPORT_SYMBOL(dma_sync_single_for_cpu);
|
||||
EXPORT_SYMBOL(dma_sync_single_for_device);
|
||||
EXPORT_SYMBOL(dma_sync_sg);
|
||||
EXPORT_SYMBOL(dmabounce_register_dev);
|
||||
EXPORT_SYMBOL(dmabounce_unregister_dev);
|
||||
|
|
|
@ -184,6 +184,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
|
|
|
@ -577,7 +577,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT91_WATCHDOG=y
|
||||
CONFIG_AT91RM9200_WATCHDOG=y
|
||||
|
||||
#
|
||||
# USB-based Watchdog Cards
|
||||
|
|
|
@ -558,7 +558,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT91_WATCHDOG=y
|
||||
CONFIG_AT91RM9200_WATCHDOG=y
|
||||
|
||||
#
|
||||
# USB-based Watchdog Cards
|
||||
|
|
|
@ -217,7 +217,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_LEGACY=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
|
|
|
@ -194,6 +194,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
|
|
|
@ -219,7 +219,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_LEGACY=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
|
|
|
@ -208,6 +208,7 @@ CONFIG_BINFMT_MISC=m
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
|
|
@ -615,7 +615,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT91_WATCHDOG=y
|
||||
CONFIG_AT91RM9200_WATCHDOG=y
|
||||
|
||||
#
|
||||
# USB-based Watchdog Cards
|
||||
|
|
|
@ -615,7 +615,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT91_WATCHDOG=y
|
||||
CONFIG_AT91RM9200_WATCHDOG=y
|
||||
|
||||
#
|
||||
# USB-based Watchdog Cards
|
||||
|
|
|
@ -194,6 +194,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
|
|
|
@ -190,6 +190,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
|
|
|
@ -206,10 +206,8 @@ CONFIG_BINFMT_ELF=y
|
|||
#
|
||||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_LEGACY=y
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
CONFIG_APM=y
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
|
|
|
@ -182,6 +182,7 @@ CONFIG_BINFMT_AOUT=m
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
|
|
|
@ -560,7 +560,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT91_WATCHDOG=y
|
||||
CONFIG_AT91RM9200_WATCHDOG=y
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
|
|
@ -180,6 +180,7 @@ CONFIG_BINFMT_AOUT=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=m
|
||||
|
||||
#
|
||||
|
|
|
@ -190,6 +190,7 @@ CONFIG_BINFMT_AOUT=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
|
|
@ -257,7 +257,7 @@ CONFIG_BINFMT_AOUT=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_LEGACY=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
|
|
|
@ -607,7 +607,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
|||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
CONFIG_AT91_WATCHDOG=y
|
||||
CONFIG_AT91RM9200_WATCHDOG=y
|
||||
|
||||
#
|
||||
# USB-based Watchdog Cards
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,9 +1,10 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.18
|
||||
# Wed Sep 20 20:27:31 2006
|
||||
# Linux kernel version: 2.6.19-rc4
|
||||
# Fri Nov 3 17:41:31 2006
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_GENERIC_TIME is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
|
@ -29,17 +30,20 @@ CONFIG_LOCALVERSION=""
|
|||
CONFIG_LOCALVERSION_AUTO=y
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_IPC_NS is not set
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
# CONFIG_TASKSTATS is not set
|
||||
# CONFIG_UTS_NS is not set
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_UID16=y
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
|
@ -62,7 +66,8 @@ CONFIG_BASE_SMALL=0
|
|||
# Loadable module support
|
||||
#
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_UNLOAD is not set
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
# CONFIG_MODVERSIONS is not set
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_KMOD=y
|
||||
|
@ -70,6 +75,7 @@ CONFIG_KMOD=y
|
|||
#
|
||||
# Block layer
|
||||
#
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
|
||||
#
|
||||
|
@ -120,6 +126,7 @@ CONFIG_ARCH_S3C2410=y
|
|||
#
|
||||
# S3C24XX Implementations
|
||||
#
|
||||
# CONFIG_MACH_AML_M5900 is not set
|
||||
CONFIG_MACH_ANUBIS=y
|
||||
CONFIG_MACH_OSIRIS=y
|
||||
CONFIG_ARCH_BAST=y
|
||||
|
@ -178,6 +185,8 @@ CONFIG_CPU_CACHE_V4WT=y
|
|||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_COPY_V4WB=y
|
||||
CONFIG_CPU_TLB_V4WBI=y
|
||||
CONFIG_CPU_CP15=y
|
||||
CONFIG_CPU_CP15_MMU=y
|
||||
|
||||
#
|
||||
# Processor Features
|
||||
|
@ -249,8 +258,9 @@ CONFIG_BINFMT_AOUT=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_LEGACY=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_PM_SYSFS_DEPRECATED is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
@ -266,6 +276,7 @@ CONFIG_NET=y
|
|||
CONFIG_UNIX=y
|
||||
CONFIG_XFRM=y
|
||||
# CONFIG_XFRM_USER is not set
|
||||
# CONFIG_XFRM_SUB_POLICY is not set
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
|
@ -286,10 +297,12 @@ CONFIG_IP_PNP_BOOTP=y
|
|||
# CONFIG_INET_TUNNEL is not set
|
||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||
CONFIG_INET_XFRM_MODE_BEET=y
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
|
@ -377,6 +390,7 @@ CONFIG_MTD_BLOCK=y
|
|||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_RFD_FTL is not set
|
||||
# CONFIG_SSFDC is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
|
@ -418,6 +432,8 @@ CONFIG_MTD_BAST_MAXSIZE=4
|
|||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_DATAFLASH is not set
|
||||
# CONFIG_MTD_M25P80 is not set
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
|
@ -512,6 +528,7 @@ CONFIG_BLK_DEV_IDE_BAST=y
|
|||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
|
@ -606,6 +623,7 @@ CONFIG_DM9000=y
|
|||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
|
@ -628,6 +646,7 @@ CONFIG_KEYBOARD_ATKBD=y
|
|||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
# CONFIG_KEYBOARD_XTKBD is not set
|
||||
# CONFIG_KEYBOARD_NEWTON is not set
|
||||
# CONFIG_KEYBOARD_STOWAWAY is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
|
@ -734,7 +753,6 @@ CONFIG_S3C2410_WATCHDOG=y
|
|||
# CONFIG_USBPCWATCHDOG is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_NVRAM is not set
|
||||
CONFIG_S3C2410_RTC=y
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
|
@ -747,7 +765,6 @@ CONFIG_S3C2410_RTC=y
|
|||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_TELCLOCK is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
|
@ -792,12 +809,26 @@ CONFIG_SENSORS_EEPROM=m
|
|||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
CONFIG_SPI=y
|
||||
# CONFIG_SPI_DEBUG is not set
|
||||
CONFIG_SPI_MASTER=y
|
||||
|
||||
#
|
||||
# SPI Master Controller Drivers
|
||||
#
|
||||
CONFIG_SPI_BITBANG=m
|
||||
# CONFIG_SPI_BUTTERFLY is not set
|
||||
CONFIG_SPI_S3C24XX_GPIO=m
|
||||
CONFIG_SPI_S3C24XX=m
|
||||
|
||||
#
|
||||
# SPI Protocol Masters
|
||||
#
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
|
@ -820,6 +851,7 @@ CONFIG_HWMON_VID=m
|
|||
# CONFIG_SENSORS_GL520SM is not set
|
||||
# CONFIG_SENSORS_IT87 is not set
|
||||
# CONFIG_SENSORS_LM63 is not set
|
||||
# CONFIG_SENSORS_LM70 is not set
|
||||
CONFIG_SENSORS_LM75=m
|
||||
# CONFIG_SENSORS_LM77 is not set
|
||||
CONFIG_SENSORS_LM78=m
|
||||
|
@ -834,6 +866,7 @@ CONFIG_SENSORS_LM85=m
|
|||
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||
# CONFIG_SENSORS_VT1211 is not set
|
||||
# CONFIG_SENSORS_W83781D is not set
|
||||
# CONFIG_SENSORS_W83791D is not set
|
||||
# CONFIG_SENSORS_W83792D is not set
|
||||
|
@ -845,25 +878,31 @@ CONFIG_SENSORS_LM85=m
|
|||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
CONFIG_NEW_LEDS=y
|
||||
CONFIG_LEDS_CLASS=m
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
CONFIG_LEDS_S3C24XX=m
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
CONFIG_LEDS_TRIGGERS=y
|
||||
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||
# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
CONFIG_VIDEO_V4L2=y
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
|
@ -876,6 +915,7 @@ CONFIG_VIDEO_V4L2=y
|
|||
#
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB=y
|
||||
# CONFIG_FB_DDC is not set
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
|
@ -951,7 +991,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
|||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
# CONFIG_USB_STORAGE is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
|
||||
#
|
||||
|
@ -1007,6 +1046,7 @@ CONFIG_USB_MON=y
|
|||
#
|
||||
# CONFIG_USB_EMI62 is not set
|
||||
# CONFIG_USB_EMI26 is not set
|
||||
# CONFIG_USB_ADUTUX is not set
|
||||
# CONFIG_USB_AUERSWALD is not set
|
||||
# CONFIG_USB_RIO500 is not set
|
||||
# CONFIG_USB_LEGOTOWER is not set
|
||||
|
@ -1014,11 +1054,12 @@ CONFIG_USB_MON=y
|
|||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM is not set
|
||||
# CONFIG_USB_PHIDGETKIT is not set
|
||||
# CONFIG_USB_PHIDGETSERVO is not set
|
||||
# CONFIG_USB_PHIDGET is not set
|
||||
# CONFIG_USB_IDMOUSE is not set
|
||||
# CONFIG_USB_FTDI_ELAN is not set
|
||||
# CONFIG_USB_APPLEDISPLAY is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
|
@ -1039,7 +1080,37 @@ CONFIG_USB_MON=y
|
|||
# Real Time Clock
|
||||
#
|
||||
CONFIG_RTC_LIB=y
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
||||
# CONFIG_RTC_DEBUG is not set
|
||||
|
||||
#
|
||||
# RTC interfaces
|
||||
#
|
||||
CONFIG_RTC_INTF_SYSFS=y
|
||||
CONFIG_RTC_INTF_PROC=y
|
||||
CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
||||
|
||||
#
|
||||
# RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_X1205 is not set
|
||||
# CONFIG_RTC_DRV_DS1307 is not set
|
||||
# CONFIG_RTC_DRV_DS1553 is not set
|
||||
# CONFIG_RTC_DRV_ISL1208 is not set
|
||||
# CONFIG_RTC_DRV_DS1672 is not set
|
||||
# CONFIG_RTC_DRV_DS1742 is not set
|
||||
# CONFIG_RTC_DRV_PCF8563 is not set
|
||||
# CONFIG_RTC_DRV_PCF8583 is not set
|
||||
# CONFIG_RTC_DRV_RS5C348 is not set
|
||||
# CONFIG_RTC_DRV_RS5C372 is not set
|
||||
CONFIG_RTC_DRV_S3C=y
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
# CONFIG_RTC_DRV_TEST is not set
|
||||
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
|
@ -1051,6 +1122,7 @@ CONFIG_EXT3_FS=y
|
|||
CONFIG_EXT3_FS_XATTR=y
|
||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
CONFIG_JBD=y
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
|
@ -1058,6 +1130,7 @@ CONFIG_FS_MBCACHE=y
|
|||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
|
@ -1089,6 +1162,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
|||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
|
@ -1219,6 +1293,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
|
@ -1238,9 +1313,10 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_UNWIND_INFO is not set
|
||||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
|
@ -1261,10 +1337,6 @@ CONFIG_DEBUG_S3C2410_UART=0
|
|||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
|
|
|
@ -180,6 +180,7 @@ CONFIG_BINFMT_MISC=m
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
|
|
@ -1,735 +0,0 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.12-rc1-bk2
|
||||
# Sun Mar 27 22:42:40 2005
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_GENERIC_IOMAP=y
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_CLEAN_COMPILE=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
CONFIG_SWAP=y
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
# CONFIG_HOTPLUG is not set
|
||||
CONFIG_KOBJECT_UEVENT=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_EMBEDDED is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
||||
CONFIG_CC_ALIGN_LABELS=0
|
||||
CONFIG_CC_ALIGN_LOOPS=0
|
||||
CONFIG_CC_ALIGN_JUMPS=0
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
# CONFIG_MODULES is not set
|
||||
|
||||
#
|
||||
# System Type
|
||||
#
|
||||
# CONFIG_ARCH_CLPS7500 is not set
|
||||
# CONFIG_ARCH_CLPS711X is not set
|
||||
# CONFIG_ARCH_CO285 is not set
|
||||
# CONFIG_ARCH_EBSA110 is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_IOP3XX is not set
|
||||
# CONFIG_ARCH_IXP4XX is not set
|
||||
# CONFIG_ARCH_IXP2000 is not set
|
||||
# CONFIG_ARCH_L7200 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
# CONFIG_ARCH_SA1100 is not set
|
||||
CONFIG_ARCH_S3C2410=y
|
||||
# CONFIG_ARCH_SHARK is not set
|
||||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_OMAP is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
|
||||
#
|
||||
# S3C24XX Implementations
|
||||
#
|
||||
# CONFIG_ARCH_BAST is not set
|
||||
# CONFIG_ARCH_H1940 is not set
|
||||
# CONFIG_MACH_N30 is not set
|
||||
CONFIG_ARCH_SMDK2410=y
|
||||
# CONFIG_ARCH_S3C2440 is not set
|
||||
# CONFIG_MACH_VR1000 is not set
|
||||
# CONFIG_MACH_RX3715 is not set
|
||||
# CONFIG_MACH_OTOM is not set
|
||||
# CONFIG_MACH_NEXCODER_2440 is not set
|
||||
CONFIG_CPU_S3C2410=y
|
||||
|
||||
#
|
||||
# S3C2410 Boot
|
||||
#
|
||||
|
||||
#
|
||||
# S3C2410 Setup
|
||||
#
|
||||
# CONFIG_S3C2410_DMA is not set
|
||||
CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
|
||||
|
||||
#
|
||||
# Processor Type
|
||||
#
|
||||
CONFIG_CPU_32=y
|
||||
CONFIG_CPU_ARM920T=y
|
||||
CONFIG_CPU_32v4=y
|
||||
CONFIG_CPU_ABRT_EV4T=y
|
||||
CONFIG_CPU_CACHE_V4WT=y
|
||||
CONFIG_CPU_CACHE_VIVT=y
|
||||
CONFIG_CPU_COPY_V4WB=y
|
||||
CONFIG_CPU_TLB_V4WBI=y
|
||||
|
||||
#
|
||||
# Processor Features
|
||||
#
|
||||
CONFIG_ARM_THUMB=y
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
||||
|
||||
#
|
||||
# Bus support
|
||||
#
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_PREEMPT is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="root=1f04 mem=32M"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
|
||||
#
|
||||
# Floating point emulation
|
||||
#
|
||||
|
||||
#
|
||||
# At least one emulation must be selected
|
||||
#
|
||||
# CONFIG_FPE_NWFPE is not set
|
||||
# CONFIG_FPE_FASTFPE is not set
|
||||
|
||||
#
|
||||
# Userspace binary formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
CONFIG_BINFMT_AOUT=y
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_ARTHUR is not set
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
# CONFIG_FW_LOADER is not set
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
# CONFIG_MTD_PARTITIONS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
#
|
||||
CONFIG_MTD_CFI=y
|
||||
# CONFIG_MTD_JEDECPROBE is not set
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
# CONFIG_MTD_CFI_AMDSTD is not set
|
||||
# CONFIG_MTD_CFI_STAA is not set
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
# CONFIG_MTD_RAM is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
# CONFIG_MTD_XIP is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
# CONFIG_MTD_PHYSMAP is not set
|
||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||
# CONFIG_MTD_EDB7312 is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLKMTD is not set
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
|
||||
#
|
||||
# Disk-On-Chip Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
|
||||
#
|
||||
# NAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_NAND is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# CONFIG_BLK_DEV_FD is not set
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
CONFIG_IOSCHED_DEADLINE=y
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_SCSI is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Networking support
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_PACKET is not set
|
||||
# CONFIG_NETLINK_DEV is not set
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
# CONFIG_IP_MULTICAST is not set
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_PNP=y
|
||||
# CONFIG_IP_PNP_DHCP is not set
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
# CONFIG_IP_PNP_RARP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
# CONFIG_SYN_COOKIES is not set
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_IP_TCPDIAG is not set
|
||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_NET_CLS_ROUTE is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_MII is not set
|
||||
# CONFIG_SMC91X is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Ethernet (10000 Mbit)
|
||||
#
|
||||
|
||||
#
|
||||
# Token Ring devices
|
||||
#
|
||||
|
||||
#
|
||||
# Wireless LAN (non-hamradio)
|
||||
#
|
||||
# CONFIG_NET_RADIO is not set
|
||||
|
||||
#
|
||||
# Wan interfaces
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_TSDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
CONFIG_INPUT_KEYBOARD=y
|
||||
CONFIG_KEYBOARD_ATKBD=y
|
||||
# CONFIG_KEYBOARD_SUNKBD is not set
|
||||
# CONFIG_KEYBOARD_LKKBD is not set
|
||||
# CONFIG_KEYBOARD_XTKBD is not set
|
||||
# CONFIG_KEYBOARD_NEWTON is not set
|
||||
CONFIG_INPUT_MOUSE=y
|
||||
CONFIG_MOUSE_PS2=y
|
||||
# CONFIG_MOUSE_SERIAL is not set
|
||||
# CONFIG_MOUSE_VSXXXAA is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
CONFIG_SERIO=y
|
||||
CONFIG_SERIO_SERPORT=y
|
||||
CONFIG_SERIO_LIBPS2=y
|
||||
# CONFIG_SERIO_RAW is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
CONFIG_SOUND_GAMEPORT=y
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_S3C2410=y
|
||||
CONFIG_SERIAL_S3C2410_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
CONFIG_LEGACY_PTYS=y
|
||||
CONFIG_LEGACY_PTY_COUNT=256
|
||||
|
||||
#
|
||||
# IPMI
|
||||
#
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
|
||||
#
|
||||
# Watchdog Cards
|
||||
#
|
||||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_S3C2410_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_DRM is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_CFB_FILLRECT=y
|
||||
CONFIG_FB_CFB_COPYAREA=y
|
||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||
CONFIG_FB_SOFT_CURSOR=y
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
CONFIG_FB_VIRTUAL=y
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
|
||||
#
|
||||
# Logo configuration
|
||||
#
|
||||
# CONFIG_LOGO is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
#
|
||||
# CONFIG_SOUND is not set
|
||||
|
||||
#
|
||||
# USB support
|
||||
#
|
||||
CONFIG_USB_ARCH_HAS_HCD=y
|
||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
||||
# CONFIG_USB is not set
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
# CONFIG_USB_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_JBD is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
|
||||
#
|
||||
# XFS support
|
||||
#
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
CONFIG_ROMFS_FS=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
# CONFIG_ISO9660_FS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
# CONFIG_VFAT_FS is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_SYSFS=y
|
||||
# CONFIG_DEVFS_FS is not set
|
||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
||||
# CONFIG_TMPFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
|
||||
#
|
||||
# Miscellaneous filesystems
|
||||
#
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
# CONFIG_JFFS_FS is not set
|
||||
# CONFIG_JFFS2_FS is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
|
||||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
# CONFIG_NFS_V3 is not set
|
||||
# CONFIG_NFS_V4 is not set
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
CONFIG_PARTITION_ADVANCED=y
|
||||
# CONFIG_ACORN_PARTITION is not set
|
||||
# CONFIG_OSF_PARTITION is not set
|
||||
# CONFIG_AMIGA_PARTITION is not set
|
||||
# CONFIG_ATARI_PARTITION is not set
|
||||
# CONFIG_MAC_PARTITION is not set
|
||||
# CONFIG_MSDOS_PARTITION is not set
|
||||
# CONFIG_LDM_PARTITION is not set
|
||||
# CONFIG_SGI_PARTITION is not set
|
||||
# CONFIG_ULTRIX_PARTITION is not set
|
||||
# CONFIG_SUN_PARTITION is not set
|
||||
# CONFIG_EFI_PARTITION is not set
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
# CONFIG_NLS is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
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_INFO is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
# CONFIG_DEBUG_ERRORS is not set
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
CONFIG_DEBUG_S3C2410_PORT=y
|
||||
CONFIG_DEBUG_S3C2410_UART=0
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
CONFIG_CRC32=y
|
||||
CONFIG_LIBCRC32C=y
|
|
@ -207,6 +207,7 @@ CONFIG_BINFMT_MISC=m
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
|
|
@ -200,7 +200,7 @@ CONFIG_BINFMT_ELF=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
CONFIG_PM_LEGACY=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
# CONFIG_PM_DEBUG is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
|
|
|
@ -357,6 +357,9 @@ static void __init setup_processor(void)
|
|||
#ifndef CONFIG_VFP
|
||||
elf_hwcap &= ~HWCAP_VFP;
|
||||
#endif
|
||||
#ifndef CONFIG_IWMMXT
|
||||
elf_hwcap &= ~HWCAP_IWMMXT;
|
||||
#endif
|
||||
|
||||
cpu_proc_init();
|
||||
}
|
||||
|
@ -854,6 +857,7 @@ static const char *hwcap_str[] = {
|
|||
"vfp",
|
||||
"edsp",
|
||||
"java",
|
||||
"iwmmxt",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/spinlock.h>
|
||||
|
@ -19,6 +20,7 @@
|
|||
#include <linux/cpu.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/irq.h>
|
||||
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
@ -449,6 +451,7 @@ int smp_call_function(void (*func)(void *info), void *info, int retry,
|
|||
return smp_call_function_on_cpu(func, info, retry, wait,
|
||||
cpu_online_map);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smp_call_function);
|
||||
|
||||
void show_ipi_list(struct seq_file *p)
|
||||
{
|
||||
|
@ -474,25 +477,26 @@ void show_local_irqs(struct seq_file *p)
|
|||
seq_putc(p, '\n');
|
||||
}
|
||||
|
||||
static void ipi_timer(struct pt_regs *regs)
|
||||
static void ipi_timer(void)
|
||||
{
|
||||
int user = user_mode(regs);
|
||||
|
||||
irq_enter();
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
update_process_times(user);
|
||||
profile_tick(CPU_PROFILING);
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_LOCAL_TIMERS
|
||||
asmlinkage void do_local_timer(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
int cpu = smp_processor_id();
|
||||
|
||||
if (local_timer_ack()) {
|
||||
irq_stat[cpu].local_timer_irqs++;
|
||||
ipi_timer(regs);
|
||||
ipi_timer();
|
||||
}
|
||||
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -551,6 +555,7 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
|||
{
|
||||
unsigned int cpu = smp_processor_id();
|
||||
struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
|
||||
ipi->ipi_count++;
|
||||
|
||||
|
@ -574,7 +579,7 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
|||
|
||||
switch (nextmsg) {
|
||||
case IPI_TIMER:
|
||||
ipi_timer(regs);
|
||||
ipi_timer();
|
||||
break;
|
||||
|
||||
case IPI_RESCHEDULE:
|
||||
|
@ -599,6 +604,8 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
|||
}
|
||||
} while (msgs);
|
||||
}
|
||||
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
void smp_send_reschedule(int cpu)
|
||||
|
|
|
@ -220,10 +220,10 @@ EXPORT_SYMBOL(leds_event);
|
|||
#ifdef CONFIG_LEDS_TIMER
|
||||
static inline void do_leds(void)
|
||||
{
|
||||
static unsigned int count = 50;
|
||||
static unsigned int count = HZ/2;
|
||||
|
||||
if (--count == 0) {
|
||||
count = 50;
|
||||
count = HZ/2;
|
||||
leds_event(led_timer);
|
||||
}
|
||||
}
|
||||
|
@ -327,13 +327,12 @@ EXPORT_SYMBOL(restore_time_delta);
|
|||
*/
|
||||
void timer_tick(void)
|
||||
{
|
||||
struct pt_regs *regs = get_irq_regs();
|
||||
profile_tick(CPU_PROFILING);
|
||||
do_leds();
|
||||
do_set_rtc();
|
||||
do_timer(1);
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(regs));
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -45,13 +45,7 @@ SECTIONS
|
|||
*(.early_param.init)
|
||||
__early_end = .;
|
||||
__initcall_start = .;
|
||||
*(.initcall1.init)
|
||||
*(.initcall2.init)
|
||||
*(.initcall3.init)
|
||||
*(.initcall4.init)
|
||||
*(.initcall5.init)
|
||||
*(.initcall6.init)
|
||||
*(.initcall7.init)
|
||||
INITCALLS
|
||||
__initcall_end = .;
|
||||
__con_initcall_start = .;
|
||||
*(.con_initcall.init)
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include <asm/io.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
static void __iomem *__isamem_convert_addr(void __iomem *addr)
|
||||
static void __iomem *__isamem_convert_addr(const volatile void __iomem *addr)
|
||||
{
|
||||
u32 ret, a = (u32 __force) addr;
|
||||
|
||||
|
@ -63,7 +63,7 @@ static void __iomem *__isamem_convert_addr(void __iomem *addr)
|
|||
/*
|
||||
* read[bwl] and write[bwl]
|
||||
*/
|
||||
u8 __readb(void __iomem *addr)
|
||||
u8 __readb(const volatile void __iomem *addr)
|
||||
{
|
||||
void __iomem *a = __isamem_convert_addr(addr);
|
||||
u32 ret;
|
||||
|
@ -75,7 +75,7 @@ u8 __readb(void __iomem *addr)
|
|||
return ret;
|
||||
}
|
||||
|
||||
u16 __readw(void __iomem *addr)
|
||||
u16 __readw(const volatile void __iomem *addr)
|
||||
{
|
||||
void __iomem *a = __isamem_convert_addr(addr);
|
||||
|
||||
|
@ -85,7 +85,7 @@ u16 __readw(void __iomem *addr)
|
|||
return __raw_readw(a);
|
||||
}
|
||||
|
||||
u32 __readl(void __iomem *addr)
|
||||
u32 __readl(const volatile void __iomem *addr)
|
||||
{
|
||||
void __iomem *a = __isamem_convert_addr(addr);
|
||||
u32 ret;
|
||||
|
|
|
@ -85,7 +85,7 @@ n2100_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|||
irq = IRQ_IOP32X_XINT0;
|
||||
} else if (PCI_SLOT(dev->devfn) == 2) {
|
||||
/* RTL8110SB #2 */
|
||||
irq = IRQ_IOP32X_XINT1;
|
||||
irq = IRQ_IOP32X_XINT3;
|
||||
} else if (PCI_SLOT(dev->devfn) == 3) {
|
||||
/* Sil3512 */
|
||||
irq = IRQ_IOP32X_XINT2;
|
||||
|
|
|
@ -135,11 +135,11 @@ static void ixdp2400_pci_postinit(void)
|
|||
if (ixdp2x00_master_npu()) {
|
||||
dev = pci_get_bus_and_slot(1, IXDP2400_SLAVE_ENET_DEVFN);
|
||||
pci_remove_bus_device(dev);
|
||||
pci_dev_put(dev)
|
||||
pci_dev_put(dev);
|
||||
} else {
|
||||
dev = pci_get_bus_and_slot(1, IXDP2400_MASTER_ENET_DEVFN);
|
||||
pci_remove_bus_device(dev);
|
||||
pci_dev_put(dev)
|
||||
pci_dev_put(dev);
|
||||
|
||||
ixdp2x00_slave_pci_postinit();
|
||||
}
|
||||
|
|
|
@ -86,7 +86,8 @@ enum ixp4xx_irq_type {
|
|||
IXP4XX_IRQ_LEVEL, IXP4XX_IRQ_EDGE
|
||||
};
|
||||
|
||||
static void ixp4xx_config_irq(unsigned irq, enum ixp4xx_irq_type type);
|
||||
/* Each bit represents an IRQ: 1: edge-triggered, 0: level triggered */
|
||||
static unsigned long long ixp4xx_irq_edge = 0;
|
||||
|
||||
/*
|
||||
* IRQ -> GPIO mapping table
|
||||
|
@ -135,7 +136,11 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type)
|
|||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
ixp4xx_config_irq(irq, irq_type);
|
||||
|
||||
if (irq_type == IXP4XX_IRQ_EDGE)
|
||||
ixp4xx_irq_edge |= (1 << irq);
|
||||
else
|
||||
ixp4xx_irq_edge &= ~(1 << irq);
|
||||
|
||||
if (line >= 8) { /* pins 8-15 */
|
||||
line -= 8;
|
||||
|
@ -167,14 +172,6 @@ static void ixp4xx_irq_mask(unsigned int irq)
|
|||
*IXP4XX_ICMR &= ~(1 << irq);
|
||||
}
|
||||
|
||||
static void ixp4xx_irq_unmask(unsigned int irq)
|
||||
{
|
||||
if (cpu_is_ixp46x() && irq >= 32)
|
||||
*IXP4XX_ICMR2 |= (1 << (irq - 32));
|
||||
else
|
||||
*IXP4XX_ICMR |= (1 << irq);
|
||||
}
|
||||
|
||||
static void ixp4xx_irq_ack(unsigned int irq)
|
||||
{
|
||||
int line = (irq < 32) ? irq2gpio[irq] : -1;
|
||||
|
@ -187,41 +184,25 @@ static void ixp4xx_irq_ack(unsigned int irq)
|
|||
* Level triggered interrupts on GPIO lines can only be cleared when the
|
||||
* interrupt condition disappears.
|
||||
*/
|
||||
static void ixp4xx_irq_level_unmask(unsigned int irq)
|
||||
static void ixp4xx_irq_unmask(unsigned int irq)
|
||||
{
|
||||
ixp4xx_irq_ack(irq);
|
||||
ixp4xx_irq_unmask(irq);
|
||||
if (!(ixp4xx_irq_edge & (1 << irq)))
|
||||
ixp4xx_irq_ack(irq);
|
||||
|
||||
if (cpu_is_ixp46x() && irq >= 32)
|
||||
*IXP4XX_ICMR2 |= (1 << (irq - 32));
|
||||
else
|
||||
*IXP4XX_ICMR |= (1 << irq);
|
||||
}
|
||||
|
||||
static struct irqchip ixp4xx_irq_level_chip = {
|
||||
.ack = ixp4xx_irq_mask,
|
||||
.mask = ixp4xx_irq_mask,
|
||||
.unmask = ixp4xx_irq_level_unmask,
|
||||
.set_type = ixp4xx_set_irq_type,
|
||||
};
|
||||
|
||||
static struct irqchip ixp4xx_irq_edge_chip = {
|
||||
static struct irqchip ixp4xx_irq_chip = {
|
||||
.name = "IXP4xx",
|
||||
.ack = ixp4xx_irq_ack,
|
||||
.mask = ixp4xx_irq_mask,
|
||||
.unmask = ixp4xx_irq_unmask,
|
||||
.set_type = ixp4xx_set_irq_type,
|
||||
};
|
||||
|
||||
static void ixp4xx_config_irq(unsigned irq, enum ixp4xx_irq_type type)
|
||||
{
|
||||
switch (type) {
|
||||
case IXP4XX_IRQ_LEVEL:
|
||||
set_irq_chip(irq, &ixp4xx_irq_level_chip);
|
||||
set_irq_handler(irq, do_level_IRQ);
|
||||
break;
|
||||
case IXP4XX_IRQ_EDGE:
|
||||
set_irq_chip(irq, &ixp4xx_irq_edge_chip);
|
||||
set_irq_handler(irq, do_edge_IRQ);
|
||||
break;
|
||||
}
|
||||
set_irq_flags(irq, IRQF_VALID);
|
||||
}
|
||||
|
||||
void __init ixp4xx_init_irq(void)
|
||||
{
|
||||
int i = 0;
|
||||
|
@ -241,8 +222,11 @@ void __init ixp4xx_init_irq(void)
|
|||
}
|
||||
|
||||
/* Default to all level triggered */
|
||||
for(i = 0; i < NR_IRQS; i++)
|
||||
ixp4xx_config_irq(i, IXP4XX_IRQ_LEVEL);
|
||||
for(i = 0; i < NR_IRQS; i++) {
|
||||
set_irq_chip(i, &ixp4xx_irq_chip);
|
||||
set_irq_handler(i, do_level_IRQ);
|
||||
set_irq_flags(i, IRQF_VALID);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ config MACH_LPD7A400
|
|||
bool "LPD7A400 Card Engine"
|
||||
select ARCH_LH7A400
|
||||
# select IDE_POLL
|
||||
select HAS_TOUCHSCREEN_ADS7843_LH7
|
||||
# select HAS_TOUCHSCREEN_ADS7843_LH7
|
||||
help
|
||||
Say Y here if you are using Logic Product Development's
|
||||
LPD7A400 CardEngine. For the time being, the LPD7A400 and
|
||||
|
@ -24,7 +24,7 @@ config MACH_LPD7A404
|
|||
bool "LPD7A404 Card Engine"
|
||||
select ARCH_LH7A404
|
||||
# select IDE_POLL
|
||||
select HAS_TOUCHSCREEN_ADC_LH7
|
||||
# select HAS_TOUCHSCREEN_ADC_LH7
|
||||
help
|
||||
Say Y here if you are using Logic Product Development's
|
||||
LPD7A404 CardEngine. For the time being, the LPD7A400 and
|
||||
|
|
|
@ -133,10 +133,79 @@ static struct platform_device serial_device = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct platform_device nand_flash_device = {
|
||||
.name = "pnx4008-flash",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xFFFFFFFF,
|
||||
},
|
||||
};
|
||||
|
||||
/* The dmamask must be set for OHCI to work */
|
||||
static u64 ohci_dmamask = ~(u32) 0;
|
||||
|
||||
static struct resource ohci_resources[] = {
|
||||
{
|
||||
.start = IO_ADDRESS(PNX4008_USB_CONFIG_BASE),
|
||||
.end = IO_ADDRESS(PNX4008_USB_CONFIG_BASE + 0x100),
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = USB_HOST_INT,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device ohci_device = {
|
||||
.name = "pnx4008-usb-ohci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &ohci_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(ohci_resources),
|
||||
.resource = ohci_resources,
|
||||
};
|
||||
|
||||
static struct platform_device sdum_device = {
|
||||
.name = "pnx4008-sdum",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device rgbfb_device = {
|
||||
.name = "pnx4008-rgbfb",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
}
|
||||
};
|
||||
|
||||
struct resource watchdog_resources[] = {
|
||||
{
|
||||
.start = PNX4008_WDOG_BASE,
|
||||
.end = PNX4008_WDOG_BASE + SZ_4K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device watchdog_device = {
|
||||
.name = "pnx4008-watchdog",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(watchdog_resources),
|
||||
.resource = watchdog_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *devices[] __initdata = {
|
||||
&spipnx_1,
|
||||
&spipnx_2,
|
||||
&serial_device,
|
||||
&ohci_device,
|
||||
&nand_flash_device,
|
||||
&sdum_device,
|
||||
&rgbfb_device,
|
||||
&watchdog_device,
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
* Copyright (c) 2004-2005 Simtec Electronics
|
||||
* Ben Dooks <ben@simtec.co.uk>
|
||||
*
|
||||
* S3C2410 GPIO support
|
||||
* S3C24XX GPIO support
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
@ -163,3 +163,22 @@ unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change)
|
|||
}
|
||||
|
||||
EXPORT_SYMBOL(s3c2410_modify_misccr);
|
||||
|
||||
int s3c2410_gpio_getirq(unsigned int pin)
|
||||
{
|
||||
if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15)
|
||||
return -1; /* not valid interrupts */
|
||||
|
||||
if (pin < S3C2410_GPG0 && pin > S3C2410_GPF7)
|
||||
return -1; /* not valid pin */
|
||||
|
||||
if (pin < S3C2410_GPF4)
|
||||
return (pin - S3C2410_GPF0) + IRQ_EINT0;
|
||||
|
||||
if (pin < S3C2410_GPG0)
|
||||
return (pin - S3C2410_GPF4) + IRQ_EINT4;
|
||||
|
||||
return (pin - S3C2410_GPG0) + IRQ_EINT8;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(s3c2410_gpio_getirq);
|
||||
|
|
|
@ -69,22 +69,3 @@ int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on,
|
|||
}
|
||||
|
||||
EXPORT_SYMBOL(s3c2410_gpio_irqfilter);
|
||||
|
||||
int s3c2410_gpio_getirq(unsigned int pin)
|
||||
{
|
||||
if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15)
|
||||
return -1; /* not valid interrupts */
|
||||
|
||||
if (pin < S3C2410_GPG0 && pin > S3C2410_GPF7)
|
||||
return -1; /* not valid pin */
|
||||
|
||||
if (pin < S3C2410_GPF4)
|
||||
return (pin - S3C2410_GPF0) + IRQ_EINT0;
|
||||
|
||||
if (pin < S3C2410_GPG0)
|
||||
return (pin - S3C2410_GPF4) + IRQ_EINT4;
|
||||
|
||||
return (pin - S3C2410_GPG0) + IRQ_EINT8;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(s3c2410_gpio_getirq);
|
||||
|
|
|
@ -83,7 +83,7 @@ static struct sdram_params sdram_tbl[] __initdata = {
|
|||
.refresh = 64000,
|
||||
.cas_latency = 3,
|
||||
}, { /* Samsung K4S281632B-1H */
|
||||
.name = "K4S281632b-1H",
|
||||
.name = "K4S281632B-1H",
|
||||
.rows = 12,
|
||||
.tck = 10,
|
||||
.trp = 20,
|
||||
|
|
|
@ -476,6 +476,9 @@ core_initcall(consistent_init);
|
|||
|
||||
/*
|
||||
* Make an area consistent for devices.
|
||||
* Note: Drivers should NOT use this function directly, as it will break
|
||||
* platforms with CONFIG_DMABOUNCE.
|
||||
* Use the driver DMA support - see dma-mapping.h (dma_sync_*)
|
||||
*/
|
||||
void consistent_sync(void *vaddr, size_t size, int direction)
|
||||
{
|
||||
|
|
|
@ -32,40 +32,51 @@ extern unsigned long phys_initrd_start;
|
|||
extern unsigned long phys_initrd_size;
|
||||
|
||||
/*
|
||||
* The sole use of this is to pass memory configuration
|
||||
* data from paging_init to mem_init.
|
||||
* This is used to pass memory configuration data from paging_init
|
||||
* to mem_init, and by show_mem() to skip holes in the memory map.
|
||||
*/
|
||||
static struct meminfo meminfo __initdata = { 0, };
|
||||
static struct meminfo meminfo = { 0, };
|
||||
|
||||
#define for_each_nodebank(iter,mi,no) \
|
||||
for (iter = 0; iter < mi->nr_banks; iter++) \
|
||||
if (mi->bank[iter].node == no)
|
||||
|
||||
void show_mem(void)
|
||||
{
|
||||
int free = 0, total = 0, reserved = 0;
|
||||
int shared = 0, cached = 0, slab = 0, node;
|
||||
int shared = 0, cached = 0, slab = 0, node, i;
|
||||
struct meminfo * mi = &meminfo;
|
||||
|
||||
printk("Mem-info:\n");
|
||||
show_free_areas();
|
||||
printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
|
||||
|
||||
for_each_online_node(node) {
|
||||
struct page *page, *end;
|
||||
for_each_nodebank (i,mi,node) {
|
||||
unsigned int pfn1, pfn2;
|
||||
struct page *page, *end;
|
||||
|
||||
page = NODE_MEM_MAP(node);
|
||||
end = page + NODE_DATA(node)->node_spanned_pages;
|
||||
pfn1 = mi->bank[i].start >> PAGE_SHIFT;
|
||||
pfn2 = (mi->bank[i].size + mi->bank[i].start) >> PAGE_SHIFT;
|
||||
|
||||
do {
|
||||
total++;
|
||||
if (PageReserved(page))
|
||||
reserved++;
|
||||
else if (PageSwapCache(page))
|
||||
cached++;
|
||||
else if (PageSlab(page))
|
||||
slab++;
|
||||
else if (!page_count(page))
|
||||
free++;
|
||||
else
|
||||
shared += page_count(page) - 1;
|
||||
page++;
|
||||
} while (page < end);
|
||||
page = NODE_MEM_MAP(node) + pfn1;
|
||||
end = NODE_MEM_MAP(node) + pfn2;
|
||||
|
||||
do {
|
||||
total++;
|
||||
if (PageReserved(page))
|
||||
reserved++;
|
||||
else if (PageSwapCache(page))
|
||||
cached++;
|
||||
else if (PageSlab(page))
|
||||
slab++;
|
||||
else if (!page_count(page))
|
||||
free++;
|
||||
else
|
||||
shared += page_count(page) - 1;
|
||||
page++;
|
||||
} while (page < end);
|
||||
}
|
||||
}
|
||||
|
||||
printk("%d pages of RAM\n", total);
|
||||
|
@ -76,10 +87,6 @@ void show_mem(void)
|
|||
printk("%d pages swap cached\n", cached);
|
||||
}
|
||||
|
||||
#define for_each_nodebank(iter,mi,no) \
|
||||
for (iter = 0; iter < mi->nr_banks; iter++) \
|
||||
if (mi->bank[iter].node == no)
|
||||
|
||||
/*
|
||||
* FIXME: We really want to avoid allocating the bootmap bitmap
|
||||
* over the top of the initrd. Hopefully, this is located towards
|
||||
|
|
|
@ -909,7 +909,7 @@ __pxa270_proc_info:
|
|||
b __xscale_setup
|
||||
.long cpu_arch_name
|
||||
.long cpu_elf_name
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_IWMMXT
|
||||
.long cpu_pxa270_name
|
||||
.long xscale_processor_functions
|
||||
.long v4wbi_tlb_fns
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
#ifndef OP_COUNTER_H
|
||||
#define OP_COUNTER_H
|
||||
|
||||
#define OP_MAX_COUNTER 5
|
||||
|
||||
/* Per performance monitor configuration as set via
|
||||
* oprofilefs.
|
||||
*/
|
||||
|
|
|
@ -56,7 +56,7 @@ static void vfp_double_normalise_denormal(struct vfp_double *vd)
|
|||
{
|
||||
int bits = 31 - fls(vd->significand >> 32);
|
||||
if (bits == 31)
|
||||
bits = 62 - fls(vd->significand);
|
||||
bits = 63 - fls(vd->significand);
|
||||
|
||||
vfp_double_dump("normalise_denormal: in", vd);
|
||||
|
||||
|
|
|
@ -148,6 +148,7 @@ static void vfp_raise_exceptions(u32 exceptions, u32 inst, u32 fpscr, struct pt_
|
|||
/*
|
||||
* These are arranged in priority order, least to highest.
|
||||
*/
|
||||
RAISE(FPSCR_DZC, FPSCR_DZE, FPE_FLTDIV);
|
||||
RAISE(FPSCR_IXC, FPSCR_IXE, FPE_FLTRES);
|
||||
RAISE(FPSCR_UFC, FPSCR_UFE, FPE_FLTUND);
|
||||
RAISE(FPSCR_OFC, FPSCR_OFE, FPE_FLTOVF);
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
# Default target when executing plain make
|
||||
.PHONY: all
|
||||
all: uImage vmlinux.elf linux.lst
|
||||
all: uImage vmlinux.elf
|
||||
|
||||
KBUILD_DEFCONFIG := atstk1002_defconfig
|
||||
|
||||
|
@ -21,9 +21,7 @@ cpuflags-$(CONFIG_CPU_AP7000) += -mcpu=ap7000
|
|||
CFLAGS += $(cpuflags-y)
|
||||
AFLAGS += $(cpuflags-y)
|
||||
|
||||
CHECKFLAGS += -D__avr32__
|
||||
|
||||
LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
|
||||
CHECKFLAGS += -D__avr32__ -D__BIG_ENDIAN
|
||||
|
||||
head-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/head.o
|
||||
head-y += arch/avr32/kernel/head.o
|
||||
|
@ -32,7 +30,7 @@ core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/
|
|||
core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
|
||||
core-y += arch/avr32/kernel/
|
||||
core-y += arch/avr32/mm/
|
||||
libs-y += arch/avr32/lib/ #$(LIBGCC)
|
||||
libs-y += arch/avr32/lib/
|
||||
|
||||
archincdir-$(CONFIG_PLATFORM_AT32AP) := arch-at32ap
|
||||
|
||||
|
@ -48,6 +46,8 @@ endif
|
|||
|
||||
archprepare: include/asm-avr32/.arch
|
||||
|
||||
CLEAN_FILES += include/asm-avr32/.arch include/asm-avr32/arch
|
||||
|
||||
BOOT_TARGETS := vmlinux.elf vmlinux.bin uImage uImage.srec
|
||||
|
||||
.PHONY: $(BOOT_TARGETS) install
|
||||
|
@ -71,14 +71,19 @@ vmlinux.elf vmlinux.bin uImage.srec uImage vmlinux.cso: vmlinux
|
|||
install: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
|
||||
|
||||
linux.s: vmlinux
|
||||
vmlinux.s: vmlinux
|
||||
$(call if_changed,disasm)
|
||||
|
||||
linux.lst: vmlinux
|
||||
vmlinux.lst: vmlinux
|
||||
$(call if_changed,listing)
|
||||
|
||||
CLEAN_FILES += vmlinux.s vmlinux.lst
|
||||
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
|
||||
define archhelp
|
||||
@echo '* vmlinux.elf - ELF image with load address 0'
|
||||
@echo ' vmlinux.cso - PathFinder CSO image'
|
||||
@echo ' uImage - Create a bootable image for U-Boot'
|
||||
@echo '* uImage - Create a bootable image for U-Boot'
|
||||
endef
|
||||
|
|
|
@ -21,15 +21,6 @@ struct tag *bootloader_tags __initdata;
|
|||
|
||||
struct lcdc_platform_data __initdata atstk1000_fb0_data;
|
||||
|
||||
asmlinkage void __init board_early_init(void)
|
||||
{
|
||||
extern void sdram_init(void);
|
||||
|
||||
#ifdef CONFIG_LOADER_STANDALONE
|
||||
sdram_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
void __init board_setup_fbmem(unsigned long fbmem_start,
|
||||
unsigned long fbmem_size)
|
||||
{
|
||||
|
|
|
@ -37,14 +37,12 @@ OBJCOPYFLAGS_vmlinux.elf := --change-section-lma .text-0x80000000 \
|
|||
--change-section-lma .data-0x80000000 \
|
||||
--change-section-lma .init-0x80000000 \
|
||||
--change-section-lma .bss-0x80000000 \
|
||||
--change-section-lma .initrd-0x80000000 \
|
||||
--change-section-lma __param-0x80000000 \
|
||||
--change-section-lma __ksymtab-0x80000000 \
|
||||
--change-section-lma __ksymtab_gpl-0x80000000 \
|
||||
--change-section-lma __kcrctab-0x80000000 \
|
||||
--change-section-lma __kcrctab_gpl-0x80000000 \
|
||||
--change-section-lma __ksymtab_strings-0x80000000 \
|
||||
--change-section-lma .got-0x80000000 \
|
||||
--set-start 0xa0000000
|
||||
$(obj)/vmlinux.elf: vmlinux FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
@ -59,4 +57,4 @@ install: $(BOOTIMAGE)
|
|||
sh $(srctree)/install-kernel.sh $<
|
||||
|
||||
# Generated files to be removed upon make clean
|
||||
clean-files := vmlinux* uImage uImage.srec
|
||||
clean-files := vmlinux.elf vmlinux.bin vmlinux.gz uImage uImage.srec
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.18-rc1
|
||||
# Tue Jul 11 12:41:36 2006
|
||||
# Linux kernel version: 2.6.19-rc2
|
||||
# Fri Oct 20 11:52:37 2006
|
||||
#
|
||||
CONFIG_AVR32=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
@ -25,16 +26,23 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
|||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
CONFIG_SWAP=y
|
||||
# CONFIG_SYSVIPC is not set
|
||||
# CONFIG_POSIX_MQUEUE is not set
|
||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
# CONFIG_AUDIT is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
# CONFIG_IPC_NS is not set
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
CONFIG_TASKSTATS=y
|
||||
CONFIG_TASK_DELAY_ACCT=y
|
||||
# CONFIG_UTS_NS is not set
|
||||
CONFIG_AUDIT=y
|
||||
# CONFIG_IKCONFIG is not set
|
||||
# CONFIG_RELAY is not set
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_INITRAMFS_SOURCE=""
|
||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||
# CONFIG_TASK_XACCT is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
# CONFIG_SYSCTL_SYSCALL is not set
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
|
@ -43,14 +51,15 @@ CONFIG_PRINTK=y
|
|||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
# CONFIG_BASE_FULL is not set
|
||||
# CONFIG_FUTEX is not set
|
||||
# CONFIG_EPOLL is not set
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SHMEM=y
|
||||
# CONFIG_SLAB is not set
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=1
|
||||
CONFIG_SLOB=y
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
|
@ -65,6 +74,7 @@ CONFIG_MODULE_UNLOAD=y
|
|||
#
|
||||
# Block layer
|
||||
#
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
|
||||
#
|
||||
|
@ -166,10 +176,12 @@ CONFIG_IP_PNP_DHCP=y
|
|||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET6_TUNNEL is not set
|
||||
|
@ -199,7 +211,6 @@ CONFIG_TCP_CONG_BIC=y
|
|||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_NET_DIVERT is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
|
@ -212,7 +223,6 @@ CONFIG_TCP_CONG_BIC=y
|
|||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_NET_TCPPROBE is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
|
@ -239,7 +249,84 @@ CONFIG_STANDALONE=y
|
|||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_RFD_FTL is not set
|
||||
# CONFIG_SSFDC is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
#
|
||||
CONFIG_MTD_CFI=y
|
||||
# CONFIG_MTD_JEDECPROBE is not set
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
# CONFIG_MTD_CFI_INTELEXT is not set
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
# CONFIG_MTD_CFI_STAA is not set
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
# CONFIG_MTD_RAM is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
# CONFIG_MTD_OBSOLETE_CHIPS is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_START=0x8000000
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x0
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
|
||||
#
|
||||
# Disk-On-Chip Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
|
||||
#
|
||||
# NAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_NAND is not set
|
||||
|
||||
#
|
||||
# OneNAND Flash Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
|
@ -260,10 +347,17 @@ CONFIG_BLK_DEV_NBD=m
|
|||
CONFIG_BLK_DEV_RAM=m
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
|
@ -274,6 +368,12 @@ CONFIG_BLK_DEV_INITRD=y
|
|||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
|
||||
#
|
||||
# Serial ATA (prod) and Parallel ATA (experimental) drivers
|
||||
#
|
||||
# CONFIG_ATA is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
|
@ -305,14 +405,11 @@ CONFIG_TUN=m
|
|||
#
|
||||
# PHY device support
|
||||
#
|
||||
# CONFIG_PHYLIB is not set
|
||||
|
||||
#
|
||||
# Ethernet (10 or 100Mbit)
|
||||
#
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
CONFIG_MACB=y
|
||||
# CONFIG_NET_ETHERNET is not set
|
||||
|
||||
#
|
||||
# Ethernet (1000 Mbit)
|
||||
|
@ -341,10 +438,11 @@ CONFIG_PPP=m
|
|||
CONFIG_PPP_ASYNC=m
|
||||
# CONFIG_PPP_SYNC_TTY is not set
|
||||
CONFIG_PPP_DEFLATE=m
|
||||
# CONFIG_PPP_BSDCOMP is not set
|
||||
CONFIG_PPP_BSDCOMP=m
|
||||
# CONFIG_PPP_MPPE is not set
|
||||
# CONFIG_PPPOE is not set
|
||||
# CONFIG_SLIP is not set
|
||||
CONFIG_SLHC=m
|
||||
# CONFIG_SHAPER is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
|
@ -417,7 +515,6 @@ CONFIG_UNIX98_PTYS=y
|
|||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_TELCLOCK is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
|
@ -427,23 +524,13 @@ CONFIG_UNIX98_PTYS=y
|
|||
#
|
||||
# SPI support
|
||||
#
|
||||
CONFIG_SPI=y
|
||||
# CONFIG_SPI_DEBUG is not set
|
||||
CONFIG_SPI_MASTER=y
|
||||
|
||||
#
|
||||
# SPI Master Controller Drivers
|
||||
#
|
||||
CONFIG_SPI_ATMEL=m
|
||||
# CONFIG_SPI_BITBANG is not set
|
||||
|
||||
#
|
||||
# SPI Protocol Masters
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
|
@ -451,15 +538,10 @@ CONFIG_SPI_ATMEL=m
|
|||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
CONFIG_VIDEO_V4L2=y
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
|
@ -470,28 +552,8 @@ CONFIG_VIDEO_V4L2=y
|
|||
# Graphics support
|
||||
#
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
CONFIG_FB=m
|
||||
CONFIG_FB_CFB_FILLRECT=m
|
||||
CONFIG_FB_CFB_COPYAREA=m
|
||||
CONFIG_FB_CFB_IMAGEBLIT=m
|
||||
# CONFIG_FB_MACMODES is not set
|
||||
# CONFIG_FB_BACKLIGHT is not set
|
||||
# CONFIG_FB_MODE_HELPERS is not set
|
||||
# CONFIG_FB_TILEBLITTING is not set
|
||||
CONFIG_FB_SIDSA=m
|
||||
CONFIG_FB_SIDSA_DEFAULT_BPP=24
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
|
||||
#
|
||||
# Logo configuration
|
||||
#
|
||||
# CONFIG_LOGO is not set
|
||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
|
||||
CONFIG_LCD_CLASS_DEVICE=m
|
||||
CONFIG_LCD_DEVICE=y
|
||||
CONFIG_LCD_LTV350QV=m
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Sound
|
||||
|
@ -561,18 +623,21 @@ CONFIG_LCD_LTV350QV=m
|
|||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS=m
|
||||
# CONFIG_EXT2_FS_XATTR is not set
|
||||
# CONFIG_EXT2_FS_XIP is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_GFS2_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
CONFIG_MINIX_FS=m
|
||||
CONFIG_ROMFS_FS=m
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
|
@ -600,8 +665,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
|||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
CONFIG_RAMFS=y
|
||||
CONFIG_CONFIGFS_FS=m
|
||||
|
@ -616,6 +683,16 @@ CONFIG_CONFIGFS_FS=m
|
|||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
# CONFIG_JFFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||
# CONFIG_JFFS2_SUMMARY is not set
|
||||
# CONFIG_JFFS2_FS_XATTR is not set
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
|
@ -626,26 +703,10 @@ CONFIG_CONFIGFS_FS=m
|
|||
#
|
||||
# Network File Systems
|
||||
#
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
# CONFIG_NFS_V4 is not set
|
||||
# CONFIG_NFS_DIRECTIO is not set
|
||||
# CONFIG_NFS_FS is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
CONFIG_CIFS=m
|
||||
# CONFIG_CIFS_STATS is not set
|
||||
# CONFIG_CIFS_WEAK_PW_HASH is not set
|
||||
# CONFIG_CIFS_XATTR is not set
|
||||
# CONFIG_CIFS_DEBUG2 is not set
|
||||
# CONFIG_CIFS_EXPERIMENTAL is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
|
@ -665,7 +726,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
|||
CONFIG_NLS_CODEPAGE_437=m
|
||||
# CONFIG_NLS_CODEPAGE_737 is not set
|
||||
# CONFIG_NLS_CODEPAGE_775 is not set
|
||||
CONFIG_NLS_CODEPAGE_850=m
|
||||
# CONFIG_NLS_CODEPAGE_850 is not set
|
||||
# CONFIG_NLS_CODEPAGE_852 is not set
|
||||
# CONFIG_NLS_CODEPAGE_855 is not set
|
||||
# CONFIG_NLS_CODEPAGE_857 is not set
|
||||
|
@ -705,13 +766,17 @@ CONFIG_NLS_UTF8=m
|
|||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
CONFIG_PRINTK_TIME=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
# CONFIG_DEBUG_SPINLOCK is not set
|
||||
# CONFIG_DEBUG_MUTEXES is not set
|
||||
# CONFIG_DEBUG_RWSEMS is not set
|
||||
|
@ -722,11 +787,13 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_INFO is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_UNWIND_INFO is not set
|
||||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_KPROBES=y
|
||||
# CONFIG_KPROBES is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
|
@ -739,16 +806,14 @@ CONFIG_KPROBES=y
|
|||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_CRC_CCITT=m
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=m
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=m
|
||||
CONFIG_ZLIB_DEFLATE=m
|
||||
CONFIG_AUDIT_GENERIC=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_PLIST=y
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <asm/checksum.h>
|
||||
|
@ -53,3 +54,11 @@ EXPORT_SYMBOL(find_next_zero_bit);
|
|||
EXPORT_SYMBOL(find_first_bit);
|
||||
EXPORT_SYMBOL(find_next_bit);
|
||||
EXPORT_SYMBOL(generic_find_next_zero_le_bit);
|
||||
|
||||
/* I/O primitives (lib/io-*.S) */
|
||||
EXPORT_SYMBOL(__raw_readsb);
|
||||
EXPORT_SYMBOL(__raw_readsw);
|
||||
EXPORT_SYMBOL(__raw_readsl);
|
||||
EXPORT_SYMBOL(__raw_writesb);
|
||||
EXPORT_SYMBOL(__raw_writesw);
|
||||
EXPORT_SYMBOL(__raw_writesl);
|
||||
|
|
|
@ -30,9 +30,6 @@ kernel_entry:
|
|||
mov r7, 0
|
||||
#endif
|
||||
|
||||
/* Set up the PIO, SDRAM controller, early printk, etc. */
|
||||
rcall board_early_init
|
||||
|
||||
/* Start the show */
|
||||
lddpc pc, kernel_start_addr
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
|
|||
void *addr = (void *)regs->pc;
|
||||
int ret = 0;
|
||||
|
||||
pr_debug("kprobe_handler: kprobe_running=%d\n",
|
||||
pr_debug("kprobe_handler: kprobe_running=%p\n",
|
||||
kprobe_running());
|
||||
|
||||
/*
|
||||
|
|
|
@ -263,7 +263,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
|
|||
* value of PC. Just subtract the value of
|
||||
* GOT, and we're done.
|
||||
*/
|
||||
pr_debug("GOTPC: PC=0x%lx, got_offset=0x%lx, core=0x%p\n",
|
||||
pr_debug("GOTPC: PC=0x%x, got_offset=0x%lx, core=0x%p\n",
|
||||
relocation, module->arch.got_offset,
|
||||
module->module_core);
|
||||
relocation -= ((unsigned long)module->module_core
|
||||
|
@ -282,7 +282,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
|
|||
&& (relocation & 0xffff0000) != 0xffff0000)
|
||||
return reloc_overflow(module, "R_AVR32_GOT16S",
|
||||
relocation);
|
||||
pr_debug("GOT reloc @ 0x%lx -> %lu\n",
|
||||
pr_debug("GOT reloc @ 0x%x -> %u\n",
|
||||
rel->r_offset, relocation);
|
||||
value = *location;
|
||||
value = ((value & 0xffff0000)
|
||||
|
|
|
@ -157,7 +157,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
|
|||
unsigned long tmp;
|
||||
int ret;
|
||||
|
||||
pr_debug("arch_ptrace(%ld, %ld, %#lx, %#lx)\n",
|
||||
pr_debug("arch_ptrace(%ld, %d, %#lx, %#lx)\n",
|
||||
request, child->pid, addr, data);
|
||||
|
||||
pr_debug("ptrace: Enabling monitor mode...\n");
|
||||
|
|
|
@ -100,3 +100,12 @@ __sys_splice:
|
|||
rcall sys_splice
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
||||
.global __sys_epoll_pwait
|
||||
.type __sys_epoll_pwait,@function
|
||||
__sys_epoll_pwait:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_epoll_pwait
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
|
|
@ -286,4 +286,5 @@ sys_call_table:
|
|||
.long sys_sync_file_range
|
||||
.long sys_tee
|
||||
.long sys_vmsplice
|
||||
.long __sys_epoll_pwait /* 265 */
|
||||
.long sys_ni_syscall /* r8 is saturated at nr_syscalls */
|
||||
|
|
|
@ -38,13 +38,7 @@ SECTIONS
|
|||
__setup_end = .;
|
||||
. = ALIGN(4);
|
||||
__initcall_start = .;
|
||||
*(.initcall1.init)
|
||||
*(.initcall2.init)
|
||||
*(.initcall3.init)
|
||||
*(.initcall4.init)
|
||||
*(.initcall5.init)
|
||||
*(.initcall6.init)
|
||||
*(.initcall7.init)
|
||||
INITCALLS
|
||||
__initcall_end = .;
|
||||
__con_initcall_start = .;
|
||||
*(.con_initcall.init)
|
||||
|
|
|
@ -7,4 +7,5 @@ lib-y += strncpy_from_user.o strnlen_user.o
|
|||
lib-y += delay.o memset.o memcpy.o findbit.o
|
||||
lib-y += csum_partial.o csum_partial_copy_generic.o
|
||||
lib-y += io-readsw.o io-readsl.o io-writesw.o io-writesl.o
|
||||
lib-y += io-readsb.o io-writesb.o
|
||||
lib-y += __avr32_lsl64.o __avr32_lsr64.o __avr32_asr64.o
|
||||
|
|
|
@ -136,6 +136,7 @@ ENTRY(generic_find_next_zero_le_bit)
|
|||
/* offset is not word-aligned. Handle the first (32 - r10) bits */
|
||||
ldswp.w r8, r12[0]
|
||||
sub r12, -4
|
||||
com r8
|
||||
lsr r8, r8, r10
|
||||
brne .L_found
|
||||
|
||||
|
@ -146,7 +147,7 @@ ENTRY(generic_find_next_zero_le_bit)
|
|||
|
||||
/* Main loop. offset must be word-aligned */
|
||||
1: ldswp.w r8, r12[0]
|
||||
cp.w r8, 0
|
||||
com r8
|
||||
brne .L_found
|
||||
sub r12, -4
|
||||
sub r9, 32
|
||||
|
|
49
arch/avr32/lib/io-readsb.S
Normal file
49
arch/avr32/lib/io-readsb.S
Normal file
|
@ -0,0 +1,49 @@
|
|||
/*
|
||||
* Copyright (C) 2004-2006 Atmel Corporation
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
.text
|
||||
.Lnot_word_aligned:
|
||||
1: ld.ub r8, r12[0]
|
||||
sub r10, 1
|
||||
st.b r11++, r8
|
||||
reteq r12
|
||||
tst r11, r9
|
||||
brne 1b
|
||||
|
||||
/* fall through */
|
||||
|
||||
.global __raw_readsb
|
||||
.type __raw_readsb,@function
|
||||
__raw_readsb:
|
||||
cp.w r10, 0
|
||||
mov r9, 3
|
||||
reteq r12
|
||||
|
||||
tst r11, r9
|
||||
brne .Lnot_word_aligned
|
||||
|
||||
sub r10, 4
|
||||
brlt 2f
|
||||
|
||||
1: ldins.b r8:t, r12[0]
|
||||
ldins.b r8:u, r12[0]
|
||||
ldins.b r8:l, r12[0]
|
||||
ldins.b r8:b, r12[0]
|
||||
st.w r11++, r8
|
||||
sub r10, 4
|
||||
brge 1b
|
||||
|
||||
2: sub r10, -4
|
||||
reteq r12
|
||||
|
||||
3: ld.uh r8, r12[0]
|
||||
sub r10, 1
|
||||
st.b r11++, r8
|
||||
brne 3b
|
||||
|
||||
retal r12
|
52
arch/avr32/lib/io-writesb.S
Normal file
52
arch/avr32/lib/io-writesb.S
Normal file
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (C) 2004-2006 Atmel Corporation
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
.text
|
||||
.Lnot_word_aligned:
|
||||
1: ld.ub r8, r11++
|
||||
sub r10, 1
|
||||
st.b r12[0], r8
|
||||
reteq r12
|
||||
tst r11, r9
|
||||
brne 1b
|
||||
|
||||
/* fall through */
|
||||
|
||||
.global __raw_writesb
|
||||
.type __raw_writesb,@function
|
||||
__raw_writesb:
|
||||
cp.w r10, 0
|
||||
mov r9, 3
|
||||
reteq r12
|
||||
|
||||
tst r11, r9
|
||||
brne .Lnot_word_aligned
|
||||
|
||||
sub r10, 4
|
||||
brlt 2f
|
||||
|
||||
1: ld.w r8, r11++
|
||||
bfextu r9, r8, 24, 8
|
||||
st.b r12[0], r9
|
||||
bfextu r9, r8, 16, 8
|
||||
st.b r12[0], r9
|
||||
bfextu r9, r8, 8, 8
|
||||
st.b r12[0], r9
|
||||
st.b r12[0], r8
|
||||
sub r10, 4
|
||||
brge 1b
|
||||
|
||||
2: sub r10, -4
|
||||
reteq r12
|
||||
|
||||
3: ld.ub r8, r11++
|
||||
sub r10, 1
|
||||
st.b r12[0], r8
|
||||
brne 3b
|
||||
|
||||
retal r12
|
|
@ -120,8 +120,8 @@
|
|||
|
||||
/* Register access macros */
|
||||
#define hsmc_readl(port,reg) \
|
||||
readl((port)->regs + HSMC_##reg)
|
||||
__raw_readl((port)->regs + HSMC_##reg)
|
||||
#define hsmc_writel(port,reg,value) \
|
||||
writel((value), (port)->regs + HSMC_##reg)
|
||||
__raw_writel((value), (port)->regs + HSMC_##reg)
|
||||
|
||||
#endif /* __ASM_AVR32_HSMC_H__ */
|
||||
|
|
|
@ -321,7 +321,9 @@
|
|||
#define INTC_MKBF(name, value) (((value) & ((1 << INTC_##name##_SIZE) - 1)) << INTC_##name##_OFFSET)
|
||||
#define INTC_GETBF(name, value) (((value) >> INTC_##name##_OFFSET) & ((1 << INTC_##name##_SIZE) - 1))
|
||||
|
||||
#define intc_readl(port,reg) readl((port)->regs + INTC_##reg)
|
||||
#define intc_writel(port,reg,value) writel((value), (port)->regs + INTC_##reg)
|
||||
#define intc_readl(port,reg) \
|
||||
__raw_readl((port)->regs + INTC_##reg)
|
||||
#define intc_writel(port,reg,value) \
|
||||
__raw_writel((value), (port)->regs + INTC_##reg)
|
||||
|
||||
#endif /* __ASM_AVR32_PERIHP_INTC_H__ */
|
||||
|
|
|
@ -170,8 +170,10 @@
|
|||
#define PIO_BFINS(name,value,old) (((old) & ~(((1 << PIO_##name##_SIZE) - 1) << PIO_##name##_OFFSET)) | PIO_BF(name,value))
|
||||
|
||||
/* Register access macros */
|
||||
#define pio_readl(port,reg) readl((port)->regs + PIO_##reg)
|
||||
#define pio_writel(port,reg,value) writel((value), (port)->regs + PIO_##reg)
|
||||
#define pio_readl(port,reg) \
|
||||
__raw_readl((port)->regs + PIO_##reg)
|
||||
#define pio_writel(port,reg,value) \
|
||||
__raw_writel((value), (port)->regs + PIO_##reg)
|
||||
|
||||
void at32_init_pio(struct platform_device *pdev);
|
||||
|
||||
|
|
|
@ -234,7 +234,9 @@
|
|||
#define SM_BFINS(name,value,old) (((old) & ~(((1 << SM_##name##_SIZE) - 1) << SM_##name##_OFFSET)) | SM_BF(name,value))
|
||||
|
||||
/* Register access macros */
|
||||
#define sm_readl(port,reg) readl((port)->regs + SM_##reg)
|
||||
#define sm_writel(port,reg,value) writel((value), (port)->regs + SM_##reg)
|
||||
#define sm_readl(port,reg) \
|
||||
__raw_readl((port)->regs + SM_##reg)
|
||||
#define sm_writel(port,reg,value) \
|
||||
__raw_writel((value), (port)->regs + SM_##reg)
|
||||
|
||||
#endif /* __ASM_AVR32_SM_H__ */
|
||||
|
|
|
@ -206,7 +206,7 @@ void __init setup_bootmem(void)
|
|||
|
||||
if (mem_ramdisk) {
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
initrd_start = __va(mem_ramdisk->addr);
|
||||
initrd_start = (unsigned long)__va(mem_ramdisk->addr);
|
||||
initrd_end = initrd_start + mem_ramdisk->size;
|
||||
|
||||
print_memory_map("RAMDISK images", mem_ramdisk);
|
||||
|
|
|
@ -77,6 +77,8 @@ void __iounmap(void __iomem *addr)
|
|||
|
||||
if ((unsigned long)addr >= P4SEG)
|
||||
return;
|
||||
if (PXSEG(addr) == P2SEG)
|
||||
return;
|
||||
|
||||
p = remove_vm_area((void *)(PAGE_MASK & (unsigned long __force)addr));
|
||||
if (unlikely(!p)) {
|
||||
|
|
|
@ -2051,7 +2051,6 @@ static void cryptocop_job_queue_close(void)
|
|||
spin_lock_irqsave(&cryptocop_process_lock, process_flags);
|
||||
|
||||
/* Empty the job queue. */
|
||||
spin_lock_irqsave(&cryptocop_process_lock, process_flags);
|
||||
for (i = 0; i < cryptocop_prio_no_prios; i++){
|
||||
if (!list_empty(&(cryptocop_job_queues[i].jobs))){
|
||||
list_for_each_safe(node, tmp, &(cryptocop_job_queues[i].jobs)) {
|
||||
|
|
|
@ -44,13 +44,7 @@ SECTIONS
|
|||
|
||||
__initcall_start = .;
|
||||
.initcall.init : {
|
||||
*(.initcall1.init)
|
||||
*(.initcall2.init)
|
||||
*(.initcall3.init)
|
||||
*(.initcall4.init)
|
||||
*(.initcall5.init)
|
||||
*(.initcall6.init)
|
||||
*(.initcall7.init)
|
||||
INITCALLS
|
||||
}
|
||||
__initcall_end = .;
|
||||
__con_initcall_start = .;
|
||||
|
|
|
@ -118,13 +118,7 @@ SECTIONS
|
|||
. = ALIGN(0x4) ;
|
||||
___setup_end = .;
|
||||
___initcall_start = .;
|
||||
*(.initcall1.init)
|
||||
*(.initcall2.init)
|
||||
*(.initcall3.init)
|
||||
*(.initcall4.init)
|
||||
*(.initcall5.init)
|
||||
*(.initcall6.init)
|
||||
*(.initcall7.init)
|
||||
INITCALLS
|
||||
___initcall_end = .;
|
||||
___con_initcall_start = .;
|
||||
*(.con_initcall.init)
|
||||
|
|
|
@ -42,6 +42,10 @@ cflags-$(CONFIG_REGPARM) += -mregparm=3
|
|||
# temporary until string.h is fixed
|
||||
cflags-y += -ffreestanding
|
||||
|
||||
# this works around some issues with generating unwind tables in older gccs
|
||||
# newer gccs do it by default
|
||||
cflags-y += -maccumulate-outgoing-args
|
||||
|
||||
# Disable unit-at-a-time mode on pre-gcc-4.0 compilers, it makes gcc use
|
||||
# a lot more stack due to the lack of sharing of stacklots:
|
||||
CFLAGS += $(shell if [ $(call cc-version) -lt 0400 ] ; then echo $(call cc-option,-fno-unit-at-a-time); fi ;)
|
||||
|
@ -51,8 +55,8 @@ cflags-y += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
|
|||
AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
|
||||
|
||||
# is .cfi_signal_frame supported too?
|
||||
cflags-y += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
|
||||
AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_endproc,-DCONFIG_AS_CFI=1,)
|
||||
cflags-y += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,)
|
||||
AFLAGS += $(call as-instr,.cfi_startproc\n.cfi_signal_frame\n.cfi_endproc,-DCONFIG_AS_CFI_SIGNAL_FRAME=1,)
|
||||
|
||||
CFLAGS += $(cflags-y)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.19-rc1
|
||||
# Thu Oct 5 13:04:53 2006
|
||||
# Linux kernel version: 2.6.19-rc2-git4
|
||||
# Sat Oct 21 03:38:56 2006
|
||||
#
|
||||
CONFIG_X86_32=y
|
||||
CONFIG_GENERIC_TIME=y
|
||||
|
@ -380,8 +380,8 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=y
|
|||
CONFIG_INET6_XFRM_MODE_TUNNEL=y
|
||||
# CONFIG_INET6_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
|
||||
CONFIG_IPV6_SIT=y
|
||||
# CONFIG_IPV6_TUNNEL is not set
|
||||
# CONFIG_IPV6_SUBTREES is not set
|
||||
# CONFIG_IPV6_MULTIPLE_TABLES is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
@ -482,6 +482,13 @@ CONFIG_BLK_DEV_INITRD=y
|
|||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_IBM_ASM is not set
|
||||
# CONFIG_SGI_IOC4 is not set
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# ATA/ATAPI/MFM/RLL support
|
||||
#
|
||||
|
@ -1024,6 +1031,7 @@ CONFIG_HANGCHECK_TIMER=y
|
|||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
|
@ -1031,12 +1039,6 @@ CONFIG_HANGCHECK_TIMER=y
|
|||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_IBM_ASM is not set
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
|
@ -1169,7 +1171,6 @@ CONFIG_USB_HIDINPUT=y
|
|||
# CONFIG_USB_ATI_REMOTE2 is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
|
@ -1215,6 +1216,7 @@ CONFIG_USB_MON=y
|
|||
# CONFIG_USB_APPLEDISPLAY is not set
|
||||
# CONFIG_USB_SISUSBVGA is not set
|
||||
# CONFIG_USB_LD is not set
|
||||
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||
# CONFIG_USB_TEST is not set
|
||||
|
||||
#
|
||||
|
@ -1284,6 +1286,7 @@ CONFIG_EXT3_FS=y
|
|||
CONFIG_EXT3_FS_XATTR=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
# CONFIG_EXT3_FS_SECURITY is not set
|
||||
# CONFIG_EXT4DEV_FS is not set
|
||||
CONFIG_JBD=y
|
||||
# CONFIG_JBD_DEBUG is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
|
@ -1307,6 +1310,7 @@ CONFIG_DNOTIFY=y
|
|||
# CONFIG_AUTOFS_FS is not set
|
||||
CONFIG_AUTOFS4_FS=y
|
||||
# CONFIG_FUSE_FS is not set
|
||||
CONFIG_GENERIC_ACL=y
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
|
@ -1384,7 +1388,6 @@ CONFIG_SUNRPC=y
|
|||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
# CONFIG_9P_FS is not set
|
||||
CONFIG_GENERIC_ACL=y
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
|
@ -1436,10 +1439,6 @@ CONFIG_NLS_ISO8859_15=y
|
|||
# CONFIG_NLS_KOI8_U is not set
|
||||
CONFIG_NLS_UTF8=y
|
||||
|
||||
#
|
||||
# Distributed Lock Manager
|
||||
#
|
||||
|
||||
#
|
||||
# Instrumentation Support
|
||||
#
|
||||
|
@ -1480,6 +1479,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_UNWIND_INFO=y
|
||||
CONFIG_STACK_UNWIND=y
|
||||
# CONFIG_FORCED_INLINING is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_LKDTM is not set
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
|
|
@ -70,7 +70,7 @@ static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id) { return
|
|||
|
||||
#define PREFIX "ACPI: "
|
||||
|
||||
int acpi_noirq __initdata; /* skip ACPI IRQ initialization */
|
||||
int acpi_noirq; /* skip ACPI IRQ initialization */
|
||||
int acpi_pci_disabled __initdata; /* skip ACPI PCI scan and IRQ initialization */
|
||||
int acpi_ht __initdata = 1; /* enable HT */
|
||||
|
||||
|
@ -82,6 +82,7 @@ EXPORT_SYMBOL(acpi_strict);
|
|||
acpi_interrupt_flags acpi_sci_flags __initdata;
|
||||
int acpi_sci_override_gsi __initdata;
|
||||
int acpi_skip_timer_override __initdata;
|
||||
int acpi_use_timer_override __initdata;
|
||||
|
||||
#ifdef CONFIG_X86_LOCAL_APIC
|
||||
static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
|
||||
|
@ -1300,6 +1301,13 @@ static int __init parse_acpi_skip_timer_override(char *arg)
|
|||
return 0;
|
||||
}
|
||||
early_param("acpi_skip_timer_override", parse_acpi_skip_timer_override);
|
||||
|
||||
static int __init parse_acpi_use_timer_override(char *arg)
|
||||
{
|
||||
acpi_use_timer_override = 1;
|
||||
return 0;
|
||||
}
|
||||
early_param("acpi_use_timer_override", parse_acpi_use_timer_override);
|
||||
#endif /* CONFIG_X86_IO_APIC */
|
||||
|
||||
static int __init setup_acpi_sci(char *s)
|
||||
|
|
|
@ -27,11 +27,17 @@ static int __init check_bridge(int vendor, int device)
|
|||
#ifdef CONFIG_ACPI
|
||||
/* According to Nvidia all timer overrides are bogus unless HPET
|
||||
is enabled. */
|
||||
if (vendor == PCI_VENDOR_ID_NVIDIA) {
|
||||
if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) {
|
||||
nvidia_hpet_detected = 0;
|
||||
acpi_table_parse(ACPI_HPET, nvidia_hpet_check);
|
||||
if (nvidia_hpet_detected == 0) {
|
||||
acpi_skip_timer_override = 1;
|
||||
printk(KERN_INFO "Nvidia board "
|
||||
"detected. Ignoring ACPI "
|
||||
"timer override.\n");
|
||||
printk(KERN_INFO "If you got timer trouble "
|
||||
"try acpi_use_timer_override\n");
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -198,7 +198,7 @@
|
|||
* (APM) BIOS Interface Specification, Revision 1.2, February 1996.
|
||||
*
|
||||
* [This document is available from Microsoft at:
|
||||
* http://www.microsoft.com/hwdev/busbios/amp_12.htm]
|
||||
* http://www.microsoft.com/whdc/archive/amp_12.mspx]
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
|
@ -317,7 +317,7 @@ is386: movl $2,%ecx # set MP
|
|||
movl %eax,%gs
|
||||
lldt %ax
|
||||
cld # gcc2 wants the direction flag cleared at all times
|
||||
pushl %eax # fake return address
|
||||
pushl $0 # fake return address for unwinder
|
||||
#ifdef CONFIG_SMP
|
||||
movb ready, %cl
|
||||
movb $1, ready
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue