source: mainline/uspace/drv/audio/hdaudio/spec/codec.h@ 9bae8b8

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 9bae8b8 was 9bae8b8, checked in by Jiri Svoboda <jiri@…>, 11 years ago

Dump connection lists.

  • Property mode set to 100644
File size: 10.0 KB
Line 
1/*
2 * Copyright (c) 2014 Jiri Svoboda
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup hdaudio
30 * @{
31 */
32/** @file High Definition Audio codec interface
33 */
34
35#ifndef SPEC_CODEC_H
36#define SPEC_CODEC_H
37
38typedef enum {
39 /** Get Parameter */
40 hda_param_get = 0xf00,
41 /** Connection Select Control / Get */
42 hda_conn_sel_get = 0xf01,
43 /** Connection Select Control / Set */
44 hda_conn_sel_set = 0x701,
45 /** Get Connection List Entry */
46 hda_clist_entry_get = 0xf02,
47 /** Processing State / Get */
48 hda_proc_state_get = 0xf03,
49 /** Processing State / Set */
50 hda_proc_state_set = 0x703,
51 /** Coefficient Index / Get */
52 hda_coef_index_get = 0xd,
53 /** Coefficient Index / Set */
54 hda_coef_index_set = 0x5,
55 /** Processing Coefficient / Get */
56 hda_proc_coef_get = 0xc,
57 /** Processing Coefficient / Set */
58 hda_proc_coef_set = 0x4,
59 /** Amplifier Gain/Mute / Get */
60 hda_amp_gain_mute_get = 0xb,
61 /** Amplifier Gain/Mute / Set */
62 hda_amp_gain_mute_set = 0x3,
63 /** Converter Format / Get */
64 hda_converter_fmt_get = 0xa,
65 /** Converter Format / Set */
66 hda_converter_fmt_set = 0x2,
67 /** S/PDIF Converter Control / Get */
68 hda_spdif_ctl_get = 0xf0d,
69 /** S/PDIF Converter Control / Set 1 */
70 hda_spdif_ctl_set1 = 0x70d,
71 /** S/PDIF Converter Control / Set 2 */
72 hda_spdif_ctl_set2 = 0x70e,
73 /** S/PDIF Converter Control / Set 3 */
74 hda_spdif_ctl_set3 = 0x73e,
75 /** S/PDIF Converter Control / Set 4 */
76 hda_spdif_ctl_set4 = 0x73f,
77 /** Power State / Get */
78 hda_power_state_get = 0xf05,
79 /** Power State / Set */
80 hda_power_state_set = 0x705,
81 /** Converter Control / Get */
82 hda_converter_ctl_get = 0xf06,
83 /** Converter Control / Set */
84 hda_converter_ctl_set = 0x706,
85 /** SDI Select / Get */
86 hda_sdi_select_get = 0xf04,
87 /** SDI Select / Set */
88 hda_sdi_select_set = 0x704,
89 /** Enable VRef / Get */
90 hda_enable_vref_get = 0xf07,
91 /** Enable VRef / Set */
92 hda_enable_vref_set = 0x707,
93 /** Unsolicited Response Control / Get */
94 hda_unsol_resp_get = 0xf08,
95 /** Unsolicied Response Control / Set */
96 hda_unsol_resp_set = 0x708,
97 /** Pin Sense / Get */
98 hda_pin_sense_get = 0xf09,
99 /** Pin Sense / Execute */
100 hda_pin_sense_exec = 0x709,
101 /** EAPD/BTL Enable / Get */
102 hda_eapd_btl_enable_get = 0xf0c,
103 /** EAPD/BTL Enable / Set */
104 hda_eapd_btl_enable_set = 0x70c,
105 /** GPI Data / Get */
106 hda_gpi_data_get = 0xf10,
107 /** GPI Data / Set */
108 hda_gpi_data_set = 0x710,
109 /** GPI Wake Enable / Get */
110 hda_gpi_wakeen_get = 0xf11,
111 /** GPI Wake Enable / Set */
112 hda_gpi_wakeen_set = 0x711,
113 /** GPI Unsolicited Enable / Get */
114 hda_gpi_unsol_get = 0xf12,
115 /** GPI Unsolicited Enable / Set */
116 hda_gpi_unsol_set = 0x712,
117 /** GPI Sticky / Get */
118 hda_gpi_sticky_get = 0xf13,
119 /** GPI Sticky / Set */
120 hda_gpi_sticky_set = 0x713,
121 /** GPO Data / Get */
122 hda_gpo_data_get = 0xf14,
123 /** GPO Data / Set */
124 hda_gpo_data_set = 0x714,
125 /** GPIO Data / Get */
126 hda_gpio_data_get = 0xf15,
127 /** GPIO Data / Set */
128 hda_gpio_data_set = 0x715,
129 /** GPIO Enable / Get */
130 hda_gpio_enable_get = 0xf16,
131 /** GPIO Enable / Set */
132 hda_gpio_enable_set = 0x716,
133 /** GPIO Direction / Get */
134 hda_gpio_dir_get = 0xf17,
135 /** GPIO Direction / Set */
136 hda_gpio_dir_set = 0x717,
137 /** GPIO Wake Enable / Get */
138 hda_gpio_wakeen_get = 0xf18,
139 /** GPIO Wake Enable / Set */
140 hda_gpio_wakeen_set = 0x718,
141 /** GPIO Unsolicited Enable / Get */
142 hda_gpio_unsol_get = 0xf19,
143 /** GPIO Unsolicited Enable / Set */
144 hda_gpio_unsol_set = 0x719,
145 /** GPIO Sticky Mask / Get */
146 hda_gpio_sticky_get = 0xf1a,
147 /** GPIO Sticky Mask / Set */
148 hda_hpio_sticky_set = 0x71a,
149 /** Beep Generation / Get */
150 hda_beep_gen_get = 0xf0a,
151 /** Beep Generation / Set */
152 hda_beep_gen_set = 0x70a,
153 /** Volume Knob / Get */
154 hda_vol_knob_get = 0xf0f,
155 /** Volume Knob / Set */
156 hda_vol_knob_set = 0x70f,
157 /** Implementation Identification / Get */
158 hda_impl_ident_get = 0xf20,
159 /** Implementation Identification / Set 1 */
160 hda_impl_ident_set1 = 0x720,
161 /** Implementation Identification / Set 2 */
162 hda_impl_ident_set2 = 0x721,
163 /** Implementation Identification / Set 3 */
164 hda_impl_ident_set3 = 0x722,
165 /** Implementation Identification / Set 4 */
166 hda_impl_ident_set4 = 0x723,
167 /** Configuration Default / Get */
168 hda_cfg_def_get = 0xf1c,
169 /** Configuration Default / Set 1 */
170 hda_cfg_def_set1 = 0x71c,
171 /** Configuration Default / Set 2 */
172 hda_cfg_def_set2 = 0x71d,
173 /** Configuration Default / Set 3 */
174 hda_cfg_def_set3 = 0x71e,
175 /** Configuration Default / Set 4 */
176 hda_cfg_def_set4 = 0x71f,
177 /** Stripe Control / Get */
178 hda_stripe_ctl_get = 0xf24,
179 /** Stripe Control / Set */
180 hda_stripe_ctl_set = 0x724,
181 /** Function Reset / Execute */
182 hda_fun_rst_exec = 0x7ff,
183 /** ELD Data / Get */
184 hda_eld_data_get = 0xf2f,
185 /** Converter Channel Count / Get */
186 hda_cvt_chan_cnt_get = 0xf2d,
187 /** Converter Channel Count / Set */
188 hda_cvt_chan_cnt_set = 0x72d,
189 /** DIP-Size / Get */
190 hda_dip_size_get = 0xf2e,
191 /** DIP-Index / Get */
192 hda_dip_index_get = 0xf30,
193 /** DIP-Index / Set */
194 hda_dip_index_set = 0x730,
195 /** DIP-Data / Get */
196 hda_dip_data_get = 0xf31,
197 /** DIP-Data / Set */
198 hda_dip_data_set = 0x731,
199 /** DIP-XmitCtrl / Get */
200 hda_dip_xmitctrl_get = 0xf32,
201 /** DIP-XmitCtrl / Set */
202 hda_dip_xmitctrl_set = 0x732,
203 /** Protection Control / Get */
204 hda_prot_ctl_get = 0xf33,
205 /** Protection Control / Set */
206 hda_prot_ctl_set = 0x733,
207 /** ASP Channel Mapping / Get */
208 hda_asp_chanmap_get = 0xf34,
209 /** ASP Channel Mapping / Set */
210 hda_asp_chanmap_set = 0x734
211} hda_verb_t;
212
213typedef enum {
214 /** Vendor ID */
215 hda_vendor_id = 0x00,
216 /** Revision ID */
217 hda_revision_id = 0x02,
218 /** Subordinate Node Count */
219 hda_sub_nc = 0x04,
220 /** Function Group Type */
221 hda_fgrp_type = 0x05,
222 /** Audio Function Group Capabilities */
223 hda_afg_caps = 0x08,
224 /** Audio Widget Capabilities */
225 hda_aw_caps = 0x09,
226 /** Supported PCM Size, Rates */
227 hda_supp_rates = 0x0a,
228 /** Supported Stream Formats */
229 hda_supp_formats = 0x0b,
230 /** Pin Capabilities */
231 hda_pin_caps = 0x0c,
232 /** Input Amplifier Capabilities */
233 hda_in_amp_caps = 0x0d,
234 /** Output Amplifier Capabilities */
235 hda_out_amp_caps = 0x12,
236 /** Connection List Length */
237 hda_clist_len = 0x0e,
238 /** Supported Power States */
239 hda_supp_pwr_states = 0x0f,
240 /** Processing Capabilities */
241 hda_proc_caps = 0x10,
242 /** GP I/O Count */
243 hda_gpio_cnt = 0x11,
244 /** Volume Knob Capabilities */
245 hda_volk_nob_caps = 0x13
246} hda_param_id_t;
247
248/** Subordinate Node Count Response bits */
249typedef enum {
250 /** Starting Node Number (H) */
251 subnc_startnode_h = 23,
252 /** Starting Node Number (L) */
253 subnc_startnode_l = 16,
254 /** Total Node Count (H) */
255 subnc_nodecount_h = 7,
256 /** Total Node Count (L) */
257 subnc_nodecount_l = 0
258} hda_sub_nc_bits_t;
259
260/** Function Group Type Response bits */
261typedef enum {
262 /** UnSol Capable */
263 fgrpt_unsol = 8,
264 /** Group Type (H) */
265 fgrpt_type_h = 7,
266 /** Group Type (L) */
267 fgrpt_type_l = 0
268} hda_fgrp_type_bits_t;
269
270/** Function Group Type */
271typedef enum {
272 /** Audio Function Group */
273 fgrp_afg = 0x01,
274 /** Vendor Defined Modem Function Group */
275 fgrp_vdmfg = 0x02
276} hda_fgrp_type_t;
277
278/** Connection List Length Response bits */
279typedef enum {
280 /** Long Form */
281 cll_longform = 7,
282 /** Connection List Length (H) */
283 cll_len_h = 6,
284 /** Connection List Length (L) */
285 cll_len_l = 0
286} hda_clist_len_bits_t;
287
288/** Audio Widget Capabilities Bits */
289typedef enum {
290 /** Type (H) */
291 awc_type_h = 23,
292 /** Type (L) */
293 awc_type_l = 20,
294 /** Chan Count Ext (H) */
295 awc_chan_count_ext_h = 15,
296 /** Chan Count Ext (L) */
297 awc_chan_count_ext_l = 13,
298 /** CP Caps */
299 awc_cp_caps = 12,
300 /** L-R Swap */
301 awc_lr_swap = 11,
302 /** Power Control */
303 awc_power_cntrl = 10,
304 /** Digital */
305 awc_digital = 9,
306 /** Conn List */
307 awc_conn_list = 8,
308 /** Unsol Capable */
309 awc_unsol_capable = 7,
310 /** Proc Widget */
311 awc_proc_widget = 6,
312 /** Stripe */
313 awc_stripe = 5,
314 /** Format Override */
315 awc_fmt_override = 4,
316 /** Amp Param Override */
317 awc_amp_param_override = 3,
318 /** Out Amp Present */
319 awc_out_amp_present = 2,
320 /** In Amp Present */
321 awc_in_amp_present = 1,
322 /** Chan Count LSB (Stereo) */
323 awc_chan_count_lsb = 0
324} hda_awidget_caps_bits_t;
325
326/** Audio Widget Type */
327typedef enum {
328 /** Audio Output */
329 awt_audio_output = 0x0,
330 /** Audio Input */
331 awt_audio_input = 0x1,
332 /** Audio Mixer */
333 awt_audio_mixer = 0x2,
334 /** Audio Selector */
335 awt_audio_selector = 0x3,
336 /** Pin Complex */
337 awt_pin_complex = 0x4,
338 /** Power Widget */
339 awt_power_widget = 0x5,
340 /** Volume Knob Widget */
341 awt_volume_knob = 0x6,
342 /** Beep Generator Widget */
343 awt_beep_generator = 0x7,
344 /** Vendor-defined audio widget */
345 awt_vendor_defined = 0xf
346} hda_awidget_type_t;
347
348/** Converter Control bits */
349typedef enum {
350 /** Stream (H) */
351 cctl_stream_h = 7,
352 /** Stream (L) */
353 cctl_stream_l = 4,
354 /** Channel (H) */
355 cctl_channel_h = 3,
356 /** Channel (L) */
357 cctl_channel_l = 0
358} hda_converter_ctl_bits_t;
359
360#endif
361
362/** @}
363 */
Note: See TracBrowser for help on using the repository browser.