Skip to content

Commit

Permalink
topology1: amd: topology support for soundwire
Browse files Browse the repository at this point in the history
topology support for soundwire

Signed-off-by: maruthi machani <maruthi.machani@amd.corp-partner.google.com>
  • Loading branch information
maruthi machani authored and kv2019i committed Nov 15, 2023
1 parent 9dad60d commit 8862f88
Show file tree
Hide file tree
Showing 5 changed files with 167 additions and 1 deletion.
1 change: 1 addition & 0 deletions tools/topology/topology1/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ set(TPLGS
"sof-acp-rmb\;sof-rmb-rt5682s-rt1019"
"sof-acp-rmb\;sof-rmb-nau8825-max98360"
"sof-acp_6_3\;sof-acp_6_3"
"sof-acp_6_3_sdw\;sof-acp_6_3-rt715-rt711-rt1316"
)

# This empty 'production/' source subdirectory exists only to create the
Expand Down
2 changes: 1 addition & 1 deletion tools/topology/topology1/m4/dai.m4
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ define(`DO_DAI_CONFIG',
`'
` id "'$3`"'
`'
` ifelse($1, `SSP', $5, $1, `HDA', $5, $1, `ALH', $5, $1, `ESAI', $5, $1, `SAI', $5, $1, `MICFIL', $5, $1, `AFE', $5, $1, `ACP', $5, $1, `ACPSP', $5, $1,`ACPSP_VIRTUAL', $5, $1, `ACPHS', $5, $1, `ACPHS_VIRTUAL', $5, $1, `ACPDMIC', $5, `}')'
` ifelse($1, `SSP', $5, $1, `HDA', $5, $1, `ALH', $5, $1, `ESAI', $5, $1, `SAI', $5, $1, `MICFIL', $5, $1, `AFE', $5, $1, `ACP', $5, $1, `ACPSP', $5, $1,`ACPSP_VIRTUAL', $5, $1, `ACPHS', $5, $1, `ACPHS_VIRTUAL', $5, $1, `ACP_SDW', $5, $1, `ACPDMIC', $5, `}')'
`ifelse($1, `DMIC', $5, `')'
`SectionVendorTuples."'N_DAI_CONFIG($1$2)`_tuples_common" {'
` tokens "sof_dai_tokens"'
Expand Down
24 changes: 24 additions & 0 deletions tools/topology/topology1/platform/common/acp-sdw.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
divert(-1)

dnl ACP_SDW related macros

dnl ACP_CONFIG(format, mclk, bclk, fsync, tdm, sdw_config_data)
define(`ACP_SDW_CONFIG',
`}'
$1
)
dnl ACP_SDW_CONFIG_DATA(type, idx, rate, channel)
define(`ACP_SDW_CONFIG_DATA',
`SectionVendorTuples."'N_DAI_CONFIG($1$2)`_tuples" {'
` tokens "sof_acp_sdw_tokens"'
` tuples."word" {'
` SOF_TKN_AMD_ACP_SDW_SAMPLERATE' STR($3)
` SOF_TKN_AMD_ACP_SDW_CH' STR($4)
` }'
`}'
`SectionData."'N_DAI_CONFIG($1$2)`_data" {'
` tuples "'N_DAI_CONFIG($1$2)`_tuples"'
`}'
)

divert(0)dnl
136 changes: 136 additions & 0 deletions tools/topology/topology1/sof-acp_6_3_sdw.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
#Required Topology for RTK Monolithic Aggregated with ACP DMIC Card
# PCM Description DAI LINK DAI BE
# 0       HS Playback 0 SDW0-PIN0-Playback-SimpleJack       AUDIO_TX
# 1       HS Capture 1 SDW0-PIN3-Capture-SimpleJack    AUDIO_RX
# 2       Speaker playback 2 SDW0-PIN1-Playback-SmartAmp    BT_TX
# 4       SDW DMIC 4 SDW1-PIN1-Capture-SmartMic    P1_SW_BT RX
#
# Topology for Phoenix with soundwire and DMIC.
#

#
# Define the pipelines
#
# PCM0 ----> buffer ----> AUDIO_TX
# PCM1 <---- buffer <---- AUDIO_RX
# PCM2 ----> buffer ----> BT_TX
# PCM4 <---- buffer <---- P1_SW_BT RX

# Include topology builder
include(`utils.m4')
include(`dai.m4')
include(`pipeline.m4')
include(`acp-sdw.m4')
include(`acp-dmic.m4')

# Include TLV library
include(`common/tlv.m4')

# Include Token library
include(`sof/tokens.m4')

# Include ACP DSP configuration
include(`platform/amd/acp.m4')

#/**********************************************************************************/
# PCM 0, HS Playback, DAI link id 0, Dai index 0(Audio_Tx), BE SW0-PIN0-PLAYBACK

#Driver dai index and dai BE
#DAI Index(Instance * 64 + base_index) DAI_BE
#0(AUDIO_TX) SDW0-PIN0-PLAYBACK-SimpleJack
#1(BT_TX) SDW0-PIN1-PLAYBACK-SmartAmp
#2(HS_TX) SDW0-PIN2-PLAYBACK
#3(AUDIO_RX) SDW0-PIN3-CAPTURE-SimpleJack
#4(BT_RX) SDW0-PIN4-CAPTURE-SmartAmp
#5(HS_RX) SDW0-PIN5-CAPTURE
#
#65(P1_BT_TX) SDW1-PIN1-PLAYBACK
#68(P1_BT_RX) SDW1-PIN1-CAPTURE-SmartMic

define(DI_SDW0_ACP_SW_Audio_TX, 0)
define(DI_SDW0_ACP_SW_BT_TX, 1)
define(DI_SDW0_ACP_SW_HS_TX, 2)
define(DI_SDW0_ACP_SW_Audio_RX, 3)
define(DI_SDW0_ACP_SW_BT_RX, 4)
define(DI_SDW0_ACP_SW_HS_RX, 5)
define(DI_SDW1_ACP_P1_SW_BT_RX, 68)
define(DI_SDW1_ACP_P1_SW_BT_TX, 65)

define(DAI_BE_SDW0_ACP_SW_HS_RX, SDW0-PIN5-CAPTURE)
define(DAI_BE_SDW0_ACP_SW_HS_TX, SDW0-PIN2-PLAYBACK)
define(DAI_BE_SDW1_ACP_P1_SW_BT_RX, SDW1-PIN1-CAPTURE-SmartMic)
define(DAI_BE_SDW1_ACP_P1_SW_BT_TX, SDW1-PIN1-PLAYBACK)
define(DAI_BE_ACP_SW_Audio_RX, SDW0-PIN3-CAPTURE-SimpleJack)
define(DAI_BE_SDW0_ACP_SW_Audio_TX, SDW0-PIN0-PLAYBACK-SimpleJack)
define(DAI_BE_SDW0_ACP_SW_BT_RX, SDW0-PIN4-CAPTURE-SmartAmp)
define(DAI_BE_SDW0_ACP_SW_BT_TX, SDW0-PIN1-PLAYBACK-SmartAmp)

#pipeline: name of the predefined pipeline
#pipe id: pipeline ID. This should be a unique ID identifying the pipeline
#pcm: PCM ID. This will be used to bind to the correct front end DAI link
PIPELINE_PCM_ADD(sof/pipe-passthrough-playback.m4,
0, 0, 2, s16le,
2000, 0, 0,
48000, 48000, 48000)

#DAI_ADD(pipeline, pipe id, dai type, firmware dai_index, dai_be, buffer)
DAI_ADD(sof/pipe-dai-playback.m4, 0, ACP_SDW, DI_SDW0_ACP_SW_Audio_TX, DAI_BE_SDW0_ACP_SW_Audio_TX,
PIPELINE_SOURCE_0, 2, s16le, 2000, 0, 0, SCHEDULE_TIME_DOMAIN_DMA)

#DAI_CONFIG(type, driver dai_index, link_id, Dai BE name, config)
DAI_CONFIG(ACP_SDW, DI_SDW0_ACP_SW_Audio_TX, 0, DAI_BE_SDW0_ACP_SW_Audio_TX,
ACP_SDW_CONFIG(ACP_SDW_CONFIG_DATA(ACP_SDW, DI_SDW0_ACP_SW_Audio_TX, 48000, 2)))
PCM_PLAYBACK_ADD(ACP-SW0-PIN0-Playback-HS, 0, PIPELINE_PCM_0)
#/**********************************************************************************/


#/**********************************************************************************/
#PCM 1, HS Capture, DAI link id 1, Dai index 3(Audio_RX), BE SW0-PIN0-CAPTURE
# Capture pipeline 1 on PCM 1 using max 2 channels of s16le.
PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4,
1, 1, 2, s16le,
2000, 0, 0,
48000, 48000, 48000)

# Capture DAI is ACP soundwire using 2 periods
DAI_ADD(sof/pipe-dai-capture.m4, 1, ACP_SDW, DI_SDW0_ACP_SW_Audio_RX, DAI_BE_ACP_SW_Audio_RX,
PIPELINE_SINK_1, 2, s16le, 2000, 0, 0, SCHEDULE_TIME_DOMAIN_DMA)

DAI_CONFIG(ACP_SDW, DI_SDW0_ACP_SW_Audio_RX, 1, DAI_BE_ACP_SW_Audio_RX,
ACP_SDW_CONFIG(ACP_SDW_CONFIG_DATA(ACP_SDW, DI_SDW0_ACP_SW_Audio_RX, 48000, 2)))
PCM_CAPTURE_ADD(ACP-SW0-PIN0-Capture-HS, 1, PIPELINE_PCM_1)
#/**********************************************************************************/

#/**********************************************************************************/
#PCM 2, Speaker Playback, DAI link id 2, Dai index 1(BT_TX), BE SW0-PIN1-PLAYBACK
PIPELINE_PCM_ADD(sof/pipe-passthrough-playback.m4,
2, 2, 2, s16le,
2000, 0, 0,
48000, 48000, 48000)

# playback DAI is ACP soundwire using 2 periods
DAI_ADD(sof/pipe-dai-playback.m4, 2, ACP_SDW, DI_SDW0_ACP_SW_BT_TX, DAI_BE_SDW0_ACP_SW_BT_TX,
PIPELINE_SOURCE_2, 2, s16le, 2000, 0, 0, SCHEDULE_TIME_DOMAIN_DMA)

DAI_CONFIG(ACP_SDW, DI_SDW0_ACP_SW_BT_TX, 2, DAI_BE_SDW0_ACP_SW_BT_TX,
ACP_SDW_CONFIG(ACP_SDW_CONFIG_DATA(ACP_SDW, DI_SDW0_ACP_SW_BT_TX, 48000, 2)))
PCM_PLAYBACK_ADD(ACP-SW0-PIN2-Playback-SPK, 2, PIPELINE_PCM_2)
#/**********************************************************************************/

#/**********************************************************************************/
#PCM 4, SDW Capture, DAI link id 4, Dai index 68(P1_BT_RX), BE SW1-PIN1-CAPTURE
# Capture pipeline 1 on PCM 1 using max 2 channels of s16le.
PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4,
4, 4, 2, s16le,
2000, 0, 0,
48000, 48000, 48000)

# Capture DAI is ACP soundwire using 2 periods
DAI_ADD(sof/pipe-dai-capture.m4, 4, ACP_SDW, DI_SDW1_ACP_P1_SW_BT_RX, DAI_BE_SDW1_ACP_P1_SW_BT_RX,
PIPELINE_SINK_4, 2, s16le, 2000, 0, 0, SCHEDULE_TIME_DOMAIN_DMA)

DAI_CONFIG(ACP_SDW, DI_SDW1_ACP_P1_SW_BT_RX, 4, DAI_BE_SDW1_ACP_P1_SW_BT_RX,
ACP_SDW_CONFIG(ACP_SDW_CONFIG_DATA(ACP_SDW, DI_SDW1_ACP_P1_SW_BT_RX, 48000, 2)))
PCM_CAPTURE_ADD(ACP-SW1-PIN1-CAPTURE-DMIC, 4, PIPELINE_PCM_4)
#/**********************************************************************************/

5 changes: 5 additions & 0 deletions tools/topology/topology1/sof/tokens.m4
Original file line number Diff line number Diff line change
Expand Up @@ -152,3 +152,8 @@ SectionVendorTokens."sof_micfil_tokens" {
SOF_TKN_IMX_MICFIL_RATE "2000"
SOF_TKN_IMX_MICFIL_CH "2001"
}

SectionVendorTokens."sof_acp_sdw_tokens" {
SOF_TKN_AMD_ACP_SDW_SAMPLERATE "2100"
SOF_TKN_AMD_ACP_SDW_CH "2101"
}

0 comments on commit 8862f88

Please sign in to comment.