forked from Imagelibrary/rtems
arm/raspberrypi: cache manager can be used for mailbox synchronization now. Remove workarounds.
Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz>
This commit is contained in:
@@ -56,39 +56,8 @@ static inline void bcm2835_mailbox_buffer_flush_and_invalidate(
|
|||||||
size_t size
|
size_t size
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
uint32_t sctlr_val;
|
rtems_cache_flush_multiple_data_lines( buf, size );
|
||||||
|
rtems_cache_invalidate_multiple_data_lines( buf, size );
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define BCM2835_MBOX_VAL_LENGTH_MASK( _val_len ) \
|
#define BCM2835_MBOX_VAL_LENGTH_MASK( _val_len ) \
|
||||||
|
|||||||
Reference in New Issue
Block a user