[Sound-open-firmware] [PATCH 4/5] topology: create m4 wrapper for VendorTuples section in pipeline definition

Ranjani Sridharan ranjani.sridharan at linux.intel.com
Mon Mar 5 07:53:13 CET 2018


This patch adds a m4 wrpper for Vendor Tuples sections
in pipeline definition

Signed-off-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
---
 topology/dsps/bdw.m4              | 59 +++++----------------------------------
 topology/dsps/bxt.m4              | 59 +++++----------------------------------
 topology/dsps/byt.m4              | 59 +++++----------------------------------
 topology/dsps/cht.m4              | 59 +++++----------------------------------
 topology/dsps/hsw.m4              | 59 +++++----------------------------------
 topology/m4/local.m4              | 13 +++++++++
 topology/sof/pipe-pcm-media.m4    |  8 +-----
 topology/sof/pipe-src-capture.m4  |  8 +-----
 topology/sof/pipe-src-playback.m4 |  8 +-----
 9 files changed, 51 insertions(+), 281 deletions(-)

diff --git a/topology/dsps/bdw.m4 b/topology/dsps/bdw.m4
index 428e8bb..ca8d712 100644
--- a/topology/dsps/bdw.m4
+++ b/topology/dsps/bdw.m4
@@ -3,94 +3,49 @@
 #
 
 # Low Latency PCM Configuration
-SectionVendorTuples."pipe_ll_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"50000"
-	}
-}
+W_VENDORTUPLES(pipe_ll_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"50000"'))
 
 SectionData."pipe_ll_schedule_plat" {
 	tuples "pipe_ll_schedule_plat_tokens"
 }
 
 # Media PCM Configuration
-SectionVendorTuples."pipe_media_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"100000"
-	}
-}
+W_VENDORTUPLES(pipe_media_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"100000"'))
 
 SectionData."pipe_media_schedule_plat" {
 	tuples "pipe_media_schedule_plat_tokens"
 }
 
 # Tone Signal Generator Configuration
-SectionVendorTuples."pipe_tone_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"200000"
-	}
-}
+W_VENDORTUPLES(pipe_tone_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"200000"'))
 
 SectionData."pipe_tone_schedule_plat" {
 	tuples "pipe_tone_schedule_plat_tokens"
 }
 
 # DAI0 platform playback configuration
-SectionVendorTuples."dai0p_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"0"
-	}
-}
+W_VENDORTUPLES(dai0p_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC_CHAN	"0"'))
 
 SectionData."dai0p_plat_conf" {
 	tuples "dai0p_plat_tokens"
 }
 
 # DAI0 platform capture configuration
-SectionVendorTuples."dai0c_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"1"
-	}
-}
+W_VENDORTUPLES(dai0c_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC	"1"'))
 
 SectionData."dai0c_plat_conf" {
 	tuples "dai0c_plat_tokens"
 }
 
 # PCM platform configuration
-SectionVendorTuples."pcm_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	PIPELINE_DMAC
-		SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN
-	}
-}
+W_VENDORTUPLES(pcm_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	PIPELINE_DMAC', `SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN'))
 
 SectionData."pcm_plat_conf" {
 	tuples "pcm_plat_tokens"
 }
 
 # DAI schedule Configuration - scheduled by IRQ
-SectionVendorTuples."pipe_dai_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"5000"
-	}
-}
+W_VENDORTUPLES(pipe_dai_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"5000"'))
 
 SectionData."pipe_dai_schedule_plat" {
 	tuples "pipe_dai_schedule_plat_tokens"
diff --git a/topology/dsps/bxt.m4 b/topology/dsps/bxt.m4
index 688e9fa..5ab353e 100644
--- a/topology/dsps/bxt.m4
+++ b/topology/dsps/bxt.m4
@@ -3,94 +3,49 @@
 #
 
 # Low Latency PCM Configuration
-SectionVendorTuples."pipe_ll_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"50000"
-	}
-}
+W_VENDORTUPLES(pipe_ll_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"50000"'))
 
 SectionData."pipe_ll_schedule_plat" {
 	tuples "pipe_ll_schedule_plat_tokens"
 }
 
 # Media PCM Configuration
-SectionVendorTuples."pipe_media_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"100000"
-	}
-}
+W_VENDORTUPLES(pipe_media_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"100000"'))
 
 SectionData."pipe_media_schedule_plat" {
 	tuples "pipe_media_schedule_plat_tokens"
 }
 
 # Tone Signal Generator Configuration
-SectionVendorTuples."pipe_tone_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"200000"
-	}
-}
+W_VENDORTUPLES(pipe_tone_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"200000"'))
 
 SectionData."pipe_tone_schedule_plat" {
 	tuples "pipe_tone_schedule_plat_tokens"
 }
 
 # DAI0 platform playback configuration
-SectionVendorTuples."dai0p_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"0"
-	}
-}
+W_VENDORTUPLES(dai0p_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC_CHAN	"0"'))
 
 SectionData."dai0p_plat_conf" {
 	tuples "dai0p_plat_tokens"
 }
 
 # DAI0 platform capture configuration
-SectionVendorTuples."dai0c_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"1"
-	}
-}
+W_VENDORTUPLES(dai0c_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC	"1"'))
 
 SectionData."dai0c_plat_conf" {
 	tuples "dai0c_plat_tokens"
 }
 
 # PCM platform configuration
-SectionVendorTuples."pcm_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	PIPELINE_DMAC
-		SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN
-	}
-}
+W_VENDORTUPLES(pcm_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	PIPELINE_DMAC', `SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN'))
 
 SectionData."pcm_plat_conf" {
 	tuples "pcm_plat_tokens"
 }
 
 # DAI schedule Configuration - scheduled by IRQ
-SectionVendorTuples."pipe_dai_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"5000"
-	}
-}
+W_VENDORTUPLES(pipe_dai_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"5000"'))
 
 SectionData."pipe_dai_schedule_plat" {
 	tuples "pipe_dai_schedule_plat_tokens"
diff --git a/topology/dsps/byt.m4 b/topology/dsps/byt.m4
index b4defaa..2091573 100644
--- a/topology/dsps/byt.m4
+++ b/topology/dsps/byt.m4
@@ -3,94 +3,49 @@
 #
 
 # Low Latency PCM Configuration
-SectionVendorTuples."pipe_ll_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"50000"
-	}
-}
+W_VENDORTUPLES(pipe_ll_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"50000"'))
 
 SectionData."pipe_ll_schedule_plat" {
 	tuples "pipe_ll_schedule_plat_tokens"
 }
 
 # Media PCM Configuration
-SectionVendorTuples."pipe_media_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"100000"
-	}
-}
+W_VENDORTUPLES(pipe_media_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"100000"'))
 
 SectionData."pipe_media_schedule_plat" {
 	tuples "pipe_media_schedule_plat_tokens"
 }
 
 # Tone Signal Generator Configuration
-SectionVendorTuples."pipe_tone_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"200000"
-	}
-}
+W_VENDORTUPLES(pipe_tone_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"200000"'))
 
 SectionData."pipe_tone_schedule_plat" {
 	tuples "pipe_tone_schedule_plat_tokens"
 }
 
 # DAI0 platform playback configuration
-SectionVendorTuples."dai0p_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"0"
-	}
-}
+W_VENDORTUPLES(dai0p_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC_CHAN	"0"'))
 
 SectionData."dai0p_plat_conf" {
 	tuples "dai0p_plat_tokens"
 }
 
 # DAI0 platform capture configuration
-SectionVendorTuples."dai0c_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"1"
-	}
-}
+W_VENDORTUPLES(dai0c_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC	"1"'))
 
 SectionData."dai0c_plat_conf" {
 	tuples "dai0c_plat_tokens"
 }
 
 # PCM platform configuration
-SectionVendorTuples."pcm_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	PIPELINE_DMAC
-		SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN
-	}
-}
+W_VENDORTUPLES(pcm_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	PIPELINE_DMAC', `SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN'))
 
 SectionData."pcm_plat_conf" {
 	tuples "pcm_plat_tokens"
 }
 
 # DAI schedule Configuration - scheduled by IRQ
-SectionVendorTuples."pipe_dai_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"5000"
-	}
-}
+W_VENDORTUPLES(pipe_dai_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"5000"'))
 
 SectionData."pipe_dai_schedule_plat" {
 	tuples "pipe_dai_schedule_plat_tokens"
diff --git a/topology/dsps/cht.m4 b/topology/dsps/cht.m4
index fdee83d..97bee2b 100644
--- a/topology/dsps/cht.m4
+++ b/topology/dsps/cht.m4
@@ -3,94 +3,49 @@
 #
 
 # Low Latency PCM Configuration
-SectionVendorTuples."pipe_ll_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"50000"
-	}
-}
+W_VENDORTUPLES(pipe_ll_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"50000"'))
 
 SectionData."pipe_ll_schedule_plat" {
 	tuples "pipe_ll_schedule_plat_tokens"
 }
 
 # Media PCM Configuration
-SectionVendorTuples."pipe_media_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"100000"
-	}
-}
+W_VENDORTUPLES(pipe_media_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"100000"'))
 
 SectionData."pipe_media_schedule_plat" {
 	tuples "pipe_media_schedule_plat_tokens"
 }
 
 # Tone Signal Generator Configuration
-SectionVendorTuples."pipe_tone_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"200000"
-	}
-}
+W_VENDORTUPLES(pipe_tone_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"200000"'))
 
 SectionData."pipe_tone_schedule_plat" {
 	tuples "pipe_tone_schedule_plat_tokens"
 }
 
 # DAI0 platform playback configuration
-SectionVendorTuples."dai0p_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"0"
-	}
-}
+W_VENDORTUPLES(dai0p_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC_CHAN	"0"'))
 
 SectionData."dai0p_plat_conf" {
 	tuples "dai0p_plat_tokens"
 }
 
 # DAI0 platform capture configuration
-SectionVendorTuples."dai0c_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"1"
-	}
-}
+W_VENDORTUPLES(dai0c_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC	"1"'))
 
 SectionData."dai0c_plat_conf" {
 	tuples "dai0c_plat_tokens"
 }
 
 # PCM platform configuration
-SectionVendorTuples."pcm_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	PIPELINE_DMAC
-		SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN
-	}
-}
+W_VENDORTUPLES(pcm_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	PIPELINE_DMAC', `SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN'))
 
 SectionData."pcm_plat_conf" {
 	tuples "pcm_plat_tokens"
 }
 
 # DAI schedule Configuration - scheduled by IRQ
-SectionVendorTuples."pipe_dai_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"5000"
-	}
-}
+W_VENDORTUPLES(pipe_dai_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"5000"'))
 
 SectionData."pipe_dai_schedule_plat" {
 	tuples "pipe_dai_schedule_plat_tokens"
diff --git a/topology/dsps/hsw.m4 b/topology/dsps/hsw.m4
index edb417f..9233e45 100644
--- a/topology/dsps/hsw.m4
+++ b/topology/dsps/hsw.m4
@@ -3,94 +3,49 @@
 #
 
 # Low Latency PCM Configuration
-SectionVendorTuples."pipe_ll_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"50000"
-	}
-}
+W_VENDORTUPLES(pipe_ll_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"50000"'))
 
 SectionData."pipe_ll_schedule_plat" {
 	tuples "pipe_ll_schedule_plat_tokens"
 }
 
 # Media PCM Configuration
-SectionVendorTuples."pipe_media_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"100000"
-	}
-}
+W_VENDORTUPLES(pipe_media_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"100000"'))
 
 SectionData."pipe_media_schedule_plat" {
 	tuples "pipe_media_schedule_plat_tokens"
 }
 
 # Tone Signal Generator Configuration
-SectionVendorTuples."pipe_tone_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"200000"
-	}
-}
+W_VENDORTUPLES(pipe_tone_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"200000"'))
 
 SectionData."pipe_tone_schedule_plat" {
 	tuples "pipe_tone_schedule_plat_tokens"
 }
 
 # DAI0 platform playback configuration
-SectionVendorTuples."dai0p_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"0"
-	}
-}
+W_VENDORTUPLES(dai0p_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC_CHAN	"0"'))
 
 SectionData."dai0p_plat_conf" {
 	tuples "dai0p_plat_tokens"
 }
 
 # DAI0 platform capture configuration
-SectionVendorTuples."dai0c_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	"1"
-		SOF_TKN_DAI_DMAC_CHAN	"1"
-	}
-}
+W_VENDORTUPLES(dai0c_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	"1"', `SOF_TKN_DAI_DMAC	"1"'))
 
 SectionData."dai0c_plat_conf" {
 	tuples "dai0c_plat_tokens"
 }
 
 # PCM platform configuration
-SectionVendorTuples."pcm_plat_tokens" {
-	tokens "sof_dai_tokens"
-
-	tuples."word" {
-		SOF_TKN_DAI_DMAC	PIPELINE_DMAC
-		SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN
-	}
-}
+W_VENDORTUPLES(pcm_plat_tokens, sof_dai_tokens, TUPLES(`SOF_TKN_DAI_DMAC	PIPELINE_DMAC', `SOF_TKN_DAI_DMAC_CHAN	PIPELINE_DMAC_CHAN'))
 
 SectionData."pcm_plat_conf" {
 	tuples "pcm_plat_tokens"
 }
 
 # DAI schedule Configuration - scheduled by IRQ
-SectionVendorTuples."pipe_dai_schedule_plat_tokens" {
-	tokens "sof_sched_tokens"
-
-	tuples."word" {
-		SOF_TKN_SCHED_MIPS	"5000"
-	}
-}
+W_VENDORTUPLES(pipe_dai_schedule_plat_tokens, sof_sched_tokens, TUPLES(`SOF_TKN_SCHED_MIPS	"5000"'))
 
 SectionData."pipe_dai_schedule_plat" {
 	tuples "pipe_dai_schedule_plat_tokens"
diff --git a/topology/m4/local.m4 b/topology/m4/local.m4
index b338c7f..c081052 100644
--- a/topology/m4/local.m4
+++ b/topology/m4/local.m4
@@ -19,6 +19,9 @@ define(`PIPELINEGRAPH', `pushdef(`i', $#)pushdef(`j', `1')PIPELINEGRAPH_LOOP($@)
 define(`PIPELINEGRAPH_LOOP',`argn(j,$@)
 		ifelse(i,`1', `',`define(`i', decr(i))define(`j', incr(j))$0($@)')')
 
+define(`TUPLES', `pushdef(`i', $#)pushdef(`j', `1')TUPLES_LOOP($@)popdef(i)popdef(j)')
+define(`TUPLES_LOOP',`argn(j,$@)
+		ifelse(i,`1', `',`define(`i', decr(i))define(`j', incr(j))$0($@)')')
 
 dnl create direct DAPM/pipeline link between 2 widgets)
 define(`dapm', `"$1, , $2"')
@@ -628,6 +631,16 @@ define(`PCM_CAPABILITIES',
 `	buffer_size_max	STR($12)'
 `}')
 
+dnl W_VENDORTUPLES(name, tokens, RATE_OUT)
+define(`W_VENDORTUPLES',
+`SectionVendorTuples.STR($1) {'
+`	tokens STR($2)'
+`'
+`	tuples."word" {'
+`		$3'
+`	}'
+`}')
+
 divert(0) dnl
 
 
diff --git a/topology/sof/pipe-pcm-media.m4 b/topology/sof/pipe-pcm-media.m4
index dd89361..2bf2bd4 100644
--- a/topology/sof/pipe-pcm-media.m4
+++ b/topology/sof/pipe-pcm-media.m4
@@ -26,13 +26,7 @@ C_CONTROLMIXER(PCM PCM_ID Playback Volume, PIPELINE_ID,
 # SRC Configuration
 #
 
-SectionVendorTuples."media_src_tokens" {
-	tokens "sof_src_tokens"
-
-	tuples."word" {
-		SOF_TKN_SRC_RATE_OUT	"48000"
-	}
-}
+W_VENDORTUPLES(media_src_tokens, sof_src_tokens, TUPLES(`SOF_TKN_SRC_RATE_OUT	"48000"'))
 
 SectionData."media_src_conf" {
 	tuples "media_src_tokens"
diff --git a/topology/sof/pipe-src-capture.m4 b/topology/sof/pipe-src-capture.m4
index e1ae5a9..a58242d 100644
--- a/topology/sof/pipe-src-capture.m4
+++ b/topology/sof/pipe-src-capture.m4
@@ -20,13 +20,7 @@ W_PCM_CAPTURE(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"
-	}
-}
+W_VENDORTUPLES(media_src_tokens, sof_src_tokens, TUPLES(`SOF_TKN_SRC_RATE_OUT	"48000"'))
 
 SectionData."media_src_conf" {
 	tuples "media_src_tokens"
diff --git a/topology/sof/pipe-src-playback.m4 b/topology/sof/pipe-src-playback.m4
index 276a510..0fc7fcc 100644
--- a/topology/sof/pipe-src-playback.m4
+++ b/topology/sof/pipe-src-playback.m4
@@ -20,13 +20,7 @@ W_PCM_PLAYBACK(Passthrough Playback, 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"
-	}
-}
+W_VENDORTUPLES(media_src_tokens, sof_src_tokens, TUPLES(`SOF_TKN_SRC_RATE_OUT	"48000"'))
 
 SectionData."media_src_conf" {
 	tuples "media_src_tokens"
-- 
2.14.1



More information about the Sound-open-firmware mailing list