From: Masahiro Yamada Date: Fri, 22 Jul 2016 04:38:30 +0000 (+0900) Subject: ARM: uniphier: clear notification flag before L2 operation X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=ebab100a988e62a27ccde0372487daeeb8cb3050;p=u-boot.git ARM: uniphier: clear notification flag before L2 operation Clear the flag immediately before cache operation to not depend on the previous state. Signed-off-by: Masahiro Yamada --- diff --git a/arch/arm/mach-uniphier/arm32/cache_uniphier.c b/arch/arm/mach-uniphier/arm32/cache_uniphier.c index 4398114658..3d984a7232 100644 --- a/arch/arm/mach-uniphier/arm32/cache_uniphier.c +++ b/arch/arm/mach-uniphier/arm32/cache_uniphier.c @@ -19,6 +19,9 @@ static void uniphier_cache_sync(void) static void uniphier_cache_maint_all(u32 operation) { + /* clear the complete notification flag */ + writel(SSCOLPQS_EF, SSCOLPQS); + /* try until the command is successfully set */ do { writel(SSCOQM_S_ALL | SSCOQM_CE | operation, SSCOQM); @@ -28,9 +31,6 @@ static void uniphier_cache_maint_all(u32 operation) while (readl(SSCOLPQS) != SSCOLPQS_EF) ; - /* clear the complete notification flag */ - writel(SSCOLPQS_EF, SSCOLPQS); - uniphier_cache_sync(); } @@ -46,6 +46,9 @@ void v7_outer_cache_inval_all(void) static void __uniphier_cache_maint_range(u32 start, u32 size, u32 operation) { + /* clear the complete notification flag */ + writel(SSCOLPQS_EF, SSCOLPQS); + /* try until the command is successfully set */ do { writel(SSCOQM_S_ADDRESS | SSCOQM_CE | operation, SSCOQM); @@ -57,9 +60,6 @@ static void __uniphier_cache_maint_range(u32 start, u32 size, u32 operation) /* wait until the operation is completed */ while (readl(SSCOLPQS) != SSCOLPQS_EF) ; - - /* clear the complete notification flag */ - writel(SSCOLPQS_EF, SSCOLPQS); } static void uniphier_cache_maint_range(u32 start, u32 end, u32 operation)