ARC: Cache: Refactor arc_ioc_setup()
authorEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Wed, 21 Mar 2018 12:59:05 +0000 (15:59 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Wed, 21 Mar 2018 14:06:55 +0000 (17:06 +0300)
Move all checks before cache flush and IOC setup.

Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/lib/cache.c

index 9977606..8203fae 100644 (file)
@@ -386,11 +386,15 @@ static void arc_ioc_setup(void)
        if (!dcache_enabled())
                panic("Try to enable IOC but L1 D$ is disabled");
 
-       flush_n_invalidate_dcache_all();
-
        if (!is_power_of_2(ap_size) || ap_size < 4096)
                panic("IOC Aperture size must be power of 2 and bigger 4Kib");
 
+       /* IOC Aperture start must be aligned to the size of the aperture */
+       if (ap_base % ap_size != 0)
+               panic("IOC Aperture start must be aligned to the size of the aperture");
+
+       flush_n_invalidate_dcache_all();
+
        /*
         * IOC Aperture size decoded as 2 ^ (SIZE + 2) KB,
         * so setting 0x11 implies 512M, 0x12 implies 1G...
@@ -398,10 +402,6 @@ static void arc_ioc_setup(void)
        write_aux_reg(ARC_AUX_IO_COH_AP0_SIZE,
                      order_base_2(ap_size / 1024) - 2);
 
-       /* IOC Aperture start must be aligned to the size of the aperture */
-       if (ap_base % ap_size != 0)
-               panic("IOC Aperture start must be aligned to the size of the aperture");
-
        write_aux_reg(ARC_AUX_IO_COH_AP0_BASE, ap_base >> 12);
        write_aux_reg(ARC_AUX_IO_COH_PARTIAL, 1);
        write_aux_reg(ARC_AUX_IO_COH_ENABLE, 1);