Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
e3d90fa
esp32p4: add SOF static audio pipeline and ESP32-P4 platform support
lrgirdwo Sep 6, 2026
6357eba
esp32p4: enable LL scheduler periodic logging and trigger pipeline on…
lrgirdwo Sep 6, 2026
2a64c23
esp32p4: configure deferred logging and system clock resolution
lrgirdwo Sep 6, 2026
c929731
esp32p4: enable periodic kernel timer and automatic binary creation
lrgirdwo Sep 6, 2026
f5ed3c2
esp32p4: export ALSA kcontrols for Playback EQ, DRC, Capture TDFB, an…
lrgirdwo Sep 6, 2026
1b039fe
esp32p4: load default DSP configurations for EQ and DRC with runtime …
lrgirdwo Sep 6, 2026
c0f89ae
esp32p4: configure IPC4 base module config for static pipeline compon…
lrgirdwo Sep 6, 2026
62998f8
esp32p4: fix static pipeline stream routing, IPC3 configs, and termin…
lrgirdwo Sep 6, 2026
4f1b8d1
esp32p4: document static pipeline topology, ALSA controls, and MCPS p…
lrgirdwo Sep 6, 2026
732fbd2
esp32p4: add native single-precision floating-point pipeline with har…
lrgirdwo Sep 6, 2026
890b138
esp32p4: add capture pipeline controls, float TDFB support, and MCPS …
lrgirdwo Sep 7, 2026
ef561b0
pipeline: introduce declarative static topology definition and loader
lrgirdwo Sep 7, 2026
841fa73
math: add single-precision float FIR filtering routines
lrgirdwo Sep 8, 2026
8f62945
audio: pcm_converter: optimize integer conversions and add float atte…
lrgirdwo Sep 8, 2026
fd98a26
audio: dcblock: add single-precision float filter acceleration
lrgirdwo Sep 8, 2026
9828b83
audio: eq_fir: add single-precision float FIR filtering support
lrgirdwo Sep 8, 2026
bd4587c
audio: crossover: add float Linkwitz-Riley 4th order processing
lrgirdwo Sep 8, 2026
27eaa23
audio: multiband_drc: add single-precision float multiband compressor
lrgirdwo Sep 8, 2026
f01f9a1
audio: mixer: add float stream mixing, muxing, and mixin/mixout support
lrgirdwo Sep 8, 2026
7d3695b
audio: tdfb: add single-precision float beamformer acceleration
lrgirdwo Sep 8, 2026
b1f5d60
audio: src: add single-precision float polyphase sample rate conversion
lrgirdwo Sep 8, 2026
705330a
audio: tone: add single-precision float synthesis and format negotiation
lrgirdwo Sep 8, 2026
eb20ee0
audio: asrc: implement float FIR filtering and 4-way unrolled ILP
lrgirdwo Sep 8, 2026
34c19b0
audio: up_down_mixer: add ANSI C and RISC-V upmix and downmix routines
lrgirdwo Sep 8, 2026
1af984e
audio: level_multiplier: add float scaling and kcontrol volume support
lrgirdwo Sep 8, 2026
81e2661
audio: selector: add float matrix processing and enum control support
lrgirdwo Sep 8, 2026
83d7c4d
platform: esp32p4: add static test pipeline with tone, level, and sel…
lrgirdwo Sep 8, 2026
00190eb
doc: esp32p4: document float and SIMD performance deltas per module
lrgirdwo Sep 8, 2026
cc85906
app: esp32p4: add Pallas and Ceres board identity, GDMA descriptors, …
lrgirdwo Sep 9, 2026
da44fcb
audio: dai-zephyr & usb_audio: support multi-period burst copy, pre-b…
lrgirdwo Sep 9, 2026
178704c
platform: esp32p4: support S16_LE static pipeline, auto master/slave …
lrgirdwo Sep 9, 2026
6b61cbe
platform: esp32p4: support dynamic period calculation, runtime interf…
lrgirdwo Sep 10, 2026
496494d
platform: esp32p4: add DMIC Injector Switch kcontrol, shell commands,…
lrgirdwo Sep 10, 2026
b3bf462
audio: bt: add ESP32-C6 Bluetooth LE Audio pipeline endpoint and stat…
lrgirdwo Sep 10, 2026
8861109
audio: bt: add high-quality audio format presets, dynamic kcontrol, a…
lrgirdwo Sep 11, 2026
3d79e02
manifest: update zephyr and hal_espressif to point to lgirdwood forks
lrgirdwo Sep 11, 2026
fc7cf1c
audio: riscv: implement ESP32-P4 PIE 128-bit SIMD acceleration for vo…
lrgirdwo Sep 14, 2026
495931e
esp32p4: adapt float modules and static pipeline to upstream cir_buf API
lgirdwood Oct 15, 2026
1a84b40
wip: esp32c6 initial platform support
lrgirdwo Sep 14, 2026
06393db
audio: pipeline: dynamically discover DAI components and add C6 loopb…
lrgirdwo Sep 14, 2026
2ed1190
audio: pipeline: clean static pipeline build rules and enable STATIC_…
lgirdwood Oct 15, 2026
6a85b07
audio: pipeline: guard Bluetooth audio calls with CONFIG_COMP_BT_AUDIO
lgirdwood Oct 15, 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
4 changes: 1 addition & 3 deletions Kconfig.sof
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,7 @@ rsource "Kconfig.xtos"

rsource "src/Kconfig"

if ZEPHYR_SOF_MODULE
rsource "Kconfig.zephyr-log"
endif
rsource "Kconfig.zephyr-log"

menu "Debug"

Expand Down
48 changes: 46 additions & 2 deletions app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,55 @@ endif()
find_package(Zephyr HINTS $ENV{ZEPHYR_BASE})
project(sample_sof)

add_subdirectory(../zephyr sof_zephyr)

target_sources(app PRIVATE
src/main.c
../src/debug/shell/esp32_shell.c
)

target_sources_ifdef(CONFIG_USB_DEVICE_STACK_NEXT app PRIVATE
src/usbd_init.c
)

zephyr_library_include_directories(app PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../src/arch/xtensa/include
target_include_directories(app PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/../src/include
${CMAKE_CURRENT_SOURCE_DIR}/../zephyr/include
${PROJECT_BINARY_DIR}/include/generated
)

if(CONFIG_PLATFORM_ESP32P4)
target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src/platform/esp32p4/include)
elseif(CONFIG_PLATFORM_ESP32C6)
target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src/platform/esp32c6/include)
endif()

target_link_libraries(app PRIVATE SOF modules_sof)
target_link_libraries(modules_sof PRIVATE kernel)
if(TARGET uuid_reg_h)
add_dependencies(app uuid_reg_h modules_sof)
endif()

if(CONFIG_XTENSA)
target_include_directories(app PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/../src/arch/xtensa/include
)
endif()

function(sof_append_relative_path_definitions target)
get_target_property(sources ${target} SOURCES)
foreach(src ${sources})
get_filename_component(ABS_PATH ${src} ABSOLUTE)
file(RELATIVE_PATH rel ${PROJECT_SOURCE_DIR} ${ABS_PATH})
set_property(
SOURCE ${src}
APPEND
PROPERTY COMPILE_DEFINITIONS
RELATIVE_FILE="${rel}")
endforeach()
endfunction()

sof_append_relative_path_definitions(app)


5 changes: 5 additions & 0 deletions app/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ choice COMPILER_CODEGEN_VLIW
endchoice

source "Kconfig.zephyr"
source "samples/subsys/usb/common/Kconfig.sample_usbd"

if !ZEPHYR_SOF_MODULE
rsource "../zephyr/Kconfig"
endif

if SOC_FAMILY_INTEL_ADSP
rsource "boards/intel_adsp/Kconfig.defconfig"
Expand Down
68 changes: 68 additions & 0 deletions app/boards/esp32c6_devkitc_esp32c6_hpcore.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Target Platform & SOF Core
CONFIG_PLATFORM_ESP32C6=y
CONFIG_STATIC_PIPELINE=y
CONFIG_SOF_FULL_ZEPHYR_APPLICATION=y
CONFIG_ZEPHYR_NATIVE_DRIVERS=y
CONFIG_BUILD_OUTPUT_BIN=y

# Zephyr DAI Drivers for ESP32
CONFIG_DAI=y
CONFIG_DAI_ESPRESSIF_I2S=y
CONFIG_PINCTRL=y
CONFIG_DMA=y
CONFIG_DMA_ESP32_MAX_DESCRIPTOR_NUM=32

# Audio Processing Modules (Fixed-Point S16_LE Only - No Float / SIMD)
CONFIG_FORMAT_S16LE=y
CONFIG_COMP_VOLUME=y
CONFIG_COMP_USB_AUDIO=y
CONFIG_COMP_BT_AUDIO=n
CONFIG_FILTER_RISCV_SIMD=n
CONFIG_DRC_RISCV_SIMD=n
CONFIG_EQ_IIR_RISCV_SIMD=n
CONFIG_VOLUME_RISCV_SIMD=n
CONFIG_COMP_DRC=n
CONFIG_COMP_IIR=n
CONFIG_COMP_FIR=n
CONFIG_COMP_CROSSOVER=n
CONFIG_COMP_DCBLOCK=n
CONFIG_COMP_MULTIBAND_DRC=n
CONFIG_COMP_TDFB=n

# No Native USB UAC2 (ESP32-C6 uses USB-Serial/JTAG CDC-ACM)
CONFIG_USB_DEVICE_STACK_NEXT=n
CONFIG_USBD_AUDIO2_CLASS=n

# System Resources & Memory (SRAM Budget: 512 KB)
CONFIG_MAIN_STACK_SIZE=3072
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=3072
CONFIG_ISR_STACK_SIZE=2048
CONFIG_HW_STACK_PROTECTION=n
CONFIG_HEAP_MEM_POOL_SIZE=8192
CONFIG_TICKLESS_KERNEL=n
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000

# Logging & USB-Serial Console
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_MAX_LEVEL=4
CONFIG_SOF_LOG_LEVEL_INF=y
CONFIG_DAI_LOG_LEVEL_INF=y
CONFIG_LOG_MODE_DEFERRED=y
CONFIG_LOG_BUFFER_SIZE=2048
CONFIG_LOG_MODE_OVERFLOW=y
CONFIG_PRINTK=y
CONFIG_LOG_PRINTK=n
CONFIG_EARLY_CONSOLE=y

# Interactive Shell over USB-Serial/JTAG
CONFIG_SHELL=y
CONFIG_SHELL_STACK_SIZE=4096
CONFIG_SHELL_BACKENDS=y
CONFIG_SHELL_BACKEND_SERIAL=y
CONFIG_SHELL_PROMPT_UART="sof:~$ "

# SOF Low Latency Scheduler Statistics Logging (Every 1s)
CONFIG_SCHEDULE_LL_STATS_LOG=y
CONFIG_SCHEDULE_LL_STATS_LOG_EVERY_OTHER_WINDOW=n
CONFIG_SCHEDULE_LL_STATS_LOG_WINDOW_SIZE=10
34 changes: 34 additions & 0 deletions app/boards/esp32c6_devkitc_esp32c6_hpcore.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
#include <zephyr/dt-bindings/interrupt-controller/esp-esp32c6-intmux.h>

/ {
chosen {
zephyr,console = &usb_serial;
zephyr,shell-uart = &usb_serial;
};

dai_i2s0: dai@6000c000 {
compatible = "espressif,esp32-dai-i2s";
status = "okay";
reg = <0x6000c000 0x1000>;
interrupt-parent = <&intc>;
interrupts = <I2S1_INTR_SOURCE IRQ_DEFAULT_PRIORITY 0>;
dai-index = <0>;
fifo-depth = <32>;
};
};

&dma {
status = "okay";
};

&usb_serial {
status = "okay";
};

&i2c0 {
status = "disabled";
};

&uart0 {
status = "disabled";
};
94 changes: 94 additions & 0 deletions app/boards/esp32p4_function_ev_board_esp32p4_hpcore.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# Target Platform & SOF Core
CONFIG_PLATFORM_ESP32P4=y
CONFIG_SOF_FULL_ZEPHYR_APPLICATION=y
CONFIG_ZEPHYR_NATIVE_DRIVERS=y
CONFIG_STATIC_PIPELINE=y
CONFIG_SYS_HEAP_BIG_ONLY=y
CONFIG_BUILD_OUTPUT_BIN=y

# Zephyr DAI Drivers for ESP32
CONFIG_DAI=y
CONFIG_DAI_ESPRESSIF_I2S=y
CONFIG_DAI_ESPRESSIF_PDM=y
CONFIG_PINCTRL=y
CONFIG_DMA=y
CONFIG_DMA_ESP32_MAX_DESCRIPTOR_NUM=64

# Audio Processing Modules
CONFIG_COMP_VOLUME=y
CONFIG_COMP_IIR=y
CONFIG_COMP_FIR=y
CONFIG_COMP_DRC=y
CONFIG_COMP_CROSSOVER=y
CONFIG_COMP_DCBLOCK=y
CONFIG_COMP_MULTIBAND_DRC=y
CONFIG_COMP_TDFB=y
CONFIG_COMP_USB_AUDIO=y
CONFIG_COMP_BT_AUDIO=y
CONFIG_COMP_TONE=y
CONFIG_COMP_LEVEL_MULTIPLIER=y
CONFIG_COMP_SEL=y
CONFIG_COMP_MUX=y
CONFIG_COMP_MIXER=y
CONFIG_FILTER_RISCV_SIMD=y
CONFIG_DRC_RISCV_SIMD=y
CONFIG_EQ_IIR_RISCV_SIMD=y
CONFIG_VOLUME_RISCV_SIMD=y
CONFIG_ESP32P4_PIE_SIMD=y

# USB Device Stack Next & UAC2 Class
CONFIG_USB_DEVICE_STACK_NEXT=y
CONFIG_CDC_ACM_SERIAL_INITIALIZE_AT_BOOT=n
CONFIG_USBD_AUDIO2_CLASS=y
CONFIG_UDC_ENABLE_SOF=y
CONFIG_UDC_DWC2_DMA=n
CONFIG_UDC_DWC2_PTI=y
CONFIG_UDC_BUF_COUNT=64
CONFIG_UDC_BUF_POOL_SIZE=16384

# USB Device Identification
CONFIG_SAMPLE_USBD_VID=0x303A
CONFIG_SAMPLE_USBD_PID=0x4002
CONFIG_SAMPLE_USBD_MANUFACTURER="Espressif"
CONFIG_SAMPLE_USBD_PRODUCT="ESP32-P4 Dual UAC2 Audio"

# System Resources & Memory
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
CONFIG_USBD_THREAD_STACK_SIZE=4096
CONFIG_UDC_DWC2_STACK_SIZE=4096
CONFIG_UDC_WORKQUEUE_STACK_SIZE=4096
CONFIG_ISR_STACK_SIZE=4096
CONFIG_HW_STACK_PROTECTION=n
CONFIG_HEAP_MEM_POOL_SIZE=16384
CONFIG_TICKLESS_KERNEL=n
CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000

# Logging & UART Console
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_MAX_LEVEL=4
CONFIG_SOF_LOG_LEVEL_INF=y
CONFIG_DAI_LOG_LEVEL_INF=y
CONFIG_USBD_UAC2_LOG_LEVEL_INF=y
CONFIG_UDC_DRIVER_LOG_LEVEL_INF=y
CONFIG_LOG_MODE_DEFERRED=y
CONFIG_LOG_BUFFER_SIZE=4096
CONFIG_LOG_MODE_OVERFLOW=y
CONFIG_LOG_BACKEND_UART=y
CONFIG_SHELL_LOG_BACKEND=y
CONFIG_PRINTK=y
CONFIG_LOG_PRINTK=n
CONFIG_EARLY_CONSOLE=y

# Interactive Shell
CONFIG_SHELL=y
CONFIG_SHELL_STACK_SIZE=8192
CONFIG_SHELL_BACKENDS=y
CONFIG_SHELL_BACKEND_SERIAL=y
CONFIG_SHELL_PROMPT_UART="sof:~$ "

# SOF Low Latency Scheduler Statistics Logging (Every 1s)
CONFIG_SCHEDULE_LL_STATS_LOG=y
CONFIG_SCHEDULE_LL_STATS_LOG_EVERY_OTHER_WINDOW=n
CONFIG_SCHEDULE_LL_STATS_LOG_WINDOW_SIZE=10
Loading
Loading