[Sound-open-firmware] [PATCH] topology: test: Add simple component test generator.
Move testing pipelines into a test directory and reuse test scaffolding so that they can be used to test multiple components on multiple target with multiples configs.
Test topology scafolding are now pre-processed using a script to generate the ALSA conf format with the various changes for each test case.
Signed-off-by: Liam Girdwood liam.r.girdwood@linux.intel.com --- .gitignore | 1 + configure.ac | 1 + topology/Makefile.am | 11 +-- topology/sof/pipe-src-capture.m4 | 96 ++++++++++++++++++++++ ...hrough-src-playback.m4 => pipe-src-playback.m4} | 23 ++---- ...rough-vol-capture.m4 => pipe-volume-capture.m4} | 0 ...ugh-vol-playback.m4 => pipe-volume-playback.m4} | 0 .../test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 | 51 ------------ .../test-passthrough-16bit-48k-ssp2-nocodec.m4 | 84 ------------------- topology/test-passthrough-16bit-48k-ssp2.m4 | 51 ------------ topology/test-passthrough-24bit-48k-src-ssp2.m4 | 51 ------------ .../test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 | 51 ------------ .../test-passthrough-24bit-48k-ssp2-nocodec.m4 | 51 ------------ topology/test-passthrough-24bit-48k-ssp2.m4 | 51 ------------ topology/test-passthrough-24bit-48k-vol-ssp2.m4 | 83 ------------------- topology/test/Makefile.am | 20 +++++ topology/test/test-src-ssp.m4 | 90 ++++++++++++++++++++ topology/test/test-ssp.m4 | 90 ++++++++++++++++++++ topology/test/tplg-build.sh | 67 +++++++++++++++ 19 files changed, 373 insertions(+), 499 deletions(-) create mode 100644 topology/sof/pipe-src-capture.m4 rename topology/sof/{pipe-passthrough-src-playback.m4 => pipe-src-playback.m4} (85%) rename topology/sof/{pipe-passthrough-vol-capture.m4 => pipe-volume-capture.m4} (100%) rename topology/sof/{pipe-passthrough-vol-playback.m4 => pipe-volume-playback.m4} (100%) delete mode 100644 topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 delete mode 100644 topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 delete mode 100644 topology/test-passthrough-16bit-48k-ssp2.m4 delete mode 100644 topology/test-passthrough-24bit-48k-src-ssp2.m4 delete mode 100644 topology/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 delete mode 100644 topology/test-passthrough-24bit-48k-ssp2-nocodec.m4 delete mode 100644 topology/test-passthrough-24bit-48k-ssp2.m4 delete mode 100644 topology/test-passthrough-24bit-48k-vol-ssp2.m4 create mode 100644 topology/test/Makefile.am create mode 100644 topology/test/test-src-ssp.m4 create mode 100644 topology/test/test-ssp.m4 create mode 100755 topology/test/tplg-build.sh
diff --git a/.gitignore b/.gitignore index bc827b4..023e264 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,4 @@ rmbox/rmbox rwav/rwav *.tplg topology/*.conf +topology/test/*.conf diff --git a/configure.ac b/configure.ac index 87c7519..1b4f59b 100644 --- a/configure.ac +++ b/configure.ac @@ -17,6 +17,7 @@ AC_OUTPUT([ rimage/Makefile rmbox/Makefile topology/Makefile + topology/test/Makefile ])
echo " diff --git a/topology/Makefile.am b/topology/Makefile.am index 77c146f..3cbc5e6 100644 --- a/topology/Makefile.am +++ b/topology/Makefile.am @@ -3,6 +3,8 @@ # Dependencies #
+SUBDIRS = test + DEPS = \ dsps/*.m4 \ common/*.m4 \ @@ -25,14 +27,7 @@ MACHINES = \ reef-byt-rt5645.tplg \ reef-byt-rt5651.tplg \ reef-byt-da7212.tplg \ - reef-hsw-rt5640.tplg \ - test-passthrough-16bit-48k-ssp2-nocodec.tplg \ - test-passthrough-24bit-48k-ssp2-nocodec.tplg \ - test-passthrough-24bit-48k-ssp2.tplg \ - test-passthrough-24bit-48k-ssp2-SSP2-Codec.tplg \ - test-passthrough-16bit-48k-ssp2-SSP2-Codec.tplg \ - test-passthrough-24bit-48k-vol-ssp2.tplg \ - test-passthrough-24bit-48k-src-ssp2.tplg + reef-hsw-rt5640.tplg
# Uncomment the following line if you want to debug conf files .PRECIOUS: %.conf diff --git a/topology/sof/pipe-src-capture.m4 b/topology/sof/pipe-src-capture.m4 new file mode 100644 index 0000000..ca2980a --- /dev/null +++ b/topology/sof/pipe-src-capture.m4 @@ -0,0 +1,96 @@ +# Low Latency Passthrough with volume Pipeline and PCM +# +# Pipeline Endpoints for connection are :- +# +# host PCM_P --> SRC --> sink DAI0 + +# Include topology builder +include(`local.m4') + + +# +# Components and Buffers +# + +# Host "Passthrough Playback" PCM uses pipeline DMAC and channel +# with 4 sink and 0 source periods +W_PCM_PLAYBACK(Passthrough Capture, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 4, 0, 2) + +# +# SRC Configuration +# + +SectionVendorTuples."media_src_tokens" { + tokens "sof_src_tokens" + + tuples."word" { + SOF_TKN_SRC_RATE_OUT "48000" + } +} + +SectionData."media_src_conf" { + tuples "media_src_tokens" +} + +# "SRC" has 4 source and 4 sink periods +W_SRC(0, PIPELINE_FORMAT, 4, 4, media_src_conf, 2) + +# Playback Buffers +W_BUFFER(0, COMP_BUFFER_SIZE(4, + COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) +W_BUFFER(1, COMP_BUFFER_SIZE(4, + COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES)) + +# +# DAI definitions +# +W_DAI_IN(DAI_TYPE, DAI_INDEX, DAI_FORMAT, 0, DAI_PERIODS, + DAI_PERIODS, dai0c_plat_conf) + +# +# DAI pipeline +# +W_PIPELINE(N_DAI_IN, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, + SCHEDULE_CORE, 0, pipe_dai_schedule_plat) + +# +# Pipeline Graph +# +# host PCM_P --> B0 --> SRC 0 --> B1 --> sink DAI0 + +SectionGraph."pipe-pass-src-capture-PIPELINE_ID" { + index STR(PIPELINE_ID) + + lines [ + dapm(Passthrough Capture PCM_ID, N_PCMC) + dapm(N_PCMC, N_BUFFER(0)) + dapm(N_BUFFER(0), N_SRC(0)) + dapm(N_SRC(0), N_BUFFER(1)) + ] +} + +# +# Pipeline Source and Sinks +# +indir(`define', concat(`PIPELINE_SINK_', PIPELINE_ID), N_BUFFER(1)) +indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Passthrough Capture PCM_ID) + +# +# PCM Configuration +# + +SectionPCMCapabilities.STR(Passthrough Capture PCM_ID) { + + formats "S32_LE,S24_LE,S16_LE" + rate_min "8000" + rate_max "96000" + channels_min "2" + channels_max "4" + periods_min "2" + periods_max "16" + period_size_min "192" + period_size_max "16384" + buffer_size_min "65536" + buffer_size_max "65536" +} + diff --git a/topology/sof/pipe-passthrough-src-playback.m4 b/topology/sof/pipe-src-playback.m4 similarity index 85% rename from topology/sof/pipe-passthrough-src-playback.m4 rename to topology/sof/pipe-src-playback.m4 index b8fae58..d037543 100644 --- a/topology/sof/pipe-passthrough-src-playback.m4 +++ b/topology/sof/pipe-src-playback.m4 @@ -66,10 +66,14 @@ SectionGraph."pipe-pass-src-playback-PIPELINE_ID" { dapm(N_BUFFER(0), N_PCMP) dapm(N_SRC(0), N_BUFFER(0)) dapm(N_BUFFER(1), N_SRC(0)) - dapm(N_DAI_OUT, N_BUFFER(1)) ] }
+# +# Pipeline Source and Sinks +# +indir(`define', concat(`PIPELINE_SOURCE_', PIPELINE_ID), N_BUFFER(1)) +indir(`define', concat(`PIPELINE_PCM_', PIPELINE_ID), Passthrough Playback PCM_ID)
# # PCM Configuration @@ -90,20 +94,3 @@ SectionPCMCapabilities.STR(Passthrough Playback PCM_ID) { buffer_size_max "65536" }
-# PCM Passthrough Playback -SectionPCM.STR(PCM PCM_ID) { - - index STR(PIPELINE_ID) - - # used for binding to the PCM - id STR(PCM_ID) - - dai.STR(Passthrough Playback PCM_ID) { - id STR(PCM_ID) - } - - pcm."playback" { - - capabilities STR(Passthrough Playback PCM_ID) - } -} diff --git a/topology/sof/pipe-passthrough-vol-capture.m4 b/topology/sof/pipe-volume-capture.m4 similarity index 100% rename from topology/sof/pipe-passthrough-vol-capture.m4 rename to topology/sof/pipe-volume-capture.m4 diff --git a/topology/sof/pipe-passthrough-vol-playback.m4 b/topology/sof/pipe-volume-playback.m4 similarity index 100% rename from topology/sof/pipe-passthrough-vol-playback.m4 rename to topology/sof/pipe-volume-playback.m4 diff --git a/topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 b/topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 deleted file mode 100644 index e930416..0000000 --- a/topology/test-passthrough-16bit-48k-ssp2-SSP2-Codec.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `SSP2-Codec') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-playback.m4, - 1, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 16, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 1920000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 20, 3, 3)) diff --git a/topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 b/topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 deleted file mode 100644 index 76bd75b..0000000 --- a/topology/test-passthrough-16bit-48k-ssp2-nocodec.m4 +++ /dev/null @@ -1,84 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `NoCodec') - -# -# Define the pipeline -# -# PCM0 <---> SSP2 -# - -# Passthrough playback pipeline 1 on PCM 0 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-playback.m4, - 1, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - - -# Passthrough playback pipeline 2 on PCM 0 using max 2 channels of s24le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-capture.m4, - 2, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - -# -# 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 Passthrough -PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 16bit I2S using 20bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 16, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 1920000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 20, 3, 3)) diff --git a/topology/test-passthrough-16bit-48k-ssp2.m4 b/topology/test-passthrough-16bit-48k-ssp2.m4 deleted file mode 100644 index 7bf4aaf..0000000 --- a/topology/test-passthrough-16bit-48k-ssp2.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# Low Latency playback pipeline 1 on PCM 0 using max 2 channels of s16le. -# Schedule 48 frames per 1000us deadline on core 0 with priority 0 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-playback.m4, - 1, 0, 2, s16le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s16le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 16bit I2S using 20bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, I2S, 16, - DAI_CLOCK(mclk, 19200000, slave), - DAI_CLOCK(bclk, 1920000, slave), - DAI_CLOCK(fsync, 48000, slave), - DAI_TDM(2, 20, 3, 3)) diff --git a/topology/test-passthrough-24bit-48k-src-ssp2.m4 b/topology/test-passthrough-24bit-48k-src-ssp2.m4 deleted file mode 100644 index 61c06e1..0000000 --- a/topology/test-passthrough-24bit-48k-src-ssp2.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 ---> volume ---> SSP2 -# - -# 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 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-src-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, 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/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 b/topology/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 deleted file mode 100644 index 7e481d3..0000000 --- a/topology/test-passthrough-24bit-48k-ssp2-SSP2-Codec.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `SSP2-Codec') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, 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/test-passthrough-24bit-48k-ssp2-nocodec.m4 b/topology/test-passthrough-24bit-48k-ssp2-nocodec.m4 deleted file mode 100644 index e0a3d4f..0000000 --- a/topology/test-passthrough-24bit-48k-ssp2-nocodec.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `NoCodec') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, 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/test-passthrough-24bit-48k-ssp2.m4 b/topology/test-passthrough-24bit-48k-ssp2.m4 deleted file mode 100644 index ca3261d..0000000 --- a/topology/test-passthrough-24bit-48k-ssp2.m4 +++ /dev/null @@ -1,51 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 ----> SSP2 -# - -# 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 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, 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/test-passthrough-24bit-48k-vol-ssp2.m4 b/topology/test-passthrough-24bit-48k-vol-ssp2.m4 deleted file mode 100644 index 89775a7..0000000 --- a/topology/test-passthrough-24bit-48k-vol-ssp2.m4 +++ /dev/null @@ -1,83 +0,0 @@ -# -# Topology for pass through pipeline -# - -# 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') - -# -# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! -# - -# DAI Link Name -define(`TEST_DAI_LINK_NAME', `Baytrail Audio') - -# -# Define the pipeline -# -# PCM0 <---> volume <---> SSP2 -# - -# 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 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-vol-playback.m4, - 1, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# 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 -# Use DMAC 0 channel 1 for PCM audio playback data - -PIPELINE_PCM_DAI_ADD(sof/pipe-passthrough-vol-capture.m4, - 2, 0, 2, s24le, - 48, 1000, 0, 0, 0, 1, - SSP, 2, s24le, 2) - -# -# 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 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, s24le, - 48, 1000, 0, 0) - -# PCM Passthrough -PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) - -# -# BE configurations - overrides config in ACPI if present -# -# Clocks masters wrt codec -# -# 24bit I2S using 25bit sample conatiner on SSP2 -# -DAI_CONFIG(SSP, 2, TEST_DAI_LINK_NAME, 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/test/Makefile.am b/topology/test/Makefile.am new file mode 100644 index 0000000..7da075d --- /dev/null +++ b/topology/test/Makefile.am @@ -0,0 +1,20 @@ + +# +# Dependencies +# + +DEPS = \ + ../dsps/*.m4 \ + ../common/*.m4 \ + ../m4/*.m4 \ + ../sof/*.m4 + +# Uncomment the following line if you want to debug conf files +.PRECIOUS: %.conf + +all : *.m4 ${DEPS} + ./tplg-build.sh + +clean: + rm -f *.conf + rm -f *.tplg diff --git a/topology/test/test-src-ssp.m4 b/topology/test/test-src-ssp.m4 new file mode 100644 index 0000000..318bd74 --- /dev/null +++ b/topology/test/test-src-ssp.m4 @@ -0,0 +1,90 @@ +# +# Topology for pass through pipeline +# + +# 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') + +# +# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! +# +# TEST_PIPE_NAME - Pipe name +# TEST_DAI_LINK_NAME - BE DAI link name e.g. "NoCodec" +# TEST_SSP_PORT - SSP port number e.g. 2 +# TEST_SSP_FORMAT - SSP data format e.g s16le +# TEST_PIPE_FORMAT - Pipeline format e.g. s16le +# TEST_SSP_BCLK - SSP BCLK in Hz +# TEST_SSP_PHY_BITS - SSP physical slot size +# TEST_SSP_DATA_BITS - SSP data slot size +# + +# +# Define the pipeline +# +# PCM0 <--> SRC <--> SSP TEST_SSP_PORT +# + +# Passthrough playback pipeline 1 on PCM 0 using max 2 channels of s24le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data + +PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-playback.m4, + 1, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + + +# Passthrough playback pipeline 2 on PCM 0 using max 2 channels of s24le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data + +PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, + 2, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + +# +# DAI configuration +# +# SSP port TEST_SSP_PORT is our only pipeline DAI +# + +# playback DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SOURCE_1, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# capture DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SINK_2, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# PCM Passthrough +PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +# Clocks masters wrt codec +# +# TEST_SSP_DATA_BITS bit I2S using TEST_SSP_PHY_BITS bit sample conatiner on SSP TEST_SSP_PORT +# +DAI_CONFIG(SSP, TEST_SSP_PORT, TEST_DAI_LINK_NAME, I2S, TEST_SSP_DATA_BITS, + DAI_CLOCK(mclk, 19200000, slave), + DAI_CLOCK(bclk, TEST_SSP_BCLK, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(2, TEST_SSP_PHY_BITS, 3, 3)) diff --git a/topology/test/test-ssp.m4 b/topology/test/test-ssp.m4 new file mode 100644 index 0000000..42f3876 --- /dev/null +++ b/topology/test/test-ssp.m4 @@ -0,0 +1,90 @@ +# +# Topology for pass through pipeline +# + +# 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') + +# +# Machine Specific Config - !! MUST BE SET TO MATCH TEST MACHINE DRIVER !! +# +# TEST_PIPE_NAME - Pipe name +# TEST_DAI_LINK_NAME - BE DAI link name e.g. "NoCodec" +# TEST_SSP_PORT - SSP port number e.g. 2 +# TEST_SSP_FORMAT - SSP data format e.g s16le +# TEST_PIPE_FORMAT - Pipeline format e.g. s16le +# TEST_SSP_BCLK - SSP BCLK in Hz +# TEST_SSP_PHY_BITS - SSP physical slot size +# TEST_SSP_DATA_BITS - SSP data slot size +# + +# +# Define the pipeline +# +# PCM0 <---> SSP TEST_SSP_PORT +# + +# Passthrough playback pipeline 1 on PCM 0 using max 2 channels of s24le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data + +PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-playback.m4, + 1, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + + +# Passthrough playback pipeline 2 on PCM 0 using max 2 channels of s24le. +# Schedule 48 frames per 1000us deadline on core 0 with priority 0 +# Use DMAC 0 channel 1 for PCM audio playback data + +PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, + 2, 0, 2, TEST_PIPE_FORMAT, + 48, 1000, 0, 0, 0, 1, + SSP, TEST_SSP_PORT, TEST_SSP_FORMAT, 2) + +# +# DAI configuration +# +# SSP port TEST_SSP_PORT is our only pipeline DAI +# + +# playback DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SOURCE_1, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# capture DAI is SSP TEST_SSP_PORT 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, TEST_SSP_PORT, + PIPELINE_SINK_2, 2, TEST_SSP_FORMAT, + 48, 1000, 0, 0) + +# PCM Passthrough +PCM_DUPLEX_ADD(Passthrough, 3, 0, 0, PIPELINE_PCM_1, PIPELINE_PCM_2) + +# +# BE configurations - overrides config in ACPI if present +# +# Clocks masters wrt codec +# +# TEST_SSP_DATA_BITS bit I2S using TEST_SSP_PHY_BITS bit sample conatiner on SSP TEST_SSP_PORT +# +DAI_CONFIG(SSP, TEST_SSP_PORT, TEST_DAI_LINK_NAME, I2S, TEST_SSP_DATA_BITS, + DAI_CLOCK(mclk, 19200000, slave), + DAI_CLOCK(bclk, TEST_SSP_BCLK, slave), + DAI_CLOCK(fsync, 48000, slave), + DAI_TDM(2, TEST_SSP_PHY_BITS, 3, 3)) diff --git a/topology/test/tplg-build.sh b/topology/test/tplg-build.sh new file mode 100755 index 0000000..2aa751f --- /dev/null +++ b/topology/test/tplg-build.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +# Utility script to pre-process and compile topology sources into topology test +# binaries. Currently supports simple PCM <-> component <-> SSP style tests +# using simple_test() + +# fail immediately on any errors +set -e + +# M4 preprocessor flags +M4_FLAGS="-I ../ -I ../m4" + +# Simple component test cases +# can be used on components with 1 sink and 1 source. +SIMPLE_TESTS=(test-ssp test-src-ssp) + +# process m4 simple tests - +# simple_test(name, pipe_name, be_name, format, dai_id, dai_format, dai_phy_bits, dai_data_bits dai_bclk) +# 1) name - test filename suffix +# 2) pipe_name - test component pipeline filename in sof/ +# 3) be_name - BE DAI link name in machine driver, used for matching +# 4) format - PCM sample format +# 5) dai_id - SSP port number +# 6) dai_format - SSP sample format +# 7) dai_phy_bits - SSP physical number of BLKCs per slot/channel +# 8) dai_data_bits - SSP number of valid daat bits per slot/channel +# 9) dai_bclk - SSP BCLK in HZ +# +function simple_test { + for i in ${SIMPLE_TESTS[@]} + do + TFILE="$i$5-$4-48k-$1" + echo "M4 pre-processing test $i -> ${TFILE}" + m4 ${M4_FLAGS} \ + -DTEST_PIPE_NAME="$2" \ + -DTEST_DAI_LINK_NAME="$3" \ + -DTEST_SSP_PORT=$5 \ + -DTEST_SSP_FORMAT=$6 \ + -DTEST_PIPE_FORMAT=$4 \ + -DTEST_SSP_BCLK=$9 \ + -DTEST_SSP_PHY_BITS=$7 \ + -DTEST_SSP_DATA_BITS=$8 \ + $i.m4 > ${TFILE}.conf + echo "Compiling test $i -> ${TFILE}.tplg" + alsatplg -v 1 -c ${TFILE}.conf -o ${TFILE}.tplg + done +} + +# Pre-process the simple tests +simple_test nocodec passthrough "NoCodec" s16le 2 s16le 20 16 1920000 +simple_test nocodec passthrough "NoCodec" s24le 2 s24le 25 24 2400000 +simple_test nocodec volume "NoCodec" s16le 2 s16le 20 16 1920000 +simple_test nocodec volume "NoCodec" s24le 2 s24le 25 24 2400000 +simple_test nocodec volume "NoCodec" s16le 2 s24le 25 24 2400000 + +simple_test codec passthrough "SSP2-Codec" s16le 2 s16le 20 16 1920000 +simple_test codec passthrough "SSP2-Codec" s24le 2 s24le 25 24 2400000 +simple_test codec volume "SSP2-Codec" s16le 2 s16le 20 16 1920000 +simple_test codec volume "SSP2-Codec" s24le 2 s24le 25 24 2400000 +simple_test codec volume "SSP2-Codec" s16le 2 s24le 25 24 2400000 + +simple_test baytrail passthrough "Baytrail Audio" s16le 2 s16le 20 16 1920000 +simple_test baytrail passthrough "Baytrail Audio" s24le 2 s24le 25 24 2400000 +simple_test baytrail volume "Baytrail Audio" s16le 2 s16le 20 16 1920000 +simple_test baytrail volume "Baytrail Audio" s24le 2 s24le 25 24 2400000 +simple_test baytrail volume "Baytrail Audio" s16le 2 s24le 25 24 2400000 +
participants (1)
-
Liam Girdwood