[Sound-open-firmware] [PATCH 3/3] topology: test: Add loopback topology

Pan, Xiuli xiuli.pan at linux.intel.com
Wed Jun 20 09:42:29 CEST 2018



On 6/20/2018 13:48, Pan, Xiuli wrote:
>
>
> On 6/19/2018 18:57, Liam Girdwood wrote:
>> On Tue, 2018-06-19 at 17:21 +0800, Xiuli Pan wrote:
>>> From: Pan Xiuli <xiuli.pan at linux.intel.com>
>>>
>>> Loopback topology will enable SSP DAI loopback mode. This can loopback
>>> the SSP data.
>>>
>>> Signed-off-by: Pan Xiuli <xiuli.pan at linux.intel.com>
>>> ---
>>> Work with patch set:
>>> SOF-Kernel(6):
>>>    ASoC: SOF: Add debug_mode flag in sof dev
>>>    ASoC: SOF: debug: add debugmode debugfs for sof_dev debug_mode
>>>    ASoC: SOF: uapi: topology: Add SOF_TKN_DAI_SSP_LBM for ssp 
>>> loopback mode
>>>    ASoC: SOF: add headers for lbm control callback functions
>>>    ASoC: SOF: add lbm kcontrol callback functions
>>>    ASoC: SOF: topology: Add topology handler for dai ssp loopback mode
>>>
>>> SOF(5):
>>>    dai: add lbm status for dai ssp
>>>    dai: add get_loopback_mode function
>>>    DMIC: add empty get_loopback_mode function
>>>    SSP: support for get/set_loopback_mode functions
>>>    dai: add dai_cmd support for loopback mode switch
>>>
>>> SOF-Tools(3):
>>>    topology: Add SOF_TKN_DAI_SSP_LBM for ssp loopback mode
>>>    topology: m4: Add DAI_OUT_SSP_LOOPBACK marco for SSP LOOPBACK dai 
>>> comp
>>>    topology: test: Add loopback topology
>>>
>>> test & santity test with:
>>> Mininow max rt5651 and UP2 Hifiberry PRO and CNL nocodec
>>> SOF master: 48d2a1c551d7b3c8f76d44f3c04dd59a37ff6a8f
>>> SOF-Tool master: bd7dc88231f31d385340310cef467f211a739eeb
>>> https://github.com/plbossart/sound/tree/topic/sof-v4.14:
>>> 0d51a5ed28c5e97f09b59c4cafaddfb9d3b24b77
>>> ---
>>>   topology/sof/pipe-dai-loopback.m4 | 22 +++++++++
>>>   topology/test/test-loopback.m4    | 96
>>> +++++++++++++++++++++++++++++++++++++++
>>>   topology/test/tplg-build.sh       |  2 +-
>>>   3 files changed, 119 insertions(+), 1 deletion(-)
>>>   create mode 100644 topology/sof/pipe-dai-loopback.m4
>>>   create mode 100644 topology/test/test-loopback.m4
>>>
>>> diff --git a/topology/sof/pipe-dai-loopback.m4 b/topology/sof/pipe-dai-
>>> loopback.m4
>>> new file mode 100644
>>> index 0000000..59d9af8
>>> --- /dev/null
>>> +++ b/topology/sof/pipe-dai-loopback.m4
>> This file is not needed if you reuse the standard DAI macros and add 
>> a new param
>> to them.
>
> Will try to use a flag implement, maybe a new m4 file is not needed.
> We may need to add more args in the old m4 files.
>
Adding a pram has no benefit then adding a new file.
Since we already have to much prams in tplg-build.sh, adding one more 
parms means we need double all command for test case.
But adding one more file can simplify all this work into the different 
file it will lower down the switch case. Or we may need a double size 
tplg-build.sh

Thanks
Xiuli
> Thanks
> Xiuli
>>
>> Liam
>>
>>> @@ -0,0 +1,22 @@
>>> +# DAI Playback connector
>>> +
>>> +# Include topology builder
>>> +include(`utils.m4')
>>> +include(`dai.m4')
>>> +include(`pipeline.m4')
>>> +
>>> +#
>>> +# DAI definitions
>>> +#
>>> +W_DAI_OUT_SSP_LOOPBACK(DAI_TYPE, DAI_INDEX, DAI_BE, DAI_FORMAT, 0, 
>>> 2, 2)
>>> +
>>> +#
>>> +# DAI pipeline - always use 0 for DAIs
>>> +#
>>> +W_PIPELINE(N_DAI_OUT, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, 
>>> SCHEDULE_FRAMES,
>>> SCHEDULE_CORE, 0, pipe_dai_schedule_plat)
>>> +
>>> +#
>>> +# Graph connections to pipelines
>>> +
>>> +P_GRAPH(DAI_NAME, PIPELINE_ID,
>>> +    LIST(`        ', `dapm(N_DAI_OUT, DAI_BUF)'))
>>> diff --git a/topology/test/test-loopback.m4 
>>> b/topology/test/test-loopback.m4
>>> new file mode 100644
>>> index 0000000..bc5e0ec
>>> --- /dev/null
>>> +++ b/topology/test/test-loopback.m4
>>> @@ -0,0 +1,96 @@
>>> +#
>>> +# Topology for pass through pipeline
>>> +#
>>> +
>>> +# Include topology builder
>>> +include(`dai.m4')
>>> +include(`utils.m4')
>>> +include(`pipeline.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_DAI_PORT    - SSP port number e.g. 2
>>> +# TEST_DAI_FORMAT - SSP data format e.g s16le
>>> +# TEST_PIPE_FORMAT - Pipeline format e.g. s16le
>>> +# TEST_SSP_MCLK - SSP BCLK in Hz
>>> +# TEST_SSP_BCLK - SSP BCLK in Hz
>>> +# TEST_SSP_PHY_BITS - SSP physical slot size
>>> +# TEST_SSP_DATA_BITS - SSP data slot size
>>> +# TEST_SSP_MODE - SSP mode e.g. I2S, LEFT_J, DSP_A and DSP_B
>>> +#
>>> +
>>> +#
>>> +# Define the pipeline
>>> +#
>>> +# PCM0 <-- TEST_PIPE_NAME pipe --> SSP TEST_DAI_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,
>>> +    TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_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,
>>> +    TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_FORMAT, 2)
>>> +
>>> +#
>>> +# DAI configuration
>>> +#
>>> +# SSP port TEST_DAI_PORT is our only pipeline DAI
>>> +#
>>> +
>>> +# playback DAI is SSP TEST_DAI_PORT using 2 periods
>>> +# Buffers use s24le format, with 48 frame per 1000us on core 0 with 
>>> priority
>>> 0
>>> +DAI_ADD(sof/pipe-dai-loopback.m4,
>>> +    1, TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_LINK_NAME,
>>> +    PIPELINE_SOURCE_1, 2, TEST_DAI_FORMAT,
>>> +    48, 1000, 0, 0)
>>> +
>>> +# capture DAI is SSP TEST_DAI_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, TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_LINK_NAME,
>>> +    PIPELINE_SINK_2, 2, TEST_DAI_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_DAI_PORT
>>> +#
>>> +DAI_CONFIG(TEST_DAI_TYPE, TEST_DAI_PORT, 0, TEST_DAI_LINK_NAME,
>>> +       SSP_CONFIG(TEST_SSP_MODE,
>>> +              DAI_CLOCK(mclk, TEST_SSP_MCLK, codec_mclk_in),
>>> +              DAI_CLOCK(bclk, TEST_SSP_BCLK, codec_slave),
>>> +              DAI_CLOCK(fsync, 48000, codec_slave),
>>> +              DAI_TDM(2, TEST_SSP_PHY_BITS, 3, 3),
>>> +              SSP_SAMPLE_BITS(TEST_DAI_TYPE, TEST_DAI_PORT,
>>> +                      TEST_SSP_DATA_BITS)))
>>> diff --git a/topology/test/tplg-build.sh b/topology/test/tplg-build.sh
>>> index 6721768..facbe17 100755
>>> --- a/topology/test/tplg-build.sh
>>> +++ b/topology/test/tplg-build.sh
>>> @@ -12,7 +12,7 @@ export M4PATH="../:../m4:../common"
>>>     # Simple component test cases
>>>   # can be used on components with 1 sink and 1 source.
>>> -SIMPLE_TESTS=(test-all test-capture test-playback)
>>> +SIMPLE_TESTS=(test-all test-capture test-playback test-loopback)
>>>   TONE_TEST=test-tone-playback
>>>   DMIC_TEST=test-capture
>>>   TEST_STRINGS=""
>> _______________________________________________
>> Sound-open-firmware mailing list
>> Sound-open-firmware at alsa-project.org
>> http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
>
> _______________________________________________
> Sound-open-firmware mailing list
> Sound-open-firmware at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware



More information about the Sound-open-firmware mailing list