[Sound-open-firmware] [PATCH 3/6] topology: add support for Dialog, Realtek and Maxim codecs
Pierre-Louis Bossart
pierre-louis.bossart at linux.intel.com
Thu Dec 7 02:41:06 CET 2017
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.intel.com>
---
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))
--
2.14.1
More information about the Sound-open-firmware
mailing list