Skip to content

Commit bb3a66e

Browse files
Jaska UimonenJaska Uimonen
authored andcommitted
topology: set mux/demux parameters with tuples
Currently all process (effect) component parameters are set with binary blobs. This makes sense with eq's and such where parameters are highly varying in size and readability. So make sof mux/demux component to use tuples as an example of a component having complex parameter structure. This makes it easier to setup new mux parameters from topology. Signed-off-by: Jaska Uimonen <jaska.uimonen@linux.intel.com>
1 parent 6a3b2a9 commit bb3a66e

File tree

4 files changed

+49
-38
lines changed

4 files changed

+49
-38
lines changed

tools/topology/m4/muxdemux.m4

Lines changed: 39 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,23 @@ dnl Define macro for demux widget
55
dnl Mux name)
66
define(`N_MUXDEMUX', `MUXDEMUX'PIPELINE_ID`.'$1)
77

8-
dnl W_MUXDEMUX(name, mux/demux, format, periods_sink, periods_source, kcontrol_list)
8+
dnl CH_MAP_COEFF(coeff)
9+
define(`CH_MAP_COEFF',
10+
` tuples."word.$1" {'
11+
` SOF_TKN_CHANNEL_MAP_COEFF' STR($2)
12+
` }')
13+
14+
dnl CH_MAP(name, id, ext_id, mask)
15+
define(`CH_MAP',
16+
` tuples."word.$1" {'
17+
` SOF_TKN_CHANNEL_MAP_INDEX' STR($2)
18+
` SOF_TKN_CHANNEL_MAP_EXT_ID' STR($3)
19+
` SOF_TKN_CHANNEL_MAP_MASK' STR($4)
20+
` }'
21+
$5
22+
)
23+
24+
dnl W_MUXDEMUX(name, format, periods_sink, periods_source, num_chmaps, chmap_list)
925
define(`W_MUXDEMUX',
1026
`SectionVendorTuples."'N_MUXDEMUX($1)`_tuples_w" {'
1127
` tokens "sof_comp_tokens"'
@@ -20,18 +36,30 @@ define(`W_MUXDEMUX',
2036
`SectionVendorTuples."'N_MUXDEMUX($1)`_tuples_str" {'
2137
` tokens "sof_comp_tokens"'
2238
` tuples."string" {'
23-
` SOF_TKN_COMP_FORMAT' STR($3)
24-
` }'
25-
`}'
26-
`SectionVendorTuples."'N_MUXDEMUX($1)`_mux_process_tuples_str" {'
27-
` tokens "sof_process_tokens"'
28-
` tuples."string" {'
29-
`ifelse(`$2', `0', ` SOF_TKN_PROCESS_TYPE' "MUX", ` SOF_TKN_PROCESS_TYPE' "DEMUX")'
39+
` SOF_TKN_COMP_FORMAT' STR($2)
3040
` }'
3141
`}'
3242
`SectionData."'N_MUXDEMUX($1)`_data_str" {'
3343
` tuples "'N_MUXDEMUX($1)`_tuples_str"'
34-
` tuples "'N_MUXDEMUX($1)`_mux_process_tuples_str"'
44+
`}'
45+
`SectionVendorTuples."'N_MUXDEMUX($1)`_mux_tuples_type" {'
46+
` tokens "sof_process_tokens"'
47+
` tuples."string" {'
48+
` SOF_TKN_PROCESS_TYPE "MUX"'
49+
` }'
50+
`}'
51+
`SectionData."'N_MUXDEMUX($1)`_data_type" {'
52+
` tuples "'N_MUXDEMUX($1)`_mux_tuples_type"'
53+
`}'
54+
`SectionVendorTuples."'N_MUXDEMUX($1)`_mux_data_tuples_w" {'
55+
` tokens "sof_chmap_tokens"'
56+
` tuples."word" {'
57+
` SOF_TKN_STREAM_MAP_NUM_CH_MAPS' STR($5)
58+
` }'
59+
$6
60+
`}'
61+
`SectionData."'N_MUXDEMUX($1)`_mux_data_w" {'
62+
` tuples "'N_MUXDEMUX($1)`_mux_data_tuples_w"'
3563
`}'
3664
`SectionWidget."'N_MUXDEMUX($1)`" {'
3765
` index "'PIPELINE_ID`"'
@@ -40,9 +68,8 @@ define(`W_MUXDEMUX',
4068
` data ['
4169
` "'N_MUXDEMUX($1)`_data_w"'
4270
` "'N_MUXDEMUX($1)`_data_str"'
43-
` ]'
44-
` bytes ['
45-
$6
71+
` "'N_MUXDEMUX($1)`_data_type"'
72+
` "'N_MUXDEMUX($1)`_mux_data_w"'
4673
` ]'
4774
`}')
4875

tools/topology/sof/pipe-demux-playback.m4

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,6 @@ include(`muxdemux.m4')
2222
include(`mixercontrol.m4')
2323
include(`bytecontrol.m4')
2424

25-
# Use default parameters
26-
include(`demux_coef_default.m4')
27-
28-
# demux Bytes control with max value of 255
29-
C_CONTROLBYTES(DEMUX, PIPELINE_ID,
30-
CONTROLBYTES_OPS(bytes, 258 binds the mixer control to bytes get/put handlers, 258, 258),
31-
CONTROLBYTES_EXTOPS(258 binds the mixer control to bytes get/put handlers, 258, 258),
32-
, , ,
33-
CONTROLBYTES_MAX(, 304),
34-
,
35-
DEMUX_priv)
3625
#
3726
# Components and Buffers
3827
#
@@ -42,7 +31,7 @@ C_CONTROLBYTES(DEMUX, PIPELINE_ID,
4231
W_PCM_PLAYBACK(PCM_ID, Low Latency Playback, 2, 0)
4332

4433
# Mux 0 has 2 sink and source periods.
45-
W_MUXDEMUX(0, 1, PIPELINE_FORMAT, 2, 2, LIST(` ', "DEMUX"))
34+
W_MUXDEMUX(0, PIPELINE_FORMAT, 2, 2, 2, LIST(` ', CH_MAP(map_1, 0, 1, 5, LIST(` ', CH_MAP_COEFF(1, 34954), CH_MAP_COEFF(2, 87343))), CH_MAP(map_2, 1, 5, 5, LIST(` ', CH_MAP_COEFF(3, 12345), CH_MAP_COEFF(4, 54321)))))
4635

4736
# Low Latency Buffers
4837
W_BUFFER(0, COMP_BUFFER_SIZE(2,

tools/topology/sof/pipe-volume-demux-playback.m4

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,6 @@ include(`pcm.m4')
2020
include(`pga.m4')
2121
include(`muxdemux.m4')
2222
include(`mixercontrol.m4')
23-
include(`bytecontrol.m4')
24-
25-
# Use default parameters
26-
include(`demux_coef_default.m4')
27-
28-
# demux Bytes control with max value of 255
29-
C_CONTROLBYTES(DEMUX, PIPELINE_ID,
30-
CONTROLBYTES_OPS(bytes, 258 binds the mixer control to bytes get/put handlers, 258, 258),
31-
CONTROLBYTES_EXTOPS(258 binds the mixer control to bytes get/put handlers, 258, 258),
32-
, , ,
33-
CONTROLBYTES_MAX(, 304),
34-
,
35-
DEMUX_priv)
3623

3724
# Volume Mixer control with max value of 32
3825
C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID,
@@ -65,7 +52,7 @@ W_PCM_PLAYBACK(PCM_ID, Low Latency Playback, 2, 0)
6552
W_PGA(1, PIPELINE_FORMAT, DAI_PERIODS, 2, playback_pga_conf, LIST(` ', "PIPELINE_ID Master Playback Volume"))
6653

6754
# Mux 0 has 2 sink and source periods.
68-
W_MUXDEMUX(0, 1, PIPELINE_FORMAT, 2, 2, LIST(` ', "DEMUX"))
55+
W_MUXDEMUX(0, PIPELINE_FORMAT, 2, 2, 2, LIST(` ', CH_MAP(map_1, 0, 1, 5, LIST(` ', CH_MAP_COEFF(1, 34954), CH_MAP_COEFF(2, 87343))), CH_MAP(map_2, 1, 5, 5, LIST(` ', CH_MAP_COEFF(3, 12345), CH_MAP_COEFF(4, 54321)))))
6956

7057
# Low Latency Buffers
7158
W_BUFFER(0, COMP_BUFFER_SIZE(2,

tools/topology/sof/tokens.m4

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,11 @@ SectionVendorTokens."sof_led_tokens" {
117117
SOF_TKN_MUTE_LED_USE "1300"
118118
SOF_TKN_MUTE_LED_DIRECTION "1301"
119119
}
120+
121+
SectionVendorTokens."sof_chmap_tokens" {
122+
SOF_TKN_STREAM_MAP_NUM_CH_MAPS "1400"
123+
SOF_TKN_CHANNEL_MAP_INDEX "1401"
124+
SOF_TKN_CHANNEL_MAP_EXT_ID "1402"
125+
SOF_TKN_CHANNEL_MAP_MASK "1403"
126+
SOF_TKN_CHANNEL_MAP_COEFF "1404"
127+
}

0 commit comments

Comments
 (0)