mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00
arc/cache: Flush & invalidate all caches right before enabling IOC
According to ARC HS databook it is required to flush and disable caches prior programming IOC registers. Otherwise ongoing coherent memory operations may not observe the coherency protocols as expected. But since in ARC HS v2.1 there's no way to disable SLC (AKA L2 cache) we're doing our best flushing and invalidating it. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
This commit is contained in:
@ -209,6 +209,9 @@ void cache_init(void)
|
|||||||
read_decode_cache_bcr_arcv2();
|
read_decode_cache_bcr_arcv2();
|
||||||
|
|
||||||
if (ioc_exists) {
|
if (ioc_exists) {
|
||||||
|
flush_dcache_all();
|
||||||
|
invalidate_dcache_all();
|
||||||
|
|
||||||
/* IO coherency base - 0x8z */
|
/* IO coherency base - 0x8z */
|
||||||
write_aux_reg(ARC_AUX_IO_COH_AP0_BASE, 0x80000);
|
write_aux_reg(ARC_AUX_IO_COH_AP0_BASE, 0x80000);
|
||||||
/* IO coherency aperture size - 512Mb: 0x8z-0xAz */
|
/* IO coherency aperture size - 512Mb: 0x8z-0xAz */
|
||||||
|
Reference in New Issue
Block a user