Skip to content
Merged
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
3 changes: 2 additions & 1 deletion tools/topology/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ set(TPLGS
"sof-apl-rt298\;sof-apl-rt298"
"sof-apl-wm8804\;sof-apl-wm8804"
"sof-apl-da7219\;sof-apl-da7219"
"sof-glk-da7219-kwd\;sof-glk-da7219-kwd"
"sof-glk-da7219-kwd\;sof-glk-da7219-kwd\;-DPLATFORM=glk"
"sof-glk-da7219-kwd\;sof-cml-da7219-max98357a\;-DPLATFORM=cml"
"sof-glk-da7219\;sof-glk-da7219"
"sof-glk-da7219\;sof-glk-eq-da7219\;-DDMICPROC=eq-iir-volume"
"sof-glk-rt5682\;sof-glk-rt5682"
Expand Down
46 changes: 46 additions & 0 deletions tools/topology/platform/intel/bxt.m4
Original file line number Diff line number Diff line change
@@ -1,6 +1,52 @@
#
# Broxton differentiation for pipelines and components
#
include(`platform/intel/dmic.m4')

undefine(`SSP_MCLK_RATE')
define(`SSP_MCLK_RATE', `19200000')

undefine(`SSP1_BCLK')
define(`SSP1_BCLK', `1536000')

undefine(`SSP_BCLK')
define(`SSP_BCLK', `1920000')

undefine(`SSP_FSYNC')
define(`SSP_FSYNC', `48000')

define(`DMIC_PIPE_CAPTURE', `sof/pipe-volume-capture.m4')

define(`PIPE_VOLUME_PLAYBACK', `sof/pipe-volume-playback.m4')

undefine(`DMIC01_FMT')
define(`DMIC01_FMT', `s16le')

undefine(`DMIC1_FMT')
define(`DMIC1_FMT', `s16le')

define(`SSP1_VALID_BITS_STR', `s16le')

undefine(`HDMI0_INDEX')
define(`HDMI0_INDEX', `3')

undefine(`HDMI1_INDEX')
define(`HDMI1_INDEX', `4')

undefine(`HDMI2_INDEX')
define(`HDMI2_INDEX', `5')

undefine(`SSP_BITS_WIDTH')
define(`SSP_BITS_WIDTH', `20')

undefine(`SSP1_VALID_BITS')
define(`SSP1_VALID_BITS', `16')

undefine(`SSP_VALID_BITS')
define(`SSP_VALID_BITS', `16')

undefine(`MCLK_ID')
define(`MCLK_ID', `1')

include(`memory.m4')

Expand Down
17 changes: 17 additions & 0 deletions tools/topology/platform/intel/cml-da7219.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
include(`platform/intel/cml.m4')

#SSP/DMIC machine specific settings on CML platform
undefine(`SSP_INDEX')
define(`SSP_INDEX', 0)

undefine(`SSP_NAME')
define(`SSP_NAME', `SSP0-Codec')

undefine(`DMIC_PCM_NUM')
define(`DMIC_PCM_NUM', `2')

undefine(`UNUSED_SSP_ROUTE1')
define(`UNUSED_SSP_ROUTE1', `ssp5')

undefine(`UNUSED_SSP_ROUTE2')
define(`UNUSED_SSP_ROUTE2', `ssp1')
36 changes: 36 additions & 0 deletions tools/topology/platform/intel/cml.m4
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
include(`platform/intel/cnl.m4')
include(`abi.h')

#SSP setting for CML platform
undefine(`SSP_INDEX')
Expand Down Expand Up @@ -65,3 +66,38 @@ define(`SSP1_FSYNC', `46875')
define(`SET_SSP1_CONFIG_DATA', `SSP, 1, 24')')

include(`platform/intel/dmic.m4')

# Note: this is for sof-cml-da7219-max98357a.m4
# include the SSP1 settings and common SSP settings additionally

define(`DMIC_PIPE_CAPTURE', `sof/pipe-passthrough-capture.m4')

undefine(`DMIC01_FMT')
define(`DMIC01_FMT', `s32le')

undefine(`DMIC1_FMT')
define(`DMIC1_FMT', `s24le')

undefine(`HDMI0_INDEX')
define(`HDMI0_INDEX', `0')

undefine(`HDMI1_INDEX')
define(`HDMI1_INDEX', `1')

undefine(`HDMI2_INDEX')
define(`HDMI2_INDEX', `2')

undefine(`SSP_BCLK')
define(`SSP_BCLK', `2400000')

undefine(`SSP_FSYNC', `48000')
define(`SSP_FSYNC', `48000')

undefine(`SSP_BITS_WIDTH')
define(`SSP_BITS_WIDTH', `25')

undefine(`SSP_VALID_BITS')
define(`SSP_VALID_BITS', `16')

undefine(`MCLK_ID')
define(`MCLK_ID', `')
17 changes: 17 additions & 0 deletions tools/topology/platform/intel/glk-da7219.m4
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
include(`platform/intel/bxt.m4')

# SSP/DMIC machine specific settings on GLK platform
undefine(`SSP_INDEX')
define(`SSP_INDEX', 2)

undefine(`SSP_NAME')
define(`SSP_NAME', `SSP2-Codec')

undefine(`DMIC_PCM_NUM')
define(`DMIC_PCM_NUM', `99')

undefine(`UNUSED_SSP_ROUTE1')
define(`UNUSED_SSP_ROUTE1', `ssp1')

undefine(`UNUSED_SSP_ROUTE2')
define(`UNUSED_SSP_ROUTE2', `ssp2')
92 changes: 46 additions & 46 deletions tools/topology/sof-glk-da7219-kwd.m4
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#
# Topology for GeminiLake with Dialog7219.
ifelse(PLATFORM, `glk', `# Topology for GeminiLake with Dialog7219+Maxim98357a.', `')
ifelse(PLATFORM, `cml', `# Topology for CometLake with Dialog7219+Maxim98357a.', `')
#

# Include topology builder
Expand All @@ -14,18 +15,17 @@ include(`common/tlv.m4')
# Include Token library
include(`sof/tokens.m4')

# Include bxt DSP configuration
include(`platform/intel/bxt.m4')
include(`platform/intel/dmic.m4')
# include platform specific dsp configuration and machine specific settings
include(`platform/intel/'PLATFORM`-da7219.m4')

define(KWD_PIPE_SCH_DEADLINE_US, 20000)

#
# Define the pipelines
#
# PCM0 ----> volume (pipe 1) -----> SSP1 (speaker - maxim98357a, BE link 0)
# PCM1 <---> volume (pipe 2,3) <----> SSP2 (headset - da7219, BE link 1)
# PCM99 <---- volume (pipe 4) <----- DMIC0 (dmic01 , BE link 2)
# PCM1 <---> volume (pipe 2,3) <----> SSP(SSP_INDEX) (headset - dailog7219, BE link 1)
# PCM(DMIC_PCM_NUM) <---- DMIC0 (dmic capture, BE link 2)
# PCM5 ----> volume (pipe 5) -----> iDisp1 (HDMI/DP playback, BE link 3)
# PCM6 ----> volume (pipe 6) -----> iDisp2 (HDMI/DP playback, BE link 4)
# PCM7 ----> volume (pipe 7) -----> iDisp3 (HDMI/DP playback, BE link 5)
Expand All @@ -42,7 +42,7 @@ dnl time_domain, sched_comp)

# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s32le.
# Set 1000us deadline on core 0 with priority 0
PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4,
PIPELINE_PCM_ADD(PIPE_VOLUME_PLAYBACK,
1, 0, 2, s32le,
1000, 0, 0,
48000, 48000, 48000)
Expand All @@ -63,8 +63,9 @@ PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4,

# Low Latency capture pipeline 4 on PCM 99 using max 4 channels of s32le.
# Set 1000us deadline on core 0 with priority 0
PIPELINE_PCM_ADD(sof/pipe-volume-capture.m4,
4, 99, 4, s16le,

PIPELINE_PCM_ADD(DMIC_PIPE_CAPTURE,
4, DMIC_PCM_NUM, 4, DMIC01_FMT,
1000, 0, 0,
48000, 48000, 48000)

Expand Down Expand Up @@ -102,48 +103,48 @@ dnl deadline, priority, core, time_domain)
# Buffers use s16le format, 1000us deadline on core 0 with priority 0
DAI_ADD(sof/pipe-dai-playback.m4,
1, SSP, 1, SSP1-Codec,
PIPELINE_SOURCE_1, 2, s16le,
PIPELINE_SOURCE_1, 2, SSP1_VALID_BITS_STR,
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)

# playback DAI is SSP2 using 2 periods
# playback DAI is SSP(SSP_INDEX) using 2 periods
# Buffers use s16le format, 1000us deadline on core 0 with priority 0
DAI_ADD(sof/pipe-dai-playback.m4,
2, SSP, 2, SSP2-Codec,
2, SSP, SSP_INDEX, SSP_NAME,
PIPELINE_SOURCE_2, 2, s16le,
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)

# capture DAI is SSP2 using 2 periods
# capture DAI is SSP(SSP_INDEX) using 2 periods
# Buffers use s16le format, 1000us deadline on core 0 with priority 0
DAI_ADD(sof/pipe-dai-capture.m4,
3, SSP, 2, SSP2-Codec,
3, SSP, SSP_INDEX, SSP_NAME,
PIPELINE_SINK_3, 2, s16le,
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)

# capture DAI is DMIC0 using 2 periods
# Buffers use s32le format, 1000us deadline on core 0 with priority 0
DAI_ADD(sof/pipe-dai-capture.m4,
4, DMIC, 0, dmic01,
PIPELINE_SINK_4, 2, s16le,
PIPELINE_SINK_4, 2, DMIC01_FMT,
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)

# playback DAI is iDisp1 using 2 periods
# Buffers use s32le format, 1000us deadline on core 0 with priority 0
DAI_ADD(sof/pipe-dai-playback.m4,
5, HDA, 3, iDisp1,
5, HDA, HDMI0_INDEX, iDisp1,
PIPELINE_SOURCE_5, 2, s32le,
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)

# playback DAI is iDisp2 using 2 periods
# Buffers use s32le format, 1000us deadline on core 0 with priority 0
DAI_ADD(sof/pipe-dai-playback.m4,
6, HDA, 4, iDisp2,
6, HDA, HDMI1_INDEX, iDisp2,
PIPELINE_SOURCE_6, 2, s32le,
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)

# playback DAI is iDisp3 using 2 periods
# Buffers use s32le format, 1000us deadline on core 0 with priority 0
DAI_ADD(sof/pipe-dai-playback.m4,
7, HDA, 5, iDisp3,
7, HDA, HDMI2_INDEX, iDisp3,
PIPELINE_SOURCE_7, 2, s32le,
1000, 0, 0, SCHEDULE_TIME_DOMAIN_TIMER)

Expand All @@ -154,21 +155,22 @@ DAI_ADD(sof/pipe-dai-playback.m4,
# Passthrough capture pipeline 8 on PCM 8 using max 2 channels.
# Schedule 20000us deadline on core 0 with priority 0
PIPELINE_PCM_DAI_ADD(sof/pipe-kfbm-capture.m4,
8, 8, 2, s16le,
KWD_PIPE_SCH_DEADLINE_US, 0, 0, DMIC, 1, s16le, 3,
8, 8, 2, DMIC1_FMT,
KWD_PIPE_SCH_DEADLINE_US, 0, 0, DMIC, 1, DMIC01_FMT, 3,
16000, 16000, 16000)

# capture DAI is DMIC 1 using 3 periods
# Buffers use s16le format, with 320 frame per 20000us on core 0 with priority 0
DAI_ADD(sof/pipe-dai-capture.m4,
8, DMIC, 1, dmic16k,
PIPELINE_SINK_8, 3, s16le,
PIPELINE_SINK_8, 3, DMIC01_FMT,
KWD_PIPE_SCH_DEADLINE_US, 0, 0,
SCHEDULE_TIME_DOMAIN_TIMER)


PCM_PLAYBACK_ADD(Speakers, 0, PIPELINE_PCM_1)
PCM_DUPLEX_ADD(Headset, 1, PIPELINE_PCM_2, PIPELINE_PCM_3)
PCM_CAPTURE_ADD(DMIC, 99, PIPELINE_PCM_4)
PCM_CAPTURE_ADD(DMIC, DMIC_PCM_NUM, PIPELINE_PCM_4)
PCM_PLAYBACK_ADD(HDMI1, 5, PIPELINE_PCM_5)
PCM_PLAYBACK_ADD(HDMI2, 6, PIPELINE_PCM_6)
PCM_PLAYBACK_ADD(HDMI3, 7, PIPELINE_PCM_7)
Expand All @@ -180,13 +182,13 @@ dnl period, priority, core,
dnl sched_comp, time_domain,
dnl pcm_min_rate, pcm_max_rate, pipeline_rate)
PIPELINE_ADD(sof/pipe-detect.m4,
9, 2, s16le,
9, 2, DMIC1_FMT,
KWD_PIPE_SCH_DEADLINE_US, 1, 0,
PIPELINE_SCHED_COMP_8, SCHEDULE_TIME_DOMAIN_TIMER,
16000, 16000, 16000)

# Connect pipelines together
SectionGraph."pipe-sof-glk-keyword-detect" {
SectionGraph."pipe-sof-PLATFORM-keyword-detect" {
index "0"

lines [
Expand All @@ -200,44 +202,42 @@ SectionGraph."pipe-sof-glk-keyword-detect" {
# BE configurations - overrides config in ACPI if present
#

#SSP 1 (ID: 0) with 19.2 MHz mclk with MCLK_ID 1 (unused), 1.536 MHz blck
DAI_CONFIG(SSP, 1, 0, SSP1-Codec,
SSP_CONFIG(I2S, SSP_CLOCK(mclk, 19200000, codec_mclk_in),
SSP_CLOCK(bclk, 1536000, codec_slave),
SSP_CLOCK(fsync, 48000, codec_slave),
SSP_TDM(2, 16, 3, 3),
SSP_CONFIG_DATA(SSP, 1, 16, 1)))

#SSP 2 (ID: 1) with 19.2 MHz mclk with MCLK_ID 1, 1.92 MHz bclk
DAI_CONFIG(SSP, 2, 1, SSP2-Codec,
SSP_CONFIG(I2S, SSP_CLOCK(mclk, 19200000, codec_mclk_in),
SSP_CLOCK(bclk, 1920000, codec_slave),
SSP_CLOCK(fsync, 48000, codec_slave),
SSP_TDM(2, 20, 3, 3),
SSP_CONFIG_DATA(SSP, 2, 16, 1)))
SSP_CONFIG(I2S, SSP_CLOCK(mclk, SSP_MCLK_RATE, codec_mclk_in),
SSP_CLOCK(bclk, SSP1_BCLK, codec_slave),
SSP_CLOCK(fsync, SSP_FSYNC, codec_slave),
SSP_TDM(2, SSP1_VALID_BITS, 3, 3),
SSP_CONFIG_DATA(SSP, 1, SSP1_VALID_BITS, MCLK_ID)))

DAI_CONFIG(SSP, SSP_INDEX, 1, SSP_NAME,
SSP_CONFIG(I2S, SSP_CLOCK(mclk, SSP_MCLK_RATE, codec_mclk_in),
SSP_CLOCK(bclk, SSP_BCLK, codec_slave),
SSP_CLOCK(fsync, SSP_FSYNC, codec_slave),
SSP_TDM(2, SSP_BITS_WIDTH, 3, 3),
SSP_CONFIG_DATA(SSP, SSP_INDEX, SSP_VALID_BITS, MCLK_ID)))

# dmic01 (ID: 2)
DAI_CONFIG(DMIC, 0, 2, dmic01,
DMIC_CONFIG(1, 500000, 4800000, 40, 60, 48000,
DMIC_WORD_LENGTH(s16le), 400, DMIC, 0,
DMIC_WORD_LENGTH(DMIC01_FMT), 400, DMIC, 0,
PDM_CONFIG(DMIC, 0, FOUR_CH_PDM0_PDM1)))

# 3 HDMI/DP outputs (ID: 3,4,5)
DAI_CONFIG(HDA, 3, 3, iDisp1)
DAI_CONFIG(HDA, 4, 4, iDisp2)
DAI_CONFIG(HDA, 5, 5, iDisp3)
DAI_CONFIG(HDA, HDMI0_INDEX, 3, iDisp1)
DAI_CONFIG(HDA, HDMI1_INDEX, 4, iDisp2)
DAI_CONFIG(HDA, HDMI2_INDEX, 5, iDisp3)

# dmic16k (ID: 6)
DAI_CONFIG(DMIC, 1, 6, dmic16k,
DMIC_CONFIG(1, 500000, 4800000, 40, 60, 16000,
DMIC_WORD_LENGTH(s16le), 400, DMIC, 1,
DMIC_WORD_LENGTH(DMIC01_FMT), 400, DMIC, 1,
PDM_CONFIG(DMIC, 1, STEREO_PDM0)))

## remove warnings with SST hard-coded routes

VIRTUAL_WIDGET(ssp1 Tx, out_drv, 0)
VIRTUAL_WIDGET(ssp2 Rx, out_drv, 1)
VIRTUAL_WIDGET(ssp2 Tx, out_drv, 2)
VIRTUAL_WIDGET(UNUSED_SSP_ROUTE1 Tx, out_drv, 0)
VIRTUAL_WIDGET(UNUSED_SSP_ROUTE2 Rx, out_drv, 1)
VIRTUAL_WIDGET(UNUSED_SSP_ROUTE2 Tx, out_drv, 2)
VIRTUAL_WIDGET(iDisp3 Tx, out_drv, 15)
VIRTUAL_WIDGET(iDisp2 Tx, out_drv, 16)
VIRTUAL_WIDGET(iDisp1 Tx, out_drv, 17)
Expand Down