pasreg.h revision 1.2 1 1.2 brezak /* $NetBSD: pasreg.h,v 1.2 1995/03/15 18:45:58 brezak Exp $ */
2 1.1 brezak
3 1.1 brezak /* Port addresses and bit fields for the Media Vision Pro AudioSpectrum
4 1.1 brezak * second generation sound cards.
5 1.1 brezak *
6 1.1 brezak * Feel free to use this header file in any application you create that
7 1.1 brezak * has support for the Media Vision Pro AudioSpectrum second generation
8 1.1 brezak * sound cards. Other uses prohibited without prior permission.
9 1.1 brezak *
10 1.1 brezak * - cmetz (at) thor.tjhsst.edu
11 1.1 brezak *
12 1.1 brezak * Notes:
13 1.1 brezak *
14 1.1 brezak * - All of these ports go into the MVD101 multimedia controller chip,
15 1.1 brezak * which then signals the other chips to do the actual work. Many
16 1.1 brezak * ports like the FM ones functionally attach directly to the
17 1.1 brezak * destination chip though they don't actually have a direct connection.
18 1.1 brezak * - The PAS2 series cards have an MVD101 multimedia controller chip,
19 1.1 brezak * the original PAS cards don't. The original PAS cards are pretty
20 1.1 brezak * defunct now, so no attempt is made here to support them.
21 1.1 brezak * - The PAS2 series cards are all really different at the hardware level,
22 1.1 brezak * though the MVD101 hides some of the incompatibilities, there still
23 1.1 brezak * are differences that need to be accounted for.
24 1.1 brezak *
25 1.1 brezak * Card CD-ROM interface PCM chip Mixer chip FM chip
26 1.1 brezak * PAS Plus Sony proprietary (Crystal?) 8-bit DAC National OPL3
27 1.1 brezak * PAS 16 Zilog SCSI MVA416 16-bit Codec MVA508 OPL3
28 1.1 brezak * CDPC Sony proprietary Sony 16-bit Codec National OPL3
29 1.1 brezak * Fusion CD 16 Sony proprietary MVA416 16-bit Codec MVA508 OPL3
30 1.1 brezak * Fusion CD Sony proprietary (Crystal?) 8-bit DAC National OPL3
31 1.1 brezak *
32 1.1 brezak */
33 1.1 brezak
34 1.1 brezak #define PAS_DEFAULT_BASE 0x388
35 1.1 brezak
36 1.1 brezak /* Symbolic Name Value R W Subsystem Description */
37 1.1 brezak #define SPEAKER_CONTROL 0x61 /* W PC speaker Control register */
38 1.1 brezak #define SPEAKER_CONTROL_GHOST 0x738B /* R W PC speaker Control ghost register */
39 1.1 brezak #define SPEAKER_TIMER_CONTROL 0x43 /* W PC speaker Timer control register */
40 1.1 brezak #define SPEAKER_TIMER_CONTROL_GHOST 0x778B /* R W PC speaker Timer control register ghost */
41 1.1 brezak #define SPEAKER_TIMER_DATA 0x42 /* W PC speaker Timer data register */
42 1.1 brezak #define SPEAKER_TIMER_DATA_GHOST 0x138A /* R W PC speaker Timer data register ghost */
43 1.1 brezak
44 1.1 brezak #define WARM_BOOT 0x41 /* W Control Used to detect system warm boot */
45 1.1 brezak #define WARM_BOOT_GHOST 0x7789 /* ? W Control Use to get the card to fake warm boot */
46 1.1 brezak #define MASTER_DECODE 0x9A01 /* W Control Address >> 2 of card base address */
47 1.1 brezak #define PRESCALE_DIVIDER 0xBF8A /* R W PCM Ration between Codec clock and master clock */
48 1.1 brezak #define WAIT_STATE 0xBF88 /* R W Control Four-bit bus wait-state count (~140ns ea.) */
49 1.1 brezak #define BOARD_REV_ID 0x2789 /* R Control Extended Board Revision ID */
50 1.1 brezak
51 1.1 brezak #define SYSTEM_CONFIGURATION_1 0x8388 /* R W Control */
52 1.1 brezak #define S_C_1_PCS_ENABLE 0x01 /* R W PC speaker 1=enable, 0=disable PC speaker emulation */
53 1.1 brezak #define S_C_1_PCM_CLOCK_SELECT 0x02 /* R W PCM 1=14.31818Mhz/12, 0=28.224Mhz master clock */
54 1.1 brezak #define S_C_1_FM_EMULATE_CLOCK 0x04 /* R W FM 1=use 28.224Mhz/2, 0=use 14.31818Mhz clock */
55 1.1 brezak #define S_C_1_PCS_STEREO 0x10 /* R W PC speaker 1=enable PC speaker stereo effect, 0=disable */
56 1.1 brezak #define S_C_1_PCS_REALSOUND 0x20 /* R W PC speaker 1=enable RealSound enhancement, 0=disable */
57 1.1 brezak #define S_C_1_FORCE_EXT_RESET 0x40 /* R W Control Force external reset */
58 1.1 brezak #define S_C_1_FORCE_INT_RESET 0x80 /* R W Control Force internal reset */
59 1.1 brezak #define SYSTEM_CONFIGURATION_2 0x8389 /* R W Control */
60 1.1 brezak #define S_C_2_PCM_OVERSAMPLING 0x03 /* R W PCM 00=0x, 01=2x, 10=4x, 11=reserved */
61 1.1 brezak #define S_C_2_PCM_16_BIT 0x04 /* R W PCM 1=16-bit, 0=8-bit samples */
62 1.1 brezak #define SYSTEM_CONFIGURATION_3 0x838A /* R W Control */
63 1.1 brezak #define S_C_3_PCM_CLOCK_SELECT 0x02 /* R W PCM 1=use 1.008Mhz clock for PCM, 0=don't */
64 1.1 brezak #define SYSTEM_CONFIGURATION_4 0x838B /* R W Control CD-ROM interface controls */
65 1.1 brezak
66 1.1 brezak #define IO_CONFIGURATION_1 0xF388 /* R W Control */
67 1.1 brezak #define I_C_1_BOOT_RESET_ENABLE 0x80 /* R W Control 1=reset board on warm boot, 0=don't */
68 1.1 brezak #define IO_CONFIGURATION_2 0xF389 /* R W Control */
69 1.1 brezak #define I_C_2_PCM_DMA_DISABLED 0x00 /* R W PCM PCM DMA disabled */
70 1.1 brezak #define IO_CONFIGURATION_3 0xF38A /* R W Control */
71 1.1 brezak #define I_C_3_PCM_IRQ_DISABLED 0x00 /* R W PCM PCM IRQ disabled */
72 1.1 brezak
73 1.1 brezak #define COMPATIBILITY_ENABLE 0xF788 /* R W Control */
74 1.1 brezak #define C_E_MPU401_ENABLE 0x01 /* R W MIDI 1=enable, 0=disable MPU401 MIDI emulation */
75 1.1 brezak #define C_E_SB_ENABLE 0x02 /* R W PCM 1=enable, 0=disable Sound Blaster emulation */
76 1.1 brezak #define C_E_SB_ACTIVE 0x04 /* R PCM "Sound Blaster Interrupt active" */
77 1.1 brezak #define C_E_MPU401_ACTIVE 0x08 /* R MIDI "MPU UART mode active" */
78 1.1 brezak #define C_E_PCM_COMPRESSION 0x10 /* R W PCM 1=enable, 0=disabled compression */
79 1.1 brezak #define EMULATION_ADDRESS 0xF789 /* R W Control */
80 1.1 brezak #define E_A_SB_BASE 0x0f /* R W PCM bits A4-A7 for SB base port */
81 1.1 brezak #define E_A_MPU401_BASE 0xf0 /* R W MIDI bits A4-A7 for MPU401 base port */
82 1.1 brezak #define EMULATION_CONFIGURATION 0xFB8A /* R W ***** Only valid on newer PAS2 cards (?) ***** */
83 1.1 brezak #define E_C_MPU401_IRQ 0x07 /* R W MIDI MPU401 emulation IRQ */
84 1.1 brezak #define E_C_SB_IRQ 0x38 /* R W PCM SB emulation IRQ */
85 1.1 brezak #define E_C_SB_DMA 0xC0 /* R W PCM SB emulation DMA */
86 1.1 brezak
87 1.1 brezak #define OPERATION_MODE_1 0xEF8B /* R Control */
88 1.1 brezak #define O_M_1_CDROM_TYPE 0x03 /* R CD-ROM 3=SCSI, 2=Sony, 0=no CD-ROM interface */
89 1.1 brezak #define O_M_1_FM_TYPE 0x04 /* R FM 1=sterero, 0=mono FM chip */
90 1.1 brezak #define O_M_1_PCM_TYPE 0x08 /* R PCM 1=16-bit Codec, 0=8-bit DAC */
91 1.1 brezak #define OPERATION_MODE_2 0xFF8B /* R Control */
92 1.1 brezak #define O_M_2_PCS_ENABLED 0x02 /* R PC speaker PC speaker emulation 1=enabled, 0=disabled */
93 1.1 brezak #define O_M_2_BUS_TIMING 0x10 /* R Control 1=AT bus timing, 0=XT bus timing */
94 1.1 brezak #define O_M_2_BOARD_REVISION 0xe0 /* R Control Board revision */
95 1.1 brezak
96 1.1 brezak #define INTERRUPT_MASK 0x0B8B /* R W Control */
97 1.1 brezak #define I_M_FM_LEFT_IRQ_ENABLE 0x01 /* R W FM Enable FM left interrupt */
98 1.1 brezak #define I_M_FM_RIGHT_IRQ_ENABLE 0x02 /* R W FM Enable FM right interrupt */
99 1.1 brezak #define I_M_PCM_RATE_IRQ_ENABLE 0x04 /* R W PCM Enable Sample Rate interrupt */
100 1.1 brezak #define I_M_PCM_BUFFER_IRQ_ENABLE 0x08 /* R W PCM Enable Sample Buffer interrupt */
101 1.1 brezak #define I_M_MIDI_IRQ_ENABLE 0x10 /* R W MIDI Enable MIDI interrupt */
102 1.1 brezak #define I_M_BOARD_REV 0xE0 /* R Control Board revision */
103 1.1 brezak
104 1.1 brezak #define INTERRUPT_STATUS 0x0B89 /* R W Control */
105 1.1 brezak #define I_S_FM_LEFT_IRQ 0x01 /* R W FM Left FM Interrupt Pending */
106 1.1 brezak #define I_S_FM_RIGHT_IRQ 0x02 /* R W FM Right FM Interrupt Pending */
107 1.1 brezak #define I_S_PCM_SAMPLE_RATE_IRQ 0x04 /* R W PCM Sample Rate Interrupt Pending */
108 1.1 brezak #define I_S_PCM_SAMPLE_BUFFER_IRQ 0x08 /* R W PCM Sample Buffer Interrupt Pending */
109 1.1 brezak #define I_S_MIDI_IRQ 0x10 /* R W MIDI MIDI Interrupt Pending */
110 1.1 brezak #define I_S_PCM_CHANNEL 0x20 /* R W PCM 1=right, 0=left */
111 1.1 brezak #define I_S_RESET_ACTIVE 0x40 /* R W Control Reset is active (Timed pulse not finished) */
112 1.1 brezak #define I_S_PCM_CLIPPING 0x80 /* R W PCM Clipping has occurred */
113 1.1 brezak
114 1.1 brezak #define FILTER_FREQUENCY 0x0B8A /* R W Control */
115 1.1 brezak #define F_F_FILTER_DISABLED 0x00 /* R W Mixer No filter */
116 1.1 brezak #if 0
117 1.1 brezak struct { /* R W Mixer Filter translation */
118 1.1 brezak unsigned int freq:24;
119 1.1 brezak unsigned int value:8;
120 1.1 brezak } F_F_FILTER_translate[] =
121 1.1 brezak { { 73500, 0x01 }, /* 73500Hz - divide by 16 */
122 1.1 brezak { 65333, 0x02 }, /* 65333Hz - divide by 18 */
123 1.1 brezak { 49000, 0x09 }, /* 49000Hz - divide by 24 */
124 1.1 brezak { 36750, 0x11 }, /* 36750Hz - divide by 32 */
125 1.1 brezak { 24500, 0x19 }, /* 24500Hz - divide by 48 */
126 1.1 brezak { 18375, 0x07 }, /* 18375Hz - divide by 64 */
127 1.1 brezak { 12783, 0x0f }, /* 12783Hz - divide by 92 */
128 1.1 brezak { 12250, 0x04 }, /* 12250Hz - divide by 96 */
129 1.1 brezak { 9188, 0x17 }, /* 9188Hz - divide by 128 */
130 1.1 brezak { 6125, 0x1f }, /* 6125Hz - divide by 192 */
131 1.1 brezak };
132 1.1 brezak #endif
133 1.1 brezak #define F_F_MIXER_UNMUTE 0x20 /* R W Mixer 1=disable, 0=enable board mute */
134 1.1 brezak #define F_F_PCM_RATE_COUNTER 0x40 /* R W PCM 1=enable, 0=disable sample rate counter */
135 1.1 brezak #define F_F_PCM_BUFFER_COUNTER 0x80 /* R W PCM 1=enable, 0=disable sample buffer counter */
136 1.1 brezak
137 1.1 brezak #define PAS_NONE 0
138 1.1 brezak #define PAS_PLUS 1
139 1.1 brezak #define PAS_CDPC 2
140 1.1 brezak #define PAS_16 3
141 1.2 brezak #define PAS_16BASIC 4 /* no CDrom */
142 1.1 brezak
143 1.1 brezak #ifdef DEFINE_TRANSLATIONS
144 1.1 brezak char I_C_2_PCM_DMA_translate[] = /* R W PCM PCM DMA channel value translations */
145 1.1 brezak { 4, 1, 2, 3, 0, 5, 6, 7 };
146 1.1 brezak char I_C_3_PCM_IRQ_translate[] = /* R W PCM PCM IRQ level value translation */
147 1.1 brezak { 0, 0, 1, 2, 3, 4, 5, 6, 0, 0, 7, 8, 9, 0, 10, 11 };
148 1.1 brezak char E_C_MPU401_IRQ_translate[] = /* R W MIDI MPU401 emulation IRQ value translation */
149 1.1 brezak { 0x00, 0x00, 0x01, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x05, 0x06, 0x07 };
150 1.1 brezak char E_C_SB_IRQ_translate[] = /* R W PCM SB emulation IRQ translate */
151 1.1 brezak { 0x00, 0x00, 0x08, 0x10, 0x00, 0x18, 0x00, 0x20, 0x00, 0x00, 0x28, 0x30, 0x38 };
152 1.1 brezak char E_C_SB_DMA_translate[] = /* R W PCM SB emulation DMA translate */
153 1.1 brezak { 0x00, 0x40, 0x80, 0xC0 };
154 1.1 brezak char O_M_1_to_card[] = /* R W Control Translate (OM1 & 0x0f) to card type */
155 1.2 brezak { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 4, 0, 2, 3 };
156 1.1 brezak #else
157 1.1 brezak extern char I_C_2_PCM_DMA_translate[]; /* R W PCM PCM DMA channel value translations */
158 1.1 brezak extern char I_C_3_PCM_IRQ_translate[]; /* R W PCM PCM IRQ level value translation */
159 1.1 brezak extern char E_C_MPU401_IRQ_translate[]; /* R W MIDI MPU401 emulation IRQ value translation */
160 1.1 brezak extern char E_C_SB_IRQ_translate[]; /* R W PCM SB emulation IRQ translate */
161 1.1 brezak extern char E_C_SB_DMA_translate[]; /* R W PCM SB emulation DMA translate */
162 1.1 brezak extern char O_M_1_to_card[]; /* R W Control Translate (OM1 & 0x0f) to card type */
163 1.1 brezak #endif
164 1.1 brezak
165 1.1 brezak #define PARALLEL_MIXER 0x078B /* W Mixer Documented for MVD101 as FM Mono Right decode?? */
166 1.1 brezak #define P_M_MV508_ADDRESS 0x80 /* W Mixer MVD508 Address/mixer select */
167 1.1 brezak #define P_M_MV508_DATA 0x00
168 1.1 brezak #define P_M_MV508_LEFT 0x20 /* W Mixer MVD508 Left channel select */
169 1.1 brezak #define P_M_MV508_RIGHT 0x40 /* W Mixer MVD508 Right channel select */
170 1.1 brezak #define P_M_MV508_BOTH 0x00 /* W Mixer MVD508 Both channel select */
171 1.1 brezak #define P_M_MV508_MIXER 0x10 /* W Mixer MVD508 Select a mixer (rather than a volume) */
172 1.1 brezak #define P_M_MV508_VOLUME 0x00
173 1.1 brezak
174 1.1 brezak #define P_M_MV508_INPUTMIX 0x20 /* W Mixer MVD508 Select mixer A */
175 1.1 brezak #define P_M_MV508_OUTPUTMIX 0x00 /* W Mixer MVD508 Select mixer B */
176 1.1 brezak
177 1.1 brezak #define P_M_MV508_MASTER_A 0x01 /* W Mixer MVD508 Master volume control A (output) */
178 1.1 brezak #define P_M_MV508_MASTER_B 0x02 /* W Mixer MVD508 Master volume control B (DSP input) */
179 1.1 brezak #define P_M_MV508_BASS 0x03 /* W Mixer MVD508 Bass control */
180 1.1 brezak #define P_M_MV508_TREBLE 0x04 /* W Mixer MVD508 Treble control */
181 1.1 brezak #define P_M_MV508_MODE 0x05 /* W Mixer MVD508 Master mode control */
182 1.1 brezak
183 1.1 brezak #define P_M_MV508_LOUDNESS 0x04 /* W Mixer MVD508 Mode control - Loudness filter */
184 1.1 brezak #define P_M_MV508_ENHANCE_NONE 0x00 /* W Mixer MVD508 Mode control - No stereo enhancement */
185 1.1 brezak #define P_M_MV508_ENHANCE_40 0x01 /* W Mixer MVD508 Mode control - 40% stereo enhancement */
186 1.1 brezak #define P_M_MV508_ENHANCE_60 0x02 /* W Mixer MVD508 Mode control - 60% stereo enhancement */
187 1.1 brezak #define P_M_MV508_ENHANCE_80 0x03 /* W Mixer MVD508 Mode control - 80% stereo enhancement */
188 1.1 brezak
189 1.1 brezak #define P_M_MV508_FM 0x00 /* W Mixer MVD508 Channel 0 - FM */
190 1.1 brezak #define P_M_MV508_IMIXER 0x01 /* W Mixer MVD508 Channel 1 - Input mixer (rec monitor) */
191 1.1 brezak #define P_M_MV508_LINE 0x02 /* W Mixer MVD508 Channel 2 - Line in */
192 1.1 brezak #define P_M_MV508_CDROM 0x03 /* W Mixer MVD508 Channel 3 - CD-ROM */
193 1.1 brezak #define P_M_MV508_MIC 0x04 /* W Mixer MVD508 Channel 4 - Microphone */
194 1.1 brezak #define P_M_MV508_PCM 0x05 /* W Mixer MVD508 Channel 5 - PCM */
195 1.1 brezak #define P_M_MV508_SPEAKER 0x06 /* W Mixer MVD508 Channel 6 - PC Speaker */
196 1.1 brezak #define P_M_MV508_SB 0x07 /* W Mixer MVD508 Channel 7 - SB DSP */
197 1.1 brezak
198 1.1 brezak #define SERIAL_MIXER 0xB88 /* R W Control Serial mixer control (used other ways) */
199 1.1 brezak #define S_M_PCM_RESET 0x01 /* R W PCM Codec/DSP reset */
200 1.1 brezak #define S_M_FM_RESET 0x02 /* R W FM FM chip reset */
201 1.1 brezak #define S_M_SB_RESET 0x04 /* R W PCM SB emulation chip reset */
202 1.1 brezak #define S_M_MIXER_RESET 0x10 /* R W Mixer Mixer chip reset */
203 1.1 brezak #define S_M_INTEGRATOR_ENABLE 0x40 /* R W Speaker Enable PC speaker integrator (FORCE RealSound) */
204 1.1 brezak
205 1.1 brezak #define PCM_CONTROL 0xF8A /* R W PCM PCM Control Register */
206 1.1 brezak #define P_C_MIXER_CROSS_FIELD 0x0f
207 1.1 brezak #define P_C_MIXER_CROSS_R_TO_R 0x01 /* R W Mixer Connect Right to Right */
208 1.1 brezak #define P_C_MIXER_CROSS_L_TO_R 0x02 /* R W Mixer Connect Left to Right */
209 1.1 brezak #define P_C_MIXER_CROSS_R_TO_L 0x04 /* R W Mixer Connect Right to Left */
210 1.1 brezak #define P_C_MIXER_CROSS_L_TO_L 0x08 /* R W Mixer Connect Left to Left */
211 1.1 brezak #define P_C_PCM_DAC_MODE 0x10 /* R W PCM Playback (DAC) mode */
212 1.1 brezak #define P_C_PCM_ADC_MODE 0x00 /* R W PCM Record (ADC) mode */
213 1.1 brezak #define P_C_PCM_MONO 0x20 /* R W PCM Mono mode */
214 1.1 brezak #define P_C_PCM_STEREO 0x00 /* R W PCM Stereo mode */
215 1.1 brezak #define P_C_PCM_ENABLE 0x40 /* R W PCM Enable PCM engine */
216 1.1 brezak #define P_C_PCM_DMA_ENABLE 0x80 /* R W PCM Enable DRQ */
217 1.1 brezak
218 1.1 brezak #define SAMPLE_COUNTER_CONTROL 0x138B /* R W PCM Sample counter control register */
219 1.1 brezak #define S_C_C_SQUARE_WAVE 0x04 /* R W PCM Square wave generator (use for sample rate) */
220 1.1 brezak #define S_C_C_RATE 0x06 /* R W PCM Rate generator (use for sample buffer count) */
221 1.1 brezak #define S_C_C_LSB_THEN_MSB 0x30 /* R W PCM Change all 16 bits, LSB first, then MSB */
222 1.1 brezak
223 1.1 brezak /* MVD101 and SDK documentations have S_C_C_SAMPLE_RATE and S_C_C_SAMPLE_BUFFER transposed. Only one works :-) */
224 1.1 brezak #define S_C_C_SAMPLE_RATE 0x00 /* R W PCM Select sample rate timer */
225 1.1 brezak #define S_C_C_SAMPLE_BUFFER 0x40 /* R W PCM Select sample buffer counter */
226 1.1 brezak
227 1.1 brezak #define S_C_C_PC_SPEAKER 0x80 /* R W PCM Select PC speaker counter */
228 1.1 brezak
229 1.1 brezak #define SAMPLE_RATE_TIMER 0x1388 /* W PCM Sample rate timer register (PCM wait interval) */
230 1.1 brezak #define SAMPLE_BUFFER_COUNTER 0x1389 /* R W PCM Sample buffer counter (DMA buffer size) */
231 1.1 brezak
232 1.1 brezak #define MIDI_CONTROL 0x178b /* R W MIDI Midi control register */
233 1.1 brezak #define M_C_ENA_TSTAMP_IRQ 0x01 /* R W MIDI Enable Time Stamp Interrupts */
234 1.1 brezak #define M_C_ENA_TME_COMP_IRQ 0x02 /* R W MIDI Enable time compare interrupts */
235 1.1 brezak #define M_C_ENA_INPUT_IRQ 0x04 /* R W MIDI Enable input FIFO interrupts */
236 1.1 brezak #define M_C_ENA_OUTPUT_IRQ 0x08 /* R W MIDI Enable output FIFO interrupts */
237 1.1 brezak #define M_C_ENA_OUTPUT_HALF_IRQ 0x10 /* R W MIDI Enable output FIFO half full interrupts */
238 1.1 brezak #define M_C_RESET_INPUT_FIFO 0x20 /* R W MIDI Reset input FIFO pointer */
239 1.1 brezak #define M_C_RESET_OUTPUT_FIFO 0x40 /* R W MIDI Reset output FIFO pointer */
240 1.1 brezak #define M_C_ENA_THRU_MODE 0x80 /* R W MIDI Echo input to output (THRU) */
241 1.1 brezak
242 1.1 brezak #define MIDI_STATUS 0x1B88 /* R W MIDI Midi (interrupt) status register */
243 1.1 brezak #define M_S_TIMESTAMP 0x01 /* R W MIDI Midi time stamp interrupt occurred */
244 1.1 brezak #define M_S_COMPARE 0x02 /* R W MIDI Midi compare time interrupt occurred */
245 1.1 brezak #define M_S_INPUT_AVAIL 0x04 /* R W MIDI Midi input data available interrupt occurred */
246 1.1 brezak #define M_S_OUTPUT_EMPTY 0x08 /* R W MIDI Midi output FIFO empty interrupt occurred */
247 1.1 brezak #define M_S_OUTPUT_HALF_EMPTY 0x10 /* R W MIDI Midi output FIFO half empty interrupt occurred */
248 1.1 brezak #define M_S_INPUT_OVERRUN 0x20 /* R W MIDI Midi input overrun error occurred */
249 1.1 brezak #define M_S_OUTPUT_OVERRUN 0x40 /* R W MIDI Midi output overrun error occurred */
250 1.1 brezak #define M_S_FRAMING_ERROR 0x80 /* R W MIDI Midi input framing error occurred */
251 1.1 brezak
252 1.1 brezak #define MIDI_FIFO_STATUS 0x1B89 /* R W MIDI Midi fifo status */
253 1.1 brezak #define MIDI_DATA 0x178A /* R W MIDI Midi data register */
254 1.1 brezak
255