Skip to content

Commit

Permalink
MIPS: Add platform callback before initializing the L2 cache
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Markos Chandras authored and Ralf Baechle committed Aug 26, 2015
1 parent 7d53e9c commit c014d16
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
7 changes: 7 additions & 0 deletions arch/mips/kernel/mips-cm.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,13 @@ int mips_cm_probe(void)
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)
Expand Down
10 changes: 10 additions & 0 deletions arch/mips/mm/sc-mips.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,10 @@ static int __init mips_sc_probe_cm3(void)
return 1;
}

void __weak platform_early_l2_init(void)
{
}

static inline int __init mips_sc_probe(void)
{
struct cpuinfo_mips *c = &current_cpu_data;
Expand All @@ -132,6 +136,12 @@ static inline int __init mips_sc_probe(void)
/* 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();

Expand Down
7 changes: 7 additions & 0 deletions arch/mips/mti-malta/malta-init.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,3 +303,10 @@ void __init prom_init(void)
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();
}

0 comments on commit c014d16

Please sign in to comment.