aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel
diff options
context:
space:
mode:
authorJayachandran C <jayachandranc@netlogicmicro.com>2011-11-15 19:21:20 -0500
committerRalf Baechle <ralf@linux-mips.org>2011-12-07 17:04:55 -0500
commita3d4fb2d2a4c52b22cde90049a78e323cde187e5 (patch)
treee5ed7235b8f8a0b29b9aad11b4d1f57ef2f59809 /arch/mips/kernel
parent0be3d9bb1460a87170a1b78b9ab12cb0ac02c2dc (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.c19
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