Skip to content

Commit b8e2456

Browse files
committed
audio: use zephyr/cache.h for cache flush/invalidate
Use Zephyr native cache interface instead of legacy rtos/cache.h. This ensures audio code is using interfaces that supports use from user-space (if enabled at build time). Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
1 parent 4d898ff commit b8e2456

File tree

4 files changed

+18
-15
lines changed

4 files changed

+18
-15
lines changed

src/audio/buffers/comp_buffer.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#include <sof/common.h>
1616
#include <rtos/interrupt.h>
1717
#include <rtos/alloc.h>
18-
#include <rtos/cache.h>
1918
#include <sof/lib/notifier.h>
2019
#include <sof/list.h>
2120
#include <rtos/spinlock.h>
@@ -24,6 +23,7 @@
2423
#include <errno.h>
2524
#include <stddef.h>
2625
#include <stdint.h>
26+
#include <zephyr/cache.h>
2727

2828
LOG_MODULE_REGISTER(buffer, CONFIG_SOF_LOG_LEVEL);
2929

@@ -307,9 +307,9 @@ void buffer_zero(struct comp_buffer *buffer)
307307

308308
bzero(audio_stream_get_addr(&buffer->stream), audio_stream_get_size(&buffer->stream));
309309
if (buffer->flags & SOF_MEM_FLAG_DMA)
310-
dcache_writeback_region((__sparse_force void __sparse_cache *)
311-
audio_stream_get_addr(&buffer->stream),
312-
audio_stream_get_size(&buffer->stream));
310+
sys_cache_data_flush_range((__sparse_force void __sparse_cache *)
311+
audio_stream_get_addr(&buffer->stream),
312+
audio_stream_get_size(&buffer->stream));
313313
}
314314

315315
int buffer_set_size(struct comp_buffer *buffer, uint32_t size, uint32_t alignment)

src/audio/buffers/ring_buffer.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#include <rtos/alloc.h>
1414
#include <ipc/topology.h>
1515

16+
#include <zephyr/cache.h>
17+
1618
LOG_MODULE_REGISTER(ring_buffer, CONFIG_SOF_LOG_LEVEL);
1719

1820
SOF_DEFINE_REG_UUID(ring_buffer);
@@ -56,13 +58,13 @@ static inline void ring_buffer_invalidate_shared(struct ring_buffer *ring_buffer
5658
/* wrap-around? */
5759
if ((uintptr_t)ptr + size > (uintptr_t)ring_buffer_buffer_end(ring_buffer)) {
5860
/* writeback till the end of circular buffer */
59-
dcache_invalidate_region
61+
sys_cache_data_invd_range
6062
(ptr, (uintptr_t)ring_buffer_buffer_end(ring_buffer) - (uintptr_t)ptr);
6163
size -= (uintptr_t)ring_buffer_buffer_end(ring_buffer) - (uintptr_t)ptr;
6264
ptr = ring_buffer->_data_buffer;
6365
}
6466
/* invalidate rest of data */
65-
dcache_invalidate_region(ptr, size);
67+
sys_cache_data_invd_range(ptr, size);
6668
}
6769

6870
static inline void ring_buffer_writeback_shared(struct ring_buffer *ring_buffer,
@@ -75,13 +77,13 @@ static inline void ring_buffer_writeback_shared(struct ring_buffer *ring_buffer,
7577
/* wrap-around? */
7678
if ((uintptr_t)ptr + size > (uintptr_t)ring_buffer_buffer_end(ring_buffer)) {
7779
/* writeback till the end of circular buffer */
78-
dcache_writeback_region
80+
sys_cache_data_flush_range
7981
(ptr, (uintptr_t)ring_buffer_buffer_end(ring_buffer) - (uintptr_t)ptr);
8082
size -= (uintptr_t)ring_buffer_buffer_end(ring_buffer) - (uintptr_t)ptr;
8183
ptr = ring_buffer->_data_buffer;
8284
}
8385
/* writeback rest of data */
84-
dcache_writeback_region(ptr, size);
86+
sys_cache_data_flush_range(ptr, size);
8587
}
8688

8789

src/audio/copier/copier_ipcgtw.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <sof/lib/uuid.h>
99
#include <sof/ut.h>
1010
#include <rtos/init.h>
11+
#include <zephyr/cache.h>
1112
#include "copier.h"
1213
#include "ipcgtw_copier.h"
1314

@@ -94,8 +95,8 @@ int copier_ipcgtw_process(const struct ipc4_ipcgtw_cmd *cmd,
9495
uint32_t data_size;
9596
struct ipc4_ipc_gateway_cmd_data_reply *out;
9697

97-
dcache_invalidate_region((__sparse_force void __sparse_cache *)MAILBOX_HOSTBOX_BASE,
98-
sizeof(struct ipc4_ipc_gateway_cmd_data));
98+
sys_cache_data_invd_range((__sparse_force void __sparse_cache *)MAILBOX_HOSTBOX_BASE,
99+
sizeof(struct ipc4_ipc_gateway_cmd_data));
99100
in = (const struct ipc4_ipc_gateway_cmd_data *)MAILBOX_HOSTBOX_BASE;
100101

101102
dev = find_ipcgtw_by_node_id(in->node_id);
@@ -138,7 +139,7 @@ int copier_ipcgtw_process(const struct ipc4_ipcgtw_cmd *cmd,
138139
if (buf) {
139140
data_size = MIN(cmd->extension.r.data_size,
140141
audio_stream_get_free_bytes(&buf->stream));
141-
dcache_invalidate_region((__sparse_force void __sparse_cache *)
142+
sys_cache_data_invd_range((__sparse_force void __sparse_cache *)
142143
MAILBOX_HOSTBOX_BASE,
143144
data_size +
144145
offsetof(struct ipc4_ipc_gateway_cmd_data,

src/include/sof/audio/audio_stream.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#include <sof/math/numbers.h>
2323
#include <sof/lib/dma.h>
2424
#include <rtos/alloc.h>
25-
#include <rtos/cache.h>
25+
#include <zephyr/cache.h>
2626
#include <ipc/stream.h>
2727
#include <ipc4/base-config.h>
2828
#include <module/audio/audio_stream.h>
@@ -756,10 +756,10 @@ static inline void audio_stream_writeback(struct audio_stream *buffer, uint32_t
756756
tail_size = bytes - head_size;
757757
}
758758

759-
dcache_writeback_region((__sparse_force void __sparse_cache *)buffer->w_ptr, head_size);
759+
sys_cache_data_flush_range((__sparse_force void __sparse_cache *)buffer->w_ptr, head_size);
760760
if (tail_size)
761-
dcache_writeback_region((__sparse_force void __sparse_cache *)buffer->addr,
762-
tail_size);
761+
sys_cache_data_flush_range((__sparse_force void __sparse_cache *)buffer->addr,
762+
tail_size);
763763
}
764764

765765
/**

0 commit comments

Comments
 (0)