diff options
author | Huacai Chen <chenhc@lemote.com> | 2014-06-25 23:41:30 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2014-07-30 15:47:00 -0400 |
commit | e7841be50fe2b8751a51a068b8cdcdcb6611e354 (patch) | |
tree | d0ffedc83975c17cfa3357ebcb806a2fa86d3566 /arch/mips/kernel/cpu-probe.c | |
parent | 1ff1ad6bc2c63f219cbc00dcdd35dcf36a7d6fe4 (diff) |
MIPS: Add Loongson-3B support
Loongson-3B is a 8-cores processor. In general it looks like there are
two Loongson-3A integrated in one chip: 8 cores are separated into two
groups (two NUMA node), each node has its own local memory.
Of course there are some differences between one Loongson-3B and two
Loongson-3A. E.g., the base addresses of IPI registers of each node are
not the same; Loongson-3A use ChipConfig register to enable/disable
clock, but Loongson-3B use FreqControl register instead.
There are two revision of Loongson-3B, the first revision is called as
Loongson-3B1000, whose frequency is 1GHz and has a PRid 0x6306, the
second revision is called as Loongson-3B1500, whose frequency is 1.5GHz
and has a PRid 0x6307. Both revisions has a bug that clock cannot be
disabled at runtime, but this will be fixed in future.
Signed-off-by: Huacai Chen <chenhc@lemote.com>
Cc: John Crispin <john@phrozen.org>
Cc: Steven J. Hill <Steven.Hill@imgtec.com>
Cc: Aurelien Jarno <aurelien@aurel32.net>
Cc: linux-mips@linux-mips.org
Cc: Fuxin Zhang <zhangfx@lemote.com>
Cc: Zhangjin Wu <wuzhangjin@gmail.com>
Patchwork: https://patchwork.linux-mips.org/patch/7188/
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 | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index d74f957c561e..2d2e2877b1ea 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -740,6 +740,12 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu) | |||
740 | __cpu_name[cpu] = "ICT Loongson-3"; | 740 | __cpu_name[cpu] = "ICT Loongson-3"; |
741 | set_elf_platform(cpu, "loongson3a"); | 741 | set_elf_platform(cpu, "loongson3a"); |
742 | break; | 742 | break; |
743 | case PRID_REV_LOONGSON3B_R1: | ||
744 | case PRID_REV_LOONGSON3B_R2: | ||
745 | c->cputype = CPU_LOONGSON3; | ||
746 | __cpu_name[cpu] = "ICT Loongson-3"; | ||
747 | set_elf_platform(cpu, "loongson3b"); | ||
748 | break; | ||
743 | } | 749 | } |
744 | 750 | ||
745 | set_isa(c, MIPS_CPU_ISA_III); | 751 | set_isa(c, MIPS_CPU_ISA_III); |