arm/raspberrypi: update VideoCore cache flush workaround to work on RPi2.

The arm_cp15_data_cache_clean_and_invalidate leads to hang on RPi2,
clean by individual lines works on RPi1 and RPi2.
This commit is contained in:
Pavel Pisa
2016-07-02 18:52:44 +02:00
parent 0cb50ab25b
commit 2d5902d6ae

View File

@@ -73,9 +73,20 @@ static inline void bcm2835_mailbox_buffer_flush_and_invalidate(
*/
rtems_cache_flush_multiple_data_lines( buf, size );
rtems_cache_invalidate_multiple_data_lines( buf, size );
#else
/* Flush complete data cache */
#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
}
}