1//****************************************************************************
2//
3// HWDEFS.H - Definitions of the registers and data structures used by the
4//            CS4281
5//
6// Copyright (c) 1999,2000,2001 Crystal Semiconductor Corp.
7//
8//****************************************************************************
9
10#ifndef _H_HWDEFS
11#define _H_HWDEFS
12
13//****************************************************************************
14//
15// The following define the offsets of the registers located in the PCI
16// configuration space of the CS4281 part.
17//
18//****************************************************************************
19#define PCICONFIG_DEVID_VENID                   0x00000000L
20#define PCICONFIG_STATUS_COMMAND                0x00000004L
21#define PCICONFIG_CLASS_REVISION                0x00000008L
22#define PCICONFIG_LATENCY_TIMER                 0x0000000CL
23#define PCICONFIG_BA0                           0x00000010L
24#define PCICONFIG_BA1                           0x00000014L
25#define PCICONFIG_SUBSYSID_SUBSYSVENID          0x0000002CL
26#define PCICONFIG_INTERRUPT                     0x0000003CL
27
28//****************************************************************************
29//
30// The following define the offsets of the registers accessed via base address
31// register zero on the CS4281 part.
32//
33//****************************************************************************
34#define BA0_HISR                                0x00000000L
35#define BA0_HICR                                0x00000008L
36#define BA0_HIMR                                0x0000000CL
37#define BA0_IIER                                0x00000010L
38#define BA0_HDSR0                               0x000000F0L
39#define BA0_HDSR1                               0x000000F4L
40#define BA0_HDSR2                               0x000000F8L
41#define BA0_HDSR3                               0x000000FCL
42#define BA0_DCA0                                0x00000110L
43#define BA0_DCC0                                0x00000114L
44#define BA0_DBA0                                0x00000118L
45#define BA0_DBC0                                0x0000011CL
46#define BA0_DCA1                                0x00000120L
47#define BA0_DCC1                                0x00000124L
48#define BA0_DBA1                                0x00000128L
49#define BA0_DBC1                                0x0000012CL
50#define BA0_DCA2                                0x00000130L
51#define BA0_DCC2                                0x00000134L
52#define BA0_DBA2                                0x00000138L
53#define BA0_DBC2                                0x0000013CL
54#define BA0_DCA3                                0x00000140L
55#define BA0_DCC3                                0x00000144L
56#define BA0_DBA3                                0x00000148L
57#define BA0_DBC3                                0x0000014CL
58#define BA0_DMR0                                0x00000150L
59#define BA0_DCR0                                0x00000154L
60#define BA0_DMR1                                0x00000158L
61#define BA0_DCR1                                0x0000015CL
62#define BA0_DMR2                                0x00000160L
63#define BA0_DCR2                                0x00000164L
64#define BA0_DMR3                                0x00000168L
65#define BA0_DCR3                                0x0000016CL
66#define BA0_DLMR                                0x00000170L
67#define BA0_DLSR                                0x00000174L
68#define BA0_FCR0                                0x00000180L
69#define BA0_FCR1                                0x00000184L
70#define BA0_FCR2                                0x00000188L
71#define BA0_FCR3                                0x0000018CL
72#define BA0_FPDR0                               0x00000190L
73#define BA0_FPDR1                               0x00000194L
74#define BA0_FPDR2                               0x00000198L
75#define BA0_FPDR3                               0x0000019CL
76#define BA0_FCHS                                0x0000020CL
77#define BA0_FSIC0                               0x00000210L
78#define BA0_FSIC1                               0x00000214L
79#define BA0_FSIC2                               0x00000218L
80#define BA0_FSIC3                               0x0000021CL
81#define BA0_PCICFG00                            0x00000300L
82#define BA0_PCICFG04                            0x00000304L
83#define BA0_PCICFG08                            0x00000308L
84#define BA0_PCICFG0C                            0x0000030CL
85#define BA0_PCICFG10                            0x00000310L
86#define BA0_PCICFG14                            0x00000314L
87#define BA0_PCICFG18                            0x00000318L
88#define BA0_PCICFG1C                            0x0000031CL
89#define BA0_PCICFG20                            0x00000320L
90#define BA0_PCICFG24                            0x00000324L
91#define BA0_PCICFG28                            0x00000328L
92#define BA0_PCICFG2C                            0x0000032CL
93#define BA0_PCICFG30                            0x00000330L
94#define BA0_PCICFG34                            0x00000334L
95#define BA0_PCICFG38                            0x00000338L
96#define BA0_PCICFG3C                            0x0000033CL
97#define BA0_PCICFG40                            0x00000340L
98#define BA0_PMCS                                0x00000344L
99#define BA0_CWPR                                0x000003E0L
100#define BA0_EPPMC                               0x000003E4L
101#define BA0_GPIOR                               0x000003E8L
102#define BA0_SPMC                                0x000003ECL
103#define BA0_CFLR                                0x000003F0L
104#define BA0_IISR                                0x000003F4L
105#define BA0_TMS                                 0x000003F8L
106#define BA0_SSVID                               0x000003FCL
107#define BA0_CLKCR1                              0x00000400L
108#define BA0_FRR                                 0x00000410L
109#define BA0_SLT12O                              0x0000041CL
110#define BA0_SERMC                               0x00000420L
111#define BA0_SERC1                               0x00000428L
112#define BA0_SERC2                               0x0000042CL
113#define BA0_SLT12M                              0x0000045CL
114#define BA0_ACCTL                               0x00000460L
115#define BA0_ACSTS                               0x00000464L
116#define BA0_ACOSV                               0x00000468L
117#define BA0_ACCAD                               0x0000046CL
118#define BA0_ACCDA                               0x00000470L
119#define BA0_ACISV                               0x00000474L
120#define BA0_ACSAD                               0x00000478L
121#define BA0_ACSDA                               0x0000047CL
122#define BA0_JSPT                                0x00000480L
123#define BA0_JSCTL                               0x00000484L
124#define BA0_MIDCR                               0x00000490L
125#define BA0_MIDCMD                              0x00000494L
126#define BA0_MIDSR                               0x00000494L
127#define BA0_MIDWP                               0x00000498L
128#define BA0_MIDRP                               0x0000049CL
129#define BA0_AODSD1                              0x000004A8L
130#define BA0_AODSD2                              0x000004ACL
131#define BA0_CFGI                                0x000004B0L
132#define BA0_SLT12M2                             0x000004DCL
133#define BA0_ACSTS2                              0x000004E4L
134#define BA0_ACISV2                              0x000004F4L
135#define BA0_ACSAD2                              0x000004F8L
136#define BA0_ACSDA2                              0x000004FCL
137#define BA0_IOTGP                               0x00000500L
138#define BA0_IOTSB                               0x00000504L
139#define BA0_IOTFM                               0x00000508L
140#define BA0_IOTDMA                              0x0000050CL
141#define BA0_IOTAC0                              0x00000500L
142#define BA0_IOTAC1                              0x00000504L
143#define BA0_IOTAC2                              0x00000508L
144#define BA0_IOTAC3                              0x0000050CL
145#define BA0_IOTPCP                              0x0000052CL
146#define BA0_IOTCC                               0x00000530L
147#define BA0_IOTCR                               0x0000058CL
148#define BA0_PCPRR                               0x00000600L
149#define BA0_PCPGR                               0x00000604L
150#define BA0_PCPCR                               0x00000608L
151#define BA0_PCPCIEN                             0x00000608L
152#define BA0_SBMAR                               0x00000700L
153#define BA0_SBMDR                               0x00000704L
154#define BA0_SBRR                                0x00000708L
155#define BA0_SBRDP                               0x0000070CL
156#define BA0_SBWDP                               0x00000710L
157#define BA0_SBWBS                               0x00000710L
158#define BA0_SBRBS                               0x00000714L
159#define BA0_FMSR                                0x00000730L
160#define BA0_B0AP                                0x00000730L
161#define BA0_FMDP                                0x00000734L
162#define BA0_B1AP                                0x00000738L
163#define BA0_B1DP                                0x0000073CL
164#define BA0_SSPM                                0x00000740L
165#define BA0_DACSR                               0x00000744L
166#define BA0_ADCSR                               0x00000748L
167#define BA0_SSCR                                0x0000074CL
168#define BA0_FMLVC                               0x00000754L
169#define BA0_FMRVC                               0x00000758L
170#define BA0_SRCSA                               0x0000075CL
171#define BA0_PPLVC                               0x00000760L
172#define BA0_PPRVC                               0x00000764L
173#define BA0_PASR                                0x00000768L
174#define BA0_CASR                                0x0000076CL
175
176//****************************************************************************
177//
178// The following define the offsets of the AC97 shadow registers, which appear
179// as a virtual extension to the base address register zero memory range.
180//
181//****************************************************************************
182#define AC97_REG_OFFSET_MASK                    0x0000007EL
183#define AC97_CODEC_NUMBER_MASK                  0x00003000L
184
185#define BA0_AC97_RESET                          0x00001000L
186#define BA0_AC97_MASTER_VOLUME                  0x00001002L
187#define BA0_AC97_HEADPHONE_VOLUME               0x00001004L
188#define BA0_AC97_MASTER_VOLUME_MONO             0x00001006L
189#define BA0_AC97_MASTER_TONE                    0x00001008L
190#define BA0_AC97_PC_BEEP_VOLUME                 0x0000100AL
191#define BA0_AC97_PHONE_VOLUME                   0x0000100CL
192#define BA0_AC97_MIC_VOLUME                     0x0000100EL
193#define BA0_AC97_LINE_IN_VOLUME                 0x00001010L
194#define BA0_AC97_CD_VOLUME                      0x00001012L
195#define BA0_AC97_VIDEO_VOLUME                   0x00001014L
196#define BA0_AC97_AUX_VOLUME                     0x00001016L
197#define BA0_AC97_PCM_OUT_VOLUME                 0x00001018L
198#define BA0_AC97_RECORD_SELECT                  0x0000101AL
199#define BA0_AC97_RECORD_GAIN                    0x0000101CL
200#define BA0_AC97_RECORD_GAIN_MIC                0x0000101EL
201#define BA0_AC97_GENERAL_PURPOSE                0x00001020L
202#define BA0_AC97_3D_CONTROL                     0x00001022L
203#define BA0_AC97_MODEM_RATE                     0x00001024L
204#define BA0_AC97_POWERDOWN                      0x00001026L
205#define BA0_AC97_EXT_AUDIO_ID                   0x00001028L
206#define BA0_AC97_EXT_AUDIO_POWER                0x0000102AL
207#define BA0_AC97_PCM_FRONT_DAC_RATE             0x0000102CL
208#define BA0_AC97_PCM_SURR_DAC_RATE              0x0000102EL
209#define BA0_AC97_PCM_LFE_DAC_RATE               0x00001030L
210#define BA0_AC97_PCM_LR_ADC_RATE                0x00001032L
211#define BA0_AC97_MIC_ADC_RATE                   0x00001034L
212#define BA0_AC97_6CH_VOL_C_LFE                  0x00001036L
213#define BA0_AC97_6CH_VOL_SURROUND               0x00001038L
214#define BA0_AC97_RESERVED_3A                    0x0000103AL
215#define BA0_AC97_EXT_MODEM_ID                   0x0000103CL
216#define BA0_AC97_EXT_MODEM_POWER                0x0000103EL
217#define BA0_AC97_LINE1_CODEC_RATE               0x00001040L
218#define BA0_AC97_LINE2_CODEC_RATE               0x00001042L
219#define BA0_AC97_HANDSET_CODEC_RATE             0x00001044L
220#define BA0_AC97_LINE1_CODEC_LEVEL              0x00001046L
221#define BA0_AC97_LINE2_CODEC_LEVEL              0x00001048L
222#define BA0_AC97_HANDSET_CODEC_LEVEL            0x0000104AL
223#define BA0_AC97_GPIO_PIN_CONFIG                0x0000104CL
224#define BA0_AC97_GPIO_PIN_TYPE                  0x0000104EL
225#define BA0_AC97_GPIO_PIN_STICKY                0x00001050L
226#define BA0_AC97_GPIO_PIN_WAKEUP                0x00001052L
227#define BA0_AC97_GPIO_PIN_STATUS                0x00001054L
228#define BA0_AC97_MISC_MODEM_AFE_STAT            0x00001056L
229#define BA0_AC97_RESERVED_58                    0x00001058L
230#define BA0_AC97_CRYSTAL_REV_N_FAB_ID           0x0000105AL
231#define BA0_AC97_TEST_AND_MISC_CTRL             0x0000105CL
232#define BA0_AC97_AC_MODE                        0x0000105EL
233#define BA0_AC97_MISC_CRYSTAL_CONTROL           0x00001060L
234#define BA0_AC97_LINE1_HYPRID_CTRL              0x00001062L
235#define BA0_AC97_VENDOR_RESERVED_64             0x00001064L
236#define BA0_AC97_VENDOR_RESERVED_66             0x00001066L
237#define BA0_AC97_SPDIF_CONTROL                  0x00001068L
238#define BA0_AC97_VENDOR_RESERVED_6A             0x0000106AL
239#define BA0_AC97_VENDOR_RESERVED_6C             0x0000106CL
240#define BA0_AC97_VENDOR_RESERVED_6E             0x0000106EL
241#define BA0_AC97_VENDOR_RESERVED_70             0x00001070L
242#define BA0_AC97_VENDOR_RESERVED_72             0x00001072L
243#define BA0_AC97_VENDOR_RESERVED_74             0x00001074L
244#define BA0_AC97_CAL_ADDRESS                    0x00001076L
245#define BA0_AC97_CAL_DATA                       0x00001078L
246#define BA0_AC97_VENDOR_RESERVED_7A             0x0000107AL
247#define BA0_AC97_VENDOR_ID1                     0x0000107CL
248#define BA0_AC97_VENDOR_ID2                     0x0000107EL
249
250//****************************************************************************
251//
252// The following define the offsets of the registers and memories accessed via
253// base address register one on the CS4281 part.
254//
255//****************************************************************************
256
257//****************************************************************************
258//
259// The following defines are for the flags in the PCI device ID/vendor ID
260// register.
261//
262//****************************************************************************
263#define PDV_VENID_MASK                          0x0000FFFFL
264#define PDV_DEVID_MASK                          0xFFFF0000L
265#define PDV_VENID_SHIFT                         0L
266#define PDV_DEVID_SHIFT                         16L
267#define VENID_CIRRUS_LOGIC                      0x1013L
268#define DEVID_CS4281                            0x6005L
269
270//****************************************************************************
271//
272// The following defines are for the flags in the PCI status and command
273// register.
274//
275//****************************************************************************
276#define PSC_IO_SPACE_ENABLE                     0x00000001L
277#define PSC_MEMORY_SPACE_ENABLE                 0x00000002L
278#define PSC_BUS_MASTER_ENABLE                   0x00000004L
279#define PSC_SPECIAL_CYCLES                      0x00000008L
280#define PSC_MWI_ENABLE                          0x00000010L
281#define PSC_VGA_PALETTE_SNOOP                   0x00000020L
282#define PSC_PARITY_RESPONSE                     0x00000040L
283#define PSC_WAIT_CONTROL                        0x00000080L
284#define PSC_SERR_ENABLE                         0x00000100L
285#define PSC_FAST_B2B_ENABLE                     0x00000200L
286#define PSC_UDF_MASK                            0x007F0000L
287#define PSC_FAST_B2B_CAPABLE                    0x00800000L
288#define PSC_PARITY_ERROR_DETECTED               0x01000000L
289#define PSC_DEVSEL_TIMING_MASK                  0x06000000L
290#define PSC_TARGET_ABORT_SIGNALLED              0x08000000L
291#define PSC_RECEIVED_TARGET_ABORT               0x10000000L
292#define PSC_RECEIVED_MASTER_ABORT               0x20000000L
293#define PSC_SIGNALLED_SERR                      0x40000000L
294#define PSC_DETECTED_PARITY_ERROR               0x80000000L
295#define PSC_UDF_SHIFT                           16L
296#define PSC_DEVSEL_TIMING_SHIFT                 25L
297
298//****************************************************************************
299//
300// The following defines are for the flags in the PCI class/revision ID
301// register.
302//
303//****************************************************************************
304#define PCR_REVID_MASK                          0x000000FFL
305#define PCR_INTERFACE_MASK                      0x0000FF00L
306#define PCR_SUBCLASS_MASK                       0x00FF0000L
307#define PCR_CLASS_MASK                          0xFF000000L
308#define PCR_REVID_SHIFT                         0L
309#define PCR_INTERFACE_SHIFT                     8L
310#define PCR_SUBCLASS_SHIFT                      16L
311#define PCR_CLASS_SHIFT                         24L
312
313//****************************************************************************
314//
315// The following defines are for the flags in the PCI latency timer register.
316//
317//****************************************************************************
318#define PLT_CACHE_LINE_SIZE_MASK                0x000000FFL
319#define PLT_LATENCY_TIMER_MASK                  0x0000FF00L
320#define PLT_HEADER_TYPE_MASK                    0x00FF0000L
321#define PLT_BIST_MASK                           0xFF000000L
322#define PLT_CACHE_LINE_SIZE_SHIFT               0L
323#define PLT_LATENCY_TIMER_SHIFT                 8L
324#define PLT_HEADER_TYPE_SHIFT                   16L
325#define PLT_BIST_SHIFT                          24L
326
327//****************************************************************************
328//
329// The following defines are for the flags in the PCI base address registers.
330//
331//****************************************************************************
332#define PBAR_MEMORY_SPACE_INDICATOR             0x00000001L
333#define PBAR_LOCATION_TYPE_MASK                 0x00000006L
334#define PBAR_NOT_PREFETCHABLE                   0x00000008L
335#define PBAR_ADDRESS_MASK                       0xFFFFFFF0L
336#define PBAR_LOCATION_TYPE_SHIFT                1L
337
338//****************************************************************************
339//
340// The following defines are for the flags in the PCI subsystem ID/subsystem
341// vendor ID register.
342//
343//****************************************************************************
344#define PSS_SUBSYSTEM_VENDOR_ID_MASK            0x0000FFFFL
345#define PSS_SUBSYSTEM_ID_MASK                   0xFFFF0000L
346#define PSS_SUBSYSTEM_VENDOR_ID_SHIFT           0L
347#define PSS_SUBSYSTEM_ID_SHIFT                  16L
348
349//****************************************************************************
350//
351// The following defines are for the flags in the PCI interrupt register.
352//
353//****************************************************************************
354#define PI_LINE_MASK                            0x000000FFL
355#define PI_PIN_MASK                             0x0000FF00L
356#define PI_MIN_GRANT_MASK                       0x00FF0000L
357#define PI_MAX_LATENCY_MASK                     0xFF000000L
358#define PI_LINE_SHIFT                           0L
359#define PI_PIN_SHIFT                            8L
360#define PI_MIN_GRANT_SHIFT                      16L
361#define PI_MAX_LATENCY_SHIFT                    24L
362
363//****************************************************************************
364//
365// The following defines are for the flags in the host interrupt status
366// register.
367//
368//****************************************************************************
369#define HISR_HVOLMASK                            0x00000003L
370#define HISR_VDNI                                0x00000001L
371#define HISR_VUPI                                0x00000002L
372#define HISR_GP1I                                0x00000004L
373#define HISR_GP3I                                0x00000008L
374#define HISR_GPSI                                0x00000010L
375#define HISR_GPPI                                0x00000020L
376#define HISR_DMAI                                0x00040000L
377#define HISR_FIFOI                               0x00100000L
378#define HISR_HVOL                                0x00200000L
379#define HISR_MIDI                                0x00400000L
380#define HISR_SBINT                               0x00800000L
381#define HISR_INTENA                              0x80000000L
382#define HISR_DMA_MASK                            0x00000F00L
383#define HISR_FIFO_MASK                           0x0000F000L
384#define HISR_DMA_SHIFT                           8L
385#define HISR_FIFO_SHIFT                          12L
386#define HISR_FIFO0                               0x00001000L
387#define HISR_FIFO1                               0x00002000L
388#define HISR_FIFO2                               0x00004000L
389#define HISR_FIFO3                               0x00008000L
390#define HISR_DMA0                                0x00000100L
391#define HISR_DMA1                                0x00000200L
392#define HISR_DMA2                                0x00000400L
393#define HISR_DMA3                                0x00000800L
394#define HISR_RESERVED                            0x40000000L
395
396//****************************************************************************
397//
398// The following defines are for the flags in the host interrupt control
399// register.
400//
401//****************************************************************************
402#define HICR_IEV                                 0x00000001L
403#define HICR_CHGM                                0x00000002L
404
405//****************************************************************************
406//
407// The following defines are for the flags in the DMA Mode Register n
408// (DMRn)
409//
410//****************************************************************************
411#define DMRn_TR_MASK                             0x0000000CL
412#define DMRn_TR_SHIFT                            2L
413#define DMRn_AUTO                                0x00000010L
414#define DMRn_TR_READ                             0x00000008L
415#define DMRn_TR_WRITE                            0x00000004L
416#define DMRn_TYPE_MASK                           0x000000C0L
417#define DMRn_TYPE_SHIFT                          6L
418#define DMRn_SIZE8                               0x00010000L
419#define DMRn_MONO                                0x00020000L
420#define DMRn_BEND                                0x00040000L
421#define DMRn_USIGN                               0x00080000L
422#define DMRn_SIZE20                              0x00100000L
423#define DMRn_SWAPC                               0x00400000L
424#define DMRn_CBC                                 0x01000000L
425#define DMRn_TBC                                 0x02000000L
426#define DMRn_POLL                                0x10000000L
427#define DMRn_DMA                                 0x20000000L
428#define DMRn_FSEL_MASK                           0xC0000000L
429#define DMRn_FSEL_SHIFT                          30L
430#define DMRn_FSEL0                               0x00000000L
431#define DMRn_FSEL1                               0x40000000L
432#define DMRn_FSEL2                               0x80000000L
433#define DMRn_FSEL3                               0xC0000000L
434
435//****************************************************************************
436//
437// The following defines are for the flags in the DMA Command Register n
438// (DCRn)
439//
440//****************************************************************************
441#define DCRn_HTCIE                               0x00020000L
442#define DCRn_TCIE                                0x00010000L
443#define DCRn_MSK                                 0x00000001L
444
445//****************************************************************************
446//
447// The following defines are for the flags in the FIFO Control
448// register n.(FCRn)
449//
450//****************************************************************************
451#define FCRn_OF_MASK                            0x0000007FL
452#define FCRn_OF_SHIFT                           0L
453#define FCRn_SZ_MASK                            0x00007F00L
454#define FCRn_SZ_SHIFT                           8L
455#define FCRn_LS_MASK                            0x001F0000L
456#define FCRn_LS_SHIFT                           16L
457#define FCRn_RS_MASK                            0x1F000000L
458#define FCRn_RS_SHIFT                           24L
459#define FCRn_FEN                                0x80000000L
460#define FCRn_PSH                                0x20000000L
461#define FCRn_DACZ                               0x40000000L
462
463//****************************************************************************
464//
465// The following defines are for the flags in the serial port Power Management
466// control register.(SPMC)
467//
468//****************************************************************************
469#define SPMC_RSTN                               0x00000001L
470#define SPMC_ASYN                               0x00000002L
471#define SPMC_WUP1                               0x00000004L
472#define SPMC_WUP2                               0x00000008L
473#define SPMC_ASDI2E                             0x00000100L
474#define SPMC_ESSPD                              0x00000200L
475#define SPMC_GISPEN                             0x00004000L
476#define SPMC_GIPPEN                             0x00008000L
477
478//****************************************************************************
479//
480// The following defines are for the flags in the Configuration Load register.
481// (CFLR)
482//
483//****************************************************************************
484#define CFLR_CLOCK_SOURCE_MASK                  0x00000003L
485#define CFLR_CLOCK_SOURCE_AC97                  0x00000001L
486
487#define CFLR_CB0_MASK                            0x000000FFL
488#define CFLR_CB1_MASK                            0x0000FF00L
489#define CFLR_CB2_MASK                            0x00FF0000L
490#define CFLR_CB3_MASK                            0xFF000000L
491#define CFLR_CB0_SHIFT                           0L
492#define CFLR_CB1_SHIFT                           8L
493#define CFLR_CB2_SHIFT                           16L
494#define CFLR_CB3_SHIFT                           24L
495
496#define IOTCR_DMA0                              0x00000000L
497#define IOTCR_DMA1                              0x00000400L
498#define IOTCR_DMA2                              0x00000800L
499#define IOTCR_DMA3                              0x00000C00L
500#define IOTCR_CCLS                              0x00000100L
501#define IOTCR_PCPCI                             0x00000200L
502#define IOTCR_DDMA                              0x00000300L
503
504#define SBWBS_WBB                               0x00000080L
505
506//****************************************************************************
507//
508// The following defines are for the flags in the SRC Slot Assignment Register
509// (SRCSA)
510//
511//****************************************************************************
512#define SRCSA_PLSS_MASK                         0x0000001FL
513#define SRCSA_PLSS_SHIFT                        0L
514#define SRCSA_PRSS_MASK                         0x00001F00L
515#define SRCSA_PRSS_SHIFT                        8L
516#define SRCSA_CLSS_MASK                         0x001F0000L
517#define SRCSA_CLSS_SHIFT                        16L
518#define SRCSA_CRSS_MASK                         0x1F000000L
519#define SRCSA_CRSS_SHIFT                        24L
520
521//****************************************************************************
522//
523// The following defines are for the flags in the Sound System Power Management
524// register.(SSPM)
525//
526//****************************************************************************
527#define SSPM_FPDN                               0x00000080L
528#define SSPM_MIXEN                              0x00000040L
529#define SSPM_CSRCEN                             0x00000020L
530#define SSPM_PSRCEN                             0x00000010L
531#define SSPM_JSEN                               0x00000008L
532#define SSPM_ACLEN                              0x00000004L
533#define SSPM_FMEN                               0x00000002L
534
535//****************************************************************************
536//
537// The following defines are for the flags in the Sound System Control
538// Register. (SSCR)
539//
540//****************************************************************************
541#define SSCR_SB                                 0x00000004L
542#define SSCR_HVC                                0x00000008L
543#define SSCR_LPFIFO                             0x00000040L
544#define SSCR_LPSRC                              0x00000080L
545#define SSCR_XLPSRC                             0x00000100L
546#define SSCR_MVMD                               0x00010000L
547#define SSCR_MVAD                               0x00020000L
548#define SSCR_MVLD                               0x00040000L
549#define SSCR_MVCS                               0x00080000L
550
551//****************************************************************************
552//
553// The following defines are for the flags in the Clock Control Register 1.
554// (CLKCR1)
555//
556//****************************************************************************
557#define CLKCR1_DLLSS_MASK                       0x0000000CL
558#define CLKCR1_DLLSS_SHIFT                      2L
559#define CLKCR1_DLLP                             0x00000010L
560#define CLKCR1_SWCE                             0x00000020L
561#define CLKCR1_DLLOS                            0x00000040L
562#define CLKCR1_CKRA                             0x00010000L
563#define CLKCR1_CKRN                             0x00020000L
564#define CLKCR1_DLLRDY                           0x01000000L
565#define CLKCR1_CLKON                            0x02000000L
566
567//****************************************************************************
568//
569// The following defines are for the flags in the Sound Blaster Read Buffer
570// Status.(SBRBS)
571//
572//****************************************************************************
573#define SBRBS_RD_MASK                           0x0000007FL
574#define SBRBS_RD_SHIFT                          0L
575#define SBRBS_RBF                               0x00000080L
576
577//****************************************************************************
578//
579// The following defines are for the flags in the serial port master control
580// register.(SERMC)
581//
582//****************************************************************************
583#define SERMC_MSPE                              0x00000001L
584#define SERMC_PTC_MASK                          0x0000000EL
585#define SERMC_PTC_SHIFT                         1L
586#define SERMC_PTC_AC97                          0x00000002L
587#define SERMC_PLB                               0x00000010L
588#define SERMC_PXLB                              0x00000020L
589#define SERMC_LOFV                              0x00080000L
590#define SERMC_SLB                               0x00100000L
591#define SERMC_SXLB                              0x00200000L
592#define SERMC_ODSEN1                            0x01000000L
593#define SERMC_ODSEN2                            0x02000000L
594
595//****************************************************************************
596//
597// The following defines are for the flags in the General Purpose I/O Register.
598// (GPIOR)
599//
600//****************************************************************************
601#define GPIOR_VDNS                              0x00000001L
602#define GPIOR_VUPS                              0x00000002L
603#define GPIOR_GP1S                              0x00000004L
604#define GPIOR_GP3S                              0x00000008L
605#define GPIOR_GPSS                              0x00000010L
606#define GPIOR_GPPS                              0x00000020L
607#define GPIOR_GP1D                              0x00000400L
608#define GPIOR_GP3D                              0x00000800L
609#define GPIOR_VDNLT                             0x00010000L
610#define GPIOR_VDNPO                             0x00020000L
611#define GPIOR_VDNST                             0x00040000L
612#define GPIOR_VDNW                              0x00080000L
613#define GPIOR_VUPLT                             0x00100000L
614#define GPIOR_VUPPO                             0x00200000L
615#define GPIOR_VUPST                             0x00400000L
616#define GPIOR_VUPW                              0x00800000L
617#define GPIOR_GP1OE                             0x01000000L
618#define GPIOR_GP1PT                             0x02000000L
619#define GPIOR_GP1ST                             0x04000000L
620#define GPIOR_GP1W                              0x08000000L
621#define GPIOR_GP3OE                             0x10000000L
622#define GPIOR_GP3PT                             0x20000000L
623#define GPIOR_GP3ST                             0x40000000L
624#define GPIOR_GP3W                              0x80000000L
625
626//****************************************************************************
627//
628// The following defines are for the flags in the clock control register 1.
629//
630//****************************************************************************
631#define CLKCR1_PLLSS_MASK                       0x0000000CL
632#define CLKCR1_PLLSS_SERIAL                     0x00000000L
633#define CLKCR1_PLLSS_CRYSTAL                    0x00000004L
634#define CLKCR1_PLLSS_PCI                        0x00000008L
635#define CLKCR1_PLLSS_RESERVED                   0x0000000CL
636#define CLKCR1_PLLP                             0x00000010L
637#define CLKCR1_SWCE                             0x00000020L
638#define CLKCR1_PLLOS                            0x00000040L
639
640//****************************************************************************
641//
642// The following defines are for the flags in the feature reporting register.
643//
644//****************************************************************************
645#define FRR_FAB_MASK                            0x00000003L
646#define FRR_MASK_MASK                           0x0000001CL
647#define FRR_ID_MASK                             0x00003000L
648#define FRR_FAB_SHIFT                           0L
649#define FRR_MASK_SHIFT                          2L
650#define FRR_ID_SHIFT                            12L
651
652//****************************************************************************
653//
654// The following defines are for the flags in the serial port 1 configuration
655// register.
656//
657//****************************************************************************
658#define SERC1_VALUE                             0x00000003L
659#define SERC1_SO1EN                             0x00000001L
660#define SERC1_SO1F_MASK                         0x0000000EL
661#define SERC1_SO1F_CS423X                       0x00000000L
662#define SERC1_SO1F_AC97                         0x00000002L
663#define SERC1_SO1F_DAC                          0x00000004L
664#define SERC1_SO1F_SPDIF                        0x00000006L
665
666//****************************************************************************
667//
668// The following defines are for the flags in the serial port 2 configuration
669// register.
670//
671//****************************************************************************
672#define SERC2_VALUE                             0x00000003L
673#define SERC2_SI1EN                             0x00000001L
674#define SERC2_SI1F_MASK                         0x0000000EL
675#define SERC2_SI1F_CS423X                       0x00000000L
676#define SERC2_SI1F_AC97                         0x00000002L
677#define SERC2_SI1F_ADC                          0x00000004L
678#define SERC2_SI1F_SPDIF                        0x00000006L
679
680//****************************************************************************
681//
682// The following defines are for the flags in the AC97 control register.
683//
684//****************************************************************************
685#define ACCTL_ESYN                              0x00000002L
686#define ACCTL_VFRM                              0x00000004L
687#define ACCTL_DCV                               0x00000008L
688#define ACCTL_CRW                               0x00000010L
689#define ACCTL_TC                                0x00000040L
690
691//****************************************************************************
692//
693// The following defines are for the flags in the AC97 status register.
694//
695//****************************************************************************
696#define ACSTS_CRDY                              0x00000001L
697#define ACSTS_VSTS                              0x00000002L
698
699//****************************************************************************
700//
701// The following defines are for the flags in the AC97 output slot valid
702// register.
703//
704//****************************************************************************
705#define ACOSV_SLV3                              0x00000001L
706#define ACOSV_SLV4                              0x00000002L
707#define ACOSV_SLV5                              0x00000004L
708#define ACOSV_SLV6                              0x00000008L
709#define ACOSV_SLV7                              0x00000010L
710#define ACOSV_SLV8                              0x00000020L
711#define ACOSV_SLV9                              0x00000040L
712#define ACOSV_SLV10                             0x00000080L
713#define ACOSV_SLV11                             0x00000100L
714#define ACOSV_SLV12                             0x00000200L
715
716//****************************************************************************
717//
718// The following defines are for the flags in the AC97 command address
719// register.
720//
721//****************************************************************************
722#define ACCAD_CI_MASK                           0x0000007FL
723#define ACCAD_CI_SHIFT                          0L
724
725//****************************************************************************
726//
727// The following defines are for the flags in the AC97 command data register.
728//
729//****************************************************************************
730#define ACCDA_CD_MASK                           0x0000FFFFL
731#define ACCDA_CD_SHIFT                          0L
732
733//****************************************************************************
734//
735// The following defines are for the flags in the AC97 input slot valid
736// register.
737//
738//****************************************************************************
739#define ACISV_ISV3                              0x00000001L
740#define ACISV_ISV4                              0x00000002L
741#define ACISV_ISV5                              0x00000004L
742#define ACISV_ISV6                              0x00000008L
743#define ACISV_ISV7                              0x00000010L
744#define ACISV_ISV8                              0x00000020L
745#define ACISV_ISV9                              0x00000040L
746#define ACISV_ISV10                             0x00000080L
747#define ACISV_ISV11                             0x00000100L
748#define ACISV_ISV12                             0x00000200L
749
750//****************************************************************************
751//
752// The following defines are for the flags in the AC97 status address
753// register.
754//
755//****************************************************************************
756#define ACSAD_SI_MASK                           0x0000007FL
757#define ACSAD_SI_SHIFT                          0L
758
759//****************************************************************************
760//
761// The following defines are for the flags in the AC97 status data register.
762//
763//****************************************************************************
764#define ACSDA_SD_MASK                           0x0000FFFFL
765#define ACSDA_SD_SHIFT                          0L
766
767//****************************************************************************
768//
769// The following defines are for the flags in the I/O trap address and control
770// registers (all 12).
771//
772//****************************************************************************
773#define IOTAC_SA_MASK                           0x0000FFFFL
774#define IOTAC_MSK_MASK                          0x000F0000L
775#define IOTAC_IODC_MASK                         0x06000000L
776#define IOTAC_IODC_16_BIT                       0x00000000L
777#define IOTAC_IODC_10_BIT                       0x02000000L
778#define IOTAC_IODC_12_BIT                       0x04000000L
779#define IOTAC_WSPI                              0x08000000L
780#define IOTAC_RSPI                              0x10000000L
781#define IOTAC_WSE                               0x20000000L
782#define IOTAC_WE                                0x40000000L
783#define IOTAC_RE                                0x80000000L
784#define IOTAC_SA_SHIFT                          0L
785#define IOTAC_MSK_SHIFT                         16L
786
787//****************************************************************************
788//
789// The following defines are for the flags in the PC/PCI master enable
790// register.
791//
792//****************************************************************************
793#define PCPCIEN_EN                              0x00000001L
794
795//****************************************************************************
796//
797// The following defines are for the flags in the joystick poll/trigger
798// register.
799//
800//****************************************************************************
801#define JSPT_CAX                                0x00000001L
802#define JSPT_CAY                                0x00000002L
803#define JSPT_CBX                                0x00000004L
804#define JSPT_CBY                                0x00000008L
805#define JSPT_BA1                                0x00000010L
806#define JSPT_BA2                                0x00000020L
807#define JSPT_BB1                                0x00000040L
808#define JSPT_BB2                                0x00000080L
809
810//****************************************************************************
811//
812// The following defines are for the flags in the joystick control register.
813// The TBF bit has been moved from MIDSR register to JSCTL register bit 8.
814//
815//****************************************************************************
816#define JSCTL_SP_MASK                           0x00000003L
817#define JSCTL_SP_SLOW                           0x00000000L
818#define JSCTL_SP_MEDIUM_SLOW                    0x00000001L
819#define JSCTL_SP_MEDIUM_FAST                    0x00000002L
820#define JSCTL_SP_FAST                           0x00000003L
821#define JSCTL_ARE                               0x00000004L
822#define JSCTL_TBF                               0x00000100L
823
824
825//****************************************************************************
826//
827// The following defines are for the flags in the MIDI control register.
828//
829//****************************************************************************
830#define MIDCR_TXE                               0x00000001L
831#define MIDCR_RXE                               0x00000002L
832#define MIDCR_RIE                               0x00000004L
833#define MIDCR_TIE                               0x00000008L
834#define MIDCR_MLB                               0x00000010L
835#define MIDCR_MRST                              0x00000020L
836
837//****************************************************************************
838//
839// The following defines are for the flags in the MIDI status register.
840//
841//****************************************************************************
842#define MIDSR_RBE                               0x00000080L
843#define MIDSR_RDA                               0x00008000L
844
845//****************************************************************************
846//
847// The following defines are for the flags in the MIDI write port register.
848//
849//****************************************************************************
850#define MIDWP_MWD_MASK                          0x000000FFL
851#define MIDWP_MWD_SHIFT                         0L
852
853//****************************************************************************
854//
855// The following defines are for the flags in the MIDI read port register.
856//
857//****************************************************************************
858#define MIDRP_MRD_MASK                          0x000000FFL
859#define MIDRP_MRD_SHIFT                         0L
860
861//****************************************************************************
862//
863// The following defines are for the flags in the configuration interface
864// register.
865//
866//****************************************************************************
867#define CFGI_CLK                                0x00000001L
868#define CFGI_DOUT                               0x00000002L
869#define CFGI_DIN_EEN                            0x00000004L
870#define CFGI_EELD                               0x00000008L
871
872//****************************************************************************
873//
874// The following defines are for the flags in the subsystem ID and vendor ID
875// register.
876//
877//****************************************************************************
878#define SSVID_VID_MASK                          0x0000FFFFL
879#define SSVID_SID_MASK                          0xFFFF0000L
880#define SSVID_VID_SHIFT                         0L
881#define SSVID_SID_SHIFT                         16L
882
883//****************************************************************************
884//
885// The following defines are for the flags in the GPIO pin interface register.
886//
887//****************************************************************************
888#define GPIOR_VOLDN                             0x00000001L
889#define GPIOR_VOLUP                             0x00000002L
890#define GPIOR_SI2D                              0x00000004L
891#define GPIOR_SI2OE                             0x00000008L
892
893//****************************************************************************
894//
895// The following defines are for the flags in the AC97 status register 2.
896//
897//****************************************************************************
898#define ACSTS2_CRDY                             0x00000001L
899#define ACSTS2_VSTS                             0x00000002L
900
901//****************************************************************************
902//
903// The following defines are for the flags in the AC97 input slot valid
904// register 2.
905//
906//****************************************************************************
907#define ACISV2_ISV3                             0x00000001L
908#define ACISV2_ISV4                             0x00000002L
909#define ACISV2_ISV5                             0x00000004L
910#define ACISV2_ISV6                             0x00000008L
911#define ACISV2_ISV7                             0x00000010L
912#define ACISV2_ISV8                             0x00000020L
913#define ACISV2_ISV9                             0x00000040L
914#define ACISV2_ISV10                            0x00000080L
915#define ACISV2_ISV11                            0x00000100L
916#define ACISV2_ISV12                            0x00000200L
917
918//****************************************************************************
919//
920// The following defines are for the flags in the AC97 status address
921// register 2.
922//
923//****************************************************************************
924#define ACSAD2_SI_MASK                          0x0000007FL
925#define ACSAD2_SI_SHIFT                         0L
926
927//****************************************************************************
928//
929// The following defines are for the flags in the AC97 status data register 2.
930//
931//****************************************************************************
932#define ACSDA2_SD_MASK                          0x0000FFFFL
933#define ACSDA2_SD_SHIFT                         0L
934
935//****************************************************************************
936//
937// The following defines are for the flags in the I/O trap control register.
938//
939//****************************************************************************
940#define IOTCR_ITD                               0x00000001L
941#define IOTCR_HRV                               0x00000002L
942#define IOTCR_SRV                               0x00000004L
943#define IOTCR_DTI                               0x00000008L
944#define IOTCR_DFI                               0x00000010L
945#define IOTCR_DDP                               0x00000020L
946#define IOTCR_JTE                               0x00000040L
947#define IOTCR_PPE                               0x00000080L
948
949//****************************************************************************
950//
951// The following defines are for the flags in the I/O trap address and control
952// registers for Hardware Master Volume.
953//
954//****************************************************************************
955#define IOTGP_SA_MASK                           0x0000FFFFL
956#define IOTGP_MSK_MASK                          0x000F0000L
957#define IOTGP_IODC_MASK                         0x06000000L
958#define IOTGP_IODC_16_BIT                       0x00000000L
959#define IOTGP_IODC_10_BIT                       0x02000000L
960#define IOTGP_IODC_12_BIT                       0x04000000L
961#define IOTGP_WSPI                              0x08000000L
962#define IOTGP_RSPI                              0x10000000L
963#define IOTGP_WSE                               0x20000000L
964#define IOTGP_WE                                0x40000000L
965#define IOTGP_RE                                0x80000000L
966#define IOTGP_SA_SHIFT                          0L
967#define IOTGP_MSK_SHIFT                         16L
968
969//****************************************************************************
970//
971// The following defines are for the flags in the I/O trap address and control
972// registers for Sound Blaster
973//
974//****************************************************************************
975#define IOTSB_SA_MASK                           0x0000FFFFL
976#define IOTSB_MSK_MASK                          0x000F0000L
977#define IOTSB_IODC_MASK                         0x06000000L
978#define IOTSB_IODC_16_BIT                       0x00000000L
979#define IOTSB_IODC_10_BIT                       0x02000000L
980#define IOTSB_IODC_12_BIT                       0x04000000L
981#define IOTSB_WSPI                              0x08000000L
982#define IOTSB_RSPI                              0x10000000L
983#define IOTSB_WSE                               0x20000000L
984#define IOTSB_WE                                0x40000000L
985#define IOTSB_RE                                0x80000000L
986#define IOTSB_SA_SHIFT                          0L
987#define IOTSB_MSK_SHIFT                         16L
988
989//****************************************************************************
990//
991// The following defines are for the flags in the I/O trap address and control
992// registers for FM.
993//
994//****************************************************************************
995#define IOTFM_SA_MASK                           0x0000FFFFL
996#define IOTFM_MSK_MASK                          0x000F0000L
997#define IOTFM_IODC_MASK                         0x06000000L
998#define IOTFM_IODC_16_BIT                       0x00000000L
999#define IOTFM_IODC_10_BIT                       0x02000000L
1000#define IOTFM_IODC_12_BIT                       0x04000000L
1001#define IOTFM_WSPI                              0x08000000L
1002#define IOTFM_RSPI                              0x10000000L
1003#define IOTFM_WSE                               0x20000000L
1004#define IOTFM_WE                                0x40000000L
1005#define IOTFM_RE                                0x80000000L
1006#define IOTFM_SA_SHIFT                          0L
1007#define IOTFM_MSK_SHIFT                         16L
1008
1009//****************************************************************************
1010//
1011// The following defines are for the flags in the PC/PCI request register.
1012//
1013//****************************************************************************
1014#define PCPRR_RDC_MASK                         0x00000007L
1015#define PCPRR_REQ                              0x00008000L
1016#define PCPRR_RDC_SHIFT                        0L
1017
1018//****************************************************************************
1019//
1020// The following defines are for the flags in the PC/PCI grant register.
1021//
1022//****************************************************************************
1023#define PCPGR_GDC_MASK                         0x00000007L
1024#define PCPGR_VL                               0x00008000L
1025#define PCPGR_GDC_SHIFT                        0L
1026
1027//****************************************************************************
1028//
1029// The following defines are for the flags in the PC/PCI Control Register.
1030//
1031//****************************************************************************
1032#define PCPCR_EN                               0x00000001L
1033
1034//****************************************************************************
1035//
1036// The following defines are for the flags in the debug index register.
1037//
1038//****************************************************************************
1039#define DREG_REGID_MASK                         0x0000007FL
1040#define DREG_DEBUG                              0x00000080L
1041#define DREG_RGBK_MASK                          0x00000700L
1042#define DREG_TRAP                               0x00000800L
1043#if !defined(NO_CS4612)
1044#if !defined(NO_CS4615)
1045#define DREG_TRAPX                              0x00001000L
1046#endif
1047#endif
1048#define DREG_REGID_SHIFT                        0L
1049#define DREG_RGBK_SHIFT                         8L
1050#define DREG_RGBK_REGID_MASK                    0x0000077FL
1051#define DREG_REGID_R0                           0x00000010L
1052#define DREG_REGID_R1                           0x00000011L
1053#define DREG_REGID_R2                           0x00000012L
1054#define DREG_REGID_R3                           0x00000013L
1055#define DREG_REGID_R4                           0x00000014L
1056#define DREG_REGID_R5                           0x00000015L
1057#define DREG_REGID_R6                           0x00000016L
1058#define DREG_REGID_R7                           0x00000017L
1059#define DREG_REGID_R8                           0x00000018L
1060#define DREG_REGID_R9                           0x00000019L
1061#define DREG_REGID_RA                           0x0000001AL
1062#define DREG_REGID_RB                           0x0000001BL
1063#define DREG_REGID_RC                           0x0000001CL
1064#define DREG_REGID_RD                           0x0000001DL
1065#define DREG_REGID_RE                           0x0000001EL
1066#define DREG_REGID_RF                           0x0000001FL
1067#define DREG_REGID_RA_BUS_LOW                   0x00000020L
1068#define DREG_REGID_RA_BUS_HIGH                  0x00000038L
1069#define DREG_REGID_YBUS_LOW                     0x00000050L
1070#define DREG_REGID_YBUS_HIGH                    0x00000058L
1071#define DREG_REGID_TRAP_0                       0x00000100L
1072#define DREG_REGID_TRAP_1                       0x00000101L
1073#define DREG_REGID_TRAP_2                       0x00000102L
1074#define DREG_REGID_TRAP_3                       0x00000103L
1075#define DREG_REGID_TRAP_4                       0x00000104L
1076#define DREG_REGID_TRAP_5                       0x00000105L
1077#define DREG_REGID_TRAP_6                       0x00000106L
1078#define DREG_REGID_TRAP_7                       0x00000107L
1079#define DREG_REGID_INDIRECT_ADDRESS             0x0000010EL
1080#define DREG_REGID_TOP_OF_STACK                 0x0000010FL
1081#if !defined(NO_CS4612)
1082#if !defined(NO_CS4615)
1083#define DREG_REGID_TRAP_8                       0x00000110L
1084#define DREG_REGID_TRAP_9                       0x00000111L
1085#define DREG_REGID_TRAP_10                      0x00000112L
1086#define DREG_REGID_TRAP_11                      0x00000113L
1087#define DREG_REGID_TRAP_12                      0x00000114L
1088#define DREG_REGID_TRAP_13                      0x00000115L
1089#define DREG_REGID_TRAP_14                      0x00000116L
1090#define DREG_REGID_TRAP_15                      0x00000117L
1091#define DREG_REGID_TRAP_16                      0x00000118L
1092#define DREG_REGID_TRAP_17                      0x00000119L
1093#define DREG_REGID_TRAP_18                      0x0000011AL
1094#define DREG_REGID_TRAP_19                      0x0000011BL
1095#define DREG_REGID_TRAP_20                      0x0000011CL
1096#define DREG_REGID_TRAP_21                      0x0000011DL
1097#define DREG_REGID_TRAP_22                      0x0000011EL
1098#define DREG_REGID_TRAP_23                      0x0000011FL
1099#endif
1100#endif
1101#define DREG_REGID_RSA0_LOW                     0x00000200L
1102#define DREG_REGID_RSA0_HIGH                    0x00000201L
1103#define DREG_REGID_RSA1_LOW                     0x00000202L
1104#define DREG_REGID_RSA1_HIGH                    0x00000203L
1105#define DREG_REGID_RSA2                         0x00000204L
1106#define DREG_REGID_RSA3                         0x00000205L
1107#define DREG_REGID_RSI0_LOW                     0x00000206L
1108#define DREG_REGID_RSI0_HIGH                    0x00000207L
1109#define DREG_REGID_RSI1                         0x00000208L
1110#define DREG_REGID_RSI2                         0x00000209L
1111#define DREG_REGID_SAGUSTATUS                   0x0000020AL
1112#define DREG_REGID_RSCONFIG01_LOW               0x0000020BL
1113#define DREG_REGID_RSCONFIG01_HIGH              0x0000020CL
1114#define DREG_REGID_RSCONFIG23_LOW               0x0000020DL
1115#define DREG_REGID_RSCONFIG23_HIGH              0x0000020EL
1116#define DREG_REGID_RSDMA01E                     0x0000020FL
1117#define DREG_REGID_RSDMA23E                     0x00000210L
1118#define DREG_REGID_RSD0_LOW                     0x00000211L
1119#define DREG_REGID_RSD0_HIGH                    0x00000212L
1120#define DREG_REGID_RSD1_LOW                     0x00000213L
1121#define DREG_REGID_RSD1_HIGH                    0x00000214L
1122#define DREG_REGID_RSD2_LOW                     0x00000215L
1123#define DREG_REGID_RSD2_HIGH                    0x00000216L
1124#define DREG_REGID_RSD3_LOW                     0x00000217L
1125#define DREG_REGID_RSD3_HIGH                    0x00000218L
1126#define DREG_REGID_SRAR_HIGH                    0x0000021AL
1127#define DREG_REGID_SRAR_LOW                     0x0000021BL
1128#define DREG_REGID_DMA_STATE                    0x0000021CL
1129#define DREG_REGID_CURRENT_DMA_STREAM           0x0000021DL
1130#define DREG_REGID_NEXT_DMA_STREAM              0x0000021EL
1131#define DREG_REGID_CPU_STATUS                   0x00000300L
1132#define DREG_REGID_MAC_MODE                     0x00000301L
1133#define DREG_REGID_STACK_AND_REPEAT             0x00000302L
1134#define DREG_REGID_INDEX0                       0x00000304L
1135#define DREG_REGID_INDEX1                       0x00000305L
1136#define DREG_REGID_DMA_STATE_0_3                0x00000400L
1137#define DREG_REGID_DMA_STATE_4_7                0x00000404L
1138#define DREG_REGID_DMA_STATE_8_11               0x00000408L
1139#define DREG_REGID_DMA_STATE_12_15              0x0000040CL
1140#define DREG_REGID_DMA_STATE_16_19              0x00000410L
1141#define DREG_REGID_DMA_STATE_20_23              0x00000414L
1142#define DREG_REGID_DMA_STATE_24_27              0x00000418L
1143#define DREG_REGID_DMA_STATE_28_31              0x0000041CL
1144#define DREG_REGID_DMA_STATE_32_35              0x00000420L
1145#define DREG_REGID_DMA_STATE_36_39              0x00000424L
1146#define DREG_REGID_DMA_STATE_40_43              0x00000428L
1147#define DREG_REGID_DMA_STATE_44_47              0x0000042CL
1148#define DREG_REGID_DMA_STATE_48_51              0x00000430L
1149#define DREG_REGID_DMA_STATE_52_55              0x00000434L
1150#define DREG_REGID_DMA_STATE_56_59              0x00000438L
1151#define DREG_REGID_DMA_STATE_60_63              0x0000043CL
1152#define DREG_REGID_DMA_STATE_64_67              0x00000440L
1153#define DREG_REGID_DMA_STATE_68_71              0x00000444L
1154#define DREG_REGID_DMA_STATE_72_75              0x00000448L
1155#define DREG_REGID_DMA_STATE_76_79              0x0000044CL
1156#define DREG_REGID_DMA_STATE_80_83              0x00000450L
1157#define DREG_REGID_DMA_STATE_84_87              0x00000454L
1158#define DREG_REGID_DMA_STATE_88_91              0x00000458L
1159#define DREG_REGID_DMA_STATE_92_95              0x0000045CL
1160#define DREG_REGID_TRAP_SELECT                  0x00000500L
1161#define DREG_REGID_TRAP_WRITE_0                 0x00000500L
1162#define DREG_REGID_TRAP_WRITE_1                 0x00000501L
1163#define DREG_REGID_TRAP_WRITE_2                 0x00000502L
1164#define DREG_REGID_TRAP_WRITE_3                 0x00000503L
1165#define DREG_REGID_TRAP_WRITE_4                 0x00000504L
1166#define DREG_REGID_TRAP_WRITE_5                 0x00000505L
1167#define DREG_REGID_TRAP_WRITE_6                 0x00000506L
1168#define DREG_REGID_TRAP_WRITE_7                 0x00000507L
1169#if !defined(NO_CS4612)
1170#if !defined(NO_CS4615)
1171#define DREG_REGID_TRAP_WRITE_8                 0x00000510L
1172#define DREG_REGID_TRAP_WRITE_9                 0x00000511L
1173#define DREG_REGID_TRAP_WRITE_10                0x00000512L
1174#define DREG_REGID_TRAP_WRITE_11                0x00000513L
1175#define DREG_REGID_TRAP_WRITE_12                0x00000514L
1176#define DREG_REGID_TRAP_WRITE_13                0x00000515L
1177#define DREG_REGID_TRAP_WRITE_14                0x00000516L
1178#define DREG_REGID_TRAP_WRITE_15                0x00000517L
1179#define DREG_REGID_TRAP_WRITE_16                0x00000518L
1180#define DREG_REGID_TRAP_WRITE_17                0x00000519L
1181#define DREG_REGID_TRAP_WRITE_18                0x0000051AL
1182#define DREG_REGID_TRAP_WRITE_19                0x0000051BL
1183#define DREG_REGID_TRAP_WRITE_20                0x0000051CL
1184#define DREG_REGID_TRAP_WRITE_21                0x0000051DL
1185#define DREG_REGID_TRAP_WRITE_22                0x0000051EL
1186#define DREG_REGID_TRAP_WRITE_23                0x0000051FL
1187#endif
1188#endif
1189#define DREG_REGID_MAC0_ACC0_LOW                0x00000600L
1190#define DREG_REGID_MAC0_ACC1_LOW                0x00000601L
1191#define DREG_REGID_MAC0_ACC2_LOW                0x00000602L
1192#define DREG_REGID_MAC0_ACC3_LOW                0x00000603L
1193#define DREG_REGID_MAC1_ACC0_LOW                0x00000604L
1194#define DREG_REGID_MAC1_ACC1_LOW                0x00000605L
1195#define DREG_REGID_MAC1_ACC2_LOW                0x00000606L
1196#define DREG_REGID_MAC1_ACC3_LOW                0x00000607L
1197#define DREG_REGID_MAC0_ACC0_MID                0x00000608L
1198#define DREG_REGID_MAC0_ACC1_MID                0x00000609L
1199#define DREG_REGID_MAC0_ACC2_MID                0x0000060AL
1200#define DREG_REGID_MAC0_ACC3_MID                0x0000060BL
1201#define DREG_REGID_MAC1_ACC0_MID                0x0000060CL
1202#define DREG_REGID_MAC1_ACC1_MID                0x0000060DL
1203#define DREG_REGID_MAC1_ACC2_MID                0x0000060EL
1204#define DREG_REGID_MAC1_ACC3_MID                0x0000060FL
1205#define DREG_REGID_MAC0_ACC0_HIGH               0x00000610L
1206#define DREG_REGID_MAC0_ACC1_HIGH               0x00000611L
1207#define DREG_REGID_MAC0_ACC2_HIGH               0x00000612L
1208#define DREG_REGID_MAC0_ACC3_HIGH               0x00000613L
1209#define DREG_REGID_MAC1_ACC0_HIGH               0x00000614L
1210#define DREG_REGID_MAC1_ACC1_HIGH               0x00000615L
1211#define DREG_REGID_MAC1_ACC2_HIGH               0x00000616L
1212#define DREG_REGID_MAC1_ACC3_HIGH               0x00000617L
1213#define DREG_REGID_RSHOUT_LOW                   0x00000620L
1214#define DREG_REGID_RSHOUT_MID                   0x00000628L
1215#define DREG_REGID_RSHOUT_HIGH                  0x00000630L
1216
1217//****************************************************************************
1218//
1219// The following defines are for the flags in the AC97 S/PDIF Control register.
1220//
1221//****************************************************************************
1222#define SPDIF_CONTROL_SPDIF_EN                 0x00008000L
1223#define SPDIF_CONTROL_VAL                      0x00004000L
1224#define SPDIF_CONTROL_COPY                     0x00000004L
1225#define SPDIF_CONTROL_CC0                      0x00000010L
1226#define SPDIF_CONTROL_CC1                      0x00000020L
1227#define SPDIF_CONTROL_CC2                      0x00000040L
1228#define SPDIF_CONTROL_CC3                      0x00000080L
1229#define SPDIF_CONTROL_CC4                      0x00000100L
1230#define SPDIF_CONTROL_CC5                      0x00000200L
1231#define SPDIF_CONTROL_CC6                      0x00000400L
1232#define SPDIF_CONTROL_L                        0x00000800L
1233
1234#endif // _H_HWDEFS
1235