Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jayachandran C and committed by
Ralf Baechle
a7117c6b 61c4f2c8

+83
+27
arch/mips/include/asm/cpu.h
··· 33 33 #define PRID_COMP_TOSHIBA 0x070000 34 34 #define PRID_COMP_LSI 0x080000 35 35 #define PRID_COMP_LEXRA 0x0b0000 36 + #define PRID_COMP_NETLOGIC 0x0c0000 36 37 #define PRID_COMP_CAVIUM 0x0d0000 37 38 #define PRID_COMP_INGENIC 0xd00000 38 39 ··· 143 142 #define PRID_IMP_JZRISC 0x0200 144 143 145 144 /* 145 + * These are the PRID's for when 23:16 == PRID_COMP_NETLOGIC 146 + */ 147 + #define PRID_IMP_NETLOGIC_XLR732 0x0000 148 + #define PRID_IMP_NETLOGIC_XLR716 0x0200 149 + #define PRID_IMP_NETLOGIC_XLR532 0x0900 150 + #define PRID_IMP_NETLOGIC_XLR308 0x0600 151 + #define PRID_IMP_NETLOGIC_XLR532C 0x0800 152 + #define PRID_IMP_NETLOGIC_XLR516C 0x0a00 153 + #define PRID_IMP_NETLOGIC_XLR508C 0x0b00 154 + #define PRID_IMP_NETLOGIC_XLR308C 0x0f00 155 + #define PRID_IMP_NETLOGIC_XLS608 0x8000 156 + #define PRID_IMP_NETLOGIC_XLS408 0x8800 157 + #define PRID_IMP_NETLOGIC_XLS404 0x8c00 158 + #define PRID_IMP_NETLOGIC_XLS208 0x8e00 159 + #define PRID_IMP_NETLOGIC_XLS204 0x8f00 160 + #define PRID_IMP_NETLOGIC_XLS108 0xce00 161 + #define PRID_IMP_NETLOGIC_XLS104 0xcf00 162 + #define PRID_IMP_NETLOGIC_XLS616B 0x4000 163 + #define PRID_IMP_NETLOGIC_XLS608B 0x4a00 164 + #define PRID_IMP_NETLOGIC_XLS416B 0x4400 165 + #define PRID_IMP_NETLOGIC_XLS412B 0x4c00 166 + #define PRID_IMP_NETLOGIC_XLS408B 0x4e00 167 + #define PRID_IMP_NETLOGIC_XLS404B 0x4f00 168 + 169 + /* 146 170 * Definitions for 7:0 on legacy processors 147 171 */ 148 172 ··· 260 234 */ 261 235 CPU_5KC, CPU_20KC, CPU_25KF, CPU_SB1, CPU_SB1A, CPU_LOONGSON2, 262 236 CPU_CAVIUM_OCTEON, CPU_CAVIUM_OCTEON_PLUS, CPU_CAVIUM_OCTEON2, 237 + CPU_XLR, 263 238 264 239 CPU_LAST 265 240 };
+56
arch/mips/kernel/cpu-probe.c
··· 988 988 } 989 989 } 990 990 991 + static 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 1044 #ifdef CONFIG_64BIT 992 1045 /* For use by uaccess.h */ 993 1046 u64 __ua_limit; ··· 1087 1034 break; 1088 1035 case PRID_COMP_INGENIC: 1089 1036 cpu_probe_ingenic(c, cpu); 1037 + break; 1038 + case PRID_COMP_NETLOGIC: 1039 + cpu_probe_netlogic(c, cpu); 1090 1040 break; 1091 1041 } 1092 1042