diff options
| author | Will Deacon <will.deacon@arm.com> | 2011-08-09 07:24:07 -0400 |
|---|---|---|
| committer | Will Deacon <will.deacon@arm.com> | 2011-11-16 05:56:53 -0500 |
| commit | eaa142ca3dee1478aca1a645bb0e5a249a33241a (patch) | |
| tree | 0f635c064c71f3f1c684f41df4a2638688099c3a | |
| parent | bf14fc54d6386ccd1ef3f1b0ff69e7a765cf8ded (diff) | |
ARM: mach-imx: convert logical CPU numbers to physical numbers
This patch uses the new cpu_logical_map() macro for converting logical
CPU numbers into physical numbers when releasing CPUs during the SMP
boot and CPU hotplug paths.
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
| -rw-r--r-- | arch/arm/mach-imx/src.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/src.c b/arch/arm/mach-imx/src.c index 36cacbd0dcc2..a8e33681b732 100644 --- a/arch/arm/mach-imx/src.c +++ b/arch/arm/mach-imx/src.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
| 15 | #include <linux/of.h> | 15 | #include <linux/of.h> |
| 16 | #include <linux/of_address.h> | 16 | #include <linux/of_address.h> |
| 17 | #include <linux/smp.h> | ||
| 17 | #include <asm/unified.h> | 18 | #include <asm/unified.h> |
| 18 | 19 | ||
| 19 | #define SRC_SCR 0x000 | 20 | #define SRC_SCR 0x000 |
| @@ -23,10 +24,15 @@ | |||
| 23 | 24 | ||
| 24 | static void __iomem *src_base; | 25 | static void __iomem *src_base; |
| 25 | 26 | ||
| 27 | #ifndef CONFIG_SMP | ||
| 28 | #define cpu_logical_map(cpu) 0 | ||
| 29 | #endif | ||
| 30 | |||
| 26 | void imx_enable_cpu(int cpu, bool enable) | 31 | void imx_enable_cpu(int cpu, bool enable) |
| 27 | { | 32 | { |
| 28 | u32 mask, val; | 33 | u32 mask, val; |
| 29 | 34 | ||
| 35 | cpu = cpu_logical_map(cpu); | ||
| 30 | mask = 1 << (BP_SRC_SCR_CORE1_ENABLE + cpu - 1); | 36 | mask = 1 << (BP_SRC_SCR_CORE1_ENABLE + cpu - 1); |
| 31 | val = readl_relaxed(src_base + SRC_SCR); | 37 | val = readl_relaxed(src_base + SRC_SCR); |
| 32 | val = enable ? val | mask : val & ~mask; | 38 | val = enable ? val | mask : val & ~mask; |
| @@ -35,6 +41,7 @@ void imx_enable_cpu(int cpu, bool enable) | |||
| 35 | 41 | ||
| 36 | void imx_set_cpu_jump(int cpu, void *jump_addr) | 42 | void imx_set_cpu_jump(int cpu, void *jump_addr) |
| 37 | { | 43 | { |
| 44 | cpu = cpu_logical_map(cpu); | ||
| 38 | writel_relaxed(BSYM(virt_to_phys(jump_addr)), | 45 | writel_relaxed(BSYM(virt_to_phys(jump_addr)), |
| 39 | src_base + SRC_GPR1 + cpu * 8); | 46 | src_base + SRC_GPR1 + cpu * 8); |
| 40 | } | 47 | } |
