Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
55 changes: 40 additions & 15 deletions app/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,52 @@

cmake_minimum_required(VERSION 3.21.0)

# Board specific overlays (these must be before find_package(Zephyr))
# -------------------------------------------------------------------

# Intel PTL: if "os_linux_overlay" used, also add "ll_userspace_overlay"
if(DEFINED EXTRA_CONF_FILE AND (BOARD MATCHES "/ptl" OR BOARD_QUALIFIERS MATCHES "/ptl"))
string(FIND "${EXTRA_CONF_FILE}" "os_linux_overlay" _linux_overlay_idx)
string(FIND "${EXTRA_CONF_FILE}" "ll_userspace_overlay" _ll_overlay_idx)
if(_linux_overlay_idx GREATER_EQUAL 0 AND _ll_overlay_idx LESS 0)
list(APPEND EXTRA_CONF_FILE
"${CMAKE_CURRENT_SOURCE_DIR}/overlays/ptl/ll_userspace_overlay.conf")
endif()
endif()

find_package(Zephyr HINTS $ENV{ZEPHYR_BASE})
project(sample_sof)

add_subdirectory(../zephyr sof_zephyr)

target_sources(app PRIVATE
src/main.c
)

zephyr_library_include_directories(app PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../src/arch/xtensa/include

target_sources_ifdef(CONFIG_USB_DEVICE_STACK_NEXT app PRIVATE
src/usbd_init.c
)

target_include_directories(app PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/../src/include
${CMAKE_CURRENT_SOURCE_DIR}/../zephyr/include
${CMAKE_CURRENT_SOURCE_DIR}/../src/platform/${PLATFORM}/include
${PROJECT_BINARY_DIR}/include/generated
)

target_link_libraries(app PRIVATE SOF modules_sof)
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
64 changes: 64 additions & 0 deletions app/boards/nrf54l15dk_nrf54l15_cpuapp.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Target Platform & SOF Core
CONFIG_PLATFORM_NORDIC=y
CONFIG_PLATFORM_NRF54L15=y
CONFIG_SOF_FULL_ZEPHYR_APPLICATION=y
CONFIG_ZEPHYR_NATIVE_DRIVERS=y
CONFIG_IPC_MAJOR_4=y
CONFIG_COMP_BASEFW_IPC4=n
CONFIG_STATIC_PIPELINE=y
CONFIG_SCHED_CPU_MASK=n
CONFIG_SYS_HEAP_BIG_ONLY=y
CONFIG_BUILD_OUTPUT_HEX=y
CONFIG_BUILD_OUTPUT_BIN=y

# Audio Processing Modules & ARM SIMD Optimizations
CONFIG_COMP_VOLUME=y
CONFIG_VOLUME_ARM_SIMD=y
CONFIG_COMP_IIR=y
CONFIG_EQ_IIR_ARM_SIMD=y
CONFIG_FILTER_ARM_SIMD=y
CONFIG_COMP_FIR=y
CONFIG_COMP_DRC=y
CONFIG_DRC_ARM_SIMD=y
CONFIG_COMP_CROSSOVER=y
CONFIG_COMP_DCBLOCK=y
CONFIG_DCBLOCK_ARM_SIMD=y
CONFIG_COMP_MULTIBAND_DRC=y
CONFIG_COMP_TONE=y
CONFIG_COMP_LEVEL_MULTIPLIER=y
CONFIG_COMP_SEL=y
CONFIG_COMP_MUX=y
CONFIG_FORMAT_CONVERT_ARM_SIMD=y
CONFIG_COMP_USB_AUDIO=y
CONFIG_COMP_BT_AUDIO=n
CONFIG_COMP_I2S_AUDIO=y

# I2S Hardware Audio Interface (I2S20 Slave)
CONFIG_I2S=y
CONFIG_I2S_NRFX=y

# Bluetooth Stack Disabled for Direct I2S Cable Loopback
CONFIG_BT=n

# Hardware FPU & ARM DSP
CONFIG_FPU=y

# System Resources & Memory (Lean footprint for 256KB RAM)
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096
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 & UART Console
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_LOG_MODE_DEFERRED=y
CONFIG_LOG_BUFFER_SIZE=4096
CONFIG_LOG_BACKEND_UART=y
CONFIG_PRINTK=y
CONFIG_LOG_PRINTK=y
CONFIG_EARLY_CONSOLE=y

38 changes: 38 additions & 0 deletions app/boards/nrf54l15dk_nrf54l15_cpuapp.overlay
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* Copyright (c) 2026 Sound Open Firmware (SOF) Project
* SPDX-License-Identifier: Apache-2.0
*/

/ {
aliases {
i2s-node0 = &i2s20;
};
};

&pinctrl {
i2s20_default: i2s20_default {
group1 {
psels = <NRF_PSEL(I2S_SCK_S, 1, 11)>,
<NRF_PSEL(I2S_LRCK_S, 1, 12)>,
<NRF_PSEL(I2S_SDIN, 1, 9)>,
<NRF_PSEL(I2S_SDOUT, 1, 8)>;
};
};

i2s20_sleep: i2s20_sleep {
group1 {
psels = <NRF_PSEL(I2S_SCK_S, 1, 11)>,
<NRF_PSEL(I2S_LRCK_S, 1, 12)>,
<NRF_PSEL(I2S_SDIN, 1, 9)>,
<NRF_PSEL(I2S_SDOUT, 1, 8)>;
low-power-enable;
};
};
};

&i2s20 {
status = "okay";
pinctrl-0 = <&i2s20_default>;
pinctrl-1 = <&i2s20_sleep>;
pinctrl-names = "default", "sleep";
};
81 changes: 81 additions & 0 deletions app/boards/nrf54lm20dk_nrf54lm20b_cpuapp.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Target Platform & SOF Core
CONFIG_PLATFORM_NORDIC=y
CONFIG_PLATFORM_NRF54LM20=y
CONFIG_SOF_FULL_ZEPHYR_APPLICATION=y
CONFIG_ZEPHYR_NATIVE_DRIVERS=y
CONFIG_IPC_MAJOR_4=y
CONFIG_COMP_BASEFW_IPC4=n
CONFIG_STATIC_PIPELINE=y
CONFIG_SCHED_CPU_MASK=n
CONFIG_SYS_HEAP_BIG_ONLY=y
CONFIG_BUILD_OUTPUT_HEX=y
CONFIG_BUILD_OUTPUT_BIN=y

# Audio Processing Modules & ARM SIMD Optimizations
CONFIG_COMP_VOLUME=y
CONFIG_VOLUME_ARM_SIMD=y
CONFIG_COMP_IIR=y
CONFIG_EQ_IIR_ARM_SIMD=y
CONFIG_FILTER_ARM_SIMD=y
CONFIG_COMP_FIR=y
CONFIG_COMP_DRC=y
CONFIG_DRC_ARM_SIMD=y
CONFIG_COMP_CROSSOVER=y
CONFIG_COMP_DCBLOCK=y
CONFIG_DCBLOCK_ARM_SIMD=y
CONFIG_COMP_MULTIBAND_DRC=y
CONFIG_COMP_TONE=y
CONFIG_COMP_LEVEL_MULTIPLIER=y
CONFIG_COMP_SEL=y
CONFIG_COMP_MUX=y
CONFIG_FORMAT_CONVERT_ARM_SIMD=y
CONFIG_COMP_USB_AUDIO=y
CONFIG_COMP_BT_AUDIO=n
CONFIG_COMP_I2S_AUDIO=y

# I2S Hardware Audio Interface (TDM Master)
CONFIG_I2S=y
CONFIG_I2S_NRF_TDM=y
CONFIG_I2S_NRF_TDM_TX_BLOCK_COUNT=32
CONFIG_I2S_NRF_TDM_RX_BLOCK_COUNT=32

# Asynchronous deferred logging for audio real-time performance
CONFIG_LOG_MODE_DEFERRED=y
CONFIG_LOG_BUFFER_SIZE=8192

# USB Device & UAC2 Audio Class
CONFIG_USB_DEVICE_STACK_NEXT=y
CONFIG_CDC_ACM_SERIAL_INITIALIZE_AT_BOOT=n
CONFIG_USBD_AUDIO2_CLASS=y
CONFIG_UDC_DWC2_PTI=y
CONFIG_SAMPLE_USBD_VID=0x1915
CONFIG_SAMPLE_USBD_PID=0x5420
CONFIG_SAMPLE_USBD_PRODUCT="Nordic nRF54LM20 SOF UAC2"

# Bluetooth Stack Disabled for Direct I2S Cable Loopback
CONFIG_BT=n

# Hardware FPU & ARM DSP
CONFIG_FPU=y

# MPU Null-Pointer Detection override (0x0-0x400 unmapped on LM20)
CONFIG_NULL_POINTER_EXCEPTION_DETECTION_NONE=y

# System Resources & Memory (512KB RAM)
CONFIG_MAIN_STACK_SIZE=8192
CONFIG_SYSTEM_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_MODE_IMMEDIATE=y
CONFIG_LOG_BACKEND_UART=y
CONFIG_PRINTK=y
CONFIG_LOG_PRINTK=y
CONFIG_EARLY_CONSOLE=y
Loading
Loading