diff options
Diffstat (limited to 'arch/arm/mach-ux500/cache-l2x0.c')
| -rw-r--r-- | arch/arm/mach-ux500/cache-l2x0.c | 32 | 
1 files changed, 11 insertions, 21 deletions
diff --git a/arch/arm/mach-ux500/cache-l2x0.c b/arch/arm/mach-ux500/cache-l2x0.c index 264f894c0e3..842ebedbdd1 100644 --- a/arch/arm/mach-ux500/cache-l2x0.c +++ b/arch/arm/mach-ux500/cache-l2x0.c @@ -35,10 +35,16 @@ static int __init ux500_l2x0_unlock(void)  	return 0;  } -static int __init ux500_l2x0_init(void) +static void ux500_l2c310_write_sec(unsigned long val, unsigned reg)  { -	u32 aux_val = 0x3e000000; +	/* +	 * We can't write to secure registers as we are in non-secure +	 * mode, until we have some SMI service available. +	 */ +} +static int __init ux500_l2x0_init(void) +{  	if (cpu_is_u8500_family() || cpu_is_ux540_family())  		l2x0_base = __io_address(U8500_L2CC_BASE);  	else @@ -48,28 +54,12 @@ static int __init ux500_l2x0_init(void)  	/* Unlock before init */  	ux500_l2x0_unlock(); -	/* DBx540's L2 has 128KB way size */ -	if (cpu_is_ux540_family()) -		/* 128KB way size */ -		aux_val |= (0x4 << L2X0_AUX_CTRL_WAY_SIZE_SHIFT); -	else -		/* 64KB way size */ -		aux_val |= (0x3 << L2X0_AUX_CTRL_WAY_SIZE_SHIFT); +	outer_cache.write_sec = ux500_l2c310_write_sec; -	/* 64KB way size, 8 way associativity, force WA */  	if (of_have_populated_dt()) -		l2x0_of_init(aux_val, 0xc0000fff); +		l2x0_of_init(0, ~0);  	else -		l2x0_init(l2x0_base, aux_val, 0xc0000fff); - -	/* -	 * We can't disable l2 as we are in non secure mode, currently -	 * this seems be called only during kexec path. So let's -	 * override outer.disable with nasty assignment until we have -	 * some SMI service available. -	 */ -	outer_cache.disable = NULL; -	outer_cache.set_debug = NULL; +		l2x0_init(l2x0_base, 0, ~0);  	return 0;  }  | 
