diff --git a/audioreach/audioreach.m4 b/audioreach/audioreach.m4 index cbe8c42..35e3219 100644 --- a/audioreach/audioreach.m4 +++ b/audioreach/audioreach.m4 @@ -57,6 +57,8 @@ define(`LPAIF_INTF_TYPE_RXTX', `1') dnl define(`LPAIF_INTF_TYPE_WSA',`2') dnl define(`LPAIF_INTF_TYPE_VA', `3') dnl define(`LPAIF_INTF_TYPE_AXI', `4') dnl +define(`LPAIF_INTF_TYPE_AUD', `5') dnl +define(`LPAIF_INTF_TYPE_SDR', `6') dnl define(`I2S_INTF_TYPE_PRIMARY', `0') dnl define(`I2S_INTF_TYPE_SECONDARY', `1') dnl define(`I2S_INTF_TYPE_TERTIARY', `2') dnl diff --git a/audioreach/module_i2s.m4 b/audioreach/module_i2s.m4 index f144145..ada942d 100644 --- a/audioreach/module_i2s.m4 +++ b/audioreach/module_i2s.m4 @@ -40,3 +40,43 @@ define(`AR_MODULE_I2S_RX', ` "NAME_PREFIX.i2s_rx$1_data"' ` ]' `}') dnl +dnl +dnl AR_MODULE_I2S_TX(index, sgidx, container-idx, iid, maxip-ports, max-op-ports, src-port, dst-port, +dnl hw-if-type, hw-if-idx, fmt, sd-line-idx, dev-name, dst-iid) +define(`AR_MODULE_I2S_TX', +`' +`SectionVendorTuples."NAME_PREFIX.i2s_tx$1_tuples" {' +` tokens "audioreach_tokens"' +`' +` tuples."word.u32_data" {' +` AR_TKN_U32_MODULE_INSTANCE_ID STR($4)' +` AR_TKN_U32_MODULE_ID STR(MODULE_ID_I2S_SOURCE)' +` AR_TKN_U32_MODULE_MAX_IP_PORTS STR($5)' +` AR_TKN_U32_MODULE_MAX_OP_PORTS STR($6)' +` AR_TKN_U32_MODULE_SRC_OP_PORT_ID STR($7)' +` AR_TKN_U32_MODULE_DST_IN_PORT_ID STR($8)' +` AR_TKN_U32_MODULE_SRC_INSTANCE_ID STR($4)' +` AR_TKN_U32_MODULE_DST_INSTANCE_ID STR($14)' +` AR_TKN_U32_MODULE_HW_IF_TYPE STR($9)' +` AR_TKN_U32_MODULE_HW_IF_IDX STR($10)' +` AR_TKN_U32_MODULE_FMT_DATA STR($11)' +` AR_TKN_U32_MODULE_SD_LINE_IDX STR($12)' +` }' +`}' +`' +`SectionData."NAME_PREFIX.i2s_tx$1_data" {' +` tuples "NAME_PREFIX.i2s_tx$1_tuples"' +`}' +`' +`SectionWidget."NAME_PREFIX.i2s_tx$1" {' +` index STR($1)' +` type "aif_out"' +` no_pm "true"' +` stream_name "$15 MI2S Capture"' +` subseq "10"' +` data [' +` "NAME_PREFIX.sub_graph$2_data"' +` "NAME_PREFIX.container$3_data"' +` "NAME_PREFIX.i2s_tx$1_data"' +` ]' +`}') dnl diff --git a/audioreach/subgraph-device-i2s-capture.m4 b/audioreach/subgraph-device-i2s-capture.m4 new file mode 100644 index 0000000..33e6d20 --- /dev/null +++ b/audioreach/subgraph-device-i2s-capture.m4 @@ -0,0 +1,66 @@ +# Copyright, Linaro Ltd, 2023 +# SPDX-License-Identifier: BSD-3-Clause +include(`audioreach/audioreach.m4') dnl +include(`util/pcm.m4') dnl +include(`audioreach/subgraph.m4') dnl +include(`audioreach/container.m4') dnl +include(`audioreach/module_log.m4') dnl +include(`audioreach/module_i2s.m4') dnl +include(`util/mixer.m4') dnl +dnl +# +# SubGraph for Device Backend +# +# ___________________________ +# | Sub Graph | +# [KControl]->| [DEVICE-TX] <- [LOGGER] | +# Switch |__________________________| +undefine(`I2S_MODULE_IID') dnl +undefine(`LOG_MODULE_IID') dnl +undefine(`SG_INDEX') dnl +undefine(`CONTAINER_INDEX') dnl +undefine(`MOD_INDEX') dnl + +undefine(`DEVICE_PERF_MODE') dnl +undefine(`DEVICE_DIRECTION') dnl +undefine(`CONT_SENARIO_ID') dnl +undefine(`CONT_CAP') dnl +undefine(`CONT_POSITION') dnl +undefine(`DEVICE_DOMAIN_ID') dnl +undefine(`CONT_STACK_SIZE') dnl +define(`DEVICE_PERF_MODE', APM_SG_PERF_MODE_LOW_LATENCY) dnl' +define(`DEVICE_DIRECTION', APM_SUB_GRAPH_DIRECTION_TX) dnl' +define(`CONT_SENARIO_ID', APM_SUB_GRAPH_SID_AUDIO_RECORD) dnl' +define(`CONT_CAP', `ifelse(LPASS_VER_COMPAT, 110000, APM_CONTAINER_TYPE_ID_GC, APM_CONTAINER_CAP_ID_EP)') dnl' +define(`CONT_POSITION', APM_CONT_GRAPH_POS_GLOBAL_DEV)dnl' +define(`DEVICE_DOMAIN_ID', APM_PROC_DOMAIN_ID_ADSP) dnl' +define(`CONT_STACK_SIZE', 8192) dnl' + +define(`I2S_MODULE_IID', MOD_IID_START) dnl +define(`LOG_MODULE_IID', eval(MOD_IID_START + 1)) dnl +define(`SG_INDEX', 1) dnl +define(`CONTAINER_INDEX', 1) dnl +define(`MOD_INDEX', 1) dnl +dnl +dnl DEVICE_CAPTURE_ROUTE(stream-index, dai-id) +define(`DEVICE_CAPTURE_ROUTE', +`' +`SectionGraph."NAME_PREFIX.$1 $2 Graph" {' +` index STR($1)' +` lines [' +` "NAME_PREFIX.i2s_tx$1, , $2 MI2S Capture"' +` "NAME_PREFIX.logger$1, , NAME_PREFIX.i2s_tx$1"' +` ]' +`}') + +AR_SUBGRAPH(SG_INDEX, DEVICE_DAI_ID, SG_IID_START, DEVICE_PERF_MODE, DEVICE_DIRECTION, CONT_SENARIO_ID) + +AR_CONTAINER(CONTAINER_INDEX, CONT_IID_START, CONT_CAP, CONT_STACK_SIZE, CONT_POSITION, DEVICE_DOMAIN_ID) + + +AR_MODULE_I2S_TX(MOD_INDEX, SG_INDEX, CONTAINER_INDEX,I2S_MODULE_IID, 0, 1, 1, 2, DEVICE_INTF_TYPE, DEVICE_INTF_INDEX, DEVICE_DATA_FORMAT, DEVICE_SD_LINE_IDX, `DEVICE_NAME', LOG_MODULE_IID) + +AR_MODULE_LOG( MOD_INDEX, SG_INDEX, CONTAINER_INDEX, LOG_MODULE_IID, 1, 1, 1, 2, 0x000019ab, 1, 0, NONE_IID) +dnl kcontrol switch +DEVICE_CAPTURE_MIXER(SG_INDEX, `MIXER_PREFIX') +DEVICE_CAPTURE_ROUTE(MOD_INDEX, `DEVICE_NAME')