OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [sound/] [oss/] [dev_table.h] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 *      dev_table.h
3
 *
4
 *      Global definitions for device call tables
5
 *
6
 *
7
 * Copyright (C) by Hannu Savolainen 1993-1997
8
 *
9
 * OSS/Free for Linux is distributed under the GNU GENERAL PUBLIC LICENSE (GPL)
10
 * Version 2 (June 1991). See the "COPYING" file distributed with this software
11
 * for more info.
12
 */
13
 
14
 
15
#ifndef _DEV_TABLE_H_
16
#define _DEV_TABLE_H_
17
 
18
#include <linux/spinlock.h>
19
/*
20
 * Sound card numbers 27 to 999. (1 to 26 are defined in soundcard.h)
21
 * Numbers 1000 to N are reserved for driver's internal use.
22
 */
23
 
24
#define SNDCARD_DESKPROXL               27      /* Compaq Deskpro XL */
25
#define SNDCARD_VIDC                    28      /* ARMs VIDC */
26
#define SNDCARD_SBPNP                   29
27
#define SNDCARD_SOFTOSS                 36
28
#define SNDCARD_VMIDI                   37
29
#define SNDCARD_OPL3SA1                 38      /* Note: clash in msnd.h */
30
#define SNDCARD_OPL3SA1_SB              39
31
#define SNDCARD_OPL3SA1_MPU             40
32
#define SNDCARD_WAVEFRONT               41
33
#define SNDCARD_OPL3SA2                 42
34
#define SNDCARD_OPL3SA2_MPU             43
35
#define SNDCARD_WAVEARTIST              44      /* Waveartist */
36
#define SNDCARD_OPL3SA2_MSS             45      /* Originally missed */
37
#define SNDCARD_AD1816                  88
38
 
39
/*
40
 *      NOTE!   NOTE!   NOTE!   NOTE!
41
 *
42
 *      If you modify this file, please check the dev_table.c also.
43
 *
44
 *      NOTE!   NOTE!   NOTE!   NOTE!
45
 */
46
 
47
struct driver_info
48
{
49
        char *driver_id;
50
        int card_subtype;       /* Driver specific. Usually 0 */
51
        int card_type;          /*      From soundcard.h        */
52
        char *name;
53
        void (*attach) (struct address_info *hw_config);
54
        int (*probe) (struct address_info *hw_config);
55
        void (*unload) (struct address_info *hw_config);
56
};
57
 
58
struct card_info
59
{
60
        int card_type;  /* Link (search key) to the driver list */
61
        struct address_info config;
62
        int enabled;
63
        void *for_driver_use;
64
};
65
 
66
 
67
/*
68
 * Device specific parameters (used only by dmabuf.c)
69
 */
70
#define MAX_SUB_BUFFERS         (32*MAX_REALTIME_FACTOR)
71
 
72
#define DMODE_NONE              0
73
#define DMODE_OUTPUT            PCM_ENABLE_OUTPUT
74
#define DMODE_INPUT             PCM_ENABLE_INPUT
75
 
76
struct dma_buffparms
77
{
78
        int      dma_mode;      /* DMODE_INPUT, DMODE_OUTPUT or DMODE_NONE */
79
        int      closing;
80
 
81
        /*
82
         * Pointers to raw buffers
83
         */
84
 
85
        char     *raw_buf;
86
        unsigned long   raw_buf_phys;
87
        int buffsize;
88
 
89
        /*
90
         * Device state tables
91
         */
92
 
93
        unsigned long flags;
94
#define DMA_BUSY        0x00000001
95
#define DMA_RESTART     0x00000002
96
#define DMA_ACTIVE      0x00000004
97
#define DMA_STARTED     0x00000008
98
#define DMA_EMPTY       0x00000010      
99
#define DMA_ALLOC_DONE  0x00000020
100
#define DMA_SYNCING     0x00000040
101
#define DMA_DIRTY       0x00000080
102
#define DMA_POST        0x00000100
103
#define DMA_NODMA       0x00000200
104
#define DMA_NOTIMEOUT   0x00000400
105
 
106
        int      open_mode;
107
 
108
        /*
109
         * Queue parameters.
110
         */
111
        int      qlen;
112
        int      qhead;
113
        int      qtail;
114
        spinlock_t lock;
115
 
116
        int      cfrag; /* Current incomplete fragment (write) */
117
 
118
        int      nbufs;
119
        int      counts[MAX_SUB_BUFFERS];
120
        int      subdivision;
121
 
122
        int      fragment_size;
123
        int      needs_reorg;
124
        int      max_fragments;
125
 
126
        int      bytes_in_use;
127
 
128
        int      underrun_count;
129
        unsigned long    byte_counter;
130
        unsigned long    user_counter;
131
        unsigned long    max_byte_counter;
132
        int      data_rate; /* Bytes/second */
133
 
134
        int      mapping_flags;
135
#define                 DMA_MAP_MAPPED          0x00000001
136
        char    neutral_byte;
137
        int     dma;            /* DMA channel */
138
 
139
        int     applic_profile; /* Application profile (APF_*) */
140
        /* Interrupt callback stuff */
141
        void (*audio_callback) (int dev, int parm);
142
        int callback_parm;
143
 
144
        int      buf_flags[MAX_SUB_BUFFERS];
145
#define          BUFF_EOF               0x00000001 /* Increment eof count */
146
#define          BUFF_DIRTY             0x00000002 /* Buffer written */
147
};
148
 
149
/*
150
 * Structure for use with various microcontrollers and DSP processors
151
 * in the recent sound cards.
152
 */
153
typedef struct coproc_operations
154
{
155
        char name[64];
156
        struct module *owner;
157
        int (*open) (void *devc, int sub_device);
158
        void (*close) (void *devc, int sub_device);
159
        int (*ioctl) (void *devc, unsigned int cmd, void __user * arg, int local);
160
        void (*reset) (void *devc);
161
 
162
        void *devc;             /* Driver specific info */
163
} coproc_operations;
164
 
165
struct audio_driver
166
{
167
        struct module *owner;
168
        int (*open) (int dev, int mode);
169
        void (*close) (int dev);
170
        void (*output_block) (int dev, unsigned long buf,
171
                              int count, int intrflag);
172
        void (*start_input) (int dev, unsigned long buf,
173
                             int count, int intrflag);
174
        int (*ioctl) (int dev, unsigned int cmd, void __user * arg);
175
        int (*prepare_for_input) (int dev, int bufsize, int nbufs);
176
        int (*prepare_for_output) (int dev, int bufsize, int nbufs);
177
        void (*halt_io) (int dev);
178
        int (*local_qlen)(int dev);
179
        void (*copy_user) (int dev,
180
                        char *localbuf, int localoffs,
181
                        const char __user *userbuf, int useroffs,
182
                        int max_in, int max_out,
183
                        int *used, int *returned,
184
                        int len);
185
        void (*halt_input) (int dev);
186
        void (*halt_output) (int dev);
187
        void (*trigger) (int dev, int bits);
188
        int (*set_speed)(int dev, int speed);
189
        unsigned int (*set_bits)(int dev, unsigned int bits);
190
        short (*set_channels)(int dev, short channels);
191
        void (*postprocess_write)(int dev);     /* Device spesific postprocessing for written data */
192
        void (*preprocess_read)(int dev);       /* Device spesific preprocessing for read data */
193
        void (*mmap)(int dev);
194
};
195
 
196
struct audio_operations
197
{
198
        char name[128];
199
        int flags;
200
#define NOTHING_SPECIAL         0x00
201
#define NEEDS_RESTART           0x01
202
#define DMA_AUTOMODE            0x02
203
#define DMA_DUPLEX              0x04
204
#define DMA_PSEUDO_AUTOMODE     0x08
205
#define DMA_HARDSTOP            0x10
206
#define DMA_EXACT               0x40
207
#define DMA_NORESET             0x80
208
        int  format_mask;       /* Bitmask for supported audio formats */
209
        void *devc;             /* Driver specific info */
210
        struct audio_driver *d;
211
        void *portc;            /* Driver specific info */
212
        struct dma_buffparms *dmap_in, *dmap_out;
213
        struct coproc_operations *coproc;
214
        int mixer_dev;
215
        int enable_bits;
216
        int open_mode;
217
        int go;
218
        int min_fragment;       /* 0 == unlimited */
219
        int max_fragment;       /* 0 == unlimited */
220
        int parent_dev;         /* 0 -> no parent, 1 to n -> parent=parent_dev+1 */
221
 
222
        /* fields formerly in dmabuf.c */
223
        wait_queue_head_t in_sleeper;
224
        wait_queue_head_t out_sleeper;
225
        wait_queue_head_t poll_sleeper;
226
 
227
        /* fields formerly in audio.c */
228
        int audio_mode;
229
 
230
#define         AM_NONE         0
231
#define         AM_WRITE        OPEN_WRITE
232
#define         AM_READ         OPEN_READ
233
 
234
        int local_format;
235
        int audio_format;
236
        int local_conversion;
237
#define CNV_MU_LAW      0x00000001
238
 
239
        /* large structures at the end to keep offsets small */
240
        struct dma_buffparms dmaps[2];
241
};
242
 
243
int *load_mixer_volumes(char *name, int *levels, int present);
244
 
245
struct mixer_operations
246
{
247
        struct module *owner;
248
        char id[16];
249
        char name[64];
250
        int (*ioctl) (int dev, unsigned int cmd, void __user * arg);
251
 
252
        void *devc;
253
        int modify_counter;
254
};
255
 
256
struct synth_operations
257
{
258
        struct module *owner;
259
        char *id;       /* Unique identifier (ASCII) max 29 char */
260
        struct synth_info *info;
261
        int midi_dev;
262
        int synth_type;
263
        int synth_subtype;
264
 
265
        int (*open) (int dev, int mode);
266
        void (*close) (int dev);
267
        int (*ioctl) (int dev, unsigned int cmd, void __user * arg);
268
        int (*kill_note) (int dev, int voice, int note, int velocity);
269
        int (*start_note) (int dev, int voice, int note, int velocity);
270
        int (*set_instr) (int dev, int voice, int instr);
271
        void (*reset) (int dev);
272
        void (*hw_control) (int dev, unsigned char *event);
273
        int (*load_patch) (int dev, int format, const char __user *addr,
274
             int offs, int count, int pmgr_flag);
275
        void (*aftertouch) (int dev, int voice, int pressure);
276
        void (*controller) (int dev, int voice, int ctrl_num, int value);
277
        void (*panning) (int dev, int voice, int value);
278
        void (*volume_method) (int dev, int mode);
279
        void (*bender) (int dev, int chn, int value);
280
        int (*alloc_voice) (int dev, int chn, int note, struct voice_alloc_info *alloc);
281
        void (*setup_voice) (int dev, int voice, int chn);
282
        int (*send_sysex)(int dev, unsigned char *bytes, int len);
283
 
284
        struct voice_alloc_info alloc;
285
        struct channel_info chn_info[16];
286
        int emulation;
287
#define EMU_GM                  1       /* General MIDI */
288
#define EMU_XG                  2       /* Yamaha XG */
289
#define MAX_SYSEX_BUF   64
290
        unsigned char sysex_buf[MAX_SYSEX_BUF];
291
        int sysex_ptr;
292
};
293
 
294
struct midi_input_info
295
{
296
        /* MIDI input scanner variables */
297
#define MI_MAX  10
298
        volatile int             m_busy;
299
        unsigned char   m_buf[MI_MAX];
300
        unsigned char   m_prev_status;  /* For running status */
301
        int             m_ptr;
302
#define MST_INIT                        0
303
#define MST_DATA                        1
304
#define MST_SYSEX                       2
305
        int             m_state;
306
        int             m_left;
307
};
308
 
309
struct midi_operations
310
{
311
        struct module *owner;
312
        struct midi_info info;
313
        struct synth_operations *converter;
314
        struct midi_input_info in_info;
315
        int (*open) (int dev, int mode,
316
                void (*inputintr)(int dev, unsigned char data),
317
                void (*outputintr)(int dev)
318
                );
319
        void (*close) (int dev);
320
        int (*ioctl) (int dev, unsigned int cmd, void __user * arg);
321
        int (*outputc) (int dev, unsigned char data);
322
        int (*start_read) (int dev);
323
        int (*end_read) (int dev);
324
        void (*kick)(int dev);
325
        int (*command) (int dev, unsigned char *data);
326
        int (*buffer_status) (int dev);
327
        int (*prefix_cmd) (int dev, unsigned char status);
328
        struct coproc_operations *coproc;
329
        void *devc;
330
};
331
 
332
struct sound_lowlev_timer
333
{
334
        int dev;
335
        int priority;
336
        unsigned int (*tmr_start)(int dev, unsigned int usecs);
337
        void (*tmr_disable)(int dev);
338
        void (*tmr_restart)(int dev);
339
};
340
 
341
struct sound_timer_operations
342
{
343
        struct module *owner;
344
        struct sound_timer_info info;
345
        int priority;
346
        int devlink;
347
        int (*open)(int dev, int mode);
348
        void (*close)(int dev);
349
        int (*event)(int dev, unsigned char *ev);
350
        unsigned long (*get_time)(int dev);
351
        int (*ioctl) (int dev, unsigned int cmd, void __user * arg);
352
        void (*arm_timer)(int dev, long time);
353
};
354
 
355
extern struct sound_timer_operations default_sound_timer;
356
 
357
extern struct audio_operations *audio_devs[MAX_AUDIO_DEV];
358
extern int num_audiodevs;
359
extern struct mixer_operations *mixer_devs[MAX_MIXER_DEV];
360
extern int num_mixers;
361
extern struct synth_operations *synth_devs[MAX_SYNTH_DEV+MAX_MIDI_DEV];
362
extern int num_synths;
363
extern struct midi_operations *midi_devs[MAX_MIDI_DEV];
364
extern int num_midis;
365
extern struct sound_timer_operations * sound_timer_devs[MAX_TIMER_DEV];
366
extern int num_sound_timers;
367
 
368
extern int sound_map_buffer (int dev, struct dma_buffparms *dmap, buffmem_desc *info);
369
void sound_timer_init (struct sound_lowlev_timer *t, char *name);
370
void sound_dma_intr (int dev, struct dma_buffparms *dmap, int chan);
371
 
372
#define AUDIO_DRIVER_VERSION    2
373
#define MIXER_DRIVER_VERSION    2
374
int sound_install_audiodrv(int vers, char *name, struct audio_driver *driver,
375
                        int driver_size, int flags, unsigned int format_mask,
376
                        void *devc, int dma1, int dma2);
377
int sound_install_mixer(int vers, char *name, struct mixer_operations *driver,
378
                        int driver_size, void *devc);
379
 
380
void sound_unload_audiodev(int dev);
381
void sound_unload_mixerdev(int dev);
382
void sound_unload_mididev(int dev);
383
void sound_unload_synthdev(int dev);
384
void sound_unload_timerdev(int dev);
385
int sound_alloc_mixerdev(void);
386
int sound_alloc_timerdev(void);
387
int sound_alloc_synthdev(void);
388
int sound_alloc_mididev(void);
389
#endif  /* _DEV_TABLE_H_ */
390
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.