From 68c63571fd6829a57814e25f5d5f73ba601a977e Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Fri, 8 Dec 2023 13:38:29 +0800 Subject: [PATCH] lmdk: add dummy loadable smart amp support It will be built will __SOF_MODULE_SERVICE_BUILD__ enabled Signed-off-by: Rander Wang --- lmdk/cmake/ldscripts/data_linker_script.txt | 2 +- lmdk/libraries/smart_amp_test/CMakeLists.txt | 25 ++++ .../smart_amp_test/smart_amp_test.toml | 79 ++++++++++ lmdk/modules/smart_amp_test/CMakeLists.txt | 13 ++ src/include/ipc4/base-config.h | 3 +- .../sof/samples/audio/smart_amp_test.h | 16 +- src/samples/audio/smart_amp_test_ipc4.c | 138 ++++++++++-------- 7 files changed, 215 insertions(+), 61 deletions(-) create mode 100644 lmdk/libraries/smart_amp_test/CMakeLists.txt create mode 100644 lmdk/libraries/smart_amp_test/smart_amp_test.toml create mode 100644 lmdk/modules/smart_amp_test/CMakeLists.txt diff --git a/lmdk/cmake/ldscripts/data_linker_script.txt b/lmdk/cmake/ldscripts/data_linker_script.txt index cbdf8001c0be..63eed21cb07a 100644 --- a/lmdk/cmake/ldscripts/data_linker_script.txt +++ b/lmdk/cmake/ldscripts/data_linker_script.txt @@ -15,7 +15,7 @@ SECTIONS { _data_end = ABSOLUTE(.); } >HPSRAM_seg : data_phdr - .rodata : { + .rodata : ALIGN(4096) { _rodata_start = ABSOLUTE(.); *(.gnu.linkonce.r.*) *(.rodata) diff --git a/lmdk/libraries/smart_amp_test/CMakeLists.txt b/lmdk/libraries/smart_amp_test/CMakeLists.txt new file mode 100644 index 000000000000..0282a83bbf90 --- /dev/null +++ b/lmdk/libraries/smart_amp_test/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.20) +set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_LIST_DIR}/../../cmake/xtensa-toolchain.cmake") + +project(smart_amp_test) + +macro(is_zephyr ret) + if(CONFIG_ZEPHYR_SOF_MODULE) + set(${ret} TRUE) + else() + set(${ret} FALSE) + endif() +endmacro() + +# list of modules to be built and included into this loadable library +set(MODULES_LIST smart_amp_test) + +# toml file for rimage to generate manifets +set(TOML "${CMAKE_CURRENT_LIST_DIR}/smart_amp_test.toml") + +# TODO: Move it somewhere??? +add_definitions(-DMAJOR_IADSP_API_VERSION=5) +add_definitions(-DMIDDLE_IADSP_API_VERSION=0) +add_definitions(-DMINOR_IADSP_API_VERSION=0) + +include(../../cmake/build.cmake) diff --git a/lmdk/libraries/smart_amp_test/smart_amp_test.toml b/lmdk/libraries/smart_amp_test/smart_amp_test.toml new file mode 100644 index 000000000000..34f3463343dd --- /dev/null +++ b/lmdk/libraries/smart_amp_test/smart_amp_test.toml @@ -0,0 +1,79 @@ +version = [3, 0] + +[adsp] +name = "mtl" +image_size = "0x2C0000" # (22) bank * 128KB +alias_mask = "0xE0000000" + +[[adsp.mem_zone]] +type = "ROM" +base = "0x1FF80000" +size = "0x400" +[[adsp.mem_zone]] +type = "IMR" +base = "0xA104A000" +size = "0x2000" +[[adsp.mem_zone]] +type = "SRAM" +base = "0xa00f0000" +size = "0x100000" + +[[adsp.mem_alias]] +type = "uncached" +base = "0x40000000" +[[adsp.mem_alias]] +type = "cached" +base = "0xA0000000" + +[cse] +partition_name = "ADSP" +[[cse.entry]] +name = "ADSP.man" +offset = "0x5c" +length = "0x464" +[[cse.entry]] +name = "ADSP.met" +offset = "0x4c0" +length = "0x70" +[[cse.entry]] +name = "ADSP" +offset = "0x540" +length = "0x0" # calculated by rimage + +[css] + +[signed_pkg] +name = "ADSP" +[[signed_pkg.module]] +name = "ADSP.met" + +[adsp_file] +[[adsp_file.comp]] +base_offset = "0x2000" + +[fw_desc.header] +name = "ADSPFW" +load_offset = "0x40000" + +[module] +count = 1 + + [[module.entry]] + name = "SMATEST" + uuid = "167A961E-8AE4-11EA-89F1-000C29CE1635" + affinity_mask = "0x1" + instance_count = "1" + domain_types = "0" + load_type = "0" + init_config = "1" + module_type = "0xD" + auto_start = "0" + sched_caps = [1, 0x00008000] + + # pin = [dir, type, sample rate, size, container, channel-cfg] + pin = [0, 0, 0xfeef, 0xf, 0xa, 0x45ff, + 0, 0, 0xfeef, 0xf, 0xa, 0x45ff, + 1, 0, 0xfeef, 0xf, 0xa, 0x45ff] + + # mod_cfg [PAR_0 PAR_1 PAR_2 PAR_3 IS_BYTES CPS IBS OBS MOD_FLAGS CPC OBLS] + mod_cfg = [0, 0, 0, 0, 4096, 1000000, 128, 128, 0, 0, 0] diff --git a/lmdk/modules/smart_amp_test/CMakeLists.txt b/lmdk/modules/smart_amp_test/CMakeLists.txt new file mode 100644 index 000000000000..37fcdb87108b --- /dev/null +++ b/lmdk/modules/smart_amp_test/CMakeLists.txt @@ -0,0 +1,13 @@ +target_sources(smart_amp_test PRIVATE ${SOF_BASE}/src/samples/audio/smart_amp_test_ipc4.c) + +set_target_properties(smart_amp_test PROPERTIES + HPSRAM_ADDR "0xa06c1000" +) + +target_compile_definitions(smart_amp_test PRIVATE + __SOF_MODULE_SERVICE_BUILD__=1 + CONFIG_XTENSA=1 + CONFIG_IPC_MAJOR_4=1 +) + +target_include_directories(smart_amp_test PRIVATE "${SOF_BASE}/src/include") diff --git a/src/include/ipc4/base-config.h b/src/include/ipc4/base-config.h index b95ecbd3e1f9..07a35a47e9aa 100644 --- a/src/include/ipc4/base-config.h +++ b/src/include/ipc4/base-config.h @@ -23,8 +23,9 @@ #ifndef __SOF_IPC4_BASE_CONFIG_H__ #define __SOF_IPC4_BASE_CONFIG_H__ - +#ifndef __SOF_MODULE_SERVICE_BUILD__ #include +#endif #include struct sof_ipc_stream_params; diff --git a/src/include/sof/samples/audio/smart_amp_test.h b/src/include/sof/samples/audio/smart_amp_test.h index 3feda5005125..c5ddd8032d99 100644 --- a/src/include/sof/samples/audio/smart_amp_test.h +++ b/src/include/sof/samples/audio/smart_amp_test.h @@ -8,8 +8,10 @@ #ifndef __SOF_AUDIO_SMART_AMP_H__ #define __SOF_AUDIO_SMART_AMP_H__ +#ifndef __SOF_MODULE_SERVICE_BUILD__ #include #include +#endif #if CONFIG_IPC_MAJOR_4 #include @@ -19,10 +21,20 @@ #define SMART_AMP_MAX_STREAM_CHAN 8 +/* Max channels for all intel platforms are 8 */ +#define MAX_CHANNELS 8 + /** IPC blob types */ #define SOF_SMART_AMP_CONFIG 0 #define SOF_SMART_AMP_MODEL 1 +#ifdef __SOF_MODULE_SERVICE_BUILD__ +#define LOG_ERR(...) +#define LOG_WRN(...) +#define LOG_DBG(...) +#define LOG_INF(...) +#endif + struct smart_amp_model_data { uint32_t data_size; void *data; @@ -83,8 +95,8 @@ struct smart_amp_model_data { struct sof_smart_amp_config { uint32_t size; uint32_t feedback_channels; - int8_t source_ch_map[PLATFORM_MAX_CHANNELS]; - int8_t feedback_ch_map[PLATFORM_MAX_CHANNELS]; + int8_t source_ch_map[MAX_CHANNELS]; + int8_t feedback_ch_map[MAX_CHANNELS]; }; #if CONFIG_IPC_MAJOR_4 diff --git a/src/samples/audio/smart_amp_test_ipc4.c b/src/samples/audio/smart_amp_test_ipc4.c index 5395f1a6ef08..f6ffd6dae115 100644 --- a/src/samples/audio/smart_amp_test_ipc4.c +++ b/src/samples/audio/smart_amp_test_ipc4.c @@ -3,8 +3,9 @@ // Copyright(c) 2020 Intel Corporation. All rights reserved. // // Author: Bartosz Kokoszko + +#ifndef __SOF_MODULE_SERVICE_BUILD__ #include -#include #include #include #include @@ -18,6 +19,7 @@ #include LOG_MODULE_REGISTER(smart_amp_test, CONFIG_SOF_LOG_LEVEL); +#include /* 167a961e-8ae4-11ea-89f1-000c29ce1635 */ DECLARE_SOF_RT_UUID("smart_amp-test", smart_amp_test_comp_uuid, 0x167a961e, 0x8ae4, @@ -25,6 +27,22 @@ DECLARE_SOF_RT_UUID("smart_amp-test", smart_amp_test_comp_uuid, 0x167a961e, 0x8a DECLARE_TR_CTX(smart_amp_test_comp_tr, SOF_UUID(smart_amp_test_comp_uuid), LOG_LEVEL_INFO); +#else +#include +#include +#include + +#include +#include +#include +#include +#include +#include