Commit 6585dea1 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 16ee792e 97c24c1a
...@@ -128,6 +128,111 @@ choice ...@@ -128,6 +128,111 @@ choice
Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct
their output to the second serial port on these devices. their output to the second serial port on these devices.
config DEBUG_IMX1_UART
bool "i.MX1 Debug UART"
depends on SOC_IMX1
help
Say Y here if you want kernel low-level debugging support
on i.MX1.
config DEBUG_IMX23_UART
bool "i.MX23 Debug UART"
depends on SOC_IMX23
help
Say Y here if you want kernel low-level debugging support
on i.MX23.
config DEBUG_IMX25_UART
bool "i.MX25 Debug UART"
depends on SOC_IMX25
help
Say Y here if you want kernel low-level debugging support
on i.MX25.
config DEBUG_IMX21_IMX27_UART
bool "i.MX21 and i.MX27 Debug UART"
depends on SOC_IMX21 || SOC_IMX27
help
Say Y here if you want kernel low-level debugging support
on i.MX21 or i.MX27.
config DEBUG_IMX28_UART
bool "i.MX28 Debug UART"
depends on SOC_IMX28
help
Say Y here if you want kernel low-level debugging support
on i.MX28.
config DEBUG_IMX31_IMX35_UART
bool "i.MX31 and i.MX35 Debug UART"
depends on SOC_IMX31 || SOC_IMX35
help
Say Y here if you want kernel low-level debugging support
on i.MX31 or i.MX35.
config DEBUG_IMX51_UART
bool "i.MX51 Debug UART"
depends on SOC_IMX51
help
Say Y here if you want kernel low-level debugging support
on i.MX51.
config DEBUG_IMX50_IMX53_UART
bool "i.MX50 and i.MX53 Debug UART"
depends on SOC_IMX50 || SOC_IMX53
help
Say Y here if you want kernel low-level debugging support
on i.MX50 or i.MX53.
config DEBUG_S3C_UART0
depends on PLAT_SAMSUNG
bool "Use S3C UART 0 for low-level debug"
help
Say Y here if you want the debug print routines to direct
their output to UART 0. The port must have been initialised
by the boot-loader before use.
The uncompressor code port configuration is now handled
by CONFIG_S3C_LOWLEVEL_UART_PORT.
config DEBUG_S3C_UART1
depends on PLAT_SAMSUNG
bool "Use S3C UART 1 for low-level debug"
help
Say Y here if you want the debug print routines to direct
their output to UART 1. The port must have been initialised
by the boot-loader before use.
The uncompressor code port configuration is now handled
by CONFIG_S3C_LOWLEVEL_UART_PORT.
config DEBUG_S3C_UART2
depends on PLAT_SAMSUNG
bool "Use S3C UART 2 for low-level debug"
help
Say Y here if you want the debug print routines to direct
their output to UART 2. The port must have been initialised
by the boot-loader before use.
The uncompressor code port configuration is now handled
by CONFIG_S3C_LOWLEVEL_UART_PORT.
config DEBUG_REALVIEW_STD_PORT
bool "RealView Default UART"
depends on ARCH_REALVIEW
help
Say Y here if you want the debug print routines to direct
their output to the serial port on RealView EB, PB11MP, PBA8
and PBX platforms.
config DEBUG_REALVIEW_PB1176_PORT
bool "RealView PB1176 UART"
depends on MACH_REALVIEW_PB1176
help
Say Y here if you want the debug print routines to direct
their output to the standard serial port on the RealView
PB1176 platform.
endchoice endchoice
config EARLY_PRINTK config EARLY_PRINTK
...@@ -146,18 +251,6 @@ config OC_ETM ...@@ -146,18 +251,6 @@ config OC_ETM
buffer driver that will allow you to collect traces of the buffer driver that will allow you to collect traces of the
kernel code. kernel code.
config DEBUG_S3C_UART
depends on PLAT_SAMSUNG
int "S3C UART to use for low-level debug"
default "0"
help
Choice for UART for kernel low-level using S3C UARTS,
should be between zero and two. The port must have been
initialised by the boot-loader before use.
The uncompressor code port configuration is now handled
by CONFIG_S3C_LOWLEVEL_UART_PORT.
config ARM_KPROBES_TEST config ARM_KPROBES_TEST
tristate "Kprobes test module" tristate "Kprobes test module"
depends on KPROBES && MODULES depends on KPROBES && MODULES
......
...@@ -75,7 +75,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious) ...@@ -75,7 +75,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
: :
: "memory", "cc"); : "memory", "cc");
if (pen_release == cpu) { if (pen_release == cpu_logical_map(cpu)) {
/* /*
* OK, proper wakeup, we're done * OK, proper wakeup, we're done
*/ */
......
...@@ -132,7 +132,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -132,7 +132,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Note that "pen_release" is the hardware CPU ID, whereas * Note that "pen_release" is the hardware CPU ID, whereas
* "cpu" is Linux's internal ID. * "cpu" is Linux's internal ID.
*/ */
write_pen_release(cpu); write_pen_release(cpu_logical_map(cpu));
if (!(__raw_readl(S5P_ARM_CORE1_STATUS) & S5P_CORE_LOCAL_PWR_EN)) { if (!(__raw_readl(S5P_ARM_CORE1_STATUS) & S5P_CORE_LOCAL_PWR_EN)) {
__raw_writel(S5P_CORE_LOCAL_PWR_EN, __raw_writel(S5P_CORE_LOCAL_PWR_EN,
......
...@@ -37,7 +37,7 @@ static inline void platform_do_lowpower(unsigned int cpu) ...@@ -37,7 +37,7 @@ static inline void platform_do_lowpower(unsigned int cpu)
: :
: "memory", "cc"); : "memory", "cc");
if (pen_release == cpu) { if (pen_release == cpu_logical_map(cpu)) {
/* /*
* OK, proper wakeup, we're done * OK, proper wakeup, we're done
*/ */
......
...@@ -117,7 +117,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -117,7 +117,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* Note that "pen_release" is the hardware CPU ID, whereas * Note that "pen_release" is the hardware CPU ID, whereas
* "cpu" is Linux's internal ID. * "cpu" is Linux's internal ID.
*/ */
pen_release = cpu; pen_release = cpu_logical_map(cpu);
__cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release)); __cpuc_flush_dcache_area((void *)&pen_release, sizeof(pen_release));
outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1)); outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
......
...@@ -14,17 +14,9 @@ ...@@ -14,17 +14,9 @@
#include <mach/mx23.h> #include <mach/mx23.h>
#include <mach/mx28.h> #include <mach/mx28.h>
#ifdef CONFIG_SOC_IMX23 #ifdef CONFIG_DEBUG_IMX23_UART
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX23_DUART_BASE_ADDR #define UART_PADDR MX23_DUART_BASE_ADDR
#endif #elif defined (CONFIG_DEBUG_IMX28_UART)
#ifdef CONFIG_SOC_IMX28
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX28_DUART_BASE_ADDR #define UART_PADDR MX28_DUART_BASE_ADDR
#endif #endif
......
...@@ -69,7 +69,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious) ...@@ -69,7 +69,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
: :
: "memory", "cc"); : "memory", "cc");
if (pen_release == cpu) { if (pen_release == cpu_logical_map(cpu)) {
/* /*
* OK, proper wakeup, we're done * OK, proper wakeup, we're done
*/ */
......
...@@ -10,23 +10,10 @@ ...@@ -10,23 +10,10 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#if defined(CONFIG_MACH_REALVIEW_EB) || \ #ifdef CONFIG_DEBUG_REALVIEW_STD_PORT
defined(CONFIG_MACH_REALVIEW_PB11MP) || \
defined(CONFIG_MACH_REALVIEW_PBA8) || \
defined(CONFIG_MACH_REALVIEW_PBX)
#ifndef DEBUG_LL_UART_OFFSET
#define DEBUG_LL_UART_OFFSET 0x00009000 #define DEBUG_LL_UART_OFFSET 0x00009000
#elif DEBUG_LL_UART_OFFSET != 0x00009000 #elif defined(CONFIG_DEBUG_REALVIEW_PB1176_PORT)
#warning "DEBUG_LL_UART_OFFSET already defined to a different value"
#endif
#endif
#ifdef CONFIG_MACH_REALVIEW_PB1176
#ifndef DEBUG_LL_UART_OFFSET
#define DEBUG_LL_UART_OFFSET 0x0010c000 #define DEBUG_LL_UART_OFFSET 0x0010c000
#elif DEBUG_LL_UART_OFFSET != 0x0010c000
#warning "DEBUG_LL_UART_OFFSET already defined to a different value"
#endif
#endif #endif
#ifndef DEBUG_LL_UART_OFFSET #ifndef DEBUG_LL_UART_OFFSET
......
...@@ -74,6 +74,8 @@ void __cpuinit sh73a0_secondary_init(unsigned int cpu) ...@@ -74,6 +74,8 @@ void __cpuinit sh73a0_secondary_init(unsigned int cpu)
int __cpuinit sh73a0_boot_secondary(unsigned int cpu) int __cpuinit sh73a0_boot_secondary(unsigned int cpu)
{ {
cpu = cpu_logical_map(cpu);
/* enable cache coherency */ /* enable cache coherency */
modify_scu_cpu_psr(0, 3 << (cpu * 8)); modify_scu_cpu_psr(0, 3 << (cpu * 8));
...@@ -87,6 +89,8 @@ int __cpuinit sh73a0_boot_secondary(unsigned int cpu) ...@@ -87,6 +89,8 @@ int __cpuinit sh73a0_boot_secondary(unsigned int cpu)
void __init sh73a0_smp_prepare_cpus(void) void __init sh73a0_smp_prepare_cpus(void)
{ {
int cpu = cpu_logical_map(0);
scu_enable(scu_base_addr()); scu_enable(scu_base_addr());
/* Map the reset vector (in headsmp.S) */ /* Map the reset vector (in headsmp.S) */
...@@ -94,5 +98,5 @@ void __init sh73a0_smp_prepare_cpus(void) ...@@ -94,5 +98,5 @@ void __init sh73a0_smp_prepare_cpus(void)
__raw_writel(__pa(shmobile_secondary_vector), __io(SBAR)); __raw_writel(__pa(shmobile_secondary_vector), __io(SBAR));
/* enable cache coherency on CPU0 */ /* enable cache coherency on CPU0 */
modify_scu_cpu_psr(0, 3 << (0 * 8)); modify_scu_cpu_psr(0, 3 << (cpu * 8));
} }
...@@ -24,7 +24,7 @@ static inline void platform_do_lowpower(unsigned int cpu) ...@@ -24,7 +24,7 @@ static inline void platform_do_lowpower(unsigned int cpu)
for (;;) { for (;;) {
__asm__ __volatile__("dsb\n\t" "wfi\n\t" __asm__ __volatile__("dsb\n\t" "wfi\n\t"
: : : "memory"); : : : "memory");
if (pen_release == cpu) { if (pen_release == cpu_logical_map(cpu)) {
/* /*
* OK, proper wakeup, we're done * OK, proper wakeup, we're done
*/ */
......
...@@ -96,7 +96,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -96,7 +96,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* the holding pen - release it, then wait for it to flag * the holding pen - release it, then wait for it to flag
* that it has been released by resetting pen_release. * that it has been released by resetting pen_release.
*/ */
write_pen_release(cpu); write_pen_release(cpu_logical_map(cpu));
gic_raise_softirq(cpumask_of(cpu), 1); gic_raise_softirq(cpumask_of(cpu), 1);
......
...@@ -65,7 +65,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious) ...@@ -65,7 +65,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
for (;;) { for (;;) {
wfi(); wfi();
if (pen_release == cpu) { if (pen_release == cpu_logical_map(cpu)) {
/* /*
* OK, proper wakeup, we're done * OK, proper wakeup, we're done
*/ */
......
...@@ -12,43 +12,17 @@ ...@@ -12,43 +12,17 @@
*/ */
#include <mach/hardware.h> #include <mach/hardware.h>
#ifdef CONFIG_SOC_IMX1 #ifdef CONFIG_DEBUG_IMX1_UART
#define UART_PADDR MX1_UART1_BASE_ADDR #define UART_PADDR MX1_UART1_BASE_ADDR
#endif #elif defined (CONFIG_DEBUG_IMX25_UART)
#ifdef CONFIG_SOC_IMX25
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX25_UART1_BASE_ADDR #define UART_PADDR MX25_UART1_BASE_ADDR
#endif #elif defined (CONFIG_DEBUG_IMX21_IMX27_UART)
#if defined(CONFIG_SOC_IMX21) || defined (CONFIG_SOC_IMX27)
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX2x_UART1_BASE_ADDR #define UART_PADDR MX2x_UART1_BASE_ADDR
#endif #elif defined (CONFIG_DEBUG_IMX31_IMX35_UART)
#if defined(CONFIG_SOC_IMX31) || defined(CONFIG_SOC_IMX35)
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX3x_UART1_BASE_ADDR #define UART_PADDR MX3x_UART1_BASE_ADDR
#endif #elif defined (CONFIG_DEBUG_IMX51_UART)
#ifdef CONFIG_SOC_IMX51
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX51_UART1_BASE_ADDR #define UART_PADDR MX51_UART1_BASE_ADDR
#endif #elif defined (CONFIG_DEBUG_IMX50_IMX53_UART)
/* iMX50/53 have same addresses, but not iMX51 */
#if defined(CONFIG_SOC_IMX50) || defined(CONFIG_SOC_IMX53)
#ifdef UART_PADDR
#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
#endif
#define UART_PADDR MX53_UART1_BASE_ADDR #define UART_PADDR MX53_UART1_BASE_ADDR
#endif #endif
......
...@@ -362,4 +362,11 @@ config SAMSUNG_PD ...@@ -362,4 +362,11 @@ config SAMSUNG_PD
help help
Say Y here if you want to control Power Domain by Runtime PM. Say Y here if you want to control Power Domain by Runtime PM.
config DEBUG_S3C_UART
depends on PLAT_SAMSUNG
int
default "0" if DEBUG_S3C_UART0
default "1" if DEBUG_S3C_UART1
default "2" if DEBUG_S3C_UART2
endif endif
...@@ -77,7 +77,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) ...@@ -77,7 +77,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
* since we haven't sent them a soft interrupt, they shouldn't * since we haven't sent them a soft interrupt, they shouldn't
* be there. * be there.
*/ */
write_pen_release(cpu); write_pen_release(cpu_logical_map(cpu));
/* /*
* Send the secondary CPU a soft interrupt, thereby causing * Send the secondary CPU a soft interrupt, thereby causing
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment