Allow platforms to perform platform-specific steps before configuring
the L2 cache. This is necessary for platforms with CM3 since the L2
parameters no longer live in the Config2 register.
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/10642/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
        phys_addr_t addr;
        u32 base_reg;
 
+       /*
+        * No need to probe again if we have already been
+        * here before.
+        */
+       if (mips_cm_base)
+               return 0;
+
        addr = mips_cm_phys_base();
        BUG_ON((addr & CM_GCR_BASE_GCRBASE_MSK) != addr);
        if (!addr)
 
        return 1;
 }
 
+void __weak platform_early_l2_init(void)
+{
+}
+
 static inline int __init mips_sc_probe(void)
 {
        struct cpuinfo_mips *c = ¤t_cpu_data;
        /* Mark as not present until probe completed */
        c->scache.flags |= MIPS_CACHE_NOT_PRESENT;
 
+       /*
+        * Do we need some platform specific probing before
+        * we configure L2?
+        */
+       platform_early_l2_init();
+
        if (mips_cm_revision() >= CM_REV_CM3)
                return mips_sc_probe_cm3();
 
 
        if (!register_vsmp_smp_ops())
                return;
 }
+
+void platform_early_l2_init(void)
+{
+       /* L2 configuration lives in the CM3 */
+       if (mips_cm_revision() >= CM_REV_CM3)
+               mips_cm_probe();
+}