aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/cpu-probe.c
diff options
context:
space:
mode:
authorJayachandran C <jayachandranc@netlogicmicro.com>2011-05-11 02:34:58 -0400
committerRalf Baechle <ralf@linux-mips.org>2011-05-19 04:55:39 -0400
commita7117c6bddcbfff2fa237a14a853b32cb94bf59a (patch)
tree3a81d4194766dedf274985047022d3441074a3db /arch/mips/kernel/cpu-probe.c
parent61c4f2c81c61f73549928dfd9f3e8f26aa36a8cf (diff)
MIPS: Netlogic XLR/XLS processor IDs.
Add Netlogic Microsystems company ID and processor IDs for XLR and XLS processors for CPU probe. Add CPU_XLR to cpu_type_enum. Signed-off-by: Jayachandran C <jayachandranc@netlogicmicro.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/2367/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/kernel/cpu-probe.c')
-rw-r--r--arch/mips/kernel/cpu-probe.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index f65d4c8c65a6..c7b7eb24e277 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -988,6 +988,59 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
988 } 988 }
989} 989}
990 990
991static inline void cpu_probe_netlogic(struct cpuinfo_mips *c, int cpu)
992{
993 decode_configs(c);
994
995 c->options = (MIPS_CPU_TLB |
996 MIPS_CPU_4KEX |
997 MIPS_CPU_COUNTER |
998 MIPS_CPU_DIVEC |
999 MIPS_CPU_WATCH |
1000 MIPS_CPU_EJTAG |
1001 MIPS_CPU_LLSC);
1002
1003 switch (c->processor_id & 0xff00) {
1004 case PRID_IMP_NETLOGIC_XLR732:
1005 case PRID_IMP_NETLOGIC_XLR716:
1006 case PRID_IMP_NETLOGIC_XLR532:
1007 case PRID_IMP_NETLOGIC_XLR308:
1008 case PRID_IMP_NETLOGIC_XLR532C:
1009 case PRID_IMP_NETLOGIC_XLR516C:
1010 case PRID_IMP_NETLOGIC_XLR508C:
1011 case PRID_IMP_NETLOGIC_XLR308C:
1012 c->cputype = CPU_XLR;
1013 __cpu_name[cpu] = "Netlogic XLR";
1014 break;
1015
1016 case PRID_IMP_NETLOGIC_XLS608:
1017 case PRID_IMP_NETLOGIC_XLS408:
1018 case PRID_IMP_NETLOGIC_XLS404:
1019 case PRID_IMP_NETLOGIC_XLS208:
1020 case PRID_IMP_NETLOGIC_XLS204:
1021 case PRID_IMP_NETLOGIC_XLS108:
1022 case PRID_IMP_NETLOGIC_XLS104:
1023 case PRID_IMP_NETLOGIC_XLS616B:
1024 case PRID_IMP_NETLOGIC_XLS608B:
1025 case PRID_IMP_NETLOGIC_XLS416B:
1026 case PRID_IMP_NETLOGIC_XLS412B:
1027 case PRID_IMP_NETLOGIC_XLS408B:
1028 case PRID_IMP_NETLOGIC_XLS404B:
1029 c->cputype = CPU_XLR;
1030 __cpu_name[cpu] = "Netlogic XLS";
1031 break;
1032
1033 default:
1034 printk(KERN_INFO "Unknown Netlogic chip id [%02x]!\n",
1035 c->processor_id);
1036 c->cputype = CPU_XLR;
1037 break;
1038 }
1039
1040 c->isa_level = MIPS_CPU_ISA_M64R1;
1041 c->tlbsize = ((read_c0_config1() >> 25) & 0x3f) + 1;
1042}
1043
991#ifdef CONFIG_64BIT 1044#ifdef CONFIG_64BIT
992/* For use by uaccess.h */ 1045/* For use by uaccess.h */
993u64 __ua_limit; 1046u64 __ua_limit;
@@ -1035,6 +1088,9 @@ __cpuinit void cpu_probe(void)
1035 case PRID_COMP_INGENIC: 1088 case PRID_COMP_INGENIC:
1036 cpu_probe_ingenic(c, cpu); 1089 cpu_probe_ingenic(c, cpu);
1037 break; 1090 break;
1091 case PRID_COMP_NETLOGIC:
1092 cpu_probe_netlogic(c, cpu);
1093 break;
1038 } 1094 }
1039 1095
1040 BUG_ON(!__cpu_name[cpu]); 1096 BUG_ON(!__cpu_name[cpu]);