1#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
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
32
33#define MDL_NONE 0
34#define MDL_SB1 1
35#define MDL_SB2 2
36#define MDL_SB201 3
37#define MDL_SBPRO 4
38#define MDL_SB16 5
39#define MDL_SBPNP 6
40#define MDL_JAZZ 10
41#define MDL_SMW 11
42#define MDL_ESS 12
43#define MDL_AZTECH 13
44#define MDL_ES1868MIDI 14
45#define MDL_AEDSP 15
46#define MDL_ESSPCI 16
47#define MDL_YMPCI 17
48
49#define SUBMDL_ALS007 42
50
51#define SUBMDL_ALS100 43
52
53
54
55
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
61#define SB_MIDI_ONLY (SB_NO_AUDIO|SB_NO_MIXER)
62#define SB_PCI_IRQ 0x00000010
63
64struct mixer_def {
65 unsigned int regno: 8;
66 unsigned int bitoffs:4;
67 unsigned int nbits:4;
68};
69
70typedef struct mixer_def mixer_tab[32][2];
71typedef struct mixer_def mixer_ent;
72
73struct sb_module_options
74{
75 int esstype;
76 int acer;
77 int sm_games;
78};
79
80typedef struct sb_devc {
81 int dev;
82
83
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
93 int base;
94 int irq;
95 int dma8, dma16;
96
97 int pcibase;
98
99
100 int opened;
101
102 int fullduplex;
103 int duplex;
104 int speed, bits, channels;
105 volatile int irq_ok;
106 volatile int intr_active, irq_mode;
107
108 volatile int intr_active_16, irq_mode_16;
109
110
111 int *levels;
112 mixer_tab *iomap;
113 size_t iomap_sz;
114 int mixer_caps, recmask, outmask, supported_devices;
115 int supported_rec_devices, supported_out_devices;
116 int my_mixerdev;
117 int sbmixnum;
118
119
120 unsigned long trg_buf;
121 int trigger_bits;
122 int trg_bytes;
123 int trg_intrflag;
124 int trg_restart;
125
126 unsigned long trg_buf_16;
127 int trigger_bits_16;
128 int trg_bytes_16;
129 int trg_intrflag_16;
130 int trg_restart_16;
131
132 unsigned char tconst;
133
134
135 int my_mididev;
136 int input_opened;
137 int midi_broken;
138 void (*midi_input_intr) (int dev, unsigned char data);
139 void *midi_irq_cookie;
140
141 spinlock_t lock;
142
143 struct sb_module_options sbmo;
144
145 } sb_devc;
146
147
148
149
150
151#define SB_PCI_ESSMAESTRO 1
152#define SB_PCI_YAMAHA 2
153
154
155
156
157
158int sb_dsp_command (sb_devc *devc, unsigned char val);
159int sb_dsp_get_byte(sb_devc * devc);
160int sb_dsp_reset (sb_devc *devc);
161void sb_setmixer (sb_devc *devc, unsigned int port, unsigned int value);
162unsigned int sb_getmixer (sb_devc *devc, unsigned int port);
163int sb_dsp_detect (struct address_info *hw_config, int pci, int pciio, struct sb_module_options *sbmo);
164int sb_dsp_init (struct address_info *hw_config, struct module *owner);
165void sb_dsp_unload(struct address_info *hw_config, int sbmpu);
166int sb_mixer_init(sb_devc *devc, struct module *owner);
167void sb_mixer_unload(sb_devc *devc);
168void sb_mixer_set_stereo (sb_devc *devc, int mode);
169void smw_mixer_init(sb_devc *devc);
170void sb_dsp_midi_init (sb_devc *devc, struct module *owner);
171void sb_audio_init (sb_devc *devc, char *name, struct module *owner);
172void sb_midi_interrupt (sb_devc *devc);
173void sb_chgmixer (sb_devc * devc, unsigned int reg, unsigned int mask, unsigned int val);
174int sb_common_mixer_set(sb_devc * devc, int dev, int left, int right);
175
176int sb_audio_open(int dev, int mode);
177void sb_audio_close(int dev);
178
179
180void sb_dsp_disable_midi(int port);
181int probe_sbmpu (struct address_info *hw_config, struct module *owner);
182void unload_sbmpu (struct address_info *hw_config);
183
184void unload_sb16(struct address_info *hw_info);
185void unload_sb16midi(struct address_info *hw_info);
186