diff options
author | Len Brown <len.brown@intel.com> | 2006-01-27 17:18:29 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-01-27 17:18:29 -0500 |
commit | 292dd876ee765c478b27c93cc51e93a558ed58bf (patch) | |
tree | 5b740e93253295baee2a9c414a6c66d03d44a9ef /arch/arm | |
parent | d4ec6c7cc9a15a7a529719bc3b84f46812f9842e (diff) | |
parent | 9fdb62af92c741addbea15545f214a6e89460865 (diff) |
Pull release into acpica branch
Diffstat (limited to 'arch/arm')
273 files changed, 9523 insertions, 3571 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 4b15f5f1e254..5959e36c3b4c 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. |
@@ -190,6 +180,7 @@ config ARCH_OMAP | |||
190 | config ARCH_VERSATILE | 180 | config ARCH_VERSATILE |
191 | bool "Versatile" | 181 | bool "Versatile" |
192 | select ARM_AMBA | 182 | select ARM_AMBA |
183 | select ARM_VIC | ||
193 | select ICST307 | 184 | select ICST307 |
194 | help | 185 | help |
195 | This enables support for ARM Ltd Versatile board. | 186 | This enables support for ARM Ltd Versatile board. |
@@ -206,6 +197,7 @@ config ARCH_IMX | |||
206 | 197 | ||
207 | config ARCH_H720X | 198 | config ARCH_H720X |
208 | bool "Hynix-HMS720x-based" | 199 | bool "Hynix-HMS720x-based" |
200 | select ISA_DMA_API | ||
209 | help | 201 | help |
210 | This enables support for systems based on the Hynix HMS720x | 202 | This enables support for systems based on the Hynix HMS720x |
211 | 203 | ||
@@ -215,12 +207,16 @@ config ARCH_AAEC2000 | |||
215 | help | 207 | help |
216 | This enables support for systems based on the Agilent AAEC-2000 | 208 | This enables support for systems based on the Agilent AAEC-2000 |
217 | 209 | ||
210 | config ARCH_AT91RM9200 | ||
211 | bool "AT91RM9200" | ||
212 | help | ||
213 | Say Y here if you intend to run this kernel on an AT91RM9200-based | ||
214 | board. | ||
215 | |||
218 | endchoice | 216 | endchoice |
219 | 217 | ||
220 | source "arch/arm/mach-clps711x/Kconfig" | 218 | source "arch/arm/mach-clps711x/Kconfig" |
221 | 219 | ||
222 | source "arch/arm/mach-epxa10db/Kconfig" | ||
223 | |||
224 | source "arch/arm/mach-footbridge/Kconfig" | 220 | source "arch/arm/mach-footbridge/Kconfig" |
225 | 221 | ||
226 | source "arch/arm/mach-integrator/Kconfig" | 222 | source "arch/arm/mach-integrator/Kconfig" |
@@ -255,6 +251,8 @@ source "arch/arm/mach-aaec2000/Kconfig" | |||
255 | 251 | ||
256 | source "arch/arm/mach-realview/Kconfig" | 252 | source "arch/arm/mach-realview/Kconfig" |
257 | 253 | ||
254 | source "arch/arm/mach-at91rm9200/Kconfig" | ||
255 | |||
258 | # Definitions to make life easier | 256 | # Definitions to make life easier |
259 | config ARCH_ACORN | 257 | config ARCH_ACORN |
260 | bool | 258 | bool |
@@ -290,12 +288,14 @@ config ISA | |||
290 | (MCA) or VESA. ISA is an older system, now being displaced by PCI; | 288 | (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. | 289 | newer boards don't support it. If you have ISA, say Y, otherwise N. |
292 | 290 | ||
291 | # Select ISA DMA controller support | ||
293 | config ISA_DMA | 292 | config ISA_DMA |
294 | bool | 293 | bool |
294 | select ISA_DMA_API | ||
295 | 295 | ||
296 | # Select ISA DMA interface | ||
296 | config ISA_DMA_API | 297 | config ISA_DMA_API |
297 | bool | 298 | bool |
298 | default y | ||
299 | 299 | ||
300 | config PCI | 300 | config PCI |
301 | bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB | 301 | bool "PCI support" if ARCH_INTEGRATOR_AP || ARCH_VERSATILE_PB |
@@ -401,6 +401,38 @@ config NO_IDLE_HZ | |||
401 | Currently at least OMAP, PXA2xx and SA11x0 platforms are known | 401 | Currently at least OMAP, PXA2xx and SA11x0 platforms are known |
402 | to have accurate timekeeping with dynamic tick. | 402 | to have accurate timekeeping with dynamic tick. |
403 | 403 | ||
404 | config AEABI | ||
405 | bool "Use the ARM EABI to compile the kernel" | ||
406 | help | ||
407 | This option allows for the kernel to be compiled using the latest | ||
408 | ARM ABI (aka EABI). This is only useful if you are using a user | ||
409 | space environment that is also compiled with EABI. | ||
410 | |||
411 | Since there are major incompatibilities between the legacy ABI and | ||
412 | EABI, especially with regard to structure member alignment, this | ||
413 | option also changes the kernel syscall calling convention to | ||
414 | disambiguate both ABIs and allow for backward compatibility support | ||
415 | (selected with CONFIG_OABI_COMPAT). | ||
416 | |||
417 | To use this you need GCC version 4.0.0 or later. | ||
418 | |||
419 | config OABI_COMPAT | ||
420 | bool "Allow old ABI binaries to run with this kernel" | ||
421 | depends on AEABI | ||
422 | default y | ||
423 | help | ||
424 | This option preserves the old syscall interface along with the | ||
425 | new (ARM EABI) one. It also provides a compatibility layer to | ||
426 | intercept syscalls that have structure arguments which layout | ||
427 | in memory differs between the legacy ABI and the new ARM EABI | ||
428 | (only for non "thumb" binaries). This option adds a tiny | ||
429 | overhead to all syscalls and produces a slightly larger kernel. | ||
430 | If you know you'll be using only pure EABI user space then you | ||
431 | can say N here. If this option is not selected and you attempt | ||
432 | to execute a legacy ABI binary then the result will be | ||
433 | UNPREDICTABLE (in fact it can be predicted that it won't work | ||
434 | at all). If in doubt say Y. | ||
435 | |||
404 | config ARCH_DISCONTIGMEM_ENABLE | 436 | config ARCH_DISCONTIGMEM_ENABLE |
405 | bool | 437 | bool |
406 | default (ARCH_LH7A40X && !LH7A40X_CONTIGMEM) | 438 | default (ARCH_LH7A40X && !LH7A40X_CONTIGMEM) |
@@ -418,7 +450,8 @@ config LEDS | |||
418 | ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \ | 450 | ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \ |
419 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ | 451 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ |
420 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ | 452 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ |
421 | ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE | 453 | ARCH_SA1100 || ARCH_SHARK || ARCH_VERSATILE || \ |
454 | ARCH_AT91RM9200 | ||
422 | help | 455 | help |
423 | If you say Y here, the LEDs on your machine will be used | 456 | If you say Y here, the LEDs on your machine will be used |
424 | to provide useful information about your current system status. | 457 | to provide useful information about your current system status. |
@@ -586,6 +619,7 @@ comment "At least one emulation must be selected" | |||
586 | 619 | ||
587 | config FPE_NWFPE | 620 | config FPE_NWFPE |
588 | bool "NWFPE math emulation" | 621 | bool "NWFPE math emulation" |
622 | depends on !AEABI || OABI_COMPAT | ||
589 | ---help--- | 623 | ---help--- |
590 | Say Y to include the NWFPE floating point emulator in the kernel. | 624 | Say Y to include the NWFPE floating point emulator in the kernel. |
591 | This is necessary to run most binaries. Linux does not currently | 625 | This is necessary to run most binaries. Linux does not currently |
@@ -609,7 +643,7 @@ config FPE_NWFPE_XP | |||
609 | 643 | ||
610 | config FPE_FASTFPE | 644 | config FPE_FASTFPE |
611 | bool "FastFPE math emulation (EXPERIMENTAL)" | 645 | bool "FastFPE math emulation (EXPERIMENTAL)" |
612 | depends on !CPU_32v3 && EXPERIMENTAL | 646 | depends on (!AEABI || OABI_COMPAT) && !CPU_32v3 && EXPERIMENTAL |
613 | ---help--- | 647 | ---help--- |
614 | Say Y here to include the FAST floating point emulator in the kernel. | 648 | Say Y here to include the FAST floating point emulator in the kernel. |
615 | This is an experimental much faster emulator which now also has full | 649 | This is an experimental much faster emulator which now also has full |
@@ -641,6 +675,7 @@ source "fs/Kconfig.binfmt" | |||
641 | 675 | ||
642 | config ARTHUR | 676 | config ARTHUR |
643 | tristate "RISC OS personality" | 677 | tristate "RISC OS personality" |
678 | depends on !AEABI | ||
644 | help | 679 | help |
645 | Say Y here to include the kernel code necessary if you want to run | 680 | Say Y here to include the kernel code necessary if you want to run |
646 | Acorn RISC OS/Arthur binaries under Linux. This code is still very | 681 | Acorn RISC OS/Arthur binaries under Linux. This code is still very |
@@ -656,7 +691,6 @@ source "kernel/power/Kconfig" | |||
656 | 691 | ||
657 | config APM | 692 | config APM |
658 | tristate "Advanced Power Management Emulation" | 693 | tristate "Advanced Power Management Emulation" |
659 | depends on PM_LEGACY | ||
660 | ---help--- | 694 | ---help--- |
661 | APM is a BIOS specification for saving power using several different | 695 | APM is a BIOS specification for saving power using several different |
662 | techniques. This is mostly useful for battery powered laptops with | 696 | techniques. This is mostly useful for battery powered laptops with |
@@ -730,6 +764,8 @@ source "drivers/char/Kconfig" | |||
730 | 764 | ||
731 | source "drivers/i2c/Kconfig" | 765 | source "drivers/i2c/Kconfig" |
732 | 766 | ||
767 | source "drivers/spi/Kconfig" | ||
768 | |||
733 | source "drivers/hwmon/Kconfig" | 769 | source "drivers/hwmon/Kconfig" |
734 | 770 | ||
735 | #source "drivers/l3/Kconfig" | 771 | #source "drivers/l3/Kconfig" |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 81bd2193fe6d..fbfc14a56b96 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 |
@@ -56,8 +56,13 @@ tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100 | |||
56 | tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale | 56 | tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale |
57 | tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) | 57 | tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) |
58 | 58 | ||
59 | # Need -Uarm for gcc < 3.x | 59 | ifeq ($(CONFIG_AEABI),y) |
60 | CFLAGS_ABI :=-mabi=aapcs -mno-thumb-interwork | ||
61 | else | ||
60 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) | 62 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) |
63 | endif | ||
64 | |||
65 | # Need -Uarm for gcc < 3.x | ||
61 | CFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm | 66 | CFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm |
62 | AFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float | 67 | AFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float |
63 | 68 | ||
@@ -65,7 +70,7 @@ CHECKFLAGS += -D__arm__ | |||
65 | 70 | ||
66 | #Default value | 71 | #Default value |
67 | head-y := arch/arm/kernel/head.o arch/arm/kernel/init_task.o | 72 | head-y := arch/arm/kernel/head.o arch/arm/kernel/init_task.o |
68 | textaddr-y := 0xC0008000 | 73 | textofs-y := 0x00008000 |
69 | 74 | ||
70 | machine-$(CONFIG_ARCH_RPC) := rpc | 75 | machine-$(CONFIG_ARCH_RPC) := rpc |
71 | machine-$(CONFIG_ARCH_EBSA110) := ebsa110 | 76 | machine-$(CONFIG_ARCH_EBSA110) := ebsa110 |
@@ -73,22 +78,19 @@ textaddr-y := 0xC0008000 | |||
73 | incdir-$(CONFIG_ARCH_CLPS7500) := cl7500 | 78 | incdir-$(CONFIG_ARCH_CLPS7500) := cl7500 |
74 | machine-$(CONFIG_FOOTBRIDGE) := footbridge | 79 | machine-$(CONFIG_FOOTBRIDGE) := footbridge |
75 | incdir-$(CONFIG_FOOTBRIDGE) := ebsa285 | 80 | incdir-$(CONFIG_FOOTBRIDGE) := ebsa285 |
76 | textaddr-$(CONFIG_ARCH_CO285) := 0x60008000 | ||
77 | machine-$(CONFIG_ARCH_CO285) := footbridge | 81 | machine-$(CONFIG_ARCH_CO285) := footbridge |
78 | incdir-$(CONFIG_ARCH_CO285) := ebsa285 | 82 | incdir-$(CONFIG_ARCH_CO285) := ebsa285 |
79 | machine-$(CONFIG_ARCH_SHARK) := shark | 83 | machine-$(CONFIG_ARCH_SHARK) := shark |
80 | machine-$(CONFIG_ARCH_SA1100) := sa1100 | 84 | machine-$(CONFIG_ARCH_SA1100) := sa1100 |
81 | ifeq ($(CONFIG_ARCH_SA1100),y) | 85 | ifeq ($(CONFIG_ARCH_SA1100),y) |
82 | # SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory | 86 | # SA1111 DMA bug: we don't want the kernel to live in precious DMA-able memory |
83 | textaddr-$(CONFIG_SA1111) := 0xc0208000 | 87 | textofs-$(CONFIG_SA1111) := 0x00208000 |
84 | endif | 88 | endif |
85 | machine-$(CONFIG_ARCH_PXA) := pxa | 89 | machine-$(CONFIG_ARCH_PXA) := pxa |
86 | machine-$(CONFIG_ARCH_L7200) := l7200 | 90 | machine-$(CONFIG_ARCH_L7200) := l7200 |
87 | machine-$(CONFIG_ARCH_INTEGRATOR) := integrator | 91 | machine-$(CONFIG_ARCH_INTEGRATOR) := integrator |
88 | machine-$(CONFIG_ARCH_CAMELOT) := epxa10db | 92 | textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000 |
89 | textaddr-$(CONFIG_ARCH_CLPS711X) := 0xc0028000 | ||
90 | machine-$(CONFIG_ARCH_CLPS711X) := clps711x | 93 | machine-$(CONFIG_ARCH_CLPS711X) := clps711x |
91 | textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000 | ||
92 | machine-$(CONFIG_ARCH_IOP3XX) := iop3xx | 94 | machine-$(CONFIG_ARCH_IOP3XX) := iop3xx |
93 | machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx | 95 | machine-$(CONFIG_ARCH_IXP4XX) := ixp4xx |
94 | machine-$(CONFIG_ARCH_IXP2000) := ixp2000 | 96 | machine-$(CONFIG_ARCH_IXP2000) := ixp2000 |
@@ -102,6 +104,7 @@ textaddr-$(CONFIG_ARCH_FORTUNET) := 0xc0008000 | |||
102 | machine-$(CONFIG_ARCH_H720X) := h720x | 104 | machine-$(CONFIG_ARCH_H720X) := h720x |
103 | machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 | 105 | machine-$(CONFIG_ARCH_AAEC2000) := aaec2000 |
104 | machine-$(CONFIG_ARCH_REALVIEW) := realview | 106 | machine-$(CONFIG_ARCH_REALVIEW) := realview |
107 | machine-$(CONFIG_ARCH_AT91RM9200) := at91rm9200 | ||
105 | 108 | ||
106 | ifeq ($(CONFIG_ARCH_EBSA110),y) | 109 | ifeq ($(CONFIG_ARCH_EBSA110),y) |
107 | # This is what happens if you forget the IOCS16 line. | 110 | # This is what happens if you forget the IOCS16 line. |
@@ -110,7 +113,8 @@ CFLAGS_3c589_cs.o :=-DISA_SIXTEEN_BIT_PERIPHERAL | |||
110 | export CFLAGS_3c589_cs.o | 113 | export CFLAGS_3c589_cs.o |
111 | endif | 114 | endif |
112 | 115 | ||
113 | TEXTADDR := $(textaddr-y) | 116 | # The byte offset of the kernel image in RAM from the start of RAM. |
117 | TEXT_OFFSET := $(textofs-y) | ||
114 | 118 | ||
115 | ifeq ($(incdir-y),) | 119 | ifeq ($(incdir-y),) |
116 | incdir-y := $(machine-y) | 120 | incdir-y := $(machine-y) |
@@ -123,7 +127,7 @@ else | |||
123 | MACHINE := | 127 | MACHINE := |
124 | endif | 128 | endif |
125 | 129 | ||
126 | export TEXTADDR GZFLAGS | 130 | export TEXT_OFFSET GZFLAGS |
127 | 131 | ||
128 | # Do we have FASTFPE? | 132 | # Do we have FASTFPE? |
129 | FASTFPE :=arch/arm/fastfpe | 133 | FASTFPE :=arch/arm/fastfpe |
diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile index 937a353bc37c..a174d63395ea 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 6b505ce41a75..35ffe0f4ece7 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 000000000000..2119ea62b547 --- /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 757681f12a39..000000000000 --- 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 6abafb6f1844..db3389d8e027 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, r9 @ 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 666ba393575b..5e34ca6d38b6 100644 --- a/arch/arm/common/Kconfig +++ b/arch/arm/common/Kconfig | |||
@@ -1,7 +1,10 @@ | |||
1 | config ICST525 | 1 | config ARM_GIC |
2 | bool | 2 | bool |
3 | 3 | ||
4 | config ARM_GIC | 4 | config ARM_VIC |
5 | bool | ||
6 | |||
7 | config ICST525 | ||
5 | bool | 8 | bool |
6 | 9 | ||
7 | config ICST307 | 10 | config ICST307 |
@@ -23,5 +26,8 @@ config SHARP_LOCOMO | |||
23 | config SHARP_PARAM | 26 | config SHARP_PARAM |
24 | bool | 27 | bool |
25 | 28 | ||
29 | config SHARPSL_PM | ||
30 | bool | ||
31 | |||
26 | config SHARP_SCOOP | 32 | config SHARP_SCOOP |
27 | bool | 33 | bool |
diff --git a/arch/arm/common/Makefile b/arch/arm/common/Makefile index a87886564b19..c81a2ff6b5be 100644 --- a/arch/arm/common/Makefile +++ b/arch/arm/common/Makefile | |||
@@ -3,8 +3,8 @@ | |||
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 |
7 | obj-$(CONFIG_ARM_VIC) += vic.o | ||
8 | obj-$(CONFIG_ICST525) += icst525.o | 8 | obj-$(CONFIG_ICST525) += icst525.o |
9 | obj-$(CONFIG_ICST307) += icst307.o | 9 | obj-$(CONFIG_ICST307) += icst307.o |
10 | obj-$(CONFIG_SA1111) += sa1111.o | 10 | obj-$(CONFIG_SA1111) += sa1111.o |
@@ -13,4 +13,5 @@ obj-$(CONFIG_DMABOUNCE) += dmabounce.o | |||
13 | obj-$(CONFIG_TIMER_ACORN) += time-acorn.o | 13 | obj-$(CONFIG_TIMER_ACORN) += time-acorn.o |
14 | obj-$(CONFIG_SHARP_LOCOMO) += locomo.o | 14 | obj-$(CONFIG_SHARP_LOCOMO) += locomo.o |
15 | obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o | 15 | obj-$(CONFIG_SHARP_PARAM) += sharpsl_param.o |
16 | obj-$(CONFIG_SHARPSL_PM) += sharpsl_pm.o | ||
16 | obj-$(CONFIG_SHARP_SCOOP) += scoop.o | 17 | 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 c95ec9eab996..000000000000 --- 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_uevent(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_uevent 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 | .uevent = amba_uevent, | ||
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/locomo.c b/arch/arm/common/locomo.c index 1b7eaab02b9e..159ad7ed7a40 100644 --- a/arch/arm/common/locomo.c +++ b/arch/arm/common/locomo.c | |||
@@ -1103,14 +1103,14 @@ static int locomo_bus_remove(struct device *dev) | |||
1103 | struct bus_type locomo_bus_type = { | 1103 | struct bus_type locomo_bus_type = { |
1104 | .name = "locomo-bus", | 1104 | .name = "locomo-bus", |
1105 | .match = locomo_match, | 1105 | .match = locomo_match, |
1106 | .probe = locomo_bus_probe, | ||
1107 | .remove = locomo_bus_remove, | ||
1106 | .suspend = locomo_bus_suspend, | 1108 | .suspend = locomo_bus_suspend, |
1107 | .resume = locomo_bus_resume, | 1109 | .resume = locomo_bus_resume, |
1108 | }; | 1110 | }; |
1109 | 1111 | ||
1110 | int locomo_driver_register(struct locomo_driver *driver) | 1112 | int locomo_driver_register(struct locomo_driver *driver) |
1111 | { | 1113 | { |
1112 | driver->drv.probe = locomo_bus_probe; | ||
1113 | driver->drv.remove = locomo_bus_remove; | ||
1114 | driver->drv.bus = &locomo_bus_type; | 1114 | driver->drv.bus = &locomo_bus_type; |
1115 | return driver_register(&driver->drv); | 1115 | return driver_register(&driver->drv); |
1116 | } | 1116 | } |
diff --git a/arch/arm/common/rtctime.c b/arch/arm/common/rtctime.c index 72b03f201eb9..48b1e19b131f 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/sa1111.c b/arch/arm/common/sa1111.c index d0d6e6d2d649..1475089f9b42 100644 --- a/arch/arm/common/sa1111.c +++ b/arch/arm/common/sa1111.c | |||
@@ -1247,14 +1247,14 @@ static int sa1111_bus_remove(struct device *dev) | |||
1247 | struct bus_type sa1111_bus_type = { | 1247 | struct bus_type sa1111_bus_type = { |
1248 | .name = "sa1111-rab", | 1248 | .name = "sa1111-rab", |
1249 | .match = sa1111_match, | 1249 | .match = sa1111_match, |
1250 | .probe = sa1111_bus_probe, | ||
1251 | .remove = sa1111_bus_remove, | ||
1250 | .suspend = sa1111_bus_suspend, | 1252 | .suspend = sa1111_bus_suspend, |
1251 | .resume = sa1111_bus_resume, | 1253 | .resume = sa1111_bus_resume, |
1252 | }; | 1254 | }; |
1253 | 1255 | ||
1254 | int sa1111_driver_register(struct sa1111_driver *driver) | 1256 | int sa1111_driver_register(struct sa1111_driver *driver) |
1255 | { | 1257 | { |
1256 | driver->drv.probe = sa1111_bus_probe; | ||
1257 | driver->drv.remove = sa1111_bus_remove; | ||
1258 | driver->drv.bus = &sa1111_bus_type; | 1258 | driver->drv.bus = &sa1111_bus_type; |
1259 | return driver_register(&driver->drv); | 1259 | return driver_register(&driver->drv); |
1260 | } | 1260 | } |
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c index 0c3cbd9a388b..a2dfe0b0f1ec 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 000000000000..978d32e82d39 --- /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/common/vic.c b/arch/arm/common/vic.c new file mode 100644 index 000000000000..a45ed1687a59 --- /dev/null +++ b/arch/arm/common/vic.c | |||
@@ -0,0 +1,92 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/common/vic.c | ||
3 | * | ||
4 | * Copyright (C) 1999 - 2003 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 | #include <linux/list.h> | ||
23 | |||
24 | #include <asm/io.h> | ||
25 | #include <asm/irq.h> | ||
26 | #include <asm/mach/irq.h> | ||
27 | #include <asm/hardware/vic.h> | ||
28 | |||
29 | static void __iomem *vic_base; | ||
30 | |||
31 | static void vic_mask_irq(unsigned int irq) | ||
32 | { | ||
33 | irq -= IRQ_VIC_START; | ||
34 | writel(1 << irq, vic_base + VIC_INT_ENABLE_CLEAR); | ||
35 | } | ||
36 | |||
37 | static void vic_unmask_irq(unsigned int irq) | ||
38 | { | ||
39 | irq -= IRQ_VIC_START; | ||
40 | writel(1 << irq, vic_base + VIC_INT_ENABLE); | ||
41 | } | ||
42 | |||
43 | static struct irqchip vic_chip = { | ||
44 | .ack = vic_mask_irq, | ||
45 | .mask = vic_mask_irq, | ||
46 | .unmask = vic_unmask_irq, | ||
47 | }; | ||
48 | |||
49 | void __init vic_init(void __iomem *base, u32 vic_sources) | ||
50 | { | ||
51 | unsigned int i; | ||
52 | |||
53 | vic_base = base; | ||
54 | |||
55 | /* Disable all interrupts initially. */ | ||
56 | |||
57 | writel(0, vic_base + VIC_INT_SELECT); | ||
58 | writel(0, vic_base + VIC_INT_ENABLE); | ||
59 | writel(~0, vic_base + VIC_INT_ENABLE_CLEAR); | ||
60 | writel(0, vic_base + VIC_IRQ_STATUS); | ||
61 | writel(0, vic_base + VIC_ITCR); | ||
62 | writel(~0, vic_base + VIC_INT_SOFT_CLEAR); | ||
63 | |||
64 | /* | ||
65 | * Make sure we clear all existing interrupts | ||
66 | */ | ||
67 | writel(0, vic_base + VIC_VECT_ADDR); | ||
68 | for (i = 0; i < 19; i++) { | ||
69 | unsigned int value; | ||
70 | |||
71 | value = readl(vic_base + VIC_VECT_ADDR); | ||
72 | writel(value, vic_base + VIC_VECT_ADDR); | ||
73 | } | ||
74 | |||
75 | for (i = 0; i < 16; i++) { | ||
76 | void __iomem *reg = vic_base + VIC_VECT_CNTL0 + (i * 4); | ||
77 | writel(VIC_VECT_CNTL_ENABLE | i, reg); | ||
78 | } | ||
79 | |||
80 | writel(32, vic_base + VIC_DEF_VECT_ADDR); | ||
81 | |||
82 | for (i = 0; i < 32; i++) { | ||
83 | unsigned int irq = IRQ_VIC_START + i; | ||
84 | |||
85 | set_irq_chip(irq, &vic_chip); | ||
86 | |||
87 | if (vic_sources & (1 << i)) { | ||
88 | set_irq_handler(irq, do_level_IRQ); | ||
89 | set_irq_flags(irq, IRQF_VALID | IRQF_PROBE); | ||
90 | } | ||
91 | } | ||
92 | } | ||
diff --git a/arch/arm/configs/assabet_defconfig b/arch/arm/configs/assabet_defconfig index ccbb4c0d58c4..089c9d598409 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 000000000000..5cdd13acf8ff --- /dev/null +++ b/arch/arm/configs/at91rm9200dk_defconfig | |||
@@ -0,0 +1,1009 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.15 | ||
4 | # Mon Jan 9 20:54:30 2006 | ||
5 | # | ||
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 000000000000..20838ccf1da7 --- /dev/null +++ b/arch/arm/configs/at91rm9200ek_defconfig | |||
@@ -0,0 +1,998 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.15 | ||
4 | # Mon Jan 9 20:57:31 2006 | ||
5 | # | ||
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 5d92af975d87..cfe6bd8e81cd 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 35e3a99bcbb6..6886001b5366 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 d8fe0f40408f..f81a60005cd3 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 908758371405..af9ae5389131 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 40dfe07a8bce..15468a0cf70e 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 06229026f78b..3c3461e83398 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 000000000000..885a3184830a --- /dev/null +++ b/arch/arm/configs/csb337_defconfig | |||
@@ -0,0 +1,1136 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.15 | ||
4 | # Mon Jan 9 21:51:31 2006 | ||
5 | # | ||
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 000000000000..95a96a5462a0 --- /dev/null +++ b/arch/arm/configs/csb637_defconfig | |||
@@ -0,0 +1,1116 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.15 | ||
4 | # Mon Jan 9 21:52:00 2006 | ||
5 | # | ||
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 6f61929b97a8..afcfff6140f2 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 78b08ed4d5f4..6ba7355ff85b 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 fd7c0042bcca..9592e3925c79 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 96342afa9c5f..3c73b707c2f3 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 |
@@ -523,6 +522,7 @@ CONFIG_E100=y | |||
523 | # CONFIG_DL2K is not set | 522 | # CONFIG_DL2K is not set |
524 | CONFIG_E1000=y | 523 | CONFIG_E1000=y |
525 | CONFIG_E1000_NAPI=y | 524 | CONFIG_E1000_NAPI=y |
525 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | ||
526 | # CONFIG_NS83820 is not set | 526 | # CONFIG_NS83820 is not set |
527 | # CONFIG_HAMACHI is not set | 527 | # CONFIG_HAMACHI is not set |
528 | # CONFIG_YELLOWFIN is not set | 528 | # CONFIG_YELLOWFIN is not set |
diff --git a/arch/arm/configs/epxa10db_defconfig b/arch/arm/configs/epxa10db_defconfig deleted file mode 100644 index 9fb8b58c4954..000000000000 --- 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 9737c4850721..2a612d23120b 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 b6f688d850dc..65dc73a88c43 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 b9de07de80fe..7a0da0b7facb 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 39c13a354541..116920aecef7 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 fbf5c244c696..9d62ed16bf57 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 fb41a36a5a68..a45b57582b86 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 27ee76825254..d1ba7fdde818 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 e71443b97390..32467160a6df 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 |
@@ -494,6 +493,7 @@ CONFIG_NETDEVICES=y | |||
494 | # CONFIG_DL2K is not set | 493 | # CONFIG_DL2K is not set |
495 | CONFIG_E1000=y | 494 | CONFIG_E1000=y |
496 | CONFIG_E1000_NAPI=y | 495 | CONFIG_E1000_NAPI=y |
496 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | ||
497 | # CONFIG_NS83820 is not set | 497 | # CONFIG_NS83820 is not set |
498 | # CONFIG_HAMACHI is not set | 498 | # CONFIG_HAMACHI is not set |
499 | # CONFIG_YELLOWFIN is not set | 499 | # CONFIG_YELLOWFIN is not set |
diff --git a/arch/arm/configs/iq80321_defconfig b/arch/arm/configs/iq80321_defconfig index ab5ad23b27da..b000da753c41 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 |
@@ -416,6 +415,7 @@ CONFIG_NETDEVICES=y | |||
416 | # CONFIG_DL2K is not set | 415 | # CONFIG_DL2K is not set |
417 | CONFIG_E1000=y | 416 | CONFIG_E1000=y |
418 | CONFIG_E1000_NAPI=y | 417 | CONFIG_E1000_NAPI=y |
418 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | ||
419 | # CONFIG_NS83820 is not set | 419 | # CONFIG_NS83820 is not set |
420 | # CONFIG_HAMACHI is not set | 420 | # CONFIG_HAMACHI is not set |
421 | # CONFIG_YELLOWFIN is not set | 421 | # CONFIG_YELLOWFIN is not set |
diff --git a/arch/arm/configs/iq80331_defconfig b/arch/arm/configs/iq80331_defconfig index bb536133ef87..46c79e1efe07 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 |
@@ -497,6 +496,7 @@ CONFIG_NETDEVICES=y | |||
497 | # CONFIG_DL2K is not set | 496 | # CONFIG_DL2K is not set |
498 | CONFIG_E1000=y | 497 | CONFIG_E1000=y |
499 | CONFIG_E1000_NAPI=y | 498 | CONFIG_E1000_NAPI=y |
499 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | ||
500 | # CONFIG_NS83820 is not set | 500 | # CONFIG_NS83820 is not set |
501 | # CONFIG_HAMACHI is not set | 501 | # CONFIG_HAMACHI is not set |
502 | # CONFIG_YELLOWFIN is not set | 502 | # CONFIG_YELLOWFIN is not set |
diff --git a/arch/arm/configs/iq80332_defconfig b/arch/arm/configs/iq80332_defconfig index 305f01f3a729..11959b705d82 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 |
@@ -497,6 +496,7 @@ CONFIG_NETDEVICES=y | |||
497 | # CONFIG_DL2K is not set | 496 | # CONFIG_DL2K is not set |
498 | CONFIG_E1000=y | 497 | CONFIG_E1000=y |
499 | CONFIG_E1000_NAPI=y | 498 | CONFIG_E1000_NAPI=y |
499 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | ||
500 | # CONFIG_NS83820 is not set | 500 | # CONFIG_NS83820 is not set |
501 | # CONFIG_HAMACHI is not set | 501 | # CONFIG_HAMACHI is not set |
502 | # CONFIG_YELLOWFIN is not set | 502 | # CONFIG_YELLOWFIN is not set |
diff --git a/arch/arm/configs/ixdp2400_defconfig b/arch/arm/configs/ixdp2400_defconfig index e6a4d2656fe5..d9d6bb86a6fa 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 5572cf95d5f8..2dc9d499c7d7 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 0fddbde85835..4248123815e9 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 89b9aa06aa91..ea8f4b478fa3 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 f74c926beb42..4975b914f923 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 b88aeba82bc0..ad1048db96fb 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 7033829ed145..c3a932844160 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 d64706d3ff35..67eaa26c2647 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 87cbedfb303f..208d591ebfce 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 4bc8717c6f57..81daadcbe0ba 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 3ca64cabc92c..42f6a77bc3c0 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 153d68594beb..b112bd75bda2 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 6517d167acf0..d16f6cd6e039 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 7fb1f7c7bf43..3d35255c64ed 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 6e81acf94c2f..2cae1ead9f9b 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 529f0f72e1e9..ee3ecbd9002d 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 10fec890578d..24e8bdd4cb91 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 21c327883d8c..b71d31a4bb56 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 0485b2f1cc20..3f1ec4e304f7 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 19184c1010ad..b498afdc03b6 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 3f97590c91f2..33f31080a98c 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 e3facc4fe792..d052c8f80515 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 271823f0d708..c48d17062262 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 5373eeb7d578..2e5a616cc98d 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 2c60865fda19..4d123d33c7df 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 9895539533d6..d1ace3abfd8a 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 d72f2c754268..2687a225aa6a 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 c11169b5ed9a..2ce0e3a27a45 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 |
@@ -19,6 +20,7 @@ obj-$(CONFIG_ARTHUR) += arthur.o | |||
19 | obj-$(CONFIG_ISA_DMA) += dma-isa.o | 20 | obj-$(CONFIG_ISA_DMA) += dma-isa.o |
20 | obj-$(CONFIG_PCI) += bios32.o | 21 | obj-$(CONFIG_PCI) += bios32.o |
21 | obj-$(CONFIG_SMP) += smp.o | 22 | obj-$(CONFIG_SMP) += smp.o |
23 | obj-$(CONFIG_OABI_COMPAT) += sys_oabi-compat.o | ||
22 | 24 | ||
23 | obj-$(CONFIG_IWMMXT) += iwmmxt.o | 25 | obj-$(CONFIG_IWMMXT) += iwmmxt.o |
24 | AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt | 26 | AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt |
diff --git a/arch/arm/kernel/apm.c b/arch/arm/kernel/apm.c index a2843be05557..766b6c05c6db 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/armksyms.c b/arch/arm/kernel/armksyms.c index 9997098009a9..1574941ebfe1 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c | |||
@@ -35,6 +35,16 @@ extern void __udivsi3(void); | |||
35 | extern void __umodsi3(void); | 35 | extern void __umodsi3(void); |
36 | extern void __do_div64(void); | 36 | extern void __do_div64(void); |
37 | 37 | ||
38 | extern void __aeabi_idiv(void); | ||
39 | extern void __aeabi_idivmod(void); | ||
40 | extern void __aeabi_lasr(void); | ||
41 | extern void __aeabi_llsl(void); | ||
42 | extern void __aeabi_llsr(void); | ||
43 | extern void __aeabi_lmul(void); | ||
44 | extern void __aeabi_uidiv(void); | ||
45 | extern void __aeabi_uidivmod(void); | ||
46 | extern void __aeabi_ulcmp(void); | ||
47 | |||
38 | extern void fpundefinstr(void); | 48 | extern void fpundefinstr(void); |
39 | extern void fp_enter(void); | 49 | extern void fp_enter(void); |
40 | 50 | ||
@@ -141,6 +151,18 @@ EXPORT_SYMBOL(__udivsi3); | |||
141 | EXPORT_SYMBOL(__umodsi3); | 151 | EXPORT_SYMBOL(__umodsi3); |
142 | EXPORT_SYMBOL(__do_div64); | 152 | EXPORT_SYMBOL(__do_div64); |
143 | 153 | ||
154 | #ifdef CONFIG_AEABI | ||
155 | EXPORT_SYMBOL(__aeabi_idiv); | ||
156 | EXPORT_SYMBOL(__aeabi_idivmod); | ||
157 | EXPORT_SYMBOL(__aeabi_lasr); | ||
158 | EXPORT_SYMBOL(__aeabi_llsl); | ||
159 | EXPORT_SYMBOL(__aeabi_llsr); | ||
160 | EXPORT_SYMBOL(__aeabi_lmul); | ||
161 | EXPORT_SYMBOL(__aeabi_uidiv); | ||
162 | EXPORT_SYMBOL(__aeabi_uidivmod); | ||
163 | EXPORT_SYMBOL(__aeabi_ulcmp); | ||
164 | #endif | ||
165 | |||
144 | /* bitops */ | 166 | /* bitops */ |
145 | EXPORT_SYMBOL(_set_bit_le); | 167 | EXPORT_SYMBOL(_set_bit_le); |
146 | EXPORT_SYMBOL(_test_and_set_bit_le); | 168 | EXPORT_SYMBOL(_test_and_set_bit_le); |
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 04d3082a7b94..0abbce8c70bc 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/calls.S b/arch/arm/kernel/calls.S index 55076a75e5bf..75e6f9a94713 100644 --- a/arch/arm/kernel/calls.S +++ b/arch/arm/kernel/calls.S | |||
@@ -13,7 +13,7 @@ | |||
13 | #define NR_syscalls 328 | 13 | #define NR_syscalls 328 |
14 | #else | 14 | #else |
15 | 15 | ||
16 | __syscall_start: | 16 | 100: |
17 | /* 0 */ .long sys_restart_syscall | 17 | /* 0 */ .long sys_restart_syscall |
18 | .long sys_exit | 18 | .long sys_exit |
19 | .long sys_fork_wrapper | 19 | .long sys_fork_wrapper |
@@ -27,7 +27,7 @@ __syscall_start: | |||
27 | /* 10 */ .long sys_unlink | 27 | /* 10 */ .long sys_unlink |
28 | .long sys_execve_wrapper | 28 | .long sys_execve_wrapper |
29 | .long sys_chdir | 29 | .long sys_chdir |
30 | .long sys_time /* used by libc4 */ | 30 | .long OBSOLETE(sys_time) /* used by libc4 */ |
31 | .long sys_mknod | 31 | .long sys_mknod |
32 | /* 15 */ .long sys_chmod | 32 | /* 15 */ .long sys_chmod |
33 | .long sys_lchown16 | 33 | .long sys_lchown16 |
@@ -36,15 +36,15 @@ __syscall_start: | |||
36 | .long sys_lseek | 36 | .long sys_lseek |
37 | /* 20 */ .long sys_getpid | 37 | /* 20 */ .long sys_getpid |
38 | .long sys_mount | 38 | .long sys_mount |
39 | .long sys_oldumount /* used by libc4 */ | 39 | .long OBSOLETE(sys_oldumount) /* used by libc4 */ |
40 | .long sys_setuid16 | 40 | .long sys_setuid16 |
41 | .long sys_getuid16 | 41 | .long sys_getuid16 |
42 | /* 25 */ .long sys_stime | 42 | /* 25 */ .long OBSOLETE(sys_stime) |
43 | .long sys_ptrace | 43 | .long sys_ptrace |
44 | .long sys_alarm /* used by libc4 */ | 44 | .long OBSOLETE(sys_alarm) /* used by libc4 */ |
45 | .long sys_ni_syscall /* was sys_fstat */ | 45 | .long sys_ni_syscall /* was sys_fstat */ |
46 | .long sys_pause | 46 | .long sys_pause |
47 | /* 30 */ .long sys_utime /* used by libc4 */ | 47 | /* 30 */ .long OBSOLETE(sys_utime) /* used by libc4 */ |
48 | .long sys_ni_syscall /* was sys_stty */ | 48 | .long sys_ni_syscall /* was sys_stty */ |
49 | .long sys_ni_syscall /* was sys_getty */ | 49 | .long sys_ni_syscall /* was sys_getty */ |
50 | .long sys_access | 50 | .long sys_access |
@@ -90,21 +90,21 @@ __syscall_start: | |||
90 | .long sys_sigpending | 90 | .long sys_sigpending |
91 | .long sys_sethostname | 91 | .long sys_sethostname |
92 | /* 75 */ .long sys_setrlimit | 92 | /* 75 */ .long sys_setrlimit |
93 | .long sys_old_getrlimit /* used by libc4 */ | 93 | .long OBSOLETE(sys_old_getrlimit) /* used by libc4 */ |
94 | .long sys_getrusage | 94 | .long sys_getrusage |
95 | .long sys_gettimeofday | 95 | .long sys_gettimeofday |
96 | .long sys_settimeofday | 96 | .long sys_settimeofday |
97 | /* 80 */ .long sys_getgroups16 | 97 | /* 80 */ .long sys_getgroups16 |
98 | .long sys_setgroups16 | 98 | .long sys_setgroups16 |
99 | .long old_select /* used by libc4 */ | 99 | .long OBSOLETE(old_select) /* used by libc4 */ |
100 | .long sys_symlink | 100 | .long sys_symlink |
101 | .long sys_ni_syscall /* was sys_lstat */ | 101 | .long sys_ni_syscall /* was sys_lstat */ |
102 | /* 85 */ .long sys_readlink | 102 | /* 85 */ .long sys_readlink |
103 | .long sys_uselib | 103 | .long sys_uselib |
104 | .long sys_swapon | 104 | .long sys_swapon |
105 | .long sys_reboot | 105 | .long sys_reboot |
106 | .long old_readdir /* used by libc4 */ | 106 | .long OBSOLETE(old_readdir) /* used by libc4 */ |
107 | /* 90 */ .long old_mmap /* used by libc4 */ | 107 | /* 90 */ .long OBSOLETE(old_mmap) /* used by libc4 */ |
108 | .long sys_munmap | 108 | .long sys_munmap |
109 | .long sys_truncate | 109 | .long sys_truncate |
110 | .long sys_ftruncate | 110 | .long sys_ftruncate |
@@ -116,7 +116,7 @@ __syscall_start: | |||
116 | .long sys_statfs | 116 | .long sys_statfs |
117 | /* 100 */ .long sys_fstatfs | 117 | /* 100 */ .long sys_fstatfs |
118 | .long sys_ni_syscall | 118 | .long sys_ni_syscall |
119 | .long sys_socketcall | 119 | .long OBSOLETE(sys_socketcall) |
120 | .long sys_syslog | 120 | .long sys_syslog |
121 | .long sys_setitimer | 121 | .long sys_setitimer |
122 | /* 105 */ .long sys_getitimer | 122 | /* 105 */ .long sys_getitimer |
@@ -127,11 +127,11 @@ __syscall_start: | |||
127 | /* 110 */ .long sys_ni_syscall /* was sys_iopl */ | 127 | /* 110 */ .long sys_ni_syscall /* was sys_iopl */ |
128 | .long sys_vhangup | 128 | .long sys_vhangup |
129 | .long sys_ni_syscall | 129 | .long sys_ni_syscall |
130 | .long sys_syscall /* call a syscall */ | 130 | .long OBSOLETE(sys_syscall) /* call a syscall */ |
131 | .long sys_wait4 | 131 | .long sys_wait4 |
132 | /* 115 */ .long sys_swapoff | 132 | /* 115 */ .long sys_swapoff |
133 | .long sys_sysinfo | 133 | .long sys_sysinfo |
134 | .long sys_ipc | 134 | .long OBSOLETE(ABI(sys_ipc, sys_oabi_ipc)) |
135 | .long sys_fsync | 135 | .long sys_fsync |
136 | .long sys_sigreturn_wrapper | 136 | .long sys_sigreturn_wrapper |
137 | /* 120 */ .long sys_clone_wrapper | 137 | /* 120 */ .long sys_clone_wrapper |
@@ -194,8 +194,8 @@ __syscall_start: | |||
194 | .long sys_rt_sigtimedwait | 194 | .long sys_rt_sigtimedwait |
195 | .long sys_rt_sigqueueinfo | 195 | .long sys_rt_sigqueueinfo |
196 | .long sys_rt_sigsuspend_wrapper | 196 | .long sys_rt_sigsuspend_wrapper |
197 | /* 180 */ .long sys_pread64 | 197 | /* 180 */ .long ABI(sys_pread64, sys_oabi_pread64) |
198 | .long sys_pwrite64 | 198 | .long ABI(sys_pwrite64, sys_oabi_pwrite64) |
199 | .long sys_chown16 | 199 | .long sys_chown16 |
200 | .long sys_getcwd | 200 | .long sys_getcwd |
201 | .long sys_capget | 201 | .long sys_capget |
@@ -207,11 +207,11 @@ __syscall_start: | |||
207 | /* 190 */ .long sys_vfork_wrapper | 207 | /* 190 */ .long sys_vfork_wrapper |
208 | .long sys_getrlimit | 208 | .long sys_getrlimit |
209 | .long sys_mmap2 | 209 | .long sys_mmap2 |
210 | .long sys_truncate64 | 210 | .long ABI(sys_truncate64, sys_oabi_truncate64) |
211 | .long sys_ftruncate64 | 211 | .long ABI(sys_ftruncate64, sys_oabi_ftruncate64) |
212 | /* 195 */ .long sys_stat64 | 212 | /* 195 */ .long ABI(sys_stat64, sys_oabi_stat64) |
213 | .long sys_lstat64 | 213 | .long ABI(sys_lstat64, sys_oabi_lstat64) |
214 | .long sys_fstat64 | 214 | .long ABI(sys_fstat64, sys_oabi_fstat64) |
215 | .long sys_lchown | 215 | .long sys_lchown |
216 | .long sys_getuid | 216 | .long sys_getuid |
217 | /* 200 */ .long sys_getgid | 217 | /* 200 */ .long sys_getgid |
@@ -235,11 +235,11 @@ __syscall_start: | |||
235 | .long sys_pivot_root | 235 | .long sys_pivot_root |
236 | .long sys_mincore | 236 | .long sys_mincore |
237 | /* 220 */ .long sys_madvise | 237 | /* 220 */ .long sys_madvise |
238 | .long sys_fcntl64 | 238 | .long ABI(sys_fcntl64, sys_oabi_fcntl64) |
239 | .long sys_ni_syscall /* TUX */ | 239 | .long sys_ni_syscall /* TUX */ |
240 | .long sys_ni_syscall | 240 | .long sys_ni_syscall |
241 | .long sys_gettid | 241 | .long sys_gettid |
242 | /* 225 */ .long sys_readahead | 242 | /* 225 */ .long ABI(sys_readahead, sys_oabi_readahead) |
243 | .long sys_setxattr | 243 | .long sys_setxattr |
244 | .long sys_lsetxattr | 244 | .long sys_lsetxattr |
245 | .long sys_fsetxattr | 245 | .long sys_fsetxattr |
@@ -265,8 +265,8 @@ __syscall_start: | |||
265 | .long sys_exit_group | 265 | .long sys_exit_group |
266 | .long sys_lookup_dcookie | 266 | .long sys_lookup_dcookie |
267 | /* 250 */ .long sys_epoll_create | 267 | /* 250 */ .long sys_epoll_create |
268 | .long sys_epoll_ctl | 268 | .long ABI(sys_epoll_ctl, sys_oabi_epoll_ctl) |
269 | .long sys_epoll_wait | 269 | .long ABI(sys_epoll_wait, sys_oabi_epoll_wait) |
270 | .long sys_remap_file_pages | 270 | .long sys_remap_file_pages |
271 | .long sys_ni_syscall /* sys_set_thread_area */ | 271 | .long sys_ni_syscall /* sys_set_thread_area */ |
272 | /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ | 272 | /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ |
@@ -280,8 +280,8 @@ __syscall_start: | |||
280 | .long sys_clock_gettime | 280 | .long sys_clock_gettime |
281 | .long sys_clock_getres | 281 | .long sys_clock_getres |
282 | /* 265 */ .long sys_clock_nanosleep | 282 | /* 265 */ .long sys_clock_nanosleep |
283 | .long sys_statfs64 | 283 | .long sys_statfs64_wrapper |
284 | .long sys_fstatfs64 | 284 | .long sys_fstatfs64_wrapper |
285 | .long sys_tgkill | 285 | .long sys_tgkill |
286 | .long sys_utimes | 286 | .long sys_utimes |
287 | /* 270 */ .long sys_arm_fadvise64_64 | 287 | /* 270 */ .long sys_arm_fadvise64_64 |
@@ -312,7 +312,7 @@ __syscall_start: | |||
312 | /* 295 */ .long sys_getsockopt | 312 | /* 295 */ .long sys_getsockopt |
313 | .long sys_sendmsg | 313 | .long sys_sendmsg |
314 | .long sys_recvmsg | 314 | .long sys_recvmsg |
315 | .long sys_semop | 315 | .long ABI(sys_semop, sys_oabi_semop) |
316 | .long sys_semget | 316 | .long sys_semget |
317 | /* 300 */ .long sys_semctl | 317 | /* 300 */ .long sys_semctl |
318 | .long sys_msgsnd | 318 | .long sys_msgsnd |
@@ -326,7 +326,7 @@ __syscall_start: | |||
326 | .long sys_add_key | 326 | .long sys_add_key |
327 | /* 310 */ .long sys_request_key | 327 | /* 310 */ .long sys_request_key |
328 | .long sys_keyctl | 328 | .long sys_keyctl |
329 | .long sys_semtimedop | 329 | .long ABI(sys_semtimedop, sys_oabi_semtimedop) |
330 | /* vserver */ .long sys_ni_syscall | 330 | /* vserver */ .long sys_ni_syscall |
331 | .long sys_ioprio_set | 331 | .long sys_ioprio_set |
332 | /* 315 */ .long sys_ioprio_get | 332 | /* 315 */ .long sys_ioprio_get |
@@ -336,9 +336,8 @@ __syscall_start: | |||
336 | .long sys_mbind | 336 | .long sys_mbind |
337 | /* 320 */ .long sys_get_mempolicy | 337 | /* 320 */ .long sys_get_mempolicy |
338 | .long sys_set_mempolicy | 338 | .long sys_set_mempolicy |
339 | __syscall_end: | ||
340 | 339 | ||
341 | .rept NR_syscalls - (__syscall_end - __syscall_start) / 4 | 340 | .rept NR_syscalls - (. - 100b) / 4 |
342 | .long sys_ni_syscall | 341 | .long sys_ni_syscall |
343 | .endr | 342 | .endr |
344 | #endif | 343 | #endif |
diff --git a/arch/arm/kernel/dma-isa.c b/arch/arm/kernel/dma-isa.c index e9a36304ec3e..03532769a97f 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 2b7883884234..5a0f4bc5da95 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 dceb826bd216..74ea29c3205e 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 ===================== */ |
@@ -1146,9 +1147,11 @@ static void ecard_drv_shutdown(struct device *dev) | |||
1146 | struct ecard_driver *drv = ECARD_DRV(dev->driver); | 1147 | struct ecard_driver *drv = ECARD_DRV(dev->driver); |
1147 | struct ecard_request req; | 1148 | struct ecard_request req; |
1148 | 1149 | ||
1149 | if (drv->shutdown) | 1150 | if (dev->driver) { |
1150 | drv->shutdown(ec); | 1151 | if (drv->shutdown) |
1151 | ecard_release(ec); | 1152 | drv->shutdown(ec); |
1153 | ecard_release(ec); | ||
1154 | } | ||
1152 | 1155 | ||
1153 | /* | 1156 | /* |
1154 | * If this card has a loader, call the reset handler. | 1157 | * If this card has a loader, call the reset handler. |
@@ -1163,9 +1166,6 @@ static void ecard_drv_shutdown(struct device *dev) | |||
1163 | int ecard_register_driver(struct ecard_driver *drv) | 1166 | int ecard_register_driver(struct ecard_driver *drv) |
1164 | { | 1167 | { |
1165 | drv->drv.bus = &ecard_bus_type; | 1168 | drv->drv.bus = &ecard_bus_type; |
1166 | drv->drv.probe = ecard_drv_probe; | ||
1167 | drv->drv.remove = ecard_drv_remove; | ||
1168 | drv->drv.shutdown = ecard_drv_shutdown; | ||
1169 | 1169 | ||
1170 | return driver_register(&drv->drv); | 1170 | return driver_register(&drv->drv); |
1171 | } | 1171 | } |
@@ -1194,6 +1194,9 @@ struct bus_type ecard_bus_type = { | |||
1194 | .name = "ecard", | 1194 | .name = "ecard", |
1195 | .dev_attrs = ecard_dev_attrs, | 1195 | .dev_attrs = ecard_dev_attrs, |
1196 | .match = ecard_match, | 1196 | .match = ecard_match, |
1197 | .probe = ecard_drv_probe, | ||
1198 | .remove = ecard_drv_remove, | ||
1199 | .shutdown = ecard_drv_shutdown, | ||
1197 | }; | 1200 | }; |
1198 | 1201 | ||
1199 | static int ecard_bus_init(void) | 1202 | static int ecard_bus_init(void) |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 2a8d27e18fa7..d401d908c463 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -3,6 +3,7 @@ | |||
3 | * | 3 | * |
4 | * Copyright (C) 1996,1997,1998 Russell King. | 4 | * Copyright (C) 1996,1997,1998 Russell King. |
5 | * ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk) | 5 | * ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk) |
6 | * nommu support by Hyok S. Choi (hyok.choi@samsung.com) | ||
6 | * | 7 | * |
7 | * This program is free software; you can redistribute it and/or modify | 8 | * 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 | * it under the terms of the GNU General Public License version 2 as |
@@ -18,8 +19,6 @@ | |||
18 | #include <asm/memory.h> | 19 | #include <asm/memory.h> |
19 | #include <asm/glue.h> | 20 | #include <asm/glue.h> |
20 | #include <asm/vfpmacros.h> | 21 | #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> | 22 | #include <asm/arch/entry-macro.S> |
24 | 23 | ||
25 | #include "entry-header.S" | 24 | #include "entry-header.S" |
@@ -106,14 +105,24 @@ common_invalid: | |||
106 | /* | 105 | /* |
107 | * SVC mode handlers | 106 | * SVC mode handlers |
108 | */ | 107 | */ |
108 | |||
109 | #if defined(CONFIG_AEABI) && (__LINUX_ARM_ARCH__ >= 5) | ||
110 | #define SPFIX(code...) code | ||
111 | #else | ||
112 | #define SPFIX(code...) | ||
113 | #endif | ||
114 | |||
109 | .macro svc_entry | 115 | .macro svc_entry |
110 | sub sp, sp, #S_FRAME_SIZE | 116 | sub sp, sp, #S_FRAME_SIZE |
117 | SPFIX( tst sp, #4 ) | ||
118 | SPFIX( bicne sp, sp, #4 ) | ||
111 | stmib sp, {r1 - r12} | 119 | stmib sp, {r1 - r12} |
112 | 120 | ||
113 | ldmia r0, {r1 - r3} | 121 | ldmia r0, {r1 - r3} |
114 | add r5, sp, #S_SP @ here for interlock avoidance | 122 | add r5, sp, #S_SP @ here for interlock avoidance |
115 | mov r4, #-1 @ "" "" "" "" | 123 | mov r4, #-1 @ "" "" "" "" |
116 | add r0, sp, #S_FRAME_SIZE @ "" "" "" "" | 124 | add r0, sp, #S_FRAME_SIZE @ "" "" "" "" |
125 | SPFIX( addne r0, r0, #4 ) | ||
117 | str r1, [sp] @ save the "real" r0 copied | 126 | str r1, [sp] @ save the "real" r0 copied |
118 | @ from the exception stack | 127 | @ from the exception stack |
119 | 128 | ||
@@ -304,7 +313,14 @@ __pabt_svc: | |||
304 | 313 | ||
305 | /* | 314 | /* |
306 | * User mode handlers | 315 | * User mode handlers |
316 | * | ||
317 | * EABI note: sp_svc is always 64-bit aligned here, so should S_FRAME_SIZE | ||
307 | */ | 318 | */ |
319 | |||
320 | #if defined(CONFIG_AEABI) && (__LINUX_ARM_ARCH__ >= 5) && (S_FRAME_SIZE & 7) | ||
321 | #error "sizeof(struct pt_regs) must be a multiple of 8" | ||
322 | #endif | ||
323 | |||
308 | .macro usr_entry | 324 | .macro usr_entry |
309 | sub sp, sp, #S_FRAME_SIZE | 325 | sub sp, sp, #S_FRAME_SIZE |
310 | stmib sp, {r1 - r12} | 326 | stmib sp, {r1 - r12} |
@@ -540,7 +556,11 @@ ENTRY(__switch_to) | |||
540 | add ip, r1, #TI_CPU_SAVE | 556 | add ip, r1, #TI_CPU_SAVE |
541 | ldr r3, [r2, #TI_TP_VALUE] | 557 | ldr r3, [r2, #TI_TP_VALUE] |
542 | stmia ip!, {r4 - sl, fp, sp, lr} @ Store most regs on stack | 558 | stmia ip!, {r4 - sl, fp, sp, lr} @ Store most regs on stack |
559 | #ifndef CONFIG_MMU | ||
560 | add r2, r2, #TI_CPU_DOMAIN | ||
561 | #else | ||
543 | ldr r6, [r2, #TI_CPU_DOMAIN]! | 562 | ldr r6, [r2, #TI_CPU_DOMAIN]! |
563 | #endif | ||
544 | #if __LINUX_ARM_ARCH__ >= 6 | 564 | #if __LINUX_ARM_ARCH__ >= 6 |
545 | #ifdef CONFIG_CPU_MPCORE | 565 | #ifdef CONFIG_CPU_MPCORE |
546 | clrex | 566 | clrex |
@@ -558,7 +578,9 @@ ENTRY(__switch_to) | |||
558 | mov r4, #0xffff0fff | 578 | mov r4, #0xffff0fff |
559 | str r3, [r4, #-15] @ TLS val at 0xffff0ff0 | 579 | str r3, [r4, #-15] @ TLS val at 0xffff0ff0 |
560 | #endif | 580 | #endif |
581 | #ifdef CONFIG_MMU | ||
561 | mcr p15, 0, r6, c3, c0, 0 @ Set domain register | 582 | mcr p15, 0, r6, c3, c0, 0 @ Set domain register |
583 | #endif | ||
562 | #ifdef CONFIG_VFP | 584 | #ifdef CONFIG_VFP |
563 | @ Always disable VFP so we can lazily save/restore the old | 585 | @ Always disable VFP so we can lazily save/restore the old |
564 | @ state. This occurs in the context of the previous thread. | 586 | @ state. This occurs in the context of the previous thread. |
@@ -713,8 +735,11 @@ __kuser_cmpxchg: @ 0xffff0fc0 | |||
713 | * The kernel itself must perform the operation. | 735 | * The kernel itself must perform the operation. |
714 | * A special ghost syscall is used for that (see traps.c). | 736 | * A special ghost syscall is used for that (see traps.c). |
715 | */ | 737 | */ |
738 | stmfd sp!, {r7, lr} | ||
739 | mov r7, #0xff00 @ 0xfff0 into r7 for EABI | ||
740 | orr r7, r7, #0xf0 | ||
716 | swi #0x9ffff0 | 741 | swi #0x9ffff0 |
717 | mov pc, lr | 742 | ldmfd sp!, {r7, pc} |
718 | 743 | ||
719 | #elif __LINUX_ARM_ARCH__ < 6 | 744 | #elif __LINUX_ARM_ARCH__ < 6 |
720 | 745 | ||
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index e2b42997ad33..2b92ce85f97f 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
@@ -98,20 +98,14 @@ ENTRY(ret_from_fork) | |||
98 | run on an ARM7 and we can save a couple of instructions. | 98 | run on an ARM7 and we can save a couple of instructions. |
99 | --pb */ | 99 | --pb */ |
100 | #ifdef CONFIG_CPU_ARM710 | 100 | #ifdef CONFIG_CPU_ARM710 |
101 | .macro arm710_bug_check, instr, temp | 101 | #define A710(code...) code |
102 | and \temp, \instr, #0x0f000000 @ check for SWI | 102 | .Larm710bug: |
103 | teq \temp, #0x0f000000 | ||
104 | bne .Larm700bug | ||
105 | .endm | ||
106 | |||
107 | .Larm700bug: | ||
108 | ldmia sp, {r0 - lr}^ @ Get calling r0 - lr | 103 | ldmia sp, {r0 - lr}^ @ Get calling r0 - lr |
109 | mov r0, r0 | 104 | mov r0, r0 |
110 | add sp, sp, #S_FRAME_SIZE | 105 | add sp, sp, #S_FRAME_SIZE |
111 | subs pc, lr, #4 | 106 | subs pc, lr, #4 |
112 | #else | 107 | #else |
113 | .macro arm710_bug_check, instr, temp | 108 | #define A710(code...) |
114 | .endm | ||
115 | #endif | 109 | #endif |
116 | 110 | ||
117 | .align 5 | 111 | .align 5 |
@@ -129,14 +123,50 @@ ENTRY(vector_swi) | |||
129 | /* | 123 | /* |
130 | * Get the system call number. | 124 | * Get the system call number. |
131 | */ | 125 | */ |
126 | |||
127 | #if defined(CONFIG_OABI_COMPAT) | ||
128 | |||
129 | /* | ||
130 | * If we have CONFIG_OABI_COMPAT then we need to look at the swi | ||
131 | * value to determine if it is an EABI or an old ABI call. | ||
132 | */ | ||
132 | #ifdef CONFIG_ARM_THUMB | 133 | #ifdef CONFIG_ARM_THUMB |
134 | tst r8, #PSR_T_BIT | ||
135 | movne r10, #0 @ no thumb OABI emulation | ||
136 | ldreq r10, [lr, #-4] @ get SWI instruction | ||
137 | #else | ||
138 | ldr r10, [lr, #-4] @ get SWI instruction | ||
139 | A710( and ip, r10, #0x0f000000 @ check for SWI ) | ||
140 | A710( teq ip, #0x0f000000 ) | ||
141 | A710( bne .Larm710bug ) | ||
142 | #endif | ||
143 | |||
144 | #elif defined(CONFIG_AEABI) | ||
145 | |||
146 | /* | ||
147 | * Pure EABI user space always put syscall number into scno (r7). | ||
148 | */ | ||
149 | A710( ldr ip, [lr, #-4] @ get SWI instruction ) | ||
150 | A710( and ip, ip, #0x0f000000 @ check for SWI ) | ||
151 | A710( teq ip, #0x0f000000 ) | ||
152 | A710( bne .Larm710bug ) | ||
153 | |||
154 | #elif defined(CONFIG_ARM_THUMB) | ||
155 | |||
156 | /* Legacy ABI only, possibly thumb mode. */ | ||
133 | tst r8, #PSR_T_BIT @ this is SPSR from save_user_regs | 157 | tst r8, #PSR_T_BIT @ this is SPSR from save_user_regs |
134 | addne scno, r7, #__NR_SYSCALL_BASE @ put OS number in | 158 | addne scno, r7, #__NR_SYSCALL_BASE @ put OS number in |
135 | ldreq scno, [lr, #-4] | 159 | ldreq scno, [lr, #-4] |
160 | |||
136 | #else | 161 | #else |
162 | |||
163 | /* Legacy ABI only. */ | ||
137 | ldr scno, [lr, #-4] @ get SWI instruction | 164 | ldr scno, [lr, #-4] @ get SWI instruction |
165 | A710( and ip, scno, #0x0f000000 @ check for SWI ) | ||
166 | A710( teq ip, #0x0f000000 ) | ||
167 | A710( bne .Larm710bug ) | ||
168 | |||
138 | #endif | 169 | #endif |
139 | arm710_bug_check scno, ip | ||
140 | 170 | ||
141 | #ifdef CONFIG_ALIGNMENT_TRAP | 171 | #ifdef CONFIG_ALIGNMENT_TRAP |
142 | ldr ip, __cr_alignment | 172 | ldr ip, __cr_alignment |
@@ -145,18 +175,31 @@ ENTRY(vector_swi) | |||
145 | #endif | 175 | #endif |
146 | enable_irq | 176 | enable_irq |
147 | 177 | ||
148 | stmdb sp!, {r4, r5} @ push fifth and sixth args | ||
149 | |||
150 | get_thread_info tsk | 178 | get_thread_info tsk |
179 | adr tbl, sys_call_table @ load syscall table pointer | ||
151 | ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing | 180 | ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing |
181 | |||
182 | #if defined(CONFIG_OABI_COMPAT) | ||
183 | /* | ||
184 | * If the swi argument is zero, this is an EABI call and we do nothing. | ||
185 | * | ||
186 | * If this is an old ABI call, get the syscall number into scno and | ||
187 | * get the old ABI syscall table address. | ||
188 | */ | ||
189 | bics r10, r10, #0xff000000 | ||
190 | eorne scno, r10, #__NR_OABI_SYSCALL_BASE | ||
191 | ldrne tbl, =sys_oabi_call_table | ||
192 | #elif !defined(CONFIG_AEABI) | ||
152 | bic scno, scno, #0xff000000 @ mask off SWI op-code | 193 | bic scno, scno, #0xff000000 @ mask off SWI op-code |
153 | eor scno, scno, #__NR_SYSCALL_BASE @ check OS number | 194 | eor scno, scno, #__NR_SYSCALL_BASE @ check OS number |
154 | adr tbl, sys_call_table @ load syscall table pointer | 195 | #endif |
196 | |||
197 | stmdb sp!, {r4, r5} @ push fifth and sixth args | ||
155 | tst ip, #_TIF_SYSCALL_TRACE @ are we tracing syscalls? | 198 | tst ip, #_TIF_SYSCALL_TRACE @ are we tracing syscalls? |
156 | bne __sys_trace | 199 | bne __sys_trace |
157 | 200 | ||
158 | adr lr, ret_fast_syscall @ return address | ||
159 | cmp scno, #NR_syscalls @ check upper syscall limit | 201 | cmp scno, #NR_syscalls @ check upper syscall limit |
202 | adr lr, ret_fast_syscall @ return address | ||
160 | ldrcc pc, [tbl, scno, lsl #2] @ call sys_* routine | 203 | ldrcc pc, [tbl, scno, lsl #2] @ call sys_* routine |
161 | 204 | ||
162 | add r1, sp, #S_OFF | 205 | add r1, sp, #S_OFF |
@@ -171,11 +214,13 @@ ENTRY(vector_swi) | |||
171 | * context switches, and waiting for our parent to respond. | 214 | * context switches, and waiting for our parent to respond. |
172 | */ | 215 | */ |
173 | __sys_trace: | 216 | __sys_trace: |
217 | mov r2, scno | ||
174 | add r1, sp, #S_OFF | 218 | add r1, sp, #S_OFF |
175 | mov r0, #0 @ trace entry [IP = 0] | 219 | mov r0, #0 @ trace entry [IP = 0] |
176 | bl syscall_trace | 220 | bl syscall_trace |
177 | 221 | ||
178 | adr lr, __sys_trace_return @ return address | 222 | adr lr, __sys_trace_return @ return address |
223 | mov scno, r0 @ syscall number (possibly new) | ||
179 | add r1, sp, #S_R0 + S_OFF @ pointer to regs | 224 | add r1, sp, #S_R0 + S_OFF @ pointer to regs |
180 | cmp scno, #NR_syscalls @ check upper syscall limit | 225 | cmp scno, #NR_syscalls @ check upper syscall limit |
181 | ldmccia r1, {r0 - r3} @ have to reload r0 - r3 | 226 | ldmccia r1, {r0 - r3} @ have to reload r0 - r3 |
@@ -184,6 +229,7 @@ __sys_trace: | |||
184 | 229 | ||
185 | __sys_trace_return: | 230 | __sys_trace_return: |
186 | str r0, [sp, #S_R0 + S_OFF]! @ save returned r0 | 231 | str r0, [sp, #S_R0 + S_OFF]! @ save returned r0 |
232 | mov r2, scno | ||
187 | mov r1, sp | 233 | mov r1, sp |
188 | mov r0, #1 @ trace exit [IP = 1] | 234 | mov r0, #1 @ trace exit [IP = 1] |
189 | bl syscall_trace | 235 | bl syscall_trace |
@@ -195,10 +241,24 @@ __sys_trace_return: | |||
195 | __cr_alignment: | 241 | __cr_alignment: |
196 | .word cr_alignment | 242 | .word cr_alignment |
197 | #endif | 243 | #endif |
244 | .ltorg | ||
245 | |||
246 | /* | ||
247 | * This is the syscall table declaration for native ABI syscalls. | ||
248 | * With EABI a couple syscalls are obsolete and defined as sys_ni_syscall. | ||
249 | */ | ||
250 | #define ABI(native, compat) native | ||
251 | #ifdef CONFIG_AEABI | ||
252 | #define OBSOLETE(syscall) sys_ni_syscall | ||
253 | #else | ||
254 | #define OBSOLETE(syscall) syscall | ||
255 | #endif | ||
198 | 256 | ||
199 | .type sys_call_table, #object | 257 | .type sys_call_table, #object |
200 | ENTRY(sys_call_table) | 258 | ENTRY(sys_call_table) |
201 | #include "calls.S" | 259 | #include "calls.S" |
260 | #undef ABI | ||
261 | #undef OBSOLETE | ||
202 | 262 | ||
203 | /*============================================================================ | 263 | /*============================================================================ |
204 | * Special system call wrappers | 264 | * Special system call wrappers |
@@ -207,7 +267,7 @@ ENTRY(sys_call_table) | |||
207 | @ r8 = syscall table | 267 | @ r8 = syscall table |
208 | .type sys_syscall, #function | 268 | .type sys_syscall, #function |
209 | sys_syscall: | 269 | sys_syscall: |
210 | eor scno, r0, #__NR_SYSCALL_BASE | 270 | eor scno, r0, #__NR_OABI_SYSCALL_BASE |
211 | cmp scno, #__NR_syscall - __NR_SYSCALL_BASE | 271 | cmp scno, #__NR_syscall - __NR_SYSCALL_BASE |
212 | cmpne scno, #NR_syscalls @ check range | 272 | cmpne scno, #NR_syscalls @ check range |
213 | stmloia sp, {r5, r6} @ shuffle args | 273 | stmloia sp, {r5, r6} @ shuffle args |
@@ -255,6 +315,16 @@ sys_sigaltstack_wrapper: | |||
255 | ldr r2, [sp, #S_OFF + S_SP] | 315 | ldr r2, [sp, #S_OFF + S_SP] |
256 | b do_sigaltstack | 316 | b do_sigaltstack |
257 | 317 | ||
318 | sys_statfs64_wrapper: | ||
319 | teq r1, #88 | ||
320 | moveq r1, #84 | ||
321 | b sys_statfs64 | ||
322 | |||
323 | sys_fstatfs64_wrapper: | ||
324 | teq r1, #88 | ||
325 | moveq r1, #84 | ||
326 | b sys_fstatfs64 | ||
327 | |||
258 | /* | 328 | /* |
259 | * Note: off_4k (r5) is always units of 4K. If we can't do the requested | 329 | * Note: off_4k (r5) is always units of 4K. If we can't do the requested |
260 | * offset, we return EINVAL. | 330 | * offset, we return EINVAL. |
@@ -271,3 +341,49 @@ sys_mmap2: | |||
271 | str r5, [sp, #4] | 341 | str r5, [sp, #4] |
272 | b do_mmap2 | 342 | b do_mmap2 |
273 | #endif | 343 | #endif |
344 | |||
345 | #ifdef CONFIG_OABI_COMPAT | ||
346 | |||
347 | /* | ||
348 | * These are syscalls with argument register differences | ||
349 | */ | ||
350 | |||
351 | sys_oabi_pread64: | ||
352 | stmia sp, {r3, r4} | ||
353 | b sys_pread64 | ||
354 | |||
355 | sys_oabi_pwrite64: | ||
356 | stmia sp, {r3, r4} | ||
357 | b sys_pwrite64 | ||
358 | |||
359 | sys_oabi_truncate64: | ||
360 | mov r3, r2 | ||
361 | mov r2, r1 | ||
362 | b sys_truncate64 | ||
363 | |||
364 | sys_oabi_ftruncate64: | ||
365 | mov r3, r2 | ||
366 | mov r2, r1 | ||
367 | b sys_ftruncate64 | ||
368 | |||
369 | sys_oabi_readahead: | ||
370 | str r3, [sp] | ||
371 | mov r3, r2 | ||
372 | mov r2, r1 | ||
373 | b sys_readahead | ||
374 | |||
375 | /* | ||
376 | * Let's declare a second syscall table for old ABI binaries | ||
377 | * using the compatibility syscall entries. | ||
378 | */ | ||
379 | #define ABI(native, compat) compat | ||
380 | #define OBSOLETE(syscall) syscall | ||
381 | |||
382 | .type sys_oabi_call_table, #object | ||
383 | ENTRY(sys_oabi_call_table) | ||
384 | #include "calls.S" | ||
385 | #undef ABI | ||
386 | #undef OBSOLETE | ||
387 | |||
388 | #endif | ||
389 | |||
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S index 648cfff93138..55c99cdab7d6 100644 --- a/arch/arm/kernel/entry-header.S +++ b/arch/arm/kernel/entry-header.S | |||
@@ -19,6 +19,7 @@ | |||
19 | @ | 19 | @ |
20 | @ Most of the stack format comes from struct pt_regs, but with | 20 | @ Most of the stack format comes from struct pt_regs, but with |
21 | @ the addition of 8 bytes for storing syscall args 5 and 6. | 21 | @ the addition of 8 bytes for storing syscall args 5 and 6. |
22 | @ This _must_ remain a multiple of 8 for EABI. | ||
22 | @ | 23 | @ |
23 | #define S_OFF 8 | 24 | #define S_OFF 8 |
24 | 25 | ||
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c index 9299dfc25698..1ec3f7faa259 100644 --- a/arch/arm/kernel/fiq.c +++ b/arch/arm/kernel/fiq.c | |||
@@ -101,7 +101,7 @@ void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs) | |||
101 | ldmia %1, {r8 - r14}\n\ | 101 | ldmia %1, {r8 - r14}\n\ |
102 | msr cpsr_c, %0 @ return to SVC mode\n\ | 102 | msr cpsr_c, %0 @ return to SVC mode\n\ |
103 | mov r0, r0\n\ | 103 | mov r0, r0\n\ |
104 | ldmea fp, {fp, sp, pc}" | 104 | ldmfd sp, {fp, sp, pc}" |
105 | : "=&r" (tmp) | 105 | : "=&r" (tmp) |
106 | : "r" (®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 d7d69fd7039f..1aca1775b28f 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 |
@@ -249,12 +251,11 @@ __turn_mmu_on: | |||
249 | * r10 = procinfo | 251 | * r10 = procinfo |
250 | * | 252 | * |
251 | * Returns: | 253 | * Returns: |
252 | * r0, r3, r5, r6, r7 corrupted | 254 | * r0, r3, r6, r7 corrupted |
253 | * r4 = physical page table address | 255 | * r4 = physical page table address |
254 | */ | 256 | */ |
255 | .type __create_page_tables, %function | 257 | .type __create_page_tables, %function |
256 | __create_page_tables: | 258 | __create_page_tables: |
257 | ldr r5, [r8, #MACHINFO_PHYSRAM] @ physram | ||
258 | pgtbl r4 @ page table address | 259 | pgtbl r4 @ page table address |
259 | 260 | ||
260 | /* | 261 | /* |
@@ -301,7 +302,7 @@ __create_page_tables: | |||
301 | * Then map first 1MB of ram in case it contains our boot params. | 302 | * Then map first 1MB of ram in case it contains our boot params. |
302 | */ | 303 | */ |
303 | add r0, r4, #PAGE_OFFSET >> 18 | 304 | add r0, r4, #PAGE_OFFSET >> 18 |
304 | orr r6, r5, r7 | 305 | orr r6, r7, #PHYS_OFFSET |
305 | str r6, [r0] | 306 | str r6, [r0] |
306 | 307 | ||
307 | #ifdef CONFIG_XIP_KERNEL | 308 | #ifdef CONFIG_XIP_KERNEL |
@@ -309,7 +310,7 @@ __create_page_tables: | |||
309 | * Map some ram to cover our .data and .bss areas. | 310 | * Map some ram to cover our .data and .bss areas. |
310 | * Mapping 3MB should be plenty. | 311 | * Mapping 3MB should be plenty. |
311 | */ | 312 | */ |
312 | sub r3, r4, r5 | 313 | sub r3, r4, #PHYS_OFFSET |
313 | mov r3, r3, lsr #20 | 314 | mov r3, r3, lsr #20 |
314 | add r0, r0, r3, lsl #2 | 315 | add r0, r0, r3, lsl #2 |
315 | add r6, r6, r3, lsl #20 | 316 | add r6, r6, r3, lsl #20 |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index d7099dbbb879..1d50d2b98f55 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 30494aab829a..4b4e4cf79c80 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 2b84f78d7b0f..7b6256bb590e 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,10 +762,15 @@ 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 | ||
769 | case PTRACE_SET_SYSCALL: | ||
770 | ret = 0; | ||
771 | child->ptrace_message = data; | ||
772 | break; | ||
773 | |||
786 | default: | 774 | default: |
787 | ret = ptrace_request(child, request, addr, data); | 775 | ret = ptrace_request(child, request, addr, data); |
788 | break; | 776 | break; |
@@ -791,14 +779,14 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
791 | return ret; | 779 | return ret; |
792 | } | 780 | } |
793 | 781 | ||
794 | asmlinkage void syscall_trace(int why, struct pt_regs *regs) | 782 | asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) |
795 | { | 783 | { |
796 | unsigned long ip; | 784 | unsigned long ip; |
797 | 785 | ||
798 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) | 786 | if (!test_thread_flag(TIF_SYSCALL_TRACE)) |
799 | return; | 787 | return scno; |
800 | if (!(current->ptrace & PT_PTRACED)) | 788 | if (!(current->ptrace & PT_PTRACED)) |
801 | return; | 789 | return scno; |
802 | 790 | ||
803 | /* | 791 | /* |
804 | * Save IP. IP is used to denote syscall entry/exit: | 792 | * Save IP. IP is used to denote syscall entry/exit: |
@@ -807,6 +795,8 @@ asmlinkage void syscall_trace(int why, struct pt_regs *regs) | |||
807 | ip = regs->ARM_ip; | 795 | ip = regs->ARM_ip; |
808 | regs->ARM_ip = why; | 796 | regs->ARM_ip = why; |
809 | 797 | ||
798 | current->ptrace_message = scno; | ||
799 | |||
810 | /* the 0x80 provides a way for the tracing parent to distinguish | 800 | /* the 0x80 provides a way for the tracing parent to distinguish |
811 | between a syscall stop and SIGTRAP delivery */ | 801 | between a syscall stop and SIGTRAP delivery */ |
812 | ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) | 802 | ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) |
@@ -821,4 +811,6 @@ asmlinkage void syscall_trace(int why, struct pt_regs *regs) | |||
821 | current->exit_code = 0; | 811 | current->exit_code = 0; |
822 | } | 812 | } |
823 | regs->ARM_ip = ip; | 813 | regs->ARM_ip = ip; |
814 | |||
815 | return current->ptrace_message; | ||
824 | } | 816 | } |
diff --git a/arch/arm/kernel/semaphore.c b/arch/arm/kernel/semaphore.c index 4c31f2923055..981fe5c6ccbe 100644 --- a/arch/arm/kernel/semaphore.c +++ b/arch/arm/kernel/semaphore.c | |||
@@ -177,41 +177,42 @@ int __down_trylock(struct semaphore * sem) | |||
177 | * ip contains the semaphore pointer on entry. Save the C-clobbered | 177 | * ip contains the semaphore pointer on entry. Save the C-clobbered |
178 | * registers (r0 to r3 and lr), but not ip, as we use it as a return | 178 | * registers (r0 to r3 and lr), but not ip, as we use it as a return |
179 | * value in some cases.. | 179 | * value in some cases.. |
180 | * To remain AAPCS compliant (64-bit stack align) we save r4 as well. | ||
180 | */ | 181 | */ |
181 | asm(" .section .sched.text,\"ax\",%progbits \n\ | 182 | asm(" .section .sched.text,\"ax\",%progbits \n\ |
182 | .align 5 \n\ | 183 | .align 5 \n\ |
183 | .globl __down_failed \n\ | 184 | .globl __down_failed \n\ |
184 | __down_failed: \n\ | 185 | __down_failed: \n\ |
185 | stmfd sp!, {r0 - r3, lr} \n\ | 186 | stmfd sp!, {r0 - r4, lr} \n\ |
186 | mov r0, ip \n\ | 187 | mov r0, ip \n\ |
187 | bl __down \n\ | 188 | bl __down \n\ |
188 | ldmfd sp!, {r0 - r3, pc} \n\ | 189 | ldmfd sp!, {r0 - r4, pc} \n\ |
189 | \n\ | 190 | \n\ |
190 | .align 5 \n\ | 191 | .align 5 \n\ |
191 | .globl __down_interruptible_failed \n\ | 192 | .globl __down_interruptible_failed \n\ |
192 | __down_interruptible_failed: \n\ | 193 | __down_interruptible_failed: \n\ |
193 | stmfd sp!, {r0 - r3, lr} \n\ | 194 | stmfd sp!, {r0 - r4, lr} \n\ |
194 | mov r0, ip \n\ | 195 | mov r0, ip \n\ |
195 | bl __down_interruptible \n\ | 196 | bl __down_interruptible \n\ |
196 | mov ip, r0 \n\ | 197 | mov ip, r0 \n\ |
197 | ldmfd sp!, {r0 - r3, pc} \n\ | 198 | ldmfd sp!, {r0 - r4, pc} \n\ |
198 | \n\ | 199 | \n\ |
199 | .align 5 \n\ | 200 | .align 5 \n\ |
200 | .globl __down_trylock_failed \n\ | 201 | .globl __down_trylock_failed \n\ |
201 | __down_trylock_failed: \n\ | 202 | __down_trylock_failed: \n\ |
202 | stmfd sp!, {r0 - r3, lr} \n\ | 203 | stmfd sp!, {r0 - r4, lr} \n\ |
203 | mov r0, ip \n\ | 204 | mov r0, ip \n\ |
204 | bl __down_trylock \n\ | 205 | bl __down_trylock \n\ |
205 | mov ip, r0 \n\ | 206 | mov ip, r0 \n\ |
206 | ldmfd sp!, {r0 - r3, pc} \n\ | 207 | ldmfd sp!, {r0 - r4, pc} \n\ |
207 | \n\ | 208 | \n\ |
208 | .align 5 \n\ | 209 | .align 5 \n\ |
209 | .globl __up_wakeup \n\ | 210 | .globl __up_wakeup \n\ |
210 | __up_wakeup: \n\ | 211 | __up_wakeup: \n\ |
211 | stmfd sp!, {r0 - r3, lr} \n\ | 212 | stmfd sp!, {r0 - r4, lr} \n\ |
212 | mov r0, ip \n\ | 213 | mov r0, ip \n\ |
213 | bl __up \n\ | 214 | bl __up \n\ |
214 | ldmfd sp!, {r0 - r3, pc} \n\ | 215 | ldmfd sp!, {r0 - r4, pc} \n\ |
215 | "); | 216 | "); |
216 | 217 | ||
217 | EXPORT_SYMBOL(__down_failed); | 218 | EXPORT_SYMBOL(__down_failed); |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 85774165e9fd..c45d10d07bde 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/signal.c b/arch/arm/kernel/signal.c index 765922bcf9e7..a0cd0a90a10d 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -30,15 +30,21 @@ | |||
30 | #define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)) | 30 | #define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)) |
31 | 31 | ||
32 | /* | 32 | /* |
33 | * With EABI, the syscall number has to be loaded into r7. | ||
34 | */ | ||
35 | #define MOV_R7_NR_SIGRETURN (0xe3a07000 | (__NR_sigreturn - __NR_SYSCALL_BASE)) | ||
36 | #define MOV_R7_NR_RT_SIGRETURN (0xe3a07000 | (__NR_rt_sigreturn - __NR_SYSCALL_BASE)) | ||
37 | |||
38 | /* | ||
33 | * For Thumb syscalls, we pass the syscall number via r7. We therefore | 39 | * For Thumb syscalls, we pass the syscall number via r7. We therefore |
34 | * need two 16-bit instructions. | 40 | * need two 16-bit instructions. |
35 | */ | 41 | */ |
36 | #define SWI_THUMB_SIGRETURN (0xdf00 << 16 | 0x2700 | (__NR_sigreturn - __NR_SYSCALL_BASE)) | 42 | #define SWI_THUMB_SIGRETURN (0xdf00 << 16 | 0x2700 | (__NR_sigreturn - __NR_SYSCALL_BASE)) |
37 | #define SWI_THUMB_RT_SIGRETURN (0xdf00 << 16 | 0x2700 | (__NR_rt_sigreturn - __NR_SYSCALL_BASE)) | 43 | #define SWI_THUMB_RT_SIGRETURN (0xdf00 << 16 | 0x2700 | (__NR_rt_sigreturn - __NR_SYSCALL_BASE)) |
38 | 44 | ||
39 | const unsigned long sigreturn_codes[4] = { | 45 | const unsigned long sigreturn_codes[7] = { |
40 | SWI_SYS_SIGRETURN, SWI_THUMB_SIGRETURN, | 46 | MOV_R7_NR_SIGRETURN, SWI_SYS_SIGRETURN, SWI_THUMB_SIGRETURN, |
41 | SWI_SYS_RT_SIGRETURN, SWI_THUMB_RT_SIGRETURN | 47 | MOV_R7_NR_RT_SIGRETURN, SWI_SYS_RT_SIGRETURN, SWI_THUMB_RT_SIGRETURN, |
42 | }; | 48 | }; |
43 | 49 | ||
44 | static int do_signal(sigset_t *oldset, struct pt_regs * regs, int syscall); | 50 | static int do_signal(sigset_t *oldset, struct pt_regs * regs, int syscall); |
@@ -189,7 +195,7 @@ struct aux_sigframe { | |||
189 | struct sigframe { | 195 | struct sigframe { |
190 | struct sigcontext sc; | 196 | struct sigcontext sc; |
191 | unsigned long extramask[_NSIG_WORDS-1]; | 197 | unsigned long extramask[_NSIG_WORDS-1]; |
192 | unsigned long retcode; | 198 | unsigned long retcode[2]; |
193 | struct aux_sigframe aux __attribute__((aligned(8))); | 199 | struct aux_sigframe aux __attribute__((aligned(8))); |
194 | }; | 200 | }; |
195 | 201 | ||
@@ -198,7 +204,7 @@ struct rt_sigframe { | |||
198 | void __user *puc; | 204 | void __user *puc; |
199 | struct siginfo info; | 205 | struct siginfo info; |
200 | struct ucontext uc; | 206 | struct ucontext uc; |
201 | unsigned long retcode; | 207 | unsigned long retcode[2]; |
202 | struct aux_sigframe aux __attribute__((aligned(8))); | 208 | struct aux_sigframe aux __attribute__((aligned(8))); |
203 | }; | 209 | }; |
204 | 210 | ||
@@ -436,12 +442,13 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka, | |||
436 | if (ka->sa.sa_flags & SA_RESTORER) { | 442 | if (ka->sa.sa_flags & SA_RESTORER) { |
437 | retcode = (unsigned long)ka->sa.sa_restorer; | 443 | retcode = (unsigned long)ka->sa.sa_restorer; |
438 | } else { | 444 | } else { |
439 | unsigned int idx = thumb; | 445 | unsigned int idx = thumb << 1; |
440 | 446 | ||
441 | if (ka->sa.sa_flags & SA_SIGINFO) | 447 | if (ka->sa.sa_flags & SA_SIGINFO) |
442 | idx += 2; | 448 | idx += 3; |
443 | 449 | ||
444 | if (__put_user(sigreturn_codes[idx], rc)) | 450 | if (__put_user(sigreturn_codes[idx], rc) || |
451 | __put_user(sigreturn_codes[idx+1], rc+1)) | ||
445 | return 1; | 452 | return 1; |
446 | 453 | ||
447 | if (cpsr & MODE32_BIT) { | 454 | if (cpsr & MODE32_BIT) { |
@@ -456,7 +463,7 @@ setup_return(struct pt_regs *regs, struct k_sigaction *ka, | |||
456 | * the return code written onto the stack. | 463 | * the return code written onto the stack. |
457 | */ | 464 | */ |
458 | flush_icache_range((unsigned long)rc, | 465 | flush_icache_range((unsigned long)rc, |
459 | (unsigned long)(rc + 1)); | 466 | (unsigned long)(rc + 2)); |
460 | 467 | ||
461 | retcode = ((unsigned long)rc) + thumb; | 468 | retcode = ((unsigned long)rc) + thumb; |
462 | } | 469 | } |
@@ -488,7 +495,7 @@ setup_frame(int usig, struct k_sigaction *ka, sigset_t *set, struct pt_regs *reg | |||
488 | } | 495 | } |
489 | 496 | ||
490 | if (err == 0) | 497 | if (err == 0) |
491 | err = setup_return(regs, ka, &frame->retcode, frame, usig); | 498 | err = setup_return(regs, ka, frame->retcode, frame, usig); |
492 | 499 | ||
493 | return err; | 500 | return err; |
494 | } | 501 | } |
@@ -522,7 +529,7 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info, | |||
522 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); | 529 | err |= __copy_to_user(&frame->uc.uc_sigmask, set, sizeof(*set)); |
523 | 530 | ||
524 | if (err == 0) | 531 | if (err == 0) |
525 | err = setup_return(regs, ka, &frame->retcode, frame, usig); | 532 | err = setup_return(regs, ka, frame->retcode, frame, usig); |
526 | 533 | ||
527 | if (err == 0) { | 534 | if (err == 0) { |
528 | /* | 535 | /* |
diff --git a/arch/arm/kernel/signal.h b/arch/arm/kernel/signal.h index 91d26faca62b..9991049c522d 100644 --- a/arch/arm/kernel/signal.h +++ b/arch/arm/kernel/signal.h | |||
@@ -9,4 +9,4 @@ | |||
9 | */ | 9 | */ |
10 | #define KERN_SIGRETURN_CODE 0xffff0500 | 10 | #define KERN_SIGRETURN_CODE 0xffff0500 |
11 | 11 | ||
12 | extern const unsigned long sigreturn_codes[4]; | 12 | extern const unsigned long sigreturn_codes[7]; |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 373c0959bc2f..7338948bd7d3 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/sys_arm.c b/arch/arm/kernel/sys_arm.c index ea569ba482b1..a491de2d9024 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c | |||
@@ -147,6 +147,7 @@ asmlinkage int old_select(struct sel_arg_struct __user *arg) | |||
147 | return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp); | 147 | return sys_select(a.n, a.inp, a.outp, a.exp, a.tvp); |
148 | } | 148 | } |
149 | 149 | ||
150 | #if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) | ||
150 | /* | 151 | /* |
151 | * sys_ipc() is the de-multiplexer for the SysV IPC calls.. | 152 | * sys_ipc() is the de-multiplexer for the SysV IPC calls.. |
152 | * | 153 | * |
@@ -226,6 +227,7 @@ asmlinkage int sys_ipc(uint call, int first, int second, int third, | |||
226 | return -ENOSYS; | 227 | return -ENOSYS; |
227 | } | 228 | } |
228 | } | 229 | } |
230 | #endif | ||
229 | 231 | ||
230 | /* Fork a new task - this creates a new program thread. | 232 | /* Fork a new task - this creates a new program thread. |
231 | * This is called indirectly via a small wrapper | 233 | * This is called indirectly via a small wrapper |
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c new file mode 100644 index 000000000000..eafa8e5284af --- /dev/null +++ b/arch/arm/kernel/sys_oabi-compat.c | |||
@@ -0,0 +1,339 @@ | |||
1 | /* | ||
2 | * arch/arm/kernel/sys_oabi-compat.c | ||
3 | * | ||
4 | * Compatibility wrappers for syscalls that are used from | ||
5 | * old ABI user space binaries with an EABI kernel. | ||
6 | * | ||
7 | * Author: Nicolas Pitre | ||
8 | * Created: Oct 7, 2005 | ||
9 | * Copyright: MontaVista Software, Inc. | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License version 2 as | ||
13 | * published by the Free Software Foundation. | ||
14 | */ | ||
15 | |||
16 | /* | ||
17 | * The legacy ABI and the new ARM EABI have different rules making some | ||
18 | * syscalls incompatible especially with structure arguments. | ||
19 | * Most notably, Eabi says 64-bit members should be 64-bit aligned instead of | ||
20 | * simply word aligned. EABI also pads structures to the size of the largest | ||
21 | * member it contains instead of the invariant 32-bit. | ||
22 | * | ||
23 | * The following syscalls are affected: | ||
24 | * | ||
25 | * sys_stat64: | ||
26 | * sys_lstat64: | ||
27 | * sys_fstat64: | ||
28 | * | ||
29 | * struct stat64 has different sizes and some members are shifted | ||
30 | * Compatibility wrappers are needed for them and provided below. | ||
31 | * | ||
32 | * sys_fcntl64: | ||
33 | * | ||
34 | * struct flock64 has different sizes and some members are shifted | ||
35 | * A compatibility wrapper is needed and provided below. | ||
36 | * | ||
37 | * sys_statfs64: | ||
38 | * sys_fstatfs64: | ||
39 | * | ||
40 | * struct statfs64 has extra padding with EABI growing its size from | ||
41 | * 84 to 88. This struct is now __attribute__((packed,aligned(4))) | ||
42 | * with a small assembly wrapper to force the sz argument to 84 if it is 88 | ||
43 | * to avoid copying the extra padding over user space unexpecting it. | ||
44 | * | ||
45 | * sys_newuname: | ||
46 | * | ||
47 | * struct new_utsname has no padding with EABI. No problem there. | ||
48 | * | ||
49 | * sys_epoll_ctl: | ||
50 | * sys_epoll_wait: | ||
51 | * | ||
52 | * struct epoll_event has its second member shifted also affecting the | ||
53 | * structure size. Compatibility wrappers are needed and provided below. | ||
54 | * | ||
55 | * sys_ipc: | ||
56 | * sys_semop: | ||
57 | * sys_semtimedop: | ||
58 | * | ||
59 | * struct sembuf loses its padding with EABI. Since arrays of them are | ||
60 | * used they have to be copyed to remove the padding. Compatibility wrappers | ||
61 | * provided below. | ||
62 | */ | ||
63 | |||
64 | #include <linux/syscalls.h> | ||
65 | #include <linux/errno.h> | ||
66 | #include <linux/fs.h> | ||
67 | #include <linux/fcntl.h> | ||
68 | #include <linux/eventpoll.h> | ||
69 | #include <linux/sem.h> | ||
70 | #include <asm/ipc.h> | ||
71 | #include <asm/uaccess.h> | ||
72 | |||
73 | struct oldabi_stat64 { | ||
74 | unsigned long long st_dev; | ||
75 | unsigned int __pad1; | ||
76 | unsigned long __st_ino; | ||
77 | unsigned int st_mode; | ||
78 | unsigned int st_nlink; | ||
79 | |||
80 | unsigned long st_uid; | ||
81 | unsigned long st_gid; | ||
82 | |||
83 | unsigned long long st_rdev; | ||
84 | unsigned int __pad2; | ||
85 | |||
86 | long long st_size; | ||
87 | unsigned long st_blksize; | ||
88 | unsigned long long st_blocks; | ||
89 | |||
90 | unsigned long st_atime; | ||
91 | unsigned long st_atime_nsec; | ||
92 | |||
93 | unsigned long st_mtime; | ||
94 | unsigned long st_mtime_nsec; | ||
95 | |||
96 | unsigned long st_ctime; | ||
97 | unsigned long st_ctime_nsec; | ||
98 | |||
99 | unsigned long long st_ino; | ||
100 | } __attribute__ ((packed,aligned(4))); | ||
101 | |||
102 | static long cp_oldabi_stat64(struct kstat *stat, | ||
103 | struct oldabi_stat64 __user *statbuf) | ||
104 | { | ||
105 | struct oldabi_stat64 tmp; | ||
106 | |||
107 | tmp.st_dev = huge_encode_dev(stat->dev); | ||
108 | tmp.__pad1 = 0; | ||
109 | tmp.__st_ino = stat->ino; | ||
110 | tmp.st_mode = stat->mode; | ||
111 | tmp.st_nlink = stat->nlink; | ||
112 | tmp.st_uid = stat->uid; | ||
113 | tmp.st_gid = stat->gid; | ||
114 | tmp.st_rdev = huge_encode_dev(stat->rdev); | ||
115 | tmp.st_size = stat->size; | ||
116 | tmp.st_blocks = stat->blocks; | ||
117 | tmp.__pad2 = 0; | ||
118 | tmp.st_blksize = stat->blksize; | ||
119 | tmp.st_atime = stat->atime.tv_sec; | ||
120 | tmp.st_atime_nsec = stat->atime.tv_nsec; | ||
121 | tmp.st_mtime = stat->mtime.tv_sec; | ||
122 | tmp.st_mtime_nsec = stat->mtime.tv_nsec; | ||
123 | tmp.st_ctime = stat->ctime.tv_sec; | ||
124 | tmp.st_ctime_nsec = stat->ctime.tv_nsec; | ||
125 | tmp.st_ino = stat->ino; | ||
126 | return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0; | ||
127 | } | ||
128 | |||
129 | asmlinkage long sys_oabi_stat64(char __user * filename, | ||
130 | struct oldabi_stat64 __user * statbuf) | ||
131 | { | ||
132 | struct kstat stat; | ||
133 | int error = vfs_stat(filename, &stat); | ||
134 | if (!error) | ||
135 | error = cp_oldabi_stat64(&stat, statbuf); | ||
136 | return error; | ||
137 | } | ||
138 | |||
139 | asmlinkage long sys_oabi_lstat64(char __user * filename, | ||
140 | struct oldabi_stat64 __user * statbuf) | ||
141 | { | ||
142 | struct kstat stat; | ||
143 | int error = vfs_lstat(filename, &stat); | ||
144 | if (!error) | ||
145 | error = cp_oldabi_stat64(&stat, statbuf); | ||
146 | return error; | ||
147 | } | ||
148 | |||
149 | asmlinkage long sys_oabi_fstat64(unsigned long fd, | ||
150 | struct oldabi_stat64 __user * statbuf) | ||
151 | { | ||
152 | struct kstat stat; | ||
153 | int error = vfs_fstat(fd, &stat); | ||
154 | if (!error) | ||
155 | error = cp_oldabi_stat64(&stat, statbuf); | ||
156 | return error; | ||
157 | } | ||
158 | |||
159 | struct oabi_flock64 { | ||
160 | short l_type; | ||
161 | short l_whence; | ||
162 | loff_t l_start; | ||
163 | loff_t l_len; | ||
164 | pid_t l_pid; | ||
165 | } __attribute__ ((packed,aligned(4))); | ||
166 | |||
167 | asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd, | ||
168 | unsigned long arg) | ||
169 | { | ||
170 | struct oabi_flock64 user; | ||
171 | struct flock64 kernel; | ||
172 | mm_segment_t fs = USER_DS; /* initialized to kill a warning */ | ||
173 | unsigned long local_arg = arg; | ||
174 | int ret; | ||
175 | |||
176 | switch (cmd) { | ||
177 | case F_GETLK64: | ||
178 | case F_SETLK64: | ||
179 | case F_SETLKW64: | ||
180 | if (copy_from_user(&user, (struct oabi_flock64 __user *)arg, | ||
181 | sizeof(user))) | ||
182 | return -EFAULT; | ||
183 | kernel.l_type = user.l_type; | ||
184 | kernel.l_whence = user.l_whence; | ||
185 | kernel.l_start = user.l_start; | ||
186 | kernel.l_len = user.l_len; | ||
187 | kernel.l_pid = user.l_pid; | ||
188 | local_arg = (unsigned long)&kernel; | ||
189 | fs = get_fs(); | ||
190 | set_fs(KERNEL_DS); | ||
191 | } | ||
192 | |||
193 | ret = sys_fcntl64(fd, cmd, local_arg); | ||
194 | |||
195 | switch (cmd) { | ||
196 | case F_GETLK64: | ||
197 | if (!ret) { | ||
198 | user.l_type = kernel.l_type; | ||
199 | user.l_whence = kernel.l_whence; | ||
200 | user.l_start = kernel.l_start; | ||
201 | user.l_len = kernel.l_len; | ||
202 | user.l_pid = kernel.l_pid; | ||
203 | if (copy_to_user((struct oabi_flock64 __user *)arg, | ||
204 | &user, sizeof(user))) | ||
205 | ret = -EFAULT; | ||
206 | } | ||
207 | case F_SETLK64: | ||
208 | case F_SETLKW64: | ||
209 | set_fs(fs); | ||
210 | } | ||
211 | |||
212 | return ret; | ||
213 | } | ||
214 | |||
215 | struct oabi_epoll_event { | ||
216 | __u32 events; | ||
217 | __u64 data; | ||
218 | } __attribute__ ((packed,aligned(4))); | ||
219 | |||
220 | asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd, | ||
221 | struct oabi_epoll_event __user *event) | ||
222 | { | ||
223 | struct oabi_epoll_event user; | ||
224 | struct epoll_event kernel; | ||
225 | mm_segment_t fs; | ||
226 | long ret; | ||
227 | |||
228 | if (op == EPOLL_CTL_DEL) | ||
229 | return sys_epoll_ctl(epfd, op, fd, NULL); | ||
230 | if (copy_from_user(&user, event, sizeof(user))) | ||
231 | return -EFAULT; | ||
232 | kernel.events = user.events; | ||
233 | kernel.data = user.data; | ||
234 | fs = get_fs(); | ||
235 | set_fs(KERNEL_DS); | ||
236 | ret = sys_epoll_ctl(epfd, op, fd, &kernel); | ||
237 | set_fs(fs); | ||
238 | return ret; | ||
239 | } | ||
240 | |||
241 | asmlinkage long sys_oabi_epoll_wait(int epfd, | ||
242 | struct oabi_epoll_event __user *events, | ||
243 | int maxevents, int timeout) | ||
244 | { | ||
245 | struct epoll_event *kbuf; | ||
246 | mm_segment_t fs; | ||
247 | long ret, err, i; | ||
248 | |||
249 | if (maxevents <= 0 || maxevents > (INT_MAX/sizeof(struct epoll_event))) | ||
250 | return -EINVAL; | ||
251 | kbuf = kmalloc(sizeof(*kbuf) * maxevents, GFP_KERNEL); | ||
252 | if (!kbuf) | ||
253 | return -ENOMEM; | ||
254 | fs = get_fs(); | ||
255 | set_fs(KERNEL_DS); | ||
256 | ret = sys_epoll_wait(epfd, kbuf, maxevents, timeout); | ||
257 | set_fs(fs); | ||
258 | err = 0; | ||
259 | for (i = 0; i < ret; i++) { | ||
260 | __put_user_error(kbuf[i].events, &events->events, err); | ||
261 | __put_user_error(kbuf[i].data, &events->data, err); | ||
262 | events++; | ||
263 | } | ||
264 | kfree(kbuf); | ||
265 | return err ? -EFAULT : ret; | ||
266 | } | ||
267 | |||
268 | struct oabi_sembuf { | ||
269 | unsigned short sem_num; | ||
270 | short sem_op; | ||
271 | short sem_flg; | ||
272 | unsigned short __pad; | ||
273 | }; | ||
274 | |||
275 | asmlinkage long sys_oabi_semtimedop(int semid, | ||
276 | struct oabi_sembuf __user *tsops, | ||
277 | unsigned nsops, | ||
278 | const struct timespec __user *timeout) | ||
279 | { | ||
280 | struct sembuf *sops; | ||
281 | struct timespec local_timeout; | ||
282 | long err; | ||
283 | int i; | ||
284 | |||
285 | if (nsops < 1) | ||
286 | return -EINVAL; | ||
287 | sops = kmalloc(sizeof(*sops) * nsops, GFP_KERNEL); | ||
288 | if (!sops) | ||
289 | return -ENOMEM; | ||
290 | err = 0; | ||
291 | for (i = 0; i < nsops; i++) { | ||
292 | __get_user_error(sops[i].sem_num, &tsops->sem_num, err); | ||
293 | __get_user_error(sops[i].sem_op, &tsops->sem_op, err); | ||
294 | __get_user_error(sops[i].sem_flg, &tsops->sem_flg, err); | ||
295 | tsops++; | ||
296 | } | ||
297 | if (timeout) { | ||
298 | /* copy this as well before changing domain protection */ | ||
299 | err |= copy_from_user(&local_timeout, timeout, sizeof(*timeout)); | ||
300 | timeout = &local_timeout; | ||
301 | } | ||
302 | if (err) { | ||
303 | err = -EFAULT; | ||
304 | } else { | ||
305 | mm_segment_t fs = get_fs(); | ||
306 | set_fs(KERNEL_DS); | ||
307 | err = sys_semtimedop(semid, sops, nsops, timeout); | ||
308 | set_fs(fs); | ||
309 | } | ||
310 | kfree(sops); | ||
311 | return err; | ||
312 | } | ||
313 | |||
314 | asmlinkage long sys_oabi_semop(int semid, struct oabi_sembuf __user *tsops, | ||
315 | unsigned nsops) | ||
316 | { | ||
317 | return sys_oabi_semtimedop(semid, tsops, nsops, NULL); | ||
318 | } | ||
319 | |||
320 | extern asmlinkage int sys_ipc(uint call, int first, int second, int third, | ||
321 | void __user *ptr, long fifth); | ||
322 | |||
323 | asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third, | ||
324 | void __user *ptr, long fifth) | ||
325 | { | ||
326 | switch (call & 0xffff) { | ||
327 | case SEMOP: | ||
328 | return sys_oabi_semtimedop(first, | ||
329 | (struct oabi_sembuf __user *)ptr, | ||
330 | second, NULL); | ||
331 | case SEMTIMEDOP: | ||
332 | return sys_oabi_semtimedop(first, | ||
333 | (struct oabi_sembuf __user *)ptr, | ||
334 | second, | ||
335 | (const struct timespec __user *)fifth); | ||
336 | default: | ||
337 | return sys_ipc(call, first, second, third, ptr, fifth); | ||
338 | } | ||
339 | } | ||
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index fc4729106a32..d7d932c02866 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 45e9ea6cd2a5..10235b01582e 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 | } |
@@ -405,7 +404,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
405 | struct thread_info *thread = current_thread_info(); | 404 | struct thread_info *thread = current_thread_info(); |
406 | siginfo_t info; | 405 | siginfo_t info; |
407 | 406 | ||
408 | if ((no >> 16) != 0x9f) | 407 | if ((no >> 16) != (__ARM_NR_BASE>> 16)) |
409 | return bad_syscall(no, regs); | 408 | return bad_syscall(no, regs); |
410 | 409 | ||
411 | switch (no & 0xffff) { | 410 | switch (no & 0xffff) { |
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 9a47770114d4..2b254e88595c 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/ashldi3.S b/arch/arm/lib/ashldi3.S index 561e20717b30..55e57a1c2e6d 100644 --- a/arch/arm/lib/ashldi3.S +++ b/arch/arm/lib/ashldi3.S | |||
@@ -37,6 +37,7 @@ Boston, MA 02110-1301, USA. */ | |||
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | ENTRY(__ashldi3) | 39 | ENTRY(__ashldi3) |
40 | ENTRY(__aeabi_llsl) | ||
40 | 41 | ||
41 | subs r3, r2, #32 | 42 | subs r3, r2, #32 |
42 | rsb ip, r2, #32 | 43 | rsb ip, r2, #32 |
diff --git a/arch/arm/lib/ashrdi3.S b/arch/arm/lib/ashrdi3.S index 86fb2a90c301..0b31398f89b2 100644 --- a/arch/arm/lib/ashrdi3.S +++ b/arch/arm/lib/ashrdi3.S | |||
@@ -37,6 +37,7 @@ Boston, MA 02110-1301, USA. */ | |||
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | ENTRY(__ashrdi3) | 39 | ENTRY(__ashrdi3) |
40 | ENTRY(__aeabi_lasr) | ||
40 | 41 | ||
41 | subs r3, r2, #32 | 42 | subs r3, r2, #32 |
42 | rsb ip, r2, #32 | 43 | rsb ip, r2, #32 |
diff --git a/arch/arm/lib/csumpartialcopy.S b/arch/arm/lib/csumpartialcopy.S index 990ee63b2465..21effe0dbf97 100644 --- a/arch/arm/lib/csumpartialcopy.S +++ b/arch/arm/lib/csumpartialcopy.S | |||
@@ -18,11 +18,13 @@ | |||
18 | */ | 18 | */ |
19 | 19 | ||
20 | .macro save_regs | 20 | .macro save_regs |
21 | mov ip, sp | ||
21 | stmfd sp!, {r1, r4 - r8, fp, ip, lr, pc} | 22 | stmfd sp!, {r1, r4 - r8, fp, ip, lr, pc} |
23 | sub fp, ip, #4 | ||
22 | .endm | 24 | .endm |
23 | 25 | ||
24 | .macro load_regs,flags | 26 | .macro load_regs |
25 | LOADREGS(\flags,fp,{r1, r4 - r8, fp, sp, pc}) | 27 | ldmfd sp, {r1, r4 - r8, fp, sp, pc} |
26 | .endm | 28 | .endm |
27 | 29 | ||
28 | .macro load1b, reg1 | 30 | .macro load1b, reg1 |
diff --git a/arch/arm/lib/csumpartialcopygeneric.S b/arch/arm/lib/csumpartialcopygeneric.S index 4a4609c19095..c50e8f5285d1 100644 --- a/arch/arm/lib/csumpartialcopygeneric.S +++ b/arch/arm/lib/csumpartialcopygeneric.S | |||
@@ -23,7 +23,7 @@ len .req r2 | |||
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 333bca292de9..c3b93e22ea25 100644 --- a/arch/arm/lib/csumpartialcopyuser.S +++ b/arch/arm/lib/csumpartialcopyuser.S | |||
@@ -18,11 +18,13 @@ | |||
18 | .text | 18 | .text |
19 | 19 | ||
20 | .macro save_regs | 20 | .macro save_regs |
21 | mov ip, sp | ||
21 | stmfd sp!, {r1 - r2, r4 - r8, fp, ip, lr, pc} | 22 | stmfd sp!, {r1 - r2, r4 - r8, fp, ip, lr, pc} |
23 | sub fp, ip, #4 | ||
22 | .endm | 24 | .endm |
23 | 25 | ||
24 | .macro load_regs,flags | 26 | .macro load_regs |
25 | ldm\flags fp, {r1, r2, r4-r8, fp, sp, pc} | 27 | ldmfd sp, {r1, r2, r4-r8, fp, sp, pc} |
26 | .endm | 28 | .endm |
27 | 29 | ||
28 | .macro load1b, reg1 | 30 | .macro load1b, reg1 |
@@ -100,5 +102,5 @@ | |||
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/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S index 59026029d017..4e492f4b3f0e 100644 --- a/arch/arm/lib/lib1funcs.S +++ b/arch/arm/lib/lib1funcs.S | |||
@@ -206,6 +206,7 @@ Boston, MA 02111-1307, USA. */ | |||
206 | 206 | ||
207 | 207 | ||
208 | ENTRY(__udivsi3) | 208 | ENTRY(__udivsi3) |
209 | ENTRY(__aeabi_uidiv) | ||
209 | 210 | ||
210 | subs r2, r1, #1 | 211 | subs r2, r1, #1 |
211 | moveq pc, lr | 212 | moveq pc, lr |
@@ -246,6 +247,7 @@ ENTRY(__umodsi3) | |||
246 | 247 | ||
247 | 248 | ||
248 | ENTRY(__divsi3) | 249 | ENTRY(__divsi3) |
250 | ENTRY(__aeabi_idiv) | ||
249 | 251 | ||
250 | cmp r1, #0 | 252 | cmp r1, #0 |
251 | eor ip, r0, r1 @ save the sign of the result. | 253 | eor ip, r0, r1 @ save the sign of the result. |
@@ -303,12 +305,33 @@ ENTRY(__modsi3) | |||
303 | rsbmi r0, r0, #0 | 305 | rsbmi r0, r0, #0 |
304 | mov pc, lr | 306 | mov pc, lr |
305 | 307 | ||
308 | #ifdef CONFIG_AEABI | ||
309 | |||
310 | ENTRY(__aeabi_uidivmod) | ||
311 | |||
312 | stmfd sp!, {r0, r1, ip, lr} | ||
313 | bl __aeabi_uidiv | ||
314 | ldmfd sp!, {r1, r2, ip, lr} | ||
315 | mul r3, r0, r2 | ||
316 | sub r1, r1, r3 | ||
317 | mov pc, lr | ||
318 | |||
319 | ENTRY(__aeabi_idivmod) | ||
320 | |||
321 | stmfd sp!, {r0, r1, ip, lr} | ||
322 | bl __aeabi_idiv | ||
323 | ldmfd sp!, {r1, r2, ip, lr} | ||
324 | mul r3, r0, r2 | ||
325 | sub r1, r1, r3 | ||
326 | mov pc, lr | ||
327 | |||
328 | #endif | ||
306 | 329 | ||
307 | Ldiv0: | 330 | Ldiv0: |
308 | 331 | ||
309 | str lr, [sp, #-4]! | 332 | str lr, [sp, #-8]! |
310 | bl __div0 | 333 | bl __div0 |
311 | mov r0, #0 @ About as wrong as it could be. | 334 | mov r0, #0 @ About as wrong as it could be. |
312 | ldr pc, [sp], #4 | 335 | ldr pc, [sp], #8 |
313 | 336 | ||
314 | 337 | ||
diff --git a/arch/arm/lib/lshrdi3.S b/arch/arm/lib/lshrdi3.S index 46c2ed19ec95..a86dbdd59cc4 100644 --- a/arch/arm/lib/lshrdi3.S +++ b/arch/arm/lib/lshrdi3.S | |||
@@ -37,6 +37,7 @@ Boston, MA 02110-1301, USA. */ | |||
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | ENTRY(__lshrdi3) | 39 | ENTRY(__lshrdi3) |
40 | ENTRY(__aeabi_llsr) | ||
40 | 41 | ||
41 | subs r3, r2, #32 | 42 | subs r3, r2, #32 |
42 | rsb ip, r2, #32 | 43 | rsb ip, r2, #32 |
diff --git a/arch/arm/lib/muldi3.S b/arch/arm/lib/muldi3.S index c7fbdf005319..72d594184b8a 100644 --- a/arch/arm/lib/muldi3.S +++ b/arch/arm/lib/muldi3.S | |||
@@ -25,6 +25,7 @@ | |||
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | ENTRY(__muldi3) | 27 | ENTRY(__muldi3) |
28 | ENTRY(__aeabi_lmul) | ||
28 | 29 | ||
29 | mul xh, yl, xh | 30 | mul xh, yl, xh |
30 | mla xh, xl, yh, xh | 31 | mla xh, xl, yh, xh |
diff --git a/arch/arm/lib/ucmpdi2.S b/arch/arm/lib/ucmpdi2.S index 112630f93e5d..d847a62834cb 100644 --- a/arch/arm/lib/ucmpdi2.S +++ b/arch/arm/lib/ucmpdi2.S | |||
@@ -10,6 +10,7 @@ | |||
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #include <linux/config.h> | ||
13 | #include <linux/linkage.h> | 14 | #include <linux/linkage.h> |
14 | 15 | ||
15 | #ifdef __ARMEB__ | 16 | #ifdef __ARMEB__ |
@@ -33,3 +34,16 @@ ENTRY(__ucmpdi2) | |||
33 | movhi r0, #2 | 34 | movhi r0, #2 |
34 | mov pc, lr | 35 | mov pc, lr |
35 | 36 | ||
37 | #ifdef CONFIG_AEABI | ||
38 | |||
39 | ENTRY(__aeabi_ulcmp) | ||
40 | |||
41 | cmp xh, yh | ||
42 | cmpeq xl, yl | ||
43 | movlo r0, #-1 | ||
44 | moveq r0, #0 | ||
45 | movhi r0, #1 | ||
46 | mov pc, lr | ||
47 | |||
48 | #endif | ||
49 | |||
diff --git a/arch/arm/mach-aaec2000/aaed2000.c b/arch/arm/mach-aaec2000/aaed2000.c index f5ef69702296..dc5fa8e5ebef 100644 --- a/arch/arm/mach-aaec2000/aaed2000.c +++ b/arch/arm/mach-aaec2000/aaed2000.c | |||
@@ -90,7 +90,6 @@ static void __init aaed2000_map_io(void) | |||
90 | 90 | ||
91 | MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform") | 91 | MACHINE_START(AAED2000, "Agilent AAED-2000 Development Platform") |
92 | /* Maintainer: Nicolas Bellido Y Ortega */ | 92 | /* Maintainer: Nicolas Bellido Y Ortega */ |
93 | .phys_ram = 0xf0000000, | ||
94 | .phys_io = PIO_BASE, | 93 | .phys_io = PIO_BASE, |
95 | .io_pg_offst = ((VIO_BASE) >> 18) & 0xfffc, | 94 | .io_pg_offst = ((VIO_BASE) >> 18) & 0xfffc, |
96 | .map_io = aaed2000_map_io, | 95 | .map_io = aaed2000_map_io, |
diff --git a/arch/arm/mach-aaec2000/clock.c b/arch/arm/mach-aaec2000/clock.c index 0340ddc4824e..74aa7a39bb68 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 4e706d9ad368..dce4815cf53c 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 daefc0ea14a1..b6029a95f19c 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 000000000000..4b7218fc3eb1 --- /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 000000000000..75e6ee318ded --- /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 000000000000..e667dcc7cd34 --- /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 000000000000..54022e58d50d --- /dev/null +++ b/arch/arm/mach-at91rm9200/board-csb337.c | |||
@@ -0,0 +1,142 @@ | |||
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_io = AT91_BASE_SYS, | ||
136 | .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, | ||
137 | .boot_params = AT91_SDRAM_BASE + 0x100, | ||
138 | .timer = &at91rm9200_timer, | ||
139 | .map_io = csb337_map_io, | ||
140 | .init_irq = csb337_init_irq, | ||
141 | .init_machine = csb337_board_init, | ||
142 | 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 000000000000..8195f9d919ea --- /dev/null +++ b/arch/arm/mach-at91rm9200/board-csb637.c | |||
@@ -0,0 +1,115 @@ | |||
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_io = AT91_BASE_SYS, | ||
109 | .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, | ||
110 | .boot_params = AT91_SDRAM_BASE + 0x100, | ||
111 | .timer = &at91rm9200_timer, | ||
112 | .map_io = csb637_map_io, | ||
113 | .init_irq = csb637_init_irq, | ||
114 | .init_machine = csb637_board_init, | ||
115 | 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 000000000000..8a783368366e --- /dev/null +++ b/arch/arm/mach-at91rm9200/board-dk.c | |||
@@ -0,0 +1,137 @@ | |||
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_io = AT91_BASE_SYS, | ||
131 | .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, | ||
132 | .boot_params = AT91_SDRAM_BASE + 0x100, | ||
133 | .timer = &at91rm9200_timer, | ||
134 | .map_io = dk_map_io, | ||
135 | .init_irq = dk_init_irq, | ||
136 | .init_machine = dk_board_init, | ||
137 | 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 000000000000..fd0752eba897 --- /dev/null +++ b/arch/arm/mach-at91rm9200/board-ek.c | |||
@@ -0,0 +1,130 @@ | |||
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_io = AT91_BASE_SYS, | ||
124 | .io_pg_offst = (AT91_VA_BASE_SYS >> 18) & 0xfffc, | ||
125 | .boot_params = AT91_SDRAM_BASE + 0x100, | ||
126 | .timer = &at91rm9200_timer, | ||
127 | .map_io = ek_map_io, | ||
128 | .init_irq = ek_init_irq, | ||
129 | .init_machine = ek_board_init, | ||
130 | MACHINE_END | ||
diff --git a/arch/arm/mach-at91rm9200/clock.c b/arch/arm/mach-at91rm9200/clock.c new file mode 100644 index 000000000000..ec8195a2a3cc --- /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 000000000000..3848fd2d5596 --- /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 000000000000..8df3e5245651 --- /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 000000000000..9bd541eba0a0 --- /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 000000000000..2fd2ef583e4d --- /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 000000000000..cb62bc83a1dd --- /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 000000000000..1b6dd2deeb22 --- /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/autcpu12.c b/arch/arm/mach-clps711x/autcpu12.c index 43b9423d1440..c13ca6c56baa 100644 --- a/arch/arm/mach-clps711x/autcpu12.c +++ b/arch/arm/mach-clps711x/autcpu12.c | |||
@@ -64,7 +64,6 @@ void __init autcpu12_map_io(void) | |||
64 | 64 | ||
65 | MACHINE_START(AUTCPU12, "autronix autcpu12") | 65 | MACHINE_START(AUTCPU12, "autronix autcpu12") |
66 | /* Maintainer: Thomas Gleixner */ | 66 | /* Maintainer: Thomas Gleixner */ |
67 | .phys_ram = 0xc0000000, | ||
68 | .phys_io = 0x80000000, | 67 | .phys_io = 0x80000000, |
69 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, | 68 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, |
70 | .boot_params = 0xc0020000, | 69 | .boot_params = 0xc0020000, |
diff --git a/arch/arm/mach-clps711x/cdb89712.c b/arch/arm/mach-clps711x/cdb89712.c index cba7be5a06c3..831df007f6c7 100644 --- a/arch/arm/mach-clps711x/cdb89712.c +++ b/arch/arm/mach-clps711x/cdb89712.c | |||
@@ -55,7 +55,6 @@ static void __init cdb89712_map_io(void) | |||
55 | 55 | ||
56 | MACHINE_START(CDB89712, "Cirrus-CDB89712") | 56 | MACHINE_START(CDB89712, "Cirrus-CDB89712") |
57 | /* Maintainer: Ray Lehtiniemi */ | 57 | /* Maintainer: Ray Lehtiniemi */ |
58 | .phys_ram = 0xc0000000, | ||
59 | .phys_io = 0x80000000, | 58 | .phys_io = 0x80000000, |
60 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, | 59 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, |
61 | .boot_params = 0xc0000100, | 60 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-clps711x/ceiva.c b/arch/arm/mach-clps711x/ceiva.c index 35d51a759b59..e2b2c5ac8a83 100644 --- a/arch/arm/mach-clps711x/ceiva.c +++ b/arch/arm/mach-clps711x/ceiva.c | |||
@@ -56,7 +56,6 @@ static void __init ceiva_map_io(void) | |||
56 | 56 | ||
57 | MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame") | 57 | MACHINE_START(CEIVA, "CEIVA/Polaroid Photo MAX Digital Picture Frame") |
58 | /* Maintainer: Rob Scott */ | 58 | /* Maintainer: Rob Scott */ |
59 | .phys_ram = 0xc0000000, | ||
60 | .phys_io = 0x80000000, | 59 | .phys_io = 0x80000000, |
61 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, | 60 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, |
62 | .boot_params = 0xc0000100, | 61 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-clps711x/clep7312.c b/arch/arm/mach-clps711x/clep7312.c index c83f3fd68fcd..09fb57e45213 100644 --- a/arch/arm/mach-clps711x/clep7312.c +++ b/arch/arm/mach-clps711x/clep7312.c | |||
@@ -38,7 +38,6 @@ fixup_clep7312(struct machine_desc *desc, struct tag *tags, | |||
38 | 38 | ||
39 | MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312") | 39 | MACHINE_START(CLEP7212, "Cirrus Logic 7212/7312") |
40 | /* Maintainer: Nobody */ | 40 | /* Maintainer: Nobody */ |
41 | .phys_ram = 0xc0000000, | ||
42 | .phys_io = 0x80000000, | 41 | .phys_io = 0x80000000, |
43 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, | 42 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, |
44 | .boot_params = 0xc0000100, | 43 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-clps711x/dma.c b/arch/arm/mach-clps711x/dma.c deleted file mode 100644 index af5a4de38eac..000000000000 --- 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-clps711x/edb7211-arch.c b/arch/arm/mach-clps711x/edb7211-arch.c index 255c98b63e15..dc81cc68595d 100644 --- a/arch/arm/mach-clps711x/edb7211-arch.c +++ b/arch/arm/mach-clps711x/edb7211-arch.c | |||
@@ -52,7 +52,6 @@ fixup_edb7211(struct machine_desc *desc, struct tag *tags, | |||
52 | 52 | ||
53 | MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)") | 53 | MACHINE_START(EDB7211, "CL-EDB7211 (EP7211 eval board)") |
54 | /* Maintainer: Jon McClintock */ | 54 | /* Maintainer: Jon McClintock */ |
55 | .phys_ram = 0xc0000000, | ||
56 | .phys_io = 0x80000000, | 55 | .phys_io = 0x80000000, |
57 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, | 56 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, |
58 | .boot_params = 0xc0020100, /* 0xc0000000 - 0xc001ffff can be video RAM */ | 57 | .boot_params = 0xc0020100, /* 0xc0000000 - 0xc001ffff can be video RAM */ |
diff --git a/arch/arm/mach-clps711x/fortunet.c b/arch/arm/mach-clps711x/fortunet.c index 3d88da0c287b..ff26a85aa4ba 100644 --- a/arch/arm/mach-clps711x/fortunet.c +++ b/arch/arm/mach-clps711x/fortunet.c | |||
@@ -78,7 +78,6 @@ fortunet_fixup(struct machine_desc *desc, struct tag *tags, | |||
78 | 78 | ||
79 | MACHINE_START(FORTUNET, "ARM-FortuNet") | 79 | MACHINE_START(FORTUNET, "ARM-FortuNet") |
80 | /* Maintainer: FortuNet Inc. */ | 80 | /* Maintainer: FortuNet Inc. */ |
81 | .phys_ram = 0xc0000000, | ||
82 | .phys_io = 0x80000000, | 81 | .phys_io = 0x80000000, |
83 | .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, | 82 | .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, |
84 | .boot_params = 0x00000000, | 83 | .boot_params = 0x00000000, |
diff --git a/arch/arm/mach-clps711x/p720t.c b/arch/arm/mach-clps711x/p720t.c index a1acb945fb51..9ba45f4d5a7e 100644 --- a/arch/arm/mach-clps711x/p720t.c +++ b/arch/arm/mach-clps711x/p720t.c | |||
@@ -90,7 +90,6 @@ static void __init p720t_map_io(void) | |||
90 | 90 | ||
91 | MACHINE_START(P720T, "ARM-Prospector720T") | 91 | MACHINE_START(P720T, "ARM-Prospector720T") |
92 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 92 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
93 | .phys_ram = 0xc0000000, | ||
94 | .phys_io = 0x80000000, | 93 | .phys_io = 0x80000000, |
95 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, | 94 | .io_pg_offst = ((0xff000000) >> 18) & 0xfffc, |
96 | .boot_params = 0xc0000100, | 95 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-clps7500/core.c b/arch/arm/mach-clps7500/core.c index d869af0023f8..5b12cab0e691 100644 --- a/arch/arm/mach-clps7500/core.c +++ b/arch/arm/mach-clps7500/core.c | |||
@@ -384,7 +384,6 @@ static void __init clps7500_init(void) | |||
384 | 384 | ||
385 | MACHINE_START(CLPS7500, "CL-PS7500") | 385 | MACHINE_START(CLPS7500, "CL-PS7500") |
386 | /* Maintainer: Philip Blundell */ | 386 | /* Maintainer: Philip Blundell */ |
387 | .phys_ram = 0x10000000, | ||
388 | .phys_io = 0x03000000, | 387 | .phys_io = 0x03000000, |
389 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, | 388 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, |
390 | .map_io = clps7500_map_io, | 389 | .map_io = clps7500_map_io, |
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c index ed4614983adb..6d620d8268cc 100644 --- a/arch/arm/mach-ebsa110/core.c +++ b/arch/arm/mach-ebsa110/core.c | |||
@@ -284,7 +284,6 @@ arch_initcall(ebsa110_init); | |||
284 | 284 | ||
285 | MACHINE_START(EBSA110, "EBSA110") | 285 | MACHINE_START(EBSA110, "EBSA110") |
286 | /* Maintainer: Russell King */ | 286 | /* Maintainer: Russell King */ |
287 | .phys_ram = 0x00000000, | ||
288 | .phys_io = 0xe0000000, | 287 | .phys_io = 0xe0000000, |
289 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, | 288 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, |
290 | .boot_params = 0x00000400, | 289 | .boot_params = 0x00000400, |
diff --git a/arch/arm/mach-epxa10db/Kconfig b/arch/arm/mach-epxa10db/Kconfig deleted file mode 100644 index 55d896dd4950..000000000000 --- 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 24fbd7d3a3c1..000000000000 --- 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 28bec7d3fc88..000000000000 --- 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 44c56571d183..000000000000 --- 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 0151e9f1c066..000000000000 --- 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 9bf927e13309..000000000000 --- 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 cfd0d2182d44..000000000000 --- 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 4b1084dde8dd..000000000000 --- 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/cats-hw.c b/arch/arm/mach-footbridge/cats-hw.c index 49b898af0032..5b64d5c5b967 100644 --- a/arch/arm/mach-footbridge/cats-hw.c +++ b/arch/arm/mach-footbridge/cats-hw.c | |||
@@ -85,7 +85,6 @@ fixup_cats(struct machine_desc *desc, struct tag *tags, | |||
85 | 85 | ||
86 | MACHINE_START(CATS, "Chalice-CATS") | 86 | MACHINE_START(CATS, "Chalice-CATS") |
87 | /* Maintainer: Philip Blundell */ | 87 | /* Maintainer: Philip Blundell */ |
88 | .phys_ram = 0x00000000, | ||
89 | .phys_io = DC21285_ARMCSR_BASE, | 88 | .phys_io = DC21285_ARMCSR_BASE, |
90 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, | 89 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, |
91 | .boot_params = 0x00000100, | 90 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-footbridge/co285.c b/arch/arm/mach-footbridge/co285.c index 548a79081688..4545576ad8d9 100644 --- a/arch/arm/mach-footbridge/co285.c +++ b/arch/arm/mach-footbridge/co285.c | |||
@@ -29,7 +29,6 @@ fixup_coebsa285(struct machine_desc *desc, struct tag *tags, | |||
29 | 29 | ||
30 | MACHINE_START(CO285, "co-EBSA285") | 30 | MACHINE_START(CO285, "co-EBSA285") |
31 | /* Maintainer: Mark van Doesburg */ | 31 | /* Maintainer: Mark van Doesburg */ |
32 | .phys_ram = 0x00000000, | ||
33 | .phys_io = DC21285_ARMCSR_BASE, | 32 | .phys_io = DC21285_ARMCSR_BASE, |
34 | .io_pg_offst = ((0x7cf00000) >> 18) & 0xfffc, | 33 | .io_pg_offst = ((0x7cf00000) >> 18) & 0xfffc, |
35 | .fixup = fixup_coebsa285, | 34 | .fixup = fixup_coebsa285, |
diff --git a/arch/arm/mach-footbridge/dma.c b/arch/arm/mach-footbridge/dma.c index a6b1396b0951..7a54578b51af 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/ebsa285.c b/arch/arm/mach-footbridge/ebsa285.c index 1c37605268d5..b1d3bf20a41e 100644 --- a/arch/arm/mach-footbridge/ebsa285.c +++ b/arch/arm/mach-footbridge/ebsa285.c | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | MACHINE_START(EBSA285, "EBSA285") | 15 | MACHINE_START(EBSA285, "EBSA285") |
16 | /* Maintainer: Russell King */ | 16 | /* Maintainer: Russell King */ |
17 | .phys_ram = 0x00000000, | ||
18 | .phys_io = DC21285_ARMCSR_BASE, | 17 | .phys_io = DC21285_ARMCSR_BASE, |
19 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, | 18 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, |
20 | .boot_params = 0x00000100, | 19 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-footbridge/netwinder-hw.c b/arch/arm/mach-footbridge/netwinder-hw.c index 775f85fc8513..229bf0585e40 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 |
@@ -648,7 +649,6 @@ fixup_netwinder(struct machine_desc *desc, struct tag *tags, | |||
648 | 649 | ||
649 | MACHINE_START(NETWINDER, "Rebel-NetWinder") | 650 | MACHINE_START(NETWINDER, "Rebel-NetWinder") |
650 | /* Maintainer: Russell King/Rebel.com */ | 651 | /* Maintainer: Russell King/Rebel.com */ |
651 | .phys_ram = 0x00000000, | ||
652 | .phys_io = DC21285_ARMCSR_BASE, | 652 | .phys_io = DC21285_ARMCSR_BASE, |
653 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, | 653 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, |
654 | .boot_params = 0x00000100, | 654 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-footbridge/personal.c b/arch/arm/mach-footbridge/personal.c index 0146b8bb59da..c4f843fc099d 100644 --- a/arch/arm/mach-footbridge/personal.c +++ b/arch/arm/mach-footbridge/personal.c | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer") | 15 | MACHINE_START(PERSONAL_SERVER, "Compaq-PersonalServer") |
16 | /* Maintainer: Jamey Hicks / George France */ | 16 | /* Maintainer: Jamey Hicks / George France */ |
17 | .phys_ram = 0x00000000, | ||
18 | .phys_io = DC21285_ARMCSR_BASE, | 17 | .phys_io = DC21285_ARMCSR_BASE, |
19 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, | 18 | .io_pg_offst = ((0xfe000000) >> 18) & 0xfffc, |
20 | .boot_params = 0x00000100, | 19 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-h720x/h7201-eval.c b/arch/arm/mach-h720x/h7201-eval.c index fa59e9e2a5c8..193f968edac3 100644 --- a/arch/arm/mach-h720x/h7201-eval.c +++ b/arch/arm/mach-h720x/h7201-eval.c | |||
@@ -31,7 +31,6 @@ | |||
31 | 31 | ||
32 | MACHINE_START(H7201, "Hynix GMS30C7201") | 32 | MACHINE_START(H7201, "Hynix GMS30C7201") |
33 | /* Maintainer: Robert Schwebel, Pengutronix */ | 33 | /* Maintainer: Robert Schwebel, Pengutronix */ |
34 | .phys_ram = 0x40000000, | ||
35 | .phys_io = 0x80000000, | 34 | .phys_io = 0x80000000, |
36 | .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, | 35 | .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, |
37 | .boot_params = 0xc0001000, | 36 | .boot_params = 0xc0001000, |
diff --git a/arch/arm/mach-h720x/h7202-eval.c b/arch/arm/mach-h720x/h7202-eval.c index d75c8221d2a5..36266896979c 100644 --- a/arch/arm/mach-h720x/h7202-eval.c +++ b/arch/arm/mach-h720x/h7202-eval.c | |||
@@ -72,7 +72,6 @@ static void __init init_eval_h7202(void) | |||
72 | 72 | ||
73 | MACHINE_START(H7202, "Hynix HMS30C7202") | 73 | MACHINE_START(H7202, "Hynix HMS30C7202") |
74 | /* Maintainer: Robert Schwebel, Pengutronix */ | 74 | /* Maintainer: Robert Schwebel, Pengutronix */ |
75 | .phys_ram = 0x40000000, | ||
76 | .phys_io = 0x80000000, | 75 | .phys_io = 0x80000000, |
77 | .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, | 76 | .io_pg_offst = ((0xf0000000) >> 18) & 0xfffc, |
78 | .boot_params = 0x40000100, | 77 | .boot_params = 0x40000100, |
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c index 708e1b3faa14..dc31e3fd6c57 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,50 +61,14 @@ 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") |
106 | /* Maintainer: Sascha Hauer, Pengutronix */ | 71 | /* Maintainer: Sascha Hauer, Pengutronix */ |
107 | .phys_ram = 0x08000000, | ||
108 | .phys_io = 0x00200000, | 72 | .phys_io = 0x00200000, |
109 | .io_pg_offst = ((0xe0200000) >> 18) & 0xfffc, | 73 | .io_pg_offst = ((0xe0200000) >> 18) & 0xfffc, |
110 | .boot_params = 0x08000100, | 74 | .boot_params = 0x08000100, |
diff --git a/arch/arm/mach-integrator/clock.c b/arch/arm/mach-integrator/clock.c index 73c360685cad..95a1e263f7fa 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 dacbf504dae2..20071a2767cc 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 aae6f23cd72b..000000000000 --- 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 a4bafee77a06..a85d471c5bfa 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 4c0f7c65facf..d8d3c2a5a97e 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 | ||
@@ -347,7 +347,6 @@ static struct sys_timer ap_timer = { | |||
347 | 347 | ||
348 | MACHINE_START(INTEGRATOR, "ARM-Integrator") | 348 | MACHINE_START(INTEGRATOR, "ARM-Integrator") |
349 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 349 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
350 | .phys_ram = 0x00000000, | ||
351 | .phys_io = 0x16000000, | 350 | .phys_io = 0x16000000, |
352 | .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, | 351 | .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, |
353 | .boot_params = 0x00000100, | 352 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 93f7ccb22c27..31820170f306 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> |
@@ -578,7 +578,6 @@ static struct sys_timer cp_timer = { | |||
578 | 578 | ||
579 | MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP") | 579 | MACHINE_START(CINTEGRATOR, "ARM-IntegratorCP") |
580 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 580 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
581 | .phys_ram = 0x00000000, | ||
582 | .phys_io = 0x16000000, | 581 | .phys_io = 0x16000000, |
583 | .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, | 582 | .io_pg_offst = ((0xf1600000) >> 18) & 0xfffc, |
584 | .boot_params = 0x00000100, | 583 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-integrator/lm.c b/arch/arm/mach-integrator/lm.c index 5b41e3a724e1..622cdc4212dd 100644 --- a/arch/arm/mach-integrator/lm.c +++ b/arch/arm/mach-integrator/lm.c | |||
@@ -22,20 +22,6 @@ static int lm_match(struct device *dev, struct device_driver *drv) | |||
22 | return 1; | 22 | return 1; |
23 | } | 23 | } |
24 | 24 | ||
25 | static struct bus_type lm_bustype = { | ||
26 | .name = "logicmodule", | ||
27 | .match = lm_match, | ||
28 | // .suspend = lm_suspend, | ||
29 | // .resume = lm_resume, | ||
30 | }; | ||
31 | |||
32 | static int __init lm_init(void) | ||
33 | { | ||
34 | return bus_register(&lm_bustype); | ||
35 | } | ||
36 | |||
37 | postcore_initcall(lm_init); | ||
38 | |||
39 | static int lm_bus_probe(struct device *dev) | 25 | static int lm_bus_probe(struct device *dev) |
40 | { | 26 | { |
41 | struct lm_device *lmdev = to_lm_device(dev); | 27 | struct lm_device *lmdev = to_lm_device(dev); |
@@ -49,16 +35,30 @@ static int lm_bus_remove(struct device *dev) | |||
49 | struct lm_device *lmdev = to_lm_device(dev); | 35 | struct lm_device *lmdev = to_lm_device(dev); |
50 | struct lm_driver *lmdrv = to_lm_driver(dev->driver); | 36 | struct lm_driver *lmdrv = to_lm_driver(dev->driver); |
51 | 37 | ||
52 | lmdrv->remove(lmdev); | 38 | if (lmdrv->remove) |
39 | lmdrv->remove(lmdev); | ||
53 | return 0; | 40 | return 0; |
54 | } | 41 | } |
55 | 42 | ||
43 | static struct bus_type lm_bustype = { | ||
44 | .name = "logicmodule", | ||
45 | .match = lm_match, | ||
46 | .probe = lm_bus_probe, | ||
47 | .remove = lm_bus_remove, | ||
48 | // .suspend = lm_bus_suspend, | ||
49 | // .resume = lm_bus_resume, | ||
50 | }; | ||
51 | |||
52 | static int __init lm_init(void) | ||
53 | { | ||
54 | return bus_register(&lm_bustype); | ||
55 | } | ||
56 | |||
57 | postcore_initcall(lm_init); | ||
58 | |||
56 | int lm_driver_register(struct lm_driver *drv) | 59 | int lm_driver_register(struct lm_driver *drv) |
57 | { | 60 | { |
58 | drv->drv.bus = &lm_bustype; | 61 | drv->drv.bus = &lm_bustype; |
59 | drv->drv.probe = lm_bus_probe; | ||
60 | drv->drv.remove = lm_bus_remove; | ||
61 | |||
62 | return driver_register(&drv->drv); | 62 | return driver_register(&drv->drv); |
63 | } | 63 | } |
64 | 64 | ||
diff --git a/arch/arm/mach-integrator/time.c b/arch/arm/mach-integrator/time.c index 1a844ca139e0..3c22c16b38bf 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/iop321-setup.c b/arch/arm/mach-iop3xx/iop321-setup.c index 80770233b8d4..e4f4c52d93d4 100644 --- a/arch/arm/mach-iop3xx/iop321-setup.c +++ b/arch/arm/mach-iop3xx/iop321-setup.c | |||
@@ -151,7 +151,6 @@ extern void iop321_init_time(void); | |||
151 | #if defined(CONFIG_ARCH_IQ80321) | 151 | #if defined(CONFIG_ARCH_IQ80321) |
152 | MACHINE_START(IQ80321, "Intel IQ80321") | 152 | MACHINE_START(IQ80321, "Intel IQ80321") |
153 | /* Maintainer: Intel Corporation */ | 153 | /* Maintainer: Intel Corporation */ |
154 | .phys_ram = PHYS_OFFSET, | ||
155 | .phys_io = IQ80321_UART, | 154 | .phys_io = IQ80321_UART, |
156 | .io_pg_offst = ((IQ80321_UART) >> 18) & 0xfffc, | 155 | .io_pg_offst = ((IQ80321_UART) >> 18) & 0xfffc, |
157 | .map_io = iq80321_map_io, | 156 | .map_io = iq80321_map_io, |
@@ -163,7 +162,6 @@ MACHINE_END | |||
163 | #elif defined(CONFIG_ARCH_IQ31244) | 162 | #elif defined(CONFIG_ARCH_IQ31244) |
164 | MACHINE_START(IQ31244, "Intel IQ31244") | 163 | MACHINE_START(IQ31244, "Intel IQ31244") |
165 | /* Maintainer: Intel Corp. */ | 164 | /* Maintainer: Intel Corp. */ |
166 | .phys_ram = PHYS_OFFSET, | ||
167 | .phys_io = IQ31244_UART, | 165 | .phys_io = IQ31244_UART, |
168 | .io_pg_offst = ((IQ31244_UART) >> 18) & 0xfffc, | 166 | .io_pg_offst = ((IQ31244_UART) >> 18) & 0xfffc, |
169 | .map_io = iq31244_map_io, | 167 | .map_io = iq31244_map_io, |
diff --git a/arch/arm/mach-iop3xx/iop331-setup.c b/arch/arm/mach-iop3xx/iop331-setup.c index 53f60614498b..63585485123e 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 |
@@ -153,7 +195,6 @@ extern void iq80332_map_io(void); | |||
153 | #if defined(CONFIG_ARCH_IQ80331) | 195 | #if defined(CONFIG_ARCH_IQ80331) |
154 | MACHINE_START(IQ80331, "Intel IQ80331") | 196 | MACHINE_START(IQ80331, "Intel IQ80331") |
155 | /* Maintainer: Intel Corp. */ | 197 | /* Maintainer: Intel Corp. */ |
156 | .phys_ram = PHYS_OFFSET, | ||
157 | .phys_io = 0xfefff000, | 198 | .phys_io = 0xfefff000, |
158 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical | 199 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical |
159 | .map_io = iq80331_map_io, | 200 | .map_io = iq80331_map_io, |
@@ -166,7 +207,6 @@ MACHINE_END | |||
166 | #elif defined(CONFIG_MACH_IQ80332) | 207 | #elif defined(CONFIG_MACH_IQ80332) |
167 | MACHINE_START(IQ80332, "Intel IQ80332") | 208 | MACHINE_START(IQ80332, "Intel IQ80332") |
168 | /* Maintainer: Intel Corp. */ | 209 | /* Maintainer: Intel Corp. */ |
169 | .phys_ram = PHYS_OFFSET, | ||
170 | .phys_io = 0xfefff000, | 210 | .phys_io = 0xfefff000, |
171 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical | 211 | .io_pg_offst = ((0xfffff000) >> 18) & 0xfffc, // virtual, physical |
172 | .map_io = iq80332_map_io, | 212 | .map_io = iq80332_map_io, |
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c index 6851abaf5524..cfd5bef3190b 100644 --- a/arch/arm/mach-ixp2000/core.c +++ b/arch/arm/mach-ixp2000/core.c | |||
@@ -106,6 +106,16 @@ static struct map_desc ixp2000_io_desc[] __initdata = { | |||
106 | .length = IXP2000_MSF_SIZE, | 106 | .length = IXP2000_MSF_SIZE, |
107 | .type = MT_IXP2000_DEVICE, | 107 | .type = MT_IXP2000_DEVICE, |
108 | }, { | 108 | }, { |
109 | .virtual = IXP2000_SCRATCH_RING_VIRT_BASE, | ||
110 | .pfn = __phys_to_pfn(IXP2000_SCRATCH_RING_PHYS_BASE), | ||
111 | .length = IXP2000_SCRATCH_RING_SIZE, | ||
112 | .type = MT_IXP2000_DEVICE, | ||
113 | }, { | ||
114 | .virtual = IXP2000_SRAM0_VIRT_BASE, | ||
115 | .pfn = __phys_to_pfn(IXP2000_SRAM0_PHYS_BASE), | ||
116 | .length = IXP2000_SRAM0_SIZE, | ||
117 | .type = MT_IXP2000_DEVICE, | ||
118 | }, { | ||
109 | .virtual = IXP2000_PCI_IO_VIRT_BASE, | 119 | .virtual = IXP2000_PCI_IO_VIRT_BASE, |
110 | .pfn = __phys_to_pfn(IXP2000_PCI_IO_PHYS_BASE), | 120 | .pfn = __phys_to_pfn(IXP2000_PCI_IO_PHYS_BASE), |
111 | .length = IXP2000_PCI_IO_SIZE, | 121 | .length = IXP2000_PCI_IO_SIZE, |
diff --git a/arch/arm/mach-ixp2000/enp2611.c b/arch/arm/mach-ixp2000/enp2611.c index 61f6006241bd..9e5a13bb39d0 100644 --- a/arch/arm/mach-ixp2000/enp2611.c +++ b/arch/arm/mach-ixp2000/enp2611.c | |||
@@ -254,7 +254,6 @@ static void __init enp2611_init_machine(void) | |||
254 | 254 | ||
255 | MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board") | 255 | MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board") |
256 | /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ | 256 | /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */ |
257 | .phys_ram = 0x00000000, | ||
258 | .phys_io = IXP2000_UART_PHYS_BASE, | 257 | .phys_io = IXP2000_UART_PHYS_BASE, |
259 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, | 258 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, |
260 | .boot_params = 0x00000100, | 259 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-ixp2000/ixdp2400.c b/arch/arm/mach-ixp2000/ixdp2400.c index fd280a93637e..7c782403042a 100644 --- a/arch/arm/mach-ixp2000/ixdp2400.c +++ b/arch/arm/mach-ixp2000/ixdp2400.c | |||
@@ -169,7 +169,6 @@ void ixdp2400_init_irq(void) | |||
169 | 169 | ||
170 | MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform") | 170 | MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform") |
171 | /* Maintainer: MontaVista Software, Inc. */ | 171 | /* Maintainer: MontaVista Software, Inc. */ |
172 | .phys_ram = 0x00000000, | ||
173 | .phys_io = IXP2000_UART_PHYS_BASE, | 172 | .phys_io = IXP2000_UART_PHYS_BASE, |
174 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, | 173 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, |
175 | .boot_params = 0x00000100, | 174 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-ixp2000/ixdp2800.c b/arch/arm/mach-ixp2000/ixdp2800.c index f9073aa28615..076e3f8acc96 100644 --- a/arch/arm/mach-ixp2000/ixdp2800.c +++ b/arch/arm/mach-ixp2000/ixdp2800.c | |||
@@ -285,7 +285,6 @@ void ixdp2800_init_irq(void) | |||
285 | 285 | ||
286 | MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform") | 286 | MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform") |
287 | /* Maintainer: MontaVista Software, Inc. */ | 287 | /* Maintainer: MontaVista Software, Inc. */ |
288 | .phys_ram = 0x00000000, | ||
289 | .phys_io = IXP2000_UART_PHYS_BASE, | 288 | .phys_io = IXP2000_UART_PHYS_BASE, |
290 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, | 289 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, |
291 | .boot_params = 0x00000100, | 290 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c index e6a882f35da2..10f06606d460 100644 --- a/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/arch/arm/mach-ixp2000/ixdp2x01.c | |||
@@ -376,7 +376,6 @@ static void __init ixdp2x01_init_machine(void) | |||
376 | #ifdef CONFIG_ARCH_IXDP2401 | 376 | #ifdef CONFIG_ARCH_IXDP2401 |
377 | MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform") | 377 | MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform") |
378 | /* Maintainer: MontaVista Software, Inc. */ | 378 | /* Maintainer: MontaVista Software, Inc. */ |
379 | .phys_ram = 0x00000000, | ||
380 | .phys_io = IXP2000_UART_PHYS_BASE, | 379 | .phys_io = IXP2000_UART_PHYS_BASE, |
381 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, | 380 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, |
382 | .boot_params = 0x00000100, | 381 | .boot_params = 0x00000100, |
@@ -390,7 +389,6 @@ MACHINE_END | |||
390 | #ifdef CONFIG_ARCH_IXDP2801 | 389 | #ifdef CONFIG_ARCH_IXDP2801 |
391 | MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform") | 390 | MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform") |
392 | /* Maintainer: MontaVista Software, Inc. */ | 391 | /* Maintainer: MontaVista Software, Inc. */ |
393 | .phys_ram = 0x00000000, | ||
394 | .phys_io = IXP2000_UART_PHYS_BASE, | 392 | .phys_io = IXP2000_UART_PHYS_BASE, |
395 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, | 393 | .io_pg_offst = ((IXP2000_UART_VIRT_BASE) >> 18) & 0xfffc, |
396 | .boot_params = 0x00000100, | 394 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-ixp4xx/Kconfig b/arch/arm/mach-ixp4xx/Kconfig index 385285851cb5..daadc78e271b 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 7a15629c18d0..0471044fa179 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 9795da270e3a..6e3462ed5306 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 f3c687cf0071..4bdc9d4526cd 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,28 @@ 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 | EXPORT_SYMBOL(ixp4xx_exp_bus_size); | ||
337 | |||
333 | void __init ixp4xx_sys_init(void) | 338 | void __init ixp4xx_sys_init(void) |
334 | { | 339 | { |
340 | ixp4xx_exp_bus_size = SZ_16M; | ||
341 | |||
335 | if (cpu_is_ixp46x()) { | 342 | if (cpu_is_ixp46x()) { |
343 | int region; | ||
344 | |||
336 | platform_add_devices(ixp46x_devices, | 345 | platform_add_devices(ixp46x_devices, |
337 | ARRAY_SIZE(ixp46x_devices)); | 346 | ARRAY_SIZE(ixp46x_devices)); |
347 | |||
348 | for (region = 0; region < 7; region++) { | ||
349 | if((*(IXP4XX_EXP_REG(0x4 * region)) & 0x200)) { | ||
350 | ixp4xx_exp_bus_size = SZ_32M; | ||
351 | break; | ||
352 | } | ||
353 | } | ||
338 | } | 354 | } |
355 | |||
356 | printk("IXP4xx: Using %luMiB expansion bus window size\n", | ||
357 | ixp4xx_exp_bus_size >> 20); | ||
339 | } | 358 | } |
340 | 359 | ||
diff --git a/arch/arm/mach-ixp4xx/coyote-pci.c b/arch/arm/mach-ixp4xx/coyote-pci.c index 60de8a94cff5..e6b7fcd923fa 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 050c92768913..13f8a7ac3ba9 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,15 +95,12 @@ 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 | ||
99 | #ifdef CONFIG_ARCH_ADI_COYOTE | 101 | #ifdef CONFIG_ARCH_ADI_COYOTE |
100 | MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote") | 102 | MACHINE_START(ADI_COYOTE, "ADI Engineering Coyote") |
101 | /* Maintainer: MontaVista Software, Inc. */ | 103 | /* Maintainer: MontaVista Software, Inc. */ |
102 | .phys_ram = PHYS_OFFSET, | ||
103 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | 104 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, |
104 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, | 105 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, |
105 | .map_io = ixp4xx_map_io, | 106 | .map_io = ixp4xx_map_io, |
@@ -117,7 +118,6 @@ MACHINE_END | |||
117 | #ifdef CONFIG_MACH_IXDPG425 | 118 | #ifdef CONFIG_MACH_IXDPG425 |
118 | MACHINE_START(IXDPG425, "Intel IXDPG425") | 119 | MACHINE_START(IXDPG425, "Intel IXDPG425") |
119 | /* Maintainer: MontaVista Software, Inc. */ | 120 | /* Maintainer: MontaVista Software, Inc. */ |
120 | .phys_ram = PHYS_OFFSET, | ||
121 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | 121 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, |
122 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, | 122 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, |
123 | .map_io = ixp4xx_map_io, | 123 | .map_io = ixp4xx_map_io, |
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-setup.c b/arch/arm/mach-ixp4xx/gtwx5715-setup.c index 29a6d02fa851..654e2eed81fb 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,13 +128,20 @@ 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 | ||
135 | 142 | ||
136 | MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)") | 143 | MACHINE_START(GTWX5715, "Gemtek GTWX5715 (Linksys WRV54G)") |
137 | /* Maintainer: George Joseph */ | 144 | /* Maintainer: George Joseph */ |
138 | .phys_ram = PHYS_OFFSET, | ||
139 | .phys_io = IXP4XX_UART2_BASE_PHYS, | 145 | .phys_io = IXP4XX_UART2_BASE_PHYS, |
140 | .io_pg_offst = ((IXP4XX_UART2_BASE_VIRT) >> 18) & 0xfffc, | 146 | .io_pg_offst = ((IXP4XX_UART2_BASE_VIRT) >> 18) & 0xfffc, |
141 | .map_io = ixp4xx_map_io, | 147 | .map_io = ixp4xx_map_io, |
diff --git a/arch/arm/mach-ixp4xx/ixdp425-pci.c b/arch/arm/mach-ixp4xx/ixdp425-pci.c index f9a1d3e7d692..da415d5d7f37 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 3a22d84e1047..da72383ee301 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 | } |
@@ -126,7 +121,6 @@ static void __init ixdp425_init(void) | |||
126 | #ifdef CONFIG_ARCH_IXDP425 | 121 | #ifdef CONFIG_ARCH_IXDP425 |
127 | MACHINE_START(IXDP425, "Intel IXDP425 Development Platform") | 122 | MACHINE_START(IXDP425, "Intel IXDP425 Development Platform") |
128 | /* Maintainer: MontaVista Software, Inc. */ | 123 | /* Maintainer: MontaVista Software, Inc. */ |
129 | .phys_ram = PHYS_OFFSET, | ||
130 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | 124 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, |
131 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, | 125 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, |
132 | .map_io = ixp4xx_map_io, | 126 | .map_io = ixp4xx_map_io, |
@@ -140,7 +134,6 @@ MACHINE_END | |||
140 | #ifdef CONFIG_MACH_IXDP465 | 134 | #ifdef CONFIG_MACH_IXDP465 |
141 | MACHINE_START(IXDP465, "Intel IXDP465 Development Platform") | 135 | MACHINE_START(IXDP465, "Intel IXDP465 Development Platform") |
142 | /* Maintainer: MontaVista Software, Inc. */ | 136 | /* Maintainer: MontaVista Software, Inc. */ |
143 | .phys_ram = PHYS_OFFSET, | ||
144 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | 137 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, |
145 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, | 138 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, |
146 | .map_io = ixp4xx_map_io, | 139 | .map_io = ixp4xx_map_io, |
@@ -154,7 +147,6 @@ MACHINE_END | |||
154 | #ifdef CONFIG_ARCH_PRPMC1100 | 147 | #ifdef CONFIG_ARCH_PRPMC1100 |
155 | MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform") | 148 | MACHINE_START(IXCDP1100, "Intel IXCDP1100 Development Platform") |
156 | /* Maintainer: MontaVista Software, Inc. */ | 149 | /* Maintainer: MontaVista Software, Inc. */ |
157 | .phys_ram = PHYS_OFFSET, | ||
158 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | 150 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, |
159 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, | 151 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, |
160 | .map_io = ixp4xx_map_io, | 152 | .map_io = ixp4xx_map_io, |
@@ -174,7 +166,6 @@ MACHINE_END | |||
174 | #ifdef CONFIG_ARCH_AVILA | 166 | #ifdef CONFIG_ARCH_AVILA |
175 | MACHINE_START(AVILA, "Gateworks Avila Network Platform") | 167 | MACHINE_START(AVILA, "Gateworks Avila Network Platform") |
176 | /* Maintainer: Deepak Saxena <dsaxena@plexity.net> */ | 168 | /* Maintainer: Deepak Saxena <dsaxena@plexity.net> */ |
177 | .phys_ram = PHYS_OFFSET, | ||
178 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | 169 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, |
179 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, | 170 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc, |
180 | .map_io = ixp4xx_map_io, | 171 | .map_io = ixp4xx_map_io, |
diff --git a/arch/arm/mach-ixp4xx/ixdpg425-pci.c b/arch/arm/mach-ixp4xx/ixdpg425-pci.c index fe5e7660de1d..526fb6175bc3 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 000000000000..26b7c001ff64 --- /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 000000000000..2bec69bfa715 --- /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 000000000000..856d56f3b2ae --- /dev/null +++ b/arch/arm/mach-ixp4xx/nas100d-setup.c | |||
@@ -0,0 +1,134 @@ | |||
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_io = IXP4XX_PERIPHERAL_BASE_PHYS, | ||
128 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, | ||
129 | .boot_params = 0x00000100, | ||
130 | .map_io = ixp4xx_map_io, | ||
131 | .init_irq = ixp4xx_init_irq, | ||
132 | .timer = &ixp4xx_timer, | ||
133 | .init_machine = nas100d_init, | ||
134 | MACHINE_END | ||
diff --git a/arch/arm/mach-ixp4xx/nslu2-pci.c b/arch/arm/mach-ixp4xx/nslu2-pci.c index a575f2e0b2c8..ece860444d5b 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 18fbc8c0fb30..b0ad9e901f6e 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-ixp4xx/nslu2-setup.c b/arch/arm/mach-ixp4xx/nslu2-setup.c index 289e94cb65c2..da9340a53434 100644 --- a/arch/arm/mach-ixp4xx/nslu2-setup.c +++ b/arch/arm/mach-ixp4xx/nslu2-setup.c | |||
@@ -123,7 +123,6 @@ static void __init nslu2_init(void) | |||
123 | 123 | ||
124 | MACHINE_START(NSLU2, "Linksys NSLU2") | 124 | MACHINE_START(NSLU2, "Linksys NSLU2") |
125 | /* Maintainer: www.nslu2-linux.org */ | 125 | /* Maintainer: www.nslu2-linux.org */ |
126 | .phys_ram = PHYS_OFFSET, | ||
127 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, | 126 | .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS, |
128 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, | 127 | .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xFFFC, |
129 | .boot_params = 0x00000100, | 128 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-l7200/core.c b/arch/arm/mach-l7200/core.c index 03ed742ae2be..ac626436e96f 100644 --- a/arch/arm/mach-l7200/core.c +++ b/arch/arm/mach-l7200/core.c | |||
@@ -91,7 +91,6 @@ static void __init l7200_map_io(void) | |||
91 | 91 | ||
92 | MACHINE_START(L7200, "LinkUp Systems L7200") | 92 | MACHINE_START(L7200, "LinkUp Systems L7200") |
93 | /* Maintainer: Steve Hill / Scott McConnell */ | 93 | /* Maintainer: Steve Hill / Scott McConnell */ |
94 | .phys_ram = 0xf0000000, | ||
95 | .phys_io = 0x80040000, | 94 | .phys_io = 0x80040000, |
96 | .io_pg_offst = ((0xd0000000) >> 18) & 0xfffc, | 95 | .io_pg_offst = ((0xd0000000) >> 18) & 0xfffc, |
97 | .map_io = l7200_map_io, | 96 | .map_io = l7200_map_io, |
diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c index 19f2fa2244c4..2cccc27c62e4 100644 --- a/arch/arm/mach-lh7a40x/arch-kev7a400.c +++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c | |||
@@ -112,7 +112,6 @@ void __init lh7a40x_init_board_irq (void) | |||
112 | 112 | ||
113 | MACHINE_START (KEV7A400, "Sharp KEV7a400") | 113 | MACHINE_START (KEV7A400, "Sharp KEV7a400") |
114 | /* Maintainer: Marc Singer */ | 114 | /* Maintainer: Marc Singer */ |
115 | .phys_ram = 0xc0000000, | ||
116 | .phys_io = 0x80000000, | 115 | .phys_io = 0x80000000, |
117 | .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, | 116 | .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, |
118 | .boot_params = 0xc0000100, | 117 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c index 4eb962fdb3a8..12e23277c5ea 100644 --- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c | |||
@@ -317,7 +317,6 @@ lpd7a400_map_io(void) | |||
317 | 317 | ||
318 | MACHINE_START (LPD7A400, "Logic Product Development LPD7A400-10") | 318 | MACHINE_START (LPD7A400, "Logic Product Development LPD7A400-10") |
319 | /* Maintainer: Marc Singer */ | 319 | /* Maintainer: Marc Singer */ |
320 | .phys_ram = 0xc0000000, | ||
321 | .phys_io = 0x80000000, | 320 | .phys_io = 0x80000000, |
322 | .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, | 321 | .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, |
323 | .boot_params = 0xc0000100, | 322 | .boot_params = 0xc0000100, |
@@ -333,7 +332,6 @@ MACHINE_END | |||
333 | 332 | ||
334 | MACHINE_START (LPD7A404, "Logic Product Development LPD7A404-10") | 333 | MACHINE_START (LPD7A404, "Logic Product Development LPD7A404-10") |
335 | /* Maintainer: Marc Singer */ | 334 | /* Maintainer: Marc Singer */ |
336 | .phys_ram = 0xc0000000, | ||
337 | .phys_io = 0x80000000, | 335 | .phys_io = 0x80000000, |
338 | .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, | 336 | .io_pg_offst = ((io_p2v (0x80000000))>>18) & 0xfffc, |
339 | .boot_params = 0xc0000100, | 337 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 4b292e93fbe2..bdc20b51b076 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c | |||
@@ -109,7 +109,6 @@ static void __init omap_generic_map_io(void) | |||
109 | 109 | ||
110 | MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") | 110 | MACHINE_START(OMAP_GENERIC, "Generic OMAP1510/1610/1710") |
111 | /* Maintainer: Tony Lindgren <tony@atomide.com> */ | 111 | /* Maintainer: Tony Lindgren <tony@atomide.com> */ |
112 | .phys_ram = 0x10000000, | ||
113 | .phys_io = 0xfff00000, | 112 | .phys_io = 0xfff00000, |
114 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 113 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
115 | .boot_params = 0x10000100, | 114 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index a07e2c9307fa..9533c36a92df 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -199,7 +199,6 @@ static void __init h2_map_io(void) | |||
199 | 199 | ||
200 | MACHINE_START(OMAP_H2, "TI-H2") | 200 | MACHINE_START(OMAP_H2, "TI-H2") |
201 | /* Maintainer: Imre Deak <imre.deak@nokia.com> */ | 201 | /* Maintainer: Imre Deak <imre.deak@nokia.com> */ |
202 | .phys_ram = 0x10000000, | ||
203 | .phys_io = 0xfff00000, | 202 | .phys_io = 0xfff00000, |
204 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 203 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
205 | .boot_params = 0x10000100, | 204 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 668e278433c2..d665efc1c344 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -215,7 +215,6 @@ static void __init h3_map_io(void) | |||
215 | 215 | ||
216 | MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") | 216 | MACHINE_START(OMAP_H3, "TI OMAP1710 H3 board") |
217 | /* Maintainer: Texas Instruments, Inc. */ | 217 | /* Maintainer: Texas Instruments, Inc. */ |
218 | .phys_ram = 0x10000000, | ||
219 | .phys_io = 0xfff00000, | 218 | .phys_io = 0xfff00000, |
220 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 219 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
221 | .boot_params = 0x10000100, | 220 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index 95f1ff36cdcb..652f37c7f906 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -303,7 +303,6 @@ static void __init innovator_map_io(void) | |||
303 | 303 | ||
304 | MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") | 304 | MACHINE_START(OMAP_INNOVATOR, "TI-Innovator") |
305 | /* Maintainer: MontaVista Software, Inc. */ | 305 | /* Maintainer: MontaVista Software, Inc. */ |
306 | .phys_ram = 0x10000000, | ||
307 | .phys_io = 0xfff00000, | 306 | .phys_io = 0xfff00000, |
308 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 307 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
309 | .boot_params = 0x10000100, | 308 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-netstar.c b/arch/arm/mach-omap1/board-netstar.c index 0448fa7de8a4..58f783930d45 100644 --- a/arch/arm/mach-omap1/board-netstar.c +++ b/arch/arm/mach-omap1/board-netstar.c | |||
@@ -149,7 +149,6 @@ postcore_initcall(netstar_late_init); | |||
149 | 149 | ||
150 | MACHINE_START(NETSTAR, "NetStar OMAP5910") | 150 | MACHINE_START(NETSTAR, "NetStar OMAP5910") |
151 | /* Maintainer: Ladislav Michl <michl@2n.cz> */ | 151 | /* Maintainer: Ladislav Michl <michl@2n.cz> */ |
152 | .phys_ram = 0x10000000, | ||
153 | .phys_io = 0xfff00000, | 152 | .phys_io = 0xfff00000, |
154 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 153 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
155 | .boot_params = 0x10000100, | 154 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index e990e1bc1669..e5d126e8f276 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -274,7 +274,6 @@ static void __init osk_map_io(void) | |||
274 | 274 | ||
275 | MACHINE_START(OMAP_OSK, "TI-OSK") | 275 | MACHINE_START(OMAP_OSK, "TI-OSK") |
276 | /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */ | 276 | /* Maintainer: Dirk Behme <dirk.behme@de.bosch.com> */ |
277 | .phys_ram = 0x10000000, | ||
278 | .phys_io = 0xfff00000, | 277 | .phys_io = 0xfff00000, |
279 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 278 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
280 | .boot_params = 0x10000100, | 279 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 540b20d78cca..67fada207622 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 | { |
@@ -76,7 +76,6 @@ static void __init omap_generic_map_io(void) | |||
76 | } | 76 | } |
77 | 77 | ||
78 | MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") | 78 | MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E") |
79 | .phys_ram = 0x10000000, | ||
80 | .phys_io = 0xfff00000, | 79 | .phys_io = 0xfff00000, |
81 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 80 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
82 | .boot_params = 0x10000100, | 81 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-perseus2.c b/arch/arm/mach-omap1/board-perseus2.c index bd900b7ab33c..88708a0c52a2 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); |
@@ -199,7 +199,6 @@ static void __init omap_perseus2_map_io(void) | |||
199 | 199 | ||
200 | MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2") | 200 | MACHINE_START(OMAP_PERSEUS2, "OMAP730 Perseus2") |
201 | /* Maintainer: Kevin Hilman <kjh@hilman.org> */ | 201 | /* Maintainer: Kevin Hilman <kjh@hilman.org> */ |
202 | .phys_ram = 0x10000000, | ||
203 | .phys_io = 0xfff00000, | 202 | .phys_io = 0xfff00000, |
204 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 203 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
205 | .boot_params = 0x10000100, | 204 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index 6f9a6220e78a..959b4b847c87 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -281,7 +281,6 @@ EXPORT_SYMBOL(voiceblue_wdt_ping); | |||
281 | 281 | ||
282 | MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") | 282 | MACHINE_START(VOICEBLUE, "VoiceBlue OMAP5910") |
283 | /* Maintainer: Ladislav Michl <michl@2n.cz> */ | 283 | /* Maintainer: Ladislav Michl <michl@2n.cz> */ |
284 | .phys_ram = 0x10000000, | ||
285 | .phys_io = 0xfff00000, | 284 | .phys_io = 0xfff00000, |
286 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, | 285 | .io_pg_offst = ((0xfef00000) >> 18) & 0xfffc, |
287 | .boot_params = 0x10000100, | 286 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-omap1/clock.c b/arch/arm/mach-omap1/clock.c index 4277eee44ed5..75110ba10424 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> |
@@ -50,10 +50,10 @@ static int omap1_clk_enable_dsp_domain(struct clk *clk) | |||
50 | { | 50 | { |
51 | int retval; | 51 | int retval; |
52 | 52 | ||
53 | retval = omap1_clk_use(&api_ck.clk); | 53 | retval = omap1_clk_enable(&api_ck.clk); |
54 | if (!retval) { | 54 | if (!retval) { |
55 | retval = omap1_clk_enable(clk); | 55 | retval = omap1_clk_enable_generic(clk); |
56 | omap1_clk_unuse(&api_ck.clk); | 56 | omap1_clk_disable(&api_ck.clk); |
57 | } | 57 | } |
58 | 58 | ||
59 | return retval; | 59 | return retval; |
@@ -61,9 +61,9 @@ static int omap1_clk_enable_dsp_domain(struct clk *clk) | |||
61 | 61 | ||
62 | static void omap1_clk_disable_dsp_domain(struct clk *clk) | 62 | static void omap1_clk_disable_dsp_domain(struct clk *clk) |
63 | { | 63 | { |
64 | if (omap1_clk_use(&api_ck.clk) == 0) { | 64 | if (omap1_clk_enable(&api_ck.clk) == 0) { |
65 | omap1_clk_disable(clk); | 65 | omap1_clk_disable_generic(clk); |
66 | omap1_clk_unuse(&api_ck.clk); | 66 | omap1_clk_disable(&api_ck.clk); |
67 | } | 67 | } |
68 | } | 68 | } |
69 | 69 | ||
@@ -72,7 +72,7 @@ static int omap1_clk_enable_uart_functional(struct clk *clk) | |||
72 | int ret; | 72 | int ret; |
73 | struct uart_clk *uclk; | 73 | struct uart_clk *uclk; |
74 | 74 | ||
75 | ret = omap1_clk_enable(clk); | 75 | ret = omap1_clk_enable_generic(clk); |
76 | if (ret == 0) { | 76 | if (ret == 0) { |
77 | /* Set smart idle acknowledgement mode */ | 77 | /* Set smart idle acknowledgement mode */ |
78 | uclk = (struct uart_clk *)clk; | 78 | uclk = (struct uart_clk *)clk; |
@@ -91,7 +91,7 @@ static void omap1_clk_disable_uart_functional(struct clk *clk) | |||
91 | uclk = (struct uart_clk *)clk; | 91 | uclk = (struct uart_clk *)clk; |
92 | omap_writeb((omap_readb(uclk->sysc_addr) & ~0x18), uclk->sysc_addr); | 92 | omap_writeb((omap_readb(uclk->sysc_addr) & ~0x18), uclk->sysc_addr); |
93 | 93 | ||
94 | omap1_clk_disable(clk); | 94 | omap1_clk_disable_generic(clk); |
95 | } | 95 | } |
96 | 96 | ||
97 | static void omap1_clk_allow_idle(struct clk *clk) | 97 | static void omap1_clk_allow_idle(struct clk *clk) |
@@ -230,9 +230,9 @@ static void omap1_ckctl_recalc_dsp_domain(struct clk * clk) | |||
230 | * Note that DSP_CKCTL virt addr = phys addr, so | 230 | * Note that DSP_CKCTL virt addr = phys addr, so |
231 | * we must use __raw_readw() instead of omap_readw(). | 231 | * we must use __raw_readw() instead of omap_readw(). |
232 | */ | 232 | */ |
233 | omap1_clk_use(&api_ck.clk); | 233 | omap1_clk_enable(&api_ck.clk); |
234 | dsor = 1 << (3 & (__raw_readw(DSP_CKCTL) >> clk->rate_offset)); | 234 | dsor = 1 << (3 & (__raw_readw(DSP_CKCTL) >> clk->rate_offset)); |
235 | omap1_clk_unuse(&api_ck.clk); | 235 | omap1_clk_disable(&api_ck.clk); |
236 | 236 | ||
237 | if (unlikely(clk->rate == clk->parent->rate / dsor)) | 237 | if (unlikely(clk->rate == clk->parent->rate / dsor)) |
238 | return; /* No change, quick exit */ | 238 | return; /* No change, quick exit */ |
@@ -412,12 +412,12 @@ static void omap1_init_ext_clk(struct clk * clk) | |||
412 | clk-> rate = 96000000 / dsor; | 412 | clk-> rate = 96000000 / dsor; |
413 | } | 413 | } |
414 | 414 | ||
415 | static int omap1_clk_use(struct clk *clk) | 415 | static int omap1_clk_enable(struct clk *clk) |
416 | { | 416 | { |
417 | int ret = 0; | 417 | int ret = 0; |
418 | if (clk->usecount++ == 0) { | 418 | if (clk->usecount++ == 0) { |
419 | if (likely(clk->parent)) { | 419 | if (likely(clk->parent)) { |
420 | ret = omap1_clk_use(clk->parent); | 420 | ret = omap1_clk_enable(clk->parent); |
421 | 421 | ||
422 | if (unlikely(ret != 0)) { | 422 | if (unlikely(ret != 0)) { |
423 | clk->usecount--; | 423 | clk->usecount--; |
@@ -432,7 +432,7 @@ static int omap1_clk_use(struct clk *clk) | |||
432 | ret = clk->enable(clk); | 432 | ret = clk->enable(clk); |
433 | 433 | ||
434 | if (unlikely(ret != 0) && clk->parent) { | 434 | if (unlikely(ret != 0) && clk->parent) { |
435 | omap1_clk_unuse(clk->parent); | 435 | omap1_clk_disable(clk->parent); |
436 | clk->usecount--; | 436 | clk->usecount--; |
437 | } | 437 | } |
438 | } | 438 | } |
@@ -440,12 +440,12 @@ static int omap1_clk_use(struct clk *clk) | |||
440 | return ret; | 440 | return ret; |
441 | } | 441 | } |
442 | 442 | ||
443 | static void omap1_clk_unuse(struct clk *clk) | 443 | static void omap1_clk_disable(struct clk *clk) |
444 | { | 444 | { |
445 | if (clk->usecount > 0 && !(--clk->usecount)) { | 445 | if (clk->usecount > 0 && !(--clk->usecount)) { |
446 | clk->disable(clk); | 446 | clk->disable(clk); |
447 | if (likely(clk->parent)) { | 447 | if (likely(clk->parent)) { |
448 | omap1_clk_unuse(clk->parent); | 448 | omap1_clk_disable(clk->parent); |
449 | if (clk->flags & CLOCK_NO_IDLE_PARENT) | 449 | if (clk->flags & CLOCK_NO_IDLE_PARENT) |
450 | if (!cpu_is_omap24xx()) | 450 | if (!cpu_is_omap24xx()) |
451 | omap1_clk_allow_idle(clk->parent); | 451 | omap1_clk_allow_idle(clk->parent); |
@@ -453,7 +453,7 @@ static void omap1_clk_unuse(struct clk *clk) | |||
453 | } | 453 | } |
454 | } | 454 | } |
455 | 455 | ||
456 | static int omap1_clk_enable(struct clk *clk) | 456 | static int omap1_clk_enable_generic(struct clk *clk) |
457 | { | 457 | { |
458 | __u16 regval16; | 458 | __u16 regval16; |
459 | __u32 regval32; | 459 | __u32 regval32; |
@@ -492,7 +492,7 @@ static int omap1_clk_enable(struct clk *clk) | |||
492 | return 0; | 492 | return 0; |
493 | } | 493 | } |
494 | 494 | ||
495 | static void omap1_clk_disable(struct clk *clk) | 495 | static void omap1_clk_disable_generic(struct clk *clk) |
496 | { | 496 | { |
497 | __u16 regval16; | 497 | __u16 regval16; |
498 | __u32 regval32; | 498 | __u32 regval32; |
@@ -654,8 +654,8 @@ late_initcall(omap1_late_clk_reset); | |||
654 | #endif | 654 | #endif |
655 | 655 | ||
656 | static struct clk_functions omap1_clk_functions = { | 656 | static struct clk_functions omap1_clk_functions = { |
657 | .clk_use = omap1_clk_use, | 657 | .clk_enable = omap1_clk_enable, |
658 | .clk_unuse = omap1_clk_unuse, | 658 | .clk_disable = omap1_clk_disable, |
659 | .clk_round_rate = omap1_clk_round_rate, | 659 | .clk_round_rate = omap1_clk_round_rate, |
660 | .clk_set_rate = omap1_clk_set_rate, | 660 | .clk_set_rate = omap1_clk_set_rate, |
661 | }; | 661 | }; |
@@ -780,9 +780,9 @@ int __init omap1_clk_init(void) | |||
780 | * Only enable those clocks we will need, let the drivers | 780 | * Only enable those clocks we will need, let the drivers |
781 | * enable other clocks as necessary | 781 | * enable other clocks as necessary |
782 | */ | 782 | */ |
783 | clk_use(&armper_ck.clk); | 783 | clk_enable(&armper_ck.clk); |
784 | clk_use(&armxor_ck.clk); | 784 | clk_enable(&armxor_ck.clk); |
785 | clk_use(&armtim_ck.clk); /* This should be done by timer code */ | 785 | clk_enable(&armtim_ck.clk); /* This should be done by timer code */ |
786 | 786 | ||
787 | if (cpu_is_omap1510()) | 787 | if (cpu_is_omap1510()) |
788 | clk_enable(&arm_gpio_ck); | 788 | clk_enable(&arm_gpio_ck); |
diff --git a/arch/arm/mach-omap1/clock.h b/arch/arm/mach-omap1/clock.h index f3bdfb50e01a..4f18d1b94449 100644 --- a/arch/arm/mach-omap1/clock.h +++ b/arch/arm/mach-omap1/clock.h | |||
@@ -13,8 +13,8 @@ | |||
13 | #ifndef __ARCH_ARM_MACH_OMAP1_CLOCK_H | 13 | #ifndef __ARCH_ARM_MACH_OMAP1_CLOCK_H |
14 | #define __ARCH_ARM_MACH_OMAP1_CLOCK_H | 14 | #define __ARCH_ARM_MACH_OMAP1_CLOCK_H |
15 | 15 | ||
16 | static int omap1_clk_enable(struct clk * clk); | 16 | static int omap1_clk_enable_generic(struct clk * clk); |
17 | static void omap1_clk_disable(struct clk * clk); | 17 | static void omap1_clk_disable_generic(struct clk * clk); |
18 | static void omap1_ckctl_recalc(struct clk * clk); | 18 | static void omap1_ckctl_recalc(struct clk * clk); |
19 | static void omap1_watchdog_recalc(struct clk * clk); | 19 | static void omap1_watchdog_recalc(struct clk * clk); |
20 | static void omap1_ckctl_recalc_dsp_domain(struct clk * clk); | 20 | static void omap1_ckctl_recalc_dsp_domain(struct clk * clk); |
@@ -30,8 +30,8 @@ static long omap1_round_ext_clk_rate(struct clk * clk, unsigned long rate); | |||
30 | static void omap1_init_ext_clk(struct clk * clk); | 30 | static void omap1_init_ext_clk(struct clk * clk); |
31 | static int omap1_select_table_rate(struct clk * clk, unsigned long rate); | 31 | static int omap1_select_table_rate(struct clk * clk, unsigned long rate); |
32 | static long omap1_round_to_table_rate(struct clk * clk, unsigned long rate); | 32 | static long omap1_round_to_table_rate(struct clk * clk, unsigned long rate); |
33 | static int omap1_clk_use(struct clk *clk); | 33 | static int omap1_clk_enable(struct clk *clk); |
34 | static void omap1_clk_unuse(struct clk *clk); | 34 | static void omap1_clk_disable(struct clk *clk); |
35 | 35 | ||
36 | struct mpu_rate { | 36 | struct mpu_rate { |
37 | unsigned long rate; | 37 | unsigned long rate; |
@@ -152,8 +152,8 @@ static struct clk ck_ref = { | |||
152 | .rate = 12000000, | 152 | .rate = 12000000, |
153 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | | 153 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | |
154 | ALWAYS_ENABLED, | 154 | ALWAYS_ENABLED, |
155 | .enable = &omap1_clk_enable, | 155 | .enable = &omap1_clk_enable_generic, |
156 | .disable = &omap1_clk_disable, | 156 | .disable = &omap1_clk_disable_generic, |
157 | }; | 157 | }; |
158 | 158 | ||
159 | static struct clk ck_dpll1 = { | 159 | static struct clk ck_dpll1 = { |
@@ -161,8 +161,8 @@ static struct clk ck_dpll1 = { | |||
161 | .parent = &ck_ref, | 161 | .parent = &ck_ref, |
162 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | | 162 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | |
163 | RATE_PROPAGATES | ALWAYS_ENABLED, | 163 | RATE_PROPAGATES | ALWAYS_ENABLED, |
164 | .enable = &omap1_clk_enable, | 164 | .enable = &omap1_clk_enable_generic, |
165 | .disable = &omap1_clk_disable, | 165 | .disable = &omap1_clk_disable_generic, |
166 | }; | 166 | }; |
167 | 167 | ||
168 | static struct arm_idlect1_clk ck_dpll1out = { | 168 | static struct arm_idlect1_clk ck_dpll1out = { |
@@ -173,8 +173,8 @@ static struct arm_idlect1_clk ck_dpll1out = { | |||
173 | .enable_reg = (void __iomem *)ARM_IDLECT2, | 173 | .enable_reg = (void __iomem *)ARM_IDLECT2, |
174 | .enable_bit = EN_CKOUT_ARM, | 174 | .enable_bit = EN_CKOUT_ARM, |
175 | .recalc = &followparent_recalc, | 175 | .recalc = &followparent_recalc, |
176 | .enable = &omap1_clk_enable, | 176 | .enable = &omap1_clk_enable_generic, |
177 | .disable = &omap1_clk_disable, | 177 | .disable = &omap1_clk_disable_generic, |
178 | }, | 178 | }, |
179 | .idlect_shift = 12, | 179 | .idlect_shift = 12, |
180 | }; | 180 | }; |
@@ -186,8 +186,8 @@ static struct clk arm_ck = { | |||
186 | RATE_CKCTL | RATE_PROPAGATES | ALWAYS_ENABLED, | 186 | RATE_CKCTL | RATE_PROPAGATES | ALWAYS_ENABLED, |
187 | .rate_offset = CKCTL_ARMDIV_OFFSET, | 187 | .rate_offset = CKCTL_ARMDIV_OFFSET, |
188 | .recalc = &omap1_ckctl_recalc, | 188 | .recalc = &omap1_ckctl_recalc, |
189 | .enable = &omap1_clk_enable, | 189 | .enable = &omap1_clk_enable_generic, |
190 | .disable = &omap1_clk_disable, | 190 | .disable = &omap1_clk_disable_generic, |
191 | }; | 191 | }; |
192 | 192 | ||
193 | static struct arm_idlect1_clk armper_ck = { | 193 | static struct arm_idlect1_clk armper_ck = { |
@@ -200,8 +200,8 @@ static struct arm_idlect1_clk armper_ck = { | |||
200 | .enable_bit = EN_PERCK, | 200 | .enable_bit = EN_PERCK, |
201 | .rate_offset = CKCTL_PERDIV_OFFSET, | 201 | .rate_offset = CKCTL_PERDIV_OFFSET, |
202 | .recalc = &omap1_ckctl_recalc, | 202 | .recalc = &omap1_ckctl_recalc, |
203 | .enable = &omap1_clk_enable, | 203 | .enable = &omap1_clk_enable_generic, |
204 | .disable = &omap1_clk_disable, | 204 | .disable = &omap1_clk_disable_generic, |
205 | }, | 205 | }, |
206 | .idlect_shift = 2, | 206 | .idlect_shift = 2, |
207 | }; | 207 | }; |
@@ -213,8 +213,8 @@ static struct clk arm_gpio_ck = { | |||
213 | .enable_reg = (void __iomem *)ARM_IDLECT2, | 213 | .enable_reg = (void __iomem *)ARM_IDLECT2, |
214 | .enable_bit = EN_GPIOCK, | 214 | .enable_bit = EN_GPIOCK, |
215 | .recalc = &followparent_recalc, | 215 | .recalc = &followparent_recalc, |
216 | .enable = &omap1_clk_enable, | 216 | .enable = &omap1_clk_enable_generic, |
217 | .disable = &omap1_clk_disable, | 217 | .disable = &omap1_clk_disable_generic, |
218 | }; | 218 | }; |
219 | 219 | ||
220 | static struct arm_idlect1_clk armxor_ck = { | 220 | static struct arm_idlect1_clk armxor_ck = { |
@@ -226,8 +226,8 @@ static struct arm_idlect1_clk armxor_ck = { | |||
226 | .enable_reg = (void __iomem *)ARM_IDLECT2, | 226 | .enable_reg = (void __iomem *)ARM_IDLECT2, |
227 | .enable_bit = EN_XORPCK, | 227 | .enable_bit = EN_XORPCK, |
228 | .recalc = &followparent_recalc, | 228 | .recalc = &followparent_recalc, |
229 | .enable = &omap1_clk_enable, | 229 | .enable = &omap1_clk_enable_generic, |
230 | .disable = &omap1_clk_disable, | 230 | .disable = &omap1_clk_disable_generic, |
231 | }, | 231 | }, |
232 | .idlect_shift = 1, | 232 | .idlect_shift = 1, |
233 | }; | 233 | }; |
@@ -241,8 +241,8 @@ static struct arm_idlect1_clk armtim_ck = { | |||
241 | .enable_reg = (void __iomem *)ARM_IDLECT2, | 241 | .enable_reg = (void __iomem *)ARM_IDLECT2, |
242 | .enable_bit = EN_TIMCK, | 242 | .enable_bit = EN_TIMCK, |
243 | .recalc = &followparent_recalc, | 243 | .recalc = &followparent_recalc, |
244 | .enable = &omap1_clk_enable, | 244 | .enable = &omap1_clk_enable_generic, |
245 | .disable = &omap1_clk_disable, | 245 | .disable = &omap1_clk_disable_generic, |
246 | }, | 246 | }, |
247 | .idlect_shift = 9, | 247 | .idlect_shift = 9, |
248 | }; | 248 | }; |
@@ -256,8 +256,8 @@ static struct arm_idlect1_clk armwdt_ck = { | |||
256 | .enable_reg = (void __iomem *)ARM_IDLECT2, | 256 | .enable_reg = (void __iomem *)ARM_IDLECT2, |
257 | .enable_bit = EN_WDTCK, | 257 | .enable_bit = EN_WDTCK, |
258 | .recalc = &omap1_watchdog_recalc, | 258 | .recalc = &omap1_watchdog_recalc, |
259 | .enable = &omap1_clk_enable, | 259 | .enable = &omap1_clk_enable_generic, |
260 | .disable = &omap1_clk_disable, | 260 | .disable = &omap1_clk_disable_generic, |
261 | }, | 261 | }, |
262 | .idlect_shift = 0, | 262 | .idlect_shift = 0, |
263 | }; | 263 | }; |
@@ -272,8 +272,8 @@ static struct clk arminth_ck16xx = { | |||
272 | * | 272 | * |
273 | * 1510 version is in TC clocks. | 273 | * 1510 version is in TC clocks. |
274 | */ | 274 | */ |
275 | .enable = &omap1_clk_enable, | 275 | .enable = &omap1_clk_enable_generic, |
276 | .disable = &omap1_clk_disable, | 276 | .disable = &omap1_clk_disable_generic, |
277 | }; | 277 | }; |
278 | 278 | ||
279 | static struct clk dsp_ck = { | 279 | static struct clk dsp_ck = { |
@@ -285,8 +285,8 @@ static struct clk dsp_ck = { | |||
285 | .enable_bit = EN_DSPCK, | 285 | .enable_bit = EN_DSPCK, |
286 | .rate_offset = CKCTL_DSPDIV_OFFSET, | 286 | .rate_offset = CKCTL_DSPDIV_OFFSET, |
287 | .recalc = &omap1_ckctl_recalc, | 287 | .recalc = &omap1_ckctl_recalc, |
288 | .enable = &omap1_clk_enable, | 288 | .enable = &omap1_clk_enable_generic, |
289 | .disable = &omap1_clk_disable, | 289 | .disable = &omap1_clk_disable_generic, |
290 | }; | 290 | }; |
291 | 291 | ||
292 | static struct clk dspmmu_ck = { | 292 | static struct clk dspmmu_ck = { |
@@ -296,8 +296,8 @@ static struct clk dspmmu_ck = { | |||
296 | RATE_CKCTL | ALWAYS_ENABLED, | 296 | RATE_CKCTL | ALWAYS_ENABLED, |
297 | .rate_offset = CKCTL_DSPMMUDIV_OFFSET, | 297 | .rate_offset = CKCTL_DSPMMUDIV_OFFSET, |
298 | .recalc = &omap1_ckctl_recalc, | 298 | .recalc = &omap1_ckctl_recalc, |
299 | .enable = &omap1_clk_enable, | 299 | .enable = &omap1_clk_enable_generic, |
300 | .disable = &omap1_clk_disable, | 300 | .disable = &omap1_clk_disable_generic, |
301 | }; | 301 | }; |
302 | 302 | ||
303 | static struct clk dspper_ck = { | 303 | static struct clk dspper_ck = { |
@@ -349,8 +349,8 @@ static struct arm_idlect1_clk tc_ck = { | |||
349 | CLOCK_IDLE_CONTROL, | 349 | CLOCK_IDLE_CONTROL, |
350 | .rate_offset = CKCTL_TCDIV_OFFSET, | 350 | .rate_offset = CKCTL_TCDIV_OFFSET, |
351 | .recalc = &omap1_ckctl_recalc, | 351 | .recalc = &omap1_ckctl_recalc, |
352 | .enable = &omap1_clk_enable, | 352 | .enable = &omap1_clk_enable_generic, |
353 | .disable = &omap1_clk_disable, | 353 | .disable = &omap1_clk_disable_generic, |
354 | }, | 354 | }, |
355 | .idlect_shift = 6, | 355 | .idlect_shift = 6, |
356 | }; | 356 | }; |
@@ -364,8 +364,8 @@ static struct clk arminth_ck1510 = { | |||
364 | * | 364 | * |
365 | * 16xx version is in MPU clocks. | 365 | * 16xx version is in MPU clocks. |
366 | */ | 366 | */ |
367 | .enable = &omap1_clk_enable, | 367 | .enable = &omap1_clk_enable_generic, |
368 | .disable = &omap1_clk_disable, | 368 | .disable = &omap1_clk_disable_generic, |
369 | }; | 369 | }; |
370 | 370 | ||
371 | static struct clk tipb_ck = { | 371 | static struct clk tipb_ck = { |
@@ -374,8 +374,8 @@ static struct clk tipb_ck = { | |||
374 | .parent = &tc_ck.clk, | 374 | .parent = &tc_ck.clk, |
375 | .flags = CLOCK_IN_OMAP1510 | ALWAYS_ENABLED, | 375 | .flags = CLOCK_IN_OMAP1510 | ALWAYS_ENABLED, |
376 | .recalc = &followparent_recalc, | 376 | .recalc = &followparent_recalc, |
377 | .enable = &omap1_clk_enable, | 377 | .enable = &omap1_clk_enable_generic, |
378 | .disable = &omap1_clk_disable, | 378 | .disable = &omap1_clk_disable_generic, |
379 | }; | 379 | }; |
380 | 380 | ||
381 | static struct clk l3_ocpi_ck = { | 381 | static struct clk l3_ocpi_ck = { |
@@ -386,8 +386,8 @@ static struct clk l3_ocpi_ck = { | |||
386 | .enable_reg = (void __iomem *)ARM_IDLECT3, | 386 | .enable_reg = (void __iomem *)ARM_IDLECT3, |
387 | .enable_bit = EN_OCPI_CK, | 387 | .enable_bit = EN_OCPI_CK, |
388 | .recalc = &followparent_recalc, | 388 | .recalc = &followparent_recalc, |
389 | .enable = &omap1_clk_enable, | 389 | .enable = &omap1_clk_enable_generic, |
390 | .disable = &omap1_clk_disable, | 390 | .disable = &omap1_clk_disable_generic, |
391 | }; | 391 | }; |
392 | 392 | ||
393 | static struct clk tc1_ck = { | 393 | static struct clk tc1_ck = { |
@@ -397,8 +397,8 @@ static struct clk tc1_ck = { | |||
397 | .enable_reg = (void __iomem *)ARM_IDLECT3, | 397 | .enable_reg = (void __iomem *)ARM_IDLECT3, |
398 | .enable_bit = EN_TC1_CK, | 398 | .enable_bit = EN_TC1_CK, |
399 | .recalc = &followparent_recalc, | 399 | .recalc = &followparent_recalc, |
400 | .enable = &omap1_clk_enable, | 400 | .enable = &omap1_clk_enable_generic, |
401 | .disable = &omap1_clk_disable, | 401 | .disable = &omap1_clk_disable_generic, |
402 | }; | 402 | }; |
403 | 403 | ||
404 | static struct clk tc2_ck = { | 404 | static struct clk tc2_ck = { |
@@ -408,8 +408,8 @@ static struct clk tc2_ck = { | |||
408 | .enable_reg = (void __iomem *)ARM_IDLECT3, | 408 | .enable_reg = (void __iomem *)ARM_IDLECT3, |
409 | .enable_bit = EN_TC2_CK, | 409 | .enable_bit = EN_TC2_CK, |
410 | .recalc = &followparent_recalc, | 410 | .recalc = &followparent_recalc, |
411 | .enable = &omap1_clk_enable, | 411 | .enable = &omap1_clk_enable_generic, |
412 | .disable = &omap1_clk_disable, | 412 | .disable = &omap1_clk_disable_generic, |
413 | }; | 413 | }; |
414 | 414 | ||
415 | static struct clk dma_ck = { | 415 | static struct clk dma_ck = { |
@@ -419,8 +419,8 @@ static struct clk dma_ck = { | |||
419 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | | 419 | .flags = CLOCK_IN_OMAP1510 | CLOCK_IN_OMAP16XX | |
420 | ALWAYS_ENABLED, | 420 | ALWAYS_ENABLED, |
421 | .recalc = &followparent_recalc, | 421 | .recalc = &followparent_recalc, |
422 | .enable = &omap1_clk_enable, | 422 | .enable = &omap1_clk_enable_generic, |
423 | .disable = &omap1_clk_disable, | 423 | .disable = &omap1_clk_disable_generic, |
424 | }; | 424 | }; |
425 | 425 | ||
426 | static struct clk dma_lcdfree_ck = { | 426 | static struct clk dma_lcdfree_ck = { |
@@ -428,8 +428,8 @@ static struct clk dma_lcdfree_ck = { | |||
428 | .parent = &tc_ck.clk, | 428 | .parent = &tc_ck.clk, |
429 | .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, | 429 | .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, |
430 | .recalc = &followparent_recalc, | 430 | .recalc = &followparent_recalc, |
431 | .enable = &omap1_clk_enable, | 431 | .enable = &omap1_clk_enable_generic, |
432 | .disable = &omap1_clk_disable, | 432 | .disable = &omap1_clk_disable_generic, |
433 | }; | 433 | }; |
434 | 434 | ||
435 | static struct arm_idlect1_clk api_ck = { | 435 | static struct arm_idlect1_clk api_ck = { |
@@ -441,8 +441,8 @@ static struct arm_idlect1_clk api_ck = { | |||
441 | .enable_reg = (void __iomem *)ARM_IDLECT2, | 441 | .enable_reg = (void __iomem *)ARM_IDLECT2, |
442 | .enable_bit = EN_APICK, | 442 | .enable_bit = EN_APICK, |
443 | .recalc = &followparent_recalc, | 443 | .recalc = &followparent_recalc, |
444 | .enable = &omap1_clk_enable, | 444 | .enable = &omap1_clk_enable_generic, |
445 | .disable = &omap1_clk_disable, | 445 | .disable = &omap1_clk_disable_generic, |
446 | }, | 446 | }, |
447 | .idlect_shift = 8, | 447 | .idlect_shift = 8, |
448 | }; | 448 | }; |
@@ -455,8 +455,8 @@ static struct arm_idlect1_clk lb_ck = { | |||
455 | .enable_reg = (void __iomem *)ARM_IDLECT2, | 455 | .enable_reg = (void __iomem *)ARM_IDLECT2, |
456 | .enable_bit = EN_LBCK, | 456 | .enable_bit = EN_LBCK, |
457 | .recalc = &followparent_recalc, | 457 | .recalc = &followparent_recalc, |
458 | .enable = &omap1_clk_enable, | 458 | .enable = &omap1_clk_enable_generic, |
459 | .disable = &omap1_clk_disable, | 459 | .disable = &omap1_clk_disable_generic, |
460 | }, | 460 | }, |
461 | .idlect_shift = 4, | 461 | .idlect_shift = 4, |
462 | }; | 462 | }; |
@@ -466,8 +466,8 @@ static struct clk rhea1_ck = { | |||
466 | .parent = &tc_ck.clk, | 466 | .parent = &tc_ck.clk, |
467 | .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, | 467 | .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, |
468 | .recalc = &followparent_recalc, | 468 | .recalc = &followparent_recalc, |
469 | .enable = &omap1_clk_enable, | 469 | .enable = &omap1_clk_enable_generic, |
470 | .disable = &omap1_clk_disable, | 470 | .disable = &omap1_clk_disable_generic, |
471 | }; | 471 | }; |
472 | 472 | ||
473 | static struct clk rhea2_ck = { | 473 | static struct clk rhea2_ck = { |
@@ -475,8 +475,8 @@ static struct clk rhea2_ck = { | |||
475 | .parent = &tc_ck.clk, | 475 | .parent = &tc_ck.clk, |
476 | .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, | 476 | .flags = CLOCK_IN_OMAP16XX | ALWAYS_ENABLED, |
477 | .recalc = &followparent_recalc, | 477 | .recalc = &followparent_recalc, |
478 | .enable = &omap1_clk_enable, | 478 | .enable = &omap1_clk_enable_generic, |
479 | .disable = &omap1_clk_disable, | 479 | .disable = &omap1_clk_disable_generic, |
480 | }; | 480 | }; |
481 | 481 | ||
482 | static struct clk lcd_ck_16xx = { | 482 | static struct clk lcd_ck_16xx = { |
@@ -487,8 +487,8 @@ static struct clk lcd_ck_16xx = { | |||
487 | .enable_bit = EN_LCDCK, | 487 | .enable_bit = EN_LCDCK, |
488 | .rate_offset = CKCTL_LCDDIV_OFFSET, | 488 | .rate_offset = CKCTL_LCDDIV_OFFSET, |
489 | .recalc = &omap1_ckctl_recalc, | 489 | .recalc = &omap1_ckctl_recalc, |
490 | .enable = &omap1_clk_enable, | 490 | .enable = &omap1_clk_enable_generic, |
491 | .disable = &omap1_clk_disable, | 491 | .disable = &omap1_clk_disable_generic, |
492 | }; | 492 | }; |
493 | 493 | ||
494 | static struct arm_idlect1_clk lcd_ck_1510 = { | 494 | static struct arm_idlect1_clk lcd_ck_1510 = { |
@@ -501,8 +501,8 @@ static struct arm_idlect1_clk lcd_ck_1510 = { | |||
501 | .enable_bit = EN_LCDCK, | 501 | .enable_bit = EN_LCDCK, |
502 | .rate_offset = CKCTL_LCDDIV_OFFSET, | 502 | .rate_offset = CKCTL_LCDDIV_OFFSET, |
503 | .recalc = &omap1_ckctl_recalc, | 503 | .recalc = &omap1_ckctl_recalc, |
504 | .enable = &omap1_clk_enable, | 504 | .enable = &omap1_clk_enable_generic, |
505 | .disable = &omap1_clk_disable, | 505 | .disable = &omap1_clk_disable_generic, |
506 | }, | 506 | }, |
507 | .idlect_shift = 3, | 507 | .idlect_shift = 3, |
508 | }; | 508 | }; |
@@ -518,8 +518,8 @@ static struct clk uart1_1510 = { | |||
518 | .enable_bit = 29, /* Chooses between 12MHz and 48MHz */ | 518 | .enable_bit = 29, /* Chooses between 12MHz and 48MHz */ |
519 | .set_rate = &omap1_set_uart_rate, | 519 | .set_rate = &omap1_set_uart_rate, |
520 | .recalc = &omap1_uart_recalc, | 520 | .recalc = &omap1_uart_recalc, |
521 | .enable = &omap1_clk_enable, | 521 | .enable = &omap1_clk_enable_generic, |
522 | .disable = &omap1_clk_disable, | 522 | .disable = &omap1_clk_disable_generic, |
523 | }; | 523 | }; |
524 | 524 | ||
525 | static struct uart_clk uart1_16xx = { | 525 | static struct uart_clk uart1_16xx = { |
@@ -550,8 +550,8 @@ static struct clk uart2_ck = { | |||
550 | .enable_bit = 30, /* Chooses between 12MHz and 48MHz */ | 550 | .enable_bit = 30, /* Chooses between 12MHz and 48MHz */ |
551 | .set_rate = &omap1_set_uart_rate, | 551 | .set_rate = &omap1_set_uart_rate, |
552 | .recalc = &omap1_uart_recalc, | 552 | .recalc = &omap1_uart_recalc, |
553 | .enable = &omap1_clk_enable, | 553 | .enable = &omap1_clk_enable_generic, |
554 | .disable = &omap1_clk_disable, | 554 | .disable = &omap1_clk_disable_generic, |
555 | }; | 555 | }; |
556 | 556 | ||
557 | static struct clk uart3_1510 = { | 557 | static struct clk uart3_1510 = { |
@@ -565,8 +565,8 @@ static struct clk uart3_1510 = { | |||
565 | .enable_bit = 31, /* Chooses between 12MHz and 48MHz */ | 565 | .enable_bit = 31, /* Chooses between 12MHz and 48MHz */ |
566 | .set_rate = &omap1_set_uart_rate, | 566 | .set_rate = &omap1_set_uart_rate, |
567 | .recalc = &omap1_uart_recalc, | 567 | .recalc = &omap1_uart_recalc, |
568 | .enable = &omap1_clk_enable, | 568 | .enable = &omap1_clk_enable_generic, |
569 | .disable = &omap1_clk_disable, | 569 | .disable = &omap1_clk_disable_generic, |
570 | }; | 570 | }; |
571 | 571 | ||
572 | static struct uart_clk uart3_16xx = { | 572 | static struct uart_clk uart3_16xx = { |
@@ -593,8 +593,8 @@ static struct clk usb_clko = { /* 6 MHz output on W4_USB_CLKO */ | |||
593 | RATE_FIXED | ENABLE_REG_32BIT, | 593 | RATE_FIXED | ENABLE_REG_32BIT, |
594 | .enable_reg = (void __iomem *)ULPD_CLOCK_CTRL, | 594 | .enable_reg = (void __iomem *)ULPD_CLOCK_CTRL, |
595 | .enable_bit = USB_MCLK_EN_BIT, | 595 | .enable_bit = USB_MCLK_EN_BIT, |
596 | .enable = &omap1_clk_enable, | 596 | .enable = &omap1_clk_enable_generic, |
597 | .disable = &omap1_clk_disable, | 597 | .disable = &omap1_clk_disable_generic, |
598 | }; | 598 | }; |
599 | 599 | ||
600 | static struct clk usb_hhc_ck1510 = { | 600 | static struct clk usb_hhc_ck1510 = { |
@@ -605,8 +605,8 @@ static struct clk usb_hhc_ck1510 = { | |||
605 | RATE_FIXED | ENABLE_REG_32BIT, | 605 | RATE_FIXED | ENABLE_REG_32BIT, |
606 | .enable_reg = (void __iomem *)MOD_CONF_CTRL_0, | 606 | .enable_reg = (void __iomem *)MOD_CONF_CTRL_0, |
607 | .enable_bit = USB_HOST_HHC_UHOST_EN, | 607 | .enable_bit = USB_HOST_HHC_UHOST_EN, |
608 | .enable = &omap1_clk_enable, | 608 | .enable = &omap1_clk_enable_generic, |
609 | .disable = &omap1_clk_disable, | 609 | .disable = &omap1_clk_disable_generic, |
610 | }; | 610 | }; |
611 | 611 | ||
612 | static struct clk usb_hhc_ck16xx = { | 612 | static struct clk usb_hhc_ck16xx = { |
@@ -618,8 +618,8 @@ static struct clk usb_hhc_ck16xx = { | |||
618 | RATE_FIXED | ENABLE_REG_32BIT, | 618 | RATE_FIXED | ENABLE_REG_32BIT, |
619 | .enable_reg = (void __iomem *)OTG_BASE + 0x08 /* OTG_SYSCON_2 */, | 619 | .enable_reg = (void __iomem *)OTG_BASE + 0x08 /* OTG_SYSCON_2 */, |
620 | .enable_bit = 8 /* UHOST_EN */, | 620 | .enable_bit = 8 /* UHOST_EN */, |
621 | .enable = &omap1_clk_enable, | 621 | .enable = &omap1_clk_enable_generic, |
622 | .disable = &omap1_clk_disable, | 622 | .disable = &omap1_clk_disable_generic, |
623 | }; | 623 | }; |
624 | 624 | ||
625 | static struct clk usb_dc_ck = { | 625 | static struct clk usb_dc_ck = { |
@@ -629,8 +629,8 @@ static struct clk usb_dc_ck = { | |||
629 | .flags = CLOCK_IN_OMAP16XX | RATE_FIXED, | 629 | .flags = CLOCK_IN_OMAP16XX | RATE_FIXED, |
630 | .enable_reg = (void __iomem *)SOFT_REQ_REG, | 630 | .enable_reg = (void __iomem *)SOFT_REQ_REG, |
631 | .enable_bit = 4, | 631 | .enable_bit = 4, |
632 | .enable = &omap1_clk_enable, | 632 | .enable = &omap1_clk_enable_generic, |
633 | .disable = &omap1_clk_disable, | 633 | .disable = &omap1_clk_disable_generic, |
634 | }; | 634 | }; |
635 | 635 | ||
636 | static struct clk mclk_1510 = { | 636 | static struct clk mclk_1510 = { |
@@ -638,8 +638,8 @@ static struct clk mclk_1510 = { | |||
638 | /* Direct from ULPD, no parent. May be enabled by ext hardware. */ | 638 | /* Direct from ULPD, no parent. May be enabled by ext hardware. */ |
639 | .rate = 12000000, | 639 | .rate = 12000000, |
640 | .flags = CLOCK_IN_OMAP1510 | RATE_FIXED, | 640 | .flags = CLOCK_IN_OMAP1510 | RATE_FIXED, |
641 | .enable = &omap1_clk_enable, | 641 | .enable = &omap1_clk_enable_generic, |
642 | .disable = &omap1_clk_disable, | 642 | .disable = &omap1_clk_disable_generic, |
643 | }; | 643 | }; |
644 | 644 | ||
645 | static struct clk mclk_16xx = { | 645 | static struct clk mclk_16xx = { |
@@ -651,8 +651,8 @@ static struct clk mclk_16xx = { | |||
651 | .set_rate = &omap1_set_ext_clk_rate, | 651 | .set_rate = &omap1_set_ext_clk_rate, |
652 | .round_rate = &omap1_round_ext_clk_rate, | 652 | .round_rate = &omap1_round_ext_clk_rate, |
653 | .init = &omap1_init_ext_clk, | 653 | .init = &omap1_init_ext_clk, |
654 | .enable = &omap1_clk_enable, | 654 | .enable = &omap1_clk_enable_generic, |
655 | .disable = &omap1_clk_disable, | 655 | .disable = &omap1_clk_disable_generic, |
656 | }; | 656 | }; |
657 | 657 | ||
658 | static struct clk bclk_1510 = { | 658 | static struct clk bclk_1510 = { |
@@ -660,8 +660,8 @@ static struct clk bclk_1510 = { | |||
660 | /* Direct from ULPD, no parent. May be enabled by ext hardware. */ | 660 | /* Direct from ULPD, no parent. May be enabled by ext hardware. */ |
661 | .rate = 12000000, | 661 | .rate = 12000000, |
662 | .flags = CLOCK_IN_OMAP1510 | RATE_FIXED, | 662 | .flags = CLOCK_IN_OMAP1510 | RATE_FIXED, |
663 | .enable = &omap1_clk_enable, | 663 | .enable = &omap1_clk_enable_generic, |
664 | .disable = &omap1_clk_disable, | 664 | .disable = &omap1_clk_disable_generic, |
665 | }; | 665 | }; |
666 | 666 | ||
667 | static struct clk bclk_16xx = { | 667 | static struct clk bclk_16xx = { |
@@ -673,8 +673,8 @@ static struct clk bclk_16xx = { | |||
673 | .set_rate = &omap1_set_ext_clk_rate, | 673 | .set_rate = &omap1_set_ext_clk_rate, |
674 | .round_rate = &omap1_round_ext_clk_rate, | 674 | .round_rate = &omap1_round_ext_clk_rate, |
675 | .init = &omap1_init_ext_clk, | 675 | .init = &omap1_init_ext_clk, |
676 | .enable = &omap1_clk_enable, | 676 | .enable = &omap1_clk_enable_generic, |
677 | .disable = &omap1_clk_disable, | 677 | .disable = &omap1_clk_disable_generic, |
678 | }; | 678 | }; |
679 | 679 | ||
680 | static struct clk mmc1_ck = { | 680 | static struct clk mmc1_ck = { |
@@ -686,8 +686,8 @@ static struct clk mmc1_ck = { | |||
686 | RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT, | 686 | RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT, |
687 | .enable_reg = (void __iomem *)MOD_CONF_CTRL_0, | 687 | .enable_reg = (void __iomem *)MOD_CONF_CTRL_0, |
688 | .enable_bit = 23, | 688 | .enable_bit = 23, |
689 | .enable = &omap1_clk_enable, | 689 | .enable = &omap1_clk_enable_generic, |
690 | .disable = &omap1_clk_disable, | 690 | .disable = &omap1_clk_disable_generic, |
691 | }; | 691 | }; |
692 | 692 | ||
693 | static struct clk mmc2_ck = { | 693 | static struct clk mmc2_ck = { |
@@ -699,8 +699,8 @@ static struct clk mmc2_ck = { | |||
699 | RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT, | 699 | RATE_FIXED | ENABLE_REG_32BIT | CLOCK_NO_IDLE_PARENT, |
700 | .enable_reg = (void __iomem *)MOD_CONF_CTRL_0, | 700 | .enable_reg = (void __iomem *)MOD_CONF_CTRL_0, |
701 | .enable_bit = 20, | 701 | .enable_bit = 20, |
702 | .enable = &omap1_clk_enable, | 702 | .enable = &omap1_clk_enable_generic, |
703 | .disable = &omap1_clk_disable, | 703 | .disable = &omap1_clk_disable_generic, |
704 | }; | 704 | }; |
705 | 705 | ||
706 | static struct clk virtual_ck_mpu = { | 706 | static struct clk virtual_ck_mpu = { |
@@ -711,8 +711,8 @@ static struct clk virtual_ck_mpu = { | |||
711 | .recalc = &followparent_recalc, | 711 | .recalc = &followparent_recalc, |
712 | .set_rate = &omap1_select_table_rate, | 712 | .set_rate = &omap1_select_table_rate, |
713 | .round_rate = &omap1_round_to_table_rate, | 713 | .round_rate = &omap1_round_to_table_rate, |
714 | .enable = &omap1_clk_enable, | 714 | .enable = &omap1_clk_enable_generic, |
715 | .disable = &omap1_clk_disable, | 715 | .disable = &omap1_clk_disable_generic, |
716 | }; | 716 | }; |
717 | 717 | ||
718 | static struct clk * onchip_clks[] = { | 718 | static struct clk * onchip_clks[] = { |
diff --git a/arch/arm/mach-omap1/serial.c b/arch/arm/mach-omap1/serial.c index 6810cfb84462..e924e0c6a4ce 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> |
@@ -146,7 +146,7 @@ void __init omap_serial_init(void) | |||
146 | if (IS_ERR(uart1_ck)) | 146 | if (IS_ERR(uart1_ck)) |
147 | printk("Could not get uart1_ck\n"); | 147 | printk("Could not get uart1_ck\n"); |
148 | else { | 148 | else { |
149 | clk_use(uart1_ck); | 149 | clk_enable(uart1_ck); |
150 | if (cpu_is_omap1510()) | 150 | if (cpu_is_omap1510()) |
151 | clk_set_rate(uart1_ck, 12000000); | 151 | clk_set_rate(uart1_ck, 12000000); |
152 | } | 152 | } |
@@ -166,7 +166,7 @@ void __init omap_serial_init(void) | |||
166 | if (IS_ERR(uart2_ck)) | 166 | if (IS_ERR(uart2_ck)) |
167 | printk("Could not get uart2_ck\n"); | 167 | printk("Could not get uart2_ck\n"); |
168 | else { | 168 | else { |
169 | clk_use(uart2_ck); | 169 | clk_enable(uart2_ck); |
170 | if (cpu_is_omap1510()) | 170 | if (cpu_is_omap1510()) |
171 | clk_set_rate(uart2_ck, 12000000); | 171 | clk_set_rate(uart2_ck, 12000000); |
172 | else | 172 | else |
@@ -188,7 +188,7 @@ void __init omap_serial_init(void) | |||
188 | if (IS_ERR(uart3_ck)) | 188 | if (IS_ERR(uart3_ck)) |
189 | printk("Could not get uart3_ck\n"); | 189 | printk("Could not get uart3_ck\n"); |
190 | else { | 190 | else { |
191 | clk_use(uart3_ck); | 191 | clk_enable(uart3_ck); |
192 | if (cpu_is_omap1510()) | 192 | if (cpu_is_omap1510()) |
193 | clk_set_rate(uart3_ck, 12000000); | 193 | clk_set_rate(uart3_ck, 12000000); |
194 | } | 194 | } |
@@ -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/board-generic.c b/arch/arm/mach-omap2/board-generic.c index c602e7a3d93e..b937123e5c65 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -69,7 +69,6 @@ static void __init omap_generic_map_io(void) | |||
69 | 69 | ||
70 | MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx") | 70 | MACHINE_START(OMAP_GENERIC, "Generic OMAP24xx") |
71 | /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ | 71 | /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ |
72 | .phys_ram = 0x80000000, | ||
73 | .phys_io = 0x48000000, | 72 | .phys_io = 0x48000000, |
74 | .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, | 73 | .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, |
75 | .boot_params = 0x80000100, | 74 | .boot_params = 0x80000100, |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index f2554469a76a..c3c35d40378a 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -186,7 +186,6 @@ static void __init omap_h4_map_io(void) | |||
186 | 186 | ||
187 | MACHINE_START(OMAP_H4, "OMAP2420 H4 board") | 187 | MACHINE_START(OMAP_H4, "OMAP2420 H4 board") |
188 | /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ | 188 | /* Maintainer: Paul Mundt <paul.mundt@nokia.com> */ |
189 | .phys_ram = 0x80000000, | ||
190 | .phys_io = 0x48000000, | 189 | .phys_io = 0x48000000, |
191 | .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, | 190 | .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc, |
192 | .boot_params = 0x80000100, | 191 | .boot_params = 0x80000100, |
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index 85818d9f2635..180f675c9064 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> |
@@ -111,7 +111,7 @@ static void omap2_clk_fixed_enable(struct clk *clk) | |||
111 | /* Enables clock without considering parent dependencies or use count | 111 | /* Enables clock without considering parent dependencies or use count |
112 | * REVISIT: Maybe change this to use clk->enable like on omap1? | 112 | * REVISIT: Maybe change this to use clk->enable like on omap1? |
113 | */ | 113 | */ |
114 | static int omap2_clk_enable(struct clk * clk) | 114 | static int _omap2_clk_enable(struct clk * clk) |
115 | { | 115 | { |
116 | u32 regval32; | 116 | u32 regval32; |
117 | 117 | ||
@@ -150,7 +150,7 @@ static void omap2_clk_fixed_disable(struct clk *clk) | |||
150 | } | 150 | } |
151 | 151 | ||
152 | /* Disables clock without considering parent dependencies or use count */ | 152 | /* Disables clock without considering parent dependencies or use count */ |
153 | static void omap2_clk_disable(struct clk *clk) | 153 | static void _omap2_clk_disable(struct clk *clk) |
154 | { | 154 | { |
155 | u32 regval32; | 155 | u32 regval32; |
156 | 156 | ||
@@ -167,23 +167,23 @@ static void omap2_clk_disable(struct clk *clk) | |||
167 | __raw_writel(regval32, clk->enable_reg); | 167 | __raw_writel(regval32, clk->enable_reg); |
168 | } | 168 | } |
169 | 169 | ||
170 | static int omap2_clk_use(struct clk *clk) | 170 | static int omap2_clk_enable(struct clk *clk) |
171 | { | 171 | { |
172 | int ret = 0; | 172 | int ret = 0; |
173 | 173 | ||
174 | if (clk->usecount++ == 0) { | 174 | if (clk->usecount++ == 0) { |
175 | if (likely((u32)clk->parent)) | 175 | if (likely((u32)clk->parent)) |
176 | ret = omap2_clk_use(clk->parent); | 176 | ret = omap2_clk_enable(clk->parent); |
177 | 177 | ||
178 | if (unlikely(ret != 0)) { | 178 | if (unlikely(ret != 0)) { |
179 | clk->usecount--; | 179 | clk->usecount--; |
180 | return ret; | 180 | return ret; |
181 | } | 181 | } |
182 | 182 | ||
183 | ret = omap2_clk_enable(clk); | 183 | ret = _omap2_clk_enable(clk); |
184 | 184 | ||
185 | if (unlikely(ret != 0) && clk->parent) { | 185 | if (unlikely(ret != 0) && clk->parent) { |
186 | omap2_clk_unuse(clk->parent); | 186 | omap2_clk_disable(clk->parent); |
187 | clk->usecount--; | 187 | clk->usecount--; |
188 | } | 188 | } |
189 | } | 189 | } |
@@ -191,12 +191,12 @@ static int omap2_clk_use(struct clk *clk) | |||
191 | return ret; | 191 | return ret; |
192 | } | 192 | } |
193 | 193 | ||
194 | static void omap2_clk_unuse(struct clk *clk) | 194 | static void omap2_clk_disable(struct clk *clk) |
195 | { | 195 | { |
196 | if (clk->usecount > 0 && !(--clk->usecount)) { | 196 | if (clk->usecount > 0 && !(--clk->usecount)) { |
197 | omap2_clk_disable(clk); | 197 | _omap2_clk_disable(clk); |
198 | if (likely((u32)clk->parent)) | 198 | if (likely((u32)clk->parent)) |
199 | omap2_clk_unuse(clk->parent); | 199 | omap2_clk_disable(clk->parent); |
200 | } | 200 | } |
201 | } | 201 | } |
202 | 202 | ||
@@ -873,7 +873,7 @@ static int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) | |||
873 | reg = (void __iomem *)src_sel; | 873 | reg = (void __iomem *)src_sel; |
874 | 874 | ||
875 | if (clk->usecount > 0) | 875 | if (clk->usecount > 0) |
876 | omap2_clk_disable(clk); | 876 | _omap2_clk_disable(clk); |
877 | 877 | ||
878 | /* Set new source value (previous dividers if any in effect) */ | 878 | /* Set new source value (previous dividers if any in effect) */ |
879 | reg_val = __raw_readl(reg) & ~(field_mask << src_off); | 879 | reg_val = __raw_readl(reg) & ~(field_mask << src_off); |
@@ -884,7 +884,7 @@ static int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent) | |||
884 | __raw_writel(0x1, (void __iomem *)&PRCM_CLKCFG_CTRL); | 884 | __raw_writel(0x1, (void __iomem *)&PRCM_CLKCFG_CTRL); |
885 | 885 | ||
886 | if (clk->usecount > 0) | 886 | if (clk->usecount > 0) |
887 | omap2_clk_enable(clk); | 887 | _omap2_clk_enable(clk); |
888 | 888 | ||
889 | clk->parent = new_parent; | 889 | clk->parent = new_parent; |
890 | 890 | ||
@@ -999,8 +999,6 @@ static int omap2_select_table_rate(struct clk * clk, unsigned long rate) | |||
999 | static struct clk_functions omap2_clk_functions = { | 999 | static struct clk_functions omap2_clk_functions = { |
1000 | .clk_enable = omap2_clk_enable, | 1000 | .clk_enable = omap2_clk_enable, |
1001 | .clk_disable = omap2_clk_disable, | 1001 | .clk_disable = omap2_clk_disable, |
1002 | .clk_use = omap2_clk_use, | ||
1003 | .clk_unuse = omap2_clk_unuse, | ||
1004 | .clk_round_rate = omap2_clk_round_rate, | 1002 | .clk_round_rate = omap2_clk_round_rate, |
1005 | .clk_set_rate = omap2_clk_set_rate, | 1003 | .clk_set_rate = omap2_clk_set_rate, |
1006 | .clk_set_parent = omap2_clk_set_parent, | 1004 | .clk_set_parent = omap2_clk_set_parent, |
@@ -1045,7 +1043,7 @@ static void __init omap2_disable_unused_clocks(void) | |||
1045 | continue; | 1043 | continue; |
1046 | 1044 | ||
1047 | printk(KERN_INFO "Disabling unused clock \"%s\"\n", ck->name); | 1045 | printk(KERN_INFO "Disabling unused clock \"%s\"\n", ck->name); |
1048 | omap2_clk_disable(ck); | 1046 | _omap2_clk_disable(ck); |
1049 | } | 1047 | } |
1050 | } | 1048 | } |
1051 | late_initcall(omap2_disable_unused_clocks); | 1049 | late_initcall(omap2_disable_unused_clocks); |
@@ -1120,10 +1118,10 @@ int __init omap2_clk_init(void) | |||
1120 | * Only enable those clocks we will need, let the drivers | 1118 | * Only enable those clocks we will need, let the drivers |
1121 | * enable other clocks as necessary | 1119 | * enable other clocks as necessary |
1122 | */ | 1120 | */ |
1123 | clk_use(&sync_32k_ick); | 1121 | clk_enable(&sync_32k_ick); |
1124 | clk_use(&omapctrl_ick); | 1122 | clk_enable(&omapctrl_ick); |
1125 | if (cpu_is_omap2430()) | 1123 | if (cpu_is_omap2430()) |
1126 | clk_use(&sdrc_ick); | 1124 | clk_enable(&sdrc_ick); |
1127 | 1125 | ||
1128 | return 0; | 1126 | return 0; |
1129 | } | 1127 | } |
diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h index 4aeab5591bd3..6cab20b1d3c1 100644 --- a/arch/arm/mach-omap2/clock.h +++ b/arch/arm/mach-omap2/clock.h | |||
@@ -24,7 +24,7 @@ static void omap2_propagate_rate(struct clk * clk); | |||
24 | static void omap2_mpu_recalc(struct clk * clk); | 24 | static void omap2_mpu_recalc(struct clk * clk); |
25 | static int omap2_select_table_rate(struct clk * clk, unsigned long rate); | 25 | static int omap2_select_table_rate(struct clk * clk, unsigned long rate); |
26 | static long omap2_round_to_table_rate(struct clk * clk, unsigned long rate); | 26 | static long omap2_round_to_table_rate(struct clk * clk, unsigned long rate); |
27 | static void omap2_clk_unuse(struct clk *clk); | 27 | static void omap2_clk_disable(struct clk *clk); |
28 | static void omap2_sys_clk_recalc(struct clk * clk); | 28 | static void omap2_sys_clk_recalc(struct clk * clk); |
29 | static u32 omap2_clksel_to_divisor(u32 div_sel, u32 field_val); | 29 | static u32 omap2_clksel_to_divisor(u32 div_sel, u32 field_val); |
30 | static u32 omap2_clksel_get_divisor(struct clk *clk); | 30 | static u32 omap2_clksel_get_divisor(struct clk *clk); |
@@ -859,7 +859,7 @@ static struct clk core_l3_ck = { /* Used for ick and fck, interconnect */ | |||
859 | 859 | ||
860 | static struct clk usb_l4_ick = { /* FS-USB interface clock */ | 860 | static struct clk usb_l4_ick = { /* FS-USB interface clock */ |
861 | .name = "usb_l4_ick", | 861 | .name = "usb_l4_ick", |
862 | .parent = &core_ck, | 862 | .parent = &core_l3_ck, |
863 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | 863 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | |
864 | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP | | 864 | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP | |
865 | CONFIG_PARTICIPANT, | 865 | CONFIG_PARTICIPANT, |
@@ -1045,7 +1045,7 @@ static struct clk gpt1_ick = { | |||
1045 | .name = "gpt1_ick", | 1045 | .name = "gpt1_ick", |
1046 | .parent = &l4_ck, | 1046 | .parent = &l4_ck, |
1047 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | 1047 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, |
1048 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, /* Bit4 */ | 1048 | .enable_reg = (void __iomem *)&CM_ICLKEN_WKUP, /* Bit0 */ |
1049 | .enable_bit = 0, | 1049 | .enable_bit = 0, |
1050 | .recalc = &omap2_followparent_recalc, | 1050 | .recalc = &omap2_followparent_recalc, |
1051 | }; | 1051 | }; |
@@ -1055,7 +1055,7 @@ static struct clk gpt1_fck = { | |||
1055 | .parent = &func_32k_ck, | 1055 | .parent = &func_32k_ck, |
1056 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | | 1056 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | |
1057 | CM_WKUP_SEL1, | 1057 | CM_WKUP_SEL1, |
1058 | .enable_reg = (void __iomem *)&CM_FCLKEN_WKUP, | 1058 | .enable_reg = (void __iomem *)&CM_FCLKEN_WKUP, /* Bit0 */ |
1059 | .enable_bit = 0, | 1059 | .enable_bit = 0, |
1060 | .src_offset = 0, | 1060 | .src_offset = 0, |
1061 | .recalc = &omap2_followparent_recalc, | 1061 | .recalc = &omap2_followparent_recalc, |
@@ -1065,7 +1065,7 @@ static struct clk gpt2_ick = { | |||
1065 | .name = "gpt2_ick", | 1065 | .name = "gpt2_ick", |
1066 | .parent = &l4_ck, | 1066 | .parent = &l4_ck, |
1067 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, | 1067 | .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X, |
1068 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* bit4 */ | 1068 | .enable_reg = (void __iomem *)&CM_ICLKEN1_CORE, /* Bit4 */ |
1069 | .enable_bit = 0, | 1069 | .enable_bit = 0, |
1070 | .recalc = &omap2_followparent_recalc, | 1070 | .recalc = &omap2_followparent_recalc, |
1071 | }; | 1071 | }; |
@@ -1839,7 +1839,7 @@ static struct clk usb_fck = { | |||
1839 | 1839 | ||
1840 | static struct clk usbhs_ick = { | 1840 | static struct clk usbhs_ick = { |
1841 | .name = "usbhs_ick", | 1841 | .name = "usbhs_ick", |
1842 | .parent = &l4_ck, | 1842 | .parent = &core_l3_ck, |
1843 | .flags = CLOCK_IN_OMAP243X, | 1843 | .flags = CLOCK_IN_OMAP243X, |
1844 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, | 1844 | .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, |
1845 | .enable_bit = 6, | 1845 | .enable_bit = 6, |
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index f4df04fe1dd8..24dd374224af 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> |
@@ -119,14 +119,14 @@ void __init omap_serial_init() | |||
119 | if (IS_ERR(uart1_ick)) | 119 | if (IS_ERR(uart1_ick)) |
120 | printk("Could not get uart1_ick\n"); | 120 | printk("Could not get uart1_ick\n"); |
121 | else { | 121 | else { |
122 | clk_use(uart1_ick); | 122 | clk_enable(uart1_ick); |
123 | } | 123 | } |
124 | 124 | ||
125 | uart1_fck = clk_get(NULL, "uart1_fck"); | 125 | uart1_fck = clk_get(NULL, "uart1_fck"); |
126 | if (IS_ERR(uart1_fck)) | 126 | if (IS_ERR(uart1_fck)) |
127 | printk("Could not get uart1_fck\n"); | 127 | printk("Could not get uart1_fck\n"); |
128 | else { | 128 | else { |
129 | clk_use(uart1_fck); | 129 | clk_enable(uart1_fck); |
130 | } | 130 | } |
131 | break; | 131 | break; |
132 | case 1: | 132 | case 1: |
@@ -134,14 +134,14 @@ void __init omap_serial_init() | |||
134 | if (IS_ERR(uart2_ick)) | 134 | if (IS_ERR(uart2_ick)) |
135 | printk("Could not get uart2_ick\n"); | 135 | printk("Could not get uart2_ick\n"); |
136 | else { | 136 | else { |
137 | clk_use(uart2_ick); | 137 | clk_enable(uart2_ick); |
138 | } | 138 | } |
139 | 139 | ||
140 | uart2_fck = clk_get(NULL, "uart2_fck"); | 140 | uart2_fck = clk_get(NULL, "uart2_fck"); |
141 | if (IS_ERR(uart2_fck)) | 141 | if (IS_ERR(uart2_fck)) |
142 | printk("Could not get uart2_fck\n"); | 142 | printk("Could not get uart2_fck\n"); |
143 | else { | 143 | else { |
144 | clk_use(uart2_fck); | 144 | clk_enable(uart2_fck); |
145 | } | 145 | } |
146 | break; | 146 | break; |
147 | case 2: | 147 | case 2: |
@@ -149,14 +149,14 @@ void __init omap_serial_init() | |||
149 | if (IS_ERR(uart3_ick)) | 149 | if (IS_ERR(uart3_ick)) |
150 | printk("Could not get uart3_ick\n"); | 150 | printk("Could not get uart3_ick\n"); |
151 | else { | 151 | else { |
152 | clk_use(uart3_ick); | 152 | clk_enable(uart3_ick); |
153 | } | 153 | } |
154 | 154 | ||
155 | uart3_fck = clk_get(NULL, "uart3_fck"); | 155 | uart3_fck = clk_get(NULL, "uart3_fck"); |
156 | if (IS_ERR(uart3_fck)) | 156 | if (IS_ERR(uart3_fck)) |
157 | printk("Could not get uart3_fck\n"); | 157 | printk("Could not get uart3_fck\n"); |
158 | else { | 158 | else { |
159 | clk_use(uart3_fck); | 159 | clk_enable(uart3_fck); |
160 | } | 160 | } |
161 | break; | 161 | break; |
162 | } | 162 | } |
diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c index 9ec11443200f..1d2f5ac2f69b 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 |
@@ -103,7 +104,7 @@ static void __init omap2_gp_timer_init(void) | |||
103 | if (IS_ERR(sys_ck)) | 104 | if (IS_ERR(sys_ck)) |
104 | printk(KERN_ERR "Could not get sys_ck\n"); | 105 | printk(KERN_ERR "Could not get sys_ck\n"); |
105 | else { | 106 | else { |
106 | clk_use(sys_ck); | 107 | clk_enable(sys_ck); |
107 | tick_period = clk_get_rate(sys_ck) / 100; | 108 | tick_period = clk_get_rate(sys_ck) / 100; |
108 | clk_put(sys_ck); | 109 | clk_put(sys_ck); |
109 | } | 110 | } |
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig index 2a58499c0968..c1d77f5b3823 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/corgi.c b/arch/arm/mach-pxa/corgi.c index 100fb31b5156..7ffd2de8f2f3 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 | ||
@@ -343,7 +342,6 @@ static void __init fixup_corgi(struct machine_desc *desc, | |||
343 | 342 | ||
344 | #ifdef CONFIG_MACH_CORGI | 343 | #ifdef CONFIG_MACH_CORGI |
345 | MACHINE_START(CORGI, "SHARP Corgi") | 344 | MACHINE_START(CORGI, "SHARP Corgi") |
346 | .phys_ram = 0xa0000000, | ||
347 | .phys_io = 0x40000000, | 345 | .phys_io = 0x40000000, |
348 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 346 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
349 | .fixup = fixup_corgi, | 347 | .fixup = fixup_corgi, |
@@ -356,7 +354,6 @@ MACHINE_END | |||
356 | 354 | ||
357 | #ifdef CONFIG_MACH_SHEPHERD | 355 | #ifdef CONFIG_MACH_SHEPHERD |
358 | MACHINE_START(SHEPHERD, "SHARP Shepherd") | 356 | MACHINE_START(SHEPHERD, "SHARP Shepherd") |
359 | .phys_ram = 0xa0000000, | ||
360 | .phys_io = 0x40000000, | 357 | .phys_io = 0x40000000, |
361 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 358 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
362 | .fixup = fixup_corgi, | 359 | .fixup = fixup_corgi, |
@@ -369,7 +366,6 @@ MACHINE_END | |||
369 | 366 | ||
370 | #ifdef CONFIG_MACH_HUSKY | 367 | #ifdef CONFIG_MACH_HUSKY |
371 | MACHINE_START(HUSKY, "SHARP Husky") | 368 | MACHINE_START(HUSKY, "SHARP Husky") |
372 | .phys_ram = 0xa0000000, | ||
373 | .phys_io = 0x40000000, | 369 | .phys_io = 0x40000000, |
374 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 370 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
375 | .fixup = fixup_corgi, | 371 | .fixup = fixup_corgi, |
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c index 599be14754f9..7a1ab73e9e10 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/idp.c b/arch/arm/mach-pxa/idp.c index 7de159e2ab42..347b9dea24c6 100644 --- a/arch/arm/mach-pxa/idp.c +++ b/arch/arm/mach-pxa/idp.c | |||
@@ -183,7 +183,6 @@ static void __init idp_map_io(void) | |||
183 | 183 | ||
184 | MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") | 184 | MACHINE_START(PXA_IDP, "Vibren PXA255 IDP") |
185 | /* Maintainer: Vibren Technologies */ | 185 | /* Maintainer: Vibren Technologies */ |
186 | .phys_ram = 0xa0000000, | ||
187 | .phys_io = 0x40000000, | 186 | .phys_io = 0x40000000, |
188 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 187 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
189 | .map_io = idp_map_io, | 188 | .map_io = idp_map_io, |
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index b464bc88ff93..3e26d7ce5bb2 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c | |||
@@ -437,7 +437,6 @@ static void __init lubbock_map_io(void) | |||
437 | 437 | ||
438 | MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") | 438 | MACHINE_START(LUBBOCK, "Intel DBPXA250 Development Platform (aka Lubbock)") |
439 | /* Maintainer: MontaVista Software Inc. */ | 439 | /* Maintainer: MontaVista Software Inc. */ |
440 | .phys_ram = 0xa0000000, | ||
441 | .phys_io = 0x40000000, | 440 | .phys_io = 0x40000000, |
442 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 441 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
443 | .map_io = lubbock_map_io, | 442 | .map_io = lubbock_map_io, |
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 277498ae5b6c..d5bda60209ec 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -427,6 +427,12 @@ static void __init mainstone_init(void) | |||
427 | printk(KERN_NOTICE "Mainstone configured to boot from %s\n", | 427 | printk(KERN_NOTICE "Mainstone configured to boot from %s\n", |
428 | mst_flash_data[0].name); | 428 | mst_flash_data[0].name); |
429 | 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 | |||
430 | /* | 436 | /* |
431 | * On Mainstone, we route AC97_SYSCLK via GPIO45 to | 437 | * On Mainstone, we route AC97_SYSCLK via GPIO45 to |
432 | * the audio daughter card | 438 | * the audio daughter card |
@@ -483,7 +489,6 @@ static void __init mainstone_map_io(void) | |||
483 | 489 | ||
484 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") | 490 | MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)") |
485 | /* Maintainer: MontaVista Software Inc. */ | 491 | /* Maintainer: MontaVista Software Inc. */ |
486 | .phys_ram = 0xa0000000, | ||
487 | .phys_io = 0x40000000, | 492 | .phys_io = 0x40000000, |
488 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 493 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
489 | .map_io = mainstone_map_io, | 494 | .map_io = mainstone_map_io, |
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index eef3de26ad37..911e6ff5a9bd 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 | ||
@@ -312,7 +311,6 @@ static void __init fixup_poodle(struct machine_desc *desc, | |||
312 | } | 311 | } |
313 | 312 | ||
314 | MACHINE_START(POODLE, "SHARP Poodle") | 313 | MACHINE_START(POODLE, "SHARP Poodle") |
315 | .phys_ram = 0xa0000000, | ||
316 | .phys_io = 0x40000000, | 314 | .phys_io = 0x40000000, |
317 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 315 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
318 | .fixup = fixup_poodle, | 316 | .fixup = fixup_poodle, |
diff --git a/arch/arm/mach-pxa/sharpsl.h b/arch/arm/mach-pxa/sharpsl.h index b0c40a1d6671..da4769caaf72 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 c10be00fb526..6d402b262d8a 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 2df1b56615b1..c094d99ebf56 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); |
@@ -465,7 +497,6 @@ static void __init fixup_spitz(struct machine_desc *desc, | |||
465 | 497 | ||
466 | #ifdef CONFIG_MACH_SPITZ | 498 | #ifdef CONFIG_MACH_SPITZ |
467 | MACHINE_START(SPITZ, "SHARP Spitz") | 499 | MACHINE_START(SPITZ, "SHARP Spitz") |
468 | .phys_ram = 0xa0000000, | ||
469 | .phys_io = 0x40000000, | 500 | .phys_io = 0x40000000, |
470 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 501 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
471 | .fixup = fixup_spitz, | 502 | .fixup = fixup_spitz, |
@@ -478,7 +509,6 @@ MACHINE_END | |||
478 | 509 | ||
479 | #ifdef CONFIG_MACH_BORZOI | 510 | #ifdef CONFIG_MACH_BORZOI |
480 | MACHINE_START(BORZOI, "SHARP Borzoi") | 511 | MACHINE_START(BORZOI, "SHARP Borzoi") |
481 | .phys_ram = 0xa0000000, | ||
482 | .phys_io = 0x40000000, | 512 | .phys_io = 0x40000000, |
483 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 513 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
484 | .fixup = fixup_spitz, | 514 | .fixup = fixup_spitz, |
@@ -491,7 +521,6 @@ MACHINE_END | |||
491 | 521 | ||
492 | #ifdef CONFIG_MACH_AKITA | 522 | #ifdef CONFIG_MACH_AKITA |
493 | MACHINE_START(AKITA, "SHARP Akita") | 523 | MACHINE_START(AKITA, "SHARP Akita") |
494 | .phys_ram = 0xa0000000, | ||
495 | .phys_io = 0x40000000, | 524 | .phys_io = 0x40000000, |
496 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 525 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
497 | .fixup = fixup_spitz, | 526 | .fixup = fixup_spitz, |
diff --git a/arch/arm/mach-pxa/spitz_pm.c b/arch/arm/mach-pxa/spitz_pm.c index 3ce7486daa51..5e5bdc898482 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 a68b30eff4d2..93096befd017 100644 --- a/arch/arm/mach-pxa/ssp.c +++ b/arch/arm/mach-pxa/ssp.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/interrupt.h> | 31 | #include <linux/interrupt.h> |
32 | #include <linux/ioport.h> | 32 | #include <linux/ioport.h> |
33 | #include <linux/init.h> | 33 | #include <linux/init.h> |
34 | #include <linux/mutex.h> | ||
34 | #include <asm/io.h> | 35 | #include <asm/io.h> |
35 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
36 | #include <asm/hardware.h> | 37 | #include <asm/hardware.h> |
@@ -59,7 +60,7 @@ static const struct ssp_info_ ssp_info[PXA_SSP_PORTS] = { | |||
59 | #endif | 60 | #endif |
60 | }; | 61 | }; |
61 | 62 | ||
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-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c index e4f92efc616e..d168286ed470 100644 --- a/arch/arm/mach-pxa/tosa.c +++ b/arch/arm/mach-pxa/tosa.c | |||
@@ -295,7 +295,6 @@ static void __init fixup_tosa(struct machine_desc *desc, | |||
295 | } | 295 | } |
296 | 296 | ||
297 | MACHINE_START(TOSA, "SHARP Tosa") | 297 | MACHINE_START(TOSA, "SHARP Tosa") |
298 | .phys_ram = 0xa0000000, | ||
299 | .phys_io = 0x40000000, | 298 | .phys_io = 0x40000000, |
300 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, | 299 | .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc, |
301 | .fixup = fixup_tosa, | 300 | .fixup = fixup_tosa, |
diff --git a/arch/arm/mach-realview/Kconfig b/arch/arm/mach-realview/Kconfig index 129976866d47..17f5f4439fe7 100644 --- a/arch/arm/mach-realview/Kconfig +++ b/arch/arm/mach-realview/Kconfig | |||
@@ -3,7 +3,6 @@ menu "RealView platform type" | |||
3 | 3 | ||
4 | config MACH_REALVIEW_EB | 4 | config MACH_REALVIEW_EB |
5 | bool "Support RealView/EB platform" | 5 | bool "Support RealView/EB platform" |
6 | default n | ||
7 | select ARM_GIC | 6 | select ARM_GIC |
8 | help | 7 | help |
9 | Include support for the ARM(R) RealView Emulation Baseboard platform. | 8 | Include support for the ARM(R) RealView Emulation Baseboard platform. |
diff --git a/arch/arm/mach-realview/clock.c b/arch/arm/mach-realview/clock.c index 002635c97bb6..21325a4da9da 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 af6580f1ceb8..4a222f59f2cf 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 c06e6041df41..93e86d9f439c 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 c9d7c596b200..caf6b8bb6c95 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 7dc32503fdf2..d4a586e38d5b 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> |
@@ -166,7 +166,6 @@ static void __init realview_eb_init(void) | |||
166 | 166 | ||
167 | MACHINE_START(REALVIEW_EB, "ARM-RealView EB") | 167 | MACHINE_START(REALVIEW_EB, "ARM-RealView EB") |
168 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 168 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
169 | .phys_ram = 0x00000000, | ||
170 | .phys_io = REALVIEW_UART0_BASE, | 169 | .phys_io = REALVIEW_UART0_BASE, |
171 | .io_pg_offst = (IO_ADDRESS(REALVIEW_UART0_BASE) >> 18) & 0xfffc, | 170 | .io_pg_offst = (IO_ADDRESS(REALVIEW_UART0_BASE) >> 18) & 0xfffc, |
172 | .boot_params = 0x00000100, | 171 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-rpc/dma.c b/arch/arm/mach-rpc/dma.c index bc0747439fb3..bd86ffba8810 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-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c index 5c4ac1c008a6..208a2b5dba1b 100644 --- a/arch/arm/mach-rpc/riscpc.c +++ b/arch/arm/mach-rpc/riscpc.c | |||
@@ -177,7 +177,6 @@ extern struct sys_timer ioc_timer; | |||
177 | 177 | ||
178 | MACHINE_START(RISCPC, "Acorn-RiscPC") | 178 | MACHINE_START(RISCPC, "Acorn-RiscPC") |
179 | /* Maintainer: Russell King */ | 179 | /* Maintainer: Russell King */ |
180 | .phys_ram = 0x10000000, | ||
181 | .phys_io = 0x03000000, | 180 | .phys_io = 0x03000000, |
182 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, | 181 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, |
183 | .boot_params = 0x10000100, | 182 | .boot_params = 0x10000100, |
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index 82e8253b1fa0..af2f3d52b61b 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 7953b6f397b9..177d5c8decf7 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/mach-anubis.c b/arch/arm/mach-s3c2410/mach-anubis.c index 0f81fc0c2f7f..3e327b8e46be 100644 --- a/arch/arm/mach-s3c2410/mach-anubis.c +++ b/arch/arm/mach-s3c2410/mach-anubis.c | |||
@@ -294,7 +294,6 @@ static void __init anubis_map_io(void) | |||
294 | 294 | ||
295 | MACHINE_START(ANUBIS, "Simtec-Anubis") | 295 | MACHINE_START(ANUBIS, "Simtec-Anubis") |
296 | /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ | 296 | /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ |
297 | .phys_ram = S3C2410_SDRAM_PA, | ||
298 | .phys_io = S3C2410_PA_UART, | 297 | .phys_io = S3C2410_PA_UART, |
299 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 298 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
300 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 299 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index 4d962717fdf7..995bb8add331 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -527,7 +527,6 @@ static void __init bast_init(void) | |||
527 | 527 | ||
528 | MACHINE_START(BAST, "Simtec-BAST") | 528 | MACHINE_START(BAST, "Simtec-BAST") |
529 | /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ | 529 | /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ |
530 | .phys_ram = S3C2410_SDRAM_PA, | ||
531 | .phys_io = S3C2410_PA_UART, | 530 | .phys_io = S3C2410_PA_UART, |
532 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 531 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
533 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 532 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-h1940.c b/arch/arm/mach-s3c2410/mach-h1940.c index 0aa8760598f7..1c316f14ed94 100644 --- a/arch/arm/mach-s3c2410/mach-h1940.c +++ b/arch/arm/mach-s3c2410/mach-h1940.c | |||
@@ -171,7 +171,6 @@ static void __init h1940_init(void) | |||
171 | 171 | ||
172 | MACHINE_START(H1940, "IPAQ-H1940") | 172 | MACHINE_START(H1940, "IPAQ-H1940") |
173 | /* Maintainer: Ben Dooks <ben@fluff.org> */ | 173 | /* Maintainer: Ben Dooks <ben@fluff.org> */ |
174 | .phys_ram = S3C2410_SDRAM_PA, | ||
175 | .phys_io = S3C2410_PA_UART, | 174 | .phys_io = S3C2410_PA_UART, |
176 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 175 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
177 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 176 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-n30.c b/arch/arm/mach-s3c2410/mach-n30.c index 378d640ab00b..116ac3169966 100644 --- a/arch/arm/mach-s3c2410/mach-n30.c +++ b/arch/arm/mach-s3c2410/mach-n30.c | |||
@@ -128,7 +128,6 @@ MACHINE_START(N30, "Acer-N30") | |||
128 | /* Maintainer: Christer Weinigel <christer@weinigel.se>, | 128 | /* Maintainer: Christer Weinigel <christer@weinigel.se>, |
129 | Ben Dooks <ben-linux@fluff.org> | 129 | Ben Dooks <ben-linux@fluff.org> |
130 | */ | 130 | */ |
131 | .phys_ram = S3C2410_SDRAM_PA, | ||
132 | .phys_io = S3C2410_PA_UART, | 131 | .phys_io = S3C2410_PA_UART, |
133 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 132 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
134 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 133 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-nexcoder.c b/arch/arm/mach-s3c2410/mach-nexcoder.c index 42b0eeff2e0f..07d09509a626 100644 --- a/arch/arm/mach-s3c2410/mach-nexcoder.c +++ b/arch/arm/mach-s3c2410/mach-nexcoder.c | |||
@@ -148,7 +148,6 @@ static void __init nexcoder_map_io(void) | |||
148 | 148 | ||
149 | MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440") | 149 | MACHINE_START(NEXCODER_2440, "NexVision - Nexcoder 2440") |
150 | /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */ | 150 | /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */ |
151 | .phys_ram = S3C2410_SDRAM_PA, | ||
152 | .phys_io = S3C2410_PA_UART, | 151 | .phys_io = S3C2410_PA_UART, |
153 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 152 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
154 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 153 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-otom.c b/arch/arm/mach-s3c2410/mach-otom.c index a2eb9ed48fcd..b39daedf93ca 100644 --- a/arch/arm/mach-s3c2410/mach-otom.c +++ b/arch/arm/mach-s3c2410/mach-otom.c | |||
@@ -116,7 +116,6 @@ static void __init otom11_map_io(void) | |||
116 | 116 | ||
117 | MACHINE_START(OTOM, "Nex Vision - Otom 1.1") | 117 | MACHINE_START(OTOM, "Nex Vision - Otom 1.1") |
118 | /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */ | 118 | /* Maintainer: Guillaume GOURAT <guillaume.gourat@nexvision.tv> */ |
119 | .phys_ram = S3C2410_SDRAM_PA, | ||
120 | .phys_io = S3C2410_PA_UART, | 119 | .phys_io = S3C2410_PA_UART, |
121 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 120 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
122 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 121 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-rx3715.c b/arch/arm/mach-s3c2410/mach-rx3715.c index f8d86d1e16b6..0260ed5ab946 100644 --- a/arch/arm/mach-s3c2410/mach-rx3715.c +++ b/arch/arm/mach-s3c2410/mach-rx3715.c | |||
@@ -205,7 +205,6 @@ static void __init rx3715_init_machine(void) | |||
205 | 205 | ||
206 | MACHINE_START(RX3715, "IPAQ-RX3715") | 206 | MACHINE_START(RX3715, "IPAQ-RX3715") |
207 | /* Maintainer: Ben Dooks <ben@fluff.org> */ | 207 | /* Maintainer: Ben Dooks <ben@fluff.org> */ |
208 | .phys_ram = S3C2410_SDRAM_PA, | ||
209 | .phys_io = S3C2410_PA_UART, | 208 | .phys_io = S3C2410_PA_UART, |
210 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 209 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
211 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 210 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2410.c b/arch/arm/mach-s3c2410/mach-smdk2410.c index 2c91965ee1c8..1e76e1fdfcea 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2410.c +++ b/arch/arm/mach-s3c2410/mach-smdk2410.c | |||
@@ -115,7 +115,6 @@ static void __init smdk2410_init_irq(void) | |||
115 | MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch | 115 | MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch |
116 | * to SMDK2410 */ | 116 | * to SMDK2410 */ |
117 | /* Maintainer: Jonas Dietsche */ | 117 | /* Maintainer: Jonas Dietsche */ |
118 | .phys_ram = S3C2410_SDRAM_PA, | ||
119 | .phys_io = S3C2410_PA_UART, | 118 | .phys_io = S3C2410_PA_UART, |
120 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 119 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
121 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 120 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-smdk2440.c b/arch/arm/mach-s3c2410/mach-smdk2440.c index 4e31118533e6..f4315721c3b8 100644 --- a/arch/arm/mach-s3c2410/mach-smdk2440.c +++ b/arch/arm/mach-s3c2410/mach-smdk2440.c | |||
@@ -216,7 +216,6 @@ static void __init smdk2440_machine_init(void) | |||
216 | 216 | ||
217 | MACHINE_START(S3C2440, "SMDK2440") | 217 | MACHINE_START(S3C2440, "SMDK2440") |
218 | /* Maintainer: Ben Dooks <ben@fluff.org> */ | 218 | /* Maintainer: Ben Dooks <ben@fluff.org> */ |
219 | .phys_ram = S3C2410_SDRAM_PA, | ||
220 | .phys_io = S3C2410_PA_UART, | 219 | .phys_io = S3C2410_PA_UART, |
221 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 220 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
222 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 221 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index ae7e099bf6c8..785fc9cdcf7c 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
@@ -395,7 +395,6 @@ static void __init vr1000_map_io(void) | |||
395 | 395 | ||
396 | MACHINE_START(VR1000, "Thorcom-VR1000") | 396 | MACHINE_START(VR1000, "Thorcom-VR1000") |
397 | /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ | 397 | /* Maintainer: Ben Dooks <ben@simtec.co.uk> */ |
398 | .phys_ram = S3C2410_SDRAM_PA, | ||
399 | .phys_io = S3C2410_PA_UART, | 398 | .phys_io = S3C2410_PA_UART, |
400 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, | 399 | .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc, |
401 | .boot_params = S3C2410_SDRAM_PA + 0x100, | 400 | .boot_params = S3C2410_SDRAM_PA + 0x100, |
diff --git a/arch/arm/mach-s3c2410/s3c2440-clock.c b/arch/arm/mach-s3c2410/s3c2440-clock.c index c67e0979aec3..b557a2be8a01 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 4d63e7133b48..b7fe6d9453fb 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 8a00e3c3cd08..10a2976aefdd 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 5098b50158a3..495f8c6ffcb6 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/assabet.c b/arch/arm/mach-sa1100/assabet.c index a66ac61233a2..a599bb0d4ab8 100644 --- a/arch/arm/mach-sa1100/assabet.c +++ b/arch/arm/mach-sa1100/assabet.c | |||
@@ -447,7 +447,6 @@ static void __init assabet_map_io(void) | |||
447 | 447 | ||
448 | 448 | ||
449 | MACHINE_START(ASSABET, "Intel-Assabet") | 449 | MACHINE_START(ASSABET, "Intel-Assabet") |
450 | .phys_ram = 0xc0000000, | ||
451 | .phys_io = 0x80000000, | 450 | .phys_io = 0x80000000, |
452 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 451 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
453 | .boot_params = 0xc0000100, | 452 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c index edccd5eb06be..f60b7a66dfa0 100644 --- a/arch/arm/mach-sa1100/badge4.c +++ b/arch/arm/mach-sa1100/badge4.c | |||
@@ -297,7 +297,6 @@ static void __init badge4_map_io(void) | |||
297 | } | 297 | } |
298 | 298 | ||
299 | MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4") | 299 | MACHINE_START(BADGE4, "Hewlett-Packard Laboratories BadgePAD 4") |
300 | .phys_ram = 0xc0000000, | ||
301 | .phys_io = 0x80000000, | 300 | .phys_io = 0x80000000, |
302 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 301 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
303 | .boot_params = 0xc0000100, | 302 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-sa1100/cerf.c b/arch/arm/mach-sa1100/cerf.c index 508593722bc7..8269a9ef9afe 100644 --- a/arch/arm/mach-sa1100/cerf.c +++ b/arch/arm/mach-sa1100/cerf.c | |||
@@ -135,7 +135,6 @@ static void __init cerf_init(void) | |||
135 | 135 | ||
136 | MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube") | 136 | MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube") |
137 | /* Maintainer: support@intrinsyc.com */ | 137 | /* Maintainer: support@intrinsyc.com */ |
138 | .phys_ram = 0xc0000000, | ||
139 | .phys_io = 0x80000000, | 138 | .phys_io = 0x80000000, |
140 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 139 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
141 | .map_io = cerf_map_io, | 140 | .map_io = cerf_map_io, |
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index 522abc036d3a..6888816a1935 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c | |||
@@ -191,7 +191,6 @@ static void __init collie_map_io(void) | |||
191 | } | 191 | } |
192 | 192 | ||
193 | MACHINE_START(COLLIE, "Sharp-Collie") | 193 | MACHINE_START(COLLIE, "Sharp-Collie") |
194 | .phys_ram = 0xc0000000, | ||
195 | .phys_io = 0x80000000, | 194 | .phys_io = 0x80000000, |
196 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 195 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
197 | .map_io = collie_map_io, | 196 | .map_io = collie_map_io, |
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c index e8352b7f74b0..b04d92271020 100644 --- a/arch/arm/mach-sa1100/h3600.c +++ b/arch/arm/mach-sa1100/h3600.c | |||
@@ -392,7 +392,6 @@ static void __init h3100_map_io(void) | |||
392 | } | 392 | } |
393 | 393 | ||
394 | MACHINE_START(H3100, "Compaq iPAQ H3100") | 394 | MACHINE_START(H3100, "Compaq iPAQ H3100") |
395 | .phys_ram = 0xc0000000, | ||
396 | .phys_io = 0x80000000, | 395 | .phys_io = 0x80000000, |
397 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 396 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
398 | .boot_params = 0xc0000100, | 397 | .boot_params = 0xc0000100, |
@@ -510,7 +509,6 @@ static void __init h3600_map_io(void) | |||
510 | } | 509 | } |
511 | 510 | ||
512 | MACHINE_START(H3600, "Compaq iPAQ H3600") | 511 | MACHINE_START(H3600, "Compaq iPAQ H3600") |
513 | .phys_ram = 0xc0000000, | ||
514 | .phys_io = 0x80000000, | 512 | .phys_io = 0x80000000, |
515 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 513 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
516 | .boot_params = 0xc0000100, | 514 | .boot_params = 0xc0000100, |
@@ -897,7 +895,6 @@ static void __init h3800_map_io(void) | |||
897 | } | 895 | } |
898 | 896 | ||
899 | MACHINE_START(H3800, "Compaq iPAQ H3800") | 897 | MACHINE_START(H3800, "Compaq iPAQ H3800") |
900 | .phys_ram = 0xc0000000, | ||
901 | .phys_io = 0x80000000, | 898 | .phys_io = 0x80000000, |
902 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 899 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
903 | .boot_params = 0xc0000100, | 900 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-sa1100/hackkit.c b/arch/arm/mach-sa1100/hackkit.c index c922e043c424..046b213efd5b 100644 --- a/arch/arm/mach-sa1100/hackkit.c +++ b/arch/arm/mach-sa1100/hackkit.c | |||
@@ -195,7 +195,6 @@ static void __init hackkit_init(void) | |||
195 | */ | 195 | */ |
196 | 196 | ||
197 | MACHINE_START(HACKKIT, "HackKit Cpu Board") | 197 | MACHINE_START(HACKKIT, "HackKit Cpu Board") |
198 | .phys_ram = 0xc0000000, | ||
199 | .phys_io = 0x80000000, | 198 | .phys_io = 0x80000000, |
200 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 199 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
201 | .boot_params = 0xc0000100, | 200 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-sa1100/jornada720.c b/arch/arm/mach-sa1100/jornada720.c index 2f671cc3cb99..17f5a43acdb7 100644 --- a/arch/arm/mach-sa1100/jornada720.c +++ b/arch/arm/mach-sa1100/jornada720.c | |||
@@ -173,7 +173,6 @@ static void __init jornada720_mach_init(void) | |||
173 | 173 | ||
174 | MACHINE_START(JORNADA720, "HP Jornada 720") | 174 | MACHINE_START(JORNADA720, "HP Jornada 720") |
175 | /* Maintainer: Michael Gernoth <michael@gernoth.net> */ | 175 | /* Maintainer: Michael Gernoth <michael@gernoth.net> */ |
176 | .phys_ram = 0xc0000000, | ||
177 | .phys_io = 0x80000000, | 176 | .phys_io = 0x80000000, |
178 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 177 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
179 | .boot_params = 0xc0000100, | 178 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-sa1100/lart.c b/arch/arm/mach-sa1100/lart.c index 8c9e3dd52942..07d3a696ae7f 100644 --- a/arch/arm/mach-sa1100/lart.c +++ b/arch/arm/mach-sa1100/lart.c | |||
@@ -60,7 +60,6 @@ static void __init lart_map_io(void) | |||
60 | } | 60 | } |
61 | 61 | ||
62 | MACHINE_START(LART, "LART") | 62 | MACHINE_START(LART, "LART") |
63 | .phys_ram = 0xc0000000, | ||
64 | .phys_io = 0x80000000, | 63 | .phys_io = 0x80000000, |
65 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 64 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
66 | .boot_params = 0xc0000100, | 65 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-sa1100/pleb.c b/arch/arm/mach-sa1100/pleb.c index 58c18f9e9b7b..0709ebab531c 100644 --- a/arch/arm/mach-sa1100/pleb.c +++ b/arch/arm/mach-sa1100/pleb.c | |||
@@ -146,7 +146,6 @@ static void __init pleb_map_io(void) | |||
146 | } | 146 | } |
147 | 147 | ||
148 | MACHINE_START(PLEB, "PLEB") | 148 | MACHINE_START(PLEB, "PLEB") |
149 | .phys_ram = 0xc0000000, | ||
150 | .phys_io = 0x80000000, | 149 | .phys_io = 0x80000000, |
151 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 150 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
152 | .map_io = pleb_map_io, | 151 | .map_io = pleb_map_io, |
diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c index 59c7964cfe11..786c8534231f 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-sa1100/shannon.c b/arch/arm/mach-sa1100/shannon.c index 7482288278d9..5aafe0b56992 100644 --- a/arch/arm/mach-sa1100/shannon.c +++ b/arch/arm/mach-sa1100/shannon.c | |||
@@ -83,7 +83,6 @@ static void __init shannon_map_io(void) | |||
83 | } | 83 | } |
84 | 84 | ||
85 | MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)") | 85 | MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)") |
86 | .phys_ram = 0xc0000000, | ||
87 | .phys_io = 0x80000000, | 86 | .phys_io = 0x80000000, |
88 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 87 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
89 | .boot_params = 0xc0000100, | 88 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c index 439ddc9b06d6..d2c23b2c34d1 100644 --- a/arch/arm/mach-sa1100/simpad.c +++ b/arch/arm/mach-sa1100/simpad.c | |||
@@ -229,7 +229,6 @@ arch_initcall(simpad_init); | |||
229 | 229 | ||
230 | MACHINE_START(SIMPAD, "Simpad") | 230 | MACHINE_START(SIMPAD, "Simpad") |
231 | /* Maintainer: Holger Freyther */ | 231 | /* Maintainer: Holger Freyther */ |
232 | .phys_ram = 0xc0000000, | ||
233 | .phys_io = 0x80000000, | 232 | .phys_io = 0x80000000, |
234 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, | 233 | .io_pg_offst = ((0xf8000000) >> 18) & 0xfffc, |
235 | .boot_params = 0xc0000100, | 234 | .boot_params = 0xc0000100, |
diff --git a/arch/arm/mach-shark/core.c b/arch/arm/mach-shark/core.c index 2d428b6dbb58..877600e212dd 100644 --- a/arch/arm/mach-shark/core.c +++ b/arch/arm/mach-shark/core.c | |||
@@ -111,7 +111,6 @@ static struct sys_timer shark_timer = { | |||
111 | 111 | ||
112 | MACHINE_START(SHARK, "Shark") | 112 | MACHINE_START(SHARK, "Shark") |
113 | /* Maintainer: Alexander Schulz */ | 113 | /* Maintainer: Alexander Schulz */ |
114 | .phys_ram = 0x08000000, | ||
115 | .phys_io = 0x40000000, | 114 | .phys_io = 0x40000000, |
116 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, | 115 | .io_pg_offst = ((0xe0000000) >> 18) & 0xfffc, |
117 | .boot_params = 0x08003000, | 116 | .boot_params = 0x08003000, |
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig index 8d787f4c78e6..95096afd5271 100644 --- a/arch/arm/mach-versatile/Kconfig +++ b/arch/arm/mach-versatile/Kconfig | |||
@@ -9,7 +9,6 @@ config ARCH_VERSATILE_PB | |||
9 | 9 | ||
10 | config MACH_VERSATILE_AB | 10 | config MACH_VERSATILE_AB |
11 | bool "Support Versatile/AB platform" | 11 | bool "Support Versatile/AB platform" |
12 | default n | ||
13 | help | 12 | help |
14 | Include support for the ARM(R) Versatile/AP platform. | 13 | Include support for the ARM(R) Versatile/AP platform. |
15 | 14 | ||
diff --git a/arch/arm/mach-versatile/clock.c b/arch/arm/mach-versatile/clock.c index b96a2ea15d41..9858c96560e2 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 a1ca46630dda..9ebbe808b41d 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -25,16 +25,17 @@ | |||
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 | #include <asm/hardware/vic.h> | ||
38 | 39 | ||
39 | #include <asm/mach/arch.h> | 40 | #include <asm/mach/arch.h> |
40 | #include <asm/mach/flash.h> | 41 | #include <asm/mach/flash.h> |
@@ -56,24 +57,6 @@ | |||
56 | #define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE) | 57 | #define VA_VIC_BASE __io_address(VERSATILE_VIC_BASE) |
57 | #define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE) | 58 | #define VA_SIC_BASE __io_address(VERSATILE_SIC_BASE) |
58 | 59 | ||
59 | static void vic_mask_irq(unsigned int irq) | ||
60 | { | ||
61 | irq -= IRQ_VIC_START; | ||
62 | writel(1 << irq, VA_VIC_BASE + VIC_IRQ_ENABLE_CLEAR); | ||
63 | } | ||
64 | |||
65 | static void vic_unmask_irq(unsigned int irq) | ||
66 | { | ||
67 | irq -= IRQ_VIC_START; | ||
68 | writel(1 << irq, VA_VIC_BASE + VIC_IRQ_ENABLE); | ||
69 | } | ||
70 | |||
71 | static struct irqchip vic_chip = { | ||
72 | .ack = vic_mask_irq, | ||
73 | .mask = vic_mask_irq, | ||
74 | .unmask = vic_unmask_irq, | ||
75 | }; | ||
76 | |||
77 | static void sic_mask_irq(unsigned int irq) | 60 | static void sic_mask_irq(unsigned int irq) |
78 | { | 61 | { |
79 | irq -= IRQ_SIC_START; | 62 | irq -= IRQ_SIC_START; |
@@ -127,43 +110,12 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs) | |||
127 | 110 | ||
128 | void __init versatile_init_irq(void) | 111 | void __init versatile_init_irq(void) |
129 | { | 112 | { |
130 | unsigned int i, value; | 113 | unsigned int i; |
131 | |||
132 | /* Disable all interrupts initially. */ | ||
133 | 114 | ||
134 | writel(0, VA_VIC_BASE + VIC_INT_SELECT); | 115 | vic_init(VA_VIC_BASE, ~(1 << 31)); |
135 | writel(0, VA_VIC_BASE + VIC_IRQ_ENABLE); | ||
136 | writel(~0, VA_VIC_BASE + VIC_IRQ_ENABLE_CLEAR); | ||
137 | writel(0, VA_VIC_BASE + VIC_IRQ_STATUS); | ||
138 | writel(0, VA_VIC_BASE + VIC_ITCR); | ||
139 | writel(~0, VA_VIC_BASE + VIC_IRQ_SOFT_CLEAR); | ||
140 | |||
141 | /* | ||
142 | * Make sure we clear all existing interrupts | ||
143 | */ | ||
144 | writel(0, VA_VIC_BASE + VIC_VECT_ADDR); | ||
145 | for (i = 0; i < 19; i++) { | ||
146 | value = readl(VA_VIC_BASE + VIC_VECT_ADDR); | ||
147 | writel(value, VA_VIC_BASE + VIC_VECT_ADDR); | ||
148 | } | ||
149 | |||
150 | for (i = 0; i < 16; i++) { | ||
151 | value = readl(VA_VIC_BASE + VIC_VECT_CNTL0 + (i * 4)); | ||
152 | writel(value | VICVectCntl_Enable | i, VA_VIC_BASE + VIC_VECT_CNTL0 + (i * 4)); | ||
153 | } | ||
154 | |||
155 | writel(32, VA_VIC_BASE + VIC_DEF_VECT_ADDR); | ||
156 | |||
157 | for (i = IRQ_VIC_START; i <= IRQ_VIC_END; i++) { | ||
158 | if (i != IRQ_VICSOURCE31) { | ||
159 | set_irq_chip(i, &vic_chip); | ||
160 | set_irq_handler(i, do_level_IRQ); | ||
161 | set_irq_flags(i, IRQF_VALID | IRQF_PROBE); | ||
162 | } | ||
163 | } | ||
164 | 116 | ||
165 | set_irq_handler(IRQ_VICSOURCE31, sic_handle_irq); | 117 | set_irq_handler(IRQ_VICSOURCE31, sic_handle_irq); |
166 | vic_unmask_irq(IRQ_VICSOURCE31); | 118 | enable_irq(IRQ_VICSOURCE31); |
167 | 119 | ||
168 | /* Do second interrupt controller */ | 120 | /* Do second interrupt controller */ |
169 | writel(~0, VA_SIC_BASE + SIC_IRQ_ENABLE_CLEAR); | 121 | writel(~0, VA_SIC_BASE + SIC_IRQ_ENABLE_CLEAR); |
@@ -877,7 +829,7 @@ static unsigned long versatile_gettimeoffset(void) | |||
877 | ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; | 829 | ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; |
878 | do { | 830 | do { |
879 | ticks1 = ticks2; | 831 | ticks1 = ticks2; |
880 | status = __raw_readl(VA_IC_BASE + VIC_IRQ_RAW_STATUS); | 832 | status = __raw_readl(VA_IC_BASE + VIC_RAW_STATUS); |
881 | ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; | 833 | ticks2 = readl(TIMER0_VA_BASE + TIMER_VALUE) & 0xffff; |
882 | } while (ticks2 > ticks1); | 834 | } while (ticks2 > ticks1); |
883 | 835 | ||
diff --git a/arch/arm/mach-versatile/core.h b/arch/arm/mach-versatile/core.h index 588c20669d5d..afcaa858eb1f 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 8b0b3bef24ae..1eb596782078 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 | ||
@@ -36,7 +36,6 @@ | |||
36 | 36 | ||
37 | MACHINE_START(VERSATILE_AB, "ARM-Versatile AB") | 37 | MACHINE_START(VERSATILE_AB, "ARM-Versatile AB") |
38 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 38 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
39 | .phys_ram = 0x00000000, | ||
40 | .phys_io = 0x101f1000, | 39 | .phys_io = 0x101f1000, |
41 | .io_pg_offst = ((0xf11f1000) >> 18) & 0xfffc, | 40 | .io_pg_offst = ((0xf11f1000) >> 18) & 0xfffc, |
42 | .boot_params = 0x00000100, | 41 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mach-versatile/versatile_pb.c b/arch/arm/mach-versatile/versatile_pb.c index 7c3078c38916..f17ab4fb548a 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> |
@@ -100,7 +100,6 @@ arch_initcall(versatile_pb_init); | |||
100 | 100 | ||
101 | MACHINE_START(VERSATILE_PB, "ARM-Versatile PB") | 101 | MACHINE_START(VERSATILE_PB, "ARM-Versatile PB") |
102 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ | 102 | /* Maintainer: ARM Ltd/Deep Blue Solutions Ltd */ |
103 | .phys_ram = 0x00000000, | ||
104 | .phys_io = 0x101f1000, | 103 | .phys_io = 0x101f1000, |
105 | .io_pg_offst = ((0xf11f1000) >> 18) & 0xfffc, | 104 | .io_pg_offst = ((0xf11f1000) >> 18) & 0xfffc, |
106 | .boot_params = 0x00000100, | 105 | .boot_params = 0x00000100, |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index e84fdde6edf8..3b79d0e23455 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 dbfe9e891f01..c2ee18d2075e 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 0d097bb1bc4d..1e5602189507 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 10901398e4a2..de3ce1eec2ec 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 9e50127be635..d0245a31d4dd 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/nwfpe/fpa11.h b/arch/arm/nwfpe/fpa11.h index da4c616b6c49..28cd79a451d3 100644 --- a/arch/arm/nwfpe/fpa11.h +++ b/arch/arm/nwfpe/fpa11.h | |||
@@ -62,7 +62,7 @@ typedef union tagFPREG { | |||
62 | #else | 62 | #else |
63 | u32 padding[3]; | 63 | u32 padding[3]; |
64 | #endif | 64 | #endif |
65 | } FPREG; | 65 | } __attribute__ ((packed,aligned(4))) FPREG; |
66 | 66 | ||
67 | /* | 67 | /* |
68 | * FPA11 device model. | 68 | * FPA11 device model. |
@@ -89,7 +89,7 @@ typedef struct tagFPA11 { | |||
89 | so we can use it to detect whether this | 89 | so we can use it to detect whether this |
90 | instance of the emulator needs to be | 90 | instance of the emulator needs to be |
91 | initialised. */ | 91 | initialised. */ |
92 | } FPA11; | 92 | } __attribute__ ((packed,aligned(4))) FPA11; |
93 | 93 | ||
94 | extern int8 SetRoundingMode(const unsigned int); | 94 | extern int8 SetRoundingMode(const unsigned int); |
95 | extern int8 SetRoundingPrecision(const unsigned int); | 95 | extern int8 SetRoundingPrecision(const unsigned int); |
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig index 9693e9b4ffd1..0887bb2a2551 100644 --- a/arch/arm/plat-omap/Kconfig +++ b/arch/arm/plat-omap/Kconfig | |||
@@ -22,7 +22,6 @@ comment "OMAP Feature Selections" | |||
22 | config OMAP_RESET_CLOCKS | 22 | config OMAP_RESET_CLOCKS |
23 | bool "Reset unused clocks during boot" | 23 | bool "Reset unused clocks during boot" |
24 | depends on ARCH_OMAP | 24 | depends on ARCH_OMAP |
25 | default n | ||
26 | help | 25 | help |
27 | Say Y if you want to reset unused clocks during boot. | 26 | Say Y if you want to reset unused clocks during boot. |
28 | This option saves power, but assumes all drivers are | 27 | This option saves power, but assumes all drivers are |
@@ -44,7 +43,6 @@ config OMAP_MUX | |||
44 | config OMAP_MUX_DEBUG | 43 | config OMAP_MUX_DEBUG |
45 | bool "Multiplexing debug output" | 44 | bool "Multiplexing debug output" |
46 | depends on OMAP_MUX | 45 | depends on OMAP_MUX |
47 | default n | ||
48 | help | 46 | help |
49 | Makes the multiplexing functions print out a lot of debug info. | 47 | Makes the multiplexing functions print out a lot of debug info. |
50 | This is useful if you want to find out the correct values of the | 48 | This is useful if you want to find out the correct values of the |
@@ -93,7 +91,6 @@ config OMAP_32K_TIMER_HZ | |||
93 | 91 | ||
94 | config OMAP_DM_TIMER | 92 | config OMAP_DM_TIMER |
95 | bool "Use dual-mode timer" | 93 | bool "Use dual-mode timer" |
96 | default n | ||
97 | depends on ARCH_OMAP16XX | 94 | depends on ARCH_OMAP16XX |
98 | help | 95 | help |
99 | Select this option if you want to use OMAP Dual-Mode timers. | 96 | Select this option if you want to use OMAP Dual-Mode timers. |
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 7ce39b986e23..3c2bfc0efdaf 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c | |||
@@ -19,35 +19,36 @@ | |||
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; |
34 | 35 | ||
35 | /*------------------------------------------------------------------------- | 36 | /*------------------------------------------------------------------------- |
36 | * Standard clock functions defined in asm/hardware/clock.h | 37 | * Standard clock functions defined in include/linux/clk.h |
37 | *-------------------------------------------------------------------------*/ | 38 | *-------------------------------------------------------------------------*/ |
38 | 39 | ||
39 | struct clk * clk_get(struct device *dev, const char *id) | 40 | 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 | } |
@@ -59,12 +60,8 @@ int clk_enable(struct clk *clk) | |||
59 | int ret = 0; | 60 | int ret = 0; |
60 | 61 | ||
61 | spin_lock_irqsave(&clockfw_lock, flags); | 62 | spin_lock_irqsave(&clockfw_lock, flags); |
62 | if (clk->enable) | 63 | if (arch_clock->clk_enable) |
63 | ret = clk->enable(clk); | ||
64 | else if (arch_clock->clk_enable) | ||
65 | ret = arch_clock->clk_enable(clk); | 64 | ret = arch_clock->clk_enable(clk); |
66 | else | ||
67 | printk(KERN_ERR "Could not enable clock %s\n", clk->name); | ||
68 | spin_unlock_irqrestore(&clockfw_lock, flags); | 65 | spin_unlock_irqrestore(&clockfw_lock, flags); |
69 | 66 | ||
70 | return ret; | 67 | return ret; |
@@ -76,41 +73,12 @@ void clk_disable(struct clk *clk) | |||
76 | unsigned long flags; | 73 | unsigned long flags; |
77 | 74 | ||
78 | spin_lock_irqsave(&clockfw_lock, flags); | 75 | spin_lock_irqsave(&clockfw_lock, flags); |
79 | if (clk->disable) | 76 | if (arch_clock->clk_disable) |
80 | clk->disable(clk); | ||
81 | else if (arch_clock->clk_disable) | ||
82 | arch_clock->clk_disable(clk); | 77 | arch_clock->clk_disable(clk); |
83 | else | ||
84 | printk(KERN_ERR "Could not disable clock %s\n", clk->name); | ||
85 | spin_unlock_irqrestore(&clockfw_lock, flags); | 78 | spin_unlock_irqrestore(&clockfw_lock, flags); |
86 | } | 79 | } |
87 | EXPORT_SYMBOL(clk_disable); | 80 | EXPORT_SYMBOL(clk_disable); |
88 | 81 | ||
89 | int clk_use(struct clk *clk) | ||
90 | { | ||
91 | unsigned long flags; | ||
92 | int ret = 0; | ||
93 | |||
94 | spin_lock_irqsave(&clockfw_lock, flags); | ||
95 | if (arch_clock->clk_use) | ||
96 | ret = arch_clock->clk_use(clk); | ||
97 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
98 | |||
99 | return ret; | ||
100 | } | ||
101 | EXPORT_SYMBOL(clk_use); | ||
102 | |||
103 | void clk_unuse(struct clk *clk) | ||
104 | { | ||
105 | unsigned long flags; | ||
106 | |||
107 | spin_lock_irqsave(&clockfw_lock, flags); | ||
108 | if (arch_clock->clk_unuse) | ||
109 | arch_clock->clk_unuse(clk); | ||
110 | spin_unlock_irqrestore(&clockfw_lock, flags); | ||
111 | } | ||
112 | EXPORT_SYMBOL(clk_unuse); | ||
113 | |||
114 | int clk_get_usecount(struct clk *clk) | 82 | int clk_get_usecount(struct clk *clk) |
115 | { | 83 | { |
116 | unsigned long flags; | 84 | unsigned long flags; |
@@ -145,7 +113,7 @@ void clk_put(struct clk *clk) | |||
145 | EXPORT_SYMBOL(clk_put); | 113 | EXPORT_SYMBOL(clk_put); |
146 | 114 | ||
147 | /*------------------------------------------------------------------------- | 115 | /*------------------------------------------------------------------------- |
148 | * Optional clock functions defined in asm/hardware/clock.h | 116 | * Optional clock functions defined in include/linux/clk.h |
149 | *-------------------------------------------------------------------------*/ | 117 | *-------------------------------------------------------------------------*/ |
150 | 118 | ||
151 | long clk_round_rate(struct clk *clk, unsigned long rate) | 119 | long clk_round_rate(struct clk *clk, unsigned long rate) |
@@ -249,11 +217,11 @@ void propagate_rate(struct clk * tclk) | |||
249 | 217 | ||
250 | int clk_register(struct clk *clk) | 218 | int clk_register(struct clk *clk) |
251 | { | 219 | { |
252 | down(&clocks_sem); | 220 | mutex_lock(&clocks_mutex); |
253 | list_add(&clk->node, &clocks); | 221 | list_add(&clk->node, &clocks); |
254 | if (clk->init) | 222 | if (clk->init) |
255 | clk->init(clk); | 223 | clk->init(clk); |
256 | up(&clocks_sem); | 224 | mutex_unlock(&clocks_mutex); |
257 | 225 | ||
258 | return 0; | 226 | return 0; |
259 | } | 227 | } |
@@ -261,9 +229,9 @@ EXPORT_SYMBOL(clk_register); | |||
261 | 229 | ||
262 | void clk_unregister(struct clk *clk) | 230 | void clk_unregister(struct clk *clk) |
263 | { | 231 | { |
264 | down(&clocks_sem); | 232 | mutex_lock(&clocks_mutex); |
265 | list_del(&clk->node); | 233 | list_del(&clk->node); |
266 | up(&clocks_sem); | 234 | mutex_unlock(&clocks_mutex); |
267 | } | 235 | } |
268 | EXPORT_SYMBOL(clk_unregister); | 236 | EXPORT_SYMBOL(clk_unregister); |
269 | 237 | ||
diff --git a/arch/arm/plat-omap/common.c b/arch/arm/plat-omap/common.c index ccdb452630cf..adffc5a859ee 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 fd894bb00107..98edc9fdd6d1 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 f5cc21ad0956..a4e5ac77f6df 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 76f721d85137..b4d5b9e4bfce 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> |
@@ -853,19 +853,19 @@ static int __init _omap_gpio_init(void) | |||
853 | if (IS_ERR(gpio_ick)) | 853 | if (IS_ERR(gpio_ick)) |
854 | printk("Could not get arm_gpio_ck\n"); | 854 | printk("Could not get arm_gpio_ck\n"); |
855 | else | 855 | else |
856 | clk_use(gpio_ick); | 856 | clk_enable(gpio_ick); |
857 | } | 857 | } |
858 | if (cpu_is_omap24xx()) { | 858 | if (cpu_is_omap24xx()) { |
859 | gpio_ick = clk_get(NULL, "gpios_ick"); | 859 | gpio_ick = clk_get(NULL, "gpios_ick"); |
860 | if (IS_ERR(gpio_ick)) | 860 | if (IS_ERR(gpio_ick)) |
861 | printk("Could not get gpios_ick\n"); | 861 | printk("Could not get gpios_ick\n"); |
862 | else | 862 | else |
863 | clk_use(gpio_ick); | 863 | clk_enable(gpio_ick); |
864 | gpio_fck = clk_get(NULL, "gpios_fck"); | 864 | gpio_fck = clk_get(NULL, "gpios_fck"); |
865 | if (IS_ERR(gpio_ick)) | 865 | if (IS_ERR(gpio_ick)) |
866 | printk("Could not get gpios_fck\n"); | 866 | printk("Could not get gpios_fck\n"); |
867 | else | 867 | else |
868 | clk_use(gpio_fck); | 868 | clk_enable(gpio_fck); |
869 | } | 869 | } |
870 | 870 | ||
871 | #ifdef CONFIG_ARCH_OMAP15XX | 871 | #ifdef CONFIG_ARCH_OMAP15XX |
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c index ea9475c86656..1cd2cace7e1b 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 |
@@ -191,11 +190,11 @@ static int omap_mcbsp_check(unsigned int id) | |||
191 | static void omap_mcbsp_dsp_request(void) | 190 | static void omap_mcbsp_dsp_request(void) |
192 | { | 191 | { |
193 | if (cpu_is_omap1510() || cpu_is_omap16xx()) { | 192 | if (cpu_is_omap1510() || cpu_is_omap16xx()) { |
194 | clk_use(mcbsp_dsp_ck); | 193 | clk_enable(mcbsp_dsp_ck); |
195 | clk_use(mcbsp_api_ck); | 194 | clk_enable(mcbsp_api_ck); |
196 | 195 | ||
197 | /* enable 12MHz clock to mcbsp 1 & 3 */ | 196 | /* enable 12MHz clock to mcbsp 1 & 3 */ |
198 | clk_use(mcbsp_dspxor_ck); | 197 | clk_enable(mcbsp_dspxor_ck); |
199 | 198 | ||
200 | /* | 199 | /* |
201 | * DSP external peripheral reset | 200 | * DSP external peripheral reset |
@@ -209,9 +208,9 @@ static void omap_mcbsp_dsp_request(void) | |||
209 | static void omap_mcbsp_dsp_free(void) | 208 | static void omap_mcbsp_dsp_free(void) |
210 | { | 209 | { |
211 | if (cpu_is_omap1510() || cpu_is_omap16xx()) { | 210 | if (cpu_is_omap1510() || cpu_is_omap16xx()) { |
212 | clk_unuse(mcbsp_dspxor_ck); | 211 | clk_disable(mcbsp_dspxor_ck); |
213 | clk_unuse(mcbsp_dsp_ck); | 212 | clk_disable(mcbsp_dsp_ck); |
214 | clk_unuse(mcbsp_api_ck); | 213 | clk_disable(mcbsp_api_ck); |
215 | } | 214 | } |
216 | } | 215 | } |
217 | 216 | ||
diff --git a/arch/arm/plat-omap/ocpi.c b/arch/arm/plat-omap/ocpi.c index b86148227480..5cc6775c789c 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 |
@@ -88,7 +88,7 @@ static int __init omap_ocpi_init(void) | |||
88 | if (IS_ERR(ocpi_ck)) | 88 | if (IS_ERR(ocpi_ck)) |
89 | return PTR_ERR(ocpi_ck); | 89 | return PTR_ERR(ocpi_ck); |
90 | 90 | ||
91 | clk_use(ocpi_ck); | 91 | clk_enable(ocpi_ck); |
92 | ocpi_enable(); | 92 | ocpi_enable(); |
93 | printk("OMAP OCPI interconnect driver loaded\n"); | 93 | printk("OMAP OCPI interconnect driver loaded\n"); |
94 | 94 | ||
@@ -102,7 +102,7 @@ static void __exit omap_ocpi_exit(void) | |||
102 | if (!cpu_is_omap16xx()) | 102 | if (!cpu_is_omap16xx()) |
103 | return; | 103 | return; |
104 | 104 | ||
105 | clk_unuse(ocpi_ck); | 105 | clk_disable(ocpi_ck); |
106 | clk_put(ocpi_ck); | 106 | clk_put(ocpi_ck); |
107 | } | 107 | } |
108 | 108 | ||
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 465487470d0e..d0f9bb5e9023 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 | ||