[PATCH 1/6] arm/raspberrypi: cache manager can be used for mailbox synchronization now. Remove workarounds.

pisa at cmp.felk.cvut.cz pisa at cmp.felk.cvut.cz
Sun Jul 17 22:48:37 UTC 2016


From: Pavel Pisa <pisa at cmp.felk.cvut.cz>

Signed-off-by: Pavel Pisa <pisa at cmp.felk.cvut.cz>
---
 c/src/lib/libbsp/arm/raspberrypi/misc/vc.c | 35 ++----------------------------
 1 file changed, 2 insertions(+), 33 deletions(-)

diff --git a/c/src/lib/libbsp/arm/raspberrypi/misc/vc.c b/c/src/lib/libbsp/arm/raspberrypi/misc/vc.c
index 0bec0c2..a3753cc 100644
--- a/c/src/lib/libbsp/arm/raspberrypi/misc/vc.c
+++ b/c/src/lib/libbsp/arm/raspberrypi/misc/vc.c
@@ -56,39 +56,8 @@ static inline void bcm2835_mailbox_buffer_flush_and_invalidate(
   size_t size
 )
 {
-  uint32_t sctlr_val;
-
-  sctlr_val = arm_cp15_get_control();
-
-  RTEMS_COMPILER_MEMORY_BARRIER();
-  arm_cp15_drain_write_buffer();
-
-  if ( sctlr_val & ( ARM_CP15_CTRL_C | ARM_CP15_CTRL_M ) ) {
-#if 0
-    /*
-       These architecture independent RTEMS API functions should be
-       used there but CPU_DATA_CACHE_ALIGNMENT is not defined
-       for ARM architecture version used on RPi and functions
-       are dummy for now and do not provide required synchronization
-     */
-    rtems_cache_flush_multiple_data_lines( buf, size );
-    rtems_cache_invalidate_multiple_data_lines( buf, size );
-#elif 0
-    /* Flush complete data cache, does not work on RPi2 for some reason */
-    arm_cp15_data_cache_clean_and_invalidate();
-#else
-    /*
-     * This is temporal workaround for missing cache meanager
-     * which works on RPi2
-     */
-    size += (uintptr_t)buf & ~63;
-    size = (size + 63) & ~63;
-    while ( size ) {
-      size -= 32;
-      arm_cp15_data_cache_clean_and_invalidate_line(buf);
-    }
-#endif
-  }
+  rtems_cache_flush_multiple_data_lines( buf, size );
+  rtems_cache_invalidate_multiple_data_lines( buf, size );
 }
 
 #define BCM2835_MBOX_VAL_LENGTH_MASK( _val_len ) \
-- 
1.9.1




More information about the devel mailing list