diff options
Diffstat (limited to 'lib_blackfin/cache.c')
| -rw-r--r-- | lib_blackfin/cache.c | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/lib_blackfin/cache.c b/lib_blackfin/cache.c index c2f6e2848..870c5bfba 100644 --- a/lib_blackfin/cache.c +++ b/lib_blackfin/cache.c @@ -11,6 +11,7 @@  #include <common.h>  #include <asm/blackfin.h> +#include <asm/mach-common/bits/mpu.h>  void flush_cache(unsigned long addr, unsigned long size)  { @@ -24,3 +25,37 @@ void flush_cache(unsigned long addr, unsigned long size)  	if (dcache_status())  		blackfin_dcache_flush_range((void *)addr, (void *)(addr + size));  } + +void icache_enable(void) +{ +	bfin_write_IMEM_CONTROL(IMC | ENICPLB); +	SSYNC(); +} + +void icache_disable(void) +{ +	bfin_write_IMEM_CONTROL(0); +	SSYNC(); +} + +int icache_status(void) +{ +	return bfin_read_IMEM_CONTROL() & IMC; +} + +void dcache_enable(void) +{ +	bfin_write_DMEM_CONTROL(ACACHE_BCACHE | ENDCPLB | PORT_PREF0); +	SSYNC(); +} + +void dcache_disable(void) +{ +	bfin_write_DMEM_CONTROL(0); +	SSYNC(); +} + +int dcache_status(void) +{ +	return bfin_read_DMEM_CONTROL() & ACACHE_BCACHE; +} |