diff options
Diffstat (limited to 'arch/arm/mach-highbank')
-rw-r--r-- | arch/arm/mach-highbank/Kconfig | 15 | ||||
-rw-r--r-- | arch/arm/mach-highbank/Makefile.boot | 1 | ||||
-rw-r--r-- | arch/arm/mach-highbank/core.h | 9 | ||||
-rw-r--r-- | arch/arm/mach-highbank/highbank.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-highbank/hotplug.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-highbank/include/mach/debug-macro.S | 19 | ||||
-rw-r--r-- | arch/arm/mach-highbank/include/mach/gpio.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-highbank/include/mach/timex.h | 6 | ||||
-rw-r--r-- | arch/arm/mach-highbank/include/mach/uncompress.h | 9 | ||||
-rw-r--r-- | arch/arm/mach-highbank/platsmp.c | 18 | ||||
-rw-r--r-- | arch/arm/mach-highbank/pm.c | 4 |
11 files changed, 42 insertions, 58 deletions
diff --git a/arch/arm/mach-highbank/Kconfig b/arch/arm/mach-highbank/Kconfig new file mode 100644 index 000000000000..0e1d0a42a3ea --- /dev/null +++ b/arch/arm/mach-highbank/Kconfig | |||
@@ -0,0 +1,15 @@ | |||
1 | config ARCH_HIGHBANK | ||
2 | bool "Calxeda ECX-1000 (Highbank)" if ARCH_MULTI_V7 | ||
3 | select ARCH_WANT_OPTIONAL_GPIOLIB | ||
4 | select ARM_AMBA | ||
5 | select ARM_GIC | ||
6 | select ARM_TIMER_SP804 | ||
7 | select CACHE_L2X0 | ||
8 | select CLKDEV_LOOKUP | ||
9 | select COMMON_CLK | ||
10 | select CPU_V7 | ||
11 | select GENERIC_CLOCKEVENTS | ||
12 | select HAVE_ARM_SCU | ||
13 | select HAVE_SMP | ||
14 | select SPARSE_IRQ | ||
15 | select USE_OF | ||
diff --git a/arch/arm/mach-highbank/Makefile.boot b/arch/arm/mach-highbank/Makefile.boot deleted file mode 100644 index dae9661a7689..000000000000 --- a/arch/arm/mach-highbank/Makefile.boot +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | zreladdr-y := 0x00008000 | ||
diff --git a/arch/arm/mach-highbank/core.h b/arch/arm/mach-highbank/core.h index 141ed5171826..286ec82a4f63 100644 --- a/arch/arm/mach-highbank/core.h +++ b/arch/arm/mach-highbank/core.h | |||
@@ -8,4 +8,13 @@ extern void highbank_lluart_map_io(void); | |||
8 | static inline void highbank_lluart_map_io(void) {} | 8 | static inline void highbank_lluart_map_io(void) {} |
9 | #endif | 9 | #endif |
10 | 10 | ||
11 | #ifdef CONFIG_PM_SLEEP | ||
12 | extern void highbank_pm_init(void); | ||
13 | #else | ||
14 | static inline void highbank_pm_init(void) {} | ||
15 | #endif | ||
16 | |||
11 | extern void highbank_smc1(int fn, int arg); | 17 | extern void highbank_smc1(int fn, int arg); |
18 | extern void highbank_cpu_die(unsigned int cpu); | ||
19 | |||
20 | extern struct smp_operations highbank_smp_ops; | ||
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index d75b0a78d88a..af1da34ccf9d 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c | |||
@@ -152,6 +152,7 @@ static void highbank_power_off(void) | |||
152 | static void __init highbank_init(void) | 152 | static void __init highbank_init(void) |
153 | { | 153 | { |
154 | pm_power_off = highbank_power_off; | 154 | pm_power_off = highbank_power_off; |
155 | highbank_pm_init(); | ||
155 | 156 | ||
156 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); | 157 | of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); |
157 | } | 158 | } |
@@ -162,6 +163,7 @@ static const char *highbank_match[] __initconst = { | |||
162 | }; | 163 | }; |
163 | 164 | ||
164 | DT_MACHINE_START(HIGHBANK, "Highbank") | 165 | DT_MACHINE_START(HIGHBANK, "Highbank") |
166 | .smp = smp_ops(highbank_smp_ops), | ||
165 | .map_io = highbank_map_io, | 167 | .map_io = highbank_map_io, |
166 | .init_irq = highbank_init_irq, | 168 | .init_irq = highbank_init_irq, |
167 | .timer = &highbank_timer, | 169 | .timer = &highbank_timer, |
diff --git a/arch/arm/mach-highbank/hotplug.c b/arch/arm/mach-highbank/hotplug.c index 977cebbea580..2c1b8c3c8e45 100644 --- a/arch/arm/mach-highbank/hotplug.c +++ b/arch/arm/mach-highbank/hotplug.c | |||
@@ -24,16 +24,11 @@ | |||
24 | 24 | ||
25 | extern void secondary_startup(void); | 25 | extern void secondary_startup(void); |
26 | 26 | ||
27 | int platform_cpu_kill(unsigned int cpu) | ||
28 | { | ||
29 | return 1; | ||
30 | } | ||
31 | |||
32 | /* | 27 | /* |
33 | * platform-specific code to shutdown a CPU | 28 | * platform-specific code to shutdown a CPU |
34 | * | 29 | * |
35 | */ | 30 | */ |
36 | void platform_cpu_die(unsigned int cpu) | 31 | void __ref highbank_cpu_die(unsigned int cpu) |
37 | { | 32 | { |
38 | flush_cache_all(); | 33 | flush_cache_all(); |
39 | 34 | ||
@@ -45,12 +40,3 @@ void platform_cpu_die(unsigned int cpu) | |||
45 | /* We should never return from idle */ | 40 | /* We should never return from idle */ |
46 | panic("highbank: cpu %d unexpectedly exit from shutdown\n", cpu); | 41 | panic("highbank: cpu %d unexpectedly exit from shutdown\n", cpu); |
47 | } | 42 | } |
48 | |||
49 | int platform_cpu_disable(unsigned int cpu) | ||
50 | { | ||
51 | /* | ||
52 | * CPU0 should not be shut down via hotplug. cpu_idle can WFI | ||
53 | * or a proper shutdown or hibernate should be used. | ||
54 | */ | ||
55 | return cpu == 0 ? -EPERM : 0; | ||
56 | } | ||
diff --git a/arch/arm/mach-highbank/include/mach/debug-macro.S b/arch/arm/mach-highbank/include/mach/debug-macro.S deleted file mode 100644 index cb57fe5bcd04..000000000000 --- a/arch/arm/mach-highbank/include/mach/debug-macro.S +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * Debugging macro include header | ||
3 | * | ||
4 | * Copyright (C) 1994-1999 Russell King | ||
5 | * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks | ||
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 | |||
12 | .macro addruart,rp,rv,tmp | ||
13 | movw \rv, #0x6000 | ||
14 | movt \rv, #0xfee3 | ||
15 | movw \rp, #0x6000 | ||
16 | movt \rp, #0xfff3 | ||
17 | .endm | ||
18 | |||
19 | #include <asm/hardware/debug-pl01x.S> | ||
diff --git a/arch/arm/mach-highbank/include/mach/gpio.h b/arch/arm/mach-highbank/include/mach/gpio.h deleted file mode 100644 index 40a8c178f10d..000000000000 --- a/arch/arm/mach-highbank/include/mach/gpio.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | /* empty */ | ||
diff --git a/arch/arm/mach-highbank/include/mach/timex.h b/arch/arm/mach-highbank/include/mach/timex.h deleted file mode 100644 index 88dac7a55a97..000000000000 --- a/arch/arm/mach-highbank/include/mach/timex.h +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | #ifndef __MACH_TIMEX_H | ||
2 | #define __MACH_TIMEX_H | ||
3 | |||
4 | #define CLOCK_TICK_RATE 1000000 | ||
5 | |||
6 | #endif | ||
diff --git a/arch/arm/mach-highbank/include/mach/uncompress.h b/arch/arm/mach-highbank/include/mach/uncompress.h deleted file mode 100644 index bbe20e696325..000000000000 --- a/arch/arm/mach-highbank/include/mach/uncompress.h +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | #ifndef __MACH_UNCOMPRESS_H | ||
2 | #define __MACH_UNCOMPRESS_H | ||
3 | |||
4 | #define putc(c) | ||
5 | #define flush() | ||
6 | #define arch_decomp_setup() | ||
7 | #define arch_decomp_wdog() | ||
8 | |||
9 | #endif | ||
diff --git a/arch/arm/mach-highbank/platsmp.c b/arch/arm/mach-highbank/platsmp.c index d01364c72b45..fa9560ec6e70 100644 --- a/arch/arm/mach-highbank/platsmp.c +++ b/arch/arm/mach-highbank/platsmp.c | |||
@@ -25,12 +25,12 @@ | |||
25 | 25 | ||
26 | extern void secondary_startup(void); | 26 | extern void secondary_startup(void); |
27 | 27 | ||
28 | void __cpuinit platform_secondary_init(unsigned int cpu) | 28 | static void __cpuinit highbank_secondary_init(unsigned int cpu) |
29 | { | 29 | { |
30 | gic_secondary_init(0); | 30 | gic_secondary_init(0); |
31 | } | 31 | } |
32 | 32 | ||
33 | int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | 33 | static int __cpuinit highbank_boot_secondary(unsigned int cpu, struct task_struct *idle) |
34 | { | 34 | { |
35 | gic_raise_softirq(cpumask_of(cpu), 0); | 35 | gic_raise_softirq(cpumask_of(cpu), 0); |
36 | return 0; | 36 | return 0; |
@@ -40,7 +40,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | |||
40 | * Initialise the CPU possible map early - this describes the CPUs | 40 | * Initialise the CPU possible map early - this describes the CPUs |
41 | * which may be present or become present in the system. | 41 | * which may be present or become present in the system. |
42 | */ | 42 | */ |
43 | void __init smp_init_cpus(void) | 43 | static void __init highbank_smp_init_cpus(void) |
44 | { | 44 | { |
45 | unsigned int i, ncores; | 45 | unsigned int i, ncores; |
46 | 46 | ||
@@ -61,7 +61,7 @@ void __init smp_init_cpus(void) | |||
61 | set_smp_cross_call(gic_raise_softirq); | 61 | set_smp_cross_call(gic_raise_softirq); |
62 | } | 62 | } |
63 | 63 | ||
64 | void __init platform_smp_prepare_cpus(unsigned int max_cpus) | 64 | static void __init highbank_smp_prepare_cpus(unsigned int max_cpus) |
65 | { | 65 | { |
66 | int i; | 66 | int i; |
67 | 67 | ||
@@ -76,3 +76,13 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) | |||
76 | for (i = 1; i < max_cpus; i++) | 76 | for (i = 1; i < max_cpus; i++) |
77 | highbank_set_cpu_jump(i, secondary_startup); | 77 | highbank_set_cpu_jump(i, secondary_startup); |
78 | } | 78 | } |
79 | |||
80 | struct smp_operations highbank_smp_ops __initdata = { | ||
81 | .smp_init_cpus = highbank_smp_init_cpus, | ||
82 | .smp_prepare_cpus = highbank_smp_prepare_cpus, | ||
83 | .smp_secondary_init = highbank_secondary_init, | ||
84 | .smp_boot_secondary = highbank_boot_secondary, | ||
85 | #ifdef CONFIG_HOTPLUG_CPU | ||
86 | .cpu_die = highbank_cpu_die, | ||
87 | #endif | ||
88 | }; | ||
diff --git a/arch/arm/mach-highbank/pm.c b/arch/arm/mach-highbank/pm.c index 33b3beb89982..de866f21331f 100644 --- a/arch/arm/mach-highbank/pm.c +++ b/arch/arm/mach-highbank/pm.c | |||
@@ -47,9 +47,7 @@ static const struct platform_suspend_ops highbank_pm_ops = { | |||
47 | .valid = suspend_valid_only_mem, | 47 | .valid = suspend_valid_only_mem, |
48 | }; | 48 | }; |
49 | 49 | ||
50 | static int __init highbank_pm_init(void) | 50 | void __init highbank_pm_init(void) |
51 | { | 51 | { |
52 | suspend_set_ops(&highbank_pm_ops); | 52 | suspend_set_ops(&highbank_pm_ops); |
53 | return 0; | ||
54 | } | 53 | } |
55 | module_init(highbank_pm_init); | ||