Merge branch 'next/cross-platform' of git://git.linaro.org/people/arnd/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 2 Nov 2011 03:34:22 +0000 (20:34 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 2 Nov 2011 03:34:22 +0000 (20:34 -0700)
* '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

15 files changed:
arch/arm/Kconfig.debug
arch/arm/mach-exynos4/hotplug.c
arch/arm/mach-exynos4/platsmp.c
arch/arm/mach-msm/hotplug.c
arch/arm/mach-msm/platsmp.c
arch/arm/mach-mxs/include/mach/debug-macro.S
arch/arm/mach-realview/hotplug.c
arch/arm/mach-realview/include/mach/debug-macro.S
arch/arm/mach-shmobile/smp-sh73a0.c
arch/arm/mach-ux500/hotplug.c
arch/arm/mach-ux500/platsmp.c
arch/arm/mach-vexpress/hotplug.c
arch/arm/plat-mxc/include/mach/debug-macro.S
arch/arm/plat-samsung/Kconfig
arch/arm/plat-versatile/platsmp.c

index f283938..64db5b1 100644 (file)
@@ -128,6 +128,111 @@ choice
                  Say Y here if you want the debug print routines to direct
                  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
 
 config EARLY_PRINTK
@@ -146,18 +251,6 @@ config OC_ETM
          buffer driver that will allow you to collect traces of the
          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
        tristate "Kprobes test module"
        depends on KPROBES && MODULES
index 7490789..da70e7e 100644 (file)
@@ -75,7 +75,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
                    :
                    : "memory", "cc");
 
-               if (pen_release == cpu) {
+               if (pen_release == cpu_logical_map(cpu)) {
                        /*
                         * OK, proper wakeup, we're done
                         */
index 782dcf1..0559540 100644 (file)
@@ -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
         * "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)) {
                __raw_writel(S5P_CORE_LOCAL_PWR_EN,
index 5a31f70..41c252d 100644 (file)
@@ -37,7 +37,7 @@ static inline void platform_do_lowpower(unsigned int cpu)
                    :
                    : "memory", "cc");
 
-               if (pen_release == cpu) {
+               if (pen_release == cpu_logical_map(cpu)) {
                        /*
                         * OK, proper wakeup, we're done
                         */
index 7276595..fdec58a 100644 (file)
@@ -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
         * "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));
        outer_clean_range(__pa(&pen_release), __pa(&pen_release + 1));
 
index 714570d..90c6b78 100644 (file)
 #include <mach/mx23.h>
 #include <mach/mx28.h>
 
-#ifdef CONFIG_SOC_IMX23
-#ifdef UART_PADDR
-#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
-#endif
+#ifdef CONFIG_DEBUG_IMX23_UART
 #define UART_PADDR     MX23_DUART_BASE_ADDR
-#endif
-
-#ifdef CONFIG_SOC_IMX28
-#ifdef UART_PADDR
-#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
-#endif
+#elif defined (CONFIG_DEBUG_IMX28_UART)
 #define UART_PADDR     MX28_DUART_BASE_ADDR
 #endif
 
index a87523d..ac1aed2 100644 (file)
@@ -69,7 +69,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
                    :
                    : "memory", "cc");
 
-               if (pen_release == cpu) {
+               if (pen_release == cpu_logical_map(cpu)) {
                        /*
                         * OK, proper wakeup, we're done
                         */
index fb4901c..8cc372d 100644 (file)
  * published by the Free Software Foundation.
  */
 
-#if defined(CONFIG_MACH_REALVIEW_EB) || \
-    defined(CONFIG_MACH_REALVIEW_PB11MP) || \
-    defined(CONFIG_MACH_REALVIEW_PBA8) || \
-    defined(CONFIG_MACH_REALVIEW_PBX)
-#ifndef DEBUG_LL_UART_OFFSET
+#ifdef CONFIG_DEBUG_REALVIEW_STD_PORT
 #define DEBUG_LL_UART_OFFSET   0x00009000
-#elif DEBUG_LL_UART_OFFSET != 0x00009000
-#warning "DEBUG_LL_UART_OFFSET already defined to a different value"
-#endif
-#endif
-
-#ifdef CONFIG_MACH_REALVIEW_PB1176
-#ifndef DEBUG_LL_UART_OFFSET
+#elif defined(CONFIG_DEBUG_REALVIEW_PB1176_PORT)
 #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
 
 #ifndef DEBUG_LL_UART_OFFSET
index 3ffdbc9..be1ade7 100644 (file)
@@ -74,6 +74,8 @@ void __cpuinit sh73a0_secondary_init(unsigned int cpu)
 
 int __cpuinit sh73a0_boot_secondary(unsigned int cpu)
 {
+       cpu = cpu_logical_map(cpu);
+
        /* enable cache coherency */
        modify_scu_cpu_psr(0, 3 << (cpu * 8));
 
@@ -87,6 +89,8 @@ int __cpuinit sh73a0_boot_secondary(unsigned int cpu)
 
 void __init sh73a0_smp_prepare_cpus(void)
 {
+       int cpu = cpu_logical_map(0);
+
        scu_enable(scu_base_addr());
 
        /* Map the reset vector (in headsmp.S) */
@@ -94,5 +98,5 @@ void __init sh73a0_smp_prepare_cpus(void)
        __raw_writel(__pa(shmobile_secondary_vector), __io(SBAR));
 
        /* enable cache coherency on CPU0 */
-       modify_scu_cpu_psr(0, 3 << (0 * 8));
+       modify_scu_cpu_psr(0, 3 << (cpu * 8));
 }
index dd8037e..572015e 100644 (file)
@@ -24,7 +24,7 @@ static inline void platform_do_lowpower(unsigned int cpu)
        for (;;) {
                __asm__ __volatile__("dsb\n\t" "wfi\n\t"
                                : : : "memory");
-               if (pen_release == cpu) {
+               if (pen_release == cpu_logical_map(cpu)) {
                        /*
                         * OK, proper wakeup, we're done
                         */
index eb51991..a19e398 100644 (file)
@@ -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
         * 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);
 
index 3668cf9..813ee08 100644 (file)
@@ -65,7 +65,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
        for (;;) {
                wfi();
 
-               if (pen_release == cpu) {
+               if (pen_release == cpu_logical_map(cpu)) {
                        /*
                         * OK, proper wakeup, we're done
                         */
index a304593..7298601 100644 (file)
  */
 #include <mach/hardware.h>
 
-#ifdef CONFIG_SOC_IMX1
+#ifdef CONFIG_DEBUG_IMX1_UART
 #define UART_PADDR     MX1_UART1_BASE_ADDR
-#endif
-
-#ifdef CONFIG_SOC_IMX25
-#ifdef UART_PADDR
-#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
-#endif
+#elif defined (CONFIG_DEBUG_IMX25_UART)
 #define UART_PADDR     MX25_UART1_BASE_ADDR
-#endif
-
-#if defined(CONFIG_SOC_IMX21) || defined (CONFIG_SOC_IMX27)
-#ifdef UART_PADDR
-#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
-#endif
+#elif defined (CONFIG_DEBUG_IMX21_IMX27_UART)
 #define UART_PADDR     MX2x_UART1_BASE_ADDR
-#endif
-
-#if defined(CONFIG_SOC_IMX31) || defined(CONFIG_SOC_IMX35)
-#ifdef UART_PADDR
-#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
-#endif
+#elif defined (CONFIG_DEBUG_IMX31_IMX35_UART)
 #define UART_PADDR     MX3x_UART1_BASE_ADDR
-#endif
-
-#ifdef CONFIG_SOC_IMX51
-#ifdef UART_PADDR
-#error "CONFIG_DEBUG_LL is incompatible with multiple archs"
-#endif
+#elif defined (CONFIG_DEBUG_IMX51_UART)
 #define UART_PADDR     MX51_UART1_BASE_ADDR
-#endif
-
-/* 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
+#elif defined (CONFIG_DEBUG_IMX50_IMX53_UART)
 #define UART_PADDR     MX53_UART1_BASE_ADDR
 #endif
 
index dffa37b..3895f9a 100644 (file)
@@ -362,4 +362,11 @@ config SAMSUNG_PD
        help
          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
index 51ecfea..92f18d3 100644 (file)
@@ -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
         * be there.
         */
-       write_pen_release(cpu);
+       write_pen_release(cpu_logical_map(cpu));
 
        /*
         * Send the secondary CPU a soft interrupt, thereby causing