From e54087caa4408c81247998841d10bfbdcc28ce22 Mon Sep 17 00:00:00 2001 From: Pierre-Louis Bossart Date: Wed, 6 Feb 2019 10:10:37 -0600 Subject: [PATCH] topology: add support for HDMI only w/ 3 iDISP streams This is useful for headless devices such as Up2 with no external HDAudio codec but an HDMI/DP output. Signed-off-by: Pierre-Louis Bossart --- tools/topology/CMakeLists.txt | 1 + tools/topology/sof-hda-generic-idisp.m4 | 92 +++++++++++++++++++++++++ 2 files changed, 93 insertions(+) create mode 100644 tools/topology/sof-hda-generic-idisp.m4 diff --git a/tools/topology/CMakeLists.txt b/tools/topology/CMakeLists.txt index 24c78960f..013aba4e1 100644 --- a/tools/topology/CMakeLists.txt +++ b/tools/topology/CMakeLists.txt @@ -12,6 +12,7 @@ set(TPLGS "sof-cht-max98090\;sof-cht-max98090" "sof-cht-rt5682\;sof-cht-rt5682" "sof-hda-generic\;sof-hda-generic" + "sof-hda-generic-idisp\;sof-hda-generic-idisp" "sof-apl-nocodec\;sof-apl-nocodec" "sof-apl-keyword-detect\;sof-apl-keyword-detect" "sof-bdw-codec\;sof-bdw-rt286\;-DCODEC=RT286" diff --git a/tools/topology/sof-hda-generic-idisp.m4 b/tools/topology/sof-hda-generic-idisp.m4 new file mode 100644 index 000000000..438de3c27 --- /dev/null +++ b/tools/topology/sof-hda-generic-idisp.m4 @@ -0,0 +1,92 @@ +# +# Topology for SKL+ HDA Generic machine w/ iDISP codec only +# + +# Include topology builder +include(`utils.m4') +include(`dai.m4') +include(`pipeline.m4') + +# Include TLV library +include(`common/tlv.m4') + +# Include Token library +include(`sof/tokens.m4') + +# Include bxt DSP configuration +include(`platform/intel/bxt.m4') + +# +# Define the pipelines +# +# PCM1 ----> volume -----> iDisp1 +# PCM2 ----> volume -----> iDisp2 +# PCM3 ----> volume -----> iDisp3 +# + +dnl PIPELINE_PCM_ADD(pipeline, +dnl pipe id, pcm, max channels, format, +dnl frames, deadline, priority, core) + +# Low Latency playback pipeline 2 on PCM 1 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, + 2, 1, 2, s32le, + 48, 1000, 0, 0) + +# Low Latency playback pipeline 3 on PCM 2 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, + 3, 2, 2, s32le, + 48, 1000, 0, 0) + +# Low Latency playback pipeline 4 on PCM 3 using max 2 channels of s32le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, + 4, 3, 2, s32le, + 48, 1000, 0, 0) + +# +# DAIs configuration +# + +dnl DAI_ADD(pipeline, +dnl pipe id, dai type, dai_index, dai_be, +dnl buffer, periods, format, +dnl frames, deadline, priority, core) + +# playback DAI is iDisp1 using 2 periods +# Buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 2, HDA, 0, iDisp1, + PIPELINE_SOURCE_2, 2, s32le, + 48, 1000, 0, 0) + +# playback DAI is iDisp2 using 2 periods +# Buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 3, HDA, 1, iDisp2, + PIPELINE_SOURCE_3, 2, s32le, + 48, 1000, 0, 0) + +# playback DAI is iDisp3 using 2 periods +# Buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 +DAI_ADD(sof/pipe-dai-playback.m4, + 4, HDA, 2, iDisp3, + PIPELINE_SOURCE_4, s32le, + 48, 1000, 0, 0) + +# PCM Low Latency, id 0 +dnl PCM_PLAYBACK_ADD(name, pcm_id, playback) +PCM_PLAYBACK_ADD(HDMI1, 1, PIPELINE_PCM_2) +PCM_PLAYBACK_ADD(HDMI2, 2, PIPELINE_PCM_3) +PCM_PLAYBACK_ADD(HDMI3, 3, PIPELINE_PCM_4) + +# +# BE configurations - overrides config in ACPI if present +# + +# 3 HDMI/DP outputs (ID: 1,2,3) +DAI_CONFIG(HDA, 0, 1, iDisp1) +DAI_CONFIG(HDA, 1, 2, iDisp2) +DAI_CONFIG(HDA, 2, 3, iDisp3)