Skip to content

Commit a2c2be4

Browse files
committed
audio: wov_arbiter: add multi-slot WOV arbiter component
Add multi-slot WOV arbiter audio component to manage keyword detection events across multiple detector pipelines, dispatch AMS slot activation and control messages, and broadcast pause/resume commands to un-triggered slots. Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
1 parent ed13b78 commit a2c2be4

11 files changed

Lines changed: 593 additions & 0 deletions

File tree

app/boards/intel_adsp_cavs25.conf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@ CONFIG_COMP_DRC=y
1111
CONFIG_COMP_MFCC=y
1212
CONFIG_COMP_MULTIBAND_DRC=y
1313
CONFIG_COMP_VOLUME_WINDOWS_FADE=y
14+
CONFIG_COMP_WOV_ARBITER=y
15+
CONFIG_COMP_VAD_GATE=y
16+
CONFIG_COMP_KPB=y
17+
CONFIG_SAMPLES=y
18+
CONFIG_SAMPLE_KEYPHRASE=y
1419
CONFIG_FORMAT_CONVERT_HIFI3=n
1520
CONFIG_PCM_CONVERTER_FORMAT_S16LE=y
1621
CONFIG_PCM_CONVERTER_FORMAT_S24LE=y

app/debug_overlay.conf

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,8 @@ CONFIG_GDBSTUB_ENTER_IMMEDIATELY=n
3131
# Testing with runtime filtering enabled ensures the same feature set is validated.
3232
# Note: This setting has no effect if CONFIG_LOG_RUNTIME_FILTERING is disabled.
3333
CONFIG_LOG_RUNTIME_DEFAULT_LEVEL=3
34+
35+
# Record fatal exception breadcrumbs (PC/cause/vaddr) in HP-SRAM window0 so the
36+
# crash is visible in the host dmesg "Firmware state" line when no console or
37+
# mtrace output is available.
38+
CONFIG_XTENSA_ADSP_FATAL_BREADCRUMB=y

app/prj.conf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,5 @@ CONFIG_SCHED_CPU_MASK=y
4949
CONFIG_SYS_CLOCK_TICKS_PER_SEC=15000
5050
CONFIG_DAI=y
5151
CONFIG_HEAP_MEM_POOL_SIZE=2048
52+
CONFIG_SAMPLES=y
53+
CONFIG_SAMPLE_KEYPHRASE=y

src/audio/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,15 @@ if(NOT CONFIG_COMP_MODULE_SHARED_LIBRARY_BUILD)
104104
if(CONFIG_COMP_UP_DOWN_MIXER)
105105
add_subdirectory(up_down_mixer)
106106
endif()
107+
if(CONFIG_COMP_VAD_GATE)
108+
add_subdirectory(vad_gate)
109+
endif()
107110
if(CONFIG_COMP_VOLUME)
108111
add_subdirectory(volume)
109112
endif()
113+
if(CONFIG_COMP_WOV_ARBITER)
114+
add_subdirectory(wov_arbiter)
115+
endif()
110116
if(CONFIG_DTS_CODEC)
111117
add_subdirectory(codec)
112118
endif()

src/audio/Kconfig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,18 @@ config COMP_STUBS
102102
Select to force all 3P blocks to link against stubs rather than their libraries. This
103103
should only be used in testing environments like fuzzers or CI.
104104

105+
config COMP_WOV_ARBITER
106+
bool "WOV arbiter component"
107+
depends on COMP_KPB
108+
depends on IPC_MAJOR_4
109+
select AMS
110+
help
111+
Select to build the WOV (Wake-on-Voice) arbiter. The arbiter sits
112+
between multiple KPB host-drain outputs and a single host PCM copier.
113+
When a keyword is detected by one of the WOV detectors the arbiter
114+
routes that KPB's drain stream to the host and instructs the remaining
115+
detectors to pause.
116+
105117
config COMP_KPB
106118
bool "KPB component"
107119
default y
@@ -160,6 +172,7 @@ rsource "template/Kconfig"
160172
rsource "tensorflow/Kconfig"
161173
rsource "tone/Kconfig"
162174
rsource "up_down_mixer/Kconfig"
175+
rsource "vad_gate/Kconfig"
163176
rsource "volume/Kconfig"
164177
# --- End Kconfig Sources (alphabetical order) ---
165178

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# SPDX-License-Identifier: BSD-3-Clause
2+
3+
add_local_sources(sof wov_arbiter.c)

0 commit comments

Comments
 (0)