Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | 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
478
HDA_INPUT	  equ 0x0
479
HDA_OUTPUT	  equ 0x1
480
 
481
 
482
struc HDA_VERB
483
{
484
	.nid	  dw ?
485
	.verb	  dd ?
486
	.param	  dd ?
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
511
HDA_AMP_MUTE	  equ 0x80
512
HDA_AMP_UNMUTE	  equ 0x00
513
HDA_AMP_VOLMASK   equ 0x7F
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
;static inline u32 get_wcaps(struct hda_codec *codec, hda_nid_t nid)
602
proc  get_wcaps stdcall, nid:dword
603
     push    ebx ecx edx
604
     xor     eax, eax
605
     movzx   ebx, [codec.start_nid]
606
     movzx   ecx, [codec.num_nodes]
607
     mov     edx, [nid]
608
 
609
     cmp     edx, ebx
610
     jl      .out
611
 
612
     add     ecx, ebx
613
     cmp     edx, ecx
614
     jge     .out
615
 
616
     sub     edx, ebx
617
     shl     edx, 2
618
     add     edx, [codec.wcaps]
619
     mov     eax, [edx]
620
  .out:
621
     pop     edx ecx ebx
622
     ret
623
endp
624
 
625
; get the widget type from widget capability bits
626
;#define get_wcaps_type(wcaps) (((wcaps) & AC_WCAP_TYPE) >> AC_WCAP_TYPE_SHIFT)
627
proc  get_wcaps_type stdcall, wcaps:dword
628
     mov     eax, [wcaps]
629
     and     eax, AC_WCAP_TYPE
630
     shr     eax, AC_WCAP_TYPE_SHIFT
631
     ret
632
endp
633
 
634
;static inline unsigned int get_wcaps_channels(u32 wcaps)
635
proc  get_wcaps_channels stdcall, wcaps:dword
636
;        chans = (wcaps & AC_WCAP_CHAN_CNT_EXT) >> 13;
637
;        chans = ((chans << 1) | 1) + 1;
638
     mov     eax, [wcaps]
639
     and     eax, AC_WCAP_CHAN_CNT_EXT
640
     shr     eax, 13
641
     shl     eax, 1
642
     or      eax, 1
643
     inc     eax
644
     ret
645
endp
646
 
647
 
648
;Asper ]