From 56e440ee7cdff9cad34b7839b2c5b2703afba260 Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Wed, 23 Jan 2019 15:34:16 +0800 Subject: [PATCH 1/2] topology: hda: delete sof-whl-hda.m4 It is useless now and sof-hda-generic.m4 would be used by WHL. Signed-off-by: Rander Wang --- tools/topology/Makefile.am | 2 - tools/topology/sof-whl-hda.m4 | 155 ---------------------------------- 2 files changed, 157 deletions(-) delete mode 100644 tools/topology/sof-whl-hda.m4 diff --git a/tools/topology/Makefile.am b/tools/topology/Makefile.am index b39dcf4eb1c1..05e7f6dbdd3b 100644 --- a/tools/topology/Makefile.am +++ b/tools/topology/Makefile.am @@ -19,7 +19,6 @@ DEPS = \ MACHINES = \ sof-cht-nocodec.tplg \ sof-cht-max98090.tplg \ - sof-whl-hda.tplg \ sof-hda-generic.tplg \ sof-apl-nocodec.tplg \ sof-byt-nocodec.tplg \ @@ -67,7 +66,6 @@ EXTRA_DIST = \ sof-cht-nocodec.m4 \ sof-cht-max98090.m4 \ sof-apl-hdmi.m4 \ - sof-whl-hda.m4 \ sof-hda-generic.m4 \ sof-apl-nocodec.m4 \ sof-byt-nocodec.m4 \ diff --git a/tools/topology/sof-whl-hda.m4 b/tools/topology/sof-whl-hda.m4 deleted file mode 100644 index ff6aa5f24f9c..000000000000 --- a/tools/topology/sof-whl-hda.m4 +++ /dev/null @@ -1,155 +0,0 @@ -# -# HDA passthrough topology for WHL -# - -# 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 -# -# PCM0 <---> passthrough (pipe 1,2) <----> HDA Analog (HDA Analog playback/capture) -# PCM1 <---> passthrough (pipe 3,4) <----> HDA Digital (HDA Digital playback/capture) -# PCM3 ----> passthrough (pipe 7) -----> iDisp1 (HDMI/DP playback, BE link 3) -# PCM4 ----> passthrough (pipe 8) -----> iDisp2 (HDMI/DP playback, BE link 4) -# PCM5 ----> passthrough (pipe 9) -----> iDisp3 (HDMI/DP playback, BE link 5) -# - -# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-passthrough-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0) - -# Low Latency capture pipeline 2 on PCM 0 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, - 2, 0, 2, s24le, - 48, 1000, 0, 0) - -# Low Latency playback pipeline 3 on PCM 1 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-passthrough-playback.m4, - 3, 1, 2, s24le, - 48, 1000, 0, 0) - -# Low Latency capture pipeline 4 on PCM 1 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-passthrough-capture.m4, - 4, 1, 2, s24le, - 48, 1000, 0, 0) - -# Low Latency playback pipeline 7 on PCM 3 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-passthrough-playback.m4, - 7, 3, 2, s24le, - 48, 1000, 0, 0) - -# Low Latency playback pipeline 8 on PCM 4 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-passthrough-playback.m4, - 8, 4, 2, s24le, - 48, 1000, 0, 0) - -# Low Latency playback pipeline 9 on PCM 5 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -PIPELINE_PCM_ADD(sof/pipe-passthrough-playback.m4, - 9, 5, 2, s24le, - 48, 1000, 0, 0) - -# -# DAIs configuration -# - -# playback DAI is HDA Analog 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, HDA, 0, Analog Playback and Capture, - PIPELINE_SOURCE_1, 2, s24le, - 48, 1000, 0, 0) - -# capture DAI is HDA Analog 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, HDA, 1, Analog Playback and Capture, - PIPELINE_SINK_2, 2, s24le, - 48, 1000, 0, 0) - -# playback DAI is HDA Digital 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, - 3, HDA, 2, Digital Playback and Capture, - PIPELINE_SOURCE_3, 2, s24le, - 48, 1000, 0, 0) - -# capture DAI is HDA Digital 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, - 4, HDA, 3, Digital Playback and Capture, - PIPELINE_SINK_4, 2, s24le, - 48, 1000, 0, 0) - -# playback DAI is iDisp1 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, - 7, HDA, 4, iDisp1, - PIPELINE_SOURCE_7, 2, s24le, - 48, 1000, 0, 0) - -# playback DAI is iDisp2 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, - 8, HDA, 5, iDisp2, - PIPELINE_SOURCE_8, 2, s24le, - 48, 1000, 0, 0) - -# playback DAI is iDisp3 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, - 9, HDA, 6, iDisp3, - PIPELINE_SOURCE_9, 2, s24le, - 48, 1000, 0, 0) - -PCM_DUPLEX_ADD(HDA Analog, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) -PCM_DUPLEX_ADD(HDA Digital, 1, PIPELINE_PCM_3, PIPELINE_PCM_4) -PCM_PLAYBACK_ADD(HDMI1, 3, PIPELINE_PCM_7) -PCM_PLAYBACK_ADD(HDMI2, 4, PIPELINE_PCM_8) -PCM_PLAYBACK_ADD(HDMI3, 5, PIPELINE_PCM_9) - -# -# BE configurations - overrides config in ACPI if present -# - -# HDA outputs -DAI_CONFIG(HDA, 0, 4, Analog Playback and Capture) -DAI_CONFIG(HDA, 1, 5, Digital Playback and Capture) -# 3 HDMI/DP outputs (ID: 3,4,5) -DAI_CONFIG(HDA, 4, 1, iDisp1) -DAI_CONFIG(HDA, 5, 2, iDisp2) -DAI_CONFIG(HDA, 6, 3, iDisp3) - - -VIRTUAL_DAPM_ROUTE_IN(codec0_in, HDA, 1, IN, 1) -VIRTUAL_DAPM_ROUTE_IN(codec1_in, HDA, 3, IN, 2) -VIRTUAL_DAPM_ROUTE_OUT(codec0_out, HDA, 0, OUT, 3) -VIRTUAL_DAPM_ROUTE_OUT(codec1_out, HDA, 2, OUT, 4) - -# codec2 is not supported in dai links but it exists -# in dapm routes, so hack this one to HDA1 -VIRTUAL_DAPM_ROUTE_IN(codec2_in, HDA, 3, IN, 5) -VIRTUAL_DAPM_ROUTE_OUT(codec2_out, HDA, 2, OUT, 6) - -VIRTUAL_DAPM_ROUTE_OUT(iDisp1_out, HDA, 4, OUT, 7) -VIRTUAL_DAPM_ROUTE_OUT(iDisp2_out, HDA, 5, OUT, 8) -VIRTUAL_DAPM_ROUTE_OUT(iDisp3_out, HDA, 6, OUT, 9) From 6619d31b29ef301f14cd909476cfa3e382f08832 Mon Sep 17 00:00:00 2001 From: Rander Wang Date: Fri, 25 Jan 2019 16:12:03 +0800 Subject: [PATCH 2/2] topology: hda: fix a hda bug when pipeline is in 24bit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit sof audio pipeline with the format of 24bit doesn't work on HDA platform. It is caused by sample data layout. SOF supports S24_LE, and each sample format is like pattern of 0ddd, d stands for data. Samples are padded with 0‟s at the MSB. Link dma copys samples directly to hda bus, but hda bus requires samples layout like pattern of ddd0. Samples are padded with 0‟s at the LSB to left justify the sample within the container. Now there is a volume at the end of hda pipeline. We only need to convert dai type from S24_LE to S32_LE to make volume convert hda data to correct format Signed-off-by: Rander Wang --- tools/topology/Makefile.am | 4 +-- ...hda-generic.m4 => sof-hda-intel-common.m4} | 28 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) rename tools/topology/{sof-hda-generic.m4 => sof-hda-intel-common.m4} (84%) diff --git a/tools/topology/Makefile.am b/tools/topology/Makefile.am index 05e7f6dbdd3b..6fc20c9f4a82 100644 --- a/tools/topology/Makefile.am +++ b/tools/topology/Makefile.am @@ -19,7 +19,7 @@ DEPS = \ MACHINES = \ sof-cht-nocodec.tplg \ sof-cht-max98090.tplg \ - sof-hda-generic.tplg \ + sof-hda-intel-common.tplg \ sof-apl-nocodec.tplg \ sof-byt-nocodec.tplg \ sof-bdw-rt286.tplg \ @@ -66,7 +66,7 @@ EXTRA_DIST = \ sof-cht-nocodec.m4 \ sof-cht-max98090.m4 \ sof-apl-hdmi.m4 \ - sof-hda-generic.m4 \ + sof-hda-intel-common.m4 \ sof-apl-nocodec.m4 \ sof-byt-nocodec.m4 \ sof-bdw-rt286.m4 \ diff --git a/tools/topology/sof-hda-generic.m4 b/tools/topology/sof-hda-intel-common.m4 similarity index 84% rename from tools/topology/sof-hda-generic.m4 rename to tools/topology/sof-hda-intel-common.m4 index c96b0fcab212..d2c10593f3b8 100644 --- a/tools/topology/sof-hda-generic.m4 +++ b/tools/topology/sof-hda-intel-common.m4 @@ -73,52 +73,52 @@ PIPELINE_PCM_ADD(sof/pipe-volume-playback.m4, # # playback DAI is HDA Analog using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +# Dai buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-playback.m4, 1, HDA, 0, Analog Playback and Capture, - PIPELINE_SOURCE_1, 2, s24le, + PIPELINE_SOURCE_1, 2, s32le, 48, 1000, 0, 0) # capture DAI is HDA Analog using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +# Dai buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-capture.m4, 2, HDA, 1, Analog Playback and Capture, - PIPELINE_SINK_2, 2, s24le, + PIPELINE_SINK_2, 2, s32le, 48, 1000, 0, 0) # playback DAI is HDA Digital using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +# Dai buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-playback.m4, 3, HDA, 2, Digital Playback and Capture, - PIPELINE_SOURCE_3, 2, s24le, + PIPELINE_SOURCE_3, 2, s32le, 48, 1000, 0, 0) # capture DAI is HDA Digital using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +# Dai buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-capture.m4, 4, HDA, 3, Digital Playback and Capture, - PIPELINE_SINK_4, 2, s24le, + PIPELINE_SINK_4, 2, s32le, 48, 1000, 0, 0) # playback DAI is iDisp1 using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +# Dai buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-playback.m4, 7, HDA, 4, iDisp1, - PIPELINE_SOURCE_7, 2, s24le, + PIPELINE_SOURCE_7, 2, s32le, 48, 1000, 0, 0) # playback DAI is iDisp2 using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +# Dai buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-playback.m4, 8, HDA, 5, iDisp2, - PIPELINE_SOURCE_8, 2, s24le, + PIPELINE_SOURCE_8, 2, s32le, 48, 1000, 0, 0) # playback DAI is iDisp3 using 2 periods -# Buffers use s24le format, with 48 frame per 1000us on core 0 with priority 0 +# Dai buffers use s32le format, with 48 frame per 1000us on core 0 with priority 0 DAI_ADD(sof/pipe-dai-playback.m4, 9, HDA, 6, iDisp3, - PIPELINE_SOURCE_9, 2, s24le, + PIPELINE_SOURCE_9, 2, s32le, 48, 1000, 0, 0) PCM_DUPLEX_ADD(HDA Analog, 0, PIPELINE_PCM_1, PIPELINE_PCM_2)