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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [drivers/] [sound/] [sb.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#define DSP_RESET       (devc->base + 0x6)
2
#define DSP_READ        (devc->base + 0xA)
3
#define DSP_WRITE       (devc->base + 0xC)
4
#define DSP_COMMAND     (devc->base + 0xC)
5
#define DSP_STATUS      (devc->base + 0xC)
6
#define DSP_DATA_AVAIL  (devc->base + 0xE)
7
#define DSP_DATA_AVL16  (devc->base + 0xF)
8
#define MIXER_ADDR      (devc->base + 0x4)
9
#define MIXER_DATA      (devc->base + 0x5)
10
#define OPL3_LEFT       (devc->base + 0x0)
11
#define OPL3_RIGHT      (devc->base + 0x2)
12
#define OPL3_BOTH       (devc->base + 0x8)
13
/* DSP Commands */
14
 
15
#define DSP_CMD_SPKON           0xD1
16
#define DSP_CMD_SPKOFF          0xD3
17
#define DSP_CMD_DMAON           0xD0
18
#define DSP_CMD_DMAOFF          0xD4
19
 
20
#define IMODE_NONE              0
21
#define IMODE_OUTPUT            PCM_ENABLE_OUTPUT
22
#define IMODE_INPUT             PCM_ENABLE_INPUT
23
#define IMODE_INIT              3
24
#define IMODE_MIDI              4
25
 
26
#define NORMAL_MIDI     0
27
#define UART_MIDI       1
28
 
29
 
30
/*
31
 * Device models
32
 */
33
#define MDL_NONE        0
34
#define MDL_SB1         1       /* SB1.0 or 1.5 */
35
#define MDL_SB2         2       /* SB2.0 */
36
#define MDL_SB201       3       /* SB2.01 */
37
#define MDL_SBPRO       4       /* SB Pro */
38
#define MDL_SB16        5       /* SB16/32/AWE */
39
#define MDL_SBPNP       6       /* SB16/32/AWE PnP */
40
#define MDL_JAZZ        10      /* Media Vision Jazz16 */
41
#define MDL_SMW         11      /* Logitech SoundMan Wave (Jazz16) */
42
#define MDL_ESS         12      /* ESS ES688 and ES1688 */
43
#define MDL_AZTECH      13      /* Aztech Sound Galaxy family */
44
#define MDL_ES1868MIDI  14      /* MIDI port of ESS1868 */
45
#define MDL_AEDSP       15      /* Audio Excel DSP 16 */
46
#define MDL_ESSPCI      16      /* ESS PCI card */
47
#define MDL_YMPCI       17      /* Yamaha PCI sb in emulation */
48
 
49
#define SUBMDL_ALS007   42      /* ALS-007 differs from SB16 only in mixer */
50
                                /* register assignment */
51
#define SUBMDL_ALS100   43      /* ALS-100 allows sampling rates of up */
52
                                /* to 48kHz */
53
 
54
/*
55
 * Config flags
56
 */
57
#define SB_NO_MIDI      0x00000001
58
#define SB_NO_MIXER     0x00000002
59
#define SB_NO_AUDIO     0x00000004
60
#define SB_NO_RECORDING 0x00000008 /* No audio recording */
61
#define SB_MIDI_ONLY    (SB_NO_AUDIO|SB_NO_MIXER)
62
#define SB_PCI_IRQ      0x00000010 /* PCI shared IRQ */
63
 
64
struct mixer_def {
65
        unsigned int regno: 8;
66
        unsigned int bitoffs:4;
67
        unsigned int nbits:4;
68
};
69
 
70
typedef struct mixer_def mixer_tab[32][2];
71
typedef struct mixer_def mixer_ent;
72
 
73
struct sb_module_options
74
{
75
        int  esstype;   /* ESS chip type */
76
        int  acer;      /* Do acer notebook init? */
77
        int  sm_games;  /* Logitech soundman games? */
78
};
79
 
80
typedef struct sb_devc {
81
           int dev;
82
 
83
        /* Hardware parameters */
84
           int *osp;
85
           int minor, major;
86
           int type;
87
           int model, submodel;
88
           int caps;
89
#       define SBCAP_STEREO     0x00000001
90
#       define SBCAP_16BITS     0x00000002
91
 
92
        /* Hardware resources */
93
           int base;
94
           int irq;
95
           int dma8, dma16;
96
 
97
           int pcibase;         /* For ESS Maestro etc */
98
 
99
        /* State variables */
100
           int opened;
101
        /* new audio fields for full duplex support */
102
           int fullduplex;
103
           int duplex;
104
           int speed, bits, channels;
105
           volatile int irq_ok;
106
           volatile int intr_active, irq_mode;
107
        /* duplicate audio fields for full duplex support */
108
           volatile int intr_active_16, irq_mode_16;
109
 
110
        /* Mixer fields */
111
           int *levels;
112
           mixer_tab *iomap;
113
           int mixer_caps, recmask, outmask, supported_devices;
114
           int supported_rec_devices, supported_out_devices;
115
           int my_mixerdev;
116
           int sbmixnum;
117
 
118
        /* Audio fields */
119
           unsigned long trg_buf;
120
           int      trigger_bits;
121
           int      trg_bytes;
122
           int      trg_intrflag;
123
           int      trg_restart;
124
        /* duplicate audio fields for full duplex support */
125
           unsigned long trg_buf_16;
126
           int      trigger_bits_16;
127
           int      trg_bytes_16;
128
           int      trg_intrflag_16;
129
           int      trg_restart_16;
130
 
131
           unsigned char tconst;
132
 
133
        /* MIDI fields */
134
           int my_mididev;
135
           int input_opened;
136
           int midi_broken;
137
           void (*midi_input_intr) (int dev, unsigned char data);
138
           void *midi_irq_cookie;               /* IRQ cookie for the midi */
139
 
140
           spinlock_t lock;
141
 
142
           struct sb_module_options sbmo;       /* Module options */
143
 
144
        } sb_devc;
145
 
146
/*
147
 *      PCI card types
148
 */
149
 
150
#define SB_PCI_ESSMAESTRO       1       /* ESS Maestro Legacy */
151
#define SB_PCI_YAMAHA           2       /* Yamaha Legacy */
152
 
153
/*
154
 *      Functions
155
 */
156
 
157
int sb_dsp_command (sb_devc *devc, unsigned char val);
158
int sb_dsp_get_byte(sb_devc * devc);
159
int sb_dsp_reset (sb_devc *devc);
160
void sb_setmixer (sb_devc *devc, unsigned int port, unsigned int value);
161
unsigned int sb_getmixer (sb_devc *devc, unsigned int port);
162
int sb_dsp_detect (struct address_info *hw_config, int pci, int pciio, struct sb_module_options *sbmo);
163
int sb_dsp_init (struct address_info *hw_config, struct module *owner);
164
void sb_dsp_unload(struct address_info *hw_config, int sbmpu);
165
int sb_mixer_init(sb_devc *devc, struct module *owner);
166
void sb_mixer_unload(sb_devc *devc);
167
void sb_mixer_set_stereo (sb_devc *devc, int mode);
168
void smw_mixer_init(sb_devc *devc);
169
void sb_dsp_midi_init (sb_devc *devc, struct module *owner);
170
void sb_audio_init (sb_devc *devc, char *name, struct module *owner);
171
void sb_midi_interrupt (sb_devc *devc);
172
void sb_chgmixer (sb_devc * devc, unsigned int reg, unsigned int mask, unsigned int val);
173
int sb_common_mixer_set(sb_devc * devc, int dev, int left, int right);
174
 
175
int sb_audio_open(int dev, int mode);
176
void sb_audio_close(int dev);
177
 
178
extern sb_devc *last_sb;
179
 
180
/*      From sb_common.c */
181
void sb_dsp_disable_midi(int port);
182
void sb_dsp_disable_recording(int port);
183
int probe_sbmpu (struct address_info *hw_config, struct module *owner);
184
void unload_sbmpu (struct address_info *hw_config);
185
 
186
void unload_sb16(struct address_info *hw_info);
187
void unload_sb16midi(struct address_info *hw_info);

powered by: WebSVN 2.1.0

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