From 92a2be0f359dbc8a36bfa9f2b603c1f639fe564a Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Fri, 9 Jan 2026 12:56:48 +0100 Subject: [PATCH 1/7] dp: application: restore double mapping for userspace Since Zephyr has removed double mapping per Kconfig switch we need to restore it in SOF. Next we should try to optimize mappings to only use the ones we really need. Signed-off-by: Guennadi Liakhovetski --- src/schedule/zephyr_dp_schedule.h | 2 ++ src/schedule/zephyr_dp_schedule_application.c | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/schedule/zephyr_dp_schedule.h b/src/schedule/zephyr_dp_schedule.h index 8c0557ced7fc..2df6f2a83f62 100644 --- a/src/schedule/zephyr_dp_schedule.h +++ b/src/schedule/zephyr_dp_schedule.h @@ -25,7 +25,9 @@ struct scheduler_dp_data { enum sof_dp_part_type { SOF_DP_PART_HEAP, + SOF_DP_PART_HEAP_CACHE, SOF_DP_PART_CFG, + SOF_DP_PART_CFG_CACHE, SOF_DP_PART_TYPE_COUNT, }; diff --git a/src/schedule/zephyr_dp_schedule_application.c b/src/schedule/zephyr_dp_schedule_application.c index 521c32b4af1d..ea42498ebf5d 100644 --- a/src/schedule/zephyr_dp_schedule_application.c +++ b/src/schedule/zephyr_dp_schedule_application.c @@ -391,7 +391,9 @@ static void scheduler_dp_domain_free(struct task_dp_pdata *pdata) llext_manager_rm_domain(pmod->dev->ipc_config.id, mdom); k_mem_domain_remove_partition(mdom, pdata->mpart + SOF_DP_PART_HEAP); + k_mem_domain_remove_partition(mdom, pdata->mpart + SOF_DP_PART_HEAP_CACHE); k_mem_domain_remove_partition(mdom, pdata->mpart + SOF_DP_PART_CFG); + k_mem_domain_remove_partition(mdom, pdata->mpart + SOF_DP_PART_CFG_CACHE); pmod->mdom = NULL; objpool_free(&dp_mdom_head, mdom); @@ -534,12 +536,22 @@ int scheduler_dp_task_init(struct task **task, const struct sof_uuid_entry *uid, .size = size, .attr = K_MEM_PARTITION_P_RW_U_RW, }; + pdata->mpart[SOF_DP_PART_HEAP_CACHE] = (struct k_mem_partition){ + .start = (uintptr_t)sys_cache_cached_ptr_get((void *)start), + .size = size, + .attr = K_MEM_PARTITION_P_RW_U_RW | XTENSA_MMU_CACHED_WB, + }; /* Host mailbox partition for additional IPC parameters: read-only */ pdata->mpart[SOF_DP_PART_CFG] = (struct k_mem_partition){ - .start = (uintptr_t)MAILBOX_HOSTBOX_BASE, + .start = (uintptr_t)sys_cache_uncached_ptr_get((void *)MAILBOX_HOSTBOX_BASE), .size = 4096, .attr = K_MEM_PARTITION_P_RO_U_RO, }; + pdata->mpart[SOF_DP_PART_CFG_CACHE] = (struct k_mem_partition){ + .start = (uintptr_t)MAILBOX_HOSTBOX_BASE, + .size = 4096, + .attr = K_MEM_PARTITION_P_RO_U_RO | XTENSA_MMU_CACHED_WB, + }; for (pidx = 0; pidx < SOF_DP_PART_TYPE_COUNT; pidx++) { ret = k_mem_domain_add_partition(mdom, pdata->mpart + pidx); From d52aeb1add58772c7c74bbf20ae42c6e4b3ff845 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Tue, 13 Jan 2026 15:09:40 +0100 Subject: [PATCH 2/7] dp: don't schedule paused tasks DP tasks don't need to be rescheduled when pause is released. Default handling works correctly in that case too. Signed-off-by: Guennadi Liakhovetski --- src/include/sof/audio/component_ext.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/include/sof/audio/component_ext.h b/src/include/sof/audio/component_ext.h index f0a1ad7e8512..d2bbf87a7764 100644 --- a/src/include/sof/audio/component_ext.h +++ b/src/include/sof/audio/component_ext.h @@ -158,9 +158,9 @@ static inline int comp_trigger_local(struct comp_dev *dev, int cmd) /* schedule or cancel task */ switch (cmd) { case COMP_TRIGGER_START: - case COMP_TRIGGER_RELEASE: ret = schedule_task(dev->task, 0, dev->period); break; + case COMP_TRIGGER_RELEASE: case COMP_TRIGGER_XRUN: case COMP_TRIGGER_PAUSE: case COMP_TRIGGER_STOP: From 23b0a00fa1e5e913028d799fa8c91e961520c9a9 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Thu, 22 Jan 2026 10:29:10 +0100 Subject: [PATCH 3/7] objpool: fix flag initialisation We compare flags on repeated allocations from an existing pool, but initialisation got forgotten in the process. Restore it. Fixes: d6e6ac57a626 ("Add a object pool allocator") Signed-off-by: Guennadi Liakhovetski --- src/lib/objpool.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib/objpool.c b/src/lib/objpool.c index 76a5b20a6594..e99825f0ccfa 100644 --- a/src/lib/objpool.c +++ b/src/lib/objpool.c @@ -94,6 +94,7 @@ void *objpool_alloc(struct objpool_head *head, size_t size, uint32_t flags) unsigned int new_n; if (list_is_empty(&head->list)) { + head->flags = flags; new_n = 2; } else { /* Check the last one */ From 85323f94f4912a2923d3ee58d08f07b6545524d6 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Thu, 22 Jan 2026 10:34:23 +0100 Subject: [PATCH 4/7] dp: user: fix objpool allocation error handling When an objpool allocation fails an error should be returned. Fix the missing error code assignment. Fixes: fc73f9dde25d ("sp: application: switch memory domains to object pools") Signed-off-by: Guennadi Liakhovetski --- src/schedule/zephyr_dp_schedule_application.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/schedule/zephyr_dp_schedule_application.c b/src/schedule/zephyr_dp_schedule_application.c index ea42498ebf5d..3c063559a9a6 100644 --- a/src/schedule/zephyr_dp_schedule_application.c +++ b/src/schedule/zephyr_dp_schedule_application.c @@ -518,8 +518,11 @@ int scheduler_dp_task_init(struct task **task, const struct sof_uuid_entry *uid, struct k_mem_domain *mdom = objpool_alloc(&dp_mdom_head, sizeof(*mdom), SOF_MEM_FLAG_COHERENT); - if (!mdom) + if (!mdom) { + tr_err(&dp_tr, "objpool allocation failed"); + ret = -ENOMEM; goto e_thread; + } mod->mdom = mdom; From c8576548d321afaee2676e2b364b67fd2d63e9ba Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Fri, 6 Feb 2026 12:04:08 +0100 Subject: [PATCH 5/7] audio: module-adapter: fix SRC DP regression A recent module-adapter feature addition broke SRC DP support. Fix it by adding a test for incomplete initialization data. Signed-off-by: Guennadi Liakhovetski --- src/audio/module_adapter/module_adapter_ipc4.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/audio/module_adapter/module_adapter_ipc4.c b/src/audio/module_adapter/module_adapter_ipc4.c index a6fab69bbd86..37184a5a5587 100644 --- a/src/audio/module_adapter/module_adapter_ipc4.c +++ b/src/audio/module_adapter/module_adapter_ipc4.c @@ -159,7 +159,8 @@ int module_adapter_init_data(struct comp_dev *dev, } } - if (!config->ipc_extended_init) { + if (!config->ipc_extended_init || + (!dst->ext_data->dp_data && !dst->ext_data->module_data)) { dst->init_data = cfg; /* legacy API */ dst->avail = true; } From a168c3d17a32cd645c311d489f690247ba6e7b2a Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Fri, 6 Feb 2026 17:17:10 +0100 Subject: [PATCH 6/7] Revert "audio: module-adapter: use objpool for allocation containers" This reverts commit 8acc9ca504b3536f2fbc572296067c82452710c5. It seems to break certain capture flows, revert it until fixed. Signed-off-by: Guennadi Liakhovetski --- posix/include/rtos/alloc.h | 1 - src/audio/module_adapter/module/generic.c | 117 ++++++++++++------ .../sof/audio/module_adapter/module/generic.h | 7 +- src/platform/library/lib/alloc.c | 5 - test/cmocka/src/audio/eq_fir/CMakeLists.txt | 1 - test/cmocka/src/audio/eq_iir/CMakeLists.txt | 1 - test/cmocka/src/audio/mixer/CMakeLists.txt | 1 - test/cmocka/src/audio/mux/CMakeLists.txt | 1 - test/cmocka/src/audio/volume/CMakeLists.txt | 1 - test/cmocka/src/common_mocks.c | 5 - zephyr/lib/alloc.c | 2 + 11 files changed, 82 insertions(+), 60 deletions(-) diff --git a/posix/include/rtos/alloc.h b/posix/include/rtos/alloc.h index b8efac0d3112..6b690ecbc895 100644 --- a/posix/include/rtos/alloc.h +++ b/posix/include/rtos/alloc.h @@ -140,7 +140,6 @@ static inline void k_heap_init(struct k_heap *heap, void *mem, size_t bytes) void *sof_heap_alloc(struct k_heap *heap, uint32_t flags, size_t bytes, size_t alignment); void sof_heap_free(struct k_heap *heap, void *addr); -struct k_heap *sof_sys_heap_get(void); /** * Calculates length of the null-terminated string. diff --git a/src/audio/module_adapter/module/generic.c b/src/audio/module_adapter/module/generic.c index f9bf5d52bef3..d2b86bb40d08 100644 --- a/src/audio/module_adapter/module/generic.c +++ b/src/audio/module_adapter/module/generic.c @@ -12,8 +12,6 @@ */ #include -#include -#include #include #include #include @@ -83,10 +81,10 @@ int module_load_config(struct comp_dev *dev, const void *cfg, size_t size) void mod_resource_init(struct processing_module *mod) { struct module_data *md = &mod->priv; - /* Init memory list */ - list_init(&md->resources.objpool.list); - md->resources.objpool.heap = md->resources.heap; + list_init(&md->resources.res_list); + list_init(&md->resources.free_cont_list); + list_init(&md->resources.cont_chunk_list); md->resources.heap_usage = 0; md->resources.heap_high_water_mark = 0; } @@ -143,14 +141,43 @@ int module_init(struct processing_module *mod) return 0; } +struct container_chunk { + struct list_item chunk_list; + struct module_resource containers[CONFIG_MODULE_MEMORY_API_CONTAINER_CHUNK_SIZE]; +}; + static struct module_resource *container_get(struct processing_module *mod) { - return objpool_alloc(&mod->priv.resources.objpool, sizeof(struct module_resource), 0); + struct module_resources *res = &mod->priv.resources; + struct k_heap *mod_heap = res->heap; + struct module_resource *container; + + if (list_is_empty(&res->free_cont_list)) { + struct container_chunk *chunk = sof_heap_alloc(mod_heap, 0, sizeof(*chunk), 0); + int i; + + if (!chunk) { + comp_err(mod->dev, "allocating more containers failed"); + return NULL; + } + + memset(chunk, 0, sizeof(*chunk)); + + list_item_append(&chunk->chunk_list, &res->cont_chunk_list); + for (i = 0; i < ARRAY_SIZE(chunk->containers); i++) + list_item_append(&chunk->containers[i].list, &res->free_cont_list); + } + + container = list_first_item(&res->free_cont_list, struct module_resource, list); + list_item_del(&container->list); + return container; } static void container_put(struct processing_module *mod, struct module_resource *container) { - objpool_free(&mod->priv.resources.objpool, container); + struct module_resources *res = &mod->priv.resources; + + list_item_append(&container->list, &res->free_cont_list); } #if CONFIG_USERSPACE @@ -208,6 +235,7 @@ void *mod_balloc_align(struct processing_module *mod, size_t size, size_t alignm container->ptr = ptr; container->size = size; container->type = MOD_RES_HEAP; + list_item_prepend(&container->list, &res->res_list); res->heap_usage += size; if (res->heap_usage > res->heap_high_water_mark) @@ -258,6 +286,7 @@ void *z_impl_mod_alloc_ext(struct processing_module *mod, uint32_t flags, size_t container->ptr = ptr; container->size = size; container->type = MOD_RES_HEAP; + list_item_prepend(&container->list, &res->res_list); res->heap_usage += size; if (res->heap_usage > res->heap_high_water_mark) @@ -277,7 +306,7 @@ EXPORT_SYMBOL(z_impl_mod_alloc_ext); #if CONFIG_COMP_BLOB struct comp_data_blob_handler *mod_data_blob_handler_new(struct processing_module *mod) { - struct module_resources * __maybe_unused res = &mod->priv.resources; + struct module_resources *res = &mod->priv.resources; struct comp_data_blob_handler *bhp; struct module_resource *container; @@ -296,6 +325,7 @@ struct comp_data_blob_handler *mod_data_blob_handler_new(struct processing_modul container->bhp = bhp; container->size = 0; container->type = MOD_RES_BLOB_HANDLER; + list_item_prepend(&container->list, &res->res_list); return bhp; } @@ -332,6 +362,7 @@ const void *z_impl_mod_fast_get(struct processing_module *mod, const void * cons container->sram_ptr = ptr; container->size = 0; container->type = MOD_RES_FAST_GET; + list_item_prepend(&container->list, &res->res_list); return ptr; } @@ -363,29 +394,6 @@ static int free_contents(struct processing_module *mod, struct module_resource * return -EINVAL; } -struct mod_res_cb_arg { - struct processing_module *mod; - const void *ptr; -}; - -static bool mod_res_free(void *data, void *arg) -{ - struct mod_res_cb_arg *cb_arg = arg; - struct module_resource *container = data; - - if (cb_arg->ptr && container->ptr != cb_arg->ptr) - return false; - - int ret = free_contents(cb_arg->mod, container); - - if (ret < 0) - comp_err(cb_arg->mod->dev, "Cannot free allocation %p", cb_arg->ptr); - - container_put(cb_arg->mod, container); - - return true; -} - /** * Frees the memory block removes it from module's book keeping. * @param mod Pointer to module this memory block was allocated for. @@ -394,19 +402,28 @@ static bool mod_res_free(void *data, void *arg) int z_impl_mod_free(struct processing_module *mod, const void *ptr) { struct module_resources *res = &mod->priv.resources; + struct module_resource *container; + struct list_item *res_list; MEM_API_CHECK_THREAD(res); if (!ptr) return 0; - /* Find which container holds this memory */ - struct mod_res_cb_arg cb_arg = {mod, ptr}; - int ret = objpool_iterate(&res->objpool, mod_res_free, &cb_arg); + /* Find which container keeps this memory */ + list_for_item(res_list, &res->res_list) { + container = container_of(res_list, struct module_resource, list); + if (container->ptr == ptr) { + int ret = free_contents(mod, container); + + list_item_del(&container->list); + container_put(mod, container); + return ret; + } + } - if (ret < 0) - comp_err(mod->dev, "error: could not find memory pointed by %p", ptr); + comp_err(mod->dev, "error: could not find memory pointed by %p", ptr); - return ret; + return -EINVAL; } EXPORT_SYMBOL(z_impl_mod_free); @@ -667,14 +684,32 @@ int module_reset(struct processing_module *mod) void mod_free_all(struct processing_module *mod) { struct module_resources *res = &mod->priv.resources; + struct k_heap *mod_heap = res->heap; + struct list_item *list; + struct list_item *_list; MEM_API_CHECK_THREAD(res); - /* Free all contents found in used containers */ - struct mod_res_cb_arg cb_arg = {mod, NULL}; + list_for_item(list, &res->res_list) { + struct module_resource *container = + container_of(list, struct module_resource, list); + + free_contents(mod, container); + } - objpool_iterate(&res->objpool, mod_res_free, &cb_arg); - objpool_prune(&res->objpool); + /* + * We do not need to remove the containers from res_list in + * the loop above or go through free_cont_list as all the + * containers are anyway freed in the loop below, and the list + * heads are reinitialized when mod_resource_init() is called. + */ + list_for_item_safe(list, _list, &res->cont_chunk_list) { + struct container_chunk *chunk = + container_of(list, struct container_chunk, chunk_list); + + list_item_del(&chunk->chunk_list); + sof_heap_free(mod_heap, chunk); + } /* Make sure resource lists and accounting are reset */ mod_resource_init(mod); diff --git a/src/include/sof/audio/module_adapter/module/generic.h b/src/include/sof/audio/module_adapter/module/generic.h index 3334c198b7f3..f23bb602a28e 100644 --- a/src/include/sof/audio/module_adapter/module/generic.h +++ b/src/include/sof/audio/module_adapter/module/generic.h @@ -13,9 +13,8 @@ #ifndef __SOF_AUDIO_MODULE_GENERIC__ #define __SOF_AUDIO_MODULE_GENERIC__ -#include -#include #include +#include #include #include #include "module_interface.h" @@ -129,7 +128,9 @@ struct module_param { * when the module unloads. */ struct module_resources { - struct objpool_head objpool; + struct list_item res_list; /**< Allocad resource containers */ + struct list_item free_cont_list; /**< Unused memory containers */ + struct list_item cont_chunk_list; /**< Memory container chunks */ size_t heap_usage; size_t heap_high_water_mark; struct k_heap *heap; diff --git a/src/platform/library/lib/alloc.c b/src/platform/library/lib/alloc.c index 74cb926e4aff..d733b58f8541 100644 --- a/src/platform/library/lib/alloc.c +++ b/src/platform/library/lib/alloc.c @@ -70,8 +70,3 @@ void heap_trace_all(int force) { heap_trace(NULL, 0); } - -struct k_heap *sof_sys_heap_get(void) -{ - return NULL; -} diff --git a/test/cmocka/src/audio/eq_fir/CMakeLists.txt b/test/cmocka/src/audio/eq_fir/CMakeLists.txt index 226128b220d2..305a6846966c 100644 --- a/test/cmocka/src/audio/eq_fir/CMakeLists.txt +++ b/test/cmocka/src/audio/eq_fir/CMakeLists.txt @@ -37,7 +37,6 @@ add_library(audio_for_eq_fir STATIC ${PROJECT_SOURCE_DIR}/src/ipc/ipc3/helper.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-common.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-helper.c - ${PROJECT_SOURCE_DIR}/src/lib/objpool.c ${PROJECT_SOURCE_DIR}/test/cmocka/src/notifier_mocks.c ${PROJECT_SOURCE_DIR}/src/audio/pipeline/pipeline-graph.c ${PROJECT_SOURCE_DIR}/src/audio/pipeline/pipeline-params.c diff --git a/test/cmocka/src/audio/eq_iir/CMakeLists.txt b/test/cmocka/src/audio/eq_iir/CMakeLists.txt index b5ff8770eec2..aa704a1af92b 100644 --- a/test/cmocka/src/audio/eq_iir/CMakeLists.txt +++ b/test/cmocka/src/audio/eq_iir/CMakeLists.txt @@ -40,7 +40,6 @@ add_library(audio_for_eq_iir STATIC ${PROJECT_SOURCE_DIR}/src/ipc/ipc3/helper.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-common.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-helper.c - ${PROJECT_SOURCE_DIR}/src/lib/objpool.c ${PROJECT_SOURCE_DIR}/test/cmocka/src/notifier_mocks.c ${PROJECT_SOURCE_DIR}/src/audio/pipeline/pipeline-graph.c ${PROJECT_SOURCE_DIR}/src/audio/pipeline/pipeline-params.c diff --git a/test/cmocka/src/audio/mixer/CMakeLists.txt b/test/cmocka/src/audio/mixer/CMakeLists.txt index c0dbb8a0a4fc..ea8cad0bd79e 100644 --- a/test/cmocka/src/audio/mixer/CMakeLists.txt +++ b/test/cmocka/src/audio/mixer/CMakeLists.txt @@ -10,7 +10,6 @@ cmocka_test(mixer ${PROJECT_SOURCE_DIR}/src/ipc/ipc3/helper.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-common.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-helper.c - ${PROJECT_SOURCE_DIR}/src/lib/objpool.c ${PROJECT_SOURCE_DIR}/src/audio/module_adapter/module_adapter.c ${PROJECT_SOURCE_DIR}/src/audio/module_adapter/module_adapter_ipc3.c ${PROJECT_SOURCE_DIR}/src/audio/module_adapter/module/generic.c diff --git a/test/cmocka/src/audio/mux/CMakeLists.txt b/test/cmocka/src/audio/mux/CMakeLists.txt index a4a72613fd6b..67b10f77270d 100644 --- a/test/cmocka/src/audio/mux/CMakeLists.txt +++ b/test/cmocka/src/audio/mux/CMakeLists.txt @@ -25,7 +25,6 @@ add_library( ${PROJECT_SOURCE_DIR}/src/math/numbers.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc3/helper.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-helper.c - ${PROJECT_SOURCE_DIR}/src/lib/objpool.c ${PROJECT_SOURCE_DIR}/test/cmocka/src/notifier_mocks.c ${PROJECT_SOURCE_DIR}/src/audio/module_adapter/module_adapter.c ${PROJECT_SOURCE_DIR}/src/audio/module_adapter/module_adapter_ipc3.c diff --git a/test/cmocka/src/audio/volume/CMakeLists.txt b/test/cmocka/src/audio/volume/CMakeLists.txt index 0385441e5878..d89927578222 100644 --- a/test/cmocka/src/audio/volume/CMakeLists.txt +++ b/test/cmocka/src/audio/volume/CMakeLists.txt @@ -34,7 +34,6 @@ add_library(audio_for_volume STATIC ${PROJECT_SOURCE_DIR}/src/ipc/ipc3/helper.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-common.c ${PROJECT_SOURCE_DIR}/src/ipc/ipc-helper.c - ${PROJECT_SOURCE_DIR}/src/lib/objpool.c ${PROJECT_SOURCE_DIR}/test/cmocka/src/notifier_mocks.c ${PROJECT_SOURCE_DIR}/src/audio/pipeline/pipeline-graph.c ${PROJECT_SOURCE_DIR}/src/audio/pipeline/pipeline-params.c diff --git a/test/cmocka/src/common_mocks.c b/test/cmocka/src/common_mocks.c index 60b6215c4cd5..ef996b8f3500 100644 --- a/test/cmocka/src/common_mocks.c +++ b/test/cmocka/src/common_mocks.c @@ -124,11 +124,6 @@ int WEAK mod_free(struct processing_module *mod, const void *ptr) return 0; } -struct k_heap * WEAK sof_sys_heap_get(void) -{ - return NULL; -} - void WEAK *sof_heap_alloc(struct k_heap *heap, uint32_t flags, size_t bytes, size_t alignment) { diff --git a/zephyr/lib/alloc.c b/zephyr/lib/alloc.c index f95f66fbdb7f..8a2fed79ee41 100644 --- a/zephyr/lib/alloc.c +++ b/zephyr/lib/alloc.c @@ -9,10 +9,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include From 4072b107c94c7b4dcdaac1699e6adfaceaf11216 Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Tue, 6 Jan 2026 16:27:24 +0100 Subject: [PATCH 7/7] dp: nocodec: switch SRC to DP by default Switch both SRC instances in the nocodec topology on PTL to DP mode by default. Signed-off-by: Guennadi Liakhovetski --- tools/topology/topology2/development/tplg-targets.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/topology/topology2/development/tplg-targets.cmake b/tools/topology/topology2/development/tplg-targets.cmake index 7986eb2bad11..b382dc1b4bc1 100644 --- a/tools/topology/topology2/development/tplg-targets.cmake +++ b/tools/topology/topology2/development/tplg-targets.cmake @@ -60,9 +60,9 @@ NHLT_BIN=nhlt-sof-lnl-nocodec-fpga-4ch.bin,PASSTHROUGH=true,DMIC_IO_CLK=19200000 # HDA topology with passthrough analog codec pipelines using CHAIN_DMA "sof-hda-generic\;sof-hda-passthrough-chain-dma\;HDA_CONFIG=passthrough,CODEC_HDA_CHAIN_DMA=true" -# SSP topology for PTL +# SSP topology for PTL, includes Data Processing SRC "cavs-nocodec\;sof-ptl-nocodec\;PLATFORM=ptl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-nocodec.bin" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-nocodec.bin,SRC_DOMAIN=DP" # SSP topology for PTL with 96 kHz DMIC "cavs-nocodec\;sof-ptl-nocodec-dmic-4ch-96k\;PLATFORM=ptl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ @@ -310,9 +310,9 @@ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-mtl-nocodec.bin,SRC_DOMAIN=DP" # SSP test topology for Data Processing SRC on LNL "cavs-nocodec\;sof-lnl-nocodec-dp-test\;PLATFORM=lnl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-lnl-nocodec.bin,SRC_DOMAIN=DP" -# SSP test topology for Data Processing SRC on PTL +# SSP test topology for PTL with no DP "cavs-nocodec\;sof-ptl-nocodec-dp-test\;PLATFORM=ptl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\ -PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-nocodec.bin,SRC_DOMAIN=DP" +PREPROCESS_PLUGINS=nhlt,NHLT_BIN=nhlt-sof-ptl-nocodec.bin" # SSP test topology for Data Processing on core 1 SRC for MTL "cavs-nocodec\;sof-mtl-nocodec-dp-core-test\;PLATFORM=mtl,NUM_DMICS=4,PDM1_MIC_A_ENABLE=1,PDM1_MIC_B_ENABLE=1,\