Skip to content

Commit aaa01e4

Browse files
lyakhlgirdwood
authored andcommitted
math: iir: add an option to build IIR as a module
Enable building IIR support library as a LLEXT module. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
1 parent 4a6ac13 commit aaa01e4

File tree

7 files changed

+71
-6
lines changed

7 files changed

+71
-6
lines changed

src/math/CMakeLists.txt

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,17 @@ if(CONFIG_MATH_FFT)
5454
add_subdirectory(fft)
5555
endif()
5656

57-
if(CONFIG_MATH_IIR_DF2T)
58-
list(APPEND base_files iir_df2t_generic.c iir_df2t_hifi3.c iir_df2t.c)
59-
endif()
60-
61-
if(CONFIG_MATH_IIR_DF1)
62-
list(APPEND base_files iir_df1_generic.c iir_df1_hifi3.c iir_df1_hifi4.c iir_df1_hifi5.c iir_df1.c)
57+
if(CONFIG_MATH_IIR STREQUAL "m")
58+
add_subdirectory(iir_llext ${PROJECT_BINARY_DIR}/iir_llext)
59+
add_dependencies(app iir)
60+
elseif(CONFIG_MATH_IIR)
61+
if(CONFIG_MATH_IIR_DF2T)
62+
list(APPEND base_files iir_df2t_generic.c iir_df2t_hifi3.c iir_df2t.c)
63+
endif()
64+
65+
if(CONFIG_MATH_IIR_DF1)
66+
list(APPEND base_files iir_df1_generic.c iir_df1_hifi3.c iir_df1_hifi4.c iir_df1_hifi5.c iir_df1.c)
67+
endif()
6368
endif()
6469

6570
if(CONFIG_MATH_WINDOW)

src/math/Kconfig

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,24 @@ config MATH_FIR
178178
filter calculates a convolution of input PCM sample and a configurable
179179
impulse response.
180180

181+
config MATH_IIR
182+
tristate "Select IIR filter library build method"
183+
default m if LIBRARY_DEFAULT_MODULAR
184+
default y
185+
help
186+
A helper option for MATH_IIR_DF2T and MATH_IIR_DF1
187+
181188
config MATH_IIR_DF2T
182189
bool "IIR DF2T filter library"
190+
depends on MATH_IIR != "n"
183191
default n
184192
help
185193
Select this to build IIR (Infinite Impulse Response) filter
186194
or type 2-transposed library.
187195

188196
config MATH_IIR_DF1
189197
bool "IIR DF1 filter library"
198+
depends on MATH_IIR != "n"
190199
default n
191200
help
192201
Select this to build IIR (Infinite Impulse Response) filter

src/math/iir.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[[module.entry]]
2+
name = "IIR"
3+
uuid = "B0CDCD9E-EF8B-404F-8480-0F287FC9D44D"
4+
load_type = "3"
5+
6+
index = __COUNTER__

src/math/iir_llext/CMakeLists.txt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# Copyright (c) 2024 Intel Corporation.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
if(CONFIG_MATH_IIR_DF1)
5+
set(df1 ../iir_df1.c ../iir_df1_generic.c ../iir_df1_hifi3.c
6+
../iir_df1_hifi4.c ../iir_df1_hifi5.c)
7+
else()
8+
set(df1 "")
9+
endif()
10+
11+
if(CONFIG_MATH_IIR_DF2T)
12+
set(df2t ../iir_df2t.c ../iir_df2t_generic.c ../iir_df2t_hifi3.c)
13+
else()
14+
set(df2t "")
15+
endif()
16+
17+
if(CONFIG_MATH_IIR_DF1 OR CONFIG_MATH_IIR_DF2T)
18+
sof_llext_build("iir"
19+
SOURCES iir.c ${df1} ${df2t}
20+
LIB openmodules
21+
)
22+
endif()

src/math/iir_llext/iir.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// SPDX-License-Identifier: BSD-3-Clause
2+
//
3+
// Copyright(c) 2025 Intel Corporation.
4+
5+
/* modular: llext dynamic link */
6+
7+
#include <sof/compiler_attributes.h>
8+
#include <sof/lib/uuid.h>
9+
#include <module/module/api_ver.h>
10+
#include <module/module/llext.h>
11+
#include <rimage/sof/user/manifest.h>
12+
13+
static const struct sof_man_module_manifest mod_manifest[] __section(".module") __used = {
14+
SOF_LLEXT_AUX_MANIFEST("IIR", NULL, SOF_REG_UUID(iir)),
15+
};
16+
17+
SOF_LLEXT_BUILDINFO;

src/math/iir_llext/llext.toml.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#include <tools/rimage/config/platform.toml>
2+
#include "../iir.toml"
3+
4+
[module]
5+
count = __COUNTER__

uuid-registry.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ b780a0a6-269f-466f-b47723dfa05af758 google_rtc_audio_processing
8484
a5dacb0e-88dc-415c-a1b53e8df77f1976 idc_cmd_task
8585
b90f5a4e-5537-4375-a1df95485472ff9e idc_task
8686
696ae2bc-2877-11eb-adc10242ac120002 igo_nr
87+
b0cdcd9e-ef8b-404f-84800f287fc9d44d iir
8788
fa00558c-d653-4851-a03ab21f125a9524 interrupt
8889
2f520e85-49ba-4284-90d83def24af313b intc_mt8196
8990
be60f97d-78df-4796-a0ee435cb56b720a ipc

0 commit comments

Comments
 (0)