77#include <sof/trace/trace.h>
88#include <sof/lib/uuid.h>
99
10+ #include <sof/audio/module_adapter/module/generic.h>
1011#include <sof/audio/ring_buffer.h>
1112#include <sof/audio/component.h>
1213
@@ -97,7 +98,7 @@ static void ring_buffer_free(struct sof_audio_buffer *audio_buffer)
9798 container_of (audio_buffer , struct ring_buffer , audio_buffer );
9899
99100 rfree ((__sparse_force void * )ring_buffer -> _data_buffer );
100- rfree ( ring_buffer );
101+ sof_heap_free ( audio_buffer -> heap , ring_buffer );
101102}
102103
103104static void ring_buffer_reset (struct sof_audio_buffer * audio_buffer )
@@ -286,14 +287,17 @@ struct ring_buffer *ring_buffer_create(struct comp_dev *dev, size_t min_availabl
286287 uint32_t id )
287288{
288289 struct ring_buffer * ring_buffer ;
290+ struct k_heap * heap = dev -> mod -> priv .resources .heap ;
289291 int memory_flags = (is_shared ? SOF_MEM_FLAG_COHERENT : 0 ) |
290292 user_get_buffer_memory_region (dev -> drv );
291293
292294 /* allocate ring_buffer structure */
293- ring_buffer = rzalloc ( memory_flags , sizeof (* ring_buffer ));
295+ ring_buffer = sof_heap_alloc ( heap , memory_flags , sizeof (* ring_buffer ), 0 );
294296 if (!ring_buffer )
295297 return NULL ;
296298
299+ memset (ring_buffer , 0 , sizeof (* ring_buffer ));
300+
297301 /* init base structure. The audio_stream_params is NULL because ring_buffer
298302 * is currently used as a secondary buffer for DP only
299303 *
@@ -303,6 +307,7 @@ struct ring_buffer *ring_buffer_create(struct comp_dev *dev, size_t min_availabl
303307 audio_buffer_init (& ring_buffer -> audio_buffer , BUFFER_TYPE_RING_BUFFER ,
304308 is_shared , & ring_buffer_source_ops , & ring_buffer_sink_ops ,
305309 & audio_buffer_ops , NULL );
310+ ring_buffer -> audio_buffer .heap = heap ;
306311
307312 /* set obs/ibs in sink/source interfaces */
308313 sink_set_min_free_space (audio_buffer_get_sink (& ring_buffer -> audio_buffer ),
@@ -374,6 +379,6 @@ struct ring_buffer *ring_buffer_create(struct comp_dev *dev, size_t min_availabl
374379 return ring_buffer ;
375380err :
376381 tr_err (& ring_buffer_tr , "Ring buffer creation failure" );
377- rfree ( ring_buffer );
382+ sof_heap_free ( heap , ring_buffer );
378383 return NULL ;
379384}
0 commit comments