diff options
Diffstat (limited to 'arch/arm')
189 files changed, 8570 insertions, 3128 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 4b15f5f1e2..50b9afa8ae 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -46,10 +46,6 @@ config MCA | |||
46 | <file:Documentation/mca.txt> (and especially the web page given | 46 | <file:Documentation/mca.txt> (and especially the web page given |
47 | there) before attempting to build an MCA bus kernel. | 47 | there) before attempting to build an MCA bus kernel. |
48 | 48 | ||
49 | config UID16 | ||
50 | bool | ||
51 | default y | ||
52 | |||
53 | config RWSEM_GENERIC_SPINLOCK | 49 | config RWSEM_GENERIC_SPINLOCK |
54 | bool | 50 | bool |
55 | default y | 51 | default y |
@@ -103,13 +99,6 @@ config ARCH_EBSA110 | |||
103 | Ethernet interface, two PCMCIA sockets, two serial ports and a | 99 | Ethernet interface, two PCMCIA sockets, two serial ports and a |
104 | parallel port. | 100 | parallel port. |
105 | 101 | ||
106 | config ARCH_CAMELOT | ||
107 | bool "Epxa10db" | ||
108 | help | ||
109 | This enables support for Altera's Excalibur XA10 development board. | ||
110 | If you would like to build your kernel to run on one of these boards | ||
111 | then you must say 'Y' here. Otherwise say 'N' | ||
112 | |||
113 | config ARCH_FOOTBRIDGE | 102 | config ARCH_FOOTBRIDGE |
114 | bool "FootBridge" | 103 | bool "FootBridge" |
115 | select FOOTBRIDGE | 104 | select FOOTBRIDGE |
@@ -154,6 +143,7 @@ config ARCH_RPC | |||
154 | select FIQ | 143 | select FIQ |
155 | select TIMER_ACORN | 144 | select TIMER_ACORN |
156 | select ARCH_MAY_HAVE_PC_FDC | 145 | select ARCH_MAY_HAVE_PC_FDC |
146 | select ISA_DMA_API | ||
157 | help | 147 | help |
158 | On the Acorn Risc-PC, Linux can support the internal IDE disk and | 148 | On the Acorn Risc-PC, Linux can support the internal IDE disk and |
159 | CD-ROM interface, serial and parallel port, and the floppy drive. | 149 | CD-ROM interface, serial and parallel port, and the floppy drive. |
@@ -206,6 +196,7 @@ config ARCH_IMX | |||
206 | 196 | ||
207 | config ARCH_H720X | 197 | config ARCH_H720X |
208 | bool "Hynix-HMS720x-based" | 198 | bool "Hynix-HMS720x-based" |
199 | select ISA_DMA_API | ||
209 | help | 200 | help |
210 | This enables support for systems based on the Hynix HMS720x | 201 | This enables support for systems based on the Hynix HMS720x |
211 | 202 | ||
@@ -215,12 +206,16 @@ config ARCH_AAEC2000 | |||
215 | help | 206 | help |
216 | This enables support for systems based on the Agilent AAEC-2000 | 207 | This enables support for systems based on the Agilent AAEC-2000 |
217 | 208 | ||
209 | config ARCH_AT91RM9200 | ||
210 | bool "AT91RM9200" | ||
211 | help | ||
212 | Say Y here if you intend to run this kernel on an AT91RM9200-based | ||
213 | board. | ||
214 | |||
218 | endchoice | 215 | endchoice |
219 | 216 | ||
220 | source "arch/arm/mach-clps711x/Kconfig" | 217 | source "arch/arm/mach-clps711x/Kconfig" |
221 | 218 | ||
222 | source "arch/arm/mach-epxa10db/Kconfig" | ||
223 | |||
224 | source "arch/arm/mach-footbridge/Kconfig" | 219 | source "arch/arm/mach-footbridge/Kconfig" |
225 | 220 | ||
226 | source "arch/arm/mach-integrator/Kconfig" | 221 | source "arch/arm/mach-integrator/Kconfig" |
@@ -255,6 +250,8 @@ source "arch/arm/mach-aaec2000/Kconfig" | |||
255 | 250 | ||
256 | source "arch/arm/mach-realview/Kconfig" | 251 | source "arch/arm/mach-realview/Kconfig" |
257 | 252 | ||
253 | source "arch/arm/mach-at91rm9200/Kconfig" | ||
254 | |||
258 | # Definitions to make life easier | 255 | # Definitions to make life easier |
259 | config ARCH_ACORN | 256 | config ARCH_ACORN |
260 | bool | 257 | bool |
@@ -290,12 +287,14 @@ config ISA | |||
290 | (MCA) or VESA. ISA is an older system, now being displaced by PCI; | 287 | (MCA) or VESA. ISA is an older system, now being displaced by PCI; |
291 | newer boards don't support it. If you have ISA, say Y, otherwise N. | 288 | newer boards don't support it. If you have ISA, say Y, otherwise N. |
292 | 289 | ||
290 | # Select ISA DMA controller support | ||
293 | config ISA_DMA | 291 | config ISA_DMA |
294 | bool | 292 | bool |
293 | select ISA_DMA_API | ||
295 | 294 | ||
295 | # Select ISA DMA interface | ||
296 | config ISA_DMA_API | 296 | config ISA_DMA_API |
297 | bool | 297 | bool |
298 | default y | ||
299 | 298 | ||
300 | config PCI | 299 | config PCI |
301 | bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB | 300 | bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB |
@@ -418,7 +417,8 @@ config LEDS | |||
418 | ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \ | 417 | ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \ |
419 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ | 418 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ |
420 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ | 419 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ |
421 | ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE | 420 | ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \ |
421 | ARCH_AT91RM9200 | ||
422 | help | 422 | help |
423 | If you say Y here, the LEDs on your machine will be used | 423 | If you say Y here, the LEDs on your machine will be used |
424 | to provide useful information about your current system status. | 424 | to provide useful information about your current system status. |
@@ -656,7 +656,6 @@ source "kernel/power/Kconfig" | |||
656 | 656 | ||
657 | config APM | 657 | config APM |
658 | tristate "Advanced Power Management Emulation" | 658 | tristate "Advanced Power Management Emulation" |
659 | depends on PM_LEGACY | ||
660 | ---help--- | 659 | ---help--- |
661 | APM is a BIOS specification for saving power using several different | 660 | APM is a BIOS specification for saving power using several different |
662 | techniques. This is mostly useful for battery powered laptops with | 661 | techniques. This is mostly useful for battery powered laptops with |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 81bd2193fe..1fa2a10115 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -8,7 +8,7 @@ | |||
8 | # Copyright (C) 1995-2001 by Russell King | 8 | # Copyright (C) 1995-2001 by Russell King |
9 | 9 | ||
10 | LDFLAGS_vmlinux :=-p --no-undefined -X | 10 | LDFLAGS_vmlinux :=-p --no-undefined -X |
11 | CPPFLAGS_vmlinux.lds = -DKERNEL_RAM_ADDR=$(TEXTADDR) | 11 | CPPFLAGS_vmlinux.lds = -DTEXT_OFFSET=$(TEXT_OFFSET) |
12 | OBJCOPYFLAGS :=-O binary -R .note -R .comment -S | 12 | OBJCOPYFLAGS :=-O binary -R .note -R .comment -S |
13 | GZFLAGS :=-9 | 13 | GZFLAGS :=-9 |
14 | #CFLAGS +=-pipe | 14 | #CFLAGS +=-pipe |
@@ -65,7 +65,7 @@ CHECKFLAGS += -D__arm__ | |||
65 | 65 | ||
66 | #Default value | 66 | #Default value |
67 | head-y := arch/arm/kernel/head.o arch/arm/kernel/init_task.o | 67 | head-y := arch/arm/kernel/head.o arch/arm/kernel/init_task.o |
68 | textaddr-y := 0xC0008000 | 68 | textofs-y := 0x00008000 |
69 | 69 | ||
70 | machine-$(CONFIG_ARCH_RPC) := rpc | 70 | machine-$(CONFIG_ARCH_RPC) := rpc |
71 | machine-$(CONFIG_ARCH_EBSA110) := ebsa110 | 71 | machine-$(CONFIG_ARCH_EBSA110) := ebsa110 |
@@ -73,22 +73,19 @@ textaddr-y := 0xC0008000 | |||
73 | incdir-$(CONFIG_ARCH_CLPS7500) := cl7500 | 73 | incdir-$(CONFIG_ARCH_CLPS7500) := cl7500 |
74 | machine-$(CONFIG_FOOTBRIDGE) := footbridge | 74 | machine-$(CONFIG_FOOTBRIDGE) := footbridge |
75 | incdir-$(CONFIG_FOOTBRIDGE) := ebsa285 | 75 | incdir-$(CONFIG_FOOTBRIDGE) := ebsa285 |
76 | textaddr-$(CONFIG_ARCH_CO285) := 0x60008000 | ||
77 | machine-$(CONFIG_ARCH_CO285) := footbridge | 76 | machine-$(CONFIG_ARCH_CO285) := footbridge |
78 | incdir-$(CONFIG_ARCH_CO285) := ebsa285 | 77 | incdir-$(CONFIG_ARCH_CO285) := ebsa285 |
79 | machine-$(CONFIG_ARCH_SHARK) := shark | 78 | machine-$(CONFIG_ARCH_SHARK) := shark |
80 | machine-$(CONFIG_ARCH_SA1100) := sa1100 | 79 | machine-$(CONFIG_ARCH_SA1100) := sa1100 |
81 | ifeq ($(CONFIG_ARCH_SA1100),y) | 80 | ifeq ($(CONFIG_ARCH_SA1100),y) |
82 | # SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory | 81 | # SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory |
83 | textaddr-$(CONFIG_SA1111) := 0xc0208000 | 82 | textofs-$(CONFIG_SA1111) := 0x00208000 |
84 | endif | 83 | endif |
85 | machine-$(CONFIG_ARCH_PXA) := pxa | 84 | machine-$(CONFIG_ARCH_PXA) := pxa |
86 | machine-$(CONFIG_ARCH_L7200) := l7200 | 85 | machine-$(CONFIG_ARCH_L7200) := l7200 |
87 | machine-$(CONFIG_ARCH_INTEGRATOR) := integrator | 86 | machine-$(CONFIG_ARCH_INTEGRATOR) := integrator |
88 | machine-$(CONFIG_ARCH_CAMELOT) := epxa10db | 87 | textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000 |
89 | textaddr-$(CONFIG_ARCH_CLPS711X) := 0xc0028000 | ||
90 | machine-$(CONFIG_ARCH_CLPS711X) := clps711x | 88 | machine-$(CONFIG_ARCH_CLPS711X) := clps711x |
91 | textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000 | ||
92 | machine-$(CONFIG_ARCH_IOP3XX) := iop3xx | 89 | machine-$(CONFIG_ARCH_IOP3XX) := iop3xx |
93 | machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx | 90 | machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx |
94 | machine-$(CONFIG_ARCH_IXP2000) := ixp2000 | 91 | machine-$(CONFIG_ARCH_IXP2000) := ixp2000 |
@@ -102,6 +99,7 @@ textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000 | |||
102 | machine-$(CONFIG_ARCH_H720X) := h720x | 99 | machine-$(CONFIG_ARCH_H720X) := h720x |
103 | machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 | 100 | machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 |
104 | machine-$(CONFIG_ARCH_REALVIEW) := realview | 101 | machine-$(CONFIG_ARCH_REALVIEW) := realview |
102 | machine-$(CONFIG_ARCH_AT91RM9200) := at91rm9200 | ||
105 | 103 | ||
106 | ifeq ($(CONFIG_ARCH_EBSA110),y) | 104 | ifeq ($(CONFIG_ARCH_EBSA110),y) |
107 | # This is what happens if you forget the IOCS16 line. | 105 | # This is what happens if you forget the IOCS16 line. |
@@ -110,7 +108,8 @@ CFLAGS_3c589_cs.o :=-DISA_SIXTEEN_BIT_PERIPHERAL | |||
110 | export CFLAGS_3c589_cs.o | 108 | export CFLAGS_3c589_cs.o |
111 | endif | 109 | endif |
112 | 110 | ||
113 | TEXTADDR := $(textaddr-y) | 111 | # The byte offset of the kernel image in RAM from the start of RAM. |
112 | TEXT_OFFSET := $(textofs-y) | ||
114 | 113 | ||
115 | ifeq ($(incdir-y),) | 114 | ifeq ($(incdir-y),) |
116 | incdir-y := $(machine-y) | 115 | incdir-y := $(machine-y) |
@@ -123,7 +122,7 @@ else | |||
123 | MACHINE := | 122 | MACHINE := |
124 | endif | 123 | endif |
125 | 124 | ||
126 | export TEXTADDR GZFLAGS | 125 | export TEXT_OFFSET GZFLAGS |
127 | 126 | ||
128 | # Do we have FASTFPE? | 127 | # Do we have FASTFPE? |
129 | FASTFPE :=arch/arm/fastfpe | 128 | FASTFPE :=arch/arm/fastfpe |
diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile index 937a353bc3..a174d63395 100644 --- a/arch/arm/boot/Makefile +++ b/arch/arm/boot/Makefile | |||
@@ -15,7 +15,7 @@ include $(srctree)/$(MACHINE)/Makefile.boot | |||
15 | endif | 15 | endif |
16 | 16 | ||
17 | # Note: the following conditions must always be true: | 17 | # Note: the following conditions must always be true: |
18 | # ZRELADDR == virt_to_phys(TEXTADDR) | 18 | # ZRELADDR == virt_to_phys(PAGE_OFFSET + TEXT_OFFSET) |
19 | # PARAMS_PHYS must be within 4MB of ZRELADDR | 19 | # PARAMS_PHYS must be within 4MB of ZRELADDR |
20 | # INITRD_PHYS must be in RAM | 20 | # INITRD_PHYS must be in RAM |
21 | ZRELADDR := $(zreladdr-y) | 21 | ZRELADDR := $(zreladdr-y) |
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 6b505ce41a..35ffe0f4ec 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile | |||
@@ -21,10 +21,6 @@ ifeq ($(CONFIG_ARCH_SHARK),y) | |||
21 | OBJS += head-shark.o ofw-shark.o | 21 | OBJS += head-shark.o ofw-shark.o |
22 | endif | 22 | endif |
23 | 23 | ||
24 | ifeq ($(CONFIG_ARCH_CAMELOT),y) | ||
25 | OBJS += head-epxa10db.o | ||
26 | endif | ||
27 | |||
28 | ifeq ($(CONFIG_ARCH_L7200),y) | 24 | ifeq ($(CONFIG_ARCH_L7200),y) |
29 | OBJS += head-l7200.o | 25 | OBJS += head-l7200.o |
30 | endif | 26 | endif |
@@ -50,6 +46,10 @@ ifeq ($(CONFIG_PXA_SHARPSL),y) | |||
50 | OBJS += head-sharpsl.o | 46 | OBJS += head-sharpsl.o |
51 | endif | 47 | endif |
52 | 48 | ||
49 | ifeq ($(CONFIG_ARCH_AT91RM9200),y) | ||
50 | OBJS += head-at91rm9200.o | ||
51 | endif | ||
52 | |||
53 | ifeq ($(CONFIG_DEBUG_ICEDCC),y) | 53 | ifeq ($(CONFIG_DEBUG_ICEDCC),y) |
54 | OBJS += ice-dcc.o | 54 | OBJS += ice-dcc.o |
55 | endif | 55 | endif |
diff --git a/arch/arm/boot/compressed/head-at91rm9200.S b/arch/arm/boot/compressed/head-at91rm9200.S new file mode 100644 index 0000000000..2119ea62b5 --- /dev/null +++ b/arch/arm/boot/compressed/head-at91rm9200.S | |||
@@ -0,0 +1,57 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/boot/compressed/head-at91rm9200.S | ||
3 | * | ||
4 | * Copyright (C) 2003 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 | */ | ||
12 | #include <asm/mach-types.h> | ||
13 | |||
14 | .section ".start", "ax" | ||
15 | |||
16 | @ Atmel AT91RM9200-DK : 262 | ||
17 | mov r3, #(MACH_TYPE_AT91RM9200DK & 0xff) | ||
18 | orr r3, r3, #(MACH_TYPE_AT91RM9200DK & 0xff00) | ||
19 | cmp r7, r3 | ||
20 | beq 99f | ||
21 | |||
22 | @ Cogent CSB337 : 399 | ||
23 | mov r3, #(MACH_TYPE_CSB337 & 0xff) | ||
24 | orr r3, r3, #(MACH_TYPE_CSB337 & 0xff00) | ||
25 | cmp r7, r3 | ||
26 | beq 99f | ||
27 | |||
28 | @ Cogent CSB637 : 648 | ||
29 | mov r3, #(MACH_TYPE_CSB637 & 0xff) | ||
30 | orr r3, r3, #(MACH_TYPE_CSB637 & 0xff00) | ||
31 | cmp r7, r3 | ||
32 | beq 99f | ||
33 | |||
34 | @ Atmel AT91RM9200-EK : 705 | ||
35 | mov r3, #(MACH_TYPE_AT91RM9200EK & 0xff) | ||
36 | orr r3, r3, #(MACH_TYPE_AT91RM9200EK & 0xff00) | ||
37 | cmp r7, r3 | ||
38 | beq 99f | ||
39 | |||
40 | @ Conitec Carmeva : 769 | ||
41 | mov r3, #(MACH_TYPE_CARMEVA & 0xff) | ||
42 | orr r3, r3, #(MACH_TYPE_CARMEVA & 0xff00) | ||
43 | cmp r7, r3 | ||
44 | beq 99f | ||
45 | |||
46 | @ KwikByte KB920x : 612 | ||
47 | mov r3, #(MACH_TYPE_KB9200 & 0xff) | ||
48 | orr r3, r3, #(MACH_TYPE_KB9200 & 0xff00) | ||
49 | cmp r7, r3 | ||
50 | beq 99f | ||
51 | |||
52 | @ Unknown board, use the AT91RM9200DK board | ||
53 | @ mov r7, #MACH_TYPE_AT91RM9200 | ||
54 | mov r7, #(MACH_TYPE_AT91RM9200DK & 0xff) | ||
55 | orr r7, r7, #(MACH_TYPE_AT91RM9200DK & 0xff00) | ||
56 | |||
57 | 99: | ||
diff --git a/arch/arm/boot/compressed/head-epxa10db.S b/arch/arm/boot/compressed/head-epxa10db.S deleted file mode 100644 index 757681f12a..0000000000 --- a/arch/arm/boot/compressed/head-epxa10db.S +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | #include <asm/mach-types.h> | ||
2 | #include <asm/arch/excalibur.h> | ||
3 | |||
4 | .section ".start", "ax" | ||
5 | mov r7, #MACH_TYPE_CAMELOT | ||
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 6abafb6f18..aaa47400eb 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 |
118 | 1: mov r7, r1 @ save architecture ID | 118 | 1: 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 |
258 | 1: ldmia r2!, {r8 - r13} @ copy relocation code | 259 | 1: 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 |
318 | cache_on: mov r3, #8 @ cache_on function | 320 | cache_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 |
335 | 1: cmp r1, r8 @ if virt > start of RAM | 337 | 1: 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 |
409 | reloc_start: add r8, r5, r0 | 412 | reloc_start: add r9, r5, r0 |
410 | debug_reloc_start | 413 | debug_reloc_start |
411 | mov r1, r4 | 414 | mov r1, r4 |
412 | 1: | 415 | 1: |
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 | ||
422 | call_kernel: bl cache_clean_flush | 425 | call_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/Kconfig b/arch/arm/common/Kconfig index 666ba39357..d7509c7a3c 100644 --- a/arch/arm/common/Kconfig +++ b/arch/arm/common/Kconfig | |||
@@ -23,5 +23,8 @@ config SHARP_LOCOMO | |||
23 | config SHARP_PARAM | 23 | config SHARP_PARAM |
24 | bool | 24 | bool |
25 | 25 | ||
26 | config SHARPSL_PM | ||
27 | bool | ||
28 | |||
26 | config SHARP_SCOOP | 29 | config SHARP_SCOOP |
27 | bool | 30 | bool |
diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile index a87886564b..ec8d17c969 100644 --- a/arch/arm/common/Makefile +++ b/arch/arm/common/Makefile | |||
@@ -3,7 +3,6 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y += rtctime.o | 5 | obj-y += rtctime.o |
6 | obj-$(CONFIG_ARM_AMBA) += amba.o | ||
7 | obj-$(CONFIG_ARM_GIC) += gic.o | 6 | obj-$(CONFIG_ARM_GIC) += gic.o |
8 | obj-$(CONFIG_ICST525) += icst525.o | 7 | obj-$(CONFIG_ICST525) += icst525.o |
9 | obj-$(CONFIG_ICST307) += icst307.o | 8 | obj-$(CONFIG_ICST307) += icst307.o |
@@ -13,4 +12,5 @@ obj-$(CONFIG_DMABOUNCE) += dmabounce.o | |||
13 | obj-$(CONFIG_TIMER_ACORN) += time-acorn.o | 12 | obj-$(CONFIG_TIMER_ACORN) += time-acorn.o |
14 | obj-$(CONFIG_SHARP_LOCOMO) += locomo.o | 13 | obj-$(CONFIG_SHARP_LOCOMO) += locomo.o |
15 | obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o | 14 | obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o |
15 | obj-$(CONFIG_SHARPSL_PM) += sharpsl_pm.o | ||
16 | obj-$(CONFIG_SHARP_SCOOP) += scoop.o | 16 | obj-$(CONFIG_SHARP_SCOOP) += scoop.o |
diff --git a/arch/arm/common/amba.c b/arch/arm/common/amba.c deleted file mode 100644 index e1013112c3..0000000000 --- a/arch/arm/common/amba.c +++ /dev/null | |||
@@ -1,359 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/common/amba.c | ||
3 | * | ||
4 | * Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved. | ||
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 version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #include <linux/module.h> | ||
11 | #include <linux/init.h> | ||
12 | #include <linux/device.h> | ||
13 | #include <linux/string.h> | ||
14 | #include <linux/slab.h> | ||
15 | |||
16 | #include <asm/io.h> | ||
17 | #include <asm/irq.h> | ||
18 | #include <asm/hardware/amba.h> | ||
19 | #include <asm/sizes.h> | ||
20 | |||
21 | #define to_amba_device(d) container_of(d, struct amba_device, dev) | ||
22 | #define to_amba_driver(d) container_of(d, struct amba_driver, drv) | ||
23 | |||
24 | static struct amba_id * | ||
25 | amba_lookup(struct amba_id *table, struct amba_device *dev) | ||
26 | { | ||
27 | int ret = 0; | ||
28 | |||
29 | while (table->mask) { | ||
30 | ret = (dev->periphid & table->mask) == table->id; | ||
31 | if (ret) | ||
32 | break; | ||
33 | table++; | ||
34 | } | ||
35 | |||
36 | return ret ? table : NULL; | ||
37 | } | ||
38 | |||
39 | static int amba_match(struct device *dev, struct device_driver *drv) | ||
40 | { | ||
41 | struct amba_device *pcdev = to_amba_device(dev); | ||
42 | struct amba_driver *pcdrv = to_amba_driver(drv); | ||
43 | |||
44 | return amba_lookup(pcdrv->id_table, pcdev) != NULL; | ||
45 | } | ||
46 | |||
47 | #ifdef CONFIG_HOTPLUG | ||
48 | static int amba_hotplug(struct device *dev, char **envp, int nr_env, char *buf, int bufsz) | ||
49 | { | ||
50 | struct amba_device *pcdev = to_amba_device(dev); | ||
51 | |||
52 | if (nr_env < 2) | ||
53 | return -ENOMEM; | ||
54 | |||
55 | snprintf(buf, bufsz, "AMBA_ID=%08x", pcdev->periphid); | ||
56 | *envp++ = buf; | ||
57 | *envp++ = NULL; | ||
58 | return 0; | ||
59 | } | ||
60 | #else | ||
61 | #define amba_hotplug NULL | ||
62 | #endif | ||
63 | |||
64 | static int amba_suspend(struct device *dev, pm_message_t state) | ||
65 | { | ||
66 | struct amba_driver *drv = to_amba_driver(dev->driver); | ||
67 | int ret = 0; | ||
68 | |||
69 | if (dev->driver && drv->suspend) | ||
70 | ret = drv->suspend(to_amba_device(dev), state); | ||
71 | return ret; | ||
72 | } | ||
73 | |||
74 | static int amba_resume(struct device *dev) | ||
75 | { | ||
76 | struct amba_driver *drv = to_amba_driver(dev->driver); | ||
77 | int ret = 0; | ||
78 | |||
79 | if (dev->driver && drv->resume) | ||
80 | ret = drv->resume(to_amba_device(dev)); | ||
81 | return ret; | ||
82 | } | ||
83 | |||
84 | /* | ||
85 | * Primecells are part of the Advanced Microcontroller Bus Architecture, | ||
86 | * so we call the bus "amba". | ||
87 | */ | ||
88 | static struct bus_type amba_bustype = { | ||
89 | .name = "amba", | ||
90 | .match = amba_match, | ||
91 | .hotplug = amba_hotplug, | ||
92 | .suspend = amba_suspend, | ||
93 | .resume = amba_resume, | ||
94 | }; | ||
95 | |||
96 | static int __init amba_init(void) | ||
97 | { | ||
98 | return bus_register(&amba_bustype); | ||
99 | } | ||
100 | |||
101 | postcore_initcall(amba_init); | ||
102 | |||
103 | /* | ||
104 | * These are the device model conversion veneers; they convert the | ||
105 | * device model structures to our more specific structures. | ||
106 | */ | ||
107 | static int amba_probe(struct device *dev) | ||
108 | { | ||
109 | struct amba_device *pcdev = to_amba_device(dev); | ||
110 | struct amba_driver *pcdrv = to_amba_driver(dev->driver); | ||
111 | struct amba_id *id; | ||
112 | |||
113 | id = amba_lookup(pcdrv->id_table, pcdev); | ||
114 | |||
115 | return pcdrv->probe(pcdev, id); | ||
116 | } | ||
117 | |||
118 | static int amba_remove(struct device *dev) | ||
119 | { | ||
120 | struct amba_driver *drv = to_amba_driver(dev->driver); | ||
121 | return drv->remove(to_amba_device(dev)); | ||
122 | } | ||
123 | |||
124 | static void amba_shutdown(struct device *dev) | ||
125 | { | ||
126 | struct amba_driver *drv = to_amba_driver(dev->driver); | ||
127 | drv->shutdown(to_amba_device(dev)); | ||
128 | } | ||
129 | |||
130 | /** | ||
131 | * amba_driver_register - register an AMBA device driver | ||
132 | * @drv: amba device driver structure | ||
133 | * | ||
134 | * Register an AMBA device driver with the Linux device model | ||
135 | * core. If devices pre-exist, the drivers probe function will | ||
136 | * be called. | ||
137 | */ | ||
138 | int amba_driver_register(struct amba_driver *drv) | ||
139 | { | ||
140 | drv->drv.bus = &amba_bustype; | ||
141 | |||
142 | #define SETFN(fn) if (drv->fn) drv->drv.fn = amba_##fn | ||
143 | SETFN(probe); | ||
144 | SETFN(remove); | ||
145 | SETFN(shutdown); | ||
146 | |||
147 | return driver_register(&drv->drv); | ||
148 | } | ||
149 | |||
150 | /** | ||
151 | * amba_driver_unregister - remove an AMBA device driver | ||
152 | * @drv: AMBA device driver structure to remove | ||
153 | * | ||
154 | * Unregister an AMBA device driver from the Linux device | ||
155 | * model. The device model will call the drivers remove function | ||
156 | * for each device the device driver is currently handling. | ||
157 | */ | ||
158 | void amba_driver_unregister(struct amba_driver *drv) | ||
159 | { | ||
160 | driver_unregister(&drv->drv); | ||
161 | } | ||
162 | |||
163 | |||
164 | static void amba_device_release(struct device *dev) | ||
165 | { | ||
166 | struct amba_device *d = to_amba_device(dev); | ||
167 | |||
168 | if (d->res.parent) | ||
169 | release_resource(&d->res); | ||
170 | kfree(d); | ||
171 | } | ||
172 | |||
173 | #define amba_attr(name,fmt,arg...) \ | ||
174 | static ssize_t show_##name(struct device *_dev, struct device_attribute *attr, char *buf) \ | ||
175 | { \ | ||
176 | struct amba_device *dev = to_amba_device(_dev); \ | ||
177 | return sprintf(buf, fmt, arg); \ | ||
178 | } \ | ||
179 | static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL) | ||
180 | |||
181 | amba_attr(id, "%08x\n", dev->periphid); | ||
182 | amba_attr(irq0, "%u\n", dev->irq[0]); | ||
183 | amba_attr(irq1, "%u\n", dev->irq[1]); | ||
184 | amba_attr(resource, "\t%08lx\t%08lx\t%08lx\n", | ||
185 | dev->res.start, dev->res.end, dev->res.flags); | ||
186 | |||
187 | /** | ||
188 | * amba_device_register - register an AMBA device | ||
189 | * @dev: AMBA device to register | ||
190 | * @parent: parent memory resource | ||
191 | * | ||
192 | * Setup the AMBA device, reading the cell ID if present. | ||
193 | * Claim the resource, and register the AMBA device with | ||
194 | * the Linux device manager. | ||
195 | */ | ||
196 | int amba_device_register(struct amba_device *dev, struct resource *parent) | ||
197 | { | ||
198 | u32 pid, cid; | ||
199 | void __iomem *tmp; | ||
200 | int i, ret; | ||
201 | |||
202 | dev->dev.release = amba_device_release; | ||
203 | dev->dev.bus = &amba_bustype; | ||
204 | dev->dev.dma_mask = &dev->dma_mask; | ||
205 | dev->res.name = dev->dev.bus_id; | ||
206 | |||
207 | if (!dev->dev.coherent_dma_mask && dev->dma_mask) | ||
208 | dev_warn(&dev->dev, "coherent dma mask is unset\n"); | ||
209 | |||
210 | ret = request_resource(parent, &dev->res); | ||
211 | if (ret == 0) { | ||
212 | tmp = ioremap(dev->res.start, SZ_4K); | ||
213 | if (!tmp) { | ||
214 | ret = -ENOMEM; | ||
215 | goto out; | ||
216 | } | ||
217 | |||
218 | for (pid = 0, i = 0; i < 4; i++) | ||
219 | pid |= (readl(tmp + 0xfe0 + 4 * i) & 255) << (i * 8); | ||
220 | for (cid = 0, i = 0; i < 4; i++) | ||
221 | cid |= (readl(tmp + 0xff0 + 4 * i) & 255) << (i * 8); | ||
222 | |||
223 | iounmap(tmp); | ||
224 | |||
225 | if (cid == 0xb105f00d) | ||
226 | dev->periphid = pid; | ||
227 | |||
228 | if (dev->periphid) | ||
229 | ret = device_register(&dev->dev); | ||
230 | else | ||
231 | ret = -ENODEV; | ||
232 | |||
233 | if (ret == 0) { | ||
234 | device_create_file(&dev->dev, &dev_attr_id); | ||
235 | if (dev->irq[0] != NO_IRQ) | ||
236 | device_create_file(&dev->dev, &dev_attr_irq0); | ||
237 | if (dev->irq[1] != NO_IRQ) | ||
238 | device_create_file(&dev->dev, &dev_attr_irq1); | ||
239 | device_create_file(&dev->dev, &dev_attr_resource); | ||
240 | } else { | ||
241 | out: | ||
242 | release_resource(&dev->res); | ||
243 | } | ||
244 | } | ||
245 | return ret; | ||
246 | } | ||
247 | |||
248 | /** | ||
249 | * amba_device_unregister - unregister an AMBA device | ||
250 | * @dev: AMBA device to remove | ||
251 | * | ||
252 | * Remove the specified AMBA device from the Linux device | ||
253 | * manager. All files associated with this object will be | ||
254 | * destroyed, and device drivers notified that the device has | ||
255 | * been removed. The AMBA device's resources including | ||
256 | * the amba_device structure will be freed once all | ||
257 | * references to it have been dropped. | ||
258 | */ | ||
259 | void amba_device_unregister(struct amba_device *dev) | ||
260 | { | ||
261 | device_unregister(&dev->dev); | ||
262 | } | ||
263 | |||
264 | |||
265 | struct find_data { | ||
266 | struct amba_device *dev; | ||
267 | struct device *parent; | ||
268 | const char *busid; | ||
269 | unsigned int id; | ||
270 | unsigned int mask; | ||
271 | }; | ||
272 | |||
273 | static int amba_find_match(struct device *dev, void *data) | ||
274 | { | ||
275 | struct find_data *d = data; | ||
276 | struct amba_device *pcdev = to_amba_device(dev); | ||
277 | int r; | ||
278 | |||
279 | r = (pcdev->periphid & d->mask) == d->id; | ||
280 | if (d->parent) | ||
281 | r &= d->parent == dev->parent; | ||
282 | if (d->busid) | ||
283 | r &= strcmp(dev->bus_id, d->busid) == 0; | ||
284 | |||
285 | if (r) { | ||
286 | get_device(dev); | ||
287 | d->dev = pcdev; | ||
288 | } | ||
289 | |||
290 | return r; | ||
291 | } | ||
292 | |||
293 | /** | ||
294 | * amba_find_device - locate an AMBA device given a bus id | ||
295 | * @busid: bus id for device (or NULL) | ||
296 | * @parent: parent device (or NULL) | ||
297 | * @id: peripheral ID (or 0) | ||
298 | * @mask: peripheral ID mask (or 0) | ||
299 | * | ||
300 | * Return the AMBA device corresponding to the supplied parameters. | ||
301 | * If no device matches, returns NULL. | ||
302 | * | ||
303 | * NOTE: When a valid device is found, its refcount is | ||
304 | * incremented, and must be decremented before the returned | ||
305 | * reference. | ||
306 | */ | ||
307 | struct amba_device * | ||
308 | amba_find_device(const char *busid, struct device *parent, unsigned int id, | ||
309 | unsigned int mask) | ||
310 | { | ||
311 | struct find_data data; | ||
312 | |||
313 | data.dev = NULL; | ||
314 | data.parent = parent; | ||
315 | data.busid = busid; | ||
316 | data.id = id; | ||
317 | data.mask = mask; | ||
318 | |||
319 | bus_for_each_dev(&amba_bustype, NULL, &data, amba_find_match); | ||
320 | |||
321 | return data.dev; | ||
322 | } | ||
323 | |||
324 | /** | ||
325 | * amba_request_regions - request all mem regions associated with device | ||
326 | * @dev: amba_device structure for device | ||
327 | * @name: name, or NULL to use driver name | ||
328 | */ | ||
329 | int amba_request_regions(struct amba_device *dev, const char *name) | ||
330 | { | ||
331 | int ret = 0; | ||
332 | |||
333 | if (!name) | ||
334 | name = dev->dev.driver->name; | ||
335 | |||
336 | if (!request_mem_region(dev->res.start, SZ_4K, name)) | ||
337 | ret = -EBUSY; | ||
338 | |||
339 | return ret; | ||
340 | } | ||
341 | |||
342 | /** | ||
343 | * amba_release_regions - release mem regions assoicated with device | ||
344 | * @dev: amba_device structure for device | ||
345 | * | ||
346 | * Release regions claimed by a successful call to amba_request_regions. | ||
347 | */ | ||
348 | void amba_release_regions(struct amba_device *dev) | ||
349 | { | ||
350 | release_mem_region(dev->res.start, SZ_4K); | ||
351 | } | ||
352 | |||
353 | EXPORT_SYMBOL(amba_driver_register); | ||
354 | EXPORT_SYMBOL(amba_driver_unregister); | ||
355 | EXPORT_SYMBOL(amba_device_register); | ||
356 | EXPORT_SYMBOL(amba_device_unregister); | ||
357 | EXPORT_SYMBOL(amba_find_device); | ||
358 | EXPORT_SYMBOL(amba_request_regions); | ||
359 | EXPORT_SYMBOL(amba_release_regions); | ||
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c index 72b03f201e..48b1e19b13 100644 --- a/arch/arm/common/rtctime.c +++ b/arch/arm/common/rtctime.c | |||
@@ -17,7 +17,9 @@ | |||
17 | #include <linux/proc_fs.h> | 17 | #include <linux/proc_fs.h> |
18 | #include <linux/miscdevice.h> | 18 | #include <linux/miscdevice.h> |
19 | #include <linux/spinlock.h> | 19 | #include <linux/spinlock.h> |
20 | #include <linux/capability.h> | ||
20 | #include <linux/device.h> | 21 | #include <linux/device.h> |
22 | #include <linux/mutex.h> | ||
21 | 23 | ||
22 | #include <asm/rtc.h> | 24 | #include <asm/rtc.h> |
23 | #include <asm/semaphore.h> | 25 | #include <asm/semaphore.h> |
@@ -34,7 +36,7 @@ static unsigned long rtc_irq_data; | |||
34 | /* | 36 | /* |
35 | * rtc_sem protects rtc_inuse and rtc_ops | 37 | * rtc_sem protects rtc_inuse and rtc_ops |
36 | */ | 38 | */ |
37 | static DECLARE_MUTEX(rtc_sem); | 39 | static DEFINE_MUTEX(rtc_mutex); |
38 | static unsigned long rtc_inuse; | 40 | static unsigned long rtc_inuse; |
39 | static struct rtc_ops *rtc_ops; | 41 | static struct rtc_ops *rtc_ops; |
40 | 42 | ||
@@ -355,7 +357,7 @@ static int rtc_open(struct inode *inode, struct file *file) | |||
355 | { | 357 | { |
356 | int ret; | 358 | int ret; |
357 | 359 | ||
358 | down(&rtc_sem); | 360 | mutex_lock(&rtc_mutex); |
359 | 361 | ||
360 | if (rtc_inuse) { | 362 | if (rtc_inuse) { |
361 | ret = -EBUSY; | 363 | ret = -EBUSY; |
@@ -373,7 +375,7 @@ static int rtc_open(struct inode *inode, struct file *file) | |||
373 | rtc_inuse = 1; | 375 | rtc_inuse = 1; |
374 | } | 376 | } |
375 | } | 377 | } |
376 | up(&rtc_sem); | 378 | mutex_unlock(&rtc_mutex); |
377 | 379 | ||
378 | return ret; | 380 | return ret; |
379 | } | 381 | } |
@@ -479,7 +481,7 @@ int register_rtc(struct rtc_ops *ops) | |||
479 | { | 481 | { |
480 | int ret = -EBUSY; | 482 | int ret = -EBUSY; |
481 | 483 | ||
482 | down(&rtc_sem); | 484 | mutex_lock(&rtc_mutex); |
483 | if (rtc_ops == NULL) { | 485 | if (rtc_ops == NULL) { |
484 | rtc_ops = ops; | 486 | rtc_ops = ops; |
485 | 487 | ||
@@ -488,7 +490,7 @@ int register_rtc(struct rtc_ops *ops) | |||
488 | create_proc_read_entry("driver/rtc", 0, NULL, | 490 | create_proc_read_entry("driver/rtc", 0, NULL, |
489 | rtc_read_proc, ops); | 491 | rtc_read_proc, ops); |
490 | } | 492 | } |
491 | up(&rtc_sem); | 493 | mutex_unlock(&rtc_mutex); |
492 | 494 | ||
493 | return ret; | 495 | return ret; |
494 | } | 496 | } |
@@ -496,12 +498,12 @@ EXPORT_SYMBOL(register_rtc); | |||
496 | 498 | ||
497 | void unregister_rtc(struct rtc_ops *rtc) | 499 | void unregister_rtc(struct rtc_ops *rtc) |
498 | { | 500 | { |
499 | down(&rtc_sem); | 501 | mutex_lock(&rtc_mutex); |
500 | if (rtc == rtc_ops) { | 502 | if (rtc == rtc_ops) { |
501 | remove_proc_entry("driver/rtc", NULL); | 503 | remove_proc_entry("driver/rtc", NULL); |
502 | misc_deregister(&rtc_miscdev); | 504 | misc_deregister(&rtc_miscdev); |
503 | rtc_ops = NULL; | 505 | rtc_ops = NULL; |
504 | } | 506 | } |
505 | up(&rtc_sem); | 507 | mutex_unlock(&rtc_mutex); |
506 | } | 508 | } |
507 | EXPORT_SYMBOL(unregister_rtc); | 509 | EXPORT_SYMBOL(unregister_rtc); |
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c index 0c3cbd9a38..a2dfe0b0f1 100644 --- a/arch/arm/common/scoop.c +++ b/arch/arm/common/scoop.c | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/string.h> | 15 | #include <linux/string.h> |
16 | #include <linux/slab.h> | ||
16 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
17 | #include <asm/io.h> | 18 | #include <asm/io.h> |
18 | #include <asm/hardware/scoop.h> | 19 | #include <asm/hardware/scoop.h> |
@@ -33,7 +34,6 @@ void reset_scoop(struct device *dev) | |||
33 | 34 | ||
34 | SCOOP_REG(sdev->base,SCOOP_MCR) = 0x0100; // 00 | 35 | SCOOP_REG(sdev->base,SCOOP_MCR) = 0x0100; // 00 |
35 | SCOOP_REG(sdev->base,SCOOP_CDR) = 0x0000; // 04 | 36 | SCOOP_REG(sdev->base,SCOOP_CDR) = 0x0000; // 04 |
36 | SCOOP_REG(sdev->base,SCOOP_CPR) = 0x0000; // 0C | ||
37 | SCOOP_REG(sdev->base,SCOOP_CCR) = 0x0000; // 10 | 37 | SCOOP_REG(sdev->base,SCOOP_CCR) = 0x0000; // 10 |
38 | SCOOP_REG(sdev->base,SCOOP_IMR) = 0x0000; // 18 | 38 | SCOOP_REG(sdev->base,SCOOP_IMR) = 0x0000; // 18 |
39 | SCOOP_REG(sdev->base,SCOOP_IRM) = 0x00FF; // 14 | 39 | SCOOP_REG(sdev->base,SCOOP_IRM) = 0x00FF; // 14 |
@@ -154,6 +154,7 @@ int __init scoop_probe(struct platform_device *pdev) | |||
154 | 154 | ||
155 | SCOOP_REG(devptr->base, SCOOP_MCR) = 0x0140; | 155 | SCOOP_REG(devptr->base, SCOOP_MCR) = 0x0140; |
156 | reset_scoop(&pdev->dev); | 156 | reset_scoop(&pdev->dev); |
157 | SCOOP_REG(devptr->base, SCOOP_CPR) = 0x0000; | ||
157 | SCOOP_REG(devptr->base, SCOOP_GPCR) = inf->io_dir & 0xffff; | 158 | SCOOP_REG(devptr->base, SCOOP_GPCR) = inf->io_dir & 0xffff; |
158 | SCOOP_REG(devptr->base, SCOOP_GPWR) = inf->io_out & 0xffff; | 159 | SCOOP_REG(devptr->base, SCOOP_GPWR) = inf->io_out & 0xffff; |
159 | 160 | ||
diff --git a/arch/arm/common/sharpsl_pm.c b/arch/arm/common/sharpsl_pm.c new file mode 100644 index 0000000000..978d32e82d --- /dev/null +++ b/arch/arm/common/sharpsl_pm.c | |||
@@ -0,0 +1,839 @@ | |||
1 | /* | ||
2 | * Battery and Power Management code for the Sharp SL-C7xx and SL-Cxx00 | ||
3 | * series of PDAs | ||
4 | * | ||
5 | * Copyright (c) 2004-2005 Richard Purdie | ||
6 | * | ||
7 | * Based on code written by Sharp for 2.4 kernels | ||
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 version 2 as | ||
11 | * published by the Free Software Foundation. | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #undef DEBUG | ||
16 | |||
17 | #include <linux/module.h> | ||
18 | #include <linux/timer.h> | ||
19 | #include <linux/init.h> | ||
20 | #include <linux/kernel.h> | ||
21 | #include <linux/apm_bios.h> | ||
22 | #include <linux/delay.h> | ||
23 | #include <linux/interrupt.h> | ||
24 | #include <linux/platform_device.h> | ||
25 | |||
26 | #include <asm/hardware.h> | ||
27 | #include <asm/mach-types.h> | ||
28 | #include <asm/irq.h> | ||
29 | #include <asm/apm.h> | ||
30 | #include <asm/arch/pm.h> | ||
31 | #include <asm/arch/pxa-regs.h> | ||
32 | #include <asm/arch/sharpsl.h> | ||
33 | #include <asm/hardware/sharpsl_pm.h> | ||
34 | |||
35 | /* | ||
36 | * Constants | ||
37 | */ | ||
38 | #define SHARPSL_CHARGE_ON_TIME_INTERVAL (msecs_to_jiffies(1*60*1000)) /* 1 min */ | ||
39 | #define SHARPSL_CHARGE_FINISH_TIME (msecs_to_jiffies(10*60*1000)) /* 10 min */ | ||
40 | #define SHARPSL_BATCHK_TIME (msecs_to_jiffies(15*1000)) /* 15 sec */ | ||
41 | #define SHARPSL_BATCHK_TIME_SUSPEND (60*10) /* 10 min */ | ||
42 | #define SHARPSL_WAIT_CO_TIME 15 /* 15 sec */ | ||
43 | #define SHARPSL_WAIT_DISCHARGE_ON 100 /* 100 msec */ | ||
44 | #define SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP 10 /* 10 msec */ | ||
45 | #define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT 10 /* 10 msec */ | ||
46 | #define SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN 10 /* 10 msec */ | ||
47 | #define SHARPSL_CHARGE_WAIT_TIME 15 /* 15 msec */ | ||
48 | #define SHARPSL_CHARGE_CO_CHECK_TIME 5 /* 5 msec */ | ||
49 | #define SHARPSL_CHARGE_RETRY_CNT 1 /* eqv. 10 min */ | ||
50 | |||
51 | #define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ | ||
52 | #define SHARPSL_CHARGE_ON_TEMP 0xe0 /* 2.9V */ | ||
53 | #define SHARPSL_CHARGE_ON_ACIN_HIGH 0x9b /* 6V */ | ||
54 | #define SHARPSL_CHARGE_ON_ACIN_LOW 0x34 /* 2V */ | ||
55 | #define SHARPSL_FATAL_ACIN_VOLT 182 /* 3.45V */ | ||
56 | #define SHARPSL_FATAL_NOACIN_VOLT 170 /* 3.40V */ | ||
57 | |||
58 | /* | ||
59 | * Prototypes | ||
60 | */ | ||
61 | static int sharpsl_off_charge_battery(void); | ||
62 | static int sharpsl_check_battery_temp(void); | ||
63 | static int sharpsl_check_battery_voltage(void); | ||
64 | static int sharpsl_ac_check(void); | ||
65 | static int sharpsl_fatal_check(void); | ||
66 | static int sharpsl_average_value(int ad); | ||
67 | static void sharpsl_average_clear(void); | ||
68 | static void sharpsl_charge_toggle(void *private_); | ||
69 | static void sharpsl_battery_thread(void *private_); | ||
70 | |||
71 | |||
72 | /* | ||
73 | * Variables | ||
74 | */ | ||
75 | struct sharpsl_pm_status sharpsl_pm; | ||
76 | DECLARE_WORK(toggle_charger, sharpsl_charge_toggle, NULL); | ||
77 | DECLARE_WORK(sharpsl_bat, sharpsl_battery_thread, NULL); | ||
78 | |||
79 | |||
80 | static int get_percentage(int voltage) | ||
81 | { | ||
82 | int i = sharpsl_pm.machinfo->bat_levels - 1; | ||
83 | struct battery_thresh *thresh; | ||
84 | |||
85 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
86 | thresh=sharpsl_pm.machinfo->bat_levels_acin; | ||
87 | else | ||
88 | thresh=sharpsl_pm.machinfo->bat_levels_noac; | ||
89 | |||
90 | while (i > 0 && (voltage > thresh[i].voltage)) | ||
91 | i--; | ||
92 | |||
93 | return thresh[i].percentage; | ||
94 | } | ||
95 | |||
96 | static int get_apm_status(int voltage) | ||
97 | { | ||
98 | int low_thresh, high_thresh; | ||
99 | |||
100 | if (sharpsl_pm.charge_mode == CHRG_ON) { | ||
101 | high_thresh = sharpsl_pm.machinfo->status_high_acin; | ||
102 | low_thresh = sharpsl_pm.machinfo->status_low_acin; | ||
103 | } else { | ||
104 | high_thresh = sharpsl_pm.machinfo->status_high_noac; | ||
105 | low_thresh = sharpsl_pm.machinfo->status_low_noac; | ||
106 | } | ||
107 | |||
108 | if (voltage >= high_thresh) | ||
109 | return APM_BATTERY_STATUS_HIGH; | ||
110 | if (voltage >= low_thresh) | ||
111 | return APM_BATTERY_STATUS_LOW; | ||
112 | return APM_BATTERY_STATUS_CRITICAL; | ||
113 | } | ||
114 | |||
115 | void sharpsl_battery_kick(void) | ||
116 | { | ||
117 | schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(125)); | ||
118 | } | ||
119 | EXPORT_SYMBOL(sharpsl_battery_kick); | ||
120 | |||
121 | |||
122 | static void sharpsl_battery_thread(void *private_) | ||
123 | { | ||
124 | int voltage, percent, apm_status, i = 0; | ||
125 | |||
126 | if (!sharpsl_pm.machinfo) | ||
127 | return; | ||
128 | |||
129 | sharpsl_pm.battstat.ac_status = (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN) ? APM_AC_ONLINE : APM_AC_OFFLINE); | ||
130 | |||
131 | /* Corgi cannot confirm when battery fully charged so periodically kick! */ | ||
132 | if (machine_is_corgi() && (sharpsl_pm.charge_mode == CHRG_ON) | ||
133 | && time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_ON_TIME_INTERVAL)) | ||
134 | schedule_work(&toggle_charger); | ||
135 | |||
136 | while(1) { | ||
137 | voltage = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT); | ||
138 | |||
139 | if (voltage > 0) break; | ||
140 | if (i++ > 5) { | ||
141 | voltage = sharpsl_pm.machinfo->bat_levels_noac[0].voltage; | ||
142 | dev_warn(sharpsl_pm.dev, "Warning: Cannot read main battery!\n"); | ||
143 | break; | ||
144 | } | ||
145 | } | ||
146 | |||
147 | voltage = sharpsl_average_value(voltage); | ||
148 | apm_status = get_apm_status(voltage); | ||
149 | percent = get_percentage(voltage); | ||
150 | |||
151 | /* At low battery voltages, the voltage has a tendency to start | ||
152 | creeping back up so we try to avoid this here */ | ||
153 | if ((sharpsl_pm.battstat.ac_status == APM_AC_ONLINE) || (apm_status == APM_BATTERY_STATUS_HIGH) || percent <= sharpsl_pm.battstat.mainbat_percent) { | ||
154 | sharpsl_pm.battstat.mainbat_voltage = voltage; | ||
155 | sharpsl_pm.battstat.mainbat_status = apm_status; | ||
156 | sharpsl_pm.battstat.mainbat_percent = percent; | ||
157 | } | ||
158 | |||
159 | dev_dbg(sharpsl_pm.dev, "Battery: voltage: %d, status: %d, percentage: %d, time: %d\n", voltage, | ||
160 | sharpsl_pm.battstat.mainbat_status, sharpsl_pm.battstat.mainbat_percent, jiffies); | ||
161 | |||
162 | /* If battery is low. limit backlight intensity to save power. */ | ||
163 | if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE) | ||
164 | && ((sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_LOW) || | ||
165 | (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL))) { | ||
166 | if (!(sharpsl_pm.flags & SHARPSL_BL_LIMIT)) { | ||
167 | corgibl_limit_intensity(1); | ||
168 | sharpsl_pm.flags |= SHARPSL_BL_LIMIT; | ||
169 | } | ||
170 | } else if (sharpsl_pm.flags & SHARPSL_BL_LIMIT) { | ||
171 | corgibl_limit_intensity(0); | ||
172 | sharpsl_pm.flags &= ~SHARPSL_BL_LIMIT; | ||
173 | } | ||
174 | |||
175 | /* Suspend if critical battery level */ | ||
176 | if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE) | ||
177 | && (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL) | ||
178 | && !(sharpsl_pm.flags & SHARPSL_APM_QUEUED)) { | ||
179 | sharpsl_pm.flags |= SHARPSL_APM_QUEUED; | ||
180 | dev_err(sharpsl_pm.dev, "Fatal Off\n"); | ||
181 | apm_queue_event(APM_CRITICAL_SUSPEND); | ||
182 | } | ||
183 | |||
184 | schedule_delayed_work(&sharpsl_bat, SHARPSL_BATCHK_TIME); | ||
185 | } | ||
186 | |||
187 | void sharpsl_pm_led(int val) | ||
188 | { | ||
189 | if (val == SHARPSL_LED_ERROR) { | ||
190 | dev_err(sharpsl_pm.dev, "Charging Error!\n"); | ||
191 | } else if (val == SHARPSL_LED_ON) { | ||
192 | dev_dbg(sharpsl_pm.dev, "Charge LED On\n"); | ||
193 | |||
194 | } else { | ||
195 | dev_dbg(sharpsl_pm.dev, "Charge LED Off\n"); | ||
196 | |||
197 | } | ||
198 | } | ||
199 | |||
200 | static void sharpsl_charge_on(void) | ||
201 | { | ||
202 | dev_dbg(sharpsl_pm.dev, "Turning Charger On\n"); | ||
203 | |||
204 | sharpsl_pm.full_count = 0; | ||
205 | sharpsl_pm.charge_mode = CHRG_ON; | ||
206 | schedule_delayed_work(&toggle_charger, msecs_to_jiffies(250)); | ||
207 | schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(500)); | ||
208 | } | ||
209 | |||
210 | static void sharpsl_charge_off(void) | ||
211 | { | ||
212 | dev_dbg(sharpsl_pm.dev, "Turning Charger Off\n"); | ||
213 | |||
214 | sharpsl_pm.machinfo->charge(0); | ||
215 | sharpsl_pm_led(SHARPSL_LED_OFF); | ||
216 | sharpsl_pm.charge_mode = CHRG_OFF; | ||
217 | |||
218 | schedule_work(&sharpsl_bat); | ||
219 | } | ||
220 | |||
221 | static void sharpsl_charge_error(void) | ||
222 | { | ||
223 | sharpsl_pm_led(SHARPSL_LED_ERROR); | ||
224 | sharpsl_pm.machinfo->charge(0); | ||
225 | sharpsl_pm.charge_mode = CHRG_ERROR; | ||
226 | } | ||
227 | |||
228 | static void sharpsl_charge_toggle(void *private_) | ||
229 | { | ||
230 | dev_dbg(sharpsl_pm.dev, "Toogling Charger at time: %lx\n", jiffies); | ||
231 | |||
232 | if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { | ||
233 | sharpsl_charge_off(); | ||
234 | return; | ||
235 | } else if ((sharpsl_check_battery_temp() < 0) || (sharpsl_ac_check() < 0)) { | ||
236 | sharpsl_charge_error(); | ||
237 | return; | ||
238 | } | ||
239 | |||
240 | sharpsl_pm_led(SHARPSL_LED_ON); | ||
241 | sharpsl_pm.machinfo->charge(0); | ||
242 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
243 | sharpsl_pm.machinfo->charge(1); | ||
244 | |||
245 | sharpsl_pm.charge_start_time = jiffies; | ||
246 | } | ||
247 | |||
248 | static void sharpsl_ac_timer(unsigned long data) | ||
249 | { | ||
250 | int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); | ||
251 | |||
252 | dev_dbg(sharpsl_pm.dev, "AC Status: %d\n",acin); | ||
253 | |||
254 | sharpsl_average_clear(); | ||
255 | if (acin && (sharpsl_pm.charge_mode != CHRG_ON)) | ||
256 | sharpsl_charge_on(); | ||
257 | else if (sharpsl_pm.charge_mode == CHRG_ON) | ||
258 | sharpsl_charge_off(); | ||
259 | |||
260 | schedule_work(&sharpsl_bat); | ||
261 | } | ||
262 | |||
263 | |||
264 | irqreturn_t sharpsl_ac_isr(int irq, void *dev_id, struct pt_regs *fp) | ||
265 | { | ||
266 | /* Delay the event slightly to debounce */ | ||
267 | /* Must be a smaller delay than the chrg_full_isr below */ | ||
268 | mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250)); | ||
269 | |||
270 | return IRQ_HANDLED; | ||
271 | } | ||
272 | |||
273 | static void sharpsl_chrg_full_timer(unsigned long data) | ||
274 | { | ||
275 | dev_dbg(sharpsl_pm.dev, "Charge Full at time: %lx\n", jiffies); | ||
276 | |||
277 | sharpsl_pm.full_count++; | ||
278 | |||
279 | if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { | ||
280 | dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n"); | ||
281 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
282 | sharpsl_charge_off(); | ||
283 | } else if (sharpsl_pm.full_count < 2) { | ||
284 | dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n"); | ||
285 | schedule_work(&toggle_charger); | ||
286 | } else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) { | ||
287 | dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n"); | ||
288 | schedule_work(&toggle_charger); | ||
289 | } else { | ||
290 | sharpsl_charge_off(); | ||
291 | sharpsl_pm.charge_mode = CHRG_DONE; | ||
292 | dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n"); | ||
293 | } | ||
294 | } | ||
295 | |||
296 | /* Charging Finished Interrupt (Not present on Corgi) */ | ||
297 | /* Can trigger at the same time as an AC staus change so | ||
298 | delay until after that has been processed */ | ||
299 | irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp) | ||
300 | { | ||
301 | if (sharpsl_pm.flags & SHARPSL_SUSPENDED) | ||
302 | return IRQ_HANDLED; | ||
303 | |||
304 | /* delay until after any ac interrupt */ | ||
305 | mod_timer(&sharpsl_pm.chrg_full_timer, jiffies + msecs_to_jiffies(500)); | ||
306 | |||
307 | return IRQ_HANDLED; | ||
308 | } | ||
309 | |||
310 | irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id, struct pt_regs *fp) | ||
311 | { | ||
312 | int is_fatal = 0; | ||
313 | |||
314 | if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) { | ||
315 | dev_err(sharpsl_pm.dev, "Battery now Unlocked! Suspending.\n"); | ||
316 | is_fatal = 1; | ||
317 | } | ||
318 | |||
319 | if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL)) { | ||
320 | dev_err(sharpsl_pm.dev, "Fatal Batt Error! Suspending.\n"); | ||
321 | is_fatal = 1; | ||
322 | } | ||
323 | |||
324 | if (!(sharpsl_pm.flags & SHARPSL_APM_QUEUED) && is_fatal) { | ||
325 | sharpsl_pm.flags |= SHARPSL_APM_QUEUED; | ||
326 | apm_queue_event(APM_CRITICAL_SUSPEND); | ||
327 | } | ||
328 | |||
329 | return IRQ_HANDLED; | ||
330 | } | ||
331 | |||
332 | /* | ||
333 | * Maintain an average of the last 10 readings | ||
334 | */ | ||
335 | #define SHARPSL_CNV_VALUE_NUM 10 | ||
336 | static int sharpsl_ad_index; | ||
337 | |||
338 | static void sharpsl_average_clear(void) | ||
339 | { | ||
340 | sharpsl_ad_index = 0; | ||
341 | } | ||
342 | |||
343 | static int sharpsl_average_value(int ad) | ||
344 | { | ||
345 | int i, ad_val = 0; | ||
346 | static int sharpsl_ad[SHARPSL_CNV_VALUE_NUM+1]; | ||
347 | |||
348 | if (sharpsl_pm.battstat.mainbat_status != APM_BATTERY_STATUS_HIGH) { | ||
349 | sharpsl_ad_index = 0; | ||
350 | return ad; | ||
351 | } | ||
352 | |||
353 | sharpsl_ad[sharpsl_ad_index] = ad; | ||
354 | sharpsl_ad_index++; | ||
355 | if (sharpsl_ad_index >= SHARPSL_CNV_VALUE_NUM) { | ||
356 | for (i=0; i < (SHARPSL_CNV_VALUE_NUM-1); i++) | ||
357 | sharpsl_ad[i] = sharpsl_ad[i+1]; | ||
358 | sharpsl_ad_index = SHARPSL_CNV_VALUE_NUM - 1; | ||
359 | } | ||
360 | for (i=0; i < sharpsl_ad_index; i++) | ||
361 | ad_val += sharpsl_ad[i]; | ||
362 | |||
363 | return (ad_val / sharpsl_ad_index); | ||
364 | } | ||
365 | |||
366 | /* | ||
367 | * Take an array of 5 integers, remove the maximum and minimum values | ||
368 | * and return the average. | ||
369 | */ | ||
370 | static int get_select_val(int *val) | ||
371 | { | ||
372 | int i, j, k, temp, sum = 0; | ||
373 | |||
374 | /* Find MAX val */ | ||
375 | temp = val[0]; | ||
376 | j=0; | ||
377 | for (i=1; i<5; i++) { | ||
378 | if (temp < val[i]) { | ||
379 | temp = val[i]; | ||
380 | j = i; | ||
381 | } | ||
382 | } | ||
383 | |||
384 | /* Find MIN val */ | ||
385 | temp = val[4]; | ||
386 | k=4; | ||
387 | for (i=3; i>=0; i--) { | ||
388 | if (temp > val[i]) { | ||
389 | temp = val[i]; | ||
390 | k = i; | ||
391 | } | ||
392 | } | ||
393 | |||
394 | for (i=0; i<5; i++) | ||
395 | if (i != j && i != k ) | ||
396 | sum += val[i]; | ||
397 | |||
398 | dev_dbg(sharpsl_pm.dev, "Average: %d from values: %d, %d, %d, %d, %d\n", sum/3, val[0], val[1], val[2], val[3], val[4]); | ||
399 | |||
400 | return (sum/3); | ||
401 | } | ||
402 | |||
403 | static int sharpsl_check_battery_temp(void) | ||
404 | { | ||
405 | int val, i, buff[5]; | ||
406 | |||
407 | /* Check battery temperature */ | ||
408 | for (i=0; i<5; i++) { | ||
409 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP); | ||
410 | sharpsl_pm.machinfo->measure_temp(1); | ||
411 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP); | ||
412 | buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_TEMP); | ||
413 | sharpsl_pm.machinfo->measure_temp(0); | ||
414 | } | ||
415 | |||
416 | val = get_select_val(buff); | ||
417 | |||
418 | dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val); | ||
419 | if (val > SHARPSL_CHARGE_ON_TEMP) | ||
420 | return -1; | ||
421 | |||
422 | return 0; | ||
423 | } | ||
424 | |||
425 | static int sharpsl_check_battery_voltage(void) | ||
426 | { | ||
427 | int val, i, buff[5]; | ||
428 | |||
429 | /* disable charge, enable discharge */ | ||
430 | sharpsl_pm.machinfo->charge(0); | ||
431 | sharpsl_pm.machinfo->discharge(1); | ||
432 | mdelay(SHARPSL_WAIT_DISCHARGE_ON); | ||
433 | |||
434 | if (sharpsl_pm.machinfo->discharge1) | ||
435 | sharpsl_pm.machinfo->discharge1(1); | ||
436 | |||
437 | /* Check battery voltage */ | ||
438 | for (i=0; i<5; i++) { | ||
439 | buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT); | ||
440 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT); | ||
441 | } | ||
442 | |||
443 | if (sharpsl_pm.machinfo->discharge1) | ||
444 | sharpsl_pm.machinfo->discharge1(0); | ||
445 | |||
446 | sharpsl_pm.machinfo->discharge(0); | ||
447 | |||
448 | val = get_select_val(buff); | ||
449 | dev_dbg(sharpsl_pm.dev, "Battery Voltage: %d\n", val); | ||
450 | |||
451 | if (val < SHARPSL_CHARGE_ON_VOLT) | ||
452 | return -1; | ||
453 | |||
454 | return 0; | ||
455 | } | ||
456 | |||
457 | static int sharpsl_ac_check(void) | ||
458 | { | ||
459 | int temp, i, buff[5]; | ||
460 | |||
461 | for (i=0; i<5; i++) { | ||
462 | buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_ACIN_VOLT); | ||
463 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN); | ||
464 | } | ||
465 | |||
466 | temp = get_select_val(buff); | ||
467 | dev_dbg(sharpsl_pm.dev, "AC Voltage: %d\n",temp); | ||
468 | |||
469 | if ((temp > SHARPSL_CHARGE_ON_ACIN_HIGH) || (temp < SHARPSL_CHARGE_ON_ACIN_LOW)) { | ||
470 | dev_err(sharpsl_pm.dev, "Error: AC check failed.\n"); | ||
471 | return -1; | ||
472 | } | ||
473 | |||
474 | return 0; | ||
475 | } | ||
476 | |||
477 | #ifdef CONFIG_PM | ||
478 | static int sharpsl_pm_suspend(struct platform_device *pdev, pm_message_t state) | ||
479 | { | ||
480 | sharpsl_pm.flags |= SHARPSL_SUSPENDED; | ||
481 | flush_scheduled_work(); | ||
482 | |||
483 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
484 | sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG; | ||
485 | else | ||
486 | sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG; | ||
487 | |||
488 | return 0; | ||
489 | } | ||
490 | |||
491 | static int sharpsl_pm_resume(struct platform_device *pdev) | ||
492 | { | ||
493 | /* Clear the reset source indicators as they break the bootloader upon reboot */ | ||
494 | RCSR = 0x0f; | ||
495 | sharpsl_average_clear(); | ||
496 | sharpsl_pm.flags &= ~SHARPSL_APM_QUEUED; | ||
497 | sharpsl_pm.flags &= ~SHARPSL_SUSPENDED; | ||
498 | |||
499 | return 0; | ||
500 | } | ||
501 | |||
502 | static void corgi_goto_sleep(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state) | ||
503 | { | ||
504 | dev_dbg(sharpsl_pm.dev, "Time is: %08x\n",RCNR); | ||
505 | |||
506 | dev_dbg(sharpsl_pm.dev, "Offline Charge Activate = %d\n",sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG); | ||
507 | /* not charging and AC-IN! */ | ||
508 | |||
509 | if ((sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG) && (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN))) { | ||
510 | dev_dbg(sharpsl_pm.dev, "Activating Offline Charger...\n"); | ||
511 | sharpsl_pm.charge_mode = CHRG_OFF; | ||
512 | sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG; | ||
513 | sharpsl_off_charge_battery(); | ||
514 | } | ||
515 | |||
516 | sharpsl_pm.machinfo->presuspend(); | ||
517 | |||
518 | PEDR = 0xffffffff; /* clear it */ | ||
519 | |||
520 | sharpsl_pm.flags &= ~SHARPSL_ALARM_ACTIVE; | ||
521 | if ((sharpsl_pm.charge_mode == CHRG_ON) && ((alarm_enable && ((alarm_time - RCNR) > (SHARPSL_BATCHK_TIME_SUSPEND + 30))) || !alarm_enable)) { | ||
522 | RTSR &= RTSR_ALE; | ||
523 | RTAR = RCNR + SHARPSL_BATCHK_TIME_SUSPEND; | ||
524 | dev_dbg(sharpsl_pm.dev, "Charging alarm at: %08x\n",RTAR); | ||
525 | sharpsl_pm.flags |= SHARPSL_ALARM_ACTIVE; | ||
526 | } else if (alarm_enable) { | ||
527 | RTSR &= RTSR_ALE; | ||
528 | RTAR = alarm_time; | ||
529 | dev_dbg(sharpsl_pm.dev, "User alarm at: %08x\n",RTAR); | ||
530 | } else { | ||
531 | dev_dbg(sharpsl_pm.dev, "No alarms set.\n"); | ||
532 | } | ||
533 | |||
534 | pxa_pm_enter(state); | ||
535 | |||
536 | sharpsl_pm.machinfo->postsuspend(); | ||
537 | |||
538 | dev_dbg(sharpsl_pm.dev, "Corgi woken up from suspend: %08x\n",PEDR); | ||
539 | } | ||
540 | |||
541 | static int corgi_enter_suspend(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state) | ||
542 | { | ||
543 | if (!sharpsl_pm.machinfo->should_wakeup(!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE) && alarm_enable) ) | ||
544 | { | ||
545 | if (!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE)) { | ||
546 | dev_dbg(sharpsl_pm.dev, "No user triggered wakeup events and not charging. Strange. Suspend.\n"); | ||
547 | corgi_goto_sleep(alarm_time, alarm_enable, state); | ||
548 | return 1; | ||
549 | } | ||
550 | if(sharpsl_off_charge_battery()) { | ||
551 | dev_dbg(sharpsl_pm.dev, "Charging. Suspend...\n"); | ||
552 | corgi_goto_sleep(alarm_time, alarm_enable, state); | ||
553 | return 1; | ||
554 | } | ||
555 | dev_dbg(sharpsl_pm.dev, "User triggered wakeup in offline charger.\n"); | ||
556 | } | ||
557 | |||
558 | if ((!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) || (sharpsl_fatal_check() < 0) ) | ||
559 | { | ||
560 | dev_err(sharpsl_pm.dev, "Fatal condition. Suspend.\n"); | ||
561 | corgi_goto_sleep(alarm_time, alarm_enable, state); | ||
562 | return 1; | ||
563 | } | ||
564 | |||
565 | return 0; | ||
566 | } | ||
567 | |||
568 | static int corgi_pxa_pm_enter(suspend_state_t state) | ||
569 | { | ||
570 | unsigned long alarm_time = RTAR; | ||
571 | unsigned int alarm_status = ((RTSR & RTSR_ALE) != 0); | ||
572 | |||
573 | dev_dbg(sharpsl_pm.dev, "SharpSL suspending for first time.\n"); | ||
574 | |||
575 | corgi_goto_sleep(alarm_time, alarm_status, state); | ||
576 | |||
577 | while (corgi_enter_suspend(alarm_time,alarm_status,state)) | ||
578 | {} | ||
579 | |||
580 | dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n"); | ||
581 | |||
582 | return 0; | ||
583 | } | ||
584 | #endif | ||
585 | |||
586 | |||
587 | /* | ||
588 | * Check for fatal battery errors | ||
589 | * Fatal returns -1 | ||
590 | */ | ||
591 | static int sharpsl_fatal_check(void) | ||
592 | { | ||
593 | int buff[5], temp, i, acin; | ||
594 | |||
595 | dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check entered\n"); | ||
596 | |||
597 | /* Check AC-Adapter */ | ||
598 | acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); | ||
599 | |||
600 | if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) { | ||
601 | sharpsl_pm.machinfo->charge(0); | ||
602 | udelay(100); | ||
603 | sharpsl_pm.machinfo->discharge(1); /* enable discharge */ | ||
604 | mdelay(SHARPSL_WAIT_DISCHARGE_ON); | ||
605 | } | ||
606 | |||
607 | if (sharpsl_pm.machinfo->discharge1) | ||
608 | sharpsl_pm.machinfo->discharge1(1); | ||
609 | |||
610 | /* Check battery : check inserting battery ? */ | ||
611 | for (i=0; i<5; i++) { | ||
612 | buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT); | ||
613 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT); | ||
614 | } | ||
615 | |||
616 | if (sharpsl_pm.machinfo->discharge1) | ||
617 | sharpsl_pm.machinfo->discharge1(0); | ||
618 | |||
619 | if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) { | ||
620 | udelay(100); | ||
621 | sharpsl_pm.machinfo->charge(1); | ||
622 | sharpsl_pm.machinfo->discharge(0); | ||
623 | } | ||
624 | |||
625 | temp = get_select_val(buff); | ||
626 | dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check: acin: %d, discharge voltage: %d, no discharge: %d\n", acin, temp, sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT)); | ||
627 | |||
628 | if ((acin && (temp < SHARPSL_FATAL_ACIN_VOLT)) || | ||
629 | (!acin && (temp < SHARPSL_FATAL_NOACIN_VOLT))) | ||
630 | return -1; | ||
631 | return 0; | ||
632 | } | ||
633 | |||
634 | static int sharpsl_off_charge_error(void) | ||
635 | { | ||
636 | dev_err(sharpsl_pm.dev, "Offline Charger: Error occured.\n"); | ||
637 | sharpsl_pm.machinfo->charge(0); | ||
638 | sharpsl_pm_led(SHARPSL_LED_ERROR); | ||
639 | sharpsl_pm.charge_mode = CHRG_ERROR; | ||
640 | return 1; | ||
641 | } | ||
642 | |||
643 | /* | ||
644 | * Charging Control while suspended | ||
645 | * Return 1 - go straight to sleep | ||
646 | * Return 0 - sleep or wakeup depending on other factors | ||
647 | */ | ||
648 | static int sharpsl_off_charge_battery(void) | ||
649 | { | ||
650 | int time; | ||
651 | |||
652 | dev_dbg(sharpsl_pm.dev, "Charge Mode: %d\n", sharpsl_pm.charge_mode); | ||
653 | |||
654 | if (sharpsl_pm.charge_mode == CHRG_OFF) { | ||
655 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 1\n"); | ||
656 | |||
657 | /* AC Check */ | ||
658 | if ((sharpsl_ac_check() < 0) || (sharpsl_check_battery_temp() < 0)) | ||
659 | return sharpsl_off_charge_error(); | ||
660 | |||
661 | /* Start Charging */ | ||
662 | sharpsl_pm_led(SHARPSL_LED_ON); | ||
663 | sharpsl_pm.machinfo->charge(0); | ||
664 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
665 | sharpsl_pm.machinfo->charge(1); | ||
666 | |||
667 | sharpsl_pm.charge_mode = CHRG_ON; | ||
668 | sharpsl_pm.full_count = 0; | ||
669 | |||
670 | return 1; | ||
671 | } else if (sharpsl_pm.charge_mode != CHRG_ON) { | ||
672 | return 1; | ||
673 | } | ||
674 | |||
675 | if (sharpsl_pm.full_count == 0) { | ||
676 | int time; | ||
677 | |||
678 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 2\n"); | ||
679 | |||
680 | if ((sharpsl_check_battery_temp() < 0) || (sharpsl_check_battery_voltage() < 0)) | ||
681 | return sharpsl_off_charge_error(); | ||
682 | |||
683 | sharpsl_pm.machinfo->charge(0); | ||
684 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
685 | sharpsl_pm.machinfo->charge(1); | ||
686 | sharpsl_pm.charge_mode = CHRG_ON; | ||
687 | |||
688 | mdelay(SHARPSL_CHARGE_CO_CHECK_TIME); | ||
689 | |||
690 | time = RCNR; | ||
691 | while(1) { | ||
692 | /* Check if any wakeup event had occured */ | ||
693 | if (sharpsl_pm.machinfo->charger_wakeup() != 0) | ||
694 | return 0; | ||
695 | /* Check for timeout */ | ||
696 | if ((RCNR - time) > SHARPSL_WAIT_CO_TIME) | ||
697 | return 1; | ||
698 | if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) { | ||
699 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Charge full occured. Retrying to check\n"); | ||
700 | sharpsl_pm.full_count++; | ||
701 | sharpsl_pm.machinfo->charge(0); | ||
702 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
703 | sharpsl_pm.machinfo->charge(1); | ||
704 | return 1; | ||
705 | } | ||
706 | } | ||
707 | } | ||
708 | |||
709 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 3\n"); | ||
710 | |||
711 | mdelay(SHARPSL_CHARGE_CO_CHECK_TIME); | ||
712 | |||
713 | time = RCNR; | ||
714 | while(1) { | ||
715 | /* Check if any wakeup event had occured */ | ||
716 | if (sharpsl_pm.machinfo->charger_wakeup() != 0) | ||
717 | return 0; | ||
718 | /* Check for timeout */ | ||
719 | if ((RCNR-time) > SHARPSL_WAIT_CO_TIME) { | ||
720 | if (sharpsl_pm.full_count > SHARPSL_CHARGE_RETRY_CNT) { | ||
721 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Not charged sufficiently. Retrying.\n"); | ||
722 | sharpsl_pm.full_count = 0; | ||
723 | } | ||
724 | sharpsl_pm.full_count++; | ||
725 | return 1; | ||
726 | } | ||
727 | if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) { | ||
728 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Charging complete.\n"); | ||
729 | sharpsl_pm_led(SHARPSL_LED_OFF); | ||
730 | sharpsl_pm.machinfo->charge(0); | ||
731 | sharpsl_pm.charge_mode = CHRG_DONE; | ||
732 | return 1; | ||
733 | } | ||
734 | } | ||
735 | } | ||
736 | |||
737 | |||
738 | static ssize_t battery_percentage_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
739 | { | ||
740 | return sprintf(buf, "%d\n",sharpsl_pm.battstat.mainbat_percent); | ||
741 | } | ||
742 | |||
743 | static ssize_t battery_voltage_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
744 | { | ||
745 | return sprintf(buf, "%d\n",sharpsl_pm.battstat.mainbat_voltage); | ||
746 | } | ||
747 | |||
748 | static DEVICE_ATTR(battery_percentage, 0444, battery_percentage_show, NULL); | ||
749 | static DEVICE_ATTR(battery_voltage, 0444, battery_voltage_show, NULL); | ||
750 | |||
751 | extern void (*apm_get_power_status)(struct apm_power_info *); | ||
752 | |||
753 | static void sharpsl_apm_get_power_status(struct apm_power_info *info) | ||
754 | { | ||
755 | info->ac_line_status = sharpsl_pm.battstat.ac_status; | ||
756 | |||
757 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
758 | info->battery_status = APM_BATTERY_STATUS_CHARGING; | ||
759 | else | ||
760 | info->battery_status = sharpsl_pm.battstat.mainbat_status; | ||
761 | |||
762 | info->battery_flag = (1 << info->battery_status); | ||
763 | info->battery_life = sharpsl_pm.battstat.mainbat_percent; | ||
764 | } | ||
765 | |||
766 | static struct pm_ops sharpsl_pm_ops = { | ||
767 | .pm_disk_mode = PM_DISK_FIRMWARE, | ||
768 | .prepare = pxa_pm_prepare, | ||
769 | .enter = corgi_pxa_pm_enter, | ||
770 | .finish = pxa_pm_finish, | ||
771 | }; | ||
772 | |||
773 | static int __init sharpsl_pm_probe(struct platform_device *pdev) | ||
774 | { | ||
775 | if (!pdev->dev.platform_data) | ||
776 | return -EINVAL; | ||
777 | |||
778 | sharpsl_pm.dev = &pdev->dev; | ||
779 | sharpsl_pm.machinfo = pdev->dev.platform_data; | ||
780 | sharpsl_pm.charge_mode = CHRG_OFF; | ||
781 | sharpsl_pm.flags = 0; | ||
782 | |||
783 | init_timer(&sharpsl_pm.ac_timer); | ||
784 | sharpsl_pm.ac_timer.function = sharpsl_ac_timer; | ||
785 | |||
786 | init_timer(&sharpsl_pm.chrg_full_timer); | ||
787 | sharpsl_pm.chrg_full_timer.function = sharpsl_chrg_full_timer; | ||
788 | |||
789 | sharpsl_pm.machinfo->init(); | ||
790 | |||
791 | device_create_file(&pdev->dev, &dev_attr_battery_percentage); | ||
792 | device_create_file(&pdev->dev, &dev_attr_battery_voltage); | ||
793 | |||
794 | apm_get_power_status = sharpsl_apm_get_power_status; | ||
795 | |||
796 | pm_set_ops(&sharpsl_pm_ops); | ||
797 | |||
798 | mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250)); | ||
799 | |||
800 | return 0; | ||
801 | } | ||
802 | |||
803 | static int sharpsl_pm_remove(struct platform_device *pdev) | ||
804 | { | ||
805 | pm_set_ops(NULL); | ||
806 | |||
807 | device_remove_file(&pdev->dev, &dev_attr_battery_percentage); | ||
808 | device_remove_file(&pdev->dev, &dev_attr_battery_voltage); | ||
809 | |||
810 | sharpsl_pm.machinfo->exit(); | ||
811 | |||
812 | del_timer_sync(&sharpsl_pm.chrg_full_timer); | ||
813 | del_timer_sync(&sharpsl_pm.ac_timer); | ||
814 | |||
815 | return 0; | ||
816 | } | ||
817 | |||
818 | static struct platform_driver sharpsl_pm_driver = { | ||
819 | .probe = sharpsl_pm_probe, | ||
820 | .remove = sharpsl_pm_remove, | ||
821 | .suspend = sharpsl_pm_suspend, | ||
822 | .resume = sharpsl_pm_resume, | ||
823 | .driver = { | ||
824 | .name = "sharpsl-pm", | ||
825 | }, | ||
826 | }; | ||
827 | |||
828 | static int __devinit sharpsl_pm_init(void) | ||
829 | { | ||
830 | return platform_driver_register(&sharpsl_pm_driver); | ||
831 | } | ||
832 | |||
833 | static void sharpsl_pm_exit(void) | ||
834 | { | ||
835 | platform_driver_unregister(&sharpsl_pm_driver); | ||
836 | } | ||
837 | |||
838 | late_initcall(sharpsl_pm_init); | ||
839 | module_exit(sharpsl_pm_exit); | ||
diff --git a/arch/arm/configs/assabet_defconfig b/arch/arm/configs/assabet_defconfig index ccbb4c0d58..089c9d5984 100644 --- a/arch/arm/configs/assabet_defconfig +++ b/arch/arm/configs/assabet_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/at91rm9200dk_defconfig b/arch/arm/configs/at91rm9200dk_defconfig new file mode 100644 index 0000000000..5cdd13acf8 --- /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 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_MMU=y | ||
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | |||
12 | # | ||
13 | # Code maturity level options | ||
14 | # | ||
15 | CONFIG_EXPERIMENTAL=y | ||
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | ||
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | # CONFIG_SWAP is not set | ||
26 | CONFIG_SYSVIPC=y | ||
27 | # CONFIG_POSIX_MQUEUE is not set | ||
28 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
29 | CONFIG_SYSCTL=y | ||
30 | # CONFIG_AUDIT is not set | ||
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | ||
34 | CONFIG_INITRAMFS_SOURCE="" | ||
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
36 | # CONFIG_EMBEDDED is not set | ||
37 | CONFIG_KALLSYMS=y | ||
38 | # CONFIG_KALLSYMS_ALL is not set | ||
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
40 | CONFIG_PRINTK=y | ||
41 | CONFIG_BUG=y | ||
42 | CONFIG_BASE_FULL=y | ||
43 | CONFIG_FUTEX=y | ||
44 | CONFIG_EPOLL=y | ||
45 | CONFIG_SHMEM=y | ||
46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
47 | CONFIG_CC_ALIGN_LABELS=0 | ||
48 | CONFIG_CC_ALIGN_LOOPS=0 | ||
49 | CONFIG_CC_ALIGN_JUMPS=0 | ||
50 | # CONFIG_TINY_SHMEM is not set | ||
51 | CONFIG_BASE_SMALL=0 | ||
52 | |||
53 | # | ||
54 | # Loadable module support | ||
55 | # | ||
56 | CONFIG_MODULES=y | ||
57 | CONFIG_MODULE_UNLOAD=y | ||
58 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
59 | CONFIG_OBSOLETE_MODPARM=y | ||
60 | # CONFIG_MODVERSIONS is not set | ||
61 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
62 | CONFIG_KMOD=y | ||
63 | |||
64 | # | ||
65 | # Block layer | ||
66 | # | ||
67 | |||
68 | # | ||
69 | # IO Schedulers | ||
70 | # | ||
71 | CONFIG_IOSCHED_NOOP=y | ||
72 | CONFIG_IOSCHED_AS=y | ||
73 | # CONFIG_IOSCHED_DEADLINE is not set | ||
74 | # CONFIG_IOSCHED_CFQ is not set | ||
75 | CONFIG_DEFAULT_AS=y | ||
76 | # CONFIG_DEFAULT_DEADLINE is not set | ||
77 | # CONFIG_DEFAULT_CFQ is not set | ||
78 | # CONFIG_DEFAULT_NOOP is not set | ||
79 | CONFIG_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 | ||
107 | CONFIG_ARCH_AT91RM9200=y | ||
108 | |||
109 | # | ||
110 | # AT91RM9200 Implementations | ||
111 | # | ||
112 | |||
113 | # | ||
114 | # AT91RM9200 Board Type | ||
115 | # | ||
116 | CONFIG_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 | # | ||
127 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | ||
128 | |||
129 | # | ||
130 | # Processor Type | ||
131 | # | ||
132 | CONFIG_CPU_32=y | ||
133 | CONFIG_CPU_ARM920T=y | ||
134 | CONFIG_CPU_32v4=y | ||
135 | CONFIG_CPU_ABRT_EV4T=y | ||
136 | CONFIG_CPU_CACHE_V4WT=y | ||
137 | CONFIG_CPU_CACHE_VIVT=y | ||
138 | CONFIG_CPU_COPY_V4WB=y | ||
139 | CONFIG_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 | # | ||
152 | CONFIG_ISA_DMA_API=y | ||
153 | |||
154 | # | ||
155 | # PCCARD (PCMCIA/CardBus) support | ||
156 | # | ||
157 | CONFIG_PCCARD=y | ||
158 | # CONFIG_PCMCIA_DEBUG is not set | ||
159 | CONFIG_PCMCIA=y | ||
160 | CONFIG_PCMCIA_LOAD_CIS=y | ||
161 | CONFIG_PCMCIA_IOCTL=y | ||
162 | |||
163 | # | ||
164 | # PC-card bridges | ||
165 | # | ||
166 | CONFIG_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 | ||
174 | CONFIG_SELECT_MEMORY_MODEL=y | ||
175 | CONFIG_FLATMEM_MANUAL=y | ||
176 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
177 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
178 | CONFIG_FLATMEM=y | ||
179 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
180 | # CONFIG_SPARSEMEM_STATIC is not set | ||
181 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
182 | CONFIG_LEDS=y | ||
183 | CONFIG_LEDS_TIMER=y | ||
184 | # CONFIG_LEDS_CPU is not set | ||
185 | CONFIG_ALIGNMENT_TRAP=y | ||
186 | |||
187 | # | ||
188 | # Boot options | ||
189 | # | ||
190 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
191 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
192 | CONFIG_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 | # | ||
202 | CONFIG_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 | # | ||
209 | CONFIG_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 | # | ||
222 | CONFIG_NET=y | ||
223 | |||
224 | # | ||
225 | # Networking options | ||
226 | # | ||
227 | CONFIG_PACKET=y | ||
228 | # CONFIG_PACKET_MMAP is not set | ||
229 | CONFIG_UNIX=y | ||
230 | # CONFIG_NET_KEY is not set | ||
231 | CONFIG_INET=y | ||
232 | # CONFIG_IP_MULTICAST is not set | ||
233 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
234 | CONFIG_IP_FIB_HASH=y | ||
235 | CONFIG_IP_PNP=y | ||
236 | # CONFIG_IP_PNP_DHCP is not set | ||
237 | CONFIG_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 | ||
247 | CONFIG_INET_DIAG=y | ||
248 | CONFIG_INET_TCP_DIAG=y | ||
249 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
250 | CONFIG_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 | # | ||
297 | CONFIG_STANDALONE=y | ||
298 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
299 | CONFIG_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 | # | ||
310 | CONFIG_MTD=y | ||
311 | # CONFIG_MTD_DEBUG is not set | ||
312 | # CONFIG_MTD_CONCAT is not set | ||
313 | CONFIG_MTD_PARTITIONS=y | ||
314 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
315 | CONFIG_MTD_CMDLINE_PARTS=y | ||
316 | # CONFIG_MTD_AFS_PARTS is not set | ||
317 | |||
318 | # | ||
319 | # User Modules And Translation Layers | ||
320 | # | ||
321 | CONFIG_MTD_CHAR=y | ||
322 | CONFIG_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 | # | ||
331 | CONFIG_MTD_CFI=y | ||
332 | CONFIG_MTD_JEDECPROBE=y | ||
333 | CONFIG_MTD_GEN_PROBE=y | ||
334 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
335 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
336 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
337 | CONFIG_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 | ||
341 | CONFIG_MTD_CFI_I1=y | ||
342 | CONFIG_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 | ||
346 | CONFIG_MTD_CFI_AMDSTD=y | ||
347 | CONFIG_MTD_CFI_AMDSTD_RETRY=0 | ||
348 | # CONFIG_MTD_CFI_STAA is not set | ||
349 | CONFIG_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 | ||
359 | CONFIG_MTD_PHYSMAP=y | ||
360 | CONFIG_MTD_PHYSMAP_START=0x10000000 | ||
361 | CONFIG_MTD_PHYSMAP_LEN=0x200000 | ||
362 | CONFIG_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 | ||
382 | CONFIG_MTD_AT91_DATAFLASH=y | ||
383 | CONFIG_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 | ||
411 | CONFIG_BLK_DEV_RAM=y | ||
412 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
413 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
414 | CONFIG_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 | # | ||
450 | CONFIG_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 | # | ||
464 | CONFIG_NET_ETHERNET=y | ||
465 | CONFIG_MII=y | ||
466 | CONFIG_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 | # | ||
511 | CONFIG_INPUT=y | ||
512 | |||
513 | # | ||
514 | # Userland interfaces | ||
515 | # | ||
516 | CONFIG_INPUT_MOUSEDEV=y | ||
517 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
518 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
519 | CONFIG_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 | # | ||
543 | CONFIG_VT=y | ||
544 | CONFIG_VT_CONSOLE=y | ||
545 | CONFIG_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 | # | ||
556 | CONFIG_SERIAL_AT91=y | ||
557 | CONFIG_SERIAL_AT91_CONSOLE=y | ||
558 | # CONFIG_SERIAL_AT91_TTYAT is not set | ||
559 | CONFIG_SERIAL_CORE=y | ||
560 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
561 | CONFIG_UNIX98_PTYS=y | ||
562 | CONFIG_LEGACY_PTYS=y | ||
563 | CONFIG_LEGACY_PTY_COUNT=256 | ||
564 | |||
565 | # | ||
566 | # IPMI | ||
567 | # | ||
568 | # CONFIG_IPMI_HANDLER is not set | ||
569 | |||
570 | # | ||
571 | # Watchdog Cards | ||
572 | # | ||
573 | CONFIG_WATCHDOG=y | ||
574 | CONFIG_WATCHDOG_NOWAYOUT=y | ||
575 | |||
576 | # | ||
577 | # Watchdog Device Drivers | ||
578 | # | ||
579 | # CONFIG_SOFT_WATCHDOG is not set | ||
580 | CONFIG_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 | ||
588 | CONFIG_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 | ||
609 | CONFIG_AT91_SPI=y | ||
610 | CONFIG_AT91_SPIDEV=y | ||
611 | |||
612 | # | ||
613 | # I2C support | ||
614 | # | ||
615 | CONFIG_I2C=y | ||
616 | CONFIG_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 | # | ||
628 | CONFIG_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 | # | ||
653 | CONFIG_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 | ||
716 | CONFIG_DUMMY_CONSOLE=y | ||
717 | |||
718 | # | ||
719 | # Sound | ||
720 | # | ||
721 | # CONFIG_SOUND is not set | ||
722 | |||
723 | # | ||
724 | # USB support | ||
725 | # | ||
726 | CONFIG_USB_ARCH_HAS_HCD=y | ||
727 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
728 | CONFIG_USB=y | ||
729 | CONFIG_USB_DEBUG=y | ||
730 | |||
731 | # | ||
732 | # Miscellaneous USB options | ||
733 | # | ||
734 | CONFIG_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 | ||
743 | CONFIG_USB_OHCI_HCD=y | ||
744 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
745 | CONFIG_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 | ||
809 | CONFIG_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 | # | ||
844 | CONFIG_USB_GADGET=y | ||
845 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
846 | CONFIG_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 | ||
852 | CONFIG_USB_GADGET_AT91=y | ||
853 | CONFIG_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 | # | ||
865 | CONFIG_MMC=y | ||
866 | # CONFIG_MMC_DEBUG is not set | ||
867 | CONFIG_MMC_BLOCK=y | ||
868 | # CONFIG_MMC_WBSD is not set | ||
869 | CONFIG_MMC_AT91RM9200=y | ||
870 | |||
871 | # | ||
872 | # File systems | ||
873 | # | ||
874 | CONFIG_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 | ||
885 | CONFIG_INOTIFY=y | ||
886 | # CONFIG_QUOTA is not set | ||
887 | CONFIG_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 | # | ||
908 | CONFIG_PROC_FS=y | ||
909 | CONFIG_SYSFS=y | ||
910 | CONFIG_TMPFS=y | ||
911 | # CONFIG_HUGETLB_PAGE is not set | ||
912 | CONFIG_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 | ||
927 | CONFIG_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 | ||
950 | CONFIG_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 | ||
966 | CONFIG_DEBUG_KERNEL=y | ||
967 | # CONFIG_MAGIC_SYSRQ is not set | ||
968 | CONFIG_LOG_BUF_SHIFT=14 | ||
969 | CONFIG_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 | ||
975 | CONFIG_DEBUG_BUGVERBOSE=y | ||
976 | # CONFIG_DEBUG_INFO is not set | ||
977 | # CONFIG_DEBUG_FS is not set | ||
978 | # CONFIG_DEBUG_VM is not set | ||
979 | CONFIG_FRAME_POINTER=y | ||
980 | # CONFIG_RCU_TORTURE_TEST is not set | ||
981 | CONFIG_DEBUG_USER=y | ||
982 | # CONFIG_DEBUG_WAITQ is not set | ||
983 | # CONFIG_DEBUG_ERRORS is not set | ||
984 | CONFIG_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 | ||
1007 | CONFIG_CRC32=y | ||
1008 | # CONFIG_LIBCRC32C is not set | ||
1009 | CONFIG_ZLIB_INFLATE=y | ||
diff --git a/arch/arm/configs/at91rm9200ek_defconfig b/arch/arm/configs/at91rm9200ek_defconfig new file mode 100644 index 0000000000..20838ccf1d --- /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 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_MMU=y | ||
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | |||
12 | # | ||
13 | # Code maturity level options | ||
14 | # | ||
15 | CONFIG_EXPERIMENTAL=y | ||
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | ||
24 | # CONFIG_LOCALVERSION_AUTO is not set | ||
25 | # CONFIG_SWAP is not set | ||
26 | CONFIG_SYSVIPC=y | ||
27 | # CONFIG_POSIX_MQUEUE is not set | ||
28 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
29 | CONFIG_SYSCTL=y | ||
30 | # CONFIG_AUDIT is not set | ||
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | ||
34 | CONFIG_INITRAMFS_SOURCE="" | ||
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
36 | # CONFIG_EMBEDDED is not set | ||
37 | CONFIG_KALLSYMS=y | ||
38 | # CONFIG_KALLSYMS_ALL is not set | ||
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
40 | CONFIG_PRINTK=y | ||
41 | CONFIG_BUG=y | ||
42 | CONFIG_BASE_FULL=y | ||
43 | CONFIG_FUTEX=y | ||
44 | CONFIG_EPOLL=y | ||
45 | CONFIG_SHMEM=y | ||
46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
47 | CONFIG_CC_ALIGN_LABELS=0 | ||
48 | CONFIG_CC_ALIGN_LOOPS=0 | ||
49 | CONFIG_CC_ALIGN_JUMPS=0 | ||
50 | # CONFIG_TINY_SHMEM is not set | ||
51 | CONFIG_BASE_SMALL=0 | ||
52 | |||
53 | # | ||
54 | # Loadable module support | ||
55 | # | ||
56 | CONFIG_MODULES=y | ||
57 | CONFIG_MODULE_UNLOAD=y | ||
58 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
59 | CONFIG_OBSOLETE_MODPARM=y | ||
60 | # CONFIG_MODVERSIONS is not set | ||
61 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
62 | CONFIG_KMOD=y | ||
63 | |||
64 | # | ||
65 | # Block layer | ||
66 | # | ||
67 | |||
68 | # | ||
69 | # IO Schedulers | ||
70 | # | ||
71 | CONFIG_IOSCHED_NOOP=y | ||
72 | CONFIG_IOSCHED_AS=y | ||
73 | # CONFIG_IOSCHED_DEADLINE is not set | ||
74 | # CONFIG_IOSCHED_CFQ is not set | ||
75 | CONFIG_DEFAULT_AS=y | ||
76 | # CONFIG_DEFAULT_DEADLINE is not set | ||
77 | # CONFIG_DEFAULT_CFQ is not set | ||
78 | # CONFIG_DEFAULT_NOOP is not set | ||
79 | CONFIG_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 | ||
107 | CONFIG_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=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 | # | ||
127 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | ||
128 | |||
129 | # | ||
130 | # Processor Type | ||
131 | # | ||
132 | CONFIG_CPU_32=y | ||
133 | CONFIG_CPU_ARM920T=y | ||
134 | CONFIG_CPU_32v4=y | ||
135 | CONFIG_CPU_ABRT_EV4T=y | ||
136 | CONFIG_CPU_CACHE_V4WT=y | ||
137 | CONFIG_CPU_CACHE_VIVT=y | ||
138 | CONFIG_CPU_COPY_V4WB=y | ||
139 | CONFIG_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 | # | ||
152 | CONFIG_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 | ||
165 | CONFIG_SELECT_MEMORY_MODEL=y | ||
166 | CONFIG_FLATMEM_MANUAL=y | ||
167 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
168 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
169 | CONFIG_FLATMEM=y | ||
170 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
171 | # CONFIG_SPARSEMEM_STATIC is not set | ||
172 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
173 | CONFIG_LEDS=y | ||
174 | CONFIG_LEDS_TIMER=y | ||
175 | CONFIG_LEDS_CPU=y | ||
176 | CONFIG_ALIGNMENT_TRAP=y | ||
177 | |||
178 | # | ||
179 | # Boot options | ||
180 | # | ||
181 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
182 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
183 | CONFIG_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 | # | ||
193 | CONFIG_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 | # | ||
200 | CONFIG_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 | # | ||
213 | CONFIG_NET=y | ||
214 | |||
215 | # | ||
216 | # Networking options | ||
217 | # | ||
218 | CONFIG_PACKET=y | ||
219 | # CONFIG_PACKET_MMAP is not set | ||
220 | CONFIG_UNIX=y | ||
221 | # CONFIG_NET_KEY is not set | ||
222 | CONFIG_INET=y | ||
223 | # CONFIG_IP_MULTICAST is not set | ||
224 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
225 | CONFIG_IP_FIB_HASH=y | ||
226 | CONFIG_IP_PNP=y | ||
227 | # CONFIG_IP_PNP_DHCP is not set | ||
228 | CONFIG_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 | ||
238 | CONFIG_INET_DIAG=y | ||
239 | CONFIG_INET_TCP_DIAG=y | ||
240 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
241 | CONFIG_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 | # | ||
288 | CONFIG_STANDALONE=y | ||
289 | CONFIG_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 | # | ||
301 | CONFIG_MTD=y | ||
302 | # CONFIG_MTD_DEBUG is not set | ||
303 | # CONFIG_MTD_CONCAT is not set | ||
304 | CONFIG_MTD_PARTITIONS=y | ||
305 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
306 | CONFIG_MTD_CMDLINE_PARTS=y | ||
307 | # CONFIG_MTD_AFS_PARTS is not set | ||
308 | |||
309 | # | ||
310 | # User Modules And Translation Layers | ||
311 | # | ||
312 | CONFIG_MTD_CHAR=y | ||
313 | CONFIG_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 | # | ||
322 | CONFIG_MTD_CFI=y | ||
323 | CONFIG_MTD_JEDECPROBE=y | ||
324 | CONFIG_MTD_GEN_PROBE=y | ||
325 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
326 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
327 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
328 | CONFIG_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 | ||
332 | CONFIG_MTD_CFI_I1=y | ||
333 | CONFIG_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 | ||
337 | CONFIG_MTD_CFI_AMDSTD=y | ||
338 | CONFIG_MTD_CFI_AMDSTD_RETRY=0 | ||
339 | # CONFIG_MTD_CFI_STAA is not set | ||
340 | CONFIG_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 | ||
350 | CONFIG_MTD_PHYSMAP=y | ||
351 | CONFIG_MTD_PHYSMAP_START=0x10000000 | ||
352 | CONFIG_MTD_PHYSMAP_LEN=0x800000 | ||
353 | CONFIG_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 | ||
373 | CONFIG_MTD_AT91_DATAFLASH=y | ||
374 | CONFIG_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 | ||
402 | CONFIG_BLK_DEV_RAM=y | ||
403 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
404 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
405 | CONFIG_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 | # | ||
436 | CONFIG_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 | # | ||
450 | CONFIG_NET_ETHERNET=y | ||
451 | CONFIG_MII=y | ||
452 | CONFIG_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 | # | ||
492 | CONFIG_INPUT=y | ||
493 | |||
494 | # | ||
495 | # Userland interfaces | ||
496 | # | ||
497 | CONFIG_INPUT_MOUSEDEV=y | ||
498 | # CONFIG_INPUT_MOUSEDEV_PSAUX is not set | ||
499 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
500 | CONFIG_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 | # | ||
524 | CONFIG_VT=y | ||
525 | CONFIG_VT_CONSOLE=y | ||
526 | CONFIG_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 | # | ||
537 | CONFIG_SERIAL_AT91=y | ||
538 | CONFIG_SERIAL_AT91_CONSOLE=y | ||
539 | # CONFIG_SERIAL_AT91_TTYAT is not set | ||
540 | CONFIG_SERIAL_CORE=y | ||
541 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
542 | CONFIG_UNIX98_PTYS=y | ||
543 | CONFIG_LEGACY_PTYS=y | ||
544 | CONFIG_LEGACY_PTY_COUNT=256 | ||
545 | |||
546 | # | ||
547 | # IPMI | ||
548 | # | ||
549 | # CONFIG_IPMI_HANDLER is not set | ||
550 | |||
551 | # | ||
552 | # Watchdog Cards | ||
553 | # | ||
554 | CONFIG_WATCHDOG=y | ||
555 | CONFIG_WATCHDOG_NOWAYOUT=y | ||
556 | |||
557 | # | ||
558 | # Watchdog Device Drivers | ||
559 | # | ||
560 | # CONFIG_SOFT_WATCHDOG is not set | ||
561 | CONFIG_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 | ||
569 | CONFIG_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 | ||
583 | CONFIG_AT91_SPI=y | ||
584 | CONFIG_AT91_SPIDEV=y | ||
585 | |||
586 | # | ||
587 | # I2C support | ||
588 | # | ||
589 | CONFIG_I2C=y | ||
590 | CONFIG_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 | # | ||
602 | CONFIG_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 | # | ||
627 | CONFIG_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 | # | ||
684 | CONFIG_FB=y | ||
685 | CONFIG_FB_CFB_FILLRECT=y | ||
686 | CONFIG_FB_CFB_COPYAREA=y | ||
687 | CONFIG_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 | ||
691 | CONFIG_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 | ||
698 | CONFIG_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 | # | ||
715 | CONFIG_USB_ARCH_HAS_HCD=y | ||
716 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
717 | CONFIG_USB=y | ||
718 | CONFIG_USB_DEBUG=y | ||
719 | |||
720 | # | ||
721 | # Miscellaneous USB options | ||
722 | # | ||
723 | CONFIG_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 | ||
732 | CONFIG_USB_OHCI_HCD=y | ||
733 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
734 | CONFIG_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 | ||
798 | CONFIG_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 | # | ||
833 | CONFIG_USB_GADGET=y | ||
834 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
835 | CONFIG_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 | ||
841 | CONFIG_USB_GADGET_AT91=y | ||
842 | CONFIG_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 | # | ||
854 | CONFIG_MMC=y | ||
855 | # CONFIG_MMC_DEBUG is not set | ||
856 | CONFIG_MMC_BLOCK=y | ||
857 | # CONFIG_MMC_WBSD is not set | ||
858 | CONFIG_MMC_AT91RM9200=y | ||
859 | |||
860 | # | ||
861 | # File systems | ||
862 | # | ||
863 | CONFIG_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 | ||
874 | CONFIG_INOTIFY=y | ||
875 | # CONFIG_QUOTA is not set | ||
876 | CONFIG_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 | # | ||
897 | CONFIG_PROC_FS=y | ||
898 | CONFIG_SYSFS=y | ||
899 | CONFIG_TMPFS=y | ||
900 | # CONFIG_HUGETLB_PAGE is not set | ||
901 | CONFIG_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 | ||
916 | CONFIG_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 | ||
939 | CONFIG_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 | ||
955 | CONFIG_DEBUG_KERNEL=y | ||
956 | # CONFIG_MAGIC_SYSRQ is not set | ||
957 | CONFIG_LOG_BUF_SHIFT=14 | ||
958 | CONFIG_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 | ||
964 | CONFIG_DEBUG_BUGVERBOSE=y | ||
965 | # CONFIG_DEBUG_INFO is not set | ||
966 | # CONFIG_DEBUG_FS is not set | ||
967 | # CONFIG_DEBUG_VM is not set | ||
968 | CONFIG_FRAME_POINTER=y | ||
969 | # CONFIG_RCU_TORTURE_TEST is not set | ||
970 | CONFIG_DEBUG_USER=y | ||
971 | # CONFIG_DEBUG_WAITQ is not set | ||
972 | # CONFIG_DEBUG_ERRORS is not set | ||
973 | CONFIG_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 | ||
996 | CONFIG_CRC32=y | ||
997 | # CONFIG_LIBCRC32C is not set | ||
998 | CONFIG_ZLIB_INFLATE=y | ||
diff --git a/arch/arm/configs/badge4_defconfig b/arch/arm/configs/badge4_defconfig index 5d92af975d..cfe6bd8e81 100644 --- a/arch/arm/configs/badge4_defconfig +++ b/arch/arm/configs/badge4_defconfig | |||
@@ -66,7 +66,6 @@ CONFIG_KMOD=y | |||
66 | # CONFIG_ARCH_CLPS711X is not set | 66 | # CONFIG_ARCH_CLPS711X is not set |
67 | # CONFIG_ARCH_CO285 is not set | 67 | # CONFIG_ARCH_CO285 is not set |
68 | # CONFIG_ARCH_EBSA110 is not set | 68 | # CONFIG_ARCH_EBSA110 is not set |
69 | # CONFIG_ARCH_CAMELOT is not set | ||
70 | # CONFIG_ARCH_FOOTBRIDGE is not set | 69 | # CONFIG_ARCH_FOOTBRIDGE is not set |
71 | # CONFIG_ARCH_INTEGRATOR is not set | 70 | # CONFIG_ARCH_INTEGRATOR is not set |
72 | # CONFIG_ARCH_IOP3XX is not set | 71 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/bast_defconfig b/arch/arm/configs/bast_defconfig index 35e3a99bcb..6886001b53 100644 --- a/arch/arm/configs/bast_defconfig +++ b/arch/arm/configs/bast_defconfig | |||
@@ -64,7 +64,6 @@ CONFIG_KMOD=y | |||
64 | # CONFIG_ARCH_CLPS711X is not set | 64 | # CONFIG_ARCH_CLPS711X is not set |
65 | # CONFIG_ARCH_CO285 is not set | 65 | # CONFIG_ARCH_CO285 is not set |
66 | # CONFIG_ARCH_EBSA110 is not set | 66 | # CONFIG_ARCH_EBSA110 is not set |
67 | # CONFIG_ARCH_CAMELOT is not set | ||
68 | # CONFIG_ARCH_FOOTBRIDGE is not set | 67 | # CONFIG_ARCH_FOOTBRIDGE is not set |
69 | # CONFIG_ARCH_INTEGRATOR is not set | 68 | # CONFIG_ARCH_INTEGRATOR is not set |
70 | # CONFIG_ARCH_IOP3XX is not set | 69 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/cerfcube_defconfig b/arch/arm/configs/cerfcube_defconfig index d8fe0f4040..f81a60005c 100644 --- a/arch/arm/configs/cerfcube_defconfig +++ b/arch/arm/configs/cerfcube_defconfig | |||
@@ -65,7 +65,6 @@ CONFIG_KMOD=y | |||
65 | # CONFIG_ARCH_CLPS711X is not set | 65 | # CONFIG_ARCH_CLPS711X is not set |
66 | # CONFIG_ARCH_CO285 is not set | 66 | # CONFIG_ARCH_CO285 is not set |
67 | # CONFIG_ARCH_EBSA110 is not set | 67 | # CONFIG_ARCH_EBSA110 is not set |
68 | # CONFIG_ARCH_CAMELOT is not set | ||
69 | # CONFIG_ARCH_FOOTBRIDGE is not set | 68 | # CONFIG_ARCH_FOOTBRIDGE is not set |
70 | # CONFIG_ARCH_INTEGRATOR is not set | 69 | # CONFIG_ARCH_INTEGRATOR is not set |
71 | # CONFIG_ARCH_IOP3XX is not set | 70 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/clps7500_defconfig b/arch/arm/configs/clps7500_defconfig index 9087583714..af9ae53891 100644 --- a/arch/arm/configs/clps7500_defconfig +++ b/arch/arm/configs/clps7500_defconfig | |||
@@ -57,7 +57,6 @@ CONFIG_ARCH_CLPS7500=y | |||
57 | # CONFIG_ARCH_CLPS711X is not set | 57 | # CONFIG_ARCH_CLPS711X is not set |
58 | # CONFIG_ARCH_CO285 is not set | 58 | # CONFIG_ARCH_CO285 is not set |
59 | # CONFIG_ARCH_EBSA110 is not set | 59 | # CONFIG_ARCH_EBSA110 is not set |
60 | # CONFIG_ARCH_CAMELOT is not set | ||
61 | # CONFIG_ARCH_FOOTBRIDGE is not set | 60 | # CONFIG_ARCH_FOOTBRIDGE is not set |
62 | # CONFIG_ARCH_INTEGRATOR is not set | 61 | # CONFIG_ARCH_INTEGRATOR is not set |
63 | # CONFIG_ARCH_IOP3XX is not set | 62 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig index 40dfe07a8b..15468a0cf7 100644 --- a/arch/arm/configs/collie_defconfig +++ b/arch/arm/configs/collie_defconfig | |||
@@ -71,7 +71,6 @@ CONFIG_KMOD=y | |||
71 | # CONFIG_ARCH_CLPS711X is not set | 71 | # CONFIG_ARCH_CLPS711X is not set |
72 | # CONFIG_ARCH_CO285 is not set | 72 | # CONFIG_ARCH_CO285 is not set |
73 | # CONFIG_ARCH_EBSA110 is not set | 73 | # CONFIG_ARCH_EBSA110 is not set |
74 | # CONFIG_ARCH_CAMELOT is not set | ||
75 | # CONFIG_ARCH_FOOTBRIDGE is not set | 74 | # CONFIG_ARCH_FOOTBRIDGE is not set |
76 | # CONFIG_ARCH_INTEGRATOR is not set | 75 | # CONFIG_ARCH_INTEGRATOR is not set |
77 | # CONFIG_ARCH_IOP3XX is not set | 76 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/corgi_defconfig b/arch/arm/configs/corgi_defconfig index 06229026f7..3c3461e833 100644 --- a/arch/arm/configs/corgi_defconfig +++ b/arch/arm/configs/corgi_defconfig | |||
@@ -87,7 +87,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
87 | # CONFIG_ARCH_CLPS711X is not set | 87 | # CONFIG_ARCH_CLPS711X is not set |
88 | # CONFIG_ARCH_CO285 is not set | 88 | # CONFIG_ARCH_CO285 is not set |
89 | # CONFIG_ARCH_EBSA110 is not set | 89 | # CONFIG_ARCH_EBSA110 is not set |
90 | # CONFIG_ARCH_CAMELOT is not set | ||
91 | # CONFIG_ARCH_FOOTBRIDGE is not set | 90 | # CONFIG_ARCH_FOOTBRIDGE is not set |
92 | # CONFIG_ARCH_INTEGRATOR is not set | 91 | # CONFIG_ARCH_INTEGRATOR is not set |
93 | # CONFIG_ARCH_IOP3XX is not set | 92 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/csb337_defconfig b/arch/arm/configs/csb337_defconfig new file mode 100644 index 0000000000..885a318483 --- /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 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_MMU=y | ||
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | |||
12 | # | ||
13 | # Code maturity level options | ||
14 | # | ||
15 | CONFIG_EXPERIMENTAL=y | ||
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | ||
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | # CONFIG_SWAP is not set | ||
26 | CONFIG_SYSVIPC=y | ||
27 | # CONFIG_POSIX_MQUEUE is not set | ||
28 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
29 | CONFIG_SYSCTL=y | ||
30 | # CONFIG_AUDIT is not set | ||
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | ||
34 | CONFIG_INITRAMFS_SOURCE="" | ||
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
36 | # CONFIG_EMBEDDED is not set | ||
37 | CONFIG_KALLSYMS=y | ||
38 | # CONFIG_KALLSYMS_ALL is not set | ||
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
40 | CONFIG_PRINTK=y | ||
41 | CONFIG_BUG=y | ||
42 | CONFIG_BASE_FULL=y | ||
43 | CONFIG_FUTEX=y | ||
44 | CONFIG_EPOLL=y | ||
45 | CONFIG_SHMEM=y | ||
46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
47 | CONFIG_CC_ALIGN_LABELS=0 | ||
48 | CONFIG_CC_ALIGN_LOOPS=0 | ||
49 | CONFIG_CC_ALIGN_JUMPS=0 | ||
50 | # CONFIG_TINY_SHMEM is not set | ||
51 | CONFIG_BASE_SMALL=0 | ||
52 | |||
53 | # | ||
54 | # Loadable module support | ||
55 | # | ||
56 | CONFIG_MODULES=y | ||
57 | CONFIG_MODULE_UNLOAD=y | ||
58 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
59 | CONFIG_OBSOLETE_MODPARM=y | ||
60 | # CONFIG_MODVERSIONS is not set | ||
61 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
62 | CONFIG_KMOD=y | ||
63 | |||
64 | # | ||
65 | # Block layer | ||
66 | # | ||
67 | |||
68 | # | ||
69 | # IO Schedulers | ||
70 | # | ||
71 | CONFIG_IOSCHED_NOOP=y | ||
72 | CONFIG_IOSCHED_AS=y | ||
73 | CONFIG_IOSCHED_DEADLINE=y | ||
74 | CONFIG_IOSCHED_CFQ=y | ||
75 | CONFIG_DEFAULT_AS=y | ||
76 | # CONFIG_DEFAULT_DEADLINE is not set | ||
77 | # CONFIG_DEFAULT_CFQ is not set | ||
78 | # CONFIG_DEFAULT_NOOP is not set | ||
79 | CONFIG_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 | ||
107 | CONFIG_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=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 | # | ||
127 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | ||
128 | |||
129 | # | ||
130 | # Processor Type | ||
131 | # | ||
132 | CONFIG_CPU_32=y | ||
133 | CONFIG_CPU_ARM920T=y | ||
134 | CONFIG_CPU_32v4=y | ||
135 | CONFIG_CPU_ABRT_EV4T=y | ||
136 | CONFIG_CPU_CACHE_V4WT=y | ||
137 | CONFIG_CPU_CACHE_VIVT=y | ||
138 | CONFIG_CPU_COPY_V4WB=y | ||
139 | CONFIG_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 | # | ||
152 | CONFIG_ISA_DMA_API=y | ||
153 | |||
154 | # | ||
155 | # PCCARD (PCMCIA/CardBus) support | ||
156 | # | ||
157 | CONFIG_PCCARD=y | ||
158 | # CONFIG_PCMCIA_DEBUG is not set | ||
159 | CONFIG_PCMCIA=y | ||
160 | CONFIG_PCMCIA_LOAD_CIS=y | ||
161 | CONFIG_PCMCIA_IOCTL=y | ||
162 | |||
163 | # | ||
164 | # PC-card bridges | ||
165 | # | ||
166 | CONFIG_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 | ||
174 | CONFIG_SELECT_MEMORY_MODEL=y | ||
175 | CONFIG_FLATMEM_MANUAL=y | ||
176 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
177 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
178 | CONFIG_FLATMEM=y | ||
179 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
180 | # CONFIG_SPARSEMEM_STATIC is not set | ||
181 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
182 | CONFIG_LEDS=y | ||
183 | CONFIG_LEDS_TIMER=y | ||
184 | CONFIG_LEDS_CPU=y | ||
185 | CONFIG_ALIGNMENT_TRAP=y | ||
186 | |||
187 | # | ||
188 | # Boot options | ||
189 | # | ||
190 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
191 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
192 | CONFIG_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 | # | ||
202 | CONFIG_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 | # | ||
209 | CONFIG_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 | # | ||
222 | CONFIG_NET=y | ||
223 | |||
224 | # | ||
225 | # Networking options | ||
226 | # | ||
227 | CONFIG_PACKET=y | ||
228 | # CONFIG_PACKET_MMAP is not set | ||
229 | CONFIG_UNIX=y | ||
230 | # CONFIG_NET_KEY is not set | ||
231 | CONFIG_INET=y | ||
232 | # CONFIG_IP_MULTICAST is not set | ||
233 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
234 | CONFIG_IP_FIB_HASH=y | ||
235 | CONFIG_IP_PNP=y | ||
236 | CONFIG_IP_PNP_DHCP=y | ||
237 | CONFIG_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 | ||
247 | CONFIG_INET_DIAG=y | ||
248 | CONFIG_INET_TCP_DIAG=y | ||
249 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
250 | CONFIG_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 | # | ||
297 | CONFIG_STANDALONE=y | ||
298 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
299 | CONFIG_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 | # | ||
310 | CONFIG_MTD=y | ||
311 | # CONFIG_MTD_DEBUG is not set | ||
312 | # CONFIG_MTD_CONCAT is not set | ||
313 | CONFIG_MTD_PARTITIONS=y | ||
314 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
315 | CONFIG_MTD_CMDLINE_PARTS=y | ||
316 | # CONFIG_MTD_AFS_PARTS is not set | ||
317 | |||
318 | # | ||
319 | # User Modules And Translation Layers | ||
320 | # | ||
321 | CONFIG_MTD_CHAR=y | ||
322 | CONFIG_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 | # | ||
331 | CONFIG_MTD_CFI=y | ||
332 | # CONFIG_MTD_JEDECPROBE is not set | ||
333 | CONFIG_MTD_GEN_PROBE=y | ||
334 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
335 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
336 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
337 | CONFIG_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 | ||
341 | CONFIG_MTD_CFI_I1=y | ||
342 | CONFIG_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=y | ||
346 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
347 | # CONFIG_MTD_CFI_STAA is not set | ||
348 | CONFIG_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 | ||
361 | CONFIG_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 | ||
403 | CONFIG_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 | ||
407 | CONFIG_BLK_DEV_RAM=y | ||
408 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
409 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
410 | CONFIG_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 | ||
423 | CONFIG_SCSI=y | ||
424 | CONFIG_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 | # | ||
488 | CONFIG_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 | # | ||
502 | CONFIG_NET_ETHERNET=y | ||
503 | CONFIG_MII=y | ||
504 | CONFIG_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 | # | ||
549 | CONFIG_INPUT=y | ||
550 | |||
551 | # | ||
552 | # Userland interfaces | ||
553 | # | ||
554 | CONFIG_INPUT_MOUSEDEV=y | ||
555 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
556 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
557 | CONFIG_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 | # | ||
581 | CONFIG_VT=y | ||
582 | CONFIG_VT_CONSOLE=y | ||
583 | CONFIG_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 | # | ||
594 | CONFIG_SERIAL_AT91=y | ||
595 | CONFIG_SERIAL_AT91_CONSOLE=y | ||
596 | # CONFIG_SERIAL_AT91_TTYAT is not set | ||
597 | CONFIG_SERIAL_CORE=y | ||
598 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
599 | CONFIG_UNIX98_PTYS=y | ||
600 | CONFIG_LEGACY_PTYS=y | ||
601 | CONFIG_LEGACY_PTY_COUNT=256 | ||
602 | |||
603 | # | ||
604 | # IPMI | ||
605 | # | ||
606 | # CONFIG_IPMI_HANDLER is not set | ||
607 | |||
608 | # | ||
609 | # Watchdog Cards | ||
610 | # | ||
611 | CONFIG_WATCHDOG=y | ||
612 | CONFIG_WATCHDOG_NOWAYOUT=y | ||
613 | |||
614 | # | ||
615 | # Watchdog Device Drivers | ||
616 | # | ||
617 | # CONFIG_SOFT_WATCHDOG is not set | ||
618 | CONFIG_AT91_WATCHDOG=y | ||
619 | |||
620 | # | ||
621 | # USB-based Watchdog Cards | ||
622 | # | ||
623 | # CONFIG_USBPCWATCHDOG is not set | ||
624 | # CONFIG_NVRAM is not set | ||
625 | CONFIG_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 | ||
647 | CONFIG_AT91_SPI=y | ||
648 | CONFIG_AT91_SPIDEV=y | ||
649 | |||
650 | # | ||
651 | # I2C support | ||
652 | # | ||
653 | CONFIG_I2C=y | ||
654 | CONFIG_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 | # | ||
666 | CONFIG_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 | # | ||
691 | CONFIG_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 | ||
754 | CONFIG_DUMMY_CONSOLE=y | ||
755 | |||
756 | # | ||
757 | # Sound | ||
758 | # | ||
759 | # CONFIG_SOUND is not set | ||
760 | |||
761 | # | ||
762 | # USB support | ||
763 | # | ||
764 | CONFIG_USB_ARCH_HAS_HCD=y | ||
765 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
766 | CONFIG_USB=y | ||
767 | CONFIG_USB_DEBUG=y | ||
768 | |||
769 | # | ||
770 | # Miscellaneous USB options | ||
771 | # | ||
772 | CONFIG_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 | ||
781 | CONFIG_USB_OHCI_HCD=y | ||
782 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
783 | CONFIG_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 | # | ||
799 | CONFIG_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 | ||
856 | CONFIG_USB_MON=y | ||
857 | |||
858 | # | ||
859 | # USB port drivers | ||
860 | # | ||
861 | |||
862 | # | ||
863 | # USB Serial Converter support | ||
864 | # | ||
865 | CONFIG_USB_SERIAL=y | ||
866 | CONFIG_USB_SERIAL_CONSOLE=y | ||
867 | CONFIG_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 | ||
876 | CONFIG_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 | ||
885 | CONFIG_USB_SERIAL_KEYSPAN=y | ||
886 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y | ||
887 | CONFIG_USB_SERIAL_KEYSPAN_USA28=y | ||
888 | CONFIG_USB_SERIAL_KEYSPAN_USA28X=y | ||
889 | CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y | ||
890 | CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y | ||
891 | CONFIG_USB_SERIAL_KEYSPAN_USA19=y | ||
892 | CONFIG_USB_SERIAL_KEYSPAN_USA18X=y | ||
893 | CONFIG_USB_SERIAL_KEYSPAN_USA19W=y | ||
894 | CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y | ||
895 | CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y | ||
896 | CONFIG_USB_SERIAL_KEYSPAN_USA49W=y | ||
897 | CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | ||
898 | # CONFIG_USB_SERIAL_KLSI is not set | ||
899 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | ||
900 | CONFIG_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 | ||
909 | CONFIG_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=y | ||
936 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
937 | CONFIG_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 | ||
943 | CONFIG_USB_GADGET_AT91=y | ||
944 | CONFIG_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 | # | ||
956 | CONFIG_MMC=y | ||
957 | # CONFIG_MMC_DEBUG is not set | ||
958 | CONFIG_MMC_BLOCK=y | ||
959 | # CONFIG_MMC_WBSD is not set | ||
960 | CONFIG_MMC_AT91RM9200=y | ||
961 | |||
962 | # | ||
963 | # File systems | ||
964 | # | ||
965 | CONFIG_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 | ||
976 | CONFIG_INOTIFY=y | ||
977 | # CONFIG_QUOTA is not set | ||
978 | CONFIG_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 | # | ||
999 | CONFIG_PROC_FS=y | ||
1000 | CONFIG_SYSFS=y | ||
1001 | CONFIG_TMPFS=y | ||
1002 | # CONFIG_HUGETLB_PAGE is not set | ||
1003 | CONFIG_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 | ||
1018 | CONFIG_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 | # | ||
1028 | CONFIG_NFS_FS=y | ||
1029 | CONFIG_NFS_V3=y | ||
1030 | # CONFIG_NFS_V3_ACL is not set | ||
1031 | CONFIG_NFS_V4=y | ||
1032 | # CONFIG_NFS_DIRECTIO is not set | ||
1033 | # CONFIG_NFSD is not set | ||
1034 | CONFIG_ROOT_NFS=y | ||
1035 | CONFIG_LOCKD=y | ||
1036 | CONFIG_LOCKD_V4=y | ||
1037 | CONFIG_NFS_COMMON=y | ||
1038 | CONFIG_SUNRPC=y | ||
1039 | CONFIG_SUNRPC_GSS=y | ||
1040 | CONFIG_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 | ||
1053 | CONFIG_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 | ||
1069 | CONFIG_DEBUG_KERNEL=y | ||
1070 | # CONFIG_MAGIC_SYSRQ is not set | ||
1071 | CONFIG_LOG_BUF_SHIFT=14 | ||
1072 | CONFIG_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 | ||
1078 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1079 | # CONFIG_DEBUG_INFO is not set | ||
1080 | # CONFIG_DEBUG_FS is not set | ||
1081 | # CONFIG_DEBUG_VM is not set | ||
1082 | CONFIG_FRAME_POINTER=y | ||
1083 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1084 | CONFIG_DEBUG_USER=y | ||
1085 | # CONFIG_DEBUG_WAITQ is not set | ||
1086 | # CONFIG_DEBUG_ERRORS is not set | ||
1087 | CONFIG_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 | # | ||
1099 | CONFIG_CRYPTO=y | ||
1100 | # CONFIG_CRYPTO_HMAC is not set | ||
1101 | # CONFIG_CRYPTO_NULL is not set | ||
1102 | # CONFIG_CRYPTO_MD4 is not set | ||
1103 | CONFIG_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 | ||
1109 | CONFIG_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 | ||
1134 | CONFIG_CRC32=y | ||
1135 | # CONFIG_LIBCRC32C is not set | ||
1136 | CONFIG_ZLIB_INFLATE=y | ||
diff --git a/arch/arm/configs/csb637_defconfig b/arch/arm/configs/csb637_defconfig new file mode 100644 index 0000000000..95a96a5462 --- /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 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_MMU=y | ||
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | |||
12 | # | ||
13 | # Code maturity level options | ||
14 | # | ||
15 | CONFIG_EXPERIMENTAL=y | ||
16 | CONFIG_CLEAN_COMPILE=y | ||
17 | CONFIG_BROKEN_ON_SMP=y | ||
18 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | ||
24 | CONFIG_LOCALVERSION_AUTO=y | ||
25 | # CONFIG_SWAP is not set | ||
26 | CONFIG_SYSVIPC=y | ||
27 | # CONFIG_POSIX_MQUEUE is not set | ||
28 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
29 | CONFIG_SYSCTL=y | ||
30 | # CONFIG_AUDIT is not set | ||
31 | CONFIG_HOTPLUG=y | ||
32 | CONFIG_KOBJECT_UEVENT=y | ||
33 | # CONFIG_IKCONFIG is not set | ||
34 | CONFIG_INITRAMFS_SOURCE="" | ||
35 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
36 | # CONFIG_EMBEDDED is not set | ||
37 | CONFIG_KALLSYMS=y | ||
38 | # CONFIG_KALLSYMS_ALL is not set | ||
39 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
40 | CONFIG_PRINTK=y | ||
41 | CONFIG_BUG=y | ||
42 | CONFIG_BASE_FULL=y | ||
43 | CONFIG_FUTEX=y | ||
44 | CONFIG_EPOLL=y | ||
45 | CONFIG_SHMEM=y | ||
46 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
47 | CONFIG_CC_ALIGN_LABELS=0 | ||
48 | CONFIG_CC_ALIGN_LOOPS=0 | ||
49 | CONFIG_CC_ALIGN_JUMPS=0 | ||
50 | # CONFIG_TINY_SHMEM is not set | ||
51 | CONFIG_BASE_SMALL=0 | ||
52 | |||
53 | # | ||
54 | # Loadable module support | ||
55 | # | ||
56 | CONFIG_MODULES=y | ||
57 | CONFIG_MODULE_UNLOAD=y | ||
58 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
59 | CONFIG_OBSOLETE_MODPARM=y | ||
60 | # CONFIG_MODVERSIONS is not set | ||
61 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
62 | CONFIG_KMOD=y | ||
63 | |||
64 | # | ||
65 | # Block layer | ||
66 | # | ||
67 | |||
68 | # | ||
69 | # IO Schedulers | ||
70 | # | ||
71 | CONFIG_IOSCHED_NOOP=y | ||
72 | CONFIG_IOSCHED_AS=y | ||
73 | CONFIG_IOSCHED_DEADLINE=y | ||
74 | CONFIG_IOSCHED_CFQ=y | ||
75 | CONFIG_DEFAULT_AS=y | ||
76 | # CONFIG_DEFAULT_DEADLINE is not set | ||
77 | # CONFIG_DEFAULT_CFQ is not set | ||
78 | # CONFIG_DEFAULT_NOOP is not set | ||
79 | CONFIG_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 | ||
107 | CONFIG_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 | ||
119 | CONFIG_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 | # | ||
127 | CONFIG_AT91_PROGRAMMABLE_CLOCKS=y | ||
128 | |||
129 | # | ||
130 | # Processor Type | ||
131 | # | ||
132 | CONFIG_CPU_32=y | ||
133 | CONFIG_CPU_ARM920T=y | ||
134 | CONFIG_CPU_32v4=y | ||
135 | CONFIG_CPU_ABRT_EV4T=y | ||
136 | CONFIG_CPU_CACHE_V4WT=y | ||
137 | CONFIG_CPU_CACHE_VIVT=y | ||
138 | CONFIG_CPU_COPY_V4WB=y | ||
139 | CONFIG_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 | # | ||
152 | CONFIG_ISA_DMA_API=y | ||
153 | |||
154 | # | ||
155 | # PCCARD (PCMCIA/CardBus) support | ||
156 | # | ||
157 | CONFIG_PCCARD=y | ||
158 | # CONFIG_PCMCIA_DEBUG is not set | ||
159 | CONFIG_PCMCIA=y | ||
160 | CONFIG_PCMCIA_LOAD_CIS=y | ||
161 | CONFIG_PCMCIA_IOCTL=y | ||
162 | |||
163 | # | ||
164 | # PC-card bridges | ||
165 | # | ||
166 | CONFIG_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 | ||
174 | CONFIG_SELECT_MEMORY_MODEL=y | ||
175 | CONFIG_FLATMEM_MANUAL=y | ||
176 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
177 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
178 | CONFIG_FLATMEM=y | ||
179 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
180 | # CONFIG_SPARSEMEM_STATIC is not set | ||
181 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
182 | CONFIG_LEDS=y | ||
183 | CONFIG_LEDS_TIMER=y | ||
184 | CONFIG_LEDS_CPU=y | ||
185 | CONFIG_ALIGNMENT_TRAP=y | ||
186 | |||
187 | # | ||
188 | # Boot options | ||
189 | # | ||
190 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
191 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
192 | CONFIG_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 | # | ||
202 | CONFIG_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 | # | ||
209 | CONFIG_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 | # | ||
222 | CONFIG_NET=y | ||
223 | |||
224 | # | ||
225 | # Networking options | ||
226 | # | ||
227 | CONFIG_PACKET=y | ||
228 | # CONFIG_PACKET_MMAP is not set | ||
229 | CONFIG_UNIX=y | ||
230 | # CONFIG_NET_KEY is not set | ||
231 | CONFIG_INET=y | ||
232 | # CONFIG_IP_MULTICAST is not set | ||
233 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
234 | CONFIG_IP_FIB_HASH=y | ||
235 | CONFIG_IP_PNP=y | ||
236 | CONFIG_IP_PNP_DHCP=y | ||
237 | CONFIG_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 | ||
247 | CONFIG_INET_DIAG=y | ||
248 | CONFIG_INET_TCP_DIAG=y | ||
249 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
250 | CONFIG_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 | # | ||
297 | CONFIG_STANDALONE=y | ||
298 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
299 | CONFIG_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 | # | ||
310 | CONFIG_MTD=y | ||
311 | # CONFIG_MTD_DEBUG is not set | ||
312 | # CONFIG_MTD_CONCAT is not set | ||
313 | CONFIG_MTD_PARTITIONS=y | ||
314 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
315 | CONFIG_MTD_CMDLINE_PARTS=y | ||
316 | # CONFIG_MTD_AFS_PARTS is not set | ||
317 | |||
318 | # | ||
319 | # User Modules And Translation Layers | ||
320 | # | ||
321 | CONFIG_MTD_CHAR=y | ||
322 | CONFIG_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 | # | ||
331 | CONFIG_MTD_CFI=y | ||
332 | # CONFIG_MTD_JEDECPROBE is not set | ||
333 | CONFIG_MTD_GEN_PROBE=y | ||
334 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
335 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
336 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
337 | CONFIG_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 | ||
341 | CONFIG_MTD_CFI_I1=y | ||
342 | CONFIG_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=y | ||
346 | # CONFIG_MTD_CFI_AMDSTD is not set | ||
347 | # CONFIG_MTD_CFI_STAA is not set | ||
348 | CONFIG_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 | ||
361 | CONFIG_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 | ||
403 | CONFIG_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 | ||
407 | CONFIG_BLK_DEV_RAM=y | ||
408 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
409 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
410 | CONFIG_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 | ||
423 | CONFIG_SCSI=y | ||
424 | CONFIG_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 | # | ||
488 | CONFIG_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 | # | ||
502 | CONFIG_NET_ETHERNET=y | ||
503 | CONFIG_MII=y | ||
504 | CONFIG_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 | # | ||
549 | CONFIG_INPUT=y | ||
550 | |||
551 | # | ||
552 | # Userland interfaces | ||
553 | # | ||
554 | CONFIG_INPUT_MOUSEDEV=y | ||
555 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
556 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
557 | CONFIG_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 | # | ||
581 | CONFIG_VT=y | ||
582 | CONFIG_VT_CONSOLE=y | ||
583 | CONFIG_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 | # | ||
594 | CONFIG_SERIAL_AT91=y | ||
595 | CONFIG_SERIAL_AT91_CONSOLE=y | ||
596 | # CONFIG_SERIAL_AT91_TTYAT is not set | ||
597 | CONFIG_SERIAL_CORE=y | ||
598 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
599 | CONFIG_UNIX98_PTYS=y | ||
600 | CONFIG_LEGACY_PTYS=y | ||
601 | CONFIG_LEGACY_PTY_COUNT=256 | ||
602 | |||
603 | # | ||
604 | # IPMI | ||
605 | # | ||
606 | # CONFIG_IPMI_HANDLER is not set | ||
607 | |||
608 | # | ||
609 | # Watchdog Cards | ||
610 | # | ||
611 | CONFIG_WATCHDOG=y | ||
612 | CONFIG_WATCHDOG_NOWAYOUT=y | ||
613 | |||
614 | # | ||
615 | # Watchdog Device Drivers | ||
616 | # | ||
617 | # CONFIG_SOFT_WATCHDOG is not set | ||
618 | CONFIG_AT91_WATCHDOG=y | ||
619 | |||
620 | # | ||
621 | # USB-based Watchdog Cards | ||
622 | # | ||
623 | # CONFIG_USBPCWATCHDOG is not set | ||
624 | # CONFIG_NVRAM is not set | ||
625 | CONFIG_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 | ||
647 | CONFIG_AT91_SPI=y | ||
648 | CONFIG_AT91_SPIDEV=y | ||
649 | |||
650 | # | ||
651 | # I2C support | ||
652 | # | ||
653 | CONFIG_I2C=y | ||
654 | CONFIG_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 | # | ||
666 | CONFIG_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 | # | ||
691 | CONFIG_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 | ||
754 | CONFIG_DUMMY_CONSOLE=y | ||
755 | |||
756 | # | ||
757 | # Sound | ||
758 | # | ||
759 | # CONFIG_SOUND is not set | ||
760 | |||
761 | # | ||
762 | # USB support | ||
763 | # | ||
764 | CONFIG_USB_ARCH_HAS_HCD=y | ||
765 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
766 | CONFIG_USB=y | ||
767 | CONFIG_USB_DEBUG=y | ||
768 | |||
769 | # | ||
770 | # Miscellaneous USB options | ||
771 | # | ||
772 | CONFIG_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 | ||
781 | CONFIG_USB_OHCI_HCD=y | ||
782 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
783 | CONFIG_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 | # | ||
799 | CONFIG_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 | ||
856 | CONFIG_USB_MON=y | ||
857 | |||
858 | # | ||
859 | # USB port drivers | ||
860 | # | ||
861 | |||
862 | # | ||
863 | # USB Serial Converter support | ||
864 | # | ||
865 | CONFIG_USB_SERIAL=y | ||
866 | CONFIG_USB_SERIAL_CONSOLE=y | ||
867 | CONFIG_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 | ||
876 | CONFIG_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 | ||
885 | CONFIG_USB_SERIAL_KEYSPAN=y | ||
886 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y | ||
887 | CONFIG_USB_SERIAL_KEYSPAN_USA28=y | ||
888 | CONFIG_USB_SERIAL_KEYSPAN_USA28X=y | ||
889 | CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y | ||
890 | CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y | ||
891 | CONFIG_USB_SERIAL_KEYSPAN_USA19=y | ||
892 | CONFIG_USB_SERIAL_KEYSPAN_USA18X=y | ||
893 | CONFIG_USB_SERIAL_KEYSPAN_USA19W=y | ||
894 | CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y | ||
895 | CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y | ||
896 | CONFIG_USB_SERIAL_KEYSPAN_USA49W=y | ||
897 | CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | ||
898 | # CONFIG_USB_SERIAL_KLSI is not set | ||
899 | # CONFIG_USB_SERIAL_KOBIL_SCT is not set | ||
900 | CONFIG_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 | ||
909 | CONFIG_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 | # | ||
945 | CONFIG_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 | ||
956 | CONFIG_INOTIFY=y | ||
957 | # CONFIG_QUOTA is not set | ||
958 | CONFIG_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 | # | ||
979 | CONFIG_PROC_FS=y | ||
980 | CONFIG_SYSFS=y | ||
981 | CONFIG_TMPFS=y | ||
982 | # CONFIG_HUGETLB_PAGE is not set | ||
983 | CONFIG_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 | ||
998 | CONFIG_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 | # | ||
1008 | CONFIG_NFS_FS=y | ||
1009 | CONFIG_NFS_V3=y | ||
1010 | # CONFIG_NFS_V3_ACL is not set | ||
1011 | CONFIG_NFS_V4=y | ||
1012 | # CONFIG_NFS_DIRECTIO is not set | ||
1013 | # CONFIG_NFSD is not set | ||
1014 | CONFIG_ROOT_NFS=y | ||
1015 | CONFIG_LOCKD=y | ||
1016 | CONFIG_LOCKD_V4=y | ||
1017 | CONFIG_NFS_COMMON=y | ||
1018 | CONFIG_SUNRPC=y | ||
1019 | CONFIG_SUNRPC_GSS=y | ||
1020 | CONFIG_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 | ||
1033 | CONFIG_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 | ||
1049 | CONFIG_DEBUG_KERNEL=y | ||
1050 | # CONFIG_MAGIC_SYSRQ is not set | ||
1051 | CONFIG_LOG_BUF_SHIFT=14 | ||
1052 | CONFIG_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 | ||
1058 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1059 | # CONFIG_DEBUG_INFO is not set | ||
1060 | # CONFIG_DEBUG_FS is not set | ||
1061 | # CONFIG_DEBUG_VM is not set | ||
1062 | CONFIG_FRAME_POINTER=y | ||
1063 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1064 | CONFIG_DEBUG_USER=y | ||
1065 | # CONFIG_DEBUG_WAITQ is not set | ||
1066 | # CONFIG_DEBUG_ERRORS is not set | ||
1067 | CONFIG_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 | # | ||
1079 | CONFIG_CRYPTO=y | ||
1080 | # CONFIG_CRYPTO_HMAC is not set | ||
1081 | # CONFIG_CRYPTO_NULL is not set | ||
1082 | # CONFIG_CRYPTO_MD4 is not set | ||
1083 | CONFIG_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 | ||
1089 | CONFIG_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 | ||
1114 | CONFIG_CRC32=y | ||
1115 | # CONFIG_LIBCRC32C is not set | ||
1116 | CONFIG_ZLIB_INFLATE=y | ||
diff --git a/arch/arm/configs/ebsa110_defconfig b/arch/arm/configs/ebsa110_defconfig index 6f61929b97..afcfff6140 100644 --- a/arch/arm/configs/ebsa110_defconfig +++ b/arch/arm/configs/ebsa110_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_KMOD=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | CONFIG_ARCH_EBSA110=y | 65 | CONFIG_ARCH_EBSA110=y |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/edb7211_defconfig b/arch/arm/configs/edb7211_defconfig index 78b08ed4d5..6ba7355ff8 100644 --- a/arch/arm/configs/edb7211_defconfig +++ b/arch/arm/configs/edb7211_defconfig | |||
@@ -57,7 +57,6 @@ CONFIG_BASE_SMALL=0 | |||
57 | CONFIG_ARCH_CLPS711X=y | 57 | CONFIG_ARCH_CLPS711X=y |
58 | # CONFIG_ARCH_CO285 is not set | 58 | # CONFIG_ARCH_CO285 is not set |
59 | # CONFIG_ARCH_EBSA110 is not set | 59 | # CONFIG_ARCH_EBSA110 is not set |
60 | # CONFIG_ARCH_CAMELOT is not set | ||
61 | # CONFIG_ARCH_FOOTBRIDGE is not set | 60 | # CONFIG_ARCH_FOOTBRIDGE is not set |
62 | # CONFIG_ARCH_INTEGRATOR is not set | 61 | # CONFIG_ARCH_INTEGRATOR is not set |
63 | # CONFIG_ARCH_IOP3XX is not set | 62 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/enp2611_defconfig b/arch/arm/configs/enp2611_defconfig index fd7c0042bc..9592e3925c 100644 --- a/arch/arm/configs/enp2611_defconfig +++ b/arch/arm/configs/enp2611_defconfig | |||
@@ -86,7 +86,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
86 | # CONFIG_ARCH_CLPS711X is not set | 86 | # CONFIG_ARCH_CLPS711X is not set |
87 | # CONFIG_ARCH_CO285 is not set | 87 | # CONFIG_ARCH_CO285 is not set |
88 | # CONFIG_ARCH_EBSA110 is not set | 88 | # CONFIG_ARCH_EBSA110 is not set |
89 | # CONFIG_ARCH_CAMELOT is not set | ||
90 | # CONFIG_ARCH_FOOTBRIDGE is not set | 89 | # CONFIG_ARCH_FOOTBRIDGE is not set |
91 | # CONFIG_ARCH_INTEGRATOR is not set | 90 | # CONFIG_ARCH_INTEGRATOR is not set |
92 | # CONFIG_ARCH_IOP3XX is not set | 91 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/ep80219_defconfig b/arch/arm/configs/ep80219_defconfig index 96342afa9c..fbe312e757 100644 --- a/arch/arm/configs/ep80219_defconfig +++ b/arch/arm/configs/ep80219_defconfig | |||
@@ -64,7 +64,6 @@ CONFIG_KMOD=y | |||
64 | # CONFIG_ARCH_CLPS711X is not set | 64 | # CONFIG_ARCH_CLPS711X is not set |
65 | # CONFIG_ARCH_CO285 is not set | 65 | # CONFIG_ARCH_CO285 is not set |
66 | # CONFIG_ARCH_EBSA110 is not set | 66 | # CONFIG_ARCH_EBSA110 is not set |
67 | # CONFIG_ARCH_CAMELOT is not set | ||
68 | # CONFIG_ARCH_FOOTBRIDGE is not set | 67 | # CONFIG_ARCH_FOOTBRIDGE is not set |
69 | # CONFIG_ARCH_INTEGRATOR is not set | 68 | # CONFIG_ARCH_INTEGRATOR is not set |
70 | CONFIG_ARCH_IOP3XX=y | 69 | CONFIG_ARCH_IOP3XX=y |
diff --git a/arch/arm/configs/epxa10db_defconfig b/arch/arm/configs/epxa10db_defconfig deleted file mode 100644 index 9fb8b58c49..0000000000 --- a/arch/arm/configs/epxa10db_defconfig +++ /dev/null | |||
@@ -1,644 +0,0 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.12-rc1-bk2 | ||
4 | # Sun Mar 27 22:46:51 2005 | ||
5 | # | ||
6 | CONFIG_ARM=y | ||
7 | CONFIG_MMU=y | ||
8 | CONFIG_UID16=y | ||
9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
11 | CONFIG_GENERIC_IOMAP=y | ||
12 | |||
13 | # | ||
14 | # Code maturity level options | ||
15 | # | ||
16 | CONFIG_EXPERIMENTAL=y | ||
17 | CONFIG_CLEAN_COMPILE=y | ||
18 | CONFIG_BROKEN_ON_SMP=y | ||
19 | |||
20 | # | ||
21 | # General setup | ||
22 | # | ||
23 | CONFIG_LOCALVERSION="" | ||
24 | CONFIG_SWAP=y | ||
25 | CONFIG_SYSVIPC=y | ||
26 | # CONFIG_POSIX_MQUEUE is not set | ||
27 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
28 | CONFIG_SYSCTL=y | ||
29 | # CONFIG_AUDIT is not set | ||
30 | # CONFIG_HOTPLUG is not set | ||
31 | CONFIG_KOBJECT_UEVENT=y | ||
32 | # CONFIG_IKCONFIG is not set | ||
33 | # CONFIG_EMBEDDED is not set | ||
34 | CONFIG_KALLSYMS=y | ||
35 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
36 | CONFIG_BASE_FULL=y | ||
37 | CONFIG_FUTEX=y | ||
38 | CONFIG_EPOLL=y | ||
39 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
40 | CONFIG_SHMEM=y | ||
41 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
42 | CONFIG_CC_ALIGN_LABELS=0 | ||
43 | CONFIG_CC_ALIGN_LOOPS=0 | ||
44 | CONFIG_CC_ALIGN_JUMPS=0 | ||
45 | # CONFIG_TINY_SHMEM is not set | ||
46 | CONFIG_BASE_SMALL=0 | ||
47 | |||
48 | # | ||
49 | # Loadable module support | ||
50 | # | ||
51 | CONFIG_MODULES=y | ||
52 | CONFIG_MODULE_UNLOAD=y | ||
53 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
54 | CONFIG_OBSOLETE_MODPARM=y | ||
55 | # CONFIG_MODVERSIONS is not set | ||
56 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
57 | # CONFIG_KMOD is not set | ||
58 | |||
59 | # | ||
60 | # System Type | ||
61 | # | ||
62 | # CONFIG_ARCH_CLPS7500 is not set | ||
63 | # CONFIG_ARCH_CLPS711X is not set | ||
64 | # CONFIG_ARCH_CO285 is not set | ||
65 | # CONFIG_ARCH_EBSA110 is not set | ||
66 | CONFIG_ARCH_CAMELOT=y | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
68 | # CONFIG_ARCH_INTEGRATOR is not set | ||
69 | # CONFIG_ARCH_IOP3XX is not set | ||
70 | # CONFIG_ARCH_IXP4XX is not set | ||
71 | # CONFIG_ARCH_IXP2000 is not set | ||
72 | # CONFIG_ARCH_L7200 is not set | ||
73 | # CONFIG_ARCH_PXA is not set | ||
74 | # CONFIG_ARCH_RPC is not set | ||
75 | # CONFIG_ARCH_SA1100 is not set | ||
76 | # CONFIG_ARCH_S3C2410 is not set | ||
77 | # CONFIG_ARCH_SHARK is not set | ||
78 | # CONFIG_ARCH_LH7A40X is not set | ||
79 | # CONFIG_ARCH_OMAP is not set | ||
80 | # CONFIG_ARCH_VERSATILE is not set | ||
81 | # CONFIG_ARCH_IMX is not set | ||
82 | # CONFIG_ARCH_H720X is not set | ||
83 | |||
84 | # | ||
85 | # Epxa10db | ||
86 | # | ||
87 | |||
88 | # | ||
89 | # PLD hotswap support | ||
90 | # | ||
91 | CONFIG_PLD=y | ||
92 | # CONFIG_PLD_HOTSWAP is not set | ||
93 | |||
94 | # | ||
95 | # Processor Type | ||
96 | # | ||
97 | CONFIG_CPU_32=y | ||
98 | CONFIG_CPU_ARM922T=y | ||
99 | CONFIG_CPU_32v4=y | ||
100 | CONFIG_CPU_ABRT_EV4T=y | ||
101 | CONFIG_CPU_CACHE_V4WT=y | ||
102 | CONFIG_CPU_CACHE_VIVT=y | ||
103 | CONFIG_CPU_COPY_V4WB=y | ||
104 | CONFIG_CPU_TLB_V4WBI=y | ||
105 | |||
106 | # | ||
107 | # Processor Features | ||
108 | # | ||
109 | # CONFIG_ARM_THUMB is not set | ||
110 | # CONFIG_CPU_ICACHE_DISABLE is not set | ||
111 | # CONFIG_CPU_DCACHE_DISABLE is not set | ||
112 | # CONFIG_CPU_DCACHE_WRITETHROUGH is not set | ||
113 | |||
114 | # | ||
115 | # Bus support | ||
116 | # | ||
117 | |||
118 | # | ||
119 | # PCCARD (PCMCIA/CardBus) support | ||
120 | # | ||
121 | # CONFIG_PCCARD is not set | ||
122 | |||
123 | # | ||
124 | # Kernel Features | ||
125 | # | ||
126 | # CONFIG_PREEMPT is not set | ||
127 | CONFIG_ALIGNMENT_TRAP=y | ||
128 | |||
129 | # | ||
130 | # Boot options | ||
131 | # | ||
132 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
133 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
134 | CONFIG_CMDLINE="mem=32M console=ttyUA0,115200 initrd=0x00200000,8M root=/dev/ram0 rw" | ||
135 | # CONFIG_XIP_KERNEL is not set | ||
136 | |||
137 | # | ||
138 | # Floating point emulation | ||
139 | # | ||
140 | |||
141 | # | ||
142 | # At least one emulation must be selected | ||
143 | # | ||
144 | CONFIG_FPE_NWFPE=y | ||
145 | # CONFIG_FPE_NWFPE_XP is not set | ||
146 | # CONFIG_FPE_FASTFPE is not set | ||
147 | |||
148 | # | ||
149 | # Userspace binary formats | ||
150 | # | ||
151 | CONFIG_BINFMT_ELF=y | ||
152 | # CONFIG_BINFMT_AOUT is not set | ||
153 | # CONFIG_BINFMT_MISC is not set | ||
154 | # CONFIG_ARTHUR is not set | ||
155 | |||
156 | # | ||
157 | # Power management options | ||
158 | # | ||
159 | # CONFIG_PM is not set | ||
160 | |||
161 | # | ||
162 | # Device Drivers | ||
163 | # | ||
164 | |||
165 | # | ||
166 | # Generic Driver Options | ||
167 | # | ||
168 | CONFIG_STANDALONE=y | ||
169 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
170 | # CONFIG_FW_LOADER is not set | ||
171 | |||
172 | # | ||
173 | # Memory Technology Devices (MTD) | ||
174 | # | ||
175 | # CONFIG_MTD is not set | ||
176 | |||
177 | # | ||
178 | # Parallel port support | ||
179 | # | ||
180 | # CONFIG_PARPORT is not set | ||
181 | |||
182 | # | ||
183 | # Plug and Play support | ||
184 | # | ||
185 | |||
186 | # | ||
187 | # Block devices | ||
188 | # | ||
189 | # CONFIG_BLK_DEV_FD is not set | ||
190 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
191 | CONFIG_BLK_DEV_LOOP=y | ||
192 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
193 | # CONFIG_BLK_DEV_NBD is not set | ||
194 | CONFIG_BLK_DEV_RAM=y | ||
195 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
196 | CONFIG_BLK_DEV_RAM_SIZE=8192 | ||
197 | CONFIG_BLK_DEV_INITRD=y | ||
198 | CONFIG_INITRAMFS_SOURCE="" | ||
199 | # CONFIG_CDROM_PKTCDVD is not set | ||
200 | |||
201 | # | ||
202 | # IO Schedulers | ||
203 | # | ||
204 | CONFIG_IOSCHED_NOOP=y | ||
205 | CONFIG_IOSCHED_AS=y | ||
206 | CONFIG_IOSCHED_DEADLINE=y | ||
207 | CONFIG_IOSCHED_CFQ=y | ||
208 | # CONFIG_ATA_OVER_ETH is not set | ||
209 | |||
210 | # | ||
211 | # SCSI device support | ||
212 | # | ||
213 | # CONFIG_SCSI is not set | ||
214 | |||
215 | # | ||
216 | # Multi-device support (RAID and LVM) | ||
217 | # | ||
218 | # CONFIG_MD is not set | ||
219 | |||
220 | # | ||
221 | # Fusion MPT device support | ||
222 | # | ||
223 | |||
224 | # | ||
225 | # IEEE 1394 (FireWire) support | ||
226 | # | ||
227 | |||
228 | # | ||
229 | # I2O device support | ||
230 | # | ||
231 | |||
232 | # | ||
233 | # Networking support | ||
234 | # | ||
235 | CONFIG_NET=y | ||
236 | |||
237 | # | ||
238 | # Networking options | ||
239 | # | ||
240 | CONFIG_PACKET=y | ||
241 | # CONFIG_PACKET_MMAP is not set | ||
242 | # CONFIG_NETLINK_DEV is not set | ||
243 | CONFIG_UNIX=y | ||
244 | # CONFIG_NET_KEY is not set | ||
245 | CONFIG_INET=y | ||
246 | CONFIG_IP_MULTICAST=y | ||
247 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
248 | CONFIG_IP_PNP=y | ||
249 | # CONFIG_IP_PNP_DHCP is not set | ||
250 | # CONFIG_IP_PNP_BOOTP is not set | ||
251 | # CONFIG_IP_PNP_RARP is not set | ||
252 | # CONFIG_NET_IPIP is not set | ||
253 | # CONFIG_NET_IPGRE is not set | ||
254 | # CONFIG_IP_MROUTE is not set | ||
255 | # CONFIG_ARPD is not set | ||
256 | # CONFIG_SYN_COOKIES is not set | ||
257 | # CONFIG_INET_AH is not set | ||
258 | # CONFIG_INET_ESP is not set | ||
259 | # CONFIG_INET_IPCOMP is not set | ||
260 | # CONFIG_INET_TUNNEL is not set | ||
261 | # CONFIG_IP_TCPDIAG is not set | ||
262 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
263 | # CONFIG_IPV6 is not set | ||
264 | # CONFIG_NETFILTER is not set | ||
265 | |||
266 | # | ||
267 | # SCTP Configuration (EXPERIMENTAL) | ||
268 | # | ||
269 | # CONFIG_IP_SCTP is not set | ||
270 | # CONFIG_ATM is not set | ||
271 | # CONFIG_BRIDGE is not set | ||
272 | # CONFIG_VLAN_8021Q is not set | ||
273 | # CONFIG_DECNET is not set | ||
274 | # CONFIG_LLC2 is not set | ||
275 | # CONFIG_IPX is not set | ||
276 | # CONFIG_ATALK is not set | ||
277 | # CONFIG_X25 is not set | ||
278 | # CONFIG_LAPB is not set | ||
279 | # CONFIG_NET_DIVERT is not set | ||
280 | # CONFIG_ECONET is not set | ||
281 | # CONFIG_WAN_ROUTER is not set | ||
282 | |||
283 | # | ||
284 | # QoS and/or fair queueing | ||
285 | # | ||
286 | # CONFIG_NET_SCHED is not set | ||
287 | # CONFIG_NET_CLS_ROUTE is not set | ||
288 | |||
289 | # | ||
290 | # Network testing | ||
291 | # | ||
292 | # CONFIG_NET_PKTGEN is not set | ||
293 | # CONFIG_NETPOLL is not set | ||
294 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
295 | # CONFIG_HAMRADIO is not set | ||
296 | # CONFIG_IRDA is not set | ||
297 | # CONFIG_BT is not set | ||
298 | CONFIG_NETDEVICES=y | ||
299 | # CONFIG_DUMMY is not set | ||
300 | # CONFIG_BONDING is not set | ||
301 | # CONFIG_EQUALIZER is not set | ||
302 | # CONFIG_TUN is not set | ||
303 | |||
304 | # | ||
305 | # Ethernet (10 or 100Mbit) | ||
306 | # | ||
307 | # CONFIG_NET_ETHERNET is not set | ||
308 | |||
309 | # | ||
310 | # Ethernet (1000 Mbit) | ||
311 | # | ||
312 | |||
313 | # | ||
314 | # Ethernet (10000 Mbit) | ||
315 | # | ||
316 | |||
317 | # | ||
318 | # Token Ring devices | ||
319 | # | ||
320 | |||
321 | # | ||
322 | # Wireless LAN (non-hamradio) | ||
323 | # | ||
324 | # CONFIG_NET_RADIO is not set | ||
325 | |||
326 | # | ||
327 | # Wan interfaces | ||
328 | # | ||
329 | # CONFIG_WAN is not set | ||
330 | CONFIG_PPP=y | ||
331 | CONFIG_PPP_MULTILINK=y | ||
332 | # CONFIG_PPP_FILTER is not set | ||
333 | CONFIG_PPP_ASYNC=y | ||
334 | CONFIG_PPP_SYNC_TTY=y | ||
335 | CONFIG_PPP_DEFLATE=y | ||
336 | # CONFIG_PPP_BSDCOMP is not set | ||
337 | # CONFIG_PPPOE is not set | ||
338 | # CONFIG_SLIP is not set | ||
339 | # CONFIG_SHAPER is not set | ||
340 | # CONFIG_NETCONSOLE is not set | ||
341 | |||
342 | # | ||
343 | # ISDN subsystem | ||
344 | # | ||
345 | # CONFIG_ISDN is not set | ||
346 | |||
347 | # | ||
348 | # Input device support | ||
349 | # | ||
350 | CONFIG_INPUT=y | ||
351 | |||
352 | # | ||
353 | # Userland interfaces | ||
354 | # | ||
355 | CONFIG_INPUT_MOUSEDEV=y | ||
356 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
357 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
358 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
359 | # CONFIG_INPUT_JOYDEV is not set | ||
360 | # CONFIG_INPUT_TSDEV is not set | ||
361 | # CONFIG_INPUT_EVDEV is not set | ||
362 | # CONFIG_INPUT_EVBUG is not set | ||
363 | |||
364 | # | ||
365 | # Input Device Drivers | ||
366 | # | ||
367 | # CONFIG_INPUT_KEYBOARD is not set | ||
368 | # CONFIG_INPUT_MOUSE is not set | ||
369 | # CONFIG_INPUT_JOYSTICK is not set | ||
370 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
371 | # CONFIG_INPUT_MISC is not set | ||
372 | |||
373 | # | ||
374 | # Hardware I/O ports | ||
375 | # | ||
376 | CONFIG_SERIO=y | ||
377 | CONFIG_SERIO_SERPORT=y | ||
378 | # CONFIG_SERIO_RAW is not set | ||
379 | # CONFIG_GAMEPORT is not set | ||
380 | CONFIG_SOUND_GAMEPORT=y | ||
381 | |||
382 | # | ||
383 | # Character devices | ||
384 | # | ||
385 | CONFIG_VT=y | ||
386 | CONFIG_VT_CONSOLE=y | ||
387 | CONFIG_HW_CONSOLE=y | ||
388 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
389 | |||
390 | # | ||
391 | # Serial drivers | ||
392 | # | ||
393 | # CONFIG_SERIAL_8250 is not set | ||
394 | |||
395 | # | ||
396 | # Non-8250 serial port support | ||
397 | # | ||
398 | CONFIG_SERIAL_UART00=y | ||
399 | CONFIG_SERIAL_UART00_CONSOLE=y | ||
400 | CONFIG_SERIAL_CORE=y | ||
401 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
402 | CONFIG_UNIX98_PTYS=y | ||
403 | CONFIG_LEGACY_PTYS=y | ||
404 | CONFIG_LEGACY_PTY_COUNT=256 | ||
405 | |||
406 | # | ||
407 | # IPMI | ||
408 | # | ||
409 | # CONFIG_IPMI_HANDLER is not set | ||
410 | |||
411 | # | ||
412 | # Watchdog Cards | ||
413 | # | ||
414 | # CONFIG_WATCHDOG is not set | ||
415 | # CONFIG_NVRAM is not set | ||
416 | # CONFIG_RTC is not set | ||
417 | # CONFIG_DTLK is not set | ||
418 | # CONFIG_R3964 is not set | ||
419 | |||
420 | # | ||
421 | # Ftape, the floppy tape device driver | ||
422 | # | ||
423 | # CONFIG_DRM is not set | ||
424 | # CONFIG_RAW_DRIVER is not set | ||
425 | |||
426 | # | ||
427 | # TPM devices | ||
428 | # | ||
429 | # CONFIG_TCG_TPM is not set | ||
430 | |||
431 | # | ||
432 | # I2C support | ||
433 | # | ||
434 | # CONFIG_I2C is not set | ||
435 | |||
436 | # | ||
437 | # Misc devices | ||
438 | # | ||
439 | |||
440 | # | ||
441 | # Multimedia devices | ||
442 | # | ||
443 | # CONFIG_VIDEO_DEV is not set | ||
444 | |||
445 | # | ||
446 | # Digital Video Broadcasting Devices | ||
447 | # | ||
448 | # CONFIG_DVB is not set | ||
449 | |||
450 | # | ||
451 | # Graphics support | ||
452 | # | ||
453 | # CONFIG_FB is not set | ||
454 | |||
455 | # | ||
456 | # Console display driver support | ||
457 | # | ||
458 | # CONFIG_VGA_CONSOLE is not set | ||
459 | CONFIG_DUMMY_CONSOLE=y | ||
460 | |||
461 | # | ||
462 | # Sound | ||
463 | # | ||
464 | # CONFIG_SOUND is not set | ||
465 | |||
466 | # | ||
467 | # USB support | ||
468 | # | ||
469 | CONFIG_USB_ARCH_HAS_HCD=y | ||
470 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
471 | # CONFIG_USB is not set | ||
472 | |||
473 | # | ||
474 | # USB Gadget Support | ||
475 | # | ||
476 | # CONFIG_USB_GADGET is not set | ||
477 | |||
478 | # | ||
479 | # MMC/SD Card support | ||
480 | # | ||
481 | # CONFIG_MMC is not set | ||
482 | |||
483 | # | ||
484 | # File systems | ||
485 | # | ||
486 | CONFIG_EXT2_FS=y | ||
487 | # CONFIG_EXT2_FS_XATTR is not set | ||
488 | # CONFIG_EXT3_FS is not set | ||
489 | # CONFIG_JBD is not set | ||
490 | # CONFIG_REISERFS_FS is not set | ||
491 | # CONFIG_JFS_FS is not set | ||
492 | |||
493 | # | ||
494 | # XFS support | ||
495 | # | ||
496 | # CONFIG_XFS_FS is not set | ||
497 | # CONFIG_MINIX_FS is not set | ||
498 | # CONFIG_ROMFS_FS is not set | ||
499 | # CONFIG_QUOTA is not set | ||
500 | CONFIG_DNOTIFY=y | ||
501 | CONFIG_AUTOFS_FS=y | ||
502 | CONFIG_AUTOFS4_FS=y | ||
503 | |||
504 | # | ||
505 | # CD-ROM/DVD Filesystems | ||
506 | # | ||
507 | # CONFIG_ISO9660_FS is not set | ||
508 | # CONFIG_UDF_FS is not set | ||
509 | |||
510 | # | ||
511 | # DOS/FAT/NT Filesystems | ||
512 | # | ||
513 | # CONFIG_MSDOS_FS is not set | ||
514 | # CONFIG_VFAT_FS is not set | ||
515 | # CONFIG_NTFS_FS is not set | ||
516 | |||
517 | # | ||
518 | # Pseudo filesystems | ||
519 | # | ||
520 | CONFIG_PROC_FS=y | ||
521 | CONFIG_SYSFS=y | ||
522 | # CONFIG_DEVFS_FS is not set | ||
523 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
524 | # CONFIG_TMPFS is not set | ||
525 | # CONFIG_HUGETLB_PAGE is not set | ||
526 | CONFIG_RAMFS=y | ||
527 | |||
528 | # | ||
529 | # Miscellaneous filesystems | ||
530 | # | ||
531 | # CONFIG_ADFS_FS is not set | ||
532 | # CONFIG_AFFS_FS is not set | ||
533 | # CONFIG_HFS_FS is not set | ||
534 | # CONFIG_HFSPLUS_FS is not set | ||
535 | # CONFIG_BEFS_FS is not set | ||
536 | # CONFIG_BFS_FS is not set | ||
537 | # CONFIG_EFS_FS is not set | ||
538 | # CONFIG_CRAMFS is not set | ||
539 | # CONFIG_VXFS_FS is not set | ||
540 | # CONFIG_HPFS_FS is not set | ||
541 | # CONFIG_QNX4FS_FS is not set | ||
542 | # CONFIG_SYSV_FS is not set | ||
543 | # CONFIG_UFS_FS is not set | ||
544 | |||
545 | # | ||
546 | # Network File Systems | ||
547 | # | ||
548 | # CONFIG_NFS_FS is not set | ||
549 | # CONFIG_NFSD is not set | ||
550 | CONFIG_SMB_FS=y | ||
551 | # CONFIG_SMB_NLS_DEFAULT is not set | ||
552 | # CONFIG_CIFS is not set | ||
553 | # CONFIG_NCP_FS is not set | ||
554 | # CONFIG_CODA_FS is not set | ||
555 | # CONFIG_AFS_FS is not set | ||
556 | |||
557 | # | ||
558 | # Partition Types | ||
559 | # | ||
560 | # CONFIG_PARTITION_ADVANCED is not set | ||
561 | CONFIG_MSDOS_PARTITION=y | ||
562 | |||
563 | # | ||
564 | # Native Language Support | ||
565 | # | ||
566 | CONFIG_NLS=y | ||
567 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
568 | # CONFIG_NLS_CODEPAGE_437 is not set | ||
569 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
570 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
571 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
572 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
573 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
574 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
575 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
576 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
577 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
578 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
579 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
580 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
581 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
582 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
583 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
584 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
585 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
586 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
587 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
588 | # CONFIG_NLS_ISO8859_8 is not set | ||
589 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
590 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
591 | # CONFIG_NLS_ASCII is not set | ||
592 | # CONFIG_NLS_ISO8859_1 is not set | ||
593 | # CONFIG_NLS_ISO8859_2 is not set | ||
594 | # CONFIG_NLS_ISO8859_3 is not set | ||
595 | # CONFIG_NLS_ISO8859_4 is not set | ||
596 | # CONFIG_NLS_ISO8859_5 is not set | ||
597 | # CONFIG_NLS_ISO8859_6 is not set | ||
598 | # CONFIG_NLS_ISO8859_7 is not set | ||
599 | # CONFIG_NLS_ISO8859_9 is not set | ||
600 | # CONFIG_NLS_ISO8859_13 is not set | ||
601 | # CONFIG_NLS_ISO8859_14 is not set | ||
602 | # CONFIG_NLS_ISO8859_15 is not set | ||
603 | # CONFIG_NLS_KOI8_R is not set | ||
604 | # CONFIG_NLS_KOI8_U is not set | ||
605 | # CONFIG_NLS_UTF8 is not set | ||
606 | |||
607 | # | ||
608 | # Profiling support | ||
609 | # | ||
610 | # CONFIG_PROFILING is not set | ||
611 | |||
612 | # | ||
613 | # Kernel hacking | ||
614 | # | ||
615 | # CONFIG_PRINTK_TIME is not set | ||
616 | # CONFIG_DEBUG_KERNEL is not set | ||
617 | CONFIG_LOG_BUF_SHIFT=14 | ||
618 | CONFIG_DEBUG_BUGVERBOSE=y | ||
619 | CONFIG_FRAME_POINTER=y | ||
620 | # CONFIG_DEBUG_USER is not set | ||
621 | |||
622 | # | ||
623 | # Security options | ||
624 | # | ||
625 | # CONFIG_KEYS is not set | ||
626 | # CONFIG_SECURITY is not set | ||
627 | |||
628 | # | ||
629 | # Cryptographic options | ||
630 | # | ||
631 | # CONFIG_CRYPTO is not set | ||
632 | |||
633 | # | ||
634 | # Hardware crypto devices | ||
635 | # | ||
636 | |||
637 | # | ||
638 | # Library routines | ||
639 | # | ||
640 | CONFIG_CRC_CCITT=y | ||
641 | CONFIG_CRC32=y | ||
642 | # CONFIG_LIBCRC32C is not set | ||
643 | CONFIG_ZLIB_INFLATE=y | ||
644 | CONFIG_ZLIB_DEFLATE=y | ||
diff --git a/arch/arm/configs/footbridge_defconfig b/arch/arm/configs/footbridge_defconfig index 9737c48507..2a612d2312 100644 --- a/arch/arm/configs/footbridge_defconfig +++ b/arch/arm/configs/footbridge_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_KMOD=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | CONFIG_ARCH_FOOTBRIDGE=y | 66 | CONFIG_ARCH_FOOTBRIDGE=y |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/fortunet_defconfig b/arch/arm/configs/fortunet_defconfig index b6f688d850..65dc73a88c 100644 --- a/arch/arm/configs/fortunet_defconfig +++ b/arch/arm/configs/fortunet_defconfig | |||
@@ -57,7 +57,6 @@ CONFIG_BASE_SMALL=0 | |||
57 | CONFIG_ARCH_CLPS711X=y | 57 | CONFIG_ARCH_CLPS711X=y |
58 | # CONFIG_ARCH_CO285 is not set | 58 | # CONFIG_ARCH_CO285 is not set |
59 | # CONFIG_ARCH_EBSA110 is not set | 59 | # CONFIG_ARCH_EBSA110 is not set |
60 | # CONFIG_ARCH_CAMELOT is not set | ||
61 | # CONFIG_ARCH_FOOTBRIDGE is not set | 60 | # CONFIG_ARCH_FOOTBRIDGE is not set |
62 | # CONFIG_ARCH_INTEGRATOR is not set | 61 | # CONFIG_ARCH_INTEGRATOR is not set |
63 | # CONFIG_ARCH_IOP3XX is not set | 62 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/h3600_defconfig b/arch/arm/configs/h3600_defconfig index b9de07de80..7a0da0b7fa 100644 --- a/arch/arm/configs/h3600_defconfig +++ b/arch/arm/configs/h3600_defconfig | |||
@@ -65,7 +65,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
65 | # CONFIG_ARCH_CLPS711X is not set | 65 | # CONFIG_ARCH_CLPS711X is not set |
66 | # CONFIG_ARCH_CO285 is not set | 66 | # CONFIG_ARCH_CO285 is not set |
67 | # CONFIG_ARCH_EBSA110 is not set | 67 | # CONFIG_ARCH_EBSA110 is not set |
68 | # CONFIG_ARCH_CAMELOT is not set | ||
69 | # CONFIG_ARCH_FOOTBRIDGE is not set | 68 | # CONFIG_ARCH_FOOTBRIDGE is not set |
70 | # CONFIG_ARCH_INTEGRATOR is not set | 69 | # CONFIG_ARCH_INTEGRATOR is not set |
71 | # CONFIG_ARCH_IOP3XX is not set | 70 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/h7201_defconfig b/arch/arm/configs/h7201_defconfig index 39c13a3545..116920aece 100644 --- a/arch/arm/configs/h7201_defconfig +++ b/arch/arm/configs/h7201_defconfig | |||
@@ -60,7 +60,6 @@ CONFIG_KMOD=y | |||
60 | # CONFIG_ARCH_CLPS711X is not set | 60 | # CONFIG_ARCH_CLPS711X is not set |
61 | # CONFIG_ARCH_CO285 is not set | 61 | # CONFIG_ARCH_CO285 is not set |
62 | # CONFIG_ARCH_EBSA110 is not set | 62 | # CONFIG_ARCH_EBSA110 is not set |
63 | # CONFIG_ARCH_CAMELOT is not set | ||
64 | # CONFIG_ARCH_FOOTBRIDGE is not set | 63 | # CONFIG_ARCH_FOOTBRIDGE is not set |
65 | # CONFIG_ARCH_INTEGRATOR is not set | 64 | # CONFIG_ARCH_INTEGRATOR is not set |
66 | # CONFIG_ARCH_IOP3XX is not set | 65 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/h7202_defconfig b/arch/arm/configs/h7202_defconfig index fbf5c244c6..9d62ed16bf 100644 --- a/arch/arm/configs/h7202_defconfig +++ b/arch/arm/configs/h7202_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_KMOD=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/hackkit_defconfig b/arch/arm/configs/hackkit_defconfig index fb41a36a5a..a45b57582b 100644 --- a/arch/arm/configs/hackkit_defconfig +++ b/arch/arm/configs/hackkit_defconfig | |||
@@ -66,7 +66,6 @@ CONFIG_KMOD=y | |||
66 | # CONFIG_ARCH_CLPS711X is not set | 66 | # CONFIG_ARCH_CLPS711X is not set |
67 | # CONFIG_ARCH_CO285 is not set | 67 | # CONFIG_ARCH_CO285 is not set |
68 | # CONFIG_ARCH_EBSA110 is not set | 68 | # CONFIG_ARCH_EBSA110 is not set |
69 | # CONFIG_ARCH_CAMELOT is not set | ||
70 | # CONFIG_ARCH_FOOTBRIDGE is not set | 69 | # CONFIG_ARCH_FOOTBRIDGE is not set |
71 | # CONFIG_ARCH_INTEGRATOR is not set | 70 | # CONFIG_ARCH_INTEGRATOR is not set |
72 | # CONFIG_ARCH_IOP3XX is not set | 71 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/integrator_defconfig b/arch/arm/configs/integrator_defconfig index 27ee768252..d1ba7fdde8 100644 --- a/arch/arm/configs/integrator_defconfig +++ b/arch/arm/configs/integrator_defconfig | |||
@@ -65,7 +65,6 @@ CONFIG_KMOD=y | |||
65 | # CONFIG_ARCH_CLPS711X is not set | 65 | # CONFIG_ARCH_CLPS711X is not set |
66 | # CONFIG_ARCH_CO285 is not set | 66 | # CONFIG_ARCH_CO285 is not set |
67 | # CONFIG_ARCH_EBSA110 is not set | 67 | # CONFIG_ARCH_EBSA110 is not set |
68 | # CONFIG_ARCH_CAMELOT is not set | ||
69 | # CONFIG_ARCH_FOOTBRIDGE is not set | 68 | # CONFIG_ARCH_FOOTBRIDGE is not set |
70 | CONFIG_ARCH_INTEGRATOR=y | 69 | CONFIG_ARCH_INTEGRATOR=y |
71 | # CONFIG_ARCH_IOP3XX is not set | 70 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/iq31244_defconfig b/arch/arm/configs/iq31244_defconfig index e71443b973..c07628ceaf 100644 --- a/arch/arm/configs/iq31244_defconfig +++ b/arch/arm/configs/iq31244_defconfig | |||
@@ -65,7 +65,6 @@ CONFIG_KMOD=y | |||
65 | # CONFIG_ARCH_CLPS711X is not set | 65 | # CONFIG_ARCH_CLPS711X is not set |
66 | # CONFIG_ARCH_CO285 is not set | 66 | # CONFIG_ARCH_CO285 is not set |
67 | # CONFIG_ARCH_EBSA110 is not set | 67 | # CONFIG_ARCH_EBSA110 is not set |
68 | # CONFIG_ARCH_CAMELOT is not set | ||
69 | # CONFIG_ARCH_FOOTBRIDGE is not set | 68 | # CONFIG_ARCH_FOOTBRIDGE is not set |
70 | # CONFIG_ARCH_INTEGRATOR is not set | 69 | # CONFIG_ARCH_INTEGRATOR is not set |
71 | CONFIG_ARCH_IOP3XX=y | 70 | CONFIG_ARCH_IOP3XX=y |
diff --git a/arch/arm/configs/iq80321_defconfig b/arch/arm/configs/iq80321_defconfig index ab5ad23b27..18fa1615fd 100644 --- a/arch/arm/configs/iq80321_defconfig +++ b/arch/arm/configs/iq80321_defconfig | |||
@@ -64,7 +64,6 @@ CONFIG_KMOD=y | |||
64 | # CONFIG_ARCH_CLPS711X is not set | 64 | # CONFIG_ARCH_CLPS711X is not set |
65 | # CONFIG_ARCH_CO285 is not set | 65 | # CONFIG_ARCH_CO285 is not set |
66 | # CONFIG_ARCH_EBSA110 is not set | 66 | # CONFIG_ARCH_EBSA110 is not set |
67 | # CONFIG_ARCH_CAMELOT is not set | ||
68 | # CONFIG_ARCH_FOOTBRIDGE is not set | 67 | # CONFIG_ARCH_FOOTBRIDGE is not set |
69 | # CONFIG_ARCH_INTEGRATOR is not set | 68 | # CONFIG_ARCH_INTEGRATOR is not set |
70 | CONFIG_ARCH_IOP3XX=y | 69 | CONFIG_ARCH_IOP3XX=y |
diff --git a/arch/arm/configs/iq80331_defconfig b/arch/arm/configs/iq80331_defconfig index bb536133ef..f50035de1f 100644 --- a/arch/arm/configs/iq80331_defconfig +++ b/arch/arm/configs/iq80331_defconfig | |||
@@ -64,7 +64,6 @@ CONFIG_KMOD=y | |||
64 | # CONFIG_ARCH_CLPS711X is not set | 64 | # CONFIG_ARCH_CLPS711X is not set |
65 | # CONFIG_ARCH_CO285 is not set | 65 | # CONFIG_ARCH_CO285 is not set |
66 | # CONFIG_ARCH_EBSA110 is not set | 66 | # CONFIG_ARCH_EBSA110 is not set |
67 | # CONFIG_ARCH_CAMELOT is not set | ||
68 | # CONFIG_ARCH_FOOTBRIDGE is not set | 67 | # CONFIG_ARCH_FOOTBRIDGE is not set |
69 | # CONFIG_ARCH_INTEGRATOR is not set | 68 | # CONFIG_ARCH_INTEGRATOR is not set |
70 | CONFIG_ARCH_IOP3XX=y | 69 | CONFIG_ARCH_IOP3XX=y |
diff --git a/arch/arm/configs/iq80332_defconfig b/arch/arm/configs/iq80332_defconfig index 305f01f3a7..18b3f372ed 100644 --- a/arch/arm/configs/iq80332_defconfig +++ b/arch/arm/configs/iq80332_defconfig | |||
@@ -64,7 +64,6 @@ CONFIG_KMOD=y | |||
64 | # CONFIG_ARCH_CLPS711X is not set | 64 | # CONFIG_ARCH_CLPS711X is not set |
65 | # CONFIG_ARCH_CO285 is not set | 65 | # CONFIG_ARCH_CO285 is not set |
66 | # CONFIG_ARCH_EBSA110 is not set | 66 | # CONFIG_ARCH_EBSA110 is not set |
67 | # CONFIG_ARCH_CAMELOT is not set | ||
68 | # CONFIG_ARCH_FOOTBRIDGE is not set | 67 | # CONFIG_ARCH_FOOTBRIDGE is not set |
69 | # CONFIG_ARCH_INTEGRATOR is not set | 68 | # CONFIG_ARCH_INTEGRATOR is not set |
70 | CONFIG_ARCH_IOP3XX=y | 69 | CONFIG_ARCH_IOP3XX=y |
diff --git a/arch/arm/configs/ixdp2400_defconfig b/arch/arm/configs/ixdp2400_defconfig index e6a4d2656f..d9d6bb86a6 100644 --- a/arch/arm/configs/ixdp2400_defconfig +++ b/arch/arm/configs/ixdp2400_defconfig | |||
@@ -86,7 +86,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
86 | # CONFIG_ARCH_CLPS711X is not set | 86 | # CONFIG_ARCH_CLPS711X is not set |
87 | # CONFIG_ARCH_CO285 is not set | 87 | # CONFIG_ARCH_CO285 is not set |
88 | # CONFIG_ARCH_EBSA110 is not set | 88 | # CONFIG_ARCH_EBSA110 is not set |
89 | # CONFIG_ARCH_CAMELOT is not set | ||
90 | # CONFIG_ARCH_FOOTBRIDGE is not set | 89 | # CONFIG_ARCH_FOOTBRIDGE is not set |
91 | # CONFIG_ARCH_INTEGRATOR is not set | 90 | # CONFIG_ARCH_INTEGRATOR is not set |
92 | # CONFIG_ARCH_IOP3XX is not set | 91 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/ixdp2401_defconfig b/arch/arm/configs/ixdp2401_defconfig index 5572cf95d5..2dc9d499c7 100644 --- a/arch/arm/configs/ixdp2401_defconfig +++ b/arch/arm/configs/ixdp2401_defconfig | |||
@@ -86,7 +86,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
86 | # CONFIG_ARCH_CLPS711X is not set | 86 | # CONFIG_ARCH_CLPS711X is not set |
87 | # CONFIG_ARCH_CO285 is not set | 87 | # CONFIG_ARCH_CO285 is not set |
88 | # CONFIG_ARCH_EBSA110 is not set | 88 | # CONFIG_ARCH_EBSA110 is not set |
89 | # CONFIG_ARCH_CAMELOT is not set | ||
90 | # CONFIG_ARCH_FOOTBRIDGE is not set | 89 | # CONFIG_ARCH_FOOTBRIDGE is not set |
91 | # CONFIG_ARCH_INTEGRATOR is not set | 90 | # CONFIG_ARCH_INTEGRATOR is not set |
92 | # CONFIG_ARCH_IOP3XX is not set | 91 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/ixdp2800_defconfig b/arch/arm/configs/ixdp2800_defconfig index 0fddbde858..4248123815 100644 --- a/arch/arm/configs/ixdp2800_defconfig +++ b/arch/arm/configs/ixdp2800_defconfig | |||
@@ -86,7 +86,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
86 | # CONFIG_ARCH_CLPS711X is not set | 86 | # CONFIG_ARCH_CLPS711X is not set |
87 | # CONFIG_ARCH_CO285 is not set | 87 | # CONFIG_ARCH_CO285 is not set |
88 | # CONFIG_ARCH_EBSA110 is not set | 88 | # CONFIG_ARCH_EBSA110 is not set |
89 | # CONFIG_ARCH_CAMELOT is not set | ||
90 | # CONFIG_ARCH_FOOTBRIDGE is not set | 89 | # CONFIG_ARCH_FOOTBRIDGE is not set |
91 | # CONFIG_ARCH_INTEGRATOR is not set | 90 | # CONFIG_ARCH_INTEGRATOR is not set |
92 | # CONFIG_ARCH_IOP3XX is not set | 91 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/ixdp2801_defconfig b/arch/arm/configs/ixdp2801_defconfig index 89b9aa06aa..ea8f4b478f 100644 --- a/arch/arm/configs/ixdp2801_defconfig +++ b/arch/arm/configs/ixdp2801_defconfig | |||
@@ -86,7 +86,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
86 | # CONFIG_ARCH_CLPS711X is not set | 86 | # CONFIG_ARCH_CLPS711X is not set |
87 | # CONFIG_ARCH_CO285 is not set | 87 | # CONFIG_ARCH_CO285 is not set |
88 | # CONFIG_ARCH_EBSA110 is not set | 88 | # CONFIG_ARCH_EBSA110 is not set |
89 | # CONFIG_ARCH_CAMELOT is not set | ||
90 | # CONFIG_ARCH_FOOTBRIDGE is not set | 89 | # CONFIG_ARCH_FOOTBRIDGE is not set |
91 | # CONFIG_ARCH_INTEGRATOR is not set | 90 | # CONFIG_ARCH_INTEGRATOR is not set |
92 | # CONFIG_ARCH_IOP3XX is not set | 91 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/ixp4xx_defconfig b/arch/arm/configs/ixp4xx_defconfig index f74c926beb..4975b914f9 100644 --- a/arch/arm/configs/ixp4xx_defconfig +++ b/arch/arm/configs/ixp4xx_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.14-rc1-git5 | 3 | # Linux kernel version: 2.6.15 |
4 | # Tue Sep 20 17:26:28 2005 | 4 | # Tue Jan 3 03:20:40 2006 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -33,6 +33,7 @@ CONFIG_SYSCTL=y | |||
33 | CONFIG_KOBJECT_UEVENT=y | 33 | CONFIG_KOBJECT_UEVENT=y |
34 | # CONFIG_IKCONFIG is not set | 34 | # CONFIG_IKCONFIG is not set |
35 | CONFIG_INITRAMFS_SOURCE="" | 35 | CONFIG_INITRAMFS_SOURCE="" |
36 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
36 | CONFIG_EMBEDDED=y | 37 | CONFIG_EMBEDDED=y |
37 | CONFIG_KALLSYMS=y | 38 | CONFIG_KALLSYMS=y |
38 | # CONFIG_KALLSYMS_ALL is not set | 39 | # CONFIG_KALLSYMS_ALL is not set |
@@ -42,7 +43,6 @@ CONFIG_BUG=y | |||
42 | CONFIG_BASE_FULL=y | 43 | CONFIG_BASE_FULL=y |
43 | CONFIG_FUTEX=y | 44 | CONFIG_FUTEX=y |
44 | CONFIG_EPOLL=y | 45 | CONFIG_EPOLL=y |
45 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | ||
46 | CONFIG_SHMEM=y | 46 | CONFIG_SHMEM=y |
47 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 47 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
48 | CONFIG_CC_ALIGN_LABELS=0 | 48 | CONFIG_CC_ALIGN_LABELS=0 |
@@ -62,13 +62,29 @@ CONFIG_MODVERSIONS=y | |||
62 | CONFIG_KMOD=y | 62 | CONFIG_KMOD=y |
63 | 63 | ||
64 | # | 64 | # |
65 | # Block layer | ||
66 | # | ||
67 | |||
68 | # | ||
69 | # IO Schedulers | ||
70 | # | ||
71 | CONFIG_IOSCHED_NOOP=y | ||
72 | CONFIG_IOSCHED_AS=y | ||
73 | CONFIG_IOSCHED_DEADLINE=y | ||
74 | CONFIG_IOSCHED_CFQ=y | ||
75 | CONFIG_DEFAULT_AS=y | ||
76 | # CONFIG_DEFAULT_DEADLINE is not set | ||
77 | # CONFIG_DEFAULT_CFQ is not set | ||
78 | # CONFIG_DEFAULT_NOOP is not set | ||
79 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
80 | |||
81 | # | ||
65 | # System Type | 82 | # System Type |
66 | # | 83 | # |
67 | # CONFIG_ARCH_CLPS7500 is not set | 84 | # CONFIG_ARCH_CLPS7500 is not set |
68 | # CONFIG_ARCH_CLPS711X is not set | 85 | # CONFIG_ARCH_CLPS711X is not set |
69 | # CONFIG_ARCH_CO285 is not set | 86 | # CONFIG_ARCH_CO285 is not set |
70 | # CONFIG_ARCH_EBSA110 is not set | 87 | # CONFIG_ARCH_EBSA110 is not set |
71 | # CONFIG_ARCH_CAMELOT is not set | ||
72 | # CONFIG_ARCH_FOOTBRIDGE is not set | 88 | # CONFIG_ARCH_FOOTBRIDGE is not set |
73 | # CONFIG_ARCH_INTEGRATOR is not set | 89 | # CONFIG_ARCH_INTEGRATOR is not set |
74 | # CONFIG_ARCH_IOP3XX is not set | 90 | # CONFIG_ARCH_IOP3XX is not set |
@@ -83,6 +99,7 @@ CONFIG_ARCH_IXP4XX=y | |||
83 | # CONFIG_ARCH_LH7A40X is not set | 99 | # CONFIG_ARCH_LH7A40X is not set |
84 | # CONFIG_ARCH_OMAP is not set | 100 | # CONFIG_ARCH_OMAP is not set |
85 | # CONFIG_ARCH_VERSATILE is not set | 101 | # CONFIG_ARCH_VERSATILE is not set |
102 | # CONFIG_ARCH_REALVIEW is not set | ||
86 | # CONFIG_ARCH_IMX is not set | 103 | # CONFIG_ARCH_IMX is not set |
87 | # CONFIG_ARCH_H720X is not set | 104 | # CONFIG_ARCH_H720X is not set |
88 | # CONFIG_ARCH_AAEC2000 is not set | 105 | # CONFIG_ARCH_AAEC2000 is not set |
@@ -102,6 +119,7 @@ CONFIG_MACH_IXDPG425=y | |||
102 | CONFIG_MACH_IXDP465=y | 119 | CONFIG_MACH_IXDP465=y |
103 | CONFIG_ARCH_IXCDP1100=y | 120 | CONFIG_ARCH_IXCDP1100=y |
104 | CONFIG_ARCH_PRPMC1100=y | 121 | CONFIG_ARCH_PRPMC1100=y |
122 | CONFIG_MACH_NAS100D=y | ||
105 | CONFIG_ARCH_IXDP4XX=y | 123 | CONFIG_ARCH_IXDP4XX=y |
106 | CONFIG_CPU_IXP46X=y | 124 | CONFIG_CPU_IXP46X=y |
107 | # CONFIG_MACH_GTWX5715 is not set | 125 | # CONFIG_MACH_GTWX5715 is not set |
@@ -155,6 +173,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
155 | CONFIG_FLATMEM=y | 173 | CONFIG_FLATMEM=y |
156 | CONFIG_FLAT_NODE_MEM_MAP=y | 174 | CONFIG_FLAT_NODE_MEM_MAP=y |
157 | # CONFIG_SPARSEMEM_STATIC is not set | 175 | # CONFIG_SPARSEMEM_STATIC is not set |
176 | CONFIG_SPLIT_PTLOCK_CPUS=4096 | ||
158 | CONFIG_ALIGNMENT_TRAP=y | 177 | CONFIG_ALIGNMENT_TRAP=y |
159 | 178 | ||
160 | # | 179 | # |
@@ -173,6 +192,7 @@ CONFIG_CMDLINE="console=ttyS0,115200 ip=bootp root=/dev/nfs" | |||
173 | # At least one emulation must be selected | 192 | # At least one emulation must be selected |
174 | # | 193 | # |
175 | CONFIG_FPE_NWFPE=y | 194 | CONFIG_FPE_NWFPE=y |
195 | # CONFIG_FPE_NWFPE_XP is not set | ||
176 | # CONFIG_FPE_FASTFPE is not set | 196 | # CONFIG_FPE_FASTFPE is not set |
177 | 197 | ||
178 | # | 198 | # |
@@ -187,6 +207,8 @@ CONFIG_BINFMT_ELF=y | |||
187 | # Power management options | 207 | # Power management options |
188 | # | 208 | # |
189 | CONFIG_PM=y | 209 | CONFIG_PM=y |
210 | CONFIG_PM_LEGACY=y | ||
211 | # CONFIG_PM_DEBUG is not set | ||
190 | CONFIG_APM=y | 212 | CONFIG_APM=y |
191 | 213 | ||
192 | # | 214 | # |
@@ -271,6 +293,10 @@ CONFIG_IP_VS_SH=m | |||
271 | CONFIG_NETFILTER=y | 293 | CONFIG_NETFILTER=y |
272 | # CONFIG_NETFILTER_DEBUG is not set | 294 | # CONFIG_NETFILTER_DEBUG is not set |
273 | CONFIG_BRIDGE_NETFILTER=y | 295 | CONFIG_BRIDGE_NETFILTER=y |
296 | |||
297 | # | ||
298 | # Core Netfilter Configuration | ||
299 | # | ||
274 | # CONFIG_NETFILTER_NETLINK is not set | 300 | # CONFIG_NETFILTER_NETLINK is not set |
275 | 301 | ||
276 | # | 302 | # |
@@ -286,6 +312,7 @@ CONFIG_IP_NF_IRC=m | |||
286 | # CONFIG_IP_NF_NETBIOS_NS is not set | 312 | # CONFIG_IP_NF_NETBIOS_NS is not set |
287 | # CONFIG_IP_NF_TFTP is not set | 313 | # CONFIG_IP_NF_TFTP is not set |
288 | # CONFIG_IP_NF_AMANDA is not set | 314 | # CONFIG_IP_NF_AMANDA is not set |
315 | # CONFIG_IP_NF_PPTP is not set | ||
289 | CONFIG_IP_NF_QUEUE=m | 316 | CONFIG_IP_NF_QUEUE=m |
290 | CONFIG_IP_NF_IPTABLES=m | 317 | CONFIG_IP_NF_IPTABLES=m |
291 | CONFIG_IP_NF_MATCH_LIMIT=m | 318 | CONFIG_IP_NF_MATCH_LIMIT=m |
@@ -319,6 +346,7 @@ CONFIG_IP_NF_TARGET_REJECT=m | |||
319 | CONFIG_IP_NF_TARGET_LOG=m | 346 | CONFIG_IP_NF_TARGET_LOG=m |
320 | CONFIG_IP_NF_TARGET_ULOG=m | 347 | CONFIG_IP_NF_TARGET_ULOG=m |
321 | CONFIG_IP_NF_TARGET_TCPMSS=m | 348 | CONFIG_IP_NF_TARGET_TCPMSS=m |
349 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
322 | CONFIG_IP_NF_NAT=m | 350 | CONFIG_IP_NF_NAT=m |
323 | CONFIG_IP_NF_NAT_NEEDED=y | 351 | CONFIG_IP_NF_NAT_NEEDED=y |
324 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 352 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
@@ -380,10 +408,18 @@ CONFIG_ECONET=m | |||
380 | CONFIG_ECONET_AUNUDP=y | 408 | CONFIG_ECONET_AUNUDP=y |
381 | CONFIG_ECONET_NATIVE=y | 409 | CONFIG_ECONET_NATIVE=y |
382 | CONFIG_WAN_ROUTER=m | 410 | CONFIG_WAN_ROUTER=m |
411 | |||
412 | # | ||
413 | # QoS and/or fair queueing | ||
414 | # | ||
383 | CONFIG_NET_SCHED=y | 415 | CONFIG_NET_SCHED=y |
384 | CONFIG_NET_SCH_CLK_JIFFIES=y | 416 | CONFIG_NET_SCH_CLK_JIFFIES=y |
385 | # CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set | 417 | # CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set |
386 | # CONFIG_NET_SCH_CLK_CPU is not set | 418 | # CONFIG_NET_SCH_CLK_CPU is not set |
419 | |||
420 | # | ||
421 | # Queueing/Scheduling | ||
422 | # | ||
387 | CONFIG_NET_SCH_CBQ=m | 423 | CONFIG_NET_SCH_CBQ=m |
388 | CONFIG_NET_SCH_HTB=m | 424 | CONFIG_NET_SCH_HTB=m |
389 | # CONFIG_NET_SCH_HFSC is not set | 425 | # CONFIG_NET_SCH_HFSC is not set |
@@ -397,8 +433,10 @@ CONFIG_NET_SCH_GRED=m | |||
397 | CONFIG_NET_SCH_DSMARK=m | 433 | CONFIG_NET_SCH_DSMARK=m |
398 | # CONFIG_NET_SCH_NETEM is not set | 434 | # CONFIG_NET_SCH_NETEM is not set |
399 | CONFIG_NET_SCH_INGRESS=m | 435 | CONFIG_NET_SCH_INGRESS=m |
400 | CONFIG_NET_QOS=y | 436 | |
401 | CONFIG_NET_ESTIMATOR=y | 437 | # |
438 | # Classification | ||
439 | # | ||
402 | CONFIG_NET_CLS=y | 440 | CONFIG_NET_CLS=y |
403 | # CONFIG_NET_CLS_BASIC is not set | 441 | # CONFIG_NET_CLS_BASIC is not set |
404 | CONFIG_NET_CLS_TCINDEX=m | 442 | CONFIG_NET_CLS_TCINDEX=m |
@@ -407,13 +445,14 @@ CONFIG_NET_CLS_ROUTE=y | |||
407 | CONFIG_NET_CLS_FW=m | 445 | CONFIG_NET_CLS_FW=m |
408 | CONFIG_NET_CLS_U32=m | 446 | CONFIG_NET_CLS_U32=m |
409 | # CONFIG_CLS_U32_PERF is not set | 447 | # CONFIG_CLS_U32_PERF is not set |
410 | # CONFIG_NET_CLS_IND is not set | ||
411 | # CONFIG_CLS_U32_MARK is not set | 448 | # CONFIG_CLS_U32_MARK is not set |
412 | CONFIG_NET_CLS_RSVP=m | 449 | CONFIG_NET_CLS_RSVP=m |
413 | CONFIG_NET_CLS_RSVP6=m | 450 | CONFIG_NET_CLS_RSVP6=m |
414 | # CONFIG_NET_EMATCH is not set | 451 | # CONFIG_NET_EMATCH is not set |
415 | # CONFIG_NET_CLS_ACT is not set | 452 | # CONFIG_NET_CLS_ACT is not set |
416 | CONFIG_NET_CLS_POLICE=y | 453 | CONFIG_NET_CLS_POLICE=y |
454 | # CONFIG_NET_CLS_IND is not set | ||
455 | CONFIG_NET_ESTIMATOR=y | ||
417 | 456 | ||
418 | # | 457 | # |
419 | # Network testing | 458 | # Network testing |
@@ -437,6 +476,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
437 | # CONFIG_DEBUG_DRIVER is not set | 476 | # CONFIG_DEBUG_DRIVER is not set |
438 | 477 | ||
439 | # | 478 | # |
479 | # Connector - unified userspace <-> kernelspace linker | ||
480 | # | ||
481 | # CONFIG_CONNECTOR is not set | ||
482 | |||
483 | # | ||
440 | # Memory Technology Devices (MTD) | 484 | # Memory Technology Devices (MTD) |
441 | # | 485 | # |
442 | CONFIG_MTD=y | 486 | CONFIG_MTD=y |
@@ -458,6 +502,7 @@ CONFIG_MTD_BLOCK=y | |||
458 | # CONFIG_FTL is not set | 502 | # CONFIG_FTL is not set |
459 | # CONFIG_NFTL is not set | 503 | # CONFIG_NFTL is not set |
460 | # CONFIG_INFTL is not set | 504 | # CONFIG_INFTL is not set |
505 | # CONFIG_RFD_FTL is not set | ||
461 | 506 | ||
462 | # | 507 | # |
463 | # RAM/ROM/Flash chip drivers | 508 | # RAM/ROM/Flash chip drivers |
@@ -492,7 +537,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y | |||
492 | # CONFIG_MTD_PHYSMAP is not set | 537 | # CONFIG_MTD_PHYSMAP is not set |
493 | # CONFIG_MTD_ARM_INTEGRATOR is not set | 538 | # CONFIG_MTD_ARM_INTEGRATOR is not set |
494 | CONFIG_MTD_IXP4XX=y | 539 | CONFIG_MTD_IXP4XX=y |
495 | # CONFIG_MTD_EDB7312 is not set | ||
496 | # CONFIG_MTD_PCI is not set | 540 | # CONFIG_MTD_PCI is not set |
497 | # CONFIG_MTD_PLATRAM is not set | 541 | # CONFIG_MTD_PLATRAM is not set |
498 | 542 | ||
@@ -523,6 +567,11 @@ CONFIG_MTD_NAND_IDS=m | |||
523 | # CONFIG_MTD_NAND_NANDSIM is not set | 567 | # CONFIG_MTD_NAND_NANDSIM is not set |
524 | 568 | ||
525 | # | 569 | # |
570 | # OneNAND Flash Device Drivers | ||
571 | # | ||
572 | # CONFIG_MTD_ONENAND is not set | ||
573 | |||
574 | # | ||
526 | # Parallel port support | 575 | # Parallel port support |
527 | # | 576 | # |
528 | # CONFIG_PARPORT is not set | 577 | # CONFIG_PARPORT is not set |
@@ -548,14 +597,6 @@ CONFIG_BLK_DEV_RAM_COUNT=16 | |||
548 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 597 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
549 | CONFIG_BLK_DEV_INITRD=y | 598 | CONFIG_BLK_DEV_INITRD=y |
550 | # CONFIG_CDROM_PKTCDVD is not set | 599 | # CONFIG_CDROM_PKTCDVD is not set |
551 | |||
552 | # | ||
553 | # IO Schedulers | ||
554 | # | ||
555 | CONFIG_IOSCHED_NOOP=y | ||
556 | CONFIG_IOSCHED_AS=y | ||
557 | CONFIG_IOSCHED_DEADLINE=y | ||
558 | CONFIG_IOSCHED_CFQ=y | ||
559 | # CONFIG_ATA_OVER_ETH is not set | 600 | # CONFIG_ATA_OVER_ETH is not set |
560 | 601 | ||
561 | # | 602 | # |
@@ -668,6 +709,7 @@ CONFIG_NET_ETHERNET=y | |||
668 | CONFIG_MII=y | 709 | CONFIG_MII=y |
669 | # CONFIG_HAPPYMEAL is not set | 710 | # CONFIG_HAPPYMEAL is not set |
670 | # CONFIG_SUNGEM is not set | 711 | # CONFIG_SUNGEM is not set |
712 | # CONFIG_CASSINI is not set | ||
671 | # CONFIG_NET_VENDOR_3COM is not set | 713 | # CONFIG_NET_VENDOR_3COM is not set |
672 | # CONFIG_SMC91X is not set | 714 | # CONFIG_SMC91X is not set |
673 | # CONFIG_DM9000 is not set | 715 | # CONFIG_DM9000 is not set |
@@ -739,6 +781,7 @@ CONFIG_NET_RADIO=y | |||
739 | # | 781 | # |
740 | # Wireless 802.11b ISA/PCI cards support | 782 | # Wireless 802.11b ISA/PCI cards support |
741 | # | 783 | # |
784 | # CONFIG_AIRO is not set | ||
742 | CONFIG_HERMES=y | 785 | CONFIG_HERMES=y |
743 | # CONFIG_PLX_HERMES is not set | 786 | # CONFIG_PLX_HERMES is not set |
744 | # CONFIG_TMD_HERMES is not set | 787 | # CONFIG_TMD_HERMES is not set |
@@ -782,6 +825,7 @@ CONFIG_WAN_ROUTER_DRIVERS=y | |||
782 | # | 825 | # |
783 | # ATM drivers | 826 | # ATM drivers |
784 | # | 827 | # |
828 | # CONFIG_ATM_DUMMY is not set | ||
785 | CONFIG_ATM_TCP=m | 829 | CONFIG_ATM_TCP=m |
786 | # CONFIG_ATM_LANAI is not set | 830 | # CONFIG_ATM_LANAI is not set |
787 | # CONFIG_ATM_ENI is not set | 831 | # CONFIG_ATM_ENI is not set |
@@ -902,6 +946,7 @@ CONFIG_IXP4XX_WATCHDOG=y | |||
902 | # TPM devices | 946 | # TPM devices |
903 | # | 947 | # |
904 | # CONFIG_TCG_TPM is not set | 948 | # CONFIG_TCG_TPM is not set |
949 | # CONFIG_TELCLOCK is not set | ||
905 | 950 | ||
906 | # | 951 | # |
907 | # I2C support | 952 | # I2C support |
@@ -954,6 +999,7 @@ CONFIG_SENSORS_EEPROM=y | |||
954 | # CONFIG_SENSORS_PCF8591 is not set | 999 | # CONFIG_SENSORS_PCF8591 is not set |
955 | # CONFIG_SENSORS_RTC8564 is not set | 1000 | # CONFIG_SENSORS_RTC8564 is not set |
956 | # CONFIG_SENSORS_MAX6875 is not set | 1001 | # CONFIG_SENSORS_MAX6875 is not set |
1002 | # CONFIG_RTC_X1205_I2C is not set | ||
957 | # CONFIG_I2C_DEBUG_CORE is not set | 1003 | # CONFIG_I2C_DEBUG_CORE is not set |
958 | # CONFIG_I2C_DEBUG_ALGO is not set | 1004 | # CONFIG_I2C_DEBUG_ALGO is not set |
959 | # CONFIG_I2C_DEBUG_BUS is not set | 1005 | # CONFIG_I2C_DEBUG_BUS is not set |
@@ -1036,6 +1082,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1036 | # CONFIG_USB is not set | 1082 | # CONFIG_USB is not set |
1037 | 1083 | ||
1038 | # | 1084 | # |
1085 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
1086 | # | ||
1087 | |||
1088 | # | ||
1039 | # USB Gadget Support | 1089 | # USB Gadget Support |
1040 | # | 1090 | # |
1041 | # CONFIG_USB_GADGET is not set | 1091 | # CONFIG_USB_GADGET is not set |
@@ -1110,6 +1160,7 @@ CONFIG_RAMFS=y | |||
1110 | CONFIG_JFFS2_FS=y | 1160 | CONFIG_JFFS2_FS=y |
1111 | CONFIG_JFFS2_FS_DEBUG=0 | 1161 | CONFIG_JFFS2_FS_DEBUG=0 |
1112 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 1162 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
1163 | # CONFIG_JFFS2_SUMMARY is not set | ||
1113 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 1164 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
1114 | CONFIG_JFFS2_ZLIB=y | 1165 | CONFIG_JFFS2_ZLIB=y |
1115 | CONFIG_JFFS2_RTIME=y | 1166 | CONFIG_JFFS2_RTIME=y |
@@ -1190,7 +1241,9 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1190 | CONFIG_DEBUG_BUGVERBOSE=y | 1241 | CONFIG_DEBUG_BUGVERBOSE=y |
1191 | # CONFIG_DEBUG_INFO is not set | 1242 | # CONFIG_DEBUG_INFO is not set |
1192 | # CONFIG_DEBUG_FS is not set | 1243 | # CONFIG_DEBUG_FS is not set |
1244 | # CONFIG_DEBUG_VM is not set | ||
1193 | CONFIG_FRAME_POINTER=y | 1245 | CONFIG_FRAME_POINTER=y |
1246 | # CONFIG_RCU_TORTURE_TEST is not set | ||
1194 | # CONFIG_DEBUG_USER is not set | 1247 | # CONFIG_DEBUG_USER is not set |
1195 | # CONFIG_DEBUG_WAITQ is not set | 1248 | # CONFIG_DEBUG_WAITQ is not set |
1196 | CONFIG_DEBUG_ERRORS=y | 1249 | CONFIG_DEBUG_ERRORS=y |
diff --git a/arch/arm/configs/jornada720_defconfig b/arch/arm/configs/jornada720_defconfig index b88aeba82b..ad1048db96 100644 --- a/arch/arm/configs/jornada720_defconfig +++ b/arch/arm/configs/jornada720_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_KMOD=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/lart_defconfig b/arch/arm/configs/lart_defconfig index 7033829ed1..c3a9328441 100644 --- a/arch/arm/configs/lart_defconfig +++ b/arch/arm/configs/lart_defconfig | |||
@@ -62,7 +62,6 @@ CONFIG_KMOD=y | |||
62 | # CONFIG_ARCH_CLPS711X is not set | 62 | # CONFIG_ARCH_CLPS711X is not set |
63 | # CONFIG_ARCH_CO285 is not set | 63 | # CONFIG_ARCH_CO285 is not set |
64 | # CONFIG_ARCH_EBSA110 is not set | 64 | # CONFIG_ARCH_EBSA110 is not set |
65 | # CONFIG_ARCH_CAMELOT is not set | ||
66 | # CONFIG_ARCH_FOOTBRIDGE is not set | 65 | # CONFIG_ARCH_FOOTBRIDGE is not set |
67 | # CONFIG_ARCH_INTEGRATOR is not set | 66 | # CONFIG_ARCH_INTEGRATOR is not set |
68 | # CONFIG_ARCH_IOP3XX is not set | 67 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/lpd7a400_defconfig b/arch/arm/configs/lpd7a400_defconfig index d64706d3ff..67eaa26c26 100644 --- a/arch/arm/configs/lpd7a400_defconfig +++ b/arch/arm/configs/lpd7a400_defconfig | |||
@@ -60,7 +60,6 @@ CONFIG_BASE_SMALL=0 | |||
60 | # CONFIG_ARCH_CLPS711X is not set | 60 | # CONFIG_ARCH_CLPS711X is not set |
61 | # CONFIG_ARCH_CO285 is not set | 61 | # CONFIG_ARCH_CO285 is not set |
62 | # CONFIG_ARCH_EBSA110 is not set | 62 | # CONFIG_ARCH_EBSA110 is not set |
63 | # CONFIG_ARCH_CAMELOT is not set | ||
64 | # CONFIG_ARCH_FOOTBRIDGE is not set | 63 | # CONFIG_ARCH_FOOTBRIDGE is not set |
65 | # CONFIG_ARCH_INTEGRATOR is not set | 64 | # CONFIG_ARCH_INTEGRATOR is not set |
66 | # CONFIG_ARCH_IOP3XX is not set | 65 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/lpd7a404_defconfig b/arch/arm/configs/lpd7a404_defconfig index 87cbedfb30..208d591ebf 100644 --- a/arch/arm/configs/lpd7a404_defconfig +++ b/arch/arm/configs/lpd7a404_defconfig | |||
@@ -60,7 +60,6 @@ CONFIG_BASE_SMALL=0 | |||
60 | # CONFIG_ARCH_CLPS711X is not set | 60 | # CONFIG_ARCH_CLPS711X is not set |
61 | # CONFIG_ARCH_CO285 is not set | 61 | # CONFIG_ARCH_CO285 is not set |
62 | # CONFIG_ARCH_EBSA110 is not set | 62 | # CONFIG_ARCH_EBSA110 is not set |
63 | # CONFIG_ARCH_CAMELOT is not set | ||
64 | # CONFIG_ARCH_FOOTBRIDGE is not set | 63 | # CONFIG_ARCH_FOOTBRIDGE is not set |
65 | # CONFIG_ARCH_INTEGRATOR is not set | 64 | # CONFIG_ARCH_INTEGRATOR is not set |
66 | # CONFIG_ARCH_IOP3XX is not set | 65 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/lubbock_defconfig b/arch/arm/configs/lubbock_defconfig index 4bc8717c6f..81daadcbe0 100644 --- a/arch/arm/configs/lubbock_defconfig +++ b/arch/arm/configs/lubbock_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/lusl7200_defconfig b/arch/arm/configs/lusl7200_defconfig index 3ca64cabc9..42f6a77bc3 100644 --- a/arch/arm/configs/lusl7200_defconfig +++ b/arch/arm/configs/lusl7200_defconfig | |||
@@ -62,7 +62,6 @@ CONFIG_KMOD=y | |||
62 | # CONFIG_ARCH_CLPS711X is not set | 62 | # CONFIG_ARCH_CLPS711X is not set |
63 | # CONFIG_ARCH_CO285 is not set | 63 | # CONFIG_ARCH_CO285 is not set |
64 | # CONFIG_ARCH_EBSA110 is not set | 64 | # CONFIG_ARCH_EBSA110 is not set |
65 | # CONFIG_ARCH_CAMELOT is not set | ||
66 | # CONFIG_ARCH_FOOTBRIDGE is not set | 65 | # CONFIG_ARCH_FOOTBRIDGE is not set |
67 | # CONFIG_ARCH_INTEGRATOR is not set | 66 | # CONFIG_ARCH_INTEGRATOR is not set |
68 | # CONFIG_ARCH_IOP3XX is not set | 67 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/mainstone_defconfig b/arch/arm/configs/mainstone_defconfig index 153d68594b..b112bd75bd 100644 --- a/arch/arm/configs/mainstone_defconfig +++ b/arch/arm/configs/mainstone_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/mx1ads_defconfig b/arch/arm/configs/mx1ads_defconfig index 6517d167ac..d16f6cd6e0 100644 --- a/arch/arm/configs/mx1ads_defconfig +++ b/arch/arm/configs/mx1ads_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_KMOD=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/neponset_defconfig b/arch/arm/configs/neponset_defconfig index 7fb1f7c7bf..3d35255c64 100644 --- a/arch/arm/configs/neponset_defconfig +++ b/arch/arm/configs/neponset_defconfig | |||
@@ -65,7 +65,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
65 | # CONFIG_ARCH_CLPS711X is not set | 65 | # CONFIG_ARCH_CLPS711X is not set |
66 | # CONFIG_ARCH_CO285 is not set | 66 | # CONFIG_ARCH_CO285 is not set |
67 | # CONFIG_ARCH_EBSA110 is not set | 67 | # CONFIG_ARCH_EBSA110 is not set |
68 | # CONFIG_ARCH_CAMELOT is not set | ||
69 | # CONFIG_ARCH_FOOTBRIDGE is not set | 68 | # CONFIG_ARCH_FOOTBRIDGE is not set |
70 | # CONFIG_ARCH_INTEGRATOR is not set | 69 | # CONFIG_ARCH_INTEGRATOR is not set |
71 | # CONFIG_ARCH_IOP3XX is not set | 70 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/netwinder_defconfig b/arch/arm/configs/netwinder_defconfig index 6e81acf94c..2cae1ead9f 100644 --- a/arch/arm/configs/netwinder_defconfig +++ b/arch/arm/configs/netwinder_defconfig | |||
@@ -58,7 +58,6 @@ CONFIG_BASE_SMALL=0 | |||
58 | # CONFIG_ARCH_CLPS711X is not set | 58 | # CONFIG_ARCH_CLPS711X is not set |
59 | # CONFIG_ARCH_CO285 is not set | 59 | # CONFIG_ARCH_CO285 is not set |
60 | # CONFIG_ARCH_EBSA110 is not set | 60 | # CONFIG_ARCH_EBSA110 is not set |
61 | # CONFIG_ARCH_CAMELOT is not set | ||
62 | CONFIG_ARCH_FOOTBRIDGE=y | 61 | CONFIG_ARCH_FOOTBRIDGE=y |
63 | # CONFIG_ARCH_INTEGRATOR is not set | 62 | # CONFIG_ARCH_INTEGRATOR is not set |
64 | # CONFIG_ARCH_IOP3XX is not set | 63 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/omap_h2_1610_defconfig b/arch/arm/configs/omap_h2_1610_defconfig index 529f0f72e1..ee3ecbd900 100644 --- a/arch/arm/configs/omap_h2_1610_defconfig +++ b/arch/arm/configs/omap_h2_1610_defconfig | |||
@@ -85,7 +85,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
85 | # CONFIG_ARCH_CLPS711X is not set | 85 | # CONFIG_ARCH_CLPS711X is not set |
86 | # CONFIG_ARCH_CO285 is not set | 86 | # CONFIG_ARCH_CO285 is not set |
87 | # CONFIG_ARCH_EBSA110 is not set | 87 | # CONFIG_ARCH_EBSA110 is not set |
88 | # CONFIG_ARCH_CAMELOT is not set | ||
89 | # CONFIG_ARCH_FOOTBRIDGE is not set | 88 | # CONFIG_ARCH_FOOTBRIDGE is not set |
90 | # CONFIG_ARCH_INTEGRATOR is not set | 89 | # CONFIG_ARCH_INTEGRATOR is not set |
91 | # CONFIG_ARCH_IOP3XX is not set | 90 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/pleb_defconfig b/arch/arm/configs/pleb_defconfig index 10fec89057..24e8bdd4cb 100644 --- a/arch/arm/configs/pleb_defconfig +++ b/arch/arm/configs/pleb_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_KMOD=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/pxa255-idp_defconfig b/arch/arm/configs/pxa255-idp_defconfig index 21c327883d..b71d31a4bb 100644 --- a/arch/arm/configs/pxa255-idp_defconfig +++ b/arch/arm/configs/pxa255-idp_defconfig | |||
@@ -63,7 +63,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
63 | # CONFIG_ARCH_CLPS711X is not set | 63 | # CONFIG_ARCH_CLPS711X is not set |
64 | # CONFIG_ARCH_CO285 is not set | 64 | # CONFIG_ARCH_CO285 is not set |
65 | # CONFIG_ARCH_EBSA110 is not set | 65 | # CONFIG_ARCH_EBSA110 is not set |
66 | # CONFIG_ARCH_CAMELOT is not set | ||
67 | # CONFIG_ARCH_FOOTBRIDGE is not set | 66 | # CONFIG_ARCH_FOOTBRIDGE is not set |
68 | # CONFIG_ARCH_INTEGRATOR is not set | 67 | # CONFIG_ARCH_INTEGRATOR is not set |
69 | # CONFIG_ARCH_IOP3XX is not set | 68 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/realview_defconfig b/arch/arm/configs/realview_defconfig index 0485b2f1cc..3f1ec4e304 100644 --- a/arch/arm/configs/realview_defconfig +++ b/arch/arm/configs/realview_defconfig | |||
@@ -65,7 +65,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
65 | # CONFIG_ARCH_CLPS711X is not set | 65 | # CONFIG_ARCH_CLPS711X is not set |
66 | # CONFIG_ARCH_CO285 is not set | 66 | # CONFIG_ARCH_CO285 is not set |
67 | # CONFIG_ARCH_EBSA110 is not set | 67 | # CONFIG_ARCH_EBSA110 is not set |
68 | # CONFIG_ARCH_CAMELOT is not set | ||
69 | # CONFIG_ARCH_FOOTBRIDGE is not set | 68 | # CONFIG_ARCH_FOOTBRIDGE is not set |
70 | # CONFIG_ARCH_INTEGRATOR is not set | 69 | # CONFIG_ARCH_INTEGRATOR is not set |
71 | # CONFIG_ARCH_IOP3XX is not set | 70 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/rpc_defconfig b/arch/arm/configs/rpc_defconfig index 19184c1010..b498afdc03 100644 --- a/arch/arm/configs/rpc_defconfig +++ b/arch/arm/configs/rpc_defconfig | |||
@@ -66,7 +66,6 @@ CONFIG_KMOD=y | |||
66 | # CONFIG_ARCH_CLPS711X is not set | 66 | # CONFIG_ARCH_CLPS711X is not set |
67 | # CONFIG_ARCH_CO285 is not set | 67 | # CONFIG_ARCH_CO285 is not set |
68 | # CONFIG_ARCH_EBSA110 is not set | 68 | # CONFIG_ARCH_EBSA110 is not set |
69 | # CONFIG_ARCH_CAMELOT is not set | ||
70 | # CONFIG_ARCH_FOOTBRIDGE is not set | 69 | # CONFIG_ARCH_FOOTBRIDGE is not set |
71 | # CONFIG_ARCH_INTEGRATOR is not set | 70 | # CONFIG_ARCH_INTEGRATOR is not set |
72 | # CONFIG_ARCH_IOP3XX is not set | 71 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/s3c2410_defconfig b/arch/arm/configs/s3c2410_defconfig index 3f97590c91..33f31080a9 100644 --- a/arch/arm/configs/s3c2410_defconfig +++ b/arch/arm/configs/s3c2410_defconfig | |||
@@ -85,7 +85,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
85 | # CONFIG_ARCH_CLPS711X is not set | 85 | # CONFIG_ARCH_CLPS711X is not set |
86 | # CONFIG_ARCH_CO285 is not set | 86 | # CONFIG_ARCH_CO285 is not set |
87 | # CONFIG_ARCH_EBSA110 is not set | 87 | # CONFIG_ARCH_EBSA110 is not set |
88 | # CONFIG_ARCH_CAMELOT is not set | ||
89 | # CONFIG_ARCH_FOOTBRIDGE is not set | 88 | # CONFIG_ARCH_FOOTBRIDGE is not set |
90 | # CONFIG_ARCH_INTEGRATOR is not set | 89 | # CONFIG_ARCH_INTEGRATOR is not set |
91 | # CONFIG_ARCH_IOP3XX is not set | 90 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/shannon_defconfig b/arch/arm/configs/shannon_defconfig index e3facc4fe7..d052c8f805 100644 --- a/arch/arm/configs/shannon_defconfig +++ b/arch/arm/configs/shannon_defconfig | |||
@@ -62,7 +62,6 @@ CONFIG_OBSOLETE_MODPARM=y | |||
62 | # CONFIG_ARCH_CLPS711X is not set | 62 | # CONFIG_ARCH_CLPS711X is not set |
63 | # CONFIG_ARCH_CO285 is not set | 63 | # CONFIG_ARCH_CO285 is not set |
64 | # CONFIG_ARCH_EBSA110 is not set | 64 | # CONFIG_ARCH_EBSA110 is not set |
65 | # CONFIG_ARCH_CAMELOT is not set | ||
66 | # CONFIG_ARCH_FOOTBRIDGE is not set | 65 | # CONFIG_ARCH_FOOTBRIDGE is not set |
67 | # CONFIG_ARCH_INTEGRATOR is not set | 66 | # CONFIG_ARCH_INTEGRATOR is not set |
68 | # CONFIG_ARCH_IOP3XX is not set | 67 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/shark_defconfig b/arch/arm/configs/shark_defconfig index 271823f0d7..c48d170622 100644 --- a/arch/arm/configs/shark_defconfig +++ b/arch/arm/configs/shark_defconfig | |||
@@ -66,7 +66,6 @@ CONFIG_KMOD=y | |||
66 | # CONFIG_ARCH_CLPS711X is not set | 66 | # CONFIG_ARCH_CLPS711X is not set |
67 | # CONFIG_ARCH_CO285 is not set | 67 | # CONFIG_ARCH_CO285 is not set |
68 | # CONFIG_ARCH_EBSA110 is not set | 68 | # CONFIG_ARCH_EBSA110 is not set |
69 | # CONFIG_ARCH_CAMELOT is not set | ||
70 | # CONFIG_ARCH_FOOTBRIDGE is not set | 69 | # CONFIG_ARCH_FOOTBRIDGE is not set |
71 | # CONFIG_ARCH_INTEGRATOR is not set | 70 | # CONFIG_ARCH_INTEGRATOR is not set |
72 | # CONFIG_ARCH_IOP3XX is not set | 71 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/simpad_defconfig b/arch/arm/configs/simpad_defconfig index 5373eeb7d5..2e5a616cc9 100644 --- a/arch/arm/configs/simpad_defconfig +++ b/arch/arm/configs/simpad_defconfig | |||
@@ -64,7 +64,6 @@ CONFIG_KMOD=y | |||
64 | # CONFIG_ARCH_CLPS711X is not set | 64 | # CONFIG_ARCH_CLPS711X is not set |
65 | # CONFIG_ARCH_CO285 is not set | 65 | # CONFIG_ARCH_CO285 is not set |
66 | # CONFIG_ARCH_EBSA110 is not set | 66 | # CONFIG_ARCH_EBSA110 is not set |
67 | # CONFIG_ARCH_CAMELOT is not set | ||
68 | # CONFIG_ARCH_FOOTBRIDGE is not set | 67 | # CONFIG_ARCH_FOOTBRIDGE is not set |
69 | # CONFIG_ARCH_INTEGRATOR is not set | 68 | # CONFIG_ARCH_INTEGRATOR is not set |
70 | # CONFIG_ARCH_IOP3XX is not set | 69 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/smdk2410_defconfig b/arch/arm/configs/smdk2410_defconfig index 2c60865fda..4d123d33c7 100644 --- a/arch/arm/configs/smdk2410_defconfig +++ b/arch/arm/configs/smdk2410_defconfig | |||
@@ -58,7 +58,6 @@ CONFIG_BASE_SMALL=0 | |||
58 | # CONFIG_ARCH_CLPS711X is not set | 58 | # CONFIG_ARCH_CLPS711X is not set |
59 | # CONFIG_ARCH_CO285 is not set | 59 | # CONFIG_ARCH_CO285 is not set |
60 | # CONFIG_ARCH_EBSA110 is not set | 60 | # CONFIG_ARCH_EBSA110 is not set |
61 | # CONFIG_ARCH_CAMELOT is not set | ||
62 | # CONFIG_ARCH_FOOTBRIDGE is not set | 61 | # CONFIG_ARCH_FOOTBRIDGE is not set |
63 | # CONFIG_ARCH_INTEGRATOR is not set | 62 | # CONFIG_ARCH_INTEGRATOR is not set |
64 | # CONFIG_ARCH_IOP3XX is not set | 63 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig index 9895539533..d1ace3abfd 100644 --- a/arch/arm/configs/spitz_defconfig +++ b/arch/arm/configs/spitz_defconfig | |||
@@ -87,7 +87,6 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
87 | # CONFIG_ARCH_CLPS711X is not set | 87 | # CONFIG_ARCH_CLPS711X is not set |
88 | # CONFIG_ARCH_CO285 is not set | 88 | # CONFIG_ARCH_CO285 is not set |
89 | # CONFIG_ARCH_EBSA110 is not set | 89 | # CONFIG_ARCH_EBSA110 is not set |
90 | # CONFIG_ARCH_CAMELOT is not set | ||
91 | # CONFIG_ARCH_FOOTBRIDGE is not set | 90 | # CONFIG_ARCH_FOOTBRIDGE is not set |
92 | # CONFIG_ARCH_INTEGRATOR is not set | 91 | # CONFIG_ARCH_INTEGRATOR is not set |
93 | # CONFIG_ARCH_IOP3XX is not set | 92 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/configs/versatile_defconfig b/arch/arm/configs/versatile_defconfig index d72f2c7542..2687a225aa 100644 --- a/arch/arm/configs/versatile_defconfig +++ b/arch/arm/configs/versatile_defconfig | |||
@@ -64,7 +64,6 @@ CONFIG_KMOD=y | |||
64 | # CONFIG_ARCH_CLPS711X is not set | 64 | # CONFIG_ARCH_CLPS711X is not set |
65 | # CONFIG_ARCH_CO285 is not set | 65 | # CONFIG_ARCH_CO285 is not set |
66 | # CONFIG_ARCH_EBSA110 is not set | 66 | # CONFIG_ARCH_EBSA110 is not set |
67 | # CONFIG_ARCH_CAMELOT is not set | ||
68 | # CONFIG_ARCH_FOOTBRIDGE is not set | 67 | # CONFIG_ARCH_FOOTBRIDGE is not set |
69 | # CONFIG_ARCH_INTEGRATOR is not set | 68 | # CONFIG_ARCH_INTEGRATOR is not set |
70 | # CONFIG_ARCH_IOP3XX is not set | 69 | # CONFIG_ARCH_IOP3XX is not set |
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index c11169b5ed..de94b0f3ee 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile | |||
@@ -2,15 +2,16 @@ | |||
2 | # Makefile for the linux kernel. | 2 | # Makefile for the linux kernel. |
3 | # | 3 | # |
4 | 4 | ||
5 | AFLAGS_head.o := -DKERNEL_RAM_ADDR=$(TEXTADDR) | 5 | AFLAGS_head.o := -DTEXT_OFFSET=$(TEXT_OFFSET) |
6 | 6 | ||
7 | # Object file lists. | 7 | # Object file lists. |
8 | 8 | ||
9 | obj-y := compat.o dma.o entry-armv.o entry-common.o irq.o \ | 9 | obj-y := compat.o entry-armv.o entry-common.o irq.o \ |
10 | process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o \ | 10 | process.o ptrace.o semaphore.o setup.o signal.o sys_arm.o \ |
11 | time.o traps.o | 11 | time.o traps.o |
12 | 12 | ||
13 | obj-$(CONFIG_APM) += apm.o | 13 | obj-$(CONFIG_APM) += apm.o |
14 | obj-$(CONFIG_ISA_DMA_API) += dma.o | ||
14 | obj-$(CONFIG_ARCH_ACORN) += ecard.o | 15 | obj-$(CONFIG_ARCH_ACORN) += ecard.o |
15 | obj-$(CONFIG_FOOTBRIDGE) += isa.o | 16 | obj-$(CONFIG_FOOTBRIDGE) += isa.o |
16 | obj-$(CONFIG_FIQ) += fiq.o | 17 | obj-$(CONFIG_FIQ) += fiq.o |
diff --git a/arch/arm/kernel/apm.c b/arch/arm/kernel/apm.c index a2843be055..766b6c05c6 100644 --- a/arch/arm/kernel/apm.c +++ b/arch/arm/kernel/apm.c | |||
@@ -18,9 +18,9 @@ | |||
18 | #include <linux/proc_fs.h> | 18 | #include <linux/proc_fs.h> |
19 | #include <linux/miscdevice.h> | 19 | #include <linux/miscdevice.h> |
20 | #include <linux/apm_bios.h> | 20 | #include <linux/apm_bios.h> |
21 | #include <linux/capability.h> | ||
21 | #include <linux/sched.h> | 22 | #include <linux/sched.h> |
22 | #include <linux/pm.h> | 23 | #include <linux/pm.h> |
23 | #include <linux/pm_legacy.h> | ||
24 | #include <linux/device.h> | 24 | #include <linux/device.h> |
25 | #include <linux/kernel.h> | 25 | #include <linux/kernel.h> |
26 | #include <linux/list.h> | 26 | #include <linux/list.h> |
@@ -81,6 +81,7 @@ struct apm_user { | |||
81 | */ | 81 | */ |
82 | static int suspends_pending; | 82 | static int suspends_pending; |
83 | static int apm_disabled; | 83 | static int apm_disabled; |
84 | static int arm_apm_active; | ||
84 | 85 | ||
85 | static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue); | 86 | static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue); |
86 | static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); | 87 | static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue); |
@@ -477,9 +478,9 @@ static int kapmd(void *arg) | |||
477 | apm_event_t event; | 478 | apm_event_t event; |
478 | 479 | ||
479 | wait_event_interruptible(kapmd_wait, | 480 | wait_event_interruptible(kapmd_wait, |
480 | !queue_empty(&kapmd_queue) || !pm_active); | 481 | !queue_empty(&kapmd_queue) || !arm_apm_active); |
481 | 482 | ||
482 | if (!pm_active) | 483 | if (!arm_apm_active) |
483 | break; | 484 | break; |
484 | 485 | ||
485 | spin_lock_irq(&kapmd_queue_lock); | 486 | spin_lock_irq(&kapmd_queue_lock); |
@@ -522,16 +523,11 @@ static int __init apm_init(void) | |||
522 | return -ENODEV; | 523 | return -ENODEV; |
523 | } | 524 | } |
524 | 525 | ||
525 | if (PM_IS_ACTIVE()) { | 526 | arm_apm_active = 1; |
526 | printk(KERN_NOTICE "apm: overridden by ACPI.\n"); | ||
527 | return -EINVAL; | ||
528 | } | ||
529 | |||
530 | pm_active = 1; | ||
531 | 527 | ||
532 | ret = kernel_thread(kapmd, NULL, CLONE_KERNEL); | 528 | ret = kernel_thread(kapmd, NULL, CLONE_KERNEL); |
533 | if (ret < 0) { | 529 | if (ret < 0) { |
534 | pm_active = 0; | 530 | arm_apm_active = 0; |
535 | return ret; | 531 | return ret; |
536 | } | 532 | } |
537 | 533 | ||
@@ -543,7 +539,7 @@ static int __init apm_init(void) | |||
543 | if (ret != 0) { | 539 | if (ret != 0) { |
544 | remove_proc_entry("apm", NULL); | 540 | remove_proc_entry("apm", NULL); |
545 | 541 | ||
546 | pm_active = 0; | 542 | arm_apm_active = 0; |
547 | wake_up(&kapmd_wait); | 543 | wake_up(&kapmd_wait); |
548 | wait_for_completion(&kapmd_exit); | 544 | wait_for_completion(&kapmd_exit); |
549 | } | 545 | } |
@@ -556,7 +552,7 @@ static void __exit apm_exit(void) | |||
556 | misc_deregister(&apm_device); | 552 | misc_deregister(&apm_device); |
557 | remove_proc_entry("apm", NULL); | 553 | remove_proc_entry("apm", NULL); |
558 | 554 | ||
559 | pm_active = 0; | 555 | arm_apm_active = 0; |
560 | wake_up(&kapmd_wait); | 556 | wake_up(&kapmd_wait); |
561 | wait_for_completion(&kapmd_exit); | 557 | wait_for_completion(&kapmd_exit); |
562 | } | 558 | } |
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 04d3082a7b..0abbce8c70 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c | |||
@@ -23,20 +23,15 @@ | |||
23 | #error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32 | 23 | #error Sorry, your compiler targets APCS-26 but this kernel requires APCS-32 |
24 | #endif | 24 | #endif |
25 | /* | 25 | /* |
26 | * GCC 2.95.1, 2.95.2: ignores register clobber list in asm(). | ||
27 | * GCC 3.0, 3.1: general bad code generation. | 26 | * GCC 3.0, 3.1: general bad code generation. |
28 | * GCC 3.2.0: incorrect function argument offset calculation. | 27 | * GCC 3.2.0: incorrect function argument offset calculation. |
29 | * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c | 28 | * GCC 3.2.x: miscompiles NEW_AUX_ENT in fs/binfmt_elf.c |
30 | * (http://gcc.gnu.org/PR8896) and incorrect structure | 29 | * (http://gcc.gnu.org/PR8896) and incorrect structure |
31 | * initialisation in fs/jffs2/erase.c | 30 | * initialisation in fs/jffs2/erase.c |
32 | */ | 31 | */ |
33 | #if __GNUC__ < 2 || \ | 32 | #if (__GNUC__ == 3 && __GNUC_MINOR__ < 3) |
34 | (__GNUC__ == 2 && __GNUC_MINOR__ < 95) || \ | ||
35 | (__GNUC__ == 2 && __GNUC_MINOR__ == 95 && __GNUC_PATCHLEVEL__ != 0 && \ | ||
36 | __GNUC_PATCHLEVEL__ < 3) || \ | ||
37 | (__GNUC__ == 3 && __GNUC_MINOR__ < 3) | ||
38 | #error Your compiler is too buggy; it is known to miscompile kernels. | 33 | #error Your compiler is too buggy; it is known to miscompile kernels. |
39 | #error Known good compilers: 2.95.3, 2.95.4, 2.96, 3.3 | 34 | #error Known good compilers: 3.3 |
40 | #endif | 35 | #endif |
41 | 36 | ||
42 | /* Use marker if you need to separate the values later */ | 37 | /* Use marker if you need to separate the values later */ |
diff --git a/arch/arm/kernel/dma-isa.c b/arch/arm/kernel/dma-isa.c index e9a36304ec..03532769a9 100644 --- a/arch/arm/kernel/dma-isa.c +++ b/arch/arm/kernel/dma-isa.c | |||
@@ -18,7 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | #include <linux/ioport.h> | 19 | #include <linux/ioport.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/pci.h> | 21 | #include <linux/dma-mapping.h> |
22 | 22 | ||
23 | #include <asm/dma.h> | 23 | #include <asm/dma.h> |
24 | #include <asm/io.h> | 24 | #include <asm/io.h> |
@@ -65,37 +65,41 @@ static void isa_enable_dma(dmach_t channel, dma_t *dma) | |||
65 | { | 65 | { |
66 | if (dma->invalid) { | 66 | if (dma->invalid) { |
67 | unsigned long address, length; | 67 | unsigned long address, length; |
68 | unsigned int mode, direction; | 68 | unsigned int mode; |
69 | enum dma_data_direction direction; | ||
69 | 70 | ||
70 | mode = channel & 3; | 71 | mode = channel & 3; |
71 | switch (dma->dma_mode & DMA_MODE_MASK) { | 72 | switch (dma->dma_mode & DMA_MODE_MASK) { |
72 | case DMA_MODE_READ: | 73 | case DMA_MODE_READ: |
73 | mode |= ISA_DMA_MODE_READ; | 74 | mode |= ISA_DMA_MODE_READ; |
74 | direction = PCI_DMA_FROMDEVICE; | 75 | direction = DMA_FROM_DEVICE; |
75 | break; | 76 | break; |
76 | 77 | ||
77 | case DMA_MODE_WRITE: | 78 | case DMA_MODE_WRITE: |
78 | mode |= ISA_DMA_MODE_WRITE; | 79 | mode |= ISA_DMA_MODE_WRITE; |
79 | direction = PCI_DMA_TODEVICE; | 80 | direction = DMA_TO_DEVICE; |
80 | break; | 81 | break; |
81 | 82 | ||
82 | case DMA_MODE_CASCADE: | 83 | case DMA_MODE_CASCADE: |
83 | mode |= ISA_DMA_MODE_CASCADE; | 84 | mode |= ISA_DMA_MODE_CASCADE; |
84 | direction = PCI_DMA_BIDIRECTIONAL; | 85 | direction = DMA_BIDIRECTIONAL; |
85 | break; | 86 | break; |
86 | 87 | ||
87 | default: | 88 | default: |
88 | direction = PCI_DMA_NONE; | 89 | direction = DMA_NONE; |
89 | break; | 90 | break; |
90 | } | 91 | } |
91 | 92 | ||
92 | if (!dma->using_sg) { | 93 | if (!dma->sg) { |
93 | /* | 94 | /* |
94 | * Cope with ISA-style drivers which expect cache | 95 | * Cope with ISA-style drivers which expect cache |
95 | * coherence. | 96 | * coherence. |
96 | */ | 97 | */ |
97 | dma->buf.dma_address = pci_map_single(NULL, | 98 | dma->sg = &dma->buf; |
98 | dma->buf.__address, dma->buf.length, | 99 | dma->sgcount = 1; |
100 | dma->buf.length = dma->count; | ||
101 | dma->buf.dma_address = dma_map_single(NULL, | ||
102 | dma->addr, dma->count, | ||
99 | direction); | 103 | direction); |
100 | } | 104 | } |
101 | 105 | ||
diff --git a/arch/arm/kernel/dma.c b/arch/arm/kernel/dma.c index 2b78838842..5a0f4bc5da 100644 --- a/arch/arm/kernel/dma.c +++ b/arch/arm/kernel/dma.c | |||
@@ -12,8 +12,6 @@ | |||
12 | * DMA facilities. | 12 | * DMA facilities. |
13 | */ | 13 | */ |
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/slab.h> | ||
16 | #include <linux/mman.h> | ||
17 | #include <linux/init.h> | 15 | #include <linux/init.h> |
18 | #include <linux/spinlock.h> | 16 | #include <linux/spinlock.h> |
19 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
@@ -23,8 +21,7 @@ | |||
23 | #include <asm/mach/dma.h> | 21 | #include <asm/mach/dma.h> |
24 | 22 | ||
25 | DEFINE_SPINLOCK(dma_spin_lock); | 23 | DEFINE_SPINLOCK(dma_spin_lock); |
26 | 24 | EXPORT_SYMBOL(dma_spin_lock); | |
27 | #if MAX_DMA_CHANNELS > 0 | ||
28 | 25 | ||
29 | static dma_t dma_chan[MAX_DMA_CHANNELS]; | 26 | static dma_t dma_chan[MAX_DMA_CHANNELS]; |
30 | 27 | ||
@@ -81,6 +78,7 @@ bad_dma: | |||
81 | busy: | 78 | busy: |
82 | return -EBUSY; | 79 | return -EBUSY; |
83 | } | 80 | } |
81 | EXPORT_SYMBOL(request_dma); | ||
84 | 82 | ||
85 | /* | 83 | /* |
86 | * Free DMA channel | 84 | * Free DMA channel |
@@ -112,6 +110,7 @@ void free_dma(dmach_t channel) | |||
112 | bad_dma: | 110 | bad_dma: |
113 | printk(KERN_ERR "dma: trying to free DMA%d\n", channel); | 111 | printk(KERN_ERR "dma: trying to free DMA%d\n", channel); |
114 | } | 112 | } |
113 | EXPORT_SYMBOL(free_dma); | ||
115 | 114 | ||
116 | /* Set DMA Scatter-Gather list | 115 | /* Set DMA Scatter-Gather list |
117 | */ | 116 | */ |
@@ -125,15 +124,15 @@ void set_dma_sg (dmach_t channel, struct scatterlist *sg, int nr_sg) | |||
125 | 124 | ||
126 | dma->sg = sg; | 125 | dma->sg = sg; |
127 | dma->sgcount = nr_sg; | 126 | dma->sgcount = nr_sg; |
128 | dma->using_sg = 1; | ||
129 | dma->invalid = 1; | 127 | dma->invalid = 1; |
130 | } | 128 | } |
129 | EXPORT_SYMBOL(set_dma_sg); | ||
131 | 130 | ||
132 | /* Set DMA address | 131 | /* Set DMA address |
133 | * | 132 | * |
134 | * Copy address to the structure, and set the invalid bit | 133 | * Copy address to the structure, and set the invalid bit |
135 | */ | 134 | */ |
136 | void set_dma_addr (dmach_t channel, unsigned long physaddr) | 135 | void __set_dma_addr (dmach_t channel, void *addr) |
137 | { | 136 | { |
138 | dma_t *dma = dma_chan + channel; | 137 | dma_t *dma = dma_chan + channel; |
139 | 138 | ||
@@ -141,12 +140,11 @@ void set_dma_addr (dmach_t channel, unsigned long physaddr) | |||
141 | printk(KERN_ERR "dma%d: altering DMA address while " | 140 | printk(KERN_ERR "dma%d: altering DMA address while " |
142 | "DMA active\n", channel); | 141 | "DMA active\n", channel); |
143 | 142 | ||
144 | dma->sg = &dma->buf; | 143 | dma->sg = NULL; |
145 | dma->sgcount = 1; | 144 | dma->addr = addr; |
146 | dma->buf.__address = bus_to_virt(physaddr); | ||
147 | dma->using_sg = 0; | ||
148 | dma->invalid = 1; | 145 | dma->invalid = 1; |
149 | } | 146 | } |
147 | EXPORT_SYMBOL(__set_dma_addr); | ||
150 | 148 | ||
151 | /* Set DMA byte count | 149 | /* Set DMA byte count |
152 | * | 150 | * |
@@ -160,12 +158,11 @@ void set_dma_count (dmach_t channel, unsigned long count) | |||
160 | printk(KERN_ERR "dma%d: altering DMA count while " | 158 | printk(KERN_ERR "dma%d: altering DMA count while " |
161 | "DMA active\n", channel); | 159 | "DMA active\n", channel); |
162 | 160 | ||
163 | dma->sg = &dma->buf; | 161 | dma->sg = NULL; |
164 | dma->sgcount = 1; | 162 | dma->count = count; |
165 | dma->buf.length = count; | ||
166 | dma->using_sg = 0; | ||
167 | dma->invalid = 1; | 163 | dma->invalid = 1; |
168 | } | 164 | } |
165 | EXPORT_SYMBOL(set_dma_count); | ||
169 | 166 | ||
170 | /* Set DMA direction mode | 167 | /* Set DMA direction mode |
171 | */ | 168 | */ |
@@ -180,6 +177,7 @@ void set_dma_mode (dmach_t channel, dmamode_t mode) | |||
180 | dma->dma_mode = mode; | 177 | dma->dma_mode = mode; |
181 | dma->invalid = 1; | 178 | dma->invalid = 1; |
182 | } | 179 | } |
180 | EXPORT_SYMBOL(set_dma_mode); | ||
183 | 181 | ||
184 | /* Enable DMA channel | 182 | /* Enable DMA channel |
185 | */ | 183 | */ |
@@ -200,6 +198,7 @@ free_dma: | |||
200 | printk(KERN_ERR "dma%d: trying to enable free DMA\n", channel); | 198 | printk(KERN_ERR "dma%d: trying to enable free DMA\n", channel); |
201 | BUG(); | 199 | BUG(); |
202 | } | 200 | } |
201 | EXPORT_SYMBOL(enable_dma); | ||
203 | 202 | ||
204 | /* Disable DMA channel | 203 | /* Disable DMA channel |
205 | */ | 204 | */ |
@@ -220,6 +219,7 @@ free_dma: | |||
220 | printk(KERN_ERR "dma%d: trying to disable free DMA\n", channel); | 219 | printk(KERN_ERR "dma%d: trying to disable free DMA\n", channel); |
221 | BUG(); | 220 | BUG(); |
222 | } | 221 | } |
222 | EXPORT_SYMBOL(disable_dma); | ||
223 | 223 | ||
224 | /* | 224 | /* |
225 | * Is the specified DMA channel active? | 225 | * Is the specified DMA channel active? |
@@ -233,6 +233,7 @@ void set_dma_page(dmach_t channel, char pagenr) | |||
233 | { | 233 | { |
234 | printk(KERN_ERR "dma%d: trying to set_dma_page\n", channel); | 234 | printk(KERN_ERR "dma%d: trying to set_dma_page\n", channel); |
235 | } | 235 | } |
236 | EXPORT_SYMBOL(set_dma_page); | ||
236 | 237 | ||
237 | void set_dma_speed(dmach_t channel, int cycle_ns) | 238 | void set_dma_speed(dmach_t channel, int cycle_ns) |
238 | { | 239 | { |
@@ -243,6 +244,7 @@ void set_dma_speed(dmach_t channel, int cycle_ns) | |||
243 | ret = dma->d_ops->setspeed(channel, dma, cycle_ns); | 244 | ret = dma->d_ops->setspeed(channel, dma, cycle_ns); |
244 | dma->speed = ret; | 245 | dma->speed = ret; |
245 | } | 246 | } |
247 | EXPORT_SYMBOL(set_dma_speed); | ||
246 | 248 | ||
247 | int get_dma_residue(dmach_t channel) | 249 | int get_dma_residue(dmach_t channel) |
248 | { | 250 | { |
@@ -254,49 +256,12 @@ int get_dma_residue(dmach_t channel) | |||
254 | 256 | ||
255 | return ret; | 257 | return ret; |
256 | } | 258 | } |
259 | EXPORT_SYMBOL(get_dma_residue); | ||
257 | 260 | ||
258 | void __init init_dma(void) | 261 | static int __init init_dma(void) |
259 | { | 262 | { |
260 | arch_dma_init(dma_chan); | 263 | arch_dma_init(dma_chan); |
261 | } | ||
262 | |||
263 | #else | ||
264 | |||
265 | int request_dma(dmach_t channel, const char *device_id) | ||
266 | { | ||
267 | return -EINVAL; | ||
268 | } | ||
269 | |||
270 | int get_dma_residue(dmach_t channel) | ||
271 | { | ||
272 | return 0; | 264 | return 0; |
273 | } | 265 | } |
274 | 266 | ||
275 | #define GLOBAL_ALIAS(_a,_b) asm (".set " #_a "," #_b "; .globl " #_a) | 267 | core_initcall(init_dma); |
276 | GLOBAL_ALIAS(disable_dma, get_dma_residue); | ||
277 | GLOBAL_ALIAS(enable_dma, get_dma_residue); | ||
278 | GLOBAL_ALIAS(free_dma, get_dma_residue); | ||
279 | GLOBAL_ALIAS(get_dma_list, get_dma_residue); | ||
280 | GLOBAL_ALIAS(set_dma_mode, get_dma_residue); | ||
281 | GLOBAL_ALIAS(set_dma_page, get_dma_residue); | ||
282 | GLOBAL_ALIAS(set_dma_count, get_dma_residue); | ||
283 | GLOBAL_ALIAS(set_dma_addr, get_dma_residue); | ||
284 | GLOBAL_ALIAS(set_dma_sg, get_dma_residue); | ||
285 | GLOBAL_ALIAS(set_dma_speed, get_dma_residue); | ||
286 | GLOBAL_ALIAS(init_dma, get_dma_residue); | ||
287 | |||
288 | #endif | ||
289 | |||
290 | EXPORT_SYMBOL(request_dma); | ||
291 | EXPORT_SYMBOL(free_dma); | ||
292 | EXPORT_SYMBOL(enable_dma); | ||
293 | EXPORT_SYMBOL(disable_dma); | ||
294 | EXPORT_SYMBOL(set_dma_addr); | ||
295 | EXPORT_SYMBOL(set_dma_count); | ||
296 | EXPORT_SYMBOL(set_dma_mode); | ||
297 | EXPORT_SYMBOL(set_dma_page); | ||
298 | EXPORT_SYMBOL(get_dma_residue); | ||
299 | EXPORT_SYMBOL(set_dma_sg); | ||
300 | EXPORT_SYMBOL(set_dma_speed); | ||
301 | |||
302 | EXPORT_SYMBOL(dma_spin_lock); | ||
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index dceb826bd2..96fd91926c 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 | ||
207 | static DECLARE_WAIT_QUEUE_HEAD(ecard_wait); | 208 | static DECLARE_WAIT_QUEUE_HEAD(ecard_wait); |
208 | static struct ecard_request *ecard_req; | 209 | static struct ecard_request *ecard_req; |
209 | static DECLARE_MUTEX(ecard_sem); | 210 | static 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/entry-armv.S b/arch/arm/kernel/entry-armv.S index 2a8d27e18f..a52baedf62 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -18,8 +18,6 @@ | |||
18 | #include <asm/memory.h> | 18 | #include <asm/memory.h> |
19 | #include <asm/glue.h> | 19 | #include <asm/glue.h> |
20 | #include <asm/vfpmacros.h> | 20 | #include <asm/vfpmacros.h> |
21 | #include <asm/hardware.h> /* should be moved into entry-macro.S */ | ||
22 | #include <asm/arch/irqs.h> /* should be moved into entry-macro.S */ | ||
23 | #include <asm/arch/entry-macro.S> | 21 | #include <asm/arch/entry-macro.S> |
24 | 22 | ||
25 | #include "entry-header.S" | 23 | #include "entry-header.S" |
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c index 9299dfc256..1ec3f7faa2 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" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)); | 106 | : "r" (®s->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" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)); | 124 | : "r" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE)); |
125 | } | 125 | } |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index d7d69fd703..1e985f2cd7 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -33,6 +33,8 @@ | |||
33 | #define MACHINFO_PGOFFIO 12 | 33 | #define MACHINFO_PGOFFIO 12 |
34 | #define MACHINFO_NAME 16 | 34 | #define MACHINFO_NAME 16 |
35 | 35 | ||
36 | #define KERNEL_RAM_ADDR (PAGE_OFFSET + TEXT_OFFSET) | ||
37 | |||
36 | /* | 38 | /* |
37 | * swapper_pg_dir is the virtual address of the initial page table. | 39 | * swapper_pg_dir is the virtual address of the initial page table. |
38 | * We place the page tables 16K below KERNEL_RAM_ADDR. Therefore, we must | 40 | * We place the page tables 16K below KERNEL_RAM_ADDR. Therefore, we must |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index d7099dbbb8..1d50d2b98f 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -684,8 +684,12 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
684 | spin_lock_irqsave(&irq_controller_lock, flags); | 684 | spin_lock_irqsave(&irq_controller_lock, flags); |
685 | p = &desc->action; | 685 | p = &desc->action; |
686 | if ((old = *p) != NULL) { | 686 | if ((old = *p) != NULL) { |
687 | /* Can't share interrupts unless both agree to */ | 687 | /* |
688 | if (!(old->flags & new->flags & SA_SHIRQ)) { | 688 | * Can't share interrupts unless both agree to and are |
689 | * the same type. | ||
690 | */ | ||
691 | if (!(old->flags & new->flags & SA_SHIRQ) || | ||
692 | (~old->flags & new->flags) & SA_TRIGGER_MASK) { | ||
689 | spin_unlock_irqrestore(&irq_controller_lock, flags); | 693 | spin_unlock_irqrestore(&irq_controller_lock, flags); |
690 | return -EBUSY; | 694 | return -EBUSY; |
691 | } | 695 | } |
@@ -705,6 +709,13 @@ int setup_irq(unsigned int irq, struct irqaction *new) | |||
705 | desc->running = 0; | 709 | desc->running = 0; |
706 | desc->pending = 0; | 710 | desc->pending = 0; |
707 | desc->disable_depth = 1; | 711 | desc->disable_depth = 1; |
712 | |||
713 | if (new->flags & SA_TRIGGER_MASK && | ||
714 | desc->chip->set_type) { | ||
715 | unsigned int type = new->flags & SA_TRIGGER_MASK; | ||
716 | desc->chip->set_type(irq, type); | ||
717 | } | ||
718 | |||
708 | if (!desc->noautoenable) { | 719 | if (!desc->noautoenable) { |
709 | desc->disable_depth = 0; | 720 | desc->disable_depth = 0; |
710 | desc->chip->unmask(irq); | 721 | desc->chip->unmask(irq); |
@@ -1027,7 +1038,6 @@ void __init init_irq_proc(void) | |||
1027 | void __init init_IRQ(void) | 1038 | void __init init_IRQ(void) |
1028 | { | 1039 | { |
1029 | struct irqdesc *desc; | 1040 | struct irqdesc *desc; |
1030 | extern void init_dma(void); | ||
1031 | int irq; | 1041 | int irq; |
1032 | 1042 | ||
1033 | #ifdef CONFIG_SMP | 1043 | #ifdef CONFIG_SMP |
@@ -1041,7 +1051,6 @@ void __init init_IRQ(void) | |||
1041 | } | 1051 | } |
1042 | 1052 | ||
1043 | init_arch_irq(); | 1053 | init_arch_irq(); |
1044 | init_dma(); | ||
1045 | } | 1054 | } |
1046 | 1055 | ||
1047 | static int __init noirqdebug_setup(char *str) | 1056 | static int __init noirqdebug_setup(char *str) |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index 30494aab82..4b4e4cf79c 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -28,10 +28,9 @@ | |||
28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
29 | #include <linux/cpu.h> | 29 | #include <linux/cpu.h> |
30 | 30 | ||
31 | #include <asm/system.h> | ||
32 | #include <asm/io.h> | ||
33 | #include <asm/leds.h> | 31 | #include <asm/leds.h> |
34 | #include <asm/processor.h> | 32 | #include <asm/processor.h> |
33 | #include <asm/system.h> | ||
35 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
36 | #include <asm/mach/time.h> | 35 | #include <asm/mach/time.h> |
37 | 36 | ||
@@ -343,10 +342,10 @@ void flush_thread(void) | |||
343 | void release_thread(struct task_struct *dead_task) | 342 | void release_thread(struct task_struct *dead_task) |
344 | { | 343 | { |
345 | #if defined(CONFIG_VFP) | 344 | #if defined(CONFIG_VFP) |
346 | vfp_release_thread(&dead_task->thread_info->vfpstate); | 345 | vfp_release_thread(&task_thread_info(dead_task)->vfpstate); |
347 | #endif | 346 | #endif |
348 | #if defined(CONFIG_IWMMXT) | 347 | #if defined(CONFIG_IWMMXT) |
349 | iwmmxt_task_release(dead_task->thread_info); | 348 | iwmmxt_task_release(task_thread_info(dead_task)); |
350 | #endif | 349 | #endif |
351 | } | 350 | } |
352 | 351 | ||
@@ -356,10 +355,9 @@ int | |||
356 | copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start, | 355 | copy_thread(int nr, unsigned long clone_flags, unsigned long stack_start, |
357 | unsigned long stk_sz, struct task_struct *p, struct pt_regs *regs) | 356 | unsigned long stk_sz, struct task_struct *p, struct pt_regs *regs) |
358 | { | 357 | { |
359 | struct thread_info *thread = p->thread_info; | 358 | struct thread_info *thread = task_thread_info(p); |
360 | struct pt_regs *childregs; | 359 | struct pt_regs *childregs = task_pt_regs(p); |
361 | 360 | ||
362 | childregs = (void *)thread + THREAD_START_SP - sizeof(*regs); | ||
363 | *childregs = *regs; | 361 | *childregs = *regs; |
364 | childregs->ARM_r0 = 0; | 362 | childregs->ARM_r0 = 0; |
365 | childregs->ARM_sp = stack_start; | 363 | childregs->ARM_sp = stack_start; |
@@ -461,8 +459,8 @@ unsigned long get_wchan(struct task_struct *p) | |||
461 | if (!p || p == current || p->state == TASK_RUNNING) | 459 | if (!p || p == current || p->state == TASK_RUNNING) |
462 | return 0; | 460 | return 0; |
463 | 461 | ||
464 | stack_start = (unsigned long)(p->thread_info + 1); | 462 | stack_start = (unsigned long)end_of_stack(p); |
465 | stack_end = ((unsigned long)p->thread_info) + THREAD_SIZE; | 463 | stack_end = (unsigned long)task_stack_page(p) + THREAD_SIZE; |
466 | 464 | ||
467 | fp = thread_saved_fp(p); | 465 | fp = thread_saved_fp(p); |
468 | do { | 466 | do { |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index 2b84f78d7b..e591f72bcd 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -55,23 +55,6 @@ | |||
55 | #endif | 55 | #endif |
56 | 56 | ||
57 | /* | 57 | /* |
58 | * Get the address of the live pt_regs for the specified task. | ||
59 | * These are saved onto the top kernel stack when the process | ||
60 | * is not running. | ||
61 | * | ||
62 | * Note: if a user thread is execve'd from kernel space, the | ||
63 | * kernel stack will not be empty on entry to the kernel, so | ||
64 | * ptracing these tasks will fail. | ||
65 | */ | ||
66 | static inline struct pt_regs * | ||
67 | get_user_regs(struct task_struct *task) | ||
68 | { | ||
69 | return (struct pt_regs *) | ||
70 | ((unsigned long)task->thread_info + THREAD_SIZE - | ||
71 | 8 - sizeof(struct pt_regs)); | ||
72 | } | ||
73 | |||
74 | /* | ||
75 | * this routine will get a word off of the processes privileged stack. | 58 | * this routine will get a word off of the processes privileged stack. |
76 | * the offset is how far from the base addr as stored in the THREAD. | 59 | * the offset is how far from the base addr as stored in the THREAD. |
77 | * this routine assumes that all the privileged stacks are in our | 60 | * this routine assumes that all the privileged stacks are in our |
@@ -79,7 +62,7 @@ get_user_regs(struct task_struct *task) | |||
79 | */ | 62 | */ |
80 | static inline long get_user_reg(struct task_struct *task, int offset) | 63 | static inline long get_user_reg(struct task_struct *task, int offset) |
81 | { | 64 | { |
82 | return get_user_regs(task)->uregs[offset]; | 65 | return task_pt_regs(task)->uregs[offset]; |
83 | } | 66 | } |
84 | 67 | ||
85 | /* | 68 | /* |
@@ -91,7 +74,7 @@ static inline long get_user_reg(struct task_struct *task, int offset) | |||
91 | static inline int | 74 | static inline int |
92 | put_user_reg(struct task_struct *task, int offset, long data) | 75 | put_user_reg(struct task_struct *task, int offset, long data) |
93 | { | 76 | { |
94 | struct pt_regs newregs, *regs = get_user_regs(task); | 77 | struct pt_regs newregs, *regs = task_pt_regs(task); |
95 | int ret = -EINVAL; | 78 | int ret = -EINVAL; |
96 | 79 | ||
97 | newregs = *regs; | 80 | newregs = *regs; |
@@ -421,7 +404,7 @@ void ptrace_set_bpt(struct task_struct *child) | |||
421 | u32 insn; | 404 | u32 insn; |
422 | int res; | 405 | int res; |
423 | 406 | ||
424 | regs = get_user_regs(child); | 407 | regs = task_pt_regs(child); |
425 | pc = instruction_pointer(regs); | 408 | pc = instruction_pointer(regs); |
426 | 409 | ||
427 | if (thumb_mode(regs)) { | 410 | if (thumb_mode(regs)) { |
@@ -572,7 +555,7 @@ static int ptrace_write_user(struct task_struct *tsk, unsigned long off, | |||
572 | */ | 555 | */ |
573 | static int ptrace_getregs(struct task_struct *tsk, void __user *uregs) | 556 | static int ptrace_getregs(struct task_struct *tsk, void __user *uregs) |
574 | { | 557 | { |
575 | struct pt_regs *regs = get_user_regs(tsk); | 558 | struct pt_regs *regs = task_pt_regs(tsk); |
576 | 559 | ||
577 | return copy_to_user(uregs, regs, sizeof(struct pt_regs)) ? -EFAULT : 0; | 560 | return copy_to_user(uregs, regs, sizeof(struct pt_regs)) ? -EFAULT : 0; |
578 | } | 561 | } |
@@ -587,7 +570,7 @@ static int ptrace_setregs(struct task_struct *tsk, void __user *uregs) | |||
587 | 570 | ||
588 | ret = -EFAULT; | 571 | ret = -EFAULT; |
589 | if (copy_from_user(&newregs, uregs, sizeof(struct pt_regs)) == 0) { | 572 | if (copy_from_user(&newregs, uregs, sizeof(struct pt_regs)) == 0) { |
590 | struct pt_regs *regs = get_user_regs(tsk); | 573 | struct pt_regs *regs = task_pt_regs(tsk); |
591 | 574 | ||
592 | ret = -EINVAL; | 575 | ret = -EINVAL; |
593 | if (valid_user_regs(&newregs)) { | 576 | if (valid_user_regs(&newregs)) { |
@@ -604,7 +587,7 @@ static int ptrace_setregs(struct task_struct *tsk, void __user *uregs) | |||
604 | */ | 587 | */ |
605 | static int ptrace_getfpregs(struct task_struct *tsk, void __user *ufp) | 588 | static int ptrace_getfpregs(struct task_struct *tsk, void __user *ufp) |
606 | { | 589 | { |
607 | return copy_to_user(ufp, &tsk->thread_info->fpstate, | 590 | return copy_to_user(ufp, &task_thread_info(tsk)->fpstate, |
608 | sizeof(struct user_fp)) ? -EFAULT : 0; | 591 | sizeof(struct user_fp)) ? -EFAULT : 0; |
609 | } | 592 | } |
610 | 593 | ||
@@ -613,7 +596,7 @@ static int ptrace_getfpregs(struct task_struct *tsk, void __user *ufp) | |||
613 | */ | 596 | */ |
614 | static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) | 597 | static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) |
615 | { | 598 | { |
616 | struct thread_info *thread = tsk->thread_info; | 599 | struct thread_info *thread = task_thread_info(tsk); |
617 | thread->used_cp[1] = thread->used_cp[2] = 1; | 600 | thread->used_cp[1] = thread->used_cp[2] = 1; |
618 | return copy_from_user(&thread->fpstate, ufp, | 601 | return copy_from_user(&thread->fpstate, ufp, |
619 | sizeof(struct user_fp)) ? -EFAULT : 0; | 602 | sizeof(struct user_fp)) ? -EFAULT : 0; |
@@ -626,7 +609,7 @@ static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) | |||
626 | */ | 609 | */ |
627 | static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) | 610 | static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) |
628 | { | 611 | { |
629 | struct thread_info *thread = tsk->thread_info; | 612 | struct thread_info *thread = task_thread_info(tsk); |
630 | void *ptr = &thread->fpstate; | 613 | void *ptr = &thread->fpstate; |
631 | 614 | ||
632 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) | 615 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) |
@@ -643,7 +626,7 @@ static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) | |||
643 | */ | 626 | */ |
644 | static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) | 627 | static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) |
645 | { | 628 | { |
646 | struct thread_info *thread = tsk->thread_info; | 629 | struct thread_info *thread = task_thread_info(tsk); |
647 | void *ptr = &thread->fpstate; | 630 | void *ptr = &thread->fpstate; |
648 | 631 | ||
649 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) | 632 | if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) |
@@ -779,7 +762,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
779 | #endif | 762 | #endif |
780 | 763 | ||
781 | case PTRACE_GET_THREAD_AREA: | 764 | case PTRACE_GET_THREAD_AREA: |
782 | ret = put_user(child->thread_info->tp_value, | 765 | ret = put_user(task_thread_info(child)->tp_value, |
783 | (unsigned long __user *) data); | 766 | (unsigned long __user *) data); |
784 | break; | 767 | break; |
785 | 768 | ||
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 85774165e9..c45d10d07b 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -26,8 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/cpu.h> | 27 | #include <asm/cpu.h> |
28 | #include <asm/elf.h> | 28 | #include <asm/elf.h> |
29 | #include <asm/hardware.h> | ||
30 | #include <asm/io.h> | ||
31 | #include <asm/procinfo.h> | 29 | #include <asm/procinfo.h> |
32 | #include <asm/setup.h> | 30 | #include <asm/setup.h> |
33 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
@@ -207,7 +205,7 @@ static const char *proc_arch[] = { | |||
207 | "5TE", | 205 | "5TE", |
208 | "5TEJ", | 206 | "5TEJ", |
209 | "6TEJ", | 207 | "6TEJ", |
210 | "?(10)", | 208 | "7", |
211 | "?(11)", | 209 | "?(11)", |
212 | "?(12)", | 210 | "?(12)", |
213 | "?(13)", | 211 | "?(13)", |
@@ -260,14 +258,17 @@ int cpu_architecture(void) | |||
260 | { | 258 | { |
261 | int cpu_arch; | 259 | int cpu_arch; |
262 | 260 | ||
263 | if ((processor_id & 0x0000f000) == 0) { | 261 | if ((processor_id & 0x0008f000) == 0) { |
264 | cpu_arch = CPU_ARCH_UNKNOWN; | 262 | cpu_arch = CPU_ARCH_UNKNOWN; |
265 | } else if ((processor_id & 0x0000f000) == 0x00007000) { | 263 | } else if ((processor_id & 0x0008f000) == 0x00007000) { |
266 | 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; |
267 | } else { | 265 | } else if ((processor_id & 0x00080000) == 0x00000000) { |
268 | cpu_arch = (processor_id >> 16) & 7; | 266 | cpu_arch = (processor_id >> 16) & 7; |
269 | if (cpu_arch) | 267 | if (cpu_arch) |
270 | 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; | ||
271 | } | 272 | } |
272 | 273 | ||
273 | return cpu_arch; | 274 | return cpu_arch; |
@@ -865,11 +866,11 @@ static int c_show(struct seq_file *m, void *v) | |||
865 | 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); |
866 | seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]); | 867 | seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]); |
867 | 868 | ||
868 | if ((processor_id & 0x0000f000) == 0x00000000) { | 869 | if ((processor_id & 0x0008f000) == 0x00000000) { |
869 | /* pre-ARM7 */ | 870 | /* pre-ARM7 */ |
870 | 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); |
871 | } else { | 872 | } else { |
872 | if ((processor_id & 0x0000f000) == 0x00007000) { | 873 | if ((processor_id & 0x0008f000) == 0x00007000) { |
873 | /* ARM7 */ | 874 | /* ARM7 */ |
874 | seq_printf(m, "CPU variant\t: 0x%02x\n", | 875 | seq_printf(m, "CPU variant\t: 0x%02x\n", |
875 | (processor_id >> 16) & 127); | 876 | (processor_id >> 16) & 127); |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 373c0959bc..7338948bd7 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -114,7 +114,7 @@ int __cpuinit __cpu_up(unsigned int cpu) | |||
114 | * We need to tell the secondary core where to find | 114 | * We need to tell the secondary core where to find |
115 | * its stack and the page tables. | 115 | * its stack and the page tables. |
116 | */ | 116 | */ |
117 | secondary_data.stack = (void *)idle->thread_info + THREAD_START_SP; | 117 | secondary_data.stack = task_stack_page(idle) + THREAD_START_SP; |
118 | secondary_data.pgdir = virt_to_phys(pgd); | 118 | secondary_data.pgdir = virt_to_phys(pgd); |
119 | wmb(); | 119 | wmb(); |
120 | 120 | ||
@@ -245,7 +245,7 @@ void __cpuexit cpu_die(void) | |||
245 | __asm__("mov sp, %0\n" | 245 | __asm__("mov sp, %0\n" |
246 | " b secondary_start_kernel" | 246 | " b secondary_start_kernel" |
247 | : | 247 | : |
248 | : "r" ((void *)current->thread_info + THREAD_SIZE - 8)); | 248 | : "r" (task_stack_page(current) + THREAD_SIZE - 8)); |
249 | } | 249 | } |
250 | #endif /* CONFIG_HOTPLUG_CPU */ | 250 | #endif /* CONFIG_HOTPLUG_CPU */ |
251 | 251 | ||
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index fc4729106a..d7d932c028 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -29,9 +29,6 @@ | |||
29 | #include <linux/sysdev.h> | 29 | #include <linux/sysdev.h> |
30 | #include <linux/timer.h> | 30 | #include <linux/timer.h> |
31 | 31 | ||
32 | #include <asm/hardware.h> | ||
33 | #include <asm/io.h> | ||
34 | #include <asm/irq.h> | ||
35 | #include <asm/leds.h> | 32 | #include <asm/leds.h> |
36 | #include <asm/thread_info.h> | 33 | #include <asm/thread_info.h> |
37 | #include <asm/mach/time.h> | 34 | #include <asm/mach/time.h> |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index 45e9ea6cd2..93cfd3ffcc 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -23,7 +23,6 @@ | |||
23 | 23 | ||
24 | #include <asm/atomic.h> | 24 | #include <asm/atomic.h> |
25 | #include <asm/cacheflush.h> | 25 | #include <asm/cacheflush.h> |
26 | #include <asm/io.h> | ||
27 | #include <asm/system.h> | 26 | #include <asm/system.h> |
28 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
29 | #include <asm/unistd.h> | 28 | #include <asm/unistd.h> |
@@ -165,7 +164,7 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk) | |||
165 | } else if (verify_stack(fp)) { | 164 | } else if (verify_stack(fp)) { |
166 | printk("invalid frame pointer 0x%08x", fp); | 165 | printk("invalid frame pointer 0x%08x", fp); |
167 | ok = 0; | 166 | ok = 0; |
168 | } else if (fp < (unsigned long)(tsk->thread_info + 1)) | 167 | } else if (fp < (unsigned long)end_of_stack(tsk)) |
169 | printk("frame pointer underflow"); | 168 | printk("frame pointer underflow"); |
170 | printk("\n"); | 169 | printk("\n"); |
171 | 170 | ||
@@ -211,7 +210,7 @@ static void __die(const char *str, int err, struct thread_info *thread, struct p | |||
211 | 210 | ||
212 | if (!user_mode(regs) || in_interrupt()) { | 211 | if (!user_mode(regs) || in_interrupt()) { |
213 | dump_mem("Stack: ", regs->ARM_sp, | 212 | dump_mem("Stack: ", regs->ARM_sp, |
214 | THREAD_SIZE + (unsigned long)tsk->thread_info); | 213 | THREAD_SIZE + (unsigned long)task_stack_page(tsk)); |
215 | dump_backtrace(regs, tsk); | 214 | dump_backtrace(regs, tsk); |
216 | dump_instr(regs); | 215 | dump_instr(regs); |
217 | } | 216 | } |
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 9a47770114..2b254e8859 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -17,15 +17,13 @@ jiffies = jiffies_64; | |||
17 | jiffies = jiffies_64 + 4; | 17 | jiffies = jiffies_64 + 4; |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | SECTIONS | ||
21 | { | ||
20 | #ifdef CONFIG_XIP_KERNEL | 22 | #ifdef CONFIG_XIP_KERNEL |
21 | #define TEXTADDR XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR) | 23 | . = XIP_VIRT_ADDR(CONFIG_XIP_PHYS_ADDR); |
22 | #else | 24 | #else |
23 | #define TEXTADDR KERNEL_RAM_ADDR | 25 | . = PAGE_OFFSET + TEXT_OFFSET; |
24 | #endif | 26 | #endif |
25 | |||
26 | SECTIONS | ||
27 | { | ||
28 | . = TEXTADDR; | ||
29 | .init : { /* Init code and data */ | 27 | .init : { /* Init code and data */ |
30 | _stext = .; | 28 | _stext = .; |
31 | _sinittext = .; | 29 | _sinittext = .; |
@@ -104,7 +102,7 @@ SECTIONS | |||
104 | 102 | ||
105 | #ifdef CONFIG_XIP_KERNEL | 103 | #ifdef CONFIG_XIP_KERNEL |
106 | __data_loc = ALIGN(4); /* location in binary */ | 104 | __data_loc = ALIGN(4); /* location in binary */ |
107 | . = KERNEL_RAM_ADDR; | 105 | . = PAGE_OFFSET + TEXT_OFFSET; |
108 | #else | 106 | #else |
109 | . = ALIGN(THREAD_SIZE); | 107 | . = ALIGN(THREAD_SIZE); |
110 | __data_loc = .; | 108 | __data_loc = .; |
diff --git a/arch/arm/lib/csumpartialcopy.S b/arch/arm/lib/csumpartialcopy.S index 990ee63b24..21effe0dbf 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 4a4609c190..c50e8f5285 100644 --- a/arch/arm/lib/csumpartialcopygeneric.S +++ b/arch/arm/lib/csumpartialcopygeneric.S | |||
@@ -23,7 +23,7 @@ len .req r2 | |||
23 | sum .req r3 | 23 | sum .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 | ||
89 | FN_ENTRY | 89 | FN_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 333bca292d..c3b93e22ea 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 @@ | |||
100 | 6002: teq r2, r1 | 102 | 6002: 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 0340ddc482..74aa7a39bb 100644 --- a/arch/arm/mach-aaec2000/clock.c +++ b/arch/arm/mach-aaec2000/clock.c | |||
@@ -15,27 +15,28 @@ | |||
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
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> | ||
19 | #include <linux/mutex.h> | ||
18 | 20 | ||
19 | #include <asm/semaphore.h> | 21 | #include <asm/semaphore.h> |
20 | #include <asm/hardware/clock.h> | ||
21 | 22 | ||
22 | #include "clock.h" | 23 | #include "clock.h" |
23 | 24 | ||
24 | static LIST_HEAD(clocks); | 25 | static LIST_HEAD(clocks); |
25 | static DECLARE_MUTEX(clocks_sem); | 26 | static DEFINE_MUTEX(clocks_mutex); |
26 | 27 | ||
27 | struct clk *clk_get(struct device *dev, const char *id) | 28 | struct 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 | } |
@@ -58,17 +59,6 @@ void clk_disable(struct clk *clk) | |||
58 | } | 59 | } |
59 | EXPORT_SYMBOL(clk_disable); | 60 | EXPORT_SYMBOL(clk_disable); |
60 | 61 | ||
61 | int clk_use(struct clk *clk) | ||
62 | { | ||
63 | return 0; | ||
64 | } | ||
65 | EXPORT_SYMBOL(clk_use); | ||
66 | |||
67 | void clk_unuse(struct clk *clk) | ||
68 | { | ||
69 | } | ||
70 | EXPORT_SYMBOL(clk_unuse); | ||
71 | |||
72 | unsigned long clk_get_rate(struct clk *clk) | 62 | unsigned long clk_get_rate(struct clk *clk) |
73 | { | 63 | { |
74 | return clk->rate; | 64 | return clk->rate; |
@@ -89,18 +79,18 @@ EXPORT_SYMBOL(clk_set_rate); | |||
89 | 79 | ||
90 | int clk_register(struct clk *clk) | 80 | int clk_register(struct clk *clk) |
91 | { | 81 | { |
92 | down(&clocks_sem); | 82 | mutex_lock(&clocks_mutex); |
93 | list_add(&clk->node, &clocks); | 83 | list_add(&clk->node, &clocks); |
94 | up(&clocks_sem); | 84 | mutex_unlock(&clocks_mutex); |
95 | return 0; | 85 | return 0; |
96 | } | 86 | } |
97 | EXPORT_SYMBOL(clk_register); | 87 | EXPORT_SYMBOL(clk_register); |
98 | 88 | ||
99 | void clk_unregister(struct clk *clk) | 89 | void clk_unregister(struct clk *clk) |
100 | { | 90 | { |
101 | down(&clocks_sem); | 91 | mutex_lock(&clocks_mutex); |
102 | list_del(&clk->node); | 92 | list_del(&clk->node); |
103 | up(&clocks_sem); | 93 | mutex_unlock(&clocks_mutex); |
104 | } | 94 | } |
105 | EXPORT_SYMBOL(clk_unregister); | 95 | EXPORT_SYMBOL(clk_unregister); |
106 | 96 | ||
diff --git a/arch/arm/mach-aaec2000/core.c b/arch/arm/mach-aaec2000/core.c index 4e706d9ad3..dce4815cf5 100644 --- a/arch/arm/mach-aaec2000/core.c +++ b/arch/arm/mach-aaec2000/core.c | |||
@@ -20,11 +20,11 @@ | |||
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/timex.h> | 21 | #include <linux/timex.h> |
22 | #include <linux/signal.h> | 22 | #include <linux/signal.h> |
23 | #include <linux/amba/bus.h> | ||
23 | 24 | ||
24 | #include <asm/hardware.h> | 25 | #include <asm/hardware.h> |
25 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
26 | #include <asm/sizes.h> | 27 | #include <asm/sizes.h> |
27 | #include <asm/hardware/amba.h> | ||
28 | 28 | ||
29 | #include <asm/mach/flash.h> | 29 | #include <asm/mach/flash.h> |
30 | #include <asm/mach/irq.h> | 30 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-aaec2000/core.h b/arch/arm/mach-aaec2000/core.h index daefc0ea14..b6029a95f1 100644 --- a/arch/arm/mach-aaec2000/core.h +++ b/arch/arm/mach-aaec2000/core.h | |||
@@ -9,7 +9,7 @@ | |||
9 | * | 9 | * |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <asm/hardware/amba_clcd.h> | 12 | #include <linux/amba/clcd.h> |
13 | 13 | ||
14 | struct sys_timer; | 14 | struct sys_timer; |
15 | 15 | ||
diff --git a/arch/arm/mach-at91rm9200/Kconfig b/arch/arm/mach-at91rm9200/Kconfig new file mode 100644 index 0000000000..4b7218fc3e --- /dev/null +++ b/arch/arm/mach-at91rm9200/Kconfig | |||
@@ -0,0 +1,54 @@ | |||
1 | if ARCH_AT91RM9200 | ||
2 | |||
3 | menu "AT91RM9200 Implementations" | ||
4 | |||
5 | comment "AT91RM9200 Board Type" | ||
6 | |||
7 | config ARCH_AT91RM9200DK | ||
8 | bool "Atmel AT91RM9200-DK Development board" | ||
9 | depends on ARCH_AT91RM9200 | ||
10 | help | ||
11 | Select this if you are using Atmel's AT91RM9200-DK Development board | ||
12 | |||
13 | config MACH_AT91RM9200EK | ||
14 | bool "Atmel AT91RM9200-EK Evaluation Kit" | ||
15 | depends on ARCH_AT91RM9200 | ||
16 | help | ||
17 | Select this if you are using Atmel's AT91RM9200-EK Evaluation Kit | ||
18 | |||
19 | config MACH_CSB337 | ||
20 | bool "Cogent CSB337 board" | ||
21 | depends on ARCH_AT91RM9200 | ||
22 | help | ||
23 | Select this if you are using Cogent's CSB337 board | ||
24 | |||
25 | config MACH_CSB637 | ||
26 | bool "Cogent CSB637 board" | ||
27 | depends on ARCH_AT91RM9200 | ||
28 | help | ||
29 | Select this if you are using Cogent's CSB637 board | ||
30 | |||
31 | config MACH_CARMEVA | ||
32 | bool "Conitec's ARM&EVA" | ||
33 | depends on ARCH_AT91RM9200 | ||
34 | help | ||
35 | Select this if you are using Conitec's AT91RM9200-MCU-Module | ||
36 | |||
37 | config MACH_KB9200 | ||
38 | bool "KwikByte's KB920x" | ||
39 | depends on ARCH_AT91RM9200 | ||
40 | help | ||
41 | Select this if you are using KwikByte's KB920x board | ||
42 | |||
43 | |||
44 | comment "AT91RM9200 Feature Selections" | ||
45 | |||
46 | config AT91_PROGRAMMABLE_CLOCKS | ||
47 | bool "Programmable Clocks" | ||
48 | help | ||
49 | Select this if you need to program one or more of the PCK0..PCK3 | ||
50 | programmable clock outputs. | ||
51 | |||
52 | endmenu | ||
53 | |||
54 | endif | ||
diff --git a/arch/arm/mach-at91rm9200/Makefile b/arch/arm/mach-at91rm9200/Makefile new file mode 100644 index 0000000000..75e6ee318d --- /dev/null +++ b/arch/arm/mach-at91rm9200/Makefile | |||
@@ -0,0 +1,27 @@ | |||
1 | # | ||
2 | # Makefile for the linux kernel. | ||
3 | # | ||
4 | |||
5 | obj-y := clock.o irq.o time.o gpio.o common.o devices.o | ||
6 | obj-m := | ||
7 | obj-n := | ||
8 | obj- := | ||
9 | |||
10 | # Board-specific support | ||
11 | obj-$(CONFIG_ARCH_AT91RM9200DK) += board-dk.o | ||
12 | obj-$(CONFIG_MACH_AT91RM9200EK) += board-ek.o | ||
13 | obj-$(CONFIG_MACH_CSB337) += board-csb337.o | ||
14 | obj-$(CONFIG_MACH_CSB637) += board-csb637.o | ||
15 | #obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o | ||
16 | #obj-$(CONFIG_MACH_KB9200) += board-kb9202.o | ||
17 | |||
18 | # LEDs support | ||
19 | #led-$(CONFIG_ARCH_AT91RM9200DK) += leds.o | ||
20 | #led-$(CONFIG_MACH_AT91RM9200EK) += leds.o | ||
21 | #led-$(CONFIG_MACH_CSB337) += leds.o | ||
22 | #led-$(CONFIG_MACH_CSB637) += leds.o | ||
23 | #led-$(CONFIG_MACH_KB9200) += leds.o | ||
24 | obj-$(CONFIG_LEDS) += $(led-y) | ||
25 | |||
26 | # VGA support | ||
27 | #obj-$(CONFIG_FB_S1D13XXX) += ics1523.o | ||
diff --git a/arch/arm/mach-at91rm9200/Makefile.boot b/arch/arm/mach-at91rm9200/Makefile.boot new file mode 100644 index 0000000000..e667dcc7cd --- /dev/null +++ b/arch/arm/mach-at91rm9200/Makefile.boot | |||
@@ -0,0 +1,9 @@ | |||
1 | # Note: the following conditions must always be true: | ||
2 | # ZRELADDR == virt_to_phys(TEXTADDR) | ||
3 | # PARAMS_PHYS must be within 4MB of ZRELADDR | ||
4 | # INITRD_PHYS must be in RAM | ||
5 | |||
6 | zreladdr-y := 0x20008000 | ||
7 | params_phys-y := 0x20000100 | ||
8 | initrd_phys-y := 0x20410000 | ||
9 | |||
diff --git a/arch/arm/mach-at91rm9200/board-csb337.c b/arch/arm/mach-at91rm9200/board-csb337.c new file mode 100644 index 0000000000..4aec834ee4 --- /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 | |||
43 | static 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 | |||
60 | static 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 | |||
82 | static struct at91_eth_data __initdata csb337_eth_data = { | ||
83 | .phy_irq_pin = AT91_PIN_PC2, | ||
84 | .is_rmii = 0, | ||
85 | }; | ||
86 | |||
87 | static struct at91_usbh_data __initdata csb337_usbh_data = { | ||
88 | .ports = 2, | ||
89 | }; | ||
90 | |||
91 | static struct at91_udc_data __initdata csb337_udc_data = { | ||
92 | // this has no VBUS sensing pin | ||
93 | .pullup_pin = AT91_PIN_PA24, | ||
94 | }; | ||
95 | |||
96 | static 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 | |||
111 | static 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 | |||
118 | static 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 | |||
133 | MACHINE_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, | ||
143 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91rm9200/board-csb637.c b/arch/arm/mach-at91rm9200/board-csb637.c new file mode 100644 index 0000000000..23e4cc2148 --- /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 | |||
43 | static 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 | |||
60 | static 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 | |||
82 | static struct at91_eth_data __initdata csb637_eth_data = { | ||
83 | .phy_irq_pin = AT91_PIN_PC0, | ||
84 | .is_rmii = 0, | ||
85 | }; | ||
86 | |||
87 | static struct at91_usbh_data __initdata csb637_usbh_data = { | ||
88 | .ports = 2, | ||
89 | }; | ||
90 | |||
91 | static struct at91_udc_data __initdata csb637_udc_data = { | ||
92 | .vbus_pin = AT91_PIN_PB28, | ||
93 | .pullup_pin = AT91_PIN_PB1, | ||
94 | }; | ||
95 | |||
96 | static 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 | |||
106 | MACHINE_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, | ||
116 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91rm9200/board-dk.c b/arch/arm/mach-at91rm9200/board-dk.c new file mode 100644 index 0000000000..8c747a31b9 --- /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 | |||
46 | static 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 | |||
63 | static 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 | |||
85 | static struct at91_eth_data __initdata dk_eth_data = { | ||
86 | .phy_irq_pin = AT91_PIN_PC4, | ||
87 | .is_rmii = 1, | ||
88 | }; | ||
89 | |||
90 | static struct at91_usbh_data __initdata dk_usbh_data = { | ||
91 | .ports = 2, | ||
92 | }; | ||
93 | |||
94 | static struct at91_udc_data __initdata dk_udc_data = { | ||
95 | .vbus_pin = AT91_PIN_PD4, | ||
96 | .pullup_pin = AT91_PIN_PD5, | ||
97 | }; | ||
98 | |||
99 | static 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 | |||
106 | static struct at91_mmc_data __initdata dk_mmc_data = { | ||
107 | .is_b = 0, | ||
108 | .wire4 = 1, | ||
109 | }; | ||
110 | |||
111 | static 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 | |||
128 | MACHINE_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, | ||
138 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91rm9200/board-ek.c b/arch/arm/mach-at91rm9200/board-ek.c new file mode 100644 index 0000000000..d140645711 --- /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 | |||
46 | static 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 | |||
63 | static 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 | |||
85 | static struct at91_eth_data __initdata ek_eth_data = { | ||
86 | .phy_irq_pin = AT91_PIN_PC4, | ||
87 | .is_rmii = 1, | ||
88 | }; | ||
89 | |||
90 | static struct at91_usbh_data __initdata ek_usbh_data = { | ||
91 | .ports = 2, | ||
92 | }; | ||
93 | |||
94 | static struct at91_udc_data __initdata ek_udc_data = { | ||
95 | .vbus_pin = AT91_PIN_PD4, | ||
96 | .pullup_pin = AT91_PIN_PD5, | ||
97 | }; | ||
98 | |||
99 | static 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 | |||
106 | static 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 | |||
121 | MACHINE_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, | ||
131 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91rm9200/clock.c b/arch/arm/mach-at91rm9200/clock.c new file mode 100644 index 0000000000..ec8195a2a3 --- /dev/null +++ b/arch/arm/mach-at91rm9200/clock.c | |||
@@ -0,0 +1,620 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-at91rm9200/clock.c | ||
3 | * | ||
4 | * Copyright (C) 2005 David Brownell | ||
5 | * Copyright (C) 2005 Ivan Kokshaysky | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | */ | ||
12 | |||
13 | #include <linux/module.h> | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/init.h> | ||
16 | #include <linux/fs.h> | ||
17 | #include <linux/debugfs.h> | ||
18 | #include <linux/seq_file.h> | ||
19 | #include <linux/list.h> | ||
20 | #include <linux/errno.h> | ||
21 | #include <linux/err.h> | ||
22 | #include <linux/spinlock.h> | ||
23 | #include <linux/delay.h> | ||
24 | #include <linux/clk.h> | ||
25 | |||
26 | #include <asm/semaphore.h> | ||
27 | #include <asm/io.h> | ||
28 | #include <asm/mach-types.h> | ||
29 | |||
30 | #include <asm/arch/hardware.h> | ||
31 | #include <asm/arch/board.h> /* for master clock global */ | ||
32 | |||
33 | #include "generic.h" | ||
34 | |||
35 | #undef DEBUG | ||
36 | |||
37 | /* | ||
38 | * There's a lot more which can be done with clocks, including cpufreq | ||
39 | * integration, slow clock mode support (for system suspend), letting | ||
40 | * PLLB be used at other rates (on boards that don't need USB), etc. | ||
41 | */ | ||
42 | |||
43 | struct clk { | ||
44 | const char *name; | ||
45 | unsigned long rate_hz; | ||
46 | struct clk *parent; | ||
47 | u32 pmc_mask; | ||
48 | void (*mode)(struct clk *, int); | ||
49 | unsigned id:2; /* PCK0..3, or 32k/main/a/b */ | ||
50 | unsigned primary:1; | ||
51 | unsigned pll:1; | ||
52 | unsigned programmable:1; | ||
53 | u16 users; | ||
54 | }; | ||
55 | |||
56 | static spinlock_t clk_lock; | ||
57 | static u32 at91_pllb_usb_init; | ||
58 | |||
59 | /* | ||
60 | * Four primary clock sources: two crystal oscillators (32K, main), and | ||
61 | * two PLLs. PLLA usually runs the master clock; and PLLB must run at | ||
62 | * 48 MHz (unless no USB function clocks are needed). The main clock and | ||
63 | * both PLLs are turned off to run in "slow clock mode" (system suspend). | ||
64 | */ | ||
65 | static struct clk clk32k = { | ||
66 | .name = "clk32k", | ||
67 | .rate_hz = AT91_SLOW_CLOCK, | ||
68 | .users = 1, /* always on */ | ||
69 | .id = 0, | ||
70 | .primary = 1, | ||
71 | }; | ||
72 | static struct clk main_clk = { | ||
73 | .name = "main", | ||
74 | .pmc_mask = 1 << 0, /* in PMC_SR */ | ||
75 | .users = 1, | ||
76 | .id = 1, | ||
77 | .primary = 1, | ||
78 | }; | ||
79 | static struct clk plla = { | ||
80 | .name = "plla", | ||
81 | .parent = &main_clk, | ||
82 | .pmc_mask = 1 << 1, /* in PMC_SR */ | ||
83 | .id = 2, | ||
84 | .primary = 1, | ||
85 | .pll = 1, | ||
86 | }; | ||
87 | |||
88 | static void pllb_mode(struct clk *clk, int is_on) | ||
89 | { | ||
90 | u32 value; | ||
91 | |||
92 | if (is_on) { | ||
93 | is_on = AT91_PMC_LOCKB; | ||
94 | value = at91_pllb_usb_init; | ||
95 | } else | ||
96 | value = 0; | ||
97 | |||
98 | at91_sys_write(AT91_CKGR_PLLBR, value); | ||
99 | |||
100 | do { | ||
101 | cpu_relax(); | ||
102 | } while ((at91_sys_read(AT91_PMC_SR) & AT91_PMC_LOCKB) != is_on); | ||
103 | } | ||
104 | |||
105 | static struct clk pllb = { | ||
106 | .name = "pllb", | ||
107 | .parent = &main_clk, | ||
108 | .pmc_mask = 1 << 2, /* in PMC_SR */ | ||
109 | .mode = pllb_mode, | ||
110 | .id = 3, | ||
111 | .primary = 1, | ||
112 | .pll = 1, | ||
113 | }; | ||
114 | |||
115 | static void pmc_sys_mode(struct clk *clk, int is_on) | ||
116 | { | ||
117 | if (is_on) | ||
118 | at91_sys_write(AT91_PMC_SCER, clk->pmc_mask); | ||
119 | else | ||
120 | at91_sys_write(AT91_PMC_SCDR, clk->pmc_mask); | ||
121 | } | ||
122 | |||
123 | /* USB function clocks (PLLB must be 48 MHz) */ | ||
124 | static struct clk udpck = { | ||
125 | .name = "udpck", | ||
126 | .parent = &pllb, | ||
127 | .pmc_mask = AT91_PMC_UDP, | ||
128 | .mode = pmc_sys_mode, | ||
129 | }; | ||
130 | static struct clk uhpck = { | ||
131 | .name = "uhpck", | ||
132 | .parent = &pllb, | ||
133 | .pmc_mask = AT91_PMC_UHP, | ||
134 | .mode = pmc_sys_mode, | ||
135 | }; | ||
136 | |||
137 | #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS | ||
138 | /* | ||
139 | * The four programmable clocks can be parented by any primary clock. | ||
140 | * You must configure pin multiplexing to bring these signals out. | ||
141 | */ | ||
142 | static struct clk pck0 = { | ||
143 | .name = "pck0", | ||
144 | .pmc_mask = AT91_PMC_PCK0, | ||
145 | .mode = pmc_sys_mode, | ||
146 | .programmable = 1, | ||
147 | .id = 0, | ||
148 | }; | ||
149 | static struct clk pck1 = { | ||
150 | .name = "pck1", | ||
151 | .pmc_mask = AT91_PMC_PCK1, | ||
152 | .mode = pmc_sys_mode, | ||
153 | .programmable = 1, | ||
154 | .id = 1, | ||
155 | }; | ||
156 | static struct clk pck2 = { | ||
157 | .name = "pck2", | ||
158 | .pmc_mask = AT91_PMC_PCK2, | ||
159 | .mode = pmc_sys_mode, | ||
160 | .programmable = 1, | ||
161 | .id = 2, | ||
162 | }; | ||
163 | static struct clk pck3 = { | ||
164 | .name = "pck3", | ||
165 | .pmc_mask = AT91_PMC_PCK3, | ||
166 | .mode = pmc_sys_mode, | ||
167 | .programmable = 1, | ||
168 | .id = 3, | ||
169 | }; | ||
170 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ | ||
171 | |||
172 | |||
173 | /* | ||
174 | * The master clock is divided from the CPU clock (by 1-4). It's used for | ||
175 | * memory, interfaces to on-chip peripherals, the AIC, and sometimes more | ||
176 | * (e.g baud rate generation). It's sourced from one of the primary clocks. | ||
177 | */ | ||
178 | static struct clk mck = { | ||
179 | .name = "mck", | ||
180 | .pmc_mask = 1 << 3, /* in PMC_SR */ | ||
181 | .users = 1, /* (must be) always on */ | ||
182 | }; | ||
183 | |||
184 | static void pmc_periph_mode(struct clk *clk, int is_on) | ||
185 | { | ||
186 | if (is_on) | ||
187 | at91_sys_write(AT91_PMC_PCER, clk->pmc_mask); | ||
188 | else | ||
189 | at91_sys_write(AT91_PMC_PCDR, clk->pmc_mask); | ||
190 | } | ||
191 | |||
192 | static struct clk udc_clk = { | ||
193 | .name = "udc_clk", | ||
194 | .parent = &mck, | ||
195 | .pmc_mask = 1 << AT91_ID_UDP, | ||
196 | .mode = pmc_periph_mode, | ||
197 | }; | ||
198 | static struct clk ohci_clk = { | ||
199 | .name = "ohci_clk", | ||
200 | .parent = &mck, | ||
201 | .pmc_mask = 1 << AT91_ID_UHP, | ||
202 | .mode = pmc_periph_mode, | ||
203 | }; | ||
204 | |||
205 | static struct clk *const clock_list[] = { | ||
206 | /* four primary clocks -- MUST BE FIRST! */ | ||
207 | &clk32k, | ||
208 | &main_clk, | ||
209 | &plla, | ||
210 | &pllb, | ||
211 | |||
212 | /* PLLB children (USB) */ | ||
213 | &udpck, | ||
214 | &uhpck, | ||
215 | |||
216 | #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS | ||
217 | /* programmable clocks */ | ||
218 | &pck0, | ||
219 | &pck1, | ||
220 | &pck2, | ||
221 | &pck3, | ||
222 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ | ||
223 | |||
224 | /* MCK and peripherals */ | ||
225 | &mck, | ||
226 | // usart0..usart3 | ||
227 | // mmc | ||
228 | &udc_clk, | ||
229 | // i2c | ||
230 | // spi | ||
231 | // ssc0..ssc2 | ||
232 | // tc0..tc5 | ||
233 | &ohci_clk, | ||
234 | // ether | ||
235 | }; | ||
236 | |||
237 | |||
238 | /* clocks are all static for now; no refcounting necessary */ | ||
239 | struct clk *clk_get(struct device *dev, const char *id) | ||
240 | { | ||
241 | int i; | ||
242 | |||
243 | for (i = 0; i < ARRAY_SIZE(clock_list); i++) { | ||
244 | if (strcmp(id, clock_list[i]->name) == 0) | ||
245 | return clock_list[i]; | ||
246 | } | ||
247 | |||
248 | return ERR_PTR(-ENOENT); | ||
249 | } | ||
250 | EXPORT_SYMBOL(clk_get); | ||
251 | |||
252 | void clk_put(struct clk *clk) | ||
253 | { | ||
254 | } | ||
255 | EXPORT_SYMBOL(clk_put); | ||
256 | |||
257 | static void __clk_enable(struct clk *clk) | ||
258 | { | ||
259 | if (clk->parent) | ||
260 | __clk_enable(clk->parent); | ||
261 | if (clk->users++ == 0 && clk->mode) | ||
262 | clk->mode(clk, 1); | ||
263 | } | ||
264 | |||
265 | int clk_enable(struct clk *clk) | ||
266 | { | ||
267 | unsigned long flags; | ||
268 | |||
269 | spin_lock_irqsave(&clk_lock, flags); | ||
270 | __clk_enable(clk); | ||
271 | spin_unlock_irqrestore(&clk_lock, flags); | ||
272 | return 0; | ||
273 | } | ||
274 | EXPORT_SYMBOL(clk_enable); | ||
275 | |||
276 | static void __clk_disable(struct clk *clk) | ||
277 | { | ||
278 | BUG_ON(clk->users == 0); | ||
279 | if (--clk->users == 0 && clk->mode) | ||
280 | clk->mode(clk, 0); | ||
281 | if (clk->parent) | ||
282 | __clk_disable(clk->parent); | ||
283 | } | ||
284 | |||
285 | void clk_disable(struct clk *clk) | ||
286 | { | ||
287 | unsigned long flags; | ||
288 | |||
289 | spin_lock_irqsave(&clk_lock, flags); | ||
290 | __clk_disable(clk); | ||
291 | spin_unlock_irqrestore(&clk_lock, flags); | ||
292 | } | ||
293 | EXPORT_SYMBOL(clk_disable); | ||
294 | |||
295 | unsigned long clk_get_rate(struct clk *clk) | ||
296 | { | ||
297 | unsigned long flags; | ||
298 | unsigned long rate; | ||
299 | |||
300 | spin_lock_irqsave(&clk_lock, flags); | ||
301 | for (;;) { | ||
302 | rate = clk->rate_hz; | ||
303 | if (rate || !clk->parent) | ||
304 | break; | ||
305 | clk = clk->parent; | ||
306 | } | ||
307 | spin_unlock_irqrestore(&clk_lock, flags); | ||
308 | return rate; | ||
309 | } | ||
310 | EXPORT_SYMBOL(clk_get_rate); | ||
311 | |||
312 | /*------------------------------------------------------------------------*/ | ||
313 | |||
314 | #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS | ||
315 | |||
316 | /* | ||
317 | * For now, only the programmable clocks support reparenting (MCK could | ||
318 | * do this too, with care) or rate changing (the PLLs could do this too, | ||
319 | * ditto MCK but that's more for cpufreq). Drivers may reparent to get | ||
320 | * a better rate match; we don't. | ||
321 | */ | ||
322 | |||
323 | long clk_round_rate(struct clk *clk, unsigned long rate) | ||
324 | { | ||
325 | unsigned long flags; | ||
326 | unsigned prescale; | ||
327 | unsigned long actual; | ||
328 | |||
329 | if (!clk->programmable) | ||
330 | return -EINVAL; | ||
331 | spin_lock_irqsave(&clk_lock, flags); | ||
332 | |||
333 | actual = clk->parent->rate_hz; | ||
334 | for (prescale = 0; prescale < 7; prescale++) { | ||
335 | if (actual && actual <= rate) | ||
336 | break; | ||
337 | actual >>= 1; | ||
338 | } | ||
339 | |||
340 | spin_unlock_irqrestore(&clk_lock, flags); | ||
341 | return (prescale < 7) ? actual : -ENOENT; | ||
342 | } | ||
343 | EXPORT_SYMBOL(clk_round_rate); | ||
344 | |||
345 | int clk_set_rate(struct clk *clk, unsigned long rate) | ||
346 | { | ||
347 | unsigned long flags; | ||
348 | unsigned prescale; | ||
349 | unsigned long actual; | ||
350 | |||
351 | if (!clk->programmable) | ||
352 | return -EINVAL; | ||
353 | if (clk->users) | ||
354 | return -EBUSY; | ||
355 | spin_lock_irqsave(&clk_lock, flags); | ||
356 | |||
357 | actual = clk->parent->rate_hz; | ||
358 | for (prescale = 0; prescale < 7; prescale++) { | ||
359 | if (actual && actual <= rate) { | ||
360 | u32 pckr; | ||
361 | |||
362 | pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); | ||
363 | pckr &= 0x03; | ||
364 | pckr |= prescale << 2; | ||
365 | at91_sys_write(AT91_PMC_PCKR(clk->id), pckr); | ||
366 | clk->rate_hz = actual; | ||
367 | break; | ||
368 | } | ||
369 | actual >>= 1; | ||
370 | } | ||
371 | |||
372 | spin_unlock_irqrestore(&clk_lock, flags); | ||
373 | return (prescale < 7) ? actual : -ENOENT; | ||
374 | } | ||
375 | EXPORT_SYMBOL(clk_set_rate); | ||
376 | |||
377 | struct clk *clk_get_parent(struct clk *clk) | ||
378 | { | ||
379 | return clk->parent; | ||
380 | } | ||
381 | EXPORT_SYMBOL(clk_get_parent); | ||
382 | |||
383 | int clk_set_parent(struct clk *clk, struct clk *parent) | ||
384 | { | ||
385 | unsigned long flags; | ||
386 | |||
387 | if (clk->users) | ||
388 | return -EBUSY; | ||
389 | if (!parent->primary || !clk->programmable) | ||
390 | return -EINVAL; | ||
391 | spin_lock_irqsave(&clk_lock, flags); | ||
392 | |||
393 | clk->rate_hz = parent->rate_hz; | ||
394 | clk->parent = parent; | ||
395 | at91_sys_write(AT91_PMC_PCKR(clk->id), parent->id); | ||
396 | |||
397 | spin_unlock_irqrestore(&clk_lock, flags); | ||
398 | return 0; | ||
399 | } | ||
400 | EXPORT_SYMBOL(clk_set_parent); | ||
401 | |||
402 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ | ||
403 | |||
404 | /*------------------------------------------------------------------------*/ | ||
405 | |||
406 | #ifdef CONFIG_DEBUG_FS | ||
407 | |||
408 | static int at91_clk_show(struct seq_file *s, void *unused) | ||
409 | { | ||
410 | u32 scsr, pcsr, sr; | ||
411 | unsigned i; | ||
412 | |||
413 | seq_printf(s, "SCSR = %8x\n", scsr = at91_sys_read(AT91_PMC_SCSR)); | ||
414 | seq_printf(s, "PCSR = %8x\n", pcsr = at91_sys_read(AT91_PMC_PCSR)); | ||
415 | |||
416 | seq_printf(s, "MOR = %8x\n", at91_sys_read(AT91_CKGR_MOR)); | ||
417 | seq_printf(s, "MCFR = %8x\n", at91_sys_read(AT91_CKGR_MCFR)); | ||
418 | seq_printf(s, "PLLA = %8x\n", at91_sys_read(AT91_CKGR_PLLAR)); | ||
419 | seq_printf(s, "PLLB = %8x\n", at91_sys_read(AT91_CKGR_PLLBR)); | ||
420 | |||
421 | seq_printf(s, "MCKR = %8x\n", at91_sys_read(AT91_PMC_MCKR)); | ||
422 | for (i = 0; i < 4; i++) | ||
423 | seq_printf(s, "PCK%d = %8x\n", i, at91_sys_read(AT91_PMC_PCKR(i))); | ||
424 | seq_printf(s, "SR = %8x\n", sr = at91_sys_read(AT91_PMC_SR)); | ||
425 | |||
426 | seq_printf(s, "\n"); | ||
427 | |||
428 | for (i = 0; i < ARRAY_SIZE(clock_list); i++) { | ||
429 | char *state; | ||
430 | struct clk *clk = clock_list[i]; | ||
431 | |||
432 | if (clk->mode == pmc_sys_mode) | ||
433 | state = (scsr & clk->pmc_mask) ? "on" : "off"; | ||
434 | else if (clk->mode == pmc_periph_mode) | ||
435 | state = (pcsr & clk->pmc_mask) ? "on" : "off"; | ||
436 | else if (clk->pmc_mask) | ||
437 | state = (sr & clk->pmc_mask) ? "on" : "off"; | ||
438 | else if (clk == &clk32k || clk == &main_clk) | ||
439 | state = "on"; | ||
440 | else | ||
441 | state = ""; | ||
442 | |||
443 | seq_printf(s, "%-10s users=%d %-3s %9ld Hz %s\n", | ||
444 | clk->name, clk->users, state, clk_get_rate(clk), | ||
445 | clk->parent ? clk->parent->name : ""); | ||
446 | } | ||
447 | return 0; | ||
448 | } | ||
449 | |||
450 | static int at91_clk_open(struct inode *inode, struct file *file) | ||
451 | { | ||
452 | return single_open(file, at91_clk_show, NULL); | ||
453 | } | ||
454 | |||
455 | static struct file_operations at91_clk_operations = { | ||
456 | .open = at91_clk_open, | ||
457 | .read = seq_read, | ||
458 | .llseek = seq_lseek, | ||
459 | .release = single_release, | ||
460 | }; | ||
461 | |||
462 | static int __init at91_clk_debugfs_init(void) | ||
463 | { | ||
464 | /* /sys/kernel/debug/at91_clk */ | ||
465 | (void) debugfs_create_file("at91_clk", S_IFREG | S_IRUGO, NULL, NULL, &at91_clk_operations); | ||
466 | |||
467 | return 0; | ||
468 | } | ||
469 | postcore_initcall(at91_clk_debugfs_init); | ||
470 | |||
471 | #endif | ||
472 | |||
473 | /*------------------------------------------------------------------------*/ | ||
474 | |||
475 | static u32 __init at91_pll_rate(struct clk *pll, u32 freq, u32 reg) | ||
476 | { | ||
477 | unsigned mul, div; | ||
478 | |||
479 | div = reg & 0xff; | ||
480 | mul = (reg >> 16) & 0x7ff; | ||
481 | if (div && mul) { | ||
482 | freq /= div; | ||
483 | freq *= mul + 1; | ||
484 | } else | ||
485 | freq = 0; | ||
486 | if (pll == &pllb && (reg & (1 << 28))) | ||
487 | freq /= 2; | ||
488 | return freq; | ||
489 | } | ||
490 | |||
491 | static unsigned __init at91_pll_calc(unsigned main_freq, unsigned out_freq) | ||
492 | { | ||
493 | unsigned i, div = 0, mul = 0, diff = 1 << 30; | ||
494 | unsigned ret = (out_freq > 155000000) ? 0xbe00 : 0x3e00; | ||
495 | |||
496 | /* PLL output max 240 MHz (or 180 MHz per errata) */ | ||
497 | if (out_freq > 240000000) | ||
498 | goto fail; | ||
499 | |||
500 | for (i = 1; i < 256; i++) { | ||
501 | int diff1; | ||
502 | unsigned input, mul1; | ||
503 | |||
504 | /* | ||
505 | * PLL input between 1MHz and 32MHz per spec, but lower | ||
506 | * frequences seem necessary in some cases so allow 100K. | ||
507 | */ | ||
508 | input = main_freq / i; | ||
509 | if (input < 100000) | ||
510 | continue; | ||
511 | if (input > 32000000) | ||
512 | continue; | ||
513 | |||
514 | mul1 = out_freq / input; | ||
515 | if (mul1 > 2048) | ||
516 | continue; | ||
517 | if (mul1 < 2) | ||
518 | goto fail; | ||
519 | |||
520 | diff1 = out_freq - input * mul1; | ||
521 | if (diff1 < 0) | ||
522 | diff1 = -diff1; | ||
523 | if (diff > diff1) { | ||
524 | diff = diff1; | ||
525 | div = i; | ||
526 | mul = mul1; | ||
527 | if (diff == 0) | ||
528 | break; | ||
529 | } | ||
530 | } | ||
531 | if (i == 256 && diff > (out_freq >> 5)) | ||
532 | goto fail; | ||
533 | return ret | ((mul - 1) << 16) | div; | ||
534 | fail: | ||
535 | return 0; | ||
536 | } | ||
537 | |||
538 | int __init at91_clock_init(unsigned long main_clock) | ||
539 | { | ||
540 | unsigned tmp, freq, mckr; | ||
541 | |||
542 | spin_lock_init(&clk_lock); | ||
543 | |||
544 | /* | ||
545 | * When the bootloader initialized the main oscillator correctly, | ||
546 | * there's no problem using the cycle counter. But if it didn't, | ||
547 | * or when using oscillator bypass mode, we must be told the speed | ||
548 | * of the main clock. | ||
549 | */ | ||
550 | if (!main_clock) { | ||
551 | do { | ||
552 | tmp = at91_sys_read(AT91_CKGR_MCFR); | ||
553 | } while (!(tmp & 0x10000)); | ||
554 | main_clock = (tmp & 0xffff) * (AT91_SLOW_CLOCK / 16); | ||
555 | } | ||
556 | main_clk.rate_hz = main_clock; | ||
557 | |||
558 | /* report if PLLA is more than mildly overclocked */ | ||
559 | plla.rate_hz = at91_pll_rate(&plla, main_clock, at91_sys_read(AT91_CKGR_PLLAR)); | ||
560 | if (plla.rate_hz > 209000000) | ||
561 | pr_info("Clocks: PLLA overclocked, %ld MHz\n", plla.rate_hz / 1000000); | ||
562 | |||
563 | /* | ||
564 | * USB clock init: choose 48 MHz PLLB value, turn all clocks off, | ||
565 | * disable 48MHz clock during usb peripheral suspend. | ||
566 | * | ||
567 | * REVISIT: assumes MCK doesn't derive from PLLB! | ||
568 | */ | ||
569 | at91_pllb_usb_init = at91_pll_calc(main_clock, 48000000 * 2) | 0x10000000; | ||
570 | pllb.rate_hz = at91_pll_rate(&pllb, main_clock, at91_pllb_usb_init); | ||
571 | at91_sys_write(AT91_PMC_PCDR, (1 << AT91_ID_UHP) | (1 << AT91_ID_UDP)); | ||
572 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_UHP | AT91_PMC_UDP); | ||
573 | at91_sys_write(AT91_CKGR_PLLBR, 0); | ||
574 | at91_sys_write(AT91_PMC_SCER, AT91_PMC_MCKUDP); | ||
575 | |||
576 | /* | ||
577 | * MCK and CPU derive from one of those primary clocks. | ||
578 | * For now, assume this parentage won't change. | ||
579 | */ | ||
580 | mckr = at91_sys_read(AT91_PMC_MCKR); | ||
581 | mck.parent = clock_list[mckr & AT91_PMC_CSS]; | ||
582 | mck.parent->users++; | ||
583 | freq = mck.parent->rate_hz; | ||
584 | freq /= (1 << ((mckr >> 2) & 3)); /* prescale */ | ||
585 | mck.rate_hz = freq / (1 + ((mckr >> 8) & 3)); /* mdiv */ | ||
586 | |||
587 | printk("Clocks: CPU %u MHz, master %u MHz, main %u.%03u MHz\n", | ||
588 | freq / 1000000, (unsigned) mck.rate_hz / 1000000, | ||
589 | (unsigned) main_clock / 1000000, | ||
590 | ((unsigned) main_clock % 1000000) / 1000); | ||
591 | |||
592 | /* FIXME get rid of master_clock global */ | ||
593 | at91_master_clock = mck.rate_hz; | ||
594 | |||
595 | #ifdef CONFIG_AT91_PROGRAMMABLE_CLOCKS | ||
596 | /* establish PCK0..PCK3 parentage */ | ||
597 | for (tmp = 0; tmp < ARRAY_SIZE(clock_list); tmp++) { | ||
598 | struct clk *clk = clock_list[tmp], *parent; | ||
599 | u32 pckr; | ||
600 | |||
601 | if (!clk->programmable) | ||
602 | continue; | ||
603 | |||
604 | pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); | ||
605 | parent = clock_list[pckr & 3]; | ||
606 | clk->parent = parent; | ||
607 | clk->rate_hz = parent->rate_hz / (1 << ((pckr >> 2) & 3)); | ||
608 | } | ||
609 | #else | ||
610 | /* disable unused clocks */ | ||
611 | at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK0 | AT91_PMC_PCK1 | AT91_PMC_PCK2 | AT91_PMC_PCK3); | ||
612 | #endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */ | ||
613 | |||
614 | /* FIXME several unused clocks may still be active... provide | ||
615 | * a CONFIG option to turn off all unused clocks at some point | ||
616 | * before driver init starts. | ||
617 | */ | ||
618 | |||
619 | return 0; | ||
620 | } | ||
diff --git a/arch/arm/mach-at91rm9200/common.c b/arch/arm/mach-at91rm9200/common.c new file mode 100644 index 0000000000..3848fd2d55 --- /dev/null +++ b/arch/arm/mach-at91rm9200/common.c | |||
@@ -0,0 +1,115 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91rm9200/common.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 | */ | ||
12 | |||
13 | #include <linux/config.h> | ||
14 | #include <linux/module.h> | ||
15 | |||
16 | #include <asm/mach/arch.h> | ||
17 | #include <asm/mach/map.h> | ||
18 | |||
19 | #include <asm/arch/hardware.h> | ||
20 | |||
21 | static struct map_desc at91rm9200_io_desc[] __initdata = { | ||
22 | { | ||
23 | .virtual = AT91_VA_BASE_SYS, | ||
24 | .pfn = __phys_to_pfn(AT91_BASE_SYS), | ||
25 | .length = SZ_4K, | ||
26 | .type = MT_DEVICE, | ||
27 | }, { | ||
28 | .virtual = AT91_VA_BASE_SPI, | ||
29 | .pfn = __phys_to_pfn(AT91_BASE_SPI), | ||
30 | .length = SZ_16K, | ||
31 | .type = MT_DEVICE, | ||
32 | }, { | ||
33 | .virtual = AT91_VA_BASE_SSC2, | ||
34 | .pfn = __phys_to_pfn(AT91_BASE_SSC2), | ||
35 | .length = SZ_16K, | ||
36 | .type = MT_DEVICE, | ||
37 | }, { | ||
38 | .virtual = AT91_VA_BASE_SSC1, | ||
39 | .pfn = __phys_to_pfn(AT91_BASE_SSC1), | ||
40 | .length = SZ_16K, | ||
41 | .type = MT_DEVICE, | ||
42 | }, { | ||
43 | .virtual = AT91_VA_BASE_SSC0, | ||
44 | .pfn = __phys_to_pfn(AT91_BASE_SSC0), | ||
45 | .length = SZ_16K, | ||
46 | .type = MT_DEVICE, | ||
47 | }, { | ||
48 | .virtual = AT91_VA_BASE_US3, | ||
49 | .pfn = __phys_to_pfn(AT91_BASE_US3), | ||
50 | .length = SZ_16K, | ||
51 | .type = MT_DEVICE, | ||
52 | }, { | ||
53 | .virtual = AT91_VA_BASE_US2, | ||
54 | .pfn = __phys_to_pfn(AT91_BASE_US2), | ||
55 | .length = SZ_16K, | ||
56 | .type = MT_DEVICE, | ||
57 | }, { | ||
58 | .virtual = AT91_VA_BASE_US1, | ||
59 | .pfn = __phys_to_pfn(AT91_BASE_US1), | ||
60 | .length = SZ_16K, | ||
61 | .type = MT_DEVICE, | ||
62 | }, { | ||
63 | .virtual = AT91_VA_BASE_US0, | ||
64 | .pfn = __phys_to_pfn(AT91_BASE_US0), | ||
65 | .length = SZ_16K, | ||
66 | .type = MT_DEVICE, | ||
67 | }, { | ||
68 | .virtual = AT91_VA_BASE_EMAC, | ||
69 | .pfn = __phys_to_pfn(AT91_BASE_EMAC), | ||
70 | .length = SZ_16K, | ||
71 | .type = MT_DEVICE, | ||
72 | }, { | ||
73 | .virtual = AT91_VA_BASE_TWI, | ||
74 | .pfn = __phys_to_pfn(AT91_BASE_TWI), | ||
75 | .length = SZ_16K, | ||
76 | .type = MT_DEVICE, | ||
77 | }, { | ||
78 | .virtual = AT91_VA_BASE_MCI, | ||
79 | .pfn = __phys_to_pfn(AT91_BASE_MCI), | ||
80 | .length = SZ_16K, | ||
81 | .type = MT_DEVICE, | ||
82 | }, { | ||
83 | .virtual = AT91_VA_BASE_UDP, | ||
84 | .pfn = __phys_to_pfn(AT91_BASE_UDP), | ||
85 | .length = SZ_16K, | ||
86 | .type = MT_DEVICE, | ||
87 | }, { | ||
88 | .virtual = AT91_VA_BASE_TCB1, | ||
89 | .pfn = __phys_to_pfn(AT91_BASE_TCB1), | ||
90 | .length = SZ_16K, | ||
91 | .type = MT_DEVICE, | ||
92 | }, { | ||
93 | .virtual = AT91_VA_BASE_TCB0, | ||
94 | .pfn = __phys_to_pfn(AT91_BASE_TCB0), | ||
95 | .length = SZ_16K, | ||
96 | .type = MT_DEVICE, | ||
97 | }, | ||
98 | }; | ||
99 | |||
100 | void __init at91rm9200_map_io(void) | ||
101 | { | ||
102 | iotable_init(at91rm9200_io_desc, ARRAY_SIZE(at91rm9200_io_desc)); | ||
103 | } | ||
104 | |||
105 | |||
106 | unsigned long at91_master_clock; | ||
107 | |||
108 | EXPORT_SYMBOL(at91_master_clock); | ||
109 | |||
110 | |||
111 | int at91_serial_map[AT91_NR_UART]; | ||
112 | int at91_console_port; | ||
113 | |||
114 | EXPORT_SYMBOL(at91_serial_map); | ||
115 | EXPORT_SYMBOL(at91_console_port); | ||
diff --git a/arch/arm/mach-at91rm9200/devices.c b/arch/arm/mach-at91rm9200/devices.c new file mode 100644 index 0000000000..8df3e52456 --- /dev/null +++ b/arch/arm/mach-at91rm9200/devices.c | |||
@@ -0,0 +1,291 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-at91rm9200/devices.c | ||
3 | * | ||
4 | * Copyright (C) 2005 Thibaut VARENE <varenet@parisc-linux.org> | ||
5 | * Copyright (C) 2005 David Brownell | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | */ | ||
13 | #include <asm/mach/arch.h> | ||
14 | #include <asm/mach/map.h> | ||
15 | |||
16 | #include <linux/config.h> | ||
17 | #include <linux/platform_device.h> | ||
18 | |||
19 | #include <asm/arch/board.h> | ||
20 | #include <asm/arch/pio.h> | ||
21 | |||
22 | |||
23 | /* -------------------------------------------------------------------- | ||
24 | * USB Host | ||
25 | * -------------------------------------------------------------------- */ | ||
26 | |||
27 | #if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | ||
28 | static u64 ohci_dmamask = 0xffffffffUL; | ||
29 | static struct at91_usbh_data usbh_data; | ||
30 | |||
31 | static struct resource at91rm9200_usbh_resource[] = { | ||
32 | [0] = { | ||
33 | .start = AT91_UHP_BASE, | ||
34 | .end = AT91_UHP_BASE + SZ_1M -1, | ||
35 | .flags = IORESOURCE_MEM, | ||
36 | }, | ||
37 | [1] = { | ||
38 | .start = AT91_ID_UHP, | ||
39 | .end = AT91_ID_UHP, | ||
40 | .flags = IORESOURCE_IRQ, | ||
41 | }, | ||
42 | }; | ||
43 | |||
44 | static struct platform_device at91rm9200_usbh_device = { | ||
45 | .name = "at91rm9200-ohci", | ||
46 | .id = -1, | ||
47 | .dev = { | ||
48 | .dma_mask = &ohci_dmamask, | ||
49 | .coherent_dma_mask = 0xffffffff, | ||
50 | .platform_data = &usbh_data, | ||
51 | }, | ||
52 | .resource = at91rm9200_usbh_resource, | ||
53 | .num_resources = ARRAY_SIZE(at91rm9200_usbh_resource), | ||
54 | }; | ||
55 | |||
56 | void __init at91_add_device_usbh(struct at91_usbh_data *data) | ||
57 | { | ||
58 | if (!data) | ||
59 | return; | ||
60 | |||
61 | usbh_data = *data; | ||
62 | platform_device_register(&at91rm9200_usbh_device); | ||
63 | } | ||
64 | #else | ||
65 | void __init at91_add_device_usbh(struct at91_usbh_data *data) {} | ||
66 | #endif | ||
67 | |||
68 | |||
69 | /* -------------------------------------------------------------------- | ||
70 | * USB Device (Gadget) | ||
71 | * -------------------------------------------------------------------- */ | ||
72 | |||
73 | #ifdef CONFIG_USB_GADGET_AT91 | ||
74 | static struct at91_udc_data udc_data; | ||
75 | |||
76 | static struct resource at91_udc_resources[] = { | ||
77 | { | ||
78 | .start = AT91_BASE_UDP, | ||
79 | .end = AT91_BASE_UDP + SZ_16K - 1, | ||
80 | .flags = IORESOURCE_MEM, | ||
81 | } | ||
82 | }; | ||
83 | |||
84 | static struct platform_device at91rm9200_udc_device = { | ||
85 | .name = "at91_udc", | ||
86 | .id = -1, | ||
87 | .dev = { | ||
88 | .platform_data = &udc_data, | ||
89 | }, | ||
90 | .resource = at91_udc_resources, | ||
91 | .num_resources = ARRAY_SIZE(at91_udc_resources), | ||
92 | }; | ||
93 | |||
94 | void __init at91_add_device_udc(struct at91_udc_data *data) | ||
95 | { | ||
96 | if (!data) | ||
97 | return; | ||
98 | |||
99 | if (data->vbus_pin) { | ||
100 | at91_set_gpio_input(data->vbus_pin, 0); | ||
101 | at91_set_deglitch(data->vbus_pin, 1); | ||
102 | } | ||
103 | if (data->pullup_pin) | ||
104 | at91_set_gpio_output(data->pullup_pin, 0); | ||
105 | |||
106 | udc_data = *data; | ||
107 | platform_device_register(&at91rm9200_udc_device); | ||
108 | } | ||
109 | #else | ||
110 | void __init at91_add_device_udc(struct at91_udc_data *data) {} | ||
111 | #endif | ||
112 | |||
113 | |||
114 | /* -------------------------------------------------------------------- | ||
115 | * Ethernet | ||
116 | * -------------------------------------------------------------------- */ | ||
117 | |||
118 | #if defined(CONFIG_ARM_AT91_ETHER) || defined(CONFIG_ARM_AT91_ETHER_MODULE) | ||
119 | static u64 eth_dmamask = 0xffffffffUL; | ||
120 | static struct at91_eth_data eth_data; | ||
121 | |||
122 | static struct platform_device at91rm9200_eth_device = { | ||
123 | .name = "at91_ether", | ||
124 | .id = -1, | ||
125 | .dev = { | ||
126 | .dma_mask = ð_dmamask, | ||
127 | .coherent_dma_mask = 0xffffffff, | ||
128 | .platform_data = ð_data, | ||
129 | }, | ||
130 | .num_resources = 0, | ||
131 | }; | ||
132 | |||
133 | void __init at91_add_device_eth(struct at91_eth_data *data) | ||
134 | { | ||
135 | if (!data) | ||
136 | return; | ||
137 | |||
138 | if (data->phy_irq_pin) { | ||
139 | at91_set_gpio_input(data->phy_irq_pin, 0); | ||
140 | at91_set_deglitch(data->phy_irq_pin, 1); | ||
141 | } | ||
142 | |||
143 | /* Pins used for MII and RMII */ | ||
144 | at91_set_A_periph(AT91_PIN_PA16, 0); /* EMDIO */ | ||
145 | at91_set_A_periph(AT91_PIN_PA15, 0); /* EMDC */ | ||
146 | at91_set_A_periph(AT91_PIN_PA14, 0); /* ERXER */ | ||
147 | at91_set_A_periph(AT91_PIN_PA13, 0); /* ERX1 */ | ||
148 | at91_set_A_periph(AT91_PIN_PA12, 0); /* ERX0 */ | ||
149 | at91_set_A_periph(AT91_PIN_PA11, 0); /* ECRS_ECRSDV */ | ||
150 | at91_set_A_periph(AT91_PIN_PA10, 0); /* ETX1 */ | ||
151 | at91_set_A_periph(AT91_PIN_PA9, 0); /* ETX0 */ | ||
152 | at91_set_A_periph(AT91_PIN_PA8, 0); /* ETXEN */ | ||
153 | at91_set_A_periph(AT91_PIN_PA7, 0); /* ETXCK_EREFCK */ | ||
154 | |||
155 | if (!data->is_rmii) { | ||
156 | at91_set_B_periph(AT91_PIN_PB19, 0); /* ERXCK */ | ||
157 | at91_set_B_periph(AT91_PIN_PB18, 0); /* ECOL */ | ||
158 | at91_set_B_periph(AT91_PIN_PB17, 0); /* ERXDV */ | ||
159 | at91_set_B_periph(AT91_PIN_PB16, 0); /* ERX3 */ | ||
160 | at91_set_B_periph(AT91_PIN_PB15, 0); /* ERX2 */ | ||
161 | at91_set_B_periph(AT91_PIN_PB14, 0); /* ETXER */ | ||
162 | at91_set_B_periph(AT91_PIN_PB13, 0); /* ETX3 */ | ||
163 | at91_set_B_periph(AT91_PIN_PB12, 0); /* ETX2 */ | ||
164 | } | ||
165 | |||
166 | eth_data = *data; | ||
167 | platform_device_register(&at91rm9200_eth_device); | ||
168 | } | ||
169 | #else | ||
170 | void __init at91_add_device_eth(struct at91_eth_data *data) {} | ||
171 | #endif | ||
172 | |||
173 | |||
174 | /* -------------------------------------------------------------------- | ||
175 | * Compact Flash / PCMCIA | ||
176 | * -------------------------------------------------------------------- */ | ||
177 | |||
178 | #if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) | ||
179 | static struct at91_cf_data cf_data; | ||
180 | |||
181 | static struct platform_device at91rm9200_cf_device = { | ||
182 | .name = "at91_cf", | ||
183 | .id = -1, | ||
184 | .dev = { | ||
185 | .platform_data = &cf_data, | ||
186 | }, | ||
187 | .num_resources = 0, | ||
188 | }; | ||
189 | |||
190 | void __init at91_add_device_cf(struct at91_cf_data *data) | ||
191 | { | ||
192 | if (!data) | ||
193 | return; | ||
194 | |||
195 | /* input/irq */ | ||
196 | if (data->irq_pin) { | ||
197 | at91_set_gpio_input(data->irq_pin, 1); | ||
198 | at91_set_deglitch(data->irq_pin, 1); | ||
199 | } | ||
200 | at91_set_gpio_input(data->det_pin, 1); | ||
201 | at91_set_deglitch(data->det_pin, 1); | ||
202 | |||
203 | /* outputs, initially off */ | ||
204 | if (data->vcc_pin) | ||
205 | at91_set_gpio_output(data->vcc_pin, 0); | ||
206 | at91_set_gpio_output(data->rst_pin, 0); | ||
207 | |||
208 | cf_data = *data; | ||
209 | platform_device_register(&at91rm9200_cf_device); | ||
210 | } | ||
211 | #else | ||
212 | void __init at91_add_device_cf(struct at91_cf_data *data) {} | ||
213 | #endif | ||
214 | |||
215 | |||
216 | /* -------------------------------------------------------------------- | ||
217 | * MMC / SD | ||
218 | * -------------------------------------------------------------------- */ | ||
219 | |||
220 | #if defined(CONFIG_MMC_AT91RM9200) || defined(CONFIG_MMC_AT91RM9200_MODULE) | ||
221 | static u64 mmc_dmamask = 0xffffffffUL; | ||
222 | static struct at91_mmc_data mmc_data; | ||
223 | |||
224 | static struct resource at91_mmc_resources[] = { | ||
225 | { | ||
226 | .start = AT91_BASE_MCI, | ||
227 | .end = AT91_BASE_MCI + SZ_16K - 1, | ||
228 | .flags = IORESOURCE_MEM, | ||
229 | } | ||
230 | }; | ||
231 | |||
232 | static struct platform_device at91rm9200_mmc_device = { | ||
233 | .name = "at91rm9200_mci", | ||
234 | .id = -1, | ||
235 | .dev = { | ||
236 | .dma_mask = &mmc_dmamask, | ||
237 | .coherent_dma_mask = 0xffffffff, | ||
238 | .platform_data = &mmc_data, | ||
239 | }, | ||
240 | .resource = at91_mmc_resources, | ||
241 | .num_resources = ARRAY_SIZE(at91_mmc_resources), | ||
242 | }; | ||
243 | |||
244 | void __init at91_add_device_mmc(struct at91_mmc_data *data) | ||
245 | { | ||
246 | if (!data) | ||
247 | return; | ||
248 | |||
249 | /* input/irq */ | ||
250 | if (data->det_pin) { | ||
251 | at91_set_gpio_input(data->det_pin, 1); | ||
252 | at91_set_deglitch(data->det_pin, 1); | ||
253 | } | ||
254 | if (data->wp_pin) | ||
255 | at91_set_gpio_input(data->wp_pin, 1); | ||
256 | |||
257 | /* CLK */ | ||
258 | at91_set_A_periph(AT91_PIN_PA27, 0); | ||
259 | |||
260 | if (data->is_b) { | ||
261 | /* CMD */ | ||
262 | at91_set_B_periph(AT91_PIN_PA8, 0); | ||
263 | |||
264 | /* DAT0, maybe DAT1..DAT3 */ | ||
265 | at91_set_B_periph(AT91_PIN_PA9, 0); | ||
266 | if (data->wire4) { | ||
267 | at91_set_B_periph(AT91_PIN_PA10, 0); | ||
268 | at91_set_B_periph(AT91_PIN_PA11, 0); | ||
269 | at91_set_B_periph(AT91_PIN_PA12, 0); | ||
270 | } | ||
271 | } else { | ||
272 | /* CMD */ | ||
273 | at91_set_A_periph(AT91_PIN_PA28, 0); | ||
274 | |||
275 | /* DAT0, maybe DAT1..DAT3 */ | ||
276 | at91_set_A_periph(AT91_PIN_PA29, 0); | ||
277 | if (data->wire4) { | ||
278 | at91_set_B_periph(AT91_PIN_PB3, 0); | ||
279 | at91_set_B_periph(AT91_PIN_PB4, 0); | ||
280 | at91_set_B_periph(AT91_PIN_PB5, 0); | ||
281 | } | ||
282 | } | ||
283 | |||
284 | mmc_data = *data; | ||
285 | platform_device_register(&at91rm9200_mmc_device); | ||
286 | } | ||
287 | #else | ||
288 | void __init at91_add_device_mmc(struct at91_mmc_data *data) {} | ||
289 | #endif | ||
290 | |||
291 | /* -------------------------------------------------------------------- */ | ||
diff --git a/arch/arm/mach-at91rm9200/generic.h b/arch/arm/mach-at91rm9200/generic.h new file mode 100644 index 0000000000..9bd541eba0 --- /dev/null +++ b/arch/arm/mach-at91rm9200/generic.h | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-at91rm9200/generic.h | ||
3 | * | ||
4 | * Copyright (C) 2005 David Brownell | ||
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 version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | |||
11 | void at91_gpio_irq_setup(unsigned banks); | ||
12 | |||
13 | struct sys_timer; | ||
14 | extern struct sys_timer at91rm9200_timer; | ||
15 | |||
16 | extern void __init at91rm9200_map_io(void); | ||
17 | |||
18 | extern int __init at91_clock_init(unsigned long main_clock); | ||
diff --git a/arch/arm/mach-at91rm9200/gpio.c b/arch/arm/mach-at91rm9200/gpio.c new file mode 100644 index 0000000000..2fd2ef583e --- /dev/null +++ b/arch/arm/mach-at91rm9200/gpio.c | |||
@@ -0,0 +1,302 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-at91rm9200/gpio.c | ||
3 | * | ||
4 | * Copyright (C) 2005 HP Labs | ||
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 | |||
12 | #include <linux/errno.h> | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/list.h> | ||
15 | #include <linux/module.h> | ||
16 | |||
17 | #include <asm/io.h> | ||
18 | #include <asm/mach/irq.h> | ||
19 | #include <asm/arch/hardware.h> | ||
20 | #include <asm/arch/gpio.h> | ||
21 | |||
22 | static const u32 pio_controller_offset[4] = { | ||
23 | AT91_PIOA, | ||
24 | AT91_PIOB, | ||
25 | AT91_PIOC, | ||
26 | AT91_PIOD, | ||
27 | }; | ||
28 | |||
29 | static inline void __iomem *pin_to_controller(unsigned pin) | ||
30 | { | ||
31 | void __iomem *sys_base = (void __iomem *) AT91_VA_BASE_SYS; | ||
32 | |||
33 | pin -= PIN_BASE; | ||
34 | pin /= 32; | ||
35 | if (likely(pin < BGA_GPIO_BANKS)) | ||
36 | return sys_base + pio_controller_offset[pin]; | ||
37 | |||
38 | return NULL; | ||
39 | } | ||
40 | |||
41 | static inline unsigned pin_to_mask(unsigned pin) | ||
42 | { | ||
43 | pin -= PIN_BASE; | ||
44 | return 1 << (pin % 32); | ||
45 | } | ||
46 | |||
47 | |||
48 | /*--------------------------------------------------------------------------*/ | ||
49 | |||
50 | /* Not all hardware capabilities are exposed through these calls; they | ||
51 | * only encapsulate the most common features and modes. (So if you | ||
52 | * want to change signals in groups, do it directly.) | ||
53 | * | ||
54 | * Bootloaders will usually handle some of the pin multiplexing setup. | ||
55 | * The intent is certainly that by the time Linux is fully booted, all | ||
56 | * pins should have been fully initialized. These setup calls should | ||
57 | * only be used by board setup routines, or possibly in driver probe(). | ||
58 | * | ||
59 | * For bootloaders doing all that setup, these calls could be inlined | ||
60 | * as NOPs so Linux won't duplicate any setup code | ||
61 | */ | ||
62 | |||
63 | |||
64 | /* | ||
65 | * mux the pin to the "A" internal peripheral role. | ||
66 | */ | ||
67 | int __init_or_module at91_set_A_periph(unsigned pin, int use_pullup) | ||
68 | { | ||
69 | void __iomem *pio = pin_to_controller(pin); | ||
70 | unsigned mask = pin_to_mask(pin); | ||
71 | |||
72 | if (!pio) | ||
73 | return -EINVAL; | ||
74 | |||
75 | __raw_writel(mask, pio + PIO_IDR); | ||
76 | __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR)); | ||
77 | __raw_writel(mask, pio + PIO_ASR); | ||
78 | __raw_writel(mask, pio + PIO_PDR); | ||
79 | return 0; | ||
80 | } | ||
81 | EXPORT_SYMBOL(at91_set_A_periph); | ||
82 | |||
83 | |||
84 | /* | ||
85 | * mux the pin to the "B" internal peripheral role. | ||
86 | */ | ||
87 | int __init_or_module at91_set_B_periph(unsigned pin, int use_pullup) | ||
88 | { | ||
89 | void __iomem *pio = pin_to_controller(pin); | ||
90 | unsigned mask = pin_to_mask(pin); | ||
91 | |||
92 | if (!pio) | ||
93 | return -EINVAL; | ||
94 | |||
95 | __raw_writel(mask, pio + PIO_IDR); | ||
96 | __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR)); | ||
97 | __raw_writel(mask, pio + PIO_BSR); | ||
98 | __raw_writel(mask, pio + PIO_PDR); | ||
99 | return 0; | ||
100 | } | ||
101 | EXPORT_SYMBOL(at91_set_B_periph); | ||
102 | |||
103 | |||
104 | /* | ||
105 | * mux the pin to the gpio controller (instead of "A" or "B" peripheral), and | ||
106 | * configure it for an input. | ||
107 | */ | ||
108 | int __init_or_module at91_set_gpio_input(unsigned pin, int use_pullup) | ||
109 | { | ||
110 | void __iomem *pio = pin_to_controller(pin); | ||
111 | unsigned mask = pin_to_mask(pin); | ||
112 | |||
113 | if (!pio) | ||
114 | return -EINVAL; | ||
115 | |||
116 | __raw_writel(mask, pio + PIO_IDR); | ||
117 | __raw_writel(mask, pio + (use_pullup ? PIO_PUER : PIO_PUDR)); | ||
118 | __raw_writel(mask, pio + PIO_ODR); | ||
119 | __raw_writel(mask, pio + PIO_PER); | ||
120 | return 0; | ||
121 | } | ||
122 | EXPORT_SYMBOL(at91_set_gpio_input); | ||
123 | |||
124 | |||
125 | /* | ||
126 | * mux the pin to the gpio controller (instead of "A" or "B" peripheral), | ||
127 | * and configure it for an output. | ||
128 | */ | ||
129 | int __init_or_module at91_set_gpio_output(unsigned pin, int value) | ||
130 | { | ||
131 | void __iomem *pio = pin_to_controller(pin); | ||
132 | unsigned mask = pin_to_mask(pin); | ||
133 | |||
134 | if (!pio) | ||
135 | return -EINVAL; | ||
136 | |||
137 | __raw_writel(mask, pio + PIO_IDR); | ||
138 | __raw_writel(mask, pio + PIO_PUDR); | ||
139 | __raw_writel(mask, pio + (value ? PIO_SODR : PIO_CODR)); | ||
140 | __raw_writel(mask, pio + PIO_OER); | ||
141 | __raw_writel(mask, pio + PIO_PER); | ||
142 | return 0; | ||
143 | } | ||
144 | EXPORT_SYMBOL(at91_set_gpio_output); | ||
145 | |||
146 | |||
147 | /* | ||
148 | * enable/disable the glitch filter; mostly used with IRQ handling. | ||
149 | */ | ||
150 | int __init_or_module at91_set_deglitch(unsigned pin, int is_on) | ||
151 | { | ||
152 | void __iomem *pio = pin_to_controller(pin); | ||
153 | unsigned mask = pin_to_mask(pin); | ||
154 | |||
155 | if (!pio) | ||
156 | return -EINVAL; | ||
157 | __raw_writel(mask, pio + (is_on ? PIO_IFER : PIO_IFDR)); | ||
158 | return 0; | ||
159 | } | ||
160 | EXPORT_SYMBOL(at91_set_deglitch); | ||
161 | |||
162 | /*--------------------------------------------------------------------------*/ | ||
163 | |||
164 | |||
165 | /* | ||
166 | * assuming the pin is muxed as a gpio output, set its value. | ||
167 | */ | ||
168 | int at91_set_gpio_value(unsigned pin, int value) | ||
169 | { | ||
170 | void __iomem *pio = pin_to_controller(pin); | ||
171 | unsigned mask = pin_to_mask(pin); | ||
172 | |||
173 | if (!pio) | ||
174 | return -EINVAL; | ||
175 | __raw_writel(mask, pio + (value ? PIO_SODR : PIO_CODR)); | ||
176 | return 0; | ||
177 | } | ||
178 | EXPORT_SYMBOL(at91_set_gpio_value); | ||
179 | |||
180 | |||
181 | /* | ||
182 | * read the pin's value (works even if it's not muxed as a gpio). | ||
183 | */ | ||
184 | int at91_get_gpio_value(unsigned pin) | ||
185 | { | ||
186 | void __iomem *pio = pin_to_controller(pin); | ||
187 | unsigned mask = pin_to_mask(pin); | ||
188 | u32 pdsr; | ||
189 | |||
190 | if (!pio) | ||
191 | return -EINVAL; | ||
192 | pdsr = __raw_readl(pio + PIO_PDSR); | ||
193 | return (pdsr & mask) != 0; | ||
194 | } | ||
195 | EXPORT_SYMBOL(at91_get_gpio_value); | ||
196 | |||
197 | /*--------------------------------------------------------------------------*/ | ||
198 | |||
199 | |||
200 | /* Several AIC controller irqs are dispatched through this GPIO handler. | ||
201 | * To use any AT91_PIN_* as an externally triggered IRQ, first call | ||
202 | * at91_set_gpio_input() then maybe enable its glitch filter. | ||
203 | * Then just request_irq() with the pin ID; it works like any ARM IRQ | ||
204 | * handler, though it always triggers on rising and falling edges. | ||
205 | * | ||
206 | * Alternatively, certain pins may be used directly as IRQ0..IRQ6 after | ||
207 | * configuring them with at91_set_a_periph() or at91_set_b_periph(). | ||
208 | * IRQ0..IRQ6 should be configurable, e.g. level vs edge triggering. | ||
209 | */ | ||
210 | |||
211 | static void gpio_irq_mask(unsigned pin) | ||
212 | { | ||
213 | void __iomem *pio = pin_to_controller(pin); | ||
214 | unsigned mask = pin_to_mask(pin); | ||
215 | |||
216 | if (pio) | ||
217 | __raw_writel(mask, pio + PIO_IDR); | ||
218 | } | ||
219 | |||
220 | static void gpio_irq_unmask(unsigned pin) | ||
221 | { | ||
222 | void __iomem *pio = pin_to_controller(pin); | ||
223 | unsigned mask = pin_to_mask(pin); | ||
224 | |||
225 | if (pio) | ||
226 | __raw_writel(mask, pio + PIO_IER); | ||
227 | } | ||
228 | |||
229 | static int gpio_irq_type(unsigned pin, unsigned type) | ||
230 | { | ||
231 | return (type == IRQT_BOTHEDGE) ? 0 : -EINVAL; | ||
232 | } | ||
233 | |||
234 | static struct irqchip gpio_irqchip = { | ||
235 | .mask = gpio_irq_mask, | ||
236 | .unmask = gpio_irq_unmask, | ||
237 | .set_type = gpio_irq_type, | ||
238 | }; | ||
239 | |||
240 | static void gpio_irq_handler(unsigned irq, struct irqdesc *desc, struct pt_regs *regs) | ||
241 | { | ||
242 | unsigned pin; | ||
243 | struct irqdesc *gpio; | ||
244 | void __iomem *pio; | ||
245 | u32 isr; | ||
246 | |||
247 | pio = (void __force __iomem *) desc->chipdata; | ||
248 | |||
249 | /* temporarily mask (level sensitive) parent IRQ */ | ||
250 | desc->chip->ack(irq); | ||
251 | for (;;) { | ||
252 | isr = __raw_readl(pio + PIO_ISR) & __raw_readl(pio + PIO_IMR); | ||
253 | if (!isr) | ||
254 | break; | ||
255 | |||
256 | pin = (unsigned) desc->data; | ||
257 | gpio = &irq_desc[pin]; | ||
258 | |||
259 | while (isr) { | ||
260 | if (isr & 1) | ||
261 | gpio->handle(pin, gpio, regs); | ||
262 | pin++; | ||
263 | gpio++; | ||
264 | isr >>= 1; | ||
265 | } | ||
266 | } | ||
267 | desc->chip->unmask(irq); | ||
268 | /* now it may re-trigger */ | ||
269 | } | ||
270 | |||
271 | /* call this from board-specific init_irq */ | ||
272 | void __init at91_gpio_irq_setup(unsigned banks) | ||
273 | { | ||
274 | unsigned pioc, pin, id; | ||
275 | |||
276 | if (banks > 4) | ||
277 | banks = 4; | ||
278 | for (pioc = 0, pin = PIN_BASE, id = AT91_ID_PIOA; | ||
279 | pioc < banks; | ||
280 | pioc++, id++) { | ||
281 | void __iomem *controller; | ||
282 | unsigned i; | ||
283 | |||
284 | controller = (void __iomem *) AT91_VA_BASE_SYS + pio_controller_offset[pioc]; | ||
285 | __raw_writel(~0, controller + PIO_IDR); | ||
286 | |||
287 | set_irq_data(id, (void *) pin); | ||
288 | set_irq_chipdata(id, (void __force *) controller); | ||
289 | |||
290 | for (i = 0; i < 32; i++, pin++) { | ||
291 | set_irq_chip(pin, &gpio_irqchip); | ||
292 | set_irq_handler(pin, do_simple_IRQ); | ||
293 | set_irq_flags(pin, IRQF_VALID); | ||
294 | } | ||
295 | |||
296 | set_irq_chained_handler(id, gpio_irq_handler); | ||
297 | |||
298 | /* enable the PIO peripheral clock */ | ||
299 | at91_sys_write(AT91_PMC_PCER, 1 << id); | ||
300 | } | ||
301 | pr_info("AT91: %d gpio irqs in %d banks\n", pin - PIN_BASE, banks); | ||
302 | } | ||
diff --git a/arch/arm/mach-at91rm9200/irq.c b/arch/arm/mach-at91rm9200/irq.c new file mode 100644 index 0000000000..cb62bc83a1 --- /dev/null +++ b/arch/arm/mach-at91rm9200/irq.c | |||
@@ -0,0 +1,170 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-at91rm9200/irq.c | ||
3 | * | ||
4 | * Copyright (C) 2004 SAN People | ||
5 | * Copyright (C) 2004 ATMEL | ||
6 | * Copyright (C) Rick Bronson | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | |||
23 | #include <linux/config.h> | ||
24 | #include <linux/init.h> | ||
25 | #include <linux/module.h> | ||
26 | #include <linux/mm.h> | ||
27 | #include <linux/types.h> | ||
28 | |||
29 | #include <asm/hardware.h> | ||
30 | #include <asm/irq.h> | ||
31 | #include <asm/mach-types.h> | ||
32 | #include <asm/setup.h> | ||
33 | |||
34 | #include <asm/mach/arch.h> | ||
35 | #include <asm/mach/irq.h> | ||
36 | #include <asm/mach/map.h> | ||
37 | |||
38 | #include "generic.h" | ||
39 | |||
40 | /* | ||
41 | * The default interrupt priority levels (0 = lowest, 7 = highest). | ||
42 | */ | ||
43 | static unsigned int at91rm9200_default_irq_priority[NR_AIC_IRQS] __initdata = { | ||
44 | 7, /* Advanced Interrupt Controller */ | ||
45 | 7, /* System Peripheral */ | ||
46 | 0, /* Parallel IO Controller A */ | ||
47 | 0, /* Parallel IO Controller B */ | ||
48 | 0, /* Parallel IO Controller C */ | ||
49 | 0, /* Parallel IO Controller D */ | ||
50 | 6, /* USART 0 */ | ||
51 | 6, /* USART 1 */ | ||
52 | 6, /* USART 2 */ | ||
53 | 6, /* USART 3 */ | ||
54 | 0, /* Multimedia Card Interface */ | ||
55 | 4, /* USB Device Port */ | ||
56 | 0, /* Two-Wire Interface */ | ||
57 | 6, /* Serial Peripheral Interface */ | ||
58 | 5, /* Serial Synchronous Controller */ | ||
59 | 5, /* Serial Synchronous Controller */ | ||
60 | 5, /* Serial Synchronous Controller */ | ||
61 | 0, /* Timer Counter 0 */ | ||
62 | 0, /* Timer Counter 1 */ | ||
63 | 0, /* Timer Counter 2 */ | ||
64 | 0, /* Timer Counter 3 */ | ||
65 | 0, /* Timer Counter 4 */ | ||
66 | 0, /* Timer Counter 5 */ | ||
67 | 3, /* USB Host port */ | ||
68 | 3, /* Ethernet MAC */ | ||
69 | 0, /* Advanced Interrupt Controller */ | ||
70 | 0, /* Advanced Interrupt Controller */ | ||
71 | 0, /* Advanced Interrupt Controller */ | ||
72 | 0, /* Advanced Interrupt Controller */ | ||
73 | 0, /* Advanced Interrupt Controller */ | ||
74 | 0, /* Advanced Interrupt Controller */ | ||
75 | 0 /* Advanced Interrupt Controller */ | ||
76 | }; | ||
77 | |||
78 | |||
79 | static void at91rm9200_mask_irq(unsigned int irq) | ||
80 | { | ||
81 | /* Disable interrupt on AIC */ | ||
82 | at91_sys_write(AT91_AIC_IDCR, 1 << irq); | ||
83 | } | ||
84 | |||
85 | static void at91rm9200_unmask_irq(unsigned int irq) | ||
86 | { | ||
87 | /* Enable interrupt on AIC */ | ||
88 | at91_sys_write(AT91_AIC_IECR, 1 << irq); | ||
89 | } | ||
90 | |||
91 | static int at91rm9200_irq_type(unsigned irq, unsigned type) | ||
92 | { | ||
93 | unsigned int smr, srctype; | ||
94 | |||
95 | /* change triggering only for FIQ and external IRQ0..IRQ6 */ | ||
96 | if ((irq < AT91_ID_IRQ0) && (irq != AT91_ID_FIQ)) | ||
97 | return -EINVAL; | ||
98 | |||
99 | switch (type) { | ||
100 | case IRQT_HIGH: | ||
101 | srctype = AT91_AIC_SRCTYPE_HIGH; | ||
102 | break; | ||
103 | case IRQT_RISING: | ||
104 | srctype = AT91_AIC_SRCTYPE_RISING; | ||
105 | break; | ||
106 | case IRQT_LOW: | ||
107 | srctype = AT91_AIC_SRCTYPE_LOW; | ||
108 | break; | ||
109 | case IRQT_FALLING: | ||
110 | srctype = AT91_AIC_SRCTYPE_FALLING; | ||
111 | break; | ||
112 | default: | ||
113 | return -EINVAL; | ||
114 | } | ||
115 | |||
116 | smr = at91_sys_read(AT91_AIC_SMR(irq)) & ~AT91_AIC_SRCTYPE; | ||
117 | at91_sys_write(AT91_AIC_SMR(irq), smr | srctype); | ||
118 | return 0; | ||
119 | } | ||
120 | |||
121 | static struct irqchip at91rm9200_irq_chip = { | ||
122 | .ack = at91rm9200_mask_irq, | ||
123 | .mask = at91rm9200_mask_irq, | ||
124 | .unmask = at91rm9200_unmask_irq, | ||
125 | .set_type = at91rm9200_irq_type, | ||
126 | }; | ||
127 | |||
128 | /* | ||
129 | * Initialize the AIC interrupt controller. | ||
130 | */ | ||
131 | void __init at91rm9200_init_irq(unsigned int priority[NR_AIC_IRQS]) | ||
132 | { | ||
133 | unsigned int i; | ||
134 | |||
135 | /* No priority list specified for this board -> use defaults */ | ||
136 | if (priority == NULL) | ||
137 | priority = at91rm9200_default_irq_priority; | ||
138 | |||
139 | /* | ||
140 | * The IVR is used by macro get_irqnr_and_base to read and verify. | ||
141 | * The irq number is NR_AIC_IRQS when a spurious interrupt has occurred. | ||
142 | */ | ||
143 | for (i = 0; i < NR_AIC_IRQS; i++) { | ||
144 | /* Put irq number in Source Vector Register: */ | ||
145 | at91_sys_write(AT91_AIC_SVR(i), i); | ||
146 | /* Store the Source Mode Register as defined in table above */ | ||
147 | at91_sys_write(AT91_AIC_SMR(i), AT91_AIC_SRCTYPE_LOW | priority[i]); | ||
148 | |||
149 | set_irq_chip(i, &at91rm9200_irq_chip); | ||
150 | set_irq_handler(i, do_level_IRQ); | ||
151 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | ||
152 | |||
153 | /* Perform 8 End Of Interrupt Command to make sure AIC will not Lock out nIRQ */ | ||
154 | if (i < 8) | ||
155 | at91_sys_write(AT91_AIC_EOICR, 0); | ||
156 | } | ||
157 | |||
158 | /* | ||
159 | * Spurious Interrupt ID in Spurious Vector Register is NR_AIC_IRQS | ||
160 | * When there is no current interrupt, the IRQ Vector Register reads the value stored in AIC_SPU | ||
161 | */ | ||
162 | at91_sys_write(AT91_AIC_SPU, NR_AIC_IRQS); | ||
163 | |||
164 | /* No debugging in AIC: Debug (Protect) Control Register */ | ||
165 | at91_sys_write(AT91_AIC_DCR, 0); | ||
166 | |||
167 | /* Disable and clear all interrupts initially */ | ||
168 | at91_sys_write(AT91_AIC_IDCR, 0xFFFFFFFF); | ||
169 | at91_sys_write(AT91_AIC_ICCR, 0xFFFFFFFF); | ||
170 | } | ||
diff --git a/arch/arm/mach-at91rm9200/time.c b/arch/arm/mach-at91rm9200/time.c new file mode 100644 index 0000000000..1b6dd2deeb --- /dev/null +++ b/arch/arm/mach-at91rm9200/time.c | |||
@@ -0,0 +1,127 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-at91rm9200/time.c | ||
3 | * | ||
4 | * Copyright (C) 2003 SAN People | ||
5 | * Copyright (C) 2003 ATMEL | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | |||
22 | #include <linux/config.h> | ||
23 | #include <linux/init.h> | ||
24 | #include <linux/interrupt.h> | ||
25 | #include <linux/kernel.h> | ||
26 | #include <linux/sched.h> | ||
27 | #include <linux/time.h> | ||
28 | |||
29 | #include <asm/hardware.h> | ||
30 | #include <asm/io.h> | ||
31 | #include <asm/irq.h> | ||
32 | #include <asm/mach/time.h> | ||
33 | |||
34 | /* | ||
35 | * The ST_CRTR is updated asynchronously to the master clock. It is therefore | ||
36 | * necessary to read it twice (with the same value) to ensure accuracy. | ||
37 | */ | ||
38 | static inline unsigned long read_CRTR(void) { | ||
39 | unsigned long x1, x2; | ||
40 | |||
41 | do { | ||
42 | x1 = at91_sys_read(AT91_ST_CRTR); | ||
43 | x2 = at91_sys_read(AT91_ST_CRTR); | ||
44 | } while (x1 != x2); | ||
45 | |||
46 | return x1; | ||
47 | } | ||
48 | |||
49 | /* | ||
50 | * Returns number of microseconds since last timer interrupt. Note that interrupts | ||
51 | * will have been disabled by do_gettimeofday() | ||
52 | * 'LATCH' is hwclock ticks (see CLOCK_TICK_RATE in timex.h) per jiffy. | ||
53 | * 'tick' is usecs per jiffy (linux/timex.h). | ||
54 | */ | ||
55 | static unsigned long at91rm9200_gettimeoffset(void) | ||
56 | { | ||
57 | unsigned long elapsed; | ||
58 | |||
59 | elapsed = (read_CRTR() - at91_sys_read(AT91_ST_RTAR)) & AT91_ST_ALMV; | ||
60 | |||
61 | return (unsigned long)(elapsed * (tick_nsec / 1000)) / LATCH; | ||
62 | } | ||
63 | |||
64 | /* | ||
65 | * IRQ handler for the timer. | ||
66 | */ | ||
67 | static irqreturn_t at91rm9200_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | ||
68 | { | ||
69 | unsigned long rtar; | ||
70 | |||
71 | if (at91_sys_read(AT91_ST_SR) & AT91_ST_PITS) { /* This is a shared interrupt */ | ||
72 | write_seqlock(&xtime_lock); | ||
73 | |||
74 | do { | ||
75 | timer_tick(regs); | ||
76 | rtar = (at91_sys_read(AT91_ST_RTAR) + LATCH) & AT91_ST_ALMV; | ||
77 | at91_sys_write(AT91_ST_RTAR, rtar); | ||
78 | } while (((read_CRTR() - at91_sys_read(AT91_ST_RTAR)) & AT91_ST_ALMV) >= LATCH); | ||
79 | |||
80 | write_sequnlock(&xtime_lock); | ||
81 | |||
82 | return IRQ_HANDLED; | ||
83 | } | ||
84 | else | ||
85 | return IRQ_NONE; /* not handled */ | ||
86 | } | ||
87 | |||
88 | static struct irqaction at91rm9200_timer_irq = { | ||
89 | .name = "at91_tick", | ||
90 | .flags = SA_SHIRQ | SA_INTERRUPT, | ||
91 | .handler = at91rm9200_timer_interrupt | ||
92 | }; | ||
93 | |||
94 | /* | ||
95 | * Set up timer interrupt. | ||
96 | */ | ||
97 | void __init at91rm9200_timer_init(void) | ||
98 | { | ||
99 | /* Disable all timer interrupts */ | ||
100 | at91_sys_write(AT91_ST_IDR, AT91_ST_PITS | AT91_ST_WDOVF | AT91_ST_RTTINC | AT91_ST_ALMS); | ||
101 | (void) at91_sys_read(AT91_ST_SR); /* Clear any pending interrupts */ | ||
102 | |||
103 | /* | ||
104 | * Make IRQs happen for the system timer. | ||
105 | */ | ||
106 | setup_irq(AT91_ID_SYS, &at91rm9200_timer_irq); | ||
107 | |||
108 | /* Set initial alarm to 0 */ | ||
109 | at91_sys_write(AT91_ST_RTAR, 0); | ||
110 | |||
111 | /* Real time counter incremented every 30.51758 microseconds */ | ||
112 | at91_sys_write(AT91_ST_RTMR, 1); | ||
113 | |||
114 | /* Set Period Interval timer */ | ||
115 | at91_sys_write(AT91_ST_PIMR, LATCH); | ||
116 | |||
117 | /* Change the kernel's 'tick' value to 10009 usec. (the default is 10000) */ | ||
118 | tick_usec = (LATCH * 1000000) / CLOCK_TICK_RATE; | ||
119 | |||
120 | /* Enable Period Interval Timer interrupt */ | ||
121 | at91_sys_write(AT91_ST_IER, AT91_ST_PITS); | ||
122 | } | ||
123 | |||
124 | struct sys_timer at91rm9200_timer = { | ||
125 | .init = at91rm9200_timer_init, | ||
126 | .offset = at91rm9200_gettimeoffset, | ||
127 | }; | ||
diff --git a/arch/arm/mach-clps711x/dma.c b/arch/arm/mach-clps711x/dma.c deleted file mode 100644 index af5a4de38e..0000000000 --- a/arch/arm/mach-clps711x/dma.c +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-clps711x/dma.c | ||
3 | * | ||
4 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
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 | #include <linux/init.h> | ||
21 | |||
22 | #include <asm/dma.h> | ||
23 | #include <asm/mach/dma.h> | ||
24 | |||
25 | void __init arch_dma_init(dma_t *dma) | ||
26 | { | ||
27 | } | ||
diff --git a/arch/arm/mach-epxa10db/Kconfig b/arch/arm/mach-epxa10db/Kconfig deleted file mode 100644 index 55d896dd49..0000000000 --- a/arch/arm/mach-epxa10db/Kconfig +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | if ARCH_CAMELOT | ||
2 | |||
3 | menu "Epxa10db" | ||
4 | |||
5 | comment "PLD hotswap support" | ||
6 | |||
7 | config PLD | ||
8 | bool | ||
9 | default y | ||
10 | |||
11 | config PLD_HOTSWAP | ||
12 | bool "Support for PLD device hotplugging (experimental)" | ||
13 | depends on EXPERIMENTAL | ||
14 | help | ||
15 | This enables support for the dynamic loading and configuration of | ||
16 | compatible drivers when the contents of the PLD are changed. This | ||
17 | is still experimental and requires configuration tools which are | ||
18 | not yet generally available. Say N here. You must enable the kernel | ||
19 | module loader for this feature to work. | ||
20 | |||
21 | endmenu | ||
22 | |||
23 | endif | ||
diff --git a/arch/arm/mach-epxa10db/Makefile b/arch/arm/mach-epxa10db/Makefile deleted file mode 100644 index 24fbd7d3a3..0000000000 --- a/arch/arm/mach-epxa10db/Makefile +++ /dev/null | |||
@@ -1,11 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for the linux kernel. | ||
3 | # | ||
4 | |||
5 | # Object file lists. | ||
6 | |||
7 | obj-y := arch.o irq.o mm.o time.o | ||
8 | obj-m := | ||
9 | obj-n := | ||
10 | obj- := | ||
11 | |||
diff --git a/arch/arm/mach-epxa10db/Makefile.boot b/arch/arm/mach-epxa10db/Makefile.boot deleted file mode 100644 index 28bec7d3fc..0000000000 --- a/arch/arm/mach-epxa10db/Makefile.boot +++ /dev/null | |||
@@ -1,2 +0,0 @@ | |||
1 | zreladdr-y := 0x00008000 | ||
2 | |||
diff --git a/arch/arm/mach-epxa10db/arch.c b/arch/arm/mach-epxa10db/arch.c deleted file mode 100644 index 44c56571d1..0000000000 --- a/arch/arm/mach-epxa10db/arch.c +++ /dev/null | |||
@@ -1,74 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-epxa10db/arch.c | ||
3 | * | ||
4 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
5 | * Copyright (C) 2001 Altera Corporation | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | #include <linux/types.h> | ||
22 | #include <linux/init.h> | ||
23 | #include <linux/serial_8250.h> | ||
24 | |||
25 | #include <asm/hardware.h> | ||
26 | #include <asm/setup.h> | ||
27 | #include <asm/mach-types.h> | ||
28 | |||
29 | #include <asm/mach/arch.h> | ||
30 | |||
31 | static struct plat_serial8250_port serial_platform_data[] = { | ||
32 | { | ||
33 | .iobase = 0x3f8, | ||
34 | .irq = IRQ_UARTINT0, | ||
35 | #error FIXME | ||
36 | .uartclk = 0, | ||
37 | .regshift = 0, | ||
38 | .iotype = UPIO_PORT, | ||
39 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | ||
40 | }, | ||
41 | { | ||
42 | .iobase = 0x2f8, | ||
43 | .irq = IRQ_UARTINT1, | ||
44 | #error FIXME | ||
45 | .uartclk = 0, | ||
46 | .regshift = 0, | ||
47 | .iotype = UPIO_PORT, | ||
48 | .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST, | ||
49 | }, | ||
50 | { }, | ||
51 | }; | ||
52 | |||
53 | static struct platform_device serial_device = { | ||
54 | .name = "serial8250", | ||
55 | .id = PLAT8250_DEV_PLATFORM, | ||
56 | .dev = { | ||
57 | .platform_data = serial_platform_data, | ||
58 | }, | ||
59 | }; | ||
60 | |||
61 | extern void epxa10db_map_io(void); | ||
62 | extern void epxa10db_init_irq(void); | ||
63 | extern struct sys_timer epxa10db_timer; | ||
64 | |||
65 | MACHINE_START(CAMELOT, "Altera Epxa10db") | ||
66 | /* Maintainer: Altera Corporation */ | ||
67 | .phys_ram = 0x00000000, | ||
68 | .phys_io = 0x7fffc000, | ||
69 | .io_pg_offst = ((0xffffc000) >> 18) & 0xfffc, | ||
70 | .map_io = epxa10db_map_io, | ||
71 | .init_irq = epxa10db_init_irq, | ||
72 | .timer = &epxa10db_timer, | ||
73 | MACHINE_END | ||
74 | |||
diff --git a/arch/arm/mach-epxa10db/dma.c b/arch/arm/mach-epxa10db/dma.c deleted file mode 100644 index 0151e9f1c0..0000000000 --- a/arch/arm/mach-epxa10db/dma.c +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-epxa10db/dma.c | ||
3 | * | ||
4 | * Copyright (C) 1999 ARM Limited | ||
5 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | #include <linux/init.h> | ||
22 | |||
23 | #include <asm/dma.h> | ||
24 | #include <asm/mach/dma.h> | ||
25 | |||
26 | void __init arch_dma_init(dma_t *dma) | ||
27 | { | ||
28 | } | ||
diff --git a/arch/arm/mach-epxa10db/irq.c b/arch/arm/mach-epxa10db/irq.c deleted file mode 100644 index 9bf927e133..0000000000 --- a/arch/arm/mach-epxa10db/irq.c +++ /dev/null | |||
@@ -1,82 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-epxa10db/irq.c | ||
3 | * | ||
4 | * Copyright (C) 2001 Altera Corporation | ||
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 | #include <linux/init.h> | ||
21 | #include <linux/ioport.h> | ||
22 | #include <linux/stddef.h> | ||
23 | #include <linux/timer.h> | ||
24 | #include <linux/list.h> | ||
25 | #include <asm/io.h> | ||
26 | #include <asm/hardware.h> | ||
27 | #include <asm/irq.h> | ||
28 | #include <asm/mach/irq.h> | ||
29 | #include <asm/arch/platform.h> | ||
30 | #include <asm/arch/int_ctrl00.h> | ||
31 | |||
32 | |||
33 | static void epxa_mask_irq(unsigned int irq) | ||
34 | { | ||
35 | writel(1 << irq, INT_MC(IO_ADDRESS(EXC_INT_CTRL00_BASE))); | ||
36 | } | ||
37 | |||
38 | static void epxa_unmask_irq(unsigned int irq) | ||
39 | { | ||
40 | writel(1 << irq, INT_MS(IO_ADDRESS(EXC_INT_CTRL00_BASE))); | ||
41 | } | ||
42 | |||
43 | |||
44 | static struct irqchip epxa_irq_chip = { | ||
45 | .ack = epxa_mask_irq, | ||
46 | .mask = epxa_mask_irq, | ||
47 | .unmask = epxa_unmask_irq, | ||
48 | }; | ||
49 | |||
50 | static struct resource irq_resource = { | ||
51 | .name = "irq_handler", | ||
52 | .start = IO_ADDRESS(EXC_INT_CTRL00_BASE), | ||
53 | .end = IO_ADDRESS(INT_PRIORITY_FC(EXC_INT_CTRL00_BASE))+4, | ||
54 | }; | ||
55 | |||
56 | void __init epxa10db_init_irq(void) | ||
57 | { | ||
58 | unsigned int i; | ||
59 | |||
60 | request_resource(&iomem_resource, &irq_resource); | ||
61 | |||
62 | /* | ||
63 | * This bit sets up the interrupt controller using | ||
64 | * the 6 PLD interrupts mode (the default) each | ||
65 | * irqs is assigned a priority which is the same | ||
66 | * as its interrupt number. This scheme is used because | ||
67 | * its easy, but you may want to change it depending | ||
68 | * on the contents of your PLD | ||
69 | */ | ||
70 | |||
71 | writel(3,INT_MODE(IO_ADDRESS(EXC_INT_CTRL00_BASE))); | ||
72 | for (i = 0; i < NR_IRQS; i++){ | ||
73 | writel(i+1, INT_PRIORITY_P0(IO_ADDRESS(EXC_INT_CTRL00_BASE)) + (4*i)); | ||
74 | set_irq_chip(i,&epxa_irq_chip); | ||
75 | set_irq_handler(i,do_level_IRQ); | ||
76 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | ||
77 | } | ||
78 | |||
79 | /* Disable all interrupts */ | ||
80 | writel(-1,INT_MC(IO_ADDRESS(EXC_INT_CTRL00_BASE))); | ||
81 | |||
82 | } | ||
diff --git a/arch/arm/mach-epxa10db/mm.c b/arch/arm/mach-epxa10db/mm.c deleted file mode 100644 index cfd0d2182d..0000000000 --- a/arch/arm/mach-epxa10db/mm.c +++ /dev/null | |||
@@ -1,71 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-epxa10db/mm.c | ||
3 | * | ||
4 | * MM routines for Altera'a Epxa10db board | ||
5 | * | ||
6 | * Copyright (C) 2001 Altera Corporation | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | #include <linux/kernel.h> | ||
23 | #include <linux/init.h> | ||
24 | |||
25 | #include <asm/hardware.h> | ||
26 | #include <asm/io.h> | ||
27 | #include <asm/sizes.h> | ||
28 | #include <asm/page.h> | ||
29 | |||
30 | #include <asm/mach/map.h> | ||
31 | |||
32 | /* Page table mapping for I/O region */ | ||
33 | |||
34 | static struct map_desc epxa10db_io_desc[] __initdata = { | ||
35 | { | ||
36 | .virtual = IO_ADDRESS(EXC_REGISTERS_BASE), | ||
37 | .pfn = __phys_to_pfn(EXC_REGISTERS_BASE), | ||
38 | .length = SZ_16K, | ||
39 | .type = MT_DEVICE | ||
40 | }, { | ||
41 | .virtual = IO_ADDRESS(EXC_PLD_BLOCK0_BASE), | ||
42 | .pfn = __phys_to_pfn(EXC_PLD_BLOCK0_BASE), | ||
43 | .length = SZ_16K, | ||
44 | .type = MT_DEVICE | ||
45 | }, { | ||
46 | .virtual = IO_ADDRESS(EXC_PLD_BLOCK1_BASE), | ||
47 | .pfn =__phys_to_pfn(EXC_PLD_BLOCK1_BASE), | ||
48 | .length = SZ_16K, | ||
49 | .type = MT_DEVICE | ||
50 | }, { | ||
51 | .virtual = IO_ADDRESS(EXC_PLD_BLOCK2_BASE), | ||
52 | .physical = __phys_to_pfn(EXC_PLD_BLOCK2_BASE), | ||
53 | .length = SZ_16K, | ||
54 | .type = MT_DEVICE | ||
55 | }, { | ||
56 | .virtual = IO_ADDRESS(EXC_PLD_BLOCK3_BASE), | ||
57 | .pfn = __phys_to_pfn(EXC_PLD_BLOCK3_BASE), | ||
58 | .length = SZ_16K, | ||
59 | .type = MT_DEVICE | ||
60 | }, { | ||
61 | .virtual = FLASH_VADDR(EXC_EBI_BLOCK0_BASE), | ||
62 | .pfn = __phys_to_pfn(EXC_EBI_BLOCK0_BASE), | ||
63 | .length = SZ_16M, | ||
64 | .type = MT_DEVICE | ||
65 | } | ||
66 | }; | ||
67 | |||
68 | void __init epxa10db_map_io(void) | ||
69 | { | ||
70 | iotable_init(epxa10db_io_desc, ARRAY_SIZE(epxa10db_io_desc)); | ||
71 | } | ||
diff --git a/arch/arm/mach-epxa10db/time.c b/arch/arm/mach-epxa10db/time.c deleted file mode 100644 index 4b1084dde8..0000000000 --- a/arch/arm/mach-epxa10db/time.c +++ /dev/null | |||
@@ -1,78 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-epxa10db/time.c | ||
3 | * | ||
4 | * Copyright (C) 2000 Deep Blue Solutions | ||
5 | * Copyright (C) 2001 Altera Corporation | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/init.h> | ||
13 | #include <linux/interrupt.h> | ||
14 | #include <linux/sched.h> | ||
15 | |||
16 | #include <asm/hardware.h> | ||
17 | #include <asm/system.h> | ||
18 | #include <asm/leds.h> | ||
19 | |||
20 | #include <asm/mach/time.h> | ||
21 | |||
22 | #define TIMER00_TYPE (volatile unsigned int*) | ||
23 | #include <asm/arch/timer00.h> | ||
24 | |||
25 | static int epxa10db_set_rtc(void) | ||
26 | { | ||
27 | return 1; | ||
28 | } | ||
29 | |||
30 | static int epxa10db_rtc_init(void) | ||
31 | { | ||
32 | set_rtc = epxa10db_set_rtc; | ||
33 | |||
34 | return 0; | ||
35 | } | ||
36 | |||
37 | __initcall(epxa10db_rtc_init); | ||
38 | |||
39 | |||
40 | /* | ||
41 | * IRQ handler for the timer | ||
42 | */ | ||
43 | static irqreturn_t | ||
44 | epxa10db_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | ||
45 | { | ||
46 | write_seqlock(&xtime_lock); | ||
47 | |||
48 | // ...clear the interrupt | ||
49 | *TIMER0_CR(IO_ADDRESS(EXC_TIMER00_BASE))|=TIMER0_CR_CI_MSK; | ||
50 | |||
51 | timer_tick(regs); | ||
52 | write_sequnlock(&xtime_lock); | ||
53 | |||
54 | return IRQ_HANDLED; | ||
55 | } | ||
56 | |||
57 | static struct irqaction epxa10db_timer_irq = { | ||
58 | .name = "Excalibur Timer Tick", | ||
59 | .flags = SA_INTERRUPT | SA_TIMER, | ||
60 | .handler = epxa10db_timer_interrupt, | ||
61 | }; | ||
62 | |||
63 | /* | ||
64 | * Set up timer interrupt, and return the current time in seconds. | ||
65 | */ | ||
66 | static void __init epxa10db_timer_init(void) | ||
67 | { | ||
68 | /* Start the timer */ | ||
69 | *TIMER0_LIMIT(IO_ADDRESS(EXC_TIMER00_BASE))=(unsigned int)(EXC_AHB2_CLK_FREQUENCY/200); | ||
70 | *TIMER0_PRESCALE(IO_ADDRESS(EXC_TIMER00_BASE))=1; | ||
71 | *TIMER0_CR(IO_ADDRESS(EXC_TIMER00_BASE))=TIMER0_CR_IE_MSK | TIMER0_CR_S_MSK; | ||
72 | |||
73 | setup_irq(IRQ_TIMER0, &epxa10db_timer_irq); | ||
74 | } | ||
75 | |||
76 | struct sys_timer epxa10db_timer = { | ||
77 | .init = epxa10db_timer_init, | ||
78 | }; | ||
diff --git a/arch/arm/mach-footbridge/dma.c b/arch/arm/mach-footbridge/dma.c index a6b1396b09..7a54578b51 100644 --- a/arch/arm/mach-footbridge/dma.c +++ b/arch/arm/mach-footbridge/dma.c | |||
@@ -15,6 +15,7 @@ | |||
15 | 15 | ||
16 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
18 | #include <asm/scatterlist.h> | ||
18 | 19 | ||
19 | #include <asm/mach/dma.h> | 20 | #include <asm/mach/dma.h> |
20 | #include <asm/hardware/dec21285.h> | 21 | #include <asm/hardware/dec21285.h> |
diff --git a/arch/arm/mach-footbridge/netwinder-hw.c b/arch/arm/mach-footbridge/netwinder-hw.c index 775f85fc85..9e563de465 100644 --- a/arch/arm/mach-footbridge/netwinder-hw.c +++ b/arch/arm/mach-footbridge/netwinder-hw.c | |||
@@ -601,6 +601,7 @@ EXPORT_SYMBOL(gpio_lock); | |||
601 | EXPORT_SYMBOL(gpio_modify_op); | 601 | EXPORT_SYMBOL(gpio_modify_op); |
602 | EXPORT_SYMBOL(gpio_modify_io); | 602 | EXPORT_SYMBOL(gpio_modify_io); |
603 | EXPORT_SYMBOL(cpld_modify); | 603 | EXPORT_SYMBOL(cpld_modify); |
604 | EXPORT_SYMBOL(gpio_read); | ||
604 | 605 | ||
605 | /* | 606 | /* |
606 | * Initialise any other hardware after we've got the PCI bus | 607 | * Initialise any other hardware after we've got the PCI bus |
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c index 708e1b3faa..c9e0cd8ed0 100644 --- a/arch/arm/mach-imx/mx1ads.c +++ b/arch/arm/mach-imx/mx1ads.c | |||
@@ -29,27 +29,27 @@ | |||
29 | #include "generic.h" | 29 | #include "generic.h" |
30 | #include <asm/serial.h> | 30 | #include <asm/serial.h> |
31 | 31 | ||
32 | static struct resource mx1ads_resources[] = { | 32 | static struct resource cs89x0_resources[] = { |
33 | [0] = { | 33 | [0] = { |
34 | .start = IMX_CS4_VIRT, | 34 | .start = IMX_CS4_PHYS + 0x300, |
35 | .end = IMX_CS4_VIRT + 16, | 35 | .end = IMX_CS4_PHYS + 0x300 + 16, |
36 | .flags = IORESOURCE_MEM, | 36 | .flags = IORESOURCE_MEM, |
37 | }, | 37 | }, |
38 | [1] = { | 38 | [1] = { |
39 | .start = 13, | 39 | .start = IRQ_GPIOC(17), |
40 | .end = 13, | 40 | .end = IRQ_GPIOC(17), |
41 | .flags = IORESOURCE_IRQ, | 41 | .flags = IORESOURCE_IRQ, |
42 | }, | 42 | }, |
43 | }; | 43 | }; |
44 | 44 | ||
45 | static struct platform_device mx1ads_device = { | 45 | static struct platform_device cs89x0_device = { |
46 | .name = "mx1ads", | 46 | .name = "cirrus-cs89x0", |
47 | .num_resources = ARRAY_SIZE(mx1ads_resources), | 47 | .num_resources = ARRAY_SIZE(cs89x0_resources), |
48 | .resource = mx1ads_resources, | 48 | .resource = cs89x0_resources, |
49 | }; | 49 | }; |
50 | 50 | ||
51 | static struct platform_device *devices[] __initdata = { | 51 | static struct platform_device *devices[] __initdata = { |
52 | &mx1ads_device, | 52 | &cs89x0_device, |
53 | }; | 53 | }; |
54 | 54 | ||
55 | static void __init | 55 | static void __init |
@@ -61,45 +61,10 @@ mx1ads_init(void) | |||
61 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 61 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
62 | } | 62 | } |
63 | 63 | ||
64 | static struct map_desc mx1ads_io_desc[] __initdata = { | ||
65 | { | ||
66 | .virtual = IMX_CS0_VIRT, | ||
67 | .pfn = __phys_to_pfn(IMX_CS0_PHYS), | ||
68 | .length = IMX_CS0_SIZE, | ||
69 | .type = MT_DEVICE | ||
70 | }, { | ||
71 | .virtual = IMX_CS1_VIRT, | ||
72 | .pfn = __phys_to_pfn(IMX_CS1_PHYS), | ||
73 | .length = IMX_CS1_SIZE, | ||
74 | .type = MT_DEVICE | ||
75 | }, { | ||
76 | .virtual = IMX_CS2_VIRT, | ||
77 | .pfn = __phys_to_pfn(IMX_CS2_PHYS), | ||
78 | .length = IMX_CS2_SIZE, | ||
79 | .type = MT_DEVICE | ||
80 | }, { | ||
81 | .virtual = IMX_CS3_VIRT, | ||
82 | .pfn = __phys_to_pfn(IMX_CS3_PHYS), | ||
83 | .length = IMX_CS3_SIZE, | ||
84 | .type = MT_DEVICE | ||
85 | }, { | ||
86 | .virtual = IMX_CS4_VIRT, | ||
87 | .pfn = __phys_to_pfn(IMX_CS4_PHYS), | ||
88 | .length = IMX_CS4_SIZE, | ||
89 | .type = MT_DEVICE | ||
90 | }, { | ||
91 | .virtual = IMX_CS5_VIRT, | ||
92 | .pfn = __phys_to_pfn(IMX_CS5_PHYS), | ||
93 | .length = IMX_CS5_SIZE, | ||
94 | .type = MT_DEVICE | ||
95 | } | ||
96 | }; | ||
97 | |||
98 | static void __init | 64 | static void __init |
99 | mx1ads_map_io(void) | 65 | mx1ads_map_io(void) |
100 | { | 66 | { |
101 | imx_map_io(); | 67 | imx_map_io(); |
102 | iotable_init(mx1ads_io_desc, ARRAY_SIZE(mx1ads_io_desc)); | ||
103 | } | 68 | } |
104 | 69 | ||
105 | MACHINE_START(MX1ADS, "Motorola MX1ADS") | 70 | MACHINE_START(MX1ADS, "Motorola MX1ADS") |
diff --git a/arch/arm/mach-integrator/clock.c b/arch/arm/mach-integrator/clock.c index 73c360685c..95a1e263f7 100644 --- a/arch/arm/mach-integrator/clock.c +++ b/arch/arm/mach-integrator/clock.c | |||
@@ -14,28 +14,29 @@ | |||
14 | #include <linux/errno.h> | 14 | #include <linux/errno.h> |
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> | ||
18 | #include <linux/mutex.h> | ||
17 | 19 | ||
18 | #include <asm/semaphore.h> | 20 | #include <asm/semaphore.h> |
19 | #include <asm/hardware/clock.h> | ||
20 | #include <asm/hardware/icst525.h> | 21 | #include <asm/hardware/icst525.h> |
21 | 22 | ||
22 | #include "clock.h" | 23 | #include "clock.h" |
23 | 24 | ||
24 | static LIST_HEAD(clocks); | 25 | static LIST_HEAD(clocks); |
25 | static DECLARE_MUTEX(clocks_sem); | 26 | static DEFINE_MUTEX(clocks_mutex); |
26 | 27 | ||
27 | struct clk *clk_get(struct device *dev, const char *id) | 28 | struct 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 | } |
@@ -58,17 +59,6 @@ void clk_disable(struct clk *clk) | |||
58 | } | 59 | } |
59 | EXPORT_SYMBOL(clk_disable); | 60 | EXPORT_SYMBOL(clk_disable); |
60 | 61 | ||
61 | int clk_use(struct clk *clk) | ||
62 | { | ||
63 | return 0; | ||
64 | } | ||
65 | EXPORT_SYMBOL(clk_use); | ||
66 | |||
67 | void clk_unuse(struct clk *clk) | ||
68 | { | ||
69 | } | ||
70 | EXPORT_SYMBOL(clk_unuse); | ||
71 | |||
72 | unsigned long clk_get_rate(struct clk *clk) | 62 | unsigned long clk_get_rate(struct clk *clk) |
73 | { | 63 | { |
74 | return clk->rate; | 64 | return clk->rate; |
@@ -118,18 +108,18 @@ static struct clk uart_clk = { | |||
118 | 108 | ||
119 | int clk_register(struct clk *clk) | 109 | int clk_register(struct clk *clk) |
120 | { | 110 | { |
121 | down(&clocks_sem); | 111 | mutex_lock(&clocks_mutex); |
122 | list_add(&clk->node, &clocks); | 112 | list_add(&clk->node, &clocks); |
123 | up(&clocks_sem); | 113 | mutex_unlock(&clocks_mutex); |
124 | return 0; | 114 | return 0; |
125 | } | 115 | } |
126 | EXPORT_SYMBOL(clk_register); | 116 | EXPORT_SYMBOL(clk_register); |
127 | 117 | ||
128 | void clk_unregister(struct clk *clk) | 118 | void clk_unregister(struct clk *clk) |
129 | { | 119 | { |
130 | down(&clocks_sem); | 120 | mutex_lock(&clocks_mutex); |
131 | list_del(&clk->node); | 121 | list_del(&clk->node); |
132 | up(&clocks_sem); | 122 | mutex_unlock(&clocks_mutex); |
133 | } | 123 | } |
134 | EXPORT_SYMBOL(clk_unregister); | 124 | EXPORT_SYMBOL(clk_unregister); |
135 | 125 | ||
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index dacbf504da..20071a2767 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c | |||
@@ -15,11 +15,11 @@ | |||
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/sched.h> | 16 | #include <linux/sched.h> |
17 | #include <linux/smp.h> | 17 | #include <linux/smp.h> |
18 | #include <linux/amba/bus.h> | ||
18 | 19 | ||
19 | #include <asm/hardware.h> | 20 | #include <asm/hardware.h> |
20 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
21 | #include <asm/io.h> | 22 | #include <asm/io.h> |
22 | #include <asm/hardware/amba.h> | ||
23 | #include <asm/hardware/arm_timer.h> | 23 | #include <asm/hardware/arm_timer.h> |
24 | #include <asm/arch/cm.h> | 24 | #include <asm/arch/cm.h> |
25 | #include <asm/system.h> | 25 | #include <asm/system.h> |
diff --git a/arch/arm/mach-integrator/dma.c b/arch/arm/mach-integrator/dma.c deleted file mode 100644 index aae6f23cd7..0000000000 --- a/arch/arm/mach-integrator/dma.c +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-integrator/dma.c | ||
3 | * | ||
4 | * Copyright (C) 1999 ARM Limited | ||
5 | * Copyright (C) 2000 Deep Blue Solutions Ltd | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License as published by | ||
9 | * the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program; if not, write to the Free Software | ||
19 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
20 | */ | ||
21 | #include <linux/slab.h> | ||
22 | #include <linux/mman.h> | ||
23 | #include <linux/init.h> | ||
24 | |||
25 | #include <asm/page.h> | ||
26 | #include <asm/pgtable.h> | ||
27 | #include <asm/dma.h> | ||
28 | #include <asm/io.h> | ||
29 | #include <asm/hardware.h> | ||
30 | |||
31 | #include <asm/mach/dma.h> | ||
32 | |||
33 | void __init arch_dma_init(dma_t *dma) | ||
34 | { | ||
35 | } | ||
diff --git a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c index a4bafee77a..a85d471c5b 100644 --- a/arch/arm/mach-integrator/impd1.c +++ b/arch/arm/mach-integrator/impd1.c | |||
@@ -18,11 +18,11 @@ | |||
18 | #include <linux/device.h> | 18 | #include <linux/device.h> |
19 | #include <linux/errno.h> | 19 | #include <linux/errno.h> |
20 | #include <linux/mm.h> | 20 | #include <linux/mm.h> |
21 | #include <linux/amba/bus.h> | ||
22 | #include <linux/amba/clcd.h> | ||
21 | 23 | ||
22 | #include <asm/io.h> | 24 | #include <asm/io.h> |
23 | #include <asm/hardware/icst525.h> | 25 | #include <asm/hardware/icst525.h> |
24 | #include <asm/hardware/amba.h> | ||
25 | #include <asm/hardware/amba_clcd.h> | ||
26 | #include <asm/arch/lm.h> | 26 | #include <asm/arch/lm.h> |
27 | #include <asm/arch/impd1.h> | 27 | #include <asm/arch/impd1.h> |
28 | #include <asm/sizes.h> | 28 | #include <asm/sizes.h> |
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index 4c0f7c65fa..3afedeb56a 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c | |||
@@ -25,6 +25,8 @@ | |||
25 | #include <linux/slab.h> | 25 | #include <linux/slab.h> |
26 | #include <linux/string.h> | 26 | #include <linux/string.h> |
27 | #include <linux/sysdev.h> | 27 | #include <linux/sysdev.h> |
28 | #include <linux/amba/bus.h> | ||
29 | #include <linux/amba/kmi.h> | ||
28 | 30 | ||
29 | #include <asm/hardware.h> | 31 | #include <asm/hardware.h> |
30 | #include <asm/io.h> | 32 | #include <asm/io.h> |
@@ -32,8 +34,6 @@ | |||
32 | #include <asm/setup.h> | 34 | #include <asm/setup.h> |
33 | #include <asm/param.h> /* HZ */ | 35 | #include <asm/param.h> /* HZ */ |
34 | #include <asm/mach-types.h> | 36 | #include <asm/mach-types.h> |
35 | #include <asm/hardware/amba.h> | ||
36 | #include <asm/hardware/amba_kmi.h> | ||
37 | 37 | ||
38 | #include <asm/arch/lm.h> | 38 | #include <asm/arch/lm.h> |
39 | 39 | ||
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 93f7ccb22c..16cf2482a3 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c | |||
@@ -16,15 +16,15 @@ | |||
16 | #include <linux/slab.h> | 16 | #include <linux/slab.h> |
17 | #include <linux/string.h> | 17 | #include <linux/string.h> |
18 | #include <linux/sysdev.h> | 18 | #include <linux/sysdev.h> |
19 | #include <linux/amba/bus.h> | ||
20 | #include <linux/amba/kmi.h> | ||
21 | #include <linux/amba/clcd.h> | ||
19 | 22 | ||
20 | #include <asm/hardware.h> | 23 | #include <asm/hardware.h> |
21 | #include <asm/io.h> | 24 | #include <asm/io.h> |
22 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
23 | #include <asm/setup.h> | 26 | #include <asm/setup.h> |
24 | #include <asm/mach-types.h> | 27 | #include <asm/mach-types.h> |
25 | #include <asm/hardware/amba.h> | ||
26 | #include <asm/hardware/amba_kmi.h> | ||
27 | #include <asm/hardware/amba_clcd.h> | ||
28 | #include <asm/hardware/icst525.h> | 28 | #include <asm/hardware/icst525.h> |
29 | 29 | ||
30 | #include <asm/arch/cm.h> | 30 | #include <asm/arch/cm.h> |
diff --git a/arch/arm/mach-integrator/time.c b/arch/arm/mach-integrator/time.c index 1a844ca139..3c22c16b38 100644 --- a/arch/arm/mach-integrator/time.c +++ b/arch/arm/mach-integrator/time.c | |||
@@ -14,8 +14,8 @@ | |||
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/device.h> | 16 | #include <linux/device.h> |
17 | #include <linux/amba/bus.h> | ||
17 | 18 | ||
18 | #include <asm/hardware/amba.h> | ||
19 | #include <asm/hardware.h> | 19 | #include <asm/hardware.h> |
20 | #include <asm/io.h> | 20 | #include <asm/io.h> |
21 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
@@ -96,7 +96,8 @@ static struct rtc_ops rtc_ops = { | |||
96 | .set_alarm = rtc_set_alarm, | 96 | .set_alarm = rtc_set_alarm, |
97 | }; | 97 | }; |
98 | 98 | ||
99 | static irqreturn_t rtc_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 99 | static irqreturn_t arm_rtc_interrupt(int irq, void *dev_id, |
100 | struct pt_regs *regs) | ||
100 | { | 101 | { |
101 | writel(0, rtc_base + RTC_EOI); | 102 | writel(0, rtc_base + RTC_EOI); |
102 | return IRQ_HANDLED; | 103 | return IRQ_HANDLED; |
@@ -124,7 +125,7 @@ static int rtc_probe(struct amba_device *dev, void *id) | |||
124 | 125 | ||
125 | xtime.tv_sec = __raw_readl(rtc_base + RTC_DR); | 126 | xtime.tv_sec = __raw_readl(rtc_base + RTC_DR); |
126 | 127 | ||
127 | ret = request_irq(dev->irq[0], rtc_interrupt, SA_INTERRUPT, | 128 | ret = request_irq(dev->irq[0], arm_rtc_interrupt, SA_INTERRUPT, |
128 | "rtc-pl030", dev); | 129 | "rtc-pl030", dev); |
129 | if (ret) | 130 | if (ret) |
130 | goto map_out; | 131 | goto map_out; |
diff --git a/arch/arm/mach-iop3xx/iop331-setup.c b/arch/arm/mach-iop3xx/iop331-setup.c index 53f6061449..e6ea1cba6a 100644 --- a/arch/arm/mach-iop3xx/iop331-setup.c +++ b/arch/arm/mach-iop3xx/iop331-setup.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | #include <linux/serial.h> | 19 | #include <linux/serial.h> |
20 | #include <linux/tty.h> | 20 | #include <linux/tty.h> |
21 | #include <linux/serial_core.h> | 21 | #include <linux/serial_8250.h> |
22 | 22 | ||
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
@@ -50,32 +50,74 @@ static struct map_desc iop331_std_desc[] __initdata = { | |||
50 | } | 50 | } |
51 | }; | 51 | }; |
52 | 52 | ||
53 | static struct uart_port iop331_serial_ports[] = { | 53 | static struct resource iop33x_uart0_resources[] = { |
54 | { | 54 | [0] = { |
55 | .membase = (char*)(IOP331_UART0_VIRT), | 55 | .start = IOP331_UART0_PHYS, |
56 | .mapbase = (IOP331_UART0_PHYS), | 56 | .end = IOP331_UART0_PHYS + 0x3f, |
57 | .irq = IRQ_IOP331_UART0, | 57 | .flags = IORESOURCE_MEM, |
58 | .flags = UPF_SKIP_TEST, | 58 | }, |
59 | .iotype = UPIO_MEM, | 59 | [1] = { |
60 | .regshift = 2, | 60 | .start = IRQ_IOP331_UART0, |
61 | .uartclk = IOP331_UART_XTAL, | 61 | .end = IRQ_IOP331_UART0, |
62 | .line = 0, | 62 | .flags = IORESOURCE_IRQ |
63 | .type = PORT_XSCALE, | 63 | } |
64 | .fifosize = 32 | 64 | }; |
65 | } , { | 65 | |
66 | .membase = (char*)(IOP331_UART1_VIRT), | 66 | static struct resource iop33x_uart1_resources[] = { |
67 | .mapbase = (IOP331_UART1_PHYS), | 67 | [0] = { |
68 | .irq = IRQ_IOP331_UART1, | 68 | .start = IOP331_UART1_PHYS, |
69 | .flags = UPF_SKIP_TEST, | 69 | .end = IOP331_UART1_PHYS + 0x3f, |
70 | .iotype = UPIO_MEM, | 70 | .flags = IORESOURCE_MEM, |
71 | .regshift = 2, | 71 | }, |
72 | .uartclk = IOP331_UART_XTAL, | 72 | [1] = { |
73 | .line = 1, | 73 | .start = IRQ_IOP331_UART1, |
74 | .type = PORT_XSCALE, | 74 | .end = IRQ_IOP331_UART1, |
75 | .fifosize = 32 | 75 | .flags = IORESOURCE_IRQ |
76 | } | 76 | } |
77 | }; | 77 | }; |
78 | 78 | ||
79 | static struct plat_serial8250_port iop33x_uart0_data[] = { | ||
80 | { | ||
81 | .membase = (char*)(IOP331_UART0_VIRT), | ||
82 | .mapbase = (IOP331_UART0_PHYS), | ||
83 | .irq = IRQ_IOP331_UART0, | ||
84 | .uartclk = IOP331_UART_XTAL, | ||
85 | .regshift = 2, | ||
86 | .iotype = UPIO_MEM, | ||
87 | .flags = UPF_SKIP_TEST, | ||
88 | }, | ||
89 | { }, | ||
90 | }; | ||
91 | |||
92 | static struct plat_serial8250_port iop33x_uart1_data[] = { | ||
93 | { | ||
94 | .membase = (char*)(IOP331_UART1_VIRT), | ||
95 | .mapbase = (IOP331_UART1_PHYS), | ||
96 | .irq = IRQ_IOP331_UART1, | ||
97 | .uartclk = IOP331_UART_XTAL, | ||
98 | .regshift = 2, | ||
99 | .iotype = UPIO_MEM, | ||
100 | .flags = UPF_SKIP_TEST, | ||
101 | }, | ||
102 | { }, | ||
103 | }; | ||
104 | |||
105 | static struct platform_device iop33x_uart0 = { | ||
106 | .name = "serial8250", | ||
107 | .id = 0, | ||
108 | .dev.platform_data = iop33x_uart0_data, | ||
109 | .num_resources = 2, | ||
110 | .resource = iop33x_uart0_resources, | ||
111 | }; | ||
112 | |||
113 | static struct platform_device iop33x_uart1 = { | ||
114 | .name = "serial8250", | ||
115 | .id = 1, | ||
116 | .dev.platform_data = iop33x_uart1_data, | ||
117 | .num_resources = 2, | ||
118 | .resource = iop33x_uart1_resources, | ||
119 | }; | ||
120 | |||
79 | static struct resource iop33x_i2c_0_resources[] = { | 121 | static struct resource iop33x_i2c_0_resources[] = { |
80 | [0] = { | 122 | [0] = { |
81 | .start = 0xfffff680, | 123 | .start = 0xfffff680, |
@@ -117,6 +159,8 @@ static struct platform_device iop33x_i2c_1_controller = { | |||
117 | }; | 159 | }; |
118 | 160 | ||
119 | static struct platform_device *iop33x_devices[] __initdata = { | 161 | static struct platform_device *iop33x_devices[] __initdata = { |
162 | &iop33x_uart0, | ||
163 | &iop33x_uart1, | ||
120 | &iop33x_i2c_0_controller, | 164 | &iop33x_i2c_0_controller, |
121 | &iop33x_i2c_1_controller | 165 | &iop33x_i2c_1_controller |
122 | }; | 166 | }; |
@@ -133,8 +177,6 @@ void __init iop33x_init(void) | |||
133 | void __init iop331_map_io(void) | 177 | void __init iop331_map_io(void) |
134 | { | 178 | { |
135 | iotable_init(iop331_std_desc, ARRAY_SIZE(iop331_std_desc)); | 179 | iotable_init(iop331_std_desc, ARRAY_SIZE(iop331_std_desc)); |
136 | early_serial_setup(&iop331_serial_ports[0]); | ||
137 | early_serial_setup(&iop331_serial_ports[1]); | ||
138 | } | 180 | } |
139 | 181 | ||
140 | #ifdef CONFIG_ARCH_IOP331 | 182 | #ifdef CONFIG_ARCH_IOP331 |
diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig index 385285851c..daadc78e27 100644 --- a/arch/arm/mach-ixp4xx/Kconfig +++ b/arch/arm/mach-ixp4xx/Kconfig | |||
@@ -71,6 +71,14 @@ config ARCH_PRPMC1100 | |||
71 | PrPCM1100 Processor Mezanine Module. For more information on | 71 | PrPCM1100 Processor Mezanine Module. For more information on |
72 | this platform, see <file:Documentation/arm/IXP4xx>. | 72 | this platform, see <file:Documentation/arm/IXP4xx>. |
73 | 73 | ||
74 | config MACH_NAS100D | ||
75 | bool | ||
76 | prompt "NAS100D" | ||
77 | help | ||
78 | Say 'Y' here if you want your kernel to support Iomega's | ||
79 | NAS 100d device. For more information on this platform, | ||
80 | see http://www.nslu2-linux.org/wiki/NAS100d/HomePage | ||
81 | |||
74 | # | 82 | # |
75 | # Avila and IXDP share the same source for now. Will change in future | 83 | # Avila and IXDP share the same source for now. Will change in future |
76 | # | 84 | # |
diff --git a/arch/arm/mach-ixp4xx/Makefile b/arch/arm/mach-ixp4xx/Makefile index 7a15629c18..0471044fa1 100644 --- a/arch/arm/mach-ixp4xx/Makefile +++ b/arch/arm/mach-ixp4xx/Makefile | |||
@@ -9,4 +9,5 @@ obj-$(CONFIG_MACH_IXDPG425) += ixdpg425-pci.o coyote-setup.o | |||
9 | obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o | 9 | obj-$(CONFIG_ARCH_ADI_COYOTE) += coyote-pci.o coyote-setup.o |
10 | obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o | 10 | obj-$(CONFIG_MACH_GTWX5715) += gtwx5715-pci.o gtwx5715-setup.o |
11 | obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o | 11 | obj-$(CONFIG_MACH_NSLU2) += nslu2-pci.o nslu2-setup.o nslu2-power.o |
12 | obj-$(CONFIG_MACH_NAS100D) += nas100d-pci.o nas100d-setup.o nas100d-power.o | ||
12 | 13 | ||
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index 9795da270e..6e3462ed53 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
@@ -341,6 +341,29 @@ int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size) | |||
341 | return (dev->bus == &pci_bus_type ) && ((dma_addr + size) >= SZ_64M); | 341 | return (dev->bus == &pci_bus_type ) && ((dma_addr + size) >= SZ_64M); |
342 | } | 342 | } |
343 | 343 | ||
344 | /* | ||
345 | * Only first 64MB of memory can be accessed via PCI. | ||
346 | * We use GFP_DMA to allocate safe buffers to do map/unmap. | ||
347 | * This is really ugly and we need a better way of specifying | ||
348 | * DMA-capable regions of memory. | ||
349 | */ | ||
350 | void __init ixp4xx_adjust_zones(int node, unsigned long *zone_size, | ||
351 | unsigned long *zhole_size) | ||
352 | { | ||
353 | unsigned int sz = SZ_64M >> PAGE_SHIFT; | ||
354 | |||
355 | /* | ||
356 | * Only adjust if > 64M on current system | ||
357 | */ | ||
358 | if (node || (zone_size[0] <= sz)) | ||
359 | return; | ||
360 | |||
361 | zone_size[1] = zone_size[0] - sz; | ||
362 | zone_size[0] = sz; | ||
363 | zhole_size[1] = zhole_size[0]; | ||
364 | zhole_size[0] = 0; | ||
365 | } | ||
366 | |||
344 | void __init ixp4xx_pci_preinit(void) | 367 | void __init ixp4xx_pci_preinit(void) |
345 | { | 368 | { |
346 | unsigned long processor_id; | 369 | unsigned long processor_id; |
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c index f3c687cf00..6b393691d0 100644 --- a/arch/arm/mach-ixp4xx/common.c +++ b/arch/arm/mach-ixp4xx/common.c | |||
@@ -142,6 +142,8 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type) | |||
142 | *int_reg &= ~(IXP4XX_GPIO_STYLE_CLEAR << | 142 | *int_reg &= ~(IXP4XX_GPIO_STYLE_CLEAR << |
143 | (line * IXP4XX_GPIO_STYLE_SIZE)); | 143 | (line * IXP4XX_GPIO_STYLE_SIZE)); |
144 | 144 | ||
145 | *IXP4XX_GPIO_GPISR = (1 << line); | ||
146 | |||
145 | /* Set the new style */ | 147 | /* Set the new style */ |
146 | *int_reg |= (int_style << (line * IXP4XX_GPIO_STYLE_SIZE)); | 148 | *int_reg |= (int_style << (line * IXP4XX_GPIO_STYLE_SIZE)); |
147 | 149 | ||
@@ -169,7 +171,7 @@ static void ixp4xx_irq_ack(unsigned int irq) | |||
169 | int line = (irq < 32) ? irq2gpio[irq] : -1; | 171 | int line = (irq < 32) ? irq2gpio[irq] : -1; |
170 | 172 | ||
171 | if (line >= 0) | 173 | if (line >= 0) |
172 | gpio_line_isr_clear(line); | 174 | *IXP4XX_GPIO_GPISR = (1 << line); |
173 | } | 175 | } |
174 | 176 | ||
175 | /* | 177 | /* |
@@ -330,11 +332,27 @@ static struct platform_device *ixp46x_devices[] __initdata = { | |||
330 | &ixp46x_i2c_controller | 332 | &ixp46x_i2c_controller |
331 | }; | 333 | }; |
332 | 334 | ||
335 | unsigned long ixp4xx_exp_bus_size; | ||
336 | |||
333 | void __init ixp4xx_sys_init(void) | 337 | void __init ixp4xx_sys_init(void) |
334 | { | 338 | { |
339 | ixp4xx_exp_bus_size = SZ_16M; | ||
340 | |||
335 | if (cpu_is_ixp46x()) { | 341 | if (cpu_is_ixp46x()) { |
342 | int region; | ||
343 | |||
336 | platform_add_devices(ixp46x_devices, | 344 | platform_add_devices(ixp46x_devices, |
337 | ARRAY_SIZE(ixp46x_devices)); | 345 | ARRAY_SIZE(ixp46x_devices)); |
346 | |||
347 | for (region = 0; region < 7; region++) { | ||
348 | if((*(IXP4XX_EXP_REG(0x4 * region)) & 0x200)) { | ||
349 | ixp4xx_exp_bus_size = SZ_32M; | ||
350 | break; | ||
351 | } | ||
352 | } | ||
338 | } | 353 | } |
354 | |||
355 | printk("IXP4xx: Using %uMiB expansion bus window size\n", | ||
356 | ixp4xx_exp_bus_size >> 20); | ||
339 | } | 357 | } |
340 | 358 | ||
diff --git a/arch/arm/mach-ixp4xx/coyote-pci.c b/arch/arm/mach-ixp4xx/coyote-pci.c index 60de8a94cf..e6b7fcd923 100644 --- a/arch/arm/mach-ixp4xx/coyote-pci.c +++ b/arch/arm/mach-ixp4xx/coyote-pci.c | |||
@@ -33,9 +33,6 @@ void __init coyote_pci_preinit(void) | |||
33 | set_irq_type(IRQ_COYOTE_PCI_SLOT0, IRQT_LOW); | 33 | set_irq_type(IRQ_COYOTE_PCI_SLOT0, IRQT_LOW); |
34 | set_irq_type(IRQ_COYOTE_PCI_SLOT1, IRQT_LOW); | 34 | set_irq_type(IRQ_COYOTE_PCI_SLOT1, IRQT_LOW); |
35 | 35 | ||
36 | gpio_line_isr_clear(COYOTE_PCI_SLOT0_PIN); | ||
37 | gpio_line_isr_clear(COYOTE_PCI_SLOT1_PIN); | ||
38 | |||
39 | ixp4xx_pci_preinit(); | 36 | ixp4xx_pci_preinit(); |
40 | } | 37 | } |
41 | 38 | ||
diff --git a/arch/arm/mach-ixp4xx/coyote-setup.c b/arch/arm/mach-ixp4xx/coyote-setup.c index 050c927689..679594a739 100644 --- a/arch/arm/mach-ixp4xx/coyote-setup.c +++ b/arch/arm/mach-ixp4xx/coyote-setup.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/serial.h> | 14 | #include <linux/serial.h> |
15 | #include <linux/tty.h> | 15 | #include <linux/tty.h> |
16 | #include <linux/serial_8250.h> | 16 | #include <linux/serial_8250.h> |
17 | #include <linux/slab.h> | ||
17 | 18 | ||
18 | #include <asm/types.h> | 19 | #include <asm/types.h> |
19 | #include <asm/setup.h> | 20 | #include <asm/setup.h> |
@@ -30,8 +31,6 @@ static struct flash_platform_data coyote_flash_data = { | |||
30 | }; | 31 | }; |
31 | 32 | ||
32 | static struct resource coyote_flash_resource = { | 33 | static struct resource coyote_flash_resource = { |
33 | .start = COYOTE_FLASH_BASE, | ||
34 | .end = COYOTE_FLASH_BASE + COYOTE_FLASH_SIZE - 1, | ||
35 | .flags = IORESOURCE_MEM, | 34 | .flags = IORESOURCE_MEM, |
36 | }; | 35 | }; |
37 | 36 | ||
@@ -81,6 +80,11 @@ static struct platform_device *coyote_devices[] __initdata = { | |||
81 | 80 | ||
82 | static void __init coyote_init(void) | 81 | static void __init coyote_init(void) |
83 | { | 82 | { |
83 | ixp4xx_sys_init(); | ||
84 | |||
85 | coyote_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | ||
86 | coyote_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1; | ||
87 | |||
84 | *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; | 88 | *IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE; |
85 | *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; | 89 | *IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0; |
86 | 90 | ||
@@ -91,8 +95,6 @@ static void __init coyote_init(void) | |||
91 | coyote_uart_data[0].irq = IRQ_IXP4XX_UART1; | 95 | coyote_uart_data[0].irq = IRQ_IXP4XX_UART1; |
92 | } | 96 | } |
93 | 97 | ||
94 | |||
95 | ixp4xx_sys_init(); | ||
96 | platform_add_devices(coyote_devices, ARRAY_SIZE(coyote_devices)); | 98 | platform_add_devices(coyote_devices, ARRAY_SIZE(coyote_devices)); |
97 | } | 99 | } |
98 | 100 | ||
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-setup.c b/arch/arm/mach-ixp4xx/gtwx5715-setup.c index 29a6d02fa8..0386704899 100644 --- a/arch/arm/mach-ixp4xx/gtwx5715-setup.c +++ b/arch/arm/mach-ixp4xx/gtwx5715-setup.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/serial.h> | 27 | #include <linux/serial.h> |
28 | #include <linux/tty.h> | 28 | #include <linux/tty.h> |
29 | #include <linux/serial_8250.h> | 29 | #include <linux/serial_8250.h> |
30 | #include <linux/slab.h> | ||
30 | 31 | ||
31 | #include <asm/types.h> | 32 | #include <asm/types.h> |
32 | #include <asm/setup.h> | 33 | #include <asm/setup.h> |
@@ -106,11 +107,9 @@ static struct flash_platform_data gtwx5715_flash_data = { | |||
106 | .width = 2, | 107 | .width = 2, |
107 | }; | 108 | }; |
108 | 109 | ||
109 | static struct resource gtwx5715_flash_resource = { | 110 | static struct gtw5715_flash_resource = { |
110 | .start = GTWX5715_FLASH_BASE, | ||
111 | .end = GTWX5715_FLASH_BASE + GTWX5715_FLASH_SIZE - 1, | ||
112 | .flags = IORESOURCE_MEM, | 111 | .flags = IORESOURCE_MEM, |
113 | }; | 112 | } |
114 | 113 | ||
115 | static struct platform_device gtwx5715_flash = { | 114 | static struct platform_device gtwx5715_flash = { |
116 | .name = "IXP4XX-Flash", | 115 | .name = "IXP4XX-Flash", |
@@ -129,6 +128,14 @@ static struct platform_device *gtwx5715_devices[] __initdata = { | |||
129 | 128 | ||
130 | static void __init gtwx5715_init(void) | 129 | static void __init gtwx5715_init(void) |
131 | { | 130 | { |
131 | ixp4xx_sys_init(); | ||
132 | |||
133 | if (!flash_resource) | ||
134 | printk(KERN_ERR "Could not allocate flash resource\n"); | ||
135 | |||
136 | gtwx5715_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | ||
137 | gtwx5715_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_8M - 1; | ||
138 | |||
132 | platform_add_devices(gtwx5715_devices, ARRAY_SIZE(gtwx5715_devices)); | 139 | platform_add_devices(gtwx5715_devices, ARRAY_SIZE(gtwx5715_devices)); |
133 | } | 140 | } |
134 | 141 | ||
diff --git a/arch/arm/mach-ixp4xx/ixdp425-pci.c b/arch/arm/mach-ixp4xx/ixdp425-pci.c index f9a1d3e7d6..da415d5d7f 100644 --- a/arch/arm/mach-ixp4xx/ixdp425-pci.c +++ b/arch/arm/mach-ixp4xx/ixdp425-pci.c | |||
@@ -32,11 +32,6 @@ void __init ixdp425_pci_preinit(void) | |||
32 | set_irq_type(IRQ_IXDP425_PCI_INTC, IRQT_LOW); | 32 | set_irq_type(IRQ_IXDP425_PCI_INTC, IRQT_LOW); |
33 | set_irq_type(IRQ_IXDP425_PCI_INTD, IRQT_LOW); | 33 | set_irq_type(IRQ_IXDP425_PCI_INTD, IRQT_LOW); |
34 | 34 | ||
35 | gpio_line_isr_clear(IXDP425_PCI_INTA_PIN); | ||
36 | gpio_line_isr_clear(IXDP425_PCI_INTB_PIN); | ||
37 | gpio_line_isr_clear(IXDP425_PCI_INTC_PIN); | ||
38 | gpio_line_isr_clear(IXDP425_PCI_INTD_PIN); | ||
39 | |||
40 | ixp4xx_pci_preinit(); | 35 | ixp4xx_pci_preinit(); |
41 | } | 36 | } |
42 | 37 | ||
diff --git a/arch/arm/mach-ixp4xx/ixdp425-setup.c b/arch/arm/mach-ixp4xx/ixdp425-setup.c index 3a22d84e10..c2e105c89c 100644 --- a/arch/arm/mach-ixp4xx/ixdp425-setup.c +++ b/arch/arm/mach-ixp4xx/ixdp425-setup.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/serial.h> | 14 | #include <linux/serial.h> |
15 | #include <linux/tty.h> | 15 | #include <linux/tty.h> |
16 | #include <linux/serial_8250.h> | 16 | #include <linux/serial_8250.h> |
17 | #include <linux/slab.h> | ||
17 | 18 | ||
18 | #include <asm/types.h> | 19 | #include <asm/types.h> |
19 | #include <asm/setup.h> | 20 | #include <asm/setup.h> |
@@ -30,8 +31,6 @@ static struct flash_platform_data ixdp425_flash_data = { | |||
30 | }; | 31 | }; |
31 | 32 | ||
32 | static struct resource ixdp425_flash_resource = { | 33 | static struct resource ixdp425_flash_resource = { |
33 | .start = IXDP425_FLASH_BASE, | ||
34 | .end = IXDP425_FLASH_BASE + IXDP425_FLASH_SIZE - 1, | ||
35 | .flags = IORESOURCE_MEM, | 34 | .flags = IORESOURCE_MEM, |
36 | }; | 35 | }; |
37 | 36 | ||
@@ -108,17 +107,13 @@ static struct platform_device *ixdp425_devices[] __initdata = { | |||
108 | &ixdp425_uart | 107 | &ixdp425_uart |
109 | }; | 108 | }; |
110 | 109 | ||
111 | |||
112 | static void __init ixdp425_init(void) | 110 | static void __init ixdp425_init(void) |
113 | { | 111 | { |
114 | ixp4xx_sys_init(); | 112 | ixp4xx_sys_init(); |
115 | 113 | ||
116 | /* | 114 | ixdp425_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); |
117 | * IXP465 has 32MB window | 115 | ixdp425_flash_resource.end = |
118 | */ | 116 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; |
119 | if (machine_is_ixdp465()) { | ||
120 | ixdp425_flash_resource.end += IXDP425_FLASH_SIZE; | ||
121 | } | ||
122 | 117 | ||
123 | platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices)); | 118 | platform_add_devices(ixdp425_devices, ARRAY_SIZE(ixdp425_devices)); |
124 | } | 119 | } |
diff --git a/arch/arm/mach-ixp4xx/ixdpg425-pci.c b/arch/arm/mach-ixp4xx/ixdpg425-pci.c index fe5e7660de..526fb6175b 100644 --- a/arch/arm/mach-ixp4xx/ixdpg425-pci.c +++ b/arch/arm/mach-ixp4xx/ixdpg425-pci.c | |||
@@ -32,9 +32,6 @@ void __init ixdpg425_pci_preinit(void) | |||
32 | set_irq_type(IRQ_IXP4XX_GPIO6, IRQT_LOW); | 32 | set_irq_type(IRQ_IXP4XX_GPIO6, IRQT_LOW); |
33 | set_irq_type(IRQ_IXP4XX_GPIO7, IRQT_LOW); | 33 | set_irq_type(IRQ_IXP4XX_GPIO7, IRQT_LOW); |
34 | 34 | ||
35 | gpio_line_isr_clear(6); | ||
36 | gpio_line_isr_clear(7); | ||
37 | |||
38 | ixp4xx_pci_preinit(); | 35 | ixp4xx_pci_preinit(); |
39 | } | 36 | } |
40 | 37 | ||
diff --git a/arch/arm/mach-ixp4xx/nas100d-pci.c b/arch/arm/mach-ixp4xx/nas100d-pci.c new file mode 100644 index 0000000000..26b7c001ff --- /dev/null +++ b/arch/arm/mach-ixp4xx/nas100d-pci.c | |||
@@ -0,0 +1,71 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ixp4xx/nas100d-pci.c | ||
3 | * | ||
4 | * NAS 100d board-level PCI initialization | ||
5 | * | ||
6 | * based on ixdp425-pci.c: | ||
7 | * Copyright (C) 2002 Intel Corporation. | ||
8 | * Copyright (C) 2003-2004 MontaVista Software, Inc. | ||
9 | * | ||
10 | * Maintainer: http://www.nslu2-linux.org/ | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or modify | ||
13 | * it under the terms of the GNU General Public License version 2 as | ||
14 | * published by the Free Software Foundation. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include <linux/config.h> | ||
19 | #include <linux/pci.h> | ||
20 | #include <linux/init.h> | ||
21 | |||
22 | #include <asm/mach/pci.h> | ||
23 | #include <asm/mach-types.h> | ||
24 | |||
25 | void __init nas100d_pci_preinit(void) | ||
26 | { | ||
27 | set_irq_type(IRQ_NAS100D_PCI_INTA, IRQT_LOW); | ||
28 | set_irq_type(IRQ_NAS100D_PCI_INTB, IRQT_LOW); | ||
29 | set_irq_type(IRQ_NAS100D_PCI_INTC, IRQT_LOW); | ||
30 | set_irq_type(IRQ_NAS100D_PCI_INTD, IRQT_LOW); | ||
31 | set_irq_type(IRQ_NAS100D_PCI_INTE, IRQT_LOW); | ||
32 | |||
33 | ixp4xx_pci_preinit(); | ||
34 | } | ||
35 | |||
36 | static int __init nas100d_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | ||
37 | { | ||
38 | static int pci_irq_table[NAS100D_PCI_MAX_DEV][NAS100D_PCI_IRQ_LINES] = | ||
39 | { | ||
40 | { IRQ_NAS100D_PCI_INTA, -1, -1 }, | ||
41 | { IRQ_NAS100D_PCI_INTB, -1, -1 }, | ||
42 | { IRQ_NAS100D_PCI_INTC, IRQ_NAS100D_PCI_INTD, IRQ_NAS100D_PCI_INTE }, | ||
43 | }; | ||
44 | |||
45 | int irq = -1; | ||
46 | |||
47 | if (slot >= 1 && slot <= NAS100D_PCI_MAX_DEV && | ||
48 | pin >= 1 && pin <= NAS100D_PCI_IRQ_LINES) | ||
49 | irq = pci_irq_table[slot-1][pin-1]; | ||
50 | |||
51 | return irq; | ||
52 | } | ||
53 | |||
54 | struct hw_pci __initdata nas100d_pci = { | ||
55 | .nr_controllers = 1, | ||
56 | .preinit = nas100d_pci_preinit, | ||
57 | .swizzle = pci_std_swizzle, | ||
58 | .setup = ixp4xx_setup, | ||
59 | .scan = ixp4xx_scan_bus, | ||
60 | .map_irq = nas100d_map_irq, | ||
61 | }; | ||
62 | |||
63 | int __init nas100d_pci_init(void) | ||
64 | { | ||
65 | if (machine_is_nas100d()) | ||
66 | pci_common_init(&nas100d_pci); | ||
67 | |||
68 | return 0; | ||
69 | } | ||
70 | |||
71 | subsys_initcall(nas100d_pci_init); | ||
diff --git a/arch/arm/mach-ixp4xx/nas100d-power.c b/arch/arm/mach-ixp4xx/nas100d-power.c new file mode 100644 index 0000000000..2bec69bfa7 --- /dev/null +++ b/arch/arm/mach-ixp4xx/nas100d-power.c | |||
@@ -0,0 +1,67 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ixp4xx/nas100d-power.c | ||
3 | * | ||
4 | * NAS 100d Power/Reset driver | ||
5 | * | ||
6 | * Copyright (C) 2005 Tower Technologies | ||
7 | * | ||
8 | * based on nas100d-io.c | ||
9 | * Copyright (C) 2004 Karen Spearel | ||
10 | * | ||
11 | * Author: Alessandro Zummo <a.zummo@towertech.it> | ||
12 | * Maintainers: http://www.nslu2-linux.org/ | ||
13 | * | ||
14 | * This program is free software; you can redistribute it and/or modify | ||
15 | * it under the terms of the GNU General Public License version 2 as | ||
16 | * published by the Free Software Foundation. | ||
17 | * | ||
18 | */ | ||
19 | |||
20 | #include <linux/module.h> | ||
21 | #include <linux/reboot.h> | ||
22 | #include <linux/interrupt.h> | ||
23 | |||
24 | #include <asm/mach-types.h> | ||
25 | |||
26 | extern void ctrl_alt_del(void); | ||
27 | |||
28 | static irqreturn_t nas100d_reset_handler(int irq, void *dev_id, struct pt_regs *regs) | ||
29 | { | ||
30 | /* Signal init to do the ctrlaltdel action, this will bypass init if | ||
31 | * it hasn't started and do a kernel_restart. | ||
32 | */ | ||
33 | ctrl_alt_del(); | ||
34 | |||
35 | return IRQ_HANDLED; | ||
36 | } | ||
37 | |||
38 | static int __init nas100d_power_init(void) | ||
39 | { | ||
40 | if (!(machine_is_nas100d())) | ||
41 | return 0; | ||
42 | |||
43 | set_irq_type(NAS100D_RB_IRQ, IRQT_LOW); | ||
44 | |||
45 | if (request_irq(NAS100D_RB_IRQ, &nas100d_reset_handler, | ||
46 | SA_INTERRUPT, "NAS100D reset button", NULL) < 0) { | ||
47 | |||
48 | printk(KERN_DEBUG "Reset Button IRQ %d not available\n", | ||
49 | NAS100D_RB_IRQ); | ||
50 | |||
51 | return -EIO; | ||
52 | } | ||
53 | |||
54 | return 0; | ||
55 | } | ||
56 | |||
57 | static void __exit nas100d_power_exit(void) | ||
58 | { | ||
59 | free_irq(NAS100D_RB_IRQ, NULL); | ||
60 | } | ||
61 | |||
62 | module_init(nas100d_power_init); | ||
63 | module_exit(nas100d_power_exit); | ||
64 | |||
65 | MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>"); | ||
66 | MODULE_DESCRIPTION("NAS100D Power/Reset driver"); | ||
67 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/arm/mach-ixp4xx/nas100d-setup.c b/arch/arm/mach-ixp4xx/nas100d-setup.c new file mode 100644 index 0000000000..49998a8bd4 --- /dev/null +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c | |||
@@ -0,0 +1,135 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-ixp4xx/nas100d-setup.c | ||
3 | * | ||
4 | * NAS 100d board-setup | ||
5 | * | ||
6 | * based ixdp425-setup.c: | ||
7 | * Copyright (C) 2003-2004 MontaVista Software, Inc. | ||
8 | * | ||
9 | * Author: Alessandro Zummo <a.zummo@towertech.it> | ||
10 | * Author: Rod Whitby <rod@whitby.id.au> | ||
11 | * Maintainers: http://www.nslu2-linux.org/ | ||
12 | * | ||
13 | */ | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/serial.h> | ||
17 | #include <linux/serial_8250.h> | ||
18 | |||
19 | #include <asm/mach-types.h> | ||
20 | #include <asm/mach/arch.h> | ||
21 | #include <asm/mach/flash.h> | ||
22 | |||
23 | static struct flash_platform_data nas100d_flash_data = { | ||
24 | .map_name = "cfi_probe", | ||
25 | .width = 2, | ||
26 | }; | ||
27 | |||
28 | static struct resource nas100d_flash_resource = { | ||
29 | .flags = IORESOURCE_MEM, | ||
30 | }; | ||
31 | |||
32 | static struct platform_device nas100d_flash = { | ||
33 | .name = "IXP4XX-Flash", | ||
34 | .id = 0, | ||
35 | .dev.platform_data = &nas100d_flash_data, | ||
36 | .num_resources = 1, | ||
37 | .resource = &nas100d_flash_resource, | ||
38 | }; | ||
39 | |||
40 | static struct ixp4xx_i2c_pins nas100d_i2c_gpio_pins = { | ||
41 | .sda_pin = NAS100D_SDA_PIN, | ||
42 | .scl_pin = NAS100D_SCL_PIN, | ||
43 | }; | ||
44 | |||
45 | static struct platform_device nas100d_i2c_controller = { | ||
46 | .name = "IXP4XX-I2C", | ||
47 | .id = 0, | ||
48 | .dev.platform_data = &nas100d_i2c_gpio_pins, | ||
49 | .num_resources = 0, | ||
50 | }; | ||
51 | |||
52 | static struct resource nas100d_uart_resources[] = { | ||
53 | { | ||
54 | .start = IXP4XX_UART1_BASE_PHYS, | ||
55 | .end = IXP4XX_UART1_BASE_PHYS + 0x0fff, | ||
56 | .flags = IORESOURCE_MEM, | ||
57 | }, | ||
58 | { | ||
59 | .start = IXP4XX_UART2_BASE_PHYS, | ||
60 | .end = IXP4XX_UART2_BASE_PHYS + 0x0fff, | ||
61 | .flags = IORESOURCE_MEM, | ||
62 | } | ||
63 | }; | ||
64 | |||
65 | static struct plat_serial8250_port nas100d_uart_data[] = { | ||
66 | { | ||
67 | .mapbase = IXP4XX_UART1_BASE_PHYS, | ||
68 | .membase = (char *)IXP4XX_UART1_BASE_VIRT + REG_OFFSET, | ||
69 | .irq = IRQ_IXP4XX_UART1, | ||
70 | .flags = UPF_BOOT_AUTOCONF, | ||
71 | .iotype = UPIO_MEM, | ||
72 | .regshift = 2, | ||
73 | .uartclk = IXP4XX_UART_XTAL, | ||
74 | }, | ||
75 | { | ||
76 | .mapbase = IXP4XX_UART2_BASE_PHYS, | ||
77 | .membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET, | ||
78 | .irq = IRQ_IXP4XX_UART2, | ||
79 | .flags = UPF_BOOT_AUTOCONF, | ||
80 | .iotype = UPIO_MEM, | ||
81 | .regshift = 2, | ||
82 | .uartclk = IXP4XX_UART_XTAL, | ||
83 | }, | ||
84 | { } | ||
85 | }; | ||
86 | |||
87 | static struct platform_device nas100d_uart = { | ||
88 | .name = "serial8250", | ||
89 | .id = PLAT8250_DEV_PLATFORM, | ||
90 | .dev.platform_data = nas100d_uart_data, | ||
91 | .num_resources = 2, | ||
92 | .resource = nas100d_uart_resources, | ||
93 | }; | ||
94 | |||
95 | static struct platform_device *nas100d_devices[] __initdata = { | ||
96 | &nas100d_i2c_controller, | ||
97 | &nas100d_flash, | ||
98 | &nas100d_uart, | ||
99 | }; | ||
100 | |||
101 | static void nas100d_power_off(void) | ||
102 | { | ||
103 | /* This causes the box to drop the power and go dead. */ | ||
104 | |||
105 | /* enable the pwr cntl gpio */ | ||
106 | gpio_line_config(NAS100D_PO_GPIO, IXP4XX_GPIO_OUT); | ||
107 | |||
108 | /* do the deed */ | ||
109 | gpio_line_set(NAS100D_PO_GPIO, IXP4XX_GPIO_HIGH); | ||
110 | } | ||
111 | |||
112 | static void __init nas100d_init(void) | ||
113 | { | ||
114 | ixp4xx_sys_init(); | ||
115 | |||
116 | nas100d_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); | ||
117 | nas100d_flash_resource.end = | ||
118 | IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; | ||
119 | |||
120 | pm_power_off = nas100d_power_off; | ||
121 | |||
122 | platform_add_devices(nas100d_devices, ARRAY_SIZE(nas100d_devices)); | ||
123 | } | ||
124 | |||
125 | MACHINE_START(NAS100D, "Iomega NAS 100d") | ||
126 | /* Maintainer: www.nslu2-linux.org */ | ||
127 | .phys_ram = PHYS_OFFSET, | ||
128 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | ||
129 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, | ||
130 | .boot_params = 0x00000100, | ||
131 | .map_io = ixp4xx_map_io, | ||
132 | .init_irq = ixp4xx_init_irq, | ||
133 | .timer = &ixp4xx_timer, | ||
134 | .init_machine = nas100d_init, | ||
135 | MACHINE_END | ||
diff --git a/arch/arm/mach-ixp4xx/nslu2-pci.c b/arch/arm/mach-ixp4xx/nslu2-pci.c index a575f2e0b2..ece860444d 100644 --- a/arch/arm/mach-ixp4xx/nslu2-pci.c +++ b/arch/arm/mach-ixp4xx/nslu2-pci.c | |||
@@ -28,14 +28,6 @@ void __init nslu2_pci_preinit(void) | |||
28 | set_irq_type(IRQ_NSLU2_PCI_INTB, IRQT_LOW); | 28 | set_irq_type(IRQ_NSLU2_PCI_INTB, IRQT_LOW); |
29 | set_irq_type(IRQ_NSLU2_PCI_INTC, IRQT_LOW); | 29 | set_irq_type(IRQ_NSLU2_PCI_INTC, IRQT_LOW); |
30 | 30 | ||
31 | gpio_line_isr_clear(NSLU2_PCI_INTA_PIN); | ||
32 | gpio_line_isr_clear(NSLU2_PCI_INTB_PIN); | ||
33 | gpio_line_isr_clear(NSLU2_PCI_INTC_PIN); | ||
34 | |||
35 | /* INTD is not configured as GPIO is used | ||
36 | * for the power input button. | ||
37 | */ | ||
38 | |||
39 | ixp4xx_pci_preinit(); | 31 | ixp4xx_pci_preinit(); |
40 | } | 32 | } |
41 | 33 | ||
diff --git a/arch/arm/mach-ixp4xx/nslu2-power.c b/arch/arm/mach-ixp4xx/nslu2-power.c index 18fbc8c0fb..b0ad9e901f 100644 --- a/arch/arm/mach-ixp4xx/nslu2-power.c +++ b/arch/arm/mach-ixp4xx/nslu2-power.c | |||
@@ -54,9 +54,6 @@ static int __init nslu2_power_init(void) | |||
54 | set_irq_type(NSLU2_RB_IRQ, IRQT_LOW); | 54 | set_irq_type(NSLU2_RB_IRQ, IRQT_LOW); |
55 | set_irq_type(NSLU2_PB_IRQ, IRQT_HIGH); | 55 | set_irq_type(NSLU2_PB_IRQ, IRQT_HIGH); |
56 | 56 | ||
57 | gpio_line_isr_clear(NSLU2_RB_GPIO); | ||
58 | gpio_line_isr_clear(NSLU2_PB_GPIO); | ||
59 | |||
60 | if (request_irq(NSLU2_RB_IRQ, &nslu2_reset_handler, | 57 | if (request_irq(NSLU2_RB_IRQ, &nslu2_reset_handler, |
61 | SA_INTERRUPT, "NSLU2 reset button", NULL) < 0) { | 58 | SA_INTERRUPT, "NSLU2 reset button", NULL) < 0) { |
62 | 59 | ||
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 540b20d78c..5c975eb5c3 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/platform_device.h> | 20 | #include <linux/platform_device.h> |
21 | #include <linux/notifier.h> | 21 | #include <linux/notifier.h> |
22 | #include <linux/clk.h> | ||
22 | 23 | ||
23 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
24 | #include <asm/mach-types.h> | 25 | #include <asm/mach-types.h> |
@@ -30,7 +31,6 @@ | |||
30 | #include <asm/arch/usb.h> | 31 | #include <asm/arch/usb.h> |
31 | #include <asm/arch/board.h> | 32 | #include <asm/arch/board.h> |
32 | #include <asm/arch/common.h> | 33 | #include <asm/arch/common.h> |
33 | #include <asm/hardware/clock.h> | ||
34 | 34 | ||
35 | static void __init omap_generic_init_irq(void) | 35 | static void __init omap_generic_init_irq(void) |
36 | { | 36 | { |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index bd900b7ab3..92ff5dc073 100644 --- a/arch/arm/mach-omap1/board-perseus2.c +++ b/arch/arm/mach-omap1/board-perseus2.c | |||
@@ -184,7 +184,7 @@ static void __init omap_perseus2_map_io(void) | |||
184 | omap_writel(0x00000088, OMAP730_FLASH_ACFG_0); | 184 | omap_writel(0x00000088, OMAP730_FLASH_ACFG_0); |
185 | 185 | ||
186 | /* | 186 | /* |
187 | * Ethernet support trough the debug board | 187 | * Ethernet support through the debug board |
188 | * CS1 timings setup | 188 | * CS1 timings setup |
189 | */ | 189 | */ |
190 | omap_writel(0x0000fff3, OMAP730_FLASH_CFG_1); | 190 | omap_writel(0x0000fff3, OMAP730_FLASH_CFG_1); |
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c index 4277eee44e..9d862f86bb 100644 --- a/arch/arm/mach-omap1/clock.c +++ b/arch/arm/mach-omap1/clock.c | |||
@@ -16,9 +16,9 @@ | |||
16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
17 | #include <linux/errno.h> | 17 | #include <linux/errno.h> |
18 | #include <linux/err.h> | 18 | #include <linux/err.h> |
19 | #include <linux/clk.h> | ||
19 | 20 | ||
20 | #include <asm/io.h> | 21 | #include <asm/io.h> |
21 | #include <asm/hardware/clock.h> | ||
22 | 22 | ||
23 | #include <asm/arch/usb.h> | 23 | #include <asm/arch/usb.h> |
24 | #include <asm/arch/clock.h> | 24 | #include <asm/arch/clock.h> |
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c index 6810cfb844..7a68f098a0 100644 --- a/arch/arm/mach-omap1/serial.c +++ b/arch/arm/mach-omap1/serial.c | |||
@@ -17,10 +17,10 @@ | |||
17 | #include <linux/tty.h> | 17 | #include <linux/tty.h> |
18 | #include <linux/serial_8250.h> | 18 | #include <linux/serial_8250.h> |
19 | #include <linux/serial_reg.h> | 19 | #include <linux/serial_reg.h> |
20 | #include <linux/clk.h> | ||
20 | 21 | ||
21 | #include <asm/io.h> | 22 | #include <asm/io.h> |
22 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
23 | #include <asm/hardware/clock.h> | ||
24 | 24 | ||
25 | #include <asm/arch/board.h> | 25 | #include <asm/arch/board.h> |
26 | #include <asm/arch/mux.h> | 26 | #include <asm/arch/mux.h> |
@@ -252,9 +252,8 @@ static void __init omap_serial_set_port_wakeup(int gpio_nr) | |||
252 | return; | 252 | return; |
253 | } | 253 | } |
254 | omap_set_gpio_direction(gpio_nr, 1); | 254 | omap_set_gpio_direction(gpio_nr, 1); |
255 | set_irq_type(OMAP_GPIO_IRQ(gpio_nr), IRQT_RISING); | ||
256 | ret = request_irq(OMAP_GPIO_IRQ(gpio_nr), &omap_serial_wake_interrupt, | 255 | ret = request_irq(OMAP_GPIO_IRQ(gpio_nr), &omap_serial_wake_interrupt, |
257 | 0, "serial wakeup", NULL); | 256 | SA_TRIGGER_RISING, "serial wakeup", NULL); |
258 | if (ret) { | 257 | if (ret) { |
259 | omap_free_gpio(gpio_nr); | 258 | omap_free_gpio(gpio_nr); |
260 | printk(KERN_ERR "No interrupt for UART wake GPIO: %i\n", | 259 | printk(KERN_ERR "No interrupt for UART wake GPIO: %i\n", |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index 85818d9f26..5407b95491 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -22,10 +22,10 @@ | |||
22 | #include <linux/list.h> | 22 | #include <linux/list.h> |
23 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
24 | #include <linux/delay.h> | 24 | #include <linux/delay.h> |
25 | #include <linux/clk.h> | ||
25 | 26 | ||
26 | #include <asm/io.h> | 27 | #include <asm/io.h> |
27 | 28 | ||
28 | #include <asm/hardware/clock.h> | ||
29 | #include <asm/arch/clock.h> | 29 | #include <asm/arch/clock.h> |
30 | #include <asm/arch/sram.h> | 30 | #include <asm/arch/sram.h> |
31 | #include <asm/arch/prcm.h> | 31 | #include <asm/arch/prcm.h> |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index f4df04fe1d..e1bd46a96e 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
@@ -16,9 +16,9 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/serial_8250.h> | 17 | #include <linux/serial_8250.h> |
18 | #include <linux/serial_reg.h> | 18 | #include <linux/serial_reg.h> |
19 | #include <linux/clk.h> | ||
19 | 20 | ||
20 | #include <asm/io.h> | 21 | #include <asm/io.h> |
21 | #include <asm/hardware/clock.h> | ||
22 | 22 | ||
23 | #include <asm/arch/common.h> | 23 | #include <asm/arch/common.h> |
24 | #include <asm/arch/board.h> | 24 | #include <asm/arch/board.h> |
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c index 9ec1144320..23d36b1c40 100644 --- a/arch/arm/mach-omap2/timer-gp.c +++ b/arch/arm/mach-omap2/timer-gp.c | |||
@@ -21,10 +21,11 @@ | |||
21 | #include <linux/time.h> | 21 | #include <linux/time.h> |
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <linux/err.h> | 23 | #include <linux/err.h> |
24 | #include <linux/clk.h> | ||
25 | |||
24 | #include <asm/mach/time.h> | 26 | #include <asm/mach/time.h> |
25 | #include <asm/delay.h> | 27 | #include <asm/delay.h> |
26 | #include <asm/io.h> | 28 | #include <asm/io.h> |
27 | #include <asm/hardware/clock.h> | ||
28 | 29 | ||
29 | #define OMAP2_GP_TIMER1_BASE 0x48028000 | 30 | #define OMAP2_GP_TIMER1_BASE 0x48028000 |
30 | #define OMAP2_GP_TIMER2_BASE 0x4802a000 | 31 | #define OMAP2_GP_TIMER2_BASE 0x4802a000 |
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index 2a58499c09..c1d77f5b38 100644 --- a/arch/arm/mach-pxa/Kconfig +++ b/arch/arm/mach-pxa/Kconfig | |||
@@ -112,12 +112,14 @@ config IWMMXT | |||
112 | config PXA_SHARP_C7xx | 112 | config PXA_SHARP_C7xx |
113 | bool | 113 | bool |
114 | select PXA_SSP | 114 | select PXA_SSP |
115 | select SHARPSL_PM | ||
115 | help | 116 | help |
116 | Enable support for all Sharp C7xx models | 117 | Enable support for all Sharp C7xx models |
117 | 118 | ||
118 | config PXA_SHARP_Cxx00 | 119 | config PXA_SHARP_Cxx00 |
119 | bool | 120 | bool |
120 | select PXA_SSP | 121 | select PXA_SSP |
122 | select SHARPSL_PM | ||
121 | help | 123 | help |
122 | Enable common support for Sharp Cxx00 models | 124 | Enable common support for Sharp Cxx00 models |
123 | 125 | ||
diff --git a/arch/arm/mach-pxa/akita-ioexp.c b/arch/arm/mach-pxa/akita-ioexp.c index f6d73cc01f..1b398742ab 100644 --- a/arch/arm/mach-pxa/akita-ioexp.c +++ b/arch/arm/mach-pxa/akita-ioexp.c | |||
@@ -124,17 +124,16 @@ static int max7310_detach_client(struct i2c_client *client) | |||
124 | } | 124 | } |
125 | 125 | ||
126 | static struct i2c_driver max7310_i2c_driver = { | 126 | static struct i2c_driver max7310_i2c_driver = { |
127 | .owner = THIS_MODULE, | 127 | .driver = { |
128 | .name = "akita-max7310", | 128 | .name = "akita-max7310", |
129 | }, | ||
129 | .id = I2C_DRIVERID_AKITAIOEXP, | 130 | .id = I2C_DRIVERID_AKITAIOEXP, |
130 | .flags = I2C_DF_NOTIFY, | ||
131 | .attach_adapter = max7310_attach_adapter, | 131 | .attach_adapter = max7310_attach_adapter, |
132 | .detach_client = max7310_detach_client, | 132 | .detach_client = max7310_detach_client, |
133 | }; | 133 | }; |
134 | 134 | ||
135 | static struct i2c_client max7310_template = { | 135 | static struct i2c_client max7310_template = { |
136 | name: "akita-max7310", | 136 | name: "akita-max7310", |
137 | flags: I2C_CLIENT_ALLOW_USE, | ||
138 | driver: &max7310_i2c_driver, | 137 | driver: &max7310_i2c_driver, |
139 | }; | 138 | }; |
140 | 139 | ||
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 100fb31b51..5a7b873f29 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -213,15 +213,14 @@ static int corgi_mci_init(struct device *dev, irqreturn_t (*corgi_detect_int)(in | |||
213 | 213 | ||
214 | corgi_mci_platform_data.detect_delay = msecs_to_jiffies(250); | 214 | corgi_mci_platform_data.detect_delay = msecs_to_jiffies(250); |
215 | 215 | ||
216 | err = request_irq(CORGI_IRQ_GPIO_nSD_DETECT, corgi_detect_int, SA_INTERRUPT, | 216 | err = request_irq(CORGI_IRQ_GPIO_nSD_DETECT, corgi_detect_int, |
217 | "MMC card detect", data); | 217 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
218 | "MMC card detect", data); | ||
218 | if (err) { | 219 | if (err) { |
219 | printk(KERN_ERR "corgi_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); | 220 | printk(KERN_ERR "corgi_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); |
220 | return -1; | 221 | return -1; |
221 | } | 222 | } |
222 | 223 | ||
223 | set_irq_type(CORGI_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE); | ||
224 | |||
225 | return 0; | 224 | return 0; |
226 | } | 225 | } |
227 | 226 | ||
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c index 599be14754..7a1ab73e9e 100644 --- a/arch/arm/mach-pxa/corgi_pm.c +++ b/arch/arm/mach-pxa/corgi_pm.c | |||
@@ -33,19 +33,7 @@ static void corgi_charger_init(void) | |||
33 | pxa_gpio_mode(CORGI_GPIO_CHRG_ON | GPIO_OUT); | 33 | pxa_gpio_mode(CORGI_GPIO_CHRG_ON | GPIO_OUT); |
34 | pxa_gpio_mode(CORGI_GPIO_CHRG_UKN | GPIO_OUT); | 34 | pxa_gpio_mode(CORGI_GPIO_CHRG_UKN | GPIO_OUT); |
35 | pxa_gpio_mode(CORGI_GPIO_KEY_INT | GPIO_IN); | 35 | pxa_gpio_mode(CORGI_GPIO_KEY_INT | GPIO_IN); |
36 | } | 36 | sharpsl_pm_pxa_init(); |
37 | |||
38 | static void corgi_charge_led(int val) | ||
39 | { | ||
40 | if (val == SHARPSL_LED_ERROR) { | ||
41 | dev_dbg(sharpsl_pm.dev, "Charge LED Error\n"); | ||
42 | } else if (val == SHARPSL_LED_ON) { | ||
43 | dev_dbg(sharpsl_pm.dev, "Charge LED On\n"); | ||
44 | GPSR0 = GPIO_bit(CORGI_GPIO_LED_ORANGE); | ||
45 | } else { | ||
46 | dev_dbg(sharpsl_pm.dev, "Charge LED Off\n"); | ||
47 | GPCR0 = GPIO_bit(CORGI_GPIO_LED_ORANGE); | ||
48 | } | ||
49 | } | 37 | } |
50 | 38 | ||
51 | static void corgi_measure_temp(int on) | 39 | static void corgi_measure_temp(int on) |
@@ -138,15 +126,15 @@ static int corgi_should_wakeup(unsigned int resume_on_alarm) | |||
138 | dev_dbg(sharpsl_pm.dev, "GPLR0 = %x,%x\n", GPLR0, PEDR); | 126 | dev_dbg(sharpsl_pm.dev, "GPLR0 = %x,%x\n", GPLR0, PEDR); |
139 | 127 | ||
140 | if ((PEDR & GPIO_bit(CORGI_GPIO_AC_IN))) { | 128 | if ((PEDR & GPIO_bit(CORGI_GPIO_AC_IN))) { |
141 | if (STATUS_AC_IN()) { | 129 | if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { |
142 | /* charge on */ | 130 | /* charge on */ |
143 | dev_dbg(sharpsl_pm.dev, "ac insert\n"); | 131 | dev_dbg(sharpsl_pm.dev, "ac insert\n"); |
144 | sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG; | 132 | sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG; |
145 | } else { | 133 | } else { |
146 | /* charge off */ | 134 | /* charge off */ |
147 | dev_dbg(sharpsl_pm.dev, "ac remove\n"); | 135 | dev_dbg(sharpsl_pm.dev, "ac remove\n"); |
148 | CHARGE_LED_OFF(); | 136 | sharpsl_pm_led(SHARPSL_LED_OFF); |
149 | CHARGE_OFF(); | 137 | sharpsl_pm.machinfo->charge(0); |
150 | sharpsl_pm.charge_mode = CHRG_OFF; | 138 | sharpsl_pm.charge_mode = CHRG_OFF; |
151 | } | 139 | } |
152 | } | 140 | } |
@@ -172,23 +160,39 @@ static unsigned long corgi_charger_wakeup(void) | |||
172 | return ~GPLR0 & ( GPIO_bit(CORGI_GPIO_AC_IN) | GPIO_bit(CORGI_GPIO_KEY_INT) | GPIO_bit(CORGI_GPIO_WAKEUP) ); | 160 | return ~GPLR0 & ( GPIO_bit(CORGI_GPIO_AC_IN) | GPIO_bit(CORGI_GPIO_KEY_INT) | GPIO_bit(CORGI_GPIO_WAKEUP) ); |
173 | } | 161 | } |
174 | 162 | ||
175 | static int corgi_acin_status(void) | 163 | unsigned long corgipm_read_devdata(int type) |
176 | { | 164 | { |
177 | return ((GPLR(CORGI_GPIO_AC_IN) & GPIO_bit(CORGI_GPIO_AC_IN)) != 0); | 165 | switch(type) { |
166 | case SHARPSL_STATUS_ACIN: | ||
167 | return ((GPLR(CORGI_GPIO_AC_IN) & GPIO_bit(CORGI_GPIO_AC_IN)) != 0); | ||
168 | case SHARPSL_STATUS_LOCK: | ||
169 | return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batlock); | ||
170 | case SHARPSL_STATUS_CHRGFULL: | ||
171 | return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batfull); | ||
172 | case SHARPSL_STATUS_FATAL: | ||
173 | return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_fatal); | ||
174 | case SHARPSL_ACIN_VOLT: | ||
175 | return sharpsl_pm_pxa_read_max1111(MAX1111_ACIN_VOLT); | ||
176 | case SHARPSL_BATT_TEMP: | ||
177 | return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_TEMP); | ||
178 | case SHARPSL_BATT_VOLT: | ||
179 | default: | ||
180 | return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_VOLT); | ||
181 | } | ||
178 | } | 182 | } |
179 | 183 | ||
180 | static struct sharpsl_charger_machinfo corgi_pm_machinfo = { | 184 | static struct sharpsl_charger_machinfo corgi_pm_machinfo = { |
181 | .init = corgi_charger_init, | 185 | .init = corgi_charger_init, |
186 | .exit = sharpsl_pm_pxa_remove, | ||
182 | .gpio_batlock = CORGI_GPIO_BAT_COVER, | 187 | .gpio_batlock = CORGI_GPIO_BAT_COVER, |
183 | .gpio_acin = CORGI_GPIO_AC_IN, | 188 | .gpio_acin = CORGI_GPIO_AC_IN, |
184 | .gpio_batfull = CORGI_GPIO_CHRG_FULL, | 189 | .gpio_batfull = CORGI_GPIO_CHRG_FULL, |
185 | .status_acin = corgi_acin_status, | ||
186 | .discharge = corgi_discharge, | 190 | .discharge = corgi_discharge, |
187 | .charge = corgi_charge, | 191 | .charge = corgi_charge, |
188 | .chargeled = corgi_charge_led, | ||
189 | .measure_temp = corgi_measure_temp, | 192 | .measure_temp = corgi_measure_temp, |
190 | .presuspend = corgi_presuspend, | 193 | .presuspend = corgi_presuspend, |
191 | .postsuspend = corgi_postsuspend, | 194 | .postsuspend = corgi_postsuspend, |
195 | .read_devdata = corgipm_read_devdata, | ||
192 | .charger_wakeup = corgi_charger_wakeup, | 196 | .charger_wakeup = corgi_charger_wakeup, |
193 | .should_wakeup = corgi_should_wakeup, | 197 | .should_wakeup = corgi_should_wakeup, |
194 | .bat_levels = 40, | 198 | .bat_levels = 40, |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 07892f4012..8da9d3efe9 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <asm/arch/pxafb.h> | 43 | #include <asm/arch/pxafb.h> |
44 | #include <asm/arch/mmc.h> | 44 | #include <asm/arch/mmc.h> |
45 | #include <asm/arch/irda.h> | 45 | #include <asm/arch/irda.h> |
46 | #include <asm/arch/ohci.h> | ||
46 | 47 | ||
47 | #include "generic.h" | 48 | #include "generic.h" |
48 | 49 | ||
@@ -393,6 +394,25 @@ static struct platform_device *platform_devices[] __initdata = { | |||
393 | &mst_flash_device[1], | 394 | &mst_flash_device[1], |
394 | }; | 395 | }; |
395 | 396 | ||
397 | static int mainstone_ohci_init(struct device *dev) | ||
398 | { | ||
399 | /* setup Port1 GPIO pin. */ | ||
400 | pxa_gpio_mode( 88 | GPIO_ALT_FN_1_IN); /* USBHPWR1 */ | ||
401 | pxa_gpio_mode( 89 | GPIO_ALT_FN_2_OUT); /* USBHPEN1 */ | ||
402 | |||
403 | /* Set the Power Control Polarity Low and Power Sense | ||
404 | Polarity Low to active low. */ | ||
405 | UHCHR = (UHCHR | UHCHR_PCPL | UHCHR_PSPL) & | ||
406 | ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE); | ||
407 | |||
408 | return 0; | ||
409 | } | ||
410 | |||
411 | static struct pxaohci_platform_data mainstone_ohci_platform_data = { | ||
412 | .port_mode = PMM_PERPORT_MODE, | ||
413 | .init = mainstone_ohci_init, | ||
414 | }; | ||
415 | |||
396 | static void __init mainstone_init(void) | 416 | static void __init mainstone_init(void) |
397 | { | 417 | { |
398 | int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */ | 418 | int SW7 = 0; /* FIXME: get from SCR (Mst doc section 3.2.1.1) */ |
@@ -407,6 +427,12 @@ static void __init mainstone_init(void) | |||
407 | printk(KERN_NOTICE "Mainstone configured to boot from %s\n", | 427 | printk(KERN_NOTICE "Mainstone configured to boot from %s\n", |
408 | mst_flash_data[0].name); | 428 | mst_flash_data[0].name); |
409 | 429 | ||
430 | /* system bus arbiter setting | ||
431 | * - Core_Park | ||
432 | * - LCD_wt:DMA_wt:CORE_Wt = 2:3:4 | ||
433 | */ | ||
434 | ARB_CNTRL = ARB_CORE_PARK | 0x234; | ||
435 | |||
410 | /* | 436 | /* |
411 | * On Mainstone, we route AC97_SYSCLK via GPIO45 to | 437 | * On Mainstone, we route AC97_SYSCLK via GPIO45 to |
412 | * the audio daughter card | 438 | * the audio daughter card |
@@ -424,6 +450,7 @@ static void __init mainstone_init(void) | |||
424 | 450 | ||
425 | pxa_set_mci_info(&mainstone_mci_platform_data); | 451 | pxa_set_mci_info(&mainstone_mci_platform_data); |
426 | pxa_set_ficp_info(&mainstone_ficp_platform_data); | 452 | pxa_set_ficp_info(&mainstone_ficp_platform_data); |
453 | pxa_set_ohci_info(&mainstone_ohci_platform_data); | ||
427 | } | 454 | } |
428 | 455 | ||
429 | 456 | ||
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index eef3de26ad..663c950059 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -146,15 +146,14 @@ static int poodle_mci_init(struct device *dev, irqreturn_t (*poodle_detect_int)( | |||
146 | 146 | ||
147 | poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250); | 147 | poodle_mci_platform_data.detect_delay = msecs_to_jiffies(250); |
148 | 148 | ||
149 | err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int, SA_INTERRUPT, | 149 | err = request_irq(POODLE_IRQ_GPIO_nSD_DETECT, poodle_detect_int, |
150 | "MMC card detect", data); | 150 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
151 | "MMC card detect", data); | ||
151 | if (err) { | 152 | if (err) { |
152 | printk(KERN_ERR "poodle_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); | 153 | printk(KERN_ERR "poodle_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); |
153 | return -1; | 154 | return -1; |
154 | } | 155 | } |
155 | 156 | ||
156 | set_irq_type(POODLE_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE); | ||
157 | |||
158 | return 0; | 157 | return 0; |
159 | } | 158 | } |
160 | 159 | ||
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c index c722a9a91f..b41b1efaa2 100644 --- a/arch/arm/mach-pxa/pxa27x.c +++ b/arch/arm/mach-pxa/pxa27x.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <asm/hardware.h> | 21 | #include <asm/hardware.h> |
22 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
23 | #include <asm/arch/pxa-regs.h> | 23 | #include <asm/arch/pxa-regs.h> |
24 | #include <asm/arch/ohci.h> | ||
24 | 25 | ||
25 | #include "generic.h" | 26 | #include "generic.h" |
26 | 27 | ||
@@ -194,6 +195,11 @@ static struct platform_device ohci_device = { | |||
194 | .resource = pxa27x_ohci_resources, | 195 | .resource = pxa27x_ohci_resources, |
195 | }; | 196 | }; |
196 | 197 | ||
198 | void __init pxa_set_ohci_info(struct pxaohci_platform_data *info) | ||
199 | { | ||
200 | ohci_device.dev.platform_data = info; | ||
201 | } | ||
202 | |||
197 | static struct platform_device *devices[] __initdata = { | 203 | static struct platform_device *devices[] __initdata = { |
198 | &ohci_device, | 204 | &ohci_device, |
199 | }; | 205 | }; |
diff --git a/arch/arm/mach-pxa/sharpsl.h b/arch/arm/mach-pxa/sharpsl.h index b0c40a1d66..da4769caaf 100644 --- a/arch/arm/mach-pxa/sharpsl.h +++ b/arch/arm/mach-pxa/sharpsl.h | |||
@@ -1,7 +1,17 @@ | |||
1 | /* | 1 | /* |
2 | * SharpSL SSP Driver | 2 | * Copyright (c) 2004-2005 Richard Purdie |
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | * | ||
3 | */ | 8 | */ |
4 | 9 | ||
10 | #include <asm/hardware/sharpsl_pm.h> | ||
11 | |||
12 | /* | ||
13 | * SharpSL SSP Driver | ||
14 | */ | ||
5 | struct corgissp_machinfo { | 15 | struct corgissp_machinfo { |
6 | int port; | 16 | int port; |
7 | int cs_lcdcon; | 17 | int cs_lcdcon; |
@@ -14,18 +24,18 @@ struct corgissp_machinfo { | |||
14 | 24 | ||
15 | void corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo); | 25 | void corgi_ssp_set_machinfo(struct corgissp_machinfo *machinfo); |
16 | 26 | ||
27 | |||
17 | /* | 28 | /* |
18 | * SharpSL Backlight | 29 | * SharpSL Backlight |
19 | */ | 30 | */ |
20 | |||
21 | void corgi_bl_set_intensity(int intensity); | 31 | void corgi_bl_set_intensity(int intensity); |
22 | void spitz_bl_set_intensity(int intensity); | 32 | void spitz_bl_set_intensity(int intensity); |
23 | void akita_bl_set_intensity(int intensity); | 33 | void akita_bl_set_intensity(int intensity); |
24 | 34 | ||
35 | |||
25 | /* | 36 | /* |
26 | * SharpSL Touchscreen Driver | 37 | * SharpSL Touchscreen Driver |
27 | */ | 38 | */ |
28 | |||
29 | unsigned long corgi_get_hsync_len(void); | 39 | unsigned long corgi_get_hsync_len(void); |
30 | unsigned long spitz_get_hsync_len(void); | 40 | unsigned long spitz_get_hsync_len(void); |
31 | void corgi_put_hsync(void); | 41 | void corgi_put_hsync(void); |
@@ -33,89 +43,22 @@ void spitz_put_hsync(void); | |||
33 | void corgi_wait_hsync(void); | 43 | void corgi_wait_hsync(void); |
34 | void spitz_wait_hsync(void); | 44 | void spitz_wait_hsync(void); |
35 | 45 | ||
46 | |||
36 | /* | 47 | /* |
37 | * SharpSL Battery/PM Driver | 48 | * SharpSL Battery/PM Driver |
38 | */ | 49 | */ |
39 | 50 | ||
40 | struct sharpsl_charger_machinfo { | 51 | #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x)) |
41 | void (*init)(void); | ||
42 | int gpio_acin; | ||
43 | int gpio_batfull; | ||
44 | int gpio_batlock; | ||
45 | int gpio_fatal; | ||
46 | int (*status_acin)(void); | ||
47 | void (*discharge)(int); | ||
48 | void (*discharge1)(int); | ||
49 | void (*charge)(int); | ||
50 | void (*chargeled)(int); | ||
51 | void (*measure_temp)(int); | ||
52 | void (*presuspend)(void); | ||
53 | void (*postsuspend)(void); | ||
54 | unsigned long (*charger_wakeup)(void); | ||
55 | int (*should_wakeup)(unsigned int resume_on_alarm); | ||
56 | int bat_levels; | ||
57 | struct battery_thresh *bat_levels_noac; | ||
58 | struct battery_thresh *bat_levels_acin; | ||
59 | int status_high_acin; | ||
60 | int status_low_acin; | ||
61 | int status_high_noac; | ||
62 | int status_low_noac; | ||
63 | }; | ||
64 | |||
65 | struct battery_thresh { | ||
66 | int voltage; | ||
67 | int percentage; | ||
68 | }; | ||
69 | |||
70 | struct battery_stat { | ||
71 | int ac_status; /* APM AC Present/Not Present */ | ||
72 | int mainbat_status; /* APM Main Battery Status */ | ||
73 | int mainbat_percent; /* Main Battery Percentage Charge */ | ||
74 | int mainbat_voltage; /* Main Battery Voltage */ | ||
75 | }; | ||
76 | |||
77 | struct sharpsl_pm_status { | ||
78 | struct device *dev; | ||
79 | struct timer_list ac_timer; | ||
80 | struct timer_list chrg_full_timer; | ||
81 | |||
82 | int charge_mode; | ||
83 | #define CHRG_ERROR (-1) | ||
84 | #define CHRG_OFF (0) | ||
85 | #define CHRG_ON (1) | ||
86 | #define CHRG_DONE (2) | ||
87 | |||
88 | unsigned int flags; | ||
89 | #define SHARPSL_SUSPENDED (1 << 0) /* Device is Suspended */ | ||
90 | #define SHARPSL_ALARM_ACTIVE (1 << 1) /* Alarm is for charging event (not user) */ | ||
91 | #define SHARPSL_BL_LIMIT (1 << 2) /* Backlight Intensity Limited */ | ||
92 | #define SHARPSL_APM_QUEUED (1 << 3) /* APM Event Queued */ | ||
93 | #define SHARPSL_DO_OFFLINE_CHRG (1 << 4) /* Trigger the offline charger */ | ||
94 | 52 | ||
95 | int full_count; | 53 | /* MAX1111 Channel Definitions */ |
96 | unsigned long charge_start_time; | 54 | #define MAX1111_BATT_VOLT 4u |
97 | struct sharpsl_charger_machinfo *machinfo; | 55 | #define MAX1111_BATT_TEMP 2u |
98 | struct battery_stat battstat; | 56 | #define MAX1111_ACIN_VOLT 6u |
99 | }; | ||
100 | 57 | ||
101 | extern struct sharpsl_pm_status sharpsl_pm; | ||
102 | extern struct battery_thresh spitz_battery_levels_acin[]; | 58 | extern struct battery_thresh spitz_battery_levels_acin[]; |
103 | extern struct battery_thresh spitz_battery_levels_noac[]; | 59 | extern struct battery_thresh spitz_battery_levels_noac[]; |
60 | void sharpsl_pm_pxa_init(void); | ||
61 | void sharpsl_pm_pxa_remove(void); | ||
62 | int sharpsl_pm_pxa_read_max1111(int channel); | ||
104 | 63 | ||
105 | #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x)) | ||
106 | |||
107 | #define SHARPSL_LED_ERROR 2 | ||
108 | #define SHARPSL_LED_ON 1 | ||
109 | #define SHARPSL_LED_OFF 0 | ||
110 | 64 | ||
111 | #define CHARGE_ON() sharpsl_pm.machinfo->charge(1) | ||
112 | #define CHARGE_OFF() sharpsl_pm.machinfo->charge(0) | ||
113 | #define CHARGE_LED_ON() sharpsl_pm.machinfo->chargeled(SHARPSL_LED_ON) | ||
114 | #define CHARGE_LED_OFF() sharpsl_pm.machinfo->chargeled(SHARPSL_LED_OFF) | ||
115 | #define CHARGE_LED_ERR() sharpsl_pm.machinfo->chargeled(SHARPSL_LED_ERROR) | ||
116 | #define DISCHARGE_ON() sharpsl_pm.machinfo->discharge(1) | ||
117 | #define DISCHARGE_OFF() sharpsl_pm.machinfo->discharge(0) | ||
118 | #define STATUS_AC_IN() sharpsl_pm.machinfo->status_acin() | ||
119 | #define STATUS_BATT_LOCKED() READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batlock) | ||
120 | #define STATUS_CHRG_FULL() READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batfull) | ||
121 | #define STATUS_FATAL() READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_fatal) | ||
diff --git a/arch/arm/mach-pxa/sharpsl_pm.c b/arch/arm/mach-pxa/sharpsl_pm.c index c10be00fb5..6d402b262d 100644 --- a/arch/arm/mach-pxa/sharpsl_pm.c +++ b/arch/arm/mach-pxa/sharpsl_pm.c | |||
@@ -15,48 +15,20 @@ | |||
15 | #undef DEBUG | 15 | #undef DEBUG |
16 | 16 | ||
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <linux/timer.h> | ||
19 | #include <linux/init.h> | 18 | #include <linux/init.h> |
20 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
21 | #include <linux/apm_bios.h> | ||
22 | #include <linux/delay.h> | ||
23 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
24 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
25 | 22 | ||
26 | #include <asm/hardware.h> | 23 | #include <asm/hardware.h> |
27 | #include <asm/hardware/scoop.h> | ||
28 | #include <asm/mach-types.h> | 24 | #include <asm/mach-types.h> |
29 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
30 | #include <asm/apm.h> | 26 | #include <asm/apm.h> |
31 | |||
32 | #include <asm/arch/pm.h> | 27 | #include <asm/arch/pm.h> |
33 | #include <asm/arch/pxa-regs.h> | 28 | #include <asm/arch/pxa-regs.h> |
34 | #include <asm/arch/sharpsl.h> | 29 | #include <asm/arch/sharpsl.h> |
35 | #include "sharpsl.h" | 30 | #include "sharpsl.h" |
36 | 31 | ||
37 | /* | ||
38 | * Constants | ||
39 | */ | ||
40 | #define SHARPSL_CHARGE_ON_TIME_INTERVAL (msecs_to_jiffies(1*60*1000)) /* 1 min */ | ||
41 | #define SHARPSL_CHARGE_FINISH_TIME (msecs_to_jiffies(10*60*1000)) /* 10 min */ | ||
42 | #define SHARPSL_BATCHK_TIME (msecs_to_jiffies(15*1000)) /* 15 sec */ | ||
43 | #define SHARPSL_BATCHK_TIME_SUSPEND (60*10) /* 10 min */ | ||
44 | #define SHARPSL_WAIT_CO_TIME 15 /* 15 sec */ | ||
45 | #define SHARPSL_WAIT_DISCHARGE_ON 100 /* 100 msec */ | ||
46 | #define SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP 10 /* 10 msec */ | ||
47 | #define SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT 10 /* 10 msec */ | ||
48 | #define SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN 10 /* 10 msec */ | ||
49 | #define SHARPSL_CHARGE_WAIT_TIME 15 /* 15 msec */ | ||
50 | #define SHARPSL_CHARGE_CO_CHECK_TIME 5 /* 5 msec */ | ||
51 | #define SHARPSL_CHARGE_RETRY_CNT 1 /* eqv. 10 min */ | ||
52 | |||
53 | #define SHARPSL_CHARGE_ON_VOLT 0x99 /* 2.9V */ | ||
54 | #define SHARPSL_CHARGE_ON_TEMP 0xe0 /* 2.9V */ | ||
55 | #define SHARPSL_CHARGE_ON_ACIN_HIGH 0x9b /* 6V */ | ||
56 | #define SHARPSL_CHARGE_ON_ACIN_LOW 0x34 /* 2V */ | ||
57 | #define SHARPSL_FATAL_ACIN_VOLT 182 /* 3.45V */ | ||
58 | #define SHARPSL_FATAL_NOACIN_VOLT 170 /* 3.40V */ | ||
59 | |||
60 | struct battery_thresh spitz_battery_levels_acin[] = { | 32 | struct battery_thresh spitz_battery_levels_acin[] = { |
61 | { 213, 100}, | 33 | { 213, 100}, |
62 | { 212, 98}, | 34 | { 212, 98}, |
@@ -151,763 +123,17 @@ struct battery_thresh spitz_battery_levels_noac[] = { | |||
151 | #define MAXCTRL_SEL_SH 4 | 123 | #define MAXCTRL_SEL_SH 4 |
152 | #define MAXCTRL_STR 1u << 7 | 124 | #define MAXCTRL_STR 1u << 7 |
153 | 125 | ||
154 | /* MAX1111 Channel Definitions */ | ||
155 | #define BATT_AD 4u | ||
156 | #define BATT_THM 2u | ||
157 | #define JK_VAD 6u | ||
158 | |||
159 | |||
160 | /* | ||
161 | * Prototypes | ||
162 | */ | ||
163 | static int sharpsl_read_main_battery(void); | ||
164 | static int sharpsl_off_charge_battery(void); | ||
165 | static int sharpsl_check_battery_temp(void); | ||
166 | static int sharpsl_check_battery_voltage(void); | ||
167 | static int sharpsl_ac_check(void); | ||
168 | static int sharpsl_fatal_check(void); | ||
169 | static int sharpsl_average_value(int ad); | ||
170 | static void sharpsl_average_clear(void); | ||
171 | static void sharpsl_charge_toggle(void *private_); | ||
172 | static void sharpsl_battery_thread(void *private_); | ||
173 | |||
174 | |||
175 | /* | ||
176 | * Variables | ||
177 | */ | ||
178 | struct sharpsl_pm_status sharpsl_pm; | ||
179 | DECLARE_WORK(toggle_charger, sharpsl_charge_toggle, NULL); | ||
180 | DECLARE_WORK(sharpsl_bat, sharpsl_battery_thread, NULL); | ||
181 | |||
182 | |||
183 | static int get_percentage(int voltage) | ||
184 | { | ||
185 | int i = sharpsl_pm.machinfo->bat_levels - 1; | ||
186 | struct battery_thresh *thresh; | ||
187 | |||
188 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
189 | thresh=sharpsl_pm.machinfo->bat_levels_acin; | ||
190 | else | ||
191 | thresh=sharpsl_pm.machinfo->bat_levels_noac; | ||
192 | |||
193 | while (i > 0 && (voltage > thresh[i].voltage)) | ||
194 | i--; | ||
195 | |||
196 | return thresh[i].percentage; | ||
197 | } | ||
198 | |||
199 | static int get_apm_status(int voltage) | ||
200 | { | ||
201 | int low_thresh, high_thresh; | ||
202 | |||
203 | if (sharpsl_pm.charge_mode == CHRG_ON) { | ||
204 | high_thresh = sharpsl_pm.machinfo->status_high_acin; | ||
205 | low_thresh = sharpsl_pm.machinfo->status_low_acin; | ||
206 | } else { | ||
207 | high_thresh = sharpsl_pm.machinfo->status_high_noac; | ||
208 | low_thresh = sharpsl_pm.machinfo->status_low_noac; | ||
209 | } | ||
210 | |||
211 | if (voltage >= high_thresh) | ||
212 | return APM_BATTERY_STATUS_HIGH; | ||
213 | if (voltage >= low_thresh) | ||
214 | return APM_BATTERY_STATUS_LOW; | ||
215 | return APM_BATTERY_STATUS_CRITICAL; | ||
216 | } | ||
217 | |||
218 | void sharpsl_battery_kick(void) | ||
219 | { | ||
220 | schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(125)); | ||
221 | } | ||
222 | EXPORT_SYMBOL(sharpsl_battery_kick); | ||
223 | |||
224 | |||
225 | static void sharpsl_battery_thread(void *private_) | ||
226 | { | ||
227 | int voltage, percent, apm_status, i = 0; | ||
228 | |||
229 | if (!sharpsl_pm.machinfo) | ||
230 | return; | ||
231 | |||
232 | sharpsl_pm.battstat.ac_status = (STATUS_AC_IN() ? APM_AC_ONLINE : APM_AC_OFFLINE); | ||
233 | |||
234 | /* Corgi cannot confirm when battery fully charged so periodically kick! */ | ||
235 | if (machine_is_corgi() && (sharpsl_pm.charge_mode == CHRG_ON) | ||
236 | && time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_ON_TIME_INTERVAL)) | ||
237 | schedule_work(&toggle_charger); | ||
238 | |||
239 | while(1) { | ||
240 | voltage = sharpsl_read_main_battery(); | ||
241 | if (voltage > 0) break; | ||
242 | if (i++ > 5) { | ||
243 | voltage = sharpsl_pm.machinfo->bat_levels_noac[0].voltage; | ||
244 | dev_warn(sharpsl_pm.dev, "Warning: Cannot read main battery!\n"); | ||
245 | break; | ||
246 | } | ||
247 | } | ||
248 | |||
249 | voltage = sharpsl_average_value(voltage); | ||
250 | apm_status = get_apm_status(voltage); | ||
251 | percent = get_percentage(voltage); | ||
252 | |||
253 | /* At low battery voltages, the voltage has a tendency to start | ||
254 | creeping back up so we try to avoid this here */ | ||
255 | if ((sharpsl_pm.battstat.ac_status == APM_AC_ONLINE) || (apm_status == APM_BATTERY_STATUS_HIGH) || percent <= sharpsl_pm.battstat.mainbat_percent) { | ||
256 | sharpsl_pm.battstat.mainbat_voltage = voltage; | ||
257 | sharpsl_pm.battstat.mainbat_status = apm_status; | ||
258 | sharpsl_pm.battstat.mainbat_percent = percent; | ||
259 | } | ||
260 | |||
261 | dev_dbg(sharpsl_pm.dev, "Battery: voltage: %d, status: %d, percentage: %d, time: %d\n", voltage, | ||
262 | sharpsl_pm.battstat.mainbat_status, sharpsl_pm.battstat.mainbat_percent, jiffies); | ||
263 | |||
264 | /* If battery is low. limit backlight intensity to save power. */ | ||
265 | if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE) | ||
266 | && ((sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_LOW) || | ||
267 | (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL))) { | ||
268 | if (!(sharpsl_pm.flags & SHARPSL_BL_LIMIT)) { | ||
269 | corgibl_limit_intensity(1); | ||
270 | sharpsl_pm.flags |= SHARPSL_BL_LIMIT; | ||
271 | } | ||
272 | } else if (sharpsl_pm.flags & SHARPSL_BL_LIMIT) { | ||
273 | corgibl_limit_intensity(0); | ||
274 | sharpsl_pm.flags &= ~SHARPSL_BL_LIMIT; | ||
275 | } | ||
276 | |||
277 | /* Suspend if critical battery level */ | ||
278 | if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE) | ||
279 | && (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL) | ||
280 | && !(sharpsl_pm.flags & SHARPSL_APM_QUEUED)) { | ||
281 | sharpsl_pm.flags |= SHARPSL_APM_QUEUED; | ||
282 | dev_err(sharpsl_pm.dev, "Fatal Off\n"); | ||
283 | apm_queue_event(APM_CRITICAL_SUSPEND); | ||
284 | } | ||
285 | |||
286 | schedule_delayed_work(&sharpsl_bat, SHARPSL_BATCHK_TIME); | ||
287 | } | ||
288 | |||
289 | static void sharpsl_charge_on(void) | ||
290 | { | ||
291 | dev_dbg(sharpsl_pm.dev, "Turning Charger On\n"); | ||
292 | |||
293 | sharpsl_pm.full_count = 0; | ||
294 | sharpsl_pm.charge_mode = CHRG_ON; | ||
295 | schedule_delayed_work(&toggle_charger, msecs_to_jiffies(250)); | ||
296 | schedule_delayed_work(&sharpsl_bat, msecs_to_jiffies(500)); | ||
297 | } | ||
298 | |||
299 | static void sharpsl_charge_off(void) | ||
300 | { | ||
301 | dev_dbg(sharpsl_pm.dev, "Turning Charger Off\n"); | ||
302 | |||
303 | CHARGE_OFF(); | ||
304 | CHARGE_LED_OFF(); | ||
305 | sharpsl_pm.charge_mode = CHRG_OFF; | ||
306 | |||
307 | schedule_work(&sharpsl_bat); | ||
308 | } | ||
309 | |||
310 | static void sharpsl_charge_error(void) | ||
311 | { | ||
312 | CHARGE_LED_ERR(); | ||
313 | CHARGE_OFF(); | ||
314 | sharpsl_pm.charge_mode = CHRG_ERROR; | ||
315 | } | ||
316 | |||
317 | static void sharpsl_charge_toggle(void *private_) | ||
318 | { | ||
319 | dev_dbg(sharpsl_pm.dev, "Toogling Charger at time: %lx\n", jiffies); | ||
320 | |||
321 | if (STATUS_AC_IN() == 0) { | ||
322 | sharpsl_charge_off(); | ||
323 | return; | ||
324 | } else if ((sharpsl_check_battery_temp() < 0) || (sharpsl_ac_check() < 0)) { | ||
325 | sharpsl_charge_error(); | ||
326 | return; | ||
327 | } | ||
328 | |||
329 | CHARGE_LED_ON(); | ||
330 | CHARGE_OFF(); | ||
331 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
332 | CHARGE_ON(); | ||
333 | |||
334 | sharpsl_pm.charge_start_time = jiffies; | ||
335 | } | ||
336 | |||
337 | static void sharpsl_ac_timer(unsigned long data) | ||
338 | { | ||
339 | int acin = STATUS_AC_IN(); | ||
340 | |||
341 | dev_dbg(sharpsl_pm.dev, "AC Status: %d\n",acin); | ||
342 | |||
343 | sharpsl_average_clear(); | ||
344 | if (acin && (sharpsl_pm.charge_mode != CHRG_ON)) | ||
345 | sharpsl_charge_on(); | ||
346 | else if (sharpsl_pm.charge_mode == CHRG_ON) | ||
347 | sharpsl_charge_off(); | ||
348 | |||
349 | schedule_work(&sharpsl_bat); | ||
350 | } | ||
351 | |||
352 | |||
353 | static irqreturn_t sharpsl_ac_isr(int irq, void *dev_id, struct pt_regs *fp) | ||
354 | { | ||
355 | /* Delay the event slightly to debounce */ | ||
356 | /* Must be a smaller delay than the chrg_full_isr below */ | ||
357 | mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250)); | ||
358 | |||
359 | return IRQ_HANDLED; | ||
360 | } | ||
361 | |||
362 | static void sharpsl_chrg_full_timer(unsigned long data) | ||
363 | { | ||
364 | dev_dbg(sharpsl_pm.dev, "Charge Full at time: %lx\n", jiffies); | ||
365 | |||
366 | sharpsl_pm.full_count++; | ||
367 | |||
368 | if (STATUS_AC_IN() == 0) { | ||
369 | dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n"); | ||
370 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
371 | sharpsl_charge_off(); | ||
372 | } else if (sharpsl_pm.full_count < 2) { | ||
373 | dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n"); | ||
374 | schedule_work(&toggle_charger); | ||
375 | } else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) { | ||
376 | dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n"); | ||
377 | schedule_work(&toggle_charger); | ||
378 | } else { | ||
379 | sharpsl_charge_off(); | ||
380 | sharpsl_pm.charge_mode = CHRG_DONE; | ||
381 | dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n"); | ||
382 | } | ||
383 | } | ||
384 | |||
385 | /* Charging Finished Interrupt (Not present on Corgi) */ | ||
386 | /* Can trigger at the same time as an AC staus change so | ||
387 | delay until after that has been processed */ | ||
388 | static irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id, struct pt_regs *fp) | ||
389 | { | ||
390 | if (sharpsl_pm.flags & SHARPSL_SUSPENDED) | ||
391 | return IRQ_HANDLED; | ||
392 | |||
393 | /* delay until after any ac interrupt */ | ||
394 | mod_timer(&sharpsl_pm.chrg_full_timer, jiffies + msecs_to_jiffies(500)); | ||
395 | |||
396 | return IRQ_HANDLED; | ||
397 | } | ||
398 | |||
399 | static irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id, struct pt_regs *fp) | ||
400 | { | ||
401 | int is_fatal = 0; | ||
402 | |||
403 | if (STATUS_BATT_LOCKED() == 0) { | ||
404 | dev_err(sharpsl_pm.dev, "Battery now Unlocked! Suspending.\n"); | ||
405 | is_fatal = 1; | ||
406 | } | ||
407 | |||
408 | if (sharpsl_pm.machinfo->gpio_fatal && (STATUS_FATAL() == 0)) { | ||
409 | dev_err(sharpsl_pm.dev, "Fatal Batt Error! Suspending.\n"); | ||
410 | is_fatal = 1; | ||
411 | } | ||
412 | |||
413 | if (!(sharpsl_pm.flags & SHARPSL_APM_QUEUED) && is_fatal) { | ||
414 | sharpsl_pm.flags |= SHARPSL_APM_QUEUED; | ||
415 | apm_queue_event(APM_CRITICAL_SUSPEND); | ||
416 | } | ||
417 | |||
418 | return IRQ_HANDLED; | ||
419 | } | ||
420 | |||
421 | /* | ||
422 | * Maintain an average of the last 10 readings | ||
423 | */ | ||
424 | #define SHARPSL_CNV_VALUE_NUM 10 | ||
425 | static int sharpsl_ad_index; | ||
426 | |||
427 | static void sharpsl_average_clear(void) | ||
428 | { | ||
429 | sharpsl_ad_index = 0; | ||
430 | } | ||
431 | |||
432 | static int sharpsl_average_value(int ad) | ||
433 | { | ||
434 | int i, ad_val = 0; | ||
435 | static int sharpsl_ad[SHARPSL_CNV_VALUE_NUM+1]; | ||
436 | |||
437 | if (sharpsl_pm.battstat.mainbat_status != APM_BATTERY_STATUS_HIGH) { | ||
438 | sharpsl_ad_index = 0; | ||
439 | return ad; | ||
440 | } | ||
441 | |||
442 | sharpsl_ad[sharpsl_ad_index] = ad; | ||
443 | sharpsl_ad_index++; | ||
444 | if (sharpsl_ad_index >= SHARPSL_CNV_VALUE_NUM) { | ||
445 | for (i=0; i < (SHARPSL_CNV_VALUE_NUM-1); i++) | ||
446 | sharpsl_ad[i] = sharpsl_ad[i+1]; | ||
447 | sharpsl_ad_index = SHARPSL_CNV_VALUE_NUM - 1; | ||
448 | } | ||
449 | for (i=0; i < sharpsl_ad_index; i++) | ||
450 | ad_val += sharpsl_ad[i]; | ||
451 | |||
452 | return (ad_val / sharpsl_ad_index); | ||
453 | } | ||
454 | |||
455 | |||
456 | /* | 126 | /* |
457 | * Read MAX1111 ADC | 127 | * Read MAX1111 ADC |
458 | */ | 128 | */ |
459 | static int read_max1111(int channel) | 129 | int sharpsl_pm_pxa_read_max1111(int channel) |
460 | { | 130 | { |
461 | return corgi_ssp_max1111_get((channel << MAXCTRL_SEL_SH) | MAXCTRL_PD0 | MAXCTRL_PD1 | 131 | return corgi_ssp_max1111_get((channel << MAXCTRL_SEL_SH) | MAXCTRL_PD0 | MAXCTRL_PD1 |
462 | | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR); | 132 | | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR); |
463 | } | 133 | } |
464 | 134 | ||
465 | static int sharpsl_read_main_battery(void) | 135 | void sharpsl_pm_pxa_init(void) |
466 | { | ||
467 | return read_max1111(BATT_AD); | ||
468 | } | ||
469 | |||
470 | static int sharpsl_read_temp(void) | ||
471 | { | 136 | { |
472 | int temp; | ||
473 | |||
474 | sharpsl_pm.machinfo->measure_temp(1); | ||
475 | |||
476 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP); | ||
477 | temp = read_max1111(BATT_THM); | ||
478 | |||
479 | sharpsl_pm.machinfo->measure_temp(0); | ||
480 | |||
481 | return temp; | ||
482 | } | ||
483 | |||
484 | static int sharpsl_read_acin(void) | ||
485 | { | ||
486 | return read_max1111(JK_VAD); | ||
487 | } | ||
488 | |||
489 | /* | ||
490 | * Take an array of 5 integers, remove the maximum and minimum values | ||
491 | * and return the average. | ||
492 | */ | ||
493 | static int get_select_val(int *val) | ||
494 | { | ||
495 | int i, j, k, temp, sum = 0; | ||
496 | |||
497 | /* Find MAX val */ | ||
498 | temp = val[0]; | ||
499 | j=0; | ||
500 | for (i=1; i<5; i++) { | ||
501 | if (temp < val[i]) { | ||
502 | temp = val[i]; | ||
503 | j = i; | ||
504 | } | ||
505 | } | ||
506 | |||
507 | /* Find MIN val */ | ||
508 | temp = val[4]; | ||
509 | k=4; | ||
510 | for (i=3; i>=0; i--) { | ||
511 | if (temp > val[i]) { | ||
512 | temp = val[i]; | ||
513 | k = i; | ||
514 | } | ||
515 | } | ||
516 | |||
517 | for (i=0; i<5; i++) | ||
518 | if (i != j && i != k ) | ||
519 | sum += val[i]; | ||
520 | |||
521 | dev_dbg(sharpsl_pm.dev, "Average: %d from values: %d, %d, %d, %d, %d\n", sum/3, val[0], val[1], val[2], val[3], val[4]); | ||
522 | |||
523 | return (sum/3); | ||
524 | } | ||
525 | |||
526 | static int sharpsl_check_battery_temp(void) | ||
527 | { | ||
528 | int val, i, buff[5]; | ||
529 | |||
530 | /* Check battery temperature */ | ||
531 | for (i=0; i<5; i++) { | ||
532 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_TEMP); | ||
533 | buff[i] = sharpsl_read_temp(); | ||
534 | } | ||
535 | |||
536 | val = get_select_val(buff); | ||
537 | |||
538 | dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val); | ||
539 | if (val > SHARPSL_CHARGE_ON_TEMP) | ||
540 | return -1; | ||
541 | |||
542 | return 0; | ||
543 | } | ||
544 | |||
545 | static int sharpsl_check_battery_voltage(void) | ||
546 | { | ||
547 | int val, i, buff[5]; | ||
548 | |||
549 | /* disable charge, enable discharge */ | ||
550 | CHARGE_OFF(); | ||
551 | DISCHARGE_ON(); | ||
552 | mdelay(SHARPSL_WAIT_DISCHARGE_ON); | ||
553 | |||
554 | if (sharpsl_pm.machinfo->discharge1) | ||
555 | sharpsl_pm.machinfo->discharge1(1); | ||
556 | |||
557 | /* Check battery voltage */ | ||
558 | for (i=0; i<5; i++) { | ||
559 | buff[i] = sharpsl_read_main_battery(); | ||
560 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT); | ||
561 | } | ||
562 | |||
563 | if (sharpsl_pm.machinfo->discharge1) | ||
564 | sharpsl_pm.machinfo->discharge1(0); | ||
565 | |||
566 | DISCHARGE_OFF(); | ||
567 | |||
568 | val = get_select_val(buff); | ||
569 | dev_dbg(sharpsl_pm.dev, "Battery Voltage: %d\n", val); | ||
570 | |||
571 | if (val < SHARPSL_CHARGE_ON_VOLT) | ||
572 | return -1; | ||
573 | |||
574 | return 0; | ||
575 | } | ||
576 | |||
577 | static int sharpsl_ac_check(void) | ||
578 | { | ||
579 | int temp, i, buff[5]; | ||
580 | |||
581 | for (i=0; i<5; i++) { | ||
582 | buff[i] = sharpsl_read_acin(); | ||
583 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_ACIN); | ||
584 | } | ||
585 | |||
586 | temp = get_select_val(buff); | ||
587 | dev_dbg(sharpsl_pm.dev, "AC Voltage: %d\n",temp); | ||
588 | |||
589 | if ((temp > SHARPSL_CHARGE_ON_ACIN_HIGH) || (temp < SHARPSL_CHARGE_ON_ACIN_LOW)) { | ||
590 | dev_err(sharpsl_pm.dev, "Error: AC check failed.\n"); | ||
591 | return -1; | ||
592 | } | ||
593 | |||
594 | return 0; | ||
595 | } | ||
596 | |||
597 | #ifdef CONFIG_PM | ||
598 | static int sharpsl_pm_suspend(struct platform_device *pdev, pm_message_t state) | ||
599 | { | ||
600 | sharpsl_pm.flags |= SHARPSL_SUSPENDED; | ||
601 | flush_scheduled_work(); | ||
602 | |||
603 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
604 | sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG; | ||
605 | else | ||
606 | sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG; | ||
607 | |||
608 | return 0; | ||
609 | } | ||
610 | |||
611 | static int sharpsl_pm_resume(struct platform_device *pdev) | ||
612 | { | ||
613 | /* Clear the reset source indicators as they break the bootloader upon reboot */ | ||
614 | RCSR = 0x0f; | ||
615 | sharpsl_average_clear(); | ||
616 | sharpsl_pm.flags &= ~SHARPSL_APM_QUEUED; | ||
617 | sharpsl_pm.flags &= ~SHARPSL_SUSPENDED; | ||
618 | |||
619 | return 0; | ||
620 | } | ||
621 | |||
622 | static void corgi_goto_sleep(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state) | ||
623 | { | ||
624 | dev_dbg(sharpsl_pm.dev, "Time is: %08x\n",RCNR); | ||
625 | |||
626 | dev_dbg(sharpsl_pm.dev, "Offline Charge Activate = %d\n",sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG); | ||
627 | /* not charging and AC-IN! */ | ||
628 | |||
629 | if ((sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG) && (STATUS_AC_IN() != 0)) { | ||
630 | dev_dbg(sharpsl_pm.dev, "Activating Offline Charger...\n"); | ||
631 | sharpsl_pm.charge_mode = CHRG_OFF; | ||
632 | sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG; | ||
633 | sharpsl_off_charge_battery(); | ||
634 | } | ||
635 | |||
636 | sharpsl_pm.machinfo->presuspend(); | ||
637 | |||
638 | PEDR = 0xffffffff; /* clear it */ | ||
639 | |||
640 | sharpsl_pm.flags &= ~SHARPSL_ALARM_ACTIVE; | ||
641 | if ((sharpsl_pm.charge_mode == CHRG_ON) && ((alarm_enable && ((alarm_time - RCNR) > (SHARPSL_BATCHK_TIME_SUSPEND + 30))) || !alarm_enable)) { | ||
642 | RTSR &= RTSR_ALE; | ||
643 | RTAR = RCNR + SHARPSL_BATCHK_TIME_SUSPEND; | ||
644 | dev_dbg(sharpsl_pm.dev, "Charging alarm at: %08x\n",RTAR); | ||
645 | sharpsl_pm.flags |= SHARPSL_ALARM_ACTIVE; | ||
646 | } else if (alarm_enable) { | ||
647 | RTSR &= RTSR_ALE; | ||
648 | RTAR = alarm_time; | ||
649 | dev_dbg(sharpsl_pm.dev, "User alarm at: %08x\n",RTAR); | ||
650 | } else { | ||
651 | dev_dbg(sharpsl_pm.dev, "No alarms set.\n"); | ||
652 | } | ||
653 | |||
654 | pxa_pm_enter(state); | ||
655 | |||
656 | sharpsl_pm.machinfo->postsuspend(); | ||
657 | |||
658 | dev_dbg(sharpsl_pm.dev, "Corgi woken up from suspend: %08x\n",PEDR); | ||
659 | } | ||
660 | |||
661 | static int corgi_enter_suspend(unsigned long alarm_time, unsigned int alarm_enable, suspend_state_t state) | ||
662 | { | ||
663 | if (!sharpsl_pm.machinfo->should_wakeup(!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE) && alarm_enable) ) | ||
664 | { | ||
665 | if (!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE)) { | ||
666 | dev_dbg(sharpsl_pm.dev, "No user triggered wakeup events and not charging. Strange. Suspend.\n"); | ||
667 | corgi_goto_sleep(alarm_time, alarm_enable, state); | ||
668 | return 1; | ||
669 | } | ||
670 | if(sharpsl_off_charge_battery()) { | ||
671 | dev_dbg(sharpsl_pm.dev, "Charging. Suspend...\n"); | ||
672 | corgi_goto_sleep(alarm_time, alarm_enable, state); | ||
673 | return 1; | ||
674 | } | ||
675 | dev_dbg(sharpsl_pm.dev, "User triggered wakeup in offline charger.\n"); | ||
676 | } | ||
677 | |||
678 | if ((STATUS_BATT_LOCKED() == 0) || (sharpsl_fatal_check() < 0) ) | ||
679 | { | ||
680 | dev_err(sharpsl_pm.dev, "Fatal condition. Suspend.\n"); | ||
681 | corgi_goto_sleep(alarm_time, alarm_enable, state); | ||
682 | return 1; | ||
683 | } | ||
684 | |||
685 | return 0; | ||
686 | } | ||
687 | |||
688 | static int corgi_pxa_pm_enter(suspend_state_t state) | ||
689 | { | ||
690 | unsigned long alarm_time = RTAR; | ||
691 | unsigned int alarm_status = ((RTSR & RTSR_ALE) != 0); | ||
692 | |||
693 | dev_dbg(sharpsl_pm.dev, "SharpSL suspending for first time.\n"); | ||
694 | |||
695 | corgi_goto_sleep(alarm_time, alarm_status, state); | ||
696 | |||
697 | while (corgi_enter_suspend(alarm_time,alarm_status,state)) | ||
698 | {} | ||
699 | |||
700 | dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n"); | ||
701 | |||
702 | return 0; | ||
703 | } | ||
704 | #endif | ||
705 | |||
706 | |||
707 | /* | ||
708 | * Check for fatal battery errors | ||
709 | * Fatal returns -1 | ||
710 | */ | ||
711 | static int sharpsl_fatal_check(void) | ||
712 | { | ||
713 | int buff[5], temp, i, acin; | ||
714 | |||
715 | dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check entered\n"); | ||
716 | |||
717 | /* Check AC-Adapter */ | ||
718 | acin = STATUS_AC_IN(); | ||
719 | |||
720 | if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) { | ||
721 | CHARGE_OFF(); | ||
722 | udelay(100); | ||
723 | DISCHARGE_ON(); /* enable discharge */ | ||
724 | mdelay(SHARPSL_WAIT_DISCHARGE_ON); | ||
725 | } | ||
726 | |||
727 | if (sharpsl_pm.machinfo->discharge1) | ||
728 | sharpsl_pm.machinfo->discharge1(1); | ||
729 | |||
730 | /* Check battery : check inserting battery ? */ | ||
731 | for (i=0; i<5; i++) { | ||
732 | buff[i] = sharpsl_read_main_battery(); | ||
733 | mdelay(SHARPSL_CHECK_BATTERY_WAIT_TIME_VOLT); | ||
734 | } | ||
735 | |||
736 | if (sharpsl_pm.machinfo->discharge1) | ||
737 | sharpsl_pm.machinfo->discharge1(0); | ||
738 | |||
739 | if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) { | ||
740 | udelay(100); | ||
741 | CHARGE_ON(); | ||
742 | DISCHARGE_OFF(); | ||
743 | } | ||
744 | |||
745 | temp = get_select_val(buff); | ||
746 | dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check: acin: %d, discharge voltage: %d, no discharge: %d\n", acin, temp, sharpsl_read_main_battery()); | ||
747 | |||
748 | if ((acin && (temp < SHARPSL_FATAL_ACIN_VOLT)) || | ||
749 | (!acin && (temp < SHARPSL_FATAL_NOACIN_VOLT))) | ||
750 | return -1; | ||
751 | return 0; | ||
752 | } | ||
753 | |||
754 | static int sharpsl_off_charge_error(void) | ||
755 | { | ||
756 | dev_err(sharpsl_pm.dev, "Offline Charger: Error occured.\n"); | ||
757 | CHARGE_OFF(); | ||
758 | CHARGE_LED_ERR(); | ||
759 | sharpsl_pm.charge_mode = CHRG_ERROR; | ||
760 | return 1; | ||
761 | } | ||
762 | |||
763 | /* | ||
764 | * Charging Control while suspended | ||
765 | * Return 1 - go straight to sleep | ||
766 | * Return 0 - sleep or wakeup depending on other factors | ||
767 | */ | ||
768 | static int sharpsl_off_charge_battery(void) | ||
769 | { | ||
770 | int time; | ||
771 | |||
772 | dev_dbg(sharpsl_pm.dev, "Charge Mode: %d\n", sharpsl_pm.charge_mode); | ||
773 | |||
774 | if (sharpsl_pm.charge_mode == CHRG_OFF) { | ||
775 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 1\n"); | ||
776 | |||
777 | /* AC Check */ | ||
778 | if ((sharpsl_ac_check() < 0) || (sharpsl_check_battery_temp() < 0)) | ||
779 | return sharpsl_off_charge_error(); | ||
780 | |||
781 | /* Start Charging */ | ||
782 | CHARGE_LED_ON(); | ||
783 | CHARGE_OFF(); | ||
784 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
785 | CHARGE_ON(); | ||
786 | |||
787 | sharpsl_pm.charge_mode = CHRG_ON; | ||
788 | sharpsl_pm.full_count = 0; | ||
789 | |||
790 | return 1; | ||
791 | } else if (sharpsl_pm.charge_mode != CHRG_ON) { | ||
792 | return 1; | ||
793 | } | ||
794 | |||
795 | if (sharpsl_pm.full_count == 0) { | ||
796 | int time; | ||
797 | |||
798 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 2\n"); | ||
799 | |||
800 | if ((sharpsl_check_battery_temp() < 0) || (sharpsl_check_battery_voltage() < 0)) | ||
801 | return sharpsl_off_charge_error(); | ||
802 | |||
803 | CHARGE_OFF(); | ||
804 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
805 | CHARGE_ON(); | ||
806 | sharpsl_pm.charge_mode = CHRG_ON; | ||
807 | |||
808 | mdelay(SHARPSL_CHARGE_CO_CHECK_TIME); | ||
809 | |||
810 | time = RCNR; | ||
811 | while(1) { | ||
812 | /* Check if any wakeup event had occured */ | ||
813 | if (sharpsl_pm.machinfo->charger_wakeup() != 0) | ||
814 | return 0; | ||
815 | /* Check for timeout */ | ||
816 | if ((RCNR - time) > SHARPSL_WAIT_CO_TIME) | ||
817 | return 1; | ||
818 | if (STATUS_CHRG_FULL()) { | ||
819 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Charge full occured. Retrying to check\n"); | ||
820 | sharpsl_pm.full_count++; | ||
821 | CHARGE_OFF(); | ||
822 | mdelay(SHARPSL_CHARGE_WAIT_TIME); | ||
823 | CHARGE_ON(); | ||
824 | return 1; | ||
825 | } | ||
826 | } | ||
827 | } | ||
828 | |||
829 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 3\n"); | ||
830 | |||
831 | mdelay(SHARPSL_CHARGE_CO_CHECK_TIME); | ||
832 | |||
833 | time = RCNR; | ||
834 | while(1) { | ||
835 | /* Check if any wakeup event had occured */ | ||
836 | if (sharpsl_pm.machinfo->charger_wakeup() != 0) | ||
837 | return 0; | ||
838 | /* Check for timeout */ | ||
839 | if ((RCNR-time) > SHARPSL_WAIT_CO_TIME) { | ||
840 | if (sharpsl_pm.full_count > SHARPSL_CHARGE_RETRY_CNT) { | ||
841 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Not charged sufficiently. Retrying.\n"); | ||
842 | sharpsl_pm.full_count = 0; | ||
843 | } | ||
844 | sharpsl_pm.full_count++; | ||
845 | return 1; | ||
846 | } | ||
847 | if (STATUS_CHRG_FULL()) { | ||
848 | dev_dbg(sharpsl_pm.dev, "Offline Charger: Charging complete.\n"); | ||
849 | CHARGE_LED_OFF(); | ||
850 | CHARGE_OFF(); | ||
851 | sharpsl_pm.charge_mode = CHRG_DONE; | ||
852 | return 1; | ||
853 | } | ||
854 | } | ||
855 | } | ||
856 | |||
857 | |||
858 | static ssize_t battery_percentage_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
859 | { | ||
860 | return sprintf(buf, "%d\n",sharpsl_pm.battstat.mainbat_percent); | ||
861 | } | ||
862 | |||
863 | static ssize_t battery_voltage_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
864 | { | ||
865 | return sprintf(buf, "%d\n",sharpsl_pm.battstat.mainbat_voltage); | ||
866 | } | ||
867 | |||
868 | static DEVICE_ATTR(battery_percentage, 0444, battery_percentage_show, NULL); | ||
869 | static DEVICE_ATTR(battery_voltage, 0444, battery_voltage_show, NULL); | ||
870 | |||
871 | extern void (*apm_get_power_status)(struct apm_power_info *); | ||
872 | |||
873 | static void sharpsl_apm_get_power_status(struct apm_power_info *info) | ||
874 | { | ||
875 | info->ac_line_status = sharpsl_pm.battstat.ac_status; | ||
876 | |||
877 | if (sharpsl_pm.charge_mode == CHRG_ON) | ||
878 | info->battery_status = APM_BATTERY_STATUS_CHARGING; | ||
879 | else | ||
880 | info->battery_status = sharpsl_pm.battstat.mainbat_status; | ||
881 | |||
882 | info->battery_flag = (1 << info->battery_status); | ||
883 | info->battery_life = sharpsl_pm.battstat.mainbat_percent; | ||
884 | } | ||
885 | |||
886 | static struct pm_ops sharpsl_pm_ops = { | ||
887 | .pm_disk_mode = PM_DISK_FIRMWARE, | ||
888 | .prepare = pxa_pm_prepare, | ||
889 | .enter = corgi_pxa_pm_enter, | ||
890 | .finish = pxa_pm_finish, | ||
891 | }; | ||
892 | |||
893 | static int __init sharpsl_pm_probe(struct platform_device *pdev) | ||
894 | { | ||
895 | if (!pdev->dev.platform_data) | ||
896 | return -EINVAL; | ||
897 | |||
898 | sharpsl_pm.dev = &pdev->dev; | ||
899 | sharpsl_pm.machinfo = pdev->dev.platform_data; | ||
900 | sharpsl_pm.charge_mode = CHRG_OFF; | ||
901 | sharpsl_pm.flags = 0; | ||
902 | |||
903 | sharpsl_pm.machinfo->init(); | ||
904 | |||
905 | init_timer(&sharpsl_pm.ac_timer); | ||
906 | sharpsl_pm.ac_timer.function = sharpsl_ac_timer; | ||
907 | |||
908 | init_timer(&sharpsl_pm.chrg_full_timer); | ||
909 | sharpsl_pm.chrg_full_timer.function = sharpsl_chrg_full_timer; | ||
910 | |||
911 | pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN); | 137 | pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN); |
912 | pxa_gpio_mode(sharpsl_pm.machinfo->gpio_batfull | GPIO_IN); | 138 | pxa_gpio_mode(sharpsl_pm.machinfo->gpio_batfull | GPIO_IN); |
913 | pxa_gpio_mode(sharpsl_pm.machinfo->gpio_batlock | GPIO_IN); | 139 | pxa_gpio_mode(sharpsl_pm.machinfo->gpio_batlock | GPIO_IN); |
@@ -938,26 +164,10 @@ static int __init sharpsl_pm_probe(struct platform_device *pdev) | |||
938 | } | 164 | } |
939 | else set_irq_type(IRQ_GPIO(sharpsl_pm.machinfo->gpio_batfull),IRQT_RISING); | 165 | else set_irq_type(IRQ_GPIO(sharpsl_pm.machinfo->gpio_batfull),IRQT_RISING); |
940 | } | 166 | } |
941 | |||
942 | device_create_file(&pdev->dev, &dev_attr_battery_percentage); | ||
943 | device_create_file(&pdev->dev, &dev_attr_battery_voltage); | ||
944 | |||
945 | apm_get_power_status = sharpsl_apm_get_power_status; | ||
946 | |||
947 | pm_set_ops(&sharpsl_pm_ops); | ||
948 | |||
949 | mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250)); | ||
950 | |||
951 | return 0; | ||
952 | } | 167 | } |
953 | 168 | ||
954 | static int sharpsl_pm_remove(struct platform_device *pdev) | 169 | void sharpsl_pm_pxa_remove(void) |
955 | { | 170 | { |
956 | pm_set_ops(NULL); | ||
957 | |||
958 | device_remove_file(&pdev->dev, &dev_attr_battery_percentage); | ||
959 | device_remove_file(&pdev->dev, &dev_attr_battery_voltage); | ||
960 | |||
961 | free_irq(IRQ_GPIO(sharpsl_pm.machinfo->gpio_acin), sharpsl_ac_isr); | 171 | free_irq(IRQ_GPIO(sharpsl_pm.machinfo->gpio_acin), sharpsl_ac_isr); |
962 | free_irq(IRQ_GPIO(sharpsl_pm.machinfo->gpio_batlock), sharpsl_fatal_isr); | 172 | free_irq(IRQ_GPIO(sharpsl_pm.machinfo->gpio_batlock), sharpsl_fatal_isr); |
963 | 173 | ||
@@ -966,32 +176,4 @@ static int sharpsl_pm_remove(struct platform_device *pdev) | |||
966 | 176 | ||
967 | if (!machine_is_corgi()) | 177 | if (!machine_is_corgi()) |
968 | free_irq(IRQ_GPIO(sharpsl_pm.machinfo->gpio_batfull), sharpsl_chrg_full_isr); | 178 | free_irq(IRQ_GPIO(sharpsl_pm.machinfo->gpio_batfull), sharpsl_chrg_full_isr); |
969 | |||
970 | del_timer_sync(&sharpsl_pm.chrg_full_timer); | ||
971 | del_timer_sync(&sharpsl_pm.ac_timer); | ||
972 | |||
973 | return 0; | ||
974 | } | 179 | } |
975 | |||
976 | static struct platform_driver sharpsl_pm_driver = { | ||
977 | .probe = sharpsl_pm_probe, | ||
978 | .remove = sharpsl_pm_remove, | ||
979 | .suspend = sharpsl_pm_suspend, | ||
980 | .resume = sharpsl_pm_resume, | ||
981 | .driver = { | ||
982 | .name = "sharpsl-pm", | ||
983 | }, | ||
984 | }; | ||
985 | |||
986 | static int __devinit sharpsl_pm_init(void) | ||
987 | { | ||
988 | return platform_driver_register(&sharpsl_pm_driver); | ||
989 | } | ||
990 | |||
991 | static void sharpsl_pm_exit(void) | ||
992 | { | ||
993 | platform_driver_unregister(&sharpsl_pm_driver); | ||
994 | } | ||
995 | |||
996 | late_initcall(sharpsl_pm_init); | ||
997 | module_exit(sharpsl_pm_exit); | ||
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 2df1b56615..a9eacc0655 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <asm/arch/irq.h> | 36 | #include <asm/arch/irq.h> |
37 | #include <asm/arch/irda.h> | 37 | #include <asm/arch/irda.h> |
38 | #include <asm/arch/mmc.h> | 38 | #include <asm/arch/mmc.h> |
39 | #include <asm/arch/ohci.h> | ||
39 | #include <asm/arch/udc.h> | 40 | #include <asm/arch/udc.h> |
40 | #include <asm/arch/pxafb.h> | 41 | #include <asm/arch/pxafb.h> |
41 | #include <asm/arch/akita.h> | 42 | #include <asm/arch/akita.h> |
@@ -126,10 +127,12 @@ static void spitz_card_pwr_ctrl(int device, unsigned short new_cpr) | |||
126 | cpr &= ~0x0002; | 127 | cpr &= ~0x0002; |
127 | if (device == SPITZ_PWR_SD) | 128 | if (device == SPITZ_PWR_SD) |
128 | cpr &= ~0x0004; | 129 | cpr &= ~0x0004; |
129 | write_scoop_reg(&spitzscoop_device.dev, SCOOP_CPR, cpr | new_cpr); | ||
130 | if (!(cpr & 0x0002) && !(cpr & 0x0004)) { | 130 | if (!(cpr & 0x0002) && !(cpr & 0x0004)) { |
131 | write_scoop_reg(&spitzscoop_device.dev, SCOOP_CPR, 0x0000); | ||
131 | mdelay(1); | 132 | mdelay(1); |
132 | reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_CF_POWER); | 133 | reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_CF_POWER); |
134 | } else { | ||
135 | write_scoop_reg(&spitzscoop_device.dev, SCOOP_CPR, cpr | new_cpr); | ||
133 | } | 136 | } |
134 | } | 137 | } |
135 | } | 138 | } |
@@ -293,15 +296,14 @@ static int spitz_mci_init(struct device *dev, irqreturn_t (*spitz_detect_int)(in | |||
293 | 296 | ||
294 | spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); | 297 | spitz_mci_platform_data.detect_delay = msecs_to_jiffies(250); |
295 | 298 | ||
296 | err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int, SA_INTERRUPT, | 299 | err = request_irq(SPITZ_IRQ_GPIO_nSD_DETECT, spitz_detect_int, |
297 | "MMC card detect", data); | 300 | SA_INTERRUPT | SA_TRIGGER_RISING | SA_TRIGGER_FALLING, |
301 | "MMC card detect", data); | ||
298 | if (err) { | 302 | if (err) { |
299 | printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); | 303 | printk(KERN_ERR "spitz_mci_init: MMC/SD: can't request MMC card detect IRQ\n"); |
300 | return -1; | 304 | return -1; |
301 | } | 305 | } |
302 | 306 | ||
303 | set_irq_type(SPITZ_IRQ_GPIO_nSD_DETECT, IRQT_BOTHEDGE); | ||
304 | |||
305 | return 0; | 307 | return 0; |
306 | } | 308 | } |
307 | 309 | ||
@@ -335,6 +337,35 @@ static struct pxamci_platform_data spitz_mci_platform_data = { | |||
335 | 337 | ||
336 | 338 | ||
337 | /* | 339 | /* |
340 | * USB Host (OHCI) | ||
341 | */ | ||
342 | static int spitz_ohci_init(struct device *dev) | ||
343 | { | ||
344 | /* Only Port 2 is connected */ | ||
345 | pxa_gpio_mode(SPITZ_GPIO_USB_CONNECT | GPIO_IN); | ||
346 | pxa_gpio_mode(SPITZ_GPIO_USB_HOST | GPIO_OUT); | ||
347 | pxa_gpio_mode(SPITZ_GPIO_USB_DEVICE | GPIO_IN); | ||
348 | |||
349 | /* Setup USB Port 2 Output Control Register */ | ||
350 | UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE; | ||
351 | |||
352 | GPSR(SPITZ_GPIO_USB_HOST) = GPIO_bit(SPITZ_GPIO_USB_HOST); | ||
353 | |||
354 | UHCHR = (UHCHR) & | ||
355 | ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE); | ||
356 | |||
357 | UHCRHDA |= UHCRHDA_NOCP; | ||
358 | |||
359 | return 0; | ||
360 | } | ||
361 | |||
362 | static struct pxaohci_platform_data spitz_ohci_platform_data = { | ||
363 | .port_mode = PMM_NPS_MODE, | ||
364 | .init = spitz_ohci_init, | ||
365 | }; | ||
366 | |||
367 | |||
368 | /* | ||
338 | * Irda | 369 | * Irda |
339 | */ | 370 | */ |
340 | static void spitz_irda_transceiver_mode(struct device *dev, int mode) | 371 | static void spitz_irda_transceiver_mode(struct device *dev, int mode) |
@@ -411,6 +442,7 @@ static void __init common_init(void) | |||
411 | 442 | ||
412 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 443 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
413 | pxa_set_mci_info(&spitz_mci_platform_data); | 444 | pxa_set_mci_info(&spitz_mci_platform_data); |
445 | pxa_set_ohci_info(&spitz_ohci_platform_data); | ||
414 | pxa_set_ficp_info(&spitz_ficp_platform_data); | 446 | pxa_set_ficp_info(&spitz_ficp_platform_data); |
415 | set_pxa_fb_parent(&spitzssp_device.dev); | 447 | set_pxa_fb_parent(&spitzssp_device.dev); |
416 | set_pxa_fb_info(&spitz_pxafb_info); | 448 | set_pxa_fb_info(&spitz_pxafb_info); |
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c index 3ce7486daa..5e5bdc8984 100644 --- a/arch/arm/mach-pxa/spitz_pm.c +++ b/arch/arm/mach-pxa/spitz_pm.c | |||
@@ -33,19 +33,7 @@ static void spitz_charger_init(void) | |||
33 | { | 33 | { |
34 | pxa_gpio_mode(SPITZ_GPIO_KEY_INT | GPIO_IN); | 34 | pxa_gpio_mode(SPITZ_GPIO_KEY_INT | GPIO_IN); |
35 | pxa_gpio_mode(SPITZ_GPIO_SYNC | GPIO_IN); | 35 | pxa_gpio_mode(SPITZ_GPIO_SYNC | GPIO_IN); |
36 | } | 36 | sharpsl_pm_pxa_init(); |
37 | |||
38 | static void spitz_charge_led(int val) | ||
39 | { | ||
40 | if (val == SHARPSL_LED_ERROR) { | ||
41 | dev_dbg(sharpsl_pm.dev, "Charge LED Error\n"); | ||
42 | } else if (val == SHARPSL_LED_ON) { | ||
43 | dev_dbg(sharpsl_pm.dev, "Charge LED On\n"); | ||
44 | set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_ORANGE); | ||
45 | } else { | ||
46 | dev_dbg(sharpsl_pm.dev, "Charge LED Off\n"); | ||
47 | reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_LED_ORANGE); | ||
48 | } | ||
49 | } | 37 | } |
50 | 38 | ||
51 | static void spitz_measure_temp(int on) | 39 | static void spitz_measure_temp(int on) |
@@ -92,7 +80,7 @@ static void spitz_discharge1(int on) | |||
92 | 80 | ||
93 | static void spitz_presuspend(void) | 81 | static void spitz_presuspend(void) |
94 | { | 82 | { |
95 | spitz_last_ac_status = STATUS_AC_IN(); | 83 | spitz_last_ac_status = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); |
96 | 84 | ||
97 | /* GPIO Sleep Register */ | 85 | /* GPIO Sleep Register */ |
98 | PGSR0 = 0x00144018; | 86 | PGSR0 = 0x00144018; |
@@ -138,7 +126,7 @@ static void spitz_postsuspend(void) | |||
138 | static int spitz_should_wakeup(unsigned int resume_on_alarm) | 126 | static int spitz_should_wakeup(unsigned int resume_on_alarm) |
139 | { | 127 | { |
140 | int is_resume = 0; | 128 | int is_resume = 0; |
141 | int acin = STATUS_AC_IN(); | 129 | int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN); |
142 | 130 | ||
143 | if (spitz_last_ac_status != acin) { | 131 | if (spitz_last_ac_status != acin) { |
144 | if (acin) { | 132 | if (acin) { |
@@ -148,8 +136,8 @@ static int spitz_should_wakeup(unsigned int resume_on_alarm) | |||
148 | } else { | 136 | } else { |
149 | /* charge off */ | 137 | /* charge off */ |
150 | dev_dbg(sharpsl_pm.dev, "AC Removed\n"); | 138 | dev_dbg(sharpsl_pm.dev, "AC Removed\n"); |
151 | CHARGE_LED_OFF(); | 139 | sharpsl_pm_led(SHARPSL_LED_OFF); |
152 | CHARGE_OFF(); | 140 | sharpsl_pm.machinfo->charge(0); |
153 | sharpsl_pm.charge_mode = CHRG_OFF; | 141 | sharpsl_pm.charge_mode = CHRG_OFF; |
154 | } | 142 | } |
155 | spitz_last_ac_status = acin; | 143 | spitz_last_ac_status = acin; |
@@ -175,25 +163,41 @@ static unsigned long spitz_charger_wakeup(void) | |||
175 | return (~GPLR0 & GPIO_bit(SPITZ_GPIO_KEY_INT)) | (GPLR0 & GPIO_bit(SPITZ_GPIO_SYNC)); | 163 | return (~GPLR0 & GPIO_bit(SPITZ_GPIO_KEY_INT)) | (GPLR0 & GPIO_bit(SPITZ_GPIO_SYNC)); |
176 | } | 164 | } |
177 | 165 | ||
178 | static int spitz_acin_status(void) | 166 | unsigned long spitzpm_read_devdata(int type) |
179 | { | 167 | { |
180 | return (((~GPLR(SPITZ_GPIO_AC_IN)) & GPIO_bit(SPITZ_GPIO_AC_IN)) != 0); | 168 | switch(type) { |
169 | case SHARPSL_STATUS_ACIN: | ||
170 | return (((~GPLR(SPITZ_GPIO_AC_IN)) & GPIO_bit(SPITZ_GPIO_AC_IN)) != 0); | ||
171 | case SHARPSL_STATUS_LOCK: | ||
172 | return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batlock); | ||
173 | case SHARPSL_STATUS_CHRGFULL: | ||
174 | return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_batfull); | ||
175 | case SHARPSL_STATUS_FATAL: | ||
176 | return READ_GPIO_BIT(sharpsl_pm.machinfo->gpio_fatal); | ||
177 | case SHARPSL_ACIN_VOLT: | ||
178 | return sharpsl_pm_pxa_read_max1111(MAX1111_ACIN_VOLT); | ||
179 | case SHARPSL_BATT_TEMP: | ||
180 | return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_TEMP); | ||
181 | case SHARPSL_BATT_VOLT: | ||
182 | default: | ||
183 | return sharpsl_pm_pxa_read_max1111(MAX1111_BATT_VOLT); | ||
184 | } | ||
181 | } | 185 | } |
182 | 186 | ||
183 | struct sharpsl_charger_machinfo spitz_pm_machinfo = { | 187 | struct sharpsl_charger_machinfo spitz_pm_machinfo = { |
184 | .init = spitz_charger_init, | 188 | .init = spitz_charger_init, |
189 | .exit = sharpsl_pm_pxa_remove, | ||
185 | .gpio_batlock = SPITZ_GPIO_BAT_COVER, | 190 | .gpio_batlock = SPITZ_GPIO_BAT_COVER, |
186 | .gpio_acin = SPITZ_GPIO_AC_IN, | 191 | .gpio_acin = SPITZ_GPIO_AC_IN, |
187 | .gpio_batfull = SPITZ_GPIO_CHRG_FULL, | 192 | .gpio_batfull = SPITZ_GPIO_CHRG_FULL, |
188 | .gpio_fatal = SPITZ_GPIO_FATAL_BAT, | 193 | .gpio_fatal = SPITZ_GPIO_FATAL_BAT, |
189 | .status_acin = spitz_acin_status, | ||
190 | .discharge = spitz_discharge, | 194 | .discharge = spitz_discharge, |
191 | .discharge1 = spitz_discharge1, | 195 | .discharge1 = spitz_discharge1, |
192 | .charge = spitz_charge, | 196 | .charge = spitz_charge, |
193 | .chargeled = spitz_charge_led, | ||
194 | .measure_temp = spitz_measure_temp, | 197 | .measure_temp = spitz_measure_temp, |
195 | .presuspend = spitz_presuspend, | 198 | .presuspend = spitz_presuspend, |
196 | .postsuspend = spitz_postsuspend, | 199 | .postsuspend = spitz_postsuspend, |
200 | .read_devdata = spitzpm_read_devdata, | ||
197 | .charger_wakeup = spitz_charger_wakeup, | 201 | .charger_wakeup = spitz_charger_wakeup, |
198 | .should_wakeup = spitz_should_wakeup, | 202 | .should_wakeup = spitz_should_wakeup, |
199 | .bat_levels = 40, | 203 | .bat_levels = 40, |
diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c index a68b30eff4..93096befd0 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 | ||
62 | static DECLARE_MUTEX(sem); | 63 | static DEFINE_MUTEX(mutex); |
63 | static int use_count[PXA_SSP_PORTS] = {0, 0, 0}; | 64 | static int use_count[PXA_SSP_PORTS] = {0, 0, 0}; |
64 | 65 | ||
65 | static irqreturn_t ssp_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 66 | static 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 | ||
271 | out_region: | 272 | out_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 | */ |
283 | void ssp_exit(struct ssp_dev *dev) | 284 | void 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 | ||
301 | EXPORT_SYMBOL(ssp_write_word); | 302 | EXPORT_SYMBOL(ssp_write_word); |
diff --git a/arch/arm/mach-realview/clock.c b/arch/arm/mach-realview/clock.c index 002635c97b..21325a4da9 100644 --- a/arch/arm/mach-realview/clock.c +++ b/arch/arm/mach-realview/clock.c | |||
@@ -13,28 +13,29 @@ | |||
13 | #include <linux/list.h> | 13 | #include <linux/list.h> |
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> | ||
17 | #include <linux/mutex.h> | ||
16 | 18 | ||
17 | #include <asm/semaphore.h> | 19 | #include <asm/semaphore.h> |
18 | #include <asm/hardware/clock.h> | ||
19 | #include <asm/hardware/icst307.h> | 20 | #include <asm/hardware/icst307.h> |
20 | 21 | ||
21 | #include "clock.h" | 22 | #include "clock.h" |
22 | 23 | ||
23 | static LIST_HEAD(clocks); | 24 | static LIST_HEAD(clocks); |
24 | static DECLARE_MUTEX(clocks_sem); | 25 | static DEFINE_MUTEX(clocks_mutex); |
25 | 26 | ||
26 | struct clk *clk_get(struct device *dev, const char *id) | 27 | struct 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 | } |
@@ -57,17 +58,6 @@ void clk_disable(struct clk *clk) | |||
57 | } | 58 | } |
58 | EXPORT_SYMBOL(clk_disable); | 59 | EXPORT_SYMBOL(clk_disable); |
59 | 60 | ||
60 | int clk_use(struct clk *clk) | ||
61 | { | ||
62 | return 0; | ||
63 | } | ||
64 | EXPORT_SYMBOL(clk_use); | ||
65 | |||
66 | void clk_unuse(struct clk *clk) | ||
67 | { | ||
68 | } | ||
69 | EXPORT_SYMBOL(clk_unuse); | ||
70 | |||
71 | unsigned long clk_get_rate(struct clk *clk) | 61 | unsigned long clk_get_rate(struct clk *clk) |
72 | { | 62 | { |
73 | return clk->rate; | 63 | return clk->rate; |
@@ -120,18 +110,18 @@ static struct clk mmci_clk = { | |||
120 | 110 | ||
121 | int clk_register(struct clk *clk) | 111 | int clk_register(struct clk *clk) |
122 | { | 112 | { |
123 | down(&clocks_sem); | 113 | mutex_lock(&clocks_mutex); |
124 | list_add(&clk->node, &clocks); | 114 | list_add(&clk->node, &clocks); |
125 | up(&clocks_sem); | 115 | mutex_unlock(&clocks_mutex); |
126 | return 0; | 116 | return 0; |
127 | } | 117 | } |
128 | EXPORT_SYMBOL(clk_register); | 118 | EXPORT_SYMBOL(clk_register); |
129 | 119 | ||
130 | void clk_unregister(struct clk *clk) | 120 | void clk_unregister(struct clk *clk) |
131 | { | 121 | { |
132 | down(&clocks_sem); | 122 | mutex_lock(&clocks_mutex); |
133 | list_del(&clk->node); | 123 | list_del(&clk->node); |
134 | up(&clocks_sem); | 124 | mutex_unlock(&clocks_mutex); |
135 | } | 125 | } |
136 | EXPORT_SYMBOL(clk_unregister); | 126 | EXPORT_SYMBOL(clk_unregister); |
137 | 127 | ||
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index af6580f1ce..4a222f59f2 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -24,14 +24,14 @@ | |||
24 | #include <linux/dma-mapping.h> | 24 | #include <linux/dma-mapping.h> |
25 | #include <linux/sysdev.h> | 25 | #include <linux/sysdev.h> |
26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
27 | #include <linux/amba/bus.h> | ||
28 | #include <linux/amba/clcd.h> | ||
27 | 29 | ||
28 | #include <asm/system.h> | 30 | #include <asm/system.h> |
29 | #include <asm/hardware.h> | 31 | #include <asm/hardware.h> |
30 | #include <asm/io.h> | 32 | #include <asm/io.h> |
31 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
32 | #include <asm/leds.h> | 34 | #include <asm/leds.h> |
33 | #include <asm/hardware/amba.h> | ||
34 | #include <asm/hardware/amba_clcd.h> | ||
35 | #include <asm/hardware/arm_timer.h> | 35 | #include <asm/hardware/arm_timer.h> |
36 | #include <asm/hardware/icst307.h> | 36 | #include <asm/hardware/icst307.h> |
37 | 37 | ||
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h index c06e6041df..93e86d9f43 100644 --- a/arch/arm/mach-realview/core.h +++ b/arch/arm/mach-realview/core.h | |||
@@ -22,7 +22,8 @@ | |||
22 | #ifndef __ASM_ARCH_REALVIEW_H | 22 | #ifndef __ASM_ARCH_REALVIEW_H |
23 | #define __ASM_ARCH_REALVIEW_H | 23 | #define __ASM_ARCH_REALVIEW_H |
24 | 24 | ||
25 | #include <asm/hardware/amba.h> | 25 | #include <linux/amba/bus.h> |
26 | |||
26 | #include <asm/leds.h> | 27 | #include <asm/leds.h> |
27 | #include <asm/io.h> | 28 | #include <asm/io.h> |
28 | 29 | ||
diff --git a/arch/arm/mach-realview/localtimer.c b/arch/arm/mach-realview/localtimer.c index c9d7c596b2..caf6b8bb6c 100644 --- a/arch/arm/mach-realview/localtimer.c +++ b/arch/arm/mach-realview/localtimer.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/delay.h> | 13 | #include <linux/delay.h> |
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/smp.h> | 15 | #include <linux/smp.h> |
16 | #include <linux/jiffies.h> | ||
16 | 17 | ||
17 | #include <asm/mach/time.h> | 18 | #include <asm/mach/time.h> |
18 | #include <asm/hardware/arm_twd.h> | 19 | #include <asm/hardware/arm_twd.h> |
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index 7dc32503fd..112f7592ac 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
24 | #include <linux/platform_device.h> | 24 | #include <linux/platform_device.h> |
25 | #include <linux/sysdev.h> | 25 | #include <linux/sysdev.h> |
26 | #include <linux/amba/bus.h> | ||
26 | 27 | ||
27 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
28 | #include <asm/io.h> | 29 | #include <asm/io.h> |
@@ -30,7 +31,6 @@ | |||
30 | #include <asm/leds.h> | 31 | #include <asm/leds.h> |
31 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
32 | #include <asm/hardware/gic.h> | 33 | #include <asm/hardware/gic.h> |
33 | #include <asm/hardware/amba.h> | ||
34 | #include <asm/hardware/icst307.h> | 34 | #include <asm/hardware/icst307.h> |
35 | 35 | ||
36 | #include <asm/mach/arch.h> | 36 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c index bc0747439f..bd86ffba88 100644 --- a/arch/arm/mach-rpc/dma.c +++ b/arch/arm/mach-rpc/dma.c | |||
@@ -13,7 +13,7 @@ | |||
13 | #include <linux/mman.h> | 13 | #include <linux/mman.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/pci.h> | 16 | #include <linux/dma-mapping.h> |
17 | 17 | ||
18 | #include <asm/page.h> | 18 | #include <asm/page.h> |
19 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
@@ -148,11 +148,14 @@ static void iomd_enable_dma(dmach_t channel, dma_t *dma) | |||
148 | * Cope with ISA-style drivers which expect cache | 148 | * Cope with ISA-style drivers which expect cache |
149 | * coherence. | 149 | * coherence. |
150 | */ | 150 | */ |
151 | if (!dma->using_sg) { | 151 | if (!dma->sg) { |
152 | dma->buf.dma_address = pci_map_single(NULL, | 152 | dma->sg = &dma->buf; |
153 | dma->buf.__address, dma->buf.length, | 153 | dma->sgcount = 1; |
154 | dma->buf.length = dma->count; | ||
155 | dma->buf.dma_address = dma_map_single(NULL, | ||
156 | dma->addr, dma->count, | ||
154 | dma->dma_mode == DMA_MODE_READ ? | 157 | dma->dma_mode == DMA_MODE_READ ? |
155 | PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE); | 158 | DMA_FROM_DEVICE : DMA_TO_DEVICE); |
156 | } | 159 | } |
157 | 160 | ||
158 | iomd_writeb(DMA_CR_C, dma_base + CR); | 161 | iomd_writeb(DMA_CR_C, dma_base + CR); |
@@ -239,7 +242,7 @@ static void floppy_enable_dma(dmach_t channel, dma_t *dma) | |||
239 | unsigned int fiqhandler_length; | 242 | unsigned int fiqhandler_length; |
240 | struct pt_regs regs; | 243 | struct pt_regs regs; |
241 | 244 | ||
242 | if (dma->using_sg) | 245 | if (dma->sg) |
243 | BUG(); | 246 | BUG(); |
244 | 247 | ||
245 | if (dma->dma_mode == DMA_MODE_READ) { | 248 | if (dma->dma_mode == DMA_MODE_READ) { |
@@ -252,8 +255,8 @@ static void floppy_enable_dma(dmach_t channel, dma_t *dma) | |||
252 | fiqhandler_length = &floppy_fiqout_end - &floppy_fiqout_start; | 255 | fiqhandler_length = &floppy_fiqout_end - &floppy_fiqout_start; |
253 | } | 256 | } |
254 | 257 | ||
255 | regs.ARM_r9 = dma->buf.length; | 258 | regs.ARM_r9 = dma->count; |
256 | regs.ARM_r10 = (unsigned long)dma->buf.__address; | 259 | regs.ARM_r10 = (unsigned long)dma->addr; |
257 | regs.ARM_fp = (unsigned long)FLOPPYDMA_BASE; | 260 | regs.ARM_fp = (unsigned long)FLOPPYDMA_BASE; |
258 | 261 | ||
259 | if (claim_fiq(&fh)) { | 262 | if (claim_fiq(&fh)) { |
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index 82e8253b1f..af2f3d52b6 100644 --- a/arch/arm/mach-s3c2410/clock.c +++ b/arch/arm/mach-s3c2410/clock.c | |||
@@ -34,16 +34,16 @@ | |||
34 | #include <linux/err.h> | 34 | #include <linux/err.h> |
35 | #include <linux/platform_device.h> | 35 | #include <linux/platform_device.h> |
36 | #include <linux/sysdev.h> | 36 | #include <linux/sysdev.h> |
37 | |||
38 | #include <linux/interrupt.h> | 37 | #include <linux/interrupt.h> |
39 | #include <linux/ioport.h> | 38 | #include <linux/ioport.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> |
43 | #include <asm/irq.h> | 44 | #include <asm/irq.h> |
44 | #include <asm/io.h> | 45 | #include <asm/io.h> |
45 | 46 | ||
46 | #include <asm/hardware/clock.h> | ||
47 | #include <asm/arch/regs-clock.h> | 47 | #include <asm/arch/regs-clock.h> |
48 | 48 | ||
49 | #include "clock.h" | 49 | #include "clock.h" |
@@ -52,7 +52,7 @@ | |||
52 | /* clock information */ | 52 | /* clock information */ |
53 | 53 | ||
54 | static LIST_HEAD(clocks); | 54 | static LIST_HEAD(clocks); |
55 | static DECLARE_MUTEX(clocks_sem); | 55 | static DEFINE_MUTEX(clocks_mutex); |
56 | 56 | ||
57 | /* old functions */ | 57 | /* old functions */ |
58 | 58 | ||
@@ -103,7 +103,7 @@ struct clk *clk_get(struct device *dev, const char *id) | |||
103 | else | 103 | else |
104 | idno = to_platform_device(dev)->id; | 104 | idno = to_platform_device(dev)->id; |
105 | 105 | ||
106 | down(&clocks_sem); | 106 | mutex_lock(&clocks_mutex); |
107 | 107 | ||
108 | list_for_each_entry(p, &clocks, list) { | 108 | list_for_each_entry(p, &clocks, list) { |
109 | if (p->id == idno && | 109 | if (p->id == idno && |
@@ -127,7 +127,7 @@ struct clk *clk_get(struct device *dev, const char *id) | |||
127 | } | 127 | } |
128 | } | 128 | } |
129 | 129 | ||
130 | up(&clocks_sem); | 130 | mutex_unlock(&clocks_mutex); |
131 | return clk; | 131 | return clk; |
132 | } | 132 | } |
133 | 133 | ||
@@ -151,18 +151,6 @@ void clk_disable(struct clk *clk) | |||
151 | } | 151 | } |
152 | 152 | ||
153 | 153 | ||
154 | int clk_use(struct clk *clk) | ||
155 | { | ||
156 | atomic_inc(&clk->used); | ||
157 | return 0; | ||
158 | } | ||
159 | |||
160 | |||
161 | void clk_unuse(struct clk *clk) | ||
162 | { | ||
163 | atomic_dec(&clk->used); | ||
164 | } | ||
165 | |||
166 | unsigned long clk_get_rate(struct clk *clk) | 154 | unsigned long clk_get_rate(struct clk *clk) |
167 | { | 155 | { |
168 | if (IS_ERR(clk)) | 156 | if (IS_ERR(clk)) |
@@ -196,8 +184,6 @@ EXPORT_SYMBOL(clk_get); | |||
196 | EXPORT_SYMBOL(clk_put); | 184 | EXPORT_SYMBOL(clk_put); |
197 | EXPORT_SYMBOL(clk_enable); | 185 | EXPORT_SYMBOL(clk_enable); |
198 | EXPORT_SYMBOL(clk_disable); | 186 | EXPORT_SYMBOL(clk_disable); |
199 | EXPORT_SYMBOL(clk_use); | ||
200 | EXPORT_SYMBOL(clk_unuse); | ||
201 | EXPORT_SYMBOL(clk_get_rate); | 187 | EXPORT_SYMBOL(clk_get_rate); |
202 | EXPORT_SYMBOL(clk_round_rate); | 188 | EXPORT_SYMBOL(clk_round_rate); |
203 | EXPORT_SYMBOL(clk_set_rate); | 189 | EXPORT_SYMBOL(clk_set_rate); |
@@ -268,100 +254,101 @@ struct clk s3c24xx_uclk = { | |||
268 | /* clock definitions */ | 254 | /* clock definitions */ |
269 | 255 | ||
270 | static struct clk init_clocks[] = { | 256 | static struct clk init_clocks[] = { |
271 | { .name = "nand", | 257 | { |
272 | .id = -1, | 258 | .name = "nand", |
273 | .parent = &clk_h, | 259 | .id = -1, |
274 | .enable = s3c24xx_clkcon_enable, | 260 | .parent = &clk_h, |
275 | .ctrlbit = S3C2410_CLKCON_NAND | 261 | .enable = s3c24xx_clkcon_enable, |
276 | }, | 262 | .ctrlbit = S3C2410_CLKCON_NAND, |
277 | { .name = "lcd", | 263 | }, { |
278 | .id = -1, | 264 | .name = "lcd", |
279 | .parent = &clk_h, | 265 | .id = -1, |
280 | .enable = s3c24xx_clkcon_enable, | 266 | .parent = &clk_h, |
281 | .ctrlbit = S3C2410_CLKCON_LCDC | 267 | .enable = s3c24xx_clkcon_enable, |
282 | }, | 268 | .ctrlbit = S3C2410_CLKCON_LCDC, |
283 | { .name = "usb-host", | 269 | }, { |
284 | .id = -1, | 270 | .name = "usb-host", |
285 | .parent = &clk_h, | 271 | .id = -1, |
286 | .enable = s3c24xx_clkcon_enable, | 272 | .parent = &clk_h, |
287 | .ctrlbit = S3C2410_CLKCON_USBH | 273 | .enable = s3c24xx_clkcon_enable, |
288 | }, | 274 | .ctrlbit = S3C2410_CLKCON_USBH, |
289 | { .name = "usb-device", | 275 | }, { |
290 | .id = -1, | 276 | .name = "usb-device", |
291 | .parent = &clk_h, | 277 | .id = -1, |
292 | .enable = s3c24xx_clkcon_enable, | 278 | .parent = &clk_h, |
293 | .ctrlbit = S3C2410_CLKCON_USBD | 279 | .enable = s3c24xx_clkcon_enable, |
294 | }, | 280 | .ctrlbit = S3C2410_CLKCON_USBD, |
295 | { .name = "timers", | 281 | }, { |
296 | .id = -1, | 282 | .name = "timers", |
297 | .parent = &clk_p, | 283 | .id = -1, |
298 | .enable = s3c24xx_clkcon_enable, | 284 | .parent = &clk_p, |
299 | .ctrlbit = S3C2410_CLKCON_PWMT | 285 | .enable = s3c24xx_clkcon_enable, |
300 | }, | 286 | .ctrlbit = S3C2410_CLKCON_PWMT, |
301 | { .name = "sdi", | 287 | }, { |
302 | .id = -1, | 288 | .name = "sdi", |
303 | .parent = &clk_p, | 289 | .id = -1, |
304 | .enable = s3c24xx_clkcon_enable, | 290 | .parent = &clk_p, |
305 | .ctrlbit = S3C2410_CLKCON_SDI | 291 | .enable = s3c24xx_clkcon_enable, |
306 | }, | 292 | .ctrlbit = S3C2410_CLKCON_SDI, |
307 | { .name = "uart", | 293 | }, { |
308 | .id = 0, | 294 | .name = "uart", |
309 | .parent = &clk_p, | 295 | .id = 0, |
310 | .enable = s3c24xx_clkcon_enable, | 296 | .parent = &clk_p, |
311 | .ctrlbit = S3C2410_CLKCON_UART0 | 297 | .enable = s3c24xx_clkcon_enable, |
312 | }, | 298 | .ctrlbit = S3C2410_CLKCON_UART0, |
313 | { .name = "uart", | 299 | }, { |
314 | .id = 1, | 300 | .name = "uart", |
315 | .parent = &clk_p, | 301 | .id = 1, |
316 | .enable = s3c24xx_clkcon_enable, | 302 | .parent = &clk_p, |
317 | .ctrlbit = S3C2410_CLKCON_UART1 | 303 | .enable = s3c24xx_clkcon_enable, |
318 | }, | 304 | .ctrlbit = S3C2410_CLKCON_UART1, |
319 | { .name = "uart", | 305 | }, { |
320 | .id = 2, | 306 | .name = "uart", |
321 | .parent = &clk_p, | 307 | .id = 2, |
322 | .enable = s3c24xx_clkcon_enable, | 308 | .parent = &clk_p, |
323 | .ctrlbit = S3C2410_CLKCON_UART2 | 309 | .enable = s3c24xx_clkcon_enable, |
324 | }, | 310 | .ctrlbit = S3C2410_CLKCON_UART2, |
325 | { .name = "gpio", | 311 | }, { |
326 | .id = -1, | 312 | .name = "gpio", |
327 | .parent = &clk_p, | 313 | .id = -1, |
328 | .enable = s3c24xx_clkcon_enable, | 314 | .parent = &clk_p, |
329 | .ctrlbit = S3C2410_CLKCON_GPIO | 315 | .enable = s3c24xx_clkcon_enable, |
330 | }, | 316 | .ctrlbit = S3C2410_CLKCON_GPIO, |
331 | { .name = "rtc", | 317 | }, { |
332 | .id = -1, | 318 | .name = "rtc", |
333 | .parent = &clk_p, | 319 | .id = -1, |
334 | .enable = s3c24xx_clkcon_enable, | 320 | .parent = &clk_p, |
335 | .ctrlbit = S3C2410_CLKCON_RTC | 321 | .enable = s3c24xx_clkcon_enable, |
336 | }, | 322 | .ctrlbit = S3C2410_CLKCON_RTC, |
337 | { .name = "adc", | 323 | }, { |
338 | .id = -1, | 324 | .name = "adc", |
339 | .parent = &clk_p, | 325 | .id = -1, |
340 | .enable = s3c24xx_clkcon_enable, | 326 | .parent = &clk_p, |
341 | .ctrlbit = S3C2410_CLKCON_ADC | 327 | .enable = s3c24xx_clkcon_enable, |
342 | }, | 328 | .ctrlbit = S3C2410_CLKCON_ADC, |
343 | { .name = "i2c", | 329 | }, { |
344 | .id = -1, | 330 | .name = "i2c", |
345 | .parent = &clk_p, | 331 | .id = -1, |
346 | .enable = s3c24xx_clkcon_enable, | 332 | .parent = &clk_p, |
347 | .ctrlbit = S3C2410_CLKCON_IIC | 333 | .enable = s3c24xx_clkcon_enable, |
348 | }, | 334 | .ctrlbit = S3C2410_CLKCON_IIC, |
349 | { .name = "iis", | 335 | }, { |
350 | .id = -1, | 336 | .name = "iis", |
351 | .parent = &clk_p, | 337 | .id = -1, |
352 | .enable = s3c24xx_clkcon_enable, | 338 | .parent = &clk_p, |
353 | .ctrlbit = S3C2410_CLKCON_IIS | 339 | .enable = s3c24xx_clkcon_enable, |
354 | }, | 340 | .ctrlbit = S3C2410_CLKCON_IIS, |
355 | { .name = "spi", | 341 | }, { |
356 | .id = -1, | 342 | .name = "spi", |
357 | .parent = &clk_p, | 343 | .id = -1, |
358 | .enable = s3c24xx_clkcon_enable, | 344 | .parent = &clk_p, |
359 | .ctrlbit = S3C2410_CLKCON_SPI | 345 | .enable = s3c24xx_clkcon_enable, |
360 | }, | 346 | .ctrlbit = S3C2410_CLKCON_SPI, |
361 | { .name = "watchdog", | 347 | }, { |
362 | .id = -1, | 348 | .name = "watchdog", |
363 | .parent = &clk_p, | 349 | .id = -1, |
364 | .ctrlbit = 0 | 350 | .parent = &clk_p, |
351 | .ctrlbit = 0, | ||
365 | } | 352 | } |
366 | }; | 353 | }; |
367 | 354 | ||
@@ -370,16 +357,15 @@ static struct clk init_clocks[] = { | |||
370 | int s3c24xx_register_clock(struct clk *clk) | 357 | int s3c24xx_register_clock(struct clk *clk) |
371 | { | 358 | { |
372 | clk->owner = THIS_MODULE; | 359 | clk->owner = THIS_MODULE; |
373 | atomic_set(&clk->used, 0); | ||
374 | 360 | ||
375 | if (clk->enable == NULL) | 361 | if (clk->enable == NULL) |
376 | clk->enable = clk_null_enable; | 362 | clk->enable = clk_null_enable; |
377 | 363 | ||
378 | /* add to the list of available clocks */ | 364 | /* add to the list of available clocks */ |
379 | 365 | ||
380 | down(&clocks_sem); | 366 | mutex_lock(&clocks_mutex); |
381 | list_add(&clk->list, &clocks); | 367 | list_add(&clk->list, &clocks); |
382 | up(&clocks_sem); | 368 | mutex_unlock(&clocks_mutex); |
383 | 369 | ||
384 | return 0; | 370 | return 0; |
385 | } | 371 | } |
@@ -406,16 +392,15 @@ int __init s3c24xx_setup_clocks(unsigned long xtal, | |||
406 | clk_p.rate = pclk; | 392 | clk_p.rate = pclk; |
407 | clk_f.rate = fclk; | 393 | clk_f.rate = fclk; |
408 | 394 | ||
409 | /* it looks like just setting the register here is not good | 395 | /* We must be careful disabling the clocks we are not intending to |
410 | * enough, and causes the odd hang at initial boot time, so | 396 | * be using at boot time, as subsytems such as the LCD which do |
411 | * do all of them indivdually. | 397 | * their own DMA requests to the bus can cause the system to lockup |
412 | * | 398 | * if they where in the middle of requesting bus access. |
413 | * I think disabling the LCD clock if the LCD is active is | ||
414 | * very dangerous, and therefore the bootloader should be | ||
415 | * careful to not enable the LCD clock if it is not needed. | ||
416 | * | 399 | * |
417 | * and of course, this looks neater | 400 | * Disabling the LCD clock if the LCD is active is very dangerous, |
418 | */ | 401 | * and therefore the bootloader should be careful to not enable |
402 | * the LCD clock if it is not needed. | ||
403 | */ | ||
419 | 404 | ||
420 | s3c24xx_clk_enable(S3C2410_CLKCON_NAND, 0); | 405 | s3c24xx_clk_enable(S3C2410_CLKCON_NAND, 0); |
421 | s3c24xx_clk_enable(S3C2410_CLKCON_USBH, 0); | 406 | s3c24xx_clk_enable(S3C2410_CLKCON_USBH, 0); |
diff --git a/arch/arm/mach-s3c2410/clock.h b/arch/arm/mach-s3c2410/clock.h index 7953b6f397..177d5c8dec 100644 --- a/arch/arm/mach-s3c2410/clock.h +++ b/arch/arm/mach-s3c2410/clock.h | |||
@@ -16,7 +16,6 @@ struct clk { | |||
16 | struct clk *parent; | 16 | struct clk *parent; |
17 | const char *name; | 17 | const char *name; |
18 | int id; | 18 | int id; |
19 | atomic_t used; | ||
20 | unsigned long rate; | 19 | unsigned long rate; |
21 | unsigned long ctrlbit; | 20 | unsigned long ctrlbit; |
22 | int (*enable)(struct clk *, int enable); | 21 | int (*enable)(struct clk *, int enable); |
diff --git a/arch/arm/mach-s3c2410/s3c2440-clock.c b/arch/arm/mach-s3c2410/s3c2440-clock.c index c67e0979ae..b557a2be8a 100644 --- a/arch/arm/mach-s3c2410/s3c2440-clock.c +++ b/arch/arm/mach-s3c2410/s3c2440-clock.c | |||
@@ -29,16 +29,15 @@ | |||
29 | #include <linux/err.h> | 29 | #include <linux/err.h> |
30 | #include <linux/device.h> | 30 | #include <linux/device.h> |
31 | #include <linux/sysdev.h> | 31 | #include <linux/sysdev.h> |
32 | |||
33 | #include <linux/interrupt.h> | 32 | #include <linux/interrupt.h> |
34 | #include <linux/ioport.h> | 33 | #include <linux/ioport.h> |
34 | #include <linux/clk.h> | ||
35 | 35 | ||
36 | #include <asm/hardware.h> | 36 | #include <asm/hardware.h> |
37 | #include <asm/atomic.h> | 37 | #include <asm/atomic.h> |
38 | #include <asm/irq.h> | 38 | #include <asm/irq.h> |
39 | #include <asm/io.h> | 39 | #include <asm/io.h> |
40 | 40 | ||
41 | #include <asm/hardware/clock.h> | ||
42 | #include <asm/arch/regs-clock.h> | 41 | #include <asm/arch/regs-clock.h> |
43 | 42 | ||
44 | #include "clock.h" | 43 | #include "clock.h" |
diff --git a/arch/arm/mach-s3c2410/s3c2440.c b/arch/arm/mach-s3c2410/s3c2440.c index 4d63e7133b..b7fe6d9453 100644 --- a/arch/arm/mach-s3c2410/s3c2440.c +++ b/arch/arm/mach-s3c2410/s3c2440.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/init.h> | 28 | #include <linux/init.h> |
29 | #include <linux/platform_device.h> | 29 | #include <linux/platform_device.h> |
30 | #include <linux/sysdev.h> | 30 | #include <linux/sysdev.h> |
31 | #include <linux/clk.h> | ||
31 | 32 | ||
32 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
33 | #include <asm/mach/map.h> | 34 | #include <asm/mach/map.h> |
@@ -36,7 +37,6 @@ | |||
36 | #include <asm/hardware.h> | 37 | #include <asm/hardware.h> |
37 | #include <asm/io.h> | 38 | #include <asm/io.h> |
38 | #include <asm/irq.h> | 39 | #include <asm/irq.h> |
39 | #include <asm/hardware/clock.h> | ||
40 | 40 | ||
41 | #include <asm/arch/regs-clock.h> | 41 | #include <asm/arch/regs-clock.h> |
42 | #include <asm/arch/regs-serial.h> | 42 | #include <asm/arch/regs-serial.h> |
diff --git a/arch/arm/mach-s3c2410/time.c b/arch/arm/mach-s3c2410/time.c index 8a00e3c3cd..10a2976aef 100644 --- a/arch/arm/mach-s3c2410/time.c +++ b/arch/arm/mach-s3c2410/time.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <linux/err.h> | 26 | #include <linux/err.h> |
27 | #include <linux/clk.h> | ||
27 | 28 | ||
28 | #include <asm/system.h> | 29 | #include <asm/system.h> |
29 | #include <asm/leds.h> | 30 | #include <asm/leds.h> |
@@ -35,7 +36,6 @@ | |||
35 | #include <asm/arch/regs-timer.h> | 36 | #include <asm/arch/regs-timer.h> |
36 | #include <asm/arch/regs-irq.h> | 37 | #include <asm/arch/regs-irq.h> |
37 | #include <asm/mach/time.h> | 38 | #include <asm/mach/time.h> |
38 | #include <asm/hardware/clock.h> | ||
39 | 39 | ||
40 | #include "clock.h" | 40 | #include "clock.h" |
41 | #include "cpu.h" | 41 | #include "cpu.h" |
@@ -191,7 +191,6 @@ static void s3c2410_timer_setup (void) | |||
191 | if (IS_ERR(clk)) | 191 | if (IS_ERR(clk)) |
192 | panic("failed to get clock for system timer"); | 192 | panic("failed to get clock for system timer"); |
193 | 193 | ||
194 | clk_use(clk); | ||
195 | clk_enable(clk); | 194 | clk_enable(clk); |
196 | 195 | ||
197 | pclk = clk_get_rate(clk); | 196 | pclk = clk_get_rate(clk); |
diff --git a/arch/arm/mach-s3c2410/usb-simtec.c b/arch/arm/mach-s3c2410/usb-simtec.c index 5098b50158..495f8c6ffc 100644 --- a/arch/arm/mach-s3c2410/usb-simtec.c +++ b/arch/arm/mach-s3c2410/usb-simtec.c | |||
@@ -84,13 +84,13 @@ static void usb_simtec_enableoc(struct s3c2410_hcd_info *info, int on) | |||
84 | int ret; | 84 | int ret; |
85 | 85 | ||
86 | if (on) { | 86 | if (on) { |
87 | ret = request_irq(IRQ_USBOC, usb_simtec_ocirq, SA_INTERRUPT, | 87 | ret = request_irq(IRQ_USBOC, usb_simtec_ocirq, |
88 | SA_INTERRUPT | SA_TRIGGER_RISING | | ||
89 | SA_TRIGGER_FALLING, | ||
88 | "USB Over-current", info); | 90 | "USB Over-current", info); |
89 | if (ret != 0) { | 91 | if (ret != 0) { |
90 | printk(KERN_ERR "failed to request usb oc irq\n"); | 92 | printk(KERN_ERR "failed to request usb oc irq\n"); |
91 | } | 93 | } |
92 | |||
93 | set_irq_type(IRQ_USBOC, IRQT_BOTHEDGE); | ||
94 | } else { | 94 | } else { |
95 | free_irq(IRQ_USBOC, info); | 95 | free_irq(IRQ_USBOC, info); |
96 | } | 96 | } |
diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c index 59c7964cfe..786c853423 100644 --- a/arch/arm/mach-sa1100/pm.c +++ b/arch/arm/mach-sa1100/pm.c | |||
@@ -135,29 +135,11 @@ unsigned long sleep_phys_sp(void *sp) | |||
135 | } | 135 | } |
136 | 136 | ||
137 | /* | 137 | /* |
138 | * Called after processes are frozen, but before we shut down devices. | ||
139 | */ | ||
140 | static int sa11x0_pm_prepare(suspend_state_t state) | ||
141 | { | ||
142 | return 0; | ||
143 | } | ||
144 | |||
145 | /* | ||
146 | * Called after devices are re-setup, but before processes are thawed. | ||
147 | */ | ||
148 | static int sa11x0_pm_finish(suspend_state_t state) | ||
149 | { | ||
150 | return 0; | ||
151 | } | ||
152 | |||
153 | /* | ||
154 | * Set to PM_DISK_FIRMWARE so we can quickly veto suspend-to-disk. | 138 | * Set to PM_DISK_FIRMWARE so we can quickly veto suspend-to-disk. |
155 | */ | 139 | */ |
156 | static struct pm_ops sa11x0_pm_ops = { | 140 | static struct pm_ops sa11x0_pm_ops = { |
157 | .pm_disk_mode = PM_DISK_FIRMWARE, | 141 | .pm_disk_mode = PM_DISK_FIRMWARE, |
158 | .prepare = sa11x0_pm_prepare, | ||
159 | .enter = sa11x0_pm_enter, | 142 | .enter = sa11x0_pm_enter, |
160 | .finish = sa11x0_pm_finish, | ||
161 | }; | 143 | }; |
162 | 144 | ||
163 | static int __init sa11x0_pm_init(void) | 145 | static int __init sa11x0_pm_init(void) |
diff --git a/arch/arm/mach-versatile/clock.c b/arch/arm/mach-versatile/clock.c index b96a2ea15d..9858c96560 100644 --- a/arch/arm/mach-versatile/clock.c +++ b/arch/arm/mach-versatile/clock.c | |||
@@ -14,28 +14,29 @@ | |||
14 | #include <linux/errno.h> | 14 | #include <linux/errno.h> |
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> | ||
18 | #include <linux/mutex.h> | ||
17 | 19 | ||
18 | #include <asm/semaphore.h> | 20 | #include <asm/semaphore.h> |
19 | #include <asm/hardware/clock.h> | ||
20 | #include <asm/hardware/icst307.h> | 21 | #include <asm/hardware/icst307.h> |
21 | 22 | ||
22 | #include "clock.h" | 23 | #include "clock.h" |
23 | 24 | ||
24 | static LIST_HEAD(clocks); | 25 | static LIST_HEAD(clocks); |
25 | static DECLARE_MUTEX(clocks_sem); | 26 | static DEFINE_MUTEX(clocks_mutex); |
26 | 27 | ||
27 | struct clk *clk_get(struct device *dev, const char *id) | 28 | struct 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 | } |
@@ -58,17 +59,6 @@ void clk_disable(struct clk *clk) | |||
58 | } | 59 | } |
59 | EXPORT_SYMBOL(clk_disable); | 60 | EXPORT_SYMBOL(clk_disable); |
60 | 61 | ||
61 | int clk_use(struct clk *clk) | ||
62 | { | ||
63 | return 0; | ||
64 | } | ||
65 | EXPORT_SYMBOL(clk_use); | ||
66 | |||
67 | void clk_unuse(struct clk *clk) | ||
68 | { | ||
69 | } | ||
70 | EXPORT_SYMBOL(clk_unuse); | ||
71 | |||
72 | unsigned long clk_get_rate(struct clk *clk) | 62 | unsigned long clk_get_rate(struct clk *clk) |
73 | { | 63 | { |
74 | return clk->rate; | 64 | return clk->rate; |
@@ -121,18 +111,18 @@ static struct clk mmci_clk = { | |||
121 | 111 | ||
122 | int clk_register(struct clk *clk) | 112 | int clk_register(struct clk *clk) |
123 | { | 113 | { |
124 | down(&clocks_sem); | 114 | mutex_lock(&clocks_mutex); |
125 | list_add(&clk->node, &clocks); | 115 | list_add(&clk->node, &clocks); |
126 | up(&clocks_sem); | 116 | mutex_unlock(&clocks_mutex); |
127 | return 0; | 117 | return 0; |
128 | } | 118 | } |
129 | EXPORT_SYMBOL(clk_register); | 119 | EXPORT_SYMBOL(clk_register); |
130 | 120 | ||
131 | void clk_unregister(struct clk *clk) | 121 | void clk_unregister(struct clk *clk) |
132 | { | 122 | { |
133 | down(&clocks_sem); | 123 | mutex_lock(&clocks_mutex); |
134 | list_del(&clk->node); | 124 | list_del(&clk->node); |
135 | up(&clocks_sem); | 125 | mutex_unlock(&clocks_mutex); |
136 | } | 126 | } |
137 | EXPORT_SYMBOL(clk_unregister); | 127 | EXPORT_SYMBOL(clk_unregister); |
138 | 128 | ||
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index a1ca46630d..90023745b2 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -25,14 +25,14 @@ | |||
25 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
26 | #include <linux/sysdev.h> | 26 | #include <linux/sysdev.h> |
27 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
28 | #include <linux/amba/bus.h> | ||
29 | #include <linux/amba/clcd.h> | ||
28 | 30 | ||
29 | #include <asm/system.h> | 31 | #include <asm/system.h> |
30 | #include <asm/hardware.h> | 32 | #include <asm/hardware.h> |
31 | #include <asm/io.h> | 33 | #include <asm/io.h> |
32 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
33 | #include <asm/leds.h> | 35 | #include <asm/leds.h> |
34 | #include <asm/hardware/amba.h> | ||
35 | #include <asm/hardware/amba_clcd.h> | ||
36 | #include <asm/hardware/arm_timer.h> | 36 | #include <asm/hardware/arm_timer.h> |
37 | #include <asm/hardware/icst307.h> | 37 | #include <asm/hardware/icst307.h> |
38 | 38 | ||
diff --git a/arch/arm/mach-versatile/core.h b/arch/arm/mach-versatile/core.h index 588c20669d..afcaa858eb 100644 --- a/arch/arm/mach-versatile/core.h +++ b/arch/arm/mach-versatile/core.h | |||
@@ -22,7 +22,7 @@ | |||
22 | #ifndef __ASM_ARCH_VERSATILE_H | 22 | #ifndef __ASM_ARCH_VERSATILE_H |
23 | #define __ASM_ARCH_VERSATILE_H | 23 | #define __ASM_ARCH_VERSATILE_H |
24 | 24 | ||
25 | #include <asm/hardware/amba.h> | 25 | #include <linux/amba/bus.h> |
26 | 26 | ||
27 | extern void __init versatile_init(void); | 27 | extern void __init versatile_init(void); |
28 | extern void __init versatile_init_irq(void); | 28 | extern void __init versatile_init_irq(void); |
diff --git a/arch/arm/mach-versatile/versatile_ab.c b/arch/arm/mach-versatile/versatile_ab.c index 8b0b3bef24..e74c8a2fbb 100644 --- a/arch/arm/mach-versatile/versatile_ab.c +++ b/arch/arm/mach-versatile/versatile_ab.c | |||
@@ -23,12 +23,12 @@ | |||
23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
24 | #include <linux/device.h> | 24 | #include <linux/device.h> |
25 | #include <linux/sysdev.h> | 25 | #include <linux/sysdev.h> |
26 | #include <linux/amba/bus.h> | ||
26 | 27 | ||
27 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
28 | #include <asm/io.h> | 29 | #include <asm/io.h> |
29 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
30 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
31 | #include <asm/hardware/amba.h> | ||
32 | 32 | ||
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | 34 | ||
diff --git a/arch/arm/mach-versatile/versatile_pb.c b/arch/arm/mach-versatile/versatile_pb.c index 7c3078c389..22d5ca07f7 100644 --- a/arch/arm/mach-versatile/versatile_pb.c +++ b/arch/arm/mach-versatile/versatile_pb.c | |||
@@ -23,12 +23,12 @@ | |||
23 | #include <linux/init.h> | 23 | #include <linux/init.h> |
24 | #include <linux/device.h> | 24 | #include <linux/device.h> |
25 | #include <linux/sysdev.h> | 25 | #include <linux/sysdev.h> |
26 | #include <linux/amba/bus.h> | ||
26 | 27 | ||
27 | #include <asm/hardware.h> | 28 | #include <asm/hardware.h> |
28 | #include <asm/io.h> | 29 | #include <asm/io.h> |
29 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
30 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
31 | #include <asm/hardware/amba.h> | ||
32 | 32 | ||
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/mmc.h> | 34 | #include <asm/mach/mmc.h> |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index e84fdde6ed..3b79d0e234 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -62,8 +62,8 @@ config CPU_ARM720T | |||
62 | # ARM920T | 62 | # ARM920T |
63 | config CPU_ARM920T | 63 | config CPU_ARM920T |
64 | bool "Support ARM920T processor" if !ARCH_S3C2410 | 64 | bool "Support ARM920T processor" if !ARCH_S3C2410 |
65 | depends on ARCH_INTEGRATOR || ARCH_S3C2410 || ARCH_IMX || ARCH_AAEC2000 | 65 | depends on ARCH_INTEGRATOR || ARCH_S3C2410 || ARCH_IMX || ARCH_AAEC2000 || ARCH_AT91RM9200 |
66 | default y if ARCH_S3C2410 | 66 | default y if ARCH_S3C2410 || ARCH_AT91RM9200 |
67 | select CPU_32v4 | 67 | select CPU_32v4 |
68 | select CPU_ABRT_EV4T | 68 | select CPU_ABRT_EV4T |
69 | select CPU_CACHE_V4WT | 69 | select CPU_CACHE_V4WT |
@@ -83,8 +83,8 @@ config CPU_ARM920T | |||
83 | # ARM922T | 83 | # ARM922T |
84 | config CPU_ARM922T | 84 | config CPU_ARM922T |
85 | bool "Support ARM922T processor" if ARCH_INTEGRATOR | 85 | bool "Support ARM922T processor" if ARCH_INTEGRATOR |
86 | depends on ARCH_CAMELOT || ARCH_LH7A40X || ARCH_INTEGRATOR | 86 | depends on ARCH_LH7A40X || ARCH_INTEGRATOR |
87 | default y if ARCH_CAMELOT || ARCH_LH7A40X | 87 | default y if ARCH_LH7A40X |
88 | select CPU_32v4 | 88 | select CPU_32v4 |
89 | select CPU_ABRT_EV4T | 89 | select CPU_ABRT_EV4T |
90 | select CPU_CACHE_V4WT | 90 | select CPU_CACHE_V4WT |
diff --git a/arch/arm/mm/consistent.c b/arch/arm/mm/consistent.c index dbfe9e891f..c2ee18d207 100644 --- a/arch/arm/mm/consistent.c +++ b/arch/arm/mm/consistent.c | |||
@@ -19,17 +19,26 @@ | |||
19 | #include <linux/dma-mapping.h> | 19 | #include <linux/dma-mapping.h> |
20 | 20 | ||
21 | #include <asm/cacheflush.h> | 21 | #include <asm/cacheflush.h> |
22 | #include <asm/io.h> | ||
23 | #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 | ||
24 | 29 | ||
25 | #define CONSISTENT_BASE (0xffc00000) | ||
26 | #define CONSISTENT_END (0xffe00000) | 30 | #define CONSISTENT_END (0xffe00000) |
31 | #define CONSISTENT_BASE (CONSISTENT_END - CONSISTENT_DMA_SIZE) | ||
32 | |||
27 | #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 | |||
28 | 37 | ||
29 | /* | 38 | /* |
30 | * This is the page table (2MB) covering uncached, DMA consistent allocations | 39 | * These are the page tables (2MB each) covering uncached, DMA consistent allocations |
31 | */ | 40 | */ |
32 | static pte_t *consistent_pte; | 41 | static pte_t *consistent_pte[NUM_CONSISTENT_PTES]; |
33 | static DEFINE_SPINLOCK(consistent_lock); | 42 | static DEFINE_SPINLOCK(consistent_lock); |
34 | 43 | ||
35 | /* | 44 | /* |
@@ -143,7 +152,7 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp, | |||
143 | unsigned long order; | 152 | unsigned long order; |
144 | u64 mask = ISA_DMA_THRESHOLD, limit; | 153 | u64 mask = ISA_DMA_THRESHOLD, limit; |
145 | 154 | ||
146 | if (!consistent_pte) { | 155 | if (!consistent_pte[0]) { |
147 | printk(KERN_ERR "%s: not initialised\n", __func__); | 156 | printk(KERN_ERR "%s: not initialised\n", __func__); |
148 | dump_stack(); | 157 | dump_stack(); |
149 | return NULL; | 158 | return NULL; |
@@ -206,9 +215,12 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp, | |||
206 | c = vm_region_alloc(&consistent_head, size, | 215 | c = vm_region_alloc(&consistent_head, size, |
207 | gfp & ~(__GFP_DMA | __GFP_HIGHMEM)); | 216 | gfp & ~(__GFP_DMA | __GFP_HIGHMEM)); |
208 | if (c) { | 217 | if (c) { |
209 | pte_t *pte = consistent_pte + CONSISTENT_OFFSET(c->vm_start); | 218 | pte_t *pte; |
210 | 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); | ||
211 | 222 | ||
223 | pte = consistent_pte[idx] + off; | ||
212 | c->vm_pages = page; | 224 | c->vm_pages = page; |
213 | 225 | ||
214 | /* | 226 | /* |
@@ -227,6 +239,11 @@ __dma_alloc(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp, | |||
227 | set_pte(pte, mk_pte(page, prot)); | 239 | set_pte(pte, mk_pte(page, prot)); |
228 | page++; | 240 | page++; |
229 | pte++; | 241 | pte++; |
242 | off++; | ||
243 | if (off >= PTRS_PER_PTE) { | ||
244 | off = 0; | ||
245 | pte = consistent_pte[++idx]; | ||
246 | } | ||
230 | } while (size -= PAGE_SIZE); | 247 | } while (size -= PAGE_SIZE); |
231 | 248 | ||
232 | /* | 249 | /* |
@@ -328,6 +345,8 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr | |||
328 | struct vm_region *c; | 345 | struct vm_region *c; |
329 | unsigned long flags, addr; | 346 | unsigned long flags, addr; |
330 | pte_t *ptep; | 347 | pte_t *ptep; |
348 | int idx; | ||
349 | u32 off; | ||
331 | 350 | ||
332 | WARN_ON(irqs_disabled()); | 351 | WARN_ON(irqs_disabled()); |
333 | 352 | ||
@@ -348,7 +367,9 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr | |||
348 | size = c->vm_end - c->vm_start; | 367 | size = c->vm_end - c->vm_start; |
349 | } | 368 | } |
350 | 369 | ||
351 | 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; | ||
352 | addr = c->vm_start; | 373 | addr = c->vm_start; |
353 | do { | 374 | do { |
354 | pte_t pte = ptep_get_and_clear(&init_mm, addr, ptep); | 375 | pte_t pte = ptep_get_and_clear(&init_mm, addr, ptep); |
@@ -356,6 +377,11 @@ void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, dma_addr | |||
356 | 377 | ||
357 | ptep++; | 378 | ptep++; |
358 | addr += PAGE_SIZE; | 379 | addr += PAGE_SIZE; |
380 | off++; | ||
381 | if (off >= PTRS_PER_PTE) { | ||
382 | off = 0; | ||
383 | ptep = consistent_pte[++idx]; | ||
384 | } | ||
359 | 385 | ||
360 | if (!pte_none(pte) && pte_present(pte)) { | 386 | if (!pte_none(pte) && pte_present(pte)) { |
361 | pfn = pte_pfn(pte); | 387 | pfn = pte_pfn(pte); |
@@ -402,11 +428,12 @@ static int __init consistent_init(void) | |||
402 | pgd_t *pgd; | 428 | pgd_t *pgd; |
403 | pmd_t *pmd; | 429 | pmd_t *pmd; |
404 | pte_t *pte; | 430 | pte_t *pte; |
405 | int ret = 0; | 431 | int ret = 0, i = 0; |
432 | u32 base = CONSISTENT_BASE; | ||
406 | 433 | ||
407 | do { | 434 | do { |
408 | pgd = pgd_offset(&init_mm, CONSISTENT_BASE); | 435 | pgd = pgd_offset(&init_mm, base); |
409 | pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE); | 436 | pmd = pmd_alloc(&init_mm, pgd, base); |
410 | if (!pmd) { | 437 | if (!pmd) { |
411 | printk(KERN_ERR "%s: no pmd tables\n", __func__); | 438 | printk(KERN_ERR "%s: no pmd tables\n", __func__); |
412 | ret = -ENOMEM; | 439 | ret = -ENOMEM; |
@@ -414,15 +441,16 @@ static int __init consistent_init(void) | |||
414 | } | 441 | } |
415 | WARN_ON(!pmd_none(*pmd)); | 442 | WARN_ON(!pmd_none(*pmd)); |
416 | 443 | ||
417 | pte = pte_alloc_kernel(pmd, CONSISTENT_BASE); | 444 | pte = pte_alloc_kernel(pmd, base); |
418 | if (!pte) { | 445 | if (!pte) { |
419 | printk(KERN_ERR "%s: no pte tables\n", __func__); | 446 | printk(KERN_ERR "%s: no pte tables\n", __func__); |
420 | ret = -ENOMEM; | 447 | ret = -ENOMEM; |
421 | break; | 448 | break; |
422 | } | 449 | } |
423 | 450 | ||
424 | consistent_pte = pte; | 451 | consistent_pte[i++] = pte; |
425 | } while (0); | 452 | base += (1 << PGDIR_SHIFT); |
453 | } while (base < CONSISTENT_END); | ||
426 | 454 | ||
427 | return ret; | 455 | return ret; |
428 | } | 456 | } |
diff --git a/arch/arm/mm/discontig.c b/arch/arm/mm/discontig.c index 0d097bb1bc..1e56021895 100644 --- a/arch/arm/mm/discontig.c +++ b/arch/arm/mm/discontig.c | |||
@@ -9,10 +9,8 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | |||
13 | #include <linux/module.h> | 12 | #include <linux/module.h> |
14 | #include <linux/mm.h> | 13 | #include <linux/mmzone.h> |
15 | #include <linux/init.h> | ||
16 | #include <linux/bootmem.h> | 14 | #include <linux/bootmem.h> |
17 | 15 | ||
18 | #if MAX_NUMNODES != 4 && MAX_NUMNODES != 16 | 16 | #if MAX_NUMNODES != 4 && MAX_NUMNODES != 16 |
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 10901398e4..de3ce1eec2 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -86,11 +86,12 @@ remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size, | |||
86 | } | 86 | } |
87 | 87 | ||
88 | static int | 88 | static int |
89 | remap_area_pages(unsigned long start, unsigned long phys_addr, | 89 | remap_area_pages(unsigned long start, unsigned long pfn, |
90 | unsigned long size, unsigned long flags) | 90 | unsigned long size, unsigned long flags) |
91 | { | 91 | { |
92 | unsigned long address = start; | 92 | unsigned long address = start; |
93 | unsigned long end = start + size; | 93 | unsigned long end = start + size; |
94 | unsigned long phys_addr = __pfn_to_phys(pfn); | ||
94 | int err = 0; | 95 | int err = 0; |
95 | pgd_t * dir; | 96 | pgd_t * dir; |
96 | 97 | ||
@@ -130,36 +131,44 @@ remap_area_pages(unsigned long start, unsigned long phys_addr, | |||
130 | * mapping. See include/asm-arm/proc-armv/pgtable.h for more information. | 131 | * mapping. See include/asm-arm/proc-armv/pgtable.h for more information. |
131 | */ | 132 | */ |
132 | void __iomem * | 133 | void __iomem * |
134 | __ioremap_pfn(unsigned long pfn, unsigned long offset, size_t size, | ||
135 | unsigned long flags) | ||
136 | { | ||
137 | unsigned long addr; | ||
138 | struct vm_struct * area; | ||
139 | |||
140 | area = get_vm_area(size, VM_IOREMAP); | ||
141 | if (!area) | ||
142 | return NULL; | ||
143 | addr = (unsigned long)area->addr; | ||
144 | if (remap_area_pages(addr, pfn, size, flags)) { | ||
145 | vfree(addr); | ||
146 | return NULL; | ||
147 | } | ||
148 | return (void __iomem *) (offset + (char *)addr); | ||
149 | } | ||
150 | EXPORT_SYMBOL(__ioremap_pfn); | ||
151 | |||
152 | void __iomem * | ||
133 | __ioremap(unsigned long phys_addr, size_t size, unsigned long flags) | 153 | __ioremap(unsigned long phys_addr, size_t size, unsigned long flags) |
134 | { | 154 | { |
135 | void * addr; | 155 | unsigned long last_addr; |
136 | struct vm_struct * area; | 156 | unsigned long offset = phys_addr & ~PAGE_MASK; |
137 | unsigned long offset, last_addr; | 157 | unsigned long pfn = __phys_to_pfn(phys_addr); |
138 | 158 | ||
139 | /* Don't allow wraparound or zero size */ | 159 | /* |
160 | * Don't allow wraparound or zero size | ||
161 | */ | ||
140 | last_addr = phys_addr + size - 1; | 162 | last_addr = phys_addr + size - 1; |
141 | if (!size || last_addr < phys_addr) | 163 | if (!size || last_addr < phys_addr) |
142 | return NULL; | 164 | return NULL; |
143 | 165 | ||
144 | /* | 166 | /* |
145 | * Mappings have to be page-aligned | 167 | * Page align the mapping size |
146 | */ | 168 | */ |
147 | offset = phys_addr & ~PAGE_MASK; | ||
148 | phys_addr &= PAGE_MASK; | ||
149 | size = PAGE_ALIGN(last_addr + 1) - phys_addr; | 169 | size = PAGE_ALIGN(last_addr + 1) - phys_addr; |
150 | 170 | ||
151 | /* | 171 | return __ioremap_pfn(pfn, offset, size, flags); |
152 | * Ok, go for it.. | ||
153 | */ | ||
154 | area = get_vm_area(size, VM_IOREMAP); | ||
155 | if (!area) | ||
156 | return NULL; | ||
157 | addr = area->addr; | ||
158 | if (remap_area_pages((unsigned long) addr, phys_addr, size, flags)) { | ||
159 | vfree(addr); | ||
160 | return NULL; | ||
161 | } | ||
162 | return (void __iomem *) (offset + (char *)addr); | ||
163 | } | 172 | } |
164 | EXPORT_SYMBOL(__ioremap); | 173 | EXPORT_SYMBOL(__ioremap); |
165 | 174 | ||
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index 9e50127be6..d0245a31d4 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <asm/pgalloc.h> | 20 | #include <asm/pgalloc.h> |
21 | #include <asm/page.h> | 21 | #include <asm/page.h> |
22 | #include <asm/io.h> | ||
23 | #include <asm/setup.h> | 22 | #include <asm/setup.h> |
24 | #include <asm/tlbflush.h> | 23 | #include <asm/tlbflush.h> |
25 | 24 | ||
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 7ce39b986e..7ebc5a29db 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c | |||
@@ -19,15 +19,16 @@ | |||
19 | #include <linux/errno.h> | 19 | #include <linux/errno.h> |
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> | ||
23 | #include <linux/mutex.h> | ||
22 | 24 | ||
23 | #include <asm/io.h> | 25 | #include <asm/io.h> |
24 | #include <asm/semaphore.h> | 26 | #include <asm/semaphore.h> |
25 | #include <asm/hardware/clock.h> | ||
26 | 27 | ||
27 | #include <asm/arch/clock.h> | 28 | #include <asm/arch/clock.h> |
28 | 29 | ||
29 | LIST_HEAD(clocks); | 30 | LIST_HEAD(clocks); |
30 | static DECLARE_MUTEX(clocks_sem); | 31 | static DEFINE_MUTEX(clocks_mutex); |
31 | DEFINE_SPINLOCK(clockfw_lock); | 32 | DEFINE_SPINLOCK(clockfw_lock); |
32 | 33 | ||
33 | static struct clk_functions *arch_clock; | 34 | static 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 | ||
250 | int clk_register(struct clk *clk) | 251 | int 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 | ||
262 | void clk_unregister(struct clk *clk) | 263 | void 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 | } |
268 | EXPORT_SYMBOL(clk_unregister); | 269 | EXPORT_SYMBOL(clk_unregister); |
269 | 270 | ||
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index ccdb452630..adffc5a859 100644 --- a/arch/arm/plat-omap/common.c +++ b/arch/arm/plat-omap/common.c | |||
@@ -18,12 +18,12 @@ | |||
18 | #include <linux/tty.h> | 18 | #include <linux/tty.h> |
19 | #include <linux/serial_8250.h> | 19 | #include <linux/serial_8250.h> |
20 | #include <linux/serial_reg.h> | 20 | #include <linux/serial_reg.h> |
21 | #include <linux/clk.h> | ||
21 | 22 | ||
22 | #include <asm/hardware.h> | 23 | #include <asm/hardware.h> |
23 | #include <asm/system.h> | 24 | #include <asm/system.h> |
24 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
25 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
26 | #include <asm/hardware/clock.h> | ||
27 | #include <asm/io.h> | 27 | #include <asm/io.h> |
28 | #include <asm/setup.h> | 28 | #include <asm/setup.h> |
29 | 29 | ||
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c index fd894bb001..98edc9fdd6 100644 --- a/arch/arm/plat-omap/cpu-omap.c +++ b/arch/arm/plat-omap/cpu-omap.c | |||
@@ -19,13 +19,12 @@ | |||
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/clk.h> | ||
22 | 23 | ||
23 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
25 | #include <asm/system.h> | 26 | #include <asm/system.h> |
26 | 27 | ||
27 | #include <asm/hardware/clock.h> | ||
28 | |||
29 | /* TODO: Add support for SDRAM timing changes */ | 28 | /* TODO: Add support for SDRAM timing changes */ |
30 | 29 | ||
31 | int omap_verify_speed(struct cpufreq_policy *policy) | 30 | int omap_verify_speed(struct cpufreq_policy *policy) |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index f5cc21ad09..a4e5ac77f6 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -64,7 +64,7 @@ static int dma_chan_count; | |||
64 | static spinlock_t dma_chan_lock; | 64 | static spinlock_t dma_chan_lock; |
65 | static struct omap_dma_lch dma_chan[OMAP_LOGICAL_DMA_CH_COUNT]; | 65 | static struct omap_dma_lch dma_chan[OMAP_LOGICAL_DMA_CH_COUNT]; |
66 | 66 | ||
67 | const static u8 omap1_dma_irq[OMAP_LOGICAL_DMA_CH_COUNT] = { | 67 | static const u8 omap1_dma_irq[OMAP_LOGICAL_DMA_CH_COUNT] = { |
68 | INT_DMA_CH0_6, INT_DMA_CH1_7, INT_DMA_CH2_8, INT_DMA_CH3, | 68 | INT_DMA_CH0_6, INT_DMA_CH1_7, INT_DMA_CH2_8, INT_DMA_CH3, |
69 | INT_DMA_CH4, INT_DMA_CH5, INT_1610_DMA_CH6, INT_1610_DMA_CH7, | 69 | INT_DMA_CH4, INT_DMA_CH5, INT_1610_DMA_CH6, INT_1610_DMA_CH7, |
70 | INT_1610_DMA_CH8, INT_1610_DMA_CH9, INT_1610_DMA_CH10, | 70 | INT_1610_DMA_CH8, INT_1610_DMA_CH9, INT_1610_DMA_CH10, |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 76f721d851..ca3681a824 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -19,9 +19,9 @@ | |||
19 | #include <linux/ptrace.h> | 19 | #include <linux/ptrace.h> |
20 | #include <linux/sysdev.h> | 20 | #include <linux/sysdev.h> |
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/clk.h> | ||
22 | 23 | ||
23 | #include <asm/hardware.h> | 24 | #include <asm/hardware.h> |
24 | #include <asm/hardware/clock.h> | ||
25 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
26 | #include <asm/arch/irqs.h> | 26 | #include <asm/arch/irqs.h> |
27 | #include <asm/arch/gpio.h> | 27 | #include <asm/arch/gpio.h> |
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index ea9475c866..be0e0f32a5 100644 --- a/arch/arm/plat-omap/mcbsp.c +++ b/arch/arm/plat-omap/mcbsp.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/completion.h> | 19 | #include <linux/completion.h> |
20 | #include <linux/interrupt.h> | 20 | #include <linux/interrupt.h> |
21 | #include <linux/err.h> | 21 | #include <linux/err.h> |
22 | #include <linux/clk.h> | ||
22 | 23 | ||
23 | #include <asm/delay.h> | 24 | #include <asm/delay.h> |
24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
@@ -30,8 +31,6 @@ | |||
30 | #include <asm/arch/dsp_common.h> | 31 | #include <asm/arch/dsp_common.h> |
31 | #include <asm/arch/mcbsp.h> | 32 | #include <asm/arch/mcbsp.h> |
32 | 33 | ||
33 | #include <asm/hardware/clock.h> | ||
34 | |||
35 | #ifdef CONFIG_MCBSP_DEBUG | 34 | #ifdef CONFIG_MCBSP_DEBUG |
36 | #define DBG(x...) printk(x) | 35 | #define DBG(x...) printk(x) |
37 | #else | 36 | #else |
diff --git a/arch/arm/plat-omap/ocpi.c b/arch/arm/plat-omap/ocpi.c index b861482274..e40fcc8b43 100644 --- a/arch/arm/plat-omap/ocpi.c +++ b/arch/arm/plat-omap/ocpi.c | |||
@@ -31,9 +31,9 @@ | |||
31 | #include <linux/init.h> | 31 | #include <linux/init.h> |
32 | #include <linux/spinlock.h> | 32 | #include <linux/spinlock.h> |
33 | #include <linux/err.h> | 33 | #include <linux/err.h> |
34 | #include <linux/clk.h> | ||
34 | 35 | ||
35 | #include <asm/io.h> | 36 | #include <asm/io.h> |
36 | #include <asm/hardware/clock.h> | ||
37 | #include <asm/hardware.h> | 37 | #include <asm/hardware.h> |
38 | 38 | ||
39 | #define OCPI_BASE 0xfffec320 | 39 | #define OCPI_BASE 0xfffec320 |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 465487470d..d0f9bb5e90 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
@@ -12,7 +12,7 @@ | |||
12 | # | 12 | # |
13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new |
14 | # | 14 | # |
15 | # Last update: Fri Nov 25 14:43:04 2005 | 15 | # Last update: Mon Jan 9 12:56:42 2006 |
16 | # | 16 | # |
17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
18 | # | 18 | # |
@@ -910,3 +910,31 @@ mbus MACH_MBUS MBUS 896 | |||
910 | nadia2vb MACH_NADIA2VB NADIA2VB 897 | 910 | nadia2vb MACH_NADIA2VB NADIA2VB 897 |
911 | r1000 MACH_R1000 R1000 898 | 911 | r1000 MACH_R1000 R1000 898 |
912 | hw90250 MACH_HW90250 HW90250 899 | 912 | hw90250 MACH_HW90250 HW90250 899 |
913 | omap_2430sdp MACH_OMAP_2430SDP OMAP_2430SDP 900 | ||
914 | davinci_evm MACH_DAVINCI_EVM DAVINCI_EVM 901 | ||
915 | omap_tornado MACH_OMAP_TORNADO OMAP_TORNADO 902 | ||
916 | olocreek MACH_OLOCREEK OLOCREEK 903 | ||
917 | palmz72 MACH_PALMZ72 PALMZ72 904 | ||
918 | nxdb500 MACH_NXDB500 NXDB500 905 | ||
919 | apf9328 MACH_APF9328 APF9328 906 | ||
920 | omap_wipoq MACH_OMAP_WIPOQ OMAP_WIPOQ 907 | ||
921 | omap_twip MACH_OMAP_TWIP OMAP_TWIP 908 | ||
922 | xscale_treo650 MACH_XSCALE_PALMTREO650 XSCALE_PALMTREO650 909 | ||
923 | acumen MACH_ACUMEN ACUMEN 910 | ||
924 | xp100 MACH_XP100 XP100 911 | ||
925 | fs2410 MACH_FS2410 FS2410 912 | ||
926 | pxa270_cerf MACH_PXA270_CERF PXA270_CERF 913 | ||
927 | sq2ftlpalm MACH_SQ2FTLPALM SQ2FTLPALM 914 | ||
928 | bsemserver MACH_BSEMSERVER BSEMSERVER 915 | ||
929 | netclient MACH_NETCLIENT NETCLIENT 916 | ||
930 | xscale_palmtt5 MACH_XSCALE_PALMTT5 XSCALE_PALMTT5 917 | ||
931 | xscale_palmtc MACH_OMAP_PALMTC OMAP_PALMTC 918 | ||
932 | omap_apollon MACH_OMAP_APOLLON OMAP_APOLLON 919 | ||
933 | argonlvevb MACH_ARGONLVEVB ARGONLVEVB 920 | ||
934 | rea_2d MACH_REA_2D REA_2D 921 | ||
935 | eti3e524 MACH_TI3E524 TI3E524 922 | ||
936 | ateb9200 MACH_ATEB9200 ATEB9200 923 | ||
937 | auckland MACH_AUCKLAND AUCKLAND 924 | ||
938 | ak3220m MACH_AK3320M AK3320M 925 | ||
939 | duramax MACH_DURAMAX DURAMAX 926 | ||
940 | n35 MACH_N35 N35 927 | ||