Subversion Repositories Kolibri OS

Rev

Rev 3083 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3083 leency 1
; Universal Interface for Intel High Definition Audio Codec
2
 
3
; nodes
4
AC_NODE_ROOT		equ 0x00
5
 
6
; function group types
7
AC_GRP_AUDIO_FUNCTION	equ 0x01
8
AC_GRP_MODEM_FUNCTION	equ 0x02
9
 
10
; widget types
11
AC_WID_AUD_OUT		equ 0x0 ; Audio Out
12
AC_WID_AUD_IN		equ 0x1 ; Audio In
13
AC_WID_AUD_MIX		equ 0x2 ; Audio Mixer
14
AC_WID_AUD_SEL		equ 0x3 ; Audio Selector
15
AC_WID_PIN		equ 0x4 ; Pin Complex
16
AC_WID_POWER		equ 0x5 ; Power
17
AC_WID_VOL_KNB		equ 0x6 ; Volume Knob
18
AC_WID_BEEP		equ 0x7 ; Beep Generator
19
AC_WID_VENDOR		equ 0x0F    ; Vendor specific
20
 
21
; GET verbs
22
AC_VERB_GET_STREAM_FORMAT		equ 0x0A00
23
AC_VERB_GET_AMP_GAIN_MUTE		equ 0x0B00
24
AC_VERB_GET_PROC_COEF			equ 0x0C00
25
AC_VERB_GET_COEF_INDEX			equ 0x0D00
26
AC_VERB_PARAMETERS			equ 0x0F00
27
AC_VERB_GET_CONNECT_SEL 		equ 0x0F01
28
AC_VERB_GET_CONNECT_LIST		equ 0x0F02
29
AC_VERB_GET_PROC_STATE			equ 0x0F03
30
AC_VERB_GET_SDI_SELECT			equ 0x0F04
31
AC_VERB_GET_POWER_STATE 		equ 0x0F05
32
AC_VERB_GET_CONV			equ 0x0F06
33
AC_VERB_GET_PIN_WIDGET_CONTROL		equ 0x0F07
34
AC_VERB_GET_UNSOLICITED_RESPONSE	equ 0x0F08
35
AC_VERB_GET_PIN_SENSE			equ 0x0F09
36
AC_VERB_GET_BEEP_CONTROL		equ 0x0F0A
37
AC_VERB_GET_EAPD_BTLENABLE		equ 0x0F0C
38
AC_VERB_GET_DIGI_CONVERT_1		equ 0x0F0D
39
AC_VERB_GET_DIGI_CONVERT_2		equ 0x0F0E ; unused
40
AC_VERB_GET_VOLUME_KNOB_CONTROL 	equ 0x0F0F
41
; f10-f1a: GPIO
42
AC_VERB_GET_GPIO_DATA			equ 0x0F15
43
AC_VERB_GET_GPIO_MASK			equ 0x0F16
44
AC_VERB_GET_GPIO_DIRECTION		equ 0x0F17
45
AC_VERB_GET_GPIO_WAKE_MASK		equ 0x0F18
46
AC_VERB_GET_GPIO_UNSOLICITED_RSP_MASK	equ 0x0F19
47
AC_VERB_GET_GPIO_STICKY_MASK		equ 0x0F1A
48
AC_VERB_GET_CONFIG_DEFAULT		equ 0x0F1C
49
; f20: AFG/MFG
50
AC_VERB_GET_SUBSYSTEM_ID		equ 0x0F20
51
AC_VERB_GET_CVT_CHAN_COUNT		equ 0x0F2D
52
AC_VERB_GET_HDMI_DIP_SIZE		equ 0x0F2E
53
AC_VERB_GET_HDMI_ELDD			equ 0x0F2F
54
AC_VERB_GET_HDMI_DIP_INDEX		equ 0x0F30
55
AC_VERB_GET_HDMI_DIP_DATA		equ 0x0F31
56
AC_VERB_GET_HDMI_DIP_XMIT		equ 0x0F32
57
AC_VERB_GET_HDMI_CP_CTRL		equ 0x0F33
58
AC_VERB_GET_HDMI_CHAN_SLOT		equ 0x0F34
59
 
60
; SET verbs
61
 
62
AC_VERB_SET_STREAM_FORMAT		equ 0x200
63
AC_VERB_SET_AMP_GAIN_MUTE		equ 0x300
64
AC_VERB_SET_PROC_COEF			equ 0x400
65
AC_VERB_SET_COEF_INDEX			equ 0x500
66
AC_VERB_SET_CONNECT_SEL 		equ 0x701
67
AC_VERB_SET_PROC_STATE			equ 0x703
68
AC_VERB_SET_SDI_SELECT			equ 0x704
69
AC_VERB_SET_POWER_STATE 		equ 0x705
70
AC_VERB_SET_CHANNEL_STREAMID		equ 0x706
71
AC_VERB_SET_PIN_WIDGET_CONTROL		equ 0x707
72
AC_VERB_SET_UNSOLICITED_ENABLE		equ 0x708
73
AC_VERB_SET_PIN_SENSE			equ 0x709
74
AC_VERB_SET_BEEP_CONTROL		equ 0x70A
75
AC_VERB_SET_EAPD_BTLENABLE		equ 0x70C
76
AC_VERB_SET_DIGI_CONVERT_1		equ 0x70D
77
AC_VERB_SET_DIGI_CONVERT_2		equ 0x70E
78
AC_VERB_SET_VOLUME_KNOB_CONTROL 	equ 0x70F
79
AC_VERB_SET_GPIO_DATA			equ 0x715
80
AC_VERB_SET_GPIO_MASK			equ 0x716
81
AC_VERB_SET_GPIO_DIRECTION		equ 0x717
82
AC_VERB_SET_GPIO_WAKE_MASK		equ 0x718
83
AC_VERB_SET_GPIO_UNSOLICITED_RSP_MASK	equ 0x719
84
AC_VERB_SET_GPIO_STICKY_MASK		equ 0x71A
85
AC_VERB_SET_CONFIG_DEFAULT_BYTES_0	equ 0x71C
86
AC_VERB_SET_CONFIG_DEFAULT_BYTES_1	equ 0x71D
87
AC_VERB_SET_CONFIG_DEFAULT_BYTES_2	equ 0x71E
88
AC_VERB_SET_CONFIG_DEFAULT_BYTES_3	equ 0x71F
89
AC_VERB_SET_EAPD			       equ 0x788
90
AC_VERB_SET_CODEC_RESET 		equ 0x7FF
91
AC_VERB_SET_CVT_CHAN_COUNT		equ 0x72D
92
AC_VERB_SET_HDMI_DIP_INDEX		equ 0x730
93
AC_VERB_SET_HDMI_DIP_DATA		equ 0x731
94
AC_VERB_SET_HDMI_DIP_XMIT		equ 0x732
95
AC_VERB_SET_HDMI_CP_CTRL		equ 0x733
96
AC_VERB_SET_HDMI_CHAN_SLOT		equ 0x734
97
 
98
; Parameter IDs
99
 
100
AC_PAR_VENDOR_ID		equ 0x00
101
AC_PAR_SUBSYSTEM_ID		equ 0x01
102
AC_PAR_REV_ID			equ 0x02
103
AC_PAR_NODE_COUNT		equ 0x04
104
AC_PAR_FUNCTION_TYPE		equ 0x05
105
AC_PAR_AUDIO_FG_CAP		equ 0x08
106
AC_PAR_AUDIO_WIDGET_CAP 	equ 0x09
107
AC_PAR_PCM			equ 0x0A
108
AC_PAR_STREAM			equ 0x0B
109
AC_PAR_PIN_CAP			equ 0x0C
110
AC_PAR_AMP_IN_CAP		equ 0x0D
111
AC_PAR_CONNLIST_LEN		equ 0x0E
112
AC_PAR_POWER_STATE		equ 0x0F
113
AC_PAR_PROC_CAP 		equ 0x10
114
AC_PAR_GPIO_CAP 		equ 0x11
115
AC_PAR_AMP_OUT_CAP		equ 0x12
116
AC_PAR_VOL_KNB_CAP		equ 0x13
117
AC_PAR_HDMI_LPCM_CAP		equ 0x20
118
 
119
; AC_VERB_PARAMETERS results (32bit)
120
 
121
 
122
; Function Group Type
123
AC_FGT_TYPE			equ (0xFF shl 0)
124
AC_FGT_TYPE_SHIFT		equ 0
125
AC_FGT_UNSOL_CAP		equ (1 shl 8)
126
 
127
; Audio Function Group Capabilities
128
AC_AFG_OUT_DELAY		equ (0xF shl 0)
129
AC_AFG_IN_DELAY 		equ (0xF shl 8)
130
AC_AFG_BEEP_GEN 		equ (1 shl 16)
131
 
132
; Audio Widget Capabilities
133
AC_WCAP_STEREO			equ (1 shl 0)  ; stereo I/O
134
AC_WCAP_IN_AMP			equ (1 shl 1)  ; AMP-in present
135
AC_WCAP_OUT_AMP 		equ (1 shl 2)  ; AMP-out present
136
AC_WCAP_AMP_OVRD		equ (1 shl 3)  ; AMP-parameter override
137
AC_WCAP_FORMAT_OVRD		equ (1 shl 4)  ; format override
138
AC_WCAP_STRIPE			equ (1 shl 5)  ; stripe
139
AC_WCAP_PROC_WID		equ (1 shl 6)  ; Proc Widget
140
AC_WCAP_UNSOL_CAP		equ (1 shl 7)  ; Unsol capable
141
AC_WCAP_CONN_LIST		equ (1 shl 8)  ; connection list
142
AC_WCAP_DIGITAL 		equ (1 shl 9)  ; digital I/O
143
AC_WCAP_POWER			equ (1 shl 10) ; power control
144
AC_WCAP_LR_SWAP 		equ (1 shl 11) ; L/R swap
145
AC_WCAP_CP_CAPS 		equ (1 shl 12) ; content protection
146
AC_WCAP_CHAN_CNT_EXT		equ (7 shl 13) ; channel count ext
147
AC_WCAP_DELAY			equ (0xF shl 16)
148
AC_WCAP_DELAY_SHIFT		equ 16
149
AC_WCAP_TYPE			equ (0xF shl 20)
150
AC_WCAP_TYPE_SHIFT		equ 20
151
 
152
; supported PCM rates and bits
153
AC_SUPPCM_RATES 		equ (0xFFF  shl  0)
154
AC_SUPPCM_BITS_8		equ (1 shl 16)
155
AC_SUPPCM_BITS_16		equ (1 shl 17)
156
AC_SUPPCM_BITS_20		equ (1 shl 18)
157
AC_SUPPCM_BITS_24		equ (1 shl 19)
158
AC_SUPPCM_BITS_32		equ (1 shl 20)
159
 
160
; supported PCM stream format
161
AC_SUPFMT_PCM			equ (1 shl 0)
162
AC_SUPFMT_FLOAT32		equ (1 shl 1)
163
AC_SUPFMT_AC3			equ (1 shl 2)
164
 
165
; GP I/O count
166
AC_GPIO_IO_COUNT		equ (0xFF shl 0)
167
AC_GPIO_O_COUNT 		equ (0xFF shl 8)
168
AC_GPIO_O_COUNT_SHIFT		equ 8
169
AC_GPIO_I_COUNT 		equ (0xFF shl 16)
170
AC_GPIO_I_COUNT_SHIFT		equ 16
171
AC_GPIO_UNSOLICITED		equ (1 shl 30)
172
AC_GPIO_WAKE			equ (1 shl 31)
173
 
174
; Converter stream, channel
175
AC_CONV_CHANNEL 		equ (0xF shl 0)
176
AC_CONV_STREAM			equ (0xF shl 4)
177
AC_CONV_STREAM_SHIFT		equ 4
178
 
179
; Input converter SDI select
180
AC_SDI_SELECT			equ (0xF shl 0)
181
 
182
; Unsolicited response control
183
AC_UNSOL_TAG			equ (0x3F shl 0)
184
AC_UNSOL_ENABLED		equ (1 shl 7)
185
AC_USRSP_EN			equ AC_UNSOL_ENABLED
186
 
187
; Unsolicited responses
188
AC_UNSOL_RES_TAG		equ (0x3F shl 26)
189
AC_UNSOL_RES_TAG_SHIFT		equ 26
190
AC_UNSOL_RES_SUBTAG		equ (0x1F shl 21)
191
AC_UNSOL_RES_SUBTAG_SHIFT	equ 21
192
AC_UNSOL_RES_ELDV		equ (1 shl 1)  ; ELD Data valid (for HDMI)
193
AC_UNSOL_RES_PD 		equ (1 shl 0)  ; pinsense detect
194
AC_UNSOL_RES_CP_STATE		equ (1 shl 1)  ; content protection
195
AC_UNSOL_RES_CP_READY		equ (1 shl 0)  ; content protection
196
 
197
; Pin widget capabilies
198
AC_PINCAP_IMP_SENSE		equ (1 shl 0)  ; impedance sense capable
199
AC_PINCAP_TRIG_REQ		equ (1 shl 1)  ; trigger required
200
AC_PINCAP_PRES_DETECT		equ (1 shl 2)  ; presence detect capable
201
AC_PINCAP_HP_DRV		equ (1 shl 3)  ; headphone drive capable
202
AC_PINCAP_OUT			equ (1 shl 4)  ; output capable
203
AC_PINCAP_IN			equ (1 shl 5)  ; input capable
204
AC_PINCAP_BALANCE		equ (1 shl 6)  ; balanced I/O capable
205
; Note: This LR_SWAP pincap is defined in the Realtek ALC883 specification,
206
;       but is marked reserved in the Intel HDA specification.
207
 
208
AC_PINCAP_LR_SWAP		equ (1 shl 7)  ; L/R swap
209
; Note: The same bit as LR_SWAP is newly defined as HDMI capability
210
;       in HD-audio specification
211
 
212
AC_PINCAP_HDMI			equ (1 shl 7)  ; HDMI pin
213
AC_PINCAP_DP			equ (1 shl 24) ; DisplayPort pin, can
214
						 ; coexist with AC_PINCAP_HDMI
215
 
216
AC_PINCAP_VREF			equ (0x37 shl 8)
217
AC_PINCAP_VREF_SHIFT		equ 8
218
AC_PINCAP_EAPD			equ (1 shl 16) ; EAPD capable
219
AC_PINCAP_HBR			equ (1 shl 27) ; High Bit Rate
220
; Vref status (used in pin cap)
221
AC_PINCAP_VREF_HIZ		equ (1 shl 0)  ; Hi-Z
222
AC_PINCAP_VREF_50		equ (1 shl 1)  ; 50%
223
AC_PINCAP_VREF_GRD		equ (1 shl 2)  ; ground
224
AC_PINCAP_VREF_80		equ (1 shl 4)  ; 80%
225
AC_PINCAP_VREF_100		equ (1 shl 5)  ; 100%
226
 
227
; Amplifier capabilities
228
AC_AMPCAP_OFFSET		equ (0x7F shl 0)  ; 0dB offset
229
AC_AMPCAP_OFFSET_SHIFT		equ 0
230
AC_AMPCAP_NUM_STEPS		equ (0x7F shl 8)  ; number of steps
231
AC_AMPCAP_NUM_STEPS_SHIFT	equ 8
232
AC_AMPCAP_STEP_SIZE		equ (0x7F shl 16) ; step size 0-32dB
233
						    ; in 0.25dB
234
AC_AMPCAP_STEP_SIZE_SHIFT	equ 16
235
AC_AMPCAP_MUTE			equ (1 shl 31)	  ; mute capable
236
AC_AMPCAP_MUTE_SHIFT		equ 31
237
 
238
; Connection list
239
AC_CLIST_LENGTH 		equ (0x7F shl 0)
240
AC_CLIST_LONG			equ (1 shl 7)
241
 
242
; Supported power status
243
AC_PWRST_D0SUP			equ (1 shl 0)
244
AC_PWRST_D1SUP			equ (1 shl 1)
245
AC_PWRST_D2SUP			equ (1 shl 2)
246
AC_PWRST_D3SUP			equ (1 shl 3)
247
AC_PWRST_D3COLDSUP		equ (1 shl 4)
248
AC_PWRST_S3D3COLDSUP		equ (1 shl 29)
249
AC_PWRST_CLKSTOP		equ (1 shl 30)
250
AC_PWRST_EPSS			equ (1 shl 31)
251
 
252
; Power state values
253
AC_PWRST_SETTING		equ (0xF shl 0)
254
AC_PWRST_ACTUAL 		equ (0xF shl 4)
255
AC_PWRST_ACTUAL_SHIFT		equ 4
256
AC_PWRST_D0			equ 0x00
257
AC_PWRST_D1			equ 0x01
258
AC_PWRST_D2			equ 0x02
259
AC_PWRST_D3			equ 0x03
260
 
261
; Processing capabilies
262
AC_PCAP_BENIGN			equ (1 shl 0)
263
AC_PCAP_NUM_COEF		equ (0xFF shl 8)
264
AC_PCAP_NUM_COEF_SHIFT		equ 8
265
 
266
; Volume knobs capabilities
267
AC_KNBCAP_NUM_STEPS		equ (0x7F shl 0)
268
AC_KNBCAP_DELTA 		equ (1 shl 7)
269
 
270
; HDMI LPCM capabilities
271
AC_LPCMCAP_48K_CP_CHNS		equ (0x0F shl 0) ; max channels w/ CP-on
272
AC_LPCMCAP_48K_NO_CHNS		equ (0x0F shl 4) ; max channels w/o CP-on
273
AC_LPCMCAP_48K_20BIT		equ (1 shl 8)  ; 20b bitrate supported
274
AC_LPCMCAP_48K_24BIT		equ (1 shl 9)  ; 24b bitrate supported
275
AC_LPCMCAP_96K_CP_CHNS		equ (0x0F shl 10) ; max channels w/ CP-on
276
AC_LPCMCAP_96K_NO_CHNS		equ (0x0F shl 14) ; max channels w/o CP-on
277
AC_LPCMCAP_96K_20BIT		equ (1 shl 18) ; 20b bitrate supported
278
AC_LPCMCAP_96K_24BIT		equ (1 shl 19) ; 24b bitrate supported
279
AC_LPCMCAP_192K_CP_CHNS 	equ (0x0F shl 20) ; max channels w/ CP-on
280
AC_LPCMCAP_192K_NO_CHNS 	equ (0x0F shl 24) ; max channels w/o CP-on
281
AC_LPCMCAP_192K_20BIT		equ (1 shl 28) ; 20b bitrate supported
282
AC_LPCMCAP_192K_24BIT		equ (1 shl 29) ; 24b bitrate supported
283
AC_LPCMCAP_44K			equ (1 shl 30) ; 44.1kHz support
284
AC_LPCMCAP_44K_MS		equ (1 shl 31) ; 44.1kHz-multiplies support
285
 
286
 
287
; Control Parameters
288
 
289
; Amp gain/mute
290
AC_AMP_MUTE			equ (1 shl 7)
291
AC_AMP_GAIN			equ (0x7F)
292
AC_AMP_GET_INDEX		equ (0xF shl 0)
293
 
294
AC_AMP_GET_LEFT 		equ (1 shl 13)
295
AC_AMP_GET_RIGHT		equ (0 shl 13)
296
AC_AMP_GET_OUTPUT		equ (1 shl 15)
297
AC_AMP_GET_INPUT		equ (0 shl 15)
298
 
299
AC_AMP_SET_INDEX		equ (0xF shl 8)
300
AC_AMP_SET_INDEX_SHIFT		equ 8
301
AC_AMP_SET_RIGHT		equ (1 shl 12)
302
AC_AMP_SET_LEFT 		equ (1 shl 13)
303
AC_AMP_SET_INPUT		equ (1 shl 14)
304
AC_AMP_SET_OUTPUT		equ (1 shl 15)
305
 
306
; DIGITAL1 bits
307
AC_DIG1_ENABLE			equ (1 shl 0)
308
AC_DIG1_V			equ (1 shl 1)
309
AC_DIG1_VCFG			equ (1 shl 2)
310
AC_DIG1_EMPHASIS		equ (1 shl 3)
311
AC_DIG1_COPYRIGHT		equ (1 shl 4)
312
AC_DIG1_NONAUDIO		equ (1 shl 5)
313
AC_DIG1_PROFESSIONAL		equ (1 shl 6)
314
AC_DIG1_LEVEL			equ (1 shl 7)
315
 
316
; DIGITAL2 bits
317
AC_DIG2_CC		     equ (0x7F shl 0)
318
 
319
; Pin widget control - 8bit
320
AC_PINCTL_VREFEN	     equ (0x7 shl 0)
321
AC_PINCTL_VREF_HIZ	     equ 0	 ; Hi-Z
322
AC_PINCTL_VREF_50	     equ 1	 ; 50%
323
AC_PINCTL_VREF_GRD	     equ 2	 ; ground
324
AC_PINCTL_VREF_80	     equ 4	 ; 80%
325
AC_PINCTL_VREF_100	     equ 5	 ; 100%
326
AC_PINCTL_IN_EN 	     equ (1 shl 5)
327
AC_PINCTL_OUT_EN	     equ (1 shl 6)
328
AC_PINCTL_HP_EN 	     equ (1 shl 7)
329
 
330
; Pin sense - 32bit
331
AC_PINSENSE_IMPEDANCE_MASK   equ (0x7FFFFFFF)
332
AC_PINSENSE_PRESENCE	     equ (1 shl 31)
333
AC_PINSENSE_ELDV	     equ (1 shl 30) ; ELD valid (HDMI)
334
 
335
; EAPD/BTL enable - 32bit
336
AC_EAPDBTL_BALANCED	     equ (1 shl 0)
337
AC_EAPDBTL_EAPD 	     equ (1 shl 1)
338
AC_EAPDBTL_LR_SWAP	     equ (1 shl 2)
339
 
340
; HDMI ELD data
341
AC_ELDD_ELD_VALID	     equ (1 shl 31)
342
AC_ELDD_ELD_DATA	     equ 0xFF
343
 
344
; HDMI DIP size
345
AC_DIPSIZE_ELD_BUF	     equ (1 shl 3) ; ELD buf size of packet size
346
AC_DIPSIZE_PACK_IDX	     equ (0x07 shl 0) ; packet index
347
 
348
; HDMI DIP index
349
AC_DIPIDX_PACK_IDX	     equ (0x07 shl 5) ; packet idnex
350
AC_DIPIDX_BYTE_IDX	     equ (0x1F shl 0) ; byte index
351
 
352
; HDMI DIP xmit (transmit) control
353
AC_DIPXMIT_MASK 	     equ (0x3 shl 6)
354
AC_DIPXMIT_DISABLE	     equ (0x0 shl 6) ; disable xmit
355
AC_DIPXMIT_ONCE 	     equ (0x2 shl 6) ; xmit once then disable
356
AC_DIPXMIT_BEST 	     equ (0x3 shl 6) ; best effort
357
 
358
; HDMI content protection (CP) control
359
AC_CPCTRL_CES		     equ (1 shl 9) ; current encryption state
360
AC_CPCTRL_READY 	     equ (1 shl 8) ; ready bit
361
AC_CPCTRL_SUBTAG	     equ (0x1F shl 3) ; subtag for unsol-resp
362
AC_CPCTRL_STATE 	     equ (3 shl 0) ; current CP request state
363
 
364
; Converter channel <-> HDMI slot mapping
365
AC_CVTMAP_HDMI_SLOT	     equ (0xF shl 0) ; HDMI slot number
366
AC_CVTMAP_CHAN		     equ (0xF shl 4) ; converter channel number
367
 
368
; configuration default - 32bit
369
AC_DEFCFG_SEQUENCE	     equ (0xF shl 0)
370
AC_DEFCFG_DEF_ASSOC	     equ (0xF shl 4)
371
AC_DEFCFG_ASSOC_SHIFT	     equ 4
372
AC_DEFCFG_MISC		     equ (0xF shl 8)
373
AC_DEFCFG_MISC_SHIFT	     equ 8
374
AC_DEFCFG_MISC_NO_PRESENCE   equ (1   shl 0)
375
AC_DEFCFG_COLOR 	     equ (0xF shl 12)
376
AC_DEFCFG_COLOR_SHIFT	     equ 12
377
AC_DEFCFG_CONN_TYPE	     equ (0xF shl 16)
378
AC_DEFCFG_CONN_TYPE_SHIFT    equ 16
379
AC_DEFCFG_DEVICE	     equ (0xF shl 20)
380
AC_DEFCFG_DEVICE_SHIFT	     equ 20
381
AC_DEFCFG_LOCATION	     equ (0x3F shl 24)
382
AC_DEFCFG_LOCATION_SHIFT     equ 24
383
AC_DEFCFG_PORT_CONN	     equ (0x3 shl 30)
384
AC_DEFCFG_PORT_CONN_SHIFT    equ 30
385
 
386
; device device types (0x0-0xf)
387
AC_JACK_LINE_OUT	     equ 0x0
388
AC_JACK_SPEAKER 	     equ 0x1
389
AC_JACK_HP_OUT		     equ 0x2
390
AC_JACK_CD		     equ 0x3
391
AC_JACK_SPDIF_OUT	     equ 0x4
392
AC_JACK_DIG_OTHER_OUT	     equ 0x5
393
AC_JACK_MODEM_LINE_SIDE      equ 0x6
394
AC_JACK_MODEM_HAND_SIDE      equ 0x7
395
AC_JACK_LINE_IN 	     equ 0x8
396
AC_JACK_AUX		     equ 0x9
397
AC_JACK_MIC_IN		     equ 0xA
398
AC_JACK_TELEPHONY	     equ 0xB
399
AC_JACK_SPDIF_IN	     equ 0xC
400
AC_JACK_DIG_OTHER_IN	     equ 0xD
401
AC_JACK_OTHER		     equ 0xF
402
 
403
; jack connection types (0x0-0xf)
404
AC_JACK_CONN_UNKNOWN	     equ 0x0
405
AC_JACK_CONN_1_8	     equ 0x1
406
AC_JACK_CONN_1_4	     equ 0x2
407
AC_JACK_CONN_ATAPI	     equ 0x3
408
AC_JACK_CONN_RCA	     equ 0x4
409
AC_JACK_CONN_OPTICAL	     equ 0x5
410
AC_JACK_CONN_OTHER_DIGITAL   equ 0x6
411
AC_JACK_CONN_OTHER_ANALOG    equ 0x7
412
AC_JACK_CONN_DIN	     equ 0x8
413
AC_JACK_CONN_XLR	     equ 0x9
414
AC_JACK_CONN_RJ11	     equ 0xA
415
AC_JACK_CONN_COMB	     equ 0xB
416
AC_JACK_CONN_OTHER	     equ 0xF
417
 
418
; jack colors (0x0-0xf)
419
AC_JACK_COLOR_UNKNOWN	equ 0x0
420
AC_JACK_COLOR_BLACK	equ 0x1
421
AC_JACK_COLOR_GREY	equ 0x2
422
AC_JACK_COLOR_BLUE	equ 0x3
423
AC_JACK_COLOR_GREEN	equ 0x4
424
AC_JACK_COLOR_RED	equ 0x5
425
AC_JACK_COLOR_ORANGE	equ 0x6
426
AC_JACK_COLOR_YELLOW	equ 0x7
427
AC_JACK_COLOR_PURPLE	equ 0x8
428
AC_JACK_COLOR_PINK	equ 0x9
429
AC_JACK_COLOR_WHITE	equ 0xE
430
AC_JACK_COLOR_OTHER	equ 0xF
431
 
432
; Jack location (0x0-0x3f)
433
; common case
434
AC_JACK_LOC_NONE	equ 0
435
AC_JACK_LOC_REAR	equ 1
436
AC_JACK_LOC_FRONT	equ 2
437
AC_JACK_LOC_LEFT	equ 3
438
AC_JACK_LOC_RIGHT	equ 4
439
AC_JACK_LOC_TOP 	equ 5
440
AC_JACK_LOC_BOTTOM	equ 6
441
 
442
; bits 4-5
443
AC_JACK_LOC_EXTERNAL	equ 0x00
444
AC_JACK_LOC_INTERNAL	equ 0x10
445
AC_JACK_LOC_SEPARATE	equ 0x20
446
AC_JACK_LOC_OTHER	equ 0x30
447
 
448
; external on primary chasis
449
AC_JACK_LOC_REAR_PANEL	equ 0x07
450
AC_JACK_LOC_DRIVE_BAY	equ 0x08
451
; internal
452
AC_JACK_LOC_RISER	equ 0x17
453
AC_JACK_LOC_HDMI	equ 0x18
454
AC_JACK_LOC_ATAPI	equ 0x19
455
; others
456
AC_JACK_LOC_MOBILE_IN	equ 0x37
457
AC_JACK_LOC_MOBILE_OUT	equ 0x38
458
 
459
; Port connectivity (0-3)
460
AC_JACK_PORT_COMPLEX	equ 0
461
AC_JACK_PORT_NONE	equ 1
462
AC_JACK_PORT_FIXED	equ 2
463
AC_JACK_PORT_BOTH	equ 3
464
 
465
; max. connections to a widget
466
HDA_MAX_CONNECTIONS	equ 32
467
 
468
; max. codec address
469
HDA_MAX_CODEC_ADDRESS	equ 0x0f
470
 
471
; max number of PCM devics per card
472
HDA_MAX_PCMS		equ 10
473
 
474
 
475
; Structures
476
 
477
; direction
5048 Asper 478
HDA_INPUT	   equ 0x0
479
HDA_OUTPUT	   equ 0x1
3083 leency 480
 
481
 
482
struc HDA_VERB
483
{
5048 Asper 484
	.nid	   dw ?
485
	.verb	   dd ?
486
	.param	   dd ?
3083 leency 487
}
488
 
489
virtual at 0
490
   HDA_VERB  HDA_VERB
491
end virtual
492
 
493
; the struct for codec->pin_configs
494
struc HDA_PINCFG
495
{
496
	.nid	   dw ?
497
	.reserved  dw ? ;Asper + for align purposes
498
	.cfg	   dd ?
499
	.sizeof:
500
}
501
 
502
virtual at 0
503
   HDA_PINCFG  HDA_PINCFG
504
end virtual
505
 
506
 
507
;Asper [   this part is from "hda_local.h"
508
 
509
;(...)
510
; amp value bits
5048 Asper 511
HDA_AMP_MUTE	   equ 0x80
512
HDA_AMP_UNMUTE	   equ 0x00
513
HDA_AMP_VOLMASK    equ 0x7F
3083 leency 514
;(...)
515
 
516
 
517
; unsolicited event handler
518
HDA_UNSOL_QUEUE_SIZE	equ 64
519
 
520
;struc  HDA_BUS_UNSOLICITED
521
;{
522
;        ; ring buffer
523
;        .queue:
524
;            times HDA_UNSOL_QUEUE_SIZE*2 dd ?
525
;        .rp                              dd ?
526
;        .wp                              dd ?
527
;
528
;        ; workqueue
529
;        .work                            dd ?;struct work_struct work;
530
;        .bus                             dd ?  ;struct hda_bus ;bus
531
;};
532
 
533
; Helper for automatic ping configuration
534
AUTO_PIN_MIC		 equ 0
535
AUTO_PIN_FRONT_MIC	 equ 1
536
AUTO_PIN_LINE		 equ 2
537
AUTO_PIN_FRONT_LINE	 equ 3
538
AUTO_PIN_CD		 equ 4
539
AUTO_PIN_AUX		 equ 5
540
AUTO_PIN_LAST		 equ 6
541
 
542
 
543
AUTO_PIN_LINE_OUT	 equ 0
544
AUTO_PIN_SPEAKER_OUT	 equ 1
545
AUTO_PIN_HP_OUT 	 equ 2
546
 
547
 
548
;extern const char *auto_pin_cfg_labels[AUTO_PIN_LAST];
549
 
550
AUTO_CFG_MAX_OUTS	 equ 5
551
 
552
;struc AUTO_PIN_CFG
553
;{
554
;        .line_outs       dd ?
555
;        ; sorted in the order of FrontSurrCLFESide
556
;        .line_out_pins   times AUTO_CFG_MAX_OUTS  dw ?
557
;        .speaker_outs    dd ?
558
;        .speaker_pins    times AUTO_CFG_MAX_OUTS  dw ?
559
;        .hp_outs         dd ?
560
;        .line_out_type   dd ?   ; AUTO_PIN_XXX_OUT
561
;        .hp_pins         times AUTO_CFG_MAX_OUTS  dw ?
562
;        .input_pins      times AUTO_PIN_LAST      dw ?
563
;        .dig_outs        dd ?
564
;        .dig_out_pins    times 2 dd ?
565
;        .dig_in_pin      dw ?
566
;        .mono_out_pin    dw ?
567
;        .dig_out_type    times 2 dd ?  ; HDA_PCM_TYPE_XXX
568
;        .dig_in_type     dd ?  ; HDA_PCM_TYPE_XXX
569
;}
570
 
571
;#define get_defcfg_connect(cfg) \
572
;        ((cfg & AC_DEFCFG_PORT_CONN) >> AC_DEFCFG_PORT_CONN_SHIFT)
573
;#define get_defcfg_association(cfg) \
574
;        ((cfg & AC_DEFCFG_DEF_ASSOC) >> AC_DEFCFG_ASSOC_SHIFT)
575
;#define get_defcfg_location(cfg) \
576
;        ((cfg & AC_DEFCFG_LOCATION) >> AC_DEFCFG_LOCATION_SHIFT)
577
;#define get_defcfg_sequence(cfg) \
578
;        (cfg & AC_DEFCFG_SEQUENCE)
579
;#define get_defcfg_device(cfg) \
580
;        ((cfg & AC_DEFCFG_DEVICE) >> AC_DEFCFG_DEVICE_SHIFT)
581
 
582
; amp values
583
;AMP_IN_MUTE(idx)        (0x7080 | ((idx)<<8))
584
;AMP_IN_UNMUTE(idx)      (0x7000 | ((idx)<<8))
585
AMP_OUT_MUTE		equ 0xb080
586
AMP_OUT_UNMUTE		equ 0xb000
587
AMP_OUT_ZERO		equ 0xb000
588
; pinctl values
589
PIN_IN			equ (AC_PINCTL_IN_EN)
590
PIN_VREFHIZ		equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_HIZ)
591
PIN_VREF50		equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_50)
592
PIN_VREFGRD		equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_GRD)
593
PIN_VREF80		equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_80)
594
PIN_VREF100		equ (AC_PINCTL_IN_EN or AC_PINCTL_VREF_100)
595
PIN_OUT 		equ (AC_PINCTL_OUT_EN)
596
PIN_HP			equ (AC_PINCTL_OUT_EN or AC_PINCTL_HP_EN)
597
PIN_HP_AMP		equ (AC_PINCTL_HP_EN)
598
 
599
 
600
; get widget capabilities
601
proc  get_wcaps stdcall, nid:dword
5048 Asper 602
	push	ebx ecx edx
603
	xor	eax, eax
604
	movzx	ebx, [codec.start_nid]
605
	movzx	ecx, [codec.num_nodes]
606
	mov	edx, [nid]
3083 leency 607
 
5048 Asper 608
	cmp	edx, ebx
609
	jl	.out
3083 leency 610
 
5048 Asper 611
	add	ecx, ebx
612
	cmp	edx, ecx
613
	jge	.out
3083 leency 614
 
5048 Asper 615
	sub	edx, ebx
616
	shl	edx, 2
617
	add	edx, [codec.wcaps]
618
	mov	eax, [edx]
619
.out:
620
	pop	edx ecx ebx
621
	ret
3083 leency 622
endp
623
 
624
; get the widget type from widget capability bits
625
proc  get_wcaps_type stdcall, wcaps:dword
5048 Asper 626
	mov	eax, [wcaps]
627
	and	eax, AC_WCAP_TYPE
628
	shr	eax, AC_WCAP_TYPE_SHIFT
629
	ret
3083 leency 630
endp
631
 
632
;static inline unsigned int get_wcaps_channels(u32 wcaps)
633
proc  get_wcaps_channels stdcall, wcaps:dword
5048 Asper 634
	mov	eax, [wcaps]
635
	and	eax, AC_WCAP_CHAN_CNT_EXT
636
	shr	eax, 13
637
	shl	eax, 1
638
	or	eax, 1
639
	inc	eax
640
	ret
3083 leency 641
endp
642
 
643
;Asper ]