[Sound-open-firmware] [PATCH v2 1/5] topology: create m4 wrapper for mixer control section
Ranjani Sridharan
ranjani.sridharan at linux.intel.com
Mon Mar 5 08:13:07 CET 2018
This patch adds m4 wrapper for mixercontrol section in
pipeline definition
Signed-off-by: Ranjani Sridharan <ranjani.sridharan at linux.intel.com>
---
topology/m4/local.m4 | 55 +++++++++++++++++++++--
topology/sof/pipe-low-latency-capture.m4 | 36 ++++-----------
topology/sof/pipe-low-latency-playback.m4 | 73 +++++++------------------------
topology/sof/pipe-pcm-media.m4 | 37 ++++------------
topology/sof/pipe-tone.m4 | 73 +++++++------------------------
topology/sof/pipe-volume-capture.m4 | 35 ++++-----------
topology/sof/pipe-volume-playback.m4 | 70 +++++++----------------------
7 files changed, 127 insertions(+), 252 deletions(-)
diff --git a/topology/m4/local.m4 b/topology/m4/local.m4
index a340ec3..4521314 100644
--- a/topology/m4/local.m4
+++ b/topology/m4/local.m4
@@ -7,9 +7,13 @@ define(`STR', `"'$1`"')
define(`argn', `ifelse(`$1', 1, ``$2'',
`argn(decr(`$1'), shift(shift($@)))')')
-define(`KCONTROLS', `pushdef(`i', $#) pushdef(`j', `1') KCONTROL_LOOP($@)')
-define(`KCONTROL_LOOP', `argn(j,$@)
- ifelse(i,`1', `', `define(`i', decr(i)) define(`j', incr(j)) $0($@)')')
+define(`KCONTROLS', `pushdef(`i', $#)pushdef(`j', `1')KCONTROL_LOOP($@)popdef(i)popdef(j)')
+define(`KCONTROL_LOOP',`argn(j,$@)
+ ifelse(i,`1', `',`define(`i', decr(i))define(`j', incr(j))$0($@)')')
+
+define(`MIXERCONTROLS', `pushdef(`i', $#)pushdef(`j', `1')MIXERCONTROL_LOOP($@)popdef(i)popdef(j)')
+define(`MIXERCONTROL_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"')
@@ -549,4 +553,49 @@ define(`PCM_DUPLEX_ADD',
` }'
`}')
+dnl KCONTROL_CHANNEL(name, reg, shift)
+define(`KCONTROL_CHANNEL',
+`channel.STR($1) {'
+` reg STR($2)'
+` shift STR($3)'
+` }')
+
+dnl CONTROLMIXER_MAX(comment, value)
+define(`CONTROLMIXER_MAX',
+`#$1'
+` max STR($2)')
+
+dnl CONTROLMIXER_TLV(comment, value)
+define(`CONTROLMIXER_TLV',
+`#$1'
+` tlv STR($2)')
+
+dnl CONTROLMIXER_OPS(info, comment, get, put)
+define(`CONTROLMIXER_OPS',
+`ops."ctl" {'
+` info STR($1)'
+` #$2'
+` get STR($3)'
+` put STR($4)'
+` }')
+
+dnl C_CONTROLMIXER(name, index, ops, max, invert, tlv, KCONTROL_CHANNELS)
+define(`C_CONTROLMIXER',
+`SectionControlMixer.STR($1) {'
+`'
+` # control belongs to this index group'
+` index STR($2)'
+`'
+` #$7'
+` $8'
+` # control uses bespoke driver get/put/info ID'
+` $3'
+`'
+` $4'
+` invert STR($5)'
+` $6'
+`}')
+
divert(0) dnl
+
+
diff --git a/topology/sof/pipe-low-latency-capture.m4 b/topology/sof/pipe-low-latency-capture.m4
index 2602ebd..a82dee1 100644
--- a/topology/sof/pipe-low-latency-capture.m4
+++ b/topology/sof/pipe-low-latency-capture.m4
@@ -10,34 +10,14 @@ include(`local.m4')
#
# Controls
#
-
-SectionControlMixer.STR(PCM PCM_ID Capture Volume) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "0"
- shift "0"
- }
- channel."FR" {
- reg "0"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- get "256"
- put "256"
- }
-
- # TLV 40 steps from -90dB to +20dB for 3dB
- max "40"
- invert "false"
- tlv "vtlv_m90s3"
-}
+# Volume Mixer control with max value of 32
+C_CONTROLMIXER(PCM PCM_ID Capture Volume, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(, 40),
+ false,
+ CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 0, 0), KCONTROL_CHANNEL(FR, 0, 1)))
#
# Components and Buffers
diff --git a/topology/sof/pipe-low-latency-playback.m4 b/topology/sof/pipe-low-latency-playback.m4
index ebb14ec..3b8d6aa 100644
--- a/topology/sof/pipe-low-latency-playback.m4
+++ b/topology/sof/pipe-low-latency-playback.m4
@@ -25,62 +25,23 @@ include(`local.m4')
#
# Controls
#
-
-SectionControlMixer.STR(PCM PCM_ID Playback Volume) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "0"
- shift "0"
- }
- channel."FR" {
- reg "0"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- get "256"
- put "256"
- }
-
- # TLV 32 steps from -90dB to +6dB for 3dB
- max "32"
- invert "false"
- tlv "vtlv_m90s3"
-}
-
-SectionControlMixer.STR(Master Playback Volume) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "1"
- shift "0"
- }
- channel."FR" {
- reg "1"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- get "256"
- put "256"
- }
-
- # TLV 32 steps from -90dB to +6dB for 3dB
- max "32"
- invert "false"
- tlv "vtlv_m90s3"
-}
+# Volume Mixer control with max value of 32
+C_CONTROLMIXER(PCM PCM_ID Playback Volume, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(, 32),
+ false,
+ CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 0, 0), KCONTROL_CHANNEL(FR, 0, 1)))
+
+# Volume Mixer control with max value of 32
+C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(, 32),
+ false,
+ CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
#
# Components and Buffers
diff --git a/topology/sof/pipe-pcm-media.m4 b/topology/sof/pipe-pcm-media.m4
index 526ae35..65dc62d 100644
--- a/topology/sof/pipe-pcm-media.m4
+++ b/topology/sof/pipe-pcm-media.m4
@@ -13,35 +13,14 @@ include(`local.m4')
#
# Controls
#
-
-SectionControlMixer.STR(PCM PCM_ID Playback Volume) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "1"
- shift "0"
- }
- channel."FR" {
- reg "1"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- get "256"
- put "256"
- }
-
- # TLV 32 steps from -90dB to +6dB for 3dB
- max "32"
- invert "false"
- tlv "vtlv_m90s3"
-}
-
+# Volume Mixer control with max value of 32
+C_CONTROLMIXER(PCM PCM_ID Playback Volume, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(, 32),
+ false,
+ CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
#
# SRC Configuration
diff --git a/topology/sof/pipe-tone.m4 b/topology/sof/pipe-tone.m4
index 8f92680..b735146 100644
--- a/topology/sof/pipe-tone.m4
+++ b/topology/sof/pipe-tone.m4
@@ -14,62 +14,23 @@ include(`local.m4')
# Controls
#
-SectionControlMixer.STR(Tone Volume PIPELINE_ID) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "1"
- shift "0"
- }
- channel."FR" {
- reg "1"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- # 256 binds the mixer control to volume get/put handlers
- get "256"
- put "256"
- }
-
- # TLV 32 steps from -90dB to +6dB for 3dB
- max "32"
- invert "false"
- tlv "vtlv_m90s3"
-}
-
-SectionControlMixer.STR(Tone Switch PIPELINE_ID) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "2"
- shift "0"
- }
- channel."FR" {
- reg "2"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- # 256 binds the mixer control to volume get/put handlers
- get "256"
- put "256"
- }
-
- # max 1 indicates switch type mixer control
- max "1"
- invert "false"
-}
+# Volume Mixer control with max value of 32
+C_CONTROLMIXER(Tone Volume PIPELINE_ID, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(, 32),
+ false,
+ CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
+
+# Switch type Mixer Control with max value of 1
+C_CONTROLMIXER(Tone Switch PIPELINE_ID, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(max 1 indicates switch type control, 1),
+ false,
+ ,
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 2, 0), KCONTROL_CHANNEL(FR, 2, 1)))
#
# Components and Buffers
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4
index 58e5393..1cde24e 100644
--- a/topology/sof/pipe-volume-capture.m4
+++ b/topology/sof/pipe-volume-capture.m4
@@ -10,33 +10,14 @@ include(`local.m4')
#
# Controls
#
-SectionControlMixer.STR(Master Capture Volume) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "1"
- shift "0"
- }
- channel."FR" {
- reg "1"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- get "256"
- put "256"
- }
-
- # TLV 32 steps from -90dB to +6dB for 3dB
- max "32"
- invert "false"
- tlv "vtlv_m90s3"
-}
+# Volume Mixer control with max value of 32
+C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(, 32),
+ false,
+ CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
#
# Components and Buffers
diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4
index 8aa02fb..a6b5a1d 100644
--- a/topology/sof/pipe-volume-playback.m4
+++ b/topology/sof/pipe-volume-playback.m4
@@ -10,60 +10,24 @@ include(`local.m4')
#
# Controls
#
-SectionControlMixer.STR(Master Playback Volume) {
+# Volume Mixer control with max value of 32
+C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(, 32),
+ false,
+ CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
+
+# Volume Mixer Switch control with max value of 1
+C_CONTROLMIXER(Master Playback Volume Switch, PIPELINE_ID,
+ CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
+ CONTROLMIXER_MAX(max value 1 indicates switch type control, 1),
+ false,
+ ,
+ Channel register and shift for Front Left/Right,
+ MIXERCONTROLS(KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "1"
- shift "0"
- }
- channel."FR" {
- reg "1"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- get "256"
- put "256"
- }
-
- # TLV 32 steps from -90dB to +6dB for 3dB
- max "32"
- invert "false"
- tlv "vtlv_m90s3"
-}
-
-SectionControlMixer.STR(Master Playback Volume Switch) {
-
- # control belongs to this index group
- index STR(PIPELINE_ID)
-
- # Channel register and shift for Front Left/Right
- channel."FL" {
- reg "1"
- shift "0"
- }
- channel."FR" {
- reg "1"
- shift "1"
- }
-
- # control uses bespoke driver get/put/info ID 0
- ops."ctl" {
- info "volsw"
- get "256"
- put "256"
- }
-
- # Volume mute on/off
- max "1"
- invert "false"
-}
#
# Components and Buffers
#
--
2.14.1
More information about the Sound-open-firmware
mailing list