diff --git a/app/configs/lnl/modules.conf b/app/configs/lnl/modules.conf index 90002ad32c08..fbef3ae182c7 100644 --- a/app/configs/lnl/modules.conf +++ b/app/configs/lnl/modules.conf @@ -1,8 +1,22 @@ +CONFIG_DTS_CODEC=m CONFIG_SAMPLE_SMART_AMP=m +CONFIG_COMP_STUBS=y CONFIG_COMP_MIXIN_MIXOUT=m CONFIG_COMP_FIR=m CONFIG_COMP_IIR=m CONFIG_COMP_DRC=m +CONFIG_COMP_MUX=m +CONFIG_COMP_SEL=m CONFIG_COMP_SRC=m +CONFIG_COMP_ARIA=m CONFIG_COMP_ASRC=m +CONFIG_COMP_MFCC=m +CONFIG_COMP_RTNR=m +CONFIG_COMP_TDFB=m +CONFIG_COMP_IGO_NR=m CONFIG_COMP_VOLUME=m +CONFIG_COMP_DCBLOCK=m +CONFIG_COMP_CROSSOVER=m +CONFIG_COMP_MULTIBAND_DRC=m +CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING=m +CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=m diff --git a/app/configs/mtl/modules.conf b/app/configs/mtl/modules.conf index 90002ad32c08..fbef3ae182c7 100644 --- a/app/configs/mtl/modules.conf +++ b/app/configs/mtl/modules.conf @@ -1,8 +1,22 @@ +CONFIG_DTS_CODEC=m CONFIG_SAMPLE_SMART_AMP=m +CONFIG_COMP_STUBS=y CONFIG_COMP_MIXIN_MIXOUT=m CONFIG_COMP_FIR=m CONFIG_COMP_IIR=m CONFIG_COMP_DRC=m +CONFIG_COMP_MUX=m +CONFIG_COMP_SEL=m CONFIG_COMP_SRC=m +CONFIG_COMP_ARIA=m CONFIG_COMP_ASRC=m +CONFIG_COMP_MFCC=m +CONFIG_COMP_RTNR=m +CONFIG_COMP_TDFB=m +CONFIG_COMP_IGO_NR=m CONFIG_COMP_VOLUME=m +CONFIG_COMP_DCBLOCK=m +CONFIG_COMP_CROSSOVER=m +CONFIG_COMP_MULTIBAND_DRC=m +CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING=m +CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=m diff --git a/src/audio/aria/Kconfig b/src/audio/aria/Kconfig index ec0bce76ef3f..b1249ccb816a 100644 --- a/src/audio/aria/Kconfig +++ b/src/audio/aria/Kconfig @@ -1,11 +1,11 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_ARIA - bool "ARIA component" - default n - depends on IPC_MAJOR_4 - help - Select for Automatic Regressive Input Amplifier Module component + tristate "ARIA component" + default n + depends on IPC_MAJOR_4 + help + Select for Automatic Regressive Input Amplifier Module component ARIA applies variable gain into incoming signal. Applied gain is in range <1, 2 power attenuation> Currently ARIA introduces gain transition and algorithmic diff --git a/src/audio/aria/aria.c b/src/audio/aria/aria.c index 7f3d3e5e10f8..209dec8e5d54 100644 --- a/src/audio/aria/aria.c +++ b/src/audio/aria/aria.c @@ -292,3 +292,22 @@ static const struct module_interface aria_interface = { DECLARE_MODULE_ADAPTER(aria_interface, aria_uuid, aria_comp_tr); SOF_MODULE_INIT(aria, sys_comp_module_aria_interface_init); + +#if CONFIG_COMP_ARIA_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_ARIA 0x6D, 0x16, 0xF7, 0x99, 0x2C, 0x37, 0xEF, 0x43, 0xF6, 0x81, \ + 0x22, 0x00, 0x7A, 0xA1, 0x5F, 0x03 + +SOF_LLEXT_MOD_ENTRY(aria, &aria_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("ARIA", aria_llext_entry, 1, UUID_ARIA, 8); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/aria/aria.toml b/src/audio/aria/aria.toml index ef5ac03511b1..fa97abcc7bcf 100644 --- a/src/audio/aria/aria.toml +++ b/src/audio/aria/aria.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # Aria module config [[module.entry]] name = "ARIA" @@ -5,7 +9,7 @@ affinity_mask = "0x1" instance_count = "8" domain_types = "0" - load_type = "0" + load_type = LOAD_TYPE init_config = "1" module_type = "30" auto_start = "0" diff --git a/src/audio/aria/llext/CMakeLists.txt b/src/audio/aria/llext/CMakeLists.txt new file mode 100644 index 000000000000..080581dbcdb6 --- /dev/null +++ b/src/audio/aria/llext/CMakeLists.txt @@ -0,0 +1,9 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("aria" + SOURCES ../aria.c + ../aria_hifi5.c + ../aria_hifi3.c + ../aria_generic.c +) diff --git a/src/audio/aria/llext/llext.toml.h b/src/audio/aria/llext/llext.toml.h new file mode 100644 index 000000000000..045de1f58dc3 --- /dev/null +++ b/src/audio/aria/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../aria.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/codec/Kconfig b/src/audio/codec/Kconfig index 4823df512554..59eaef67e1b7 100644 --- a/src/audio/codec/Kconfig +++ b/src/audio/codec/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config DTS_CODEC - bool "DTS codec" + tristate "DTS codec" default n select DTS_CODEC_STUB if COMP_STUBS help diff --git a/src/audio/codec/dts/dts.c b/src/audio/codec/dts/dts.c index c6ef230d9be5..d54a9ef9df9d 100644 --- a/src/audio/codec/dts/dts.c +++ b/src/audio/codec/dts/dts.c @@ -419,7 +419,9 @@ dts_codec_set_configuration(struct processing_module *mod, uint32_t config_id, const uint8_t *fragment, size_t fragment_size, uint8_t *response, size_t response_size) { +#if CONFIG_IPC_MAJOR_3 struct module_data *md = &mod->priv; +#endif struct comp_dev *dev = mod->dev; int ret; @@ -469,3 +471,22 @@ static const struct module_interface dts_interface = { DECLARE_MODULE_ADAPTER(dts_interface, dts_uuid, dts_tr); SOF_MODULE_INIT(dts, sys_comp_module_dts_interface_init); + +#if CONFIG_DTS_CODEC_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_DTS 0x4F, 0xC3, 0x5F, 0xD9, 0x0F, 0x37, 0xC7, 0x4A, 0x86, 0xBC, \ + 0xBF, 0xDC, 0x5B, 0xE2, 0x41, 0xE6 + +SOF_LLEXT_MOD_ENTRY(dts, &dts_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("DTS", dts_llext_entry, 1, UUID_DTS, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/codec/dts/dts.toml b/src/audio/codec/dts/dts.toml index 17f029df67d0..debbbd82b47f 100644 --- a/src/audio/codec/dts/dts.toml +++ b/src/audio/codec/dts/dts.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # dts codec module config [[module.entry]] name = "DTS" @@ -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/src/audio/codec/dts/llext/CMakeLists.txt b/src/audio/codec/dts/llext/CMakeLists.txt new file mode 100644 index 000000000000..f73dc4d3123b --- /dev/null +++ b/src/audio/codec/dts/llext/CMakeLists.txt @@ -0,0 +1,14 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +if(CONFIG_DTS_CODEC_STUB) +sof_llext_build("dts" + SOURCES ../dts.c + ../dts_stub.c +) +target_include_directories(dts_llext_lib PRIVATE + "../../../../../third_party/include" +) +else() +message(FATAL_ERROR "Add library linking support in src/audio/codec/dts/llext/CMakeLists.txt") +endif() diff --git a/src/audio/codec/dts/llext/llext.toml.h b/src/audio/codec/dts/llext/llext.toml.h new file mode 100644 index 000000000000..cca37e4b5605 --- /dev/null +++ b/src/audio/codec/dts/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../dts.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/crossover/Kconfig b/src/audio/crossover/Kconfig index ceff5914455f..8044d300f6e1 100644 --- a/src/audio/crossover/Kconfig +++ b/src/audio/crossover/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_CROSSOVER - bool "Crossover Filter component" + tristate "Crossover Filter component" select COMP_BLOB select MATH_IIR_DF2T default n diff --git a/src/audio/crossover/crossover.c b/src/audio/crossover/crossover.c index 9fffda1858c5..041e3b4e603c 100644 --- a/src/audio/crossover/crossover.c +++ b/src/audio/crossover/crossover.c @@ -636,3 +636,22 @@ static const struct module_interface crossover_interface = { DECLARE_MODULE_ADAPTER(crossover_interface, crossover_uuid, crossover_tr); SOF_MODULE_INIT(crossover, sys_comp_module_crossover_interface_init); + +#if CONFIG_COMP_CROSSOVER_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_CROSSOVER 0xD1, 0x9A, 0x8C, 0x94, 0x6A, 0x80, 0x31, 0x41, 0x6C, 0xAD, \ + 0xB2, 0xBD, 0xA9, 0xE3, 0x5A, 0x9F + +SOF_LLEXT_MOD_ENTRY(crossover, &crossover_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("XOVER", crossover_llext_entry, 1, UUID_CROSSOVER, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/crossover/crossover.toml b/src/audio/crossover/crossover.toml index dd3804f93031..c27f14ce34e6 100644 --- a/src/audio/crossover/crossover.toml +++ b/src/audio/crossover/crossover.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # Crossover module config REM # Note: Crossover has init_config set to 1 to let kernel know that the base_cfg_ext needs to REM # be appended to the IPC payload. The Extension is needed to know the output pin indices. @@ -7,7 +11,7 @@ affinity_mask = "0x1" instance_count = "40" domain_types = "0" - load_type = "0" + load_type = LOAD_TYPE module_type = "9" init_config = "1" auto_start = "0" diff --git a/src/audio/crossover/llext/CMakeLists.txt b/src/audio/crossover/llext/CMakeLists.txt new file mode 100644 index 000000000000..0adb2631e60f --- /dev/null +++ b/src/audio/crossover/llext/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("crossover" + SOURCES ../crossover.c + ../crossover_generic.c + ../crossover_ipc4.c +) diff --git a/src/audio/crossover/llext/llext.toml.h b/src/audio/crossover/llext/llext.toml.h new file mode 100644 index 000000000000..f4134dd7e27e --- /dev/null +++ b/src/audio/crossover/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../crossover.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/dcblock/Kconfig b/src/audio/dcblock/Kconfig index 1b38cdf7ff54..af6eae1c3c7e 100644 --- a/src/audio/dcblock/Kconfig +++ b/src/audio/dcblock/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_DCBLOCK - bool "DC Blocking Filter component" + tristate "DC Blocking Filter component" default y help Select for DC Blocking Filter component. This component filters out diff --git a/src/audio/dcblock/dcblock.c b/src/audio/dcblock/dcblock.c index 6b7c23edd906..9029139355c3 100644 --- a/src/audio/dcblock/dcblock.c +++ b/src/audio/dcblock/dcblock.c @@ -257,3 +257,22 @@ static const struct module_interface dcblock_interface = { DECLARE_MODULE_ADAPTER(dcblock_interface, dcblock_uuid, dcblock_tr); SOF_MODULE_INIT(dcblock, sys_comp_module_dcblock_interface_init); + +#if CONFIG_COMP_DCBLOCK_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_DCBLOCK 0xAF, 0xEF, 0x09, 0xB8, 0x81, 0x56, 0xB1, 0x42, 0xD6, 0x9E, \ + 0x04, 0xBB, 0x01, 0x2D, 0xD3, 0x84 + +SOF_LLEXT_MOD_ENTRY(dcblock, &dcblock_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("DCBLOCK", dcblock_llext_entry, 1, UUID_DCBLOCK, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/dcblock/dcblock.toml b/src/audio/dcblock/dcblock.toml index 69796d3a67e3..8ad98ed54d5b 100644 --- a/src/audio/dcblock/dcblock.toml +++ b/src/audio/dcblock/dcblock.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # DCblock module config [[module.entry]] name = "DCBLOCK" @@ -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/src/audio/dcblock/llext/CMakeLists.txt b/src/audio/dcblock/llext/CMakeLists.txt new file mode 100644 index 000000000000..9aa677d05be4 --- /dev/null +++ b/src/audio/dcblock/llext/CMakeLists.txt @@ -0,0 +1,10 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("dcblock" + SOURCES ../dcblock.c + ../dcblock_generic.c + ../dcblock_hifi3.c + ../dcblock_hifi4.c + ../dcblock_ipc4.c +) diff --git a/src/audio/dcblock/llext/llext.toml.h b/src/audio/dcblock/llext/llext.toml.h new file mode 100644 index 000000000000..ad7917a3d16b --- /dev/null +++ b/src/audio/dcblock/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../dcblock.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/google/Kconfig b/src/audio/google/Kconfig index 336817112301..2f2f5693acc7 100644 --- a/src/audio/google/Kconfig +++ b/src/audio/google/Kconfig @@ -13,7 +13,7 @@ config COMP_GOOGLE_HOTWORD_DETECT detector. config COMP_GOOGLE_RTC_AUDIO_PROCESSING - bool "Google Real Time Communication Audio processing" + tristate "Google Real Time Communication Audio processing" select COMP_BLOB default n help @@ -26,7 +26,6 @@ config COMP_GOOGLE_RTC_AUDIO_PROCESSING if COMP_GOOGLE_RTC_AUDIO_PROCESSING config COMP_GOOGLE_RTC_AUDIO_PROCESSING_SAMPLE_RATE_HZ - depends on COMP_GOOGLE_RTC_AUDIO_PROCESSING int "Sample rate for Google Real Time Communication Audio processing" default 48000 help @@ -55,7 +54,6 @@ config COMP_GOOGLE_RTC_AUDIO_REFERENCE_CHANNEL_MAX are ignored config COMP_GOOGLE_RTC_AUDIO_PROCESSING_MEMORY_BUFFER_SIZE_KB - depends on COMP_GOOGLE_RTC_AUDIO_PROCESSING int "Memory buffer size for Google Real Time Communication Audio processing" default 200 help @@ -63,7 +61,6 @@ config COMP_GOOGLE_RTC_AUDIO_PROCESSING_MEMORY_BUFFER_SIZE_KB communication audio processing. config COMP_GOOGLE_RTC_AUDIO_PROCESSING_ECHO_PATH_DELAY_MS - depends on COMP_GOOGLE_RTC_AUDIO_PROCESSING int "Echo path delay for Google Real Time Communication Audio processing" default 44 help @@ -71,7 +68,6 @@ config COMP_GOOGLE_RTC_AUDIO_PROCESSING_ECHO_PATH_DELAY_MS audio processing. config COMP_GOOGLE_RTC_AUDIO_PROCESSING_MIC_HEADROOM_LINEAR - depends on COMP_GOOGLE_RTC_AUDIO_PROCESSING int "Microphone headroom for Google Real Time Communication Audio processing" default 4 help @@ -81,7 +77,6 @@ config COMP_GOOGLE_RTC_AUDIO_PROCESSING_MIC_HEADROOM_LINEAR config GOOGLE_RTC_AUDIO_PROCESSING_MOCK bool "Google Real Time Communication Audio processing mock" default y if COMP_STUBS - depends on COMP_GOOGLE_RTC_AUDIO_PROCESSING help Mock Google real-time communication audio processing. It allows for compilation check and basic audio flow checking. @@ -89,7 +84,7 @@ config GOOGLE_RTC_AUDIO_PROCESSING_MOCK endif # COMP_GOOGLE_RTC_AUDIO_PROCESSING config COMP_GOOGLE_CTC_AUDIO_PROCESSING - bool "Google Crosstalk Cancellation Audio processing" + tristate "Google Crosstalk Cancellation Audio processing" select COMP_BLOB select GOOGLE_CTC_AUDIO_PROCESSING_MOCK if COMP_STUBS select STATIC_INIT_GNU if ZEPHYR_SOF_MODULE diff --git a/src/audio/google/google_ctc_audio_processing.c b/src/audio/google/google_ctc_audio_processing.c index 68d384789ab5..f02a7c2a5b10 100644 --- a/src/audio/google/google_ctc_audio_processing.c +++ b/src/audio/google/google_ctc_audio_processing.c @@ -348,7 +348,6 @@ static int ctc_prepare(struct processing_module *mod, struct google_ctc_audio_processing_comp_data *cd = module_get_private_data(mod); struct comp_dev *dev = mod->dev; struct comp_buffer *source; - enum sof_ipc_frame fmt; int num_channels; uint8_t *config; int config_size; @@ -459,3 +458,23 @@ DECLARE_MODULE_ADAPTER(google_ctc_audio_processing_interface, google_ctc_audio_processing_uuid, google_ctc_audio_processing_tr); SOF_MODULE_INIT(google_ctc_audio_processing, sys_comp_module_google_ctc_audio_processing_interface_init); + +#if CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_GOOGLE_CTC 0xBC, 0x1B, 0x0E, 0xBF, 0x6A, 0xDC, 0xFE, 0x45, 0x90, 0xBC, \ + 0x25, 0x54, 0xCB, 0x13, 0x7A, 0xB4 + +SOF_LLEXT_MOD_ENTRY(google_ctc_audio_processing, &google_ctc_audio_processing_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("CTC", google_ctc_audio_processing_llext_entry, + 1, UUID_GOOGLE_CTC, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/google/google_ctc_audio_processing.toml b/src/audio/google/google_ctc_audio_processing.toml index 849689dcc7fc..b136273f0362 100644 --- a/src/audio/google/google_ctc_audio_processing.toml +++ b/src/audio/google/google_ctc_audio_processing.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # CTC module config [[module.entry]] name = "CTC" @@ -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/src/audio/google/google_ctc_audio_processing_mock.c b/src/audio/google/google_ctc_audio_processing_mock.c index 3828ce5b271a..ea962aa3a774 100644 --- a/src/audio/google/google_ctc_audio_processing_mock.c +++ b/src/audio/google/google_ctc_audio_processing_mock.c @@ -4,7 +4,6 @@ // // Author: Eddy Hsu #include "google_ctc_audio_processing.h" -#include "google_ctc_audio_processing_sof_message_reader.h" #include #include diff --git a/src/audio/google/google_rtc_audio_processing.c b/src/audio/google/google_rtc_audio_processing.c index cc5dc1bb6983..30ee258d95c0 100644 --- a/src/audio/google/google_rtc_audio_processing.c +++ b/src/audio/google/google_rtc_audio_processing.c @@ -856,3 +856,23 @@ DECLARE_MODULE_ADAPTER(google_rtc_audio_processing_interface, google_rtc_audio_processing_uuid, google_rtc_audio_processing_tr); SOF_MODULE_INIT(google_rtc_audio_processing, sys_comp_module_google_rtc_audio_processing_interface_init); + +#if CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_GOOGLE_RTC_AEC 0xA6, 0xA0, 0x80, 0xB7, 0x9F, 0x26, 0x6F, 0x46, 0x77, 0xB4, \ + 0x23, 0xDF, 0xA0, 0x5A, 0xF7, 0x58 + +SOF_LLEXT_MOD_ENTRY(google_rtc_audio_processing, &google_rtc_audio_processing_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("RTC_AEC", google_rtc_audio_processing_llext_entry, + 7, UUID_GOOGLE_RTC_AEC, 1); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/google/google_rtc_audio_processing.toml b/src/audio/google/google_rtc_audio_processing.toml index 7561dfe7fe26..eab8e437f798 100644 --- a/src/audio/google/google_rtc_audio_processing.toml +++ b/src/audio/google/google_rtc_audio_processing.toml @@ -1,19 +1,23 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "1" +#endif + [[module.entry]] name = "RTC_AEC" - uuid = "B780A0A6-269F-466F-B477-23DFA05AF758" - REM # bit #i = 1 means core #i is allowed. - affinity_mask = "0x7" - instance_count = "1" - domain_types = "1" - load_type = "1" - module_type = "10" + uuid = "B780A0A6-269F-466F-B477-23DFA05AF758" + REM # bit #i = 1 means core #i is allowed. + affinity_mask = "0x7" + instance_count = "1" + domain_types = "1" + load_type = LOAD_TYPE + module_type = "10" init_config = "1" - auto_start = "0" - sched_caps = [1, 0x00008000] + auto_start = "0" + sched_caps = [1, 0x00008000] - REM # pin = [dir, type, sample rate, size, container, channel-cfg] - pin = [0, 0, 0x8, 0x2, 0x2, 0x1, - 0, 0, 0x8, 0x2, 0x2, 0x4, - 1, 0, 0x8, 0x2, 0x2, 0x1] + REM # pin = [dir, type, sample rate, size, container, channel-cfg] + pin = [0, 0, 0x8, 0x2, 0x2, 0x1, + 0, 0, 0x8, 0x2, 0x2, 0x4, + 1, 0, 0x8, 0x2, 0x2, 0x1] index = __COUNTER__ diff --git a/src/audio/google/llext_ctc/CMakeLists.txt b/src/audio/google/llext_ctc/CMakeLists.txt new file mode 100644 index 000000000000..440e0fbe6ad2 --- /dev/null +++ b/src/audio/google/llext_ctc/CMakeLists.txt @@ -0,0 +1,15 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +if(CONFIG_GOOGLE_CTC_AUDIO_PROCESSING_MOCK) +sof_llext_build("google_ctc_audio_processing" + SOURCES ../google_ctc_audio_processing.c + ../google_ctc_audio_processing_ipc4.c + ../google_ctc_audio_processing_mock.c +) +target_include_directories(google_ctc_audio_processing_llext_lib PRIVATE + "${sof_top_dir}/third_party/include" +) +else() +message(FATAL_ERROR "Add library linking support in src/audio/google/llext_ctc/CMakeLists.txt") +endif() diff --git a/src/audio/google/llext_ctc/llext.toml.h b/src/audio/google/llext_ctc/llext.toml.h new file mode 100644 index 000000000000..242d5588e491 --- /dev/null +++ b/src/audio/google/llext_ctc/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../google_ctc_audio_processing.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/google/llext_rtc/CMakeLists.txt b/src/audio/google/llext_rtc/CMakeLists.txt new file mode 100644 index 000000000000..0847fbc8bc57 --- /dev/null +++ b/src/audio/google/llext_rtc/CMakeLists.txt @@ -0,0 +1,11 @@ +if(CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK) +sof_llext_build("google_rtc_audio_processing" + SOURCES ../google_rtc_audio_processing.c + ../google_rtc_audio_processing_mock.c +) +target_include_directories(google_rtc_audio_processing_llext_lib PRIVATE + "${sof_top_dir}/third_party/include" +) +else() +message(FATAL_ERROR "Add library linking support in src/audio/google/llext/CMakeLists.txt") +endif() diff --git a/src/audio/google/llext_rtc/llext.toml.h b/src/audio/google/llext_rtc/llext.toml.h new file mode 100644 index 000000000000..9a397eb44a0f --- /dev/null +++ b/src/audio/google/llext_rtc/llext.toml.h @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * + * Copyright(c) 2021 Intel Corporation. All rights reserved. + */ +#include +#define LOAD_TYPE "2" +#include "../google_rtc_audio_processing.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/igo_nr/Kconfig b/src/audio/igo_nr/Kconfig index 9dd2dacf48a3..be987594f4ee 100644 --- a/src/audio/igo_nr/Kconfig +++ b/src/audio/igo_nr/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_IGO_NR - bool "IGO NR component" + tristate "IGO NR component" select COMP_BLOB select COMP_IGO_NR_STUB if COMP_STUBS default n diff --git a/src/audio/igo_nr/igo_nr.c b/src/audio/igo_nr/igo_nr.c index 00b7591bdb57..469cc5405b02 100644 --- a/src/audio/igo_nr/igo_nr.c +++ b/src/audio/igo_nr/igo_nr.c @@ -886,3 +886,22 @@ static const struct module_interface igo_nr_interface = { DECLARE_MODULE_ADAPTER(igo_nr_interface, igo_nr_uuid, igo_nr_tr); SOF_MODULE_INIT(igo_nr, sys_comp_module_igo_nr_interface_init); + +#if CONFIG_COMP_IGO_NR_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_IGO_NR 0xBC, 0xE2, 0x6A, 0x69, 0x77, 0x28, 0xEB, 0x11, 0xC1, 0xAD, \ + 0x02, 0x42, 0xAC, 0x12, 0x00, 0x02 + +SOF_LLEXT_MOD_ENTRY(igo_nr, &igo_nr_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("IGO_NR", igo_nr_llext_entry, 1, UUID_IGO_NR, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/igo_nr/igo_nr.toml b/src/audio/igo_nr/igo_nr.toml index b0be41b21878..ad14ad2a7691 100644 --- a/src/audio/igo_nr/igo_nr.toml +++ b/src/audio/igo_nr/igo_nr.toml @@ -1,3 +1,6 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif REM # IGO_NR module config [[module.entry]] @@ -6,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/src/audio/igo_nr/llext/CMakeLists.txt b/src/audio/igo_nr/llext/CMakeLists.txt new file mode 100644 index 000000000000..2e974cae7945 --- /dev/null +++ b/src/audio/igo_nr/llext/CMakeLists.txt @@ -0,0 +1,14 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +if(CONFIG_DTS_CODEC_STUB) +sof_llext_build("igo_nr" + SOURCES ../igo_nr.c + ../igo_nr_stub.c +) +target_include_directories(igo_nr_llext_lib PRIVATE + "../../../../third_party/include" +) +else() +message(FATAL_ERROR "Add library linking support in src/audio/codec/igo_nr/llext/CMakeLists.txt") +endif() diff --git a/src/audio/igo_nr/llext/llext.toml.h b/src/audio/igo_nr/llext/llext.toml.h new file mode 100644 index 000000000000..b7a3322dc906 --- /dev/null +++ b/src/audio/igo_nr/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../igo_nr.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/mfcc/Kconfig b/src/audio/mfcc/Kconfig index 7dfff67727b4..36d2af94dabd 100644 --- a/src/audio/mfcc/Kconfig +++ b/src/audio/mfcc/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_MFCC - bool "MFCC component" + tristate "MFCC component" depends on COMP_MODULE_ADAPTER select CORDIC_FIXED select MATH_16BIT_MEL_FILTERBANK diff --git a/src/audio/mfcc/llext/CMakeLists.txt b/src/audio/mfcc/llext/CMakeLists.txt new file mode 100644 index 000000000000..a3184ecbc150 --- /dev/null +++ b/src/audio/mfcc/llext/CMakeLists.txt @@ -0,0 +1,11 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("mfcc" + SOURCES ../mfcc.c + ../mfcc_setup.c + ../mfcc_common.c + ../mfcc_generic.c + ../mfcc_hifi3.c + ../mfcc_hifi4.c +) diff --git a/src/audio/mfcc/llext/llext.toml.h b/src/audio/mfcc/llext/llext.toml.h new file mode 100644 index 000000000000..0d358af2a041 --- /dev/null +++ b/src/audio/mfcc/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../mfcc.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/mfcc/mfcc.c b/src/audio/mfcc/mfcc.c index bc07a5058496..3df91adb5b94 100644 --- a/src/audio/mfcc/mfcc.c +++ b/src/audio/mfcc/mfcc.c @@ -259,3 +259,22 @@ static const struct module_interface mfcc_interface = { DECLARE_MODULE_ADAPTER(mfcc_interface, mfcc_uuid, mfcc_tr); SOF_MODULE_INIT(mfcc, sys_comp_module_mfcc_interface_init); + +#if CONFIG_COMP_MFCC_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_MFCC 0x73, 0xA7, 0x10, 0xDB, 0xA4, 0x1A, 0xEA, 0x4C, 0x1F, 0xA2, \ + 0x2D, 0x57, 0xA5, 0xC9, 0x82, 0xEB + +SOF_LLEXT_MOD_ENTRY(mfcc, &mfcc_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("MFCC", mfcc_llext_entry, 1, UUID_MFCC, 40); + +SOF_LLEXT_BUILDINFO; + +#endif 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/src/audio/mux/Kconfig b/src/audio/mux/Kconfig index ab5051707c6f..953e65ad59db 100644 --- a/src/audio/mux/Kconfig +++ b/src/audio/mux/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_MUX - bool "MUX component" + tristate "MUX component" select COMP_BLOB depends on COMP_MODULE_ADAPTER default y diff --git a/src/audio/mux/llext/CMakeLists.txt b/src/audio/mux/llext/CMakeLists.txt new file mode 100644 index 000000000000..c17801d9af67 --- /dev/null +++ b/src/audio/mux/llext/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("mux" + SOURCES ../mux.c + ../mux_generic.c + ../mux_ipc4.c +) diff --git a/src/audio/mux/llext/llext.toml.h b/src/audio/mux/llext/llext.toml.h new file mode 100644 index 000000000000..27a629e46f78 --- /dev/null +++ b/src/audio/mux/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../mux.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/mux/mux.c b/src/audio/mux/mux.c index 9ac9365297e6..f98cf83934f0 100644 --- a/src/audio/mux/mux.c +++ b/src/audio/mux/mux.c @@ -5,8 +5,6 @@ // Author: Liam Girdwood // Artur Kloniecki -#if CONFIG_COMP_MUX - #include #include #include @@ -486,4 +484,25 @@ static const struct module_interface demux_interface = { DECLARE_MODULE_ADAPTER(demux_interface, demux_uuid, demux_tr); SOF_MODULE_INIT(demux, sys_comp_module_demux_interface_init); -#endif /* CONFIG_COMP_MUX */ +#if CONFIG_COMP_VOLUME_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_MUX 0x35, 0x6E, 0xCE, 0x64, 0x7A, 0x85, 0x78, 0x48, 0xE8, 0xAC, \ + 0xE2, 0xA2, 0xF4, 0x2E, 0x30, 0x69 +SOF_LLEXT_MOD_ENTRY(mux, &mux_interface); + +#define UUID_DEMUX 0x68, 0x68, 0xB2, 0xC4, 0x30, 0x14, 0x0E, 0x47, 0x89, 0xA0, \ + 0x15, 0xD1, 0xC7, 0x7F, 0x85, 0x1A +SOF_LLEXT_MOD_ENTRY(demux, &demux_interface); + +static const struct sof_man_module_manifest mod_manifest[] __section(".module") __used = { + SOF_LLEXT_MODULE_MANIFEST("MUX", mux_llext_entry, 1, UUID_MUX, 15), + SOF_LLEXT_MODULE_MANIFEST("DEMUX", demux_llext_entry, 1, UUID_DEMUX, 15), +}; + +SOF_LLEXT_BUILDINFO; +#endif diff --git a/src/audio/mux/mux.h b/src/audio/mux/mux.h index 1f46e358dd18..f3b2cbc50a89 100644 --- a/src/audio/mux/mux.h +++ b/src/audio/mux/mux.h @@ -14,8 +14,6 @@ #ifndef __SOF_AUDIO_MUX_H__ #define __SOF_AUDIO_MUX_H__ -#if CONFIG_COMP_MUX - #include #include #include @@ -230,6 +228,4 @@ int mux_params(struct processing_module *mod); #endif extern const struct sof_uuid MUX_UUID; -#endif /* CONFIG_COMP_MUX */ - #endif /* __SOF_AUDIO_MUX_H__ */ diff --git a/src/audio/mux/mux.toml b/src/audio/mux/mux.toml index e9fa8b7dbd36..76a50383d0bc 100644 --- a/src/audio/mux/mux.toml +++ b/src/audio/mux/mux.toml @@ -1,10 +1,14 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + [[module.entry]] name = "MUX" - uuid = "64ce6e35-857a-4878-ace8-e2a2f42e3069" + uuid = "64CE6E35-857A-4878-ACE8-E2A2F42E3069" affinity_mask = "0x1" instance_count = "15" domain_types = "0" - load_type = "0" + load_type = LOAD_TYPE module_type = "6" auto_start = "0" sched_caps = [1, 0x00008000] diff --git a/src/audio/rtnr/Kconfig b/src/audio/rtnr/Kconfig index 70ef874af355..24345461d2bc 100644 --- a/src/audio/rtnr/Kconfig +++ b/src/audio/rtnr/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_RTNR - bool "RTNR component" + tristate "RTNR component" select COMP_BLOB select COMP_RTNR_STUB if COMP_STUBS default n diff --git a/src/audio/rtnr/llext/CMakeLists.txt b/src/audio/rtnr/llext/CMakeLists.txt new file mode 100644 index 000000000000..3d028ace0adf --- /dev/null +++ b/src/audio/rtnr/llext/CMakeLists.txt @@ -0,0 +1,11 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +if(CONFIG_COMP_RTNR_STUB) +sof_llext_build("rtnr" + SOURCES ../rtnr.c + ../rtnr_stub.c +) +else() +message(FATAL_ERROR "Add library linking support in src/audio/rtnr/llext/CMakeFiles.txt") +endif() diff --git a/src/audio/rtnr/llext/llext.toml.h b/src/audio/rtnr/llext/llext.toml.h new file mode 100644 index 000000000000..f1eca55c0a61 --- /dev/null +++ b/src/audio/rtnr/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../rtnr.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/rtnr/rtnr.c b/src/audio/rtnr/rtnr.c index c12034b6e793..751001f4ceff 100644 --- a/src/audio/rtnr/rtnr.c +++ b/src/audio/rtnr/rtnr.c @@ -869,3 +869,23 @@ static const struct module_interface rtnr_interface = { DECLARE_MODULE_ADAPTER(rtnr_interface, rtnr_uuid, rtnr_tr); SOF_MODULE_INIT(rtnr, sys_comp_module_rtnr_interface_init); + +#if CONFIG_COMP_RTNR_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +/* 5c7ca334-e15d-11eb-ba800242ac130004 */ +#define UUID_RTNR 0x34, 0xA3, 0x7C, 0x5C, 0x5D, 0xE1, 0xEB, 0x11, \ + 0xBA, 0x80, 0x02, 0x42, 0xAC, 0x13, 0x00, 0x04 + +SOF_LLEXT_MOD_ENTRY(rtnr, &rtnr_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("RTNR", rtnr_llext_entry, 1, UUID_RTNR, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/rtnr/rtnr.toml b/src/audio/rtnr/rtnr.toml index 4a03ca2e52c5..3acd2510e1ae 100644 --- a/src/audio/rtnr/rtnr.toml +++ b/src/audio/rtnr/rtnr.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # RTNR module config [[module.entry]] name = "RTNR" @@ -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/src/audio/selector/Kconfig b/src/audio/selector/Kconfig index 9624e5401009..6dd8c8b02507 100644 --- a/src/audio/selector/Kconfig +++ b/src/audio/selector/Kconfig @@ -1,7 +1,7 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_SEL - bool "Channel selector component" + tristate "Channel selector component" default y help Select for SEL component diff --git a/src/audio/selector/llext/CMakeLists.txt b/src/audio/selector/llext/CMakeLists.txt new file mode 100644 index 000000000000..e8c3fbc911a4 --- /dev/null +++ b/src/audio/selector/llext/CMakeLists.txt @@ -0,0 +1,7 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("selector" + SOURCES ../selector.c + ../selector_generic.c +) diff --git a/src/audio/selector/llext/llext.toml.h b/src/audio/selector/llext/llext.toml.h new file mode 100644 index 000000000000..1fdbcd4f9f05 --- /dev/null +++ b/src/audio/selector/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../selector.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/selector/selector.c b/src/audio/selector/selector.c index 79140baec302..fe791c9204aa 100644 --- a/src/audio/selector/selector.c +++ b/src/audio/selector/selector.c @@ -43,15 +43,8 @@ LOG_MODULE_REGISTER(selector, CONFIG_SOF_LOG_LEVEL); static const struct comp_driver comp_selector; SOF_DEFINE_REG_UUID(selector); -#define SELECTOR_UUID selector_uuid -#else -SOF_DEFINE_REG_UUID(selector4); -#define SELECTOR_UUID selector4_uuid -#endif +DECLARE_TR_CTX(selector_tr, SOF_UUID(selector_uuid), LOG_LEVEL_INFO); -DECLARE_TR_CTX(selector_tr, SOF_UUID(SELECTOR_UUID), LOG_LEVEL_INFO); - -#if CONFIG_IPC_MAJOR_3 static int selector_verify_params(struct comp_dev *dev, struct sof_ipc_stream_params *params) { @@ -228,7 +221,6 @@ static int selector_params(struct comp_dev *dev, return 0; } -#if CONFIG_IPC_MAJOR_3 /** * \brief Sets selector control command. * \param[in,out] dev Selector base component device. @@ -339,7 +331,6 @@ static int selector_cmd(struct comp_dev *dev, int cmd, void *data, return ret; } -#endif /** * \brief Sets component state. @@ -520,15 +511,13 @@ static int selector_reset(struct comp_dev *dev) /** \brief Selector component definition. */ static const struct comp_driver comp_selector = { .type = SOF_COMP_SELECTOR, - .uid = SOF_RT_UUID(SELECTOR_UUID), + .uid = SOF_RT_UUID(selector_uuid), .tctx = &selector_tr, .ops = { .create = selector_new, .free = selector_free, .params = selector_params, -#if CONFIG_IPC_MAJOR_3 .cmd = selector_cmd, -#endif .trigger = selector_trigger, .copy = selector_copy, .prepare = selector_prepare, @@ -549,7 +538,12 @@ UT_STATIC void sys_comp_selector_init(void) DECLARE_MODULE(sys_comp_selector_init); SOF_MODULE_INIT(selector, sys_comp_selector_init); + #else + +SOF_DEFINE_REG_UUID(selector4); +DECLARE_TR_CTX(selector_tr, SOF_UUID(selector4_uuid), LOG_LEVEL_INFO); + static void build_config(struct comp_data *cd, struct module_config *cfg) { enum sof_ipc_frame frame_fmt, valid_fmt; @@ -929,6 +923,26 @@ static const struct module_interface selector_interface = { .free = selector_free }; -DECLARE_MODULE_ADAPTER(selector_interface, SELECTOR_UUID, selector_tr); +DECLARE_MODULE_ADAPTER(selector_interface, selector4_uuid, selector_tr); SOF_MODULE_INIT(selector, sys_comp_module_selector_interface_init); + +#if CONFIG_COMP_SEL_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_SELECTOR 0x32, 0xFE, 0x92, 0xC1, 0x17, 0x1E, 0xC2, 0x4F, 0x58, 0x97, \ + 0xC7, 0xF3, 0x54, 0x2E, 0x98, 0x0A + +SOF_LLEXT_MOD_ENTRY(selector, &selector_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("MICSEL", selector_llext_entry, 1, UUID_SELECTOR, 8); + +SOF_LLEXT_BUILDINFO; + +#endif + #endif diff --git a/src/audio/selector/selector.toml b/src/audio/selector/selector.toml index e93327242579..d3fc2784a674 100644 --- a/src/audio/selector/selector.toml +++ b/src/audio/selector/selector.toml @@ -1,10 +1,14 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + [[module.entry]] name = "MICSEL" uuid = "32FE92C1-1E17-4FC2-9758-C7F3542E980A" affinity_mask = "0x1" instance_count = "8" domain_types = "0" - load_type = "0" + load_type = LOAD_TYPE init_config = "1" module_type = "0xC" auto_start = "0" diff --git a/src/audio/tdfb/Kconfig b/src/audio/tdfb/Kconfig index f30f8aa4fe8a..3a8cff21431a 100644 --- a/src/audio/tdfb/Kconfig +++ b/src/audio/tdfb/Kconfig @@ -1,13 +1,14 @@ # SPDX-License-Identifier: BSD-3-Clause config COMP_TDFB - bool "TDFB component" + tristate "TDFB component" depends on COMP_MODULE_ADAPTER select MATH_FIR select MATH_IIR_DF1 select SQRT_FIXED select CORDIC_FIXED select COMP_BLOB + default m if LIBRARY_DEFAULT_MODULAR default y help Select for time domain fixed beamformer (TDFB) component. The diff --git a/src/audio/tdfb/llext/CMakeLists.txt b/src/audio/tdfb/llext/CMakeLists.txt new file mode 100644 index 000000000000..3f9e301947dd --- /dev/null +++ b/src/audio/tdfb/llext/CMakeLists.txt @@ -0,0 +1,11 @@ +# Copyright (c) 2024 Intel Corporation. +# SPDX-License-Identifier: Apache-2.0 + +sof_llext_build("tdfb" + SOURCES ../tdfb.c + ../tdfb_direction.c + ../tdfb_generic.c + ../tdfb_hifiep.c + ../tdfb_hifi3.c + ../tdfb_ipc4.c +) diff --git a/src/audio/tdfb/llext/llext.toml.h b/src/audio/tdfb/llext/llext.toml.h new file mode 100644 index 000000000000..f5dbd89a4cc2 --- /dev/null +++ b/src/audio/tdfb/llext/llext.toml.h @@ -0,0 +1,6 @@ +#include +#define LOAD_TYPE "2" +#include "../tdfb.toml" + +[module] +count = __COUNTER__ diff --git a/src/audio/tdfb/tdfb.c b/src/audio/tdfb/tdfb.c index 128a39b19e1c..b45fd04773d5 100644 --- a/src/audio/tdfb/tdfb.c +++ b/src/audio/tdfb/tdfb.c @@ -613,7 +613,7 @@ static int tdfb_free(struct processing_module *mod) { struct tdfb_comp_data *cd = module_get_private_data(mod); - comp_info(mod->dev, "tdfb_free()"); + comp_dbg(mod->dev, "tdfb_free()"); ipc_msg_free(cd->msg); tdfb_free_delaylines(cd); @@ -797,7 +797,7 @@ static int tdfb_reset(struct processing_module *mod) struct tdfb_comp_data *cd = module_get_private_data(mod); int i; - comp_info(mod->dev, "tdfb_reset()"); + comp_dbg(mod->dev, "tdfb_reset()"); tdfb_free_delaylines(cd); @@ -824,3 +824,22 @@ static const struct module_interface tdfb_interface = { DECLARE_MODULE_ADAPTER(tdfb_interface, tdfb_uuid, tdfb_tr); SOF_MODULE_INIT(tdfb, sys_comp_module_tdfb_interface_init); + +#if CONFIG_COMP_TDFB_MODULE +/* modular: llext dynamic link */ + +#include +#include +#include + +#define UUID_TDFB 0x49, 0x17, 0x51, 0xdd, 0xfa, 0xd9, 0x5c, 0x45, 0xb3, 0xa7, \ + 0x13, 0x58, 0x56, 0x93, 0xf1, 0xaf + +SOF_LLEXT_MOD_ENTRY(tdfb, &tdfb_interface); + +static const struct sof_man_module_manifest mod_manifest __section(".module") __used = + SOF_LLEXT_MODULE_MANIFEST("TDFB", tdfb_llext_entry, 1, UUID_TDFB, 40); + +SOF_LLEXT_BUILDINFO; + +#endif diff --git a/src/audio/tdfb/tdfb.toml b/src/audio/tdfb/tdfb.toml index 4cabb78ae081..2fc0875ff5c7 100644 --- a/src/audio/tdfb/tdfb.toml +++ b/src/audio/tdfb/tdfb.toml @@ -1,3 +1,7 @@ +#ifndef LOAD_TYPE +#define LOAD_TYPE "0" +#endif + REM # TDFB module config [[module.entry]] name = "TDFB" @@ -5,8 +9,8 @@ affinity_mask = "0x1" instance_count = "40" domain_types = "0" - load_type = "0" - init_config = "1" + load_type = LOAD_TYPE + init_config = "1" module_type = "9" auto_start = "0" sched_caps = [1, 0x00008000] diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index 54b979f6853b..58fb38915543 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -626,21 +626,30 @@ elseif(CONFIG_COMP_ASRC) ) endif() -zephyr_library_sources_ifdef(CONFIG_COMP_DCBLOCK - ${SOF_AUDIO_PATH}/dcblock/dcblock_generic.c - ${SOF_AUDIO_PATH}/dcblock/dcblock.c - ${SOF_AUDIO_PATH}/dcblock/dcblock_hifi3.c - ${SOF_AUDIO_PATH}/dcblock/dcblock_hifi4.c -) - -zephyr_library_sources_ifdef(CONFIG_COMP_DCBLOCK - ${SOF_AUDIO_PATH}/dcblock/dcblock_${ipc_suffix}.c -) +if(CONFIG_COMP_DCBLOCK STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/dcblock/llext + ${PROJECT_BINARY_DIR}/dcblock_llext) + add_dependencies(app dcblock) +elseif(CONFIG_COMP_DCBLOCK) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/dcblock/dcblock_generic.c + ${SOF_AUDIO_PATH}/dcblock/dcblock.c + ${SOF_AUDIO_PATH}/dcblock/dcblock_hifi3.c + ${SOF_AUDIO_PATH}/dcblock/dcblock_hifi4.c + ${SOF_AUDIO_PATH}/dcblock/dcblock_${ipc_suffix}.c + ) +endif() -zephyr_library_sources_ifdef(CONFIG_COMP_SEL - ${SOF_AUDIO_PATH}/selector/selector_generic.c - ${SOF_AUDIO_PATH}/selector/selector.c -) +if(CONFIG_COMP_SEL STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/selector/llext + ${PROJECT_BINARY_DIR}/selector_llext) + add_dependencies(app selector) +elseif(CONFIG_COMP_SEL) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/selector/selector_generic.c + ${SOF_AUDIO_PATH}/selector/selector.c + ) +endif() zephyr_library_sources_ifdef(CONFIG_COMP_KPB ${SOF_AUDIO_PATH}/kpb.c @@ -820,21 +829,30 @@ zephyr_library_sources_ifdef(CONFIG_MAXIM_DSM_STUB ${SOF_AUDIO_PATH}/smart_amp/maxim_dsm_stub.c ) -zephyr_library_sources_ifdef(CONFIG_COMP_ARIA - ${SOF_AUDIO_PATH}/aria/aria.c - ${SOF_AUDIO_PATH}/aria/aria_hifi5.c - ${SOF_AUDIO_PATH}/aria/aria_hifi3.c - ${SOF_AUDIO_PATH}/aria/aria_generic.c -) - -zephyr_library_sources_ifdef(CONFIG_COMP_CROSSOVER - ${SOF_AUDIO_PATH}/crossover/crossover.c - ${SOF_AUDIO_PATH}/crossover/crossover_generic.c -) +if(CONFIG_COMP_ARIA STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/aria/llext + ${PROJECT_BINARY_DIR}/aria_llext) + add_dependencies(app aria) +elseif(CONFIG_COMP_ARIA) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/aria/aria.c + ${SOF_AUDIO_PATH}/aria/aria_hifi5.c + ${SOF_AUDIO_PATH}/aria/aria_hifi3.c + ${SOF_AUDIO_PATH}/aria/aria_generic.c + ) +endif() -zephyr_library_sources_ifdef(CONFIG_COMP_CROSSOVER - ${SOF_AUDIO_PATH}/crossover/crossover_${ipc_suffix}.c -) +if(CONFIG_COMP_CROSSOVER STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/crossover/llext + ${PROJECT_BINARY_DIR}/crossover_llext) + add_dependencies(app crossover) +elseif(CONFIG_COMP_CROSSOVER) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/crossover/crossover.c + ${SOF_AUDIO_PATH}/crossover/crossover_generic.c + ${SOF_AUDIO_PATH}/crossover/crossover_${ipc_suffix}.c + ) +endif() if(CONFIG_COMP_DRC STREQUAL "m") add_subdirectory(${SOF_AUDIO_PATH}/drc/llext @@ -857,72 +875,96 @@ 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 -) - -zephyr_library_sources_ifdef(CONFIG_COMP_MULTIBAND_DRC - ${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 -) +if(CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/google/llext_rtc + ${PROJECT_BINARY_DIR}/google_rtc_audio_processing_llext) + add_dependencies(app google_rtc_audio_processing) +elseif(CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/google/google_rtc_audio_processing.c + ) -zephyr_library_sources_ifdef(CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK - ${SOF_AUDIO_PATH}/google/google_rtc_audio_processing_mock.c -) + zephyr_library_sources_ifdef(CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK + ${SOF_AUDIO_PATH}/google/google_rtc_audio_processing_mock.c + ) -if(CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING AND NOT CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK) - zephyr_include_directories(../third_party/include) - target_link_directories(SOF INTERFACE ../third_party/lib) - target_link_libraries(SOF INTERFACE google_rtc_audio_processing) - target_link_libraries(SOF INTERFACE c++) - target_link_libraries(SOF INTERFACE c++abi) - target_link_libraries(SOF INTERFACE m) - target_link_libraries(SOF INTERFACE c) - target_link_libraries(SOF INTERFACE gcc) + if(NOT CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK) + zephyr_include_directories(../third_party/include) + target_link_directories(SOF INTERFACE ../third_party/lib) + target_link_libraries(SOF INTERFACE google_rtc_audio_processing) + target_link_libraries(SOF INTERFACE c++) + target_link_libraries(SOF INTERFACE c++abi) + target_link_libraries(SOF INTERFACE m) + target_link_libraries(SOF INTERFACE c) + target_link_libraries(SOF INTERFACE gcc) + endif() endif() -zephyr_library_sources_ifdef(CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING - ${SOF_AUDIO_PATH}/google/google_ctc_audio_processing.c -) +if(CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/google/llext_ctc + ${PROJECT_BINARY_DIR}/google_ctc_audio_processing_llext) + add_dependencies(app google_ctc_audio_processing) +elseif(CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/google/google_ctc_audio_processing.c + ${SOF_AUDIO_PATH}/google/google_ctc_audio_processing_${ipc_suffix}.c + ) -zephyr_library_sources_ifdef(CONFIG_GOOGLE_CTC_AUDIO_PROCESSING_MOCK - ${SOF_AUDIO_PATH}/google/google_ctc_audio_processing_mock.c -) + zephyr_library_sources_ifdef(CONFIG_GOOGLE_CTC_AUDIO_PROCESSING_MOCK + ${SOF_AUDIO_PATH}/google/google_ctc_audio_processing_mock.c + ) -if(CONFIG_IPC_MAJOR_3) - zephyr_library_sources_ifdef(CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING - ${SOF_AUDIO_PATH}/google/google_ctc_audio_processing_ipc3.c) -elseif(CONFIG_IPC_MAJOR_4) - zephyr_library_sources_ifdef(CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING - ${SOF_AUDIO_PATH}/google/google_ctc_audio_processing_ipc4.c) + if(NOT CONFIG_GOOGLE_CTC_AUDIO_PROCESSING_MOCK) + zephyr_include_directories(../third_party/include) + target_link_directories(SOF INTERFACE ../third_party/lib) + target_link_libraries(SOF INTERFACE google_ctc_audio_processing) + target_link_libraries(SOF INTERFACE c++) + target_link_libraries(SOF INTERFACE c++abi) + target_link_libraries(SOF INTERFACE m) + target_link_libraries(SOF INTERFACE c) + target_link_libraries(SOF INTERFACE gcc) + endif() endif() -if(CONFIG_COMP_GOOGLE_CTC_AUDIO_PROCESSING AND NOT CONFIG_GOOGLE_CTC_AUDIO_PROCESSING_MOCK) - zephyr_include_directories(../third_party/include) - target_link_directories(SOF INTERFACE ../third_party/lib) - target_link_libraries(SOF INTERFACE google_ctc_audio_processing) - target_link_libraries(SOF INTERFACE c++) - target_link_libraries(SOF INTERFACE c++abi) - target_link_libraries(SOF INTERFACE m) - target_link_libraries(SOF INTERFACE c) - target_link_libraries(SOF INTERFACE gcc) -endif() +if(CONFIG_COMP_IGO_NR STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/igo_nr/llext + ${PROJECT_BINARY_DIR}/igo_nr_llext) + add_dependencies(app igo_nr) +elseif(CONFIG_COMP_IGO_NR) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/igo_nr/igo_nr.c + ) -zephyr_library_sources_ifdef(CONFIG_COMP_IGO_NR - ${SOF_AUDIO_PATH}/igo_nr/igo_nr.c -) + zephyr_library_sources_ifdef(CONFIG_COMP_IGO_NR_STUB + ${SOF_AUDIO_PATH}/igo_nr/igo_nr_stub.c + ) +endif() -zephyr_library_sources_ifdef(CONFIG_COMP_IGO_NR_STUB - ${SOF_AUDIO_PATH}/igo_nr/igo_nr_stub.c -) +if(CONFIG_COMP_RTNR STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/rtnr/llext + ${PROJECT_BINARY_DIR}/rtnr_llext) + add_dependencies(app rtnr) +elseif(CONFIG_COMP_RTNR) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/rtnr/rtnr.c + ) -zephyr_library_sources_ifdef(CONFIG_COMP_RTNR - ${SOF_AUDIO_PATH}/rtnr/rtnr.c -) + zephyr_library_sources_ifdef(CONFIG_COMP_RTNR_STUB + ${SOF_AUDIO_PATH}/rtnr/rtnr_stub.c + ) +endif() if(CONFIG_SAMPLE_SMART_AMP STREQUAL "m") add_subdirectory(${SOF_SAMPLES_PATH}/audio/smart_amp_test_llext @@ -934,18 +976,20 @@ elseif(CONFIG_SAMPLE_SMART_AMP) ) endif() -zephyr_library_sources_ifdef(CONFIG_COMP_RTNR_STUB - ${SOF_AUDIO_PATH}/rtnr/rtnr_stub.c -) - -zephyr_library_sources_ifdef(CONFIG_COMP_TDFB - ${SOF_AUDIO_PATH}/tdfb/tdfb.c - ${SOF_AUDIO_PATH}/tdfb/tdfb_direction.c - ${SOF_AUDIO_PATH}/tdfb/tdfb_generic.c - ${SOF_AUDIO_PATH}/tdfb/tdfb_hifiep.c - ${SOF_AUDIO_PATH}/tdfb/tdfb_hifi3.c - ${SOF_AUDIO_PATH}/tdfb/tdfb_${ipc_suffix}.c -) +if(CONFIG_COMP_TDFB STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/tdfb/llext + ${PROJECT_BINARY_DIR}/tdfb_llext) + add_dependencies(app tdfb) +elseif(CONFIG_COMP_TDFB) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/tdfb/tdfb.c + ${SOF_AUDIO_PATH}/tdfb/tdfb_direction.c + ${SOF_AUDIO_PATH}/tdfb/tdfb_generic.c + ${SOF_AUDIO_PATH}/tdfb/tdfb_hifiep.c + ${SOF_AUDIO_PATH}/tdfb/tdfb_hifi3.c + ${SOF_AUDIO_PATH}/tdfb/tdfb_${ipc_suffix}.c + ) +endif() zephyr_library_sources_ifdef(CONFIG_SQRT_FIXED ${SOF_MATH_PATH}/sqrt_int16.c @@ -961,32 +1005,45 @@ zephyr_library_sources_ifdef(CONFIG_COMP_UP_DOWN_MIXER ${SOF_AUDIO_PATH}/up_down_mixer/up_down_mixer_hifi3.c ) -zephyr_library_sources_ifdef(CONFIG_COMP_MUX - ${SOF_AUDIO_PATH}/mux/mux.c - ${SOF_AUDIO_PATH}/mux/mux_generic.c -) - -zephyr_library_sources_ifdef(CONFIG_COMP_MUX - ${SOF_AUDIO_PATH}/mux/mux_${ipc_suffix}.c -) +if(CONFIG_COMP_MUX STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/mux/llext + ${PROJECT_BINARY_DIR}/mux_llext) + add_dependencies(app mux) +elseif(CONFIG_COMP_MUX) + zephyr_library_sources_ifdef(CONFIG_COMP_MUX + ${SOF_AUDIO_PATH}/mux/mux.c + ${SOF_AUDIO_PATH}/mux/mux_generic.c + ${SOF_AUDIO_PATH}/mux/mux_${ipc_suffix}.c + ) +endif() -zephyr_library_sources_ifdef(CONFIG_COMP_MFCC - ${SOF_AUDIO_PATH}/mfcc/mfcc.c - ${SOF_AUDIO_PATH}/mfcc/mfcc_setup.c - ${SOF_AUDIO_PATH}/mfcc/mfcc_common.c - ${SOF_AUDIO_PATH}/mfcc/mfcc_generic.c - ${SOF_AUDIO_PATH}/mfcc/mfcc_hifi3.c - ${SOF_AUDIO_PATH}/mfcc/mfcc_hifi4.c -) +if(CONFIG_COMP_MFCC STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/mfcc/llext + ${PROJECT_BINARY_DIR}/mfcc_llext) + add_dependencies(app mfcc) +elseif(CONFIG_COMP_MFCC) + zephyr_library_sources_ifdef(CONFIG_COMP_MFCC + ${SOF_AUDIO_PATH}/mfcc/mfcc.c + ${SOF_AUDIO_PATH}/mfcc/mfcc_setup.c + ${SOF_AUDIO_PATH}/mfcc/mfcc_common.c + ${SOF_AUDIO_PATH}/mfcc/mfcc_generic.c + ${SOF_AUDIO_PATH}/mfcc/mfcc_hifi3.c + ${SOF_AUDIO_PATH}/mfcc/mfcc_hifi4.c + ) +endif() zephyr_library_sources_ifdef(CONFIG_COMP_GOOGLE_HOTWORD_DETECT ${SOF_AUDIO_PATH}/google/google_hotword_detect.c ) -zephyr_library_sources_ifdef(CONFIG_DTS_CODEC - ${SOF_AUDIO_PATH}/codec/dts/dts.c -) -if (CONFIG_DTS_CODEC) +if(CONFIG_DTS_CODEC STREQUAL "m") + add_subdirectory(${SOF_AUDIO_PATH}/codec/dts/llext + ${PROJECT_BINARY_DIR}/dts_llext) + add_dependencies(app dts) +elseif(CONFIG_DTS_CODEC) + zephyr_library_sources( + ${SOF_AUDIO_PATH}/codec/dts/dts.c + ) if (CONFIG_DTS_CODEC_STUB) zephyr_library_sources( ${SOF_AUDIO_PATH}/codec/dts/dts_stub.c diff --git a/zephyr/include/rtos/wait.h b/zephyr/include/rtos/wait.h index e64aadce5ca2..f57e963fd1ed 100644 --- a/zephyr/include/rtos/wait.h +++ b/zephyr/include/rtos/wait.h @@ -17,7 +17,7 @@ static inline void idelay(int n) { while (n--) - asm volatile("nop"); + __asm__ volatile("nop"); } /* DSP default delay in cycles - all platforms use this today */ @@ -49,7 +49,7 @@ int poll_for_register_delay(uint32_t reg, uint32_t mask, */ static inline void wait_for_interrupt(int level) { - asm volatile("waiti 0"); + __asm__ volatile("waiti 0"); } #endif /* __ZEPHYR_RTOS_WAIT_H__ */