aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/kernel/cpu-probe.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/kernel/cpu-probe.c')
-rw-r--r--arch/mips/kernel/cpu-probe.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index c9207b5fd92..6b3c63dd181 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -154,6 +154,7 @@ void __init check_wait(void)
154 case CPU_25KF: 154 case CPU_25KF:
155 case CPU_PR4450: 155 case CPU_PR4450:
156 case CPU_BCM3302: 156 case CPU_BCM3302:
157 case CPU_CAVIUM_OCTEON:
157 cpu_wait = r4k_wait; 158 cpu_wait = r4k_wait;
158 break; 159 break;
159 160
@@ -875,6 +876,27 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)
875 } 876 }
876} 877}
877 878
879static inline void cpu_probe_cavium(struct cpuinfo_mips *c, unsigned int cpu)
880{
881 decode_configs(c);
882 switch (c->processor_id & 0xff00) {
883 case PRID_IMP_CAVIUM_CN38XX:
884 case PRID_IMP_CAVIUM_CN31XX:
885 case PRID_IMP_CAVIUM_CN30XX:
886 case PRID_IMP_CAVIUM_CN58XX:
887 case PRID_IMP_CAVIUM_CN56XX:
888 case PRID_IMP_CAVIUM_CN50XX:
889 case PRID_IMP_CAVIUM_CN52XX:
890 c->cputype = CPU_CAVIUM_OCTEON;
891 __cpu_name[cpu] = "Cavium Octeon";
892 break;
893 default:
894 printk(KERN_INFO "Unknown Octeon chip!\n");
895 c->cputype = CPU_UNKNOWN;
896 break;
897 }
898}
899
878const char *__cpu_name[NR_CPUS]; 900const char *__cpu_name[NR_CPUS];
879 901
880__cpuinit void cpu_probe(void) 902__cpuinit void cpu_probe(void)
@@ -909,6 +931,9 @@ __cpuinit void cpu_probe(void)
909 case PRID_COMP_NXP: 931 case PRID_COMP_NXP:
910 cpu_probe_nxp(c, cpu); 932 cpu_probe_nxp(c, cpu);
911 break; 933 break;
934 case PRID_COMP_CAVIUM:
935 cpu_probe_cavium(c, cpu);
936 break;
912 } 937 }
913 938
914 BUG_ON(!__cpu_name[cpu]); 939 BUG_ON(!__cpu_name[cpu]);