@@ -161,7 +161,7 @@ static void comp_buffer_free(struct sof_audio_buffer *audio_buffer)
161161
162162 struct k_heap * heap = buffer -> audio_buffer .heap ;
163163
164- rfree ( buffer -> stream .addr );
164+ sof_heap_free ( heap , buffer -> stream .addr );
165165 sof_heap_free (heap , buffer );
166166 if (heap ) {
167167 struct dp_heap_user * mod_heap_user = container_of (heap , struct dp_heap_user , heap );
@@ -254,7 +254,7 @@ struct comp_buffer *buffer_alloc(struct k_heap *heap, size_t size, uint32_t flag
254254 return NULL ;
255255 }
256256
257- stream_addr = rballoc_align ( flags , size , align );
257+ stream_addr = sof_heap_alloc ( heap , flags , size , align );
258258 if (!stream_addr ) {
259259 tr_err (& buffer_tr , "could not alloc size = %zu bytes of flags = 0x%x" ,
260260 size , flags );
@@ -264,7 +264,7 @@ struct comp_buffer *buffer_alloc(struct k_heap *heap, size_t size, uint32_t flag
264264 buffer = buffer_alloc_struct (heap , stream_addr , size , flags , is_shared );
265265 if (!buffer ) {
266266 tr_err (& buffer_tr , "could not alloc buffer structure" );
267- rfree ( stream_addr );
267+ sof_heap_free ( heap , stream_addr );
268268 }
269269
270270 return buffer ;
@@ -292,7 +292,7 @@ struct comp_buffer *buffer_alloc_range(struct k_heap *heap, size_t preferred_siz
292292 preferred_size += minimum_size - preferred_size % minimum_size ;
293293
294294 for (size = preferred_size ; size >= minimum_size ; size -= minimum_size ) {
295- stream_addr = rballoc_align ( flags , size , align );
295+ stream_addr = sof_heap_alloc ( heap , flags , size , align );
296296 if (stream_addr )
297297 break ;
298298 }
@@ -308,7 +308,7 @@ struct comp_buffer *buffer_alloc_range(struct k_heap *heap, size_t preferred_siz
308308 buffer = buffer_alloc_struct (heap , stream_addr , size , flags , is_shared );
309309 if (!buffer ) {
310310 tr_err (& buffer_tr , "could not alloc buffer structure" );
311- rfree ( stream_addr );
311+ sof_heap_free ( heap , stream_addr );
312312 }
313313
314314 return buffer ;
@@ -341,14 +341,8 @@ int buffer_set_size(struct comp_buffer *buffer, uint32_t size, uint32_t alignmen
341341 if (size == audio_stream_get_size (& buffer -> stream ))
342342 return 0 ;
343343
344- if (!alignment )
345- new_ptr = rbrealloc (audio_stream_get_addr (& buffer -> stream ),
346- buffer -> flags | SOF_MEM_FLAG_NO_COPY ,
347- size , audio_stream_get_size (& buffer -> stream ));
348- else
349- new_ptr = rbrealloc_align (audio_stream_get_addr (& buffer -> stream ),
350- buffer -> flags | SOF_MEM_FLAG_NO_COPY , size ,
351- audio_stream_get_size (& buffer -> stream ), alignment );
344+ new_ptr = sof_heap_alloc (buffer -> audio_buffer .heap , buffer -> flags , size , alignment );
345+
352346 /* we couldn't allocate bigger chunk */
353347 if (!new_ptr && size > audio_stream_get_size (& buffer -> stream )) {
354348 buf_err (buffer , "resize can't alloc %u bytes of flags 0x%x" ,
@@ -357,8 +351,10 @@ int buffer_set_size(struct comp_buffer *buffer, uint32_t size, uint32_t alignmen
357351 }
358352
359353 /* use bigger chunk, else just use the old chunk but set smaller */
360- if (new_ptr )
354+ if (new_ptr ) {
355+ sof_heap_free (buffer -> audio_buffer .heap , audio_stream_get_addr (& buffer -> stream ));
361356 buffer -> stream .addr = new_ptr ;
357+ }
362358
363359 buffer_init_stream (buffer , size );
364360
@@ -368,7 +364,6 @@ int buffer_set_size(struct comp_buffer *buffer, uint32_t size, uint32_t alignmen
368364int buffer_set_size_range (struct comp_buffer * buffer , size_t preferred_size , size_t minimum_size ,
369365 uint32_t alignment )
370366{
371- void * ptr = audio_stream_get_addr (& buffer -> stream );
372367 const size_t actual_size = audio_stream_get_size (& buffer -> stream );
373368 void * new_ptr = NULL ;
374369 size_t new_size ;
@@ -389,34 +384,28 @@ int buffer_set_size_range(struct comp_buffer *buffer, size_t preferred_size, siz
389384 if (preferred_size == actual_size )
390385 return 0 ;
391386
392- if (!alignment ) {
393- for (new_size = preferred_size ; new_size >= minimum_size ;
394- new_size -= minimum_size ) {
395- new_ptr = rbrealloc (ptr , buffer -> flags | SOF_MEM_FLAG_NO_COPY ,
396- new_size , actual_size );
397- if (new_ptr )
398- break ;
399- }
400- } else {
401- for (new_size = preferred_size ; new_size >= minimum_size ;
402- new_size -= minimum_size ) {
403- new_ptr = rbrealloc_align (ptr , buffer -> flags | SOF_MEM_FLAG_NO_COPY ,
404- new_size , actual_size , alignment );
405- if (new_ptr )
406- break ;
407- }
387+ for (new_size = preferred_size ; new_size >= minimum_size ;
388+ new_size -= minimum_size ) {
389+ new_ptr = sof_heap_alloc (buffer -> audio_buffer .heap , buffer -> flags , new_size , alignment );
390+ if (new_ptr )
391+ break ;
408392 }
409393
410- /* we couldn't allocate bigger chunk */
411- if (!new_ptr && new_size > actual_size ) {
412- buf_err (buffer , "resize can't alloc %zu bytes of flags 0x%x" , new_size ,
413- buffer -> flags );
414- return - ENOMEM ;
394+ /* If no allocation succeeded, check if old buffer is large enough */
395+ if (!new_ptr ) {
396+ if (minimum_size > actual_size ) {
397+ buf_err (buffer , "resize can't alloc %zu bytes of flags 0x%x" ,
398+ minimum_size , buffer -> flags );
399+ return - ENOMEM ;
400+ }
401+ new_size = minimum_size ;
415402 }
416403
417404 /* use bigger chunk, else just use the old chunk but set smaller */
418- if (new_ptr )
405+ if (new_ptr ) {
406+ sof_heap_free (buffer -> audio_buffer .heap , audio_stream_get_addr (& buffer -> stream ));
419407 buffer -> stream .addr = new_ptr ;
408+ }
420409
421410 buffer_init_stream (buffer , new_size );
422411
0 commit comments