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 #ifndef _DEV_TABLE_H_
33 #define _DEV_TABLE_H_
34
35
36
37
38
39
40
41
42
43 struct card_info {
44 int card_type;
45 char *name;
46 long (*attach) (long mem_start, struct address_info *hw_config);
47 int (*probe) (struct address_info *hw_config);
48 struct address_info config;
49 };
50
51
52
53 struct generic_midi_info{
54 char *name;
55 long (*attach) (long mem_start);
56 };
57
58 struct audio_operations {
59 char name[32];
60 int (*open) (int dev, int mode);
61 void (*close) (int dev);
62 void (*output_block) (int dev, unsigned long buf, int count, int intrflag);
63 void (*start_input) (int dev, unsigned long buf, int count, int intrflag);
64 int (*ioctl) (int dev, unsigned int cmd, unsigned int arg, int local);
65 int (*prepare_for_input) (int dev, int bufsize, int nbufs);
66 int (*prepare_for_output) (int dev, int bufsize, int nbufs);
67 void (*reset) (int dev);
68 void (*halt_xfer) (int dev);
69 int (*has_output_drained)(int dev);
70 void (*copy_from_user)(int dev, char *localbuf, int localoffs,
71 snd_rw_buf *userbuf, int useroffs, int len);
72 };
73
74 struct mixer_operations {
75 int (*ioctl) (int dev, unsigned int cmd, unsigned int arg);
76 };
77
78 struct synth_operations {
79 struct synth_info *info;
80 int synth_type;
81 int synth_subtype;
82
83 int (*open) (int dev, int mode);
84 void (*close) (int dev);
85 int (*ioctl) (int dev, unsigned int cmd, unsigned int arg);
86 int (*kill_note) (int dev, int voice, int velocity);
87 int (*start_note) (int dev, int voice, int note, int velocity);
88 int (*set_instr) (int dev, int voice, int instr);
89 void (*reset) (int dev);
90 void (*hw_control) (int dev, unsigned char *event);
91 int (*load_patch) (int dev, int format, snd_rw_buf *addr,
92 int offs, int count, int pmgr_flag);
93 void (*aftertouch) (int dev, int voice, int pressure);
94 void (*controller) (int dev, int voice, int ctrl_num, int value);
95 void (*panning) (int dev, int voice, int value);
96 int (*pmgr_interface) (int dev, struct patmgr_info *info);
97 };
98
99 struct midi_operations {
100 struct midi_info info;
101 int (*open) (int dev, int mode,
102 void (*inputintr)(int dev, unsigned char data),
103 void (*outputintr)(int dev)
104 );
105 void (*close) (int dev);
106 int (*ioctl) (int dev, unsigned int cmd, unsigned int arg);
107 int (*putc) (int dev, unsigned char data);
108 int (*start_read) (int dev);
109 int (*end_read) (int dev);
110 void (*kick)(int dev);
111 int (*command) (int dev, unsigned char data);
112 int (*buffer_status) (int dev);
113 };
114
115
116
117 struct generic_midi_operations {
118 struct midi_info info;
119 int (*open) (int dev, int mode);
120 void (*close) (int dev);
121 int (*write) (int dev, snd_rw_buf *data);
122 int (*read) (int dev, snd_rw_buf *data);
123 };
124
125 #ifndef ALL_EXTERNAL_TO_ME
126
127 #ifdef _MIDI_TABLE_C_
128
129
130 struct generic_midi_operations * generic_midi_devs[MAX_MIDI_DEV] = {NULL};
131 int num_generic_midis = 0, pro_midi_dev = 0;
132
133 struct generic_midi_info midi_supported[] = {
134
135 #ifndef EXCLUDE_PRO_MIDI
136 {"ProAudioSpectrum MV101",pro_midi_attach}
137 #endif
138 };
139
140 int num_midi_drivers =
141 sizeof (midi_supported) / sizeof(struct generic_midi_info);
142
143 #endif
144
145
146 #ifdef _DEV_TABLE_C_
147 struct audio_operations * dsp_devs[MAX_DSP_DEV] = {NULL}; int num_dspdevs = 0;
148 struct mixer_operations * mixer_devs[MAX_MIXER_DEV] = {NULL}; int num_mixers = 0;
149 struct synth_operations * synth_devs[MAX_SYNTH_DEV] = {NULL}; int num_synths = 0;
150 struct midi_operations * midi_devs[MAX_MIDI_DEV] = {NULL}; int num_midis = 0;
151
152
153 # ifndef EXCLUDE_MPU401
154 int mpu401_dev = 0;
155 # endif
156
157
158
159
160
161 struct card_info supported_drivers[] = {
162 #ifndef EXCLUDE_MPU401
163 {SNDCARD_MPU401,"Roland MPU-401", attach_mpu401, probe_mpu401,
164 {MPU_BASE, MPU_IRQ, 0}},
165 #endif
166
167 #ifndef EXCLUDE_GUS
168 {SNDCARD_GUS, "Gravis Ultrasound", attach_gus_card, probe_gus,
169 {GUS_BASE, GUS_IRQ, GUS_DMA}},
170 #endif
171
172 #ifndef EXCLUDE_PAS
173 {SNDCARD_PAS, "ProAudioSpectrum", attach_pas_card, probe_pas,
174 {PAS_BASE, PAS_IRQ, PAS_DMA}},
175 #endif
176
177 #ifndef EXCLUDE_SB
178 {SNDCARD_SB, "SoundBlaster", attach_sb_card, probe_sb,
179 {SBC_BASE, SBC_IRQ, SBC_DMA}},
180 #endif
181
182 #ifndef EXCLUDE_YM3812
183 {SNDCARD_ADLIB, "AdLib", attach_adlib_card, probe_adlib,
184 {FM_MONO, 0, 0}},
185 #endif
186 {0, "*?*", NULL}
187 };
188
189 int num_sound_drivers =
190 sizeof(supported_drivers) / sizeof (struct card_info);
191
192
193 # ifndef EXCLUDE_AUDIO
194 int sound_buffcounts[MAX_DSP_DEV] = {0};
195 long sound_buffsizes[MAX_DSP_DEV] = {0};
196 int sound_dsp_dmachan[MAX_DSP_DEV] = {0};
197 int sound_dma_automode[MAX_DSP_DEV] = {0};
198 # endif
199 #else
200 extern struct audio_operations * dsp_devs[MAX_DSP_DEV]; int num_dspdevs;
201 extern struct mixer_operations * mixer_devs[MAX_MIXER_DEV]; extern int num_mixers;
202 extern struct synth_operations * synth_devs[MAX_SYNTH_DEV]; extern int num_synths;
203 extern struct midi_operations * midi_devs[MAX_MIDI_DEV]; extern int num_midis;
204 # ifndef EXCLUDE_MPU401
205 extern int mpu401_dev;
206 # endif
207
208 extern struct card_info supported_drivers[];
209 extern int num_sound_drivers;
210
211 # ifndef EXCLUDE_AUDIO
212 extern int sound_buffcounts[MAX_DSP_DEV];
213 extern long sound_buffsizes[MAX_DSP_DEV];
214 extern int sound_dsp_dmachan[MAX_DSP_DEV];
215 extern int sound_dma_automode[MAX_DSP_DEV];
216 # endif
217
218 #endif
219
220 long sndtable_init(long mem_start);
221 int sndtable_get_cardcount (void);
222 long CMIDI_init(long mem_start);
223 #endif
224
225 #endif
226
227
228
229 #ifdef ALL_EXTERNAL_TO_ME
230
231 extern struct audio_operations * dsp_devs[MAX_DSP_DEV]; int num_dspdevs;
232 extern struct mixer_operations * mixer_devs[MAX_MIXER_DEV]; extern int num_mixers;
233 extern struct synth_operations * synth_devs[MAX_SYNTH_DEV]; extern int num_synths;
234 extern struct midi_operations * midi_devs[MAX_MIDI_DEV]; extern int num_midis;
235 extern struct generic_midi_operations *generic_midi_devs[];
236 extern int num_generic_midis, pro_midi_dev;
237
238 #ifndef EXCLUDE_MPU401
239 extern int mpu401_dev;
240 #endif
241
242 extern struct generic_midi_info midi_supported[];
243 extern struct card_info supported_drivers[];
244 extern int num_sound_drivers;
245 extern int num_midi_drivers;
246 #ifndef EXCLUDE_AUDIO
247 extern int sound_buffcounts[MAX_DSP_DEV];
248 extern long sound_buffsizes[MAX_DSP_DEV];
249 extern int sound_dsp_dmachan[MAX_DSP_DEV];
250 extern int sound_dma_automode[MAX_DSP_DEV];
251 #endif
252
253 #endif