MIPS: Add support for interAptiv cores
authorLeonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Wed, 27 Nov 2013 10:07:53 +0000 (10:07 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Wed, 22 Jan 2014 19:19:01 +0000 (20:19 +0100)
The interAptiv is a power-efficient multi-core microprocessor
for use in system-on-chip (SoC) applications. The interAptiv combines
a multi-threading pipeline with a coherence manager to deliver improved
computational throughput and power efficiency. The interAptiv can
contain one to four MIPS32R3 interAptiv cores, system level
coherence manager with L2 cache, optional coherent I/O port,
and optional floating point unit.

Signed-off-by: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Signed-off-by: John Crispin <blogic@openwrt.org>
Patchwork: http://patchwork.linux-mips.org/patch/6163/

arch/mips/include/asm/cpu-type.h
arch/mips/include/asm/cpu.h
arch/mips/kernel/idle.c
arch/mips/kernel/spram.c
arch/mips/kernel/traps.c
arch/mips/mm/c-r4k.c
arch/mips/mm/sc-mips.c
arch/mips/oprofile/common.c
arch/mips/oprofile/op_model_mipsxx.c

index 00413508da99939d4f5f3e362a73afb1d3a1ca71..02f591bd95ca635b82e6016eedcffa5ea1978b93 100644 (file)
@@ -44,6 +44,7 @@ static inline int __pure __get_cpu_type(const int cpu_type)
        case CPU_74K:
        case CPU_M14KC:
        case CPU_M14KEC:
+       case CPU_INTERAPTIV:
        case CPU_PROAPTIV:
 #endif
 
index 60adaad6d5d522d7ede129be197bf8c66294cfcb..a0ec93054636aac3427b1d3e1d59bfb362ebb398 100644 (file)
@@ -295,7 +295,7 @@ enum cpu_type_enum {
        CPU_4KC, CPU_4KEC, CPU_4KSC, CPU_24K, CPU_34K, CPU_1004K, CPU_74K,
        CPU_ALCHEMY, CPU_PR4450, CPU_BMIPS32, CPU_BMIPS3300, CPU_BMIPS4350,
        CPU_BMIPS4380, CPU_BMIPS5000, CPU_JZRISC, CPU_LOONGSON1, CPU_M14KC,
-       CPU_M14KEC, CPU_PROAPTIV,
+       CPU_M14KEC, CPU_INTERAPTIV, CPU_PROAPTIV,
 
        /*
         * MIPS64 class processors
index cb2c94f13d01d3bdca94af5a03e229d0d7c17331..3553243bf9d660f0f7ec69941462990ac7ee55b7 100644 (file)
@@ -184,6 +184,7 @@ void __init check_wait(void)
        case CPU_24K:
        case CPU_34K:
        case CPU_1004K:
+       case CPU_INTERAPTIV:
        case CPU_PROAPTIV:
                cpu_wait = r4k_wait;
                if (read_c0_config7() & MIPS_CONF7_WII)
index fb72b803b754bde19987a0fbbb50ec6c51d13b1f..dfed8a41c696b1924bf72f5ab3f4d71fde8e98f1 100644 (file)
@@ -206,6 +206,7 @@ void spram_config(void)
        case CPU_34K:
        case CPU_74K:
        case CPU_1004K:
+       case CPU_INTERAPTIV:
        case CPU_PROAPTIV:
                config0 = read_c0_config();
                /* FIXME: addresses are Malta specific */
index 39370e1d43621772f2bc2c64ff65a5b38dcb5128..e0b499694d180ae1513153b1acbcfbf031ab240a 100644 (file)
@@ -1337,6 +1337,7 @@ static inline void parity_protection_init(void)
        case CPU_34K:
        case CPU_74K:
        case CPU_1004K:
+       case CPU_INTERAPTIV:
        case CPU_PROAPTIV:
                {
 #define ERRCTL_PE      0x80000000
index eded642e1fefabad6d4a96519cc75d93370f68dc..13b549a67a1e82f6060eaee9d1ecd81fb23cc829 100644 (file)
@@ -1106,6 +1106,7 @@ static void probe_pcache(void)
        case CPU_34K:
        case CPU_74K:
        case CPU_1004K:
+       case CPU_INTERAPTIV:
        case CPU_PROAPTIV:
                if (current_cpu_type() == CPU_74K)
                        alias_74k_erratum(c);
index 317c2497a75c97d9c9f530b681ff0547287dbd26..7a56aee5fce70ebc5c7fb627a262f1e84b2176f2 100644 (file)
@@ -76,6 +76,7 @@ static inline int mips_sc_is_activated(struct cpuinfo_mips *c)
        case CPU_34K:
        case CPU_74K:
        case CPU_1004K:
+       case CPU_INTERAPTIV:
        case CPU_PROAPTIV:
        case CPU_BMIPS5000:
                if (config2 & (1 << 12))
index efd2eb3d92e31d941e8c1d9fcedc974574bf0660..2a86e38872a725a89e31f2a5ad1907eb84a3b854 100644 (file)
@@ -86,6 +86,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
        case CPU_34K:
        case CPU_1004K:
        case CPU_74K:
+       case CPU_INTERAPTIV:
        case CPU_PROAPTIV:
        case CPU_LOONGSON1:
        case CPU_SB1:
index 3e28aaa39bc9e2ba435980a324b89cf58d89d728..4d94d75ec6f98f47351afd695202be986355ba24 100644 (file)
@@ -376,6 +376,10 @@ static int __init mipsxx_init(void)
                op_model_mipsxx_ops.cpu_type = "mips/74K";
                break;
 
+       case CPU_INTERAPTIV:
+               op_model_mipsxx_ops.cpu_type = "mips/interAptiv";
+               break;
+
        case CPU_PROAPTIV:
                op_model_mipsxx_ops.cpu_type = "mips/proAptiv";
                break;