1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2000-2001 by Sun Microsystems, Inc.
* All rights reserved.
*
* CAUTION: This header file has not gone through a formal review process.
* Thus its commitment level is very low and may change or be removed
* at any time.
*/
#ifndef _SYS_AC97_H
#define _SYS_AC97_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _KERNEL
/*
* This header file describes the AC-97 V2.1 Codec register set. See the
* spec for a detailed description of each register.
*/
struct ac97_v21 {
uint16_t ac97_reset; /* 00h */
uint16_t ac97_master_volume; /* 02h */
uint16_t ac97_headphone_volume; /* 04h, optional */
uint16_t ac97_master_mono_volume; /* 06h, optional */
uint16_t ac97_master_tone; /* 08h, optional */
uint16_t ac97_pc_beep_volume; /* 0ah, optional */
uint16_t ac97_phone_volume; /* 0ch, optional */
uint16_t ac97_mic_volume; /* 0eh */
uint16_t ac97_line_in_volume; /* 10h */
uint16_t ac97_cd_volume; /* 12h */
uint16_t ac97_video_volume; /* 14h, optional */
uint16_t ac97_aux_volume; /* 16h, optional */
uint16_t ac97_PCM_out_volume; /* 18h */
uint16_t ac97_record_select; /* 1ah */
uint16_t ac97_record_gain; /* 1ch */
uint16_t ac97_record_gain_mic; /* 1eh, optional */
uint16_t ac97_general_purpose; /* 20h, optional */
uint16_t ac97_threeD_control; /* 22h, optional */
uint16_t ac97_reserved_1; /* 24h */
uint16_t ac97_pwrdwn_ctrl_stat; /* 26h */
/* extended audio registers */
uint16_t ac97_ext_audio_id; /* 28h, optional */
uint16_t ac97_ext_audio_stat_ctrl; /* 2ah, optional */
uint16_t ac97_ext_front_DAC_rate; /* 2ch, optional */
uint16_t ac97_ext_surround_DAC_rate; /* 2eh, optional */
uint16_t ac97_ext_LFE_DAC_rate; /* 30h, optional */
uint16_t ac97_ext_LR_ADC_rate; /* 32h, optional */
uint16_t ac97_ext_mic_ADC_rate; /* 34h, optional */
uint16_t ac97_ext_C_LFE_volume; /* 36h, optional */
uint16_t ac97_ext_LR_surround_volume; /* 38h, optional */
uint16_t ac97_ext_reserved_1; /* 3ah, optional */
/* extended modem registers */
uint16_t ac97_ext_modem_id; /* 3ch, optional */
uint16_t ac97_ext_modem_stat_ctrl; /* 3eh, optional */
uint16_t ac97_ext_line1_DAC_ADC_rate; /* 40h, optional */
uint16_t ac97_ext_line2_DAC_ADC_rate; /* 42h, optional */
uint16_t ac97_ext_hndst_DAC_ADC_rate; /* 44h, optional */
uint16_t ac97_ext_line1_DAC_ADC_level; /* 46h, optional */
uint16_t ac97_ext_line2_DAC_ADC_level; /* 48h, optional */
uint16_t ac97_ext_hndst_DAC_ADC_level; /* 4ah, optional */
uint16_t ac97_ext_GPIO_pin_config; /* 4ch, optional */
uint16_t ac97_ext_GPIO_pin_polarity; /* 4eh, optional */
uint16_t ac97_ext_GPIO_pin_sticky; /* 50h, optional */
uint16_t ac97_ext_GPIO_pin_wakeup; /* 52h, optional */
uint16_t ac97_ext_GPIO_pin_status; /* 54h, optional */
uint16_t ac97_ext_modem_AFE_stat_ctrl; /* 56h, optional */
uint16_t ac97_ext_reserved_2; /* 58h, optional */
/* reserved for vendor usage */
uint16_t ac97_vendor_01; /* 5ah, optional */
uint16_t ac97_vendor_02; /* 5ch, optional */
uint16_t ac97_vendor_03; /* 5eh, optional */
uint16_t ac97_vendor_04; /* 60h, optional */
uint16_t ac97_vendor_05; /* 62h, optional */
uint16_t ac97_vendor_06; /* 64h, optional */
uint16_t ac97_vendor_07; /* 66h, optional */
uint16_t ac97_vendor_08; /* 68h, optional */
uint16_t ac97_vendor_09; /* 6ah, optional */
uint16_t ac97_vendor_10; /* 6ch, optional */
uint16_t ac97_vendor_11; /* 6eh, optional */
uint16_t ac97_vendor_12; /* 70h, optional */
uint16_t ac97_vendor_13; /* 72h, optional */
uint16_t ac97_vendor_14; /* 74h, optional */
uint16_t ac97_vendor_15; /* 76h, optional */
uint16_t ac97_vendor_16; /* 78h, optional */
uint16_t ac97_vendor_17; /* 7ah, optional */
uint16_t ac97_vendor_id1; /* 7ch */
uint16_t ac97_vendor_id2; /* 7eh */
};
typedef struct ac97_v21 ac97_v21_t;
/*
* Defines for the V2.1 registers.
*/
/* Reset Register Index 00h */
#define AC97_RESET_REGISTER 0x00
#define RR_DEDICATED_MIC 0x0001
#define RR_RESERVED 0x0002
#define RR_BASS_TREBLE 0x0004
#define RR_PSEUDO_STEREO 0x0008
#define RR_HEADPHONE_SUPPORT 0x0010
#define RR_LOUDNESS_SUPPORT 0x0020
#define RR_18_BIT_DAC 0x0040
#define RR_20_BIT_DAC 0x0080
#define RR_18_BIT_ADC 0x0100
#define RR_20_BIT_ADC 0x0200
#define RR_3D_STEREO_ENHANCE_MASK 0x7c00
/* Master Volume Register Index 02h */
#define AC97_MASTER_VOLUME_REGISTER 0x02
#define MVR_RIGHT_MASK 0x001f
#define MVR_RIGHT_0dB_ATTEN 0x0000
#define MVR_RIGHT_OPTIONAL_MASK 0x003f
#define MVR_LEFT_MASK 0x1f00
#define MVR_LEFT_0dB_ATTEN 0x0000
#define MVR_LEFT_OPTIONAL_MASK 0x3f00
#define MVR_MUTE 0x8000
/* Headphone Volume Register Index 04h - Optional */
#define AC97_HEADPHONE_VOLUME_REGISTER 0x04
#define HPVR_RIGHT_MASK 0x001f
#define HPVR_RIGHT_0dB_ATTEN 0x0000
#define HPVR_RIGHT_OPTIONAL_MASK 0x003f
#define HPVR_LEFT_MASK 0x1f00
#define HPVR_LEFT_0dB_ATTEN 0x0000
#define HPVR_LEFT_OPTIONAL_MASK 0x3f00
#define HPVR_MUTE 0x8000
/* Mono Master Volume Register Index 06h - Optional */
#define AC97_MONO_MASTER_VOLUME_REGSITER 0x06
#define MMVR_MASK 0x001f
#define MMVR_0dB_ATTEN 0x0000
#define MMVR_OPTIONAL_MASK 0x003f
#define MMVR_MUTE 0x8000
/* Master Tone Control Register Index 08h - Optional */
#define AC97_MASTER_TONE_CONTROL_REGISTER 0x08
#define MTCR_TREBLE_MASK 0x000e
#define MTCR_TREBLE_OPTIONAL_MASK 0x000f
#define MTCR_TREBLE_BYPASS 0x000f
#define MTCR_BASS_MASK 0x0e00
#define MTCR_BASS_OPTIONAL_MASK 0x0f00
#define MTCR_BASS_BYPASS 0x0f00
/* PC Beep Register Index 0ah - Optional */
#define AC97_PC_BEEP_REGISTER 0x0a
#define PCBR_VOLUME_MASK 0x001e
#define PCBR_0dB_ATTEN 0x0000
#define PCBR_MUTE 0x8000
/* Phone Volume Register Index 0ch - Optional */
#define AC97_PHONE_VOLUME_REGISTER 0x0c
#define PVR_GAIN_MASK 0x001f
#define PVR_0dB_GAIN 0x0010
#define PVR_MAX_ATTEN 0x001f
#define PVR_MUTE 0x8000
/* Mic Volume Register Index 0eh */
#define AC97_MIC_VOLUME_REGISTER 0x0e
#define MICVR_GAIN_MASK 0x001f
#define MICVR_0dB_GAIN 0x0008
#define MICVR_MAX_ATTEN 0x001f
#define MICVR_20dB_BOOST 0x0040
#define MICVR_20dB_NOBOOST 0x0000
#define MICVR_MUTE 0x8000
/* Line In Volume Register Index 10h */
#define AC97_LINE_IN_VOLUME_REGISTER 0x10
#define LIVR_RIGHT_GAIN_MASK 0x001f
#define LIVR_RIGHT_0dB_GAIN 0x0010
#define LIVR_RIGHT_MAX_ATTEN 0x001f
#define LIVR_LEFT_GAIN_MASK 0x1f00
#define LIVR_LEFT_0dB_GAIN 0x1000
#define LIVR_LEFT_MAX_ATTEN 0x1f00
#define LIVR_MUTE 0x8000
/* CD Volume Register Index 12h */
#define AC97_CD_VOLUME_REGISTER 0x12
#define CDVR_RIGHT_GAIN_MASK 0x001f
#define CDVR_RIGHT_0dB_GAIN 0x0010
#define CDVR_RIGHT_MAX_ATTEN 0x001f
#define CDVR_LEFT_GAIN_MASK 0x1f00
#define CDVR_LEFT_0dB_GAIN 0x1000
#define CDVR_LEFT_MAX_ATTEN 0x1f00
#define CDVR_MUTE 0x8000
/* Video Volume Register Index 14h - Optional */
#define AC97_VIDEO_VOLUME_REGISTER 0x14
#define VIDVR_RIGHT_GAIN_MASK 0x001f
#define VIDVR_RIGHT_0dB_GAIN 0x0010
#define VIDVR_RIGHT_MAX_ATTEN 0x001f
#define VIDVR_LEFT_GAIN_MASK 0x1f00
#define VIDVR_LEFT_0dB_GAIN 0x1000
#define VIDVR_LEFT_MAX_ATTEN 0x1f00
#define VIDVR_MUTE 0x8000
/* Aux Volume Register Index 16h - Optional */
#define AC97_AUX_VOLUME_REGISTER 0x16
#define AUXVR_RIGHT_GAIN_MASK 0x001f
#define AUXVR_RIGHT_0dB_GAIN 0x0010
#define AUXVR_RIGHT_MAX_ATTEN 0x001f
#define AUXVR_LEFT_GAIN_MASK 0x1f00
#define AUXVR_LEFT_0dB_GAIN 0x1000
#define AUXVR_LEFT_MAX_ATTEN 0x1f00
#define AUXVR_MUTE 0x8000
/* PCM Out Input Volume Register Index 18h */
#define AC97_PCM_OUT_VOLUME_REGISTER 0x18
#define PCMOVR_RIGHT_GAIN_MASK 0x001f
#define PCMOVR_RIGHT_0dB_GAIN 0x0010
#define PCMOVR_RIGHT_MAX_ATTEN 0x001f
#define PCMOVR_LEFT_GAIN_MASK 0x1f00
#define PCMOVR_LEFT_0dB_GAIN 0x1000
#define PCMOVR_LEFT_MAX_ATTEN 0x1f00
#define PCMOVR_MUTE 0x8000
/* Record Select Control Register Index 1ah */
#define AC97_RECORD_SELECT_CTRL_REGISTER 0x1a
#define RSCR_R_MIC 0x0000
#define RSCR_R_CD 0x0001
#define RSCR_R_VIDEO 0x0002
#define RSCR_R_AUX 0x0003
#define RSCR_R_LINE_IN 0x0004
#define RSCR_R_STEREO_MIX 0x0005
#define RSCR_R_MONO_MIX 0x0006
#define RSCR_R_PHONE 0x0007
#define RSCR_L_MIC 0x0000
#define RSCR_L_CD 0x0100
#define RSCR_L_VIDEO 0x0200
#define RSCR_L_AUX 0x0300
#define RSCR_L_LINE_IN 0x0400
#define RSCR_L_STEREO_MIX 0x0500
#define RSCR_L_MONO_MIX 0x0600
#define RSCR_L_PHONE 0x0700
/* Record Gain Register Index 1ch */
#define AC97_RECORD_GAIN_REGISTER 0x1c
#define RGR_RIGHT_MASK 0x000f
#define RGR_RIGHT_0db_GAIN 0x0000
#define RGR_RIGHT_MAX_GAIN 0x000f
#define RGR_LEFT_MASK 0x0f00
#define RGR_LEFT_0db_GAIN 0x0000
#define RGR_LEFT_MAX_GAIN 0x0f00
#define RGR_MUTE 0x8000
/* Record Gain Mic Register Index 1eh - Optional */
#define AC97_RECORD_GAIN_MIC_REGISTER 0x1e
#define RGMR_MASK 0x000f
#define RGMR_MUTE 0x8000
#define RGMR_MASK 0x000f
#define RGMR_0db_GAIN 0x0000
#define RGMR_MAX_GAIN 0x000f
/* General Purpose Register Index 20h - Optional */
#define AC97_GENERAL_PURPOSE_REGISTER 0x20
#define GPR_LPBK 0x0080
#define GPR_MS_MIC1 0x0000
#define GPR_MS_MIC2 0x0100
#define GPR_MONO_MIX_IN 0x0000
#define GPR_MONO_MIC_IN 0x0200
#define GPR_BASS_BOOST 0x1000
#define GPR_3D_STEREO_ENHANCE 0x2000
#define GPR_ST 0x4000
#define GPR_POP_PRE_3D 0x0000
#define GPR_POP_POST_3D 0x8000
/* 3D Control Regsiter Index 22h - Optional */
#define AC97_THREE_D_CONTROL_REGISTER 0x22
#define TDCR_DEPTH_MASK 0x000f
#define TDCR_CENTER_MASK 0x0f00
#define TDCR_NULL 0x0000
/* Powerdown Control Status Register Index 26h */
#define AC97_POWERDOWN_CTRL_STAT_REGISTER 0x26
#define PCSR_ADC 0x0001
#define PCSR_DAC 0x0002
#define PCSR_ANL 0x0004
#define PCSR_REF 0x0008
#define PCSR_POWERD_UP (PCSR_ADC|PCSR_DAC|\
PCSR_ANL|PCSR_REF)
#define PCSR_PR0 0x0100
#define PCSR_PR1 0x0200
#define PCSR_PR2 0x0400
#define PCSR_PR3 0x0800
#define PCSR_PR4 0x1000
#define PCSR_PR5 0x2000
#define PCSR_PR6 0x4000
#define PCSR_EAPD 0x8000
/* Extended Audio Register Index 28h - Optional */
#define AC97_EXTENDED_AUDIO_REGISTER 0x28
#define EAR_VRA 0x0001
#define EAR_DRA 0x0002
#define EAR_VRM 0x0008
#define EAR_CDAC 0x0040
#define EAR_SDAC 0x0080
#define EAR_LDAC 0x0100
#define EAR_AMAP 0x0200
#define EAR_PRIMARY_CODEC 0x0000
#define EAR_SECONDARY_01_CODEC 0x4000
#define EAR_SECONDARY_10_CODEC 0x8000
#define EAR_SECONDARY_11_CODEC 0xc000
/* Extended Audio Status and Control Register Index 2ah - Optional */
#define AC97_EXTENDED_AUDIO_STAT_CTRL_REGISTER 0x2a
#define EASCR_VRA 0x0001
#define EASCR_DRA 0x0002
#define EASCR_VRM 0x0008
#define EASCR_CDAC 0x0040
#define EASCR_SDAC 0x0080
#define EASCR_LDAC 0x0100
#define EASCR_MADC 0x0200
#define EASCR_PRI 0x0800
#define EASCR_PRJ 0x1000
#define EASCR_PRK 0x2000
#define EASCR_PRL 0x4000
/* Extended Front DAC Rate Register 2ch - Optional */
#define AC97_EXTENDED_FRONT_DAC_RATE_REGISTER 0x2c
#define AC97_SAMPLE_RATE_48000 0xbb80
/* Extended Surround DAC Rate Register 2eh - Optional */
#define AC97_EXTENDED_SURROUND_DAC_RATE_REGISTER 0x2e
/* Extended LFE DAC Rate Register 30h - Optional */
#define AC97_EXTENDED_LFE_DAC_RATE_REGISTER 0x30
/* Extended LR DAC Rate Register 32h - Optional */
#define AC97_EXTENDED_LR_DAC_RATE_REGISTER 0x32
/* Extended Mic ADC Rate Register 34h - Optional */
#define AC97_EXTENDED_MIC_ADC_RATE_REGISTER 0x34
/* Extended Center and LFE Volume Register 36h - Optional */
#define AC97_EXTENDED_C_LFE_VOLUME_REGISTER 0x36
#define EXLFEVR_CENTER_MASK 0x001f
#define EXLFEVR_CENTER_OPTIONAL_MASK 0x003f
#define EXLFEVR_CENTER_MTUE 0x0080
#define EXLFEVR_LFE_MASK 0x1f00
#define EXLFEVR_LFE_OPTIONAL_MASK 0x3f00
#define EXLFEVR_LFE_MUTE 0x8000
/* Extended Left and Right Surround Volume Register 38h - Optional */
#define AC97_EXTENDED_LRS_VOLUME_REGISTER 0x38
#define EXLFEVR_RIGHT_MASK 0x001f
#define EXLFEVR_RIGHT_OPTIONAL_MASK 0x003f
#define EXLFEVR_RIGHT_MTUE 0x0080
#define EXLFEVR_LEFT_MASK 0x1f00
#define EXLFEVR_LEFT_OPTIONAL_MASK 0x3f00
#define EXLFEVR_LEFT_MUTE 0x8000
/* Extended Modem ID Register 3ch - Optional */
#define AC97_EXTENDED_MODEM_ID_REGISTER 0x3c
#define EMIDR_LINE1 0x0001
#define EMIDR_LINE2 0x0002
#define EMIDR_HSET 0x0004
#define EMIDR_CID1 0x0008
#define EMIDR_CID2 0x0010
#define EMIDR_PRIMARY_CODEC 0x0000
#define EMIDR_SECONDARY_01_CODEC 0x4000
#define EMIDR_SECONDARY_10_CODEC 0x8000
#define EMIDR_SECONDARY_11_CODEC 0xc000
/* Extended Modem Status and Control Register 3eh - Optional */
#define AC97_EXTENDED_MODE_STAT_CTRL_REGISTER 0x3e
#define EMSCR_BPIO 0x0001
#define EMSCR_MREF 0x0002
#define EMSCR_ADC1 0x0004
#define EMSCR_DAC1 0x0008
#define EMSCR_ADC2 0x0010
#define EMSCR_DAC2 0x0020
#define EMSCR_HADC 0x0040
#define EMSCR_HDAC 0x0080
#define EMSCR_PRA 0x0100
#define EMSCR_PRB 0x0200
#define EMSCR_PRC 0x0400
#define EMSCR_PRD 0x0800
#define EMSCR_PRE 0x1000
#define EMSCR_PRF 0x2000
#define EMSCR_PRG 0x4000
#define EMSCR_PRH 0x8000
/* Extended Modem Line 1 DAC/ADC Sample Rate Register 40h - Optional */
#define AC97_EXTENDED_MODEM_LINE1_RATE_REGISTER 0x40
/* Extended Modem Line 2 DAC/ADC Sample Rate Register 42h - Optional */
#define AC97_EXTENDED_MODEM_LINE2_RATE_REGISTER 0x42
/* Extended Modem Handset Sample Rate Register 44h - Optional */
#define AC97_EXTENDED_MODEM_HANDSET_RATE_REGISTER 0x44
/* Extended Modem Line 1 DAC/ADC Level Register 46h - Optional */
#define AC97_EXTENDED_MODEM_LINE1_LEVEL_REGISTER 0x46
#define EML1LR_ADC_LEVEL_MASK 0x000f
#define EML1LR_ADC_LEVEL_MUTE 0x0080
#define EML1LR_DAC_LEVEL_MASK 0x0f00
#define EML1LR_DAC_LEVEL_MUTE 0x8000
/* Extended Modem Line 2 DAC/ADC Level Register 48h - Optional */
#define AC97_EXTENDED_MODEM_LINE2_LEVEL_REGISTER 0x48
#define EML2LR_ADC_LEVEL_MASK 0x000f
#define EML2LR_ADC_LEVEL_MUTE 0x0080
#define EML2LR_DAC_LEVEL_MASK 0x0f00
#define EML2LR_DAC_LEVEL_MUTE 0x8000
/* Extended Modem Handset DAC/ADC Level Register 4ah - Optional */
#define AC97_EXTENDED_MODEM_HANDSET_LEVEL_REGISTER 0x4a
#define EMHLR_ADC_LEVEL_MASK 0x000f
#define EMHLR_ADC_LEVEL_MUTE 0x0080
#define EMHLR_DAC_LEVEL_MASK 0x0f00
#define EMHLR_DAC_LEVEL_MUTE 0x8000
/* Extended Modem GPIO Pin Configuration Register 4ch - Optional */
#define AC97_EXTENDED_MODEM_GPIO_PIN_REGISTER 0x4c
/* Extended Modem GPIO Pin Polarity Register 4eh - Optional */
#define AC97_EXTENDED_MODEM_GPIO_POLARITY_REGISTER 0x4e
/* Extended Modem GPIO Pin Sticky Register 50h - Optional */
#define AC97_EXTENDED_MODEM_GPIO_STICKY_REGISTER 0x50
/* Extended Modem GPIO Pin Wake-up Mask Register 52h - Optional */
#define AC97_EXTENDED_MODEM_GPIO_WAKEUP_REGISTER 0x52
/* Extended Modem GPIO Pin Status Mask Register 54h - Optional */
#define AC97_EXTENDED_MODEM_GPIO_STATUS_REGISTER 0x54
/* Extended Modem AFE Status and Control Register 56h - Optional */
#define AC97_EXTENDED_MODEM_AFE_STAT_CTRL_REGISTER 0x56
#define EMAFESCR_L1B0 0x0001
#define EMAFESCR_L1B1 0x0002
#define EMAFESCR_L1B2 0x0004
#define EMAFESCR_L2B0 0x0010
#define EMAFESCR_L2B1 0x0020
#define EMAFESCR_L2B2 0x0040
#define EMAFESCR_HSB0 0x0100
#define EMAFESCR_HSB1 0x0200
#define EMAFESCR_HSB2 0x0400
#define EMAFESCR_MLINK_ON 0x0000
#define EMAFESCR_MLINK_OFF 0x1000
#define EMAFESCR_CIDR 0x2000
#define EMAFESCR_CID1 0x4000
#define EMAFESCR_CID2 0x8000
/* Vender Reserved Registers 5ah - 7ah - Optional */
#define AC97_VENDOR_REGISTER_01 0x5a
#define AC97_VENDOR_REGISTER_02 0x5c
#define AC97_VENDOR_REGISTER_03 0x5e
#define AC97_VENDOR_REGISTER_04 0x60
#define AC97_VENDOR_REGISTER_05 0x62
#define AC97_VENDOR_REGISTER_06 0x64
#define AC97_VENDOR_REGISTER_07 0x66
#define AC97_VENDOR_REGISTER_08 0x68
#define AC97_VENDOR_REGISTER_09 0x6a
#define AC97_VENDOR_REGISTER_10 0x6c
#define AC97_VENDOR_REGISTER_11 0x6e
#define AC97_VENDOR_REGISTER_12 0x70
#define AC97_VENDOR_REGISTER_13 0x72
#define AC97_VENDOR_REGISTER_14 0x74
#define AC97_VENDOR_REGISTER_15 0x76
#define AC97_VENDOR_REGISTER_16 0x78
#define AC97_VENDOR_REGISTER_17 0x7a
/* Vendor ID1 Register 7ch */
#define AC97_VENDOR_ID1_REGISTER 0x7c
#define VID1R_CHAR2_MASK 0x00ff
#define VID1R_CHAR1_MASK 0xff00
/* Vendor ID2 Register 7eh */
#define AC97_VENDOR_ID2_REGISTER 0x7e
#define VID2R_REVISION_MASK 0x00ff
#define VID2R_CHAR3_MASK 0xff00
#endif /* _KERNEL */
#ifdef __cplusplus
}
#endif
#endif /* _SYS_AC97_H */
|