aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-01 23:34:22 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-01 23:34:22 -0400
commit6585dea1f99cc2265582ff2e4cc1727062136e92 (patch)
tree57378ccfe0f9fde73081e1f9355d05dd4131e178 /arch/arm
parent16ee792e45cf0c97ce061fce03c36cab5551ec72 (diff)
parent97c24c1aa403e0d4ef7c1958db8459e488862b46 (diff)
Merge branch 'next/cross-platform' of git://git.linaro.org/people/arnd/arm-soc
* 'next/cross-platform' of git://git.linaro.org/people/arnd/arm-soc: arm/imx: use Kconfig choice for low-level debug UART selection ARM: realview: use Kconfig choice for debug UART selection ARM: plat-samsung: use Kconfig choice for debug UART selection ARM: versatile: convert logical CPU numbers to physical numbers ARM: ux500: convert logical CPU numbers to physical numbers ARM: shmobile: convert logical CPU numbers to physical numbers ARM: msm: convert logical CPU numbers to physical numbers ARM: exynos4: convert logical CPU numbers to physical numbers Fix up trivial conflict (config DEBUG_S3C_UART move/split vs addition of ARM_KPROBES_TEST option) in arch/arm/Kconfig.debug
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig.debug117
-rw-r--r--arch/arm/mach-exynos4/hotplug.c2
-rw-r--r--arch/arm/mach-exynos4/platsmp.c2
-rw-r--r--arch/arm/mach-msm/hotplug.c2
-rw-r--r--arch/arm/mach-msm/platsmp.c2
-rw-r--r--arch/arm/mach-mxs/include/mach/debug-macro.S12
-rw-r--r--arch/arm/mach-realview/hotplug.c2
-rw-r--r--arch/arm/mach-realview/include/mach/debug-macro.S17
-rw-r--r--arch/arm/mach-shmobile/smp-sh73a0.c6
-rw-r--r--arch/arm/mach-ux500/hotplug.c2
-rw-r--r--arch/arm/mach-ux500/platsmp.c2
-rw-r--r--arch/arm/mach-vexpress/hotplug.c2
-rw-r--r--arch/arm/plat-mxc/include/mach/debug-macro.S38
-rw-r--r--arch/arm/plat-samsung/Kconfig7
-rw-r--r--arch/arm/plat-versatile/platsmp.c2
15 files changed, 136 insertions, 79 deletions
diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index f283938c2fc7..64db5b1648e5 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -128,6 +128,111 @@ choice
128 Say Y here if you want the debug print routines to direct 128 Say Y here if you want the debug print routines to direct
129 their output to the second serial port on these devices. 129 their output to the second serial port on these devices.
130 130
131 config DEBUG_IMX1_UART
132 bool "i.MX1 Debug UART"
133 depends on SOC_IMX1
134 help
135 Say Y here if you want kernel low-level debugging support
136 on i.MX1.
137
138 config DEBUG_IMX23_UART
139 bool "i.MX23 Debug UART"
140 depends on SOC_IMX23
141 help
142 Say Y here if you want kernel low-level debugging support
143 on i.MX23.
144
145 config DEBUG_IMX25_UART
146 bool "i.MX25 Debug UART"
147 depends on SOC_IMX25
148 help
149 Say Y here if you want kernel low-level debugging support
150 on i.MX25.
151
152 config DEBUG_IMX21_IMX27_UART
153 bool "i.MX21 and i.MX27 Debug UART"
154 depends on SOC_IMX21 || SOC_IMX27
155 help
156 Say Y here if you want kernel low-level debugging support
157 on i.MX21 or i.MX27.
158
159 config DEBUG_IMX28_UART
160 bool "i.MX28 Debug UART"
161 depends on SOC_IMX28
162 help
163 Say Y here if you want kernel low-level debugging support
164 on i.MX28.
165
166 config DEBUG_IMX31_IMX35_UART
167 bool "i.MX31 and i.MX35 Debug UART"
168 depends on SOC_IMX31 || SOC_IMX35
169 help
170 Say Y here if you want kernel low-level debugging support
171 on i.MX31 or i.MX35.
172
173 config DEBUG_IMX51_UART
174 bool "i.MX51 Debug UART"
175 depends on SOC_IMX51
176 help
177 Say Y here if you want kernel low-level debugging support
178 on i.MX51.
179
180 config DEBUG_IMX50_IMX53_UART
181 bool "i.MX50 and i.MX53 Debug UART"
182 depends on SOC_IMX50 || SOC_IMX53
183 help
184 Say Y here if you want kernel low-level debugging support
185 on i.MX50 or i.MX53.
186
187 config DEBUG_S3C_UART0
188 depends on PLAT_SAMSUNG
189 bool "Use S3C UART 0 for low-level debug"
190 help
191 Say Y here if you want the debug print routines to direct
192 their output to UART 0. The port must have been initialised
193 by the boot-loader before use.
194
195 The uncompressor code port configuration is now handled
196 by CONFIG_S3C_LOWLEVEL_UART_PORT.
197
198 config DEBUG_S3C_UART1
199 depends on PLAT_SAMSUNG
200 bool "Use S3C UART 1 for low-level debug"
201 help
202 Say Y here if you want the debug print routines to direct
203 their output to UART 1. The port must have been initialised
204 by the boot-loader before use.
205
206 The uncompressor code port configuration is now handled
207 by CONFIG_S3C_LOWLEVEL_UART_PORT.
208
209 config DEBUG_S3C_UART2
210 depends on PLAT_SAMSUNG
211 bool "Use S3C UART 2 for low-level debug"
212 help
213 Say Y here if you want the debug print routines to direct
214 their output to UART 2. The port must have been initialised
215 by the boot-loader before use.
216
217 The uncompressor code port configuration is now handled
218 by CONFIG_S3C_LOWLEVEL_UART_PORT.
219
220 config DEBUG_REALVIEW_STD_PORT
221 bool "RealView Default UART"
222 depends on ARCH_REALVIEW
223 help
224 Say Y here if you want the debug print routines to direct
225 their output to the serial port on RealView EB, PB11MP, PBA8
226 and PBX platforms.
227
228 config DEBUG_REALVIEW_PB1176_PORT
229 bool "RealView PB1176 UART"
230 depends on MACH_REALVIEW_PB1176
231 help
232 Say Y here if you want the debug print routines to direct
233 their output to the standard serial port on the RealView
234 PB1176 platform.
235
131endchoice 236endchoice
132 237
133config EARLY_PRINTK 238config EARLY_PRINTK
@@ -146,18 +251,6 @@ config OC_ETM
146 buffer driver that will allow you to collect traces of the 251 buffer driver that will allow you to collect traces of the
147 kernel code. 252 kernel code.
148 253
149config DEBUG_S3C_UART
150 depends on PLAT_SAMSUNG
151 int "S3C UART to use for low-level debug"
152 default "0"
153 help
154 Choice for UART for kernel low-level using S3C UARTS,
155 should be between zero and two. The port must have been
156 initialised by the boot-loader before use.
157
158 The uncompressor code port configuration is now handled
159 by CONFIG_S3C_LOWLEVEL_UART_PORT.
160
161config ARM_KPROBES_TEST 254config ARM_KPROBES_TEST
162 tristate "Kprobes test module" 255 tristate "Kprobes test module"
163 depends on KPROBES && MODULES 256 depends on KPROBES && MODULES
diff --git a/arch/arm/mach-exynos4/hotplug.c b/arch/arm/mach-exynos4/hotplug.c
index 7490789784c9..da70e7e39937 100644
--- a/arch/arm/mach-exynos4/hotplug.c
+++ b/arch/arm/mach-exynos4/hotplug.c
@@ -75,7 +75,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
75 : 75 :
76 : "memory", "cc"); 76 : "memory", "cc");
77 77
78 if (pen_release == cpu) { 78 if (pen_release == cpu_logical_map(cpu)) {
79 /* 79 /*
80 * OK, proper wakeup, we're done 80 * OK, proper wakeup, we're done
81 */ 81 */
diff --git a/arch/arm/mach-exynos4/platsmp.c b/arch/arm/mach-exynos4/platsmp.c
index 782dcf11d234..05595407e9ff 100644
--- a/arch/arm/mach-exynos4/platsmp.c
+++ b/arch/arm/mach-exynos4/platsmp.c
@@ -132,7 +132,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
132 * Note that "pen_release" is the hardware CPU ID, whereas 132 * Note that "pen_release" is the hardware CPU ID, whereas
133 * "cpu" is Linux's internal ID. 133 * "cpu" is Linux's internal ID.
134 */ 134 */
135 write_pen_release(cpu); 135 write_pen_release(cpu_logical_map(cpu));
136 136
137 if (!(__raw_readl(S5P_ARM_CORE1_STATUS) & S5P_CORE_LOCAL_PWR_EN)) { 137 if (!(__raw_readl(S5P_ARM_CORE1_STATUS) & S5P_CORE_LOCAL_PWR_EN)) {
138 __raw_writel(S5P_CORE_LOCAL_PWR_EN, 138 __raw_writel(S5P_CORE_LOCAL_PWR_EN,
diff --git a/arch/arm/mach-msm/hotplug.c b/arch/arm/mach-msm/hotplug.c
index 5a31f70dfb8e..41c252de0215 100644
--- a/arch/arm/mach-msm/hotplug.c
+++ b/arch/arm/mach-msm/hotplug.c
@@ -37,7 +37,7 @@ static inline void platform_do_lowpower(unsigned int cpu)
37 : 37 :
38 : "memory", "cc"); 38 : "memory", "cc");
39 39
40 if (pen_release == cpu) { 40 if (pen_release == cpu_logical_map(cpu)) {
41 /* 41 /*
42 * OK, proper wakeup, we're done 42 * OK, proper wakeup, we're done
43 */ 43 */
diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c
index 727659520912..fdec58aaa35c 100644
--- a/arch/arm/mach-msm/platsmp.c
+++ b/arch/arm/mach-msm/platsmp.c
@@ -117,7 +117,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
117 * Note that "pen_release" is the hardware CPU ID, whereas 117 * Note that "pen_release" is the hardware CPU ID, whereas
118 * "cpu" is Linux's internal ID. 118 * "cpu" is Linux's internal ID.
119 */ 119 */
120 pen_release = cpu; 120 pen_release = cpu_logical_map(cpu);
121 __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release)); 121 __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release));
122 outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1)); 122 outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
123 123
diff --git a/arch/arm/mach-mxs/include/mach/debug-macro.S b/arch/arm/mach-mxs/include/mach/debug-macro.S
index 714570d83668..90c6b7836ad3 100644
--- a/arch/arm/mach-mxs/include/mach/debug-macro.S
+++ b/arch/arm/mach-mxs/include/mach/debug-macro.S
@@ -14,17 +14,9 @@
14#include <mach/mx23.h> 14#include <mach/mx23.h>
15#include <mach/mx28.h> 15#include <mach/mx28.h>
16 16
17#ifdef CONFIG_SOC_IMX23 17#ifdef CONFIG_DEBUG_IMX23_UART
18#ifdef UART_PADDR
19#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
20#endif
21#define UART_PADDR MX23_DUART_BASE_ADDR 18#define UART_PADDR MX23_DUART_BASE_ADDR
22#endif 19#elif defined (CONFIG_DEBUG_IMX28_UART)
23
24#ifdef CONFIG_SOC_IMX28
25#ifdef UART_PADDR
26#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
27#endif
28#define UART_PADDR MX28_DUART_BASE_ADDR 20#define UART_PADDR MX28_DUART_BASE_ADDR
29#endif 21#endif
30 22
diff --git a/arch/arm/mach-realview/hotplug.c b/arch/arm/mach-realview/hotplug.c
index a87523d095e6..ac1aed2a8da4 100644
--- a/arch/arm/mach-realview/hotplug.c
+++ b/arch/arm/mach-realview/hotplug.c
@@ -69,7 +69,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
69 : 69 :
70 : "memory", "cc"); 70 : "memory", "cc");
71 71
72 if (pen_release == cpu) { 72 if (pen_release == cpu_logical_map(cpu)) {
73 /* 73 /*
74 * OK, proper wakeup, we're done 74 * OK, proper wakeup, we're done
75 */ 75 */
diff --git a/arch/arm/mach-realview/include/mach/debug-macro.S b/arch/arm/mach-realview/include/mach/debug-macro.S
index fb4901c4ef04..8cc372dc66a8 100644
--- a/arch/arm/mach-realview/include/mach/debug-macro.S
+++ b/arch/arm/mach-realview/include/mach/debug-macro.S
@@ -10,23 +10,10 @@
10 * published by the Free Software Foundation. 10 * published by the Free Software Foundation.
11 */ 11 */
12 12
13#if defined(CONFIG_MACH_REALVIEW_EB) || \ 13#ifdef CONFIG_DEBUG_REALVIEW_STD_PORT
14 defined(CONFIG_MACH_REALVIEW_PB11MP) || \
15 defined(CONFIG_MACH_REALVIEW_PBA8) || \
16 defined(CONFIG_MACH_REALVIEW_PBX)
17#ifndef DEBUG_LL_UART_OFFSET
18#define DEBUG_LL_UART_OFFSET 0x00009000 14#define DEBUG_LL_UART_OFFSET 0x00009000
19#elif DEBUG_LL_UART_OFFSET != 0x00009000 15#elif defined(CONFIG_DEBUG_REALVIEW_PB1176_PORT)
20#warning "DEBUG_LL_UART_OFFSET already defined to a different value"
21#endif
22#endif
23
24#ifdef CONFIG_MACH_REALVIEW_PB1176
25#ifndef DEBUG_LL_UART_OFFSET
26#define DEBUG_LL_UART_OFFSET 0x0010c000 16#define DEBUG_LL_UART_OFFSET 0x0010c000
27#elif DEBUG_LL_UART_OFFSET != 0x0010c000
28#warning "DEBUG_LL_UART_OFFSET already defined to a different value"
29#endif
30#endif 17#endif
31 18
32#ifndef DEBUG_LL_UART_OFFSET 19#ifndef DEBUG_LL_UART_OFFSET
diff --git a/arch/arm/mach-shmobile/smp-sh73a0.c b/arch/arm/mach-shmobile/smp-sh73a0.c
index 3ffdbc92ba82..be1ade76ccc8 100644
--- a/arch/arm/mach-shmobile/smp-sh73a0.c
+++ b/arch/arm/mach-shmobile/smp-sh73a0.c
@@ -74,6 +74,8 @@ void __cpuinit sh73a0_secondary_init(unsigned int cpu)
74 74
75int __cpuinit sh73a0_boot_secondary(unsigned int cpu) 75int __cpuinit sh73a0_boot_secondary(unsigned int cpu)
76{ 76{
77 cpu = cpu_logical_map(cpu);
78
77 /* enable cache coherency */ 79 /* enable cache coherency */
78 modify_scu_cpu_psr(0, 3 << (cpu * 8)); 80 modify_scu_cpu_psr(0, 3 << (cpu * 8));
79 81
@@ -87,6 +89,8 @@ int __cpuinit sh73a0_boot_secondary(unsigned int cpu)
87 89
88void __init sh73a0_smp_prepare_cpus(void) 90void __init sh73a0_smp_prepare_cpus(void)
89{ 91{
92 int cpu = cpu_logical_map(0);
93
90 scu_enable(scu_base_addr()); 94 scu_enable(scu_base_addr());
91 95
92 /* Map the reset vector (in headsmp.S) */ 96 /* Map the reset vector (in headsmp.S) */
@@ -94,5 +98,5 @@ void __init sh73a0_smp_prepare_cpus(void)
94 __raw_writel(__pa(shmobile_secondary_vector), __io(SBAR)); 98 __raw_writel(__pa(shmobile_secondary_vector), __io(SBAR));
95 99
96 /* enable cache coherency on CPU0 */ 100 /* enable cache coherency on CPU0 */
97 modify_scu_cpu_psr(0, 3 << (0 * 8)); 101 modify_scu_cpu_psr(0, 3 << (cpu * 8));
98} 102}
diff --git a/arch/arm/mach-ux500/hotplug.c b/arch/arm/mach-ux500/hotplug.c
index dd8037ebccf8..572015e57cd9 100644
--- a/arch/arm/mach-ux500/hotplug.c
+++ b/arch/arm/mach-ux500/hotplug.c
@@ -24,7 +24,7 @@ static inline void platform_do_lowpower(unsigned int cpu)
24 for (;;) { 24 for (;;) {
25 __asm__ __volatile__("dsb\n\t" "wfi\n\t" 25 __asm__ __volatile__("dsb\n\t" "wfi\n\t"
26 : : : "memory"); 26 : : : "memory");
27 if (pen_release == cpu) { 27 if (pen_release == cpu_logical_map(cpu)) {
28 /* 28 /*
29 * OK, proper wakeup, we're done 29 * OK, proper wakeup, we're done
30 */ 30 */
diff --git a/arch/arm/mach-ux500/platsmp.c b/arch/arm/mach-ux500/platsmp.c
index eb5199102cfa..a19e398dade3 100644
--- a/arch/arm/mach-ux500/platsmp.c
+++ b/arch/arm/mach-ux500/platsmp.c
@@ -96,7 +96,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
96 * the holding pen - release it, then wait for it to flag 96 * the holding pen - release it, then wait for it to flag
97 * that it has been released by resetting pen_release. 97 * that it has been released by resetting pen_release.
98 */ 98 */
99 write_pen_release(cpu); 99 write_pen_release(cpu_logical_map(cpu));
100 100
101 gic_raise_softirq(cpumask_of(cpu), 1); 101 gic_raise_softirq(cpumask_of(cpu), 1);
102 102
diff --git a/arch/arm/mach-vexpress/hotplug.c b/arch/arm/mach-vexpress/hotplug.c
index 3668cf91d2de..813ee08f96e6 100644
--- a/arch/arm/mach-vexpress/hotplug.c
+++ b/arch/arm/mach-vexpress/hotplug.c
@@ -65,7 +65,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
65 for (;;) { 65 for (;;) {
66 wfi(); 66 wfi();
67 67
68 if (pen_release == cpu) { 68 if (pen_release == cpu_logical_map(cpu)) {
69 /* 69 /*
70 * OK, proper wakeup, we're done 70 * OK, proper wakeup, we're done
71 */ 71 */
diff --git a/arch/arm/plat-mxc/include/mach/debug-macro.S b/arch/arm/plat-mxc/include/mach/debug-macro.S
index a3045937fc2f..72986013c1fb 100644
--- a/arch/arm/plat-mxc/include/mach/debug-macro.S
+++ b/arch/arm/plat-mxc/include/mach/debug-macro.S
@@ -12,43 +12,17 @@
12 */ 12 */
13#include <mach/hardware.h> 13#include <mach/hardware.h>
14 14
15#ifdef CONFIG_SOC_IMX1 15#ifdef CONFIG_DEBUG_IMX1_UART
16#define UART_PADDR MX1_UART1_BASE_ADDR 16#define UART_PADDR MX1_UART1_BASE_ADDR
17#endif 17#elif defined (CONFIG_DEBUG_IMX25_UART)
18
19#ifdef CONFIG_SOC_IMX25
20#ifdef UART_PADDR
21#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
22#endif
23#define UART_PADDR MX25_UART1_BASE_ADDR 18#define UART_PADDR MX25_UART1_BASE_ADDR
24#endif 19#elif defined (CONFIG_DEBUG_IMX21_IMX27_UART)
25
26#if defined(CONFIG_SOC_IMX21) || defined (CONFIG_SOC_IMX27)
27#ifdef UART_PADDR
28#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
29#endif
30#define UART_PADDR MX2x_UART1_BASE_ADDR 20#define UART_PADDR MX2x_UART1_BASE_ADDR
31#endif 21#elif defined (CONFIG_DEBUG_IMX31_IMX35_UART)
32
33#if defined(CONFIG_SOC_IMX31) || defined(CONFIG_SOC_IMX35)
34#ifdef UART_PADDR
35#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
36#endif
37#define UART_PADDR MX3x_UART1_BASE_ADDR 22#define UART_PADDR MX3x_UART1_BASE_ADDR
38#endif 23#elif defined (CONFIG_DEBUG_IMX51_UART)
39
40#ifdef CONFIG_SOC_IMX51
41#ifdef UART_PADDR
42#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
43#endif
44#define UART_PADDR MX51_UART1_BASE_ADDR 24#define UART_PADDR MX51_UART1_BASE_ADDR
45#endif 25#elif defined (CONFIG_DEBUG_IMX50_IMX53_UART)
46
47/* iMX50/53 have same addresses, but not iMX51 */
48#if defined(CONFIG_SOC_IMX50) || defined(CONFIG_SOC_IMX53)
49#ifdef UART_PADDR
50#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
51#endif
52#define UART_PADDR MX53_UART1_BASE_ADDR 26#define UART_PADDR MX53_UART1_BASE_ADDR
53#endif 27#endif
54 28
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index dffa37bc4a0b..3895f9aff0dc 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -362,4 +362,11 @@ config SAMSUNG_PD
362 help 362 help
363 Say Y here if you want to control Power Domain by Runtime PM. 363 Say Y here if you want to control Power Domain by Runtime PM.
364 364
365config DEBUG_S3C_UART
366 depends on PLAT_SAMSUNG
367 int
368 default "0" if DEBUG_S3C_UART0
369 default "1" if DEBUG_S3C_UART1
370 default "2" if DEBUG_S3C_UART2
371
365endif 372endif
diff --git a/arch/arm/plat-versatile/platsmp.c b/arch/arm/plat-versatile/platsmp.c
index 51ecfea09b27..92f18d372b69 100644
--- a/arch/arm/plat-versatile/platsmp.c
+++ b/arch/arm/plat-versatile/platsmp.c
@@ -77,7 +77,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
77 * since we haven't sent them a soft interrupt, they shouldn't 77 * since we haven't sent them a soft interrupt, they shouldn't
78 * be there. 78 * be there.
79 */ 79 */
80 write_pen_release(cpu); 80 write_pen_release(cpu_logical_map(cpu));
81 81
82 /* 82 /*
83 * Send the secondary CPU a soft interrupt, thereby causing 83 * Send the secondary CPU a soft interrupt, thereby causing