[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