mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	MIPS: Add platform callback before initializing the L2 cache
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>
This commit is contained in:
		
							parent
							
								
									7d53e9c4cd
								
							
						
					
					
						commit
						c014d164f2
					
				
					 3 changed files with 24 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 = ¤t_cpu_data;
 | 
			
		||||
| 
						 | 
				
			
			@ -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();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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();
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue