diff options
Diffstat (limited to 'arch/arm/mach-spear13xx')
-rw-r--r-- | arch/arm/mach-spear13xx/Makefile.boot | 3 | ||||
-rw-r--r-- | arch/arm/mach-spear13xx/hotplug.c | 22 | ||||
-rw-r--r-- | arch/arm/mach-spear13xx/include/mach/generic.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-spear13xx/include/mach/gpio.h | 19 | ||||
-rw-r--r-- | arch/arm/mach-spear13xx/platsmp.c | 25 | ||||
-rw-r--r-- | arch/arm/mach-spear13xx/spear1310.c | 1 | ||||
-rw-r--r-- | arch/arm/mach-spear13xx/spear1340.c | 1 |
7 files changed, 23 insertions, 51 deletions
diff --git a/arch/arm/mach-spear13xx/Makefile.boot b/arch/arm/mach-spear13xx/Makefile.boot index 403efd7e6d27..4674a4c221db 100644 --- a/arch/arm/mach-spear13xx/Makefile.boot +++ b/arch/arm/mach-spear13xx/Makefile.boot | |||
@@ -1,6 +1,3 @@ | |||
1 | zreladdr-y += 0x00008000 | 1 | zreladdr-y += 0x00008000 |
2 | params_phys-y := 0x00000100 | 2 | params_phys-y := 0x00000100 |
3 | initrd_phys-y := 0x00800000 | 3 | initrd_phys-y := 0x00800000 |
4 | |||
5 | dtb-$(CONFIG_MACH_SPEAR1310) += spear1310-evb.dtb | ||
6 | dtb-$(CONFIG_MACH_SPEAR1340) += spear1340-evb.dtb | ||
diff --git a/arch/arm/mach-spear13xx/hotplug.c b/arch/arm/mach-spear13xx/hotplug.c index 5c6867b46d09..a7d2dd11a4f2 100644 --- a/arch/arm/mach-spear13xx/hotplug.c +++ b/arch/arm/mach-spear13xx/hotplug.c | |||
@@ -17,8 +17,6 @@ | |||
17 | #include <asm/cp15.h> | 17 | #include <asm/cp15.h> |
18 | #include <asm/smp_plat.h> | 18 | #include <asm/smp_plat.h> |
19 | 19 | ||
20 | extern volatile int pen_release; | ||
21 | |||
22 | static inline void cpu_enter_lowpower(void) | 20 | static inline void cpu_enter_lowpower(void) |
23 | { | 21 | { |
24 | unsigned int v; | 22 | unsigned int v; |
@@ -56,7 +54,7 @@ static inline void cpu_leave_lowpower(void) | |||
56 | : "cc"); | 54 | : "cc"); |
57 | } | 55 | } |
58 | 56 | ||
59 | static inline void platform_do_lowpower(unsigned int cpu, int *spurious) | 57 | static inline void spear13xx_do_lowpower(unsigned int cpu, int *spurious) |
60 | { | 58 | { |
61 | for (;;) { | 59 | for (;;) { |
62 | wfi(); | 60 | wfi(); |
@@ -79,17 +77,12 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious) | |||
79 | } | 77 | } |
80 | } | 78 | } |
81 | 79 | ||
82 | int platform_cpu_kill(unsigned int cpu) | ||
83 | { | ||
84 | return 1; | ||
85 | } | ||
86 | |||
87 | /* | 80 | /* |
88 | * platform-specific code to shutdown a CPU | 81 | * platform-specific code to shutdown a CPU |
89 | * | 82 | * |
90 | * Called with IRQs disabled | 83 | * Called with IRQs disabled |
91 | */ | 84 | */ |
92 | void __cpuinit platform_cpu_die(unsigned int cpu) | 85 | void __ref spear13xx_cpu_die(unsigned int cpu) |
93 | { | 86 | { |
94 | int spurious = 0; | 87 | int spurious = 0; |
95 | 88 | ||
@@ -97,7 +90,7 @@ void __cpuinit platform_cpu_die(unsigned int cpu) | |||
97 | * we're ready for shutdown now, so do it | 90 | * we're ready for shutdown now, so do it |
98 | */ | 91 | */ |
99 | cpu_enter_lowpower(); | 92 | cpu_enter_lowpower(); |
100 | platform_do_lowpower(cpu, &spurious); | 93 | spear13xx_do_lowpower(cpu, &spurious); |
101 | 94 | ||
102 | /* | 95 | /* |
103 | * bring this CPU back into the world of cache | 96 | * bring this CPU back into the world of cache |
@@ -108,12 +101,3 @@ void __cpuinit platform_cpu_die(unsigned int cpu) | |||
108 | if (spurious) | 101 | if (spurious) |
109 | pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious); | 102 | pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious); |
110 | } | 103 | } |
111 | |||
112 | int platform_cpu_disable(unsigned int cpu) | ||
113 | { | ||
114 | /* | ||
115 | * we don't allow CPU 0 to be shutdown (it is still too special | ||
116 | * e.g. clock tick interrupts) | ||
117 | */ | ||
118 | return cpu == 0 ? -EPERM : 0; | ||
119 | } | ||
diff --git a/arch/arm/mach-spear13xx/include/mach/generic.h b/arch/arm/mach-spear13xx/include/mach/generic.h index dac57fd0cdfd..c33f4d9361bd 100644 --- a/arch/arm/mach-spear13xx/include/mach/generic.h +++ b/arch/arm/mach-spear13xx/include/mach/generic.h | |||
@@ -33,6 +33,9 @@ void __init spear13xx_l2x0_init(void); | |||
33 | bool dw_dma_filter(struct dma_chan *chan, void *slave); | 33 | bool dw_dma_filter(struct dma_chan *chan, void *slave); |
34 | void spear_restart(char, const char *); | 34 | void spear_restart(char, const char *); |
35 | void spear13xx_secondary_startup(void); | 35 | void spear13xx_secondary_startup(void); |
36 | void __cpuinit spear13xx_cpu_die(unsigned int cpu); | ||
37 | |||
38 | extern struct smp_operations spear13xx_smp_ops; | ||
36 | 39 | ||
37 | #ifdef CONFIG_MACH_SPEAR1310 | 40 | #ifdef CONFIG_MACH_SPEAR1310 |
38 | void __init spear1310_clk_init(void); | 41 | void __init spear1310_clk_init(void); |
diff --git a/arch/arm/mach-spear13xx/include/mach/gpio.h b/arch/arm/mach-spear13xx/include/mach/gpio.h deleted file mode 100644 index 85f176311f63..000000000000 --- a/arch/arm/mach-spear13xx/include/mach/gpio.h +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | /* | ||
2 | * arch/arm/mach-spear13xx/include/mach/gpio.h | ||
3 | * | ||
4 | * GPIO macros for SPEAr13xx machine family | ||
5 | * | ||
6 | * Copyright (C) 2012 ST Microelectronics | ||
7 | * Viresh Kumar <viresh.linux@gmail.com> | ||
8 | * | ||
9 | * This file is licensed under the terms of the GNU General Public | ||
10 | * License version 2. This program is licensed "as is" without any | ||
11 | * warranty of any kind, whether express or implied. | ||
12 | */ | ||
13 | |||
14 | #ifndef __MACH_GPIO_H | ||
15 | #define __MACH_GPIO_H | ||
16 | |||
17 | #include <plat/gpio.h> | ||
18 | |||
19 | #endif /* __MACH_GPIO_H */ | ||
diff --git a/arch/arm/mach-spear13xx/platsmp.c b/arch/arm/mach-spear13xx/platsmp.c index f5d07f2663d7..2eaa3fa7b432 100644 --- a/arch/arm/mach-spear13xx/platsmp.c +++ b/arch/arm/mach-spear13xx/platsmp.c | |||
@@ -19,18 +19,13 @@ | |||
19 | #include <asm/hardware/gic.h> | 19 | #include <asm/hardware/gic.h> |
20 | #include <asm/smp_scu.h> | 20 | #include <asm/smp_scu.h> |
21 | #include <mach/spear.h> | 21 | #include <mach/spear.h> |
22 | #include <mach/generic.h> | ||
22 | 23 | ||
23 | /* | ||
24 | * control for which core is the next to come out of the secondary | ||
25 | * boot "holding pen" | ||
26 | */ | ||
27 | volatile int __cpuinitdata pen_release = -1; | ||
28 | static DEFINE_SPINLOCK(boot_lock); | 24 | static DEFINE_SPINLOCK(boot_lock); |
29 | 25 | ||
30 | static void __iomem *scu_base = IOMEM(VA_SCU_BASE); | 26 | static void __iomem *scu_base = IOMEM(VA_SCU_BASE); |
31 | extern void spear13xx_secondary_startup(void); | ||
32 | 27 | ||
33 | void __cpuinit platform_secondary_init(unsigned int cpu) | 28 | static void __cpuinit spear13xx_secondary_init(unsigned int cpu) |
34 | { | 29 | { |
35 | /* | 30 | /* |
36 | * if any interrupts are already enabled for the primary | 31 | * if any interrupts are already enabled for the primary |
@@ -53,7 +48,7 @@ void __cpuinit platform_secondary_init(unsigned int cpu) | |||
53 | spin_unlock(&boot_lock); | 48 | spin_unlock(&boot_lock); |
54 | } | 49 | } |
55 | 50 | ||
56 | int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | 51 | static int __cpuinit spear13xx_boot_secondary(unsigned int cpu, struct task_struct *idle) |
57 | { | 52 | { |
58 | unsigned long timeout; | 53 | unsigned long timeout; |
59 | 54 | ||
@@ -97,7 +92,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) | |||
97 | * Initialise the CPU possible map early - this describes the CPUs | 92 | * Initialise the CPU possible map early - this describes the CPUs |
98 | * which may be present or become present in the system. | 93 | * which may be present or become present in the system. |
99 | */ | 94 | */ |
100 | void __init smp_init_cpus(void) | 95 | static void __init spear13xx_smp_init_cpus(void) |
101 | { | 96 | { |
102 | unsigned int i, ncores = scu_get_core_count(scu_base); | 97 | unsigned int i, ncores = scu_get_core_count(scu_base); |
103 | 98 | ||
@@ -113,7 +108,7 @@ void __init smp_init_cpus(void) | |||
113 | set_smp_cross_call(gic_raise_softirq); | 108 | set_smp_cross_call(gic_raise_softirq); |
114 | } | 109 | } |
115 | 110 | ||
116 | void __init platform_smp_prepare_cpus(unsigned int max_cpus) | 111 | static void __init spear13xx_smp_prepare_cpus(unsigned int max_cpus) |
117 | { | 112 | { |
118 | 113 | ||
119 | scu_enable(scu_base); | 114 | scu_enable(scu_base); |
@@ -125,3 +120,13 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) | |||
125 | */ | 120 | */ |
126 | __raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION); | 121 | __raw_writel(virt_to_phys(spear13xx_secondary_startup), SYS_LOCATION); |
127 | } | 122 | } |
123 | |||
124 | struct smp_operations spear13xx_smp_ops __initdata = { | ||
125 | .smp_init_cpus = spear13xx_smp_init_cpus, | ||
126 | .smp_prepare_cpus = spear13xx_smp_prepare_cpus, | ||
127 | .smp_secondary_init = spear13xx_secondary_init, | ||
128 | .smp_boot_secondary = spear13xx_boot_secondary, | ||
129 | #ifdef CONFIG_HOTPLUG_CPU | ||
130 | .cpu_die = spear13xx_cpu_die, | ||
131 | #endif | ||
132 | }; | ||
diff --git a/arch/arm/mach-spear13xx/spear1310.c b/arch/arm/mach-spear13xx/spear1310.c index 732d29bc7330..9fbbfc5650aa 100644 --- a/arch/arm/mach-spear13xx/spear1310.c +++ b/arch/arm/mach-spear13xx/spear1310.c | |||
@@ -78,6 +78,7 @@ static void __init spear1310_map_io(void) | |||
78 | } | 78 | } |
79 | 79 | ||
80 | DT_MACHINE_START(SPEAR1310_DT, "ST SPEAr1310 SoC with Flattened Device Tree") | 80 | DT_MACHINE_START(SPEAR1310_DT, "ST SPEAr1310 SoC with Flattened Device Tree") |
81 | .smp = smp_ops(spear13xx_smp_ops), | ||
81 | .map_io = spear1310_map_io, | 82 | .map_io = spear1310_map_io, |
82 | .init_irq = spear13xx_dt_init_irq, | 83 | .init_irq = spear13xx_dt_init_irq, |
83 | .handle_irq = gic_handle_irq, | 84 | .handle_irq = gic_handle_irq, |
diff --git a/arch/arm/mach-spear13xx/spear1340.c b/arch/arm/mach-spear13xx/spear1340.c index 81e4ed76ad06..081014fb314a 100644 --- a/arch/arm/mach-spear13xx/spear1340.c +++ b/arch/arm/mach-spear13xx/spear1340.c | |||
@@ -182,6 +182,7 @@ static const char * const spear1340_dt_board_compat[] = { | |||
182 | }; | 182 | }; |
183 | 183 | ||
184 | DT_MACHINE_START(SPEAR1340_DT, "ST SPEAr1340 SoC with Flattened Device Tree") | 184 | DT_MACHINE_START(SPEAR1340_DT, "ST SPEAr1340 SoC with Flattened Device Tree") |
185 | .smp = smp_ops(spear13xx_smp_ops), | ||
185 | .map_io = spear13xx_map_io, | 186 | .map_io = spear13xx_map_io, |
186 | .init_irq = spear13xx_dt_init_irq, | 187 | .init_irq = spear13xx_dt_init_irq, |
187 | .handle_irq = gic_handle_irq, | 188 | .handle_irq = gic_handle_irq, |