[Sound-open-firmware] [PATCH 1/3] topology: Add SOF_TKN_DAI_LBM for ssp loopback mode
From: Pan Xiuli xiuli.pan@linux.intel.com
Add token SOF_TKN_DAI_LBM for SSP loopback mode.
Signed-off-by: Pan Xiuli xiuli.pan@linux.intel.com --- Work with patch set: SOF-Kernel: ASoC: SOF: upai: ipc: Add lbm in sof_ipc_dai_config ASoC: SOF: uapi: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode ASoC: SOF: topology: Add topology handler for dai config loopback mode SOF: uapi: ipc: Add lbm in sof_ipc_dai_config IPC: Add IPC handler for dai config loopback mode SOF-Tools: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode topology: m4: Add option for loopback mode in DAI config topology: test: Add loopback topology
test & santity test with: Mininow max rt5651 and UP2 Hifiberry PRO and CNL nocodec SOF master: 65ddcddfcc9a20f5b622cf3ba93dc326387a9d5d SOF-Tool master: 07d290c8ac6026af28bada021ac2215e3453fa88 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 3ffd39334cb53aced88b8aba17cae3df9ee2736f
--- topology/sof/tokens.m4 | 1 + 1 file changed, 1 insertion(+)
diff --git a/topology/sof/tokens.m4 b/topology/sof/tokens.m4 index d1230d8..51f0cf7 100644 --- a/topology/sof/tokens.m4 +++ b/topology/sof/tokens.m4 @@ -21,6 +21,7 @@ SectionVendorTokens."sof_dai_tokens" { SOF_TKN_DAI_TYPE "154" SOF_TKN_DAI_INDEX "155" SOF_TKN_DAI_SAMPLE_BITS "156" + SOF_TKN_DAI_LBM "157" }
SectionVendorTokens."sof_sched_tokens" {
From: Pan Xiuli xiuli.pan@linux.intel.com
Add a option for loopback mode in DAI config
Signed-off-by: Pan Xiuli xiuli.pan@linux.intel.com --- Work with patch set: SOF-Kernel: ASoC: SOF: upai: ipc: Add lbm in sof_ipc_dai_config ASoC: SOF: uapi: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode ASoC: SOF: topology: Add topology handler for dai config loopback mode SOF: uapi: ipc: Add lbm in sof_ipc_dai_config IPC: Add IPC handler for dai config loopback mode SOF-Tools: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode topology: m4: Add option for loopback mode in DAI config topology: test: Add loopback topology
test & santity test with: Mininow max rt5651 and UP2 Hifiberry PRO and CNL nocodec SOF master: 65ddcddfcc9a20f5b622cf3ba93dc326387a9d5d SOF-Tool master: 07d290c8ac6026af28bada021ac2215e3453fa88 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 3ffd39334cb53aced88b8aba17cae3df9ee2736f
--- topology/m4/dai.m4 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/topology/m4/dai.m4 b/topology/m4/dai.m4 index a349a3c..02e6562 100644 --- a/topology/m4/dai.m4 +++ b/topology/m4/dai.m4 @@ -218,7 +218,7 @@ $11 dnl DAI Config) define(`N_DAI_CONFIG', `DAICONFIG.'$1)
-dnl DAI_CONFIG(type, idx, link_id, name, ssp_config/dmic_config) +dnl DAI_CONFIG(type, idx, link_id, name, ssp_config/dmic_config, loopbackmode) define(`DAI_CONFIG', `SectionHWConfig."'$1$2`" {' `' @@ -230,6 +230,7 @@ define(`DAI_CONFIG', ` tokens "sof_dai_tokens"' ` tuples."string" {' ` SOF_TKN_DAI_TYPE' STR($1) +`ifelse($6,`',`' , ` SOF_TKN_DAI_LBM "TRUE"')' ` }' `}' `SectionData."'N_DAI_CONFIG($1$2)`_data_str" {'
From: Pan Xiuli xiuli.pan@linux.intel.com
Loopback topology will enable SSP DAI loopback mode. This can loopback the SSP data.
Signed-off-by: Pan Xiuli xiuli.pan@linux.intel.com --- Work with patch set: SOF-Kernel: ASoC: SOF: upai: ipc: Add lbm in sof_ipc_dai_config ASoC: SOF: uapi: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode ASoC: SOF: topology: Add topology handler for dai config loopback mode SOF: uapi: ipc: Add lbm in sof_ipc_dai_config IPC: Add IPC handler for dai config loopback mode SOF-Tools: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode topology: m4: Add option for loopback mode in DAI config topology: test: Add loopback topology
test & santity test with: Mininow max rt5651 and UP2 Hifiberry PRO and CNL nocodec SOF master: 65ddcddfcc9a20f5b622cf3ba93dc326387a9d5d SOF-Tool master: 07d290c8ac6026af28bada021ac2215e3453fa88 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 3ffd39334cb53aced88b8aba17cae3df9ee2736f
--- topology/test/test-loopback.m4 | 97 ++++++++++++++++++++++++++++++++++++++++++ topology/test/tplg-build.sh | 2 +- 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 topology/test/test-loopback.m4
diff --git a/topology/test/test-loopback.m4 b/topology/test/test-loopback.m4 new file mode 100644 index 0000000..4cb96a9 --- /dev/null +++ b/topology/test/test-loopback.m4 @@ -0,0 +1,97 @@ +# +# 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-playback.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)), + "TRUE") diff --git a/topology/test/tplg-build.sh b/topology/test/tplg-build.sh index a48f1d2..b5183ae 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=""
On Mon, 2018-06-04 at 14:39 +0800, Xiuli Pan wrote:
From: Pan Xiuli xiuli.pan@linux.intel.com
Loopback topology will enable SSP DAI loopback mode. This can loopback the SSP data.
Signed-off-by: Pan Xiuli xiuli.pan@linux.intel.com
Work with patch set: SOF-Kernel: ASoC: SOF: upai: ipc: Add lbm in sof_ipc_dai_config ASoC: SOF: uapi: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode ASoC: SOF: topology: Add topology handler for dai config loopback mode SOF: uapi: ipc: Add lbm in sof_ipc_dai_config IPC: Add IPC handler for dai config loopback mode SOF-Tools: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode topology: m4: Add option for loopback mode in DAI config topology: test: Add loopback topology
test & santity test with: Mininow max rt5651 and UP2 Hifiberry PRO and CNL nocodec SOF master: 65ddcddfcc9a20f5b622cf3ba93dc326387a9d5d SOF-Tool master: 07d290c8ac6026af28bada021ac2215e3453fa88 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 3ffd39334cb53aced88b8aba17cae3df9ee2736f
topology/test/test-loopback.m4 | 97 ++++++++++++++++++++++++++++++++++++++++++ topology/test/tplg-build.sh | 2 +- 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 topology/test/test-loopback.m4
I want to see loopback added as a kcontrol switch type. Maybe the best way is to create a ssp.m4 that uses the existing DAI macros and also includes a kcontrol OR you could create a new DAI_KCONTROL macro ?
Liam
On 6/4/2018 16:37, Liam Girdwood wrote:
On Mon, 2018-06-04 at 14:39 +0800, Xiuli Pan wrote:
From: Pan Xiuli xiuli.pan@linux.intel.com
Loopback topology will enable SSP DAI loopback mode. This can loopback the SSP data.
Signed-off-by: Pan Xiuli xiuli.pan@linux.intel.com
Work with patch set: SOF-Kernel: ASoC: SOF: upai: ipc: Add lbm in sof_ipc_dai_config ASoC: SOF: uapi: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode ASoC: SOF: topology: Add topology handler for dai config loopback mode SOF: uapi: ipc: Add lbm in sof_ipc_dai_config IPC: Add IPC handler for dai config loopback mode SOF-Tools: topology: Add SOF_TKN_DAI_LBM for ssp loopback mode topology: m4: Add option for loopback mode in DAI config topology: test: Add loopback topology
test & santity test with: Mininow max rt5651 and UP2 Hifiberry PRO and CNL nocodec SOF master: 65ddcddfcc9a20f5b622cf3ba93dc326387a9d5d SOF-Tool master: 07d290c8ac6026af28bada021ac2215e3453fa88 https://github.com/plbossart/sound/tree/topic/sof-v4.14: 3ffd39334cb53aced88b8aba17cae3df9ee2736f
topology/test/test-loopback.m4 | 97 ++++++++++++++++++++++++++++++++++++++++++ topology/test/tplg-build.sh | 2 +- 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 topology/test/test-loopback.m4
I want to see loopback added as a kcontrol switch type. Maybe the best way is to create a ssp.m4 that uses the existing DAI macros and also includes a kcontrol OR you could create a new DAI_KCONTROL macro ?
I was trying about kcontrol the whole last week. I had a RFC thread named [PTACH RFC 0/5] Add switch widget for loopback Is this look good to you?
If the topology side looks OK, then I need to figure out how to bind the widget and get some kernel patch for the switch control alongside the volume kcontrol. And I need continue to work with Ranjani to refine our controller IO handler.
Thanks Xiuli
Liam _______________________________________________ Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On Mon, 2018-06-04 at 17:04 +0800, Pan, Xiuli wrote:
create mode 100644 topology/test/test-loopback.m4
I want to see loopback added as a kcontrol switch type. Maybe the best way is to create a ssp.m4 that uses the existing DAI macros and also includes a kcontrol OR you could create a new DAI_KCONTROL macro ?
I was trying about kcontrol the whole last week. I had a RFC thread named [PTACH RFC 0/5] Add switch widget for loopback Is this look good to you?
If the topology side looks OK, then I need to figure out how to bind the widget and get some kernel patch for the switch control alongside the volume kcontrol. And I need continue to work with Ranjani to refine our controller IO handler.
Binding can be done in topology driver, just keep a list of all DAIs or AIF widgets and check this list when adding a kcontrol for binding. The kcontrol can also use a bespoke ops binding ID if needed too.
Liam
participants (3)
-
Liam Girdwood
-
Pan, Xiuli
-
Xiuli Pan