|
@@ -154,6 +154,7 @@ void __init check_wait(void)
|
|
|
case CPU_25KF:
|
|
|
case CPU_PR4450:
|
|
|
case CPU_BCM3302:
|
|
|
+ case CPU_CAVIUM_OCTEON:
|
|
|
cpu_wait = r4k_wait;
|
|
|
break;
|
|
|
|
|
@@ -875,6 +876,27 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static inline void cpu_probe_cavium(struct cpuinfo_mips *c, unsigned int cpu)
|
|
|
+{
|
|
|
+ decode_configs(c);
|
|
|
+ switch (c->processor_id & 0xff00) {
|
|
|
+ case PRID_IMP_CAVIUM_CN38XX:
|
|
|
+ case PRID_IMP_CAVIUM_CN31XX:
|
|
|
+ case PRID_IMP_CAVIUM_CN30XX:
|
|
|
+ case PRID_IMP_CAVIUM_CN58XX:
|
|
|
+ case PRID_IMP_CAVIUM_CN56XX:
|
|
|
+ case PRID_IMP_CAVIUM_CN50XX:
|
|
|
+ case PRID_IMP_CAVIUM_CN52XX:
|
|
|
+ c->cputype = CPU_CAVIUM_OCTEON;
|
|
|
+ __cpu_name[cpu] = "Cavium Octeon";
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ printk(KERN_INFO "Unknown Octeon chip!\n");
|
|
|
+ c->cputype = CPU_UNKNOWN;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
const char *__cpu_name[NR_CPUS];
|
|
|
|
|
|
__cpuinit void cpu_probe(void)
|
|
@@ -909,6 +931,9 @@ __cpuinit void cpu_probe(void)
|
|
|
case PRID_COMP_NXP:
|
|
|
cpu_probe_nxp(c, cpu);
|
|
|
break;
|
|
|
+ case PRID_COMP_CAVIUM:
|
|
|
+ cpu_probe_cavium(c, cpu);
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
BUG_ON(!__cpu_name[cpu]);
|