root / hw / audio / hda-codec-common.h @ 2690e61e
History | View | Annotate | Download (13.6 kB)
1 | 7953793c | Bandan Das | /*
|
---|---|---|---|
2 | 7953793c | Bandan Das | * Common code to disable/enable mixer emulation at run time
|
3 | 7953793c | Bandan Das | *
|
4 | 7953793c | Bandan Das | * Copyright (C) 2013 Red Hat, Inc.
|
5 | 7953793c | Bandan Das | *
|
6 | 7953793c | Bandan Das | * Written by Bandan Das <bsd@redhat.com>
|
7 | 7953793c | Bandan Das | * with important bits picked up from hda-codec.c
|
8 | 7953793c | Bandan Das | *
|
9 | 7953793c | Bandan Das | * This program is free software; you can redistribute it and/or
|
10 | 7953793c | Bandan Das | * modify it under the terms of the GNU General Public License as
|
11 | 7953793c | Bandan Das | * published by the Free Software Foundation; either version 2 or
|
12 | 7953793c | Bandan Das | * (at your option) version 3 of the License.
|
13 | 7953793c | Bandan Das | *
|
14 | 7953793c | Bandan Das | * This program is distributed in the hope that it will be useful,
|
15 | 7953793c | Bandan Das | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
16 | 7953793c | Bandan Das | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
17 | 7953793c | Bandan Das | * GNU General Public License for more details.
|
18 | 7953793c | Bandan Das | *
|
19 | 7953793c | Bandan Das | * You should have received a copy of the GNU General Public License
|
20 | 7953793c | Bandan Das | * along with this program; if not, see <http://www.gnu.org/licenses/>.
|
21 | 7953793c | Bandan Das | */
|
22 | 7953793c | Bandan Das | |
23 | 7953793c | Bandan Das | /*
|
24 | 7953793c | Bandan Das | * HDA codec descriptions
|
25 | 7953793c | Bandan Das | */
|
26 | 7953793c | Bandan Das | |
27 | 2690e61e | Bandan Das | #ifdef HDA_MIXER
|
28 | 7953793c | Bandan Das | #define QEMU_HDA_ID_OUTPUT ((QEMU_HDA_ID_VENDOR << 16) | 0x12) |
29 | 7953793c | Bandan Das | #define QEMU_HDA_ID_DUPLEX ((QEMU_HDA_ID_VENDOR << 16) | 0x22) |
30 | 7953793c | Bandan Das | #define QEMU_HDA_ID_MICRO ((QEMU_HDA_ID_VENDOR << 16) | 0x32) |
31 | 7953793c | Bandan Das | #define QEMU_HDA_AMP_CAPS \
|
32 | 7953793c | Bandan Das | (AC_AMPCAP_MUTE | \ |
33 | 7953793c | Bandan Das | (QEMU_HDA_AMP_STEPS << AC_AMPCAP_OFFSET_SHIFT) | \ |
34 | 7953793c | Bandan Das | (QEMU_HDA_AMP_STEPS << AC_AMPCAP_NUM_STEPS_SHIFT) | \ |
35 | 7953793c | Bandan Das | (3 << AC_AMPCAP_STEP_SIZE_SHIFT))
|
36 | 7953793c | Bandan Das | #else
|
37 | 7953793c | Bandan Das | #define QEMU_HDA_ID_OUTPUT ((QEMU_HDA_ID_VENDOR << 16) | 0x11) |
38 | 7953793c | Bandan Das | #define QEMU_HDA_ID_DUPLEX ((QEMU_HDA_ID_VENDOR << 16) | 0x21) |
39 | 7953793c | Bandan Das | #define QEMU_HDA_ID_MICRO ((QEMU_HDA_ID_VENDOR << 16) | 0x31) |
40 | 7953793c | Bandan Das | #define QEMU_HDA_AMP_CAPS QEMU_HDA_AMP_NONE
|
41 | 7953793c | Bandan Das | #endif
|
42 | 7953793c | Bandan Das | |
43 | 7953793c | Bandan Das | |
44 | 7953793c | Bandan Das | /* common: audio output widget */
|
45 | 2690e61e | Bandan Das | static const desc_param glue(common_params_audio_dac_, PARAM)[] = { |
46 | 7953793c | Bandan Das | { |
47 | 7953793c | Bandan Das | .id = AC_PAR_AUDIO_WIDGET_CAP, |
48 | 7953793c | Bandan Das | .val = ((AC_WID_AUD_OUT << AC_WCAP_TYPE_SHIFT) | |
49 | 7953793c | Bandan Das | AC_WCAP_FORMAT_OVRD | |
50 | 7953793c | Bandan Das | AC_WCAP_AMP_OVRD | |
51 | 7953793c | Bandan Das | AC_WCAP_OUT_AMP | |
52 | 7953793c | Bandan Das | AC_WCAP_STEREO), |
53 | 7953793c | Bandan Das | },{ |
54 | 7953793c | Bandan Das | .id = AC_PAR_PCM, |
55 | 7953793c | Bandan Das | .val = QEMU_HDA_PCM_FORMATS, |
56 | 7953793c | Bandan Das | },{ |
57 | 7953793c | Bandan Das | .id = AC_PAR_STREAM, |
58 | 7953793c | Bandan Das | .val = AC_SUPFMT_PCM, |
59 | 7953793c | Bandan Das | },{ |
60 | 7953793c | Bandan Das | .id = AC_PAR_AMP_IN_CAP, |
61 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
62 | 7953793c | Bandan Das | },{ |
63 | 7953793c | Bandan Das | .id = AC_PAR_AMP_OUT_CAP, |
64 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_CAPS, |
65 | 7953793c | Bandan Das | }, |
66 | 7953793c | Bandan Das | }; |
67 | 7953793c | Bandan Das | |
68 | 7953793c | Bandan Das | /* common: audio input widget */
|
69 | 2690e61e | Bandan Das | static const desc_param glue(common_params_audio_adc_, PARAM)[] = { |
70 | 7953793c | Bandan Das | { |
71 | 7953793c | Bandan Das | .id = AC_PAR_AUDIO_WIDGET_CAP, |
72 | 7953793c | Bandan Das | .val = ((AC_WID_AUD_IN << AC_WCAP_TYPE_SHIFT) | |
73 | 7953793c | Bandan Das | AC_WCAP_CONN_LIST | |
74 | 7953793c | Bandan Das | AC_WCAP_FORMAT_OVRD | |
75 | 7953793c | Bandan Das | AC_WCAP_AMP_OVRD | |
76 | 7953793c | Bandan Das | AC_WCAP_IN_AMP | |
77 | 7953793c | Bandan Das | AC_WCAP_STEREO), |
78 | 7953793c | Bandan Das | },{ |
79 | 7953793c | Bandan Das | .id = AC_PAR_CONNLIST_LEN, |
80 | 7953793c | Bandan Das | .val = 1,
|
81 | 7953793c | Bandan Das | },{ |
82 | 7953793c | Bandan Das | .id = AC_PAR_PCM, |
83 | 7953793c | Bandan Das | .val = QEMU_HDA_PCM_FORMATS, |
84 | 7953793c | Bandan Das | },{ |
85 | 7953793c | Bandan Das | .id = AC_PAR_STREAM, |
86 | 7953793c | Bandan Das | .val = AC_SUPFMT_PCM, |
87 | 7953793c | Bandan Das | },{ |
88 | 7953793c | Bandan Das | .id = AC_PAR_AMP_IN_CAP, |
89 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_CAPS, |
90 | 7953793c | Bandan Das | },{ |
91 | 7953793c | Bandan Das | .id = AC_PAR_AMP_OUT_CAP, |
92 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
93 | 7953793c | Bandan Das | }, |
94 | 7953793c | Bandan Das | }; |
95 | 7953793c | Bandan Das | |
96 | 7953793c | Bandan Das | /* common: pin widget (line-out) */
|
97 | 2690e61e | Bandan Das | static const desc_param glue(common_params_audio_lineout_, PARAM)[] = { |
98 | 7953793c | Bandan Das | { |
99 | 7953793c | Bandan Das | .id = AC_PAR_AUDIO_WIDGET_CAP, |
100 | 7953793c | Bandan Das | .val = ((AC_WID_PIN << AC_WCAP_TYPE_SHIFT) | |
101 | 7953793c | Bandan Das | AC_WCAP_CONN_LIST | |
102 | 7953793c | Bandan Das | AC_WCAP_STEREO), |
103 | 7953793c | Bandan Das | },{ |
104 | 7953793c | Bandan Das | .id = AC_PAR_PIN_CAP, |
105 | 7953793c | Bandan Das | .val = AC_PINCAP_OUT, |
106 | 7953793c | Bandan Das | },{ |
107 | 7953793c | Bandan Das | .id = AC_PAR_CONNLIST_LEN, |
108 | 7953793c | Bandan Das | .val = 1,
|
109 | 7953793c | Bandan Das | },{ |
110 | 7953793c | Bandan Das | .id = AC_PAR_AMP_IN_CAP, |
111 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
112 | 7953793c | Bandan Das | },{ |
113 | 7953793c | Bandan Das | .id = AC_PAR_AMP_OUT_CAP, |
114 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
115 | 7953793c | Bandan Das | }, |
116 | 7953793c | Bandan Das | }; |
117 | 7953793c | Bandan Das | |
118 | 7953793c | Bandan Das | /* common: pin widget (line-in) */
|
119 | 2690e61e | Bandan Das | static const desc_param glue(common_params_audio_linein_, PARAM)[] = { |
120 | 7953793c | Bandan Das | { |
121 | 7953793c | Bandan Das | .id = AC_PAR_AUDIO_WIDGET_CAP, |
122 | 7953793c | Bandan Das | .val = ((AC_WID_PIN << AC_WCAP_TYPE_SHIFT) | |
123 | 7953793c | Bandan Das | AC_WCAP_STEREO), |
124 | 7953793c | Bandan Das | },{ |
125 | 7953793c | Bandan Das | .id = AC_PAR_PIN_CAP, |
126 | 7953793c | Bandan Das | .val = AC_PINCAP_IN, |
127 | 7953793c | Bandan Das | },{ |
128 | 7953793c | Bandan Das | .id = AC_PAR_AMP_IN_CAP, |
129 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
130 | 7953793c | Bandan Das | },{ |
131 | 7953793c | Bandan Das | .id = AC_PAR_AMP_OUT_CAP, |
132 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
133 | 7953793c | Bandan Das | }, |
134 | 7953793c | Bandan Das | }; |
135 | 7953793c | Bandan Das | |
136 | 7953793c | Bandan Das | /* output: root node */
|
137 | 2690e61e | Bandan Das | static const desc_param glue(output_params_root_, PARAM)[] = { |
138 | 7953793c | Bandan Das | { |
139 | 7953793c | Bandan Das | .id = AC_PAR_VENDOR_ID, |
140 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_OUTPUT, |
141 | 7953793c | Bandan Das | },{ |
142 | 7953793c | Bandan Das | .id = AC_PAR_SUBSYSTEM_ID, |
143 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_OUTPUT, |
144 | 7953793c | Bandan Das | },{ |
145 | 7953793c | Bandan Das | .id = AC_PAR_REV_ID, |
146 | 7953793c | Bandan Das | .val = 0x00100101,
|
147 | 7953793c | Bandan Das | },{ |
148 | 7953793c | Bandan Das | .id = AC_PAR_NODE_COUNT, |
149 | 7953793c | Bandan Das | .val = 0x00010001,
|
150 | 7953793c | Bandan Das | }, |
151 | 7953793c | Bandan Das | }; |
152 | 7953793c | Bandan Das | |
153 | 7953793c | Bandan Das | /* output: audio function */
|
154 | 2690e61e | Bandan Das | static const desc_param glue(output_params_audio_func_, PARAM)[] = { |
155 | 7953793c | Bandan Das | { |
156 | 7953793c | Bandan Das | .id = AC_PAR_FUNCTION_TYPE, |
157 | 7953793c | Bandan Das | .val = AC_GRP_AUDIO_FUNCTION, |
158 | 7953793c | Bandan Das | },{ |
159 | 7953793c | Bandan Das | .id = AC_PAR_SUBSYSTEM_ID, |
160 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_OUTPUT, |
161 | 7953793c | Bandan Das | },{ |
162 | 7953793c | Bandan Das | .id = AC_PAR_NODE_COUNT, |
163 | 7953793c | Bandan Das | .val = 0x00020002,
|
164 | 7953793c | Bandan Das | },{ |
165 | 7953793c | Bandan Das | .id = AC_PAR_PCM, |
166 | 7953793c | Bandan Das | .val = QEMU_HDA_PCM_FORMATS, |
167 | 7953793c | Bandan Das | },{ |
168 | 7953793c | Bandan Das | .id = AC_PAR_STREAM, |
169 | 7953793c | Bandan Das | .val = AC_SUPFMT_PCM, |
170 | 7953793c | Bandan Das | },{ |
171 | 7953793c | Bandan Das | .id = AC_PAR_AMP_IN_CAP, |
172 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
173 | 7953793c | Bandan Das | },{ |
174 | 7953793c | Bandan Das | .id = AC_PAR_AMP_OUT_CAP, |
175 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
176 | 7953793c | Bandan Das | },{ |
177 | 7953793c | Bandan Das | .id = AC_PAR_GPIO_CAP, |
178 | 7953793c | Bandan Das | .val = 0,
|
179 | 7953793c | Bandan Das | },{ |
180 | 7953793c | Bandan Das | .id = AC_PAR_AUDIO_FG_CAP, |
181 | 7953793c | Bandan Das | .val = 0x00000808,
|
182 | 7953793c | Bandan Das | },{ |
183 | 7953793c | Bandan Das | .id = AC_PAR_POWER_STATE, |
184 | 7953793c | Bandan Das | .val = 0,
|
185 | 7953793c | Bandan Das | }, |
186 | 7953793c | Bandan Das | }; |
187 | 7953793c | Bandan Das | |
188 | 7953793c | Bandan Das | /* output: nodes */
|
189 | 2690e61e | Bandan Das | static const desc_node glue(output_nodes_, PARAM)[] = { |
190 | 7953793c | Bandan Das | { |
191 | 7953793c | Bandan Das | .nid = AC_NODE_ROOT, |
192 | 7953793c | Bandan Das | .name = "root",
|
193 | 2690e61e | Bandan Das | .params = glue(output_params_root_, PARAM), |
194 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(output_params_root_, PARAM)), |
195 | 7953793c | Bandan Das | },{ |
196 | 7953793c | Bandan Das | .nid = 1,
|
197 | 7953793c | Bandan Das | .name = "func",
|
198 | 2690e61e | Bandan Das | .params = glue(output_params_audio_func_, PARAM), |
199 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(output_params_audio_func_, PARAM)), |
200 | 7953793c | Bandan Das | },{ |
201 | 7953793c | Bandan Das | .nid = 2,
|
202 | 7953793c | Bandan Das | .name = "dac",
|
203 | 2690e61e | Bandan Das | .params = glue(common_params_audio_dac_, PARAM), |
204 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_dac_, PARAM)), |
205 | 7953793c | Bandan Das | .stindex = 0,
|
206 | 7953793c | Bandan Das | },{ |
207 | 7953793c | Bandan Das | .nid = 3,
|
208 | 7953793c | Bandan Das | .name = "out",
|
209 | 2690e61e | Bandan Das | .params = glue(common_params_audio_lineout_, PARAM), |
210 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_lineout_, PARAM)), |
211 | 7953793c | Bandan Das | .config = ((AC_JACK_PORT_COMPLEX << AC_DEFCFG_PORT_CONN_SHIFT) | |
212 | 7953793c | Bandan Das | (AC_JACK_LINE_OUT << AC_DEFCFG_DEVICE_SHIFT) | |
213 | 7953793c | Bandan Das | (AC_JACK_CONN_UNKNOWN << AC_DEFCFG_CONN_TYPE_SHIFT) | |
214 | 7953793c | Bandan Das | (AC_JACK_COLOR_GREEN << AC_DEFCFG_COLOR_SHIFT) | |
215 | 7953793c | Bandan Das | 0x10),
|
216 | 7953793c | Bandan Das | .pinctl = AC_PINCTL_OUT_EN, |
217 | 7953793c | Bandan Das | .conn = (uint32_t[]) { 2 },
|
218 | 7953793c | Bandan Das | } |
219 | 7953793c | Bandan Das | }; |
220 | 7953793c | Bandan Das | |
221 | 7953793c | Bandan Das | /* output: codec */
|
222 | 2690e61e | Bandan Das | static const desc_codec glue(output_, PARAM) = { |
223 | 7953793c | Bandan Das | .name = "output",
|
224 | 7953793c | Bandan Das | .iid = QEMU_HDA_ID_OUTPUT, |
225 | 2690e61e | Bandan Das | .nodes = glue(output_nodes_, PARAM), |
226 | 2690e61e | Bandan Das | .nnodes = ARRAY_SIZE(glue(output_nodes_, PARAM)), |
227 | 7953793c | Bandan Das | }; |
228 | 7953793c | Bandan Das | |
229 | 7953793c | Bandan Das | /* duplex: root node */
|
230 | 2690e61e | Bandan Das | static const desc_param glue(duplex_params_root_, PARAM)[] = { |
231 | 7953793c | Bandan Das | { |
232 | 7953793c | Bandan Das | .id = AC_PAR_VENDOR_ID, |
233 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_DUPLEX, |
234 | 7953793c | Bandan Das | },{ |
235 | 7953793c | Bandan Das | .id = AC_PAR_SUBSYSTEM_ID, |
236 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_DUPLEX, |
237 | 7953793c | Bandan Das | },{ |
238 | 7953793c | Bandan Das | .id = AC_PAR_REV_ID, |
239 | 7953793c | Bandan Das | .val = 0x00100101,
|
240 | 7953793c | Bandan Das | },{ |
241 | 7953793c | Bandan Das | .id = AC_PAR_NODE_COUNT, |
242 | 7953793c | Bandan Das | .val = 0x00010001,
|
243 | 7953793c | Bandan Das | }, |
244 | 7953793c | Bandan Das | }; |
245 | 7953793c | Bandan Das | |
246 | 7953793c | Bandan Das | /* duplex: audio function */
|
247 | 2690e61e | Bandan Das | static const desc_param glue(duplex_params_audio_func_, PARAM)[] = { |
248 | 7953793c | Bandan Das | { |
249 | 7953793c | Bandan Das | .id = AC_PAR_FUNCTION_TYPE, |
250 | 7953793c | Bandan Das | .val = AC_GRP_AUDIO_FUNCTION, |
251 | 7953793c | Bandan Das | },{ |
252 | 7953793c | Bandan Das | .id = AC_PAR_SUBSYSTEM_ID, |
253 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_DUPLEX, |
254 | 7953793c | Bandan Das | },{ |
255 | 7953793c | Bandan Das | .id = AC_PAR_NODE_COUNT, |
256 | 7953793c | Bandan Das | .val = 0x00020004,
|
257 | 7953793c | Bandan Das | },{ |
258 | 7953793c | Bandan Das | .id = AC_PAR_PCM, |
259 | 7953793c | Bandan Das | .val = QEMU_HDA_PCM_FORMATS, |
260 | 7953793c | Bandan Das | },{ |
261 | 7953793c | Bandan Das | .id = AC_PAR_STREAM, |
262 | 7953793c | Bandan Das | .val = AC_SUPFMT_PCM, |
263 | 7953793c | Bandan Das | },{ |
264 | 7953793c | Bandan Das | .id = AC_PAR_AMP_IN_CAP, |
265 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
266 | 7953793c | Bandan Das | },{ |
267 | 7953793c | Bandan Das | .id = AC_PAR_AMP_OUT_CAP, |
268 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
269 | 7953793c | Bandan Das | },{ |
270 | 7953793c | Bandan Das | .id = AC_PAR_GPIO_CAP, |
271 | 7953793c | Bandan Das | .val = 0,
|
272 | 7953793c | Bandan Das | },{ |
273 | 7953793c | Bandan Das | .id = AC_PAR_AUDIO_FG_CAP, |
274 | 7953793c | Bandan Das | .val = 0x00000808,
|
275 | 7953793c | Bandan Das | },{ |
276 | 7953793c | Bandan Das | .id = AC_PAR_POWER_STATE, |
277 | 7953793c | Bandan Das | .val = 0,
|
278 | 7953793c | Bandan Das | }, |
279 | 7953793c | Bandan Das | }; |
280 | 7953793c | Bandan Das | |
281 | 7953793c | Bandan Das | /* duplex: nodes */
|
282 | 2690e61e | Bandan Das | static const desc_node glue(duplex_nodes_, PARAM)[] = { |
283 | 7953793c | Bandan Das | { |
284 | 7953793c | Bandan Das | .nid = AC_NODE_ROOT, |
285 | 7953793c | Bandan Das | .name = "root",
|
286 | 2690e61e | Bandan Das | .params = glue(duplex_params_root_, PARAM), |
287 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(duplex_params_root_, PARAM)), |
288 | 7953793c | Bandan Das | },{ |
289 | 7953793c | Bandan Das | .nid = 1,
|
290 | 7953793c | Bandan Das | .name = "func",
|
291 | 2690e61e | Bandan Das | .params = glue(duplex_params_audio_func_, PARAM), |
292 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(duplex_params_audio_func_, PARAM)), |
293 | 7953793c | Bandan Das | },{ |
294 | 7953793c | Bandan Das | .nid = 2,
|
295 | 7953793c | Bandan Das | .name = "dac",
|
296 | 2690e61e | Bandan Das | .params = glue(common_params_audio_dac_, PARAM), |
297 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_dac_, PARAM)), |
298 | 7953793c | Bandan Das | .stindex = 0,
|
299 | 7953793c | Bandan Das | },{ |
300 | 7953793c | Bandan Das | .nid = 3,
|
301 | 7953793c | Bandan Das | .name = "out",
|
302 | 2690e61e | Bandan Das | .params = glue(common_params_audio_lineout_, PARAM), |
303 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_lineout_, PARAM)), |
304 | 7953793c | Bandan Das | .config = ((AC_JACK_PORT_COMPLEX << AC_DEFCFG_PORT_CONN_SHIFT) | |
305 | 7953793c | Bandan Das | (AC_JACK_LINE_OUT << AC_DEFCFG_DEVICE_SHIFT) | |
306 | 7953793c | Bandan Das | (AC_JACK_CONN_UNKNOWN << AC_DEFCFG_CONN_TYPE_SHIFT) | |
307 | 7953793c | Bandan Das | (AC_JACK_COLOR_GREEN << AC_DEFCFG_COLOR_SHIFT) | |
308 | 7953793c | Bandan Das | 0x10),
|
309 | 7953793c | Bandan Das | .pinctl = AC_PINCTL_OUT_EN, |
310 | 7953793c | Bandan Das | .conn = (uint32_t[]) { 2 },
|
311 | 7953793c | Bandan Das | },{ |
312 | 7953793c | Bandan Das | .nid = 4,
|
313 | 7953793c | Bandan Das | .name = "adc",
|
314 | 2690e61e | Bandan Das | .params = glue(common_params_audio_adc_, PARAM), |
315 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_adc_, PARAM)), |
316 | 7953793c | Bandan Das | .stindex = 1,
|
317 | 7953793c | Bandan Das | .conn = (uint32_t[]) { 5 },
|
318 | 7953793c | Bandan Das | },{ |
319 | 7953793c | Bandan Das | .nid = 5,
|
320 | 7953793c | Bandan Das | .name = "in",
|
321 | 2690e61e | Bandan Das | .params = glue(common_params_audio_linein_, PARAM), |
322 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_linein_, PARAM)), |
323 | 7953793c | Bandan Das | .config = ((AC_JACK_PORT_COMPLEX << AC_DEFCFG_PORT_CONN_SHIFT) | |
324 | 7953793c | Bandan Das | (AC_JACK_LINE_IN << AC_DEFCFG_DEVICE_SHIFT) | |
325 | 7953793c | Bandan Das | (AC_JACK_CONN_UNKNOWN << AC_DEFCFG_CONN_TYPE_SHIFT) | |
326 | 7953793c | Bandan Das | (AC_JACK_COLOR_RED << AC_DEFCFG_COLOR_SHIFT) | |
327 | 7953793c | Bandan Das | 0x20),
|
328 | 7953793c | Bandan Das | .pinctl = AC_PINCTL_IN_EN, |
329 | 7953793c | Bandan Das | } |
330 | 7953793c | Bandan Das | }; |
331 | 7953793c | Bandan Das | |
332 | 7953793c | Bandan Das | /* duplex: codec */
|
333 | 2690e61e | Bandan Das | static const desc_codec glue(duplex_, PARAM) = { |
334 | 7953793c | Bandan Das | .name = "duplex",
|
335 | 7953793c | Bandan Das | .iid = QEMU_HDA_ID_DUPLEX, |
336 | 2690e61e | Bandan Das | .nodes = glue(duplex_nodes_, PARAM), |
337 | 2690e61e | Bandan Das | .nnodes = ARRAY_SIZE(glue(duplex_nodes_, PARAM)), |
338 | 7953793c | Bandan Das | }; |
339 | 7953793c | Bandan Das | |
340 | 7953793c | Bandan Das | /* micro: root node */
|
341 | 2690e61e | Bandan Das | static const desc_param glue(micro_params_root_, PARAM)[] = { |
342 | 7953793c | Bandan Das | { |
343 | 7953793c | Bandan Das | .id = AC_PAR_VENDOR_ID, |
344 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_MICRO, |
345 | 7953793c | Bandan Das | },{ |
346 | 7953793c | Bandan Das | .id = AC_PAR_SUBSYSTEM_ID, |
347 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_MICRO, |
348 | 7953793c | Bandan Das | },{ |
349 | 7953793c | Bandan Das | .id = AC_PAR_REV_ID, |
350 | 7953793c | Bandan Das | .val = 0x00100101,
|
351 | 7953793c | Bandan Das | },{ |
352 | 7953793c | Bandan Das | .id = AC_PAR_NODE_COUNT, |
353 | 7953793c | Bandan Das | .val = 0x00010001,
|
354 | 7953793c | Bandan Das | }, |
355 | 7953793c | Bandan Das | }; |
356 | 7953793c | Bandan Das | |
357 | 7953793c | Bandan Das | /* micro: audio function */
|
358 | 2690e61e | Bandan Das | static const desc_param glue(micro_params_audio_func_, PARAM)[] = { |
359 | 7953793c | Bandan Das | { |
360 | 7953793c | Bandan Das | .id = AC_PAR_FUNCTION_TYPE, |
361 | 7953793c | Bandan Das | .val = AC_GRP_AUDIO_FUNCTION, |
362 | 7953793c | Bandan Das | },{ |
363 | 7953793c | Bandan Das | .id = AC_PAR_SUBSYSTEM_ID, |
364 | 7953793c | Bandan Das | .val = QEMU_HDA_ID_MICRO, |
365 | 7953793c | Bandan Das | },{ |
366 | 7953793c | Bandan Das | .id = AC_PAR_NODE_COUNT, |
367 | 7953793c | Bandan Das | .val = 0x00020004,
|
368 | 7953793c | Bandan Das | },{ |
369 | 7953793c | Bandan Das | .id = AC_PAR_PCM, |
370 | 7953793c | Bandan Das | .val = QEMU_HDA_PCM_FORMATS, |
371 | 7953793c | Bandan Das | },{ |
372 | 7953793c | Bandan Das | .id = AC_PAR_STREAM, |
373 | 7953793c | Bandan Das | .val = AC_SUPFMT_PCM, |
374 | 7953793c | Bandan Das | },{ |
375 | 7953793c | Bandan Das | .id = AC_PAR_AMP_IN_CAP, |
376 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
377 | 7953793c | Bandan Das | },{ |
378 | 7953793c | Bandan Das | .id = AC_PAR_AMP_OUT_CAP, |
379 | 7953793c | Bandan Das | .val = QEMU_HDA_AMP_NONE, |
380 | 7953793c | Bandan Das | },{ |
381 | 7953793c | Bandan Das | .id = AC_PAR_GPIO_CAP, |
382 | 7953793c | Bandan Das | .val = 0,
|
383 | 7953793c | Bandan Das | },{ |
384 | 7953793c | Bandan Das | .id = AC_PAR_AUDIO_FG_CAP, |
385 | 7953793c | Bandan Das | .val = 0x00000808,
|
386 | 7953793c | Bandan Das | },{ |
387 | 7953793c | Bandan Das | .id = AC_PAR_POWER_STATE, |
388 | 7953793c | Bandan Das | .val = 0,
|
389 | 7953793c | Bandan Das | }, |
390 | 7953793c | Bandan Das | }; |
391 | 7953793c | Bandan Das | |
392 | 7953793c | Bandan Das | /* micro: nodes */
|
393 | 2690e61e | Bandan Das | static const desc_node glue(micro_nodes_, PARAM)[] = { |
394 | 7953793c | Bandan Das | { |
395 | 7953793c | Bandan Das | .nid = AC_NODE_ROOT, |
396 | 7953793c | Bandan Das | .name = "root",
|
397 | 2690e61e | Bandan Das | .params = glue(micro_params_root_, PARAM), |
398 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(micro_params_root_, PARAM)), |
399 | 7953793c | Bandan Das | },{ |
400 | 7953793c | Bandan Das | .nid = 1,
|
401 | 7953793c | Bandan Das | .name = "func",
|
402 | 2690e61e | Bandan Das | .params = glue(micro_params_audio_func_, PARAM), |
403 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(micro_params_audio_func_, PARAM)), |
404 | 7953793c | Bandan Das | },{ |
405 | 7953793c | Bandan Das | .nid = 2,
|
406 | 7953793c | Bandan Das | .name = "dac",
|
407 | 2690e61e | Bandan Das | .params = glue(common_params_audio_dac_, PARAM), |
408 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_dac_, PARAM)), |
409 | 7953793c | Bandan Das | .stindex = 0,
|
410 | 7953793c | Bandan Das | },{ |
411 | 7953793c | Bandan Das | .nid = 3,
|
412 | 7953793c | Bandan Das | .name = "out",
|
413 | 2690e61e | Bandan Das | .params = glue(common_params_audio_lineout_, PARAM), |
414 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_lineout_, PARAM)), |
415 | 7953793c | Bandan Das | .config = ((AC_JACK_PORT_COMPLEX << AC_DEFCFG_PORT_CONN_SHIFT) | |
416 | 7953793c | Bandan Das | (AC_JACK_SPEAKER << AC_DEFCFG_DEVICE_SHIFT) | |
417 | 7953793c | Bandan Das | (AC_JACK_CONN_UNKNOWN << AC_DEFCFG_CONN_TYPE_SHIFT) | |
418 | 7953793c | Bandan Das | (AC_JACK_COLOR_GREEN << AC_DEFCFG_COLOR_SHIFT) | |
419 | 7953793c | Bandan Das | 0x10),
|
420 | 7953793c | Bandan Das | .pinctl = AC_PINCTL_OUT_EN, |
421 | 7953793c | Bandan Das | .conn = (uint32_t[]) { 2 },
|
422 | 7953793c | Bandan Das | },{ |
423 | 7953793c | Bandan Das | .nid = 4,
|
424 | 7953793c | Bandan Das | .name = "adc",
|
425 | 2690e61e | Bandan Das | .params = glue(common_params_audio_adc_, PARAM), |
426 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_adc_, PARAM)), |
427 | 7953793c | Bandan Das | .stindex = 1,
|
428 | 7953793c | Bandan Das | .conn = (uint32_t[]) { 5 },
|
429 | 7953793c | Bandan Das | },{ |
430 | 7953793c | Bandan Das | .nid = 5,
|
431 | 7953793c | Bandan Das | .name = "in",
|
432 | 2690e61e | Bandan Das | .params = glue(common_params_audio_linein_, PARAM), |
433 | 2690e61e | Bandan Das | .nparams = ARRAY_SIZE(glue(common_params_audio_linein_, PARAM)), |
434 | 7953793c | Bandan Das | .config = ((AC_JACK_PORT_COMPLEX << AC_DEFCFG_PORT_CONN_SHIFT) | |
435 | 7953793c | Bandan Das | (AC_JACK_MIC_IN << AC_DEFCFG_DEVICE_SHIFT) | |
436 | 7953793c | Bandan Das | (AC_JACK_CONN_UNKNOWN << AC_DEFCFG_CONN_TYPE_SHIFT) | |
437 | 7953793c | Bandan Das | (AC_JACK_COLOR_RED << AC_DEFCFG_COLOR_SHIFT) | |
438 | 7953793c | Bandan Das | 0x20),
|
439 | 7953793c | Bandan Das | .pinctl = AC_PINCTL_IN_EN, |
440 | 7953793c | Bandan Das | } |
441 | 7953793c | Bandan Das | }; |
442 | 7953793c | Bandan Das | |
443 | 7953793c | Bandan Das | /* micro: codec */
|
444 | 2690e61e | Bandan Das | static const desc_codec glue(micro_, PARAM) = { |
445 | 7953793c | Bandan Das | .name = "micro",
|
446 | 7953793c | Bandan Das | .iid = QEMU_HDA_ID_MICRO, |
447 | 2690e61e | Bandan Das | .nodes = glue(micro_nodes_, PARAM), |
448 | 2690e61e | Bandan Das | .nnodes = ARRAY_SIZE(glue(micro_nodes_, PARAM)), |
449 | 7953793c | Bandan Das | }; |
450 | 2690e61e | Bandan Das | |
451 | 2690e61e | Bandan Das | #undef PARAM
|
452 | 2690e61e | Bandan Das | #undef HDA_MIXER
|
453 | 2690e61e | Bandan Das | #undef QEMU_HDA_ID_OUTPUT
|
454 | 2690e61e | Bandan Das | #undef QEMU_HDA_ID_DUPLEX
|
455 | 2690e61e | Bandan Das | #undef QEMU_HDA_ID_MICRO
|
456 | 2690e61e | Bandan Das | #undef QEMU_HDA_AMP_CAPS |