diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/Kconfig | 9 | ||||
-rw-r--r-- | arch/arm/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/kernel/atags.c | 83 | ||||
-rw-r--r-- | arch/arm/mach-footbridge/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/mach-footbridge/co285.c | 39 | ||||
-rw-r--r-- | arch/arm/mach-footbridge/common.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-footbridge/ebsa285-leds.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-footbridge/time.c | 3 |
8 files changed, 43 insertions, 118 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index b786e68914d4..9773a3f730f3 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -232,13 +232,6 @@ config ARCH_CLPS711X | |||
232 | help | 232 | help |
233 | Support for Cirrus Logic 711x/721x based boards. | 233 | Support for Cirrus Logic 711x/721x based boards. |
234 | 234 | ||
235 | config ARCH_CO285 | ||
236 | bool "Co-EBSA285" | ||
237 | select FOOTBRIDGE | ||
238 | select FOOTBRIDGE_ADDIN | ||
239 | help | ||
240 | Support for Intel's EBSA285 companion chip. | ||
241 | |||
242 | config ARCH_EBSA110 | 235 | config ARCH_EBSA110 |
243 | bool "EBSA-110" | 236 | bool "EBSA-110" |
244 | select ISA | 237 | select ISA |
@@ -789,7 +782,7 @@ source "mm/Kconfig" | |||
789 | 782 | ||
790 | config LEDS | 783 | config LEDS |
791 | bool "Timer and CPU usage LEDs" | 784 | bool "Timer and CPU usage LEDs" |
792 | depends on ARCH_CDB89712 || ARCH_CO285 || ARCH_EBSA110 || \ | 785 | depends on ARCH_CDB89712 || ARCH_EBSA110 || \ |
793 | ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \ | 786 | ARCH_EBSA285 || ARCH_IMX || ARCH_INTEGRATOR || \ |
794 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ | 787 | ARCH_LUBBOCK || MACH_MAINSTONE || ARCH_NETWINDER || \ |
795 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ | 788 | ARCH_OMAP || ARCH_P720T || ARCH_PXA_IDP || \ |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index e72db27e0ba0..1c840639f828 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -100,8 +100,6 @@ textofs-y := 0x00008000 | |||
100 | incdir-$(CONFIG_ARCH_CLPS7500) := cl7500 | 100 | incdir-$(CONFIG_ARCH_CLPS7500) := cl7500 |
101 | machine-$(CONFIG_FOOTBRIDGE) := footbridge | 101 | machine-$(CONFIG_FOOTBRIDGE) := footbridge |
102 | incdir-$(CONFIG_FOOTBRIDGE) := ebsa285 | 102 | incdir-$(CONFIG_FOOTBRIDGE) := ebsa285 |
103 | machine-$(CONFIG_ARCH_CO285) := footbridge | ||
104 | incdir-$(CONFIG_ARCH_CO285) := ebsa285 | ||
105 | machine-$(CONFIG_ARCH_SHARK) := shark | 103 | machine-$(CONFIG_ARCH_SHARK) := shark |
106 | machine-$(CONFIG_ARCH_SA1100) := sa1100 | 104 | machine-$(CONFIG_ARCH_SA1100) := sa1100 |
107 | ifeq ($(CONFIG_ARCH_SA1100),y) | 105 | ifeq ($(CONFIG_ARCH_SA1100),y) |
diff --git a/arch/arm/kernel/atags.c b/arch/arm/kernel/atags.c index 64c420805e6f..42a1a1415fa6 100644 --- a/arch/arm/kernel/atags.c +++ b/arch/arm/kernel/atags.c | |||
@@ -1,5 +1,4 @@ | |||
1 | #include <linux/slab.h> | 1 | #include <linux/slab.h> |
2 | #include <linux/kexec.h> | ||
3 | #include <linux/proc_fs.h> | 2 | #include <linux/proc_fs.h> |
4 | #include <asm/setup.h> | 3 | #include <asm/setup.h> |
5 | #include <asm/types.h> | 4 | #include <asm/types.h> |
@@ -7,9 +6,8 @@ | |||
7 | 6 | ||
8 | struct buffer { | 7 | struct buffer { |
9 | size_t size; | 8 | size_t size; |
10 | char *data; | 9 | char data[]; |
11 | }; | 10 | }; |
12 | static struct buffer tags_buffer; | ||
13 | 11 | ||
14 | static int | 12 | static int |
15 | read_buffer(char* page, char** start, off_t off, int count, | 13 | read_buffer(char* page, char** start, off_t off, int count, |
@@ -29,58 +27,57 @@ read_buffer(char* page, char** start, off_t off, int count, | |||
29 | return count; | 27 | return count; |
30 | } | 28 | } |
31 | 29 | ||
32 | 30 | #define BOOT_PARAMS_SIZE 1536 | |
33 | static int | 31 | static char __initdata atags_copy[BOOT_PARAMS_SIZE]; |
34 | create_proc_entries(void) | ||
35 | { | ||
36 | struct proc_dir_entry* tags_entry; | ||
37 | |||
38 | tags_entry = create_proc_read_entry("atags", 0400, NULL, read_buffer, &tags_buffer); | ||
39 | if (!tags_entry) | ||
40 | return -ENOMEM; | ||
41 | |||
42 | return 0; | ||
43 | } | ||
44 | |||
45 | |||
46 | static char __initdata atags_copy_buf[KEXEC_BOOT_PARAMS_SIZE]; | ||
47 | static char __initdata *atags_copy; | ||
48 | 32 | ||
49 | void __init save_atags(const struct tag *tags) | 33 | void __init save_atags(const struct tag *tags) |
50 | { | 34 | { |
51 | atags_copy = atags_copy_buf; | 35 | memcpy(atags_copy, tags, sizeof(atags_copy)); |
52 | memcpy(atags_copy, tags, KEXEC_BOOT_PARAMS_SIZE); | ||
53 | } | 36 | } |
54 | 37 | ||
55 | |||
56 | static int __init init_atags_procfs(void) | 38 | static int __init init_atags_procfs(void) |
57 | { | 39 | { |
58 | struct tag *tag; | 40 | /* |
59 | int error; | 41 | * This cannot go into save_atags() because kmalloc and proc don't work |
42 | * yet when it is called. | ||
43 | */ | ||
44 | struct proc_dir_entry *tags_entry; | ||
45 | struct tag *tag = (struct tag *)atags_copy; | ||
46 | struct buffer *b; | ||
47 | size_t size; | ||
60 | 48 | ||
61 | if (!atags_copy) { | 49 | if (tag->hdr.tag != ATAG_CORE) { |
62 | printk(KERN_WARNING "Exporting ATAGs: No saved tags found\n"); | 50 | printk(KERN_INFO "No ATAGs?"); |
63 | return -EIO; | 51 | return -EINVAL; |
64 | } | 52 | } |
65 | 53 | ||
66 | for (tag = (struct tag *) atags_copy; tag->hdr.size; tag = tag_next(tag)) | 54 | for (; tag->hdr.size; tag = tag_next(tag)) |
67 | ; | 55 | ; |
68 | 56 | ||
69 | tags_buffer.size = ((char *) tag - atags_copy) + sizeof(tag->hdr); | 57 | /* include the terminating ATAG_NONE */ |
70 | tags_buffer.data = kmalloc(tags_buffer.size, GFP_KERNEL); | 58 | size = (char *)tag - atags_copy + sizeof(struct tag_header); |
71 | if (tags_buffer.data == NULL) | ||
72 | return -ENOMEM; | ||
73 | memcpy(tags_buffer.data, atags_copy, tags_buffer.size); | ||
74 | |||
75 | error = create_proc_entries(); | ||
76 | if (error) { | ||
77 | printk(KERN_ERR "Exporting ATAGs: not enough memory\n"); | ||
78 | kfree(tags_buffer.data); | ||
79 | tags_buffer.size = 0; | ||
80 | tags_buffer.data = NULL; | ||
81 | } | ||
82 | 59 | ||
83 | return error; | 60 | WARN_ON(tag->hdr.tag != ATAG_NONE); |
84 | } | 61 | |
62 | b = kmalloc(sizeof(*b) + size, GFP_KERNEL); | ||
63 | if (!b) | ||
64 | goto nomem; | ||
85 | 65 | ||
66 | b->size = size; | ||
67 | memcpy(b->data, atags_copy, size); | ||
68 | |||
69 | tags_entry = create_proc_read_entry("atags", 0400, | ||
70 | NULL, read_buffer, b); | ||
71 | |||
72 | if (!tags_entry) | ||
73 | goto nomem; | ||
74 | |||
75 | return 0; | ||
76 | |||
77 | nomem: | ||
78 | kfree(b); | ||
79 | printk(KERN_ERR "Exporting ATAGs: not enough memory\n"); | ||
80 | |||
81 | return -ENOMEM; | ||
82 | } | ||
86 | arch_initcall(init_atags_procfs); | 83 | arch_initcall(init_atags_procfs); |
diff --git a/arch/arm/mach-footbridge/Makefile b/arch/arm/mach-footbridge/Makefile index 0694ad6b6476..32f8609e4f85 100644 --- a/arch/arm/mach-footbridge/Makefile +++ b/arch/arm/mach-footbridge/Makefile | |||
@@ -14,12 +14,10 @@ pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o | |||
14 | pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o | 14 | pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o |
15 | pci-$(CONFIG_ARCH_PERSONAL_SERVER) += personal-pci.o | 15 | pci-$(CONFIG_ARCH_PERSONAL_SERVER) += personal-pci.o |
16 | 16 | ||
17 | leds-$(CONFIG_ARCH_CO285) += ebsa285-leds.o | ||
18 | leds-$(CONFIG_ARCH_EBSA285) += ebsa285-leds.o | 17 | leds-$(CONFIG_ARCH_EBSA285) += ebsa285-leds.o |
19 | leds-$(CONFIG_ARCH_NETWINDER) += netwinder-leds.o | 18 | leds-$(CONFIG_ARCH_NETWINDER) += netwinder-leds.o |
20 | 19 | ||
21 | obj-$(CONFIG_ARCH_CATS) += cats-hw.o isa-timer.o | 20 | obj-$(CONFIG_ARCH_CATS) += cats-hw.o isa-timer.o |
22 | obj-$(CONFIG_ARCH_CO285) += co285.o dc21285-timer.o | ||
23 | obj-$(CONFIG_ARCH_EBSA285) += ebsa285.o dc21285-timer.o | 21 | obj-$(CONFIG_ARCH_EBSA285) += ebsa285.o dc21285-timer.o |
24 | obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o | 22 | obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o |
25 | obj-$(CONFIG_ARCH_PERSONAL_SERVER) += personal.o dc21285-timer.o | 23 | obj-$(CONFIG_ARCH_PERSONAL_SERVER) += personal.o dc21285-timer.o |
diff --git a/arch/arm/mach-footbridge/co285.c b/arch/arm/mach-footbridge/co285.c deleted file mode 100644 index 4545576ad8d9..000000000000 --- a/arch/arm/mach-footbridge/co285.c +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/arm/mach-footbridge/co285.c | ||
3 | * | ||
4 | * CO285 machine fixup | ||
5 | */ | ||
6 | #include <linux/init.h> | ||
7 | |||
8 | #include <asm/hardware/dec21285.h> | ||
9 | #include <asm/mach-types.h> | ||
10 | |||
11 | #include <asm/mach/arch.h> | ||
12 | |||
13 | #include "common.h" | ||
14 | |||
15 | static void __init | ||
16 | fixup_coebsa285(struct machine_desc *desc, struct tag *tags, | ||
17 | char **cmdline, struct meminfo *mi) | ||
18 | { | ||
19 | extern unsigned long boot_memory_end; | ||
20 | extern char boot_command_line[]; | ||
21 | |||
22 | mi->nr_banks = 1; | ||
23 | mi->bank[0].start = PHYS_OFFSET; | ||
24 | mi->bank[0].size = boot_memory_end; | ||
25 | mi->bank[0].node = 0; | ||
26 | |||
27 | *cmdline = boot_command_line; | ||
28 | } | ||
29 | |||
30 | MACHINE_START(CO285, "co-EBSA285") | ||
31 | /* Maintainer: Mark van Doesburg */ | ||
32 | .phys_io = DC21285_ARMCSR_BASE, | ||
33 | .io_pg_offst = ((0x7cf00000) >> 18) & 0xfffc, | ||
34 | .fixup = fixup_coebsa285, | ||
35 | .map_io = footbridge_map_io, | ||
36 | .init_irq = footbridge_init_irq, | ||
37 | .timer = &footbridge_timer, | ||
38 | MACHINE_END | ||
39 | |||
diff --git a/arch/arm/mach-footbridge/common.c b/arch/arm/mach-footbridge/common.c index ef29fc34ce65..b08ab507c052 100644 --- a/arch/arm/mach-footbridge/common.c +++ b/arch/arm/mach-footbridge/common.c | |||
@@ -177,25 +177,6 @@ static struct map_desc ebsa285_host_io_desc[] __initdata = { | |||
177 | #endif | 177 | #endif |
178 | }; | 178 | }; |
179 | 179 | ||
180 | /* | ||
181 | * The CO-ebsa285 mapping. | ||
182 | */ | ||
183 | static struct map_desc co285_io_desc[] __initdata = { | ||
184 | #ifdef CONFIG_ARCH_CO285 | ||
185 | { | ||
186 | .virtual = PCIO_BASE, | ||
187 | .pfn = __phys_to_pfn(DC21285_PCI_IO), | ||
188 | .length = PCIO_SIZE, | ||
189 | .type = MT_DEVICE, | ||
190 | }, { | ||
191 | .virtual = PCIMEM_BASE, | ||
192 | .pfn = __phys_to_pfn(DC21285_PCI_MEM), | ||
193 | .length = PCIMEM_SIZE, | ||
194 | .type = MT_DEVICE, | ||
195 | }, | ||
196 | #endif | ||
197 | }; | ||
198 | |||
199 | void __init footbridge_map_io(void) | 180 | void __init footbridge_map_io(void) |
200 | { | 181 | { |
201 | /* | 182 | /* |
@@ -208,8 +189,6 @@ void __init footbridge_map_io(void) | |||
208 | * Now, work out what we've got to map in addition on this | 189 | * Now, work out what we've got to map in addition on this |
209 | * platform. | 190 | * platform. |
210 | */ | 191 | */ |
211 | if (machine_is_co285()) | ||
212 | iotable_init(co285_io_desc, ARRAY_SIZE(co285_io_desc)); | ||
213 | if (footbridge_cfn_mode()) | 192 | if (footbridge_cfn_mode()) |
214 | iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc)); | 193 | iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc)); |
215 | } | 194 | } |
diff --git a/arch/arm/mach-footbridge/ebsa285-leds.c b/arch/arm/mach-footbridge/ebsa285-leds.c index a64e22226515..09c1fbc51876 100644 --- a/arch/arm/mach-footbridge/ebsa285-leds.c +++ b/arch/arm/mach-footbridge/ebsa285-leds.c | |||
@@ -128,7 +128,7 @@ static void ebsa285_leds_event(led_event_t evt) | |||
128 | 128 | ||
129 | static int __init leds_init(void) | 129 | static int __init leds_init(void) |
130 | { | 130 | { |
131 | if (machine_is_ebsa285() || machine_is_co285()) | 131 | if (machine_is_ebsa285()) |
132 | leds_event = ebsa285_leds_event; | 132 | leds_event = ebsa285_leds_event; |
133 | 133 | ||
134 | leds_event(led_start); | 134 | leds_event(led_start); |
diff --git a/arch/arm/mach-footbridge/time.c b/arch/arm/mach-footbridge/time.c index 5d02e95dede3..d5cfcda385d6 100644 --- a/arch/arm/mach-footbridge/time.c +++ b/arch/arm/mach-footbridge/time.c | |||
@@ -115,8 +115,7 @@ static int set_isa_cmos_time(void) | |||
115 | 115 | ||
116 | void __init isa_rtc_init(void) | 116 | void __init isa_rtc_init(void) |
117 | { | 117 | { |
118 | if (machine_is_co285() || | 118 | if (machine_is_personal_server()) |
119 | machine_is_personal_server()) | ||
120 | /* | 119 | /* |
121 | * Add-in 21285s shouldn't access the RTC | 120 | * Add-in 21285s shouldn't access the RTC |
122 | */ | 121 | */ |