1# Mixer DAI Playback connector
2#
3#  DAI playback starting with a LL mixer
4#
5# Pipeline Endpoints for connection are :-
6#
7#	LL Playback Mixer (Mixer)
8#	LL Playback Volume B3 (DAI buffer)
9#
10# DAI_BUF -> ll mixer(M) --B0--> volume(LL) ---B1-->  sink DAI
11#
12# the ll mixer is connected to one DAI_BUF by default. Additional ones can be added later
13
14# Include topology builder
15include(`utils.m4')
16include(`mixer.m4')
17include(`mixercontrol.m4')
18include(`pga.m4')
19include(`buffer.m4')
20include(`dai.m4')
21include(`pipeline.m4')
22
23#
24# Controls
25#
26# Volume Mixer control with max value of 32
27C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID,
28	CONTROLMIXER_OPS(volsw, 256 binds the mixer control to volume get/put handlers, 256, 256),
29	CONTROLMIXER_MAX(, 32),
30	false,
31	CONTROLMIXER_TLV(TLV 32 steps from -64dB to 0dB for 2dB, vtlv_m64s2),
32	Channel register and shift for Front Left/Right,
33	VOLUME_CHANNEL_MAP)
34
35#
36# Volume configuration
37#
38
39W_VENDORTUPLES(playback_pga_tokens, sof_volume_tokens,
40LIST(`		', `SOF_TKN_VOLUME_RAMP_STEP_TYPE	"0"'
41     `		', `SOF_TKN_VOLUME_RAMP_STEP_MS		"250"'))
42
43W_DATA(playback_pga_conf, playback_pga_tokens)
44
45# Mixer 0 has 2 sink and source periods.
46W_MIXER(0, PIPELINE_FORMAT, 2, 2, SCHEDULE_CORE)
47
48# "Master Playback Volume" has 2 source and x sink periods for DAI ping-pong
49W_PGA(0, PIPELINE_FORMAT, DAI_PERIODS, 2, playback_pga_conf, SCHEDULE_CORE,
50	LIST(`		', "PIPELINE_ID Master Playback Volume"))
51
52#
53# DAI definitions
54#
55W_DAI_OUT(DAI_TYPE, DAI_INDEX, DAI_BE, DAI_FORMAT, 0, DAI_PERIODS, SCHEDULE_CORE)
56
57#
58# DAI pipeline - always use 0 for DAIs - FIXME WHY 0?
59#
60W_PIPELINE(N_DAI_OUT, SCHEDULE_PERIOD, SCHEDULE_PRIORITY, SCHEDULE_CORE, SCHEDULE_TIME_DOMAIN, pipe_dai_schedule_plat)
61
62# Low Latency Buffers
63W_BUFFER(0, COMP_BUFFER_SIZE(2,
64	COMP_SAMPLE_SIZE(DAI_FORMAT), DAI_CHANNELS, COMP_PERIOD_FRAMES(DAI_RATE, SCHEDULE_PERIOD)),
65	PLATFORM_COMP_MEM_CAP)
66W_BUFFER(1, COMP_BUFFER_SIZE(2,
67	COMP_SAMPLE_SIZE(DAI_FORMAT), DAI_CHANNELS,COMP_PERIOD_FRAMES(DAI_RATE, SCHEDULE_PERIOD)),
68	PLATFORM_COMP_MEM_CAP)
69
70#
71# Graph connections to pipelines
72# we don't connect 	`dapm(N_MIXER(0), DAI_BUF)' due to forward dependencies
73#
74P_GRAPH(DAI_NAME, PIPELINE_ID,
75	LIST(`		',
76	`dapm(N_BUFFER(0), N_MIXER(0))',
77	`dapm(N_PGA(0), N_BUFFER(0))',
78	`dapm(N_BUFFER(1), N_PGA(0))'
79	`dapm(N_DAI_OUT, N_BUFFER(1))'))
80
81indir(`define', concat(`PIPELINE_PLAYBACK_SCHED_COMP_', PIPELINE_ID), N_DAI_OUT)
82indir(`define', concat(`PIPELINE_MIXER_', PIPELINE_ID), N_MIXER(0))
83
84