diff options
| author | Olof Johansson <olof@lixom.net> | 2013-02-09 23:55:03 -0500 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2013-02-09 23:55:03 -0500 |
| commit | 893db07f50596bd42248dcffbe8157abc7204bdd (patch) | |
| tree | ad50914007a8bb39676b8c9e97f71be9610c902e | |
| parent | 836dc9e3fbbab0c30aa6e664417225f5c1fb1c39 (diff) | |
| parent | 63fc1370c19052fa5bec9593557431efc7ecc9fe (diff) | |
Merge tag 'highbank-fixes-for-3.8' of git://sources.calxeda.com/kernel/linux into fixes
From Rob Herring:
highbank fixes for 3.8
-Compile fix for !SMP
-More cpu cluster id related fixes
* tag 'highbank-fixes-for-3.8' of git://sources.calxeda.com/kernel/linux:
ARM: highbank: mask cluster id from cpu_logical_map
ARM: scu: mask cluster id from cpu_logical_map
ARM: scu: add empty scu_enable for !CONFIG_SMP
| -rw-r--r-- | arch/arm/include/asm/smp_scu.h | 8 | ||||
| -rw-r--r-- | arch/arm/kernel/smp_scu.c | 2 | ||||
| -rw-r--r-- | arch/arm/mach-highbank/highbank.c | 3 | ||||
| -rw-r--r-- | arch/arm/mach-highbank/sysregs.h | 4 |
4 files changed, 12 insertions, 5 deletions
diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h index 4eb6d005ffaa..86dff32a0737 100644 --- a/arch/arm/include/asm/smp_scu.h +++ b/arch/arm/include/asm/smp_scu.h | |||
| @@ -7,8 +7,14 @@ | |||
| 7 | 7 | ||
| 8 | #ifndef __ASSEMBLER__ | 8 | #ifndef __ASSEMBLER__ |
| 9 | unsigned int scu_get_core_count(void __iomem *); | 9 | unsigned int scu_get_core_count(void __iomem *); |
| 10 | void scu_enable(void __iomem *); | ||
| 11 | int scu_power_mode(void __iomem *, unsigned int); | 10 | int scu_power_mode(void __iomem *, unsigned int); |
| 11 | |||
| 12 | #ifdef CONFIG_SMP | ||
| 13 | void scu_enable(void __iomem *scu_base); | ||
| 14 | #else | ||
| 15 | static inline void scu_enable(void __iomem *scu_base) {} | ||
| 16 | #endif | ||
| 17 | |||
| 12 | #endif | 18 | #endif |
| 13 | 19 | ||
| 14 | #endif | 20 | #endif |
diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c index b9f015e843d8..45eac87ed66a 100644 --- a/arch/arm/kernel/smp_scu.c +++ b/arch/arm/kernel/smp_scu.c | |||
| @@ -75,7 +75,7 @@ void scu_enable(void __iomem *scu_base) | |||
| 75 | int scu_power_mode(void __iomem *scu_base, unsigned int mode) | 75 | int scu_power_mode(void __iomem *scu_base, unsigned int mode) |
| 76 | { | 76 | { |
| 77 | unsigned int val; | 77 | unsigned int val; |
| 78 | int cpu = cpu_logical_map(smp_processor_id()); | 78 | int cpu = MPIDR_AFFINITY_LEVEL(cpu_logical_map(smp_processor_id()), 0); |
| 79 | 79 | ||
| 80 | if (mode > 3 || mode == 1 || cpu > 3) | 80 | if (mode > 3 || mode == 1 || cpu > 3) |
| 81 | return -EINVAL; | 81 | return -EINVAL; |
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index 981dc1e1da51..e6c061282939 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | 28 | ||
| 29 | #include <asm/arch_timer.h> | 29 | #include <asm/arch_timer.h> |
| 30 | #include <asm/cacheflush.h> | 30 | #include <asm/cacheflush.h> |
| 31 | #include <asm/cputype.h> | ||
| 31 | #include <asm/smp_plat.h> | 32 | #include <asm/smp_plat.h> |
| 32 | #include <asm/smp_twd.h> | 33 | #include <asm/smp_twd.h> |
| 33 | #include <asm/hardware/arm_timer.h> | 34 | #include <asm/hardware/arm_timer.h> |
| @@ -59,7 +60,7 @@ static void __init highbank_scu_map_io(void) | |||
| 59 | 60 | ||
| 60 | void highbank_set_cpu_jump(int cpu, void *jump_addr) | 61 | void highbank_set_cpu_jump(int cpu, void *jump_addr) |
| 61 | { | 62 | { |
| 62 | cpu = cpu_logical_map(cpu); | 63 | cpu = MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 0); |
| 63 | writel(virt_to_phys(jump_addr), HB_JUMP_TABLE_VIRT(cpu)); | 64 | writel(virt_to_phys(jump_addr), HB_JUMP_TABLE_VIRT(cpu)); |
| 64 | __cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16); | 65 | __cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16); |
| 65 | outer_clean_range(HB_JUMP_TABLE_PHYS(cpu), | 66 | outer_clean_range(HB_JUMP_TABLE_PHYS(cpu), |
diff --git a/arch/arm/mach-highbank/sysregs.h b/arch/arm/mach-highbank/sysregs.h index 70af9d13fcef..5995df7f2622 100644 --- a/arch/arm/mach-highbank/sysregs.h +++ b/arch/arm/mach-highbank/sysregs.h | |||
| @@ -37,7 +37,7 @@ extern void __iomem *sregs_base; | |||
| 37 | 37 | ||
| 38 | static inline void highbank_set_core_pwr(void) | 38 | static inline void highbank_set_core_pwr(void) |
| 39 | { | 39 | { |
| 40 | int cpu = cpu_logical_map(smp_processor_id()); | 40 | int cpu = MPIDR_AFFINITY_LEVEL(cpu_logical_map(smp_processor_id()), 0); |
| 41 | if (scu_base_addr) | 41 | if (scu_base_addr) |
| 42 | scu_power_mode(scu_base_addr, SCU_PM_POWEROFF); | 42 | scu_power_mode(scu_base_addr, SCU_PM_POWEROFF); |
| 43 | else | 43 | else |
| @@ -46,7 +46,7 @@ static inline void highbank_set_core_pwr(void) | |||
| 46 | 46 | ||
| 47 | static inline void highbank_clear_core_pwr(void) | 47 | static inline void highbank_clear_core_pwr(void) |
| 48 | { | 48 | { |
| 49 | int cpu = cpu_logical_map(smp_processor_id()); | 49 | int cpu = MPIDR_AFFINITY_LEVEL(cpu_logical_map(smp_processor_id()), 0); |
| 50 | if (scu_base_addr) | 50 | if (scu_base_addr) |
| 51 | scu_power_mode(scu_base_addr, SCU_PM_NORMAL); | 51 | scu_power_mode(scu_base_addr, SCU_PM_NORMAL); |
| 52 | else | 52 | else |
