]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
arc/cache: Flush & invalidate all caches right before enabling IOC
authorAlexey Brodkin <abrodkin@synopsys.com>
Wed, 8 Jun 2016 05:04:03 +0000 (08:04 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Mon, 13 Jun 2016 12:38:05 +0000 (14:38 +0200)
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>
arch/arc/lib/cache.c

index a27499e02734d0fd476d0b67f489fb3ab2320bd0..b6ec83112cd8aa5264d9572c9ef97fbf0f9462ce 100644 (file)
@@ -209,6 +209,9 @@ void cache_init(void)
        read_decode_cache_bcr_arcv2();
 
        if (ioc_exists) {
+               flush_dcache_all();
+               invalidate_dcache_all();
+
                /* IO coherency base - 0x8z */
                write_aux_reg(ARC_AUX_IO_COH_AP0_BASE, 0x80000);
                /* IO coherency aperture size - 512Mb: 0x8z-0xAz */