Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
7e1336e
scripts: llext: support relocatable link bypass
lrgirdwo Jun 16, 2026
e30adc4
library_manager: llext: implement page-level VMA allocator for reloca…
lrgirdwo Jun 16, 2026
9eba891
zephyr: llext: link non-relocatable modules -Bsymbolic-functions
lrgirdwo Aug 16, 2026
3ae612c
lib: cpp: export operator new/delete and __cxa_pure_virtual for LLEXT
lrgirdwo Aug 16, 2026
d6e41f3
lib: ams: export producer API for LLEXT modules
lrgirdwo Aug 16, 2026
e00eb80
scripts: xtensa-build-zephyr: create per-UUID symlinks in install_lib()
lrgirdwo Aug 16, 2026
e08ccf9
platform: cavs: initialize DP scheduler during platform_init
singalsu Aug 24, 2026
40e41ca
audio: mfcc: add mel40 and mel40_10ms profiles for microWakeWord fron…
singalsu Aug 27, 2026
66bb61c
audio: mfcc: set DP schedule period from FFT hop cadence
singalsu Sep 11, 2026
ba903bf
audio: module_adapter: skip zero-rate sinks in DP period calc
singalsu Sep 11, 2026
4e1c263
sink: guard sink_get_free_frames against zero frame size
singalsu Sep 11, 2026
28ebb96
vregion: include llext/symbol.h for EXPORT_SYMBOL
singalsu Sep 11, 2026
5ef344b
audio: mfcc: tune: disable VAD control updates for mel40_10ms_compress
singalsu Sep 11, 2026
3c1d07c
audio: pipeline: guard against NULL source or sink in pipeline_copy()
singalsu Sep 9, 2026
3cca033
math: audio: add PCAN (Per-Channel AGC Normalization) support
singalsu Sep 23, 2026
b6b1031
audio: mfcc: add 8-bit PCAN feature extraction support
singalsu Sep 23, 2026
7e79b82
audio: mfcc: tune: add PCAN profiles and export configuration
singalsu Sep 23, 2026
3e29347
audio: microwakeword: implement mww component
singalsu Sep 23, 2026
e79fb42
rimage: config: include microWakeWord (MWW) module in platform manifests
singalsu Aug 27, 2026
bb490da
audio: microwakeword: add default models and runtime ctl blobs
singalsu Sep 23, 2026
2efaa0b
audio: microwakeword: tune: add model training, dataset, and test run…
singalsu Sep 23, 2026
4743b7d
[DNM] audio: buffers: add support for DP-to-DP component binding
singalsu Sep 8, 2026
5c29fe1
tools: topology2: eqiir: set heap and stack requirements for DP domain
singalsu Sep 10, 2026
dc17c90
[DNM] audio: kpb: add polling drain notify and handle sink loss
singalsu Sep 11, 2026
7225a63
[DNM] audio: microwakeword: use kpb polling notify for keyword trigger
singalsu Sep 11, 2026
4f76f22
tools: topology2: add microWakeWord (MWW) Wake-on-Voice topologies an…
singalsu Aug 27, 2026
1a07eb6
tools: topology2: enlarge KPB to micsel buffer in MWW capture pipeline
singalsu Sep 9, 2026
f884854
tools: topology2: drop MFCC VAD switch from MWW capture topologies
singalsu Sep 11, 2026
42b1b28
tools: topology: add 8-bit PCAN support for microWakeWord pipelines
singalsu Sep 14, 2026
afa029f
tools: topology2: add lean SSP0 nocodec topology for microWakeWord
singalsu Sep 16, 2026
387dc8c
platform: cavs25: enable PCAN and model loading from control for MWW
singalsu Sep 16, 2026
a2ebc61
tools: topology: mww: add PCAN benchmark topologies and tuning support
singalsu Sep 17, 2026
a1f2b73
tools: topology2: add PTL laptop MWW PCAN topology target
singalsu Sep 18, 2026
e692f5d
boards: intel_adsp_ace30_ptl: build MWW and PCAN pipeline statically
singalsu Sep 23, 2026
e1b3bf6
tools: topology2: add DMIC MWW KPB topology for ADL max98357a-rt5682
singalsu Sep 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

cmake_minimum_required(VERSION 3.13)

if(CMAKE_C_COMPILER_ID MATCHES "Clang")
add_compile_options(-mllvm --text-section-literals=false)
endif()
if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
message(FATAL_ERROR
" In-source builds are not supported.\n"
Expand Down Expand Up @@ -58,7 +61,10 @@ set(CMAKE_ASM_FLAGS -DASSEMBLY)
# that may be exported / installed
add_library(sof_public_headers INTERFACE)

target_include_directories(sof_public_headers INTERFACE ${PROJECT_SOURCE_DIR}/src/include)
target_include_directories(sof_public_headers INTERFACE
${PROJECT_SOURCE_DIR}/src/include
${PROJECT_SOURCE_DIR}/../tflite-micro
)

# interface library that is used only as container for sof binary options
# other targets can use it to build with the same options
Expand Down
3 changes: 3 additions & 0 deletions app/boards/intel_adsp/Kconfig.defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ config L3_HEAP
config ZEPHYR_DP_SCHEDULER
default y

config DP_TO_DP_BIND
default y

config ZEPHYR_NATIVE_DRIVERS
default y

Expand Down
78 changes: 48 additions & 30 deletions app/boards/intel_adsp_ace30_ptl.conf
Original file line number Diff line number Diff line change
Expand Up @@ -5,33 +5,62 @@ CONFIG_RIMAGE_SIGNING_SCHEMA="ptl"
CONFIG_IPC_MAJOR_4=y

# SOF / audio pipeline and module settings
CONFIG_COMP_TESTER=m
# cavs25-style static build for PTL: no LLEXT / library-manager /
# userspace. mww and everything the mww capture pipeline uses is built
# statically into the base FW image.
CONFIG_COMP_TESTER=n
CONFIG_COMP_SRC_IPC4_FULL_MATRIX=y
CONFIG_FORMAT_CONVERT_HIFI3=n

# SOF / audio modules / mocks
# This mock is part of official sof-bin releases because the CI that
# tests it can't use extra CONFIGs. See #9410, #8722 and #9386
CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=m
CONFIG_GOOGLE_RTC_AUDIO_PROCESSING_MOCK=y
CONFIG_COMP_STFT_PROCESS=y
CONFIG_COMP_GOOGLE_RTC_AUDIO_PROCESSING=n
CONFIG_COMP_STFT_PROCESS=n
CONFIG_SOF_STAGING=y
CONFIG_COMP_KPB=y
CONFIG_CPP=y
CONFIG_STD_CPP17=y
# tflmcly (stock keyword model) is not GNU-toolchain-clean on aphid;
# mww builds its own independent TFLM lib copy.
CONFIG_COMP_TENSORFLOW=n
CONFIG_COMP_MFCC=y
CONFIG_COMP_MFCC_PCAN=y
CONFIG_COMP_MFCC_DEBUG_TRACE=y
CONFIG_COMP_MWW=y
CONFIG_COMP_MWW_PCAN=y
CONFIG_COMP_MWW_DEBUG_TRACE=y
CONFIG_COMP_MWW_MODEL_FROM_CONTROL=n
CONFIG_AMS=y
CONFIG_STACK_SIZE_EDF=32768
CONFIG_COMP_VOLUME=y
CONFIG_COMP_GAIN=y
CONFIG_COMP_IIR=y
CONFIG_COMP_SRC=y
CONFIG_MATH_IIR=y
# Standard hda-generic components, built statically (cavs25 parity).
CONFIG_COMP_ARIA=y
CONFIG_COMP_CROSSOVER=y
CONFIG_COMP_DRC=y
CONFIG_COMP_MULTIBAND_DRC=y
CONFIG_COMP_VOLUME_WINDOWS_FADE=y
CONFIG_PCM_CONVERTER_FORMAT_S16LE=y
CONFIG_PCM_CONVERTER_FORMAT_S24LE=y
CONFIG_PCM_CONVERTER_FORMAT_S32LE=y
CONFIG_PCM_CONVERTER_FORMAT_S24_3LE=y

# SOF / infrastructure
CONFIG_KCPS_DYNAMIC_CLOCK_CONTROL=n
# Match cavs25 static-mww build: 15 ms default IDC timeout is too tight
# for CREATE_PIPELINE forwarded to a secondary core while the DP scheduler
# and TFLM tensor-arena setup are in flight.
CONFIG_IDC_TIMEOUT_US=100000
CONFIG_PROBE=y
CONFIG_PROBE_DMA_MAX=2
CONFIG_SOF_TELEMETRY=y
CONFIG_SOF_TELEMETRY_IO_PERFORMANCE_MEASUREMENTS=y
CONFIG_SOF_TELEMETRY_PERFORMANCE_MEASUREMENTS=y
CONFIG_COLD_STORE_EXECUTE_DRAM=y

# SOF / loadable modules
# SOF / loadable modules -- disabled for cavs25-style static build.
CONFIG_INTEL_MODULES=y
CONFIG_LIBRARY_AUTH_SUPPORT=y
CONFIG_LIBRARY_MANAGER=y
CONFIG_LIBRARY_BASE_ADDRESS=0xa0688000
CONFIG_LIBRARY_BUILD_LIB=y
CONFIG_LIBRARY_DEFAULT_MODULAR=y
CONFIG_LIBRARY_MANAGER=n

# SOF / logging
CONFIG_SOF_LOG_LEVEL_INF=y
Expand All @@ -43,12 +72,8 @@ CONFIG_SOF_LOG_LEVEL_INF=y
CONFIG_DEBUG_COREDUMP_BACKEND_INTEL_ADSP_MEM_WINDOW=y
CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y
CONFIG_COUNTER=y
CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_LLEXT=y
CONFIG_LLEXT_STORAGE_WRITABLE=y
CONFIG_LLEXT_EXPERIMENTAL=y
CONFIG_LLEXT_EDK=n
CONFIG_MODULES=y
CONFIG_HEAP_MEM_POOL_SIZE=32768
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=32768

# Zephyr / device drivers
CONFIG_DAI_INIT_PRIORITY=70
Expand All @@ -73,13 +98,6 @@ CONFIG_LOG_BACKEND_ADSP=n
CONFIG_LOG_FLUSH_SLEEP_US=5000
CONFIG_WINSTREAM_CONSOLE=n

# Userspace options
CONFIG_USERSPACE=y
CONFIG_DYNAMIC_THREAD=y
CONFIG_DYNAMIC_THREAD_ALLOC=y
CONFIG_DYNAMIC_THREAD_PREFER_ALLOC=y
CONFIG_SOF_STACK_SIZE=8192
CONFIG_SOF_USERSPACE_PROXY=y
CONFIG_MAX_THREAD_BYTES=3

CONFIG_MAX_DOMAIN_PARTITIONS=32
# Diagnostics (kept from LLEXT-era conf while validating static build).
CONFIG_SYS_HEAP_RUNTIME_STATS=y
CONFIG_SOF_ZEPHYR_HEAP_SIZE=0x80000
16 changes: 15 additions & 1 deletion app/boards/intel_adsp_cavs25.conf
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,29 @@ CONFIG_COMP_ARIA=y
CONFIG_COMP_CROSSOVER=y
CONFIG_COMP_DRC=y
CONFIG_COMP_MFCC=y
CONFIG_COMP_MFCC_PCAN=y
CONFIG_COMP_MULTIBAND_DRC=y
CONFIG_COMP_VOLUME_WINDOWS_FADE=y
CONFIG_FORMAT_CONVERT_HIFI3=n
CONFIG_SOF_STAGING=y
CONFIG_CPP=y
CONFIG_STD_CPP17=y
# cavs2.5 has no LLEXT/module-manager support (see CONFIG_LIBRARY_MANAGER=n
# below), so build mww in statically rather than as an LLEXT module.
CONFIG_COMP_MWW=y
CONFIG_COMP_MWW_PCAN=y
CONFIG_COMP_MWW_DEBUG_TRACE=y
CONFIG_COMP_MWW_MODEL_FROM_CONTROL=y
CONFIG_STACK_SIZE_EDF=32768
CONFIG_PCM_CONVERTER_FORMAT_S16LE=y
CONFIG_PCM_CONVERTER_FORMAT_S24LE=y
CONFIG_PCM_CONVERTER_FORMAT_S32LE=y
CONFIG_PCM_CONVERTER_FORMAT_S24_3LE=y

# SOF / infrastructure
CONFIG_AMS=y
CONFIG_IDC_TIMEOUT_US=100000
CONFIG_P4WQ_INIT_STAGE_EARLY=y
CONFIG_LP_MEMORY_BANKS=1
CONFIG_HP_MEMORY_BANKS=30

Expand All @@ -35,7 +48,8 @@ CONFIG_SOF_LOG_LEVEL_INF=y
# choices have to be selected per board.
CONFIG_DEBUG_COREDUMP_BACKEND_INTEL_ADSP_MEM_WINDOW=y
CONFIG_DEBUG_COREDUMP_MEMORY_DUMP_MIN=y
CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_HEAP_MEM_POOL_SIZE=32768
CONFIG_COMMON_LIBC_MALLOC_ARENA_SIZE=32768

# Zephyr / device drivers
CONFIG_DAI_INIT_PRIORITY=70
Expand Down
1 change: 1 addition & 0 deletions app/llext_relocatable.conf
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
CONFIG_LLEXT_TYPE_ELF_RELOCATABLE=y
CONFIG_LLEXT_EXPORT_BUILTINS_BY_SLID=y
3 changes: 3 additions & 0 deletions scripts/llext_offset_calc.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ def get_elf_size(elf_name):
if section.header['sh_addr'] + section.header['sh_size'] > end:
end = section.header['sh_addr'] + section.header['sh_size']

if start == 0xffffffff:
return 0

size = end - start

return size
Expand Down
67 changes: 47 additions & 20 deletions scripts/tensorflow-clone.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2025 Intel Corporation. All rights reserved.
# Copyright(c) 2025-2026 Intel Corporation. All rights reserved.

# fail immediately on any errors
set -e
Expand All @@ -14,8 +14,7 @@ declare -a REPOS=(
"https://github.com/google/ruy"
)

# Commit ID to check for (optional). If specified, the script will update
# the repository if this commit ID is not found. Leave empty to skip.
# Commit ID to check out. If specified, the script will checkout this commit.
declare -a COMMIT_ID=(
"cdedfb1a1044eb774915de21b63a1b6aa93276f6"
"e86d97b6237f88ab5925c0b41e3e3589a1560d86"
Expand All @@ -25,7 +24,10 @@ declare -a COMMIT_ID=(
)

# Directory where repositories will be cloned/updated.
BASE_DIR="$HOME/work/sof" # Or any other desired location
# Default to the parent directory containing the SOF workspace.
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SOF_PARENT_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
BASE_DIR="${1:-"$SOF_PARENT_DIR"}"

# Function to check if a commit ID exists in a repository
check_commit() {
Expand All @@ -36,40 +38,65 @@ check_commit() {
return 0 # Skip check if no commit ID is provided
fi

if ! git -C "$repo_dir" rev-parse --quiet --verify "$commit_id" >/dev/null 2>&1; then
return 1 # Commit ID not found
if ! git -C "$repo_dir" rev-parse --quiet --verify "$commit_id^{commit}" >/dev/null 2>&1; then
return 1 # Commit ID not found locally
else
return 0 # Commit ID found
return 0 # Commit ID found locally
fi
}


# Function to update the repository
update_repo() {
local repo_dir="$1"
echo "Updating repository: $repo_dir"
git -C "$repo_dir" fetch --all
git -C "$repo_dir" pull
git -C "$repo_dir" fetch --all --tags --prune
}

# Function to checkout the required commit ID
checkout_commit() {
local repo_dir="$1"
local commit_id="$2"
local repo_name="$3"

if [ -z "$commit_id" ]; then
return 0
fi

local current_commit
current_commit=$(git -C "$repo_dir" rev-parse HEAD)

local target_commit
target_commit=$(git -C "$repo_dir" rev-parse "$commit_id^{commit}")

if [ "$current_commit" != "$target_commit" ]; then
echo "Checking out $commit_id in $repo_name..."
git -C "$repo_dir" checkout -q "$commit_id"
else
echo "Repository $repo_name is already at commit $commit_id."
fi
}

# Main script logic
mkdir -p "$BASE_DIR"

for ((i = 0; i < ${#REPOS[@]}; i++)); do
echo "Counter: $i, Value: ${REPOS[i]}"
repo_url=${REPOS[i]}

repo_name=$(basename "$repo_url" .git) # Extract repo name
repo_url="${REPOS[i]}"
commit_id="${COMMIT_ID[i]}"
repo_name=$(basename "$repo_url" .git)
repo_dir="$BASE_DIR/$repo_name"

if [ ! -d "$repo_dir" ]; then
echo "Cloning repository: $repo_url"
echo "=== [$((i + 1))/${#REPOS[@]}] $repo_name ==="

if [ ! -d "$repo_dir/.git" ]; then
echo "Cloning repository: $repo_url -> $repo_dir"
git clone "$repo_url" "$repo_dir" || { echo "git clone failed for $repo_url"; exit 1; }
elif ! check_commit "$repo_dir" "${COMMIT_ID[i]}"; then
fi

if ! check_commit "$repo_dir" "$commit_id"; then
update_repo "$repo_dir"
else
echo "Repository $repo_name is up to date."
fi

checkout_commit "$repo_dir" "$commit_id" "$repo_name"
done

echo "All repositories processed."
echo "All repositories processed and checked out to required commits."
4 changes: 4 additions & 0 deletions scripts/xtensa-build-zephyr.py
Original file line number Diff line number Diff line change
Expand Up @@ -1174,6 +1174,10 @@ def install_lib(platform, sof_output_dir, abs_build_dir, platform_wconfig):
symlink_or_copy(lib_install_dir, lib_name,
lib_dir, alias_libname)

for uuid in lib_uuids.get(key, []):
linkname = uuid + '.bin'
symlink_or_copy(lib_install_dir, lib_name, sof_lib_dir, linkname)

def install_platform(platform, sof_output_dir, platf_build_environ, platform_wconfig):

# Keep in sync with caller
Expand Down
1 change: 1 addition & 0 deletions src/arch/host/configs/library_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ CONFIG_COMP_IIR=y
CONFIG_COMP_IGO_NR=y
CONFIG_COMP_LEVEL_MULTIPLIER=y
CONFIG_COMP_MFCC=y
CONFIG_COMP_MFCC_PCAN=y
CONFIG_COMP_MODULE_ADAPTER=y
CONFIG_COMP_MULTIBAND_DRC=y
CONFIG_COMP_MUX=y
Expand Down
3 changes: 3 additions & 0 deletions src/audio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ if(NOT CONFIG_COMP_MODULE_SHARED_LIBRARY_BUILD)
if(CONFIG_COMP_MFCC)
add_subdirectory(mfcc)
endif()
if(CONFIG_COMP_MWW)
add_subdirectory(microwakeword)
endif()
if(CONFIG_COMP_MIXER)
add_subdirectory(mixer)
endif()
Expand Down
1 change: 1 addition & 0 deletions src/audio/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ rsource "eq_iir/Kconfig"
rsource "google/Kconfig"
rsource "igo_nr/Kconfig"
rsource "mfcc/Kconfig"
rsource "microwakeword/Kconfig"
rsource "mixer/Kconfig"
rsource "mixin_mixout/Kconfig"
rsource "module_adapter/Kconfig"
Expand Down
Loading
Loading