[Sound-open-firmware] [PATCH] topology: Include DAI format in pipeline definitions
Liam Girdwood
liam.r.girdwood at linux.intel.com
Mon Aug 21 21:30:33 CEST 2017
Make sure we allow different DAI formats in pipelines.
Signed-off-by: Liam Girdwood <liam.r.girdwood at linux.intel.com>
---
topology/m4/build.m4 | 6 ++++--
topology/m4/local.m4 | 29 +++++++++++++++++++++++++----
topology/sof/pipe-dai-capture.m4 | 2 +-
topology/sof/pipe-dai-playback.m4 | 2 +-
topology/sof/pipe-passthrough-playback.m4 | 8 ++++----
5 files changed, 35 insertions(+), 12 deletions(-)
diff --git a/topology/m4/build.m4 b/topology/m4/build.m4
index 66f6562..843dcbb 100644
--- a/topology/m4/build.m4
+++ b/topology/m4/build.m4
@@ -26,7 +26,7 @@ define(`PIPELINE_PCM_ADD',
)
dnl PIPELINE_PCM_DAI_ADD(pipeline, id, pcm, max channels, format, frames,
-dnl deadline, priority, core, dai type, dai_index, stream_name, periods)
+dnl deadline, priority, core, dai type, dai_index, stream_name, dai format, periods)
define(`PIPELINE_PCM_DAI_ADD',
`undefine(`PCM_ID')'
`undefine(`PIPELINE_ID')'
@@ -41,6 +41,7 @@ define(`PIPELINE_PCM_DAI_ADD',
`undefine(`DAI_TYPE')'
`undefine(`DAI_INDEX')'
`undefine(`DAI_SNAME')'
+`undefine(`DAI_FORMAT')'
`undefine(`DAI_PERIODS')'
`define(`PIPELINE_ID', $2)'
`define(`PCM_ID', $3)'
@@ -55,7 +56,8 @@ define(`PIPELINE_PCM_DAI_ADD',
`define(`DAI_TYPE', STR($12))'
`define(`DAI_INDEX', STR($13))'
`define(`DAI_SNAME', $14)'
-`define(`DAI_PERIODS', $15)'
+`define(`DAI_FORMAT', $15)'
+`define(`DAI_PERIODS', $16)'
`define(`DAI_NAME', $12$13)'
`include($1)'
)
diff --git a/topology/m4/local.m4 b/topology/m4/local.m4
index a559670..7bcebee 100644
--- a/topology/m4/local.m4
+++ b/topology/m4/local.m4
@@ -253,7 +253,7 @@ define(`N_DAI', DAI_NAME)
define(`N_DAI_OUT', DAI_NAME`.OUT')
define(`N_DAI_IN', DAI_NAME`.IN')
-dnl W_DAI_OUT(stream, type, index, data, periods_sink, periods_source, preload)
+dnl W_DAI_OUT(stream, type, index, format, periods_sink, periods_source, preload, data)
define(`W_DAI_OUT',
`SectionVendorTuples."'N_DAI_OUT($1)`_tuples_w_comp" {'
` tokens "sof_comp_tokens"'
@@ -284,6 +284,15 @@ define(`W_DAI_OUT',
`SectionData."'N_DAI_OUT($1)`_data_str" {'
` tuples "'N_DAI_OUT($1)`_tuples_str"'
`}'
+`SectionVendorTuples."'N_DAI_OUT($1)`_tuples_comp_str" {'
+` tokens "sof_comp_tokens"'
+` tuples."string" {'
+` SOF_TKN_COMP_FORMAT' STR($4)
+` }'
+`}'
+`SectionData."'N_DAI_OUT($1)`_data_comp_str" {'
+` tuples "'N_DAI_OUT($1)`_tuples_comp_str"'
+`}'
`SectionWidget."'N_DAI_OUT`" {'
` index "'PIPELINE_ID`"'
` type "dai_in"'
@@ -293,11 +302,12 @@ define(`W_DAI_OUT',
` "'N_DAI_OUT($1)`_data_w"'
` "'N_DAI_OUT($1)`_data_w_comp"'
` "'N_DAI_OUT($1)`_data_str"'
-` "'$4`"'
+` "'N_DAI_OUT($1)`_data_comp_str"'
+` "'$8`"'
` ]'
`}')
-dnl W_DAI_IN(stream, type, index, data, periods_sink, periods_source, preload)
+dnl W_DAI_IN(stream, type, index, format, periods_sink, periods_source, preload, data)
define(`W_DAI_IN',
`SectionVendorTuples."'N_DAI_IN($1)`_tuples_w_comp" {'
` tokens "sof_comp_tokens"'
@@ -328,6 +338,15 @@ define(`W_DAI_IN',
`SectionData."'N_DAI_IN($1)`_data_str" {'
` tuples "'N_DAI_IN($1)`_tuples_str"'
`}'
+`SectionVendorTuples."'N_DAI_IN($1)`_tuples_comp_str" {'
+` tokens "sof_comp_tokens"'
+` tuples."string" {'
+` SOF_TKN_COMP_FORMAT' STR($4)
+` }'
+`}'
+`SectionData."'N_DAI_IN($1)`_data_comp_str" {'
+` tuples "'N_DAI_IN($1)`_tuples_comp_str"'
+`}'
`SectionWidget."'N_DAI_IN`" {'
` index "'PIPELINE_ID`"'
` type "dai_out"'
@@ -337,7 +356,8 @@ define(`W_DAI_IN',
` "'N_DAI_IN($1)`_data_w"'
` "'N_DAI_IN($1)`_data_w_comp"'
` "'N_DAI_IN($1)`_data_str"'
-` "'$4`"'
+` "'N_DAI_OUT($1)`_data_comp_str"'
+` "'$8`"'
` ]'
`}')
@@ -447,6 +467,7 @@ define(`COMP_SAMPLE_SIZE',
$1, `s16le', `2',
$1, `s24_4le', `4',
$1, `s32le', `4',
+ $1, `float', `4',
`4')')
diff --git a/topology/sof/pipe-dai-capture.m4 b/topology/sof/pipe-dai-capture.m4
index 887cd0c..cc44c0e 100644
--- a/topology/sof/pipe-dai-capture.m4
+++ b/topology/sof/pipe-dai-capture.m4
@@ -6,7 +6,7 @@ include(`local.m4')
#
# DAI definitions
#
-W_DAI_IN(DAI_SNAME, DAI_TYPE, DAI_INDEX, dai0c_plat_conf)
+W_DAI_IN(DAI_SNAME, DAI_TYPE, DAI_INDEX, DAI_FORMAT, 2, 0, 0, dai0c_plat_conf)
#
# DAI pipeline - always use 0 for DAIs
diff --git a/topology/sof/pipe-dai-playback.m4 b/topology/sof/pipe-dai-playback.m4
index f3d08c0..f0967c2 100644
--- a/topology/sof/pipe-dai-playback.m4
+++ b/topology/sof/pipe-dai-playback.m4
@@ -6,7 +6,7 @@ include(`local.m4')
#
# DAI definitions
#
-W_DAI_OUT(DAI_SNAME, DAI_TYPE, DAI_INDEX, dai0p_plat_conf)
+W_DAI_OUT(DAI_SNAME, DAI_TYPE, DAI_INDEX, DAI_FORMAT, 0, 2, 2, dai0p_plat_conf)
#
# DAI pipeline - always use 0 for DAIs
diff --git a/topology/sof/pipe-passthrough-playback.m4 b/topology/sof/pipe-passthrough-playback.m4
index 98b479f..a6ecb32 100644
--- a/topology/sof/pipe-passthrough-playback.m4
+++ b/topology/sof/pipe-passthrough-playback.m4
@@ -16,14 +16,14 @@ include(`local.m4')
# with 2 sink and 0 source periods
W_PCM_PLAYBACK(Passthrough Playback, PIPELINE_DMAC, PIPELINE_DMAC_CHAN, 2, 0, 2)
-# Capture Buffers
+# Playback Buffers
W_BUFFER(0, COMP_BUFFER_SIZE(2,
COMP_SAMPLE_SIZE(PIPELINE_FORMAT), PIPELINE_CHANNELS, SCHEDULE_FRAMES))
#
# DAI definitions
#
-W_DAI_OUT(DAI_SNAME, DAI_TYPE, DAI_INDEX, dai0p_plat_conf)
+W_DAI_OUT(DAI_SNAME, DAI_TYPE, DAI_INDEX, DAI_FORMAT, 0, 2, 2, dai0p_plat_conf)
#
# DAI pipeline - always use 0 for DAIs
@@ -33,7 +33,7 @@ W_PIPELINE(N_DAI_OUT, SCHEDULE_DEADLINE, SCHEDULE_PRIORITY, SCHEDULE_FRAMES, SCH
#
# Pipeline Graph
#
-# host PCM <--B1-- volume <--B0-- source DAI0
+# host PCM_P --> B0 --> sink DAI0
SectionGraph."pipe-pass-playback-PIPELINE_ID" {
index STR(PIPELINE_ID)
@@ -65,7 +65,7 @@ SectionPCMCapabilities.STR(Passthrough Playback PCM_ID) {
buffer_size_max "65536"
}
-# PCM Low Latency Capture
+# PCM Low Latency Passthrough Playback
SectionPCM.STR(PCM PCM_ID) {
index STR(PIPELINE_ID)
--
2.11.0
More information about the Sound-open-firmware
mailing list