It may require to allocate component buffer on specific region, e.g. DMA region, here add handle to dirrerent requirement form topology/IPC.
Signed-off-by: Keyon Jie yang.jie@linux.intel.com --- src/audio/buffer.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/src/audio/buffer.c b/src/audio/buffer.c index 0acf660..e41f14f 100644 --- a/src/audio/buffer.c +++ b/src/audio/buffer.c @@ -49,6 +49,7 @@ struct comp_buffer *buffer_new(struct sof_ipc_buffer *desc) { struct comp_buffer *buffer; + int bflags = RFLAGS_NONE;
trace_buffer("new");
@@ -66,7 +67,16 @@ struct comp_buffer *buffer_new(struct sof_ipc_buffer *desc) return NULL; }
- buffer->addr = rballoc(RZONE_RUNTIME, RFLAGS_NONE, desc->size); + switch (desc->type) { + case SOF_BUFF_DMA: + bflags = RFLAGS_DMA; + break; + case SOF_BUFF_GENERAL: + default: + bflags = RFLAGS_NONE; + } + + buffer->addr = rballoc(RZONE_RUNTIME, bflags, desc->size); if (buffer->addr == NULL) { rfree(buffer); trace_buffer_error("ebm");