diff options
author | David Daney <ddaney@caviumnetworks.com> | 2008-12-11 18:33:26 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2009-01-11 04:57:22 -0500 |
commit | 0dd4781bca56871434507ed35d5bb8ef92077907 (patch) | |
tree | 70304b84fd7a264a4e1756c485ad5a0bf1630282 /arch/mips/kernel/cpu-probe.c | |
parent | 25c3000300163e2ebf68d94425088de35ead3d76 (diff) |
MIPS: Add Cavium OCTEON processor constants and CPU probe.
Add OCTEON constants to asm/cpu.h and asm/module.h.
Add probe function for Cavium OCTEON CPUs and hook it up.
Signed-off-by: Tomaso Paoletti <tpaoletti@caviumnetworks.com>
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
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.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index c9207b5fd923..6b3c63dd1818 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 | ||
879 | static 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 | |||
878 | const char *__cpu_name[NR_CPUS]; | 900 | const 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]); |