1Object.Dai.DMIC [
2	{
3		dai_index 0
4		name			$DMIC0_NAME
5		id 			$DMIC0_ID
6		driver_version		$DMIC_DRIVER_VERSION
7		io_clk			$DMIC_IO_CLK
8		clk_min		500000
9		clk_max		4800000
10		unmute_ramp_time_ms	200
11		# num_pdm_active should always set to 2 but depending on the number of DMIC's
12		# the mic's are enabled or disabled in each PDM.
13		num_pdm_active 	2
14
15		Object.Base.hw_config.1 {
16			id	0
17			name	"DMIC0"
18		}
19
20		# PDM controller config
21		Object.Base.pdm_config.1 {
22			mic_a_enable	$PDM0_MIC_A_ENABLE
23			mic_b_enable	$PDM0_MIC_B_ENABLE
24			ctrl_id	0
25		}
26		Object.Base.pdm_config.2 {
27			ctrl_id	1
28			mic_a_enable	$PDM1_MIC_A_ENABLE
29			mic_b_enable	$PDM1_MIC_B_ENABLE
30		}
31	}
32	{
33               name                    $DMIC1_NAME
34               id                      $DMIC1_ID
35               dai_index               1
36               driver_version          $DMIC_DRIVER_VERSION
37               io_clk                  $DMIC_IO_CLK
38               sample_rate             16000
39               clk_min         500000
40               clk_max         4800000
41               unmute_ramp_time_ms     200
42               # num_pdm_active should always set to 2 but depending on the number of DMIC's
43               # the mic's are enabled or disabled in each PDM.
44               num_pdm_active  2
45
46               Object.Base.hw_config.1 {
47                       id      0
48			name	"DMIC1"
49               }
50
51               # PDM controller config
52               Object.Base.pdm_config.1 {
53                       mic_a_enable    $PDM0_MIC_A_ENABLE
54                       mic_b_enable    $PDM0_MIC_B_ENABLE
55                       ctrl_id 0
56               }
57               Object.Base.pdm_config.2 {
58                       ctrl_id 1
59                       mic_a_enable    $PDM1_MIC_A_ENABLE
60                       mic_b_enable    $PDM1_MIC_B_ENABLE
61               }
62       }
63]
64
65IncludeByKey.INCLUDE_WOV {
66	"true"	"platform/intel/dmic-wov.conf"
67}
68
69Object.Pipeline.gain-capture [
70	{
71		format		$FORMAT
72		index 		$DMIC0_HOST_PIPELINE_ID
73
74		Object.Widget.copier.1 {
75			stream_name $DMIC0_PCM_CAPS
76			num_audio_formats 2
77			num_input_audio_formats 2
78			num_output_audio_formats 2
79			Object.Base.audio_format.1 {
80				in_bit_depth		32
81				in_valid_bit_depth	32
82				out_bit_depth		32
83				out_valid_bit_depth	32
84			}
85			Object.Base.audio_format.2 {
86				in_channels		4
87				in_bit_depth		32
88				in_valid_bit_depth	32
89				out_channels		4
90				out_bit_depth		32
91				out_valid_bit_depth	32
92				in_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
93				in_ch_map	$CHANNEL_MAP_3_POINT_1
94				out_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
95				out_ch_map	$CHANNEL_MAP_3_POINT_1
96			}
97		}
98		Object.Widget.gain.1 {
99			num_audio_formats 2
100			num_input_audio_formats 2
101			num_output_audio_formats 2
102			Object.Base.audio_format.1 {
103				in_bit_depth		32
104				in_valid_bit_depth	32
105				out_bit_depth		32
106				out_valid_bit_depth	32
107			}
108			Object.Base.audio_format.2 {
109				in_channels		4
110				in_bit_depth		32
111				in_valid_bit_depth	32
112				out_channels		4
113				out_bit_depth		32
114				out_valid_bit_depth	32
115				in_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
116				in_ch_map	$CHANNEL_MAP_3_POINT_1
117				out_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
118				out_ch_map	$CHANNEL_MAP_3_POINT_1
119			}
120			Object.Control.mixer.1 {
121				name 'DMIC0 Capture Volume 1'
122			}
123		}
124
125		Object.Widget.module-copier."2" {
126			num_audio_formats 2
127			num_input_audio_formats 2
128			num_output_audio_formats 2
129			Object.Base.audio_format.1 {
130				in_bit_depth		32
131				in_valid_bit_depth	32
132				out_bit_depth		32
133				out_valid_bit_depth	32
134			}
135			Object.Base.audio_format.2 {
136				in_channels		4
137				in_bit_depth		32
138				in_valid_bit_depth	32
139				out_channels		4
140				out_bit_depth		32
141				out_valid_bit_depth	32
142				in_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
143				in_ch_map	$CHANNEL_MAP_3_POINT_1
144				out_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
145				out_ch_map	$CHANNEL_MAP_3_POINT_1
146			}
147		}
148	}
149]
150
151Object.Pipeline.dai-copier-eqiir-module-copier-capture [
152	{
153		index		$DMIC0_DAI_PIPELINE_ID
154
155		Object.Widget.copier.1 {
156			dai_index	0
157			dai_type	"DMIC"
158			copier_type	"DMIC"
159			type		dai_out
160			stream_name	$DMIC0_NAME
161			node_type $DMIC_LINK_INPUT_CLASS
162			num_audio_formats 2
163			num_input_audio_formats 2
164			num_output_audio_formats 2
165			Object.Base.audio_format.1 {
166				in_bit_depth		32
167				in_valid_bit_depth	32
168				out_bit_depth		32
169				out_valid_bit_depth	32
170			}
171			Object.Base.audio_format.2 {
172				in_channels		4
173				in_bit_depth		32
174				in_valid_bit_depth	32
175				out_channels		4
176				out_bit_depth		32
177				out_valid_bit_depth	32
178				in_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
179				in_ch_map	$CHANNEL_MAP_3_POINT_1
180				out_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
181				out_ch_map	$CHANNEL_MAP_3_POINT_1
182			}
183		}
184
185		Object.Widget.module-copier."2" {
186			stream_name $DMIC0_NAME
187			num_audio_formats 2
188			num_input_audio_formats 2
189			num_output_audio_formats 2
190			Object.Base.audio_format.1 {
191				in_bit_depth		32
192				in_valid_bit_depth	32
193				out_bit_depth		32
194				out_valid_bit_depth	32
195			}
196			Object.Base.audio_format.2 {
197				in_channels		4
198				in_bit_depth		32
199				in_valid_bit_depth	32
200				out_channels		4
201				out_bit_depth		32
202				out_valid_bit_depth	32
203				in_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
204				in_ch_map	$CHANNEL_MAP_3_POINT_1
205				out_ch_cfg	$CHANNEL_CONFIG_3_POINT_1
206				out_ch_map	$CHANNEL_MAP_3_POINT_1
207			}
208		}
209
210		Object.Widget.eqiir.1 {
211			num_audio_formats 2
212			num_input_audio_formats 2
213			num_output_audio_formats 2
214			Object.Base.audio_format.1 {
215				in_bit_depth		32
216				in_valid_bit_depth	32
217				out_bit_depth		32
218				out_valid_bit_depth	32
219			}
220			Object.Base.audio_format.2 {
221				in_channels		4
222				in_bit_depth		32
223				in_valid_bit_depth	32
224				out_channels		4
225				out_bit_depth		32
226				out_valid_bit_depth	32
227			}
228			Object.Control.bytes."1" {
229				name 'DMIC0 capture Iir Eq'
230			}
231		}
232	}
233]
234
235Object.Base.route [
236	{
237		source $DMIC0_DAI_PIPELINE_SRC
238		sink $DMIC0_HOST_PIPELINE_SINK
239	}
240	{
241		source $DMIC0_DAI_COPIER
242		sink $DMIC0_DAI_GAIN
243	}
244]
245
246Object.PCM.pcm [
247	{
248		name	"DMIC"
249		id $DMIC0_PCM_ID
250		direction	"capture"
251		Object.Base.fe_dai.1 {
252			name "DMIC"
253		}
254
255		Object.PCM.pcm_caps.1 {
256			name $DMIC0_PCM_CAPS
257			# only 32-bit capture supported now
258			formats 'S32_LE'
259			channels_min $NUM_DMICS
260			channels_max $NUM_DMICS
261		}
262	}
263]
264