aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-01-12 15:23:49 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-12 15:23:49 -0500
commitbf785ee0aeea7a3e717cb1e11df4135b6cbde7da (patch)
tree32ae52ad51c2a3952f2e1a2af9217717954fa593
parent8b87e1baff24e586c3fe6c168843d213119bf4dd (diff)
parent00431707be0cc1236ee08459367872b57da5be29 (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
-rw-r--r--arch/arm/boot/compressed/head.S46
-rw-r--r--arch/arm/common/rtctime.c15
-rw-r--r--arch/arm/configs/at91rm9200dk_defconfig1009
-rw-r--r--arch/arm/configs/at91rm9200ek_defconfig998
-rw-r--r--arch/arm/configs/csb337_defconfig1136
-rw-r--r--arch/arm/configs/csb637_defconfig1116
-rw-r--r--arch/arm/kernel/ecard.c7
-rw-r--r--arch/arm/kernel/fiq.c4
-rw-r--r--arch/arm/kernel/setup.c15
-rw-r--r--arch/arm/lib/csumpartialcopy.S6
-rw-r--r--arch/arm/lib/csumpartialcopygeneric.S6
-rw-r--r--arch/arm/lib/csumpartialcopyuser.S8
-rw-r--r--arch/arm/mach-aaec2000/clock.c15
-rw-r--r--arch/arm/mach-at91rm9200/Makefile8
-rw-r--r--arch/arm/mach-at91rm9200/board-csb337.c143
-rw-r--r--arch/arm/mach-at91rm9200/board-csb637.c116
-rw-r--r--arch/arm/mach-at91rm9200/board-dk.c138
-rw-r--r--arch/arm/mach-at91rm9200/board-ek.c131
-rw-r--r--arch/arm/mach-integrator/clock.c15
-rw-r--r--arch/arm/mach-pxa/ssp.c17
-rw-r--r--arch/arm/mach-realview/clock.c15
-rw-r--r--arch/arm/mach-s3c2410/clock.c11
-rw-r--r--arch/arm/mach-versatile/clock.c15
-rw-r--r--arch/arm/mm/consistent.c53
-rw-r--r--arch/arm/plat-omap/clock.c15
-rw-r--r--drivers/i2c/busses/i2c-pxa.c10
-rw-r--r--drivers/pcmcia/pxa2xx_mainstone.c15
-rw-r--r--drivers/pcmcia/pxa2xx_sharpsl.c19
-rw-r--r--drivers/serial/Kconfig34
-rw-r--r--drivers/serial/Makefile1
-rw-r--r--drivers/serial/at91_serial.c894
-rw-r--r--include/asm-arm/arch-at91rm9200/at91rm9200_pdc.h36
-rw-r--r--include/asm-arm/arch-at91rm9200/at91rm9200_usart.h123
-rw-r--r--include/asm-arm/byteorder.h11
-rw-r--r--include/asm-arm/mach/serial_at91rm9200.h36
-rw-r--r--include/asm-arm/memory.h9
-rw-r--r--include/linux/serial_core.h3
37 files changed, 6114 insertions, 135 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index 6abafb6f1844..aaa47400eb9c 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -84,7 +84,7 @@
84 kputc #'\n' 84 kputc #'\n'
85 kphex r5, 8 /* decompressed kernel start */ 85 kphex r5, 8 /* decompressed kernel start */
86 kputc #'-' 86 kputc #'-'
87 kphex r8, 8 /* decompressed kernel end */ 87 kphex r9, 8 /* decompressed kernel end */
88 kputc #'>' 88 kputc #'>'
89 kphex r4, 8 /* kernel execution address */ 89 kphex r4, 8 /* kernel execution address */
90 kputc #'\n' 90 kputc #'\n'
@@ -116,7 +116,7 @@ start:
116 .word start @ absolute load/run zImage address 116 .word start @ absolute load/run zImage address
117 .word _edata @ zImage end address 117 .word _edata @ zImage end address
1181: mov r7, r1 @ save architecture ID 1181: mov r7, r1 @ save architecture ID
119 mov r8, #0 @ save r0 119 mov r8, r2 @ save atags pointer
120 120
121#ifndef __ARM_ARCH_2__ 121#ifndef __ARM_ARCH_2__
122 /* 122 /*
@@ -144,7 +144,7 @@ not_angel:
144 144
145 /* 145 /*
146 * some architecture specific code can be inserted 146 * some architecture specific code can be inserted
147 * by the linker here, but it should preserve r7 and r8. 147 * by the linker here, but it should preserve r7, r8, and r9.
148 */ 148 */
149 149
150 .text 150 .text
@@ -249,16 +249,17 @@ not_relocated: mov r0, #0
249 * r5 = decompressed kernel start 249 * r5 = decompressed kernel start
250 * r6 = processor ID 250 * r6 = processor ID
251 * r7 = architecture ID 251 * r7 = architecture ID
252 * r8-r14 = unused 252 * r8 = atags pointer
253 * r9-r14 = corrupted
253 */ 254 */
254 add r1, r5, r0 @ end of decompressed kernel 255 add r1, r5, r0 @ end of decompressed kernel
255 adr r2, reloc_start 256 adr r2, reloc_start
256 ldr r3, LC1 257 ldr r3, LC1
257 add r3, r2, r3 258 add r3, r2, r3
2581: ldmia r2!, {r8 - r13} @ copy relocation code 2591: ldmia r2!, {r9 - r14} @ copy relocation code
259 stmia r1!, {r8 - r13} 260 stmia r1!, {r9 - r14}
260 ldmia r2!, {r8 - r13} 261 ldmia r2!, {r9 - r14}
261 stmia r1!, {r8 - r13} 262 stmia r1!, {r9 - r14}
262 cmp r2, r3 263 cmp r2, r3
263 blo 1b 264 blo 1b
264 265
@@ -308,11 +309,12 @@ params: ldr r0, =params_phys
308 * r4 = kernel execution address 309 * r4 = kernel execution address
309 * r6 = processor ID 310 * r6 = processor ID
310 * r7 = architecture number 311 * r7 = architecture number
311 * r8 = run-time address of "start" 312 * r8 = atags pointer
313 * r9 = run-time address of "start" (???)
312 * On exit, 314 * On exit,
313 * r1, r2, r3, r8, r9, r12 corrupted 315 * r1, r2, r3, r9, r10, r12 corrupted
314 * This routine must preserve: 316 * This routine must preserve:
315 * r4, r5, r6, r7 317 * r4, r5, r6, r7, r8
316 */ 318 */
317 .align 5 319 .align 5
318cache_on: mov r3, #8 @ cache_on function 320cache_on: mov r3, #8 @ cache_on function
@@ -326,15 +328,15 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size
326 * bits for the RAM area only. 328 * bits for the RAM area only.
327 */ 329 */
328 mov r0, r3 330 mov r0, r3
329 mov r8, r0, lsr #18 331 mov r9, r0, lsr #18
330 mov r8, r8, lsl #18 @ start of RAM 332 mov r9, r9, lsl #18 @ start of RAM
331 add r9, r8, #0x10000000 @ a reasonable RAM size 333 add r10, r9, #0x10000000 @ a reasonable RAM size
332 mov r1, #0x12 334 mov r1, #0x12
333 orr r1, r1, #3 << 10 335 orr r1, r1, #3 << 10
334 add r2, r3, #16384 336 add r2, r3, #16384
3351: cmp r1, r8 @ if virt > start of RAM 3371: cmp r1, r8 @ if virt > start of RAM
336 orrhs r1, r1, #0x0c @ set cacheable, bufferable 338 orrhs r1, r1, #0x0c @ set cacheable, bufferable
337 cmp r1, r9 @ if virt > end of RAM 339 cmp r1, r10 @ if virt > end of RAM
338 bichs r1, r1, #0x0c @ clear cacheable, bufferable 340 bichs r1, r1, #0x0c @ clear cacheable, bufferable
339 str r1, [r0], #4 @ 1:1 mapping 341 str r1, [r0], #4 @ 1:1 mapping
340 add r1, r1, #1048576 342 add r1, r1, #1048576
@@ -403,26 +405,28 @@ __common_cache_on:
403 * r5 = decompressed kernel start 405 * r5 = decompressed kernel start
404 * r6 = processor ID 406 * r6 = processor ID
405 * r7 = architecture ID 407 * r7 = architecture ID
406 * r8-r14 = unused 408 * r8 = atags pointer
409 * r9-r14 = corrupted
407 */ 410 */
408 .align 5 411 .align 5
409reloc_start: add r8, r5, r0 412reloc_start: add r9, r5, r0
410 debug_reloc_start 413 debug_reloc_start
411 mov r1, r4 414 mov r1, r4
4121: 4151:
413 .rept 4 416 .rept 4
414 ldmia r5!, {r0, r2, r3, r9 - r13} @ relocate kernel 417 ldmia r5!, {r0, r2, r3, r10 - r14} @ relocate kernel
415 stmia r1!, {r0, r2, r3, r9 - r13} 418 stmia r1!, {r0, r2, r3, r10 - r14}
416 .endr 419 .endr
417 420
418 cmp r5, r8 421 cmp r5, r9
419 blo 1b 422 blo 1b
420 debug_reloc_end 423 debug_reloc_end
421 424
422call_kernel: bl cache_clean_flush 425call_kernel: bl cache_clean_flush
423 bl cache_off 426 bl cache_off
424 mov r0, #0 427 mov r0, #0 @ must be zero
425 mov r1, r7 @ restore architecture number 428 mov r1, r7 @ restore architecture number
429 mov r2, r8 @ restore atags pointer
426 mov pc, r4 @ call kernel 430 mov pc, r4 @ call kernel
427 431
428/* 432/*
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c
index ffb82d5bedef..48b1e19b131f 100644
--- a/arch/arm/common/rtctime.c
+++ b/arch/arm/common/rtctime.c
@@ -19,6 +19,7 @@
19#include <linux/spinlock.h> 19#include <linux/spinlock.h>
20#include <linux/capability.h> 20#include <linux/capability.h>
21#include <linux/device.h> 21#include <linux/device.h>
22#include <linux/mutex.h>
22 23
23#include <asm/rtc.h> 24#include <asm/rtc.h>
24#include <asm/semaphore.h> 25#include <asm/semaphore.h>
@@ -35,7 +36,7 @@ static unsigned long rtc_irq_data;
35/* 36/*
36 * rtc_sem protects rtc_inuse and rtc_ops 37 * rtc_sem protects rtc_inuse and rtc_ops
37 */ 38 */
38static DECLARE_MUTEX(rtc_sem); 39static DEFINE_MUTEX(rtc_mutex);
39static unsigned long rtc_inuse; 40static unsigned long rtc_inuse;
40static struct rtc_ops *rtc_ops; 41static struct rtc_ops *rtc_ops;
41 42
@@ -356,7 +357,7 @@ static int rtc_open(struct inode *inode, struct file *file)
356{ 357{
357 int ret; 358 int ret;
358 359
359 down(&rtc_sem); 360 mutex_lock(&rtc_mutex);
360 361
361 if (rtc_inuse) { 362 if (rtc_inuse) {
362 ret = -EBUSY; 363 ret = -EBUSY;
@@ -374,7 +375,7 @@ static int rtc_open(struct inode *inode, struct file *file)
374 rtc_inuse = 1; 375 rtc_inuse = 1;
375 } 376 }
376 } 377 }
377 up(&rtc_sem); 378 mutex_unlock(&rtc_mutex);
378 379
379 return ret; 380 return ret;
380} 381}
@@ -480,7 +481,7 @@ int register_rtc(struct rtc_ops *ops)
480{ 481{
481 int ret = -EBUSY; 482 int ret = -EBUSY;
482 483
483 down(&rtc_sem); 484 mutex_lock(&rtc_mutex);
484 if (rtc_ops == NULL) { 485 if (rtc_ops == NULL) {
485 rtc_ops = ops; 486 rtc_ops = ops;
486 487
@@ -489,7 +490,7 @@ int register_rtc(struct rtc_ops *ops)
489 create_proc_read_entry("driver/rtc", 0, NULL, 490 create_proc_read_entry("driver/rtc", 0, NULL,
490 rtc_read_proc, ops); 491 rtc_read_proc, ops);
491 } 492 }
492 up(&rtc_sem); 493 mutex_unlock(&rtc_mutex);
493 494
494 return ret; 495 return ret;
495} 496}
@@ -497,12 +498,12 @@ EXPORT_SYMBOL(register_rtc);
497 498
498void unregister_rtc(struct rtc_ops *rtc) 499void unregister_rtc(struct rtc_ops *rtc)
499{ 500{
500 down(&rtc_sem); 501 mutex_lock(&rtc_mutex);
501 if (rtc == rtc_ops) { 502 if (rtc == rtc_ops) {
502 remove_proc_entry("driver/rtc", NULL); 503 remove_proc_entry("driver/rtc", NULL);
503 misc_deregister(&rtc_miscdev); 504 misc_deregister(&rtc_miscdev);
504 rtc_ops = NULL; 505 rtc_ops = NULL;
505 } 506 }
506 up(&rtc_sem); 507 mutex_unlock(&rtc_mutex);
507} 508}
508EXPORT_SYMBOL(unregister_rtc); 509EXPORT_SYMBOL(unregister_rtc);
diff --git a/arch/arm/configs/at91rm9200dk_defconfig b/arch/arm/configs/at91rm9200dk_defconfig
new file mode 100644
index 000000000000..5cdd13acf8ff
--- /dev/null
+++ b/arch/arm/configs/at91rm9200dk_defconfig
@@ -0,0 +1,1009 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15
4# Mon Jan 9 20:54:30 2006
5#
6CONFIG_ARM=y
7CONFIG_MMU=y
8CONFIG_UID16=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11
12#
13# Code maturity level options
14#
15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y
18CONFIG_INIT_ENV_ARG_LIMIT=32
19
20#
21# General setup
22#
23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25# CONFIG_SWAP is not set
26CONFIG_SYSVIPC=y
27# CONFIG_POSIX_MQUEUE is not set
28# CONFIG_BSD_PROCESS_ACCT is not set
29CONFIG_SYSCTL=y
30# CONFIG_AUDIT is not set
31CONFIG_HOTPLUG=y
32CONFIG_KOBJECT_UEVENT=y
33# CONFIG_IKCONFIG is not set
34CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y
36# CONFIG_EMBEDDED is not set
37CONFIG_KALLSYMS=y
38# CONFIG_KALLSYMS_ALL is not set
39# CONFIG_KALLSYMS_EXTRA_PASS is not set
40CONFIG_PRINTK=y
41CONFIG_BUG=y
42CONFIG_BASE_FULL=y
43CONFIG_FUTEX=y
44CONFIG_EPOLL=y
45CONFIG_SHMEM=y
46CONFIG_CC_ALIGN_FUNCTIONS=0
47CONFIG_CC_ALIGN_LABELS=0
48CONFIG_CC_ALIGN_LOOPS=0
49CONFIG_CC_ALIGN_JUMPS=0
50# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0
52
53#
54# Loadable module support
55#
56CONFIG_MODULES=y
57CONFIG_MODULE_UNLOAD=y
58# CONFIG_MODULE_FORCE_UNLOAD is not set
59CONFIG_OBSOLETE_MODPARM=y
60# CONFIG_MODVERSIONS is not set
61# CONFIG_MODULE_SRCVERSION_ALL is not set
62CONFIG_KMOD=y
63
64#
65# Block layer
66#
67
68#
69# IO Schedulers
70#
71CONFIG_IOSCHED_NOOP=y
72CONFIG_IOSCHED_AS=y
73# CONFIG_IOSCHED_DEADLINE is not set
74# CONFIG_IOSCHED_CFQ is not set
75CONFIG_DEFAULT_AS=y
76# CONFIG_DEFAULT_DEADLINE is not set
77# CONFIG_DEFAULT_CFQ is not set
78# CONFIG_DEFAULT_NOOP is not set
79CONFIG_DEFAULT_IOSCHED="anticipatory"
80
81#
82# System Type
83#
84# CONFIG_ARCH_CLPS7500 is not set
85# CONFIG_ARCH_CLPS711X is not set
86# CONFIG_ARCH_CO285 is not set
87# CONFIG_ARCH_EBSA110 is not set
88# CONFIG_ARCH_CAMELOT is not set
89# CONFIG_ARCH_FOOTBRIDGE is not set
90# CONFIG_ARCH_INTEGRATOR is not set
91# CONFIG_ARCH_IOP3XX is not set
92# CONFIG_ARCH_IXP4XX is not set
93# CONFIG_ARCH_IXP2000 is not set
94# CONFIG_ARCH_L7200 is not set
95# CONFIG_ARCH_PXA is not set
96# CONFIG_ARCH_RPC is not set
97# CONFIG_ARCH_SA1100 is not set
98# CONFIG_ARCH_S3C2410 is not set
99# CONFIG_ARCH_SHARK is not set
100# CONFIG_ARCH_LH7A40X is not set
101# CONFIG_ARCH_OMAP is not set
102# CONFIG_ARCH_VERSATILE is not set
103# CONFIG_ARCH_REALVIEW is not set
104# CONFIG_ARCH_IMX is not set
105# CONFIG_ARCH_H720X is not set
106# CONFIG_ARCH_AAEC2000 is not set
107CONFIG_ARCH_AT91RM9200=y
108
109#
110# AT91RM9200 Implementations
111#
112
113#
114# AT91RM9200 Board Type
115#
116CONFIG_ARCH_AT91RM9200DK=y
117# CONFIG_MACH_AT91RM9200EK is not set
118# CONFIG_MACH_CSB337 is not set
119# CONFIG_MACH_CSB637 is not set
120# CONFIG_MACH_CARMEVA is not set
121# CONFIG_MACH_KB9200 is not set
122# CONFIG_MACH_ATEB9200 is not set
123
124#
125# AT91RM9200 Feature Selections
126#
127CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
128
129#
130# Processor Type
131#
132CONFIG_CPU_32=y
133CONFIG_CPU_ARM920T=y
134CONFIG_CPU_32v4=y
135CONFIG_CPU_ABRT_EV4T=y
136CONFIG_CPU_CACHE_V4WT=y
137CONFIG_CPU_CACHE_VIVT=y
138CONFIG_CPU_COPY_V4WB=y
139CONFIG_CPU_TLB_V4WBI=y
140
141#
142# Processor Features
143#
144# CONFIG_ARM_THUMB is not set
145# CONFIG_CPU_ICACHE_DISABLE is not set
146# CONFIG_CPU_DCACHE_DISABLE is not set
147# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
148
149#
150# Bus support
151#
152CONFIG_ISA_DMA_API=y
153
154#
155# PCCARD (PCMCIA/CardBus) support
156#
157CONFIG_PCCARD=y
158# CONFIG_PCMCIA_DEBUG is not set
159CONFIG_PCMCIA=y
160CONFIG_PCMCIA_LOAD_CIS=y
161CONFIG_PCMCIA_IOCTL=y
162
163#
164# PC-card bridges
165#
166CONFIG_AT91_CF=y
167
168#
169# Kernel Features
170#
171# CONFIG_PREEMPT is not set
172# CONFIG_NO_IDLE_HZ is not set
173# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_SPLIT_PTLOCK_CPUS=4096
182CONFIG_LEDS=y
183CONFIG_LEDS_TIMER=y
184# CONFIG_LEDS_CPU is not set
185CONFIG_ALIGNMENT_TRAP=y
186
187#
188# Boot options
189#
190CONFIG_ZBOOT_ROM_TEXT=0x0
191CONFIG_ZBOOT_ROM_BSS=0x0
192CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"
193# CONFIG_XIP_KERNEL is not set
194
195#
196# Floating point emulation
197#
198
199#
200# At least one emulation must be selected
201#
202CONFIG_FPE_NWFPE=y
203# CONFIG_FPE_NWFPE_XP is not set
204# CONFIG_FPE_FASTFPE is not set
205
206#
207# Userspace binary formats
208#
209CONFIG_BINFMT_ELF=y
210# CONFIG_BINFMT_AOUT is not set
211# CONFIG_BINFMT_MISC is not set
212# CONFIG_ARTHUR is not set
213
214#
215# Power management options
216#
217# CONFIG_PM is not set
218
219#
220# Networking
221#
222CONFIG_NET=y
223
224#
225# Networking options
226#
227CONFIG_PACKET=y
228# CONFIG_PACKET_MMAP is not set
229CONFIG_UNIX=y
230# CONFIG_NET_KEY is not set
231CONFIG_INET=y
232# CONFIG_IP_MULTICAST is not set
233# CONFIG_IP_ADVANCED_ROUTER is not set
234CONFIG_IP_FIB_HASH=y
235CONFIG_IP_PNP=y
236# CONFIG_IP_PNP_DHCP is not set
237CONFIG_IP_PNP_BOOTP=y
238# CONFIG_IP_PNP_RARP is not set
239# CONFIG_NET_IPIP is not set
240# CONFIG_NET_IPGRE is not set
241# CONFIG_ARPD is not set
242# CONFIG_SYN_COOKIES is not set
243# CONFIG_INET_AH is not set
244# CONFIG_INET_ESP is not set
245# CONFIG_INET_IPCOMP is not set
246# CONFIG_INET_TUNNEL is not set
247CONFIG_INET_DIAG=y
248CONFIG_INET_TCP_DIAG=y
249# CONFIG_TCP_CONG_ADVANCED is not set
250CONFIG_TCP_CONG_BIC=y
251# CONFIG_IPV6 is not set
252# CONFIG_NETFILTER is not set
253
254#
255# DCCP Configuration (EXPERIMENTAL)
256#
257# CONFIG_IP_DCCP is not set
258
259#
260# SCTP Configuration (EXPERIMENTAL)
261#
262# CONFIG_IP_SCTP is not set
263# CONFIG_ATM is not set
264# CONFIG_BRIDGE is not set
265# CONFIG_VLAN_8021Q is not set
266# CONFIG_DECNET is not set
267# CONFIG_LLC2 is not set
268# CONFIG_IPX is not set
269# CONFIG_ATALK is not set
270# CONFIG_X25 is not set
271# CONFIG_LAPB is not set
272# CONFIG_NET_DIVERT is not set
273# CONFIG_ECONET is not set
274# CONFIG_WAN_ROUTER is not set
275
276#
277# QoS and/or fair queueing
278#
279# CONFIG_NET_SCHED is not set
280
281#
282# Network testing
283#
284# CONFIG_NET_PKTGEN is not set
285# CONFIG_HAMRADIO is not set
286# CONFIG_IRDA is not set
287# CONFIG_BT is not set
288# CONFIG_IEEE80211 is not set
289
290#
291# Device Drivers
292#
293
294#
295# Generic Driver Options
296#
297CONFIG_STANDALONE=y
298CONFIG_PREVENT_FIRMWARE_BUILD=y
299CONFIG_FW_LOADER=y
300# CONFIG_DEBUG_DRIVER is not set
301
302#
303# Connector - unified userspace <-> kernelspace linker
304#
305# CONFIG_CONNECTOR is not set
306
307#
308# Memory Technology Devices (MTD)
309#
310CONFIG_MTD=y
311# CONFIG_MTD_DEBUG is not set
312# CONFIG_MTD_CONCAT is not set
313CONFIG_MTD_PARTITIONS=y
314# CONFIG_MTD_REDBOOT_PARTS is not set
315CONFIG_MTD_CMDLINE_PARTS=y
316# CONFIG_MTD_AFS_PARTS is not set
317
318#
319# User Modules And Translation Layers
320#
321CONFIG_MTD_CHAR=y
322CONFIG_MTD_BLOCK=y
323# CONFIG_FTL is not set
324# CONFIG_NFTL is not set
325# CONFIG_INFTL is not set
326# CONFIG_RFD_FTL is not set
327
328#
329# RAM/ROM/Flash chip drivers
330#
331CONFIG_MTD_CFI=y
332CONFIG_MTD_JEDECPROBE=y
333CONFIG_MTD_GEN_PROBE=y
334# CONFIG_MTD_CFI_ADV_OPTIONS is not set
335CONFIG_MTD_MAP_BANK_WIDTH_1=y
336CONFIG_MTD_MAP_BANK_WIDTH_2=y
337CONFIG_MTD_MAP_BANK_WIDTH_4=y
338# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
339# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
340# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
341CONFIG_MTD_CFI_I1=y
342CONFIG_MTD_CFI_I2=y
343# CONFIG_MTD_CFI_I4 is not set
344# CONFIG_MTD_CFI_I8 is not set
345# CONFIG_MTD_CFI_INTELEXT is not set
346CONFIG_MTD_CFI_AMDSTD=y
347CONFIG_MTD_CFI_AMDSTD_RETRY=0
348# CONFIG_MTD_CFI_STAA is not set
349CONFIG_MTD_CFI_UTIL=y
350# CONFIG_MTD_RAM is not set
351# CONFIG_MTD_ROM is not set
352# CONFIG_MTD_ABSENT is not set
353# CONFIG_MTD_XIP is not set
354
355#
356# Mapping drivers for chip access
357#
358# CONFIG_MTD_COMPLEX_MAPPINGS is not set
359CONFIG_MTD_PHYSMAP=y
360CONFIG_MTD_PHYSMAP_START=0x10000000
361CONFIG_MTD_PHYSMAP_LEN=0x200000
362CONFIG_MTD_PHYSMAP_BANKWIDTH=2
363# CONFIG_MTD_ARM_INTEGRATOR is not set
364# CONFIG_MTD_IMPA7 is not set
365# CONFIG_MTD_PLATRAM is not set
366
367#
368# Self-contained MTD device drivers
369#
370# CONFIG_MTD_SLRAM is not set
371# CONFIG_MTD_PHRAM is not set
372# CONFIG_MTD_MTDRAM is not set
373# CONFIG_MTD_BLKMTD is not set
374# CONFIG_MTD_BLOCK2MTD is not set
375
376#
377# Disk-On-Chip Device Drivers
378#
379# CONFIG_MTD_DOC2000 is not set
380# CONFIG_MTD_DOC2001 is not set
381# CONFIG_MTD_DOC2001PLUS is not set
382CONFIG_MTD_AT91_DATAFLASH=y
383CONFIG_MTD_AT91_DATAFLASH_CARD=y
384
385#
386# NAND Flash Device Drivers
387#
388# CONFIG_MTD_NAND is not set
389
390#
391# OneNAND Flash Device Drivers
392#
393# CONFIG_MTD_ONENAND is not set
394
395#
396# Parallel port support
397#
398# CONFIG_PARPORT is not set
399
400#
401# Plug and Play support
402#
403
404#
405# Block devices
406#
407# CONFIG_BLK_DEV_COW_COMMON is not set
408# CONFIG_BLK_DEV_LOOP is not set
409# CONFIG_BLK_DEV_NBD is not set
410# CONFIG_BLK_DEV_UB is not set
411CONFIG_BLK_DEV_RAM=y
412CONFIG_BLK_DEV_RAM_COUNT=16
413CONFIG_BLK_DEV_RAM_SIZE=8192
414CONFIG_BLK_DEV_INITRD=y
415# CONFIG_CDROM_PKTCDVD is not set
416# CONFIG_ATA_OVER_ETH is not set
417
418#
419# ATA/ATAPI/MFM/RLL support
420#
421# CONFIG_IDE is not set
422
423#
424# SCSI device support
425#
426# CONFIG_RAID_ATTRS is not set
427# CONFIG_SCSI is not set
428
429#
430# Multi-device support (RAID and LVM)
431#
432# CONFIG_MD is not set
433
434#
435# Fusion MPT device support
436#
437# CONFIG_FUSION is not set
438
439#
440# IEEE 1394 (FireWire) support
441#
442
443#
444# I2O device support
445#
446
447#
448# Network device support
449#
450CONFIG_NETDEVICES=y
451# CONFIG_DUMMY is not set
452# CONFIG_BONDING is not set
453# CONFIG_EQUALIZER is not set
454# CONFIG_TUN is not set
455
456#
457# PHY device support
458#
459# CONFIG_PHYLIB is not set
460
461#
462# Ethernet (10 or 100Mbit)
463#
464CONFIG_NET_ETHERNET=y
465CONFIG_MII=y
466CONFIG_ARM_AT91_ETHER=y
467# CONFIG_SMC91X is not set
468# CONFIG_DM9000 is not set
469
470#
471# Ethernet (1000 Mbit)
472#
473
474#
475# Ethernet (10000 Mbit)
476#
477
478#
479# Token Ring devices
480#
481
482#
483# Wireless LAN (non-hamradio)
484#
485# CONFIG_NET_RADIO is not set
486
487#
488# PCMCIA network device support
489#
490# CONFIG_NET_PCMCIA is not set
491
492#
493# Wan interfaces
494#
495# CONFIG_WAN is not set
496# CONFIG_PPP is not set
497# CONFIG_SLIP is not set
498# CONFIG_SHAPER is not set
499# CONFIG_NETCONSOLE is not set
500# CONFIG_NETPOLL is not set
501# CONFIG_NET_POLL_CONTROLLER is not set
502
503#
504# ISDN subsystem
505#
506# CONFIG_ISDN is not set
507
508#
509# Input device support
510#
511CONFIG_INPUT=y
512
513#
514# Userland interfaces
515#
516CONFIG_INPUT_MOUSEDEV=y
517# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
518CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
519CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
520# CONFIG_INPUT_JOYDEV is not set
521# CONFIG_INPUT_TSDEV is not set
522# CONFIG_INPUT_EVDEV is not set
523# CONFIG_INPUT_EVBUG is not set
524
525#
526# Input Device Drivers
527#
528# CONFIG_INPUT_KEYBOARD is not set
529# CONFIG_INPUT_MOUSE is not set
530# CONFIG_INPUT_JOYSTICK is not set
531# CONFIG_INPUT_TOUCHSCREEN is not set
532# CONFIG_INPUT_MISC is not set
533
534#
535# Hardware I/O ports
536#
537# CONFIG_SERIO is not set
538# CONFIG_GAMEPORT is not set
539
540#
541# Character devices
542#
543CONFIG_VT=y
544CONFIG_VT_CONSOLE=y
545CONFIG_HW_CONSOLE=y
546# CONFIG_SERIAL_NONSTANDARD is not set
547
548#
549# Serial drivers
550#
551# CONFIG_SERIAL_8250 is not set
552
553#
554# Non-8250 serial port support
555#
556CONFIG_SERIAL_AT91=y
557CONFIG_SERIAL_AT91_CONSOLE=y
558# CONFIG_SERIAL_AT91_TTYAT is not set
559CONFIG_SERIAL_CORE=y
560CONFIG_SERIAL_CORE_CONSOLE=y
561CONFIG_UNIX98_PTYS=y
562CONFIG_LEGACY_PTYS=y
563CONFIG_LEGACY_PTY_COUNT=256
564
565#
566# IPMI
567#
568# CONFIG_IPMI_HANDLER is not set
569
570#
571# Watchdog Cards
572#
573CONFIG_WATCHDOG=y
574CONFIG_WATCHDOG_NOWAYOUT=y
575
576#
577# Watchdog Device Drivers
578#
579# CONFIG_SOFT_WATCHDOG is not set
580CONFIG_AT91_WATCHDOG=y
581
582#
583# USB-based Watchdog Cards
584#
585# CONFIG_USBPCWATCHDOG is not set
586# CONFIG_NVRAM is not set
587# CONFIG_RTC is not set
588CONFIG_AT91_RTC=y
589# CONFIG_DTLK is not set
590# CONFIG_R3964 is not set
591
592#
593# Ftape, the floppy tape device driver
594#
595
596#
597# PCMCIA character devices
598#
599# CONFIG_SYNCLINK_CS is not set
600# CONFIG_CARDMAN_4000 is not set
601# CONFIG_CARDMAN_4040 is not set
602# CONFIG_RAW_DRIVER is not set
603
604#
605# TPM devices
606#
607# CONFIG_TCG_TPM is not set
608# CONFIG_TELCLOCK is not set
609CONFIG_AT91_SPI=y
610CONFIG_AT91_SPIDEV=y
611
612#
613# I2C support
614#
615CONFIG_I2C=y
616CONFIG_I2C_CHARDEV=y
617
618#
619# I2C Algorithms
620#
621# CONFIG_I2C_ALGOBIT is not set
622# CONFIG_I2C_ALGOPCF is not set
623# CONFIG_I2C_ALGOPCA is not set
624
625#
626# I2C Hardware Bus support
627#
628CONFIG_I2C_AT91=y
629# CONFIG_I2C_PARPORT_LIGHT is not set
630# CONFIG_I2C_STUB is not set
631# CONFIG_I2C_PCA_ISA is not set
632
633#
634# Miscellaneous I2C Chip support
635#
636# CONFIG_SENSORS_DS1337 is not set
637# CONFIG_SENSORS_DS1374 is not set
638# CONFIG_SENSORS_EEPROM is not set
639# CONFIG_SENSORS_PCF8574 is not set
640# CONFIG_SENSORS_PCA9539 is not set
641# CONFIG_SENSORS_PCF8591 is not set
642# CONFIG_SENSORS_RTC8564 is not set
643# CONFIG_SENSORS_MAX6875 is not set
644# CONFIG_RTC_X1205_I2C is not set
645# CONFIG_I2C_DEBUG_CORE is not set
646# CONFIG_I2C_DEBUG_ALGO is not set
647# CONFIG_I2C_DEBUG_BUS is not set
648# CONFIG_I2C_DEBUG_CHIP is not set
649
650#
651# Hardware Monitoring support
652#
653CONFIG_HWMON=y
654# CONFIG_HWMON_VID is not set
655# CONFIG_SENSORS_ADM1021 is not set
656# CONFIG_SENSORS_ADM1025 is not set
657# CONFIG_SENSORS_ADM1026 is not set
658# CONFIG_SENSORS_ADM1031 is not set
659# CONFIG_SENSORS_ADM9240 is not set
660# CONFIG_SENSORS_ASB100 is not set
661# CONFIG_SENSORS_ATXP1 is not set
662# CONFIG_SENSORS_DS1621 is not set
663# CONFIG_SENSORS_FSCHER is not set
664# CONFIG_SENSORS_FSCPOS is not set
665# CONFIG_SENSORS_GL518SM is not set
666# CONFIG_SENSORS_GL520SM is not set
667# CONFIG_SENSORS_IT87 is not set
668# CONFIG_SENSORS_LM63 is not set
669# CONFIG_SENSORS_LM75 is not set
670# CONFIG_SENSORS_LM77 is not set
671# CONFIG_SENSORS_LM78 is not set
672# CONFIG_SENSORS_LM80 is not set
673# CONFIG_SENSORS_LM83 is not set
674# CONFIG_SENSORS_LM85 is not set
675# CONFIG_SENSORS_LM87 is not set
676# CONFIG_SENSORS_LM90 is not set
677# CONFIG_SENSORS_LM92 is not set
678# CONFIG_SENSORS_MAX1619 is not set
679# CONFIG_SENSORS_PC87360 is not set
680# CONFIG_SENSORS_SMSC47M1 is not set
681# CONFIG_SENSORS_SMSC47B397 is not set
682# CONFIG_SENSORS_W83781D is not set
683# CONFIG_SENSORS_W83792D is not set
684# CONFIG_SENSORS_W83L785TS is not set
685# CONFIG_SENSORS_W83627HF is not set
686# CONFIG_SENSORS_W83627EHF is not set
687# CONFIG_HWMON_DEBUG_CHIP is not set
688
689#
690# Misc devices
691#
692
693#
694# Multimedia Capabilities Port drivers
695#
696
697#
698# Multimedia devices
699#
700# CONFIG_VIDEO_DEV is not set
701
702#
703# Digital Video Broadcasting Devices
704#
705# CONFIG_DVB is not set
706
707#
708# Graphics support
709#
710# CONFIG_FB is not set
711
712#
713# Console display driver support
714#
715# CONFIG_VGA_CONSOLE is not set
716CONFIG_DUMMY_CONSOLE=y
717
718#
719# Sound
720#
721# CONFIG_SOUND is not set
722
723#
724# USB support
725#
726CONFIG_USB_ARCH_HAS_HCD=y
727CONFIG_USB_ARCH_HAS_OHCI=y
728CONFIG_USB=y
729CONFIG_USB_DEBUG=y
730
731#
732# Miscellaneous USB options
733#
734CONFIG_USB_DEVICEFS=y
735# CONFIG_USB_BANDWIDTH is not set
736# CONFIG_USB_DYNAMIC_MINORS is not set
737# CONFIG_USB_OTG is not set
738
739#
740# USB Host Controller Drivers
741#
742# CONFIG_USB_ISP116X_HCD is not set
743CONFIG_USB_OHCI_HCD=y
744# CONFIG_USB_OHCI_BIG_ENDIAN is not set
745CONFIG_USB_OHCI_LITTLE_ENDIAN=y
746# CONFIG_USB_SL811_HCD is not set
747
748#
749# USB Device Class drivers
750#
751# CONFIG_USB_ACM is not set
752# CONFIG_USB_PRINTER is not set
753
754#
755# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
756#
757
758#
759# may also be needed; see USB_STORAGE Help for more information
760#
761# CONFIG_USB_STORAGE is not set
762
763#
764# USB Input Devices
765#
766# CONFIG_USB_HID is not set
767
768#
769# USB HID Boot Protocol drivers
770#
771# CONFIG_USB_KBD is not set
772# CONFIG_USB_MOUSE is not set
773# CONFIG_USB_AIPTEK is not set
774# CONFIG_USB_WACOM is not set
775# CONFIG_USB_ACECAD is not set
776# CONFIG_USB_KBTAB is not set
777# CONFIG_USB_POWERMATE is not set
778# CONFIG_USB_MTOUCH is not set
779# CONFIG_USB_ITMTOUCH is not set
780# CONFIG_USB_EGALAX is not set
781# CONFIG_USB_YEALINK is not set
782# CONFIG_USB_XPAD is not set
783# CONFIG_USB_ATI_REMOTE is not set
784# CONFIG_USB_KEYSPAN_REMOTE is not set
785# CONFIG_USB_APPLETOUCH is not set
786
787#
788# USB Imaging devices
789#
790# CONFIG_USB_MDC800 is not set
791
792#
793# USB Multimedia devices
794#
795# CONFIG_USB_DABUSB is not set
796
797#
798# Video4Linux support is needed for USB Multimedia device support
799#
800
801#
802# USB Network Adapters
803#
804# CONFIG_USB_CATC is not set
805# CONFIG_USB_KAWETH is not set
806# CONFIG_USB_PEGASUS is not set
807# CONFIG_USB_RTL8150 is not set
808# CONFIG_USB_USBNET is not set
809CONFIG_USB_MON=y
810
811#
812# USB port drivers
813#
814
815#
816# USB Serial Converter support
817#
818# CONFIG_USB_SERIAL is not set
819
820#
821# USB Miscellaneous drivers
822#
823# CONFIG_USB_EMI62 is not set
824# CONFIG_USB_EMI26 is not set
825# CONFIG_USB_AUERSWALD is not set
826# CONFIG_USB_RIO500 is not set
827# CONFIG_USB_LEGOTOWER is not set
828# CONFIG_USB_LCD is not set
829# CONFIG_USB_LED is not set
830# CONFIG_USB_CYTHERM is not set
831# CONFIG_USB_PHIDGETKIT is not set
832# CONFIG_USB_PHIDGETSERVO is not set
833# CONFIG_USB_IDMOUSE is not set
834# CONFIG_USB_LD is not set
835# CONFIG_USB_TEST is not set
836
837#
838# USB DSL modem support
839#
840
841#
842# USB Gadget Support
843#
844CONFIG_USB_GADGET=y
845# CONFIG_USB_GADGET_DEBUG_FILES is not set
846CONFIG_USB_GADGET_SELECTED=y
847# CONFIG_USB_GADGET_NET2280 is not set
848# CONFIG_USB_GADGET_PXA2XX is not set
849# CONFIG_USB_GADGET_GOKU is not set
850# CONFIG_USB_GADGET_LH7A40X is not set
851# CONFIG_USB_GADGET_OMAP is not set
852CONFIG_USB_GADGET_AT91=y
853CONFIG_USB_AT91=y
854# CONFIG_USB_GADGET_DUMMY_HCD is not set
855# CONFIG_USB_GADGET_DUALSPEED is not set
856# CONFIG_USB_ZERO is not set
857# CONFIG_USB_ETH is not set
858# CONFIG_USB_GADGETFS is not set
859# CONFIG_USB_FILE_STORAGE is not set
860# CONFIG_USB_G_SERIAL is not set
861
862#
863# MMC/SD Card support
864#
865CONFIG_MMC=y
866# CONFIG_MMC_DEBUG is not set
867CONFIG_MMC_BLOCK=y
868# CONFIG_MMC_WBSD is not set
869CONFIG_MMC_AT91RM9200=y
870
871#
872# File systems
873#
874CONFIG_EXT2_FS=y
875# CONFIG_EXT2_FS_XATTR is not set
876# CONFIG_EXT2_FS_XIP is not set
877# CONFIG_EXT3_FS is not set
878# CONFIG_JBD is not set
879# CONFIG_REISERFS_FS is not set
880# CONFIG_JFS_FS is not set
881# CONFIG_FS_POSIX_ACL is not set
882# CONFIG_XFS_FS is not set
883# CONFIG_MINIX_FS is not set
884# CONFIG_ROMFS_FS is not set
885CONFIG_INOTIFY=y
886# CONFIG_QUOTA is not set
887CONFIG_DNOTIFY=y
888# CONFIG_AUTOFS_FS is not set
889# CONFIG_AUTOFS4_FS is not set
890# CONFIG_FUSE_FS is not set
891
892#
893# CD-ROM/DVD Filesystems
894#
895# CONFIG_ISO9660_FS is not set
896# CONFIG_UDF_FS is not set
897
898#
899# DOS/FAT/NT Filesystems
900#
901# CONFIG_MSDOS_FS is not set
902# CONFIG_VFAT_FS is not set
903# CONFIG_NTFS_FS is not set
904
905#
906# Pseudo filesystems
907#
908CONFIG_PROC_FS=y
909CONFIG_SYSFS=y
910CONFIG_TMPFS=y
911# CONFIG_HUGETLB_PAGE is not set
912CONFIG_RAMFS=y
913# CONFIG_RELAYFS_FS is not set
914
915#
916# Miscellaneous filesystems
917#
918# CONFIG_ADFS_FS is not set
919# CONFIG_AFFS_FS is not set
920# CONFIG_HFS_FS is not set
921# CONFIG_HFSPLUS_FS is not set
922# CONFIG_BEFS_FS is not set
923# CONFIG_BFS_FS is not set
924# CONFIG_EFS_FS is not set
925# CONFIG_JFFS_FS is not set
926# CONFIG_JFFS2_FS is not set
927CONFIG_CRAMFS=y
928# CONFIG_VXFS_FS is not set
929# CONFIG_HPFS_FS is not set
930# CONFIG_QNX4FS_FS is not set
931# CONFIG_SYSV_FS is not set
932# CONFIG_UFS_FS is not set
933
934#
935# Network File Systems
936#
937# CONFIG_NFS_FS is not set
938# CONFIG_NFSD is not set
939# CONFIG_SMB_FS is not set
940# CONFIG_CIFS is not set
941# CONFIG_NCP_FS is not set
942# CONFIG_CODA_FS is not set
943# CONFIG_AFS_FS is not set
944# CONFIG_9P_FS is not set
945
946#
947# Partition Types
948#
949# CONFIG_PARTITION_ADVANCED is not set
950CONFIG_MSDOS_PARTITION=y
951
952#
953# Native Language Support
954#
955# CONFIG_NLS is not set
956
957#
958# Profiling support
959#
960# CONFIG_PROFILING is not set
961
962#
963# Kernel hacking
964#
965# CONFIG_PRINTK_TIME is not set
966CONFIG_DEBUG_KERNEL=y
967# CONFIG_MAGIC_SYSRQ is not set
968CONFIG_LOG_BUF_SHIFT=14
969CONFIG_DETECT_SOFTLOCKUP=y
970# CONFIG_SCHEDSTATS is not set
971# CONFIG_DEBUG_SLAB is not set
972# CONFIG_DEBUG_SPINLOCK is not set
973# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
974# CONFIG_DEBUG_KOBJECT is not set
975CONFIG_DEBUG_BUGVERBOSE=y
976# CONFIG_DEBUG_INFO is not set
977# CONFIG_DEBUG_FS is not set
978# CONFIG_DEBUG_VM is not set
979CONFIG_FRAME_POINTER=y
980# CONFIG_RCU_TORTURE_TEST is not set
981CONFIG_DEBUG_USER=y
982# CONFIG_DEBUG_WAITQ is not set
983# CONFIG_DEBUG_ERRORS is not set
984CONFIG_DEBUG_LL=y
985# CONFIG_DEBUG_ICEDCC is not set
986
987#
988# Security options
989#
990# CONFIG_KEYS is not set
991# CONFIG_SECURITY is not set
992
993#
994# Cryptographic options
995#
996# CONFIG_CRYPTO is not set
997
998#
999# Hardware crypto devices
1000#
1001
1002#
1003# Library routines
1004#
1005# CONFIG_CRC_CCITT is not set
1006# CONFIG_CRC16 is not set
1007CONFIG_CRC32=y
1008# CONFIG_LIBCRC32C is not set
1009CONFIG_ZLIB_INFLATE=y
diff --git a/arch/arm/configs/at91rm9200ek_defconfig b/arch/arm/configs/at91rm9200ek_defconfig
new file mode 100644
index 000000000000..20838ccf1da7
--- /dev/null
+++ b/arch/arm/configs/at91rm9200ek_defconfig
@@ -0,0 +1,998 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15
4# Mon Jan 9 20:57:31 2006
5#
6CONFIG_ARM=y
7CONFIG_MMU=y
8CONFIG_UID16=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11
12#
13# Code maturity level options
14#
15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y
18CONFIG_INIT_ENV_ARG_LIMIT=32
19
20#
21# General setup
22#
23CONFIG_LOCALVERSION=""
24# CONFIG_LOCALVERSION_AUTO is not set
25# CONFIG_SWAP is not set
26CONFIG_SYSVIPC=y
27# CONFIG_POSIX_MQUEUE is not set
28# CONFIG_BSD_PROCESS_ACCT is not set
29CONFIG_SYSCTL=y
30# CONFIG_AUDIT is not set
31CONFIG_HOTPLUG=y
32CONFIG_KOBJECT_UEVENT=y
33# CONFIG_IKCONFIG is not set
34CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y
36# CONFIG_EMBEDDED is not set
37CONFIG_KALLSYMS=y
38# CONFIG_KALLSYMS_ALL is not set
39# CONFIG_KALLSYMS_EXTRA_PASS is not set
40CONFIG_PRINTK=y
41CONFIG_BUG=y
42CONFIG_BASE_FULL=y
43CONFIG_FUTEX=y
44CONFIG_EPOLL=y
45CONFIG_SHMEM=y
46CONFIG_CC_ALIGN_FUNCTIONS=0
47CONFIG_CC_ALIGN_LABELS=0
48CONFIG_CC_ALIGN_LOOPS=0
49CONFIG_CC_ALIGN_JUMPS=0
50# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0
52
53#
54# Loadable module support
55#
56CONFIG_MODULES=y
57CONFIG_MODULE_UNLOAD=y
58# CONFIG_MODULE_FORCE_UNLOAD is not set
59CONFIG_OBSOLETE_MODPARM=y
60# CONFIG_MODVERSIONS is not set
61# CONFIG_MODULE_SRCVERSION_ALL is not set
62CONFIG_KMOD=y
63
64#
65# Block layer
66#
67
68#
69# IO Schedulers
70#
71CONFIG_IOSCHED_NOOP=y
72CONFIG_IOSCHED_AS=y
73# CONFIG_IOSCHED_DEADLINE is not set
74# CONFIG_IOSCHED_CFQ is not set
75CONFIG_DEFAULT_AS=y
76# CONFIG_DEFAULT_DEADLINE is not set
77# CONFIG_DEFAULT_CFQ is not set
78# CONFIG_DEFAULT_NOOP is not set
79CONFIG_DEFAULT_IOSCHED="anticipatory"
80
81#
82# System Type
83#
84# CONFIG_ARCH_CLPS7500 is not set
85# CONFIG_ARCH_CLPS711X is not set
86# CONFIG_ARCH_CO285 is not set
87# CONFIG_ARCH_EBSA110 is not set
88# CONFIG_ARCH_CAMELOT is not set
89# CONFIG_ARCH_FOOTBRIDGE is not set
90# CONFIG_ARCH_INTEGRATOR is not set
91# CONFIG_ARCH_IOP3XX is not set
92# CONFIG_ARCH_IXP4XX is not set
93# CONFIG_ARCH_IXP2000 is not set
94# CONFIG_ARCH_L7200 is not set
95# CONFIG_ARCH_PXA is not set
96# CONFIG_ARCH_RPC is not set
97# CONFIG_ARCH_SA1100 is not set
98# CONFIG_ARCH_S3C2410 is not set
99# CONFIG_ARCH_SHARK is not set
100# CONFIG_ARCH_LH7A40X is not set
101# CONFIG_ARCH_OMAP is not set
102# CONFIG_ARCH_VERSATILE is not set
103# CONFIG_ARCH_REALVIEW is not set
104# CONFIG_ARCH_IMX is not set
105# CONFIG_ARCH_H720X is not set
106# CONFIG_ARCH_AAEC2000 is not set
107CONFIG_ARCH_AT91RM9200=y
108
109#
110# AT91RM9200 Implementations
111#
112
113#
114# AT91RM9200 Board Type
115#
116# CONFIG_ARCH_AT91RM9200DK is not set
117CONFIG_MACH_AT91RM9200EK=y
118# CONFIG_MACH_CSB337 is not set
119# CONFIG_MACH_CSB637 is not set
120# CONFIG_MACH_CARMEVA is not set
121# CONFIG_MACH_KB9200 is not set
122# CONFIG_MACH_ATEB9200 is not set
123
124#
125# AT91RM9200 Feature Selections
126#
127CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
128
129#
130# Processor Type
131#
132CONFIG_CPU_32=y
133CONFIG_CPU_ARM920T=y
134CONFIG_CPU_32v4=y
135CONFIG_CPU_ABRT_EV4T=y
136CONFIG_CPU_CACHE_V4WT=y
137CONFIG_CPU_CACHE_VIVT=y
138CONFIG_CPU_COPY_V4WB=y
139CONFIG_CPU_TLB_V4WBI=y
140
141#
142# Processor Features
143#
144# CONFIG_ARM_THUMB is not set
145# CONFIG_CPU_ICACHE_DISABLE is not set
146# CONFIG_CPU_DCACHE_DISABLE is not set
147# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
148
149#
150# Bus support
151#
152CONFIG_ISA_DMA_API=y
153
154#
155# PCCARD (PCMCIA/CardBus) support
156#
157# CONFIG_PCCARD is not set
158
159#
160# Kernel Features
161#
162# CONFIG_PREEMPT is not set
163# CONFIG_NO_IDLE_HZ is not set
164# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
165CONFIG_SELECT_MEMORY_MODEL=y
166CONFIG_FLATMEM_MANUAL=y
167# CONFIG_DISCONTIGMEM_MANUAL is not set
168# CONFIG_SPARSEMEM_MANUAL is not set
169CONFIG_FLATMEM=y
170CONFIG_FLAT_NODE_MEM_MAP=y
171# CONFIG_SPARSEMEM_STATIC is not set
172CONFIG_SPLIT_PTLOCK_CPUS=4096
173CONFIG_LEDS=y
174CONFIG_LEDS_TIMER=y
175CONFIG_LEDS_CPU=y
176CONFIG_ALIGNMENT_TRAP=y
177
178#
179# Boot options
180#
181CONFIG_ZBOOT_ROM_TEXT=0x0
182CONFIG_ZBOOT_ROM_BSS=0x0
183CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"
184# CONFIG_XIP_KERNEL is not set
185
186#
187# Floating point emulation
188#
189
190#
191# At least one emulation must be selected
192#
193CONFIG_FPE_NWFPE=y
194# CONFIG_FPE_NWFPE_XP is not set
195# CONFIG_FPE_FASTFPE is not set
196
197#
198# Userspace binary formats
199#
200CONFIG_BINFMT_ELF=y
201# CONFIG_BINFMT_AOUT is not set
202# CONFIG_BINFMT_MISC is not set
203# CONFIG_ARTHUR is not set
204
205#
206# Power management options
207#
208# CONFIG_PM is not set
209
210#
211# Networking
212#
213CONFIG_NET=y
214
215#
216# Networking options
217#
218CONFIG_PACKET=y
219# CONFIG_PACKET_MMAP is not set
220CONFIG_UNIX=y
221# CONFIG_NET_KEY is not set
222CONFIG_INET=y
223# CONFIG_IP_MULTICAST is not set
224# CONFIG_IP_ADVANCED_ROUTER is not set
225CONFIG_IP_FIB_HASH=y
226CONFIG_IP_PNP=y
227# CONFIG_IP_PNP_DHCP is not set
228CONFIG_IP_PNP_BOOTP=y
229# CONFIG_IP_PNP_RARP is not set
230# CONFIG_NET_IPIP is not set
231# CONFIG_NET_IPGRE is not set
232# CONFIG_ARPD is not set
233# CONFIG_SYN_COOKIES is not set
234# CONFIG_INET_AH is not set
235# CONFIG_INET_ESP is not set
236# CONFIG_INET_IPCOMP is not set
237# CONFIG_INET_TUNNEL is not set
238CONFIG_INET_DIAG=y
239CONFIG_INET_TCP_DIAG=y
240# CONFIG_TCP_CONG_ADVANCED is not set
241CONFIG_TCP_CONG_BIC=y
242# CONFIG_IPV6 is not set
243# CONFIG_NETFILTER is not set
244
245#
246# DCCP Configuration (EXPERIMENTAL)
247#
248# CONFIG_IP_DCCP is not set
249
250#
251# SCTP Configuration (EXPERIMENTAL)
252#
253# CONFIG_IP_SCTP is not set
254# CONFIG_ATM is not set
255# CONFIG_BRIDGE is not set
256# CONFIG_VLAN_8021Q is not set
257# CONFIG_DECNET is not set
258# CONFIG_LLC2 is not set
259# CONFIG_IPX is not set
260# CONFIG_ATALK is not set
261# CONFIG_X25 is not set
262# CONFIG_LAPB is not set
263# CONFIG_NET_DIVERT is not set
264# CONFIG_ECONET is not set
265# CONFIG_WAN_ROUTER is not set
266
267#
268# QoS and/or fair queueing
269#
270# CONFIG_NET_SCHED is not set
271
272#
273# Network testing
274#
275# CONFIG_NET_PKTGEN is not set
276# CONFIG_HAMRADIO is not set
277# CONFIG_IRDA is not set
278# CONFIG_BT is not set
279# CONFIG_IEEE80211 is not set
280
281#
282# Device Drivers
283#
284
285#
286# Generic Driver Options
287#
288CONFIG_STANDALONE=y
289CONFIG_PREVENT_FIRMWARE_BUILD=y
290# CONFIG_FW_LOADER is not set
291# CONFIG_DEBUG_DRIVER is not set
292
293#
294# Connector - unified userspace <-> kernelspace linker
295#
296# CONFIG_CONNECTOR is not set
297
298#
299# Memory Technology Devices (MTD)
300#
301CONFIG_MTD=y
302# CONFIG_MTD_DEBUG is not set
303# CONFIG_MTD_CONCAT is not set
304CONFIG_MTD_PARTITIONS=y
305# CONFIG_MTD_REDBOOT_PARTS is not set
306CONFIG_MTD_CMDLINE_PARTS=y
307# CONFIG_MTD_AFS_PARTS is not set
308
309#
310# User Modules And Translation Layers
311#
312CONFIG_MTD_CHAR=y
313CONFIG_MTD_BLOCK=y
314# CONFIG_FTL is not set
315# CONFIG_NFTL is not set
316# CONFIG_INFTL is not set
317# CONFIG_RFD_FTL is not set
318
319#
320# RAM/ROM/Flash chip drivers
321#
322CONFIG_MTD_CFI=y
323CONFIG_MTD_JEDECPROBE=y
324CONFIG_MTD_GEN_PROBE=y
325# CONFIG_MTD_CFI_ADV_OPTIONS is not set
326CONFIG_MTD_MAP_BANK_WIDTH_1=y
327CONFIG_MTD_MAP_BANK_WIDTH_2=y
328CONFIG_MTD_MAP_BANK_WIDTH_4=y
329# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
330# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
331# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
332CONFIG_MTD_CFI_I1=y
333CONFIG_MTD_CFI_I2=y
334# CONFIG_MTD_CFI_I4 is not set
335# CONFIG_MTD_CFI_I8 is not set
336# CONFIG_MTD_CFI_INTELEXT is not set
337CONFIG_MTD_CFI_AMDSTD=y
338CONFIG_MTD_CFI_AMDSTD_RETRY=0
339# CONFIG_MTD_CFI_STAA is not set
340CONFIG_MTD_CFI_UTIL=y
341# CONFIG_MTD_RAM is not set
342# CONFIG_MTD_ROM is not set
343# CONFIG_MTD_ABSENT is not set
344# CONFIG_MTD_XIP is not set
345
346#
347# Mapping drivers for chip access
348#
349# CONFIG_MTD_COMPLEX_MAPPINGS is not set
350CONFIG_MTD_PHYSMAP=y
351CONFIG_MTD_PHYSMAP_START=0x10000000
352CONFIG_MTD_PHYSMAP_LEN=0x800000
353CONFIG_MTD_PHYSMAP_BANKWIDTH=2
354# CONFIG_MTD_ARM_INTEGRATOR is not set
355# CONFIG_MTD_IMPA7 is not set
356# CONFIG_MTD_PLATRAM is not set
357
358#
359# Self-contained MTD device drivers
360#
361# CONFIG_MTD_SLRAM is not set
362# CONFIG_MTD_PHRAM is not set
363# CONFIG_MTD_MTDRAM is not set
364# CONFIG_MTD_BLKMTD is not set
365# CONFIG_MTD_BLOCK2MTD is not set
366
367#
368# Disk-On-Chip Device Drivers
369#
370# CONFIG_MTD_DOC2000 is not set
371# CONFIG_MTD_DOC2001 is not set
372# CONFIG_MTD_DOC2001PLUS is not set
373CONFIG_MTD_AT91_DATAFLASH=y
374CONFIG_MTD_AT91_DATAFLASH_CARD=y
375
376#
377# NAND Flash Device Drivers
378#
379# CONFIG_MTD_NAND is not set
380
381#
382# OneNAND Flash Device Drivers
383#
384# CONFIG_MTD_ONENAND is not set
385
386#
387# Parallel port support
388#
389# CONFIG_PARPORT is not set
390
391#
392# Plug and Play support
393#
394
395#
396# Block devices
397#
398# CONFIG_BLK_DEV_COW_COMMON is not set
399# CONFIG_BLK_DEV_LOOP is not set
400# CONFIG_BLK_DEV_NBD is not set
401# CONFIG_BLK_DEV_UB is not set
402CONFIG_BLK_DEV_RAM=y
403CONFIG_BLK_DEV_RAM_COUNT=16
404CONFIG_BLK_DEV_RAM_SIZE=8192
405CONFIG_BLK_DEV_INITRD=y
406# CONFIG_CDROM_PKTCDVD is not set
407# CONFIG_ATA_OVER_ETH is not set
408
409#
410# SCSI device support
411#
412# CONFIG_RAID_ATTRS is not set
413# CONFIG_SCSI is not set
414
415#
416# Multi-device support (RAID and LVM)
417#
418# CONFIG_MD is not set
419
420#
421# Fusion MPT device support
422#
423# CONFIG_FUSION is not set
424
425#
426# IEEE 1394 (FireWire) support
427#
428
429#
430# I2O device support
431#
432
433#
434# Network device support
435#
436CONFIG_NETDEVICES=y
437# CONFIG_DUMMY is not set
438# CONFIG_BONDING is not set
439# CONFIG_EQUALIZER is not set
440# CONFIG_TUN is not set
441
442#
443# PHY device support
444#
445# CONFIG_PHYLIB is not set
446
447#
448# Ethernet (10 or 100Mbit)
449#
450CONFIG_NET_ETHERNET=y
451CONFIG_MII=y
452CONFIG_ARM_AT91_ETHER=y
453# CONFIG_SMC91X is not set
454# CONFIG_DM9000 is not set
455
456#
457# Ethernet (1000 Mbit)
458#
459
460#
461# Ethernet (10000 Mbit)
462#
463
464#
465# Token Ring devices
466#
467
468#
469# Wireless LAN (non-hamradio)
470#
471# CONFIG_NET_RADIO is not set
472
473#
474# Wan interfaces
475#
476# CONFIG_WAN is not set
477# CONFIG_PPP is not set
478# CONFIG_SLIP is not set
479# CONFIG_SHAPER is not set
480# CONFIG_NETCONSOLE is not set
481# CONFIG_NETPOLL is not set
482# CONFIG_NET_POLL_CONTROLLER is not set
483
484#
485# ISDN subsystem
486#
487# CONFIG_ISDN is not set
488
489#
490# Input device support
491#
492CONFIG_INPUT=y
493
494#
495# Userland interfaces
496#
497CONFIG_INPUT_MOUSEDEV=y
498# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
499CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
500CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
501# CONFIG_INPUT_JOYDEV is not set
502# CONFIG_INPUT_TSDEV is not set
503# CONFIG_INPUT_EVDEV is not set
504# CONFIG_INPUT_EVBUG is not set
505
506#
507# Input Device Drivers
508#
509# CONFIG_INPUT_KEYBOARD is not set
510# CONFIG_INPUT_MOUSE is not set
511# CONFIG_INPUT_JOYSTICK is not set
512# CONFIG_INPUT_TOUCHSCREEN is not set
513# CONFIG_INPUT_MISC is not set
514
515#
516# Hardware I/O ports
517#
518# CONFIG_SERIO is not set
519# CONFIG_GAMEPORT is not set
520
521#
522# Character devices
523#
524CONFIG_VT=y
525CONFIG_VT_CONSOLE=y
526CONFIG_HW_CONSOLE=y
527# CONFIG_SERIAL_NONSTANDARD is not set
528
529#
530# Serial drivers
531#
532# CONFIG_SERIAL_8250 is not set
533
534#
535# Non-8250 serial port support
536#
537CONFIG_SERIAL_AT91=y
538CONFIG_SERIAL_AT91_CONSOLE=y
539# CONFIG_SERIAL_AT91_TTYAT is not set
540CONFIG_SERIAL_CORE=y
541CONFIG_SERIAL_CORE_CONSOLE=y
542CONFIG_UNIX98_PTYS=y
543CONFIG_LEGACY_PTYS=y
544CONFIG_LEGACY_PTY_COUNT=256
545
546#
547# IPMI
548#
549# CONFIG_IPMI_HANDLER is not set
550
551#
552# Watchdog Cards
553#
554CONFIG_WATCHDOG=y
555CONFIG_WATCHDOG_NOWAYOUT=y
556
557#
558# Watchdog Device Drivers
559#
560# CONFIG_SOFT_WATCHDOG is not set
561CONFIG_AT91_WATCHDOG=y
562
563#
564# USB-based Watchdog Cards
565#
566# CONFIG_USBPCWATCHDOG is not set
567# CONFIG_NVRAM is not set
568# CONFIG_RTC is not set
569CONFIG_AT91_RTC=y
570# CONFIG_DTLK is not set
571# CONFIG_R3964 is not set
572
573#
574# Ftape, the floppy tape device driver
575#
576# CONFIG_RAW_DRIVER is not set
577
578#
579# TPM devices
580#
581# CONFIG_TCG_TPM is not set
582# CONFIG_TELCLOCK is not set
583CONFIG_AT91_SPI=y
584CONFIG_AT91_SPIDEV=y
585
586#
587# I2C support
588#
589CONFIG_I2C=y
590CONFIG_I2C_CHARDEV=y
591
592#
593# I2C Algorithms
594#
595# CONFIG_I2C_ALGOBIT is not set
596# CONFIG_I2C_ALGOPCF is not set
597# CONFIG_I2C_ALGOPCA is not set
598
599#
600# I2C Hardware Bus support
601#
602CONFIG_I2C_AT91=y
603# CONFIG_I2C_PARPORT_LIGHT is not set
604# CONFIG_I2C_STUB is not set
605# CONFIG_I2C_PCA_ISA is not set
606
607#
608# Miscellaneous I2C Chip support
609#
610# CONFIG_SENSORS_DS1337 is not set
611# CONFIG_SENSORS_DS1374 is not set
612# CONFIG_SENSORS_EEPROM is not set
613# CONFIG_SENSORS_PCF8574 is not set
614# CONFIG_SENSORS_PCA9539 is not set
615# CONFIG_SENSORS_PCF8591 is not set
616# CONFIG_SENSORS_RTC8564 is not set
617# CONFIG_SENSORS_MAX6875 is not set
618# CONFIG_RTC_X1205_I2C is not set
619# CONFIG_I2C_DEBUG_CORE is not set
620# CONFIG_I2C_DEBUG_ALGO is not set
621# CONFIG_I2C_DEBUG_BUS is not set
622# CONFIG_I2C_DEBUG_CHIP is not set
623
624#
625# Hardware Monitoring support
626#
627CONFIG_HWMON=y
628# CONFIG_HWMON_VID is not set
629# CONFIG_SENSORS_ADM1021 is not set
630# CONFIG_SENSORS_ADM1025 is not set
631# CONFIG_SENSORS_ADM1026 is not set
632# CONFIG_SENSORS_ADM1031 is not set
633# CONFIG_SENSORS_ADM9240 is not set
634# CONFIG_SENSORS_ASB100 is not set
635# CONFIG_SENSORS_ATXP1 is not set
636# CONFIG_SENSORS_DS1621 is not set
637# CONFIG_SENSORS_FSCHER is not set
638# CONFIG_SENSORS_FSCPOS is not set
639# CONFIG_SENSORS_GL518SM is not set
640# CONFIG_SENSORS_GL520SM is not set
641# CONFIG_SENSORS_IT87 is not set
642# CONFIG_SENSORS_LM63 is not set
643# CONFIG_SENSORS_LM75 is not set
644# CONFIG_SENSORS_LM77 is not set
645# CONFIG_SENSORS_LM78 is not set
646# CONFIG_SENSORS_LM80 is not set
647# CONFIG_SENSORS_LM83 is not set
648# CONFIG_SENSORS_LM85 is not set
649# CONFIG_SENSORS_LM87 is not set
650# CONFIG_SENSORS_LM90 is not set
651# CONFIG_SENSORS_LM92 is not set
652# CONFIG_SENSORS_MAX1619 is not set
653# CONFIG_SENSORS_PC87360 is not set
654# CONFIG_SENSORS_SMSC47M1 is not set
655# CONFIG_SENSORS_SMSC47B397 is not set
656# CONFIG_SENSORS_W83781D is not set
657# CONFIG_SENSORS_W83792D is not set
658# CONFIG_SENSORS_W83L785TS is not set
659# CONFIG_SENSORS_W83627HF is not set
660# CONFIG_SENSORS_W83627EHF is not set
661# CONFIG_HWMON_DEBUG_CHIP is not set
662
663#
664# Misc devices
665#
666
667#
668# Multimedia Capabilities Port drivers
669#
670
671#
672# Multimedia devices
673#
674# CONFIG_VIDEO_DEV is not set
675
676#
677# Digital Video Broadcasting Devices
678#
679# CONFIG_DVB is not set
680
681#
682# Graphics support
683#
684CONFIG_FB=y
685CONFIG_FB_CFB_FILLRECT=y
686CONFIG_FB_CFB_COPYAREA=y
687CONFIG_FB_CFB_IMAGEBLIT=y
688# CONFIG_FB_MACMODES is not set
689# CONFIG_FB_MODE_HELPERS is not set
690# CONFIG_FB_TILEBLITTING is not set
691CONFIG_FB_S1D13XXX=y
692# CONFIG_FB_VIRTUAL is not set
693
694#
695# Console display driver support
696#
697# CONFIG_VGA_CONSOLE is not set
698CONFIG_DUMMY_CONSOLE=y
699# CONFIG_FRAMEBUFFER_CONSOLE is not set
700
701#
702# Logo configuration
703#
704# CONFIG_LOGO is not set
705# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
706
707#
708# Sound
709#
710# CONFIG_SOUND is not set
711
712#
713# USB support
714#
715CONFIG_USB_ARCH_HAS_HCD=y
716CONFIG_USB_ARCH_HAS_OHCI=y
717CONFIG_USB=y
718CONFIG_USB_DEBUG=y
719
720#
721# Miscellaneous USB options
722#
723CONFIG_USB_DEVICEFS=y
724# CONFIG_USB_BANDWIDTH is not set
725# CONFIG_USB_DYNAMIC_MINORS is not set
726# CONFIG_USB_OTG is not set
727
728#
729# USB Host Controller Drivers
730#
731# CONFIG_USB_ISP116X_HCD is not set
732CONFIG_USB_OHCI_HCD=y
733# CONFIG_USB_OHCI_BIG_ENDIAN is not set
734CONFIG_USB_OHCI_LITTLE_ENDIAN=y
735# CONFIG_USB_SL811_HCD is not set
736
737#
738# USB Device Class drivers
739#
740# CONFIG_USB_ACM is not set
741# CONFIG_USB_PRINTER is not set
742
743#
744# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
745#
746
747#
748# may also be needed; see USB_STORAGE Help for more information
749#
750# CONFIG_USB_STORAGE is not set
751
752#
753# USB Input Devices
754#
755# CONFIG_USB_HID is not set
756
757#
758# USB HID Boot Protocol drivers
759#
760# CONFIG_USB_KBD is not set
761# CONFIG_USB_MOUSE is not set
762# CONFIG_USB_AIPTEK is not set
763# CONFIG_USB_WACOM is not set
764# CONFIG_USB_ACECAD is not set
765# CONFIG_USB_KBTAB is not set
766# CONFIG_USB_POWERMATE is not set
767# CONFIG_USB_MTOUCH is not set
768# CONFIG_USB_ITMTOUCH is not set
769# CONFIG_USB_EGALAX is not set
770# CONFIG_USB_YEALINK is not set
771# CONFIG_USB_XPAD is not set
772# CONFIG_USB_ATI_REMOTE is not set
773# CONFIG_USB_KEYSPAN_REMOTE is not set
774# CONFIG_USB_APPLETOUCH is not set
775
776#
777# USB Imaging devices
778#
779# CONFIG_USB_MDC800 is not set
780
781#
782# USB Multimedia devices
783#
784# CONFIG_USB_DABUSB is not set
785
786#
787# Video4Linux support is needed for USB Multimedia device support
788#
789
790#
791# USB Network Adapters
792#
793# CONFIG_USB_CATC is not set
794# CONFIG_USB_KAWETH is not set
795# CONFIG_USB_PEGASUS is not set
796# CONFIG_USB_RTL8150 is not set
797# CONFIG_USB_USBNET is not set
798CONFIG_USB_MON=y
799
800#
801# USB port drivers
802#
803
804#
805# USB Serial Converter support
806#
807# CONFIG_USB_SERIAL is not set
808
809#
810# USB Miscellaneous drivers
811#
812# CONFIG_USB_EMI62 is not set
813# CONFIG_USB_EMI26 is not set
814# CONFIG_USB_AUERSWALD is not set
815# CONFIG_USB_RIO500 is not set
816# CONFIG_USB_LEGOTOWER is not set
817# CONFIG_USB_LCD is not set
818# CONFIG_USB_LED is not set
819# CONFIG_USB_CYTHERM is not set
820# CONFIG_USB_PHIDGETKIT is not set
821# CONFIG_USB_PHIDGETSERVO is not set
822# CONFIG_USB_IDMOUSE is not set
823# CONFIG_USB_LD is not set
824# CONFIG_USB_TEST is not set
825
826#
827# USB DSL modem support
828#
829
830#
831# USB Gadget Support
832#
833CONFIG_USB_GADGET=y
834# CONFIG_USB_GADGET_DEBUG_FILES is not set
835CONFIG_USB_GADGET_SELECTED=y
836# CONFIG_USB_GADGET_NET2280 is not set
837# CONFIG_USB_GADGET_PXA2XX is not set
838# CONFIG_USB_GADGET_GOKU is not set
839# CONFIG_USB_GADGET_LH7A40X is not set
840# CONFIG_USB_GADGET_OMAP is not set
841CONFIG_USB_GADGET_AT91=y
842CONFIG_USB_AT91=y
843# CONFIG_USB_GADGET_DUMMY_HCD is not set
844# CONFIG_USB_GADGET_DUALSPEED is not set
845# CONFIG_USB_ZERO is not set
846# CONFIG_USB_ETH is not set
847# CONFIG_USB_GADGETFS is not set
848# CONFIG_USB_FILE_STORAGE is not set
849# CONFIG_USB_G_SERIAL is not set
850
851#
852# MMC/SD Card support
853#
854CONFIG_MMC=y
855# CONFIG_MMC_DEBUG is not set
856CONFIG_MMC_BLOCK=y
857# CONFIG_MMC_WBSD is not set
858CONFIG_MMC_AT91RM9200=y
859
860#
861# File systems
862#
863CONFIG_EXT2_FS=y
864# CONFIG_EXT2_FS_XATTR is not set
865# CONFIG_EXT2_FS_XIP is not set
866# CONFIG_EXT3_FS is not set
867# CONFIG_JBD is not set
868# CONFIG_REISERFS_FS is not set
869# CONFIG_JFS_FS is not set
870# CONFIG_FS_POSIX_ACL is not set
871# CONFIG_XFS_FS is not set
872# CONFIG_MINIX_FS is not set
873# CONFIG_ROMFS_FS is not set
874CONFIG_INOTIFY=y
875# CONFIG_QUOTA is not set
876CONFIG_DNOTIFY=y
877# CONFIG_AUTOFS_FS is not set
878# CONFIG_AUTOFS4_FS is not set
879# CONFIG_FUSE_FS is not set
880
881#
882# CD-ROM/DVD Filesystems
883#
884# CONFIG_ISO9660_FS is not set
885# CONFIG_UDF_FS is not set
886
887#
888# DOS/FAT/NT Filesystems
889#
890# CONFIG_MSDOS_FS is not set
891# CONFIG_VFAT_FS is not set
892# CONFIG_NTFS_FS is not set
893
894#
895# Pseudo filesystems
896#
897CONFIG_PROC_FS=y
898CONFIG_SYSFS=y
899CONFIG_TMPFS=y
900# CONFIG_HUGETLB_PAGE is not set
901CONFIG_RAMFS=y
902# CONFIG_RELAYFS_FS is not set
903
904#
905# Miscellaneous filesystems
906#
907# CONFIG_ADFS_FS is not set
908# CONFIG_AFFS_FS is not set
909# CONFIG_HFS_FS is not set
910# CONFIG_HFSPLUS_FS is not set
911# CONFIG_BEFS_FS is not set
912# CONFIG_BFS_FS is not set
913# CONFIG_EFS_FS is not set
914# CONFIG_JFFS_FS is not set
915# CONFIG_JFFS2_FS is not set
916CONFIG_CRAMFS=y
917# CONFIG_VXFS_FS is not set
918# CONFIG_HPFS_FS is not set
919# CONFIG_QNX4FS_FS is not set
920# CONFIG_SYSV_FS is not set
921# CONFIG_UFS_FS is not set
922
923#
924# Network File Systems
925#
926# CONFIG_NFS_FS is not set
927# CONFIG_NFSD is not set
928# CONFIG_SMB_FS is not set
929# CONFIG_CIFS is not set
930# CONFIG_NCP_FS is not set
931# CONFIG_CODA_FS is not set
932# CONFIG_AFS_FS is not set
933# CONFIG_9P_FS is not set
934
935#
936# Partition Types
937#
938# CONFIG_PARTITION_ADVANCED is not set
939CONFIG_MSDOS_PARTITION=y
940
941#
942# Native Language Support
943#
944# CONFIG_NLS is not set
945
946#
947# Profiling support
948#
949# CONFIG_PROFILING is not set
950
951#
952# Kernel hacking
953#
954# CONFIG_PRINTK_TIME is not set
955CONFIG_DEBUG_KERNEL=y
956# CONFIG_MAGIC_SYSRQ is not set
957CONFIG_LOG_BUF_SHIFT=14
958CONFIG_DETECT_SOFTLOCKUP=y
959# CONFIG_SCHEDSTATS is not set
960# CONFIG_DEBUG_SLAB is not set
961# CONFIG_DEBUG_SPINLOCK is not set
962# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
963# CONFIG_DEBUG_KOBJECT is not set
964CONFIG_DEBUG_BUGVERBOSE=y
965# CONFIG_DEBUG_INFO is not set
966# CONFIG_DEBUG_FS is not set
967# CONFIG_DEBUG_VM is not set
968CONFIG_FRAME_POINTER=y
969# CONFIG_RCU_TORTURE_TEST is not set
970CONFIG_DEBUG_USER=y
971# CONFIG_DEBUG_WAITQ is not set
972# CONFIG_DEBUG_ERRORS is not set
973CONFIG_DEBUG_LL=y
974# CONFIG_DEBUG_ICEDCC is not set
975
976#
977# Security options
978#
979# CONFIG_KEYS is not set
980# CONFIG_SECURITY is not set
981
982#
983# Cryptographic options
984#
985# CONFIG_CRYPTO is not set
986
987#
988# Hardware crypto devices
989#
990
991#
992# Library routines
993#
994# CONFIG_CRC_CCITT is not set
995# CONFIG_CRC16 is not set
996CONFIG_CRC32=y
997# CONFIG_LIBCRC32C is not set
998CONFIG_ZLIB_INFLATE=y
diff --git a/arch/arm/configs/csb337_defconfig b/arch/arm/configs/csb337_defconfig
new file mode 100644
index 000000000000..885a3184830a
--- /dev/null
+++ b/arch/arm/configs/csb337_defconfig
@@ -0,0 +1,1136 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15
4# Mon Jan 9 21:51:31 2006
5#
6CONFIG_ARM=y
7CONFIG_MMU=y
8CONFIG_UID16=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11
12#
13# Code maturity level options
14#
15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y
18CONFIG_INIT_ENV_ARG_LIMIT=32
19
20#
21# General setup
22#
23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25# CONFIG_SWAP is not set
26CONFIG_SYSVIPC=y
27# CONFIG_POSIX_MQUEUE is not set
28# CONFIG_BSD_PROCESS_ACCT is not set
29CONFIG_SYSCTL=y
30# CONFIG_AUDIT is not set
31CONFIG_HOTPLUG=y
32CONFIG_KOBJECT_UEVENT=y
33# CONFIG_IKCONFIG is not set
34CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y
36# CONFIG_EMBEDDED is not set
37CONFIG_KALLSYMS=y
38# CONFIG_KALLSYMS_ALL is not set
39# CONFIG_KALLSYMS_EXTRA_PASS is not set
40CONFIG_PRINTK=y
41CONFIG_BUG=y
42CONFIG_BASE_FULL=y
43CONFIG_FUTEX=y
44CONFIG_EPOLL=y
45CONFIG_SHMEM=y
46CONFIG_CC_ALIGN_FUNCTIONS=0
47CONFIG_CC_ALIGN_LABELS=0
48CONFIG_CC_ALIGN_LOOPS=0
49CONFIG_CC_ALIGN_JUMPS=0
50# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0
52
53#
54# Loadable module support
55#
56CONFIG_MODULES=y
57CONFIG_MODULE_UNLOAD=y
58# CONFIG_MODULE_FORCE_UNLOAD is not set
59CONFIG_OBSOLETE_MODPARM=y
60# CONFIG_MODVERSIONS is not set
61# CONFIG_MODULE_SRCVERSION_ALL is not set
62CONFIG_KMOD=y
63
64#
65# Block layer
66#
67
68#
69# IO Schedulers
70#
71CONFIG_IOSCHED_NOOP=y
72CONFIG_IOSCHED_AS=y
73CONFIG_IOSCHED_DEADLINE=y
74CONFIG_IOSCHED_CFQ=y
75CONFIG_DEFAULT_AS=y
76# CONFIG_DEFAULT_DEADLINE is not set
77# CONFIG_DEFAULT_CFQ is not set
78# CONFIG_DEFAULT_NOOP is not set
79CONFIG_DEFAULT_IOSCHED="anticipatory"
80
81#
82# System Type
83#
84# CONFIG_ARCH_CLPS7500 is not set
85# CONFIG_ARCH_CLPS711X is not set
86# CONFIG_ARCH_CO285 is not set
87# CONFIG_ARCH_EBSA110 is not set
88# CONFIG_ARCH_CAMELOT is not set
89# CONFIG_ARCH_FOOTBRIDGE is not set
90# CONFIG_ARCH_INTEGRATOR is not set
91# CONFIG_ARCH_IOP3XX is not set
92# CONFIG_ARCH_IXP4XX is not set
93# CONFIG_ARCH_IXP2000 is not set
94# CONFIG_ARCH_L7200 is not set
95# CONFIG_ARCH_PXA is not set
96# CONFIG_ARCH_RPC is not set
97# CONFIG_ARCH_SA1100 is not set
98# CONFIG_ARCH_S3C2410 is not set
99# CONFIG_ARCH_SHARK is not set
100# CONFIG_ARCH_LH7A40X is not set
101# CONFIG_ARCH_OMAP is not set
102# CONFIG_ARCH_VERSATILE is not set
103# CONFIG_ARCH_REALVIEW is not set
104# CONFIG_ARCH_IMX is not set
105# CONFIG_ARCH_H720X is not set
106# CONFIG_ARCH_AAEC2000 is not set
107CONFIG_ARCH_AT91RM9200=y
108
109#
110# AT91RM9200 Implementations
111#
112
113#
114# AT91RM9200 Board Type
115#
116# CONFIG_ARCH_AT91RM9200DK is not set
117# CONFIG_MACH_AT91RM9200EK is not set
118CONFIG_MACH_CSB337=y
119# CONFIG_MACH_CSB637 is not set
120# CONFIG_MACH_CARMEVA is not set
121# CONFIG_MACH_KB9200 is not set
122# CONFIG_MACH_ATEB9200 is not set
123
124#
125# AT91RM9200 Feature Selections
126#
127CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
128
129#
130# Processor Type
131#
132CONFIG_CPU_32=y
133CONFIG_CPU_ARM920T=y
134CONFIG_CPU_32v4=y
135CONFIG_CPU_ABRT_EV4T=y
136CONFIG_CPU_CACHE_V4WT=y
137CONFIG_CPU_CACHE_VIVT=y
138CONFIG_CPU_COPY_V4WB=y
139CONFIG_CPU_TLB_V4WBI=y
140
141#
142# Processor Features
143#
144# CONFIG_ARM_THUMB is not set
145# CONFIG_CPU_ICACHE_DISABLE is not set
146# CONFIG_CPU_DCACHE_DISABLE is not set
147# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
148
149#
150# Bus support
151#
152CONFIG_ISA_DMA_API=y
153
154#
155# PCCARD (PCMCIA/CardBus) support
156#
157CONFIG_PCCARD=y
158# CONFIG_PCMCIA_DEBUG is not set
159CONFIG_PCMCIA=y
160CONFIG_PCMCIA_LOAD_CIS=y
161CONFIG_PCMCIA_IOCTL=y
162
163#
164# PC-card bridges
165#
166CONFIG_AT91_CF=y
167
168#
169# Kernel Features
170#
171# CONFIG_PREEMPT is not set
172# CONFIG_NO_IDLE_HZ is not set
173# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_SPLIT_PTLOCK_CPUS=4096
182CONFIG_LEDS=y
183CONFIG_LEDS_TIMER=y
184CONFIG_LEDS_CPU=y
185CONFIG_ALIGNMENT_TRAP=y
186
187#
188# Boot options
189#
190CONFIG_ZBOOT_ROM_TEXT=0x0
191CONFIG_ZBOOT_ROM_BSS=0x0
192CONFIG_CMDLINE="mem=32M console=ttyS0,38400 initrd=0x20410000,3145728 root=/dev/ram0 rw"
193# CONFIG_XIP_KERNEL is not set
194
195#
196# Floating point emulation
197#
198
199#
200# At least one emulation must be selected
201#
202CONFIG_FPE_NWFPE=y
203# CONFIG_FPE_NWFPE_XP is not set
204# CONFIG_FPE_FASTFPE is not set
205
206#
207# Userspace binary formats
208#
209CONFIG_BINFMT_ELF=y
210# CONFIG_BINFMT_AOUT is not set
211# CONFIG_BINFMT_MISC is not set
212# CONFIG_ARTHUR is not set
213
214#
215# Power management options
216#
217# CONFIG_PM is not set
218
219#
220# Networking
221#
222CONFIG_NET=y
223
224#
225# Networking options
226#
227CONFIG_PACKET=y
228# CONFIG_PACKET_MMAP is not set
229CONFIG_UNIX=y
230# CONFIG_NET_KEY is not set
231CONFIG_INET=y
232# CONFIG_IP_MULTICAST is not set
233# CONFIG_IP_ADVANCED_ROUTER is not set
234CONFIG_IP_FIB_HASH=y
235CONFIG_IP_PNP=y
236CONFIG_IP_PNP_DHCP=y
237CONFIG_IP_PNP_BOOTP=y
238# CONFIG_IP_PNP_RARP is not set
239# CONFIG_NET_IPIP is not set
240# CONFIG_NET_IPGRE is not set
241# CONFIG_ARPD is not set
242# CONFIG_SYN_COOKIES is not set
243# CONFIG_INET_AH is not set
244# CONFIG_INET_ESP is not set
245# CONFIG_INET_IPCOMP is not set
246# CONFIG_INET_TUNNEL is not set
247CONFIG_INET_DIAG=y
248CONFIG_INET_TCP_DIAG=y
249# CONFIG_TCP_CONG_ADVANCED is not set
250CONFIG_TCP_CONG_BIC=y
251# CONFIG_IPV6 is not set
252# CONFIG_NETFILTER is not set
253
254#
255# DCCP Configuration (EXPERIMENTAL)
256#
257# CONFIG_IP_DCCP is not set
258
259#
260# SCTP Configuration (EXPERIMENTAL)
261#
262# CONFIG_IP_SCTP is not set
263# CONFIG_ATM is not set
264# CONFIG_BRIDGE is not set
265# CONFIG_VLAN_8021Q is not set
266# CONFIG_DECNET is not set
267# CONFIG_LLC2 is not set
268# CONFIG_IPX is not set
269# CONFIG_ATALK is not set
270# CONFIG_X25 is not set
271# CONFIG_LAPB is not set
272# CONFIG_NET_DIVERT is not set
273# CONFIG_ECONET is not set
274# CONFIG_WAN_ROUTER is not set
275
276#
277# QoS and/or fair queueing
278#
279# CONFIG_NET_SCHED is not set
280
281#
282# Network testing
283#
284# CONFIG_NET_PKTGEN is not set
285# CONFIG_HAMRADIO is not set
286# CONFIG_IRDA is not set
287# CONFIG_BT is not set
288# CONFIG_IEEE80211 is not set
289
290#
291# Device Drivers
292#
293
294#
295# Generic Driver Options
296#
297CONFIG_STANDALONE=y
298CONFIG_PREVENT_FIRMWARE_BUILD=y
299CONFIG_FW_LOADER=y
300# CONFIG_DEBUG_DRIVER is not set
301
302#
303# Connector - unified userspace <-> kernelspace linker
304#
305# CONFIG_CONNECTOR is not set
306
307#
308# Memory Technology Devices (MTD)
309#
310CONFIG_MTD=y
311# CONFIG_MTD_DEBUG is not set
312# CONFIG_MTD_CONCAT is not set
313CONFIG_MTD_PARTITIONS=y
314# CONFIG_MTD_REDBOOT_PARTS is not set
315CONFIG_MTD_CMDLINE_PARTS=y
316# CONFIG_MTD_AFS_PARTS is not set
317
318#
319# User Modules And Translation Layers
320#
321CONFIG_MTD_CHAR=y
322CONFIG_MTD_BLOCK=y
323# CONFIG_FTL is not set
324# CONFIG_NFTL is not set
325# CONFIG_INFTL is not set
326# CONFIG_RFD_FTL is not set
327
328#
329# RAM/ROM/Flash chip drivers
330#
331CONFIG_MTD_CFI=y
332# CONFIG_MTD_JEDECPROBE is not set
333CONFIG_MTD_GEN_PROBE=y
334# CONFIG_MTD_CFI_ADV_OPTIONS is not set
335CONFIG_MTD_MAP_BANK_WIDTH_1=y
336CONFIG_MTD_MAP_BANK_WIDTH_2=y
337CONFIG_MTD_MAP_BANK_WIDTH_4=y
338# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
339# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
340# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
341CONFIG_MTD_CFI_I1=y
342CONFIG_MTD_CFI_I2=y
343# CONFIG_MTD_CFI_I4 is not set
344# CONFIG_MTD_CFI_I8 is not set
345CONFIG_MTD_CFI_INTELEXT=y
346# CONFIG_MTD_CFI_AMDSTD is not set
347# CONFIG_MTD_CFI_STAA is not set
348CONFIG_MTD_CFI_UTIL=y
349# CONFIG_MTD_RAM is not set
350# CONFIG_MTD_ROM is not set
351# CONFIG_MTD_ABSENT is not set
352# CONFIG_MTD_XIP is not set
353
354#
355# Mapping drivers for chip access
356#
357# CONFIG_MTD_COMPLEX_MAPPINGS is not set
358# CONFIG_MTD_PHYSMAP is not set
359# CONFIG_MTD_ARM_INTEGRATOR is not set
360# CONFIG_MTD_PLATRAM is not set
361CONFIG_MTD_CSB337=y
362
363#
364# Self-contained MTD device drivers
365#
366# CONFIG_MTD_SLRAM is not set
367# CONFIG_MTD_PHRAM is not set
368# CONFIG_MTD_MTDRAM is not set
369# CONFIG_MTD_BLKMTD is not set
370# CONFIG_MTD_BLOCK2MTD is not set
371
372#
373# Disk-On-Chip Device Drivers
374#
375# CONFIG_MTD_DOC2000 is not set
376# CONFIG_MTD_DOC2001 is not set
377# CONFIG_MTD_DOC2001PLUS is not set
378# CONFIG_MTD_AT91_DATAFLASH is not set
379
380#
381# NAND Flash Device Drivers
382#
383# CONFIG_MTD_NAND is not set
384
385#
386# OneNAND Flash Device Drivers
387#
388# CONFIG_MTD_ONENAND is not set
389
390#
391# Parallel port support
392#
393# CONFIG_PARPORT is not set
394
395#
396# Plug and Play support
397#
398
399#
400# Block devices
401#
402# CONFIG_BLK_DEV_COW_COMMON is not set
403CONFIG_BLK_DEV_LOOP=y
404# CONFIG_BLK_DEV_CRYPTOLOOP is not set
405# CONFIG_BLK_DEV_NBD is not set
406# CONFIG_BLK_DEV_UB is not set
407CONFIG_BLK_DEV_RAM=y
408CONFIG_BLK_DEV_RAM_COUNT=16
409CONFIG_BLK_DEV_RAM_SIZE=8192
410CONFIG_BLK_DEV_INITRD=y
411# CONFIG_CDROM_PKTCDVD is not set
412# CONFIG_ATA_OVER_ETH is not set
413
414#
415# ATA/ATAPI/MFM/RLL support
416#
417# CONFIG_IDE is not set
418
419#
420# SCSI device support
421#
422# CONFIG_RAID_ATTRS is not set
423CONFIG_SCSI=y
424CONFIG_SCSI_PROC_FS=y
425
426#
427# SCSI support type (disk, tape, CD-ROM)
428#
429# CONFIG_BLK_DEV_SD is not set
430# CONFIG_CHR_DEV_ST is not set
431# CONFIG_CHR_DEV_OSST is not set
432# CONFIG_BLK_DEV_SR is not set
433# CONFIG_CHR_DEV_SG is not set
434# CONFIG_CHR_DEV_SCH is not set
435
436#
437# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
438#
439# CONFIG_SCSI_MULTI_LUN is not set
440# CONFIG_SCSI_CONSTANTS is not set
441# CONFIG_SCSI_LOGGING is not set
442
443#
444# SCSI Transport Attributes
445#
446# CONFIG_SCSI_SPI_ATTRS is not set
447# CONFIG_SCSI_FC_ATTRS is not set
448# CONFIG_SCSI_ISCSI_ATTRS is not set
449# CONFIG_SCSI_SAS_ATTRS is not set
450
451#
452# SCSI low-level drivers
453#
454# CONFIG_ISCSI_TCP is not set
455# CONFIG_SCSI_SATA is not set
456# CONFIG_SCSI_DEBUG is not set
457
458#
459# PCMCIA SCSI adapter support
460#
461# CONFIG_PCMCIA_AHA152X is not set
462# CONFIG_PCMCIA_FDOMAIN is not set
463# CONFIG_PCMCIA_NINJA_SCSI is not set
464# CONFIG_PCMCIA_QLOGIC is not set
465# CONFIG_PCMCIA_SYM53C500 is not set
466
467#
468# Multi-device support (RAID and LVM)
469#
470# CONFIG_MD is not set
471
472#
473# Fusion MPT device support
474#
475# CONFIG_FUSION is not set
476
477#
478# IEEE 1394 (FireWire) support
479#
480
481#
482# I2O device support
483#
484
485#
486# Network device support
487#
488CONFIG_NETDEVICES=y
489# CONFIG_DUMMY is not set
490# CONFIG_BONDING is not set
491# CONFIG_EQUALIZER is not set
492# CONFIG_TUN is not set
493
494#
495# PHY device support
496#
497# CONFIG_PHYLIB is not set
498
499#
500# Ethernet (10 or 100Mbit)
501#
502CONFIG_NET_ETHERNET=y
503CONFIG_MII=y
504CONFIG_ARM_AT91_ETHER=y
505# CONFIG_SMC91X is not set
506# CONFIG_DM9000 is not set
507
508#
509# Ethernet (1000 Mbit)
510#
511
512#
513# Ethernet (10000 Mbit)
514#
515
516#
517# Token Ring devices
518#
519
520#
521# Wireless LAN (non-hamradio)
522#
523# CONFIG_NET_RADIO is not set
524
525#
526# PCMCIA network device support
527#
528# CONFIG_NET_PCMCIA is not set
529
530#
531# Wan interfaces
532#
533# CONFIG_WAN is not set
534# CONFIG_PPP is not set
535# CONFIG_SLIP is not set
536# CONFIG_SHAPER is not set
537# CONFIG_NETCONSOLE is not set
538# CONFIG_NETPOLL is not set
539# CONFIG_NET_POLL_CONTROLLER is not set
540
541#
542# ISDN subsystem
543#
544# CONFIG_ISDN is not set
545
546#
547# Input device support
548#
549CONFIG_INPUT=y
550
551#
552# Userland interfaces
553#
554CONFIG_INPUT_MOUSEDEV=y
555CONFIG_INPUT_MOUSEDEV_PSAUX=y
556CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
557CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
558# CONFIG_INPUT_JOYDEV is not set
559# CONFIG_INPUT_TSDEV is not set
560# CONFIG_INPUT_EVDEV is not set
561# CONFIG_INPUT_EVBUG is not set
562
563#
564# Input Device Drivers
565#
566# CONFIG_INPUT_KEYBOARD is not set
567# CONFIG_INPUT_MOUSE is not set
568# CONFIG_INPUT_JOYSTICK is not set
569# CONFIG_INPUT_TOUCHSCREEN is not set
570# CONFIG_INPUT_MISC is not set
571
572#
573# Hardware I/O ports
574#
575# CONFIG_SERIO is not set
576# CONFIG_GAMEPORT is not set
577
578#
579# Character devices
580#
581CONFIG_VT=y
582CONFIG_VT_CONSOLE=y
583CONFIG_HW_CONSOLE=y
584# CONFIG_SERIAL_NONSTANDARD is not set
585
586#
587# Serial drivers
588#
589# CONFIG_SERIAL_8250 is not set
590
591#
592# Non-8250 serial port support
593#
594CONFIG_SERIAL_AT91=y
595CONFIG_SERIAL_AT91_CONSOLE=y
596# CONFIG_SERIAL_AT91_TTYAT is not set
597CONFIG_SERIAL_CORE=y
598CONFIG_SERIAL_CORE_CONSOLE=y
599CONFIG_UNIX98_PTYS=y
600CONFIG_LEGACY_PTYS=y
601CONFIG_LEGACY_PTY_COUNT=256
602
603#
604# IPMI
605#
606# CONFIG_IPMI_HANDLER is not set
607
608#
609# Watchdog Cards
610#
611CONFIG_WATCHDOG=y
612CONFIG_WATCHDOG_NOWAYOUT=y
613
614#
615# Watchdog Device Drivers
616#
617# CONFIG_SOFT_WATCHDOG is not set
618CONFIG_AT91_WATCHDOG=y
619
620#
621# USB-based Watchdog Cards
622#
623# CONFIG_USBPCWATCHDOG is not set
624# CONFIG_NVRAM is not set
625CONFIG_RTC=y
626# CONFIG_AT91_RTC is not set
627# CONFIG_DTLK is not set
628# CONFIG_R3964 is not set
629
630#
631# Ftape, the floppy tape device driver
632#
633
634#
635# PCMCIA character devices
636#
637# CONFIG_SYNCLINK_CS is not set
638# CONFIG_CARDMAN_4000 is not set
639# CONFIG_CARDMAN_4040 is not set
640# CONFIG_RAW_DRIVER is not set
641
642#
643# TPM devices
644#
645# CONFIG_TCG_TPM is not set
646# CONFIG_TELCLOCK is not set
647CONFIG_AT91_SPI=y
648CONFIG_AT91_SPIDEV=y
649
650#
651# I2C support
652#
653CONFIG_I2C=y
654CONFIG_I2C_CHARDEV=y
655
656#
657# I2C Algorithms
658#
659# CONFIG_I2C_ALGOBIT is not set
660# CONFIG_I2C_ALGOPCF is not set
661# CONFIG_I2C_ALGOPCA is not set
662
663#
664# I2C Hardware Bus support
665#
666CONFIG_I2C_AT91=y
667# CONFIG_I2C_PARPORT_LIGHT is not set
668# CONFIG_I2C_STUB is not set
669# CONFIG_I2C_PCA_ISA is not set
670
671#
672# Miscellaneous I2C Chip support
673#
674# CONFIG_SENSORS_DS1337 is not set
675# CONFIG_SENSORS_DS1374 is not set
676# CONFIG_SENSORS_EEPROM is not set
677# CONFIG_SENSORS_PCF8574 is not set
678# CONFIG_SENSORS_PCA9539 is not set
679# CONFIG_SENSORS_PCF8591 is not set
680# CONFIG_SENSORS_RTC8564 is not set
681# CONFIG_SENSORS_MAX6875 is not set
682# CONFIG_RTC_X1205_I2C is not set
683# CONFIG_I2C_DEBUG_CORE is not set
684# CONFIG_I2C_DEBUG_ALGO is not set
685# CONFIG_I2C_DEBUG_BUS is not set
686# CONFIG_I2C_DEBUG_CHIP is not set
687
688#
689# Hardware Monitoring support
690#
691CONFIG_HWMON=y
692# CONFIG_HWMON_VID is not set
693# CONFIG_SENSORS_ADM1021 is not set
694# CONFIG_SENSORS_ADM1025 is not set
695# CONFIG_SENSORS_ADM1026 is not set
696# CONFIG_SENSORS_ADM1031 is not set
697# CONFIG_SENSORS_ADM9240 is not set
698# CONFIG_SENSORS_ASB100 is not set
699# CONFIG_SENSORS_ATXP1 is not set
700# CONFIG_SENSORS_DS1621 is not set
701# CONFIG_SENSORS_FSCHER is not set
702# CONFIG_SENSORS_FSCPOS is not set
703# CONFIG_SENSORS_GL518SM is not set
704# CONFIG_SENSORS_GL520SM is not set
705# CONFIG_SENSORS_IT87 is not set
706# CONFIG_SENSORS_LM63 is not set
707# CONFIG_SENSORS_LM75 is not set
708# CONFIG_SENSORS_LM77 is not set
709# CONFIG_SENSORS_LM78 is not set
710# CONFIG_SENSORS_LM80 is not set
711# CONFIG_SENSORS_LM83 is not set
712# CONFIG_SENSORS_LM85 is not set
713# CONFIG_SENSORS_LM87 is not set
714# CONFIG_SENSORS_LM90 is not set
715# CONFIG_SENSORS_LM92 is not set
716# CONFIG_SENSORS_MAX1619 is not set
717# CONFIG_SENSORS_PC87360 is not set
718# CONFIG_SENSORS_SMSC47M1 is not set
719# CONFIG_SENSORS_SMSC47B397 is not set
720# CONFIG_SENSORS_W83781D is not set
721# CONFIG_SENSORS_W83792D is not set
722# CONFIG_SENSORS_W83L785TS is not set
723# CONFIG_SENSORS_W83627HF is not set
724# CONFIG_SENSORS_W83627EHF is not set
725# CONFIG_HWMON_DEBUG_CHIP is not set
726
727#
728# Misc devices
729#
730
731#
732# Multimedia Capabilities Port drivers
733#
734
735#
736# Multimedia devices
737#
738# CONFIG_VIDEO_DEV is not set
739
740#
741# Digital Video Broadcasting Devices
742#
743# CONFIG_DVB is not set
744
745#
746# Graphics support
747#
748# CONFIG_FB is not set
749
750#
751# Console display driver support
752#
753# CONFIG_VGA_CONSOLE is not set
754CONFIG_DUMMY_CONSOLE=y
755
756#
757# Sound
758#
759# CONFIG_SOUND is not set
760
761#
762# USB support
763#
764CONFIG_USB_ARCH_HAS_HCD=y
765CONFIG_USB_ARCH_HAS_OHCI=y
766CONFIG_USB=y
767CONFIG_USB_DEBUG=y
768
769#
770# Miscellaneous USB options
771#
772CONFIG_USB_DEVICEFS=y
773# CONFIG_USB_BANDWIDTH is not set
774# CONFIG_USB_DYNAMIC_MINORS is not set
775# CONFIG_USB_OTG is not set
776
777#
778# USB Host Controller Drivers
779#
780# CONFIG_USB_ISP116X_HCD is not set
781CONFIG_USB_OHCI_HCD=y
782# CONFIG_USB_OHCI_BIG_ENDIAN is not set
783CONFIG_USB_OHCI_LITTLE_ENDIAN=y
784# CONFIG_USB_SL811_HCD is not set
785
786#
787# USB Device Class drivers
788#
789# CONFIG_USB_ACM is not set
790# CONFIG_USB_PRINTER is not set
791
792#
793# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
794#
795
796#
797# may also be needed; see USB_STORAGE Help for more information
798#
799CONFIG_USB_STORAGE=y
800# CONFIG_USB_STORAGE_DEBUG is not set
801# CONFIG_USB_STORAGE_DATAFAB is not set
802# CONFIG_USB_STORAGE_FREECOM is not set
803# CONFIG_USB_STORAGE_DPCM is not set
804# CONFIG_USB_STORAGE_USBAT is not set
805# CONFIG_USB_STORAGE_SDDR09 is not set
806# CONFIG_USB_STORAGE_SDDR55 is not set
807# CONFIG_USB_STORAGE_JUMPSHOT is not set
808
809#
810# USB Input Devices
811#
812# CONFIG_USB_HID is not set
813
814#
815# USB HID Boot Protocol drivers
816#
817# CONFIG_USB_KBD is not set
818# CONFIG_USB_MOUSE is not set
819# CONFIG_USB_AIPTEK is not set
820# CONFIG_USB_WACOM is not set
821# CONFIG_USB_ACECAD is not set
822# CONFIG_USB_KBTAB is not set
823# CONFIG_USB_POWERMATE is not set
824# CONFIG_USB_MTOUCH is not set
825# CONFIG_USB_ITMTOUCH is not set
826# CONFIG_USB_EGALAX is not set
827# CONFIG_USB_YEALINK is not set
828# CONFIG_USB_XPAD is not set
829# CONFIG_USB_ATI_REMOTE is not set
830# CONFIG_USB_KEYSPAN_REMOTE is not set
831# CONFIG_USB_APPLETOUCH is not set
832
833#
834# USB Imaging devices
835#
836# CONFIG_USB_MDC800 is not set
837# CONFIG_USB_MICROTEK is not set
838
839#
840# USB Multimedia devices
841#
842# CONFIG_USB_DABUSB is not set
843
844#
845# Video4Linux support is needed for USB Multimedia device support
846#
847
848#
849# USB Network Adapters
850#
851# CONFIG_USB_CATC is not set
852# CONFIG_USB_KAWETH is not set
853# CONFIG_USB_PEGASUS is not set
854# CONFIG_USB_RTL8150 is not set
855# CONFIG_USB_USBNET is not set
856CONFIG_USB_MON=y
857
858#
859# USB port drivers
860#
861
862#
863# USB Serial Converter support
864#
865CONFIG_USB_SERIAL=y
866CONFIG_USB_SERIAL_CONSOLE=y
867CONFIG_USB_SERIAL_GENERIC=y
868# CONFIG_USB_SERIAL_AIRPRIME is not set
869# CONFIG_USB_SERIAL_ANYDATA is not set
870# CONFIG_USB_SERIAL_BELKIN is not set
871# CONFIG_USB_SERIAL_WHITEHEAT is not set
872# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
873# CONFIG_USB_SERIAL_CP2101 is not set
874# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
875# CONFIG_USB_SERIAL_EMPEG is not set
876CONFIG_USB_SERIAL_FTDI_SIO=y
877# CONFIG_USB_SERIAL_VISOR is not set
878# CONFIG_USB_SERIAL_IPAQ is not set
879# CONFIG_USB_SERIAL_IR is not set
880# CONFIG_USB_SERIAL_EDGEPORT is not set
881# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
882# CONFIG_USB_SERIAL_GARMIN is not set
883# CONFIG_USB_SERIAL_IPW is not set
884# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
885CONFIG_USB_SERIAL_KEYSPAN=y
886CONFIG_USB_SERIAL_KEYSPAN_MPR=y
887CONFIG_USB_SERIAL_KEYSPAN_USA28=y
888CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
889CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
890CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
891CONFIG_USB_SERIAL_KEYSPAN_USA19=y
892CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
893CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
894CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
895CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
896CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
897CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
898# CONFIG_USB_SERIAL_KLSI is not set
899# CONFIG_USB_SERIAL_KOBIL_SCT is not set
900CONFIG_USB_SERIAL_MCT_U232=y
901# CONFIG_USB_SERIAL_PL2303 is not set
902# CONFIG_USB_SERIAL_HP4X is not set
903# CONFIG_USB_SERIAL_SAFE is not set
904# CONFIG_USB_SERIAL_TI is not set
905# CONFIG_USB_SERIAL_CYBERJACK is not set
906# CONFIG_USB_SERIAL_XIRCOM is not set
907# CONFIG_USB_SERIAL_OPTION is not set
908# CONFIG_USB_SERIAL_OMNINET is not set
909CONFIG_USB_EZUSB=y
910
911#
912# USB Miscellaneous drivers
913#
914# CONFIG_USB_EMI62 is not set
915# CONFIG_USB_EMI26 is not set
916# CONFIG_USB_AUERSWALD is not set
917# CONFIG_USB_RIO500 is not set
918# CONFIG_USB_LEGOTOWER is not set
919# CONFIG_USB_LCD is not set
920# CONFIG_USB_LED is not set
921# CONFIG_USB_CYTHERM is not set
922# CONFIG_USB_PHIDGETKIT is not set
923# CONFIG_USB_PHIDGETSERVO is not set
924# CONFIG_USB_IDMOUSE is not set
925# CONFIG_USB_LD is not set
926# CONFIG_USB_TEST is not set
927
928#
929# USB DSL modem support
930#
931
932#
933# USB Gadget Support
934#
935CONFIG_USB_GADGET=y
936# CONFIG_USB_GADGET_DEBUG_FILES is not set
937CONFIG_USB_GADGET_SELECTED=y
938# CONFIG_USB_GADGET_NET2280 is not set
939# CONFIG_USB_GADGET_PXA2XX is not set
940# CONFIG_USB_GADGET_GOKU is not set
941# CONFIG_USB_GADGET_LH7A40X is not set
942# CONFIG_USB_GADGET_OMAP is not set
943CONFIG_USB_GADGET_AT91=y
944CONFIG_USB_AT91=y
945# CONFIG_USB_GADGET_DUMMY_HCD is not set
946# CONFIG_USB_GADGET_DUALSPEED is not set
947# CONFIG_USB_ZERO is not set
948# CONFIG_USB_ETH is not set
949# CONFIG_USB_GADGETFS is not set
950# CONFIG_USB_FILE_STORAGE is not set
951# CONFIG_USB_G_SERIAL is not set
952
953#
954# MMC/SD Card support
955#
956CONFIG_MMC=y
957# CONFIG_MMC_DEBUG is not set
958CONFIG_MMC_BLOCK=y
959# CONFIG_MMC_WBSD is not set
960CONFIG_MMC_AT91RM9200=y
961
962#
963# File systems
964#
965CONFIG_EXT2_FS=y
966# CONFIG_EXT2_FS_XATTR is not set
967# CONFIG_EXT2_FS_XIP is not set
968# CONFIG_EXT3_FS is not set
969# CONFIG_JBD is not set
970# CONFIG_REISERFS_FS is not set
971# CONFIG_JFS_FS is not set
972# CONFIG_FS_POSIX_ACL is not set
973# CONFIG_XFS_FS is not set
974# CONFIG_MINIX_FS is not set
975# CONFIG_ROMFS_FS is not set
976CONFIG_INOTIFY=y
977# CONFIG_QUOTA is not set
978CONFIG_DNOTIFY=y
979# CONFIG_AUTOFS_FS is not set
980# CONFIG_AUTOFS4_FS is not set
981# CONFIG_FUSE_FS is not set
982
983#
984# CD-ROM/DVD Filesystems
985#
986# CONFIG_ISO9660_FS is not set
987# CONFIG_UDF_FS is not set
988
989#
990# DOS/FAT/NT Filesystems
991#
992# CONFIG_MSDOS_FS is not set
993# CONFIG_VFAT_FS is not set
994# CONFIG_NTFS_FS is not set
995
996#
997# Pseudo filesystems
998#
999CONFIG_PROC_FS=y
1000CONFIG_SYSFS=y
1001CONFIG_TMPFS=y
1002# CONFIG_HUGETLB_PAGE is not set
1003CONFIG_RAMFS=y
1004# CONFIG_RELAYFS_FS is not set
1005
1006#
1007# Miscellaneous filesystems
1008#
1009# CONFIG_ADFS_FS is not set
1010# CONFIG_AFFS_FS is not set
1011# CONFIG_HFS_FS is not set
1012# CONFIG_HFSPLUS_FS is not set
1013# CONFIG_BEFS_FS is not set
1014# CONFIG_BFS_FS is not set
1015# CONFIG_EFS_FS is not set
1016# CONFIG_JFFS_FS is not set
1017# CONFIG_JFFS2_FS is not set
1018CONFIG_CRAMFS=y
1019# CONFIG_VXFS_FS is not set
1020# CONFIG_HPFS_FS is not set
1021# CONFIG_QNX4FS_FS is not set
1022# CONFIG_SYSV_FS is not set
1023# CONFIG_UFS_FS is not set
1024
1025#
1026# Network File Systems
1027#
1028CONFIG_NFS_FS=y
1029CONFIG_NFS_V3=y
1030# CONFIG_NFS_V3_ACL is not set
1031CONFIG_NFS_V4=y
1032# CONFIG_NFS_DIRECTIO is not set
1033# CONFIG_NFSD is not set
1034CONFIG_ROOT_NFS=y
1035CONFIG_LOCKD=y
1036CONFIG_LOCKD_V4=y
1037CONFIG_NFS_COMMON=y
1038CONFIG_SUNRPC=y
1039CONFIG_SUNRPC_GSS=y
1040CONFIG_RPCSEC_GSS_KRB5=y
1041# CONFIG_RPCSEC_GSS_SPKM3 is not set
1042# CONFIG_SMB_FS is not set
1043# CONFIG_CIFS is not set
1044# CONFIG_NCP_FS is not set
1045# CONFIG_CODA_FS is not set
1046# CONFIG_AFS_FS is not set
1047# CONFIG_9P_FS is not set
1048
1049#
1050# Partition Types
1051#
1052# CONFIG_PARTITION_ADVANCED is not set
1053CONFIG_MSDOS_PARTITION=y
1054
1055#
1056# Native Language Support
1057#
1058# CONFIG_NLS is not set
1059
1060#
1061# Profiling support
1062#
1063# CONFIG_PROFILING is not set
1064
1065#
1066# Kernel hacking
1067#
1068# CONFIG_PRINTK_TIME is not set
1069CONFIG_DEBUG_KERNEL=y
1070# CONFIG_MAGIC_SYSRQ is not set
1071CONFIG_LOG_BUF_SHIFT=14
1072CONFIG_DETECT_SOFTLOCKUP=y
1073# CONFIG_SCHEDSTATS is not set
1074# CONFIG_DEBUG_SLAB is not set
1075# CONFIG_DEBUG_SPINLOCK is not set
1076# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1077# CONFIG_DEBUG_KOBJECT is not set
1078CONFIG_DEBUG_BUGVERBOSE=y
1079# CONFIG_DEBUG_INFO is not set
1080# CONFIG_DEBUG_FS is not set
1081# CONFIG_DEBUG_VM is not set
1082CONFIG_FRAME_POINTER=y
1083# CONFIG_RCU_TORTURE_TEST is not set
1084CONFIG_DEBUG_USER=y
1085# CONFIG_DEBUG_WAITQ is not set
1086# CONFIG_DEBUG_ERRORS is not set
1087CONFIG_DEBUG_LL=y
1088# CONFIG_DEBUG_ICEDCC is not set
1089
1090#
1091# Security options
1092#
1093# CONFIG_KEYS is not set
1094# CONFIG_SECURITY is not set
1095
1096#
1097# Cryptographic options
1098#
1099CONFIG_CRYPTO=y
1100# CONFIG_CRYPTO_HMAC is not set
1101# CONFIG_CRYPTO_NULL is not set
1102# CONFIG_CRYPTO_MD4 is not set
1103CONFIG_CRYPTO_MD5=y
1104# CONFIG_CRYPTO_SHA1 is not set
1105# CONFIG_CRYPTO_SHA256 is not set
1106# CONFIG_CRYPTO_SHA512 is not set
1107# CONFIG_CRYPTO_WP512 is not set
1108# CONFIG_CRYPTO_TGR192 is not set
1109CONFIG_CRYPTO_DES=y
1110# CONFIG_CRYPTO_BLOWFISH is not set
1111# CONFIG_CRYPTO_TWOFISH is not set
1112# CONFIG_CRYPTO_SERPENT is not set
1113# CONFIG_CRYPTO_AES is not set
1114# CONFIG_CRYPTO_CAST5 is not set
1115# CONFIG_CRYPTO_CAST6 is not set
1116# CONFIG_CRYPTO_TEA is not set
1117# CONFIG_CRYPTO_ARC4 is not set
1118# CONFIG_CRYPTO_KHAZAD is not set
1119# CONFIG_CRYPTO_ANUBIS is not set
1120# CONFIG_CRYPTO_DEFLATE is not set
1121# CONFIG_CRYPTO_MICHAEL_MIC is not set
1122# CONFIG_CRYPTO_CRC32C is not set
1123# CONFIG_CRYPTO_TEST is not set
1124
1125#
1126# Hardware crypto devices
1127#
1128
1129#
1130# Library routines
1131#
1132# CONFIG_CRC_CCITT is not set
1133# CONFIG_CRC16 is not set
1134CONFIG_CRC32=y
1135# CONFIG_LIBCRC32C is not set
1136CONFIG_ZLIB_INFLATE=y
diff --git a/arch/arm/configs/csb637_defconfig b/arch/arm/configs/csb637_defconfig
new file mode 100644
index 000000000000..95a96a5462a0
--- /dev/null
+++ b/arch/arm/configs/csb637_defconfig
@@ -0,0 +1,1116 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.15
4# Mon Jan 9 21:52:00 2006
5#
6CONFIG_ARM=y
7CONFIG_MMU=y
8CONFIG_UID16=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y
11
12#
13# Code maturity level options
14#
15CONFIG_EXPERIMENTAL=y
16CONFIG_CLEAN_COMPILE=y
17CONFIG_BROKEN_ON_SMP=y
18CONFIG_INIT_ENV_ARG_LIMIT=32
19
20#
21# General setup
22#
23CONFIG_LOCALVERSION=""
24CONFIG_LOCALVERSION_AUTO=y
25# CONFIG_SWAP is not set
26CONFIG_SYSVIPC=y
27# CONFIG_POSIX_MQUEUE is not set
28# CONFIG_BSD_PROCESS_ACCT is not set
29CONFIG_SYSCTL=y
30# CONFIG_AUDIT is not set
31CONFIG_HOTPLUG=y
32CONFIG_KOBJECT_UEVENT=y
33# CONFIG_IKCONFIG is not set
34CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y
36# CONFIG_EMBEDDED is not set
37CONFIG_KALLSYMS=y
38# CONFIG_KALLSYMS_ALL is not set
39# CONFIG_KALLSYMS_EXTRA_PASS is not set
40CONFIG_PRINTK=y
41CONFIG_BUG=y
42CONFIG_BASE_FULL=y
43CONFIG_FUTEX=y
44CONFIG_EPOLL=y
45CONFIG_SHMEM=y
46CONFIG_CC_ALIGN_FUNCTIONS=0
47CONFIG_CC_ALIGN_LABELS=0
48CONFIG_CC_ALIGN_LOOPS=0
49CONFIG_CC_ALIGN_JUMPS=0
50# CONFIG_TINY_SHMEM is not set
51CONFIG_BASE_SMALL=0
52
53#
54# Loadable module support
55#
56CONFIG_MODULES=y
57CONFIG_MODULE_UNLOAD=y
58# CONFIG_MODULE_FORCE_UNLOAD is not set
59CONFIG_OBSOLETE_MODPARM=y
60# CONFIG_MODVERSIONS is not set
61# CONFIG_MODULE_SRCVERSION_ALL is not set
62CONFIG_KMOD=y
63
64#
65# Block layer
66#
67
68#
69# IO Schedulers
70#
71CONFIG_IOSCHED_NOOP=y
72CONFIG_IOSCHED_AS=y
73CONFIG_IOSCHED_DEADLINE=y
74CONFIG_IOSCHED_CFQ=y
75CONFIG_DEFAULT_AS=y
76# CONFIG_DEFAULT_DEADLINE is not set
77# CONFIG_DEFAULT_CFQ is not set
78# CONFIG_DEFAULT_NOOP is not set
79CONFIG_DEFAULT_IOSCHED="anticipatory"
80
81#
82# System Type
83#
84# CONFIG_ARCH_CLPS7500 is not set
85# CONFIG_ARCH_CLPS711X is not set
86# CONFIG_ARCH_CO285 is not set
87# CONFIG_ARCH_EBSA110 is not set
88# CONFIG_ARCH_CAMELOT is not set
89# CONFIG_ARCH_FOOTBRIDGE is not set
90# CONFIG_ARCH_INTEGRATOR is not set
91# CONFIG_ARCH_IOP3XX is not set
92# CONFIG_ARCH_IXP4XX is not set
93# CONFIG_ARCH_IXP2000 is not set
94# CONFIG_ARCH_L7200 is not set
95# CONFIG_ARCH_PXA is not set
96# CONFIG_ARCH_RPC is not set
97# CONFIG_ARCH_SA1100 is not set
98# CONFIG_ARCH_S3C2410 is not set
99# CONFIG_ARCH_SHARK is not set
100# CONFIG_ARCH_LH7A40X is not set
101# CONFIG_ARCH_OMAP is not set
102# CONFIG_ARCH_VERSATILE is not set
103# CONFIG_ARCH_REALVIEW is not set
104# CONFIG_ARCH_IMX is not set
105# CONFIG_ARCH_H720X is not set
106# CONFIG_ARCH_AAEC2000 is not set
107CONFIG_ARCH_AT91RM9200=y
108
109#
110# AT91RM9200 Implementations
111#
112
113#
114# AT91RM9200 Board Type
115#
116# CONFIG_ARCH_AT91RM9200DK is not set
117# CONFIG_MACH_AT91RM9200EK is not set
118# CONFIG_MACH_CSB337 is not set
119CONFIG_MACH_CSB637=y
120# CONFIG_MACH_CARMEVA is not set
121# CONFIG_MACH_KB9200 is not set
122# CONFIG_MACH_ATEB9200 is not set
123
124#
125# AT91RM9200 Feature Selections
126#
127CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
128
129#
130# Processor Type
131#
132CONFIG_CPU_32=y
133CONFIG_CPU_ARM920T=y
134CONFIG_CPU_32v4=y
135CONFIG_CPU_ABRT_EV4T=y
136CONFIG_CPU_CACHE_V4WT=y
137CONFIG_CPU_CACHE_VIVT=y
138CONFIG_CPU_COPY_V4WB=y
139CONFIG_CPU_TLB_V4WBI=y
140
141#
142# Processor Features
143#
144# CONFIG_ARM_THUMB is not set
145# CONFIG_CPU_ICACHE_DISABLE is not set
146# CONFIG_CPU_DCACHE_DISABLE is not set
147# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
148
149#
150# Bus support
151#
152CONFIG_ISA_DMA_API=y
153
154#
155# PCCARD (PCMCIA/CardBus) support
156#
157CONFIG_PCCARD=y
158# CONFIG_PCMCIA_DEBUG is not set
159CONFIG_PCMCIA=y
160CONFIG_PCMCIA_LOAD_CIS=y
161CONFIG_PCMCIA_IOCTL=y
162
163#
164# PC-card bridges
165#
166CONFIG_AT91_CF=y
167
168#
169# Kernel Features
170#
171# CONFIG_PREEMPT is not set
172# CONFIG_NO_IDLE_HZ is not set
173# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
174CONFIG_SELECT_MEMORY_MODEL=y
175CONFIG_FLATMEM_MANUAL=y
176# CONFIG_DISCONTIGMEM_MANUAL is not set
177# CONFIG_SPARSEMEM_MANUAL is not set
178CONFIG_FLATMEM=y
179CONFIG_FLAT_NODE_MEM_MAP=y
180# CONFIG_SPARSEMEM_STATIC is not set
181CONFIG_SPLIT_PTLOCK_CPUS=4096
182CONFIG_LEDS=y
183CONFIG_LEDS_TIMER=y
184CONFIG_LEDS_CPU=y
185CONFIG_ALIGNMENT_TRAP=y
186
187#
188# Boot options
189#
190CONFIG_ZBOOT_ROM_TEXT=0x0
191CONFIG_ZBOOT_ROM_BSS=0x0
192CONFIG_CMDLINE="mem=32M console=ttyS0,38400 initrd=0x20410000,3145728 root=/dev/ram0 rw"
193# CONFIG_XIP_KERNEL is not set
194
195#
196# Floating point emulation
197#
198
199#
200# At least one emulation must be selected
201#
202CONFIG_FPE_NWFPE=y
203# CONFIG_FPE_NWFPE_XP is not set
204# CONFIG_FPE_FASTFPE is not set
205
206#
207# Userspace binary formats
208#
209CONFIG_BINFMT_ELF=y
210# CONFIG_BINFMT_AOUT is not set
211# CONFIG_BINFMT_MISC is not set
212# CONFIG_ARTHUR is not set
213
214#
215# Power management options
216#
217# CONFIG_PM is not set
218
219#
220# Networking
221#
222CONFIG_NET=y
223
224#
225# Networking options
226#
227CONFIG_PACKET=y
228# CONFIG_PACKET_MMAP is not set
229CONFIG_UNIX=y
230# CONFIG_NET_KEY is not set
231CONFIG_INET=y
232# CONFIG_IP_MULTICAST is not set
233# CONFIG_IP_ADVANCED_ROUTER is not set
234CONFIG_IP_FIB_HASH=y
235CONFIG_IP_PNP=y
236CONFIG_IP_PNP_DHCP=y
237CONFIG_IP_PNP_BOOTP=y
238# CONFIG_IP_PNP_RARP is not set
239# CONFIG_NET_IPIP is not set
240# CONFIG_NET_IPGRE is not set
241# CONFIG_ARPD is not set
242# CONFIG_SYN_COOKIES is not set
243# CONFIG_INET_AH is not set
244# CONFIG_INET_ESP is not set
245# CONFIG_INET_IPCOMP is not set
246# CONFIG_INET_TUNNEL is not set
247CONFIG_INET_DIAG=y
248CONFIG_INET_TCP_DIAG=y
249# CONFIG_TCP_CONG_ADVANCED is not set
250CONFIG_TCP_CONG_BIC=y
251# CONFIG_IPV6 is not set
252# CONFIG_NETFILTER is not set
253
254#
255# DCCP Configuration (EXPERIMENTAL)
256#
257# CONFIG_IP_DCCP is not set
258
259#
260# SCTP Configuration (EXPERIMENTAL)
261#
262# CONFIG_IP_SCTP is not set
263# CONFIG_ATM is not set
264# CONFIG_BRIDGE is not set
265# CONFIG_VLAN_8021Q is not set
266# CONFIG_DECNET is not set
267# CONFIG_LLC2 is not set
268# CONFIG_IPX is not set
269# CONFIG_ATALK is not set
270# CONFIG_X25 is not set
271# CONFIG_LAPB is not set
272# CONFIG_NET_DIVERT is not set
273# CONFIG_ECONET is not set
274# CONFIG_WAN_ROUTER is not set
275
276#
277# QoS and/or fair queueing
278#
279# CONFIG_NET_SCHED is not set
280
281#
282# Network testing
283#
284# CONFIG_NET_PKTGEN is not set
285# CONFIG_HAMRADIO is not set
286# CONFIG_IRDA is not set
287# CONFIG_BT is not set
288# CONFIG_IEEE80211 is not set
289
290#
291# Device Drivers
292#
293
294#
295# Generic Driver Options
296#
297CONFIG_STANDALONE=y
298CONFIG_PREVENT_FIRMWARE_BUILD=y
299CONFIG_FW_LOADER=y
300# CONFIG_DEBUG_DRIVER is not set
301
302#
303# Connector - unified userspace <-> kernelspace linker
304#
305# CONFIG_CONNECTOR is not set
306
307#
308# Memory Technology Devices (MTD)
309#
310CONFIG_MTD=y
311# CONFIG_MTD_DEBUG is not set
312# CONFIG_MTD_CONCAT is not set
313CONFIG_MTD_PARTITIONS=y
314# CONFIG_MTD_REDBOOT_PARTS is not set
315CONFIG_MTD_CMDLINE_PARTS=y
316# CONFIG_MTD_AFS_PARTS is not set
317
318#
319# User Modules And Translation Layers
320#
321CONFIG_MTD_CHAR=y
322CONFIG_MTD_BLOCK=y
323# CONFIG_FTL is not set
324# CONFIG_NFTL is not set
325# CONFIG_INFTL is not set
326# CONFIG_RFD_FTL is not set
327
328#
329# RAM/ROM/Flash chip drivers
330#
331CONFIG_MTD_CFI=y
332# CONFIG_MTD_JEDECPROBE is not set
333CONFIG_MTD_GEN_PROBE=y
334# CONFIG_MTD_CFI_ADV_OPTIONS is not set
335CONFIG_MTD_MAP_BANK_WIDTH_1=y
336CONFIG_MTD_MAP_BANK_WIDTH_2=y
337CONFIG_MTD_MAP_BANK_WIDTH_4=y
338# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
339# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
340# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
341CONFIG_MTD_CFI_I1=y
342CONFIG_MTD_CFI_I2=y
343# CONFIG_MTD_CFI_I4 is not set
344# CONFIG_MTD_CFI_I8 is not set
345CONFIG_MTD_CFI_INTELEXT=y
346# CONFIG_MTD_CFI_AMDSTD is not set
347# CONFIG_MTD_CFI_STAA is not set
348CONFIG_MTD_CFI_UTIL=y
349# CONFIG_MTD_RAM is not set
350# CONFIG_MTD_ROM is not set
351# CONFIG_MTD_ABSENT is not set
352# CONFIG_MTD_XIP is not set
353
354#
355# Mapping drivers for chip access
356#
357# CONFIG_MTD_COMPLEX_MAPPINGS is not set
358# CONFIG_MTD_PHYSMAP is not set
359# CONFIG_MTD_ARM_INTEGRATOR is not set
360# CONFIG_MTD_PLATRAM is not set
361CONFIG_MTD_CSB637=y
362
363#
364# Self-contained MTD device drivers
365#
366# CONFIG_MTD_SLRAM is not set
367# CONFIG_MTD_PHRAM is not set
368# CONFIG_MTD_MTDRAM is not set
369# CONFIG_MTD_BLKMTD is not set
370# CONFIG_MTD_BLOCK2MTD is not set
371
372#
373# Disk-On-Chip Device Drivers
374#
375# CONFIG_MTD_DOC2000 is not set
376# CONFIG_MTD_DOC2001 is not set
377# CONFIG_MTD_DOC2001PLUS is not set
378# CONFIG_MTD_AT91_DATAFLASH is not set
379
380#
381# NAND Flash Device Drivers
382#
383# CONFIG_MTD_NAND is not set
384
385#
386# OneNAND Flash Device Drivers
387#
388# CONFIG_MTD_ONENAND is not set
389
390#
391# Parallel port support
392#
393# CONFIG_PARPORT is not set
394
395#
396# Plug and Play support
397#
398
399#
400# Block devices
401#
402# CONFIG_BLK_DEV_COW_COMMON is not set
403CONFIG_BLK_DEV_LOOP=y
404# CONFIG_BLK_DEV_CRYPTOLOOP is not set
405# CONFIG_BLK_DEV_NBD is not set
406# CONFIG_BLK_DEV_UB is not set
407CONFIG_BLK_DEV_RAM=y
408CONFIG_BLK_DEV_RAM_COUNT=16
409CONFIG_BLK_DEV_RAM_SIZE=8192
410CONFIG_BLK_DEV_INITRD=y
411# CONFIG_CDROM_PKTCDVD is not set
412# CONFIG_ATA_OVER_ETH is not set
413
414#
415# ATA/ATAPI/MFM/RLL support
416#
417# CONFIG_IDE is not set
418
419#
420# SCSI device support
421#
422# CONFIG_RAID_ATTRS is not set
423CONFIG_SCSI=y
424CONFIG_SCSI_PROC_FS=y
425
426#
427# SCSI support type (disk, tape, CD-ROM)
428#
429# CONFIG_BLK_DEV_SD is not set
430# CONFIG_CHR_DEV_ST is not set
431# CONFIG_CHR_DEV_OSST is not set
432# CONFIG_BLK_DEV_SR is not set
433# CONFIG_CHR_DEV_SG is not set
434# CONFIG_CHR_DEV_SCH is not set
435
436#
437# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
438#
439# CONFIG_SCSI_MULTI_LUN is not set
440# CONFIG_SCSI_CONSTANTS is not set
441# CONFIG_SCSI_LOGGING is not set
442
443#
444# SCSI Transport Attributes
445#
446# CONFIG_SCSI_SPI_ATTRS is not set
447# CONFIG_SCSI_FC_ATTRS is not set
448# CONFIG_SCSI_ISCSI_ATTRS is not set
449# CONFIG_SCSI_SAS_ATTRS is not set
450
451#
452# SCSI low-level drivers
453#
454# CONFIG_ISCSI_TCP is not set
455# CONFIG_SCSI_SATA is not set
456# CONFIG_SCSI_DEBUG is not set
457
458#
459# PCMCIA SCSI adapter support
460#
461# CONFIG_PCMCIA_AHA152X is not set
462# CONFIG_PCMCIA_FDOMAIN is not set
463# CONFIG_PCMCIA_NINJA_SCSI is not set
464# CONFIG_PCMCIA_QLOGIC is not set
465# CONFIG_PCMCIA_SYM53C500 is not set
466
467#
468# Multi-device support (RAID and LVM)
469#
470# CONFIG_MD is not set
471
472#
473# Fusion MPT device support
474#
475# CONFIG_FUSION is not set
476
477#
478# IEEE 1394 (FireWire) support
479#
480
481#
482# I2O device support
483#
484
485#
486# Network device support
487#
488CONFIG_NETDEVICES=y
489# CONFIG_DUMMY is not set
490# CONFIG_BONDING is not set
491# CONFIG_EQUALIZER is not set
492# CONFIG_TUN is not set
493
494#
495# PHY device support
496#
497# CONFIG_PHYLIB is not set
498
499#
500# Ethernet (10 or 100Mbit)
501#
502CONFIG_NET_ETHERNET=y
503CONFIG_MII=y
504CONFIG_ARM_AT91_ETHER=y
505# CONFIG_SMC91X is not set
506# CONFIG_DM9000 is not set
507
508#
509# Ethernet (1000 Mbit)
510#
511
512#
513# Ethernet (10000 Mbit)
514#
515
516#
517# Token Ring devices
518#
519
520#
521# Wireless LAN (non-hamradio)
522#
523# CONFIG_NET_RADIO is not set
524
525#
526# PCMCIA network device support
527#
528# CONFIG_NET_PCMCIA is not set
529
530#
531# Wan interfaces
532#
533# CONFIG_WAN is not set
534# CONFIG_PPP is not set
535# CONFIG_SLIP is not set
536# CONFIG_SHAPER is not set
537# CONFIG_NETCONSOLE is not set
538# CONFIG_NETPOLL is not set
539# CONFIG_NET_POLL_CONTROLLER is not set
540
541#
542# ISDN subsystem
543#
544# CONFIG_ISDN is not set
545
546#
547# Input device support
548#
549CONFIG_INPUT=y
550
551#
552# Userland interfaces
553#
554CONFIG_INPUT_MOUSEDEV=y
555CONFIG_INPUT_MOUSEDEV_PSAUX=y
556CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
557CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
558# CONFIG_INPUT_JOYDEV is not set
559# CONFIG_INPUT_TSDEV is not set
560# CONFIG_INPUT_EVDEV is not set
561# CONFIG_INPUT_EVBUG is not set
562
563#
564# Input Device Drivers
565#
566# CONFIG_INPUT_KEYBOARD is not set
567# CONFIG_INPUT_MOUSE is not set
568# CONFIG_INPUT_JOYSTICK is not set
569# CONFIG_INPUT_TOUCHSCREEN is not set
570# CONFIG_INPUT_MISC is not set
571
572#
573# Hardware I/O ports
574#
575# CONFIG_SERIO is not set
576# CONFIG_GAMEPORT is not set
577
578#
579# Character devices
580#
581CONFIG_VT=y
582CONFIG_VT_CONSOLE=y
583CONFIG_HW_CONSOLE=y
584# CONFIG_SERIAL_NONSTANDARD is not set
585
586#
587# Serial drivers
588#
589# CONFIG_SERIAL_8250 is not set
590
591#
592# Non-8250 serial port support
593#
594CONFIG_SERIAL_AT91=y
595CONFIG_SERIAL_AT91_CONSOLE=y
596# CONFIG_SERIAL_AT91_TTYAT is not set
597CONFIG_SERIAL_CORE=y
598CONFIG_SERIAL_CORE_CONSOLE=y
599CONFIG_UNIX98_PTYS=y
600CONFIG_LEGACY_PTYS=y
601CONFIG_LEGACY_PTY_COUNT=256
602
603#
604# IPMI
605#
606# CONFIG_IPMI_HANDLER is not set
607
608#
609# Watchdog Cards
610#
611CONFIG_WATCHDOG=y
612CONFIG_WATCHDOG_NOWAYOUT=y
613
614#
615# Watchdog Device Drivers
616#
617# CONFIG_SOFT_WATCHDOG is not set
618CONFIG_AT91_WATCHDOG=y
619
620#
621# USB-based Watchdog Cards
622#
623# CONFIG_USBPCWATCHDOG is not set
624# CONFIG_NVRAM is not set
625CONFIG_RTC=y
626# CONFIG_AT91_RTC is not set
627# CONFIG_DTLK is not set
628# CONFIG_R3964 is not set
629
630#
631# Ftape, the floppy tape device driver
632#
633
634#
635# PCMCIA character devices
636#
637# CONFIG_SYNCLINK_CS is not set
638# CONFIG_CARDMAN_4000 is not set
639# CONFIG_CARDMAN_4040 is not set
640# CONFIG_RAW_DRIVER is not set
641
642#
643# TPM devices
644#
645# CONFIG_TCG_TPM is not set
646# CONFIG_TELCLOCK is not set
647CONFIG_AT91_SPI=y
648CONFIG_AT91_SPIDEV=y
649
650#
651# I2C support
652#
653CONFIG_I2C=y
654CONFIG_I2C_CHARDEV=y
655
656#
657# I2C Algorithms
658#
659# CONFIG_I2C_ALGOBIT is not set
660# CONFIG_I2C_ALGOPCF is not set
661# CONFIG_I2C_ALGOPCA is not set
662
663#
664# I2C Hardware Bus support
665#
666CONFIG_I2C_AT91=y
667# CONFIG_I2C_PARPORT_LIGHT is not set
668# CONFIG_I2C_STUB is not set
669# CONFIG_I2C_PCA_ISA is not set
670
671#
672# Miscellaneous I2C Chip support
673#
674# CONFIG_SENSORS_DS1337 is not set
675# CONFIG_SENSORS_DS1374 is not set
676# CONFIG_SENSORS_EEPROM is not set
677# CONFIG_SENSORS_PCF8574 is not set
678# CONFIG_SENSORS_PCA9539 is not set
679# CONFIG_SENSORS_PCF8591 is not set
680# CONFIG_SENSORS_RTC8564 is not set
681# CONFIG_SENSORS_MAX6875 is not set
682# CONFIG_RTC_X1205_I2C is not set
683# CONFIG_I2C_DEBUG_CORE is not set
684# CONFIG_I2C_DEBUG_ALGO is not set
685# CONFIG_I2C_DEBUG_BUS is not set
686# CONFIG_I2C_DEBUG_CHIP is not set
687
688#
689# Hardware Monitoring support
690#
691CONFIG_HWMON=y
692# CONFIG_HWMON_VID is not set
693# CONFIG_SENSORS_ADM1021 is not set
694# CONFIG_SENSORS_ADM1025 is not set
695# CONFIG_SENSORS_ADM1026 is not set
696# CONFIG_SENSORS_ADM1031 is not set
697# CONFIG_SENSORS_ADM9240 is not set
698# CONFIG_SENSORS_ASB100 is not set
699# CONFIG_SENSORS_ATXP1 is not set
700# CONFIG_SENSORS_DS1621 is not set
701# CONFIG_SENSORS_FSCHER is not set
702# CONFIG_SENSORS_FSCPOS is not set
703# CONFIG_SENSORS_GL518SM is not set
704# CONFIG_SENSORS_GL520SM is not set
705# CONFIG_SENSORS_IT87 is not set
706# CONFIG_SENSORS_LM63 is not set
707# CONFIG_SENSORS_LM75 is not set
708# CONFIG_SENSORS_LM77 is not set
709# CONFIG_SENSORS_LM78 is not set
710# CONFIG_SENSORS_LM80 is not set
711# CONFIG_SENSORS_LM83 is not set
712# CONFIG_SENSORS_LM85 is not set
713# CONFIG_SENSORS_LM87 is not set
714# CONFIG_SENSORS_LM90 is not set
715# CONFIG_SENSORS_LM92 is not set
716# CONFIG_SENSORS_MAX1619 is not set
717# CONFIG_SENSORS_PC87360 is not set
718# CONFIG_SENSORS_SMSC47M1 is not set
719# CONFIG_SENSORS_SMSC47B397 is not set
720# CONFIG_SENSORS_W83781D is not set
721# CONFIG_SENSORS_W83792D is not set
722# CONFIG_SENSORS_W83L785TS is not set
723# CONFIG_SENSORS_W83627HF is not set
724# CONFIG_SENSORS_W83627EHF is not set
725# CONFIG_HWMON_DEBUG_CHIP is not set
726
727#
728# Misc devices
729#
730
731#
732# Multimedia Capabilities Port drivers
733#
734
735#
736# Multimedia devices
737#
738# CONFIG_VIDEO_DEV is not set
739
740#
741# Digital Video Broadcasting Devices
742#
743# CONFIG_DVB is not set
744
745#
746# Graphics support
747#
748# CONFIG_FB is not set
749
750#
751# Console display driver support
752#
753# CONFIG_VGA_CONSOLE is not set
754CONFIG_DUMMY_CONSOLE=y
755
756#
757# Sound
758#
759# CONFIG_SOUND is not set
760
761#
762# USB support
763#
764CONFIG_USB_ARCH_HAS_HCD=y
765CONFIG_USB_ARCH_HAS_OHCI=y
766CONFIG_USB=y
767CONFIG_USB_DEBUG=y
768
769#
770# Miscellaneous USB options
771#
772CONFIG_USB_DEVICEFS=y
773# CONFIG_USB_BANDWIDTH is not set
774# CONFIG_USB_DYNAMIC_MINORS is not set
775# CONFIG_USB_OTG is not set
776
777#
778# USB Host Controller Drivers
779#
780# CONFIG_USB_ISP116X_HCD is not set
781CONFIG_USB_OHCI_HCD=y
782# CONFIG_USB_OHCI_BIG_ENDIAN is not set
783CONFIG_USB_OHCI_LITTLE_ENDIAN=y
784# CONFIG_USB_SL811_HCD is not set
785
786#
787# USB Device Class drivers
788#
789# CONFIG_USB_ACM is not set
790# CONFIG_USB_PRINTER is not set
791
792#
793# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
794#
795
796#
797# may also be needed; see USB_STORAGE Help for more information
798#
799CONFIG_USB_STORAGE=y
800# CONFIG_USB_STORAGE_DEBUG is not set
801# CONFIG_USB_STORAGE_DATAFAB is not set
802# CONFIG_USB_STORAGE_FREECOM is not set
803# CONFIG_USB_STORAGE_DPCM is not set
804# CONFIG_USB_STORAGE_USBAT is not set
805# CONFIG_USB_STORAGE_SDDR09 is not set
806# CONFIG_USB_STORAGE_SDDR55 is not set
807# CONFIG_USB_STORAGE_JUMPSHOT is not set
808
809#
810# USB Input Devices
811#
812# CONFIG_USB_HID is not set
813
814#
815# USB HID Boot Protocol drivers
816#
817# CONFIG_USB_KBD is not set
818# CONFIG_USB_MOUSE is not set
819# CONFIG_USB_AIPTEK is not set
820# CONFIG_USB_WACOM is not set
821# CONFIG_USB_ACECAD is not set
822# CONFIG_USB_KBTAB is not set
823# CONFIG_USB_POWERMATE is not set
824# CONFIG_USB_MTOUCH is not set
825# CONFIG_USB_ITMTOUCH is not set
826# CONFIG_USB_EGALAX is not set
827# CONFIG_USB_YEALINK is not set
828# CONFIG_USB_XPAD is not set
829# CONFIG_USB_ATI_REMOTE is not set
830# CONFIG_USB_KEYSPAN_REMOTE is not set
831# CONFIG_USB_APPLETOUCH is not set
832
833#
834# USB Imaging devices
835#
836# CONFIG_USB_MDC800 is not set
837# CONFIG_USB_MICROTEK is not set
838
839#
840# USB Multimedia devices
841#
842# CONFIG_USB_DABUSB is not set
843
844#
845# Video4Linux support is needed for USB Multimedia device support
846#
847
848#
849# USB Network Adapters
850#
851# CONFIG_USB_CATC is not set
852# CONFIG_USB_KAWETH is not set
853# CONFIG_USB_PEGASUS is not set
854# CONFIG_USB_RTL8150 is not set
855# CONFIG_USB_USBNET is not set
856CONFIG_USB_MON=y
857
858#
859# USB port drivers
860#
861
862#
863# USB Serial Converter support
864#
865CONFIG_USB_SERIAL=y
866CONFIG_USB_SERIAL_CONSOLE=y
867CONFIG_USB_SERIAL_GENERIC=y
868# CONFIG_USB_SERIAL_AIRPRIME is not set
869# CONFIG_USB_SERIAL_ANYDATA is not set
870# CONFIG_USB_SERIAL_BELKIN is not set
871# CONFIG_USB_SERIAL_WHITEHEAT is not set
872# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
873# CONFIG_USB_SERIAL_CP2101 is not set
874# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
875# CONFIG_USB_SERIAL_EMPEG is not set
876CONFIG_USB_SERIAL_FTDI_SIO=y
877# CONFIG_USB_SERIAL_VISOR is not set
878# CONFIG_USB_SERIAL_IPAQ is not set
879# CONFIG_USB_SERIAL_IR is not set
880# CONFIG_USB_SERIAL_EDGEPORT is not set
881# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
882# CONFIG_USB_SERIAL_GARMIN is not set
883# CONFIG_USB_SERIAL_IPW is not set
884# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
885CONFIG_USB_SERIAL_KEYSPAN=y
886CONFIG_USB_SERIAL_KEYSPAN_MPR=y
887CONFIG_USB_SERIAL_KEYSPAN_USA28=y
888CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
889CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
890CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
891CONFIG_USB_SERIAL_KEYSPAN_USA19=y
892CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
893CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
894CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
895CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
896CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
897CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
898# CONFIG_USB_SERIAL_KLSI is not set
899# CONFIG_USB_SERIAL_KOBIL_SCT is not set
900CONFIG_USB_SERIAL_MCT_U232=y
901# CONFIG_USB_SERIAL_PL2303 is not set
902# CONFIG_USB_SERIAL_HP4X is not set
903# CONFIG_USB_SERIAL_SAFE is not set
904# CONFIG_USB_SERIAL_TI is not set
905# CONFIG_USB_SERIAL_CYBERJACK is not set
906# CONFIG_USB_SERIAL_XIRCOM is not set
907# CONFIG_USB_SERIAL_OPTION is not set
908# CONFIG_USB_SERIAL_OMNINET is not set
909CONFIG_USB_EZUSB=y
910
911#
912# USB Miscellaneous drivers
913#
914# CONFIG_USB_EMI62 is not set
915# CONFIG_USB_EMI26 is not set
916# CONFIG_USB_AUERSWALD is not set
917# CONFIG_USB_RIO500 is not set
918# CONFIG_USB_LEGOTOWER is not set
919# CONFIG_USB_LCD is not set
920# CONFIG_USB_LED is not set
921# CONFIG_USB_CYTHERM is not set
922# CONFIG_USB_PHIDGETKIT is not set
923# CONFIG_USB_PHIDGETSERVO is not set
924# CONFIG_USB_IDMOUSE is not set
925# CONFIG_USB_LD is not set
926# CONFIG_USB_TEST is not set
927
928#
929# USB DSL modem support
930#
931
932#
933# USB Gadget Support
934#
935# CONFIG_USB_GADGET is not set
936
937#
938# MMC/SD Card support
939#
940# CONFIG_MMC is not set
941
942#
943# File systems
944#
945CONFIG_EXT2_FS=y
946# CONFIG_EXT2_FS_XATTR is not set
947# CONFIG_EXT2_FS_XIP is not set
948# CONFIG_EXT3_FS is not set
949# CONFIG_JBD is not set
950# CONFIG_REISERFS_FS is not set
951# CONFIG_JFS_FS is not set
952# CONFIG_FS_POSIX_ACL is not set
953# CONFIG_XFS_FS is not set
954# CONFIG_MINIX_FS is not set
955# CONFIG_ROMFS_FS is not set
956CONFIG_INOTIFY=y
957# CONFIG_QUOTA is not set
958CONFIG_DNOTIFY=y
959# CONFIG_AUTOFS_FS is not set
960# CONFIG_AUTOFS4_FS is not set
961# CONFIG_FUSE_FS is not set
962
963#
964# CD-ROM/DVD Filesystems
965#
966# CONFIG_ISO9660_FS is not set
967# CONFIG_UDF_FS is not set
968
969#
970# DOS/FAT/NT Filesystems
971#
972# CONFIG_MSDOS_FS is not set
973# CONFIG_VFAT_FS is not set
974# CONFIG_NTFS_FS is not set
975
976#
977# Pseudo filesystems
978#
979CONFIG_PROC_FS=y
980CONFIG_SYSFS=y
981CONFIG_TMPFS=y
982# CONFIG_HUGETLB_PAGE is not set
983CONFIG_RAMFS=y
984# CONFIG_RELAYFS_FS is not set
985
986#
987# Miscellaneous filesystems
988#
989# CONFIG_ADFS_FS is not set
990# CONFIG_AFFS_FS is not set
991# CONFIG_HFS_FS is not set
992# CONFIG_HFSPLUS_FS is not set
993# CONFIG_BEFS_FS is not set
994# CONFIG_BFS_FS is not set
995# CONFIG_EFS_FS is not set
996# CONFIG_JFFS_FS is not set
997# CONFIG_JFFS2_FS is not set
998CONFIG_CRAMFS=y
999# CONFIG_VXFS_FS is not set
1000# CONFIG_HPFS_FS is not set
1001# CONFIG_QNX4FS_FS is not set
1002# CONFIG_SYSV_FS is not set
1003# CONFIG_UFS_FS is not set
1004
1005#
1006# Network File Systems
1007#
1008CONFIG_NFS_FS=y
1009CONFIG_NFS_V3=y
1010# CONFIG_NFS_V3_ACL is not set
1011CONFIG_NFS_V4=y
1012# CONFIG_NFS_DIRECTIO is not set
1013# CONFIG_NFSD is not set
1014CONFIG_ROOT_NFS=y
1015CONFIG_LOCKD=y
1016CONFIG_LOCKD_V4=y
1017CONFIG_NFS_COMMON=y
1018CONFIG_SUNRPC=y
1019CONFIG_SUNRPC_GSS=y
1020CONFIG_RPCSEC_GSS_KRB5=y
1021# CONFIG_RPCSEC_GSS_SPKM3 is not set
1022# CONFIG_SMB_FS is not set
1023# CONFIG_CIFS is not set
1024# CONFIG_NCP_FS is not set
1025# CONFIG_CODA_FS is not set
1026# CONFIG_AFS_FS is not set
1027# CONFIG_9P_FS is not set
1028
1029#
1030# Partition Types
1031#
1032# CONFIG_PARTITION_ADVANCED is not set
1033CONFIG_MSDOS_PARTITION=y
1034
1035#
1036# Native Language Support
1037#
1038# CONFIG_NLS is not set
1039
1040#
1041# Profiling support
1042#
1043# CONFIG_PROFILING is not set
1044
1045#
1046# Kernel hacking
1047#
1048# CONFIG_PRINTK_TIME is not set
1049CONFIG_DEBUG_KERNEL=y
1050# CONFIG_MAGIC_SYSRQ is not set
1051CONFIG_LOG_BUF_SHIFT=14
1052CONFIG_DETECT_SOFTLOCKUP=y
1053# CONFIG_SCHEDSTATS is not set
1054# CONFIG_DEBUG_SLAB is not set
1055# CONFIG_DEBUG_SPINLOCK is not set
1056# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1057# CONFIG_DEBUG_KOBJECT is not set
1058CONFIG_DEBUG_BUGVERBOSE=y
1059# CONFIG_DEBUG_INFO is not set
1060# CONFIG_DEBUG_FS is not set
1061# CONFIG_DEBUG_VM is not set
1062CONFIG_FRAME_POINTER=y
1063# CONFIG_RCU_TORTURE_TEST is not set
1064CONFIG_DEBUG_USER=y
1065# CONFIG_DEBUG_WAITQ is not set
1066# CONFIG_DEBUG_ERRORS is not set
1067CONFIG_DEBUG_LL=y
1068# CONFIG_DEBUG_ICEDCC is not set
1069
1070#
1071# Security options
1072#
1073# CONFIG_KEYS is not set
1074# CONFIG_SECURITY is not set
1075
1076#
1077# Cryptographic options
1078#
1079CONFIG_CRYPTO=y
1080# CONFIG_CRYPTO_HMAC is not set
1081# CONFIG_CRYPTO_NULL is not set
1082# CONFIG_CRYPTO_MD4 is not set
1083CONFIG_CRYPTO_MD5=y
1084# CONFIG_CRYPTO_SHA1 is not set
1085# CONFIG_CRYPTO_SHA256 is not set
1086# CONFIG_CRYPTO_SHA512 is not set
1087# CONFIG_CRYPTO_WP512 is not set
1088# CONFIG_CRYPTO_TGR192 is not set
1089CONFIG_CRYPTO_DES=y
1090# CONFIG_CRYPTO_BLOWFISH is not set
1091# CONFIG_CRYPTO_TWOFISH is not set
1092# CONFIG_CRYPTO_SERPENT is not set
1093# CONFIG_CRYPTO_AES is not set
1094# CONFIG_CRYPTO_CAST5 is not set
1095# CONFIG_CRYPTO_CAST6 is not set
1096# CONFIG_CRYPTO_TEA is not set
1097# CONFIG_CRYPTO_ARC4 is not set
1098# CONFIG_CRYPTO_KHAZAD is not set
1099# CONFIG_CRYPTO_ANUBIS is not set
1100# CONFIG_CRYPTO_DEFLATE is not set
1101# CONFIG_CRYPTO_MICHAEL_MIC is not set
1102# CONFIG_CRYPTO_CRC32C is not set
1103# CONFIG_CRYPTO_TEST is not set
1104
1105#
1106# Hardware crypto devices
1107#
1108
1109#
1110# Library routines
1111#
1112# CONFIG_CRC_CCITT is not set
1113# CONFIG_CRC16 is not set
1114CONFIG_CRC32=y
1115# CONFIG_LIBCRC32C is not set
1116CONFIG_ZLIB_INFLATE=y
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c
index dceb826bd216..96fd91926c9b 100644
--- a/arch/arm/kernel/ecard.c
+++ b/arch/arm/kernel/ecard.c
@@ -40,6 +40,7 @@
40#include <linux/proc_fs.h> 40#include <linux/proc_fs.h>
41#include <linux/device.h> 41#include <linux/device.h>
42#include <linux/init.h> 42#include <linux/init.h>
43#include <linux/mutex.h>
43 44
44#include <asm/dma.h> 45#include <asm/dma.h>
45#include <asm/ecard.h> 46#include <asm/ecard.h>
@@ -206,7 +207,7 @@ static void ecard_task_readbytes(struct ecard_request *req)
206 207
207static DECLARE_WAIT_QUEUE_HEAD(ecard_wait); 208static DECLARE_WAIT_QUEUE_HEAD(ecard_wait);
208static struct ecard_request *ecard_req; 209static struct ecard_request *ecard_req;
209static DECLARE_MUTEX(ecard_sem); 210static DEFINE_MUTEX(ecard_mutex);
210 211
211/* 212/*
212 * Set up the expansion card daemon's page tables. 213 * Set up the expansion card daemon's page tables.
@@ -299,7 +300,7 @@ static void ecard_call(struct ecard_request *req)
299 300
300 req->complete = &completion; 301 req->complete = &completion;
301 302
302 down(&ecard_sem); 303 mutex_lock(&ecard_mutex);
303 ecard_req = req; 304 ecard_req = req;
304 wake_up(&ecard_wait); 305 wake_up(&ecard_wait);
305 306
@@ -307,7 +308,7 @@ static void ecard_call(struct ecard_request *req)
307 * Now wait for kecardd to run. 308 * Now wait for kecardd to run.
308 */ 309 */
309 wait_for_completion(&completion); 310 wait_for_completion(&completion);
310 up(&ecard_sem); 311 mutex_unlock(&ecard_mutex);
311} 312}
312 313
313/* ======================= Mid-level card control ===================== */ 314/* ======================= Mid-level card control ===================== */
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
index 9299dfc25698..1ec3f7faa259 100644
--- a/arch/arm/kernel/fiq.c
+++ b/arch/arm/kernel/fiq.c
@@ -101,7 +101,7 @@ void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
101 ldmia %1, {r8 - r14}\n\ 101 ldmia %1, {r8 - r14}\n\
102 msr cpsr_c, %0 @ return to SVC mode\n\ 102 msr cpsr_c, %0 @ return to SVC mode\n\
103 mov r0, r0\n\ 103 mov r0, r0\n\
104 ldmea fp, {fp, sp, pc}" 104 ldmfd sp, {fp, sp, pc}"
105 : "=&r" (tmp) 105 : "=&r" (tmp)
106 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)); 106 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
107} 107}
@@ -119,7 +119,7 @@ void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
119 stmia %1, {r8 - r14}\n\ 119 stmia %1, {r8 - r14}\n\
120 msr cpsr_c, %0 @ return to SVC mode\n\ 120 msr cpsr_c, %0 @ return to SVC mode\n\
121 mov r0, r0\n\ 121 mov r0, r0\n\
122 ldmea fp, {fp, sp, pc}" 122 ldmfd sp, {fp, sp, pc}"
123 : "=&r" (tmp) 123 : "=&r" (tmp)
124 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)); 124 : "r" (&regs->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
125} 125}
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 2cab741ad0f8..c45d10d07bde 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -205,7 +205,7 @@ static const char *proc_arch[] = {
205 "5TE", 205 "5TE",
206 "5TEJ", 206 "5TEJ",
207 "6TEJ", 207 "6TEJ",
208 "?(10)", 208 "7",
209 "?(11)", 209 "?(11)",
210 "?(12)", 210 "?(12)",
211 "?(13)", 211 "?(13)",
@@ -258,14 +258,17 @@ int cpu_architecture(void)
258{ 258{
259 int cpu_arch; 259 int cpu_arch;
260 260
261 if ((processor_id & 0x0000f000) == 0) { 261 if ((processor_id & 0x0008f000) == 0) {
262 cpu_arch = CPU_ARCH_UNKNOWN; 262 cpu_arch = CPU_ARCH_UNKNOWN;
263 } else if ((processor_id & 0x0000f000) == 0x00007000) { 263 } else if ((processor_id & 0x0008f000) == 0x00007000) {
264 cpu_arch = (processor_id & (1 << 23)) ? CPU_ARCH_ARMv4T : CPU_ARCH_ARMv3; 264 cpu_arch = (processor_id & (1 << 23)) ? CPU_ARCH_ARMv4T : CPU_ARCH_ARMv3;
265 } else { 265 } else if ((processor_id & 0x00080000) == 0x00000000) {
266 cpu_arch = (processor_id >> 16) & 7; 266 cpu_arch = (processor_id >> 16) & 7;
267 if (cpu_arch) 267 if (cpu_arch)
268 cpu_arch += CPU_ARCH_ARMv3; 268 cpu_arch += CPU_ARCH_ARMv3;
269 } else {
270 /* the revised CPUID */
271 cpu_arch = ((processor_id >> 12) & 0xf) - 0xb + CPU_ARCH_ARMv6;
269 } 272 }
270 273
271 return cpu_arch; 274 return cpu_arch;
@@ -863,11 +866,11 @@ static int c_show(struct seq_file *m, void *v)
863 seq_printf(m, "\nCPU implementer\t: 0x%02x\n", processor_id >> 24); 866 seq_printf(m, "\nCPU implementer\t: 0x%02x\n", processor_id >> 24);
864 seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]); 867 seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]);
865 868
866 if ((processor_id & 0x0000f000) == 0x00000000) { 869 if ((processor_id & 0x0008f000) == 0x00000000) {
867 /* pre-ARM7 */ 870 /* pre-ARM7 */
868 seq_printf(m, "CPU part\t\t: %07x\n", processor_id >> 4); 871 seq_printf(m, "CPU part\t\t: %07x\n", processor_id >> 4);
869 } else { 872 } else {
870 if ((processor_id & 0x0000f000) == 0x00007000) { 873 if ((processor_id & 0x0008f000) == 0x00007000) {
871 /* ARM7 */ 874 /* ARM7 */
872 seq_printf(m, "CPU variant\t: 0x%02x\n", 875 seq_printf(m, "CPU variant\t: 0x%02x\n",
873 (processor_id >> 16) & 127); 876 (processor_id >> 16) & 127);
diff --git a/arch/arm/lib/csumpartialcopy.S b/arch/arm/lib/csumpartialcopy.S
index 990ee63b2465..21effe0dbf97 100644
--- a/arch/arm/lib/csumpartialcopy.S
+++ b/arch/arm/lib/csumpartialcopy.S
@@ -18,11 +18,13 @@
18 */ 18 */
19 19
20 .macro save_regs 20 .macro save_regs
21 mov ip, sp
21 stmfd sp!, {r1, r4 - r8, fp, ip, lr, pc} 22 stmfd sp!, {r1, r4 - r8, fp, ip, lr, pc}
23 sub fp, ip, #4
22 .endm 24 .endm
23 25
24 .macro load_regs,flags 26 .macro load_regs
25 LOADREGS(\flags,fp,{r1, r4 - r8, fp, sp, pc}) 27 ldmfd sp, {r1, r4 - r8, fp, sp, pc}
26 .endm 28 .endm
27 29
28 .macro load1b, reg1 30 .macro load1b, reg1
diff --git a/arch/arm/lib/csumpartialcopygeneric.S b/arch/arm/lib/csumpartialcopygeneric.S
index 4a4609c19095..c50e8f5285d1 100644
--- a/arch/arm/lib/csumpartialcopygeneric.S
+++ b/arch/arm/lib/csumpartialcopygeneric.S
@@ -23,7 +23,7 @@ len .req r2
23sum .req r3 23sum .req r3
24 24
25.Lzero: mov r0, sum 25.Lzero: mov r0, sum
26 load_regs ea 26 load_regs
27 27
28 /* 28 /*
29 * Align an unaligned destination pointer. We know that 29 * Align an unaligned destination pointer. We know that
@@ -87,9 +87,7 @@ sum .req r3
87 b .Ldone 87 b .Ldone
88 88
89FN_ENTRY 89FN_ENTRY
90 mov ip, sp
91 save_regs 90 save_regs
92 sub fp, ip, #4
93 91
94 cmp len, #8 @ Ensure that we have at least 92 cmp len, #8 @ Ensure that we have at least
95 blo .Lless8 @ 8 bytes to copy. 93 blo .Lless8 @ 8 bytes to copy.
@@ -163,7 +161,7 @@ FN_ENTRY
163 ldr sum, [sp, #0] @ dst 161 ldr sum, [sp, #0] @ dst
164 tst sum, #1 162 tst sum, #1
165 movne r0, r0, ror #8 163 movne r0, r0, ror #8
166 load_regs ea 164 load_regs
167 165
168.Lsrc_not_aligned: 166.Lsrc_not_aligned:
169 adc sum, sum, #0 @ include C from dst alignment 167 adc sum, sum, #0 @ include C from dst alignment
diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S
index 333bca292de9..c3b93e22ea25 100644
--- a/arch/arm/lib/csumpartialcopyuser.S
+++ b/arch/arm/lib/csumpartialcopyuser.S
@@ -18,11 +18,13 @@
18 .text 18 .text
19 19
20 .macro save_regs 20 .macro save_regs
21 mov ip, sp
21 stmfd sp!, {r1 - r2, r4 - r8, fp, ip, lr, pc} 22 stmfd sp!, {r1 - r2, r4 - r8, fp, ip, lr, pc}
23 sub fp, ip, #4
22 .endm 24 .endm
23 25
24 .macro load_regs,flags 26 .macro load_regs
25 ldm\flags fp, {r1, r2, r4-r8, fp, sp, pc} 27 ldmfd sp, {r1, r2, r4-r8, fp, sp, pc}
26 .endm 28 .endm
27 29
28 .macro load1b, reg1 30 .macro load1b, reg1
@@ -100,5 +102,5 @@
1006002: teq r2, r1 1026002: teq r2, r1
101 strneb r0, [r1], #1 103 strneb r0, [r1], #1
102 bne 6002b 104 bne 6002b
103 load_regs ea 105 load_regs
104 .previous 106 .previous
diff --git a/arch/arm/mach-aaec2000/clock.c b/arch/arm/mach-aaec2000/clock.c
index 1c84c60941e1..74aa7a39bb68 100644
--- a/arch/arm/mach-aaec2000/clock.c
+++ b/arch/arm/mach-aaec2000/clock.c
@@ -16,26 +16,27 @@
16#include <linux/err.h> 16#include <linux/err.h>
17#include <linux/string.h> 17#include <linux/string.h>
18#include <linux/clk.h> 18#include <linux/clk.h>
19#include <linux/mutex.h>
19 20
20#include <asm/semaphore.h> 21#include <asm/semaphore.h>
21 22
22#include "clock.h" 23#include "clock.h"
23 24
24static LIST_HEAD(clocks); 25static LIST_HEAD(clocks);
25static DECLARE_MUTEX(clocks_sem); 26static DEFINE_MUTEX(clocks_mutex);
26 27
27struct clk *clk_get(struct device *dev, const char *id) 28struct clk *clk_get(struct device *dev, const char *id)
28{ 29{
29 struct clk *p, *clk = ERR_PTR(-ENOENT); 30 struct clk *p, *clk = ERR_PTR(-ENOENT);
30 31
31 down(&clocks_sem); 32 mutex_lock(&clocks_mutex);
32 list_for_each_entry(p, &clocks, node) { 33 list_for_each_entry(p, &clocks, node) {
33 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 34 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
34 clk = p; 35 clk = p;
35 break; 36 break;
36 } 37 }
37 } 38 }
38 up(&clocks_sem); 39 mutex_unlock(&clocks_mutex);
39 40
40 return clk; 41 return clk;
41} 42}
@@ -78,18 +79,18 @@ EXPORT_SYMBOL(clk_set_rate);
78 79
79int clk_register(struct clk *clk) 80int clk_register(struct clk *clk)
80{ 81{
81 down(&clocks_sem); 82 mutex_lock(&clocks_mutex);
82 list_add(&clk->node, &clocks); 83 list_add(&clk->node, &clocks);
83 up(&clocks_sem); 84 mutex_unlock(&clocks_mutex);
84 return 0; 85 return 0;
85} 86}
86EXPORT_SYMBOL(clk_register); 87EXPORT_SYMBOL(clk_register);
87 88
88void clk_unregister(struct clk *clk) 89void clk_unregister(struct clk *clk)
89{ 90{
90 down(&clocks_sem); 91 mutex_lock(&clocks_mutex);
91 list_del(&clk->node); 92 list_del(&clk->node);
92 up(&clocks_sem); 93 mutex_unlock(&clocks_mutex);
93} 94}
94EXPORT_SYMBOL(clk_unregister); 95EXPORT_SYMBOL(clk_unregister);
95 96
diff --git a/arch/arm/mach-at91rm9200/Makefile b/arch/arm/mach-at91rm9200/Makefile
index 1f2805ca6e21..75e6ee318ded 100644
--- a/arch/arm/mach-at91rm9200/Makefile
+++ b/arch/arm/mach-at91rm9200/Makefile
@@ -8,10 +8,10 @@ obj-n :=
8obj- := 8obj- :=
9 9
10# Board-specific support 10# Board-specific support
11#obj-$(CONFIG_ARCH_AT91RM9200DK) += board-dk.o 11obj-$(CONFIG_ARCH_AT91RM9200DK) += board-dk.o
12#obj-$(CONFIG_MACH_AT91RM9200EK) += board-ek.o 12obj-$(CONFIG_MACH_AT91RM9200EK) += board-ek.o
13#obj-$(CONFIG_MACH_CSB337) += board-csb337.o 13obj-$(CONFIG_MACH_CSB337) += board-csb337.o
14#obj-$(CONFIG_MACH_CSB637) += board-csb637.o 14obj-$(CONFIG_MACH_CSB637) += board-csb637.o
15#obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o 15#obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o
16#obj-$(CONFIG_MACH_KB9200) += board-kb9202.o 16#obj-$(CONFIG_MACH_KB9200) += board-kb9202.o
17 17
diff --git a/arch/arm/mach-at91rm9200/board-csb337.c b/arch/arm/mach-at91rm9200/board-csb337.c
new file mode 100644
index 000000000000..4aec834ee47f
--- /dev/null
+++ b/arch/arm/mach-at91rm9200/board-csb337.c
@@ -0,0 +1,143 @@
1/*
2 * linux/arch/arm/mach-at91rm9200/board-csb337.c
3 *
4 * Copyright (C) 2005 SAN People
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#include <linux/config.h>
22#include <linux/types.h>
23#include <linux/init.h>
24#include <linux/mm.h>
25#include <linux/module.h>
26#include <linux/platform_device.h>
27
28#include <asm/hardware.h>
29#include <asm/setup.h>
30#include <asm/mach-types.h>
31#include <asm/irq.h>
32
33#include <asm/mach/arch.h>
34#include <asm/mach/map.h>
35#include <asm/mach/irq.h>
36
37#include <asm/arch/hardware.h>
38#include <asm/mach/serial_at91rm9200.h>
39#include <asm/arch/board.h>
40
41#include "generic.h"
42
43static void __init csb337_init_irq(void)
44{
45 /* Initialize AIC controller */
46 at91rm9200_init_irq(NULL);
47
48 /* Set up the GPIO interrupts */
49 at91_gpio_irq_setup(BGA_GPIO_BANKS);
50}
51
52/*
53 * Serial port configuration.
54 * 0 .. 3 = USART0 .. USART3
55 * 4 = DBGU
56 */
57#define CSB337_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
58#define CSB337_SERIAL_CONSOLE 0 /* ttyS0 */
59
60static void __init csb337_map_io(void)
61{
62 int serial[AT91_NR_UART] = CSB337_UART_MAP;
63 int i;
64
65 at91rm9200_map_io();
66
67 /* Initialize clocks: 3.6864 MHz crystal */
68 at91_clock_init(3686400);
69
70#ifdef CONFIG_SERIAL_AT91
71 at91_console_port = CSB337_SERIAL_CONSOLE;
72 memcpy(at91_serial_map, serial, sizeof(serial));
73
74 /* Register UARTs */
75 for (i = 0; i < AT91_NR_UART; i++) {
76 if (serial[i] >= 0)
77 at91_register_uart(i, serial[i]);
78 }
79#endif
80}
81
82static struct at91_eth_data __initdata csb337_eth_data = {
83 .phy_irq_pin = AT91_PIN_PC2,
84 .is_rmii = 0,
85};
86
87static struct at91_usbh_data __initdata csb337_usbh_data = {
88 .ports = 2,
89};
90
91static struct at91_udc_data __initdata csb337_udc_data = {
92 // this has no VBUS sensing pin
93 .pullup_pin = AT91_PIN_PA24,
94};
95
96static struct at91_cf_data __initdata csb337_cf_data = {
97 /*
98 * connector P4 on the CSB 337 mates to
99 * connector P8 on the CSB 300CF
100 */
101
102 /* CSB337 specific */
103 .det_pin = AT91_PIN_PC3,
104
105 /* CSB300CF specific */
106 .irq_pin = AT91_PIN_PA19,
107 .vcc_pin = AT91_PIN_PD0,
108 .rst_pin = AT91_PIN_PD2,
109};
110
111static struct at91_mmc_data __initdata csb337_mmc_data = {
112 .det_pin = AT91_PIN_PD5,
113 .is_b = 0,
114 .wire4 = 1,
115 .wp_pin = AT91_PIN_PD6,
116};
117
118static void __init csb337_board_init(void)
119{
120 /* Ethernet */
121 at91_add_device_eth(&csb337_eth_data);
122 /* USB Host */
123 at91_add_device_usbh(&csb337_usbh_data);
124 /* USB Device */
125 at91_add_device_udc(&csb337_udc_data);
126 /* Compact Flash */
127 at91_set_gpio_input(AT91_PIN_PB22, 1); /* IOIS16 */
128 at91_add_device_cf(&csb337_cf_data);
129 /* MMC */
130 at91_add_device_mmc(&csb337_mmc_data);
131}
132
133MACHINE_START(CSB337, "Cogent CSB337")
134 /* Maintainer: Bill Gatliff */
135 .phys_ram = AT91_SDRAM_BASE,
136 .phys_io = AT91_BASE_SYS,
137 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
138 .boot_params = AT91_SDRAM_BASE + 0x100,
139 .timer = &at91rm9200_timer,
140 .map_io = csb337_map_io,
141 .init_irq = csb337_init_irq,
142 .init_machine = csb337_board_init,
143MACHINE_END
diff --git a/arch/arm/mach-at91rm9200/board-csb637.c b/arch/arm/mach-at91rm9200/board-csb637.c
new file mode 100644
index 000000000000..23e4cc21481a
--- /dev/null
+++ b/arch/arm/mach-at91rm9200/board-csb637.c
@@ -0,0 +1,116 @@
1/*
2 * linux/arch/arm/mach-at91rm9200/board-csb637.c
3 *
4 * Copyright (C) 2005 SAN People
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21#include <linux/config.h>
22#include <linux/types.h>
23#include <linux/init.h>
24#include <linux/mm.h>
25#include <linux/module.h>
26#include <linux/platform_device.h>
27
28#include <asm/hardware.h>
29#include <asm/setup.h>
30#include <asm/mach-types.h>
31#include <asm/irq.h>
32
33#include <asm/mach/arch.h>
34#include <asm/mach/map.h>
35#include <asm/mach/irq.h>
36
37#include <asm/arch/hardware.h>
38#include <asm/mach/serial_at91rm9200.h>
39#include <asm/arch/board.h>
40
41#include "generic.h"
42
43static void __init csb637_init_irq(void)
44{
45 /* Initialize AIC controller */
46 at91rm9200_init_irq(NULL);
47
48 /* Set up the GPIO interrupts */
49 at91_gpio_irq_setup(BGA_GPIO_BANKS);
50}
51
52/*
53 * Serial port configuration.
54 * 0 .. 3 = USART0 .. USART3
55 * 4 = DBGU
56 */
57#define CSB637_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
58#define CSB637_SERIAL_CONSOLE 0 /* ttyS0 */
59
60static void __init csb637_map_io(void)
61{
62 int serial[AT91_NR_UART] = CSB637_UART_MAP;
63 int i;
64
65 at91rm9200_map_io();
66
67 /* Initialize clocks: 3.6864 MHz crystal */
68 at91_clock_init(3686400);
69
70#ifdef CONFIG_SERIAL_AT91
71 at91_console_port = CSB637_SERIAL_CONSOLE;
72 memcpy(at91_serial_map, serial, sizeof(serial));
73
74 /* Register UARTs */
75 for (i = 0; i < AT91_NR_UART; i++) {
76 if (serial[i] >= 0)
77 at91_register_uart(i, serial[i]);
78 }
79#endif
80}
81
82static struct at91_eth_data __initdata csb637_eth_data = {
83 .phy_irq_pin = AT91_PIN_PC0,
84 .is_rmii = 0,
85};
86
87static struct at91_usbh_data __initdata csb637_usbh_data = {
88 .ports = 2,
89};
90
91static struct at91_udc_data __initdata csb637_udc_data = {
92 .vbus_pin = AT91_PIN_PB28,
93 .pullup_pin = AT91_PIN_PB1,
94};
95
96static void __init csb637_board_init(void)
97{
98 /* Ethernet */
99 at91_add_device_eth(&csb637_eth_data);
100 /* USB Host */
101 at91_add_device_usbh(&csb637_usbh_data);
102 /* USB Device */
103 at91_add_device_udc(&csb637_udc_data);
104}
105
106MACHINE_START(CSB637, "Cogent CSB637")
107 /* Maintainer: Bill Gatliff */
108 .phys_ram = AT91_SDRAM_BASE,
109 .phys_io = AT91_BASE_SYS,
110 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
111 .boot_params = AT91_SDRAM_BASE + 0x100,
112 .timer = &at91rm9200_timer,
113 .map_io = csb637_map_io,
114 .init_irq = csb637_init_irq,
115 .init_machine = csb637_board_init,
116MACHINE_END
diff --git a/arch/arm/mach-at91rm9200/board-dk.c b/arch/arm/mach-at91rm9200/board-dk.c
new file mode 100644
index 000000000000..8c747a31b95a
--- /dev/null
+++ b/arch/arm/mach-at91rm9200/board-dk.c
@@ -0,0 +1,138 @@
1/*
2 * linux/arch/arm/mach-at91rm9200/board-dk.c
3 *
4 * Copyright (C) 2005 SAN People
5 *
6 * Epson S1D framebuffer glue code is:
7 * Copyright (C) 2005 Thibaut VARENE <varenet@parisc-linux.org>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
24#include <linux/config.h>
25#include <linux/types.h>
26#include <linux/init.h>
27#include <linux/mm.h>
28#include <linux/module.h>
29#include <linux/platform_device.h>
30
31#include <asm/hardware.h>
32#include <asm/setup.h>
33#include <asm/mach-types.h>
34#include <asm/irq.h>
35
36#include <asm/mach/arch.h>
37#include <asm/mach/map.h>
38#include <asm/mach/irq.h>
39
40#include <asm/arch/hardware.h>
41#include <asm/mach/serial_at91rm9200.h>
42#include <asm/arch/board.h>
43
44#include "generic.h"
45
46static void __init dk_init_irq(void)
47{
48 /* Initialize AIC controller */
49 at91rm9200_init_irq(NULL);
50
51 /* Set up the GPIO interrupts */
52 at91_gpio_irq_setup(BGA_GPIO_BANKS);
53}
54
55/*
56 * Serial port configuration.
57 * 0 .. 3 = USART0 .. USART3
58 * 4 = DBGU
59 */
60#define DK_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
61#define DK_SERIAL_CONSOLE 0 /* ttyS0 */
62
63static void __init dk_map_io(void)
64{
65 int serial[AT91_NR_UART] = DK_UART_MAP;
66 int i;
67
68 at91rm9200_map_io();
69
70 /* Initialize clocks: 18.432 MHz crystal */
71 at91_clock_init(18432000);
72
73#ifdef CONFIG_SERIAL_AT91
74 at91_console_port = DK_SERIAL_CONSOLE;
75 memcpy(at91_serial_map, serial, sizeof(serial));
76
77 /* Register UARTs */
78 for (i = 0; i < AT91_NR_UART; i++) {
79 if (at91_serial_map[i] >= 0)
80 at91_register_uart(i, at91_serial_map[i]);
81 }
82#endif
83}
84
85static struct at91_eth_data __initdata dk_eth_data = {
86 .phy_irq_pin = AT91_PIN_PC4,
87 .is_rmii = 1,
88};
89
90static struct at91_usbh_data __initdata dk_usbh_data = {
91 .ports = 2,
92};
93
94static struct at91_udc_data __initdata dk_udc_data = {
95 .vbus_pin = AT91_PIN_PD4,
96 .pullup_pin = AT91_PIN_PD5,
97};
98
99static struct at91_cf_data __initdata dk_cf_data = {
100 .det_pin = AT91_PIN_PB0,
101 .rst_pin = AT91_PIN_PC5,
102 // .irq_pin = ... not connected
103 // .vcc_pin = ... always powered
104};
105
106static struct at91_mmc_data __initdata dk_mmc_data = {
107 .is_b = 0,
108 .wire4 = 1,
109};
110
111static void __init dk_board_init(void)
112{
113 /* Ethernet */
114 at91_add_device_eth(&dk_eth_data);
115 /* USB Host */
116 at91_add_device_usbh(&dk_usbh_data);
117 /* USB Device */
118 at91_add_device_udc(&dk_udc_data);
119 /* Compact Flash */
120 at91_add_device_cf(&dk_cf_data);
121 /* MMC */
122 at91_set_gpio_output(AT91_PIN_PB7, 1); /* this MMC card slot can optionally use SPI signaling (CS3). default: MMC */
123 at91_add_device_mmc(&dk_mmc_data);
124 /* VGA */
125// dk_add_device_video();
126}
127
128MACHINE_START(AT91RM9200DK, "Atmel AT91RM9200-DK")
129 /* Maintainer: SAN People/Atmel */
130 .phys_ram = AT91_SDRAM_BASE,
131 .phys_io = AT91_BASE_SYS,
132 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
133 .boot_params = AT91_SDRAM_BASE + 0x100,
134 .timer = &at91rm9200_timer,
135 .map_io = dk_map_io,
136 .init_irq = dk_init_irq,
137 .init_machine = dk_board_init,
138MACHINE_END
diff --git a/arch/arm/mach-at91rm9200/board-ek.c b/arch/arm/mach-at91rm9200/board-ek.c
new file mode 100644
index 000000000000..d140645711be
--- /dev/null
+++ b/arch/arm/mach-at91rm9200/board-ek.c
@@ -0,0 +1,131 @@
1/*
2 * linux/arch/arm/mach-at91rm9200/board-ek.c
3 *
4 * Copyright (C) 2005 SAN People
5 *
6 * Epson S1D framebuffer glue code is:
7 * Copyright (C) 2005 Thibaut VARENE <varenet@parisc-linux.org>
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23
24#include <linux/config.h>
25#include <linux/types.h>
26#include <linux/init.h>
27#include <linux/mm.h>
28#include <linux/module.h>
29#include <linux/platform_device.h>
30
31#include <asm/hardware.h>
32#include <asm/setup.h>
33#include <asm/mach-types.h>
34#include <asm/irq.h>
35
36#include <asm/mach/arch.h>
37#include <asm/mach/map.h>
38#include <asm/mach/irq.h>
39
40#include <asm/arch/hardware.h>
41#include <asm/mach/serial_at91rm9200.h>
42#include <asm/arch/board.h>
43
44#include "generic.h"
45
46static void __init ek_init_irq(void)
47{
48 /* Initialize AIC controller */
49 at91rm9200_init_irq(NULL);
50
51 /* Set up the GPIO interrupts */
52 at91_gpio_irq_setup(BGA_GPIO_BANKS);
53}
54
55/*
56 * Serial port configuration.
57 * 0 .. 3 = USART0 .. USART3
58 * 4 = DBGU
59 */
60#define EK_UART_MAP { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */
61#define EK_SERIAL_CONSOLE 0 /* ttyS0 */
62
63static void __init ek_map_io(void)
64{
65 int serial[AT91_NR_UART] = EK_UART_MAP;
66 int i;
67
68 at91rm9200_map_io();
69
70 /* Initialize clocks: 18.432 MHz crystal */
71 at91_clock_init(18432000);
72
73#ifdef CONFIG_SERIAL_AT91
74 at91_console_port = EK_SERIAL_CONSOLE;
75 memcpy(at91_serial_map, serial, sizeof(serial));
76
77 /* Register UARTs */
78 for (i = 0; i < AT91_NR_UART; i++) {
79 if (serial[i] >= 0)
80 at91_register_uart(i, serial[i]);
81 }
82#endif
83}
84
85static struct at91_eth_data __initdata ek_eth_data = {
86 .phy_irq_pin = AT91_PIN_PC4,
87 .is_rmii = 1,
88};
89
90static struct at91_usbh_data __initdata ek_usbh_data = {
91 .ports = 2,
92};
93
94static struct at91_udc_data __initdata ek_udc_data = {
95 .vbus_pin = AT91_PIN_PD4,
96 .pullup_pin = AT91_PIN_PD5,
97};
98
99static struct at91_mmc_data __initdata ek_mmc_data = {
100 .det_pin = AT91_PIN_PB27,
101 .is_b = 0,
102 .wire4 = 1,
103 .wp_pin = AT91_PIN_PA17,
104};
105
106static void __init ek_board_init(void)
107{
108 /* Ethernet */
109 at91_add_device_eth(&ek_eth_data);
110 /* USB Host */
111 at91_add_device_usbh(&ek_usbh_data);
112 /* USB Device */
113 at91_add_device_udc(&ek_udc_data);
114 /* MMC */
115 at91_set_gpio_output(AT91_PIN_PB22, 1); /* this MMC card slot can optionally use SPI signaling (CS3). default: MMC */
116 at91_add_device_mmc(&ek_mmc_data);
117 /* VGA */
118// ek_add_device_video();
119}
120
121MACHINE_START(AT91RM9200EK, "Atmel AT91RM9200-EK")
122 /* Maintainer: SAN People/Atmel */
123 .phys_ram = AT91_SDRAM_BASE,
124 .phys_io = AT91_BASE_SYS,
125 .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc,
126 .boot_params = AT91_SDRAM_BASE + 0x100,
127 .timer = &at91rm9200_timer,
128 .map_io = ek_map_io,
129 .init_irq = ek_init_irq,
130 .init_machine = ek_board_init,
131MACHINE_END
diff --git a/arch/arm/mach-integrator/clock.c b/arch/arm/mach-integrator/clock.c
index 40684e01e865..95a1e263f7fa 100644
--- a/arch/arm/mach-integrator/clock.c
+++ b/arch/arm/mach-integrator/clock.c
@@ -15,6 +15,7 @@
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/string.h> 16#include <linux/string.h>
17#include <linux/clk.h> 17#include <linux/clk.h>
18#include <linux/mutex.h>
18 19
19#include <asm/semaphore.h> 20#include <asm/semaphore.h>
20#include <asm/hardware/icst525.h> 21#include <asm/hardware/icst525.h>
@@ -22,20 +23,20 @@
22#include "clock.h" 23#include "clock.h"
23 24
24static LIST_HEAD(clocks); 25static LIST_HEAD(clocks);
25static DECLARE_MUTEX(clocks_sem); 26static DEFINE_MUTEX(clocks_mutex);
26 27
27struct clk *clk_get(struct device *dev, const char *id) 28struct clk *clk_get(struct device *dev, const char *id)
28{ 29{
29 struct clk *p, *clk = ERR_PTR(-ENOENT); 30 struct clk *p, *clk = ERR_PTR(-ENOENT);
30 31
31 down(&clocks_sem); 32 mutex_lock(&clocks_mutex);
32 list_for_each_entry(p, &clocks, node) { 33 list_for_each_entry(p, &clocks, node) {
33 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 34 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
34 clk = p; 35 clk = p;
35 break; 36 break;
36 } 37 }
37 } 38 }
38 up(&clocks_sem); 39 mutex_unlock(&clocks_mutex);
39 40
40 return clk; 41 return clk;
41} 42}
@@ -107,18 +108,18 @@ static struct clk uart_clk = {
107 108
108int clk_register(struct clk *clk) 109int clk_register(struct clk *clk)
109{ 110{
110 down(&clocks_sem); 111 mutex_lock(&clocks_mutex);
111 list_add(&clk->node, &clocks); 112 list_add(&clk->node, &clocks);
112 up(&clocks_sem); 113 mutex_unlock(&clocks_mutex);
113 return 0; 114 return 0;
114} 115}
115EXPORT_SYMBOL(clk_register); 116EXPORT_SYMBOL(clk_register);
116 117
117void clk_unregister(struct clk *clk) 118void clk_unregister(struct clk *clk)
118{ 119{
119 down(&clocks_sem); 120 mutex_lock(&clocks_mutex);
120 list_del(&clk->node); 121 list_del(&clk->node);
121 up(&clocks_sem); 122 mutex_unlock(&clocks_mutex);
122} 123}
123EXPORT_SYMBOL(clk_unregister); 124EXPORT_SYMBOL(clk_unregister);
124 125
diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c
index a68b30eff4d2..93096befd017 100644
--- a/arch/arm/mach-pxa/ssp.c
+++ b/arch/arm/mach-pxa/ssp.c
@@ -31,6 +31,7 @@
31#include <linux/interrupt.h> 31#include <linux/interrupt.h>
32#include <linux/ioport.h> 32#include <linux/ioport.h>
33#include <linux/init.h> 33#include <linux/init.h>
34#include <linux/mutex.h>
34#include <asm/io.h> 35#include <asm/io.h>
35#include <asm/irq.h> 36#include <asm/irq.h>
36#include <asm/hardware.h> 37#include <asm/hardware.h>
@@ -59,7 +60,7 @@ static const struct ssp_info_ ssp_info[PXA_SSP_PORTS] = {
59#endif 60#endif
60}; 61};
61 62
62static DECLARE_MUTEX(sem); 63static DEFINE_MUTEX(mutex);
63static int use_count[PXA_SSP_PORTS] = {0, 0, 0}; 64static int use_count[PXA_SSP_PORTS] = {0, 0, 0};
64 65
65static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) 66static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs)
@@ -239,16 +240,16 @@ int ssp_init(struct ssp_dev *dev, u32 port, u32 init_flags)
239 if (port > PXA_SSP_PORTS || port == 0) 240 if (port > PXA_SSP_PORTS || port == 0)
240 return -ENODEV; 241 return -ENODEV;
241 242
242 down(&sem); 243 mutex_lock(&mutex);
243 if (use_count[port - 1]) { 244 if (use_count[port - 1]) {
244 up(&sem); 245 mutex_unlock(&mutex);
245 return -EBUSY; 246 return -EBUSY;
246 } 247 }
247 use_count[port - 1]++; 248 use_count[port - 1]++;
248 249
249 if (!request_mem_region(__PREG(SSCR0_P(port)), 0x2c, "SSP")) { 250 if (!request_mem_region(__PREG(SSCR0_P(port)), 0x2c, "SSP")) {
250 use_count[port - 1]--; 251 use_count[port - 1]--;
251 up(&sem); 252 mutex_unlock(&mutex);
252 return -EBUSY; 253 return -EBUSY;
253 } 254 }
254 dev->port = port; 255 dev->port = port;
@@ -265,13 +266,13 @@ int ssp_init(struct ssp_dev *dev, u32 port, u32 init_flags)
265 266
266 /* turn on SSP port clock */ 267 /* turn on SSP port clock */
267 pxa_set_cken(ssp_info[port-1].clock, 1); 268 pxa_set_cken(ssp_info[port-1].clock, 1);
268 up(&sem); 269 mutex_unlock(&mutex);
269 return 0; 270 return 0;
270 271
271out_region: 272out_region:
272 release_mem_region(__PREG(SSCR0_P(port)), 0x2c); 273 release_mem_region(__PREG(SSCR0_P(port)), 0x2c);
273 use_count[port - 1]--; 274 use_count[port - 1]--;
274 up(&sem); 275 mutex_unlock(&mutex);
275 return ret; 276 return ret;
276} 277}
277 278
@@ -282,7 +283,7 @@ out_region:
282 */ 283 */
283void ssp_exit(struct ssp_dev *dev) 284void ssp_exit(struct ssp_dev *dev)
284{ 285{
285 down(&sem); 286 mutex_lock(&mutex);
286 SSCR0_P(dev->port) &= ~SSCR0_SSE; 287 SSCR0_P(dev->port) &= ~SSCR0_SSE;
287 288
288 if (dev->port > PXA_SSP_PORTS || dev->port == 0) { 289 if (dev->port > PXA_SSP_PORTS || dev->port == 0) {
@@ -295,7 +296,7 @@ void ssp_exit(struct ssp_dev *dev)
295 free_irq(dev->irq, dev); 296 free_irq(dev->irq, dev);
296 release_mem_region(__PREG(SSCR0_P(dev->port)), 0x2c); 297 release_mem_region(__PREG(SSCR0_P(dev->port)), 0x2c);
297 use_count[dev->port - 1]--; 298 use_count[dev->port - 1]--;
298 up(&sem); 299 mutex_unlock(&mutex);
299} 300}
300 301
301EXPORT_SYMBOL(ssp_write_word); 302EXPORT_SYMBOL(ssp_write_word);
diff --git a/arch/arm/mach-realview/clock.c b/arch/arm/mach-realview/clock.c
index ec3f7e798623..21325a4da9da 100644
--- a/arch/arm/mach-realview/clock.c
+++ b/arch/arm/mach-realview/clock.c
@@ -14,6 +14,7 @@
14#include <linux/errno.h> 14#include <linux/errno.h>
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/clk.h> 16#include <linux/clk.h>
17#include <linux/mutex.h>
17 18
18#include <asm/semaphore.h> 19#include <asm/semaphore.h>
19#include <asm/hardware/icst307.h> 20#include <asm/hardware/icst307.h>
@@ -21,20 +22,20 @@
21#include "clock.h" 22#include "clock.h"
22 23
23static LIST_HEAD(clocks); 24static LIST_HEAD(clocks);
24static DECLARE_MUTEX(clocks_sem); 25static DEFINE_MUTEX(clocks_mutex);
25 26
26struct clk *clk_get(struct device *dev, const char *id) 27struct clk *clk_get(struct device *dev, const char *id)
27{ 28{
28 struct clk *p, *clk = ERR_PTR(-ENOENT); 29 struct clk *p, *clk = ERR_PTR(-ENOENT);
29 30
30 down(&clocks_sem); 31 mutex_lock(&clocks_mutex);
31 list_for_each_entry(p, &clocks, node) { 32 list_for_each_entry(p, &clocks, node) {
32 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 33 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
33 clk = p; 34 clk = p;
34 break; 35 break;
35 } 36 }
36 } 37 }
37 up(&clocks_sem); 38 mutex_unlock(&clocks_mutex);
38 39
39 return clk; 40 return clk;
40} 41}
@@ -109,18 +110,18 @@ static struct clk mmci_clk = {
109 110
110int clk_register(struct clk *clk) 111int clk_register(struct clk *clk)
111{ 112{
112 down(&clocks_sem); 113 mutex_lock(&clocks_mutex);
113 list_add(&clk->node, &clocks); 114 list_add(&clk->node, &clocks);
114 up(&clocks_sem); 115 mutex_unlock(&clocks_mutex);
115 return 0; 116 return 0;
116} 117}
117EXPORT_SYMBOL(clk_register); 118EXPORT_SYMBOL(clk_register);
118 119
119void clk_unregister(struct clk *clk) 120void clk_unregister(struct clk *clk)
120{ 121{
121 down(&clocks_sem); 122 mutex_lock(&clocks_mutex);
122 list_del(&clk->node); 123 list_del(&clk->node);
123 up(&clocks_sem); 124 mutex_unlock(&clocks_mutex);
124} 125}
125EXPORT_SYMBOL(clk_unregister); 126EXPORT_SYMBOL(clk_unregister);
126 127
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c
index fc09ba92d66a..af2f3d52b61b 100644
--- a/arch/arm/mach-s3c2410/clock.c
+++ b/arch/arm/mach-s3c2410/clock.c
@@ -37,6 +37,7 @@
37#include <linux/interrupt.h> 37#include <linux/interrupt.h>
38#include <linux/ioport.h> 38#include <linux/ioport.h>
39#include <linux/clk.h> 39#include <linux/clk.h>
40#include <linux/mutex.h>
40 41
41#include <asm/hardware.h> 42#include <asm/hardware.h>
42#include <asm/atomic.h> 43#include <asm/atomic.h>
@@ -51,7 +52,7 @@
51/* clock information */ 52/* clock information */
52 53
53static LIST_HEAD(clocks); 54static LIST_HEAD(clocks);
54static DECLARE_MUTEX(clocks_sem); 55static DEFINE_MUTEX(clocks_mutex);
55 56
56/* old functions */ 57/* old functions */
57 58
@@ -102,7 +103,7 @@ struct clk *clk_get(struct device *dev, const char *id)
102 else 103 else
103 idno = to_platform_device(dev)->id; 104 idno = to_platform_device(dev)->id;
104 105
105 down(&clocks_sem); 106 mutex_lock(&clocks_mutex);
106 107
107 list_for_each_entry(p, &clocks, list) { 108 list_for_each_entry(p, &clocks, list) {
108 if (p->id == idno && 109 if (p->id == idno &&
@@ -126,7 +127,7 @@ struct clk *clk_get(struct device *dev, const char *id)
126 } 127 }
127 } 128 }
128 129
129 up(&clocks_sem); 130 mutex_unlock(&clocks_mutex);
130 return clk; 131 return clk;
131} 132}
132 133
@@ -362,9 +363,9 @@ int s3c24xx_register_clock(struct clk *clk)
362 363
363 /* add to the list of available clocks */ 364 /* add to the list of available clocks */
364 365
365 down(&clocks_sem); 366 mutex_lock(&clocks_mutex);
366 list_add(&clk->list, &clocks); 367 list_add(&clk->list, &clocks);
367 up(&clocks_sem); 368 mutex_unlock(&clocks_mutex);
368 369
369 return 0; 370 return 0;
370} 371}
diff --git a/arch/arm/mach-versatile/clock.c b/arch/arm/mach-versatile/clock.c
index dcf10014f5cd..9858c96560e2 100644
--- a/arch/arm/mach-versatile/clock.c
+++ b/arch/arm/mach-versatile/clock.c
@@ -15,6 +15,7 @@
15#include <linux/err.h> 15#include <linux/err.h>
16#include <linux/string.h> 16#include <linux/string.h>
17#include <linux/clk.h> 17#include <linux/clk.h>
18#include <linux/mutex.h>
18 19
19#include <asm/semaphore.h> 20#include <asm/semaphore.h>
20#include <asm/hardware/icst307.h> 21#include <asm/hardware/icst307.h>
@@ -22,20 +23,20 @@
22#include "clock.h" 23#include "clock.h"
23 24
24static LIST_HEAD(clocks); 25static LIST_HEAD(clocks);
25static DECLARE_MUTEX(clocks_sem); 26static DEFINE_MUTEX(clocks_mutex);
26 27
27struct clk *clk_get(struct device *dev, const char *id) 28struct clk *clk_get(struct device *dev, const char *id)
28{ 29{
29 struct clk *p, *clk = ERR_PTR(-ENOENT); 30 struct clk *p, *clk = ERR_PTR(-ENOENT);
30 31
31 down(&clocks_sem); 32 mutex_lock(&clocks_mutex);
32 list_for_each_entry(p, &clocks, node) { 33 list_for_each_entry(p, &clocks, node) {
33 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 34 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
34 clk = p; 35 clk = p;
35 break; 36 break;
36 } 37 }
37 } 38 }
38 up(&clocks_sem); 39 mutex_unlock(&clocks_mutex);
39 40
40 return clk; 41 return clk;
41} 42}
@@ -110,18 +111,18 @@ static struct clk mmci_clk = {
110 111
111int clk_register(struct clk *clk) 112int clk_register(struct clk *clk)
112{ 113{
113 down(&clocks_sem); 114 mutex_lock(&clocks_mutex);
114 list_add(&clk->node, &clocks); 115 list_add(&clk->node, &clocks);
115 up(&clocks_sem); 116 mutex_unlock(&clocks_mutex);
116 return 0; 117 return 0;
117} 118}
118EXPORT_SYMBOL(clk_register); 119EXPORT_SYMBOL(clk_register);
119 120
120void clk_unregister(struct clk *clk) 121void clk_unregister(struct clk *clk)
121{ 122{
122 down(&clocks_sem); 123 mutex_lock(&clocks_mutex);
123 list_del(&clk->node); 124 list_del(&clk->node);
124 up(&clocks_sem); 125 mutex_unlock(&clocks_mutex);
125} 126}
126EXPORT_SYMBOL(clk_unregister); 127EXPORT_SYMBOL(clk_unregister);
127 128
diff --git a/arch/arm/mm/consistent.c b/arch/arm/mm/consistent.c
index 0513ed1b2fcf..c2ee18d2075e 100644
--- a/arch/arm/mm/consistent.c
+++ b/arch/arm/mm/consistent.c
@@ -20,15 +20,25 @@
20 20
21#include <asm/cacheflush.h> 21#include <asm/cacheflush.h>
22#include <asm/tlbflush.h> 22#include <asm/tlbflush.h>
23#include <asm/sizes.h>
24
25/* Sanity check size */
26#if (CONSISTENT_DMA_SIZE % SZ_2M)
27#error "CONSISTENT_DMA_SIZE must be multiple of 2MiB"
28#endif
23 29
24#define CONSISTENT_BASE (0xffc00000)
25#define CONSISTENT_END (0xffe00000) 30#define CONSISTENT_END (0xffe00000)
31#define CONSISTENT_BASE (CONSISTENT_END - CONSISTENT_DMA_SIZE)
32
26#define CONSISTENT_OFFSET(x) (((unsigned long)(x) - CONSISTENT_BASE) >> PAGE_SHIFT) 33#define CONSISTENT_OFFSET(x) (((unsigned long)(x) - CONSISTENT_BASE) >> PAGE_SHIFT)
34#define CONSISTENT_PTE_INDEX(x) (((unsigned long)(x) - CONSISTENT_BASE) >> PGDIR_SHIFT)
35#define NUM_CONSISTENT_PTES (CONSISTENT_DMA_SIZE >> PGDIR_SHIFT)
36
27 37
28/* 38/*
29 * This is the page table (2MB) covering uncached, DMA consistent allocations 39 * These are the page tables (2MB each) covering uncached, DMA consistent allocations
30 */ 40 */
31static pte_t *consistent_pte; 41static pte_t *consistent_pte[NUM_CONSISTENT_PTES];
32static DEFINE_SPINLOCK(consistent_lock); 42static DEFINE_SPINLOCK(consistent_lock);
33 43
34/* 44/*
@@ -142,7 +152,7 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
142 unsigned long order; 152 unsigned long order;
143 u64 mask = ISA_DMA_THRESHOLD, limit; 153 u64 mask = ISA_DMA_THRESHOLD, limit;
144 154
145 if (!consistent_pte) { 155 if (!consistent_pte[0]) {
146 printk(KERN_ERR "%s: not initialised\n", __func__); 156 printk(KERN_ERR "%s: not initialised\n", __func__);
147 dump_stack(); 157 dump_stack();
148 return NULL; 158 return NULL;
@@ -205,9 +215,12 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
205 c = vm_region_alloc(&consistent_head, size, 215 c = vm_region_alloc(&consistent_head, size,
206 gfp & ~(__GFP_DMA | __GFP_HIGHMEM)); 216 gfp & ~(__GFP_DMA | __GFP_HIGHMEM));
207 if (c) { 217 if (c) {
208 pte_t *pte = consistent_pte + CONSISTENT_OFFSET(c->vm_start); 218 pte_t *pte;
209 struct page *end = page + (1 << order); 219 struct page *end = page + (1 << order);
220 int idx = CONSISTENT_PTE_INDEX(c->vm_start);
221 u32 off = CONSISTENT_OFFSET(c->vm_start) & (PTRS_PER_PTE-1);
210 222
223 pte = consistent_pte[idx] + off;
211 c->vm_pages = page; 224 c->vm_pages = page;
212 225
213 /* 226 /*
@@ -226,6 +239,11 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp,
226 set_pte(pte, mk_pte(page, prot)); 239 set_pte(pte, mk_pte(page, prot));
227 page++; 240 page++;
228 pte++; 241 pte++;
242 off++;
243 if (off >= PTRS_PER_PTE) {
244 off = 0;
245 pte = consistent_pte[++idx];
246 }
229 } while (size -= PAGE_SIZE); 247 } while (size -= PAGE_SIZE);
230 248
231 /* 249 /*
@@ -327,6 +345,8 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr
327 struct vm_region *c; 345 struct vm_region *c;
328 unsigned long flags, addr; 346 unsigned long flags, addr;
329 pte_t *ptep; 347 pte_t *ptep;
348 int idx;
349 u32 off;
330 350
331 WARN_ON(irqs_disabled()); 351 WARN_ON(irqs_disabled());
332 352
@@ -347,7 +367,9 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr
347 size = c->vm_end - c->vm_start; 367 size = c->vm_end - c->vm_start;
348 } 368 }
349 369
350 ptep = consistent_pte + CONSISTENT_OFFSET(c->vm_start); 370 idx = CONSISTENT_PTE_INDEX(c->vm_start);
371 off = CONSISTENT_OFFSET(c->vm_start) & (PTRS_PER_PTE-1);
372 ptep = consistent_pte[idx] + off;
351 addr = c->vm_start; 373 addr = c->vm_start;
352 do { 374 do {
353 pte_t pte = ptep_get_and_clear(&init_mm, addr, ptep); 375 pte_t pte = ptep_get_and_clear(&init_mm, addr, ptep);
@@ -355,6 +377,11 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr
355 377
356 ptep++; 378 ptep++;
357 addr += PAGE_SIZE; 379 addr += PAGE_SIZE;
380 off++;
381 if (off >= PTRS_PER_PTE) {
382 off = 0;
383 ptep = consistent_pte[++idx];
384 }
358 385
359 if (!pte_none(pte) && pte_present(pte)) { 386 if (!pte_none(pte) && pte_present(pte)) {
360 pfn = pte_pfn(pte); 387 pfn = pte_pfn(pte);
@@ -401,11 +428,12 @@ static int __init consistent_init(void)
401 pgd_t *pgd; 428 pgd_t *pgd;
402 pmd_t *pmd; 429 pmd_t *pmd;
403 pte_t *pte; 430 pte_t *pte;
404 int ret = 0; 431 int ret = 0, i = 0;
432 u32 base = CONSISTENT_BASE;
405 433
406 do { 434 do {
407 pgd = pgd_offset(&init_mm, CONSISTENT_BASE); 435 pgd = pgd_offset(&init_mm, base);
408 pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE); 436 pmd = pmd_alloc(&init_mm, pgd, base);
409 if (!pmd) { 437 if (!pmd) {
410 printk(KERN_ERR "%s: no pmd tables\n", __func__); 438 printk(KERN_ERR "%s: no pmd tables\n", __func__);
411 ret = -ENOMEM; 439 ret = -ENOMEM;
@@ -413,15 +441,16 @@ static int __init consistent_init(void)
413 } 441 }
414 WARN_ON(!pmd_none(*pmd)); 442 WARN_ON(!pmd_none(*pmd));
415 443
416 pte = pte_alloc_kernel(pmd, CONSISTENT_BASE); 444 pte = pte_alloc_kernel(pmd, base);
417 if (!pte) { 445 if (!pte) {
418 printk(KERN_ERR "%s: no pte tables\n", __func__); 446 printk(KERN_ERR "%s: no pte tables\n", __func__);
419 ret = -ENOMEM; 447 ret = -ENOMEM;
420 break; 448 break;
421 } 449 }
422 450
423 consistent_pte = pte; 451 consistent_pte[i++] = pte;
424 } while (0); 452 base += (1 << PGDIR_SHIFT);
453 } while (base < CONSISTENT_END);
425 454
426 return ret; 455 return ret;
427} 456}
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index 84fd65656fcf..7ebc5a29db8d 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -20,6 +20,7 @@
20#include <linux/err.h> 20#include <linux/err.h>
21#include <linux/string.h> 21#include <linux/string.h>
22#include <linux/clk.h> 22#include <linux/clk.h>
23#include <linux/mutex.h>
23 24
24#include <asm/io.h> 25#include <asm/io.h>
25#include <asm/semaphore.h> 26#include <asm/semaphore.h>
@@ -27,7 +28,7 @@
27#include <asm/arch/clock.h> 28#include <asm/arch/clock.h>
28 29
29LIST_HEAD(clocks); 30LIST_HEAD(clocks);
30static DECLARE_MUTEX(clocks_sem); 31static DEFINE_MUTEX(clocks_mutex);
31DEFINE_SPINLOCK(clockfw_lock); 32DEFINE_SPINLOCK(clockfw_lock);
32 33
33static struct clk_functions *arch_clock; 34static struct clk_functions *arch_clock;
@@ -40,14 +41,14 @@ struct clk * clk_get(struct device *dev, const char *id)
40{ 41{
41 struct clk *p, *clk = ERR_PTR(-ENOENT); 42 struct clk *p, *clk = ERR_PTR(-ENOENT);
42 43
43 down(&clocks_sem); 44 mutex_lock(&clocks_mutex);
44 list_for_each_entry(p, &clocks, node) { 45 list_for_each_entry(p, &clocks, node) {
45 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { 46 if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) {
46 clk = p; 47 clk = p;
47 break; 48 break;
48 } 49 }
49 } 50 }
50 up(&clocks_sem); 51 mutex_unlock(&clocks_mutex);
51 52
52 return clk; 53 return clk;
53} 54}
@@ -249,11 +250,11 @@ void propagate_rate(struct clk * tclk)
249 250
250int clk_register(struct clk *clk) 251int clk_register(struct clk *clk)
251{ 252{
252 down(&clocks_sem); 253 mutex_lock(&clocks_mutex);
253 list_add(&clk->node, &clocks); 254 list_add(&clk->node, &clocks);
254 if (clk->init) 255 if (clk->init)
255 clk->init(clk); 256 clk->init(clk);
256 up(&clocks_sem); 257 mutex_unlock(&clocks_mutex);
257 258
258 return 0; 259 return 0;
259} 260}
@@ -261,9 +262,9 @@ EXPORT_SYMBOL(clk_register);
261 262
262void clk_unregister(struct clk *clk) 263void clk_unregister(struct clk *clk)
263{ 264{
264 down(&clocks_sem); 265 mutex_lock(&clocks_mutex);
265 list_del(&clk->node); 266 list_del(&clk->node);
266 up(&clocks_sem); 267 mutex_unlock(&clocks_mutex);
267} 268}
268EXPORT_SYMBOL(clk_unregister); 269EXPORT_SYMBOL(clk_unregister);
269 270
diff --git a/drivers/i2c/busses/i2c-pxa.c b/drivers/i2c/busses/i2c-pxa.c
index 70f7ab829d36..86e2234faf80 100644
--- a/drivers/i2c/busses/i2c-pxa.c
+++ b/drivers/i2c/busses/i2c-pxa.c
@@ -899,6 +899,12 @@ static int i2c_pxa_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num
899 struct pxa_i2c *i2c = adap->algo_data; 899 struct pxa_i2c *i2c = adap->algo_data;
900 int ret, i; 900 int ret, i;
901 901
902 /* If the I2C controller is disabled we need to reset it (probably due
903 to a suspend/resume destroying state). We do this here as we can then
904 avoid worrying about resuming the controller before its users. */
905 if (!(ICR & ICR_IUE))
906 i2c_pxa_reset(i2c);
907
902 for (i = adap->retries; i >= 0; i--) { 908 for (i = adap->retries; i >= 0; i--) {
903 ret = i2c_pxa_do_xfer(i2c, msgs, num); 909 ret = i2c_pxa_do_xfer(i2c, msgs, num);
904 if (ret != I2C_RETRY) 910 if (ret != I2C_RETRY)
@@ -939,7 +945,9 @@ static struct pxa_i2c i2c_pxa = {
939static int i2c_pxa_probe(struct platform_device *dev) 945static int i2c_pxa_probe(struct platform_device *dev)
940{ 946{
941 struct pxa_i2c *i2c = &i2c_pxa; 947 struct pxa_i2c *i2c = &i2c_pxa;
948#ifdef CONFIG_I2C_PXA_SLAVE
942 struct i2c_pxa_platform_data *plat = dev->dev.platform_data; 949 struct i2c_pxa_platform_data *plat = dev->dev.platform_data;
950#endif
943 int ret; 951 int ret;
944 952
945#ifdef CONFIG_PXA27x 953#ifdef CONFIG_PXA27x
@@ -1024,5 +1032,7 @@ static void i2c_adap_pxa_exit(void)
1024 return platform_driver_unregister(&i2c_pxa_driver); 1032 return platform_driver_unregister(&i2c_pxa_driver);
1025} 1033}
1026 1034
1035MODULE_LICENSE("GPL");
1036
1027module_init(i2c_adap_pxa_init); 1037module_init(i2c_adap_pxa_init);
1028module_exit(i2c_adap_pxa_exit); 1038module_exit(i2c_adap_pxa_exit);
diff --git a/drivers/pcmcia/pxa2xx_mainstone.c b/drivers/pcmcia/pxa2xx_mainstone.c
index 5d957dfe23d9..fda06941e730 100644
--- a/drivers/pcmcia/pxa2xx_mainstone.c
+++ b/drivers/pcmcia/pxa2xx_mainstone.c
@@ -171,27 +171,22 @@ static int __init mst_pcmcia_init(void)
171{ 171{
172 int ret; 172 int ret;
173 173
174 mst_pcmcia_device = kzalloc(sizeof(*mst_pcmcia_device), GFP_KERNEL); 174 mst_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
175 if (!mst_pcmcia_device) 175 if (!mst_pcmcia_device)
176 return -ENOMEM; 176 return -ENOMEM;
177 mst_pcmcia_device->name = "pxa2xx-pcmcia"; 177
178 mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops; 178 mst_pcmcia_device->dev.platform_data = &mst_pcmcia_ops;
179 179
180 ret = platform_device_register(mst_pcmcia_device); 180 ret = platform_device_add(mst_pcmcia_device);
181
181 if (ret) 182 if (ret)
182 kfree(mst_pcmcia_device); 183 platform_device_put(mst_pcmcia_device);
183 184
184 return ret; 185 return ret;
185} 186}
186 187
187static void __exit mst_pcmcia_exit(void) 188static void __exit mst_pcmcia_exit(void)
188{ 189{
189 /*
190 * This call is supposed to free our mst_pcmcia_device.
191 * Unfortunately platform_device don't have a free method, and
192 * we can't assume it's free of any reference at this point so we
193 * can't free it either.
194 */
195 platform_device_unregister(mst_pcmcia_device); 190 platform_device_unregister(mst_pcmcia_device);
196} 191}
197 192
diff --git a/drivers/pcmcia/pxa2xx_sharpsl.c b/drivers/pcmcia/pxa2xx_sharpsl.c
index 12a7244a5ec8..fd3647368955 100644
--- a/drivers/pcmcia/pxa2xx_sharpsl.c
+++ b/drivers/pcmcia/pxa2xx_sharpsl.c
@@ -263,30 +263,25 @@ static int __init sharpsl_pcmcia_init(void)
263{ 263{
264 int ret; 264 int ret;
265 265
266 sharpsl_pcmcia_ops.nr=platform_scoop_config->num_devs; 266 sharpsl_pcmcia_ops.nr = platform_scoop_config->num_devs;
267 sharpsl_pcmcia_device = kzalloc(sizeof(*sharpsl_pcmcia_device), GFP_KERNEL); 267 sharpsl_pcmcia_device = platform_device_alloc("pxa2xx-pcmcia", -1);
268
268 if (!sharpsl_pcmcia_device) 269 if (!sharpsl_pcmcia_device)
269 return -ENOMEM; 270 return -ENOMEM;
270 271
271 sharpsl_pcmcia_device->name = "pxa2xx-pcmcia";
272 sharpsl_pcmcia_device->dev.platform_data = &sharpsl_pcmcia_ops; 272 sharpsl_pcmcia_device->dev.platform_data = &sharpsl_pcmcia_ops;
273 sharpsl_pcmcia_device->dev.parent=platform_scoop_config->devs[0].dev; 273 sharpsl_pcmcia_device->dev.parent = platform_scoop_config->devs[0].dev;
274
275 ret = platform_device_add(sharpsl_pcmcia_device);
274 276
275 ret = platform_device_register(sharpsl_pcmcia_device);
276 if (ret) 277 if (ret)
277 kfree(sharpsl_pcmcia_device); 278 platform_device_put(sharpsl_pcmcia_device);
278 279
279 return ret; 280 return ret;
280} 281}
281 282
282static void __exit sharpsl_pcmcia_exit(void) 283static void __exit sharpsl_pcmcia_exit(void)
283{ 284{
284 /*
285 * This call is supposed to free our sharpsl_pcmcia_device.
286 * Unfortunately platform_device don't have a free method, and
287 * we can't assume it's free of any reference at this point so we
288 * can't free it either.
289 */
290 platform_device_unregister(sharpsl_pcmcia_device); 285 platform_device_unregister(sharpsl_pcmcia_device);
291} 286}
292 287
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 698cb76819d9..843717275d49 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -280,6 +280,40 @@ config SERIAL_AMBA_PL011_CONSOLE
280 your boot loader (lilo or loadlin) about how to pass options to the 280 your boot loader (lilo or loadlin) about how to pass options to the
281 kernel at boot time.) 281 kernel at boot time.)
282 282
283config SERIAL_AT91
284 bool "AT91RM9200 serial port support"
285 depends on ARM && ARCH_AT91RM9200
286 select SERIAL_CORE
287 help
288 This enables the driver for the on-chip UARTs of the AT91RM9200
289 processor.
290
291config SERIAL_AT91_CONSOLE
292 bool "Support for console on AT91RM9200 serial port"
293 depends on SERIAL_AT91=y
294 select SERIAL_CORE_CONSOLE
295 help
296 Say Y here if you wish to use a UART on the AT91RM9200 as the system
297 console (the system console is the device which receives all kernel
298 messages and warnings and which allows logins in single user mode).
299
300config SERIAL_AT91_TTYAT
301 bool "Install as device ttyAT0-4 instead of ttyS0-4"
302 depends on SERIAL_AT91=y
303 help
304 Say Y here if you wish to have the five internal AT91RM9200 UARTs
305 appear as /dev/ttyAT0-4 (major 240, minor 0-4) instead of the
306 normal /dev/ttyS0-4 (major 4, minor 64-68). This is necessary if
307 you also want other UARTs, such as external 8250/16C550 compatible
308 UARTs.
309 The ttySn nodes are legally reserved for the 8250 serial driver
310 but are often misused by other serial drivers.
311
312 To use this, you should create suitable ttyATn device nodes in
313 /dev/, and pass "console=ttyATn" to the kernel.
314
315 Say Y if you have an external 8250/16C550 UART. If unsure, say N.
316
283config SERIAL_CLPS711X 317config SERIAL_CLPS711X
284 tristate "CLPS711X serial port support" 318 tristate "CLPS711X serial port support"
285 depends on ARM && ARCH_CLPS711X 319 depends on ARM && ARCH_CLPS711X
diff --git a/drivers/serial/Makefile b/drivers/serial/Makefile
index 137148bba4fa..24a583e482bb 100644
--- a/drivers/serial/Makefile
+++ b/drivers/serial/Makefile
@@ -56,3 +56,4 @@ obj-$(CONFIG_SERIAL_JSM) += jsm/
56obj-$(CONFIG_SERIAL_TXX9) += serial_txx9.o 56obj-$(CONFIG_SERIAL_TXX9) += serial_txx9.o
57obj-$(CONFIG_SERIAL_VR41XX) += vr41xx_siu.o 57obj-$(CONFIG_SERIAL_VR41XX) += vr41xx_siu.o
58obj-$(CONFIG_SERIAL_SGI_IOC4) += ioc4_serial.o 58obj-$(CONFIG_SERIAL_SGI_IOC4) += ioc4_serial.o
59obj-$(CONFIG_SERIAL_AT91) += at91_serial.o
diff --git a/drivers/serial/at91_serial.c b/drivers/serial/at91_serial.c
new file mode 100644
index 000000000000..0e206063d685
--- /dev/null
+++ b/drivers/serial/at91_serial.c
@@ -0,0 +1,894 @@
1/*
2 * linux/drivers/char/at91_serial.c
3 *
4 * Driver for Atmel AT91RM9200 Serial ports
5 *
6 * Copyright (C) 2003 Rick Bronson
7 *
8 * Based on drivers/char/serial_sa1100.c, by Deep Blue Solutions Ltd.
9 * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 *
25 */
26#include <linux/config.h>
27#include <linux/module.h>
28#include <linux/tty.h>
29#include <linux/ioport.h>
30#include <linux/slab.h>
31#include <linux/init.h>
32#include <linux/serial.h>
33#include <linux/console.h>
34#include <linux/sysrq.h>
35#include <linux/tty_flip.h>
36
37#include <asm/io.h>
38
39#include <asm/arch/at91rm9200_usart.h>
40#include <asm/mach/serial_at91rm9200.h>
41#include <asm/arch/board.h>
42#include <asm/arch/pio.h>
43
44
45#if defined(CONFIG_SERIAL_AT91_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
46#define SUPPORT_SYSRQ
47#endif
48
49#include <linux/serial_core.h>
50
51#ifdef CONFIG_SERIAL_AT91_TTYAT
52
53/* Use device name ttyAT, major 204 and minor 154-169. This is necessary if we
54 * should coexist with the 8250 driver, such as if we have an external 16C550
55 * UART. */
56#define SERIAL_AT91_MAJOR 204
57#define MINOR_START 154
58#define AT91_DEVICENAME "ttyAT"
59
60#else
61
62/* Use device name ttyS, major 4, minor 64-68. This is the usual serial port
63 * name, but it is legally reserved for the 8250 driver. */
64#define SERIAL_AT91_MAJOR TTY_MAJOR
65#define MINOR_START 64
66#define AT91_DEVICENAME "ttyS"
67
68#endif
69
70#define AT91_VA_BASE_DBGU ((unsigned long) AT91_VA_BASE_SYS + AT91_DBGU)
71#define AT91_ISR_PASS_LIMIT 256
72
73#define UART_PUT_CR(port,v) writel(v, (port)->membase + AT91_US_CR)
74#define UART_GET_MR(port) readl((port)->membase + AT91_US_MR)
75#define UART_PUT_MR(port,v) writel(v, (port)->membase + AT91_US_MR)
76#define UART_PUT_IER(port,v) writel(v, (port)->membase + AT91_US_IER)
77#define UART_PUT_IDR(port,v) writel(v, (port)->membase + AT91_US_IDR)
78#define UART_GET_IMR(port) readl((port)->membase + AT91_US_IMR)
79#define UART_GET_CSR(port) readl((port)->membase + AT91_US_CSR)
80#define UART_GET_CHAR(port) readl((port)->membase + AT91_US_RHR)
81#define UART_PUT_CHAR(port,v) writel(v, (port)->membase + AT91_US_THR)
82#define UART_GET_BRGR(port) readl((port)->membase + AT91_US_BRGR)
83#define UART_PUT_BRGR(port,v) writel(v, (port)->membase + AT91_US_BRGR)
84#define UART_PUT_RTOR(port,v) writel(v, (port)->membase + AT91_US_RTOR)
85
86// #define UART_GET_CR(port) readl((port)->membase + AT91_US_CR) // is write-only
87
88 /* PDC registers */
89#define UART_PUT_PTCR(port,v) writel(v, (port)->membase + AT91_PDC_PTCR)
90#define UART_PUT_RPR(port,v) writel(v, (port)->membase + AT91_PDC_RPR)
91#define UART_PUT_RCR(port,v) writel(v, (port)->membase + AT91_PDC_RCR)
92#define UART_GET_RCR(port) readl((port)->membase + AT91_PDC_RCR)
93#define UART_PUT_RNPR(port,v) writel(v, (port)->membase + AT91_PDC_RNPR)
94#define UART_PUT_RNCR(port,v) writel(v, (port)->membase + AT91_PDC_RNCR)
95
96
97static int (*at91_open)(struct uart_port *);
98static void (*at91_close)(struct uart_port *);
99
100#ifdef SUPPORT_SYSRQ
101static struct console at91_console;
102#endif
103
104/*
105 * Return TIOCSER_TEMT when transmitter FIFO and Shift register is empty.
106 */
107static u_int at91_tx_empty(struct uart_port *port)
108{
109 return (UART_GET_CSR(port) & AT91_US_TXEMPTY) ? TIOCSER_TEMT : 0;
110}
111
112/*
113 * Set state of the modem control output lines
114 */
115static void at91_set_mctrl(struct uart_port *port, u_int mctrl)
116{
117 unsigned int control = 0;
118
119 /*
120 * Errata #39: RTS0 is not internally connected to PA21. We need to drive
121 * the pin manually.
122 */
123 if (port->mapbase == AT91_VA_BASE_US0) {
124 if (mctrl & TIOCM_RTS)
125 at91_sys_write(AT91_PIOA + PIO_CODR, AT91_PA21_RTS0);
126 else
127 at91_sys_write(AT91_PIOA + PIO_SODR, AT91_PA21_RTS0);
128 }
129
130 if (mctrl & TIOCM_RTS)
131 control |= AT91_US_RTSEN;
132 else
133 control |= AT91_US_RTSDIS;
134
135 if (mctrl & TIOCM_DTR)
136 control |= AT91_US_DTREN;
137 else
138 control |= AT91_US_DTRDIS;
139
140 UART_PUT_CR(port,control);
141}
142
143/*
144 * Get state of the modem control input lines
145 */
146static u_int at91_get_mctrl(struct uart_port *port)
147{
148 unsigned int status, ret = 0;
149
150 status = UART_GET_CSR(port);
151
152 /*
153 * The control signals are active low.
154 */
155 if (!(status & AT91_US_DCD))
156 ret |= TIOCM_CD;
157 if (!(status & AT91_US_CTS))
158 ret |= TIOCM_CTS;
159 if (!(status & AT91_US_DSR))
160 ret |= TIOCM_DSR;
161 if (!(status & AT91_US_RI))
162 ret |= TIOCM_RI;
163
164 return ret;
165}
166
167/*
168 * Stop transmitting.
169 */
170static void at91_stop_tx(struct uart_port *port)
171{
172 UART_PUT_IDR(port, AT91_US_TXRDY);
173 port->read_status_mask &= ~AT91_US_TXRDY;
174}
175
176/*
177 * Start transmitting.
178 */
179static void at91_start_tx(struct uart_port *port)
180{
181 port->read_status_mask |= AT91_US_TXRDY;
182 UART_PUT_IER(port, AT91_US_TXRDY);
183}
184
185/*
186 * Stop receiving - port is in process of being closed.
187 */
188static void at91_stop_rx(struct uart_port *port)
189{
190 UART_PUT_IDR(port, AT91_US_RXRDY);
191}
192
193/*
194 * Enable modem status interrupts
195 */
196static void at91_enable_ms(struct uart_port *port)
197{
198 port->read_status_mask |= (AT91_US_RIIC | AT91_US_DSRIC | AT91_US_DCDIC | AT91_US_CTSIC);
199 UART_PUT_IER(port, AT91_US_RIIC | AT91_US_DSRIC | AT91_US_DCDIC | AT91_US_CTSIC);
200}
201
202/*
203 * Control the transmission of a break signal
204 */
205static void at91_break_ctl(struct uart_port *port, int break_state)
206{
207 if (break_state != 0)
208 UART_PUT_CR(port, AT91_US_STTBRK); /* start break */
209 else
210 UART_PUT_CR(port, AT91_US_STPBRK); /* stop break */
211}
212
213/*
214 * Characters received (called from interrupt handler)
215 */
216static void at91_rx_chars(struct uart_port *port, struct pt_regs *regs)
217{
218 struct tty_struct *tty = port->info->tty;
219 unsigned int status, ch, flg;
220
221 status = UART_GET_CSR(port) & port->read_status_mask;
222 while (status & (AT91_US_RXRDY)) {
223 ch = UART_GET_CHAR(port);
224
225 if (tty->flip.count >= TTY_FLIPBUF_SIZE)
226 goto ignore_char;
227 port->icount.rx++;
228
229 flg = TTY_NORMAL;
230
231 /*
232 * note that the error handling code is
233 * out of the main execution path
234 */
235 if (unlikely(status & (AT91_US_PARE | AT91_US_FRAME | AT91_US_OVRE))) {
236 UART_PUT_CR(port, AT91_US_RSTSTA); /* clear error */
237 if (status & (AT91_US_PARE))
238 port->icount.parity++;
239 if (status & (AT91_US_FRAME))
240 port->icount.frame++;
241 if (status & (AT91_US_OVRE))
242 port->icount.overrun++;
243
244 if (status & AT91_US_PARE)
245 flg = TTY_PARITY;
246 else if (status & AT91_US_FRAME)
247 flg = TTY_FRAME;
248 if (status & AT91_US_OVRE) {
249 /*
250 * overrun does *not* affect the character
251 * we read from the FIFO
252 */
253 tty_insert_flip_char(tty, ch, flg);
254 ch = 0;
255 flg = TTY_OVERRUN;
256 }
257#ifdef SUPPORT_SYSRQ
258 port->sysrq = 0;
259#endif
260 }
261
262 if (uart_handle_sysrq_char(port, ch, regs))
263 goto ignore_char;
264
265 tty_insert_flip_char(tty, ch, flg);
266
267 ignore_char:
268 status = UART_GET_CSR(port) & port->read_status_mask;
269 }
270
271 tty_flip_buffer_push(tty);
272}
273
274/*
275 * Transmit characters (called from interrupt handler)
276 */
277static void at91_tx_chars(struct uart_port *port)
278{
279 struct circ_buf *xmit = &port->info->xmit;
280
281 if (port->x_char) {
282 UART_PUT_CHAR(port, port->x_char);
283 port->icount.tx++;
284 port->x_char = 0;
285 return;
286 }
287 if (uart_circ_empty(xmit) || uart_tx_stopped(port)) {
288 at91_stop_tx(port);
289 return;
290 }
291
292 while (UART_GET_CSR(port) & AT91_US_TXRDY) {
293 UART_PUT_CHAR(port, xmit->buf[xmit->tail]);
294 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
295 port->icount.tx++;
296 if (uart_circ_empty(xmit))
297 break;
298 }
299
300 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
301 uart_write_wakeup(port);
302
303 if (uart_circ_empty(xmit))
304 at91_stop_tx(port);
305}
306
307/*
308 * Interrupt handler
309 */
310static irqreturn_t at91_interrupt(int irq, void *dev_id, struct pt_regs *regs)
311{
312 struct uart_port *port = dev_id;
313 unsigned int status, pending, pass_counter = 0;
314
315 status = UART_GET_CSR(port);
316 pending = status & port->read_status_mask;
317 if (pending) {
318 do {
319 if (pending & AT91_US_RXRDY)
320 at91_rx_chars(port, regs);
321
322 /* Clear the relevent break bits */
323 if (pending & AT91_US_RXBRK) {
324 UART_PUT_CR(port, AT91_US_RSTSTA);
325 port->icount.brk++;
326 uart_handle_break(port);
327 }
328
329 // TODO: All reads to CSR will clear these interrupts!
330 if (pending & AT91_US_RIIC) port->icount.rng++;
331 if (pending & AT91_US_DSRIC) port->icount.dsr++;
332 if (pending & AT91_US_DCDIC)
333 uart_handle_dcd_change(port, !(status & AT91_US_DCD));
334 if (pending & AT91_US_CTSIC)
335 uart_handle_cts_change(port, !(status & AT91_US_CTS));
336 if (pending & (AT91_US_RIIC | AT91_US_DSRIC | AT91_US_DCDIC | AT91_US_CTSIC))
337 wake_up_interruptible(&port->info->delta_msr_wait);
338
339 if (pending & AT91_US_TXRDY)
340 at91_tx_chars(port);
341 if (pass_counter++ > AT91_ISR_PASS_LIMIT)
342 break;
343
344 status = UART_GET_CSR(port);
345 pending = status & port->read_status_mask;
346 } while (pending);
347 }
348 return IRQ_HANDLED;
349}
350
351/*
352 * Perform initialization and enable port for reception
353 */
354static int at91_startup(struct uart_port *port)
355{
356 int retval;
357
358 /*
359 * Ensure that no interrupts are enabled otherwise when
360 * request_irq() is called we could get stuck trying to
361 * handle an unexpected interrupt
362 */
363 UART_PUT_IDR(port, -1);
364
365 /*
366 * Allocate the IRQ
367 */
368 retval = request_irq(port->irq, at91_interrupt, SA_SHIRQ, "at91_serial", port);
369 if (retval) {
370 printk("at91_serial: at91_startup - Can't get irq\n");
371 return retval;
372 }
373
374 /*
375 * If there is a specific "open" function (to register
376 * control line interrupts)
377 */
378 if (at91_open) {
379 retval = at91_open(port);
380 if (retval) {
381 free_irq(port->irq, port);
382 return retval;
383 }
384 }
385
386 port->read_status_mask = AT91_US_RXRDY | AT91_US_TXRDY | AT91_US_OVRE
387 | AT91_US_FRAME | AT91_US_PARE | AT91_US_RXBRK;
388 /*
389 * Finally, enable the serial port
390 */
391 UART_PUT_CR(port, AT91_US_RSTSTA | AT91_US_RSTRX);
392 UART_PUT_CR(port, AT91_US_TXEN | AT91_US_RXEN); /* enable xmit & rcvr */
393 UART_PUT_IER(port, AT91_US_RXRDY); /* do receive only */
394 return 0;
395}
396
397/*
398 * Disable the port
399 */
400static void at91_shutdown(struct uart_port *port)
401{
402 /*
403 * Disable all interrupts, port and break condition.
404 */
405 UART_PUT_CR(port, AT91_US_RSTSTA);
406 UART_PUT_IDR(port, -1);
407
408 /*
409 * Free the interrupt
410 */
411 free_irq(port->irq, port);
412
413 /*
414 * If there is a specific "close" function (to unregister
415 * control line interrupts)
416 */
417 if (at91_close)
418 at91_close(port);
419}
420
421/*
422 * Power / Clock management.
423 */
424static void at91_serial_pm(struct uart_port *port, unsigned int state, unsigned int oldstate)
425{
426 switch (state) {
427 case 0:
428 /*
429 * Enable the peripheral clock for this serial port.
430 * This is called on uart_open() or a resume event.
431 */
432 at91_sys_write(AT91_PMC_PCER, 1 << port->irq);
433 break;
434 case 3:
435 /*
436 * Disable the peripheral clock for this serial port.
437 * This is called on uart_close() or a suspend event.
438 */
439 if (port->irq != AT91_ID_SYS) /* is this a shared clock? */
440 at91_sys_write(AT91_PMC_PCDR, 1 << port->irq);
441 break;
442 default:
443 printk(KERN_ERR "at91_serial: unknown pm %d\n", state);
444 }
445}
446
447/*
448 * Change the port parameters
449 */
450static void at91_set_termios(struct uart_port *port, struct termios * termios, struct termios * old)
451{
452 unsigned long flags;
453 unsigned int mode, imr, quot, baud;
454
455 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
456 quot = uart_get_divisor(port, baud);
457
458 /* Get current mode register */
459 mode = UART_GET_MR(port) & ~(AT91_US_CHRL | AT91_US_NBSTOP | AT91_US_PAR);
460
461 /* byte size */
462 switch (termios->c_cflag & CSIZE) {
463 case CS5:
464 mode |= AT91_US_CHRL_5;
465 break;
466 case CS6:
467 mode |= AT91_US_CHRL_6;
468 break;
469 case CS7:
470 mode |= AT91_US_CHRL_7;
471 break;
472 default:
473 mode |= AT91_US_CHRL_8;
474 break;
475 }
476
477 /* stop bits */
478 if (termios->c_cflag & CSTOPB)
479 mode |= AT91_US_NBSTOP_2;
480
481 /* parity */
482 if (termios->c_cflag & PARENB) {
483 if (termios->c_cflag & CMSPAR) { /* Mark or Space parity */
484 if (termios->c_cflag & PARODD)
485 mode |= AT91_US_PAR_MARK;
486 else
487 mode |= AT91_US_PAR_SPACE;
488 }
489 else if (termios->c_cflag & PARODD)
490 mode |= AT91_US_PAR_ODD;
491 else
492 mode |= AT91_US_PAR_EVEN;
493 }
494 else
495 mode |= AT91_US_PAR_NONE;
496
497 spin_lock_irqsave(&port->lock, flags);
498
499 port->read_status_mask |= AT91_US_OVRE;
500 if (termios->c_iflag & INPCK)
501 port->read_status_mask |= AT91_US_FRAME | AT91_US_PARE;
502 if (termios->c_iflag & (BRKINT | PARMRK))
503 port->read_status_mask |= AT91_US_RXBRK;
504
505 /*
506 * Characters to ignore
507 */
508 port->ignore_status_mask = 0;
509 if (termios->c_iflag & IGNPAR)
510 port->ignore_status_mask |= (AT91_US_FRAME | AT91_US_PARE);
511 if (termios->c_iflag & IGNBRK) {
512 port->ignore_status_mask |= AT91_US_RXBRK;
513 /*
514 * If we're ignoring parity and break indicators,
515 * ignore overruns too (for real raw support).
516 */
517 if (termios->c_iflag & IGNPAR)
518 port->ignore_status_mask |= AT91_US_OVRE;
519 }
520
521 // TODO: Ignore all characters if CREAD is set.
522
523 /* update the per-port timeout */
524 uart_update_timeout(port, termios->c_cflag, baud);
525
526 /* disable interrupts and drain transmitter */
527 imr = UART_GET_IMR(port); /* get interrupt mask */
528 UART_PUT_IDR(port, -1); /* disable all interrupts */
529 while (!(UART_GET_CSR(port) & AT91_US_TXEMPTY)) { barrier(); }
530
531 /* disable receiver and transmitter */
532 UART_PUT_CR(port, AT91_US_TXDIS | AT91_US_RXDIS);
533
534 /* set the parity, stop bits and data size */
535 UART_PUT_MR(port, mode);
536
537 /* set the baud rate */
538 UART_PUT_BRGR(port, quot);
539 UART_PUT_CR(port, AT91_US_RSTSTA | AT91_US_RSTRX);
540 UART_PUT_CR(port, AT91_US_TXEN | AT91_US_RXEN);
541
542 /* restore interrupts */
543 UART_PUT_IER(port, imr);
544
545 /* CTS flow-control and modem-status interrupts */
546 if (UART_ENABLE_MS(port, termios->c_cflag))
547 port->ops->enable_ms(port);
548
549 spin_unlock_irqrestore(&port->lock, flags);
550}
551
552/*
553 * Return string describing the specified port
554 */
555static const char *at91_type(struct uart_port *port)
556{
557 return (port->type == PORT_AT91RM9200) ? "AT91_SERIAL" : NULL;
558}
559
560/*
561 * Release the memory region(s) being used by 'port'.
562 */
563static void at91_release_port(struct uart_port *port)
564{
565 release_mem_region(port->mapbase,
566 (port->mapbase == AT91_VA_BASE_DBGU) ? 512 : SZ_16K);
567}
568
569/*
570 * Request the memory region(s) being used by 'port'.
571 */
572static int at91_request_port(struct uart_port *port)
573{
574 return request_mem_region(port->mapbase,
575 (port->mapbase == AT91_VA_BASE_DBGU) ? 512 : SZ_16K,
576 "at91_serial") != NULL ? 0 : -EBUSY;
577
578}
579
580/*
581 * Configure/autoconfigure the port.
582 */
583static void at91_config_port(struct uart_port *port, int flags)
584{
585 if (flags & UART_CONFIG_TYPE) {
586 port->type = PORT_AT91RM9200;
587 at91_request_port(port);
588 }
589}
590
591/*
592 * Verify the new serial_struct (for TIOCSSERIAL).
593 */
594static int at91_verify_port(struct uart_port *port, struct serial_struct *ser)
595{
596 int ret = 0;
597 if (ser->type != PORT_UNKNOWN && ser->type != PORT_AT91RM9200)
598 ret = -EINVAL;
599 if (port->irq != ser->irq)
600 ret = -EINVAL;
601 if (ser->io_type != SERIAL_IO_MEM)
602 ret = -EINVAL;
603 if (port->uartclk / 16 != ser->baud_base)
604 ret = -EINVAL;
605 if ((void *)port->mapbase != ser->iomem_base)
606 ret = -EINVAL;
607 if (port->iobase != ser->port)
608 ret = -EINVAL;
609 if (ser->hub6 != 0)
610 ret = -EINVAL;
611 return ret;
612}
613
614static struct uart_ops at91_pops = {
615 .tx_empty = at91_tx_empty,
616 .set_mctrl = at91_set_mctrl,
617 .get_mctrl = at91_get_mctrl,
618 .stop_tx = at91_stop_tx,
619 .start_tx = at91_start_tx,
620 .stop_rx = at91_stop_rx,
621 .enable_ms = at91_enable_ms,
622 .break_ctl = at91_break_ctl,
623 .startup = at91_startup,
624 .shutdown = at91_shutdown,
625 .set_termios = at91_set_termios,
626 .type = at91_type,
627 .release_port = at91_release_port,
628 .request_port = at91_request_port,
629 .config_port = at91_config_port,
630 .verify_port = at91_verify_port,
631 .pm = at91_serial_pm,
632};
633
634static struct uart_port at91_ports[AT91_NR_UART];
635
636void __init at91_init_ports(void)
637{
638 static int first = 1;
639 int i;
640
641 if (!first)
642 return;
643 first = 0;
644
645 for (i = 0; i < AT91_NR_UART; i++) {
646 at91_ports[i].iotype = UPIO_MEM;
647 at91_ports[i].flags = UPF_BOOT_AUTOCONF;
648 at91_ports[i].uartclk = at91_master_clock;
649 at91_ports[i].ops = &at91_pops;
650 at91_ports[i].fifosize = 1;
651 at91_ports[i].line = i;
652 }
653}
654
655void __init at91_register_uart_fns(struct at91rm9200_port_fns *fns)
656{
657 if (fns->enable_ms)
658 at91_pops.enable_ms = fns->enable_ms;
659 if (fns->get_mctrl)
660 at91_pops.get_mctrl = fns->get_mctrl;
661 if (fns->set_mctrl)
662 at91_pops.set_mctrl = fns->set_mctrl;
663 at91_open = fns->open;
664 at91_close = fns->close;
665 at91_pops.pm = fns->pm;
666 at91_pops.set_wake = fns->set_wake;
667}
668
669/*
670 * Setup ports.
671 */
672void __init at91_register_uart(int idx, int port)
673{
674 if ((idx < 0) || (idx >= AT91_NR_UART)) {
675 printk(KERN_ERR "%s: bad index number %d\n", __FUNCTION__, idx);
676 return;
677 }
678
679 switch (port) {
680 case 0:
681 at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US0;
682 at91_ports[idx].mapbase = AT91_VA_BASE_US0;
683 at91_ports[idx].irq = AT91_ID_US0;
684 AT91_CfgPIO_USART0();
685 break;
686 case 1:
687 at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US1;
688 at91_ports[idx].mapbase = AT91_VA_BASE_US1;
689 at91_ports[idx].irq = AT91_ID_US1;
690 AT91_CfgPIO_USART1();
691 break;
692 case 2:
693 at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US2;
694 at91_ports[idx].mapbase = AT91_VA_BASE_US2;
695 at91_ports[idx].irq = AT91_ID_US2;
696 AT91_CfgPIO_USART2();
697 break;
698 case 3:
699 at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_US3;
700 at91_ports[idx].mapbase = AT91_VA_BASE_US3;
701 at91_ports[idx].irq = AT91_ID_US3;
702 AT91_CfgPIO_USART3();
703 break;
704 case 4:
705 at91_ports[idx].membase = (void __iomem *) AT91_VA_BASE_DBGU;
706 at91_ports[idx].mapbase = AT91_VA_BASE_DBGU;
707 at91_ports[idx].irq = AT91_ID_SYS;
708 AT91_CfgPIO_DBGU();
709 break;
710 default:
711 printk(KERN_ERR "%s : bad port number %d\n", __FUNCTION__, port);
712 }
713}
714
715#ifdef CONFIG_SERIAL_AT91_CONSOLE
716
717/*
718 * Interrupts are disabled on entering
719 */
720static void at91_console_write(struct console *co, const char *s, u_int count)
721{
722 struct uart_port *port = at91_ports + co->index;
723 unsigned int status, i, imr;
724
725 /*
726 * First, save IMR and then disable interrupts
727 */
728 imr = UART_GET_IMR(port); /* get interrupt mask */
729 UART_PUT_IDR(port, AT91_US_RXRDY | AT91_US_TXRDY);
730
731 /*
732 * Now, do each character
733 */
734 for (i = 0; i < count; i++) {
735 do {
736 status = UART_GET_CSR(port);
737 } while (!(status & AT91_US_TXRDY));
738 UART_PUT_CHAR(port, s[i]);
739 if (s[i] == '\n') {
740 do {
741 status = UART_GET_CSR(port);
742 } while (!(status & AT91_US_TXRDY));
743 UART_PUT_CHAR(port, '\r');
744 }
745 }
746
747 /*
748 * Finally, wait for transmitter to become empty
749 * and restore IMR
750 */
751 do {
752 status = UART_GET_CSR(port);
753 } while (!(status & AT91_US_TXRDY));
754 UART_PUT_IER(port, imr); /* set interrupts back the way they were */
755}
756
757/*
758 * If the port was already initialised (eg, by a boot loader), try to determine
759 * the current setup.
760 */
761static void __init at91_console_get_options(struct uart_port *port, int *baud, int *parity, int *bits)
762{
763 unsigned int mr, quot;
764
765// TODO: CR is a write-only register
766// unsigned int cr;
767//
768// cr = UART_GET_CR(port) & (AT91_US_RXEN | AT91_US_TXEN);
769// if (cr == (AT91_US_RXEN | AT91_US_TXEN)) {
770// /* ok, the port was enabled */
771// }
772
773 mr = UART_GET_MR(port) & AT91_US_CHRL;
774 if (mr == AT91_US_CHRL_8)
775 *bits = 8;
776 else
777 *bits = 7;
778
779 mr = UART_GET_MR(port) & AT91_US_PAR;
780 if (mr == AT91_US_PAR_EVEN)
781 *parity = 'e';
782 else if (mr == AT91_US_PAR_ODD)
783 *parity = 'o';
784
785 quot = UART_GET_BRGR(port);
786 *baud = port->uartclk / (16 * (quot));
787}
788
789static int __init at91_console_setup(struct console *co, char *options)
790{
791 struct uart_port *port;
792 int baud = 115200;
793 int bits = 8;
794 int parity = 'n';
795 int flow = 'n';
796
797 /*
798 * Check whether an invalid uart number has been specified, and
799 * if so, search for the first available port that does have
800 * console support.
801 */
802 port = uart_get_console(at91_ports, AT91_NR_UART, co);
803
804 /*
805 * Enable the serial console, in-case bootloader did not do it.
806 */
807 at91_sys_write(AT91_PMC_PCER, 1 << port->irq); /* enable clock */
808 UART_PUT_IDR(port, -1); /* disable interrupts */
809 UART_PUT_CR(port, AT91_US_RSTSTA | AT91_US_RSTRX);
810 UART_PUT_CR(port, AT91_US_TXEN | AT91_US_RXEN);
811
812 if (options)
813 uart_parse_options(options, &baud, &parity, &bits, &flow);
814 else
815 at91_console_get_options(port, &baud, &parity, &bits);
816
817 return uart_set_options(port, co, baud, parity, bits, flow);
818}
819
820static struct uart_driver at91_uart;
821
822static struct console at91_console = {
823 .name = AT91_DEVICENAME,
824 .write = at91_console_write,
825 .device = uart_console_device,
826 .setup = at91_console_setup,
827 .flags = CON_PRINTBUFFER,
828 .index = -1,
829 .data = &at91_uart,
830};
831
832#define AT91_CONSOLE_DEVICE &at91_console
833
834static int __init at91_console_init(void)
835{
836 at91_init_ports();
837
838 at91_console.index = at91_console_port;
839 register_console(&at91_console);
840 return 0;
841}
842console_initcall(at91_console_init);
843
844#else
845#define AT91_CONSOLE_DEVICE NULL
846#endif
847
848static struct uart_driver at91_uart = {
849 .owner = THIS_MODULE,
850 .driver_name = AT91_DEVICENAME,
851 .dev_name = AT91_DEVICENAME,
852 .devfs_name = AT91_DEVICENAME,
853 .major = SERIAL_AT91_MAJOR,
854 .minor = MINOR_START,
855 .nr = AT91_NR_UART,
856 .cons = AT91_CONSOLE_DEVICE,
857};
858
859static int __init at91_serial_init(void)
860{
861 int ret, i;
862
863 at91_init_ports();
864
865 ret = uart_register_driver(&at91_uart);
866 if (ret)
867 return ret;
868
869 for (i = 0; i < AT91_NR_UART; i++) {
870 if (at91_serial_map[i] >= 0)
871 uart_add_one_port(&at91_uart, &at91_ports[i]);
872 }
873
874 return 0;
875}
876
877static void __exit at91_serial_exit(void)
878{
879 int i;
880
881 for (i = 0; i < AT91_NR_UART; i++) {
882 if (at91_serial_map[i] >= 0)
883 uart_remove_one_port(&at91_uart, &at91_ports[i]);
884 }
885
886 uart_unregister_driver(&at91_uart);
887}
888
889module_init(at91_serial_init);
890module_exit(at91_serial_exit);
891
892MODULE_AUTHOR("Rick Bronson");
893MODULE_DESCRIPTION("AT91 generic serial port driver");
894MODULE_LICENSE("GPL");
diff --git a/include/asm-arm/arch-at91rm9200/at91rm9200_pdc.h b/include/asm-arm/arch-at91rm9200/at91rm9200_pdc.h
new file mode 100644
index 000000000000..ce1150d4438d
--- /dev/null
+++ b/include/asm-arm/arch-at91rm9200/at91rm9200_pdc.h
@@ -0,0 +1,36 @@
1/*
2 * include/asm-arm/arch-at91rm9200/at91rm9200_pdc.h
3 *
4 * Copyright (C) 2005 Ivan Kokshaysky
5 * Copyright (C) SAN People
6 *
7 * Peripheral Data Controller (PDC) registers.
8 * Based on AT91RM9200 datasheet revision E.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 */
15
16#ifndef AT91RM9200_PDC_H
17#define AT91RM9200_PDC_H
18
19#define AT91_PDC_RPR 0x100 /* Receive Pointer Register */
20#define AT91_PDC_RCR 0x104 /* Receive Counter Register */
21#define AT91_PDC_TPR 0x108 /* Transmit Pointer Register */
22#define AT91_PDC_TCR 0x10c /* Transmit Counter Register */
23#define AT91_PDC_RNPR 0x110 /* Receive Next Pointer Register */
24#define AT91_PDC_RNCR 0x114 /* Receive Next Counter Register */
25#define AT91_PDC_TNPR 0x118 /* Transmit Next Pointer Register */
26#define AT91_PDC_TNCR 0x11c /* Transmit Next Counter Register */
27
28#define AT91_PDC_PTCR 0x120 /* Transfer Control Register */
29#define AT91_PDC_RXTEN (1 << 0) /* Receiver Transfer Enable */
30#define AT91_PDC_RXTDIS (1 << 1) /* Receiver Transfer Disable */
31#define AT91_PDC_TXTEN (1 << 8) /* Transmitter Transfer Enable */
32#define AT91_PDC_TXTDIS (1 << 9) /* Transmitter Transfer Disable */
33
34#define AT91_PDC_PTSR 0x124 /* Transfer Status Register */
35
36#endif
diff --git a/include/asm-arm/arch-at91rm9200/at91rm9200_usart.h b/include/asm-arm/arch-at91rm9200/at91rm9200_usart.h
new file mode 100644
index 000000000000..79f851e31b9c
--- /dev/null
+++ b/include/asm-arm/arch-at91rm9200/at91rm9200_usart.h
@@ -0,0 +1,123 @@
1/*
2 * include/asm-arm/arch-at91rm9200/at91rm9200_usart.h
3 *
4 * Copyright (C) 2005 Ivan Kokshaysky
5 * Copyright (C) SAN People
6 *
7 * USART registers.
8 * Based on AT91RM9200 datasheet revision E.
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
14 */
15
16#ifndef AT91RM9200_USART_H
17#define AT91RM9200_USART_H
18
19#define AT91_US_CR 0x00 /* Control Register */
20#define AT91_US_RSTRX (1 << 2) /* Reset Receiver */
21#define AT91_US_RSTTX (1 << 3) /* Reset Transmitter */
22#define AT91_US_RXEN (1 << 4) /* Receiver Enable */
23#define AT91_US_RXDIS (1 << 5) /* Receiver Disable */
24#define AT91_US_TXEN (1 << 6) /* Transmitter Enable */
25#define AT91_US_TXDIS (1 << 7) /* Transmitter Disable */
26#define AT91_US_RSTSTA (1 << 8) /* Reset Status Bits */
27#define AT91_US_STTBRK (1 << 9) /* Start Break */
28#define AT91_US_STPBRK (1 << 10) /* Stop Break */
29#define AT91_US_STTTO (1 << 11) /* Start Time-out */
30#define AT91_US_SENDA (1 << 12) /* Send Address */
31#define AT91_US_RSTIT (1 << 13) /* Reset Iterations */
32#define AT91_US_RSTNACK (1 << 14) /* Reset Non Acknowledge */
33#define AT91_US_RETTO (1 << 15) /* Rearm Time-out */
34#define AT91_US_DTREN (1 << 16) /* Data Terminal Ready Enable */
35#define AT91_US_DTRDIS (1 << 17) /* Data Terminal Ready Disable */
36#define AT91_US_RTSEN (1 << 18) /* Request To Send Enable */
37#define AT91_US_RTSDIS (1 << 19) /* Request To Send Disable */
38
39#define AT91_US_MR 0x04 /* Mode Register */
40#define AT91_US_USMODE (0xf << 0) /* Mode of the USART */
41#define AT91_US_USMODE_NORMAL 0
42#define AT91_US_USMODE_RS485 1
43#define AT91_US_USMODE_HWHS 2
44#define AT91_US_USMODE_MODEM 3
45#define AT91_US_USMODE_ISO7816_T0 4
46#define AT91_US_USMODE_ISO7816_T1 6
47#define AT91_US_USMODE_IRDA 8
48#define AT91_US_USCLKS (3 << 4) /* Clock Selection */
49#define AT91_US_CHRL (3 << 6) /* Character Length */
50#define AT91_US_CHRL_5 (0 << 6)
51#define AT91_US_CHRL_6 (1 << 6)
52#define AT91_US_CHRL_7 (2 << 6)
53#define AT91_US_CHRL_8 (3 << 6)
54#define AT91_US_SYNC (1 << 8) /* Synchronous Mode Select */
55#define AT91_US_PAR (7 << 9) /* Parity Type */
56#define AT91_US_PAR_EVEN (0 << 9)
57#define AT91_US_PAR_ODD (1 << 9)
58#define AT91_US_PAR_SPACE (2 << 9)
59#define AT91_US_PAR_MARK (3 << 9)
60#define AT91_US_PAR_NONE (4 << 9)
61#define AT91_US_PAR_MULTI_DROP (6 << 9)
62#define AT91_US_NBSTOP (3 << 12) /* Number of Stop Bits */
63#define AT91_US_NBSTOP_1 (0 << 12)
64#define AT91_US_NBSTOP_1_5 (1 << 12)
65#define AT91_US_NBSTOP_2 (2 << 12)
66#define AT91_US_CHMODE (3 << 14) /* Channel Mode */
67#define AT91_US_CHMODE_NORMAL (0 << 14)
68#define AT91_US_CHMODE_ECHO (1 << 14)
69#define AT91_US_CHMODE_LOC_LOOP (2 << 14)
70#define AT91_US_CHMODE_REM_LOOP (3 << 14)
71#define AT91_US_MSBF (1 << 16) /* Bit Order */
72#define AT91_US_MODE9 (1 << 17) /* 9-bit Character Length */
73#define AT91_US_CLKO (1 << 18) /* Clock Output Select */
74#define AT91_US_OVER (1 << 19) /* Oversampling Mode */
75#define AT91_US_INACK (1 << 20) /* Inhibit Non Acknowledge */
76#define AT91_US_DSNACK (1 << 21) /* Disable Successive NACK */
77#define AT91_US_MAX_ITER (7 << 24) /* Max Iterations */
78#define AT91_US_FILTER (1 << 28) /* Infrared Receive Line Filter */
79
80#define AT91_US_IER 0x08 /* Interrupt Enable Register */
81#define AT91_US_RXRDY (1 << 0) /* Receiver Ready */
82#define AT91_US_TXRDY (1 << 1) /* Transmitter Ready */
83#define AT91_US_RXBRK (1 << 2) /* Break Received / End of Break */
84#define AT91_US_ENDRX (1 << 3) /* End of Receiver Transfer */
85#define AT91_US_ENDTX (1 << 4) /* End of Transmitter Transfer */
86#define AT91_US_OVRE (1 << 5) /* Overrun Error */
87#define AT91_US_FRAME (1 << 6) /* Framing Error */
88#define AT91_US_PARE (1 << 7) /* Parity Error */
89#define AT91_US_TIMEOUT (1 << 8) /* Receiver Time-out */
90#define AT91_US_TXEMPTY (1 << 9) /* Transmitter Empty */
91#define AT91_US_ITERATION (1 << 10) /* Max number of Repetitions Reached */
92#define AT91_US_TXBUFE (1 << 11) /* Transmission Buffer Empty */
93#define AT91_US_RXBUFF (1 << 12) /* Reception Buffer Full */
94#define AT91_US_NACK (1 << 13) /* Non Acknowledge */
95#define AT91_US_RIIC (1 << 16) /* Ring Indicator Input Change */
96#define AT91_US_DSRIC (1 << 17) /* Data Set Ready Input Change */
97#define AT91_US_DCDIC (1 << 18) /* Data Carrier Detect Input Change */
98#define AT91_US_CTSIC (1 << 19) /* Clear to Send Input Change */
99#define AT91_US_RI (1 << 20) /* RI */
100#define AT91_US_DSR (1 << 21) /* DSR */
101#define AT91_US_DCD (1 << 22) /* DCD */
102#define AT91_US_CTS (1 << 23) /* CTS */
103
104#define AT91_US_IDR 0x0c /* Interrupt Disable Register */
105#define AT91_US_IMR 0x10 /* Interrupt Mask Register */
106#define AT91_US_CSR 0x14 /* Channel Status Register */
107#define AT91_US_RHR 0x18 /* Receiver Holding Register */
108#define AT91_US_THR 0x1c /* Transmitter Holding Register */
109
110#define AT91_US_BRGR 0x20 /* Baud Rate Generator Register */
111#define AT91_US_CD (0xffff << 0) /* Clock Divider */
112
113#define AT91_US_RTOR 0x24 /* Receiver Time-out Register */
114#define AT91_US_TO (0xffff << 0) /* Time-out Value */
115
116#define AT91_US_TTGR 0x28 /* Transmitter Timeguard Register */
117#define AT91_US_TG (0xff << 0) /* Timeguard Value */
118
119#define AT91_US_FIDI 0x40 /* FI DI Ratio Register */
120#define AT91_US_NER 0x44 /* Number of Errors Register */
121#define AT91_US_IF 0x4c /* IrDA Filter Register */
122
123#endif
diff --git a/include/asm-arm/byteorder.h b/include/asm-arm/byteorder.h
index 741f5bc5d016..17eaf8bdf092 100644
--- a/include/asm-arm/byteorder.h
+++ b/include/asm-arm/byteorder.h
@@ -22,7 +22,16 @@ static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
22{ 22{
23 __u32 t; 23 __u32 t;
24 24
25 t = x ^ ((x << 16) | (x >> 16)); /* eor r1,r0,r0,ror #16 */ 25 if (__builtin_constant_p(x)) {
26 t = x ^ ((x << 16) | (x >> 16)); /* eor r1,r0,r0,ror #16 */
27 } else {
28 /*
29 * The compiler needs a bit of a hint here to always do the
30 * right thing and not screw it up to different degrees
31 * depending on the gcc version.
32 */
33 asm ("eor\t%0, %1, %1, ror #16" : "=r" (t) : "r" (x));
34 }
26 x = (x << 24) | (x >> 8); /* mov r0,r0,ror #8 */ 35 x = (x << 24) | (x >> 8); /* mov r0,r0,ror #8 */
27 t &= ~0x00FF0000; /* bic r1,r1,#0x00FF0000 */ 36 t &= ~0x00FF0000; /* bic r1,r1,#0x00FF0000 */
28 x ^= (t >> 8); /* eor r0,r0,r1,lsr #8 */ 37 x ^= (t >> 8); /* eor r0,r0,r1,lsr #8 */
diff --git a/include/asm-arm/mach/serial_at91rm9200.h b/include/asm-arm/mach/serial_at91rm9200.h
new file mode 100644
index 000000000000..98f4b0cb883c
--- /dev/null
+++ b/include/asm-arm/mach/serial_at91rm9200.h
@@ -0,0 +1,36 @@
1/*
2 * linux/include/asm-arm/mach/serial_at91rm9200.h
3 *
4 * Based on serial_sa1100.h by Nicolas Pitre
5 *
6 * Copyright (C) 2002 ATMEL Rousset
7 *
8 * Low level machine dependent UART functions.
9 */
10#include <linux/config.h>
11
12struct uart_port;
13
14/*
15 * This is a temporary structure for registering these
16 * functions; it is intended to be discarded after boot.
17 */
18struct at91rm9200_port_fns {
19 void (*set_mctrl)(struct uart_port *, u_int);
20 u_int (*get_mctrl)(struct uart_port *);
21 void (*enable_ms)(struct uart_port *);
22 void (*pm)(struct uart_port *, u_int, u_int);
23 int (*set_wake)(struct uart_port *, u_int);
24 int (*open)(struct uart_port *);
25 void (*close)(struct uart_port *);
26};
27
28#if defined(CONFIG_SERIAL_AT91)
29void at91_register_uart_fns(struct at91rm9200_port_fns *fns);
30void at91_register_uart(int idx, int port);
31#else
32#define at91_register_uart_fns(fns) do { } while (0)
33#define at91_register_uart(idx,port) do { } while (0)
34#endif
35
36
diff --git a/include/asm-arm/memory.h b/include/asm-arm/memory.h
index 3d7f08bd9030..b4e1146ab682 100644
--- a/include/asm-arm/memory.h
+++ b/include/asm-arm/memory.h
@@ -25,6 +25,7 @@
25#include <linux/config.h> 25#include <linux/config.h>
26#include <linux/compiler.h> 26#include <linux/compiler.h>
27#include <asm/arch/memory.h> 27#include <asm/arch/memory.h>
28#include <asm/sizes.h>
28 29
29#ifndef TASK_SIZE 30#ifndef TASK_SIZE
30/* 31/*
@@ -48,6 +49,14 @@
48#endif 49#endif
49 50
50/* 51/*
52 * Size of DMA-consistent memory region. Must be multiple of 2M,
53 * between 2MB and 14MB inclusive.
54 */
55#ifndef CONSISTENT_DMA_SIZE
56#define CONSISTENT_DMA_SIZE SZ_2M
57#endif
58
59/*
51 * Physical vs virtual RAM address space conversion. These are 60 * Physical vs virtual RAM address space conversion. These are
52 * private definitions which should NOT be used outside memory.h 61 * private definitions which should NOT be used outside memory.h
53 * files. Use virt_to_phys/phys_to_virt/__pa/__va instead. 62 * files. Use virt_to_phys/phys_to_virt/__pa/__va instead.
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index e3710d7e260a..a8187c3c8a7b 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -67,6 +67,9 @@
67/* Parisc type numbers. */ 67/* Parisc type numbers. */
68#define PORT_MUX 48 68#define PORT_MUX 48
69 69
70/* Atmel AT91RM9200 SoC */
71#define PORT_AT91RM9200 49
72
70/* Macintosh Zilog type numbers */ 73/* Macintosh Zilog type numbers */
71#define PORT_MAC_ZILOG 50 /* m68k : not yet implemented */ 74#define PORT_MAC_ZILOG 50 /* m68k : not yet implemented */
72#define PORT_PMAC_ZILOG 51 75#define PORT_PMAC_ZILOG 51