OpenCore
1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
HdaVerbs.h
Go to the documentation of this file.
1
/*
2
* File: HdaVerbs.h
3
*
4
* Copyright (c) 2018 John Davis
5
*
6
* Permission is hereby granted, free of charge, to any person obtaining a copy
7
* of this software and associated documentation files (the "Software"), to deal
8
* in the Software without restriction, including without limitation the rights
9
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
* copies of the Software, and to permit persons to whom the Software is
11
* furnished to do so, subject to the following conditions:
12
*
13
* The above copyright notice and this permission notice shall be included in all
14
* copies or substantial portions of the Software.
15
*
16
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
* SOFTWARE.
23
*/
24
25
#ifndef EFI_HDA_VERBS_H
26
#define EFI_HDA_VERBS_H
27
28
// Root node ID.
29
#define HDA_NID_ROOT 0
30
31
// Macro for building verbs. 4-bit verbs will be zero when masked against 0xFF0.
32
#define HDA_CODEC_VERB(Verb, Payload) ((UINT32)((((Verb) & 0xFFF) & 0xFF0) ? \
33
((((Verb) & 0xFFF) << 8) | ((Payload) & 0xFF)) :
/* 12-bit verbs */
\
34
((((Verb) & 0xF) << 16) | ((Payload) & 0xFFFF))))
/* 4-bit verbs */
35
36
// Get/Set Converter Format.
37
#define HDA_VERB_GET_CONVERTER_FORMAT 0xA
38
#define HDA_VERB_SET_CONVERTER_FORMAT 0x2
39
#define HDA_CONVERTER_FORMAT_CHAN(a) ((UINT8)((a) & 0xF))
40
#define HDA_CONVERTER_FORMAT_BITS(a) ((UINT8)(((a) >> 4) & 0x3))
41
#define HDA_CONVERTER_FORMAT_BITS_8 0x0
42
#define HDA_CONVERTER_FORMAT_BITS_16 0x1
43
#define HDA_CONVERTER_FORMAT_BITS_20 0x2
44
#define HDA_CONVERTER_FORMAT_BITS_24 0x3
45
#define HDA_CONVERTER_FORMAT_BITS_32 0x4
46
#define HDA_CONVERTER_FORMAT_DIV(a) ((UINT8)(((a) >> 8) & 0x3))
47
#define HDA_CONVERTER_FORMAT_MULT(a) ((UINT8)(((a) >> 11) & 0x3))
48
#define HDA_CONVERTER_FORMAT_BASE_44KHZ BIT14
49
#define HDA_CONVERTER_FORMAT_SET(chan, bits, div, mult, base) \
50
((UINT16)(((chan) & 0xF) | (((bits) & 0x3) << 4) | (((div) & 0x3) << 8) | \
51
(((mult) & 0x3) << 11) | ((base) ? HDA_CONVERTER_FORMAT_BASE_44KHZ : 0)))
52
53
// Get Amplifier Gain/Mute.
54
#define HDA_VERB_GET_AMP_GAIN_MUTE 0xB
55
#define HDA_VERB_GET_AMP_GAIN_MUTE_PAYLOAD(index, left, out) ((UINT16)(index | (left ? BIT13 : 0) | (out ? BIT15 : 0)))
56
#define HDA_VERB_GET_AMP_GAIN_MUTE_GAIN(a) ((UINT8)(a & 0x7F))
57
#define HDA_VERB_GET_AMP_GAIN_MUTE_MUTE BIT7
58
59
// Set Amplifier Gain/Mute.
60
#define HDA_VERB_SET_AMP_GAIN_MUTE 0x3
61
#define HDA_VERB_SET_AMP_GAIN_MUTE_PAYLOAD(index, gain, mute, right, left, in, out) \
62
((UINT16)((gain & 0x7F) | (mute ? BIT7 : 0) | (index & 0xFF) << 8) \
63
| (right ? BIT12 : 0) | (left ? BIT13 : 0) | (in ? BIT14 : 0) | (out ? BIT15 : 0))
64
65
// Get/Set Processing Coefficient.
66
#define HDA_VERB_GET_PROCESSING_COEFFICIENT 0xC
67
#define HDA_VERB_SET_PROCESSING_COEFFICIENT 0x4
68
69
// Get/Set Coefficient Index.
70
#define HDA_VERB_GET_COEFFICIENT_INDEX 0xD
71
#define HDA_VERB_SET_COEFFICIENT_INDEX 0x5
72
73
// Get/Set Connection Select Control.
74
#define HDA_VERB_GET_CONN_SELECT_CONTROL 0xF01
75
#define HDA_VERB_SET_CONN_SELECT_CONTROL 0x701
76
77
// Get Connection List Entry.
78
#define HDA_VERB_GET_CONN_LIST_ENTRY 0xF02
79
#define HDA_VERB_GET_CONN_LIST_ENTRY_SHORT(a, i) ((UINT8)(a >> (8 * (i))))
80
#define HDA_VERB_GET_CONN_LIST_ENTRY_LONG(a, i) ((UINT16)(a >> (16 * (i))))
81
#define HDA_VERB_GET_CONN_LIST_ENTRY_SHORT_IS_RANGE BIT7
82
#define HDA_VERB_GET_CONN_LIST_ENTRY_LONG_IS_RANGE BIT15
83
#define HDA_VERB_GET_CONN_LIST_ENTRY_SHORT_VALUE(a) ((a) & ~(HDA_VERB_GET_CONN_LIST_ENTRY_SHORT_IS_RANGE))
84
#define HDA_VERB_GET_CONN_LIST_ENTRY_LONG_VALUE(a) ((a) & ~(HDA_VERB_GET_CONN_LIST_ENTRY_LONG_IS_RANGE))
85
86
// Get/Set Processing State.
87
#define HDA_VERB_GET_PROCESSING_STATE 0xF03
88
#define HDA_VERB_SET_PROCESSING_STATE 0x703
89
#define HDA_PROCESSING_STATE_OFF 0x00
90
#define HDA_PROCESSING_STATE_ON 0x01
91
#define HDA_PROCESSING_STATE_BENIGN 0x02
92
93
// Get/Set Input Converter SDI Select.
94
#define HDA_VERB_GET_INPUT_CONV_SDI_SELECT 0xF04
95
#define HDA_VERB_SET_INPUT_CONV_SDI_SELECT 0x704
96
97
// Get/Set Power State.
98
#define HDA_VERB_GET_POWER_STATE 0xF05
99
#define HDA_VERB_SET_POWER_STATE 0x705
100
101
// Get/Set Converter Stream, Channel.
102
#define HDA_VERB_GET_CONVERTER_STREAM_CHANNEL 0xF06
103
#define HDA_VERB_SET_CONVERTER_STREAM_CHANNEL 0x706
104
#define HDA_VERB_GET_CONVERTER_STREAM_CHAN(a) ((UINT8)(a & 0xF))
105
#define HDA_VERB_GET_CONVERTER_STREAM_STR(a) ((UINT8)((a >> 4) & 0xF))
106
#define HDA_VERB_SET_CONVERTER_STREAM_PAYLOAD(c, s) ((UINT8)(((c) & 0xF) | (((s) & 0xF) << 4)))
107
108
// Get/Set Pin Widget Control.
109
#define HDA_VERB_GET_PIN_WIDGET_CONTROL 0xF07
110
#define HDA_VERB_SET_PIN_WIDGET_CONTROL 0x707
111
#define HDA_PIN_WIDGET_CONTROL_VREF(a) ((UINT8)(a & (0x7)))
112
#define HDA_PIN_WIDGET_CONTROL_VREF_HIZ 0
113
#define HDA_PIN_WIDGET_CONTROL_VREF_50 1
114
#define HDA_PIN_WIDGET_CONTROL_VREF_GRD 2
115
#define HDA_PIN_WIDGET_CONTROL_VREF_80 4
116
#define HDA_PIN_WIDGET_CONTROL_VREF_100 5
117
#define HDA_PIN_WIDGET_CONTROL_IN_EN BIT5
118
#define HDA_PIN_WIDGET_CONTROL_OUT_EN BIT6
119
#define HDA_PIN_WIDGET_CONTROL_HP_EN BIT7
120
#define HDA_VERB_SET_PIN_WIDGET_CONTROL_PAYLOAD(vref, in, out, hp) \
121
((UINT8)(HDA_PIN_WIDGET_CONTROL_VREF (vref) \
122
| (in ? HDA_PIN_WIDGET_CONTROL_IN_EN : 0) \
123
| (out ? HDA_PIN_WIDGET_CONTROL_OUT_EN : 0) \
124
| (hp ? HDA_PIN_WIDGET_CONTROL_HP_EN : 0)))
125
126
// Get/Set Unsolicited Response.
127
#define HDA_VERB_GET_UNSOL_RESPONSE 0xF08
128
#define HDA_VERB_SET_UNSOL_RESPONSE 0x708
129
#define HDA_UNSOL_RESPONSE_EN BIT7
130
131
// Get/Set Digital Converter Control.
132
#define HDA_VERB_GET_DIGITAL_CONV_CONTROL 0xF0D
133
#define HDA_VERB_SET_DIGITAL_CONV_CONTROL1 0x70D
134
#define HDA_VERB_SET_DIGITAL_CONV_CONTROL2 0x70E
135
#define HDA_VERB_SET_DIGITAL_CONV_CONTROL3 0x73E
136
#define HDA_VERB_SET_DIGITAL_CONV_CONTROL4 0x73F
137
#define HDA_DIGITAL_CONV_CONTROL_DIGEN BIT0
138
#define HDA_DIGITAL_CONV_CONTROL_V BIT1
139
#define HDA_DIGITAL_CONV_CONTROL_VCFG BIT2
140
#define HDA_DIGITAL_CONV_CONTROL_PRE BIT3
141
#define HDA_DIGITAL_CONV_CONTROL_NO_CP BIT4
142
#define HDA_DIGITAL_CONV_CONTROL_NO_AUDIO BIT5
143
#define HDA_DIGITAL_CONV_CONTROL_PRO BIT6
144
#define HDA_DIGITAL_CONV_CONTROL_L BIT7
145
#define HDA_DIGITAL_CONV_CONTROL_CC(a) ((UINT8)((a >> 8) & 0x7F))
146
#define HDA_DIGITAL_CONV_CONTROL_ICT ((UINT8)((a >> 16) & 0xF))
147
#define HDA_DIGITAL_CONV_CONTROL_KAE BIT23
148
149
// Get/Execute Pin Sense.
150
#define HDA_VERB_GET_PIN_SENSE 0xF09
151
#define HDA_VERB_EXE_PIN_SENSE 0x709
152
#define HDA_PIN_SENSE_PD BIT31
153
154
// Get/Set Beep Generation.
155
#define HDA_VERB_GET_BEEP_GENERATION 0xF0A
156
#define HDA_VERB_SET_BEEP_GENERATION 0x70A
157
158
// Get/Set EAPD/BTL Enable.
159
#define HDA_VERB_GET_EAPD_BTL_ENABLE 0xF0C
160
#define HDA_VERB_SET_EAPD_BTL_ENABLE 0x70C
161
#define HDA_EAPD_BTL_ENABLE_BTL BIT0
162
#define HDA_EAPD_BTL_ENABLE_EAPD BIT1
163
#define HDA_EAPD_BTL_ENABLE_L_R_SWAP BIT2
164
165
// Get/Set Volume Knob.
166
#define HDA_VERB_GET_VOLUME_KNOB 0xF0F
167
#define HDA_VERB_SET_VOLUME_KNOB 0x70F
168
#define HDA_VOLUME_KNOB_DIRECT BIT7
169
170
// Get/Set GPI Data.
171
#define HDA_VERB_GET_GPI_DATA 0xF10
172
#define HDA_VERB_SET_GPI_DATA 0x710
173
174
// Get/Set GPI Wake Enable Mask.
175
#define HDA_VERB_GET_GPI_WAKE_ENABLE_MASK 0xF11
176
#define HDA_VERB_SET_GPI_WAKE_ENABLE_MASK 0x711
177
178
// Get/Set GPI Unsolicited Enable Mask.
179
#define HDA_VERB_GET_GPI_UNSOL_ENABLE_MASK 0xF12
180
#define HDA_VERB_SET_GPI_UNSOL_ENABLE_MASK 0x712
181
182
// Get/Set GPI Sticky Mask.
183
#define HDA_VERB_GET_GPI_STICK_MASK 0xF13
184
#define HDA_VERB_SET_GPI_STICK_MASK 0x713
185
186
// Get/Set GPO Data.
187
#define HDA_VERB_GET_GPO_DATA 0xF14
188
#define HDA_VERB_SET_GPO_DATA 0x714
189
190
// Get/Set GPIO Data.
191
#define HDA_VERB_GET_GPIO_DATA 0xF15
192
#define HDA_VERB_SET_GPIO_DATA 0x715
193
194
// Get/Set GPIO Enable Mask.
195
#define HDA_VERB_GET_GPIO_ENABLE_MASK 0xF16
196
#define HDA_VERB_SET_GPIO_ENABLE_MASK 0x716
197
198
// Get/Set GPIO Direction.
199
#define HDA_VERB_GET_GPIO_DIRECTION 0xF17
200
#define HDA_VERB_SET_GPIO_DIRECTION 0x717
201
202
// Get/Set GPIO Wake Enable Mask.
203
#define HDA_VERB_GET_GPIO_WAKE_ENABLE_MASK 0xF18
204
#define HDA_VERB_SET_GPIO_WAKE_ENABLE_MASK 0x718
205
206
// Get/Set GPIO Unsolicited Enable Mask.
207
#define HDA_VERB_GET_GPIO_UNSOL_ENABLE_MASK 0xF19
208
#define HDA_VERB_SET_GPIO_UNSOL_ENABLE_MASK 0x719
209
210
// Get/Set GPIO Sticky Mask.
211
#define HDA_VERB_GET_GPIO_STICKY_MASK 0xF1A
212
#define HDA_VERB_SET_GPIO_STICKY_MASK 0x71A
213
214
// Get/Set Implementation Identification.
215
#define HDA_VERB_GET_IMPLEMENTATION_ID 0xF20
216
#define HDA_VERB_SET_IMPLEMENTATION_ID1 0x720
217
#define HDA_VERB_SET_IMPLEMENTATION_ID2 0x721
218
#define HDA_VERB_SET_IMPLEMENTATION_ID3 0x722
219
#define HDA_VERB_SET_IMPLEMENTATION_ID4 0x723
220
221
//
222
// Get/Set Configuration Default.
223
//
224
#define HDA_VERB_GET_CONFIGURATION_DEFAULT 0xF1C
225
#define HDA_VERB_SET_CONFIGURATION_DEFAULT0 0x71C
226
#define HDA_VERB_SET_CONFIGURATION_DEFAULT1 0x71D
227
#define HDA_VERB_SET_CONFIGURATION_DEFAULT2 0x71E
228
#define HDA_VERB_SET_CONFIGURATION_DEFAULT3 0x71F
229
230
// Configuration Default sequence.
231
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_SEQUENCE(a) \
232
((UINT8)(a & 0xF))
233
234
// Configuration Default default associaton.
235
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_ASSOCIATION(a) \
236
((UINT8)((a >> 4) & 0xF))
237
238
// Configuration Default misc.
239
#define HDA_CONFIG_DEFAULT_MISC_JACK_DETECT_OVERRIDE BIT8
240
241
// Configuration Default color.
242
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_COLOR(a) \
243
((UINT8)((a >> 12) & 0xF))
244
#define HDA_CONFIG_DEFAULT_COLOR_UNKNOWN 0x0
245
#define HDA_CONFIG_DEFAULT_COLOR_BLACK 0x1
246
#define HDA_CONFIG_DEFAULT_COLOR_GREY 0x2
247
#define HDA_CONFIG_DEFAULT_COLOR_BLUE 0x3
248
#define HDA_CONFIG_DEFAULT_COLOR_GREEN 0x4
249
#define HDA_CONFIG_DEFAULT_COLOR_RED 0x5
250
#define HDA_CONFIG_DEFAULT_COLOR_ORANGE 0x6
251
#define HDA_CONFIG_DEFAULT_COLOR_YELLOW 0x7
252
#define HDA_CONFIG_DEFAULT_COLOR_PURPLE 0x8
253
#define HDA_CONFIG_DEFAULT_COLOR_PINK 0x9
254
#define HDA_CONFIG_DEFAULT_COLOR_WHITE 0xE
255
#define HDA_CONFIG_DEFAULT_COLOR_OTHER 0xF
256
257
// Configuration Default connection type.
258
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_CONN_TYPE(a) \
259
((UINT8)((a >> 16) & 0xF))
260
#define HDA_CONFIG_DEFAULT_CONN_UNKNOWN 0x0
261
#define HDA_CONFIG_DEFAULT_CONN_1_8_STEREO 0x1
262
#define HDA_CONFIG_DEFAULT_CONN_1_4_STEREO 0x2
263
#define HDA_CONFIG_DEFAULT_CONN_ATAPI 0x3
264
#define HDA_CONFIG_DEFAULT_CONN_RCA 0x4
265
#define HDA_CONFIG_DEFAULT_CONN_OPTICAL 0x5
266
#define HDA_CONFIG_DEFAULT_CONN_DIGITAL_OTHER 0x6
267
#define HDA_CONFIG_DEFAULT_CONN_ANALOG_OTHER 0x7
268
#define HDA_CONFIG_DEFAULT_CONN_MULTI_ANALOG 0x8
269
#define HDA_CONFIG_DEFAULT_CONN_XLR 0x9
270
#define HDA_CONFIG_DEFAULT_CONN_RJ11 0xA
271
#define HDA_CONFIG_DEFAULT_CONN_COMBO 0xB
272
#define HDA_CONFIG_DEFAULT_CONN_OTHER 0xF
273
274
// Configuration Default default device.
275
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_DEVICE(a) \
276
((UINT8)((a >> 20) & 0xF))
277
#define HDA_CONFIG_DEFAULT_DEVICE_LINE_OUT 0x0
278
#define HDA_CONFIG_DEFAULT_DEVICE_SPEAKER 0x1
279
#define HDA_CONFIG_DEFAULT_DEVICE_HEADPHONE_OUT 0x2
280
#define HDA_CONFIG_DEFAULT_DEVICE_CD 0x3
281
#define HDA_CONFIG_DEFAULT_DEVICE_SPDIF_OUT 0x4
282
#define HDA_CONFIG_DEFAULT_DEVICE_OTHER_DIGITAL_OUT 0x5
283
#define HDA_CONFIG_DEFAULT_DEVICE_MODEM_LINE 0x6
284
#define HDA_CONFIG_DEFAULT_DEVICE_MODEM_HANDSET 0x7
285
#define HDA_CONFIG_DEFAULT_DEVICE_LINE_IN 0x8
286
#define HDA_CONFIG_DEFAULT_DEVICE_AUX 0x9
287
#define HDA_CONFIG_DEFAULT_DEVICE_MIC_IN 0xA
288
#define HDA_CONFIG_DEFAULT_DEVICE_TELEPHONY 0xB
289
#define HDA_CONFIG_DEFAULT_DEVICE_SPDIF_IN 0xC
290
#define HDA_CONFIG_DEFAULT_DEVICE_OTHER_DIGITAL_IN 0xD
291
#define HDA_CONFIG_DEFAULT_DEVICE_OTHER 0xF
292
293
// Configuration Default location.
294
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_LOC(a) \
295
((UINT8)((a >> 24) & 0xF))
296
#define HDA_CONFIG_DEFAULT_LOC_SPEC_NA 0x0
297
#define HDA_CONFIG_DEFAULT_LOC_SPEC_REAR 0x1
298
#define HDA_CONFIG_DEFAULT_LOC_SPEC_FRONT 0x2
299
#define HDA_CONFIG_DEFAULT_LOC_SPEC_LEFT 0x3
300
#define HDA_CONFIG_DEFAULT_LOC_SPEC_RIGHT 0x4
301
#define HDA_CONFIG_DEFAULT_LOC_SPEC_TOP 0x5
302
#define HDA_CONFIG_DEFAULT_LOC_SPEC_BOTTOM 0x6
303
304
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_SURF(a) \
305
((UINT8)((a >> 28) & 0x3))
306
#define HDA_CONFIG_DEFAULT_LOC_SURF_EXTERNAL 0x0
307
#define HDA_CONFIG_DEFAULT_LOC_SURF_INTERNAL 0x1
308
#define HDA_CONFIG_DEFAULT_LOC_SURF_SEPARATE 0x2
309
#define HDA_CONFIG_DEFAULT_LOC_SURF_OTHER 0x3
310
311
// Configuration Default port connectivity.
312
#define HDA_VERB_GET_CONFIGURATION_DEFAULT_PORT_CONN(a) \
313
((UINT8)((a >> 30) & 0x3))
314
#define HDA_CONFIG_DEFAULT_PORT_CONN_JACK 0x0
315
#define HDA_CONFIG_DEFAULT_PORT_CONN_NONE 0x1
316
#define HDA_CONFIG_DEFAULT_PORT_CONN_FIXED_DEVICE 0x2
317
#define HDA_CONFIG_DEFAULT_PORT_CONN_INT_JACK 0x3
318
319
// Configuration Default payload set.
320
#define HDA_VERB_SET_CONFIGURATION_DEFAULT_PAYLOAD(seq, assoc, jacko, color, connType, device, loc, surf, portConn) \
321
((UINT32)(((seq) & 0xF) | (((assoc) & 0xF) << 4) | (jacko ? HDA_CONFIG_DEFAULT_MISC_JACK_DETECT_OVERRIDE : 0) \
322
| (((color) & 0xF) << 12) | (((connType) & 0xF) << 16) | (((device) & 0xF) << 20) | (((loc) & 0x3) << 24) \
323
| (((surf) & 0x3) << 28) | (((portConn) & 0x3) << 30)))
324
325
// Get/Set Stripe Control.
326
#define HDA_VERB_GET_STRIPE_CONTROL 0xF24
327
#define HDA_VERB_SET_STRIPE_CONTROL 0x724
328
329
// Get/Set Converter Channel Count.
330
#define HDA_VERB_GET_CONVERTER_CHANNEL_COUNT 0xF2D
331
#define HDA_VERB_SET_CONVERTER_CHANNEL_COUNT 0x72D
332
333
// Get Data Island Packet - Size Info.
334
#define HDA_VERB_GET_DATA_ISLAND_PACKET_SIZE 0xF2E
335
336
// Get EDID-Like Data (ELD).
337
#define HDA_VERB_GET_EDID_LIKE_DATA 0xF2F
338
339
// Get/Set Data Island Packet - Index.
340
#define HDA_VERB_GET_DATA_ISLAND_PACKET_INDEX 0xF30
341
#define HDA_VERB_SET_DATA_ISLAND_PACKET_INDEX 0x730
342
343
// Get/Set Data Island Packet – Data.
344
#define HDA_VERB_GET_DATA_ISLAND_PACKET_DATA 0xF31
345
#define HDA_VERB_SET_DATA_ISLAND_PACKET_DATA 0x731
346
347
// Get/Set Data Island Packet – Transmit Control.
348
#define HDA_VERB_GET_DATA_ISLAND_PACKET_XMIT 0xF32
349
#define HDA_VERB_SET_DATA_ISLAND_PACKET_XMIT 0x732
350
351
// Get/Set Content Protection Control (CP_CONTROL).
352
#define HDA_VERB_GET_CP_CONTROL 0xF33
353
#define HDA_VERB_SET_CP_CONTROL 0x733
354
355
// Get/Set ASP Channel Mapping.
356
#define HDA_VERB_GET_ASP_MAPPING 0xF34
357
#define HDA_VERB_SET_ASP_MAPPING 0x734
358
359
// Execute Function Reset.
360
#define HDA_VERB_EXE_FUNC_RESET 0x7FF
361
362
// Get Parameter.
363
#define HDA_VERB_GET_PARAMETER 0xF00
364
365
//
366
// Parameters.
367
//
368
369
// Vendor ID.
370
#define HDA_PARAMETER_VENDOR_ID 0x00
371
#define HDA_PARAMETER_VENDOR_ID_DEV(a) ((UINT16)a)
372
#define HDA_PARAMETER_VENDOR_ID_VEN(a) ((UINT16)(a >> 16))
373
374
// Revision ID.
375
#define HDA_PARAMETER_REVISION_ID 0x02
376
#define HDA_PARAMETER_REVISION_ID_STEPPING(a) ((UINT8)a)
377
#define HDA_PARAMETER_REVISION_ID_REV_ID(a) ((UINT8)(a >> 8))
378
#define HDA_PARAMETER_REVISION_ID_MINOR_REV(a) ((UINT8)((a >> 16) & 0xF))
379
#define HDA_PARAMETER_REVISION_ID_MAJOR_REV(a) ((UINT8)((a >> 20) & 0xF))
380
381
// Subordinate Node Count.
382
#define HDA_PARAMETER_SUBNODE_COUNT 0x04
383
#define HDA_PARAMETER_SUBNODE_COUNT_TOTAL(a) ((UINT8)a);
384
#define HDA_PARAMETER_SUBNODE_COUNT_START(a) ((UINT8)(a >> 16));
385
386
// Function Group Type.
387
#define HDA_PARAMETER_FUNC_GROUP_TYPE 0x05
388
#define HDA_PARAMETER_FUNC_GROUP_TYPE_NODETYPE(a) ((UINT8)a)
389
#define HDA_PARAMETER_FUNC_GROUP_TYPE_UNSOL BIT8
390
#define HDA_FUNC_GROUP_TYPE_AUDIO 0x01
391
#define HDA_FUNC_GROUP_TYPE_MODEM 0x02
392
393
// Audio Function Group Capabilities.
394
#define HDA_PARAMETER_FUNC_GROUP_CAPS 0x08
395
#define HDA_PARAMETER_FUNC_GROUP_CAPS_OUT_DELAY(a) ((UINT8)(a & 0xF))
396
#define HDA_PARAMETER_FUNC_GROUP_CAPS_IN_DELAY(a) ((UINT8)((a >> 8) & 0xF))
397
#define HDA_PARAMETER_FUNC_GROUP_CAPS_BEEP_GEN BIT16
398
399
// Audio Widget Capabilities.
400
#define HDA_PARAMETER_WIDGET_CAPS 0x09
401
#define HDA_PARAMETER_WIDGET_CAPS_STEREO BIT0
402
#define HDA_PARAMETER_WIDGET_CAPS_IN_AMP BIT1
403
#define HDA_PARAMETER_WIDGET_CAPS_OUT_AMP BIT2
404
#define HDA_PARAMETER_WIDGET_CAPS_AMP_OVERRIDE BIT3
405
#define HDA_PARAMETER_WIDGET_CAPS_FORMAT_OVERRIDE BIT4
406
#define HDA_PARAMETER_WIDGET_CAPS_STRIPE BIT5
407
#define HDA_PARAMETER_WIDGET_CAPS_PROC_WIDGET BIT6
408
#define HDA_PARAMETER_WIDGET_CAPS_UNSOL_CAPABLE BIT7
409
#define HDA_PARAMETER_WIDGET_CAPS_CONN_LIST BIT8
410
#define HDA_PARAMETER_WIDGET_CAPS_DIGITAL BIT9
411
#define HDA_PARAMETER_WIDGET_CAPS_POWER_CNTRL BIT10
412
#define HDA_PARAMETER_WIDGET_CAPS_L_R_SWAP BIT11
413
#define HDA_PARAMETER_WIDGET_CAPS_CP_CAPS BIT12
414
#define HDA_PARAMETER_WIDGET_CAPS_CHAN_COUNT(a) ((UINT8)(((a >> 12) & 0xE) | (a & 0x1)))
415
#define HDA_PARAMETER_WIDGET_CAPS_DELAY(a) ((UINT8)((a >> 16) & 0xF))
416
#define HDA_PARAMETER_WIDGET_CAPS_TYPE(a) ((UINT8)((a >> 20) & 0xF))
417
418
// Widget types.
419
#define HDA_WIDGET_TYPE_OUTPUT 0x0
420
#define HDA_WIDGET_TYPE_INPUT 0x1
421
#define HDA_WIDGET_TYPE_MIXER 0x2
422
#define HDA_WIDGET_TYPE_SELECTOR 0x3
423
#define HDA_WIDGET_TYPE_PIN_COMPLEX 0x4
424
#define HDA_WIDGET_TYPE_POWER 0x5
425
#define HDA_WIDGET_TYPE_VOLUME_KNOB 0x6
426
#define HDA_WIDGET_TYPE_BEEP_GEN 0x7
427
#define HDA_WIDGET_TYPE_VENDOR 0xF
428
429
// Supported PCM Size, Rates.
430
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES 0x0A
431
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_8KHZ BIT0
432
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_11KHZ BIT1
433
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_16KHZ BIT2
434
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_22KHZ BIT3
435
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_32KHZ BIT4
436
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_44KHZ BIT5
437
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_48KHZ BIT6
438
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_88KHZ BIT7
439
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_96KHZ BIT8
440
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_176KHZ BIT9
441
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_192KHZ BIT10
442
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_384KHZ BIT11
443
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_8BIT BIT16
444
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_16BIT BIT17
445
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_20BIT BIT18
446
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_24BIT BIT19
447
#define HDA_PARAMETER_SUPPORTED_PCM_SIZE_RATES_32BIT BIT20
448
449
// Supported Stream Formats.
450
#define HDA_PARAMETER_SUPPORTED_STREAM_FORMATS 0x0B
451
#define HDA_PARAMETER_SUPPORTED_STREAM_FORMATS_PCM BIT0
452
#define HDA_PARAMETER_SUPPORTED_STREAM_FORMATS_FLOAT32 BIT1
453
#define HDA_PARAMETER_SUPPORTED_STREAM_FORMATS_AC3 BIT2
454
455
// Pin Capabilities.
456
#define HDA_PARAMETER_PIN_CAPS 0x0C
457
#define HDA_PARAMETER_PIN_CAPS_IMPEDANCE BIT0
458
#define HDA_PARAMETER_PIN_CAPS_TRIGGER BIT1
459
#define HDA_PARAMETER_PIN_CAPS_PRESENCE BIT2
460
#define HDA_PARAMETER_PIN_CAPS_HEADPHONE BIT3
461
#define HDA_PARAMETER_PIN_CAPS_OUTPUT BIT4
462
#define HDA_PARAMETER_PIN_CAPS_INPUT BIT5
463
#define HDA_PARAMETER_PIN_CAPS_BALANCED BIT6
464
#define HDA_PARAMETER_PIN_CAPS_HDMI BIT7
465
#define HDA_PARAMETER_PIN_CAPS_VREF(a) ((UINT8)(a >> 8))
466
#define HDA_PARAMETER_PIN_CAPS_VREF_HIZ BIT0
467
#define HDA_PARAMETER_PIN_CAPS_VREF_50 BIT1
468
#define HDA_PARAMETER_PIN_CAPS_VREF_GRD BIT2
469
#define HDA_PARAMETER_PIN_CAPS_VREF_80 BIT4
470
#define HDA_PARAMETER_PIN_CAPS_VREF_100 BIT5
471
#define HDA_PARAMETER_PIN_CAPS_EAPD BIT16
472
#define HDA_PARAMETER_PIN_CAPS_DISPLAYPORT BIT24
473
#define HDA_PARAMETER_PIN_CAPS_HBR BIT27
474
475
// Amplifier Capabilities (input and output).
476
#define HDA_PARAMETER_AMP_CAPS_INPUT 0x0D
477
#define HDA_PARAMETER_AMP_CAPS_OUTPUT 0x12
478
#define HDA_PARAMETER_AMP_CAPS_OFFSET(a) ((UINT8)(a & 0x7F))
479
#define HDA_PARAMETER_AMP_CAPS_NUM_STEPS(a) ((UINT8)((a >> 8) & 0x7F))
480
#define HDA_PARAMETER_AMP_CAPS_STEP_SIZE(a) ((UINT8)((a >> 16) & 0x7F))
481
#define HDA_PARAMETER_AMP_CAPS_MUTE BIT31
482
483
// Connection List Length.
484
#define HDA_PARAMETER_CONN_LIST_LENGTH 0x0E
485
#define HDA_PARAMETER_CONN_LIST_LENGTH_LEN(a) ((UINT8)(a & 0x7F))
486
#define HDA_PARAMETER_CONN_LIST_LENGTH_LONG BIT7
487
488
// Supported Power States.
489
#define HDA_PARAMETER_SUPPORTED_POWER_STATES 0x0F
490
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_D0 BIT0
491
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_D1 BIT1
492
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_D2 BIT2
493
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_D3 BIT3
494
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_D3_COLD BIT4
495
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_S3_D3_COLD BIT29
496
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_CLKSTOP BIT30
497
#define HDA_PARAMETER_SUPPORTED_POWER_STATES_EPSS BIT31
498
499
// Processing Capabilities.
500
#define HDA_PARAMETER_PROCESSING_CAPS 0x10
501
#define HDA_PARAMETER_PROCESSING_CAPS_BENIGN BIT0
502
#define HDA_PARAMETER_PROCESSING_CAPS_NUM_COEFF(a) ((UINT8)(a >> 8))
503
504
// GPIO Count.
505
#define HDA_PARAMETER_GPIO_COUNT 0x11
506
#define HDA_PARAMETER_GPIO_COUNT_NUM_GPIOS(a) ((UINT8)a)
507
#define HDA_PARAMETER_GPIO_COUNT_NUM_GPOS(a) ((UINT8)(a >> 8))
508
#define HDA_PARAMETER_GPIO_COUNT_NUM_GPIS(a) ((UINT8)(a >> 16))
509
#define HDA_PARAMETER_GPIO_COUNT_GPI_UNSOL BIT30
510
#define HDA_PARAMETER_GPIO_COUNT_GPI_WAKE BIT31
511
512
// Volume Knob Capabilities.
513
#define HDA_PARAMETER_VOLUME_KNOB_CAPS 0x13
514
#define HDA_PARAMETER_VOLUME_KNOB_CAPS_NUM_STEPS(a) ((UINT8)(a & 0x7F))
515
#define HDA_PARAMETER_VOLUME_KNOB_CAPS_DELTA BIT7
516
517
#endif
// EFI_HDA_VERBS_H
Include
Intel
IndustryStandard
HdaVerbs.h
Generated by
1.12.0