From 7fe0dbd215f91e0b90e74f5dd39300941d269b5d Mon Sep 17 00:00:00 2001 From: Guido Roncarolo Date: Tue, 15 Oct 2019 08:30:41 +0200 Subject: [PATCH] topology: Add topology for i.MX8QXP with wm8960 codec This pipeline adds support for S24_LE, 2 channels, 48KHz playback. Signed-off-by: Guido Roncarolo --- tools/topology/CMakeLists.txt | 1 + tools/topology/sof-imx8qxp-wm8960.m4 | 68 ++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 tools/topology/sof-imx8qxp-wm8960.m4 diff --git a/tools/topology/CMakeLists.txt b/tools/topology/CMakeLists.txt index f659c63f5..d32ae8702 100644 --- a/tools/topology/CMakeLists.txt +++ b/tools/topology/CMakeLists.txt @@ -88,6 +88,7 @@ set(TPLGS "sof-imx8qxp-nocodec\;sof-imx8qxp-nocodec" "sof-imx8qxp-cs42888\;sof-imx8qxp-cs42888" "sof-imx8qxp-nocodec-sai\;sof-imx8qxp-nocodec-sai" + "sof-imx8qxp-wm8960\;sof-imx8qxp-wm8960" ) add_custom_target(topologies ALL) diff --git a/tools/topology/sof-imx8qxp-wm8960.m4 b/tools/topology/sof-imx8qxp-wm8960.m4 new file mode 100644 index 000000000..c539abb0e --- /dev/null +++ b/tools/topology/sof-imx8qxp-wm8960.m4 @@ -0,0 +1,68 @@ +# +# Topology for i.MX8QXP board with wm8960 codec +# + +# Include topology builder +include(`utils.m4') +include(`dai.m4') +include(`pipeline.m4') +include(`sai.m4') +include(`pcm.m4') +include(`buffer.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include DSP configuration +include(`platform/imx/imx8qxp.m4') + +# +# Define the pipelines +# +# PCM0 ----> volume -----> SAI1 (wm8960) +# + +dnl PIPELINE_PCM_ADD(pipeline, +dnl pipe id, pcm, max channels, format, +dnl period, priority, core, +dnl pcm_min_rate, pcm_max_rate, pipeline_rate, +dnl time_domain, sched_comp) + +# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s24le. +# Set 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, + 1, 0, 2, s24le, + 1000, 0, 0, + 48000, 48000, 48000) + +# +# DAIs configuration +# + +dnl DAI_ADD(pipeline, +dnl pipe id, dai type, dai_index, dai_be, +dnl buffer, periods, format, +dnl period, priority, core, time_domain) + +# playback DAI is SAI1 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, SAI, 1, SAI1-Codec, + PIPELINE_SOURCE_1, 2, s24le, + 1000, 0, 0) + +# PCM Low Latency, id 0 + +dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) +PCM_PLAYBACK_ADD(Port0, 0, PIPELINE_PCM_1) + +dnl DAI_CONFIG(type, idx, link_id, name, sai_config) +DAI_CONFIG(SAI, 1, 0, SAI1-Codec, + SAI_CONFIG(I2S, SAI_CLOCK(mclk, 49152000, codec_mclk_in), + SAI_CLOCK(bclk, 3072000, codec_slave), + SAI_CLOCK(fsync, 48000, codec_slave), + SAI_TDM(2, 32, 3, 3), + SAI_CONFIG_DATA(SAI, 1, 0)))