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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 #define SBP_LFM_STATUS 0
63 #define SBP_LFM_ADDR 0
64 #define SBP_LFM_DATA 1
65 #define SBP_RFM_STATUS 2
66 #define SBP_RFM_ADDR 2
67 #define SBP_RFM_DATA 3
68
69 #define SBP_FM_STATUS 8
70 #define SBP_FM_ADDR 8
71 #define SBP_FM_DATA 9
72 #define SBP_MIXER_ADDR 4
73 #define SBP_MIXER_DATA 5
74
75 #define SBP_MIX_RESET 0x00
76 #define SBP_1335_MASTER_VOL 0x02
77 #define SBP_1335_MIDI_VOL 0x06
78 #define SBP_1335_CD_VOL 0x08
79 #define SBP_1335_VOICE_VOL 0x0A
80
81 #define SBP_VOICE_VOL 0x04
82 #define SBP_MIC_VOL 0x0A
83 #define SBP_MASTER_VOL 0x22
84 #define SBP_MIDI_VOL 0x26
85 #define SBP_CD_VOL 0x28
86 #define SBP_LINE_VOL 0x2E
87
88 #define SBP_RECORD_SOURCE 0x0C
89 #define SBP_STEREO 0x0E
90 #define SBP_PLAYMODE_STEREO 0x2
91 #define SBP_PLAYMODE_MONO 0x0
92 #define SBP_PLAYMODE_MASK 0x2
93 #define SBP_OUTFILTER 0x0E
94 #define SBP_INFILTER 0x0C
95
96 #define SBP_RECORD_FROM(src, filteron, high) ((src) | (filteron) | (high))
97 #define SBP_FILTER_ON 0x0
98 #define SBP_FILTER_OFF 0x20
99 #define SBP_IFILTER_MASK 0x28
100 #define SBP_OFILTER_MASK 0x20
101 #define SBP_IFILTER_LOW 0
102 #define SBP_IFILTER_HIGH 0x08
103 #define SBP_FROM_MIC 0x00
104 #define SBP_FROM_CD 0x02
105 #define SBP_FROM_LINE 0x06
106
107 #define SBP_SET_IRQ 0x80
108 #define SBP_SET_DRQ 0x81
109 #define SBP_IRQ_STATUS 0x82
110 #define SBP_IRQ_MPU401 0x04
111 #define SBP_IRQ_DMA16 0x02
112 #define SBP_IRQ_DMA8 0x01
113
114 #define SB16P_MASTER_L 0x30
115 #define SB16P_VOICE_L 0x32
116 #define SB16P_MIDI_L 0x34
117 #define SB16P_CD_L 0x36
118 #define SB16P_LINE_L 0x38
119 #define SB16P_MIC_L 0x3a
120 #define SB16P_PCSPEAKER 0x3b
121 #define SB16P_OSWITCH 0x3c
122 #define SB16P_ISWITCH_L 0x3d
123 #define SB16P_ISWITCH_R 0x3e
124 #define SB16P_SW_MIC 0x01
125 #define SB16P_SW_CD_R 0x02
126 #define SB16P_SW_CD_L 0x04
127 #define SB16P_SW_CD (SB16P_SW_CD_L|SB16P_SW_CD_R)
128 #define SB16P_SW_LINE_R 0x08
129 #define SB16P_SW_LINE_L 0x10
130 #define SB16P_SW_LINE (SB16P_SW_LINE_L|SB16P_SW_LINE_R)
131 #define SB16P_SW_MIDI_R 0x20
132 #define SB16P_SW_MIDI_L 0x40
133 #define SB16P_SW_MIDI (SB16P_SW_MIDI_L|SB16P_SW_MIDI_R)
134 #define SB16P_INPUT_GAIN_L 0x3f
135 #define SB16P_OUTPUT_GAIN_L 0x41
136 #define SB16P_TREBLE_L 0x44
137 #define SB16P_BASS_L 0x46
138 #define SB16P_L_TO_R(l) ((l)+1)
139
140 #define SB16P_AGC 0x43
141
142 #define SBP_RECORD_SOURCE_L 0x3d
143 #define SBP_RECORD_SOURCE_R 0x3e
144 #define SBP_MIDI_SRC_R 0x20
145 #define SBP_LINE_SRC_R 0x08
146 #define SBP_CD_SRC_R 0x02
147 #define SBP_MIC_SRC 0x01
148 #define SB_SRC_R_TO_L(x) ((x) << 1)
149
150 #define SB_STEREO_GAIN(left, right) ((left) | ((right) >> 4))
151 #define SB_MIC_GAIN(v) ((v) >> 5)
152
153 #define SB_ADJUST_MIC_GAIN(sc, x) sbdsp_adjust((x), ISSB16CLASS(sc) ? 0xf8 : 0xc0)
154 #define SB_ADJUST_GAIN(sc, x) sbdsp_adjust((x), ISSB16CLASS(sc) ? 0xf8 : 0xe0)
155 #define SB_ADJUST_2_GAIN(sc, x) sbdsp_adjust((x), 0xc0)
156
157 #define SB_1335_GAIN(x) ((x) >> 4)
158 #define SB_1335_MASTER_GAIN(x) ((x) >> 5)
159
160 #define SBP_DSP_RESET 6
161 #define SB_MAGIC 0xaa
162 #define SBP_DSP_READ 10
163 #define SBP_DSP_WRITE 12
164 #define SBP_DSP_WSTAT 12
165 #define SBP_DSP_RSTAT 14
166 #define SB_DSP_BUSY 0x80
167 #define SB_DSP_READY 0x80
168 #define SBP_DSP_IRQACK8 14
169 #define SBP_DSP_IRQACK16 15
170 #define SBP_CDROM_DATA 16
171 #define SBP_CDROM_STATUS 17
172 #define SBP_CDROM_RESET 18
173 #define SBP_CDROM_ENABLE 19
174
175 #define SBP_NPORT 24
176 #define SB_NPORT 16
177
178
179
180
181
182
183
184
185
186
187 #define SB_DSP_DACWRITE 0x10
188 #define SB_DSP_WDMA 0x14
189 #define SB_DSP_WDMA_2 0x16
190 #define SB_DSP_WDMA_LOOP 0x1C
191 #define SB_DSP_ADCREAD 0x20
192 #define SB_DSP_RDMA 0x24
193 #define SB_DSP_RDMA_LOOP 0x2C
194 #define SB_MIDI_POLL 0x30
195 #define SB_MIDI_READ 0x31
196 #define SB_MIDI_UART_POLL 0x34
197 #define SB_MIDI_UART_INTR 0x35
198 #define SB_MIDI_WRITE 0x38
199 #define SB_DSP_TIMECONST 0x40
200 #define SB_DSP16_OUTPUTRATE 0x41
201 #define SB_DSP16_INPUTRATE 0x42
202 #define SB_DSP_BLOCKSIZE 0x48
203 #define SB_DSP_WDMA_4 0x74
204 #define SB_DSP_WDMA_2_6 0x76
205 #define SB_DSP_SILENCE 0x80
206 #define SB_DSP_HS_OUTPUT 0x90
207 #define SB_DSP_HS_INPUT 0x98
208 #define SB_DSP_RECORD_MONO 0xA0
209 #define SB_DSP_RECORD_STEREO 0xA8
210 #define SB_DSP16_WDMA_16 0xB6
211 #define SB_DSP16_RDMA_16 0xBE
212 #define SB_DSP16_WDMA_8 0xC6
213 #define SB_DSP16_RDMA_8 0xCE
214 #define SB_DSP_HALT 0xd0
215 #define SB_DSP_SPKR_ON 0xd1
216 #define SB_DSP_SPKR_OFF 0xd3
217 #define SB_DSP_CONT 0xd4
218 #define SB_DSP_RD_SPKR 0xd8
219 #define SB_SPKR_OFF 0x00
220 #define SB_SPKR_ON 0xff
221 #define SB_DSP_VERSION 0xe1
222
223 #define SB_BMODE_UNSIGNED 0x00
224 #define SB_BMODE_SIGNED 0x10
225 #define SB_BMODE_STEREO 0x20
226
227
228
229 #define JAZZ16_READ_VER 0xFA
230 #define JAZZ16_VER_JAZZ 0x12
231 #define JAZZ16_SET_DMAINTR 0xFB
232
233 #define JAZZ16_CONFIG_PORT 0x201
234 #define JAZZ16_WAKEUP 0xAF
235 #define JAZZ16_SETBASE 0x50
236
237 #define JAZZ16_RECORD_STEREO 0xAC
238 #define JAZZ16_RECORD_MONO 0xA4
239
240
241
242
243
244
245 #define JAZZ16_DIR_PB 0x10
246 #define JAZZ16_SINGLE_PB 0x14
247 #define JAZZ16_SINGLE_ALAW_PB 0x17
248 #define JAZZ16_CONT_PB 0x1C
249 #define JAZZ16_CONT_ALAW_PB 0x1F
250 #define JAZZ16_DIR_PCM_REC 0x20
251 #define JAZZ16_SINGLE_REC 0x24
252 #define JAZZ16_SINGLE_ALAW_REC 0x27
253 #define JAZZ16_CONT_REC 0x2C
254 #define JAZZ16_CONT_ALAW_REC 0x2F
255 #define JAZZ16_SINGLE_ADPCM_PB 0x74
256 #define JAZZ16_SINGLE_MULAW_PB 0x77
257 #define JAZZ16_CONT_ADPCM_PB 0x7C
258 #define JAZZ16_SINGLE_ADPCM_REC 0x84
259 #define JAZZ16_SINGLE_MULAW_REC 0x87
260 #define JAZZ16_CONT_ADPCM_REC 0x8C
261 #define JAZZ16_CONT_MULAW_REC 0x8F
262 #define JAZZ16_CONT_PB_XX 0x90
263 #define JAZZ16_SINGLE_PB_XX 0x91
264 #define JAZZ16_SINGLE_REC_XX 0x98
265 #define JAZZ16_CONT_REC_XX 0x99
266
267
268
269
270
271
272
273
274
275 #define SB_DSP_REFERENCE 1
276
277
278
279
280 #define SBP_IRQ_VALID(irq) ((irq) == 5 || (irq) == 7 || (irq) == 9 || (irq) == 10)
281 #define SB_IRQ_VALID(irq) ((irq) == 3 || (irq) == 5 || (irq) == 7 || (irq) == 9)
282
283 #define SB16_DRQ_VALID(chan) ((chan) == 0 || (chan) == 1 || (chan) == 3 || \
284 (chan) == 5 || (chan) == 6 || (chan) == 7)
285 #define SBP_DRQ_VALID(chan) ((chan) == 0 || (chan) == 1 || (chan) == 3)
286 #define SB_DRQ_VALID(chan) ((chan) == 1)
287
288 #define SB_BASE_VALID(base) ((base) == 0x220 || (base) == 0x240)
289
290 #define SB_INPUT_RATE 0
291 #define SB_OUTPUT_RATE 1
292