From d72c06143e67b0f92d74bc595ec8d3ba05f2a0d6 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Wed, 6 Dec 2017 19:41:06 -0600 Subject: [PATCH] topology: add support for Dialog, Realtek and Maxim codecs Signed-off-by: Pierre-Louis Bossart --- topology/Makefile.am | 3 ++ topology/reef-byt-da7212.m4 | 99 +++++++++++++++++++++++++++++++++++ topology/reef-byt-rt5645.m4 | 99 +++++++++++++++++++++++++++++++++++ topology/reef-cht-max98090.m4 | 99 +++++++++++++++++++++++++++++++++++ 4 files changed, 300 insertions(+) create mode 100644 topology/reef-byt-da7212.m4 create mode 100644 topology/reef-byt-rt5645.m4 create mode 100644 topology/reef-cht-max98090.m4 diff --git a/topology/Makefile.am b/topology/Makefile.am index 09618c8..9d89766 100644 --- a/topology/Makefile.am +++ b/topology/Makefile.am @@ -15,13 +15,16 @@ DEPS = \ MACHINES = \ reef-cht-nocodec.tplg \ + reef-cht-max98090.tplg \ reef-apl-nocodec.tplg \ reef-bxt-nocodec.tplg \ reef-byt-nocodec.tplg \ reef-bdw-rt286.tplg \ reef-bdw-rt5640.tplg \ reef-byt-rt5640.tplg \ + reef-byt-rt5645.tplg \ reef-byt-rt5651.tplg \ + reef-byt-da7212.tplg \ reef-hsw-rt5640.tplg \ test-passthrough-24bit-48k-ssp2.tplg \ test-passthrough-24bit-48k-vol-ssp2.tplg \ diff --git a/topology/reef-byt-da7212.m4 b/topology/reef-byt-da7212.m4 new file mode 100644 index 0000000..840ea69 --- /dev/null +++ b/topology/reef-byt-da7212.m4 @@ -0,0 +1,99 @@ +# +# Topology for generic Baytrail board with no codec. +# + +# Include topology builder +include(`local.m4') +include(`build.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Baytrail DSP configuration +include(`dsps/byt.m4') + +# +# Define the pipelines +# +# PCM0 ----> volume ---------------+ +# |--low latency mixer ----> volume ----> SSP2 +# PCM2 ----> SRC -----> volume ----+ +# | +# Tone -----> volume ----+ +# +# PCM1 <---- Volume <---- SSP2 +# + +# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data +PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, + 1, 0, 2, s32le, + 48, 1000, 0, 0, 0, 1) + +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 2 for PCM audio capture data +PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, + 2, 0, 2, s32le, + 48, 1000, 0, 0, 0, 2) + +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. +# Schedule 192 frames per 4000us deadline on core 0 with priority 1 +# Use DMAC 0 channel 3 for PCM audio playback data +PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, + 3, 1, 2, s32le, + 192, 4000, 1, 0, 0, 3) + +# Tone Playback pipeline 5 using max 2 channels of s32le. +# Schedule 192 frames per 4000us deadline on core 0 with priority 2 +PIPELINE_ADD(sof/pipe-tone.m4, + 5, 2, s32le, + 192, 4000, 2, 0) + +# Connect pipelines together +SectionGraph."pipe-byt-da7212" { + index "0" + + lines [ + # media 0 + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3) + #tone + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5) + ] +} + +# +# DAI configuration +# +# SSP port 2 is our only pipeline DAI +# + +# playback DAI is SSP2 using 2 periods +# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 1, SSP, 2, + PIPELINE_SOURCE_1, 2, s24le, + 48, 1000, 0, 0) + +# capture DAI is SSP2 using 2 periods +# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 2, SSP, 2, + PIPELINE_SINK_2, 2, s24le, + 48, 1000, 0, 0) + +# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +DAI_CONFIG(SSP, 2, SSP2-Codec, I2S, 24, + DAI_CLOCK(mclk, 19200000, slave), + DAI_CLOCK(bclk, 2400000, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(2, 25, 3, 3)) diff --git a/topology/reef-byt-rt5645.m4 b/topology/reef-byt-rt5645.m4 new file mode 100644 index 0000000..023d92d --- /dev/null +++ b/topology/reef-byt-rt5645.m4 @@ -0,0 +1,99 @@ +# +# Topology for generic Baytrail board with no codec. +# + +# Include topology builder +include(`local.m4') +include(`build.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Baytrail DSP configuration +include(`dsps/byt.m4') + +# +# Define the pipelines +# +# PCM0 ----> volume ---------------+ +# |--low latency mixer ----> volume ----> SSP2 +# PCM2 ----> SRC -----> volume ----+ +# | +# Tone -----> volume ----+ +# +# PCM1 <---- Volume <---- SSP2 +# + +# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data +PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, + 1, 0, 2, s32le, + 48, 1000, 0, 0, 0, 1) + +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 2 for PCM audio capture data +PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, + 2, 0, 2, s32le, + 48, 1000, 0, 0, 0, 2) + +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. +# Schedule 192 frames per 4000us deadline on core 0 with priority 1 +# Use DMAC 0 channel 3 for PCM audio playback data +PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, + 3, 1, 2, s32le, + 192, 4000, 1, 0, 0, 3) + +# Tone Playback pipeline 5 using max 2 channels of s32le. +# Schedule 192 frames per 4000us deadline on core 0 with priority 2 +PIPELINE_ADD(sof/pipe-tone.m4, + 5, 2, s32le, + 192, 4000, 2, 0) + +# Connect pipelines together +SectionGraph."pipe-byt-rt5645" { + index "0" + + lines [ + # media 0 + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3) + #tone + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5) + ] +} + +# +# DAI configuration +# +# SSP port 2 is our only pipeline DAI +# + +# playback DAI is SSP2 using 2 periods +# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 1, SSP, 2, + PIPELINE_SOURCE_1, 2, s24le, + 48, 1000, 0, 0) + +# capture DAI is SSP2 using 2 periods +# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 2, SSP, 2, + PIPELINE_SINK_2, 2, s24le, + 48, 1000, 0, 0) + +# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +DAI_CONFIG(SSP, 2, SSP2-Codec, I2S, 24, + DAI_CLOCK(mclk, 19200000, slave), + DAI_CLOCK(bclk, 2400000, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(2, 25, 3, 3)) diff --git a/topology/reef-cht-max98090.m4 b/topology/reef-cht-max98090.m4 new file mode 100644 index 0000000..3218402 --- /dev/null +++ b/topology/reef-cht-max98090.m4 @@ -0,0 +1,99 @@ +# +# Topology for generic CHT/BSW board with Maxim 98090 codec +# + +# Include topology builder +include(`local.m4') +include(`build.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include Cherrytrail DSP configuration +include(`dsps/cht.m4') + +# +# Define the pipelines +# +# PCM0 ----> volume ---------------+ +# |--low latency mixer ----> volume ----> SSP2 +# PCM2 ----> SRC -----> volume ----+ +# | +# Tone -----> volume ----+ +# +# PCM1 <---- Volume <---- SSP2 +# + +# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data +PIPELINE_PCM_ADD(sof/pipe-low-latency-playback.m4, + 1, 0, 2, s32le, + 48, 1000, 0, 0, 0, 1) + +# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 2 for PCM audio capture data +PIPELINE_PCM_ADD(sof/pipe-low-latency-capture.m4, + 2, 0, 2, s32le, + 48, 1000, 0, 0, 0, 2) + +# PCM Media Playback pipeline 3 on PCM 1 using max 2 channels of s32le. +# Schedule 192 frames per 4000us deadline on core 0 with priority 1 +# Use DMAC 0 channel 3 for PCM audio playback data +PIPELINE_PCM_ADD(sof/pipe-pcm-media.m4, + 3, 1, 2, s32le, + 192, 4000, 1, 0, 0, 3) + +# Tone Playback pipeline 5 using max 2 channels of s32le. +# Schedule 192 frames per 4000us deadline on core 0 with priority 2 +PIPELINE_ADD(sof/pipe-tone.m4, + 5, 2, s32le, + 192, 4000, 2, 0) + +# Connect pipelines together +SectionGraph."pipe-cht-max98090" { + index "0" + + lines [ + # media 0 + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_3) + #tone + dapm(PIPELINE_MIXER_1, PIPELINE_SOURCE_5) + ] +} + +# +# DAI configuration +# +# SSP port 2 is our only pipeline DAI +# + +# playback DAI is SSP2 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 1, SSP, 2, + PIPELINE_SOURCE_1, 2, s16le, + 48, 1000, 0, 0) + +# capture DAI is SSP2 using 2 periods +# Buffers use s16le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-capture.m4, + 2, SSP, 2, + PIPELINE_SINK_2, 2, s16le, + 48, 1000, 0, 0) + +# PCM Low Latency +PCM_DUPLEX_ADD(Low Latency, 6, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +DAI_CONFIG(SSP, 2, SSP2-Codec, I2S, 16, + DAI_CLOCK(mclk, 19200000, slave), + DAI_CLOCK(bclk, 1920000, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(2, 20, 3, 3))