diff options
Diffstat (limited to 'arch/arm/mach-imx/src.c')
| -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 | } |
