Skip to content

Commit

Permalink
lmdk: add dummy loadable smart amp support
Browse files Browse the repository at this point in the history
It will be built will __SOF_MODULE_SERVICE_BUILD__ enabled

Signed-off-by: Rander Wang <rander.wang@intel.com>
  • Loading branch information
RanderWang authored and abonislawski committed Dec 15, 2023
1 parent 4aafb68 commit 6d3061c
Show file tree
Hide file tree
Showing 7 changed files with 215 additions and 61 deletions.
2 changes: 1 addition & 1 deletion lmdk/cmake/ldscripts/data_linker_script.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ SECTIONS {
_data_end = ABSOLUTE(.);
} >HPSRAM_seg : data_phdr

.rodata : {
.rodata : ALIGN(4096) {
_rodata_start = ABSOLUTE(.);
*(.gnu.linkonce.r.*)
*(.rodata)
Expand Down
25 changes: 25 additions & 0 deletions lmdk/libraries/smart_amp_test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
79 changes: 79 additions & 0 deletions lmdk/libraries/smart_amp_test/smart_amp_test.toml
Original file line number Diff line number Diff line change
@@ -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]
13 changes: 13 additions & 0 deletions lmdk/modules/smart_amp_test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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")
3 changes: 2 additions & 1 deletion src/include/ipc4/base-config.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@

#ifndef __SOF_IPC4_BASE_CONFIG_H__
#define __SOF_IPC4_BASE_CONFIG_H__

#ifndef __SOF_MODULE_SERVICE_BUILD__
#include <sof/compiler_attributes.h>
#endif
#include <module/ipc4/base-config.h>

struct sof_ipc_stream_params;
Expand Down
16 changes: 14 additions & 2 deletions src/include/sof/samples/audio/smart_amp_test.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
#ifndef __SOF_AUDIO_SMART_AMP_H__
#define __SOF_AUDIO_SMART_AMP_H__

#ifndef __SOF_MODULE_SERVICE_BUILD__
#include <sof/audio/component.h>
#include <sof/audio/data_blob.h>
#endif

#if CONFIG_IPC_MAJOR_4
#include <ipc4/base-config.h>
Expand All @@ -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;
Expand Down Expand Up @@ -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
Expand Down
Loading

0 comments on commit 6d3061c

Please sign in to comment.