diff --git a/app/boards/intel_adsp_ace15_mtpm.conf b/app/boards/intel_adsp_ace15_mtpm.conf index f4f8a204cc9d..69964fd316c5 100644 --- a/app/boards/intel_adsp_ace15_mtpm.conf +++ b/app/boards/intel_adsp_ace15_mtpm.conf @@ -9,7 +9,7 @@ CONFIG_COMP_DRC=m CONFIG_COMP_CROSSOVER=m CONFIG_COMP_DCBLOCK=m CONFIG_COMP_SEL=m -CONFIG_COMP_MULTIBAND_DRC=y +CONFIG_COMP_MULTIBAND_DRC=m CONFIG_COMP_MFCC=y # power settings diff --git a/app/boards/intel_adsp_ace20_lnl.conf b/app/boards/intel_adsp_ace20_lnl.conf index 9cd8c593bffb..1c71d2e3dbcd 100644 --- a/app/boards/intel_adsp_ace20_lnl.conf +++ b/app/boards/intel_adsp_ace20_lnl.conf @@ -8,6 +8,7 @@ CONFIG_COMP_DRC=m CONFIG_COMP_CROSSOVER=m CONFIG_COMP_DCBLOCK=m CONFIG_COMP_SEL=m +CONFIG_COMP_MULTIBAND_DRC=m # power settings CONFIG_PM=y diff --git a/src/audio/multiband_drc/Kconfig b/src/audio/multiband_drc/Kconfig index d9e61c915ccd..5adb668497a4 100644 --- a/src/audio/multiband_drc/Kconfig +++ b/src/audio/multiband_drc/Kconfig @@ -1,8 +1,8 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_MULTIBAND_DRC - depends on COMP_IIR && COMP_CROSSOVER && COMP_DRC = y - bool "Multiband Dynamic Range Compressor component" + depends on COMP_IIR && COMP_CROSSOVER && COMP_DRC + tristate "Multiband Dynamic Range Compressor component" select CORDIC_FIXED select COMP_BLOB default n diff --git a/src/audio/multiband_drc/llext/CMakeLists.txt b/src/audio/multiband_drc/llext/CMakeLists.txt new file mode 100644 index 000000000000..73c0c4136c30 --- /dev/null +++ b/src/audio/multiband_drc/llext/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("multiband_drc" + SOURCES ../multiband_drc.c + ../multiband_drc_generic.c + ../multiband_drc_ipc4.c +) diff --git a/src/audio/multiband_drc/llext/llext.toml.h b/src/audio/multiband_drc/llext/llext.toml.h new file mode 100644 index 000000000000..7d5ce873eeb0 --- /dev/null +++ b/src/audio/multiband_drc/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../multiband_drc.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/multiband_drc/multiband_drc.c b/src/audio/multiband_drc/multiband_drc.c index 47c2343912c6..c6cb75bd7cb8 100644 --- a/src/audio/multiband_drc/multiband_drc.c +++ b/src/audio/multiband_drc/multiband_drc.c @@ -419,3 +419,22 @@ static const struct module_interface multiband_drc_interface = { DECLARE_MODULE_ADAPTER(multiband_drc_interface, multiband_drc_uuid, multiband_drc_tr); SOF_MODULE_INIT(multiband_drc, sys_comp_module_multiband_drc_interface_init); + +#if CONFIG_COMP_MULTIBAND_DRC_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_MULTIBAND_DRC 0x56, 0x22, 0x9F, 0x0D, 0x4F, 0x8E, 0xB3, 0x47, 0x48, 0x84, \ + 0x23, 0x9A, 0x33, 0x4F, 0x11, 0x91 + +SOF_LLEXT_MOD_ENTRY(multiband_drc, &multiband_drc_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("MB_DRC", multiband_drc_llext_entry, 1, UUID_MULTIBAND_DRC, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/multiband_drc/multiband_drc.toml b/src/audio/multiband_drc/multiband_drc.toml index a60bedd91287..008da93dcef0 100644 --- a/src/audio/multiband_drc/multiband_drc.toml +++ b/src/audio/multiband_drc/multiband_drc.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # Multiband-DRC module config [[module.entry]] name = "MB_DRC" @@ -5,7 +9,7 @@ affinity_mask = "0x1" instance_count = "40" domain_types = "0" - load_type = "0" + load_type = LOAD_TYPE module_type = "9" auto_start = "0" sched_caps = [1, 0x00008000] diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index b60578500f89..2798234960fa 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -844,11 +844,17 @@ if(NOT CONFIG_COMP_DRC STREQUAL "n") ) endif() -zephyr_library_sources_ifdef(CONFIG_COMP_MULTIBAND_DRC - ${SOF_AUDIO_PATH}/multiband_drc/multiband_drc.c - ${SOF_AUDIO_PATH}/multiband_drc/multiband_drc_generic.c - ${SOF_AUDIO_PATH}/multiband_drc/multiband_drc_${ipc_suffix}.c -) +if(CONFIG_COMP_MULTIBAND_DRC STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/multiband_drc/llext + ${PROJECT_BINARY_DIR}/multiband_drc_llext) + add_dependencies(app multiband_drc) +elseif(CONFIG_COMP_MULTIBAND_DRC) + zephyr_library_sources_ifdef(CONFIG_COMP_MULTIBAND_DRC + ${SOF_AUDIO_PATH}/multiband_drc/multiband_drc.c + ${SOF_AUDIO_PATH}/multiband_drc/multiband_drc_generic.c + ${SOF_AUDIO_PATH}/multiband_drc/multiband_drc_${ipc_suffix}.c + ) +endif() zephyr_library_sources_ifdef(CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING ${SOF_AUDIO_PATH}/google/google_rtc_audio_processing.c