mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge ../linus
Conflicts: drivers/cpufreq/cpufreq.c
This commit is contained in:
commit
c4366889dd
5669 changed files with 241743 additions and 122173 deletions
|
|
@ -25,6 +25,14 @@ config RWSEM_XCHGADD_ALGORITHM
|
|||
bool
|
||||
default y
|
||||
|
||||
config ARCH_HAS_ILOG2_U32
|
||||
bool
|
||||
default n
|
||||
|
||||
config ARCH_HAS_ILOG2_U64
|
||||
bool
|
||||
default n
|
||||
|
||||
config GENERIC_FIND_NEXT_BIT
|
||||
bool
|
||||
default y
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ osf_fstatfs(unsigned long fd, struct osf_statfs __user *buffer, unsigned long bu
|
|||
retval = -EBADF;
|
||||
file = fget(fd);
|
||||
if (file) {
|
||||
retval = do_osf_statfs(file->f_dentry, buffer, bufsiz);
|
||||
retval = do_osf_statfs(file->f_path.dentry, buffer, bufsiz);
|
||||
fput(file);
|
||||
}
|
||||
return retval;
|
||||
|
|
@ -979,7 +979,7 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
|
|||
long timeout;
|
||||
int ret = -EINVAL;
|
||||
struct fdtable *fdt;
|
||||
int max_fdset;
|
||||
int max_fds;
|
||||
|
||||
timeout = MAX_SCHEDULE_TIMEOUT;
|
||||
if (tvp) {
|
||||
|
|
@ -1003,9 +1003,9 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
|
|||
|
||||
rcu_read_lock();
|
||||
fdt = files_fdtable(current->files);
|
||||
max_fdset = fdt->max_fdset;
|
||||
max_fds = fdt->max_fds;
|
||||
rcu_read_unlock();
|
||||
if (n < 0 || n > max_fdset)
|
||||
if (n < 0 || n > max_fds)
|
||||
goto out_nofds;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -516,10 +516,11 @@ sys_pciconfig_iobase(long which, unsigned long bus, unsigned long dfn)
|
|||
if (bus == 0 && dfn == 0) {
|
||||
hose = pci_isa_hose;
|
||||
} else {
|
||||
dev = pci_find_slot(bus, dfn);
|
||||
dev = pci_get_bus_and_slot(bus, dfn);
|
||||
if (!dev)
|
||||
return -ENODEV;
|
||||
hose = dev->sysdata;
|
||||
pci_dev_put(dev);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 <[email protected]>");
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -183,11 +183,15 @@ miata_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
|||
|
||||
if((slot == 7) && (PCI_FUNC(dev->devfn) == 3)) {
|
||||
u8 irq=0;
|
||||
|
||||
if(pci_read_config_byte(pci_find_slot(dev->bus->number, dev->devfn & ~(7)), 0x40,&irq)!=PCIBIOS_SUCCESSFUL)
|
||||
struct pci_dev *pdev = pci_get_slot(dev->bus, dev->devfn & ~7);
|
||||
if(pdev == NULL || pci_read_config_byte(pdev, 0x40,&irq) != PCIBIOS_SUCCESSFUL) {
|
||||
pci_dev_put(pdev);
|
||||
return -1;
|
||||
else
|
||||
}
|
||||
else {
|
||||
pci_dev_put(pdev);
|
||||
return irq;
|
||||
}
|
||||
}
|
||||
|
||||
return COMMON_TABLE_LOOKUP;
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ nautilus_init_pci(void)
|
|||
bus = pci_scan_bus(0, alpha_mv.pci_ops, hose);
|
||||
hose->bus = bus;
|
||||
|
||||
irongate = pci_find_slot(0, 0);
|
||||
irongate = pci_get_bus_and_slot(0, 0);
|
||||
bus->self = irongate;
|
||||
bus->resource[1] = &irongate_mem;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 = .;
|
||||
|
||||
|
|
|
|||
|
|
@ -41,28 +41,25 @@ static inline unsigned short from64to16(unsigned long x)
|
|||
* computes the checksum of the TCP/UDP pseudo-header
|
||||
* returns a 16-bit checksum, already complemented.
|
||||
*/
|
||||
unsigned short int csum_tcpudp_magic(unsigned long saddr,
|
||||
unsigned long daddr,
|
||||
__sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
|
||||
unsigned short len,
|
||||
unsigned short proto,
|
||||
unsigned int sum)
|
||||
__wsum sum)
|
||||
{
|
||||
return ~from64to16(saddr + daddr + sum +
|
||||
((unsigned long) ntohs(len) << 16) +
|
||||
((unsigned long) proto << 8));
|
||||
return (__force __sum16)~from64to16(
|
||||
(__force u64)saddr + (__force u64)daddr +
|
||||
(__force u64)sum + ((len + proto) << 8));
|
||||
}
|
||||
|
||||
unsigned int csum_tcpudp_nofold(unsigned long saddr,
|
||||
unsigned long daddr,
|
||||
__wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
|
||||
unsigned short len,
|
||||
unsigned short proto,
|
||||
unsigned int sum)
|
||||
__wsum sum)
|
||||
{
|
||||
unsigned long result;
|
||||
|
||||
result = (saddr + daddr + sum +
|
||||
((unsigned long) ntohs(len) << 16) +
|
||||
((unsigned long) proto << 8));
|
||||
result = (__force u64)saddr + (__force u64)daddr +
|
||||
(__force u64)sum + ((len + proto) << 8);
|
||||
|
||||
/* Fold down to 32-bits so we don't lose in the typedef-less
|
||||
network stack. */
|
||||
|
|
@ -70,7 +67,7 @@ unsigned int csum_tcpudp_nofold(unsigned long saddr,
|
|||
result = (result & 0xffffffff) + (result >> 32);
|
||||
/* 33 to 32 */
|
||||
result = (result & 0xffffffff) + (result >> 32);
|
||||
return result;
|
||||
return (__force __wsum)result;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -146,9 +143,9 @@ out:
|
|||
* This is a version of ip_compute_csum() optimized for IP headers,
|
||||
* which always checksum on 4 octet boundaries.
|
||||
*/
|
||||
unsigned short ip_fast_csum(unsigned char * iph, unsigned int ihl)
|
||||
__sum16 ip_fast_csum(const void *iph, unsigned int ihl)
|
||||
{
|
||||
return ~do_csum(iph,ihl*4);
|
||||
return (__force __sum16)~do_csum(iph,ihl*4);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -163,15 +160,15 @@ unsigned short ip_fast_csum(unsigned char * iph, unsigned int ihl)
|
|||
*
|
||||
* it's best to have buff aligned on a 32-bit boundary
|
||||
*/
|
||||
unsigned int csum_partial(const unsigned char * buff, int len, unsigned int sum)
|
||||
__wsum csum_partial(const void *buff, int len, __wsum sum)
|
||||
{
|
||||
unsigned long result = do_csum(buff, len);
|
||||
|
||||
/* add in old sum, and carry.. */
|
||||
result += sum;
|
||||
result += (__force u32)sum;
|
||||
/* 32+c bits -> 32 bits */
|
||||
result = (result & 0xffffffff) + (result >> 32);
|
||||
return result;
|
||||
return (__force __wsum)result;
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(csum_partial);
|
||||
|
|
@ -180,7 +177,7 @@ EXPORT_SYMBOL(csum_partial);
|
|||
* this routine is used for miscellaneous IP-like checksums, mainly
|
||||
* in icmp.c
|
||||
*/
|
||||
unsigned short ip_compute_csum(unsigned char * buff, int len)
|
||||
__sum16 ip_compute_csum(const void *buff, int len)
|
||||
{
|
||||
return ~from64to16(do_csum(buff,len));
|
||||
return (__force __sum16)~from64to16(do_csum(buff,len));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -329,11 +329,11 @@ csum_partial_cfu_unaligned(const unsigned long __user * src,
|
|||
return checksum;
|
||||
}
|
||||
|
||||
static unsigned int
|
||||
do_csum_partial_copy_from_user(const char __user *src, char *dst, int len,
|
||||
unsigned int sum, int *errp)
|
||||
__wsum
|
||||
csum_partial_copy_from_user(const void __user *src, void *dst, int len,
|
||||
__wsum sum, int *errp)
|
||||
{
|
||||
unsigned long checksum = (unsigned) sum;
|
||||
unsigned long checksum = (__force u32) sum;
|
||||
unsigned long soff = 7 & (unsigned long) src;
|
||||
unsigned long doff = 7 & (unsigned long) dst;
|
||||
|
||||
|
|
@ -367,25 +367,12 @@ do_csum_partial_copy_from_user(const char __user *src, char *dst, int len,
|
|||
}
|
||||
checksum = from64to16 (checksum);
|
||||
}
|
||||
return checksum;
|
||||
return (__force __wsum)checksum;
|
||||
}
|
||||
|
||||
unsigned int
|
||||
csum_partial_copy_from_user(const char __user *src, char *dst, int len,
|
||||
unsigned int sum, int *errp)
|
||||
__wsum
|
||||
csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum)
|
||||
{
|
||||
if (!access_ok(VERIFY_READ, src, len)) {
|
||||
*errp = -EFAULT;
|
||||
memset(dst, 0, len);
|
||||
return sum;
|
||||
}
|
||||
|
||||
return do_csum_partial_copy_from_user(src, dst, len, sum, errp);
|
||||
}
|
||||
|
||||
unsigned int
|
||||
csum_partial_copy_nocheck(const char __user *src, char *dst, int len,
|
||||
unsigned int sum)
|
||||
{
|
||||
return do_csum_partial_copy_from_user(src, dst, len, sum, NULL);
|
||||
return csum_partial_copy_from_user((__force const void __user *)src,
|
||||
dst, len, sum, NULL);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
|
|||
|
||||
/* If we're in an interrupt context, or have no user context,
|
||||
we must not take the fault. */
|
||||
if (!mm || in_interrupt())
|
||||
if (!mm || in_atomic())
|
||||
goto no_context;
|
||||
|
||||
#ifdef CONFIG_ALPHA_LARGE_VMALLOC
|
||||
|
|
|
|||
|
|
@ -74,6 +74,14 @@ config RWSEM_GENERIC_SPINLOCK
|
|||
config RWSEM_XCHGADD_ALGORITHM
|
||||
bool
|
||||
|
||||
config ARCH_HAS_ILOG2_U32
|
||||
bool
|
||||
default n
|
||||
|
||||
config ARCH_HAS_ILOG2_U64
|
||||
bool
|
||||
default n
|
||||
|
||||
config GENERIC_HWEIGHT
|
||||
bool
|
||||
default y
|
||||
|
|
@ -223,6 +231,12 @@ config ARCH_IOP33X
|
|||
help
|
||||
Support for Intel's IOP33X (XScale) family of processors.
|
||||
|
||||
config ARCH_IOP13XX
|
||||
bool "IOP13xx-based"
|
||||
select PCI
|
||||
help
|
||||
Support for Intel's IOP13XX (XScale) family of processors.
|
||||
|
||||
config ARCH_IXP4XX
|
||||
bool "IXP4xx-based"
|
||||
depends on MMU
|
||||
|
|
@ -331,6 +345,8 @@ source "arch/arm/mach-iop32x/Kconfig"
|
|||
|
||||
source "arch/arm/mach-iop33x/Kconfig"
|
||||
|
||||
source "arch/arm/mach-iop13xx/Kconfig"
|
||||
|
||||
source "arch/arm/mach-ixp4xx/Kconfig"
|
||||
|
||||
source "arch/arm/mach-ixp2000/Kconfig"
|
||||
|
|
@ -374,6 +390,14 @@ config PLAT_IOP
|
|||
|
||||
source arch/arm/mm/Kconfig
|
||||
|
||||
config IWMMXT
|
||||
bool "Enable iWMMXt support"
|
||||
depends CPU_XSCALE || CPU_XSC3
|
||||
default y if PXA27x
|
||||
help
|
||||
Enable support for iWMMXt context switching at run time if
|
||||
running on a CPU that supports it.
|
||||
|
||||
# bool 'Use XScale PMU as timer source' CONFIG_XSCALE_PMU_TIMER
|
||||
config XSCALE_PMU
|
||||
bool
|
||||
|
|
@ -583,7 +607,7 @@ config LEDS
|
|||
ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \
|
||||
ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \
|
||||
ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \
|
||||
ARCH_AT91RM9200 || MACH_TRIZEPS4
|
||||
ARCH_AT91 || MACH_TRIZEPS4
|
||||
help
|
||||
If you say Y here, the LEDs on your machine will be used
|
||||
to provide useful information about your current system status.
|
||||
|
|
@ -879,6 +903,8 @@ endif
|
|||
|
||||
source "drivers/scsi/Kconfig"
|
||||
|
||||
source "drivers/ata/Kconfig"
|
||||
|
||||
source "drivers/md/Kconfig"
|
||||
|
||||
source "drivers/message/fusion/Kconfig"
|
||||
|
|
|
|||
|
|
@ -32,10 +32,6 @@ config DEBUG_USER
|
|||
8 - SIGSEGV faults
|
||||
16 - SIGBUS faults
|
||||
|
||||
config DEBUG_WAITQ
|
||||
bool "Wait queue debugging"
|
||||
depends on DEBUG_KERNEL
|
||||
|
||||
config DEBUG_ERRORS
|
||||
bool "Verbose kernel error messages"
|
||||
depends on DEBUG_KERNEL
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET)
|
|||
OBJCOPYFLAGS :=-O binary -R .note -R .comment -S
|
||||
GZFLAGS :=-9
|
||||
#CFLAGS +=-pipe
|
||||
# Explicitly specifiy 32-bit ARM ISA since toolchain default can be -mthumb:
|
||||
CFLAGS +=$(call cc-option,-marm,)
|
||||
|
||||
# Do not use arch/arm/defconfig - it's always outdated.
|
||||
# Select a platform tht is kept up-to-date
|
||||
|
|
@ -108,6 +110,7 @@ endif
|
|||
machine-$(CONFIG_ARCH_CLPS711X) := clps711x
|
||||
machine-$(CONFIG_ARCH_IOP32X) := iop32x
|
||||
machine-$(CONFIG_ARCH_IOP33X) := iop33x
|
||||
machine-$(CONFIG_ARCH_IOP13XX) := iop13xx
|
||||
machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx
|
||||
machine-$(CONFIG_ARCH_IXP2000) := ixp2000
|
||||
machine-$(CONFIG_ARCH_IXP23XX) := ixp23xx
|
||||
|
|
@ -174,11 +177,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);
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ void __init gic_dist_init(void __iomem *base)
|
|||
*/
|
||||
for (i = 29; i < max_irq; i++) {
|
||||
set_irq_chip(i, &gic_chip);
|
||||
set_irq_handler(i, do_level_IRQ);
|
||||
set_irq_handler(i, handle_level_irq);
|
||||
set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -163,11 +163,11 @@ static struct locomo_dev_info locomo_devices[] = {
|
|||
#define LOCOMO_IRQ_LT_START (IRQ_LOCOMO_LT)
|
||||
#define LOCOMO_IRQ_SPI_START (IRQ_LOCOMO_SPI_RFR)
|
||||
|
||||
static void locomo_handler(unsigned int irq, struct irqdesc *desc)
|
||||
static void locomo_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
int req, i;
|
||||
struct irqdesc *d;
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
struct irq_desc *d;
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
|
||||
/* Acknowledge the parent IRQ */
|
||||
desc->chip->ack(irq);
|
||||
|
|
@ -194,7 +194,7 @@ static void locomo_ack_irq(unsigned int irq)
|
|||
|
||||
static void locomo_mask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_ICR);
|
||||
r &= ~(0x0010 << (irq - LOCOMO_IRQ_START));
|
||||
|
|
@ -203,7 +203,7 @@ static void locomo_mask_irq(unsigned int irq)
|
|||
|
||||
static void locomo_unmask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_ICR);
|
||||
r |= (0x0010 << (irq - LOCOMO_IRQ_START));
|
||||
|
|
@ -217,10 +217,10 @@ static struct irq_chip locomo_chip = {
|
|||
.unmask = locomo_unmask_irq,
|
||||
};
|
||||
|
||||
static void locomo_key_handler(unsigned int irq, struct irqdesc *desc)
|
||||
static void locomo_key_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
struct irqdesc *d;
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
struct irq_desc *d;
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
|
||||
if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) {
|
||||
d = irq_desc + LOCOMO_IRQ_KEY_START;
|
||||
|
|
@ -230,7 +230,7 @@ static void locomo_key_handler(unsigned int irq, struct irqdesc *desc)
|
|||
|
||||
static void locomo_key_ack_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC);
|
||||
r &= ~(0x0100 << (irq - LOCOMO_IRQ_KEY_START));
|
||||
|
|
@ -239,7 +239,7 @@ static void locomo_key_ack_irq(unsigned int irq)
|
|||
|
||||
static void locomo_key_mask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC);
|
||||
r &= ~(0x0010 << (irq - LOCOMO_IRQ_KEY_START));
|
||||
|
|
@ -248,7 +248,7 @@ static void locomo_key_mask_irq(unsigned int irq)
|
|||
|
||||
static void locomo_key_unmask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC);
|
||||
r |= (0x0010 << (irq - LOCOMO_IRQ_KEY_START));
|
||||
|
|
@ -262,11 +262,11 @@ static struct irq_chip locomo_key_chip = {
|
|||
.unmask = locomo_key_unmask_irq,
|
||||
};
|
||||
|
||||
static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc)
|
||||
static void locomo_gpio_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
int req, i;
|
||||
struct irqdesc *d;
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
struct irq_desc *d;
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
|
||||
req = locomo_readl(mapbase + LOCOMO_GIR) &
|
||||
locomo_readl(mapbase + LOCOMO_GPD) &
|
||||
|
|
@ -285,7 +285,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc)
|
|||
|
||||
static void locomo_gpio_ack_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_GWE);
|
||||
r |= (0x0001 << (irq - LOCOMO_IRQ_GPIO_START));
|
||||
|
|
@ -302,7 +302,7 @@ static void locomo_gpio_ack_irq(unsigned int irq)
|
|||
|
||||
static void locomo_gpio_mask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_GIE);
|
||||
r &= ~(0x0001 << (irq - LOCOMO_IRQ_GPIO_START));
|
||||
|
|
@ -311,7 +311,7 @@ static void locomo_gpio_mask_irq(unsigned int irq)
|
|||
|
||||
static void locomo_gpio_unmask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_GIE);
|
||||
r |= (0x0001 << (irq - LOCOMO_IRQ_GPIO_START));
|
||||
|
|
@ -325,10 +325,10 @@ static struct irq_chip locomo_gpio_chip = {
|
|||
.unmask = locomo_gpio_unmask_irq,
|
||||
};
|
||||
|
||||
static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc)
|
||||
static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
struct irqdesc *d;
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
struct irq_desc *d;
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
|
||||
if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) {
|
||||
d = irq_desc + LOCOMO_IRQ_LT_START;
|
||||
|
|
@ -338,7 +338,7 @@ static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc)
|
|||
|
||||
static void locomo_lt_ack_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_LTINT);
|
||||
r &= ~(0x0100 << (irq - LOCOMO_IRQ_LT_START));
|
||||
|
|
@ -347,7 +347,7 @@ static void locomo_lt_ack_irq(unsigned int irq)
|
|||
|
||||
static void locomo_lt_mask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_LTINT);
|
||||
r &= ~(0x0010 << (irq - LOCOMO_IRQ_LT_START));
|
||||
|
|
@ -356,7 +356,7 @@ static void locomo_lt_mask_irq(unsigned int irq)
|
|||
|
||||
static void locomo_lt_unmask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_LTINT);
|
||||
r |= (0x0010 << (irq - LOCOMO_IRQ_LT_START));
|
||||
|
|
@ -370,11 +370,11 @@ static struct irq_chip locomo_lt_chip = {
|
|||
.unmask = locomo_lt_unmask_irq,
|
||||
};
|
||||
|
||||
static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc)
|
||||
static void locomo_spi_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
int req, i;
|
||||
struct irqdesc *d;
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
struct irq_desc *d;
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
|
||||
req = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIR) & 0x000F;
|
||||
if (req) {
|
||||
|
|
@ -391,7 +391,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc)
|
|||
|
||||
static void locomo_spi_ack_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIWE);
|
||||
r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
|
|
@ -408,7 +408,7 @@ static void locomo_spi_ack_irq(unsigned int irq)
|
|||
|
||||
static void locomo_spi_mask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIE);
|
||||
r &= ~(0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
|
|
@ -417,7 +417,7 @@ static void locomo_spi_mask_irq(unsigned int irq)
|
|||
|
||||
static void locomo_spi_unmask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned int r;
|
||||
r = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIE);
|
||||
r |= (0x0001 << (irq - LOCOMO_IRQ_SPI_START));
|
||||
|
|
@ -440,55 +440,55 @@ static void locomo_setup_irq(struct locomo *lchip)
|
|||
* Install handler for IRQ_LOCOMO_HW.
|
||||
*/
|
||||
set_irq_type(lchip->irq, IRQT_FALLING);
|
||||
set_irq_chipdata(lchip->irq, irqbase);
|
||||
set_irq_chip_data(lchip->irq, irqbase);
|
||||
set_irq_chained_handler(lchip->irq, locomo_handler);
|
||||
|
||||
/* Install handlers for IRQ_LOCOMO_*_BASE */
|
||||
set_irq_chip(IRQ_LOCOMO_KEY_BASE, &locomo_chip);
|
||||
set_irq_chipdata(IRQ_LOCOMO_KEY_BASE, irqbase);
|
||||
set_irq_chip_data(IRQ_LOCOMO_KEY_BASE, irqbase);
|
||||
set_irq_chained_handler(IRQ_LOCOMO_KEY_BASE, locomo_key_handler);
|
||||
set_irq_flags(IRQ_LOCOMO_KEY_BASE, IRQF_VALID | IRQF_PROBE);
|
||||
|
||||
set_irq_chip(IRQ_LOCOMO_GPIO_BASE, &locomo_chip);
|
||||
set_irq_chipdata(IRQ_LOCOMO_GPIO_BASE, irqbase);
|
||||
set_irq_chip_data(IRQ_LOCOMO_GPIO_BASE, irqbase);
|
||||
set_irq_chained_handler(IRQ_LOCOMO_GPIO_BASE, locomo_gpio_handler);
|
||||
set_irq_flags(IRQ_LOCOMO_GPIO_BASE, IRQF_VALID | IRQF_PROBE);
|
||||
|
||||
set_irq_chip(IRQ_LOCOMO_LT_BASE, &locomo_chip);
|
||||
set_irq_chipdata(IRQ_LOCOMO_LT_BASE, irqbase);
|
||||
set_irq_chip_data(IRQ_LOCOMO_LT_BASE, irqbase);
|
||||
set_irq_chained_handler(IRQ_LOCOMO_LT_BASE, locomo_lt_handler);
|
||||
set_irq_flags(IRQ_LOCOMO_LT_BASE, IRQF_VALID | IRQF_PROBE);
|
||||
|
||||
set_irq_chip(IRQ_LOCOMO_SPI_BASE, &locomo_chip);
|
||||
set_irq_chipdata(IRQ_LOCOMO_SPI_BASE, irqbase);
|
||||
set_irq_chip_data(IRQ_LOCOMO_SPI_BASE, irqbase);
|
||||
set_irq_chained_handler(IRQ_LOCOMO_SPI_BASE, locomo_spi_handler);
|
||||
set_irq_flags(IRQ_LOCOMO_SPI_BASE, IRQF_VALID | IRQF_PROBE);
|
||||
|
||||
/* install handlers for IRQ_LOCOMO_KEY_BASE generated interrupts */
|
||||
set_irq_chip(LOCOMO_IRQ_KEY_START, &locomo_key_chip);
|
||||
set_irq_chipdata(LOCOMO_IRQ_KEY_START, irqbase);
|
||||
set_irq_handler(LOCOMO_IRQ_KEY_START, do_edge_IRQ);
|
||||
set_irq_chip_data(LOCOMO_IRQ_KEY_START, irqbase);
|
||||
set_irq_handler(LOCOMO_IRQ_KEY_START, handle_edge_irq);
|
||||
set_irq_flags(LOCOMO_IRQ_KEY_START, IRQF_VALID | IRQF_PROBE);
|
||||
|
||||
/* install handlers for IRQ_LOCOMO_GPIO_BASE generated interrupts */
|
||||
for (irq = LOCOMO_IRQ_GPIO_START; irq < LOCOMO_IRQ_GPIO_START + 16; irq++) {
|
||||
set_irq_chip(irq, &locomo_gpio_chip);
|
||||
set_irq_chipdata(irq, irqbase);
|
||||
set_irq_handler(irq, do_edge_IRQ);
|
||||
set_irq_chip_data(irq, irqbase);
|
||||
set_irq_handler(irq, handle_edge_irq);
|
||||
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
|
||||
}
|
||||
|
||||
/* install handlers for IRQ_LOCOMO_LT_BASE generated interrupts */
|
||||
set_irq_chip(LOCOMO_IRQ_LT_START, &locomo_lt_chip);
|
||||
set_irq_chipdata(LOCOMO_IRQ_LT_START, irqbase);
|
||||
set_irq_handler(LOCOMO_IRQ_LT_START, do_edge_IRQ);
|
||||
set_irq_chip_data(LOCOMO_IRQ_LT_START, irqbase);
|
||||
set_irq_handler(LOCOMO_IRQ_LT_START, handle_edge_irq);
|
||||
set_irq_flags(LOCOMO_IRQ_LT_START, IRQF_VALID | IRQF_PROBE);
|
||||
|
||||
/* install handlers for IRQ_LOCOMO_SPI_BASE generated interrupts */
|
||||
for (irq = LOCOMO_IRQ_SPI_START; irq < LOCOMO_IRQ_SPI_START + 3; irq++) {
|
||||
set_irq_chip(irq, &locomo_spi_chip);
|
||||
set_irq_chipdata(irq, irqbase);
|
||||
set_irq_handler(irq, do_edge_IRQ);
|
||||
set_irq_chip_data(irq, irqbase);
|
||||
set_irq_handler(irq, handle_edge_irq);
|
||||
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ void __init sa1111_adjust_zones(int node, unsigned long *size, unsigned long *ho
|
|||
* will call us again if there are more interrupts to process.
|
||||
*/
|
||||
static void
|
||||
sa1111_irq_handler(unsigned int irq, struct irqdesc *desc)
|
||||
sa1111_irq_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
unsigned int stat0, stat1, i;
|
||||
void __iomem *base = get_irq_data(irq);
|
||||
|
|
@ -187,7 +187,7 @@ static void sa1111_ack_irq(unsigned int irq)
|
|||
|
||||
static void sa1111_mask_lowirq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ie0;
|
||||
|
||||
ie0 = sa1111_readl(mapbase + SA1111_INTEN0);
|
||||
|
|
@ -197,7 +197,7 @@ static void sa1111_mask_lowirq(unsigned int irq)
|
|||
|
||||
static void sa1111_unmask_lowirq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ie0;
|
||||
|
||||
ie0 = sa1111_readl(mapbase + SA1111_INTEN0);
|
||||
|
|
@ -215,7 +215,7 @@ static void sa1111_unmask_lowirq(unsigned int irq)
|
|||
static int sa1111_retrigger_lowirq(unsigned int irq)
|
||||
{
|
||||
unsigned int mask = SA1111_IRQMASK_LO(irq);
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ip0;
|
||||
int i;
|
||||
|
||||
|
|
@ -236,7 +236,7 @@ static int sa1111_retrigger_lowirq(unsigned int irq)
|
|||
static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
|
||||
{
|
||||
unsigned int mask = SA1111_IRQMASK_LO(irq);
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ip0;
|
||||
|
||||
if (flags == IRQT_PROBE)
|
||||
|
|
@ -259,7 +259,7 @@ static int sa1111_type_lowirq(unsigned int irq, unsigned int flags)
|
|||
static int sa1111_wake_lowirq(unsigned int irq, unsigned int on)
|
||||
{
|
||||
unsigned int mask = SA1111_IRQMASK_LO(irq);
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long we0;
|
||||
|
||||
we0 = sa1111_readl(mapbase + SA1111_WAKEEN0);
|
||||
|
|
@ -284,7 +284,7 @@ static struct irq_chip sa1111_low_chip = {
|
|||
|
||||
static void sa1111_mask_highirq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ie1;
|
||||
|
||||
ie1 = sa1111_readl(mapbase + SA1111_INTEN1);
|
||||
|
|
@ -294,7 +294,7 @@ static void sa1111_mask_highirq(unsigned int irq)
|
|||
|
||||
static void sa1111_unmask_highirq(unsigned int irq)
|
||||
{
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ie1;
|
||||
|
||||
ie1 = sa1111_readl(mapbase + SA1111_INTEN1);
|
||||
|
|
@ -312,7 +312,7 @@ static void sa1111_unmask_highirq(unsigned int irq)
|
|||
static int sa1111_retrigger_highirq(unsigned int irq)
|
||||
{
|
||||
unsigned int mask = SA1111_IRQMASK_HI(irq);
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ip1;
|
||||
int i;
|
||||
|
||||
|
|
@ -333,7 +333,7 @@ static int sa1111_retrigger_highirq(unsigned int irq)
|
|||
static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
|
||||
{
|
||||
unsigned int mask = SA1111_IRQMASK_HI(irq);
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long ip1;
|
||||
|
||||
if (flags == IRQT_PROBE)
|
||||
|
|
@ -356,7 +356,7 @@ static int sa1111_type_highirq(unsigned int irq, unsigned int flags)
|
|||
static int sa1111_wake_highirq(unsigned int irq, unsigned int on)
|
||||
{
|
||||
unsigned int mask = SA1111_IRQMASK_HI(irq);
|
||||
void __iomem *mapbase = get_irq_chipdata(irq);
|
||||
void __iomem *mapbase = get_irq_chip_data(irq);
|
||||
unsigned long we1;
|
||||
|
||||
we1 = sa1111_readl(mapbase + SA1111_WAKEEN1);
|
||||
|
|
@ -410,15 +410,15 @@ static void sa1111_setup_irq(struct sa1111 *sachip)
|
|||
|
||||
for (irq = IRQ_GPAIN0; irq <= SSPROR; irq++) {
|
||||
set_irq_chip(irq, &sa1111_low_chip);
|
||||
set_irq_chipdata(irq, irqbase);
|
||||
set_irq_handler(irq, do_edge_IRQ);
|
||||
set_irq_chip_data(irq, irqbase);
|
||||
set_irq_handler(irq, handle_edge_irq);
|
||||
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
|
||||
}
|
||||
|
||||
for (irq = AUDXMTDMADONEA; irq <= IRQ_S1_BVD1_STSCHG; irq++) {
|
||||
set_irq_chip(irq, &sa1111_high_chip);
|
||||
set_irq_chipdata(irq, irqbase);
|
||||
set_irq_handler(irq, do_edge_IRQ);
|
||||
set_irq_chip_data(irq, irqbase);
|
||||
set_irq_handler(irq, handle_edge_irq);
|
||||
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -60,16 +60,16 @@ static int sharpsl_ac_check(void);
|
|||
static int sharpsl_fatal_check(void);
|
||||
static int sharpsl_average_value(int ad);
|
||||
static void sharpsl_average_clear(void);
|
||||
static void sharpsl_charge_toggle(void *private_);
|
||||
static void sharpsl_battery_thread(void *private_);
|
||||
static void sharpsl_charge_toggle(struct work_struct *private_);
|
||||
static void sharpsl_battery_thread(struct work_struct *private_);
|
||||
|
||||
|
||||
/*
|
||||
* Variables
|
||||
*/
|
||||
struct sharpsl_pm_status sharpsl_pm;
|
||||
DECLARE_WORK(toggle_charger, sharpsl_charge_toggle, NULL);
|
||||
DECLARE_WORK(sharpsl_bat, sharpsl_battery_thread, NULL);
|
||||
DECLARE_DELAYED_WORK(toggle_charger, sharpsl_charge_toggle);
|
||||
DECLARE_DELAYED_WORK(sharpsl_bat, sharpsl_battery_thread);
|
||||
DEFINE_LED_TRIGGER(sharpsl_charge_led_trigger);
|
||||
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ void sharpsl_battery_kick(void)
|
|||
EXPORT_SYMBOL(sharpsl_battery_kick);
|
||||
|
||||
|
||||
static void sharpsl_battery_thread(void *private_)
|
||||
static void sharpsl_battery_thread(struct work_struct *private_)
|
||||
{
|
||||
int voltage, percent, apm_status, i = 0;
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ static void sharpsl_battery_thread(void *private_)
|
|||
/* Corgi cannot confirm when battery fully charged so periodically kick! */
|
||||
if (!sharpsl_pm.machinfo->batfull_irq && (sharpsl_pm.charge_mode == CHRG_ON)
|
||||
&& time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_ON_TIME_INTERVAL))
|
||||
schedule_work(&toggle_charger);
|
||||
schedule_delayed_work(&toggle_charger, 0);
|
||||
|
||||
while(1) {
|
||||
voltage = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
|
||||
|
|
@ -212,7 +212,7 @@ static void sharpsl_charge_off(void)
|
|||
sharpsl_pm_led(SHARPSL_LED_OFF);
|
||||
sharpsl_pm.charge_mode = CHRG_OFF;
|
||||
|
||||
schedule_work(&sharpsl_bat);
|
||||
schedule_delayed_work(&sharpsl_bat, 0);
|
||||
}
|
||||
|
||||
static void sharpsl_charge_error(void)
|
||||
|
|
@ -222,7 +222,7 @@ static void sharpsl_charge_error(void)
|
|||
sharpsl_pm.charge_mode = CHRG_ERROR;
|
||||
}
|
||||
|
||||
static void sharpsl_charge_toggle(void *private_)
|
||||
static void sharpsl_charge_toggle(struct work_struct *private_)
|
||||
{
|
||||
dev_dbg(sharpsl_pm.dev, "Toogling Charger at time: %lx\n", jiffies);
|
||||
|
||||
|
|
@ -254,7 +254,7 @@ static void sharpsl_ac_timer(unsigned long data)
|
|||
else if (sharpsl_pm.charge_mode == CHRG_ON)
|
||||
sharpsl_charge_off();
|
||||
|
||||
schedule_work(&sharpsl_bat);
|
||||
schedule_delayed_work(&sharpsl_bat, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -279,10 +279,10 @@ static void sharpsl_chrg_full_timer(unsigned long data)
|
|||
sharpsl_charge_off();
|
||||
} else if (sharpsl_pm.full_count < 2) {
|
||||
dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n");
|
||||
schedule_work(&toggle_charger);
|
||||
schedule_delayed_work(&toggle_charger, 0);
|
||||
} else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) {
|
||||
dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n");
|
||||
schedule_work(&toggle_charger);
|
||||
schedule_delayed_work(&toggle_charger, 0);
|
||||
} else {
|
||||
sharpsl_charge_off();
|
||||
sharpsl_pm.charge_mode = CHRG_DONE;
|
||||
|
|
|
|||
|
|
@ -27,14 +27,14 @@
|
|||
|
||||
static void vic_mask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *base = get_irq_chipdata(irq);
|
||||
void __iomem *base = get_irq_chip_data(irq);
|
||||
irq &= 31;
|
||||
writel(1 << irq, base + VIC_INT_ENABLE_CLEAR);
|
||||
}
|
||||
|
||||
static void vic_unmask_irq(unsigned int irq)
|
||||
{
|
||||
void __iomem *base = get_irq_chipdata(irq);
|
||||
void __iomem *base = get_irq_chip_data(irq);
|
||||
irq &= 31;
|
||||
writel(1 << irq, base + VIC_INT_ENABLE);
|
||||
}
|
||||
|
|
@ -88,10 +88,10 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,
|
|||
unsigned int irq = irq_start + i;
|
||||
|
||||
set_irq_chip(irq, &vic_chip);
|
||||
set_irq_chipdata(irq, base);
|
||||
set_irq_chip_data(irq, base);
|
||||
|
||||
if (vic_sources & (1 << i)) {
|
||||
set_irq_handler(irq, do_level_IRQ);
|
||||
set_irq_handler(irq, handle_level_irq);
|
||||
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -357,9 +357,9 @@ CONFIG_MTD_CFI_UTIL=y
|
|||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_START=0x10000000
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x200000
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
||||
CONFIG_MTD_PHYSMAP_START=0
|
||||
CONFIG_MTD_PHYSMAP_LEN=0
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=0
|
||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||
# CONFIG_MTD_IMPA7 is not set
|
||||
# CONFIG_MTD_PLATRAM 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
|
||||
|
|
@ -585,7 +585,9 @@ CONFIG_AT91_WATCHDOG=y
|
|||
# CONFIG_USBPCWATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_AT91_RTC=y
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_AT91RM9200=y
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
|
|
@ -979,7 +981,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
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
|
||||
|
|
|
|||
|
|
@ -348,9 +348,9 @@ CONFIG_MTD_CFI_UTIL=y
|
|||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_START=0x10000000
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x800000
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
||||
CONFIG_MTD_PHYSMAP_START=0
|
||||
CONFIG_MTD_PHYSMAP_LEN=0
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=0
|
||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
||||
# CONFIG_MTD_IMPA7 is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
|
@ -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
|
||||
|
|
@ -566,7 +566,9 @@ CONFIG_AT91_WATCHDOG=y
|
|||
# CONFIG_USBPCWATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_RTC is not set
|
||||
CONFIG_AT91_RTC=y
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_DRV_AT91RM9200=y
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
|
|
@ -968,7 +970,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
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
|
||||
|
|
|
|||
950
arch/arm/configs/at91sam9260ek_defconfig
Normal file
950
arch/arm/configs/at91sam9260ek_defconfig
Normal file
|
|
@ -0,0 +1,950 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.19-rc6
|
||||
# Fri Nov 17 18:42:21 2006
|
||||
#
|
||||
CONFIG_ARM=y
|
||||
# CONFIG_GENERIC_TIME is not set
|
||||
CONFIG_MMU=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
CONFIG_HARDIRQS_SW_RESEND=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_VECTORS_BASE=0xffff0000
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# Code maturity level options
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
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_SYSCALL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
# CONFIG_KALLSYMS_ALL is not set
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
# CONFIG_TINY_SHMEM is not set
|
||||
CONFIG_BASE_SMALL=0
|
||||
# CONFIG_SLOB is not set
|
||||
|
||||
#
|
||||
# Loadable module support
|
||||
#
|
||||
CONFIG_MODULES=y
|
||||
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
|
||||
|
||||
#
|
||||
# Block layer
|
||||
#
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
CONFIG_IOSCHED_AS=y
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_DEFAULT_AS=y
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
# CONFIG_DEFAULT_CFQ is not set
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="anticipatory"
|
||||
|
||||
#
|
||||
# System Type
|
||||
#
|
||||
# CONFIG_ARCH_AAEC2000 is not set
|
||||
# CONFIG_ARCH_INTEGRATOR is not set
|
||||
# CONFIG_ARCH_REALVIEW is not set
|
||||
# CONFIG_ARCH_VERSATILE is not set
|
||||
CONFIG_ARCH_AT91=y
|
||||
# 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_EP93XX is not set
|
||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
||||
# CONFIG_ARCH_NETX is not set
|
||||
# CONFIG_ARCH_H720X is not set
|
||||
# CONFIG_ARCH_IMX is not set
|
||||
# CONFIG_ARCH_IOP32X is not set
|
||||
# CONFIG_ARCH_IOP33X is not set
|
||||
# CONFIG_ARCH_IXP4XX is not set
|
||||
# CONFIG_ARCH_IXP2000 is not set
|
||||
# CONFIG_ARCH_IXP23XX is not set
|
||||
# CONFIG_ARCH_L7200 is not set
|
||||
# CONFIG_ARCH_PNX4008 is not set
|
||||
# CONFIG_ARCH_PXA is not set
|
||||
# CONFIG_ARCH_RPC is not set
|
||||
# CONFIG_ARCH_SA1100 is not set
|
||||
# CONFIG_ARCH_S3C2410 is not set
|
||||
# CONFIG_ARCH_SHARK is not set
|
||||
# CONFIG_ARCH_LH7A40X is not set
|
||||
# CONFIG_ARCH_OMAP is not set
|
||||
|
||||
#
|
||||
# Atmel AT91 System-on-Chip
|
||||
#
|
||||
# CONFIG_ARCH_AT91RM9200 is not set
|
||||
CONFIG_ARCH_AT91SAM9260=y
|
||||
# CONFIG_ARCH_AT91SAM9261 is not set
|
||||
|
||||
#
|
||||
# AT91SAM9260 Board Type
|
||||
#
|
||||
CONFIG_MACH_AT91SAM9260EK=y
|
||||
|
||||
#
|
||||
# AT91 Board Options
|
||||
#
|
||||
# CONFIG_MTD_NAND_AT91_BUSWIDTH_16 is not set
|
||||
|
||||
#
|
||||
# AT91 Feature Selections
|
||||
#
|
||||
# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
|
||||
|
||||
#
|
||||
# Processor Type
|
||||
#
|
||||
CONFIG_CPU_32=y
|
||||
CONFIG_CPU_ARM926T=y
|
||||
CONFIG_CPU_32v5=y
|
||||
CONFIG_CPU_ABRT_EV5TJ=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
|
||||
#
|
||||
# CONFIG_ARM_THUMB is not set
|
||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
||||
# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
|
||||
|
||||
#
|
||||
# Bus support
|
||||
#
|
||||
|
||||
#
|
||||
# PCCARD (PCMCIA/CardBus) support
|
||||
#
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Kernel Features
|
||||
#
|
||||
# CONFIG_PREEMPT is not set
|
||||
# CONFIG_NO_IDLE_HZ is not set
|
||||
CONFIG_HZ=100
|
||||
# CONFIG_AEABI is not set
|
||||
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
# CONFIG_SPARSEMEM_STATIC is not set
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4096
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
# CONFIG_LEDS is not set
|
||||
CONFIG_ALIGNMENT_TRAP=y
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,3145728 root=/dev/ram0 rw"
|
||||
# CONFIG_XIP_KERNEL is not set
|
||||
|
||||
#
|
||||
# Floating point emulation
|
||||
#
|
||||
|
||||
#
|
||||
# At least one emulation must be selected
|
||||
#
|
||||
CONFIG_FPE_NWFPE=y
|
||||
# CONFIG_FPE_NWFPE_XP is not set
|
||||
# CONFIG_FPE_FASTFPE is not set
|
||||
# CONFIG_VFP is not set
|
||||
|
||||
#
|
||||
# Userspace binary formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_BINFMT_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
# CONFIG_ARTHUR is not set
|
||||
|
||||
#
|
||||
# Power management options
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_APM is not set
|
||||
|
||||
#
|
||||
# Networking
|
||||
#
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
# CONFIG_NETDEBUG is not set
|
||||
CONFIG_PACKET=y
|
||||
# CONFIG_PACKET_MMAP is not set
|
||||
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
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
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_XFRM_TUNNEL is not set
|
||||
# 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_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
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
|
||||
#
|
||||
# DCCP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_DCCP is not set
|
||||
|
||||
#
|
||||
# SCTP Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_IP_SCTP is not set
|
||||
|
||||
#
|
||||
# TIPC Configuration (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_TIPC 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_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
|
||||
#
|
||||
# QoS and/or fair queueing
|
||||
#
|
||||
# CONFIG_NET_SCHED is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_IEEE80211 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
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
|
||||
#
|
||||
# Connector - unified userspace <-> kernelspace linker
|
||||
#
|
||||
# CONFIG_CONNECTOR is not set
|
||||
|
||||
#
|
||||
# Memory Technology Devices (MTD)
|
||||
#
|
||||
# CONFIG_MTD is not set
|
||||
|
||||
#
|
||||
# Parallel port support
|
||||
#
|
||||
# CONFIG_PARPORT is not set
|
||||
|
||||
#
|
||||
# Plug and Play support
|
||||
#
|
||||
|
||||
#
|
||||
# Block devices
|
||||
#
|
||||
# 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_UB is not set
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
CONFIG_SCSI=y
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
CONFIG_SCSI_PROC_FS=y
|
||||
|
||||
#
|
||||
# SCSI support type (disk, tape, CD-ROM)
|
||||
#
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
# CONFIG_CHR_DEV_ST is not set
|
||||
# CONFIG_CHR_DEV_OSST is not set
|
||||
# CONFIG_BLK_DEV_SR is not set
|
||||
# CONFIG_CHR_DEV_SG is not set
|
||||
# CONFIG_CHR_DEV_SCH is not set
|
||||
|
||||
#
|
||||
# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
|
||||
#
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
# CONFIG_SCSI_CONSTANTS is not set
|
||||
# CONFIG_SCSI_LOGGING is not set
|
||||
|
||||
#
|
||||
# SCSI Transports
|
||||
#
|
||||
# CONFIG_SCSI_SPI_ATTRS is not set
|
||||
# CONFIG_SCSI_FC_ATTRS is not set
|
||||
# CONFIG_SCSI_ISCSI_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_ATTRS is not set
|
||||
# CONFIG_SCSI_SAS_LIBSAS is not set
|
||||
|
||||
#
|
||||
# SCSI low-level drivers
|
||||
#
|
||||
# CONFIG_ISCSI_TCP is not set
|
||||
# CONFIG_SCSI_DEBUG is not set
|
||||
|
||||
#
|
||||
# Multi-device support (RAID and LVM)
|
||||
#
|
||||
# CONFIG_MD is not set
|
||||
|
||||
#
|
||||
# Fusion MPT device support
|
||||
#
|
||||
# CONFIG_FUSION is not set
|
||||
|
||||
#
|
||||
# IEEE 1394 (FireWire) support
|
||||
#
|
||||
|
||||
#
|
||||
# I2O device support
|
||||
#
|
||||
|
||||
#
|
||||
# Network device support
|
||||
#
|
||||
# CONFIG_NETDEVICES is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
|
||||
#
|
||||
# ISDN subsystem
|
||||
#
|
||||
# CONFIG_ISDN is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
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 is not set
|
||||
# CONFIG_INPUT_MOUSE 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 is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_ATMEL=y
|
||||
CONFIG_SERIAL_ATMEL_CONSOLE=y
|
||||
# CONFIG_SERIAL_ATMEL_TTYAT is not set
|
||||
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=y
|
||||
CONFIG_WATCHDOG_NOWAYOUT=y
|
||||
|
||||
#
|
||||
# Watchdog Device Drivers
|
||||
#
|
||||
# CONFIG_SOFT_WATCHDOG is not set
|
||||
|
||||
#
|
||||
# USB-based Watchdog Cards
|
||||
#
|
||||
# CONFIG_USBPCWATCHDOG is not set
|
||||
CONFIG_HW_RANDOM=y
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
#
|
||||
# Ftape, the floppy tape device driver
|
||||
#
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
|
||||
#
|
||||
# TPM devices
|
||||
#
|
||||
# CONFIG_TCG_TPM is not set
|
||||
|
||||
#
|
||||
# I2C support
|
||||
#
|
||||
# CONFIG_I2C is not set
|
||||
|
||||
#
|
||||
# SPI support
|
||||
#
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_SPI_MASTER is not set
|
||||
|
||||
#
|
||||
# Dallas's 1-wire bus
|
||||
#
|
||||
# CONFIG_W1 is not set
|
||||
|
||||
#
|
||||
# Hardware Monitoring support
|
||||
#
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_HWMON_VID is not set
|
||||
|
||||
#
|
||||
# Misc devices
|
||||
#
|
||||
# CONFIG_TIFM_CORE is not set
|
||||
|
||||
#
|
||||
# LED devices
|
||||
#
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
|
||||
#
|
||||
# LED drivers
|
||||
#
|
||||
|
||||
#
|
||||
# LED Triggers
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
|
||||
#
|
||||
# Digital Video Broadcasting Devices
|
||||
#
|
||||
# CONFIG_DVB is not set
|
||||
# CONFIG_USB_DABUSB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_FIRMWARE_EDID is not set
|
||||
# CONFIG_FB is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
# 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=y
|
||||
# CONFIG_USB_ARCH_HAS_EHCI is not set
|
||||
CONFIG_USB=y
|
||||
# CONFIG_USB_DEBUG is not set
|
||||
|
||||
#
|
||||
# Miscellaneous USB options
|
||||
#
|
||||
CONFIG_USB_DEVICEFS=y
|
||||
# CONFIG_USB_BANDWIDTH is not set
|
||||
# CONFIG_USB_DYNAMIC_MINORS is not set
|
||||
# CONFIG_USB_OTG is not set
|
||||
|
||||
#
|
||||
# USB Host Controller Drivers
|
||||
#
|
||||
# CONFIG_USB_ISP116X_HCD is not set
|
||||
CONFIG_USB_OHCI_HCD=y
|
||||
# CONFIG_USB_OHCI_BIG_ENDIAN is not set
|
||||
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||
# CONFIG_USB_SL811_HCD is not set
|
||||
|
||||
#
|
||||
# USB Device Class drivers
|
||||
#
|
||||
# CONFIG_USB_ACM is not set
|
||||
# CONFIG_USB_PRINTER is not set
|
||||
|
||||
#
|
||||
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
|
||||
#
|
||||
|
||||
#
|
||||
# may also be needed; see USB_STORAGE Help for more information
|
||||
#
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_USB_STORAGE_DEBUG=y
|
||||
# CONFIG_USB_STORAGE_DATAFAB is not set
|
||||
# CONFIG_USB_STORAGE_FREECOM is not set
|
||||
# CONFIG_USB_STORAGE_DPCM is not set
|
||||
# CONFIG_USB_STORAGE_USBAT is not set
|
||||
# CONFIG_USB_STORAGE_SDDR09 is not set
|
||||
# CONFIG_USB_STORAGE_SDDR55 is not set
|
||||
# CONFIG_USB_STORAGE_JUMPSHOT is not set
|
||||
# CONFIG_USB_STORAGE_ALAUDA is not set
|
||||
# CONFIG_USB_STORAGE_KARMA is not set
|
||||
# CONFIG_USB_LIBUSUAL is not set
|
||||
|
||||
#
|
||||
# USB Input Devices
|
||||
#
|
||||
# CONFIG_USB_HID is not set
|
||||
|
||||
#
|
||||
# USB HID Boot Protocol drivers
|
||||
#
|
||||
# CONFIG_USB_KBD is not set
|
||||
# CONFIG_USB_MOUSE is not set
|
||||
# CONFIG_USB_AIPTEK is not set
|
||||
# CONFIG_USB_WACOM is not set
|
||||
# CONFIG_USB_ACECAD is not set
|
||||
# CONFIG_USB_KBTAB is not set
|
||||
# CONFIG_USB_POWERMATE is not set
|
||||
# CONFIG_USB_TOUCHSCREEN is not set
|
||||
# CONFIG_USB_YEALINK is not set
|
||||
# CONFIG_USB_XPAD is not set
|
||||
# CONFIG_USB_ATI_REMOTE is not set
|
||||
# CONFIG_USB_ATI_REMOTE2 is not set
|
||||
# CONFIG_USB_KEYSPAN_REMOTE is not set
|
||||
# CONFIG_USB_APPLETOUCH is not set
|
||||
|
||||
#
|
||||
# USB Imaging devices
|
||||
#
|
||||
# CONFIG_USB_MDC800 is not set
|
||||
# CONFIG_USB_MICROTEK is not set
|
||||
|
||||
#
|
||||
# USB Network Adapters
|
||||
#
|
||||
# CONFIG_USB_CATC is not set
|
||||
# CONFIG_USB_KAWETH is not set
|
||||
# CONFIG_USB_PEGASUS is not set
|
||||
# CONFIG_USB_RTL8150 is not set
|
||||
# CONFIG_USB_USBNET_MII is not set
|
||||
# CONFIG_USB_USBNET is not set
|
||||
CONFIG_USB_MON=y
|
||||
|
||||
#
|
||||
# USB port drivers
|
||||
#
|
||||
|
||||
#
|
||||
# USB Serial Converter support
|
||||
#
|
||||
# CONFIG_USB_SERIAL is not set
|
||||
|
||||
#
|
||||
# USB Miscellaneous drivers
|
||||
#
|
||||
# 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
|
||||
# CONFIG_USB_LCD is not set
|
||||
# CONFIG_USB_LED is not set
|
||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||
# CONFIG_USB_CYTHERM 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
|
||||
|
||||
#
|
||||
# USB DSL modem support
|
||||
#
|
||||
|
||||
#
|
||||
# USB Gadget Support
|
||||
#
|
||||
CONFIG_USB_GADGET=y
|
||||
# CONFIG_USB_GADGET_DEBUG_FILES is not set
|
||||
CONFIG_USB_GADGET_SELECTED=y
|
||||
# CONFIG_USB_GADGET_NET2280 is not set
|
||||
# CONFIG_USB_GADGET_PXA2XX is not set
|
||||
# CONFIG_USB_GADGET_GOKU is not set
|
||||
# CONFIG_USB_GADGET_LH7A40X is not set
|
||||
# CONFIG_USB_GADGET_OMAP is not set
|
||||
CONFIG_USB_GADGET_AT91=y
|
||||
CONFIG_USB_AT91=y
|
||||
# CONFIG_USB_GADGET_DUMMY_HCD is not set
|
||||
# CONFIG_USB_GADGET_DUALSPEED is not set
|
||||
CONFIG_USB_ZERO=m
|
||||
# CONFIG_USB_ETH is not set
|
||||
CONFIG_USB_GADGETFS=m
|
||||
CONFIG_USB_FILE_STORAGE=m
|
||||
# CONFIG_USB_FILE_STORAGE_TEST is not set
|
||||
CONFIG_USB_G_SERIAL=m
|
||||
# CONFIG_USB_MIDI_GADGET is not set
|
||||
|
||||
#
|
||||
# MMC/SD Card support
|
||||
#
|
||||
# CONFIG_MMC is not set
|
||||
|
||||
#
|
||||
# Real Time Clock
|
||||
#
|
||||
CONFIG_RTC_LIB=y
|
||||
# CONFIG_RTC_CLASS is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
CONFIG_EXT2_FS=y
|
||||
# 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 is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
CONFIG_INOTIFY=y
|
||||
CONFIG_INOTIFY_USER=y
|
||||
# CONFIG_QUOTA is not set
|
||||
CONFIG_DNOTIFY=y
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_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_FAT_FS=y
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_FAT_DEFAULT_CODEPAGE=437
|
||||
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=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 is not set
|
||||
|
||||
#
|
||||
# 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_CRAMFS=y
|
||||
# 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 is not set
|
||||
# CONFIG_NFSD 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
|
||||
# CONFIG_9P_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
|
||||
#
|
||||
# Native Language Support
|
||||
#
|
||||
CONFIG_NLS=y
|
||||
CONFIG_NLS_DEFAULT="iso8859-1"
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
# CONFIG_NLS_CODEPAGE_737 is not set
|
||||
# CONFIG_NLS_CODEPAGE_775 is not set
|
||||
CONFIG_NLS_CODEPAGE_850=y
|
||||
# CONFIG_NLS_CODEPAGE_852 is not set
|
||||
# CONFIG_NLS_CODEPAGE_855 is not set
|
||||
# CONFIG_NLS_CODEPAGE_857 is not set
|
||||
# CONFIG_NLS_CODEPAGE_860 is not set
|
||||
# CONFIG_NLS_CODEPAGE_861 is not set
|
||||
# CONFIG_NLS_CODEPAGE_862 is not set
|
||||
# CONFIG_NLS_CODEPAGE_863 is not set
|
||||
# CONFIG_NLS_CODEPAGE_864 is not set
|
||||
# CONFIG_NLS_CODEPAGE_865 is not set
|
||||
# CONFIG_NLS_CODEPAGE_866 is not set
|
||||
# CONFIG_NLS_CODEPAGE_869 is not set
|
||||
# CONFIG_NLS_CODEPAGE_936 is not set
|
||||
# CONFIG_NLS_CODEPAGE_950 is not set
|
||||
# CONFIG_NLS_CODEPAGE_932 is not set
|
||||
# CONFIG_NLS_CODEPAGE_949 is not set
|
||||
# CONFIG_NLS_CODEPAGE_874 is not set
|
||||
# CONFIG_NLS_ISO8859_8 is not set
|
||||
# CONFIG_NLS_CODEPAGE_1250 is not set
|
||||
# CONFIG_NLS_CODEPAGE_1251 is not set
|
||||
# CONFIG_NLS_ASCII is not set
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
# CONFIG_NLS_ISO8859_2 is not set
|
||||
# CONFIG_NLS_ISO8859_3 is not set
|
||||
# CONFIG_NLS_ISO8859_4 is not set
|
||||
# CONFIG_NLS_ISO8859_5 is not set
|
||||
# CONFIG_NLS_ISO8859_6 is not set
|
||||
# CONFIG_NLS_ISO8859_7 is not set
|
||||
# CONFIG_NLS_ISO8859_9 is not set
|
||||
# CONFIG_NLS_ISO8859_13 is not set
|
||||
# CONFIG_NLS_ISO8859_14 is not set
|
||||
# CONFIG_NLS_ISO8859_15 is not set
|
||||
# CONFIG_NLS_KOI8_R is not set
|
||||
# CONFIG_NLS_KOI8_U is not set
|
||||
# CONFIG_NLS_UTF8 is not set
|
||||
|
||||
#
|
||||
# Profiling support
|
||||
#
|
||||
# CONFIG_PROFILING is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# 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
|
||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS 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_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
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
|
||||
# CONFIG_DEBUG_ERRORS is not set
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
|
||||
#
|
||||
# Cryptographic options
|
||||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_PLIST=y
|
||||
1106
arch/arm/configs/at91sam9261ek_defconfig
Normal file
1106
arch/arm/configs/at91sam9261ek_defconfig
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -1216,7 +1216,6 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -474,7 +474,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_AT91_RTC is not set
|
||||
# CONFIG_AT91RM9200_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 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
|
||||
|
||||
#
|
||||
|
|
@ -850,7 +851,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC 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
|
||||
|
||||
|
|
@ -934,7 +934,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ CONFIG_BINFMT_MISC=m
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
|
@ -1512,7 +1513,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -1113,7 +1113,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -623,7 +623,7 @@ CONFIG_AT91_WATCHDOG=y
|
|||
# CONFIG_USBPCWATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
CONFIG_RTC=y
|
||||
# CONFIG_AT91_RTC is not set
|
||||
# CONFIG_AT91RM9200_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
|
|
@ -1062,7 +1062,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
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
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ CONFIG_CRUNCH=y
|
|||
#
|
||||
# EP93xx Platforms
|
||||
#
|
||||
CONFIG_MACH_ADSSPHERE=y
|
||||
CONFIG_MACH_EDB9302=y
|
||||
CONFIG_MACH_EDB9312=y
|
||||
CONFIG_MACH_EDB9315=y
|
||||
|
|
@ -1134,7 +1135,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_USER=y
|
||||
CONFIG_DEBUG_WAITQ=y
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC 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
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -702,7 +702,6 @@ CONFIG_DEBUG_INFO=y
|
|||
# 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 is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -740,7 +740,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
CONFIG_DEBUG_WAITQ=y
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC 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
|
||||
|
||||
#
|
||||
|
|
@ -834,7 +835,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
1134
arch/arm/configs/iop13xx_defconfig
Normal file
1134
arch/arm/configs/iop13xx_defconfig
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -1204,7 +1204,6 @@ CONFIG_FRAME_POINTER=y
|
|||
# CONFIG_FORCED_INLINING is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1051,7 +1051,6 @@ CONFIG_FRAME_POINTER=y
|
|||
# CONFIG_FORCED_INLINING is not set
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
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
|
||||
|
|
|
|||
|
|
@ -1026,7 +1026,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -1305,7 +1305,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC 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
|
||||
|
|
@ -1245,7 +1243,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
#
|
||||
|
|
@ -888,7 +889,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ CONFIG_LEGACY_PTY_COUNT=256
|
|||
# CONFIG_WATCHDOG is not set
|
||||
# CONFIG_NVRAM is not set
|
||||
# CONFIG_RTC is not set
|
||||
# CONFIG_AT91_RTC is not set
|
||||
# CONFIG_AT91RM9200_RTC is not set
|
||||
# CONFIG_DTLK is not set
|
||||
# CONFIG_R3964 is not set
|
||||
|
||||
|
|
@ -753,7 +753,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC 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
|
||||
|
||||
#
|
||||
|
|
|
|||
|
|
@ -949,7 +949,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -850,7 +850,6 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -1100,7 +1100,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -772,7 +772,6 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -766,7 +766,6 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -691,7 +691,6 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@ CONFIG_BINFMT_AOUT=y
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
|
@ -1114,7 +1115,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -994,7 +994,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# 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 is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -872,7 +872,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -1045,7 +1045,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
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
|
||||
|
|
|
|||
|
|
@ -721,7 +721,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
# CONFIG_DEBUG_ERRORS is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -1604,7 +1604,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
# CONFIG_DEBUG_ERRORS is not set
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -768,7 +768,6 @@ CONFIG_DEBUG_INFO=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -759,7 +759,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
# CONFIG_DEBUG_LL is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -910,7 +910,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -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,12 +1313,12 @@ 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
|
||||
# CONFIG_DEBUG_ERRORS is not set
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
@ -1261,10 +1336,6 @@ CONFIG_DEBUG_S3C2410_UART=0
|
|||
#
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Hardware crypto devices
|
||||
#
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
|
|
|
|||
|
|
@ -965,7 +965,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# 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 is not set
|
||||
|
||||
|
|
|
|||
|
|
@ -180,6 +180,7 @@ CONFIG_BINFMT_MISC=m
|
|||
# Power management options
|
||||
#
|
||||
CONFIG_PM=y
|
||||
# CONFIG_PM_LEGACY is not set
|
||||
CONFIG_APM=y
|
||||
|
||||
#
|
||||
|
|
@ -933,7 +934,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
# CONFIG_DEBUG_FS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
#
|
||||
|
|
@ -1405,7 +1406,6 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_DEBUG_USER is not set
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -972,7 +972,6 @@ CONFIG_FRAME_POINTER=y
|
|||
CONFIG_FORCED_INLINING=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
CONFIG_DEBUG_USER=y
|
||||
# CONFIG_DEBUG_WAITQ is not set
|
||||
CONFIG_DEBUG_ERRORS=y
|
||||
CONFIG_DEBUG_LL=y
|
||||
# CONFIG_DEBUG_ICEDCC is not set
|
||||
|
|
|
|||
|
|
@ -24,7 +24,9 @@ obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o
|
|||
obj-$(CONFIG_CRUNCH) += crunch.o crunch-bits.o
|
||||
AFLAGS_crunch-bits.o := -Wa,-mcpu=ep9312
|
||||
|
||||
obj-$(CONFIG_IWMMXT) += iwmmxt.o iwmmxt-notifier.o
|
||||
obj-$(CONFIG_CPU_XSCALE) += xscale-cp0.o
|
||||
obj-$(CONFIG_CPU_XSC3) += xscale-cp0.o
|
||||
obj-$(CONFIG_IWMMXT) += iwmmxt.o
|
||||
AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
|
||||
|
||||
ifneq ($(CONFIG_ARCH_EBSA110),y)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/miscdevice.h>
|
||||
|
|
@ -26,6 +25,7 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/completion.h>
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <asm/apm.h> /* apm_power_info */
|
||||
#include <asm/system.h>
|
||||
|
|
@ -71,7 +71,8 @@ struct apm_user {
|
|||
#define SUSPEND_PENDING 1 /* suspend pending read */
|
||||
#define SUSPEND_READ 2 /* suspend read, pending ack */
|
||||
#define SUSPEND_ACKED 3 /* suspend acked */
|
||||
#define SUSPEND_DONE 4 /* suspend completed */
|
||||
#define SUSPEND_WAIT 4 /* waiting for suspend */
|
||||
#define SUSPEND_DONE 5 /* suspend completed */
|
||||
|
||||
struct apm_queue queue;
|
||||
};
|
||||
|
|
@ -101,6 +102,7 @@ static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait);
|
|||
static DEFINE_SPINLOCK(kapmd_queue_lock);
|
||||
static struct apm_queue kapmd_queue;
|
||||
|
||||
static DEFINE_MUTEX(state_lock);
|
||||
|
||||
static const char driver_version[] = "1.13"; /* no spaces */
|
||||
|
||||
|
|
@ -148,40 +150,62 @@ static void queue_add_event(struct apm_queue *q, apm_event_t event)
|
|||
q->events[q->event_head] = event;
|
||||
}
|
||||
|
||||
static void queue_event_one_user(struct apm_user *as, apm_event_t event)
|
||||
{
|
||||
if (as->suser && as->writer) {
|
||||
switch (event) {
|
||||
case APM_SYS_SUSPEND:
|
||||
case APM_USER_SUSPEND:
|
||||
/*
|
||||
* If this user already has a suspend pending,
|
||||
* don't queue another one.
|
||||
*/
|
||||
if (as->suspend_state != SUSPEND_NONE)
|
||||
return;
|
||||
|
||||
as->suspend_state = SUSPEND_PENDING;
|
||||
suspends_pending++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
queue_add_event(&as->queue, event);
|
||||
}
|
||||
|
||||
static void queue_event(apm_event_t event, struct apm_user *sender)
|
||||
static void queue_event(apm_event_t event)
|
||||
{
|
||||
struct apm_user *as;
|
||||
|
||||
down_read(&user_list_lock);
|
||||
list_for_each_entry(as, &apm_user_list, list) {
|
||||
if (as != sender && as->reader)
|
||||
queue_event_one_user(as, event);
|
||||
if (as->reader)
|
||||
queue_add_event(&as->queue, event);
|
||||
}
|
||||
up_read(&user_list_lock);
|
||||
wake_up_interruptible(&apm_waitqueue);
|
||||
}
|
||||
|
||||
/*
|
||||
* queue_suspend_event - queue an APM suspend event.
|
||||
*
|
||||
* Check that we're in a state where we can suspend. If not,
|
||||
* return -EBUSY. Otherwise, queue an event to all "writer"
|
||||
* users. If there are no "writer" users, return '1' to
|
||||
* indicate that we can immediately suspend.
|
||||
*/
|
||||
static int queue_suspend_event(apm_event_t event, struct apm_user *sender)
|
||||
{
|
||||
struct apm_user *as;
|
||||
int ret = 1;
|
||||
|
||||
mutex_lock(&state_lock);
|
||||
down_read(&user_list_lock);
|
||||
|
||||
/*
|
||||
* If a thread is still processing, we can't suspend, so reject
|
||||
* the request.
|
||||
*/
|
||||
list_for_each_entry(as, &apm_user_list, list) {
|
||||
if (as != sender && as->reader && as->writer && as->suser &&
|
||||
as->suspend_state != SUSPEND_NONE) {
|
||||
ret = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
list_for_each_entry(as, &apm_user_list, list) {
|
||||
if (as != sender && as->reader && as->writer && as->suser) {
|
||||
as->suspend_state = SUSPEND_PENDING;
|
||||
suspends_pending++;
|
||||
queue_add_event(&as->queue, event);
|
||||
ret = 0;
|
||||
}
|
||||
}
|
||||
out:
|
||||
up_read(&user_list_lock);
|
||||
mutex_unlock(&state_lock);
|
||||
wake_up_interruptible(&apm_waitqueue);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void apm_suspend(void)
|
||||
{
|
||||
struct apm_user *as;
|
||||
|
|
@ -191,17 +215,22 @@ static void apm_suspend(void)
|
|||
* Anyone on the APM queues will think we're still suspended.
|
||||
* Send a message so everyone knows we're now awake again.
|
||||
*/
|
||||
queue_event(APM_NORMAL_RESUME, NULL);
|
||||
queue_event(APM_NORMAL_RESUME);
|
||||
|
||||
/*
|
||||
* Finally, wake up anyone who is sleeping on the suspend.
|
||||
*/
|
||||
mutex_lock(&state_lock);
|
||||
down_read(&user_list_lock);
|
||||
list_for_each_entry(as, &apm_user_list, list) {
|
||||
as->suspend_result = err;
|
||||
as->suspend_state = SUSPEND_DONE;
|
||||
if (as->suspend_state == SUSPEND_WAIT ||
|
||||
as->suspend_state == SUSPEND_ACKED) {
|
||||
as->suspend_result = err;
|
||||
as->suspend_state = SUSPEND_DONE;
|
||||
}
|
||||
}
|
||||
up_read(&user_list_lock);
|
||||
mutex_unlock(&state_lock);
|
||||
|
||||
wake_up(&apm_suspend_waitqueue);
|
||||
}
|
||||
|
|
@ -227,8 +256,11 @@ static ssize_t apm_read(struct file *fp, char __user *buf, size_t count, loff_t
|
|||
if (copy_to_user(buf, &event, sizeof(event)))
|
||||
break;
|
||||
|
||||
if (event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND)
|
||||
mutex_lock(&state_lock);
|
||||
if (as->suspend_state == SUSPEND_PENDING &&
|
||||
(event == APM_SYS_SUSPEND || event == APM_USER_SUSPEND))
|
||||
as->suspend_state = SUSPEND_READ;
|
||||
mutex_unlock(&state_lock);
|
||||
|
||||
buf += sizeof(event);
|
||||
i -= sizeof(event);
|
||||
|
|
@ -270,9 +302,13 @@ apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg)
|
|||
|
||||
switch (cmd) {
|
||||
case APM_IOC_SUSPEND:
|
||||
mutex_lock(&state_lock);
|
||||
|
||||
as->suspend_result = -EINTR;
|
||||
|
||||
if (as->suspend_state == SUSPEND_READ) {
|
||||
int pending;
|
||||
|
||||
/*
|
||||
* If we read a suspend command from /dev/apm_bios,
|
||||
* then the corresponding APM_IOC_SUSPEND ioctl is
|
||||
|
|
@ -280,47 +316,73 @@ apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg)
|
|||
*/
|
||||
as->suspend_state = SUSPEND_ACKED;
|
||||
suspends_pending--;
|
||||
pending = suspends_pending == 0;
|
||||
mutex_unlock(&state_lock);
|
||||
|
||||
/*
|
||||
* If there are no further acknowledges required,
|
||||
* suspend the system.
|
||||
*/
|
||||
if (pending)
|
||||
apm_suspend();
|
||||
|
||||
/*
|
||||
* Wait for the suspend/resume to complete. If there
|
||||
* are pending acknowledges, we wait here for them.
|
||||
*
|
||||
* Note: we need to ensure that the PM subsystem does
|
||||
* not kick us out of the wait when it suspends the
|
||||
* threads.
|
||||
*/
|
||||
flags = current->flags;
|
||||
current->flags |= PF_NOFREEZE;
|
||||
|
||||
wait_event(apm_suspend_waitqueue,
|
||||
as->suspend_state == SUSPEND_DONE);
|
||||
} else {
|
||||
as->suspend_state = SUSPEND_WAIT;
|
||||
mutex_unlock(&state_lock);
|
||||
|
||||
/*
|
||||
* Otherwise it is a request to suspend the system.
|
||||
* Queue an event for all readers, and expect an
|
||||
* acknowledge from all writers who haven't already
|
||||
* acknowledged.
|
||||
*/
|
||||
queue_event(APM_USER_SUSPEND, as);
|
||||
}
|
||||
err = queue_suspend_event(APM_USER_SUSPEND, as);
|
||||
if (err < 0) {
|
||||
/*
|
||||
* Avoid taking the lock here - this
|
||||
* should be fine.
|
||||
*/
|
||||
as->suspend_state = SUSPEND_NONE;
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* If there are no further acknowledges required, suspend
|
||||
* the system.
|
||||
*/
|
||||
if (suspends_pending == 0)
|
||||
apm_suspend();
|
||||
if (err > 0)
|
||||
apm_suspend();
|
||||
|
||||
/*
|
||||
* Wait for the suspend/resume to complete. If there are
|
||||
* pending acknowledges, we wait here for them.
|
||||
*
|
||||
* Note that we need to ensure that the PM subsystem does
|
||||
* not kick us out of the wait when it suspends the threads.
|
||||
*/
|
||||
flags = current->flags;
|
||||
current->flags |= PF_NOFREEZE;
|
||||
/*
|
||||
* Wait for the suspend/resume to complete. If there
|
||||
* are pending acknowledges, we wait here for them.
|
||||
*
|
||||
* Note: we need to ensure that the PM subsystem does
|
||||
* not kick us out of the wait when it suspends the
|
||||
* threads.
|
||||
*/
|
||||
flags = current->flags;
|
||||
current->flags |= PF_NOFREEZE;
|
||||
|
||||
/*
|
||||
* Note: do not allow a thread which is acking the suspend
|
||||
* to escape until the resume is complete.
|
||||
*/
|
||||
if (as->suspend_state == SUSPEND_ACKED)
|
||||
wait_event(apm_suspend_waitqueue,
|
||||
as->suspend_state == SUSPEND_DONE);
|
||||
else
|
||||
wait_event_interruptible(apm_suspend_waitqueue,
|
||||
as->suspend_state == SUSPEND_DONE);
|
||||
}
|
||||
|
||||
current->flags = flags;
|
||||
|
||||
mutex_lock(&state_lock);
|
||||
err = as->suspend_result;
|
||||
as->suspend_state = SUSPEND_NONE;
|
||||
mutex_unlock(&state_lock);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -330,6 +392,8 @@ apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg)
|
|||
static int apm_release(struct inode * inode, struct file * filp)
|
||||
{
|
||||
struct apm_user *as = filp->private_data;
|
||||
int pending = 0;
|
||||
|
||||
filp->private_data = NULL;
|
||||
|
||||
down_write(&user_list_lock);
|
||||
|
|
@ -342,11 +406,14 @@ static int apm_release(struct inode * inode, struct file * filp)
|
|||
* need to balance suspends_pending, which means the
|
||||
* possibility of sleeping.
|
||||
*/
|
||||
mutex_lock(&state_lock);
|
||||
if (as->suspend_state != SUSPEND_NONE) {
|
||||
suspends_pending -= 1;
|
||||
if (suspends_pending == 0)
|
||||
apm_suspend();
|
||||
pending = suspends_pending == 0;
|
||||
}
|
||||
mutex_unlock(&state_lock);
|
||||
if (pending)
|
||||
apm_suspend();
|
||||
|
||||
kfree(as);
|
||||
return 0;
|
||||
|
|
@ -470,6 +537,7 @@ static int kapmd(void *arg)
|
|||
{
|
||||
do {
|
||||
apm_event_t event;
|
||||
int ret;
|
||||
|
||||
wait_event_interruptible(kapmd_wait,
|
||||
!queue_empty(&kapmd_queue) || kthread_should_stop());
|
||||
|
|
@ -489,13 +557,20 @@ static int kapmd(void *arg)
|
|||
|
||||
case APM_LOW_BATTERY:
|
||||
case APM_POWER_STATUS_CHANGE:
|
||||
queue_event(event, NULL);
|
||||
queue_event(event);
|
||||
break;
|
||||
|
||||
case APM_USER_SUSPEND:
|
||||
case APM_SYS_SUSPEND:
|
||||
queue_event(event, NULL);
|
||||
if (suspends_pending == 0)
|
||||
ret = queue_suspend_event(event, NULL);
|
||||
if (ret < 0) {
|
||||
/*
|
||||
* We were busy. Try again in 50ms.
|
||||
*/
|
||||
queue_add_event(&kapmd_queue, event);
|
||||
msleep(50);
|
||||
}
|
||||
if (ret > 0)
|
||||
apm_suspend();
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include <asm/mach/arch.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/memory.h>
|
||||
#include <asm/procinfo.h>
|
||||
|
||||
/*
|
||||
* Make sure that the compiler and target are compatible.
|
||||
|
|
|
|||
|
|
@ -529,7 +529,7 @@ static void ecard_dump_irq_state(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void ecard_check_lockup(struct irqdesc *desc)
|
||||
static void ecard_check_lockup(struct irq_desc *desc)
|
||||
{
|
||||
static unsigned long last;
|
||||
static int lockup;
|
||||
|
|
@ -567,7 +567,7 @@ static void ecard_check_lockup(struct irqdesc *desc)
|
|||
}
|
||||
|
||||
static void
|
||||
ecard_irq_handler(unsigned int irq, struct irqdesc *desc)
|
||||
ecard_irq_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
ecard_t *ec;
|
||||
int called = 0;
|
||||
|
|
@ -585,7 +585,7 @@ ecard_irq_handler(unsigned int irq, struct irqdesc *desc)
|
|||
pending = ecard_default_ops.irqpending(ec);
|
||||
|
||||
if (pending) {
|
||||
struct irqdesc *d = irq_desc + ec->irq;
|
||||
struct irq_desc *d = irq_desc + ec->irq;
|
||||
desc_handle_irq(ec->irq, d);
|
||||
called ++;
|
||||
}
|
||||
|
|
@ -609,7 +609,7 @@ static unsigned char first_set[] =
|
|||
};
|
||||
|
||||
static void
|
||||
ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc)
|
||||
ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
const unsigned int statusmask = 15;
|
||||
unsigned int status;
|
||||
|
|
@ -1022,7 +1022,7 @@ ecard_probe(int slot, card_type_t type)
|
|||
if (slot < 8) {
|
||||
ec->irq = 32 + slot;
|
||||
set_irq_chip(ec->irq, &ecard_chip);
|
||||
set_irq_handler(ec->irq, do_level_IRQ);
|
||||
set_irq_handler(ec->irq, handle_level_irq);
|
||||
set_irq_flags(ec->irq, IRQF_VALID);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -589,10 +589,6 @@ ENTRY(__switch_to)
|
|||
strex r5, r4, [ip] @ Clear exclusive monitor
|
||||
#endif
|
||||
#endif
|
||||
#if defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_IWMMXT)
|
||||
mra r4, r5, acc0
|
||||
stmia ip, {r4, r5}
|
||||
#endif
|
||||
#if defined(CONFIG_HAS_TLS_REG)
|
||||
mcr p15, 0, r3, c13, c0, 3 @ set TLS register
|
||||
#elif !defined(CONFIG_TLS_REG_EMUL)
|
||||
|
|
@ -601,11 +597,6 @@ ENTRY(__switch_to)
|
|||
#endif
|
||||
#ifdef CONFIG_MMU
|
||||
mcr p15, 0, r6, c3, c0, 0 @ Set domain register
|
||||
#endif
|
||||
#if defined(CONFIG_CPU_XSCALE) && !defined(CONFIG_IWMMXT)
|
||||
add r4, r2, #TI_CPU_DOMAIN + 40 @ cpu_context_save->extra
|
||||
ldmib r4, {r4, r5}
|
||||
mar acc0, r4, r5
|
||||
#endif
|
||||
mov r5, r0
|
||||
add r4, r2, #TI_CPU_SAVE
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/procinfo.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/thread_info.h>
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
|
||||
#include <asm/assembler.h>
|
||||
#include <asm/domain.h>
|
||||
#include <asm/procinfo.h>
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
#include <asm/memory.h>
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ static struct irq_desc bad_irq_desc = {
|
|||
asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
struct irqdesc *desc = irq_desc + irq;
|
||||
struct irq_desc *desc = irq_desc + irq;
|
||||
|
||||
/*
|
||||
* Some hardware gives randomly wrong interrupts. Rather
|
||||
|
|
@ -134,7 +134,7 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
|
|||
|
||||
void set_irq_flags(unsigned int irq, unsigned int iflags)
|
||||
{
|
||||
struct irqdesc *desc;
|
||||
struct irq_desc *desc;
|
||||
unsigned long flags;
|
||||
|
||||
if (irq >= NR_IRQS) {
|
||||
|
|
@ -171,7 +171,7 @@ void __init init_IRQ(void)
|
|||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
|
||||
static void route_irq(struct irqdesc *desc, unsigned int irq, unsigned int cpu)
|
||||
static void route_irq(struct irq_desc *desc, unsigned int irq, unsigned int cpu)
|
||||
{
|
||||
pr_debug("IRQ%u: moving from cpu%u to cpu%u\n", irq, desc->cpu, cpu);
|
||||
|
||||
|
|
@ -190,7 +190,7 @@ void migrate_irqs(void)
|
|||
unsigned int i, cpu = smp_processor_id();
|
||||
|
||||
for (i = 0; i < NR_IRQS; i++) {
|
||||
struct irqdesc *desc = irq_desc + i;
|
||||
struct irq_desc *desc = irq_desc + i;
|
||||
|
||||
if (desc->cpu == cpu) {
|
||||
unsigned int newcpu = any_online_cpu(desc->affinity);
|
||||
|
|
|
|||
|
|
@ -1,63 +0,0 @@
|
|||
/*
|
||||
* linux/arch/arm/kernel/iwmmxt-notifier.c
|
||||
*
|
||||
* XScale iWMMXt (Concan) context switching and handling
|
||||
*
|
||||
* Initial code:
|
||||
* Copyright (c) 2003, Intel Corporation
|
||||
*
|
||||
* Full lazy switching support, optimizations and more, by Nicolas Pitre
|
||||
* Copyright (c) 2003-2004, MontaVista Software, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/init.h>
|
||||
#include <asm/thread_notify.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
static int iwmmxt_do(struct notifier_block *self, unsigned long cmd, void *t)
|
||||
{
|
||||
struct thread_info *thread = t;
|
||||
|
||||
switch (cmd) {
|
||||
case THREAD_NOTIFY_FLUSH:
|
||||
/*
|
||||
* flush_thread() zeroes thread->fpstate, so no need
|
||||
* to do anything here.
|
||||
*
|
||||
* FALLTHROUGH: Ensure we don't try to overwrite our newly
|
||||
* initialised state information on the first fault.
|
||||
*/
|
||||
|
||||
case THREAD_NOTIFY_RELEASE:
|
||||
iwmmxt_task_release(thread);
|
||||
break;
|
||||
|
||||
case THREAD_NOTIFY_SWITCH:
|
||||
iwmmxt_task_switch(thread);
|
||||
break;
|
||||
}
|
||||
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static struct notifier_block iwmmxt_notifier_block = {
|
||||
.notifier_call = iwmmxt_do,
|
||||
};
|
||||
|
||||
static int __init iwmmxt_init(void)
|
||||
{
|
||||
thread_register_notifier(&iwmmxt_notifier_block);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
late_initcall(iwmmxt_init);
|
||||
|
|
@ -280,67 +280,6 @@ void show_fpregs(struct user_fp *regs)
|
|||
(unsigned long)regs->fpcr);
|
||||
}
|
||||
|
||||
/*
|
||||
* Task structure and kernel stack allocation.
|
||||
*/
|
||||
struct thread_info_list {
|
||||
unsigned long *head;
|
||||
unsigned int nr;
|
||||
};
|
||||
|
||||
static DEFINE_PER_CPU(struct thread_info_list, thread_info_list) = { NULL, 0 };
|
||||
|
||||
#define EXTRA_TASK_STRUCT 4
|
||||
|
||||
struct thread_info *alloc_thread_info(struct task_struct *task)
|
||||
{
|
||||
struct thread_info *thread = NULL;
|
||||
|
||||
if (EXTRA_TASK_STRUCT) {
|
||||
struct thread_info_list *th = &get_cpu_var(thread_info_list);
|
||||
unsigned long *p = th->head;
|
||||
|
||||
if (p) {
|
||||
th->head = (unsigned long *)p[0];
|
||||
th->nr -= 1;
|
||||
}
|
||||
put_cpu_var(thread_info_list);
|
||||
|
||||
thread = (struct thread_info *)p;
|
||||
}
|
||||
|
||||
if (!thread)
|
||||
thread = (struct thread_info *)
|
||||
__get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER);
|
||||
|
||||
#ifdef CONFIG_DEBUG_STACK_USAGE
|
||||
/*
|
||||
* The stack must be cleared if you want SYSRQ-T to
|
||||
* give sensible stack usage information
|
||||
*/
|
||||
if (thread)
|
||||
memzero(thread, THREAD_SIZE);
|
||||
#endif
|
||||
return thread;
|
||||
}
|
||||
|
||||
void free_thread_info(struct thread_info *thread)
|
||||
{
|
||||
if (EXTRA_TASK_STRUCT) {
|
||||
struct thread_info_list *th = &get_cpu_var(thread_info_list);
|
||||
if (th->nr < EXTRA_TASK_STRUCT) {
|
||||
unsigned long *p = (unsigned long *)thread;
|
||||
p[0] = (unsigned long)th->head;
|
||||
th->head = p;
|
||||
th->nr += 1;
|
||||
put_cpu_var(thread_info_list);
|
||||
return;
|
||||
}
|
||||
put_cpu_var(thread_info_list);
|
||||
}
|
||||
free_pages((unsigned long)thread, THREAD_SIZE_ORDER);
|
||||
}
|
||||
|
||||
/*
|
||||
* Free current thread data structures etc..
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -438,16 +438,19 @@ __early_param("initrd=", early_initrd);
|
|||
|
||||
static void __init arm_add_memory(unsigned long start, unsigned long size)
|
||||
{
|
||||
struct membank *bank;
|
||||
|
||||
/*
|
||||
* Ensure that start/size are aligned to a page boundary.
|
||||
* Size is appropriately rounded down, start is rounded up.
|
||||
*/
|
||||
size -= start & ~PAGE_MASK;
|
||||
|
||||
meminfo.bank[meminfo.nr_banks].start = PAGE_ALIGN(start);
|
||||
meminfo.bank[meminfo.nr_banks].size = size & PAGE_MASK;
|
||||
meminfo.bank[meminfo.nr_banks].node = PHYS_TO_NID(start);
|
||||
meminfo.nr_banks += 1;
|
||||
bank = &meminfo.bank[meminfo.nr_banks++];
|
||||
|
||||
bank->start = PAGE_ALIGN(start);
|
||||
bank->size = size & PAGE_MASK;
|
||||
bank->node = PHYS_TO_NID(start);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -854,6 +857,7 @@ static const char *hwcap_str[] = {
|
|||
"vfp",
|
||||
"edsp",
|
||||
"java",
|
||||
"iwmmxt",
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,9 @@
|
|||
#include <linux/signal.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/personality.h>
|
||||
#include <linux/freezer.h>
|
||||
|
||||
#include <asm/elf.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/ucontext.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -631,12 +631,9 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
|
|||
notify_die("unknown data abort code", regs, &info, instr, 0);
|
||||
}
|
||||
|
||||
void __attribute__((noreturn)) __bug(const char *file, int line, void *data)
|
||||
void __attribute__((noreturn)) __bug(const char *file, int line)
|
||||
{
|
||||
printk(KERN_CRIT"kernel BUG at %s:%d!", file, line);
|
||||
if (data)
|
||||
printk(" - extra data = %p", data);
|
||||
printk("\n");
|
||||
printk(KERN_CRIT"kernel BUG at %s:%d!\n", file, line);
|
||||
*(int *)0 = 0;
|
||||
|
||||
/* Avoid "noreturn function does return" */
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
179
arch/arm/kernel/xscale-cp0.c
Normal file
179
arch/arm/kernel/xscale-cp0.c
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
/*
|
||||
* linux/arch/arm/kernel/xscale-cp0.c
|
||||
*
|
||||
* XScale DSP and iWMMXt coprocessor context switching and handling
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/signal.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/init.h>
|
||||
#include <asm/thread_notify.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
static inline void dsp_save_state(u32 *state)
|
||||
{
|
||||
__asm__ __volatile__ (
|
||||
"mrrc p0, 0, %0, %1, c0\n"
|
||||
: "=r" (state[0]), "=r" (state[1]));
|
||||
}
|
||||
|
||||
static inline void dsp_load_state(u32 *state)
|
||||
{
|
||||
__asm__ __volatile__ (
|
||||
"mcrr p0, 0, %0, %1, c0\n"
|
||||
: : "r" (state[0]), "r" (state[1]));
|
||||
}
|
||||
|
||||
static int dsp_do(struct notifier_block *self, unsigned long cmd, void *t)
|
||||
{
|
||||
struct thread_info *thread = t;
|
||||
|
||||
switch (cmd) {
|
||||
case THREAD_NOTIFY_FLUSH:
|
||||
thread->cpu_context.extra[0] = 0;
|
||||
thread->cpu_context.extra[1] = 0;
|
||||
break;
|
||||
|
||||
case THREAD_NOTIFY_SWITCH:
|
||||
dsp_save_state(current_thread_info()->cpu_context.extra);
|
||||
dsp_load_state(thread->cpu_context.extra);
|
||||
break;
|
||||
}
|
||||
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static struct notifier_block dsp_notifier_block = {
|
||||
.notifier_call = dsp_do,
|
||||
};
|
||||
|
||||
|
||||
#ifdef CONFIG_IWMMXT
|
||||
static int iwmmxt_do(struct notifier_block *self, unsigned long cmd, void *t)
|
||||
{
|
||||
struct thread_info *thread = t;
|
||||
|
||||
switch (cmd) {
|
||||
case THREAD_NOTIFY_FLUSH:
|
||||
/*
|
||||
* flush_thread() zeroes thread->fpstate, so no need
|
||||
* to do anything here.
|
||||
*
|
||||
* FALLTHROUGH: Ensure we don't try to overwrite our newly
|
||||
* initialised state information on the first fault.
|
||||
*/
|
||||
|
||||
case THREAD_NOTIFY_RELEASE:
|
||||
iwmmxt_task_release(thread);
|
||||
break;
|
||||
|
||||
case THREAD_NOTIFY_SWITCH:
|
||||
iwmmxt_task_switch(thread);
|
||||
break;
|
||||
}
|
||||
|
||||
return NOTIFY_DONE;
|
||||
}
|
||||
|
||||
static struct notifier_block iwmmxt_notifier_block = {
|
||||
.notifier_call = iwmmxt_do,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
static u32 __init xscale_cp_access_read(void)
|
||||
{
|
||||
u32 value;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"mrc p15, 0, %0, c15, c1, 0\n\t"
|
||||
: "=r" (value));
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static void __init xscale_cp_access_write(u32 value)
|
||||
{
|
||||
u32 temp;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"mcr p15, 0, %1, c15, c1, 0\n\t"
|
||||
"mrc p15, 0, %0, c15, c1, 0\n\t"
|
||||
"mov %0, %0\n\t"
|
||||
"sub pc, pc, #4\n\t"
|
||||
: "=r" (temp) : "r" (value));
|
||||
}
|
||||
|
||||
/*
|
||||
* Detect whether we have a MAC coprocessor (40 bit register) or an
|
||||
* iWMMXt coprocessor (64 bit registers) by loading 00000100:00000000
|
||||
* into a coprocessor register and reading it back, and checking
|
||||
* whether the upper word survived intact.
|
||||
*/
|
||||
static int __init cpu_has_iwmmxt(void)
|
||||
{
|
||||
u32 lo;
|
||||
u32 hi;
|
||||
|
||||
/*
|
||||
* This sequence is interpreted by the DSP coprocessor as:
|
||||
* mar acc0, %2, %3
|
||||
* mra %0, %1, acc0
|
||||
*
|
||||
* And by the iWMMXt coprocessor as:
|
||||
* tmcrr wR0, %2, %3
|
||||
* tmrrc %0, %1, wR0
|
||||
*/
|
||||
__asm__ __volatile__ (
|
||||
"mcrr p0, 0, %2, %3, c0\n"
|
||||
"mrrc p0, 0, %0, %1, c0\n"
|
||||
: "=r" (lo), "=r" (hi)
|
||||
: "r" (0), "r" (0x100));
|
||||
|
||||
return !!hi;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* If we detect that the CPU has iWMMXt (and CONFIG_IWMMXT=y), we
|
||||
* disable CP0/CP1 on boot, and let call_fpe() and the iWMMXt lazy
|
||||
* switch code handle iWMMXt context switching. If on the other
|
||||
* hand the CPU has a DSP coprocessor, we keep access to CP0 enabled
|
||||
* all the time, and save/restore acc0 on context switch in non-lazy
|
||||
* fashion.
|
||||
*/
|
||||
static int __init xscale_cp0_init(void)
|
||||
{
|
||||
u32 cp_access;
|
||||
|
||||
cp_access = xscale_cp_access_read() & ~3;
|
||||
xscale_cp_access_write(cp_access | 1);
|
||||
|
||||
if (cpu_has_iwmmxt()) {
|
||||
#ifndef CONFIG_IWMMXT
|
||||
printk(KERN_WARNING "CAUTION: XScale iWMMXt coprocessor "
|
||||
"detected, but kernel support is missing.\n");
|
||||
#else
|
||||
printk(KERN_INFO "XScale iWMMXt coprocessor detected.\n");
|
||||
elf_hwcap |= HWCAP_IWMMXT;
|
||||
thread_register_notifier(&iwmmxt_notifier_block);
|
||||
#endif
|
||||
} else {
|
||||
printk(KERN_INFO "XScale DSP coprocessor detected.\n");
|
||||
thread_register_notifier(&dsp_notifier_block);
|
||||
cp_access |= 1;
|
||||
}
|
||||
|
||||
xscale_cp_access_write(cp_access);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
late_initcall(xscale_cp0_init);
|
||||
|
|
@ -82,7 +82,7 @@ static void aaec2000_int_unmask(unsigned int irq)
|
|||
IRQ_INTENS |= (1 << irq);
|
||||
}
|
||||
|
||||
static struct irqchip aaec2000_irq_chip = {
|
||||
static struct irq_chip aaec2000_irq_chip = {
|
||||
.ack = aaec2000_int_ack,
|
||||
.mask = aaec2000_int_mask,
|
||||
.unmask = aaec2000_int_unmask,
|
||||
|
|
@ -93,7 +93,7 @@ void __init aaec2000_init_irq(void)
|
|||
unsigned int i;
|
||||
|
||||
for (i = 0; i < NR_IRQS; i++) {
|
||||
set_irq_handler(i, do_level_IRQ);
|
||||
set_irq_handler(i, handle_level_irq);
|
||||
set_irq_chip(i, &aaec2000_irq_chip);
|
||||
set_irq_flags(i, IRQF_VALID);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@ if ARCH_AT91
|
|||
|
||||
menu "Atmel AT91 System-on-Chip"
|
||||
|
||||
comment "Atmel AT91 Processors"
|
||||
choice
|
||||
prompt "Atmel AT91 Processor"
|
||||
|
||||
config ARCH_AT91RM9200
|
||||
bool "AT91RM9200"
|
||||
|
|
@ -13,6 +14,8 @@ config ARCH_AT91SAM9260
|
|||
config ARCH_AT91SAM9261
|
||||
bool "AT91SAM9261"
|
||||
|
||||
endchoice
|
||||
|
||||
# ----------------------------------------------------------
|
||||
|
||||
if ARCH_AT91RM9200
|
||||
|
|
@ -33,7 +36,6 @@ config ARCH_AT91RM9200DK
|
|||
Select this if you are using Atmel's AT91RM9200-DK Development board.
|
||||
(Discontinued)
|
||||
|
||||
|
||||
config MACH_AT91RM9200EK
|
||||
bool "Atmel AT91RM9200-EK Evaluation Kit"
|
||||
depends on ARCH_AT91RM9200
|
||||
|
|
@ -90,6 +92,13 @@ if ARCH_AT91SAM9260
|
|||
|
||||
comment "AT91SAM9260 Board Type"
|
||||
|
||||
config MACH_AT91SAM9260EK
|
||||
bool "Atmel AT91SAM9260-EK Evaluation Kit"
|
||||
depends on ARCH_AT91SAM9260
|
||||
help
|
||||
Select this if you are using Atmel's AT91SAM9260-EK Evaluation Kit.
|
||||
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3933>
|
||||
|
||||
endif
|
||||
|
||||
# ----------------------------------------------------------
|
||||
|
|
@ -98,8 +107,31 @@ if ARCH_AT91SAM9261
|
|||
|
||||
comment "AT91SAM9261 Board Type"
|
||||
|
||||
config MACH_AT91SAM9261EK
|
||||
bool "Atmel AT91SAM9261-EK Evaluation Kit"
|
||||
depends on ARCH_AT91SAM9261
|
||||
help
|
||||
Select this if you are using Atmel's AT91SAM9261-EK Evaluation Kit.
|
||||
<http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3820>
|
||||
|
||||
endif
|
||||
|
||||
# ----------------------------------------------------------
|
||||
|
||||
comment "AT91 Board Options"
|
||||
|
||||
config MTD_AT91_DATAFLASH_CARD
|
||||
bool "Enable DataFlash Card support"
|
||||
depends on (ARCH_AT91RM9200DK || MACH_AT91RM9200EK || MACH_AT91SAM9260EK || MACH_AT91SAM9261EK)
|
||||
help
|
||||
Enable support for the DataFlash card.
|
||||
|
||||
config MTD_NAND_AT91_BUSWIDTH_16
|
||||
bool "Enable 16-bit data bus interface to NAND flash"
|
||||
depends on (MACH_AT91SAM9261EK || MACH_AT91SAM9260EK)
|
||||
help
|
||||
On AT91SAM926x boards both types of NAND flash can be present
|
||||
(8 and 16 bit data bus width).
|
||||
|
||||
# ----------------------------------------------------------
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
# Makefile for the linux kernel.
|
||||
#
|
||||
|
||||
obj-y := clock.o irq.o gpio.o devices.o
|
||||
obj-y := clock.o irq.o gpio.o
|
||||
obj-m :=
|
||||
obj-n :=
|
||||
obj- :=
|
||||
|
|
@ -10,11 +10,11 @@ obj- :=
|
|||
obj-$(CONFIG_PM) += pm.o
|
||||
|
||||
# CPU-specific support
|
||||
obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9260) +=
|
||||
obj-$(CONFIG_ARCH_AT91SAM9261) +=
|
||||
obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o
|
||||
obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o
|
||||
|
||||
# AT91RM9200 Board-specific support
|
||||
# AT91RM9200 board-specific support
|
||||
obj-$(CONFIG_MACH_ONEARM) += board-1arm.o
|
||||
obj-$(CONFIG_ARCH_AT91RM9200DK) += board-dk.o
|
||||
obj-$(CONFIG_MACH_AT91RM9200EK) += board-ek.o
|
||||
|
|
@ -26,8 +26,10 @@ obj-$(CONFIG_MACH_ATEB9200) += board-eb9200.o
|
|||
obj-$(CONFIG_MACH_KAFA) += board-kafa.o
|
||||
|
||||
# AT91SAM9260 board-specific support
|
||||
obj-$(CONFIG_MACH_AT91SAM9260EK) += board-sam9260ek.o
|
||||
|
||||
# AT91SAM9261 board-specific support
|
||||
obj-$(CONFIG_MACH_AT91SAM9261EK) += board-sam9261ek.o
|
||||
|
||||
# LEDs support
|
||||
led-$(CONFIG_ARCH_AT91RM9200DK) += leds.o
|
||||
|
|
|
|||
|
|
@ -14,8 +14,10 @@
|
|||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/arch/at91rm9200.h>
|
||||
#include <asm/arch/at91_pmc.h>
|
||||
#include <asm/arch/at91_st.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include "generic.h"
|
||||
#include "clock.h"
|
||||
|
||||
|
|
@ -25,33 +27,13 @@ static struct map_desc at91rm9200_io_desc[] __initdata = {
|
|||
.pfn = __phys_to_pfn(AT91_BASE_SYS),
|
||||
.length = SZ_4K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_VA_BASE_SPI,
|
||||
.pfn = __phys_to_pfn(AT91RM9200_BASE_SPI),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_VA_BASE_EMAC,
|
||||
.pfn = __phys_to_pfn(AT91RM9200_BASE_EMAC),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_VA_BASE_TWI,
|
||||
.pfn = __phys_to_pfn(AT91RM9200_BASE_TWI),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_VA_BASE_MCI,
|
||||
.pfn = __phys_to_pfn(AT91RM9200_BASE_MCI),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_VA_BASE_UDP,
|
||||
.pfn = __phys_to_pfn(AT91RM9200_BASE_UDP),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_SRAM_VIRT_BASE,
|
||||
.virtual = AT91_IO_VIRT_BASE - AT91RM9200_SRAM_SIZE,
|
||||
.pfn = __phys_to_pfn(AT91RM9200_SRAM_BASE),
|
||||
.length = AT91RM9200_SRAM_SIZE,
|
||||
.type = MT_DEVICE,
|
||||
|
|
@ -222,6 +204,16 @@ static struct at91_gpio_bank at91rm9200_gpio[] = {
|
|||
}
|
||||
};
|
||||
|
||||
static void at91rm9200_reset(void)
|
||||
{
|
||||
/*
|
||||
* Perform a hardware reset with the use of the Watchdog timer.
|
||||
*/
|
||||
at91_sys_write(AT91_ST_WDMR, AT91_ST_RSTEN | AT91_ST_EXTEN | 1);
|
||||
at91_sys_write(AT91_ST_CR, AT91_ST_WDRST);
|
||||
}
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* AT91RM9200 processor initialization
|
||||
* -------------------------------------------------------------------- */
|
||||
|
|
@ -230,6 +222,12 @@ void __init at91rm9200_initialize(unsigned long main_clock, unsigned short banks
|
|||
/* Map peripherals */
|
||||
iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc));
|
||||
|
||||
at91_arch_reset = at91rm9200_reset;
|
||||
at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1)
|
||||
| (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3)
|
||||
| (1 << AT91RM9200_ID_IRQ4) | (1 << AT91RM9200_ID_IRQ5)
|
||||
| (1 << AT91RM9200_ID_IRQ6);
|
||||
|
||||
/* Init clock subsystem */
|
||||
at91_clock_init(main_clock);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* arch/arm/mach-at91rm9200/devices.c
|
||||
* arch/arm/mach-at91rm9200/at91rm9200_devices.c
|
||||
*
|
||||
* Copyright (C) 2005 Thibaut VARENE <varenet@parisc-linux.org>
|
||||
* Copyright (C) 2005 David Brownell
|
||||
|
|
@ -15,9 +15,10 @@
|
|||
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
#include <asm/arch/at91rm9200.h>
|
||||
#include <asm/arch/at91rm9200_mc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
|
|
@ -33,7 +34,7 @@
|
|||
static u64 ohci_dmamask = 0xffffffffUL;
|
||||
static struct at91_usbh_data usbh_data;
|
||||
|
||||
static struct resource at91_usbh_resources[] = {
|
||||
static struct resource usbh_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91RM9200_UHP_BASE,
|
||||
.end = AT91RM9200_UHP_BASE + SZ_1M - 1,
|
||||
|
|
@ -54,8 +55,8 @@ static struct platform_device at91rm9200_usbh_device = {
|
|||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &usbh_data,
|
||||
},
|
||||
.resource = at91_usbh_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_usbh_resources),
|
||||
.resource = usbh_resources,
|
||||
.num_resources = ARRAY_SIZE(usbh_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_usbh(struct at91_usbh_data *data)
|
||||
|
|
@ -78,7 +79,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
|
|||
#ifdef CONFIG_USB_GADGET_AT91
|
||||
static struct at91_udc_data udc_data;
|
||||
|
||||
static struct resource at91_udc_resources[] = {
|
||||
static struct resource udc_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91RM9200_BASE_UDP,
|
||||
.end = AT91RM9200_BASE_UDP + SZ_16K - 1,
|
||||
|
|
@ -97,8 +98,8 @@ static struct platform_device at91rm9200_udc_device = {
|
|||
.dev = {
|
||||
.platform_data = &udc_data,
|
||||
},
|
||||
.resource = at91_udc_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_udc_resources),
|
||||
.resource = udc_resources,
|
||||
.num_resources = ARRAY_SIZE(udc_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_udc(struct at91_udc_data *data)
|
||||
|
|
@ -129,7 +130,7 @@ void __init at91_add_device_udc(struct at91_udc_data *data) {}
|
|||
static u64 eth_dmamask = 0xffffffffUL;
|
||||
static struct at91_eth_data eth_data;
|
||||
|
||||
static struct resource at91_eth_resources[] = {
|
||||
static struct resource eth_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_VA_BASE_EMAC,
|
||||
.end = AT91_VA_BASE_EMAC + SZ_16K - 1,
|
||||
|
|
@ -150,8 +151,8 @@ static struct platform_device at91rm9200_eth_device = {
|
|||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = ð_data,
|
||||
},
|
||||
.resource = at91_eth_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_eth_resources),
|
||||
.resource = eth_resources,
|
||||
.num_resources = ARRAY_SIZE(eth_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_eth(struct at91_eth_data *data)
|
||||
|
|
@ -202,11 +203,13 @@ void __init at91_add_device_eth(struct at91_eth_data *data) {}
|
|||
#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE)
|
||||
static struct at91_cf_data cf_data;
|
||||
|
||||
static struct resource at91_cf_resources[] = {
|
||||
#define CF_BASE AT91_CHIPSELECT_4
|
||||
|
||||
static struct resource cf_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_CF_BASE,
|
||||
.start = CF_BASE,
|
||||
/* ties up CS4, CS5 and CS6 */
|
||||
.end = AT91_CF_BASE + (0x30000000 - 1),
|
||||
.end = CF_BASE + (0x30000000 - 1),
|
||||
.flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
|
||||
},
|
||||
};
|
||||
|
|
@ -217,15 +220,38 @@ static struct platform_device at91rm9200_cf_device = {
|
|||
.dev = {
|
||||
.platform_data = &cf_data,
|
||||
},
|
||||
.resource = at91_cf_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_cf_resources),
|
||||
.resource = cf_resources,
|
||||
.num_resources = ARRAY_SIZE(cf_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_cf(struct at91_cf_data *data)
|
||||
{
|
||||
unsigned int csa;
|
||||
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
data->chipselect = 4; /* can only use EBI ChipSelect 4 */
|
||||
|
||||
/* CF takes over CS4, CS5, CS6 */
|
||||
csa = at91_sys_read(AT91_EBI_CSA);
|
||||
at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS4A_SMC_COMPACTFLASH);
|
||||
|
||||
/*
|
||||
* Static memory controller timing adjustments.
|
||||
* REVISIT: these timings are in terms of MCK cycles, so
|
||||
* when MCK changes (cpufreq etc) so must these values...
|
||||
*/
|
||||
at91_sys_write(AT91_SMC_CSR(4),
|
||||
AT91_SMC_ACSS_STD
|
||||
| AT91_SMC_DBW_16
|
||||
| AT91_SMC_BAT
|
||||
| AT91_SMC_WSEN
|
||||
| AT91_SMC_NWS_(32) /* wait states */
|
||||
| AT91_SMC_RWSETUP_(6) /* setup time */
|
||||
| AT91_SMC_RWHOLD_(4) /* hold time */
|
||||
);
|
||||
|
||||
/* input/irq */
|
||||
if (data->irq_pin) {
|
||||
at91_set_gpio_input(data->irq_pin, 1);
|
||||
|
|
@ -245,6 +271,9 @@ void __init at91_add_device_cf(struct at91_cf_data *data)
|
|||
at91_set_A_periph(AT91_PIN_PC11, 0); /* NCS5/CFCE1 */
|
||||
at91_set_A_periph(AT91_PIN_PC12, 0); /* NCS6/CFCE2 */
|
||||
|
||||
/* nWAIT is _not_ a default setting */
|
||||
at91_set_A_periph(AT91_PIN_PC6, 1); /* nWAIT */
|
||||
|
||||
cf_data = *data;
|
||||
platform_device_register(&at91rm9200_cf_device);
|
||||
}
|
||||
|
|
@ -257,11 +286,11 @@ void __init at91_add_device_cf(struct at91_cf_data *data) {}
|
|||
* MMC / SD
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_MMC_AT91RM9200) || defined(CONFIG_MMC_AT91RM9200_MODULE)
|
||||
#if defined(CONFIG_MMC_AT91) || defined(CONFIG_MMC_AT91_MODULE)
|
||||
static u64 mmc_dmamask = 0xffffffffUL;
|
||||
static struct at91_mmc_data mmc_data;
|
||||
|
||||
static struct resource at91_mmc_resources[] = {
|
||||
static struct resource mmc_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91RM9200_BASE_MCI,
|
||||
.end = AT91RM9200_BASE_MCI + SZ_16K - 1,
|
||||
|
|
@ -282,8 +311,8 @@ static struct platform_device at91rm9200_mmc_device = {
|
|||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &mmc_data,
|
||||
},
|
||||
.resource = at91_mmc_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_mmc_resources),
|
||||
.resource = mmc_resources,
|
||||
.num_resources = ARRAY_SIZE(mmc_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_mmc(struct at91_mmc_data *data)
|
||||
|
|
@ -298,31 +327,33 @@ void __init at91_add_device_mmc(struct at91_mmc_data *data)
|
|||
}
|
||||
if (data->wp_pin)
|
||||
at91_set_gpio_input(data->wp_pin, 1);
|
||||
if (data->vcc_pin)
|
||||
at91_set_gpio_output(data->vcc_pin, 0);
|
||||
|
||||
/* CLK */
|
||||
at91_set_A_periph(AT91_PIN_PA27, 0);
|
||||
|
||||
if (data->is_b) {
|
||||
if (data->slot_b) {
|
||||
/* CMD */
|
||||
at91_set_B_periph(AT91_PIN_PA8, 0);
|
||||
at91_set_B_periph(AT91_PIN_PA8, 1);
|
||||
|
||||
/* DAT0, maybe DAT1..DAT3 */
|
||||
at91_set_B_periph(AT91_PIN_PA9, 0);
|
||||
at91_set_B_periph(AT91_PIN_PA9, 1);
|
||||
if (data->wire4) {
|
||||
at91_set_B_periph(AT91_PIN_PA10, 0);
|
||||
at91_set_B_periph(AT91_PIN_PA11, 0);
|
||||
at91_set_B_periph(AT91_PIN_PA12, 0);
|
||||
at91_set_B_periph(AT91_PIN_PA10, 1);
|
||||
at91_set_B_periph(AT91_PIN_PA11, 1);
|
||||
at91_set_B_periph(AT91_PIN_PA12, 1);
|
||||
}
|
||||
} else {
|
||||
/* CMD */
|
||||
at91_set_A_periph(AT91_PIN_PA28, 0);
|
||||
at91_set_A_periph(AT91_PIN_PA28, 1);
|
||||
|
||||
/* DAT0, maybe DAT1..DAT3 */
|
||||
at91_set_A_periph(AT91_PIN_PA29, 0);
|
||||
at91_set_A_periph(AT91_PIN_PA29, 1);
|
||||
if (data->wire4) {
|
||||
at91_set_B_periph(AT91_PIN_PB3, 0);
|
||||
at91_set_B_periph(AT91_PIN_PB4, 0);
|
||||
at91_set_B_periph(AT91_PIN_PB5, 0);
|
||||
at91_set_B_periph(AT91_PIN_PB3, 1);
|
||||
at91_set_B_periph(AT91_PIN_PB4, 1);
|
||||
at91_set_B_periph(AT91_PIN_PB5, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -341,29 +372,45 @@ void __init at91_add_device_mmc(struct at91_mmc_data *data) {}
|
|||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||
static struct at91_nand_data nand_data;
|
||||
|
||||
static struct resource at91_nand_resources[] = {
|
||||
#define NAND_BASE AT91_CHIPSELECT_3
|
||||
|
||||
static struct resource nand_resources[] = {
|
||||
{
|
||||
.start = AT91_SMARTMEDIA_BASE,
|
||||
.end = AT91_SMARTMEDIA_BASE + SZ_8M - 1,
|
||||
.start = NAND_BASE,
|
||||
.end = NAND_BASE + SZ_8M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device at91_nand_device = {
|
||||
static struct platform_device at91rm9200_nand_device = {
|
||||
.name = "at91_nand",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &nand_data,
|
||||
},
|
||||
.resource = at91_nand_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_nand_resources),
|
||||
.resource = nand_resources,
|
||||
.num_resources = ARRAY_SIZE(nand_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||
{
|
||||
unsigned int csa;
|
||||
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
/* enable the address range of CS3 */
|
||||
csa = at91_sys_read(AT91_EBI_CSA);
|
||||
at91_sys_write(AT91_EBI_CSA, csa | AT91_EBI_CS3A_SMC_SMARTMEDIA);
|
||||
|
||||
/* set the bus interface characteristics */
|
||||
at91_sys_write(AT91_SMC_CSR(3), AT91_SMC_ACSS_STD | AT91_SMC_DBW_8 | AT91_SMC_WSEN
|
||||
| AT91_SMC_NWS_(5)
|
||||
| AT91_SMC_TDF_(1)
|
||||
| AT91_SMC_RWSETUP_(0) /* tDS Data Set up Time 30 - ns */
|
||||
| AT91_SMC_RWHOLD_(1) /* tDH Data Hold Time 20 - ns */
|
||||
);
|
||||
|
||||
/* enable pin */
|
||||
if (data->enable_pin)
|
||||
at91_set_gpio_output(data->enable_pin, 1);
|
||||
|
|
@ -380,7 +427,7 @@ void __init at91_add_device_nand(struct at91_nand_data *data)
|
|||
at91_set_A_periph(AT91_PIN_PC3, 0); /* SMWE */
|
||||
|
||||
nand_data = *data;
|
||||
platform_device_register(&at91_nand_device);
|
||||
platform_device_register(&at91rm9200_nand_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
|
|
@ -392,10 +439,25 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
|||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91RM9200_BASE_TWI,
|
||||
.end = AT91RM9200_BASE_TWI + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91RM9200_ID_TWI,
|
||||
.end = AT91RM9200_ID_TWI,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_twi_device = {
|
||||
.name = "at91_i2c",
|
||||
.id = -1,
|
||||
.num_resources = 0,
|
||||
.resource = twi_resources,
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
|
|
@ -421,7 +483,7 @@ void __init at91_add_device_i2c(void) {}
|
|||
#if defined(CONFIG_SPI_AT91) || defined(CONFIG_SPI_AT91_MODULE) || defined(CONFIG_AT91_SPI) || defined(CONFIG_AT91_SPI_MODULE)
|
||||
static u64 spi_dmamask = 0xffffffffUL;
|
||||
|
||||
static struct resource at91_spi_resources[] = {
|
||||
static struct resource spi_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91RM9200_BASE_SPI,
|
||||
.end = AT91RM9200_BASE_SPI + SZ_16K - 1,
|
||||
|
|
@ -438,14 +500,14 @@ static struct platform_device at91rm9200_spi_device = {
|
|||
.name = "at91_spi",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.dma_mask = &spi_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.dma_mask = &spi_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = at91_spi_resources,
|
||||
.num_resources = ARRAY_SIZE(at91_spi_resources),
|
||||
.resource = spi_resources,
|
||||
.num_resources = ARRAY_SIZE(spi_resources),
|
||||
};
|
||||
|
||||
static const unsigned at91_spi_standard_cs[4] = { AT91_PIN_PA3, AT91_PIN_PA4, AT91_PIN_PA5, AT91_PIN_PA6 };
|
||||
static const unsigned spi_standard_cs[4] = { AT91_PIN_PA3, AT91_PIN_PA4, AT91_PIN_PA5, AT91_PIN_PA6 };
|
||||
|
||||
void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
|
||||
{
|
||||
|
|
@ -461,7 +523,7 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
|
|||
if (devices[i].controller_data)
|
||||
cs_pin = (unsigned long) devices[i].controller_data;
|
||||
else
|
||||
cs_pin = at91_spi_standard_cs[devices[i].chip_select];
|
||||
cs_pin = spi_standard_cs[devices[i].chip_select];
|
||||
|
||||
#ifdef CONFIG_SPI_AT91_MANUAL_CS
|
||||
at91_set_gpio_output(cs_pin, 1);
|
||||
|
|
@ -474,7 +536,7 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
|
|||
}
|
||||
|
||||
spi_register_board_info(devices, nr_devices);
|
||||
at91_clock_associate("spi0_clk", &at91rm9200_spi_device.dev, "spi");
|
||||
at91_clock_associate("spi_clk", &at91rm9200_spi_device.dev, "spi");
|
||||
platform_device_register(&at91rm9200_spi_device);
|
||||
}
|
||||
#else
|
||||
|
|
@ -486,7 +548,7 @@ void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
|
|||
* RTC
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_RTC_DRV_AT91) || defined(CONFIG_RTC_DRV_AT91_MODULE)
|
||||
#if defined(CONFIG_RTC_DRV_AT91RM9200) || defined(CONFIG_RTC_DRV_AT91RM9200_MODULE)
|
||||
static struct platform_device at91rm9200_rtc_device = {
|
||||
.name = "at91_rtc",
|
||||
.id = -1,
|
||||
|
|
@ -506,7 +568,7 @@ static void __init at91_add_device_rtc(void) {}
|
|||
* Watchdog
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_AT91_WATCHDOG) || defined(CONFIG_AT91_WATCHDOG_MODULE)
|
||||
#if defined(CONFIG_AT91RM9200_WATCHDOG) || defined(CONFIG_AT91RM9200_WATCHDOG_MODULE)
|
||||
static struct platform_device at91rm9200_wdt_device = {
|
||||
.name = "at91_wdt",
|
||||
.id = -1,
|
||||
|
|
@ -30,6 +30,8 @@
|
|||
#include <asm/io.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
#include <asm/arch/at91_st.h>
|
||||
|
||||
static unsigned long last_crtr;
|
||||
|
||||
/*
|
||||
|
|
@ -99,6 +101,9 @@ void at91rm9200_timer_reset(void)
|
|||
/* Set Period Interval timer */
|
||||
at91_sys_write(AT91_ST_PIMR, LATCH);
|
||||
|
||||
/* Clear any pending interrupts */
|
||||
(void) at91_sys_read(AT91_ST_SR);
|
||||
|
||||
/* Enable Period Interval Timer interrupt */
|
||||
at91_sys_write(AT91_ST_IER, AT91_ST_PITS);
|
||||
}
|
||||
|
|
|
|||
294
arch/arm/mach-at91rm9200/at91sam9260.c
Normal file
294
arch/arm/mach-at91rm9200/at91sam9260.c
Normal file
|
|
@ -0,0 +1,294 @@
|
|||
/*
|
||||
* arch/arm/mach-at91rm9200/at91sam9260.c
|
||||
*
|
||||
* Copyright (C) 2006 SAN People
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/arch/at91sam9260.h>
|
||||
#include <asm/arch/at91_pmc.h>
|
||||
|
||||
#include "generic.h"
|
||||
#include "clock.h"
|
||||
|
||||
static struct map_desc at91sam9260_io_desc[] __initdata = {
|
||||
{
|
||||
.virtual = AT91_VA_BASE_SYS,
|
||||
.pfn = __phys_to_pfn(AT91_BASE_SYS),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9260_SRAM0_SIZE,
|
||||
.pfn = __phys_to_pfn(AT91SAM9260_SRAM0_BASE),
|
||||
.length = AT91SAM9260_SRAM0_SIZE,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9260_SRAM0_SIZE - AT91SAM9260_SRAM1_SIZE,
|
||||
.pfn = __phys_to_pfn(AT91SAM9260_SRAM1_BASE),
|
||||
.length = AT91SAM9260_SRAM1_SIZE,
|
||||
.type = MT_DEVICE,
|
||||
},
|
||||
};
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* Clocks
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* The peripheral clocks.
|
||||
*/
|
||||
static struct clk pioA_clk = {
|
||||
.name = "pioA_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_PIOA,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk pioB_clk = {
|
||||
.name = "pioB_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_PIOB,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk pioC_clk = {
|
||||
.name = "pioC_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_PIOC,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk adc_clk = {
|
||||
.name = "adc_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_ADC,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart0_clk = {
|
||||
.name = "usart0_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_US0,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart1_clk = {
|
||||
.name = "usart1_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_US1,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart2_clk = {
|
||||
.name = "usart2_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_US2,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk mmc_clk = {
|
||||
.name = "mci_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_MCI,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk udc_clk = {
|
||||
.name = "udc_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_UDP,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk twi_clk = {
|
||||
.name = "twi_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_TWI,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk spi0_clk = {
|
||||
.name = "spi0_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_SPI0,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk spi1_clk = {
|
||||
.name = "spi1_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_SPI1,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk ohci_clk = {
|
||||
.name = "ohci_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_UHP,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk ether_clk = {
|
||||
.name = "ether_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_EMAC,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk isi_clk = {
|
||||
.name = "isi_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_ISI,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart3_clk = {
|
||||
.name = "usart3_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_US3,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart4_clk = {
|
||||
.name = "usart4_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_US4,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart5_clk = {
|
||||
.name = "usart5_clk",
|
||||
.pmc_mask = 1 << AT91SAM9260_ID_US5,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
|
||||
static struct clk *periph_clocks[] __initdata = {
|
||||
&pioA_clk,
|
||||
&pioB_clk,
|
||||
&pioC_clk,
|
||||
&adc_clk,
|
||||
&usart0_clk,
|
||||
&usart1_clk,
|
||||
&usart2_clk,
|
||||
&mmc_clk,
|
||||
&udc_clk,
|
||||
&twi_clk,
|
||||
&spi0_clk,
|
||||
&spi1_clk,
|
||||
// ssc
|
||||
// tc0 .. tc2
|
||||
&ohci_clk,
|
||||
ðer_clk,
|
||||
&isi_clk,
|
||||
&usart3_clk,
|
||||
&usart4_clk,
|
||||
&usart5_clk,
|
||||
// tc3 .. tc5
|
||||
// irq0 .. irq2
|
||||
};
|
||||
|
||||
/*
|
||||
* The two programmable clocks.
|
||||
* You must configure pin multiplexing to bring these signals out.
|
||||
*/
|
||||
static struct clk pck0 = {
|
||||
.name = "pck0",
|
||||
.pmc_mask = AT91_PMC_PCK0,
|
||||
.type = CLK_TYPE_PROGRAMMABLE,
|
||||
.id = 0,
|
||||
};
|
||||
static struct clk pck1 = {
|
||||
.name = "pck1",
|
||||
.pmc_mask = AT91_PMC_PCK1,
|
||||
.type = CLK_TYPE_PROGRAMMABLE,
|
||||
.id = 1,
|
||||
};
|
||||
|
||||
static void __init at91sam9260_register_clocks(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(periph_clocks); i++)
|
||||
clk_register(periph_clocks[i]);
|
||||
|
||||
clk_register(&pck0);
|
||||
clk_register(&pck1);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* GPIO
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
static struct at91_gpio_bank at91sam9260_gpio[] = {
|
||||
{
|
||||
.id = AT91SAM9260_ID_PIOA,
|
||||
.offset = AT91_PIOA,
|
||||
.clock = &pioA_clk,
|
||||
}, {
|
||||
.id = AT91SAM9260_ID_PIOB,
|
||||
.offset = AT91_PIOB,
|
||||
.clock = &pioB_clk,
|
||||
}, {
|
||||
.id = AT91SAM9260_ID_PIOC,
|
||||
.offset = AT91_PIOC,
|
||||
.clock = &pioC_clk,
|
||||
}
|
||||
};
|
||||
|
||||
static void at91sam9260_reset(void)
|
||||
{
|
||||
#warning "Implement CPU reset"
|
||||
}
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* AT91SAM9260 processor initialization
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
void __init at91sam9260_initialize(unsigned long main_clock)
|
||||
{
|
||||
/* Map peripherals */
|
||||
iotable_init(at91sam9260_io_desc, ARRAY_SIZE(at91sam9260_io_desc));
|
||||
|
||||
at91_arch_reset = at91sam9260_reset;
|
||||
at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1)
|
||||
| (1 << AT91SAM9260_ID_IRQ2);
|
||||
|
||||
/* Init clock subsystem */
|
||||
at91_clock_init(main_clock);
|
||||
|
||||
/* Register the processor-specific clocks */
|
||||
at91sam9260_register_clocks();
|
||||
|
||||
/* Register GPIO subsystem */
|
||||
at91_gpio_init(at91sam9260_gpio, 3);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* Interrupt initialization
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* The default interrupt priority levels (0 = lowest, 7 = highest).
|
||||
*/
|
||||
static unsigned int at91sam9260_default_irq_priority[NR_AIC_IRQS] __initdata = {
|
||||
7, /* Advanced Interrupt Controller */
|
||||
7, /* System Peripherals */
|
||||
0, /* Parallel IO Controller A */
|
||||
0, /* Parallel IO Controller B */
|
||||
0, /* Parallel IO Controller C */
|
||||
0, /* Analog-to-Digital Converter */
|
||||
6, /* USART 0 */
|
||||
6, /* USART 1 */
|
||||
6, /* USART 2 */
|
||||
0, /* Multimedia Card Interface */
|
||||
4, /* USB Device Port */
|
||||
0, /* Two-Wire Interface */
|
||||
6, /* Serial Peripheral Interface 0 */
|
||||
6, /* Serial Peripheral Interface 1 */
|
||||
5, /* Serial Synchronous Controller */
|
||||
0,
|
||||
0,
|
||||
0, /* Timer Counter 0 */
|
||||
0, /* Timer Counter 1 */
|
||||
0, /* Timer Counter 2 */
|
||||
3, /* USB Host port */
|
||||
3, /* Ethernet */
|
||||
0, /* Image Sensor Interface */
|
||||
6, /* USART 3 */
|
||||
6, /* USART 4 */
|
||||
6, /* USART 5 */
|
||||
0, /* Timer Counter 3 */
|
||||
0, /* Timer Counter 4 */
|
||||
0, /* Timer Counter 5 */
|
||||
0, /* Advanced Interrupt Controller */
|
||||
0, /* Advanced Interrupt Controller */
|
||||
0, /* Advanced Interrupt Controller */
|
||||
};
|
||||
|
||||
void __init at91sam9260_init_interrupts(unsigned int priority[NR_AIC_IRQS])
|
||||
{
|
||||
if (!priority)
|
||||
priority = at91sam9260_default_irq_priority;
|
||||
|
||||
/* Initialize the AIC interrupt controller */
|
||||
at91_aic_init(priority);
|
||||
|
||||
/* Enable GPIO interrupts */
|
||||
at91_gpio_irq_setup();
|
||||
}
|
||||
866
arch/arm/mach-at91rm9200/at91sam9260_devices.c
Normal file
866
arch/arm/mach-at91rm9200/at91sam9260_devices.c
Normal file
|
|
@ -0,0 +1,866 @@
|
|||
/*
|
||||
* arch/arm/mach-at91rm9200/at91sam9260_devices.c
|
||||
*
|
||||
* Copyright (C) 2006 Atmel
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*/
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
#include <asm/arch/at91sam9260.h>
|
||||
#include <asm/arch/at91sam926x_mc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
#define SZ_512 0x00000200
|
||||
#define SZ_256 0x00000100
|
||||
#define SZ_16 0x00000010
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* USB Host
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
|
||||
static u64 ohci_dmamask = 0xffffffffUL;
|
||||
static struct at91_usbh_data usbh_data;
|
||||
|
||||
static struct resource usbh_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_UHP_BASE,
|
||||
.end = AT91SAM9260_UHP_BASE + SZ_1M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_UHP,
|
||||
.end = AT91SAM9260_ID_UHP,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91_usbh_device = {
|
||||
.name = "at91_ohci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &ohci_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &usbh_data,
|
||||
},
|
||||
.resource = usbh_resources,
|
||||
.num_resources = ARRAY_SIZE(usbh_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_usbh(struct at91_usbh_data *data)
|
||||
{
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
usbh_data = *data;
|
||||
platform_device_register(&at91_usbh_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* USB Device (Gadget)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#ifdef CONFIG_USB_GADGET_AT91
|
||||
static struct at91_udc_data udc_data;
|
||||
|
||||
static struct resource udc_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_UDP,
|
||||
.end = AT91SAM9260_BASE_UDP + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_UDP,
|
||||
.end = AT91SAM9260_ID_UDP,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91_udc_device = {
|
||||
.name = "at91_udc",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &udc_data,
|
||||
},
|
||||
.resource = udc_resources,
|
||||
.num_resources = ARRAY_SIZE(udc_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_udc(struct at91_udc_data *data)
|
||||
{
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
if (data->vbus_pin) {
|
||||
at91_set_gpio_input(data->vbus_pin, 0);
|
||||
at91_set_deglitch(data->vbus_pin, 1);
|
||||
}
|
||||
|
||||
/* Pullup pin is handled internally by USB device peripheral */
|
||||
|
||||
udc_data = *data;
|
||||
platform_device_register(&at91_udc_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_udc(struct at91_udc_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* Ethernet
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_MACB) || defined(CONFIG_MACB_MODULE)
|
||||
static u64 eth_dmamask = 0xffffffffUL;
|
||||
static struct eth_platform_data eth_data;
|
||||
|
||||
static struct resource eth_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_EMAC,
|
||||
.end = AT91SAM9260_BASE_EMAC + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_EMAC,
|
||||
.end = AT91SAM9260_ID_EMAC,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_eth_device = {
|
||||
.name = "macb",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = ð_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = ð_data,
|
||||
},
|
||||
.resource = eth_resources,
|
||||
.num_resources = ARRAY_SIZE(eth_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_eth(struct eth_platform_data *data)
|
||||
{
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
if (data->phy_irq_pin) {
|
||||
at91_set_gpio_input(data->phy_irq_pin, 0);
|
||||
at91_set_deglitch(data->phy_irq_pin, 1);
|
||||
}
|
||||
|
||||
/* Pins used for MII and RMII */
|
||||
at91_set_A_periph(AT91_PIN_PA19, 0); /* ETXCK_EREFCK */
|
||||
at91_set_A_periph(AT91_PIN_PA17, 0); /* ERXDV */
|
||||
at91_set_A_periph(AT91_PIN_PA14, 0); /* ERX0 */
|
||||
at91_set_A_periph(AT91_PIN_PA15, 0); /* ERX1 */
|
||||
at91_set_A_periph(AT91_PIN_PA18, 0); /* ERXER */
|
||||
at91_set_A_periph(AT91_PIN_PA16, 0); /* ETXEN */
|
||||
at91_set_A_periph(AT91_PIN_PA12, 0); /* ETX0 */
|
||||
at91_set_A_periph(AT91_PIN_PA13, 0); /* ETX1 */
|
||||
at91_set_A_periph(AT91_PIN_PA21, 0); /* EMDIO */
|
||||
at91_set_A_periph(AT91_PIN_PA20, 0); /* EMDC */
|
||||
|
||||
if (!data->is_rmii) {
|
||||
at91_set_B_periph(AT91_PIN_PA28, 0); /* ECRS */
|
||||
at91_set_B_periph(AT91_PIN_PA29, 0); /* ECOL */
|
||||
at91_set_B_periph(AT91_PIN_PA25, 0); /* ERX2 */
|
||||
at91_set_B_periph(AT91_PIN_PA26, 0); /* ERX3 */
|
||||
at91_set_B_periph(AT91_PIN_PA27, 0); /* ERXCK */
|
||||
at91_set_B_periph(AT91_PIN_PA23, 0); /* ETX2 */
|
||||
at91_set_B_periph(AT91_PIN_PA24, 0); /* ETX3 */
|
||||
at91_set_B_periph(AT91_PIN_PA22, 0); /* ETXER */
|
||||
}
|
||||
|
||||
eth_data = *data;
|
||||
platform_device_register(&at91sam9260_eth_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_eth(struct eth_platform_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* MMC / SD
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_MMC_AT91) || defined(CONFIG_MMC_AT91_MODULE)
|
||||
static u64 mmc_dmamask = 0xffffffffUL;
|
||||
static struct at91_mmc_data mmc_data;
|
||||
|
||||
static struct resource mmc_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_MCI,
|
||||
.end = AT91SAM9260_BASE_MCI + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_MCI,
|
||||
.end = AT91SAM9260_ID_MCI,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_mmc_device = {
|
||||
.name = "at91_mci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &mmc_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &mmc_data,
|
||||
},
|
||||
.resource = mmc_resources,
|
||||
.num_resources = ARRAY_SIZE(mmc_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_mmc(struct at91_mmc_data *data)
|
||||
{
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
/* input/irq */
|
||||
if (data->det_pin) {
|
||||
at91_set_gpio_input(data->det_pin, 1);
|
||||
at91_set_deglitch(data->det_pin, 1);
|
||||
}
|
||||
if (data->wp_pin)
|
||||
at91_set_gpio_input(data->wp_pin, 1);
|
||||
if (data->vcc_pin)
|
||||
at91_set_gpio_output(data->vcc_pin, 0);
|
||||
|
||||
/* CLK */
|
||||
at91_set_A_periph(AT91_PIN_PA8, 0);
|
||||
|
||||
if (data->slot_b) {
|
||||
/* CMD */
|
||||
at91_set_B_periph(AT91_PIN_PA1, 1);
|
||||
|
||||
/* DAT0, maybe DAT1..DAT3 */
|
||||
at91_set_B_periph(AT91_PIN_PA0, 1);
|
||||
if (data->wire4) {
|
||||
at91_set_B_periph(AT91_PIN_PA5, 1);
|
||||
at91_set_B_periph(AT91_PIN_PA4, 1);
|
||||
at91_set_B_periph(AT91_PIN_PA3, 1);
|
||||
}
|
||||
} else {
|
||||
/* CMD */
|
||||
at91_set_A_periph(AT91_PIN_PA7, 1);
|
||||
|
||||
/* DAT0, maybe DAT1..DAT3 */
|
||||
at91_set_A_periph(AT91_PIN_PA6, 1);
|
||||
if (data->wire4) {
|
||||
at91_set_A_periph(AT91_PIN_PA9, 1);
|
||||
at91_set_A_periph(AT91_PIN_PA10, 1);
|
||||
at91_set_A_periph(AT91_PIN_PA11, 1);
|
||||
}
|
||||
}
|
||||
|
||||
mmc_data = *data;
|
||||
platform_device_register(&at91sam9260_mmc_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_mmc(struct at91_mmc_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* NAND / SmartMedia
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||
static struct at91_nand_data nand_data;
|
||||
|
||||
#define NAND_BASE AT91_CHIPSELECT_3
|
||||
|
||||
static struct resource nand_resources[] = {
|
||||
{
|
||||
.start = NAND_BASE,
|
||||
.end = NAND_BASE + SZ_8M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_nand_device = {
|
||||
.name = "at91_nand",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &nand_data,
|
||||
},
|
||||
.resource = nand_resources,
|
||||
.num_resources = ARRAY_SIZE(nand_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||
{
|
||||
unsigned long csa, mode;
|
||||
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
csa = at91_sys_read(AT91_MATRIX_EBICSA);
|
||||
at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC);
|
||||
|
||||
/* set the bus interface characteristics */
|
||||
at91_sys_write(AT91_SMC_SETUP(3), AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0)
|
||||
| AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0));
|
||||
|
||||
at91_sys_write(AT91_SMC_PULSE(3), AT91_SMC_NWEPULSE_(2) | AT91_SMC_NCS_WRPULSE_(5)
|
||||
| AT91_SMC_NRDPULSE_(2) | AT91_SMC_NCS_RDPULSE_(5));
|
||||
|
||||
at91_sys_write(AT91_SMC_CYCLE(3), AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(7));
|
||||
|
||||
if (data->bus_width_16)
|
||||
mode = AT91_SMC_DBW_16;
|
||||
else
|
||||
mode = AT91_SMC_DBW_8;
|
||||
at91_sys_write(AT91_SMC_MODE(3), mode | AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_TDF_(1));
|
||||
|
||||
/* enable pin */
|
||||
if (data->enable_pin)
|
||||
at91_set_gpio_output(data->enable_pin, 1);
|
||||
|
||||
/* ready/busy pin */
|
||||
if (data->rdy_pin)
|
||||
at91_set_gpio_input(data->rdy_pin, 1);
|
||||
|
||||
/* card detect pin */
|
||||
if (data->det_pin)
|
||||
at91_set_gpio_input(data->det_pin, 1);
|
||||
|
||||
nand_data = *data;
|
||||
platform_device_register(&at91sam9260_nand_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* TWI (i2c)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_TWI,
|
||||
.end = AT91SAM9260_BASE_TWI + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_TWI,
|
||||
.end = AT91SAM9260_ID_TWI,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_twi_device = {
|
||||
.name = "at91_i2c",
|
||||
.id = -1,
|
||||
.resource = twi_resources,
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
{
|
||||
/* pins used for TWI interface */
|
||||
at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */
|
||||
at91_set_multi_drive(AT91_PIN_PA23, 1);
|
||||
|
||||
at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */
|
||||
at91_set_multi_drive(AT91_PIN_PA24, 1);
|
||||
|
||||
platform_device_register(&at91sam9260_twi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_i2c(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* SPI
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE)
|
||||
static u64 spi_dmamask = 0xffffffffUL;
|
||||
|
||||
static struct resource spi0_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_SPI0,
|
||||
.end = AT91SAM9260_BASE_SPI0 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_SPI0,
|
||||
.end = AT91SAM9260_ID_SPI0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_spi0_device = {
|
||||
.name = "atmel_spi",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.dma_mask = &spi_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = spi0_resources,
|
||||
.num_resources = ARRAY_SIZE(spi0_resources),
|
||||
};
|
||||
|
||||
static const unsigned spi0_standard_cs[4] = { AT91_PIN_PA3, AT91_PIN_PC11, AT91_PIN_PC16, AT91_PIN_PC17 };
|
||||
|
||||
static struct resource spi1_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_SPI1,
|
||||
.end = AT91SAM9260_BASE_SPI1 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_SPI1,
|
||||
.end = AT91SAM9260_ID_SPI1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_spi1_device = {
|
||||
.name = "atmel_spi",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
.dma_mask = &spi_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = spi1_resources,
|
||||
.num_resources = ARRAY_SIZE(spi1_resources),
|
||||
};
|
||||
|
||||
static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB3, AT91_PIN_PC5, AT91_PIN_PC4, AT91_PIN_PC3 };
|
||||
|
||||
void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
|
||||
{
|
||||
int i;
|
||||
unsigned long cs_pin;
|
||||
short enable_spi0 = 0;
|
||||
short enable_spi1 = 0;
|
||||
|
||||
/* Choose SPI chip-selects */
|
||||
for (i = 0; i < nr_devices; i++) {
|
||||
if (devices[i].controller_data)
|
||||
cs_pin = (unsigned long) devices[i].controller_data;
|
||||
else if (devices[i].bus_num == 0)
|
||||
cs_pin = spi0_standard_cs[devices[i].chip_select];
|
||||
else
|
||||
cs_pin = spi1_standard_cs[devices[i].chip_select];
|
||||
|
||||
if (devices[i].bus_num == 0)
|
||||
enable_spi0 = 1;
|
||||
else
|
||||
enable_spi1 = 1;
|
||||
|
||||
/* enable chip-select pin */
|
||||
at91_set_gpio_output(cs_pin, 1);
|
||||
|
||||
/* pass chip-select pin to driver */
|
||||
devices[i].controller_data = (void *) cs_pin;
|
||||
}
|
||||
|
||||
spi_register_board_info(devices, nr_devices);
|
||||
|
||||
/* Configure SPI bus(es) */
|
||||
if (enable_spi0) {
|
||||
at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */
|
||||
at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */
|
||||
at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI1_SPCK */
|
||||
|
||||
at91_clock_associate("spi0_clk", &at91sam9260_spi0_device.dev, "spi_clk");
|
||||
platform_device_register(&at91sam9260_spi0_device);
|
||||
}
|
||||
if (enable_spi1) {
|
||||
at91_set_A_periph(AT91_PIN_PB0, 0); /* SPI1_MISO */
|
||||
at91_set_A_periph(AT91_PIN_PB1, 0); /* SPI1_MOSI */
|
||||
at91_set_A_periph(AT91_PIN_PB2, 0); /* SPI1_SPCK */
|
||||
|
||||
at91_clock_associate("spi1_clk", &at91sam9260_spi1_device.dev, "spi_clk");
|
||||
platform_device_register(&at91sam9260_spi1_device);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* LEDs
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_LEDS)
|
||||
u8 at91_leds_cpu;
|
||||
u8 at91_leds_timer;
|
||||
|
||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
||||
{
|
||||
at91_leds_cpu = cpu_led;
|
||||
at91_leds_timer = timer_led;
|
||||
}
|
||||
#else
|
||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* UART
|
||||
* -------------------------------------------------------------------- */
|
||||
#if defined(CONFIG_SERIAL_ATMEL)
|
||||
static struct resource dbgu_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_VA_BASE_SYS + AT91_DBGU,
|
||||
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_SYS,
|
||||
.end = AT91_ID_SYS,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data dbgu_data = {
|
||||
.use_dma_tx = 0,
|
||||
.use_dma_rx = 0, /* DBGU not capable of receive DMA */
|
||||
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_dbgu_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &dbgu_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = dbgu_resources,
|
||||
.num_resources = ARRAY_SIZE(dbgu_resources),
|
||||
};
|
||||
|
||||
static inline void configure_dbgu_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PB14, 0); /* DRXD */
|
||||
at91_set_A_periph(AT91_PIN_PB15, 1); /* DTXD */
|
||||
}
|
||||
|
||||
static struct resource uart0_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_US0,
|
||||
.end = AT91SAM9260_BASE_US0 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_US0,
|
||||
.end = AT91SAM9260_ID_US0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart0_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_uart0_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
.platform_data = &uart0_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart0_resources,
|
||||
.num_resources = ARRAY_SIZE(uart0_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart0_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD0 */
|
||||
at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD0 */
|
||||
at91_set_A_periph(AT91_PIN_PB26, 0); /* RTS0 */
|
||||
at91_set_A_periph(AT91_PIN_PB27, 0); /* CTS0 */
|
||||
at91_set_A_periph(AT91_PIN_PB24, 0); /* DTR0 */
|
||||
at91_set_A_periph(AT91_PIN_PB22, 0); /* DSR0 */
|
||||
at91_set_A_periph(AT91_PIN_PB23, 0); /* DCD0 */
|
||||
at91_set_A_periph(AT91_PIN_PB25, 0); /* RI0 */
|
||||
}
|
||||
|
||||
static struct resource uart1_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_US1,
|
||||
.end = AT91SAM9260_BASE_US1 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_US1,
|
||||
.end = AT91SAM9260_ID_US1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart1_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_uart1_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 2,
|
||||
.dev = {
|
||||
.platform_data = &uart1_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart1_resources,
|
||||
.num_resources = ARRAY_SIZE(uart1_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart1_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PB6, 1); /* TXD1 */
|
||||
at91_set_A_periph(AT91_PIN_PB7, 0); /* RXD1 */
|
||||
at91_set_A_periph(AT91_PIN_PB28, 0); /* RTS1 */
|
||||
at91_set_A_periph(AT91_PIN_PB29, 0); /* CTS1 */
|
||||
}
|
||||
|
||||
static struct resource uart2_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_US2,
|
||||
.end = AT91SAM9260_BASE_US2 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_US2,
|
||||
.end = AT91SAM9260_ID_US2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart2_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_uart2_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 3,
|
||||
.dev = {
|
||||
.platform_data = &uart2_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart2_resources,
|
||||
.num_resources = ARRAY_SIZE(uart2_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart2_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PB8, 1); /* TXD2 */
|
||||
at91_set_A_periph(AT91_PIN_PB9, 0); /* RXD2 */
|
||||
}
|
||||
|
||||
static struct resource uart3_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_US3,
|
||||
.end = AT91SAM9260_BASE_US3 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_US3,
|
||||
.end = AT91SAM9260_ID_US3,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart3_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_uart3_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 4,
|
||||
.dev = {
|
||||
.platform_data = &uart3_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart3_resources,
|
||||
.num_resources = ARRAY_SIZE(uart3_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart3_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PB10, 1); /* TXD3 */
|
||||
at91_set_A_periph(AT91_PIN_PB11, 0); /* RXD3 */
|
||||
}
|
||||
|
||||
static struct resource uart4_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_US4,
|
||||
.end = AT91SAM9260_BASE_US4 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_US4,
|
||||
.end = AT91SAM9260_ID_US4,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart4_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_uart4_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 5,
|
||||
.dev = {
|
||||
.platform_data = &uart4_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart4_resources,
|
||||
.num_resources = ARRAY_SIZE(uart4_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart4_pins(void)
|
||||
{
|
||||
at91_set_B_periph(AT91_PIN_PA31, 1); /* TXD4 */
|
||||
at91_set_B_periph(AT91_PIN_PA30, 0); /* RXD4 */
|
||||
}
|
||||
|
||||
static struct resource uart5_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9260_BASE_US5,
|
||||
.end = AT91SAM9260_BASE_US5 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9260_ID_US5,
|
||||
.end = AT91SAM9260_ID_US5,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart5_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_uart5_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 6,
|
||||
.dev = {
|
||||
.platform_data = &uart5_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart5_resources,
|
||||
.num_resources = ARRAY_SIZE(uart5_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart5_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PB12, 1); /* TXD5 */
|
||||
at91_set_A_periph(AT91_PIN_PB13, 0); /* RXD5 */
|
||||
}
|
||||
|
||||
struct platform_device *at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */
|
||||
struct platform_device *atmel_default_console_device; /* the serial console device */
|
||||
|
||||
void __init at91_init_serial(struct at91_uart_config *config)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Fill in list of supported UARTs */
|
||||
for (i = 0; i < config->nr_tty; i++) {
|
||||
switch (config->tty_map[i]) {
|
||||
case 0:
|
||||
configure_usart0_pins();
|
||||
at91_uarts[i] = &at91sam9260_uart0_device;
|
||||
at91_clock_associate("usart0_clk", &at91sam9260_uart0_device.dev, "usart");
|
||||
break;
|
||||
case 1:
|
||||
configure_usart1_pins();
|
||||
at91_uarts[i] = &at91sam9260_uart1_device;
|
||||
at91_clock_associate("usart1_clk", &at91sam9260_uart1_device.dev, "usart");
|
||||
break;
|
||||
case 2:
|
||||
configure_usart2_pins();
|
||||
at91_uarts[i] = &at91sam9260_uart2_device;
|
||||
at91_clock_associate("usart2_clk", &at91sam9260_uart2_device.dev, "usart");
|
||||
break;
|
||||
case 3:
|
||||
configure_usart3_pins();
|
||||
at91_uarts[i] = &at91sam9260_uart3_device;
|
||||
at91_clock_associate("usart3_clk", &at91sam9260_uart3_device.dev, "usart");
|
||||
break;
|
||||
case 4:
|
||||
configure_usart4_pins();
|
||||
at91_uarts[i] = &at91sam9260_uart4_device;
|
||||
at91_clock_associate("usart4_clk", &at91sam9260_uart4_device.dev, "usart");
|
||||
break;
|
||||
case 5:
|
||||
configure_usart5_pins();
|
||||
at91_uarts[i] = &at91sam9260_uart5_device;
|
||||
at91_clock_associate("usart5_clk", &at91sam9260_uart5_device.dev, "usart");
|
||||
break;
|
||||
case 6:
|
||||
configure_dbgu_pins();
|
||||
at91_uarts[i] = &at91sam9260_dbgu_device;
|
||||
at91_clock_associate("mck", &at91sam9260_dbgu_device.dev, "usart");
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
at91_uarts[i]->id = i; /* update ID number to mapped ID */
|
||||
}
|
||||
|
||||
/* Set serial console device */
|
||||
if (config->console_tty < ATMEL_MAX_UART)
|
||||
atmel_default_console_device = at91_uarts[config->console_tty];
|
||||
if (!atmel_default_console_device)
|
||||
printk(KERN_INFO "AT91: No default serial console defined.\n");
|
||||
}
|
||||
|
||||
void __init at91_add_device_serial(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ATMEL_MAX_UART; i++) {
|
||||
if (at91_uarts[i])
|
||||
platform_device_register(at91_uarts[i]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void __init at91_init_serial(struct at91_uart_config *config) {}
|
||||
void __init at91_add_device_serial(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/*
|
||||
* These devices are always present and don't need any board-specific
|
||||
* setup.
|
||||
*/
|
||||
static int __init at91_add_standard_devices(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
arch_initcall(at91_add_standard_devices);
|
||||
289
arch/arm/mach-at91rm9200/at91sam9261.c
Normal file
289
arch/arm/mach-at91rm9200/at91sam9261.c
Normal file
|
|
@ -0,0 +1,289 @@
|
|||
/*
|
||||
* arch/arm/mach-at91rm9200/at91sam9261.c
|
||||
*
|
||||
* Copyright (C) 2005 SAN People
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/arch/at91sam9261.h>
|
||||
#include <asm/arch/at91_pmc.h>
|
||||
|
||||
#include "generic.h"
|
||||
#include "clock.h"
|
||||
|
||||
static struct map_desc at91sam9261_io_desc[] __initdata = {
|
||||
{
|
||||
.virtual = AT91_VA_BASE_SYS,
|
||||
.pfn = __phys_to_pfn(AT91_BASE_SYS),
|
||||
.length = SZ_16K,
|
||||
.type = MT_DEVICE,
|
||||
}, {
|
||||
.virtual = AT91_IO_VIRT_BASE - AT91SAM9261_SRAM_SIZE,
|
||||
.pfn = __phys_to_pfn(AT91SAM9261_SRAM_BASE),
|
||||
.length = AT91SAM9261_SRAM_SIZE,
|
||||
.type = MT_DEVICE,
|
||||
},
|
||||
};
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* Clocks
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* The peripheral clocks.
|
||||
*/
|
||||
static struct clk pioA_clk = {
|
||||
.name = "pioA_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_PIOA,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk pioB_clk = {
|
||||
.name = "pioB_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_PIOB,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk pioC_clk = {
|
||||
.name = "pioC_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_PIOC,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart0_clk = {
|
||||
.name = "usart0_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_US0,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart1_clk = {
|
||||
.name = "usart1_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_US1,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk usart2_clk = {
|
||||
.name = "usart2_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_US2,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk mmc_clk = {
|
||||
.name = "mci_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_MCI,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk udc_clk = {
|
||||
.name = "udc_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_UDP,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk twi_clk = {
|
||||
.name = "twi_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_TWI,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk spi0_clk = {
|
||||
.name = "spi0_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_SPI0,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk spi1_clk = {
|
||||
.name = "spi1_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_SPI1,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk ohci_clk = {
|
||||
.name = "ohci_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_UHP,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
static struct clk lcdc_clk = {
|
||||
.name = "lcdc_clk",
|
||||
.pmc_mask = 1 << AT91SAM9261_ID_LCDC,
|
||||
.type = CLK_TYPE_PERIPHERAL,
|
||||
};
|
||||
|
||||
static struct clk *periph_clocks[] __initdata = {
|
||||
&pioA_clk,
|
||||
&pioB_clk,
|
||||
&pioC_clk,
|
||||
&usart0_clk,
|
||||
&usart1_clk,
|
||||
&usart2_clk,
|
||||
&mmc_clk,
|
||||
&udc_clk,
|
||||
&twi_clk,
|
||||
&spi0_clk,
|
||||
&spi1_clk,
|
||||
// ssc 0 .. ssc2
|
||||
// tc0 .. tc2
|
||||
&ohci_clk,
|
||||
&lcdc_clk,
|
||||
// irq0 .. irq2
|
||||
};
|
||||
|
||||
/*
|
||||
* The four programmable clocks.
|
||||
* You must configure pin multiplexing to bring these signals out.
|
||||
*/
|
||||
static struct clk pck0 = {
|
||||
.name = "pck0",
|
||||
.pmc_mask = AT91_PMC_PCK0,
|
||||
.type = CLK_TYPE_PROGRAMMABLE,
|
||||
.id = 0,
|
||||
};
|
||||
static struct clk pck1 = {
|
||||
.name = "pck1",
|
||||
.pmc_mask = AT91_PMC_PCK1,
|
||||
.type = CLK_TYPE_PROGRAMMABLE,
|
||||
.id = 1,
|
||||
};
|
||||
static struct clk pck2 = {
|
||||
.name = "pck2",
|
||||
.pmc_mask = AT91_PMC_PCK2,
|
||||
.type = CLK_TYPE_PROGRAMMABLE,
|
||||
.id = 2,
|
||||
};
|
||||
static struct clk pck3 = {
|
||||
.name = "pck3",
|
||||
.pmc_mask = AT91_PMC_PCK3,
|
||||
.type = CLK_TYPE_PROGRAMMABLE,
|
||||
.id = 3,
|
||||
};
|
||||
|
||||
/* HClocks */
|
||||
static struct clk hck0 = {
|
||||
.name = "hck0",
|
||||
.pmc_mask = AT91_PMC_HCK0,
|
||||
.type = CLK_TYPE_SYSTEM,
|
||||
.id = 0,
|
||||
};
|
||||
static struct clk hck1 = {
|
||||
.name = "hck1",
|
||||
.pmc_mask = AT91_PMC_HCK1,
|
||||
.type = CLK_TYPE_SYSTEM,
|
||||
.id = 1,
|
||||
};
|
||||
|
||||
static void __init at91sam9261_register_clocks(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(periph_clocks); i++)
|
||||
clk_register(periph_clocks[i]);
|
||||
|
||||
clk_register(&pck0);
|
||||
clk_register(&pck1);
|
||||
clk_register(&pck2);
|
||||
clk_register(&pck3);
|
||||
|
||||
clk_register(&hck0);
|
||||
clk_register(&hck1);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* GPIO
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
static struct at91_gpio_bank at91sam9261_gpio[] = {
|
||||
{
|
||||
.id = AT91SAM9261_ID_PIOA,
|
||||
.offset = AT91_PIOA,
|
||||
.clock = &pioA_clk,
|
||||
}, {
|
||||
.id = AT91SAM9261_ID_PIOB,
|
||||
.offset = AT91_PIOB,
|
||||
.clock = &pioB_clk,
|
||||
}, {
|
||||
.id = AT91SAM9261_ID_PIOC,
|
||||
.offset = AT91_PIOC,
|
||||
.clock = &pioC_clk,
|
||||
}
|
||||
};
|
||||
|
||||
static void at91sam9261_reset(void)
|
||||
{
|
||||
#warning "Implement CPU reset"
|
||||
}
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* AT91SAM9261 processor initialization
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
void __init at91sam9261_initialize(unsigned long main_clock)
|
||||
{
|
||||
/* Map peripherals */
|
||||
iotable_init(at91sam9261_io_desc, ARRAY_SIZE(at91sam9261_io_desc));
|
||||
|
||||
at91_arch_reset = at91sam9261_reset;
|
||||
at91_extern_irq = (1 << AT91SAM9261_ID_IRQ0) | (1 << AT91SAM9261_ID_IRQ1)
|
||||
| (1 << AT91SAM9261_ID_IRQ2);
|
||||
|
||||
/* Init clock subsystem */
|
||||
at91_clock_init(main_clock);
|
||||
|
||||
/* Register the processor-specific clocks */
|
||||
at91sam9261_register_clocks();
|
||||
|
||||
/* Register GPIO subsystem */
|
||||
at91_gpio_init(at91sam9261_gpio, 3);
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* Interrupt initialization
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* The default interrupt priority levels (0 = lowest, 7 = highest).
|
||||
*/
|
||||
static unsigned int at91sam9261_default_irq_priority[NR_AIC_IRQS] __initdata = {
|
||||
7, /* Advanced Interrupt Controller */
|
||||
7, /* System Peripherals */
|
||||
0, /* Parallel IO Controller A */
|
||||
0, /* Parallel IO Controller B */
|
||||
0, /* Parallel IO Controller C */
|
||||
0,
|
||||
6, /* USART 0 */
|
||||
6, /* USART 1 */
|
||||
6, /* USART 2 */
|
||||
0, /* Multimedia Card Interface */
|
||||
4, /* USB Device Port */
|
||||
0, /* Two-Wire Interface */
|
||||
6, /* Serial Peripheral Interface 0 */
|
||||
6, /* Serial Peripheral Interface 1 */
|
||||
5, /* Serial Synchronous Controller 0 */
|
||||
5, /* Serial Synchronous Controller 1 */
|
||||
5, /* Serial Synchronous Controller 2 */
|
||||
0, /* Timer Counter 0 */
|
||||
0, /* Timer Counter 1 */
|
||||
0, /* Timer Counter 2 */
|
||||
3, /* USB Host port */
|
||||
3, /* LCD Controller */
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0, /* Advanced Interrupt Controller */
|
||||
0, /* Advanced Interrupt Controller */
|
||||
0, /* Advanced Interrupt Controller */
|
||||
};
|
||||
|
||||
void __init at91sam9261_init_interrupts(unsigned int priority[NR_AIC_IRQS])
|
||||
{
|
||||
if (!priority)
|
||||
priority = at91sam9261_default_irq_priority;
|
||||
|
||||
/* Initialize the AIC interrupt controller */
|
||||
at91_aic_init(priority);
|
||||
|
||||
/* Enable GPIO interrupts */
|
||||
at91_gpio_irq_setup();
|
||||
}
|
||||
741
arch/arm/mach-at91rm9200/at91sam9261_devices.c
Normal file
741
arch/arm/mach-at91rm9200/at91sam9261_devices.c
Normal file
|
|
@ -0,0 +1,741 @@
|
|||
/*
|
||||
* arch/arm/mach-at91rm9200/at91sam9261_devices.c
|
||||
*
|
||||
* Copyright (C) 2005 Thibaut VARENE <varenet@parisc-linux.org>
|
||||
* Copyright (C) 2005 David Brownell
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
*/
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
#include <asm/arch/at91sam9261.h>
|
||||
#include <asm/arch/at91sam9261_matrix.h>
|
||||
#include <asm/arch/at91sam926x_mc.h>
|
||||
|
||||
#include "generic.h"
|
||||
|
||||
#define SZ_512 0x00000200
|
||||
#define SZ_256 0x00000100
|
||||
#define SZ_16 0x00000010
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* USB Host
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
|
||||
static u64 ohci_dmamask = 0xffffffffUL;
|
||||
static struct at91_usbh_data usbh_data;
|
||||
|
||||
static struct resource usbh_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_UHP_BASE,
|
||||
.end = AT91SAM9261_UHP_BASE + SZ_1M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_UHP,
|
||||
.end = AT91SAM9261_ID_UHP,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_usbh_device = {
|
||||
.name = "at91_ohci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &ohci_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &usbh_data,
|
||||
},
|
||||
.resource = usbh_resources,
|
||||
.num_resources = ARRAY_SIZE(usbh_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_usbh(struct at91_usbh_data *data)
|
||||
{
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
usbh_data = *data;
|
||||
platform_device_register(&at91sam9261_usbh_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_usbh(struct at91_usbh_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* USB Device (Gadget)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#ifdef CONFIG_USB_GADGET_AT91
|
||||
static struct at91_udc_data udc_data;
|
||||
|
||||
static struct resource udc_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_UDP,
|
||||
.end = AT91SAM9261_BASE_UDP + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_UDP,
|
||||
.end = AT91SAM9261_ID_UDP,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_udc_device = {
|
||||
.name = "at91_udc",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &udc_data,
|
||||
},
|
||||
.resource = udc_resources,
|
||||
.num_resources = ARRAY_SIZE(udc_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_udc(struct at91_udc_data *data)
|
||||
{
|
||||
unsigned long x;
|
||||
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
if (data->vbus_pin) {
|
||||
at91_set_gpio_input(data->vbus_pin, 0);
|
||||
at91_set_deglitch(data->vbus_pin, 1);
|
||||
}
|
||||
|
||||
/* Pullup pin is handled internally */
|
||||
x = at91_sys_read(AT91_MATRIX_USBPUCR);
|
||||
at91_sys_write(AT91_MATRIX_USBPUCR, x | AT91_MATRIX_USBPUCR_PUON);
|
||||
|
||||
udc_data = *data;
|
||||
platform_device_register(&at91sam9261_udc_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_udc(struct at91_udc_data *data) {}
|
||||
#endif
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* MMC / SD
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_MMC_AT91) || defined(CONFIG_MMC_AT91_MODULE)
|
||||
static u64 mmc_dmamask = 0xffffffffUL;
|
||||
static struct at91_mmc_data mmc_data;
|
||||
|
||||
static struct resource mmc_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_MCI,
|
||||
.end = AT91SAM9261_BASE_MCI + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_MCI,
|
||||
.end = AT91SAM9261_ID_MCI,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_mmc_device = {
|
||||
.name = "at91_mci",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.dma_mask = &mmc_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &mmc_data,
|
||||
},
|
||||
.resource = mmc_resources,
|
||||
.num_resources = ARRAY_SIZE(mmc_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_mmc(struct at91_mmc_data *data)
|
||||
{
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
/* input/irq */
|
||||
if (data->det_pin) {
|
||||
at91_set_gpio_input(data->det_pin, 1);
|
||||
at91_set_deglitch(data->det_pin, 1);
|
||||
}
|
||||
if (data->wp_pin)
|
||||
at91_set_gpio_input(data->wp_pin, 1);
|
||||
if (data->vcc_pin)
|
||||
at91_set_gpio_output(data->vcc_pin, 0);
|
||||
|
||||
/* CLK */
|
||||
at91_set_B_periph(AT91_PIN_PA2, 0);
|
||||
|
||||
/* CMD */
|
||||
at91_set_B_periph(AT91_PIN_PA1, 1);
|
||||
|
||||
/* DAT0, maybe DAT1..DAT3 */
|
||||
at91_set_B_periph(AT91_PIN_PA0, 1);
|
||||
if (data->wire4) {
|
||||
at91_set_B_periph(AT91_PIN_PA4, 1);
|
||||
at91_set_B_periph(AT91_PIN_PA5, 1);
|
||||
at91_set_B_periph(AT91_PIN_PA6, 1);
|
||||
}
|
||||
|
||||
mmc_data = *data;
|
||||
platform_device_register(&at91sam9261_mmc_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_mmc(struct at91_mmc_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* NAND / SmartMedia
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_MTD_NAND_AT91) || defined(CONFIG_MTD_NAND_AT91_MODULE)
|
||||
static struct at91_nand_data nand_data;
|
||||
|
||||
#define NAND_BASE AT91_CHIPSELECT_3
|
||||
|
||||
static struct resource nand_resources[] = {
|
||||
{
|
||||
.start = NAND_BASE,
|
||||
.end = NAND_BASE + SZ_256M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device at91_nand_device = {
|
||||
.name = "at91_nand",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &nand_data,
|
||||
},
|
||||
.resource = nand_resources,
|
||||
.num_resources = ARRAY_SIZE(nand_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_nand(struct at91_nand_data *data)
|
||||
{
|
||||
unsigned long csa, mode;
|
||||
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
csa = at91_sys_read(AT91_MATRIX_EBICSA);
|
||||
at91_sys_write(AT91_MATRIX_EBICSA, csa | AT91_MATRIX_CS3A_SMC);
|
||||
|
||||
/* set the bus interface characteristics */
|
||||
at91_sys_write(AT91_SMC_SETUP(3), AT91_SMC_NWESETUP_(0) | AT91_SMC_NCS_WRSETUP_(0)
|
||||
| AT91_SMC_NRDSETUP_(0) | AT91_SMC_NCS_RDSETUP_(0));
|
||||
|
||||
at91_sys_write(AT91_SMC_PULSE(3), AT91_SMC_NWEPULSE_(2) | AT91_SMC_NCS_WRPULSE_(5)
|
||||
| AT91_SMC_NRDPULSE_(2) | AT91_SMC_NCS_RDPULSE_(5));
|
||||
|
||||
at91_sys_write(AT91_SMC_CYCLE(3), AT91_SMC_NWECYCLE_(7) | AT91_SMC_NRDCYCLE_(7));
|
||||
|
||||
if (data->bus_width_16)
|
||||
mode = AT91_SMC_DBW_16;
|
||||
else
|
||||
mode = AT91_SMC_DBW_8;
|
||||
at91_sys_write(AT91_SMC_MODE(3), mode | AT91_SMC_READMODE | AT91_SMC_WRITEMODE | AT91_SMC_EXNWMODE_DISABLE | AT91_SMC_TDF_(1));
|
||||
|
||||
/* enable pin */
|
||||
if (data->enable_pin)
|
||||
at91_set_gpio_output(data->enable_pin, 1);
|
||||
|
||||
/* ready/busy pin */
|
||||
if (data->rdy_pin)
|
||||
at91_set_gpio_input(data->rdy_pin, 1);
|
||||
|
||||
/* card detect pin */
|
||||
if (data->det_pin)
|
||||
at91_set_gpio_input(data->det_pin, 1);
|
||||
|
||||
at91_set_A_periph(AT91_PIN_PC0, 0); /* NANDOE */
|
||||
at91_set_A_periph(AT91_PIN_PC1, 0); /* NANDWE */
|
||||
|
||||
nand_data = *data;
|
||||
platform_device_register(&at91_nand_device);
|
||||
}
|
||||
|
||||
#else
|
||||
void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* TWI (i2c)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_TWI,
|
||||
.end = AT91SAM9261_BASE_TWI + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_TWI,
|
||||
.end = AT91SAM9261_ID_TWI,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_twi_device = {
|
||||
.name = "at91_i2c",
|
||||
.id = -1,
|
||||
.resource = twi_resources,
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
{
|
||||
/* pins used for TWI interface */
|
||||
at91_set_A_periph(AT91_PIN_PA7, 0); /* TWD */
|
||||
at91_set_multi_drive(AT91_PIN_PA7, 1);
|
||||
|
||||
at91_set_A_periph(AT91_PIN_PA8, 0); /* TWCK */
|
||||
at91_set_multi_drive(AT91_PIN_PA8, 1);
|
||||
|
||||
platform_device_register(&at91sam9261_twi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_i2c(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* SPI
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_SPI_ATMEL) || defined(CONFIG_SPI_ATMEL_MODULE)
|
||||
static u64 spi_dmamask = 0xffffffffUL;
|
||||
|
||||
static struct resource spi0_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_SPI0,
|
||||
.end = AT91SAM9261_BASE_SPI0 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_SPI0,
|
||||
.end = AT91SAM9261_ID_SPI0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_spi0_device = {
|
||||
.name = "atmel_spi",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.dma_mask = &spi_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = spi0_resources,
|
||||
.num_resources = ARRAY_SIZE(spi0_resources),
|
||||
};
|
||||
|
||||
static const unsigned spi0_standard_cs[4] = { AT91_PIN_PA3, AT91_PIN_PA4, AT91_PIN_PA5, AT91_PIN_PA6 };
|
||||
|
||||
static struct resource spi1_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_SPI1,
|
||||
.end = AT91SAM9261_BASE_SPI1 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_SPI1,
|
||||
.end = AT91SAM9261_ID_SPI1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_spi1_device = {
|
||||
.name = "atmel_spi",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
.dma_mask = &spi_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = spi1_resources,
|
||||
.num_resources = ARRAY_SIZE(spi1_resources),
|
||||
};
|
||||
|
||||
static const unsigned spi1_standard_cs[4] = { AT91_PIN_PB28, AT91_PIN_PA24, AT91_PIN_PA25, AT91_PIN_PA26 };
|
||||
|
||||
void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices)
|
||||
{
|
||||
int i;
|
||||
unsigned long cs_pin;
|
||||
short enable_spi0 = 0;
|
||||
short enable_spi1 = 0;
|
||||
|
||||
/* Choose SPI chip-selects */
|
||||
for (i = 0; i < nr_devices; i++) {
|
||||
if (devices[i].controller_data)
|
||||
cs_pin = (unsigned long) devices[i].controller_data;
|
||||
else if (devices[i].bus_num == 0)
|
||||
cs_pin = spi0_standard_cs[devices[i].chip_select];
|
||||
else
|
||||
cs_pin = spi1_standard_cs[devices[i].chip_select];
|
||||
|
||||
if (devices[i].bus_num == 0)
|
||||
enable_spi0 = 1;
|
||||
else
|
||||
enable_spi1 = 1;
|
||||
|
||||
/* enable chip-select pin */
|
||||
at91_set_gpio_output(cs_pin, 1);
|
||||
|
||||
/* pass chip-select pin to driver */
|
||||
devices[i].controller_data = (void *) cs_pin;
|
||||
}
|
||||
|
||||
spi_register_board_info(devices, nr_devices);
|
||||
|
||||
/* Configure SPI bus(es) */
|
||||
if (enable_spi0) {
|
||||
at91_set_A_periph(AT91_PIN_PA0, 0); /* SPI0_MISO */
|
||||
at91_set_A_periph(AT91_PIN_PA1, 0); /* SPI0_MOSI */
|
||||
at91_set_A_periph(AT91_PIN_PA2, 0); /* SPI0_SPCK */
|
||||
|
||||
at91_clock_associate("spi0_clk", &at91sam9261_spi0_device.dev, "spi_clk");
|
||||
platform_device_register(&at91sam9261_spi0_device);
|
||||
}
|
||||
if (enable_spi1) {
|
||||
at91_set_A_periph(AT91_PIN_PB30, 0); /* SPI1_MISO */
|
||||
at91_set_A_periph(AT91_PIN_PB31, 0); /* SPI1_MOSI */
|
||||
at91_set_A_periph(AT91_PIN_PB29, 0); /* SPI1_SPCK */
|
||||
|
||||
at91_clock_associate("spi1_clk", &at91sam9261_spi1_device.dev, "spi_clk");
|
||||
platform_device_register(&at91sam9261_spi1_device);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_spi(struct spi_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* LCD Controller
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_FB_AT91) || defined(CONFIG_FB_AT91_MODULE)
|
||||
static u64 lcdc_dmamask = 0xffffffffUL;
|
||||
static struct at91fb_info lcdc_data;
|
||||
|
||||
static struct resource lcdc_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_LCDC_BASE,
|
||||
.end = AT91SAM9261_LCDC_BASE + SZ_4K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_LCDC,
|
||||
.end = AT91SAM9261_ID_LCDC,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
#if defined(CONFIG_FB_INTSRAM)
|
||||
[2] = {
|
||||
.start = AT91SAM9261_SRAM_BASE,
|
||||
.end = AT91SAM9261_SRAM_BASE + AT91SAM9261_SRAM_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct platform_device at91_lcdc_device = {
|
||||
.name = "at91-fb",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.dma_mask = &lcdc_dmamask,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
.platform_data = &lcdc_data,
|
||||
},
|
||||
.resource = lcdc_resources,
|
||||
.num_resources = ARRAY_SIZE(lcdc_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_lcdc(struct at91fb_info *data)
|
||||
{
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
at91_set_A_periph(AT91_PIN_PB1, 0); /* LCDHSYNC */
|
||||
at91_set_A_periph(AT91_PIN_PB2, 0); /* LCDDOTCK */
|
||||
at91_set_A_periph(AT91_PIN_PB3, 0); /* LCDDEN */
|
||||
at91_set_A_periph(AT91_PIN_PB4, 0); /* LCDCC */
|
||||
at91_set_A_periph(AT91_PIN_PB7, 0); /* LCDD2 */
|
||||
at91_set_A_periph(AT91_PIN_PB8, 0); /* LCDD3 */
|
||||
at91_set_A_periph(AT91_PIN_PB9, 0); /* LCDD4 */
|
||||
at91_set_A_periph(AT91_PIN_PB10, 0); /* LCDD5 */
|
||||
at91_set_A_periph(AT91_PIN_PB11, 0); /* LCDD6 */
|
||||
at91_set_A_periph(AT91_PIN_PB12, 0); /* LCDD7 */
|
||||
at91_set_A_periph(AT91_PIN_PB15, 0); /* LCDD10 */
|
||||
at91_set_A_periph(AT91_PIN_PB16, 0); /* LCDD11 */
|
||||
at91_set_A_periph(AT91_PIN_PB17, 0); /* LCDD12 */
|
||||
at91_set_A_periph(AT91_PIN_PB18, 0); /* LCDD13 */
|
||||
at91_set_A_periph(AT91_PIN_PB19, 0); /* LCDD14 */
|
||||
at91_set_A_periph(AT91_PIN_PB20, 0); /* LCDD15 */
|
||||
at91_set_B_periph(AT91_PIN_PB23, 0); /* LCDD18 */
|
||||
at91_set_B_periph(AT91_PIN_PB24, 0); /* LCDD19 */
|
||||
at91_set_B_periph(AT91_PIN_PB25, 0); /* LCDD20 */
|
||||
at91_set_B_periph(AT91_PIN_PB26, 0); /* LCDD21 */
|
||||
at91_set_B_periph(AT91_PIN_PB27, 0); /* LCDD22 */
|
||||
at91_set_B_periph(AT91_PIN_PB28, 0); /* LCDD23 */
|
||||
|
||||
lcdc_data = *data;
|
||||
platform_device_register(&at91_lcdc_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_lcdc(struct at91fb_info *data) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* LEDs
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_LEDS)
|
||||
u8 at91_leds_cpu;
|
||||
u8 at91_leds_timer;
|
||||
|
||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led)
|
||||
{
|
||||
at91_leds_cpu = cpu_led;
|
||||
at91_leds_timer = timer_led;
|
||||
}
|
||||
#else
|
||||
void __init at91_init_leds(u8 cpu_led, u8 timer_led) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* --------------------------------------------------------------------
|
||||
* UART
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_SERIAL_ATMEL)
|
||||
static struct resource dbgu_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91_VA_BASE_SYS + AT91_DBGU,
|
||||
.end = AT91_VA_BASE_SYS + AT91_DBGU + SZ_512 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91_ID_SYS,
|
||||
.end = AT91_ID_SYS,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data dbgu_data = {
|
||||
.use_dma_tx = 0,
|
||||
.use_dma_rx = 0, /* DBGU not capable of receive DMA */
|
||||
.regs = (void __iomem *)(AT91_VA_BASE_SYS + AT91_DBGU),
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_dbgu_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &dbgu_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = dbgu_resources,
|
||||
.num_resources = ARRAY_SIZE(dbgu_resources),
|
||||
};
|
||||
|
||||
static inline void configure_dbgu_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PA9, 0); /* DRXD */
|
||||
at91_set_A_periph(AT91_PIN_PA10, 1); /* DTXD */
|
||||
}
|
||||
|
||||
static struct resource uart0_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_US0,
|
||||
.end = AT91SAM9261_BASE_US0 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_US0,
|
||||
.end = AT91SAM9261_ID_US0,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart0_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_uart0_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 1,
|
||||
.dev = {
|
||||
.platform_data = &uart0_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart0_resources,
|
||||
.num_resources = ARRAY_SIZE(uart0_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart0_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PC8, 1); /* TXD0 */
|
||||
at91_set_A_periph(AT91_PIN_PC9, 0); /* RXD0 */
|
||||
at91_set_A_periph(AT91_PIN_PC10, 0); /* RTS0 */
|
||||
at91_set_A_periph(AT91_PIN_PC11, 0); /* CTS0 */
|
||||
}
|
||||
|
||||
static struct resource uart1_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_US1,
|
||||
.end = AT91SAM9261_BASE_US1 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_US1,
|
||||
.end = AT91SAM9261_ID_US1,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart1_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_uart1_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 2,
|
||||
.dev = {
|
||||
.platform_data = &uart1_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart1_resources,
|
||||
.num_resources = ARRAY_SIZE(uart1_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart1_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PC12, 1); /* TXD1 */
|
||||
at91_set_A_periph(AT91_PIN_PC13, 0); /* RXD1 */
|
||||
}
|
||||
|
||||
static struct resource uart2_resources[] = {
|
||||
[0] = {
|
||||
.start = AT91SAM9261_BASE_US2,
|
||||
.end = AT91SAM9261_BASE_US2 + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = AT91SAM9261_ID_US2,
|
||||
.end = AT91SAM9261_ID_US2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct atmel_uart_data uart2_data = {
|
||||
.use_dma_tx = 1,
|
||||
.use_dma_rx = 1,
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_uart2_device = {
|
||||
.name = "atmel_usart",
|
||||
.id = 3,
|
||||
.dev = {
|
||||
.platform_data = &uart2_data,
|
||||
.coherent_dma_mask = 0xffffffff,
|
||||
},
|
||||
.resource = uart2_resources,
|
||||
.num_resources = ARRAY_SIZE(uart2_resources),
|
||||
};
|
||||
|
||||
static inline void configure_usart2_pins(void)
|
||||
{
|
||||
at91_set_A_periph(AT91_PIN_PC15, 0); /* RXD2 */
|
||||
at91_set_A_periph(AT91_PIN_PC14, 1); /* TXD2 */
|
||||
}
|
||||
|
||||
struct platform_device *at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */
|
||||
struct platform_device *atmel_default_console_device; /* the serial console device */
|
||||
|
||||
void __init at91_init_serial(struct at91_uart_config *config)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Fill in list of supported UARTs */
|
||||
for (i = 0; i < config->nr_tty; i++) {
|
||||
switch (config->tty_map[i]) {
|
||||
case 0:
|
||||
configure_usart0_pins();
|
||||
at91_uarts[i] = &at91sam9261_uart0_device;
|
||||
at91_clock_associate("usart0_clk", &at91sam9261_uart0_device.dev, "usart");
|
||||
break;
|
||||
case 1:
|
||||
configure_usart1_pins();
|
||||
at91_uarts[i] = &at91sam9261_uart1_device;
|
||||
at91_clock_associate("usart1_clk", &at91sam9261_uart1_device.dev, "usart");
|
||||
break;
|
||||
case 2:
|
||||
configure_usart2_pins();
|
||||
at91_uarts[i] = &at91sam9261_uart2_device;
|
||||
at91_clock_associate("usart2_clk", &at91sam9261_uart2_device.dev, "usart");
|
||||
break;
|
||||
case 3:
|
||||
configure_dbgu_pins();
|
||||
at91_uarts[i] = &at91sam9261_dbgu_device;
|
||||
at91_clock_associate("mck", &at91sam9261_dbgu_device.dev, "usart");
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
at91_uarts[i]->id = i; /* update ID number to mapped ID */
|
||||
}
|
||||
|
||||
/* Set serial console device */
|
||||
if (config->console_tty < ATMEL_MAX_UART)
|
||||
atmel_default_console_device = at91_uarts[config->console_tty];
|
||||
if (!atmel_default_console_device)
|
||||
printk(KERN_INFO "AT91: No default serial console defined.\n");
|
||||
}
|
||||
|
||||
void __init at91_add_device_serial(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ATMEL_MAX_UART; i++) {
|
||||
if (at91_uarts[i])
|
||||
platform_device_register(at91_uarts[i]);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void __init at91_init_serial(struct at91_uart_config *config) {}
|
||||
void __init at91_add_device_serial(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
/*
|
||||
* These devices are always present and don't need any board-specific
|
||||
* setup.
|
||||
*/
|
||||
static int __init at91_add_standard_devices(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
arch_initcall(at91_add_standard_devices);
|
||||
114
arch/arm/mach-at91rm9200/at91sam926x_time.c
Normal file
114
arch/arm/mach-at91rm9200/at91sam926x_time.c
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
/*
|
||||
* linux/arch/arm/mach-at91rm9200/at91sam926x_time.c
|
||||
*
|
||||
* Copyright (C) 2005-2006 M. Amine SAYA, ATMEL Rousset, France
|
||||
* Revision 2005 M. Nicolas Diremdjian, ATMEL Rousset, France
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/time.h>
|
||||
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
#include <asm/arch/at91_pit.h>
|
||||
|
||||
|
||||
#define PIT_CPIV(x) ((x) & AT91_PIT_CPIV)
|
||||
#define PIT_PICNT(x) (((x) & AT91_PIT_PICNT) >> 20)
|
||||
|
||||
/*
|
||||
* Returns number of microseconds since last timer interrupt. Note that interrupts
|
||||
* will have been disabled by do_gettimeofday()
|
||||
* 'LATCH' is hwclock ticks (see CLOCK_TICK_RATE in timex.h) per jiffy.
|
||||
* 'tick' is usecs per jiffy (linux/timex.h).
|
||||
*/
|
||||
static unsigned long at91sam926x_gettimeoffset(void)
|
||||
{
|
||||
unsigned long elapsed;
|
||||
unsigned long t = at91_sys_read(AT91_PIT_PIIR);
|
||||
|
||||
elapsed = (PIT_PICNT(t) * LATCH) + PIT_CPIV(t); /* hardware clock cycles */
|
||||
|
||||
return (unsigned long)(elapsed * 1000000) / LATCH;
|
||||
}
|
||||
|
||||
/*
|
||||
* IRQ handler for the timer.
|
||||
*/
|
||||
static irqreturn_t at91sam926x_timer_interrupt(int irq, void *dev_id)
|
||||
{
|
||||
volatile long nr_ticks;
|
||||
|
||||
if (at91_sys_read(AT91_PIT_SR) & AT91_PIT_PITS) { /* This is a shared interrupt */
|
||||
write_seqlock(&xtime_lock);
|
||||
|
||||
/* Get number to ticks performed before interrupt and clear PIT interrupt */
|
||||
nr_ticks = PIT_PICNT(at91_sys_read(AT91_PIT_PIVR));
|
||||
do {
|
||||
timer_tick();
|
||||
nr_ticks--;
|
||||
} while (nr_ticks);
|
||||
|
||||
write_sequnlock(&xtime_lock);
|
||||
return IRQ_HANDLED;
|
||||
} else
|
||||
return IRQ_NONE; /* not handled */
|
||||
}
|
||||
|
||||
static struct irqaction at91sam926x_timer_irq = {
|
||||
.name = "at91_tick",
|
||||
.flags = IRQF_SHARED | IRQF_DISABLED | IRQF_TIMER,
|
||||
.handler = at91sam926x_timer_interrupt
|
||||
};
|
||||
|
||||
void at91sam926x_timer_reset(void)
|
||||
{
|
||||
/* Disable timer */
|
||||
at91_sys_write(AT91_PIT_MR, 0);
|
||||
|
||||
/* Clear any pending interrupts */
|
||||
(void) at91_sys_read(AT91_PIT_PIVR);
|
||||
|
||||
/* Set Period Interval timer and enable its interrupt */
|
||||
at91_sys_write(AT91_PIT_MR, (LATCH & AT91_PIT_PIV) | AT91_PIT_PITIEN | AT91_PIT_PITEN);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set up timer interrupt.
|
||||
*/
|
||||
void __init at91sam926x_timer_init(void)
|
||||
{
|
||||
/* Initialize and enable the timer */
|
||||
at91sam926x_timer_reset();
|
||||
|
||||
/* Make IRQs happen for the system timer. */
|
||||
setup_irq(AT91_ID_SYS, &at91sam926x_timer_irq);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static void at91sam926x_timer_suspend(void)
|
||||
{
|
||||
/* Disable timer */
|
||||
at91_sys_write(AT91_PIT_MR, 0);
|
||||
}
|
||||
#else
|
||||
#define at91sam926x_timer_suspend NULL
|
||||
#endif
|
||||
|
||||
struct sys_timer at91sam926x_timer = {
|
||||
.init = at91sam926x_timer_init,
|
||||
.offset = at91sam926x_gettimeoffset,
|
||||
.suspend = at91sam926x_timer_suspend,
|
||||
.resume = at91sam926x_timer_reset,
|
||||
};
|
||||
|
||||
|
|
@ -65,7 +65,6 @@ static void __init carmeva_init_irq(void)
|
|||
at91rm9200_init_interrupts(NULL);
|
||||
}
|
||||
|
||||
|
||||
static struct at91_eth_data __initdata carmeva_eth_data = {
|
||||
.phy_irq_pin = AT91_PIN_PC4,
|
||||
.is_rmii = 1,
|
||||
|
|
@ -89,8 +88,33 @@ static struct at91_udc_data __initdata carmeva_udc_data = {
|
|||
// };
|
||||
|
||||
static struct at91_mmc_data __initdata carmeva_mmc_data = {
|
||||
.is_b = 0,
|
||||
.slot_b = 0,
|
||||
.wire4 = 1,
|
||||
.det_pin = AT91_PIN_PB10,
|
||||
.wp_pin = AT91_PIN_PC14,
|
||||
};
|
||||
|
||||
static struct spi_board_info carmeva_spi_devices[] = {
|
||||
{ /* DataFlash chip */
|
||||
.modalias = "mtd_dataflash",
|
||||
.chip_select = 0,
|
||||
.max_speed_hz = 10 * 1000 * 1000,
|
||||
},
|
||||
{ /* User accessable spi - cs1 (250KHz) */
|
||||
.modalias = "spi-cs1",
|
||||
.chip_select = 1,
|
||||
.max_speed_hz = 250 * 1000,
|
||||
},
|
||||
{ /* User accessable spi - cs2 (1MHz) */
|
||||
.modalias = "spi-cs2",
|
||||
.chip_select = 2,
|
||||
.max_speed_hz = 1 * 1000 * 1000,
|
||||
},
|
||||
{ /* User accessable spi - cs3 (10MHz) */
|
||||
.modalias = "spi-cs3",
|
||||
.chip_select = 3,
|
||||
.max_speed_hz = 10 * 1000 * 1000,
|
||||
},
|
||||
};
|
||||
|
||||
static void __init carmeva_board_init(void)
|
||||
|
|
@ -105,10 +129,10 @@ static void __init carmeva_board_init(void)
|
|||
at91_add_device_udc(&carmeva_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
/* SPI */
|
||||
at91_add_device_spi(carmeva_spi_devices, ARRAY_SIZE(carmeva_spi_devices));
|
||||
/* Compact Flash */
|
||||
// at91_add_device_cf(&carmeva_cf_data);
|
||||
/* SPI */
|
||||
// at91_add_device_spi(NULL, 0);
|
||||
/* MMC */
|
||||
at91_add_device_mmc(&carmeva_mmc_data);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ static struct at91_cf_data __initdata csb337_cf_data = {
|
|||
|
||||
static struct at91_mmc_data __initdata csb337_mmc_data = {
|
||||
.det_pin = AT91_PIN_PD5,
|
||||
.is_b = 0,
|
||||
.slot_b = 0,
|
||||
.wire4 = 1,
|
||||
.wp_pin = AT91_PIN_PD6,
|
||||
};
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue