diff options
author | Jayachandran C <jayachandranc@netlogicmicro.com> | 2011-11-15 19:21:20 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2011-12-07 17:04:55 -0500 |
commit | a3d4fb2d2a4c52b22cde90049a78e323cde187e5 (patch) | |
tree | e5ed7235b8f8a0b29b9aad11b4d1f57ef2f59809 /arch/mips/kernel | |
parent | 0be3d9bb1460a87170a1b78b9ab12cb0ac02c2dc (diff) |
MIPS: Netlogic: XLP CPU support.
Add support for Netlogic's XLP MIPS SoC. This patch adds:
* XLP processor ID in cpu_probe.c and asm/cpu.h
* XLP case to asm/module.h
* CPU_XLP case to mm/tlbex.c
* minor change to r4k cache handling to ignore XLP secondary cache
* XLP cpu overrides to mach-netlogic/cpu-feature-overrides.h
Signed-off-by: Jayachandran C <jayachandranc@netlogicmicro.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/2966/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel')
-rw-r--r-- | arch/mips/kernel/cpu-probe.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index aa20382b9305..92fae7f459cf 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -192,6 +192,7 @@ void __init check_wait(void) | |||
192 | case CPU_CAVIUM_OCTEON2: | 192 | case CPU_CAVIUM_OCTEON2: |
193 | case CPU_JZRISC: | 193 | case CPU_JZRISC: |
194 | case CPU_XLR: | 194 | case CPU_XLR: |
195 | case CPU_XLP: | ||
195 | cpu_wait = r4k_wait; | 196 | cpu_wait = r4k_wait; |
196 | break; | 197 | break; |
197 | 198 | ||
@@ -1024,6 +1025,11 @@ static inline void cpu_probe_netlogic(struct cpuinfo_mips *c, int cpu) | |||
1024 | MIPS_CPU_LLSC); | 1025 | MIPS_CPU_LLSC); |
1025 | 1026 | ||
1026 | switch (c->processor_id & 0xff00) { | 1027 | switch (c->processor_id & 0xff00) { |
1028 | case PRID_IMP_NETLOGIC_XLP832: | ||
1029 | c->cputype = CPU_XLP; | ||
1030 | __cpu_name[cpu] = "Netlogic XLP"; | ||
1031 | break; | ||
1032 | |||
1027 | case PRID_IMP_NETLOGIC_XLR732: | 1033 | case PRID_IMP_NETLOGIC_XLR732: |
1028 | case PRID_IMP_NETLOGIC_XLR716: | 1034 | case PRID_IMP_NETLOGIC_XLR716: |
1029 | case PRID_IMP_NETLOGIC_XLR532: | 1035 | case PRID_IMP_NETLOGIC_XLR532: |
@@ -1054,14 +1060,21 @@ static inline void cpu_probe_netlogic(struct cpuinfo_mips *c, int cpu) | |||
1054 | break; | 1060 | break; |
1055 | 1061 | ||
1056 | default: | 1062 | default: |
1057 | printk(KERN_INFO "Unknown Netlogic chip id [%02x]!\n", | 1063 | pr_info("Unknown Netlogic chip id [%02x]!\n", |
1058 | c->processor_id); | 1064 | c->processor_id); |
1059 | c->cputype = CPU_XLR; | 1065 | c->cputype = CPU_XLR; |
1060 | break; | 1066 | break; |
1061 | } | 1067 | } |
1062 | 1068 | ||
1063 | c->isa_level = MIPS_CPU_ISA_M64R1; | 1069 | if (c->cputype == CPU_XLP) { |
1064 | c->tlbsize = ((read_c0_config1() >> 25) & 0x3f) + 1; | 1070 | c->isa_level = MIPS_CPU_ISA_M64R2; |
1071 | c->options |= (MIPS_CPU_FPU | MIPS_CPU_ULRI | MIPS_CPU_MCHECK); | ||
1072 | /* This will be updated again after all threads are woken up */ | ||
1073 | c->tlbsize = ((read_c0_config6() >> 16) & 0xffff) + 1; | ||
1074 | } else { | ||
1075 | c->isa_level = MIPS_CPU_ISA_M64R1; | ||
1076 | c->tlbsize = ((read_c0_config1() >> 25) & 0x3f) + 1; | ||
1077 | } | ||
1065 | } | 1078 | } |
1066 | 1079 | ||
1067 | #ifdef CONFIG_64BIT | 1080 | #ifdef CONFIG_64BIT |