Commit b0ec3a30bc01c15cc6277b223fae136f7b71e90c
Committed by
Takashi Iwai
1 parent
0cfcdedadd
Exists in
master
and in
39 other branches
ALSA: sc6000: enable joystick port
Add module parameter to enable or disable joystick port (gameport) on the SC6600 and later cards. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Showing 2 changed files with 10 additions and 3 deletions Inline Diff
Documentation/sound/alsa/ALSA-Configuration.txt
1 | 1 | ||
2 | Advanced Linux Sound Architecture - Driver | 2 | Advanced Linux Sound Architecture - Driver |
3 | ========================================== | 3 | ========================================== |
4 | Configuration guide | 4 | Configuration guide |
5 | 5 | ||
6 | 6 | ||
7 | Kernel Configuration | 7 | Kernel Configuration |
8 | ==================== | 8 | ==================== |
9 | 9 | ||
10 | To enable ALSA support you need at least to build the kernel with | 10 | To enable ALSA support you need at least to build the kernel with |
11 | primary sound card support (CONFIG_SOUND). Since ALSA can emulate OSS, | 11 | primary sound card support (CONFIG_SOUND). Since ALSA can emulate OSS, |
12 | you don't have to choose any of the OSS modules. | 12 | you don't have to choose any of the OSS modules. |
13 | 13 | ||
14 | Enable "OSS API emulation" (CONFIG_SND_OSSEMUL) and both OSS mixer and | 14 | Enable "OSS API emulation" (CONFIG_SND_OSSEMUL) and both OSS mixer and |
15 | PCM supports if you want to run OSS applications with ALSA. | 15 | PCM supports if you want to run OSS applications with ALSA. |
16 | 16 | ||
17 | If you want to support the WaveTable functionality on cards such as | 17 | If you want to support the WaveTable functionality on cards such as |
18 | SB Live! then you need to enable "Sequencer support" | 18 | SB Live! then you need to enable "Sequencer support" |
19 | (CONFIG_SND_SEQUENCER). | 19 | (CONFIG_SND_SEQUENCER). |
20 | 20 | ||
21 | To make ALSA debug messages more verbose, enable the "Verbose printk" | 21 | To make ALSA debug messages more verbose, enable the "Verbose printk" |
22 | and "Debug" options. To check for memory leaks, turn on "Debug memory" | 22 | and "Debug" options. To check for memory leaks, turn on "Debug memory" |
23 | too. "Debug detection" will add checks for the detection of cards. | 23 | too. "Debug detection" will add checks for the detection of cards. |
24 | 24 | ||
25 | Please note that all the ALSA ISA drivers support the Linux isapnp API | 25 | Please note that all the ALSA ISA drivers support the Linux isapnp API |
26 | (if the card supports ISA PnP). You don't need to configure the cards | 26 | (if the card supports ISA PnP). You don't need to configure the cards |
27 | using isapnptools. | 27 | using isapnptools. |
28 | 28 | ||
29 | 29 | ||
30 | Creating ALSA devices | 30 | Creating ALSA devices |
31 | ===================== | 31 | ===================== |
32 | 32 | ||
33 | This depends on your distribution, but normally you use the /dev/MAKEDEV | 33 | This depends on your distribution, but normally you use the /dev/MAKEDEV |
34 | script to create the necessary device nodes. On some systems you use a | 34 | script to create the necessary device nodes. On some systems you use a |
35 | script named 'snddevices'. | 35 | script named 'snddevices'. |
36 | 36 | ||
37 | 37 | ||
38 | Module parameters | 38 | Module parameters |
39 | ================= | 39 | ================= |
40 | 40 | ||
41 | The user can load modules with options. If the module supports more than | 41 | The user can load modules with options. If the module supports more than |
42 | one card and you have more than one card of the same type then you can | 42 | one card and you have more than one card of the same type then you can |
43 | specify multiple values for the option separated by commas. | 43 | specify multiple values for the option separated by commas. |
44 | 44 | ||
45 | Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | 45 | Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. |
46 | 46 | ||
47 | Module snd | 47 | Module snd |
48 | ---------- | 48 | ---------- |
49 | 49 | ||
50 | The core ALSA module. It is used by all ALSA card drivers. | 50 | The core ALSA module. It is used by all ALSA card drivers. |
51 | It takes the following options which have global effects. | 51 | It takes the following options which have global effects. |
52 | 52 | ||
53 | major - major number for sound driver | 53 | major - major number for sound driver |
54 | - Default: 116 | 54 | - Default: 116 |
55 | cards_limit | 55 | cards_limit |
56 | - limiting card index for auto-loading (1-8) | 56 | - limiting card index for auto-loading (1-8) |
57 | - Default: 1 | 57 | - Default: 1 |
58 | - For auto-loading more than one card, specify this | 58 | - For auto-loading more than one card, specify this |
59 | option together with snd-card-X aliases. | 59 | option together with snd-card-X aliases. |
60 | slots - Reserve the slot index for the given driver. | 60 | slots - Reserve the slot index for the given driver. |
61 | This option takes multiple strings. | 61 | This option takes multiple strings. |
62 | See "Module Autoloading Support" section for details. | 62 | See "Module Autoloading Support" section for details. |
63 | 63 | ||
64 | Module snd-pcm-oss | 64 | Module snd-pcm-oss |
65 | ------------------ | 65 | ------------------ |
66 | 66 | ||
67 | The PCM OSS emulation module. | 67 | The PCM OSS emulation module. |
68 | This module takes options which change the mapping of devices. | 68 | This module takes options which change the mapping of devices. |
69 | 69 | ||
70 | dsp_map - PCM device number maps assigned to the 1st OSS device. | 70 | dsp_map - PCM device number maps assigned to the 1st OSS device. |
71 | - Default: 0 | 71 | - Default: 0 |
72 | adsp_map - PCM device number maps assigned to the 2st OSS device. | 72 | adsp_map - PCM device number maps assigned to the 2st OSS device. |
73 | - Default: 1 | 73 | - Default: 1 |
74 | nonblock_open | 74 | nonblock_open |
75 | - Don't block opening busy PCM devices. Default: 1 | 75 | - Don't block opening busy PCM devices. Default: 1 |
76 | 76 | ||
77 | For example, when dsp_map=2, /dev/dsp will be mapped to PCM #2 of | 77 | For example, when dsp_map=2, /dev/dsp will be mapped to PCM #2 of |
78 | the card #0. Similarly, when adsp_map=0, /dev/adsp will be mapped | 78 | the card #0. Similarly, when adsp_map=0, /dev/adsp will be mapped |
79 | to PCM #0 of the card #0. | 79 | to PCM #0 of the card #0. |
80 | For changing the second or later card, specify the option with | 80 | For changing the second or later card, specify the option with |
81 | commas, such like "dsp_map=0,1". | 81 | commas, such like "dsp_map=0,1". |
82 | 82 | ||
83 | nonblock_open option is used to change the behavior of the PCM | 83 | nonblock_open option is used to change the behavior of the PCM |
84 | regarding opening the device. When this option is non-zero, | 84 | regarding opening the device. When this option is non-zero, |
85 | opening a busy OSS PCM device won't be blocked but return | 85 | opening a busy OSS PCM device won't be blocked but return |
86 | immediately with EAGAIN (just like O_NONBLOCK flag). | 86 | immediately with EAGAIN (just like O_NONBLOCK flag). |
87 | 87 | ||
88 | Module snd-rawmidi | 88 | Module snd-rawmidi |
89 | ------------------ | 89 | ------------------ |
90 | 90 | ||
91 | This module takes options which change the mapping of devices. | 91 | This module takes options which change the mapping of devices. |
92 | similar to those of the snd-pcm-oss module. | 92 | similar to those of the snd-pcm-oss module. |
93 | 93 | ||
94 | midi_map - MIDI device number maps assigned to the 1st OSS device. | 94 | midi_map - MIDI device number maps assigned to the 1st OSS device. |
95 | - Default: 0 | 95 | - Default: 0 |
96 | amidi_map - MIDI device number maps assigned to the 2st OSS device. | 96 | amidi_map - MIDI device number maps assigned to the 2st OSS device. |
97 | - Default: 1 | 97 | - Default: 1 |
98 | 98 | ||
99 | Common parameters for top sound card modules | 99 | Common parameters for top sound card modules |
100 | -------------------------------------------- | 100 | -------------------------------------------- |
101 | 101 | ||
102 | Each of top level sound card module takes the following options. | 102 | Each of top level sound card module takes the following options. |
103 | 103 | ||
104 | index - index (slot #) of sound card | 104 | index - index (slot #) of sound card |
105 | - Values: 0 through 31 or negative | 105 | - Values: 0 through 31 or negative |
106 | - If nonnegative, assign that index number | 106 | - If nonnegative, assign that index number |
107 | - if negative, interpret as a bitmask of permissible | 107 | - if negative, interpret as a bitmask of permissible |
108 | indices; the first free permitted index is assigned | 108 | indices; the first free permitted index is assigned |
109 | - Default: -1 | 109 | - Default: -1 |
110 | id - card ID (identifier or name) | 110 | id - card ID (identifier or name) |
111 | - Can be up to 15 characters long | 111 | - Can be up to 15 characters long |
112 | - Default: the card type | 112 | - Default: the card type |
113 | - A directory by this name is created under /proc/asound/ | 113 | - A directory by this name is created under /proc/asound/ |
114 | containing information about the card | 114 | containing information about the card |
115 | - This ID can be used instead of the index number in | 115 | - This ID can be used instead of the index number in |
116 | identifying the card | 116 | identifying the card |
117 | enable - enable card | 117 | enable - enable card |
118 | - Default: enabled, for PCI and ISA PnP cards | 118 | - Default: enabled, for PCI and ISA PnP cards |
119 | 119 | ||
120 | Module snd-adlib | 120 | Module snd-adlib |
121 | ---------------- | 121 | ---------------- |
122 | 122 | ||
123 | Module for AdLib FM cards. | 123 | Module for AdLib FM cards. |
124 | 124 | ||
125 | port - port # for OPL chip | 125 | port - port # for OPL chip |
126 | 126 | ||
127 | This module supports multiple cards. It does not support autoprobe, so | 127 | This module supports multiple cards. It does not support autoprobe, so |
128 | the port must be specified. For actual AdLib FM cards it will be 0x388. | 128 | the port must be specified. For actual AdLib FM cards it will be 0x388. |
129 | Note that this card does not have PCM support and no mixer; only FM | 129 | Note that this card does not have PCM support and no mixer; only FM |
130 | synthesis. | 130 | synthesis. |
131 | 131 | ||
132 | Make sure you have "sbiload" from the alsa-tools package available and, | 132 | Make sure you have "sbiload" from the alsa-tools package available and, |
133 | after loading the module, find out the assigned ALSA sequencer port | 133 | after loading the module, find out the assigned ALSA sequencer port |
134 | number through "sbiload -l". Example output: | 134 | number through "sbiload -l". Example output: |
135 | 135 | ||
136 | Port Client name Port name | 136 | Port Client name Port name |
137 | 64:0 OPL2 FM synth OPL2 FM Port | 137 | 64:0 OPL2 FM synth OPL2 FM Port |
138 | 138 | ||
139 | Load the std.sb and drums.sb patches also supplied by sbiload: | 139 | Load the std.sb and drums.sb patches also supplied by sbiload: |
140 | 140 | ||
141 | sbiload -p 64:0 std.sb drums.sb | 141 | sbiload -p 64:0 std.sb drums.sb |
142 | 142 | ||
143 | If you use this driver to drive an OPL3, you can use std.o3 and drums.o3 | 143 | If you use this driver to drive an OPL3, you can use std.o3 and drums.o3 |
144 | instead. To have the card produce sound, use aplaymidi from alsa-utils: | 144 | instead. To have the card produce sound, use aplaymidi from alsa-utils: |
145 | 145 | ||
146 | aplaymidi -p 64:0 foo.mid | 146 | aplaymidi -p 64:0 foo.mid |
147 | 147 | ||
148 | Module snd-ad1816a | 148 | Module snd-ad1816a |
149 | ------------------ | 149 | ------------------ |
150 | 150 | ||
151 | Module for sound cards based on Analog Devices AD1816A/AD1815 ISA chips. | 151 | Module for sound cards based on Analog Devices AD1816A/AD1815 ISA chips. |
152 | 152 | ||
153 | clockfreq - Clock frequency for AD1816A chip (default = 0, 33000Hz) | 153 | clockfreq - Clock frequency for AD1816A chip (default = 0, 33000Hz) |
154 | 154 | ||
155 | This module supports multiple cards, autoprobe and PnP. | 155 | This module supports multiple cards, autoprobe and PnP. |
156 | 156 | ||
157 | Module snd-ad1848 | 157 | Module snd-ad1848 |
158 | ----------------- | 158 | ----------------- |
159 | 159 | ||
160 | Module for sound cards based on AD1848/AD1847/CS4248 ISA chips. | 160 | Module for sound cards based on AD1848/AD1847/CS4248 ISA chips. |
161 | 161 | ||
162 | port - port # for AD1848 chip | 162 | port - port # for AD1848 chip |
163 | irq - IRQ # for AD1848 chip | 163 | irq - IRQ # for AD1848 chip |
164 | dma1 - DMA # for AD1848 chip (0,1,3) | 164 | dma1 - DMA # for AD1848 chip (0,1,3) |
165 | 165 | ||
166 | This module supports multiple cards. It does not support autoprobe | 166 | This module supports multiple cards. It does not support autoprobe |
167 | thus main port must be specified!!! Other ports are optional. | 167 | thus main port must be specified!!! Other ports are optional. |
168 | 168 | ||
169 | The power-management is supported. | 169 | The power-management is supported. |
170 | 170 | ||
171 | Module snd-ad1889 | 171 | Module snd-ad1889 |
172 | ----------------- | 172 | ----------------- |
173 | 173 | ||
174 | Module for Analog Devices AD1889 chips. | 174 | Module for Analog Devices AD1889 chips. |
175 | 175 | ||
176 | ac97_quirk - AC'97 workaround for strange hardware | 176 | ac97_quirk - AC'97 workaround for strange hardware |
177 | See the description of intel8x0 module for details. | 177 | See the description of intel8x0 module for details. |
178 | 178 | ||
179 | This module supports multiple cards. | 179 | This module supports multiple cards. |
180 | 180 | ||
181 | Module snd-ali5451 | 181 | Module snd-ali5451 |
182 | ------------------ | 182 | ------------------ |
183 | 183 | ||
184 | Module for ALi M5451 PCI chip. | 184 | Module for ALi M5451 PCI chip. |
185 | 185 | ||
186 | pcm_channels - Number of hardware channels assigned for PCM | 186 | pcm_channels - Number of hardware channels assigned for PCM |
187 | spdif - Support SPDIF I/O | 187 | spdif - Support SPDIF I/O |
188 | - Default: disabled | 188 | - Default: disabled |
189 | 189 | ||
190 | This module supports one chip and autoprobe. | 190 | This module supports one chip and autoprobe. |
191 | 191 | ||
192 | The power-management is supported. | 192 | The power-management is supported. |
193 | 193 | ||
194 | Module snd-als100 | 194 | Module snd-als100 |
195 | ----------------- | 195 | ----------------- |
196 | 196 | ||
197 | Module for sound cards based on Avance Logic ALS100/ALS120 ISA chips. | 197 | Module for sound cards based on Avance Logic ALS100/ALS120 ISA chips. |
198 | 198 | ||
199 | This module supports multiple cards, autoprobe and PnP. | 199 | This module supports multiple cards, autoprobe and PnP. |
200 | 200 | ||
201 | The power-management is supported. | 201 | The power-management is supported. |
202 | 202 | ||
203 | Module snd-als300 | 203 | Module snd-als300 |
204 | ----------------- | 204 | ----------------- |
205 | 205 | ||
206 | Module for Avance Logic ALS300 and ALS300+ | 206 | Module for Avance Logic ALS300 and ALS300+ |
207 | 207 | ||
208 | This module supports multiple cards. | 208 | This module supports multiple cards. |
209 | 209 | ||
210 | The power-management is supported. | 210 | The power-management is supported. |
211 | 211 | ||
212 | Module snd-als4000 | 212 | Module snd-als4000 |
213 | ------------------ | 213 | ------------------ |
214 | 214 | ||
215 | Module for sound cards based on Avance Logic ALS4000 PCI chip. | 215 | Module for sound cards based on Avance Logic ALS4000 PCI chip. |
216 | 216 | ||
217 | joystick_port - port # for legacy joystick support. | 217 | joystick_port - port # for legacy joystick support. |
218 | 0 = disabled (default), 1 = auto-detect | 218 | 0 = disabled (default), 1 = auto-detect |
219 | 219 | ||
220 | This module supports multiple cards, autoprobe and PnP. | 220 | This module supports multiple cards, autoprobe and PnP. |
221 | 221 | ||
222 | The power-management is supported. | 222 | The power-management is supported. |
223 | 223 | ||
224 | Module snd-atiixp | 224 | Module snd-atiixp |
225 | ----------------- | 225 | ----------------- |
226 | 226 | ||
227 | Module for ATI IXP 150/200/250/400 AC97 controllers. | 227 | Module for ATI IXP 150/200/250/400 AC97 controllers. |
228 | 228 | ||
229 | ac97_clock - AC'97 clock (default = 48000) | 229 | ac97_clock - AC'97 clock (default = 48000) |
230 | ac97_quirk - AC'97 workaround for strange hardware | 230 | ac97_quirk - AC'97 workaround for strange hardware |
231 | See "AC97 Quirk Option" section below. | 231 | See "AC97 Quirk Option" section below. |
232 | ac97_codec - Workaround to specify which AC'97 codec | 232 | ac97_codec - Workaround to specify which AC'97 codec |
233 | instead of probing. If this works for you | 233 | instead of probing. If this works for you |
234 | file a bug with your `lspci -vn` output. | 234 | file a bug with your `lspci -vn` output. |
235 | -2 -- Force probing. | 235 | -2 -- Force probing. |
236 | -1 -- Default behavior. | 236 | -1 -- Default behavior. |
237 | 0-2 -- Use the specified codec. | 237 | 0-2 -- Use the specified codec. |
238 | spdif_aclink - S/PDIF transfer over AC-link (default = 1) | 238 | spdif_aclink - S/PDIF transfer over AC-link (default = 1) |
239 | 239 | ||
240 | This module supports one card and autoprobe. | 240 | This module supports one card and autoprobe. |
241 | 241 | ||
242 | ATI IXP has two different methods to control SPDIF output. One is | 242 | ATI IXP has two different methods to control SPDIF output. One is |
243 | over AC-link and another is over the "direct" SPDIF output. The | 243 | over AC-link and another is over the "direct" SPDIF output. The |
244 | implementation depends on the motherboard, and you'll need to | 244 | implementation depends on the motherboard, and you'll need to |
245 | choose the correct one via spdif_aclink module option. | 245 | choose the correct one via spdif_aclink module option. |
246 | 246 | ||
247 | The power-management is supported. | 247 | The power-management is supported. |
248 | 248 | ||
249 | Module snd-atiixp-modem | 249 | Module snd-atiixp-modem |
250 | ----------------------- | 250 | ----------------------- |
251 | 251 | ||
252 | Module for ATI IXP 150/200/250 AC97 modem controllers. | 252 | Module for ATI IXP 150/200/250 AC97 modem controllers. |
253 | 253 | ||
254 | This module supports one card and autoprobe. | 254 | This module supports one card and autoprobe. |
255 | 255 | ||
256 | Note: The default index value of this module is -2, i.e. the first | 256 | Note: The default index value of this module is -2, i.e. the first |
257 | slot is excluded. | 257 | slot is excluded. |
258 | 258 | ||
259 | The power-management is supported. | 259 | The power-management is supported. |
260 | 260 | ||
261 | Module snd-au8810, snd-au8820, snd-au8830 | 261 | Module snd-au8810, snd-au8820, snd-au8830 |
262 | ----------------------------------------- | 262 | ----------------------------------------- |
263 | 263 | ||
264 | Module for Aureal Vortex, Vortex2 and Advantage device. | 264 | Module for Aureal Vortex, Vortex2 and Advantage device. |
265 | 265 | ||
266 | pcifix - Control PCI workarounds | 266 | pcifix - Control PCI workarounds |
267 | 0 = Disable all workarounds | 267 | 0 = Disable all workarounds |
268 | 1 = Force the PCI latency of the Aureal card to 0xff | 268 | 1 = Force the PCI latency of the Aureal card to 0xff |
269 | 2 = Force the Extend PCI#2 Internal Master for Efficient | 269 | 2 = Force the Extend PCI#2 Internal Master for Efficient |
270 | Handling of Dummy Requests on the VIA KT133 AGP Bridge | 270 | Handling of Dummy Requests on the VIA KT133 AGP Bridge |
271 | 3 = Force both settings | 271 | 3 = Force both settings |
272 | 255 = Autodetect what is required (default) | 272 | 255 = Autodetect what is required (default) |
273 | 273 | ||
274 | This module supports all ADB PCM channels, ac97 mixer, SPDIF, hardware | 274 | This module supports all ADB PCM channels, ac97 mixer, SPDIF, hardware |
275 | EQ, mpu401, gameport. A3D and wavetable support are still in development. | 275 | EQ, mpu401, gameport. A3D and wavetable support are still in development. |
276 | Development and reverse engineering work is being coordinated at | 276 | Development and reverse engineering work is being coordinated at |
277 | http://savannah.nongnu.org/projects/openvortex/ | 277 | http://savannah.nongnu.org/projects/openvortex/ |
278 | SPDIF output has a copy of the AC97 codec output, unless you use the | 278 | SPDIF output has a copy of the AC97 codec output, unless you use the |
279 | "spdif" pcm device, which allows raw data passthru. | 279 | "spdif" pcm device, which allows raw data passthru. |
280 | The hardware EQ hardware and SPDIF is only present in the Vortex2 and | 280 | The hardware EQ hardware and SPDIF is only present in the Vortex2 and |
281 | Advantage. | 281 | Advantage. |
282 | 282 | ||
283 | Note: Some ALSA mixer applications don't handle the SPDIF sample rate | 283 | Note: Some ALSA mixer applications don't handle the SPDIF sample rate |
284 | control correctly. If you have problems regarding this, try | 284 | control correctly. If you have problems regarding this, try |
285 | another ALSA compliant mixer (alsamixer works). | 285 | another ALSA compliant mixer (alsamixer works). |
286 | 286 | ||
287 | Module snd-aw2 | 287 | Module snd-aw2 |
288 | -------------- | 288 | -------------- |
289 | 289 | ||
290 | Module for Audiowerk2 sound card | 290 | Module for Audiowerk2 sound card |
291 | 291 | ||
292 | This module supports multiple cards. | 292 | This module supports multiple cards. |
293 | 293 | ||
294 | Module snd-azt2320 | 294 | Module snd-azt2320 |
295 | ------------------ | 295 | ------------------ |
296 | 296 | ||
297 | Module for sound cards based on Aztech System AZT2320 ISA chip (PnP only). | 297 | Module for sound cards based on Aztech System AZT2320 ISA chip (PnP only). |
298 | 298 | ||
299 | This module supports multiple cards, PnP and autoprobe. | 299 | This module supports multiple cards, PnP and autoprobe. |
300 | 300 | ||
301 | The power-management is supported. | 301 | The power-management is supported. |
302 | 302 | ||
303 | Module snd-azt3328 | 303 | Module snd-azt3328 |
304 | ------------------ | 304 | ------------------ |
305 | 305 | ||
306 | Module for sound cards based on Aztech AZF3328 PCI chip. | 306 | Module for sound cards based on Aztech AZF3328 PCI chip. |
307 | 307 | ||
308 | joystick - Enable joystick (default off) | 308 | joystick - Enable joystick (default off) |
309 | 309 | ||
310 | This module supports multiple cards. | 310 | This module supports multiple cards. |
311 | 311 | ||
312 | Module snd-bt87x | 312 | Module snd-bt87x |
313 | ---------------- | 313 | ---------------- |
314 | 314 | ||
315 | Module for video cards based on Bt87x chips. | 315 | Module for video cards based on Bt87x chips. |
316 | 316 | ||
317 | digital_rate - Override the default digital rate (Hz) | 317 | digital_rate - Override the default digital rate (Hz) |
318 | load_all - Load the driver even if the card model isn't known | 318 | load_all - Load the driver even if the card model isn't known |
319 | 319 | ||
320 | This module supports multiple cards. | 320 | This module supports multiple cards. |
321 | 321 | ||
322 | Note: The default index value of this module is -2, i.e. the first | 322 | Note: The default index value of this module is -2, i.e. the first |
323 | slot is excluded. | 323 | slot is excluded. |
324 | 324 | ||
325 | Module snd-ca0106 | 325 | Module snd-ca0106 |
326 | ----------------- | 326 | ----------------- |
327 | 327 | ||
328 | Module for Creative Audigy LS and SB Live 24bit | 328 | Module for Creative Audigy LS and SB Live 24bit |
329 | 329 | ||
330 | This module supports multiple cards. | 330 | This module supports multiple cards. |
331 | 331 | ||
332 | 332 | ||
333 | Module snd-cmi8330 | 333 | Module snd-cmi8330 |
334 | ------------------ | 334 | ------------------ |
335 | 335 | ||
336 | Module for sound cards based on C-Media CMI8330 ISA chips. | 336 | Module for sound cards based on C-Media CMI8330 ISA chips. |
337 | 337 | ||
338 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 338 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
339 | 339 | ||
340 | with isapnp=0, the following options are available: | 340 | with isapnp=0, the following options are available: |
341 | 341 | ||
342 | wssport - port # for CMI8330 chip (WSS) | 342 | wssport - port # for CMI8330 chip (WSS) |
343 | wssirq - IRQ # for CMI8330 chip (WSS) | 343 | wssirq - IRQ # for CMI8330 chip (WSS) |
344 | wssdma - first DMA # for CMI8330 chip (WSS) | 344 | wssdma - first DMA # for CMI8330 chip (WSS) |
345 | sbport - port # for CMI8330 chip (SB16) | 345 | sbport - port # for CMI8330 chip (SB16) |
346 | sbirq - IRQ # for CMI8330 chip (SB16) | 346 | sbirq - IRQ # for CMI8330 chip (SB16) |
347 | sbdma8 - 8bit DMA # for CMI8330 chip (SB16) | 347 | sbdma8 - 8bit DMA # for CMI8330 chip (SB16) |
348 | sbdma16 - 16bit DMA # for CMI8330 chip (SB16) | 348 | sbdma16 - 16bit DMA # for CMI8330 chip (SB16) |
349 | fmport - (optional) OPL3 I/O port | 349 | fmport - (optional) OPL3 I/O port |
350 | mpuport - (optional) MPU401 I/O port | 350 | mpuport - (optional) MPU401 I/O port |
351 | mpuirq - (optional) MPU401 irq # | 351 | mpuirq - (optional) MPU401 irq # |
352 | 352 | ||
353 | This module supports multiple cards and autoprobe. | 353 | This module supports multiple cards and autoprobe. |
354 | 354 | ||
355 | The power-management is supported. | 355 | The power-management is supported. |
356 | 356 | ||
357 | Module snd-cmipci | 357 | Module snd-cmipci |
358 | ----------------- | 358 | ----------------- |
359 | 359 | ||
360 | Module for C-Media CMI8338/8738/8768/8770 PCI sound cards. | 360 | Module for C-Media CMI8338/8738/8768/8770 PCI sound cards. |
361 | 361 | ||
362 | mpu_port - port address of MIDI interface (8338 only): | 362 | mpu_port - port address of MIDI interface (8338 only): |
363 | 0x300,0x310,0x320,0x330 = legacy port, | 363 | 0x300,0x310,0x320,0x330 = legacy port, |
364 | 0 = disable (default) | 364 | 0 = disable (default) |
365 | fm_port - port address of OPL-3 FM synthesizer (8x38 only): | 365 | fm_port - port address of OPL-3 FM synthesizer (8x38 only): |
366 | 0x388 = legacy port, | 366 | 0x388 = legacy port, |
367 | 1 = integrated PCI port (default on 8738), | 367 | 1 = integrated PCI port (default on 8738), |
368 | 0 = disable | 368 | 0 = disable |
369 | soft_ac3 - Software-conversion of raw SPDIF packets (model 033 only) | 369 | soft_ac3 - Software-conversion of raw SPDIF packets (model 033 only) |
370 | (default = 1) | 370 | (default = 1) |
371 | joystick_port - Joystick port address (0 = disable, 1 = auto-detect) | 371 | joystick_port - Joystick port address (0 = disable, 1 = auto-detect) |
372 | 372 | ||
373 | This module supports autoprobe and multiple cards. | 373 | This module supports autoprobe and multiple cards. |
374 | 374 | ||
375 | The power-management is supported. | 375 | The power-management is supported. |
376 | 376 | ||
377 | Module snd-cs4231 | 377 | Module snd-cs4231 |
378 | ----------------- | 378 | ----------------- |
379 | 379 | ||
380 | Module for sound cards based on CS4231 ISA chips. | 380 | Module for sound cards based on CS4231 ISA chips. |
381 | 381 | ||
382 | port - port # for CS4231 chip | 382 | port - port # for CS4231 chip |
383 | mpu_port - port # for MPU-401 UART (optional), -1 = disable | 383 | mpu_port - port # for MPU-401 UART (optional), -1 = disable |
384 | irq - IRQ # for CS4231 chip | 384 | irq - IRQ # for CS4231 chip |
385 | mpu_irq - IRQ # for MPU-401 UART | 385 | mpu_irq - IRQ # for MPU-401 UART |
386 | dma1 - first DMA # for CS4231 chip | 386 | dma1 - first DMA # for CS4231 chip |
387 | dma2 - second DMA # for CS4231 chip | 387 | dma2 - second DMA # for CS4231 chip |
388 | 388 | ||
389 | This module supports multiple cards. This module does not support autoprobe | 389 | This module supports multiple cards. This module does not support autoprobe |
390 | thus main port must be specified!!! Other ports are optional. | 390 | thus main port must be specified!!! Other ports are optional. |
391 | 391 | ||
392 | The power-management is supported. | 392 | The power-management is supported. |
393 | 393 | ||
394 | Module snd-cs4236 | 394 | Module snd-cs4236 |
395 | ----------------- | 395 | ----------------- |
396 | 396 | ||
397 | Module for sound cards based on CS4232/CS4232A, | 397 | Module for sound cards based on CS4232/CS4232A, |
398 | CS4235/CS4236/CS4236B/CS4237B/ | 398 | CS4235/CS4236/CS4236B/CS4237B/ |
399 | CS4238B/CS4239 ISA chips. | 399 | CS4238B/CS4239 ISA chips. |
400 | 400 | ||
401 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 401 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
402 | 402 | ||
403 | with isapnp=0, the following options are available: | 403 | with isapnp=0, the following options are available: |
404 | 404 | ||
405 | port - port # for CS4236 chip (PnP setup - 0x534) | 405 | port - port # for CS4236 chip (PnP setup - 0x534) |
406 | cport - control port # for CS4236 chip (PnP setup - 0x120,0x210,0xf00) | 406 | cport - control port # for CS4236 chip (PnP setup - 0x120,0x210,0xf00) |
407 | mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable | 407 | mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable |
408 | fm_port - FM port # for CS4236 chip (PnP setup - 0x388), -1 = disable | 408 | fm_port - FM port # for CS4236 chip (PnP setup - 0x388), -1 = disable |
409 | irq - IRQ # for CS4236 chip (5,7,9,11,12,15) | 409 | irq - IRQ # for CS4236 chip (5,7,9,11,12,15) |
410 | mpu_irq - IRQ # for MPU-401 UART (9,11,12,15) | 410 | mpu_irq - IRQ # for MPU-401 UART (9,11,12,15) |
411 | dma1 - first DMA # for CS4236 chip (0,1,3) | 411 | dma1 - first DMA # for CS4236 chip (0,1,3) |
412 | dma2 - second DMA # for CS4236 chip (0,1,3), -1 = disable | 412 | dma2 - second DMA # for CS4236 chip (0,1,3), -1 = disable |
413 | 413 | ||
414 | This module supports multiple cards. This module does not support autoprobe | 414 | This module supports multiple cards. This module does not support autoprobe |
415 | (if ISA PnP is not used) thus main port and control port must be | 415 | (if ISA PnP is not used) thus main port and control port must be |
416 | specified!!! Other ports are optional. | 416 | specified!!! Other ports are optional. |
417 | 417 | ||
418 | The power-management is supported. | 418 | The power-management is supported. |
419 | 419 | ||
420 | This module is aliased as snd-cs4232 since it provides the old | 420 | This module is aliased as snd-cs4232 since it provides the old |
421 | snd-cs4232 functionality, too. | 421 | snd-cs4232 functionality, too. |
422 | 422 | ||
423 | Module snd-cs4281 | 423 | Module snd-cs4281 |
424 | ----------------- | 424 | ----------------- |
425 | 425 | ||
426 | Module for Cirrus Logic CS4281 soundchip. | 426 | Module for Cirrus Logic CS4281 soundchip. |
427 | 427 | ||
428 | dual_codec - Secondary codec ID (0 = disable, default) | 428 | dual_codec - Secondary codec ID (0 = disable, default) |
429 | 429 | ||
430 | This module supports multiple cards. | 430 | This module supports multiple cards. |
431 | 431 | ||
432 | The power-management is supported. | 432 | The power-management is supported. |
433 | 433 | ||
434 | Module snd-cs46xx | 434 | Module snd-cs46xx |
435 | ----------------- | 435 | ----------------- |
436 | 436 | ||
437 | Module for PCI sound cards based on CS4610/CS4612/CS4614/CS4615/CS4622/ | 437 | Module for PCI sound cards based on CS4610/CS4612/CS4614/CS4615/CS4622/ |
438 | CS4624/CS4630/CS4280 PCI chips. | 438 | CS4624/CS4630/CS4280 PCI chips. |
439 | 439 | ||
440 | external_amp - Force to enable external amplifier. | 440 | external_amp - Force to enable external amplifier. |
441 | thinkpad - Force to enable Thinkpad's CLKRUN control. | 441 | thinkpad - Force to enable Thinkpad's CLKRUN control. |
442 | mmap_valid - Support OSS mmap mode (default = 0). | 442 | mmap_valid - Support OSS mmap mode (default = 0). |
443 | 443 | ||
444 | This module supports multiple cards and autoprobe. | 444 | This module supports multiple cards and autoprobe. |
445 | Usually external amp and CLKRUN controls are detected automatically | 445 | Usually external amp and CLKRUN controls are detected automatically |
446 | from PCI sub vendor/device ids. If they don't work, give the options | 446 | from PCI sub vendor/device ids. If they don't work, give the options |
447 | above explicitly. | 447 | above explicitly. |
448 | 448 | ||
449 | The power-management is supported. | 449 | The power-management is supported. |
450 | 450 | ||
451 | Module snd-cs5530 | 451 | Module snd-cs5530 |
452 | _________________ | 452 | _________________ |
453 | 453 | ||
454 | Module for Cyrix/NatSemi Geode 5530 chip. | 454 | Module for Cyrix/NatSemi Geode 5530 chip. |
455 | 455 | ||
456 | Module snd-cs5535audio | 456 | Module snd-cs5535audio |
457 | ---------------------- | 457 | ---------------------- |
458 | 458 | ||
459 | Module for multifunction CS5535 companion PCI device | 459 | Module for multifunction CS5535 companion PCI device |
460 | 460 | ||
461 | The power-management is supported. | 461 | The power-management is supported. |
462 | 462 | ||
463 | Module snd-darla20 | 463 | Module snd-darla20 |
464 | ------------------ | 464 | ------------------ |
465 | 465 | ||
466 | Module for Echoaudio Darla20 | 466 | Module for Echoaudio Darla20 |
467 | 467 | ||
468 | This module supports multiple cards. | 468 | This module supports multiple cards. |
469 | The driver requires the firmware loader support on kernel. | 469 | The driver requires the firmware loader support on kernel. |
470 | 470 | ||
471 | Module snd-darla24 | 471 | Module snd-darla24 |
472 | ------------------ | 472 | ------------------ |
473 | 473 | ||
474 | Module for Echoaudio Darla24 | 474 | Module for Echoaudio Darla24 |
475 | 475 | ||
476 | This module supports multiple cards. | 476 | This module supports multiple cards. |
477 | The driver requires the firmware loader support on kernel. | 477 | The driver requires the firmware loader support on kernel. |
478 | 478 | ||
479 | Module snd-dt019x | 479 | Module snd-dt019x |
480 | ----------------- | 480 | ----------------- |
481 | 481 | ||
482 | Module for Diamond Technologies DT-019X / Avance Logic ALS-007 (PnP | 482 | Module for Diamond Technologies DT-019X / Avance Logic ALS-007 (PnP |
483 | only) | 483 | only) |
484 | 484 | ||
485 | This module supports multiple cards. This module is enabled only with | 485 | This module supports multiple cards. This module is enabled only with |
486 | ISA PnP support. | 486 | ISA PnP support. |
487 | 487 | ||
488 | The power-management is supported. | 488 | The power-management is supported. |
489 | 489 | ||
490 | Module snd-dummy | 490 | Module snd-dummy |
491 | ---------------- | 491 | ---------------- |
492 | 492 | ||
493 | Module for the dummy sound card. This "card" doesn't do any output | 493 | Module for the dummy sound card. This "card" doesn't do any output |
494 | or input, but you may use this module for any application which | 494 | or input, but you may use this module for any application which |
495 | requires a sound card (like RealPlayer). | 495 | requires a sound card (like RealPlayer). |
496 | 496 | ||
497 | The power-management is supported. | 497 | The power-management is supported. |
498 | 498 | ||
499 | Module snd-echo3g | 499 | Module snd-echo3g |
500 | ----------------- | 500 | ----------------- |
501 | 501 | ||
502 | Module for Echoaudio 3G cards (Gina3G/Layla3G) | 502 | Module for Echoaudio 3G cards (Gina3G/Layla3G) |
503 | 503 | ||
504 | This module supports multiple cards. | 504 | This module supports multiple cards. |
505 | The driver requires the firmware loader support on kernel. | 505 | The driver requires the firmware loader support on kernel. |
506 | 506 | ||
507 | Module snd-emu10k1 | 507 | Module snd-emu10k1 |
508 | ------------------ | 508 | ------------------ |
509 | 509 | ||
510 | Module for EMU10K1/EMU10k2 based PCI sound cards. | 510 | Module for EMU10K1/EMU10k2 based PCI sound cards. |
511 | * Sound Blaster Live! | 511 | * Sound Blaster Live! |
512 | * Sound Blaster PCI 512 | 512 | * Sound Blaster PCI 512 |
513 | * Emu APS (partially supported) | 513 | * Emu APS (partially supported) |
514 | * Sound Blaster Audigy | 514 | * Sound Blaster Audigy |
515 | 515 | ||
516 | extin - bitmap of available external inputs for FX8010 (see bellow) | 516 | extin - bitmap of available external inputs for FX8010 (see bellow) |
517 | extout - bitmap of available external outputs for FX8010 (see bellow) | 517 | extout - bitmap of available external outputs for FX8010 (see bellow) |
518 | seq_ports - allocated sequencer ports (4 by default) | 518 | seq_ports - allocated sequencer ports (4 by default) |
519 | max_synth_voices - limit of voices used for wavetable (64 by default) | 519 | max_synth_voices - limit of voices used for wavetable (64 by default) |
520 | max_buffer_size - specifies the maximum size of wavetable/pcm buffers | 520 | max_buffer_size - specifies the maximum size of wavetable/pcm buffers |
521 | given in MB unit. Default value is 128. | 521 | given in MB unit. Default value is 128. |
522 | enable_ir - enable IR | 522 | enable_ir - enable IR |
523 | 523 | ||
524 | This module supports multiple cards and autoprobe. | 524 | This module supports multiple cards and autoprobe. |
525 | 525 | ||
526 | Input & Output configurations [extin/extout] | 526 | Input & Output configurations [extin/extout] |
527 | * Creative Card wo/Digital out [0x0003/0x1f03] | 527 | * Creative Card wo/Digital out [0x0003/0x1f03] |
528 | * Creative Card w/Digital out [0x0003/0x1f0f] | 528 | * Creative Card w/Digital out [0x0003/0x1f0f] |
529 | * Creative Card w/Digital CD in [0x000f/0x1f0f] | 529 | * Creative Card w/Digital CD in [0x000f/0x1f0f] |
530 | * Creative Card wo/Digital out + LiveDrive [0x3fc3/0x1fc3] | 530 | * Creative Card wo/Digital out + LiveDrive [0x3fc3/0x1fc3] |
531 | * Creative Card w/Digital out + LiveDrive [0x3fc3/0x1fcf] | 531 | * Creative Card w/Digital out + LiveDrive [0x3fc3/0x1fcf] |
532 | * Creative Card w/Digital CD in + LiveDrive [0x3fcf/0x1fcf] | 532 | * Creative Card w/Digital CD in + LiveDrive [0x3fcf/0x1fcf] |
533 | * Creative Card wo/Digital out + Digital I/O 2 [0x0fc3/0x1f0f] | 533 | * Creative Card wo/Digital out + Digital I/O 2 [0x0fc3/0x1f0f] |
534 | * Creative Card w/Digital out + Digital I/O 2 [0x0fc3/0x1f0f] | 534 | * Creative Card w/Digital out + Digital I/O 2 [0x0fc3/0x1f0f] |
535 | * Creative Card w/Digital CD in + Digital I/O 2 [0x0fcf/0x1f0f] | 535 | * Creative Card w/Digital CD in + Digital I/O 2 [0x0fcf/0x1f0f] |
536 | * Creative Card 5.1/w Digital out + LiveDrive [0x3fc3/0x1fff] | 536 | * Creative Card 5.1/w Digital out + LiveDrive [0x3fc3/0x1fff] |
537 | * Creative Card 5.1 (c) 2003 [0x3fc3/0x7cff] | 537 | * Creative Card 5.1 (c) 2003 [0x3fc3/0x7cff] |
538 | * Creative Card all ins and outs [0x3fff/0x7fff] | 538 | * Creative Card all ins and outs [0x3fff/0x7fff] |
539 | 539 | ||
540 | The power-management is supported. | 540 | The power-management is supported. |
541 | 541 | ||
542 | Module snd-emu10k1x | 542 | Module snd-emu10k1x |
543 | ------------------- | 543 | ------------------- |
544 | 544 | ||
545 | Module for Creative Emu10k1X (SB Live Dell OEM version) | 545 | Module for Creative Emu10k1X (SB Live Dell OEM version) |
546 | 546 | ||
547 | This module supports multiple cards. | 547 | This module supports multiple cards. |
548 | 548 | ||
549 | Module snd-ens1370 | 549 | Module snd-ens1370 |
550 | ------------------ | 550 | ------------------ |
551 | 551 | ||
552 | Module for Ensoniq AudioPCI ES1370 PCI sound cards. | 552 | Module for Ensoniq AudioPCI ES1370 PCI sound cards. |
553 | * SoundBlaster PCI 64 | 553 | * SoundBlaster PCI 64 |
554 | * SoundBlaster PCI 128 | 554 | * SoundBlaster PCI 128 |
555 | 555 | ||
556 | joystick - Enable joystick (default off) | 556 | joystick - Enable joystick (default off) |
557 | 557 | ||
558 | This module supports multiple cards and autoprobe. | 558 | This module supports multiple cards and autoprobe. |
559 | 559 | ||
560 | The power-management is supported. | 560 | The power-management is supported. |
561 | 561 | ||
562 | Module snd-ens1371 | 562 | Module snd-ens1371 |
563 | ------------------ | 563 | ------------------ |
564 | 564 | ||
565 | Module for Ensoniq AudioPCI ES1371 PCI sound cards. | 565 | Module for Ensoniq AudioPCI ES1371 PCI sound cards. |
566 | * SoundBlaster PCI 64 | 566 | * SoundBlaster PCI 64 |
567 | * SoundBlaster PCI 128 | 567 | * SoundBlaster PCI 128 |
568 | * SoundBlaster Vibra PCI | 568 | * SoundBlaster Vibra PCI |
569 | 569 | ||
570 | joystick_port - port # for joystick (0x200,0x208,0x210,0x218), | 570 | joystick_port - port # for joystick (0x200,0x208,0x210,0x218), |
571 | 0 = disable (default), 1 = auto-detect | 571 | 0 = disable (default), 1 = auto-detect |
572 | 572 | ||
573 | This module supports multiple cards and autoprobe. | 573 | This module supports multiple cards and autoprobe. |
574 | 574 | ||
575 | The power-management is supported. | 575 | The power-management is supported. |
576 | 576 | ||
577 | Module snd-es968 | 577 | Module snd-es968 |
578 | ---------------- | 578 | ---------------- |
579 | 579 | ||
580 | Module for sound cards based on ESS ES968 chip (PnP only). | 580 | Module for sound cards based on ESS ES968 chip (PnP only). |
581 | 581 | ||
582 | This module supports multiple cards, PnP and autoprobe. | 582 | This module supports multiple cards, PnP and autoprobe. |
583 | 583 | ||
584 | The power-management is supported. | 584 | The power-management is supported. |
585 | 585 | ||
586 | Module snd-es1688 | 586 | Module snd-es1688 |
587 | ----------------- | 587 | ----------------- |
588 | 588 | ||
589 | Module for ESS AudioDrive ES-1688 and ES-688 sound cards. | 589 | Module for ESS AudioDrive ES-1688 and ES-688 sound cards. |
590 | 590 | ||
591 | port - port # for ES-1688 chip (0x220,0x240,0x260) | 591 | port - port # for ES-1688 chip (0x220,0x240,0x260) |
592 | fm_port - port # for OPL3 (option; share the same port as default) | 592 | fm_port - port # for OPL3 (option; share the same port as default) |
593 | mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default) | 593 | mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default) |
594 | irq - IRQ # for ES-1688 chip (5,7,9,10) | 594 | irq - IRQ # for ES-1688 chip (5,7,9,10) |
595 | mpu_irq - IRQ # for MPU-401 port (5,7,9,10) | 595 | mpu_irq - IRQ # for MPU-401 port (5,7,9,10) |
596 | dma8 - DMA # for ES-1688 chip (0,1,3) | 596 | dma8 - DMA # for ES-1688 chip (0,1,3) |
597 | 597 | ||
598 | This module supports multiple cards and autoprobe (without MPU-401 port). | 598 | This module supports multiple cards and autoprobe (without MPU-401 port). |
599 | 599 | ||
600 | Module snd-es18xx | 600 | Module snd-es18xx |
601 | ----------------- | 601 | ----------------- |
602 | 602 | ||
603 | Module for ESS AudioDrive ES-18xx sound cards. | 603 | Module for ESS AudioDrive ES-18xx sound cards. |
604 | 604 | ||
605 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 605 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
606 | 606 | ||
607 | with isapnp=0, the following options are available: | 607 | with isapnp=0, the following options are available: |
608 | 608 | ||
609 | port - port # for ES-18xx chip (0x220,0x240,0x260) | 609 | port - port # for ES-18xx chip (0x220,0x240,0x260) |
610 | mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default) | 610 | mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default) |
611 | fm_port - port # for FM (optional, not used) | 611 | fm_port - port # for FM (optional, not used) |
612 | irq - IRQ # for ES-18xx chip (5,7,9,10) | 612 | irq - IRQ # for ES-18xx chip (5,7,9,10) |
613 | dma1 - first DMA # for ES-18xx chip (0,1,3) | 613 | dma1 - first DMA # for ES-18xx chip (0,1,3) |
614 | dma2 - first DMA # for ES-18xx chip (0,1,3) | 614 | dma2 - first DMA # for ES-18xx chip (0,1,3) |
615 | 615 | ||
616 | This module supports multiple cards, ISA PnP and autoprobe (without MPU-401 | 616 | This module supports multiple cards, ISA PnP and autoprobe (without MPU-401 |
617 | port if native ISA PnP routines are not used). | 617 | port if native ISA PnP routines are not used). |
618 | When dma2 is equal with dma1, the driver works as half-duplex. | 618 | When dma2 is equal with dma1, the driver works as half-duplex. |
619 | 619 | ||
620 | The power-management is supported. | 620 | The power-management is supported. |
621 | 621 | ||
622 | Module snd-es1938 | 622 | Module snd-es1938 |
623 | ----------------- | 623 | ----------------- |
624 | 624 | ||
625 | Module for sound cards based on ESS Solo-1 (ES1938,ES1946) chips. | 625 | Module for sound cards based on ESS Solo-1 (ES1938,ES1946) chips. |
626 | 626 | ||
627 | This module supports multiple cards and autoprobe. | 627 | This module supports multiple cards and autoprobe. |
628 | 628 | ||
629 | The power-management is supported. | 629 | The power-management is supported. |
630 | 630 | ||
631 | Module snd-es1968 | 631 | Module snd-es1968 |
632 | ----------------- | 632 | ----------------- |
633 | 633 | ||
634 | Module for sound cards based on ESS Maestro-1/2/2E (ES1968/ES1978) chips. | 634 | Module for sound cards based on ESS Maestro-1/2/2E (ES1968/ES1978) chips. |
635 | 635 | ||
636 | total_bufsize - total buffer size in kB (1-4096kB) | 636 | total_bufsize - total buffer size in kB (1-4096kB) |
637 | pcm_substreams_p - playback channels (1-8, default=2) | 637 | pcm_substreams_p - playback channels (1-8, default=2) |
638 | pcm_substreams_c - capture channels (1-8, default=0) | 638 | pcm_substreams_c - capture channels (1-8, default=0) |
639 | clock - clock (0 = auto-detection) | 639 | clock - clock (0 = auto-detection) |
640 | use_pm - support the power-management (0 = off, 1 = on, | 640 | use_pm - support the power-management (0 = off, 1 = on, |
641 | 2 = auto (default)) | 641 | 2 = auto (default)) |
642 | enable_mpu - enable MPU401 (0 = off, 1 = on, 2 = auto (default)) | 642 | enable_mpu - enable MPU401 (0 = off, 1 = on, 2 = auto (default)) |
643 | joystick - enable joystick (default off) | 643 | joystick - enable joystick (default off) |
644 | 644 | ||
645 | This module supports multiple cards and autoprobe. | 645 | This module supports multiple cards and autoprobe. |
646 | 646 | ||
647 | The power-management is supported. | 647 | The power-management is supported. |
648 | 648 | ||
649 | Module snd-fm801 | 649 | Module snd-fm801 |
650 | ---------------- | 650 | ---------------- |
651 | 651 | ||
652 | Module for ForteMedia FM801 based PCI sound cards. | 652 | Module for ForteMedia FM801 based PCI sound cards. |
653 | 653 | ||
654 | tea575x_tuner - Enable TEA575x tuner | 654 | tea575x_tuner - Enable TEA575x tuner |
655 | - 1 = MediaForte 256-PCS | 655 | - 1 = MediaForte 256-PCS |
656 | - 2 = MediaForte 256-PCPR | 656 | - 2 = MediaForte 256-PCPR |
657 | - 3 = MediaForte 64-PCR | 657 | - 3 = MediaForte 64-PCR |
658 | - High 16-bits are video (radio) device number + 1 | 658 | - High 16-bits are video (radio) device number + 1 |
659 | - example: 0x10002 (MediaForte 256-PCPR, device 1) | 659 | - example: 0x10002 (MediaForte 256-PCPR, device 1) |
660 | 660 | ||
661 | This module supports multiple cards and autoprobe. | 661 | This module supports multiple cards and autoprobe. |
662 | 662 | ||
663 | The power-management is supported. | 663 | The power-management is supported. |
664 | 664 | ||
665 | Module snd-gina20 | 665 | Module snd-gina20 |
666 | ----------------- | 666 | ----------------- |
667 | 667 | ||
668 | Module for Echoaudio Gina20 | 668 | Module for Echoaudio Gina20 |
669 | 669 | ||
670 | This module supports multiple cards. | 670 | This module supports multiple cards. |
671 | The driver requires the firmware loader support on kernel. | 671 | The driver requires the firmware loader support on kernel. |
672 | 672 | ||
673 | Module snd-gina24 | 673 | Module snd-gina24 |
674 | ----------------- | 674 | ----------------- |
675 | 675 | ||
676 | Module for Echoaudio Gina24 | 676 | Module for Echoaudio Gina24 |
677 | 677 | ||
678 | This module supports multiple cards. | 678 | This module supports multiple cards. |
679 | The driver requires the firmware loader support on kernel. | 679 | The driver requires the firmware loader support on kernel. |
680 | 680 | ||
681 | Module snd-gusclassic | 681 | Module snd-gusclassic |
682 | --------------------- | 682 | --------------------- |
683 | 683 | ||
684 | Module for Gravis UltraSound Classic sound card. | 684 | Module for Gravis UltraSound Classic sound card. |
685 | 685 | ||
686 | port - port # for GF1 chip (0x220,0x230,0x240,0x250,0x260) | 686 | port - port # for GF1 chip (0x220,0x230,0x240,0x250,0x260) |
687 | irq - IRQ # for GF1 chip (3,5,9,11,12,15) | 687 | irq - IRQ # for GF1 chip (3,5,9,11,12,15) |
688 | dma1 - DMA # for GF1 chip (1,3,5,6,7) | 688 | dma1 - DMA # for GF1 chip (1,3,5,6,7) |
689 | dma2 - DMA # for GF1 chip (1,3,5,6,7,-1=disable) | 689 | dma2 - DMA # for GF1 chip (1,3,5,6,7,-1=disable) |
690 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) | 690 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) |
691 | voices - GF1 voices limit (14-32) | 691 | voices - GF1 voices limit (14-32) |
692 | pcm_voices - reserved PCM voices | 692 | pcm_voices - reserved PCM voices |
693 | 693 | ||
694 | This module supports multiple cards and autoprobe. | 694 | This module supports multiple cards and autoprobe. |
695 | 695 | ||
696 | Module snd-gusextreme | 696 | Module snd-gusextreme |
697 | --------------------- | 697 | --------------------- |
698 | 698 | ||
699 | Module for Gravis UltraSound Extreme (Synergy ViperMax) sound card. | 699 | Module for Gravis UltraSound Extreme (Synergy ViperMax) sound card. |
700 | 700 | ||
701 | port - port # for ES-1688 chip (0x220,0x230,0x240,0x250,0x260) | 701 | port - port # for ES-1688 chip (0x220,0x230,0x240,0x250,0x260) |
702 | gf1_port - port # for GF1 chip (0x210,0x220,0x230,0x240,0x250,0x260,0x270) | 702 | gf1_port - port # for GF1 chip (0x210,0x220,0x230,0x240,0x250,0x260,0x270) |
703 | mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable | 703 | mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable |
704 | irq - IRQ # for ES-1688 chip (5,7,9,10) | 704 | irq - IRQ # for ES-1688 chip (5,7,9,10) |
705 | gf1_irq - IRQ # for GF1 chip (3,5,9,11,12,15) | 705 | gf1_irq - IRQ # for GF1 chip (3,5,9,11,12,15) |
706 | mpu_irq - IRQ # for MPU-401 port (5,7,9,10) | 706 | mpu_irq - IRQ # for MPU-401 port (5,7,9,10) |
707 | dma8 - DMA # for ES-1688 chip (0,1,3) | 707 | dma8 - DMA # for ES-1688 chip (0,1,3) |
708 | dma1 - DMA # for GF1 chip (1,3,5,6,7) | 708 | dma1 - DMA # for GF1 chip (1,3,5,6,7) |
709 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) | 709 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) |
710 | voices - GF1 voices limit (14-32) | 710 | voices - GF1 voices limit (14-32) |
711 | pcm_voices - reserved PCM voices | 711 | pcm_voices - reserved PCM voices |
712 | 712 | ||
713 | This module supports multiple cards and autoprobe (without MPU-401 port). | 713 | This module supports multiple cards and autoprobe (without MPU-401 port). |
714 | 714 | ||
715 | Module snd-gusmax | 715 | Module snd-gusmax |
716 | ----------------- | 716 | ----------------- |
717 | 717 | ||
718 | Module for Gravis UltraSound MAX sound card. | 718 | Module for Gravis UltraSound MAX sound card. |
719 | 719 | ||
720 | port - port # for GF1 chip (0x220,0x230,0x240,0x250,0x260) | 720 | port - port # for GF1 chip (0x220,0x230,0x240,0x250,0x260) |
721 | irq - IRQ # for GF1 chip (3,5,9,11,12,15) | 721 | irq - IRQ # for GF1 chip (3,5,9,11,12,15) |
722 | dma1 - DMA # for GF1 chip (1,3,5,6,7) | 722 | dma1 - DMA # for GF1 chip (1,3,5,6,7) |
723 | dma2 - DMA # for GF1 chip (1,3,5,6,7,-1=disable) | 723 | dma2 - DMA # for GF1 chip (1,3,5,6,7,-1=disable) |
724 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) | 724 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) |
725 | voices - GF1 voices limit (14-32) | 725 | voices - GF1 voices limit (14-32) |
726 | pcm_voices - reserved PCM voices | 726 | pcm_voices - reserved PCM voices |
727 | 727 | ||
728 | This module supports multiple cards and autoprobe. | 728 | This module supports multiple cards and autoprobe. |
729 | 729 | ||
730 | Module snd-hda-intel | 730 | Module snd-hda-intel |
731 | -------------------- | 731 | -------------------- |
732 | 732 | ||
733 | Module for Intel HD Audio (ICH6, ICH6M, ESB2, ICH7, ICH8, ICH9, ICH10, | 733 | Module for Intel HD Audio (ICH6, ICH6M, ESB2, ICH7, ICH8, ICH9, ICH10, |
734 | PCH, SCH), | 734 | PCH, SCH), |
735 | ATI SB450, SB600, R600, RS600, RS690, RS780, RV610, RV620, | 735 | ATI SB450, SB600, R600, RS600, RS690, RS780, RV610, RV620, |
736 | RV630, RV635, RV670, RV770, | 736 | RV630, RV635, RV670, RV770, |
737 | VIA VT8251/VT8237A, | 737 | VIA VT8251/VT8237A, |
738 | SIS966, ULI M5461 | 738 | SIS966, ULI M5461 |
739 | 739 | ||
740 | [Multiple options for each card instance] | 740 | [Multiple options for each card instance] |
741 | model - force the model name | 741 | model - force the model name |
742 | position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF) | 742 | position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF) |
743 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) | 743 | probe_mask - Bitmask to probe codecs (default = -1, meaning all slots) |
744 | When the bit 8 (0x100) is set, the lower 8 bits are used | 744 | When the bit 8 (0x100) is set, the lower 8 bits are used |
745 | as the "fixed" codec slots; i.e. the driver probes the | 745 | as the "fixed" codec slots; i.e. the driver probes the |
746 | slots regardless what hardware reports back | 746 | slots regardless what hardware reports back |
747 | probe_only - Only probing and no codec initialization (default=off); | 747 | probe_only - Only probing and no codec initialization (default=off); |
748 | Useful to check the initial codec status for debugging | 748 | Useful to check the initial codec status for debugging |
749 | bdl_pos_adj - Specifies the DMA IRQ timing delay in samples. | 749 | bdl_pos_adj - Specifies the DMA IRQ timing delay in samples. |
750 | Passing -1 will make the driver to choose the appropriate | 750 | Passing -1 will make the driver to choose the appropriate |
751 | value based on the controller chip. | 751 | value based on the controller chip. |
752 | 752 | ||
753 | [Single (global) options] | 753 | [Single (global) options] |
754 | single_cmd - Use single immediate commands to communicate with | 754 | single_cmd - Use single immediate commands to communicate with |
755 | codecs (for debugging only) | 755 | codecs (for debugging only) |
756 | enable_msi - Enable Message Signaled Interrupt (MSI) (default = off) | 756 | enable_msi - Enable Message Signaled Interrupt (MSI) (default = off) |
757 | power_save - Automatic power-saving timtout (in second, 0 = | 757 | power_save - Automatic power-saving timtout (in second, 0 = |
758 | disable) | 758 | disable) |
759 | power_save_controller - Reset HD-audio controller in power-saving mode | 759 | power_save_controller - Reset HD-audio controller in power-saving mode |
760 | (default = on) | 760 | (default = on) |
761 | 761 | ||
762 | This module supports multiple cards and autoprobe. | 762 | This module supports multiple cards and autoprobe. |
763 | 763 | ||
764 | See Documentation/sound/alsa/HD-Audio.txt for more details about | 764 | See Documentation/sound/alsa/HD-Audio.txt for more details about |
765 | HD-audio driver. | 765 | HD-audio driver. |
766 | 766 | ||
767 | Each codec may have a model table for different configurations. | 767 | Each codec may have a model table for different configurations. |
768 | If your machine isn't listed there, the default (usually minimal) | 768 | If your machine isn't listed there, the default (usually minimal) |
769 | configuration is set up. You can pass "model=<name>" option to | 769 | configuration is set up. You can pass "model=<name>" option to |
770 | specify a certain model in such a case. There are different | 770 | specify a certain model in such a case. There are different |
771 | models depending on the codec chip. The list of available models | 771 | models depending on the codec chip. The list of available models |
772 | is found in HD-Audio-Models.txt | 772 | is found in HD-Audio-Models.txt |
773 | 773 | ||
774 | The model name "genric" is treated as a special case. When this | 774 | The model name "genric" is treated as a special case. When this |
775 | model is given, the driver uses the generic codec parser without | 775 | model is given, the driver uses the generic codec parser without |
776 | "codec-patch". It's sometimes good for testing and debugging. | 776 | "codec-patch". It's sometimes good for testing and debugging. |
777 | 777 | ||
778 | If the default configuration doesn't work and one of the above | 778 | If the default configuration doesn't work and one of the above |
779 | matches with your device, report it together with alsa-info.sh | 779 | matches with your device, report it together with alsa-info.sh |
780 | output (with --no-upload option) to kernel bugzilla or alsa-devel | 780 | output (with --no-upload option) to kernel bugzilla or alsa-devel |
781 | ML (see the section "Links and Addresses"). | 781 | ML (see the section "Links and Addresses"). |
782 | 782 | ||
783 | power_save and power_save_controller options are for power-saving | 783 | power_save and power_save_controller options are for power-saving |
784 | mode. See powersave.txt for details. | 784 | mode. See powersave.txt for details. |
785 | 785 | ||
786 | Note 2: If you get click noises on output, try the module option | 786 | Note 2: If you get click noises on output, try the module option |
787 | position_fix=1 or 2. position_fix=1 will use the SD_LPIB | 787 | position_fix=1 or 2. position_fix=1 will use the SD_LPIB |
788 | register value without FIFO size correction as the current | 788 | register value without FIFO size correction as the current |
789 | DMA pointer. position_fix=2 will make the driver to use | 789 | DMA pointer. position_fix=2 will make the driver to use |
790 | the position buffer instead of reading SD_LPIB register. | 790 | the position buffer instead of reading SD_LPIB register. |
791 | (Usually SD_LPIB register is more accurate than the | 791 | (Usually SD_LPIB register is more accurate than the |
792 | position buffer.) | 792 | position buffer.) |
793 | 793 | ||
794 | NB: If you get many "azx_get_response timeout" messages at | 794 | NB: If you get many "azx_get_response timeout" messages at |
795 | loading, it's likely a problem of interrupts (e.g. ACPI irq | 795 | loading, it's likely a problem of interrupts (e.g. ACPI irq |
796 | routing). Try to boot with options like "pci=noacpi". Also, you | 796 | routing). Try to boot with options like "pci=noacpi". Also, you |
797 | can try "single_cmd=1" module option. This will switch the | 797 | can try "single_cmd=1" module option. This will switch the |
798 | communication method between HDA controller and codecs to the | 798 | communication method between HDA controller and codecs to the |
799 | single immediate commands instead of CORB/RIRB. Basically, the | 799 | single immediate commands instead of CORB/RIRB. Basically, the |
800 | single command mode is provided only for BIOS, and you won't get | 800 | single command mode is provided only for BIOS, and you won't get |
801 | unsolicited events, too. But, at least, this works independently | 801 | unsolicited events, too. But, at least, this works independently |
802 | from the irq. Remember this is a last resort, and should be | 802 | from the irq. Remember this is a last resort, and should be |
803 | avoided as much as possible... | 803 | avoided as much as possible... |
804 | 804 | ||
805 | MORE NOTES ON "azx_get_response timeout" PROBLEMS: | 805 | MORE NOTES ON "azx_get_response timeout" PROBLEMS: |
806 | On some hardwares, you may need to add a proper probe_mask option | 806 | On some hardwares, you may need to add a proper probe_mask option |
807 | to avoid the "azx_get_response timeout" problem above, instead. | 807 | to avoid the "azx_get_response timeout" problem above, instead. |
808 | This occurs when the access to non-existing or non-working codec slot | 808 | This occurs when the access to non-existing or non-working codec slot |
809 | (likely a modem one) causes a stall of the communication via HD-audio | 809 | (likely a modem one) causes a stall of the communication via HD-audio |
810 | bus. You can see which codec slots are probed by enabling | 810 | bus. You can see which codec slots are probed by enabling |
811 | CONFIG_SND_DEBUG_VERBOSE, or simply from the file name of the codec | 811 | CONFIG_SND_DEBUG_VERBOSE, or simply from the file name of the codec |
812 | proc files. Then limit the slots to probe by probe_mask option. | 812 | proc files. Then limit the slots to probe by probe_mask option. |
813 | For example, probe_mask=1 means to probe only the first slot, and | 813 | For example, probe_mask=1 means to probe only the first slot, and |
814 | probe_mask=4 means only the third slot. | 814 | probe_mask=4 means only the third slot. |
815 | 815 | ||
816 | The power-management is supported. | 816 | The power-management is supported. |
817 | 817 | ||
818 | Module snd-hdsp | 818 | Module snd-hdsp |
819 | --------------- | 819 | --------------- |
820 | 820 | ||
821 | Module for RME Hammerfall DSP audio interface(s) | 821 | Module for RME Hammerfall DSP audio interface(s) |
822 | 822 | ||
823 | This module supports multiple cards. | 823 | This module supports multiple cards. |
824 | 824 | ||
825 | Note: The firmware data can be automatically loaded via hotplug | 825 | Note: The firmware data can be automatically loaded via hotplug |
826 | when CONFIG_FW_LOADER is set. Otherwise, you need to load | 826 | when CONFIG_FW_LOADER is set. Otherwise, you need to load |
827 | the firmware via hdsploader utility included in alsa-tools | 827 | the firmware via hdsploader utility included in alsa-tools |
828 | package. | 828 | package. |
829 | The firmware data is found in alsa-firmware package. | 829 | The firmware data is found in alsa-firmware package. |
830 | 830 | ||
831 | Note: snd-page-alloc module does the job which snd-hammerfall-mem | 831 | Note: snd-page-alloc module does the job which snd-hammerfall-mem |
832 | module did formerly. It will allocate the buffers in advance | 832 | module did formerly. It will allocate the buffers in advance |
833 | when any HDSP cards are found. To make the buffer | 833 | when any HDSP cards are found. To make the buffer |
834 | allocation sure, load snd-page-alloc module in the early | 834 | allocation sure, load snd-page-alloc module in the early |
835 | stage of boot sequence. See "Early Buffer Allocation" | 835 | stage of boot sequence. See "Early Buffer Allocation" |
836 | section. | 836 | section. |
837 | 837 | ||
838 | Module snd-hdspm | 838 | Module snd-hdspm |
839 | ---------------- | 839 | ---------------- |
840 | 840 | ||
841 | Module for RME HDSP MADI board. | 841 | Module for RME HDSP MADI board. |
842 | 842 | ||
843 | precise_ptr - Enable precise pointer, or disable. | 843 | precise_ptr - Enable precise pointer, or disable. |
844 | line_outs_monitor - Send playback streams to analog outs by default. | 844 | line_outs_monitor - Send playback streams to analog outs by default. |
845 | enable_monitor - Enable Analog Out on Channel 63/64 by default. | 845 | enable_monitor - Enable Analog Out on Channel 63/64 by default. |
846 | 846 | ||
847 | See hdspm.txt for details. | 847 | See hdspm.txt for details. |
848 | 848 | ||
849 | Module snd-hifier | 849 | Module snd-hifier |
850 | ----------------- | 850 | ----------------- |
851 | 851 | ||
852 | Module for the MediaTek/TempoTec HiFier Fantasia sound card. | 852 | Module for the MediaTek/TempoTec HiFier Fantasia sound card. |
853 | 853 | ||
854 | This module supports autoprobe and multiple cards. | 854 | This module supports autoprobe and multiple cards. |
855 | 855 | ||
856 | Module snd-ice1712 | 856 | Module snd-ice1712 |
857 | ------------------ | 857 | ------------------ |
858 | 858 | ||
859 | Module for Envy24 (ICE1712) based PCI sound cards. | 859 | Module for Envy24 (ICE1712) based PCI sound cards. |
860 | * MidiMan M Audio Delta 1010 | 860 | * MidiMan M Audio Delta 1010 |
861 | * MidiMan M Audio Delta 1010LT | 861 | * MidiMan M Audio Delta 1010LT |
862 | * MidiMan M Audio Delta DiO 2496 | 862 | * MidiMan M Audio Delta DiO 2496 |
863 | * MidiMan M Audio Delta 66 | 863 | * MidiMan M Audio Delta 66 |
864 | * MidiMan M Audio Delta 44 | 864 | * MidiMan M Audio Delta 44 |
865 | * MidiMan M Audio Delta 410 | 865 | * MidiMan M Audio Delta 410 |
866 | * MidiMan M Audio Audiophile 2496 | 866 | * MidiMan M Audio Audiophile 2496 |
867 | * TerraTec EWS 88MT | 867 | * TerraTec EWS 88MT |
868 | * TerraTec EWS 88D | 868 | * TerraTec EWS 88D |
869 | * TerraTec EWX 24/96 | 869 | * TerraTec EWX 24/96 |
870 | * TerraTec DMX 6Fire | 870 | * TerraTec DMX 6Fire |
871 | * TerraTec Phase 88 | 871 | * TerraTec Phase 88 |
872 | * Hoontech SoundTrack DSP 24 | 872 | * Hoontech SoundTrack DSP 24 |
873 | * Hoontech SoundTrack DSP 24 Value | 873 | * Hoontech SoundTrack DSP 24 Value |
874 | * Hoontech SoundTrack DSP 24 Media 7.1 | 874 | * Hoontech SoundTrack DSP 24 Media 7.1 |
875 | * Event Electronics, EZ8 | 875 | * Event Electronics, EZ8 |
876 | * Digigram VX442 | 876 | * Digigram VX442 |
877 | * Lionstracs, Mediastaton | 877 | * Lionstracs, Mediastaton |
878 | * Terrasoniq TS 88 | 878 | * Terrasoniq TS 88 |
879 | 879 | ||
880 | model - Use the given board model, one of the following: | 880 | model - Use the given board model, one of the following: |
881 | delta1010, dio2496, delta66, delta44, audiophile, delta410, | 881 | delta1010, dio2496, delta66, delta44, audiophile, delta410, |
882 | delta1010lt, vx442, ewx2496, ews88mt, ews88mt_new, ews88d, | 882 | delta1010lt, vx442, ewx2496, ews88mt, ews88mt_new, ews88d, |
883 | dmx6fire, dsp24, dsp24_value, dsp24_71, ez8, | 883 | dmx6fire, dsp24, dsp24_value, dsp24_71, ez8, |
884 | phase88, mediastation | 884 | phase88, mediastation |
885 | omni - Omni I/O support for MidiMan M-Audio Delta44/66 | 885 | omni - Omni I/O support for MidiMan M-Audio Delta44/66 |
886 | cs8427_timeout - reset timeout for the CS8427 chip (S/PDIF transceiver) | 886 | cs8427_timeout - reset timeout for the CS8427 chip (S/PDIF transceiver) |
887 | in msec resolution, default value is 500 (0.5 sec) | 887 | in msec resolution, default value is 500 (0.5 sec) |
888 | 888 | ||
889 | This module supports multiple cards and autoprobe. Note: The consumer part | 889 | This module supports multiple cards and autoprobe. Note: The consumer part |
890 | is not used with all Envy24 based cards (for example in the MidiMan Delta | 890 | is not used with all Envy24 based cards (for example in the MidiMan Delta |
891 | serie). | 891 | serie). |
892 | 892 | ||
893 | Note: The supported board is detected by reading EEPROM or PCI | 893 | Note: The supported board is detected by reading EEPROM or PCI |
894 | SSID (if EEPROM isn't available). You can override the | 894 | SSID (if EEPROM isn't available). You can override the |
895 | model by passing "model" module option in case that the | 895 | model by passing "model" module option in case that the |
896 | driver isn't configured properly or you want to try another | 896 | driver isn't configured properly or you want to try another |
897 | type for testing. | 897 | type for testing. |
898 | 898 | ||
899 | Module snd-ice1724 | 899 | Module snd-ice1724 |
900 | ------------------ | 900 | ------------------ |
901 | 901 | ||
902 | Module for Envy24HT (VT/ICE1724), Envy24PT (VT1720) based PCI sound cards. | 902 | Module for Envy24HT (VT/ICE1724), Envy24PT (VT1720) based PCI sound cards. |
903 | * MidiMan M Audio Revolution 5.1 | 903 | * MidiMan M Audio Revolution 5.1 |
904 | * MidiMan M Audio Revolution 7.1 | 904 | * MidiMan M Audio Revolution 7.1 |
905 | * MidiMan M Audio Audiophile 192 | 905 | * MidiMan M Audio Audiophile 192 |
906 | * AMP Ltd AUDIO2000 | 906 | * AMP Ltd AUDIO2000 |
907 | * TerraTec Aureon 5.1 Sky | 907 | * TerraTec Aureon 5.1 Sky |
908 | * TerraTec Aureon 7.1 Space | 908 | * TerraTec Aureon 7.1 Space |
909 | * TerraTec Aureon 7.1 Universe | 909 | * TerraTec Aureon 7.1 Universe |
910 | * TerraTec Phase 22 | 910 | * TerraTec Phase 22 |
911 | * TerraTec Phase 28 | 911 | * TerraTec Phase 28 |
912 | * AudioTrak Prodigy 7.1 | 912 | * AudioTrak Prodigy 7.1 |
913 | * AudioTrak Prodigy 7.1 LT | 913 | * AudioTrak Prodigy 7.1 LT |
914 | * AudioTrak Prodigy 7.1 XT | 914 | * AudioTrak Prodigy 7.1 XT |
915 | * AudioTrak Prodigy 7.1 HIFI | 915 | * AudioTrak Prodigy 7.1 HIFI |
916 | * AudioTrak Prodigy 7.1 HD2 | 916 | * AudioTrak Prodigy 7.1 HD2 |
917 | * AudioTrak Prodigy 192 | 917 | * AudioTrak Prodigy 192 |
918 | * Pontis MS300 | 918 | * Pontis MS300 |
919 | * Albatron K8X800 Pro II | 919 | * Albatron K8X800 Pro II |
920 | * Chaintech ZNF3-150 | 920 | * Chaintech ZNF3-150 |
921 | * Chaintech ZNF3-250 | 921 | * Chaintech ZNF3-250 |
922 | * Chaintech 9CJS | 922 | * Chaintech 9CJS |
923 | * Chaintech AV-710 | 923 | * Chaintech AV-710 |
924 | * Shuttle SN25P | 924 | * Shuttle SN25P |
925 | * Onkyo SE-90PCI | 925 | * Onkyo SE-90PCI |
926 | * Onkyo SE-200PCI | 926 | * Onkyo SE-200PCI |
927 | * ESI Juli@ | 927 | * ESI Juli@ |
928 | * Hercules Fortissimo IV | 928 | * Hercules Fortissimo IV |
929 | * EGO-SYS WaveTerminal 192M | 929 | * EGO-SYS WaveTerminal 192M |
930 | 930 | ||
931 | model - Use the given board model, one of the following: | 931 | model - Use the given board model, one of the following: |
932 | revo51, revo71, amp2000, prodigy71, prodigy71lt, | 932 | revo51, revo71, amp2000, prodigy71, prodigy71lt, |
933 | prodigy71xt, prodigy71hifi, prodigyhd2, prodigy192, | 933 | prodigy71xt, prodigy71hifi, prodigyhd2, prodigy192, |
934 | juli, aureon51, aureon71, universe, ap192, k8x800, | 934 | juli, aureon51, aureon71, universe, ap192, k8x800, |
935 | phase22, phase28, ms300, av710, se200pci, se90pci, | 935 | phase22, phase28, ms300, av710, se200pci, se90pci, |
936 | fortissimo4, sn25p, WT192M | 936 | fortissimo4, sn25p, WT192M |
937 | 937 | ||
938 | This module supports multiple cards and autoprobe. | 938 | This module supports multiple cards and autoprobe. |
939 | 939 | ||
940 | Note: The supported board is detected by reading EEPROM or PCI | 940 | Note: The supported board is detected by reading EEPROM or PCI |
941 | SSID (if EEPROM isn't available). You can override the | 941 | SSID (if EEPROM isn't available). You can override the |
942 | model by passing "model" module option in case that the | 942 | model by passing "model" module option in case that the |
943 | driver isn't configured properly or you want to try another | 943 | driver isn't configured properly or you want to try another |
944 | type for testing. | 944 | type for testing. |
945 | 945 | ||
946 | Module snd-indigo | 946 | Module snd-indigo |
947 | ----------------- | 947 | ----------------- |
948 | 948 | ||
949 | Module for Echoaudio Indigo | 949 | Module for Echoaudio Indigo |
950 | 950 | ||
951 | This module supports multiple cards. | 951 | This module supports multiple cards. |
952 | The driver requires the firmware loader support on kernel. | 952 | The driver requires the firmware loader support on kernel. |
953 | 953 | ||
954 | Module snd-indigodj | 954 | Module snd-indigodj |
955 | ------------------- | 955 | ------------------- |
956 | 956 | ||
957 | Module for Echoaudio Indigo DJ | 957 | Module for Echoaudio Indigo DJ |
958 | 958 | ||
959 | This module supports multiple cards. | 959 | This module supports multiple cards. |
960 | The driver requires the firmware loader support on kernel. | 960 | The driver requires the firmware loader support on kernel. |
961 | 961 | ||
962 | Module snd-indigoio | 962 | Module snd-indigoio |
963 | ------------------- | 963 | ------------------- |
964 | 964 | ||
965 | Module for Echoaudio Indigo IO | 965 | Module for Echoaudio Indigo IO |
966 | 966 | ||
967 | This module supports multiple cards. | 967 | This module supports multiple cards. |
968 | The driver requires the firmware loader support on kernel. | 968 | The driver requires the firmware loader support on kernel. |
969 | 969 | ||
970 | Module snd-intel8x0 | 970 | Module snd-intel8x0 |
971 | ------------------- | 971 | ------------------- |
972 | 972 | ||
973 | Module for AC'97 motherboards from Intel and compatibles. | 973 | Module for AC'97 motherboards from Intel and compatibles. |
974 | * Intel i810/810E, i815, i820, i830, i84x, MX440 | 974 | * Intel i810/810E, i815, i820, i830, i84x, MX440 |
975 | ICH5, ICH6, ICH7, 6300ESB, ESB2 | 975 | ICH5, ICH6, ICH7, 6300ESB, ESB2 |
976 | * SiS 7012 (SiS 735) | 976 | * SiS 7012 (SiS 735) |
977 | * NVidia NForce, NForce2, NForce3, MCP04, CK804 | 977 | * NVidia NForce, NForce2, NForce3, MCP04, CK804 |
978 | CK8, CK8S, MCP501 | 978 | CK8, CK8S, MCP501 |
979 | * AMD AMD768, AMD8111 | 979 | * AMD AMD768, AMD8111 |
980 | * ALi m5455 | 980 | * ALi m5455 |
981 | 981 | ||
982 | ac97_clock - AC'97 codec clock base (0 = auto-detect) | 982 | ac97_clock - AC'97 codec clock base (0 = auto-detect) |
983 | ac97_quirk - AC'97 workaround for strange hardware | 983 | ac97_quirk - AC'97 workaround for strange hardware |
984 | See "AC97 Quirk Option" section below. | 984 | See "AC97 Quirk Option" section below. |
985 | buggy_irq - Enable workaround for buggy interrupts on some | 985 | buggy_irq - Enable workaround for buggy interrupts on some |
986 | motherboards (default yes on nForce chips, | 986 | motherboards (default yes on nForce chips, |
987 | otherwise off) | 987 | otherwise off) |
988 | buggy_semaphore - Enable workaround for hardwares with buggy | 988 | buggy_semaphore - Enable workaround for hardwares with buggy |
989 | semaphores (e.g. on some ASUS laptops) | 989 | semaphores (e.g. on some ASUS laptops) |
990 | (default off) | 990 | (default off) |
991 | spdif_aclink - Use S/PDIF over AC-link instead of direct connection | 991 | spdif_aclink - Use S/PDIF over AC-link instead of direct connection |
992 | from the controller chip | 992 | from the controller chip |
993 | (0 = off, 1 = on, -1 = default) | 993 | (0 = off, 1 = on, -1 = default) |
994 | 994 | ||
995 | This module supports one chip and autoprobe. | 995 | This module supports one chip and autoprobe. |
996 | 996 | ||
997 | Note: the latest driver supports auto-detection of chip clock. | 997 | Note: the latest driver supports auto-detection of chip clock. |
998 | if you still encounter too fast playback, specify the clock | 998 | if you still encounter too fast playback, specify the clock |
999 | explicitly via the module option "ac97_clock=41194". | 999 | explicitly via the module option "ac97_clock=41194". |
1000 | 1000 | ||
1001 | Joystick/MIDI ports are not supported by this driver. If your | 1001 | Joystick/MIDI ports are not supported by this driver. If your |
1002 | motherboard has these devices, use the ns558 or snd-mpu401 | 1002 | motherboard has these devices, use the ns558 or snd-mpu401 |
1003 | modules, respectively. | 1003 | modules, respectively. |
1004 | 1004 | ||
1005 | The power-management is supported. | 1005 | The power-management is supported. |
1006 | 1006 | ||
1007 | Module snd-intel8x0m | 1007 | Module snd-intel8x0m |
1008 | -------------------- | 1008 | -------------------- |
1009 | 1009 | ||
1010 | Module for Intel ICH (i8x0) chipset MC97 modems. | 1010 | Module for Intel ICH (i8x0) chipset MC97 modems. |
1011 | * Intel i810/810E, i815, i820, i830, i84x, MX440 | 1011 | * Intel i810/810E, i815, i820, i830, i84x, MX440 |
1012 | ICH5, ICH6, ICH7 | 1012 | ICH5, ICH6, ICH7 |
1013 | * SiS 7013 (SiS 735) | 1013 | * SiS 7013 (SiS 735) |
1014 | * NVidia NForce, NForce2, NForce2s, NForce3 | 1014 | * NVidia NForce, NForce2, NForce2s, NForce3 |
1015 | * AMD AMD8111 | 1015 | * AMD AMD8111 |
1016 | * ALi m5455 | 1016 | * ALi m5455 |
1017 | 1017 | ||
1018 | ac97_clock - AC'97 codec clock base (0 = auto-detect) | 1018 | ac97_clock - AC'97 codec clock base (0 = auto-detect) |
1019 | 1019 | ||
1020 | This module supports one card and autoprobe. | 1020 | This module supports one card and autoprobe. |
1021 | 1021 | ||
1022 | Note: The default index value of this module is -2, i.e. the first | 1022 | Note: The default index value of this module is -2, i.e. the first |
1023 | slot is excluded. | 1023 | slot is excluded. |
1024 | 1024 | ||
1025 | The power-management is supported. | 1025 | The power-management is supported. |
1026 | 1026 | ||
1027 | Module snd-interwave | 1027 | Module snd-interwave |
1028 | -------------------- | 1028 | -------------------- |
1029 | 1029 | ||
1030 | Module for Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32 | 1030 | Module for Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32 |
1031 | and other sound cards based on AMD InterWave (tm) chip. | 1031 | and other sound cards based on AMD InterWave (tm) chip. |
1032 | 1032 | ||
1033 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) | 1033 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) |
1034 | midi - 1 = MIDI UART enable, 0 = MIDI UART disable (default) | 1034 | midi - 1 = MIDI UART enable, 0 = MIDI UART disable (default) |
1035 | pcm_voices - reserved PCM voices for the synthesizer (default 2) | 1035 | pcm_voices - reserved PCM voices for the synthesizer (default 2) |
1036 | effect - 1 = InterWave effects enable (default 0); | 1036 | effect - 1 = InterWave effects enable (default 0); |
1037 | requires 8 voices | 1037 | requires 8 voices |
1038 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1038 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1039 | 1039 | ||
1040 | with isapnp=0, the following options are available: | 1040 | with isapnp=0, the following options are available: |
1041 | 1041 | ||
1042 | port - port # for InterWave chip (0x210,0x220,0x230,0x240,0x250,0x260) | 1042 | port - port # for InterWave chip (0x210,0x220,0x230,0x240,0x250,0x260) |
1043 | irq - IRQ # for InterWave chip (3,5,9,11,12,15) | 1043 | irq - IRQ # for InterWave chip (3,5,9,11,12,15) |
1044 | dma1 - DMA # for InterWave chip (0,1,3,5,6,7) | 1044 | dma1 - DMA # for InterWave chip (0,1,3,5,6,7) |
1045 | dma2 - DMA # for InterWave chip (0,1,3,5,6,7,-1=disable) | 1045 | dma2 - DMA # for InterWave chip (0,1,3,5,6,7,-1=disable) |
1046 | 1046 | ||
1047 | This module supports multiple cards, autoprobe and ISA PnP. | 1047 | This module supports multiple cards, autoprobe and ISA PnP. |
1048 | 1048 | ||
1049 | Module snd-interwave-stb | 1049 | Module snd-interwave-stb |
1050 | ------------------------ | 1050 | ------------------------ |
1051 | 1051 | ||
1052 | Module for UltraSound 32-Pro (sound card from STB used by Compaq) | 1052 | Module for UltraSound 32-Pro (sound card from STB used by Compaq) |
1053 | and other sound cards based on AMD InterWave (tm) chip with TEA6330T | 1053 | and other sound cards based on AMD InterWave (tm) chip with TEA6330T |
1054 | circuit for extended control of bass, treble and master volume. | 1054 | circuit for extended control of bass, treble and master volume. |
1055 | 1055 | ||
1056 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) | 1056 | joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V) |
1057 | midi - 1 = MIDI UART enable, 0 = MIDI UART disable (default) | 1057 | midi - 1 = MIDI UART enable, 0 = MIDI UART disable (default) |
1058 | pcm_voices - reserved PCM voices for the synthesizer (default 2) | 1058 | pcm_voices - reserved PCM voices for the synthesizer (default 2) |
1059 | effect - 1 = InterWave effects enable (default 0); | 1059 | effect - 1 = InterWave effects enable (default 0); |
1060 | requires 8 voices | 1060 | requires 8 voices |
1061 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1061 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1062 | 1062 | ||
1063 | with isapnp=0, the following options are available: | 1063 | with isapnp=0, the following options are available: |
1064 | 1064 | ||
1065 | port - port # for InterWave chip (0x210,0x220,0x230,0x240,0x250,0x260) | 1065 | port - port # for InterWave chip (0x210,0x220,0x230,0x240,0x250,0x260) |
1066 | port_tc - tone control (i2c bus) port # for TEA6330T chip (0x350,0x360,0x370,0x380) | 1066 | port_tc - tone control (i2c bus) port # for TEA6330T chip (0x350,0x360,0x370,0x380) |
1067 | irq - IRQ # for InterWave chip (3,5,9,11,12,15) | 1067 | irq - IRQ # for InterWave chip (3,5,9,11,12,15) |
1068 | dma1 - DMA # for InterWave chip (0,1,3,5,6,7) | 1068 | dma1 - DMA # for InterWave chip (0,1,3,5,6,7) |
1069 | dma2 - DMA # for InterWave chip (0,1,3,5,6,7,-1=disable) | 1069 | dma2 - DMA # for InterWave chip (0,1,3,5,6,7,-1=disable) |
1070 | 1070 | ||
1071 | This module supports multiple cards, autoprobe and ISA PnP. | 1071 | This module supports multiple cards, autoprobe and ISA PnP. |
1072 | 1072 | ||
1073 | Module snd-korg1212 | 1073 | Module snd-korg1212 |
1074 | ------------------- | 1074 | ------------------- |
1075 | 1075 | ||
1076 | Module for Korg 1212 IO PCI card | 1076 | Module for Korg 1212 IO PCI card |
1077 | 1077 | ||
1078 | This module supports multiple cards. | 1078 | This module supports multiple cards. |
1079 | 1079 | ||
1080 | Module snd-layla20 | 1080 | Module snd-layla20 |
1081 | ------------------ | 1081 | ------------------ |
1082 | 1082 | ||
1083 | Module for Echoaudio Layla20 | 1083 | Module for Echoaudio Layla20 |
1084 | 1084 | ||
1085 | This module supports multiple cards. | 1085 | This module supports multiple cards. |
1086 | The driver requires the firmware loader support on kernel. | 1086 | The driver requires the firmware loader support on kernel. |
1087 | 1087 | ||
1088 | Module snd-layla24 | 1088 | Module snd-layla24 |
1089 | ------------------ | 1089 | ------------------ |
1090 | 1090 | ||
1091 | Module for Echoaudio Layla24 | 1091 | Module for Echoaudio Layla24 |
1092 | 1092 | ||
1093 | This module supports multiple cards. | 1093 | This module supports multiple cards. |
1094 | The driver requires the firmware loader support on kernel. | 1094 | The driver requires the firmware loader support on kernel. |
1095 | 1095 | ||
1096 | Module snd-maestro3 | 1096 | Module snd-maestro3 |
1097 | ------------------- | 1097 | ------------------- |
1098 | 1098 | ||
1099 | Module for Allegro/Maestro3 chips | 1099 | Module for Allegro/Maestro3 chips |
1100 | 1100 | ||
1101 | external_amp - enable external amp (enabled by default) | 1101 | external_amp - enable external amp (enabled by default) |
1102 | amp_gpio - GPIO pin number for external amp (0-15) or | 1102 | amp_gpio - GPIO pin number for external amp (0-15) or |
1103 | -1 for default pin (8 for allegro, 1 for | 1103 | -1 for default pin (8 for allegro, 1 for |
1104 | others) | 1104 | others) |
1105 | 1105 | ||
1106 | This module supports autoprobe and multiple chips. | 1106 | This module supports autoprobe and multiple chips. |
1107 | 1107 | ||
1108 | Note: the binding of amplifier is dependent on hardware. | 1108 | Note: the binding of amplifier is dependent on hardware. |
1109 | If there is no sound even though all channels are unmuted, try to | 1109 | If there is no sound even though all channels are unmuted, try to |
1110 | specify other gpio connection via amp_gpio option. | 1110 | specify other gpio connection via amp_gpio option. |
1111 | For example, a Panasonic notebook might need "amp_gpio=0x0d" | 1111 | For example, a Panasonic notebook might need "amp_gpio=0x0d" |
1112 | option. | 1112 | option. |
1113 | 1113 | ||
1114 | The power-management is supported. | 1114 | The power-management is supported. |
1115 | 1115 | ||
1116 | Module snd-mia | 1116 | Module snd-mia |
1117 | --------------- | 1117 | --------------- |
1118 | 1118 | ||
1119 | Module for Echoaudio Mia | 1119 | Module for Echoaudio Mia |
1120 | 1120 | ||
1121 | This module supports multiple cards. | 1121 | This module supports multiple cards. |
1122 | The driver requires the firmware loader support on kernel. | 1122 | The driver requires the firmware loader support on kernel. |
1123 | 1123 | ||
1124 | Module snd-miro | 1124 | Module snd-miro |
1125 | --------------- | 1125 | --------------- |
1126 | 1126 | ||
1127 | Module for Miro soundcards: miroSOUND PCM 1 pro, | 1127 | Module for Miro soundcards: miroSOUND PCM 1 pro, |
1128 | miroSOUND PCM 12, | 1128 | miroSOUND PCM 12, |
1129 | miroSOUND PCM 20 Radio. | 1129 | miroSOUND PCM 20 Radio. |
1130 | 1130 | ||
1131 | port - Port # (0x530,0x604,0xe80,0xf40) | 1131 | port - Port # (0x530,0x604,0xe80,0xf40) |
1132 | irq - IRQ # (5,7,9,10,11) | 1132 | irq - IRQ # (5,7,9,10,11) |
1133 | dma1 - 1st dma # (0,1,3) | 1133 | dma1 - 1st dma # (0,1,3) |
1134 | dma2 - 2nd dma # (0,1) | 1134 | dma2 - 2nd dma # (0,1) |
1135 | mpu_port - MPU-401 port # (0x300,0x310,0x320,0x330) | 1135 | mpu_port - MPU-401 port # (0x300,0x310,0x320,0x330) |
1136 | mpu_irq - MPU-401 irq # (5,7,9,10) | 1136 | mpu_irq - MPU-401 irq # (5,7,9,10) |
1137 | fm_port - FM Port # (0x388) | 1137 | fm_port - FM Port # (0x388) |
1138 | wss - enable WSS mode | 1138 | wss - enable WSS mode |
1139 | ide - enable onboard ide support | 1139 | ide - enable onboard ide support |
1140 | 1140 | ||
1141 | Module snd-mixart | 1141 | Module snd-mixart |
1142 | ----------------- | 1142 | ----------------- |
1143 | 1143 | ||
1144 | Module for Digigram miXart8 sound cards. | 1144 | Module for Digigram miXart8 sound cards. |
1145 | 1145 | ||
1146 | This module supports multiple cards. | 1146 | This module supports multiple cards. |
1147 | Note: One miXart8 board will be represented as 4 alsa cards. | 1147 | Note: One miXart8 board will be represented as 4 alsa cards. |
1148 | See MIXART.txt for details. | 1148 | See MIXART.txt for details. |
1149 | 1149 | ||
1150 | When the driver is compiled as a module and the hotplug firmware | 1150 | When the driver is compiled as a module and the hotplug firmware |
1151 | is supported, the firmware data is loaded via hotplug automatically. | 1151 | is supported, the firmware data is loaded via hotplug automatically. |
1152 | Install the necessary firmware files in alsa-firmware package. | 1152 | Install the necessary firmware files in alsa-firmware package. |
1153 | When no hotplug fw loader is available, you need to load the | 1153 | When no hotplug fw loader is available, you need to load the |
1154 | firmware via mixartloader utility in alsa-tools package. | 1154 | firmware via mixartloader utility in alsa-tools package. |
1155 | 1155 | ||
1156 | Module snd-mona | 1156 | Module snd-mona |
1157 | --------------- | 1157 | --------------- |
1158 | 1158 | ||
1159 | Module for Echoaudio Mona | 1159 | Module for Echoaudio Mona |
1160 | 1160 | ||
1161 | This module supports multiple cards. | 1161 | This module supports multiple cards. |
1162 | The driver requires the firmware loader support on kernel. | 1162 | The driver requires the firmware loader support on kernel. |
1163 | 1163 | ||
1164 | Module snd-mpu401 | 1164 | Module snd-mpu401 |
1165 | ----------------- | 1165 | ----------------- |
1166 | 1166 | ||
1167 | Module for MPU-401 UART devices. | 1167 | Module for MPU-401 UART devices. |
1168 | 1168 | ||
1169 | port - port number or -1 (disable) | 1169 | port - port number or -1 (disable) |
1170 | irq - IRQ number or -1 (disable) | 1170 | irq - IRQ number or -1 (disable) |
1171 | pnp - PnP detection - 0 = disable, 1 = enable (default) | 1171 | pnp - PnP detection - 0 = disable, 1 = enable (default) |
1172 | 1172 | ||
1173 | This module supports multiple devices and PnP. | 1173 | This module supports multiple devices and PnP. |
1174 | 1174 | ||
1175 | Module snd-msnd-classic | 1175 | Module snd-msnd-classic |
1176 | ----------------------- | 1176 | ----------------------- |
1177 | 1177 | ||
1178 | Module for Turtle Beach MultiSound Classic, Tahiti or Monterey | 1178 | Module for Turtle Beach MultiSound Classic, Tahiti or Monterey |
1179 | soundcards. | 1179 | soundcards. |
1180 | 1180 | ||
1181 | io - Port # for msnd-classic card | 1181 | io - Port # for msnd-classic card |
1182 | irq - IRQ # for msnd-classic card | 1182 | irq - IRQ # for msnd-classic card |
1183 | mem - Memory address (0xb0000, 0xc8000, 0xd0000, 0xd8000, | 1183 | mem - Memory address (0xb0000, 0xc8000, 0xd0000, 0xd8000, |
1184 | 0xe0000 or 0xe8000) | 1184 | 0xe0000 or 0xe8000) |
1185 | write_ndelay - enable write ndelay (default = 1) | 1185 | write_ndelay - enable write ndelay (default = 1) |
1186 | calibrate_signal - calibrate signal (default = 0) | 1186 | calibrate_signal - calibrate signal (default = 0) |
1187 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1187 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1188 | digital - Digital daughterboard present (default = 0) | 1188 | digital - Digital daughterboard present (default = 0) |
1189 | cfg - Config port (0x250, 0x260 or 0x270) default = PnP | 1189 | cfg - Config port (0x250, 0x260 or 0x270) default = PnP |
1190 | reset - Reset all devices | 1190 | reset - Reset all devices |
1191 | mpu_io - MPU401 I/O port | 1191 | mpu_io - MPU401 I/O port |
1192 | mpu_irq - MPU401 irq# | 1192 | mpu_irq - MPU401 irq# |
1193 | ide_io0 - IDE port #0 | 1193 | ide_io0 - IDE port #0 |
1194 | ide_io1 - IDE port #1 | 1194 | ide_io1 - IDE port #1 |
1195 | ide_irq - IDE irq# | 1195 | ide_irq - IDE irq# |
1196 | joystick_io - Joystick I/O port | 1196 | joystick_io - Joystick I/O port |
1197 | 1197 | ||
1198 | The driver requires firmware files "turtlebeach/msndinit.bin" and | 1198 | The driver requires firmware files "turtlebeach/msndinit.bin" and |
1199 | "turtlebeach/msndperm.bin" in the proper firmware directory. | 1199 | "turtlebeach/msndperm.bin" in the proper firmware directory. |
1200 | 1200 | ||
1201 | See Documentation/sound/oss/MultiSound for important information | 1201 | See Documentation/sound/oss/MultiSound for important information |
1202 | about this driver. Note that it has been discontinued, but the | 1202 | about this driver. Note that it has been discontinued, but the |
1203 | Voyetra Turtle Beach knowledge base entry for it is still available | 1203 | Voyetra Turtle Beach knowledge base entry for it is still available |
1204 | at | 1204 | at |
1205 | http://www.turtlebeach.com/site/kb_ftp/790.asp | 1205 | http://www.turtlebeach.com/site/kb_ftp/790.asp |
1206 | 1206 | ||
1207 | Module snd-msnd-pinnacle | 1207 | Module snd-msnd-pinnacle |
1208 | ------------------------ | 1208 | ------------------------ |
1209 | 1209 | ||
1210 | Module for Turtle Beach MultiSound Pinnacle/Fiji soundcards. | 1210 | Module for Turtle Beach MultiSound Pinnacle/Fiji soundcards. |
1211 | 1211 | ||
1212 | io - Port # for pinnacle/fiji card | 1212 | io - Port # for pinnacle/fiji card |
1213 | irq - IRQ # for pinnalce/fiji card | 1213 | irq - IRQ # for pinnalce/fiji card |
1214 | mem - Memory address (0xb0000, 0xc8000, 0xd0000, 0xd8000, | 1214 | mem - Memory address (0xb0000, 0xc8000, 0xd0000, 0xd8000, |
1215 | 0xe0000 or 0xe8000) | 1215 | 0xe0000 or 0xe8000) |
1216 | write_ndelay - enable write ndelay (default = 1) | 1216 | write_ndelay - enable write ndelay (default = 1) |
1217 | calibrate_signal - calibrate signal (default = 0) | 1217 | calibrate_signal - calibrate signal (default = 0) |
1218 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1218 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1219 | 1219 | ||
1220 | The driver requires firmware files "turtlebeach/pndspini.bin" and | 1220 | The driver requires firmware files "turtlebeach/pndspini.bin" and |
1221 | "turtlebeach/pndsperm.bin" in the proper firmware directory. | 1221 | "turtlebeach/pndsperm.bin" in the proper firmware directory. |
1222 | 1222 | ||
1223 | Module snd-mtpav | 1223 | Module snd-mtpav |
1224 | ---------------- | 1224 | ---------------- |
1225 | 1225 | ||
1226 | Module for MOTU MidiTimePiece AV multiport MIDI (on the parallel | 1226 | Module for MOTU MidiTimePiece AV multiport MIDI (on the parallel |
1227 | port). | 1227 | port). |
1228 | 1228 | ||
1229 | port - I/O port # for MTPAV (0x378,0x278, default=0x378) | 1229 | port - I/O port # for MTPAV (0x378,0x278, default=0x378) |
1230 | irq - IRQ # for MTPAV (7,5, default=7) | 1230 | irq - IRQ # for MTPAV (7,5, default=7) |
1231 | hwports - number of supported hardware ports, default=8. | 1231 | hwports - number of supported hardware ports, default=8. |
1232 | 1232 | ||
1233 | Module supports only 1 card. This module has no enable option. | 1233 | Module supports only 1 card. This module has no enable option. |
1234 | 1234 | ||
1235 | Module snd-mts64 | 1235 | Module snd-mts64 |
1236 | ---------------- | 1236 | ---------------- |
1237 | 1237 | ||
1238 | Module for Ego Systems (ESI) Miditerminal 4140 | 1238 | Module for Ego Systems (ESI) Miditerminal 4140 |
1239 | 1239 | ||
1240 | This module supports multiple devices. | 1240 | This module supports multiple devices. |
1241 | Requires parport (CONFIG_PARPORT). | 1241 | Requires parport (CONFIG_PARPORT). |
1242 | 1242 | ||
1243 | Module snd-nm256 | 1243 | Module snd-nm256 |
1244 | ---------------- | 1244 | ---------------- |
1245 | 1245 | ||
1246 | Module for NeoMagic NM256AV/ZX chips | 1246 | Module for NeoMagic NM256AV/ZX chips |
1247 | 1247 | ||
1248 | playback_bufsize - max playback frame size in kB (4-128kB) | 1248 | playback_bufsize - max playback frame size in kB (4-128kB) |
1249 | capture_bufsize - max capture frame size in kB (4-128kB) | 1249 | capture_bufsize - max capture frame size in kB (4-128kB) |
1250 | force_ac97 - 0 or 1 (disabled by default) | 1250 | force_ac97 - 0 or 1 (disabled by default) |
1251 | buffer_top - specify buffer top address | 1251 | buffer_top - specify buffer top address |
1252 | use_cache - 0 or 1 (disabled by default) | 1252 | use_cache - 0 or 1 (disabled by default) |
1253 | vaio_hack - alias buffer_top=0x25a800 | 1253 | vaio_hack - alias buffer_top=0x25a800 |
1254 | reset_workaround - enable AC97 RESET workaround for some laptops | 1254 | reset_workaround - enable AC97 RESET workaround for some laptops |
1255 | reset_workaround2 - enable extended AC97 RESET workaround for some | 1255 | reset_workaround2 - enable extended AC97 RESET workaround for some |
1256 | other laptops | 1256 | other laptops |
1257 | 1257 | ||
1258 | This module supports one chip and autoprobe. | 1258 | This module supports one chip and autoprobe. |
1259 | 1259 | ||
1260 | The power-management is supported. | 1260 | The power-management is supported. |
1261 | 1261 | ||
1262 | Note: on some notebooks the buffer address cannot be detected | 1262 | Note: on some notebooks the buffer address cannot be detected |
1263 | automatically, or causes hang-up during initialization. | 1263 | automatically, or causes hang-up during initialization. |
1264 | In such a case, specify the buffer top address explicitly via | 1264 | In such a case, specify the buffer top address explicitly via |
1265 | the buffer_top option. | 1265 | the buffer_top option. |
1266 | For example, | 1266 | For example, |
1267 | Sony F250: buffer_top=0x25a800 | 1267 | Sony F250: buffer_top=0x25a800 |
1268 | Sony F270: buffer_top=0x272800 | 1268 | Sony F270: buffer_top=0x272800 |
1269 | The driver supports only ac97 codec. It's possible to force | 1269 | The driver supports only ac97 codec. It's possible to force |
1270 | to initialize/use ac97 although it's not detected. In such a | 1270 | to initialize/use ac97 although it's not detected. In such a |
1271 | case, use force_ac97=1 option - but *NO* guarantee whether it | 1271 | case, use force_ac97=1 option - but *NO* guarantee whether it |
1272 | works! | 1272 | works! |
1273 | 1273 | ||
1274 | Note: The NM256 chip can be linked internally with non-AC97 | 1274 | Note: The NM256 chip can be linked internally with non-AC97 |
1275 | codecs. This driver supports only the AC97 codec, and won't work | 1275 | codecs. This driver supports only the AC97 codec, and won't work |
1276 | with machines with other (most likely CS423x or OPL3SAx) chips, | 1276 | with machines with other (most likely CS423x or OPL3SAx) chips, |
1277 | even though the device is detected in lspci. In such a case, try | 1277 | even though the device is detected in lspci. In such a case, try |
1278 | other drivers, e.g. snd-cs4232 or snd-opl3sa2. Some has ISA-PnP | 1278 | other drivers, e.g. snd-cs4232 or snd-opl3sa2. Some has ISA-PnP |
1279 | but some doesn't have ISA PnP. You'll need to specify isapnp=0 | 1279 | but some doesn't have ISA PnP. You'll need to specify isapnp=0 |
1280 | and proper hardware parameters in the case without ISA PnP. | 1280 | and proper hardware parameters in the case without ISA PnP. |
1281 | 1281 | ||
1282 | Note: some laptops need a workaround for AC97 RESET. For the | 1282 | Note: some laptops need a workaround for AC97 RESET. For the |
1283 | known hardware like Dell Latitude LS and Sony PCG-F305, this | 1283 | known hardware like Dell Latitude LS and Sony PCG-F305, this |
1284 | workaround is enabled automatically. For other laptops with a | 1284 | workaround is enabled automatically. For other laptops with a |
1285 | hard freeze, you can try reset_workaround=1 option. | 1285 | hard freeze, you can try reset_workaround=1 option. |
1286 | 1286 | ||
1287 | Note: Dell Latitude CSx laptops have another problem regarding | 1287 | Note: Dell Latitude CSx laptops have another problem regarding |
1288 | AC97 RESET. On these laptops, reset_workaround2 option is | 1288 | AC97 RESET. On these laptops, reset_workaround2 option is |
1289 | turned on as default. This option is worth to try if the | 1289 | turned on as default. This option is worth to try if the |
1290 | previous reset_workaround option doesn't help. | 1290 | previous reset_workaround option doesn't help. |
1291 | 1291 | ||
1292 | Note: This driver is really crappy. It's a porting from the | 1292 | Note: This driver is really crappy. It's a porting from the |
1293 | OSS driver, which is a result of black-magic reverse engineering. | 1293 | OSS driver, which is a result of black-magic reverse engineering. |
1294 | The detection of codec will fail if the driver is loaded *after* | 1294 | The detection of codec will fail if the driver is loaded *after* |
1295 | X-server as described above. You might be able to force to load | 1295 | X-server as described above. You might be able to force to load |
1296 | the module, but it may result in hang-up. Hence, make sure that | 1296 | the module, but it may result in hang-up. Hence, make sure that |
1297 | you load this module *before* X if you encounter this kind of | 1297 | you load this module *before* X if you encounter this kind of |
1298 | problem. | 1298 | problem. |
1299 | 1299 | ||
1300 | Module snd-opl3sa2 | 1300 | Module snd-opl3sa2 |
1301 | ------------------ | 1301 | ------------------ |
1302 | 1302 | ||
1303 | Module for Yamaha OPL3-SA2/SA3 sound cards. | 1303 | Module for Yamaha OPL3-SA2/SA3 sound cards. |
1304 | 1304 | ||
1305 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1305 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1306 | 1306 | ||
1307 | with isapnp=0, the following options are available: | 1307 | with isapnp=0, the following options are available: |
1308 | 1308 | ||
1309 | port - control port # for OPL3-SA chip (0x370) | 1309 | port - control port # for OPL3-SA chip (0x370) |
1310 | sb_port - SB port # for OPL3-SA chip (0x220,0x240) | 1310 | sb_port - SB port # for OPL3-SA chip (0x220,0x240) |
1311 | wss_port - WSS port # for OPL3-SA chip (0x530,0xe80,0xf40,0x604) | 1311 | wss_port - WSS port # for OPL3-SA chip (0x530,0xe80,0xf40,0x604) |
1312 | midi_port - port # for MPU-401 UART (0x300,0x330), -1 = disable | 1312 | midi_port - port # for MPU-401 UART (0x300,0x330), -1 = disable |
1313 | fm_port - FM port # for OPL3-SA chip (0x388), -1 = disable | 1313 | fm_port - FM port # for OPL3-SA chip (0x388), -1 = disable |
1314 | irq - IRQ # for OPL3-SA chip (5,7,9,10) | 1314 | irq - IRQ # for OPL3-SA chip (5,7,9,10) |
1315 | dma1 - first DMA # for Yamaha OPL3-SA chip (0,1,3) | 1315 | dma1 - first DMA # for Yamaha OPL3-SA chip (0,1,3) |
1316 | dma2 - second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable | 1316 | dma2 - second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable |
1317 | 1317 | ||
1318 | This module supports multiple cards and ISA PnP. It does not support | 1318 | This module supports multiple cards and ISA PnP. It does not support |
1319 | autoprobe (if ISA PnP is not used) thus all ports must be specified!!! | 1319 | autoprobe (if ISA PnP is not used) thus all ports must be specified!!! |
1320 | 1320 | ||
1321 | The power-management is supported. | 1321 | The power-management is supported. |
1322 | 1322 | ||
1323 | Module snd-opti92x-ad1848 | 1323 | Module snd-opti92x-ad1848 |
1324 | ------------------------- | 1324 | ------------------------- |
1325 | 1325 | ||
1326 | Module for sound cards based on OPTi 82c92x and Analog Devices AD1848 chips. | 1326 | Module for sound cards based on OPTi 82c92x and Analog Devices AD1848 chips. |
1327 | Module works with OAK Mozart cards as well. | 1327 | Module works with OAK Mozart cards as well. |
1328 | 1328 | ||
1329 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1329 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1330 | 1330 | ||
1331 | with isapnp=0, the following options are available: | 1331 | with isapnp=0, the following options are available: |
1332 | 1332 | ||
1333 | port - port # for WSS chip (0x530,0xe80,0xf40,0x604) | 1333 | port - port # for WSS chip (0x530,0xe80,0xf40,0x604) |
1334 | mpu_port - port # for MPU-401 UART (0x300,0x310,0x320,0x330) | 1334 | mpu_port - port # for MPU-401 UART (0x300,0x310,0x320,0x330) |
1335 | fm_port - port # for OPL3 device (0x388) | 1335 | fm_port - port # for OPL3 device (0x388) |
1336 | irq - IRQ # for WSS chip (5,7,9,10,11) | 1336 | irq - IRQ # for WSS chip (5,7,9,10,11) |
1337 | mpu_irq - IRQ # for MPU-401 UART (5,7,9,10) | 1337 | mpu_irq - IRQ # for MPU-401 UART (5,7,9,10) |
1338 | dma1 - first DMA # for WSS chip (0,1,3) | 1338 | dma1 - first DMA # for WSS chip (0,1,3) |
1339 | 1339 | ||
1340 | This module supports only one card, autoprobe and PnP. | 1340 | This module supports only one card, autoprobe and PnP. |
1341 | 1341 | ||
1342 | Module snd-opti92x-cs4231 | 1342 | Module snd-opti92x-cs4231 |
1343 | ------------------------- | 1343 | ------------------------- |
1344 | 1344 | ||
1345 | Module for sound cards based on OPTi 82c92x and Crystal CS4231 chips. | 1345 | Module for sound cards based on OPTi 82c92x and Crystal CS4231 chips. |
1346 | 1346 | ||
1347 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1347 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1348 | 1348 | ||
1349 | with isapnp=0, the following options are available: | 1349 | with isapnp=0, the following options are available: |
1350 | 1350 | ||
1351 | port - port # for WSS chip (0x530,0xe80,0xf40,0x604) | 1351 | port - port # for WSS chip (0x530,0xe80,0xf40,0x604) |
1352 | mpu_port - port # for MPU-401 UART (0x300,0x310,0x320,0x330) | 1352 | mpu_port - port # for MPU-401 UART (0x300,0x310,0x320,0x330) |
1353 | fm_port - port # for OPL3 device (0x388) | 1353 | fm_port - port # for OPL3 device (0x388) |
1354 | irq - IRQ # for WSS chip (5,7,9,10,11) | 1354 | irq - IRQ # for WSS chip (5,7,9,10,11) |
1355 | mpu_irq - IRQ # for MPU-401 UART (5,7,9,10) | 1355 | mpu_irq - IRQ # for MPU-401 UART (5,7,9,10) |
1356 | dma1 - first DMA # for WSS chip (0,1,3) | 1356 | dma1 - first DMA # for WSS chip (0,1,3) |
1357 | dma2 - second DMA # for WSS chip (0,1,3) | 1357 | dma2 - second DMA # for WSS chip (0,1,3) |
1358 | 1358 | ||
1359 | This module supports only one card, autoprobe and PnP. | 1359 | This module supports only one card, autoprobe and PnP. |
1360 | 1360 | ||
1361 | Module snd-opti93x | 1361 | Module snd-opti93x |
1362 | ------------------ | 1362 | ------------------ |
1363 | 1363 | ||
1364 | Module for sound cards based on OPTi 82c93x chips. | 1364 | Module for sound cards based on OPTi 82c93x chips. |
1365 | 1365 | ||
1366 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1366 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1367 | 1367 | ||
1368 | with isapnp=0, the following options are available: | 1368 | with isapnp=0, the following options are available: |
1369 | 1369 | ||
1370 | port - port # for WSS chip (0x530,0xe80,0xf40,0x604) | 1370 | port - port # for WSS chip (0x530,0xe80,0xf40,0x604) |
1371 | mpu_port - port # for MPU-401 UART (0x300,0x310,0x320,0x330) | 1371 | mpu_port - port # for MPU-401 UART (0x300,0x310,0x320,0x330) |
1372 | fm_port - port # for OPL3 device (0x388) | 1372 | fm_port - port # for OPL3 device (0x388) |
1373 | irq - IRQ # for WSS chip (5,7,9,10,11) | 1373 | irq - IRQ # for WSS chip (5,7,9,10,11) |
1374 | mpu_irq - IRQ # for MPU-401 UART (5,7,9,10) | 1374 | mpu_irq - IRQ # for MPU-401 UART (5,7,9,10) |
1375 | dma1 - first DMA # for WSS chip (0,1,3) | 1375 | dma1 - first DMA # for WSS chip (0,1,3) |
1376 | dma2 - second DMA # for WSS chip (0,1,3) | 1376 | dma2 - second DMA # for WSS chip (0,1,3) |
1377 | 1377 | ||
1378 | This module supports only one card, autoprobe and PnP. | 1378 | This module supports only one card, autoprobe and PnP. |
1379 | 1379 | ||
1380 | Module snd-oxygen | 1380 | Module snd-oxygen |
1381 | ----------------- | 1381 | ----------------- |
1382 | 1382 | ||
1383 | Module for sound cards based on the C-Media CMI8788 chip: | 1383 | Module for sound cards based on the C-Media CMI8788 chip: |
1384 | * Asound A-8788 | 1384 | * Asound A-8788 |
1385 | * AuzenTech X-Meridian | 1385 | * AuzenTech X-Meridian |
1386 | * Bgears b-Enspirer | 1386 | * Bgears b-Enspirer |
1387 | * Club3D Theatron DTS | 1387 | * Club3D Theatron DTS |
1388 | * HT-Omega Claro (plus) | 1388 | * HT-Omega Claro (plus) |
1389 | * HT-Omega Claro halo (XT) | 1389 | * HT-Omega Claro halo (XT) |
1390 | * Razer Barracuda AC-1 | 1390 | * Razer Barracuda AC-1 |
1391 | * Sondigo Inferno | 1391 | * Sondigo Inferno |
1392 | 1392 | ||
1393 | This module supports autoprobe and multiple cards. | 1393 | This module supports autoprobe and multiple cards. |
1394 | 1394 | ||
1395 | Module snd-pcsp | 1395 | Module snd-pcsp |
1396 | ----------------- | 1396 | ----------------- |
1397 | 1397 | ||
1398 | Module for internal PC-Speaker. | 1398 | Module for internal PC-Speaker. |
1399 | 1399 | ||
1400 | nforce_wa - enable NForce chipset workaround. Expect bad sound. | 1400 | nforce_wa - enable NForce chipset workaround. Expect bad sound. |
1401 | 1401 | ||
1402 | This module supports system beeps, some kind of PCM playback and | 1402 | This module supports system beeps, some kind of PCM playback and |
1403 | even a few mixer controls. | 1403 | even a few mixer controls. |
1404 | 1404 | ||
1405 | Module snd-pcxhr | 1405 | Module snd-pcxhr |
1406 | ---------------- | 1406 | ---------------- |
1407 | 1407 | ||
1408 | Module for Digigram PCXHR boards | 1408 | Module for Digigram PCXHR boards |
1409 | 1409 | ||
1410 | This module supports multiple cards. | 1410 | This module supports multiple cards. |
1411 | 1411 | ||
1412 | Module snd-portman2x4 | 1412 | Module snd-portman2x4 |
1413 | --------------------- | 1413 | --------------------- |
1414 | 1414 | ||
1415 | Module for Midiman Portman 2x4 parallel port MIDI interface | 1415 | Module for Midiman Portman 2x4 parallel port MIDI interface |
1416 | 1416 | ||
1417 | This module supports multiple cards. | 1417 | This module supports multiple cards. |
1418 | 1418 | ||
1419 | Module snd-powermac (on ppc only) | 1419 | Module snd-powermac (on ppc only) |
1420 | --------------------------------- | 1420 | --------------------------------- |
1421 | 1421 | ||
1422 | Module for PowerMac, iMac and iBook on-board soundchips | 1422 | Module for PowerMac, iMac and iBook on-board soundchips |
1423 | 1423 | ||
1424 | enable_beep - enable beep using PCM (enabled as default) | 1424 | enable_beep - enable beep using PCM (enabled as default) |
1425 | 1425 | ||
1426 | Module supports autoprobe a chip. | 1426 | Module supports autoprobe a chip. |
1427 | 1427 | ||
1428 | Note: the driver may have problems regarding endianess. | 1428 | Note: the driver may have problems regarding endianess. |
1429 | 1429 | ||
1430 | The power-management is supported. | 1430 | The power-management is supported. |
1431 | 1431 | ||
1432 | Module snd-pxa2xx-ac97 (on arm only) | 1432 | Module snd-pxa2xx-ac97 (on arm only) |
1433 | ------------------------------------ | 1433 | ------------------------------------ |
1434 | 1434 | ||
1435 | Module for AC97 driver for the Intel PXA2xx chip | 1435 | Module for AC97 driver for the Intel PXA2xx chip |
1436 | 1436 | ||
1437 | For ARM architecture only. | 1437 | For ARM architecture only. |
1438 | 1438 | ||
1439 | The power-management is supported. | 1439 | The power-management is supported. |
1440 | 1440 | ||
1441 | Module snd-riptide | 1441 | Module snd-riptide |
1442 | ------------------ | 1442 | ------------------ |
1443 | 1443 | ||
1444 | Module for Conexant Riptide chip | 1444 | Module for Conexant Riptide chip |
1445 | 1445 | ||
1446 | joystick_port - Joystick port # (default: 0x200) | 1446 | joystick_port - Joystick port # (default: 0x200) |
1447 | mpu_port - MPU401 port # (default: 0x330) | 1447 | mpu_port - MPU401 port # (default: 0x330) |
1448 | opl3_port - OPL3 port # (default: 0x388) | 1448 | opl3_port - OPL3 port # (default: 0x388) |
1449 | 1449 | ||
1450 | This module supports multiple cards. | 1450 | This module supports multiple cards. |
1451 | The driver requires the firmware loader support on kernel. | 1451 | The driver requires the firmware loader support on kernel. |
1452 | You need to install the firmware file "riptide.hex" to the standard | 1452 | You need to install the firmware file "riptide.hex" to the standard |
1453 | firmware path (e.g. /lib/firmware). | 1453 | firmware path (e.g. /lib/firmware). |
1454 | 1454 | ||
1455 | Module snd-rme32 | 1455 | Module snd-rme32 |
1456 | ---------------- | 1456 | ---------------- |
1457 | 1457 | ||
1458 | Module for RME Digi32, Digi32 Pro and Digi32/8 (Sek'd Prodif32, | 1458 | Module for RME Digi32, Digi32 Pro and Digi32/8 (Sek'd Prodif32, |
1459 | Prodif96 and Prodif Gold) sound cards. | 1459 | Prodif96 and Prodif Gold) sound cards. |
1460 | 1460 | ||
1461 | This module supports multiple cards. | 1461 | This module supports multiple cards. |
1462 | 1462 | ||
1463 | Module snd-rme96 | 1463 | Module snd-rme96 |
1464 | ---------------- | 1464 | ---------------- |
1465 | 1465 | ||
1466 | Module for RME Digi96, Digi96/8 and Digi96/8 PRO/PAD/PST sound cards. | 1466 | Module for RME Digi96, Digi96/8 and Digi96/8 PRO/PAD/PST sound cards. |
1467 | 1467 | ||
1468 | This module supports multiple cards. | 1468 | This module supports multiple cards. |
1469 | 1469 | ||
1470 | Module snd-rme9652 | 1470 | Module snd-rme9652 |
1471 | ------------------ | 1471 | ------------------ |
1472 | 1472 | ||
1473 | Module for RME Digi9652 (Hammerfall, Hammerfall-Light) sound cards. | 1473 | Module for RME Digi9652 (Hammerfall, Hammerfall-Light) sound cards. |
1474 | 1474 | ||
1475 | precise_ptr - Enable precise pointer (doesn't work reliably). | 1475 | precise_ptr - Enable precise pointer (doesn't work reliably). |
1476 | (default = 0) | 1476 | (default = 0) |
1477 | 1477 | ||
1478 | This module supports multiple cards. | 1478 | This module supports multiple cards. |
1479 | 1479 | ||
1480 | Note: snd-page-alloc module does the job which snd-hammerfall-mem | 1480 | Note: snd-page-alloc module does the job which snd-hammerfall-mem |
1481 | module did formerly. It will allocate the buffers in advance | 1481 | module did formerly. It will allocate the buffers in advance |
1482 | when any RME9652 cards are found. To make the buffer | 1482 | when any RME9652 cards are found. To make the buffer |
1483 | allocation sure, load snd-page-alloc module in the early | 1483 | allocation sure, load snd-page-alloc module in the early |
1484 | stage of boot sequence. See "Early Buffer Allocation" | 1484 | stage of boot sequence. See "Early Buffer Allocation" |
1485 | section. | 1485 | section. |
1486 | 1486 | ||
1487 | Module snd-sa11xx-uda1341 (on arm only) | 1487 | Module snd-sa11xx-uda1341 (on arm only) |
1488 | --------------------------------------- | 1488 | --------------------------------------- |
1489 | 1489 | ||
1490 | Module for Philips UDA1341TS on Compaq iPAQ H3600 sound card. | 1490 | Module for Philips UDA1341TS on Compaq iPAQ H3600 sound card. |
1491 | 1491 | ||
1492 | Module supports only one card. | 1492 | Module supports only one card. |
1493 | Module has no enable and index options. | 1493 | Module has no enable and index options. |
1494 | 1494 | ||
1495 | The power-management is supported. | 1495 | The power-management is supported. |
1496 | 1496 | ||
1497 | Module snd-sb8 | 1497 | Module snd-sb8 |
1498 | -------------- | 1498 | -------------- |
1499 | 1499 | ||
1500 | Module for 8-bit SoundBlaster cards: SoundBlaster 1.0, | 1500 | Module for 8-bit SoundBlaster cards: SoundBlaster 1.0, |
1501 | SoundBlaster 2.0, | 1501 | SoundBlaster 2.0, |
1502 | SoundBlaster Pro | 1502 | SoundBlaster Pro |
1503 | 1503 | ||
1504 | port - port # for SB DSP chip (0x220,0x240,0x260) | 1504 | port - port # for SB DSP chip (0x220,0x240,0x260) |
1505 | irq - IRQ # for SB DSP chip (5,7,9,10) | 1505 | irq - IRQ # for SB DSP chip (5,7,9,10) |
1506 | dma8 - DMA # for SB DSP chip (1,3) | 1506 | dma8 - DMA # for SB DSP chip (1,3) |
1507 | 1507 | ||
1508 | This module supports multiple cards and autoprobe. | 1508 | This module supports multiple cards and autoprobe. |
1509 | 1509 | ||
1510 | The power-management is supported. | 1510 | The power-management is supported. |
1511 | 1511 | ||
1512 | Module snd-sb16 and snd-sbawe | 1512 | Module snd-sb16 and snd-sbawe |
1513 | ----------------------------- | 1513 | ----------------------------- |
1514 | 1514 | ||
1515 | Module for 16-bit SoundBlaster cards: SoundBlaster 16 (PnP), | 1515 | Module for 16-bit SoundBlaster cards: SoundBlaster 16 (PnP), |
1516 | SoundBlaster AWE 32 (PnP), | 1516 | SoundBlaster AWE 32 (PnP), |
1517 | SoundBlaster AWE 64 PnP | 1517 | SoundBlaster AWE 64 PnP |
1518 | 1518 | ||
1519 | mic_agc - Mic Auto-Gain-Control - 0 = disable, 1 = enable (default) | 1519 | mic_agc - Mic Auto-Gain-Control - 0 = disable, 1 = enable (default) |
1520 | csp - ASP/CSP chip support - 0 = disable (default), 1 = enable | 1520 | csp - ASP/CSP chip support - 0 = disable (default), 1 = enable |
1521 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1521 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1522 | 1522 | ||
1523 | with isapnp=0, the following options are available: | 1523 | with isapnp=0, the following options are available: |
1524 | 1524 | ||
1525 | port - port # for SB DSP 4.x chip (0x220,0x240,0x260) | 1525 | port - port # for SB DSP 4.x chip (0x220,0x240,0x260) |
1526 | mpu_port - port # for MPU-401 UART (0x300,0x330), -1 = disable | 1526 | mpu_port - port # for MPU-401 UART (0x300,0x330), -1 = disable |
1527 | awe_port - base port # for EMU8000 synthesizer (0x620,0x640,0x660) | 1527 | awe_port - base port # for EMU8000 synthesizer (0x620,0x640,0x660) |
1528 | (snd-sbawe module only) | 1528 | (snd-sbawe module only) |
1529 | irq - IRQ # for SB DSP 4.x chip (5,7,9,10) | 1529 | irq - IRQ # for SB DSP 4.x chip (5,7,9,10) |
1530 | dma8 - 8-bit DMA # for SB DSP 4.x chip (0,1,3) | 1530 | dma8 - 8-bit DMA # for SB DSP 4.x chip (0,1,3) |
1531 | dma16 - 16-bit DMA # for SB DSP 4.x chip (5,6,7) | 1531 | dma16 - 16-bit DMA # for SB DSP 4.x chip (5,6,7) |
1532 | 1532 | ||
1533 | This module supports multiple cards, autoprobe and ISA PnP. | 1533 | This module supports multiple cards, autoprobe and ISA PnP. |
1534 | 1534 | ||
1535 | Note: To use Vibra16X cards in 16-bit half duplex mode, you must | 1535 | Note: To use Vibra16X cards in 16-bit half duplex mode, you must |
1536 | disable 16bit DMA with dma16 = -1 module parameter. | 1536 | disable 16bit DMA with dma16 = -1 module parameter. |
1537 | Also, all Sound Blaster 16 type cards can operate in 16-bit | 1537 | Also, all Sound Blaster 16 type cards can operate in 16-bit |
1538 | half duplex mode through 8-bit DMA channel by disabling their | 1538 | half duplex mode through 8-bit DMA channel by disabling their |
1539 | 16-bit DMA channel. | 1539 | 16-bit DMA channel. |
1540 | 1540 | ||
1541 | The power-management is supported. | 1541 | The power-management is supported. |
1542 | 1542 | ||
1543 | Module snd-sc6000 | 1543 | Module snd-sc6000 |
1544 | ----------------- | 1544 | ----------------- |
1545 | 1545 | ||
1546 | Module for Gallant SC-6000 soundcard. | 1546 | Module for Gallant SC-6000 soundcard and later models: SC-6600 |
1547 | and SC-7000. | ||
1547 | 1548 | ||
1548 | port - Port # (0x220 or 0x240) | 1549 | port - Port # (0x220 or 0x240) |
1549 | mss_port - MSS Port # (0x530 or 0xe80) | 1550 | mss_port - MSS Port # (0x530 or 0xe80) |
1550 | irq - IRQ # (5,7,9,10,11) | 1551 | irq - IRQ # (5,7,9,10,11) |
1551 | mpu_irq - MPU-401 IRQ # (5,7,9,10) ,0 - no MPU-401 irq | 1552 | mpu_irq - MPU-401 IRQ # (5,7,9,10) ,0 - no MPU-401 irq |
1552 | dma - DMA # (1,3,0) | 1553 | dma - DMA # (1,3,0) |
1554 | joystick - Enable gameport - 0 = disable (default), 1 = enable | ||
1553 | 1555 | ||
1554 | This module supports multiple cards. | 1556 | This module supports multiple cards. |
1555 | 1557 | ||
1556 | This card is also known as Audio Excel DSP 16 or Zoltrix AV302. | 1558 | This card is also known as Audio Excel DSP 16 or Zoltrix AV302. |
1557 | 1559 | ||
1558 | Module snd-sgalaxy | 1560 | Module snd-sgalaxy |
1559 | ------------------ | 1561 | ------------------ |
1560 | 1562 | ||
1561 | Module for Aztech Sound Galaxy sound card. | 1563 | Module for Aztech Sound Galaxy sound card. |
1562 | 1564 | ||
1563 | sbport - Port # for SB16 interface (0x220,0x240) | 1565 | sbport - Port # for SB16 interface (0x220,0x240) |
1564 | wssport - Port # for WSS interface (0x530,0xe80,0xf40,0x604) | 1566 | wssport - Port # for WSS interface (0x530,0xe80,0xf40,0x604) |
1565 | irq - IRQ # (7,9,10,11) | 1567 | irq - IRQ # (7,9,10,11) |
1566 | dma1 - DMA # | 1568 | dma1 - DMA # |
1567 | 1569 | ||
1568 | This module supports multiple cards. | 1570 | This module supports multiple cards. |
1569 | 1571 | ||
1570 | The power-management is supported. | 1572 | The power-management is supported. |
1571 | 1573 | ||
1572 | Module snd-sscape | 1574 | Module snd-sscape |
1573 | ----------------- | 1575 | ----------------- |
1574 | 1576 | ||
1575 | Module for ENSONIQ SoundScape PnP cards. | 1577 | Module for ENSONIQ SoundScape PnP cards. |
1576 | 1578 | ||
1577 | port - Port # (PnP setup) | 1579 | port - Port # (PnP setup) |
1578 | wss_port - WSS Port # (PnP setup) | 1580 | wss_port - WSS Port # (PnP setup) |
1579 | irq - IRQ # (PnP setup) | 1581 | irq - IRQ # (PnP setup) |
1580 | mpu_irq - MPU-401 IRQ # (PnP setup) | 1582 | mpu_irq - MPU-401 IRQ # (PnP setup) |
1581 | dma - DMA # (PnP setup) | 1583 | dma - DMA # (PnP setup) |
1582 | dma2 - 2nd DMA # (PnP setup, -1 to disable) | 1584 | dma2 - 2nd DMA # (PnP setup, -1 to disable) |
1583 | 1585 | ||
1584 | This module supports multiple cards. ISA PnP must be enabled. | 1586 | This module supports multiple cards. ISA PnP must be enabled. |
1585 | You need sscape_ctl tool in alsa-tools package for loading | 1587 | You need sscape_ctl tool in alsa-tools package for loading |
1586 | the microcode. | 1588 | the microcode. |
1587 | 1589 | ||
1588 | Module snd-sun-amd7930 (on sparc only) | 1590 | Module snd-sun-amd7930 (on sparc only) |
1589 | -------------------------------------- | 1591 | -------------------------------------- |
1590 | 1592 | ||
1591 | Module for AMD7930 sound chips found on Sparcs. | 1593 | Module for AMD7930 sound chips found on Sparcs. |
1592 | 1594 | ||
1593 | This module supports multiple cards. | 1595 | This module supports multiple cards. |
1594 | 1596 | ||
1595 | Module snd-sun-cs4231 (on sparc only) | 1597 | Module snd-sun-cs4231 (on sparc only) |
1596 | ------------------------------------- | 1598 | ------------------------------------- |
1597 | 1599 | ||
1598 | Module for CS4231 sound chips found on Sparcs. | 1600 | Module for CS4231 sound chips found on Sparcs. |
1599 | 1601 | ||
1600 | This module supports multiple cards. | 1602 | This module supports multiple cards. |
1601 | 1603 | ||
1602 | Module snd-sun-dbri (on sparc only) | 1604 | Module snd-sun-dbri (on sparc only) |
1603 | ----------------------------------- | 1605 | ----------------------------------- |
1604 | 1606 | ||
1605 | Module for DBRI sound chips found on Sparcs. | 1607 | Module for DBRI sound chips found on Sparcs. |
1606 | 1608 | ||
1607 | This module supports multiple cards. | 1609 | This module supports multiple cards. |
1608 | 1610 | ||
1609 | Module snd-wavefront | 1611 | Module snd-wavefront |
1610 | -------------------- | 1612 | -------------------- |
1611 | 1613 | ||
1612 | Module for Turtle Beach Maui, Tropez and Tropez+ sound cards. | 1614 | Module for Turtle Beach Maui, Tropez and Tropez+ sound cards. |
1613 | 1615 | ||
1614 | use_cs4232_midi - Use CS4232 MPU-401 interface | 1616 | use_cs4232_midi - Use CS4232 MPU-401 interface |
1615 | (inaccessibly located inside your computer) | 1617 | (inaccessibly located inside your computer) |
1616 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) | 1618 | isapnp - ISA PnP detection - 0 = disable, 1 = enable (default) |
1617 | 1619 | ||
1618 | with isapnp=0, the following options are available: | 1620 | with isapnp=0, the following options are available: |
1619 | 1621 | ||
1620 | cs4232_pcm_port - Port # for CS4232 PCM interface. | 1622 | cs4232_pcm_port - Port # for CS4232 PCM interface. |
1621 | cs4232_pcm_irq - IRQ # for CS4232 PCM interface (5,7,9,11,12,15). | 1623 | cs4232_pcm_irq - IRQ # for CS4232 PCM interface (5,7,9,11,12,15). |
1622 | cs4232_mpu_port - Port # for CS4232 MPU-401 interface. | 1624 | cs4232_mpu_port - Port # for CS4232 MPU-401 interface. |
1623 | cs4232_mpu_irq - IRQ # for CS4232 MPU-401 interface (9,11,12,15). | 1625 | cs4232_mpu_irq - IRQ # for CS4232 MPU-401 interface (9,11,12,15). |
1624 | ics2115_port - Port # for ICS2115 | 1626 | ics2115_port - Port # for ICS2115 |
1625 | ics2115_irq - IRQ # for ICS2115 | 1627 | ics2115_irq - IRQ # for ICS2115 |
1626 | fm_port - FM OPL-3 Port # | 1628 | fm_port - FM OPL-3 Port # |
1627 | dma1 - DMA1 # for CS4232 PCM interface. | 1629 | dma1 - DMA1 # for CS4232 PCM interface. |
1628 | dma2 - DMA2 # for CS4232 PCM interface. | 1630 | dma2 - DMA2 # for CS4232 PCM interface. |
1629 | 1631 | ||
1630 | The below are options for wavefront_synth features: | 1632 | The below are options for wavefront_synth features: |
1631 | wf_raw - Assume that we need to boot the OS (default:no) | 1633 | wf_raw - Assume that we need to boot the OS (default:no) |
1632 | If yes, then during driver loading, the state of the board is | 1634 | If yes, then during driver loading, the state of the board is |
1633 | ignored, and we reset the board and load the firmware anyway. | 1635 | ignored, and we reset the board and load the firmware anyway. |
1634 | fx_raw - Assume that the FX process needs help (default:yes) | 1636 | fx_raw - Assume that the FX process needs help (default:yes) |
1635 | If false, we'll leave the FX processor in whatever state it is | 1637 | If false, we'll leave the FX processor in whatever state it is |
1636 | when the driver is loaded. The default is to download the | 1638 | when the driver is loaded. The default is to download the |
1637 | microprogram and associated coefficients to set it up for | 1639 | microprogram and associated coefficients to set it up for |
1638 | "default" operation, whatever that means. | 1640 | "default" operation, whatever that means. |
1639 | debug_default - Debug parameters for card initialization | 1641 | debug_default - Debug parameters for card initialization |
1640 | wait_usecs - How long to wait without sleeping, usecs | 1642 | wait_usecs - How long to wait without sleeping, usecs |
1641 | (default:150) | 1643 | (default:150) |
1642 | This magic number seems to give pretty optimal throughput | 1644 | This magic number seems to give pretty optimal throughput |
1643 | based on my limited experimentation. | 1645 | based on my limited experimentation. |
1644 | If you want to play around with it and find a better value, be | 1646 | If you want to play around with it and find a better value, be |
1645 | my guest. Remember, the idea is to get a number that causes us | 1647 | my guest. Remember, the idea is to get a number that causes us |
1646 | to just busy wait for as many WaveFront commands as possible, | 1648 | to just busy wait for as many WaveFront commands as possible, |
1647 | without coming up with a number so large that we hog the whole | 1649 | without coming up with a number so large that we hog the whole |
1648 | CPU. | 1650 | CPU. |
1649 | Specifically, with this number, out of about 134,000 status | 1651 | Specifically, with this number, out of about 134,000 status |
1650 | waits, only about 250 result in a sleep. | 1652 | waits, only about 250 result in a sleep. |
1651 | sleep_interval - How long to sleep when waiting for reply | 1653 | sleep_interval - How long to sleep when waiting for reply |
1652 | (default: 100) | 1654 | (default: 100) |
1653 | sleep_tries - How many times to try sleeping during a wait | 1655 | sleep_tries - How many times to try sleeping during a wait |
1654 | (default: 50) | 1656 | (default: 50) |
1655 | ospath - Pathname to processed ICS2115 OS firmware | 1657 | ospath - Pathname to processed ICS2115 OS firmware |
1656 | (default:wavefront.os) | 1658 | (default:wavefront.os) |
1657 | The path name of the ISC2115 OS firmware. In the recent | 1659 | The path name of the ISC2115 OS firmware. In the recent |
1658 | version, it's handled via firmware loader framework, so it | 1660 | version, it's handled via firmware loader framework, so it |
1659 | must be installed in the proper path, typically, | 1661 | must be installed in the proper path, typically, |
1660 | /lib/firmware. | 1662 | /lib/firmware. |
1661 | reset_time - How long to wait for a reset to take effect | 1663 | reset_time - How long to wait for a reset to take effect |
1662 | (default:2) | 1664 | (default:2) |
1663 | ramcheck_time - How many seconds to wait for the RAM test | 1665 | ramcheck_time - How many seconds to wait for the RAM test |
1664 | (default:20) | 1666 | (default:20) |
1665 | osrun_time - How many seconds to wait for the ICS2115 OS | 1667 | osrun_time - How many seconds to wait for the ICS2115 OS |
1666 | (default:10) | 1668 | (default:10) |
1667 | 1669 | ||
1668 | This module supports multiple cards and ISA PnP. | 1670 | This module supports multiple cards and ISA PnP. |
1669 | 1671 | ||
1670 | Note: the firmware file "wavefront.os" was located in the earlier | 1672 | Note: the firmware file "wavefront.os" was located in the earlier |
1671 | version in /etc. Now it's loaded via firmware loader, and | 1673 | version in /etc. Now it's loaded via firmware loader, and |
1672 | must be in the proper firmware path, such as /lib/firmware. | 1674 | must be in the proper firmware path, such as /lib/firmware. |
1673 | Copy (or symlink) the file appropriately if you get an error | 1675 | Copy (or symlink) the file appropriately if you get an error |
1674 | regarding firmware downloading after upgrading the kernel. | 1676 | regarding firmware downloading after upgrading the kernel. |
1675 | 1677 | ||
1676 | Module snd-sonicvibes | 1678 | Module snd-sonicvibes |
1677 | --------------------- | 1679 | --------------------- |
1678 | 1680 | ||
1679 | Module for S3 SonicVibes PCI sound cards. | 1681 | Module for S3 SonicVibes PCI sound cards. |
1680 | * PINE Schubert 32 PCI | 1682 | * PINE Schubert 32 PCI |
1681 | 1683 | ||
1682 | reverb - Reverb Enable - 1 = enable, 0 = disable (default) | 1684 | reverb - Reverb Enable - 1 = enable, 0 = disable (default) |
1683 | - SoundCard must have onboard SRAM for this. | 1685 | - SoundCard must have onboard SRAM for this. |
1684 | mge - Mic Gain Enable - 1 = enable, 0 = disable (default) | 1686 | mge - Mic Gain Enable - 1 = enable, 0 = disable (default) |
1685 | 1687 | ||
1686 | This module supports multiple cards and autoprobe. | 1688 | This module supports multiple cards and autoprobe. |
1687 | 1689 | ||
1688 | Module snd-serial-u16550 | 1690 | Module snd-serial-u16550 |
1689 | ------------------------ | 1691 | ------------------------ |
1690 | 1692 | ||
1691 | Module for UART16550A serial MIDI ports. | 1693 | Module for UART16550A serial MIDI ports. |
1692 | 1694 | ||
1693 | port - port # for UART16550A chip | 1695 | port - port # for UART16550A chip |
1694 | irq - IRQ # for UART16550A chip, -1 = poll mode | 1696 | irq - IRQ # for UART16550A chip, -1 = poll mode |
1695 | speed - speed in bauds (9600,19200,38400,57600,115200) | 1697 | speed - speed in bauds (9600,19200,38400,57600,115200) |
1696 | 38400 = default | 1698 | 38400 = default |
1697 | base - base for divisor in bauds (57600,115200,230400,460800) | 1699 | base - base for divisor in bauds (57600,115200,230400,460800) |
1698 | 115200 = default | 1700 | 115200 = default |
1699 | outs - number of MIDI ports in a serial port (1-4) | 1701 | outs - number of MIDI ports in a serial port (1-4) |
1700 | 1 = default | 1702 | 1 = default |
1701 | adaptor - Type of adaptor. | 1703 | adaptor - Type of adaptor. |
1702 | 0 = Soundcanvas, 1 = MS-124T, 2 = MS-124W S/A, | 1704 | 0 = Soundcanvas, 1 = MS-124T, 2 = MS-124W S/A, |
1703 | 3 = MS-124W M/B, 4 = Generic | 1705 | 3 = MS-124W M/B, 4 = Generic |
1704 | 1706 | ||
1705 | This module supports multiple cards. This module does not support autoprobe | 1707 | This module supports multiple cards. This module does not support autoprobe |
1706 | thus the main port must be specified!!! Other options are optional. | 1708 | thus the main port must be specified!!! Other options are optional. |
1707 | 1709 | ||
1708 | Module snd-trident | 1710 | Module snd-trident |
1709 | ------------------ | 1711 | ------------------ |
1710 | 1712 | ||
1711 | Module for Trident 4DWave DX/NX sound cards. | 1713 | Module for Trident 4DWave DX/NX sound cards. |
1712 | * Best Union Miss Melody 4DWave PCI | 1714 | * Best Union Miss Melody 4DWave PCI |
1713 | * HIS 4DWave PCI | 1715 | * HIS 4DWave PCI |
1714 | * Warpspeed ONSpeed 4DWave PCI | 1716 | * Warpspeed ONSpeed 4DWave PCI |
1715 | * AzTech PCI 64-Q3D | 1717 | * AzTech PCI 64-Q3D |
1716 | * Addonics SV 750 | 1718 | * Addonics SV 750 |
1717 | * CHIC True Sound 4Dwave | 1719 | * CHIC True Sound 4Dwave |
1718 | * Shark Predator4D-PCI | 1720 | * Shark Predator4D-PCI |
1719 | * Jaton SonicWave 4D | 1721 | * Jaton SonicWave 4D |
1720 | * SiS SI7018 PCI Audio | 1722 | * SiS SI7018 PCI Audio |
1721 | * Hoontech SoundTrack Digital 4DWave NX | 1723 | * Hoontech SoundTrack Digital 4DWave NX |
1722 | 1724 | ||
1723 | pcm_channels - max channels (voices) reserved for PCM | 1725 | pcm_channels - max channels (voices) reserved for PCM |
1724 | wavetable_size - max wavetable size in kB (4-?kb) | 1726 | wavetable_size - max wavetable size in kB (4-?kb) |
1725 | 1727 | ||
1726 | This module supports multiple cards and autoprobe. | 1728 | This module supports multiple cards and autoprobe. |
1727 | 1729 | ||
1728 | The power-management is supported. | 1730 | The power-management is supported. |
1729 | 1731 | ||
1730 | Module snd-usb-audio | 1732 | Module snd-usb-audio |
1731 | -------------------- | 1733 | -------------------- |
1732 | 1734 | ||
1733 | Module for USB audio and USB MIDI devices. | 1735 | Module for USB audio and USB MIDI devices. |
1734 | 1736 | ||
1735 | vid - Vendor ID for the device (optional) | 1737 | vid - Vendor ID for the device (optional) |
1736 | pid - Product ID for the device (optional) | 1738 | pid - Product ID for the device (optional) |
1737 | nrpacks - Max. number of packets per URB (default: 8) | 1739 | nrpacks - Max. number of packets per URB (default: 8) |
1738 | async_unlink - Use async unlink mode (default: yes) | 1740 | async_unlink - Use async unlink mode (default: yes) |
1739 | device_setup - Device specific magic number (optional) | 1741 | device_setup - Device specific magic number (optional) |
1740 | - Influence depends on the device | 1742 | - Influence depends on the device |
1741 | - Default: 0x0000 | 1743 | - Default: 0x0000 |
1742 | ignore_ctl_error - Ignore any USB-controller regarding mixer | 1744 | ignore_ctl_error - Ignore any USB-controller regarding mixer |
1743 | interface (default: no) | 1745 | interface (default: no) |
1744 | 1746 | ||
1745 | This module supports multiple devices, autoprobe and hotplugging. | 1747 | This module supports multiple devices, autoprobe and hotplugging. |
1746 | 1748 | ||
1747 | NB: nrpacks parameter can be modified dynamically via sysfs. | 1749 | NB: nrpacks parameter can be modified dynamically via sysfs. |
1748 | Don't put the value over 20. Changing via sysfs has no sanity | 1750 | Don't put the value over 20. Changing via sysfs has no sanity |
1749 | check. | 1751 | check. |
1750 | NB: async_unlink=0 would cause Oops. It remains just for | 1752 | NB: async_unlink=0 would cause Oops. It remains just for |
1751 | debugging purpose (if any). | 1753 | debugging purpose (if any). |
1752 | NB: ignore_ctl_error=1 may help when you get an error at accessing | 1754 | NB: ignore_ctl_error=1 may help when you get an error at accessing |
1753 | the mixer element such as URB error -22. This happens on some | 1755 | the mixer element such as URB error -22. This happens on some |
1754 | buggy USB device or the controller. | 1756 | buggy USB device or the controller. |
1755 | 1757 | ||
1756 | Module snd-usb-caiaq | 1758 | Module snd-usb-caiaq |
1757 | -------------------- | 1759 | -------------------- |
1758 | 1760 | ||
1759 | Module for caiaq UB audio interfaces, | 1761 | Module for caiaq UB audio interfaces, |
1760 | * Native Instruments RigKontrol2 | 1762 | * Native Instruments RigKontrol2 |
1761 | * Native Instruments Kore Controller | 1763 | * Native Instruments Kore Controller |
1762 | * Native Instruments Audio Kontrol 1 | 1764 | * Native Instruments Audio Kontrol 1 |
1763 | * Native Instruments Audio 8 DJ | 1765 | * Native Instruments Audio 8 DJ |
1764 | 1766 | ||
1765 | This module supports multiple devices, autoprobe and hotplugging. | 1767 | This module supports multiple devices, autoprobe and hotplugging. |
1766 | 1768 | ||
1767 | Module snd-usb-usx2y | 1769 | Module snd-usb-usx2y |
1768 | -------------------- | 1770 | -------------------- |
1769 | 1771 | ||
1770 | Module for Tascam USB US-122, US-224 and US-428 devices. | 1772 | Module for Tascam USB US-122, US-224 and US-428 devices. |
1771 | 1773 | ||
1772 | This module supports multiple devices, autoprobe and hotplugging. | 1774 | This module supports multiple devices, autoprobe and hotplugging. |
1773 | 1775 | ||
1774 | Note: you need to load the firmware via usx2yloader utility included | 1776 | Note: you need to load the firmware via usx2yloader utility included |
1775 | in alsa-tools and alsa-firmware packages. | 1777 | in alsa-tools and alsa-firmware packages. |
1776 | 1778 | ||
1777 | Module snd-via82xx | 1779 | Module snd-via82xx |
1778 | ------------------ | 1780 | ------------------ |
1779 | 1781 | ||
1780 | Module for AC'97 motherboards based on VIA 82C686A/686B, 8233, | 1782 | Module for AC'97 motherboards based on VIA 82C686A/686B, 8233, |
1781 | 8233A, 8233C, 8235, 8237 (south) bridge. | 1783 | 8233A, 8233C, 8235, 8237 (south) bridge. |
1782 | 1784 | ||
1783 | mpu_port - 0x300,0x310,0x320,0x330, otherwise obtain BIOS setup | 1785 | mpu_port - 0x300,0x310,0x320,0x330, otherwise obtain BIOS setup |
1784 | [VIA686A/686B only] | 1786 | [VIA686A/686B only] |
1785 | joystick - Enable joystick (default off) [VIA686A/686B only] | 1787 | joystick - Enable joystick (default off) [VIA686A/686B only] |
1786 | ac97_clock - AC'97 codec clock base (default 48000Hz) | 1788 | ac97_clock - AC'97 codec clock base (default 48000Hz) |
1787 | dxs_support - support DXS channels, | 1789 | dxs_support - support DXS channels, |
1788 | 0 = auto (default), 1 = enable, 2 = disable, | 1790 | 0 = auto (default), 1 = enable, 2 = disable, |
1789 | 3 = 48k only, 4 = no VRA, 5 = enable any sample | 1791 | 3 = 48k only, 4 = no VRA, 5 = enable any sample |
1790 | rate and different sample rates on different | 1792 | rate and different sample rates on different |
1791 | channels | 1793 | channels |
1792 | [VIA8233/C, 8235, 8237 only] | 1794 | [VIA8233/C, 8235, 8237 only] |
1793 | ac97_quirk - AC'97 workaround for strange hardware | 1795 | ac97_quirk - AC'97 workaround for strange hardware |
1794 | See "AC97 Quirk Option" section below. | 1796 | See "AC97 Quirk Option" section below. |
1795 | 1797 | ||
1796 | This module supports one chip and autoprobe. | 1798 | This module supports one chip and autoprobe. |
1797 | 1799 | ||
1798 | Note: on some SMP motherboards like MSI 694D the interrupts might | 1800 | Note: on some SMP motherboards like MSI 694D the interrupts might |
1799 | not be generated properly. In such a case, please try to | 1801 | not be generated properly. In such a case, please try to |
1800 | set the SMP (or MPS) version on BIOS to 1.1 instead of | 1802 | set the SMP (or MPS) version on BIOS to 1.1 instead of |
1801 | default value 1.4. Then the interrupt number will be | 1803 | default value 1.4. Then the interrupt number will be |
1802 | assigned under 15. You might also upgrade your BIOS. | 1804 | assigned under 15. You might also upgrade your BIOS. |
1803 | 1805 | ||
1804 | Note: VIA8233/5/7 (not VIA8233A) can support DXS (direct sound) | 1806 | Note: VIA8233/5/7 (not VIA8233A) can support DXS (direct sound) |
1805 | channels as the first PCM. On these channels, up to 4 | 1807 | channels as the first PCM. On these channels, up to 4 |
1806 | streams can be played at the same time, and the controller | 1808 | streams can be played at the same time, and the controller |
1807 | can perform sample rate conversion with separate rates for | 1809 | can perform sample rate conversion with separate rates for |
1808 | each channel. | 1810 | each channel. |
1809 | As default (dxs_support = 0), 48k fixed rate is chosen | 1811 | As default (dxs_support = 0), 48k fixed rate is chosen |
1810 | except for the known devices since the output is often | 1812 | except for the known devices since the output is often |
1811 | noisy except for 48k on some mother boards due to the | 1813 | noisy except for 48k on some mother boards due to the |
1812 | bug of BIOS. | 1814 | bug of BIOS. |
1813 | Please try once dxs_support=5 and if it works on other | 1815 | Please try once dxs_support=5 and if it works on other |
1814 | sample rates (e.g. 44.1kHz of mp3 playback), please let us | 1816 | sample rates (e.g. 44.1kHz of mp3 playback), please let us |
1815 | know the PCI subsystem vendor/device id's (output of | 1817 | know the PCI subsystem vendor/device id's (output of |
1816 | "lspci -nv"). | 1818 | "lspci -nv"). |
1817 | If dxs_support=5 does not work, try dxs_support=4; if it | 1819 | If dxs_support=5 does not work, try dxs_support=4; if it |
1818 | doesn't work too, try dxs_support=1. (dxs_support=1 is | 1820 | doesn't work too, try dxs_support=1. (dxs_support=1 is |
1819 | usually for old motherboards. The correct implemented | 1821 | usually for old motherboards. The correct implemented |
1820 | board should work with 4 or 5.) If it still doesn't | 1822 | board should work with 4 or 5.) If it still doesn't |
1821 | work and the default setting is ok, dxs_support=3 is the | 1823 | work and the default setting is ok, dxs_support=3 is the |
1822 | right choice. If the default setting doesn't work at all, | 1824 | right choice. If the default setting doesn't work at all, |
1823 | try dxs_support=2 to disable the DXS channels. | 1825 | try dxs_support=2 to disable the DXS channels. |
1824 | In any cases, please let us know the result and the | 1826 | In any cases, please let us know the result and the |
1825 | subsystem vendor/device ids. See "Links and Addresses" | 1827 | subsystem vendor/device ids. See "Links and Addresses" |
1826 | below. | 1828 | below. |
1827 | 1829 | ||
1828 | Note: for the MPU401 on VIA823x, use snd-mpu401 driver | 1830 | Note: for the MPU401 on VIA823x, use snd-mpu401 driver |
1829 | additionally. The mpu_port option is for VIA686 chips only. | 1831 | additionally. The mpu_port option is for VIA686 chips only. |
1830 | 1832 | ||
1831 | The power-management is supported. | 1833 | The power-management is supported. |
1832 | 1834 | ||
1833 | Module snd-via82xx-modem | 1835 | Module snd-via82xx-modem |
1834 | ------------------------ | 1836 | ------------------------ |
1835 | 1837 | ||
1836 | Module for VIA82xx AC97 modem | 1838 | Module for VIA82xx AC97 modem |
1837 | 1839 | ||
1838 | ac97_clock - AC'97 codec clock base (default 48000Hz) | 1840 | ac97_clock - AC'97 codec clock base (default 48000Hz) |
1839 | 1841 | ||
1840 | This module supports one card and autoprobe. | 1842 | This module supports one card and autoprobe. |
1841 | 1843 | ||
1842 | Note: The default index value of this module is -2, i.e. the first | 1844 | Note: The default index value of this module is -2, i.e. the first |
1843 | slot is excluded. | 1845 | slot is excluded. |
1844 | 1846 | ||
1845 | The power-management is supported. | 1847 | The power-management is supported. |
1846 | 1848 | ||
1847 | Module snd-virmidi | 1849 | Module snd-virmidi |
1848 | ------------------ | 1850 | ------------------ |
1849 | 1851 | ||
1850 | Module for virtual rawmidi devices. | 1852 | Module for virtual rawmidi devices. |
1851 | This module creates virtual rawmidi devices which communicate | 1853 | This module creates virtual rawmidi devices which communicate |
1852 | to the corresponding ALSA sequencer ports. | 1854 | to the corresponding ALSA sequencer ports. |
1853 | 1855 | ||
1854 | midi_devs - MIDI devices # (1-4, default=4) | 1856 | midi_devs - MIDI devices # (1-4, default=4) |
1855 | 1857 | ||
1856 | This module supports multiple cards. | 1858 | This module supports multiple cards. |
1857 | 1859 | ||
1858 | Module snd-virtuoso | 1860 | Module snd-virtuoso |
1859 | ------------------- | 1861 | ------------------- |
1860 | 1862 | ||
1861 | Module for sound cards based on the Asus AV100/AV200 chips, | 1863 | Module for sound cards based on the Asus AV100/AV200 chips, |
1862 | i.e., Xonar D1, DX, D2, D2X, HDAV1.3 (Deluxe), and Essence STX. | 1864 | i.e., Xonar D1, DX, D2, D2X, HDAV1.3 (Deluxe), and Essence STX. |
1863 | 1865 | ||
1864 | This module supports autoprobe and multiple cards. | 1866 | This module supports autoprobe and multiple cards. |
1865 | 1867 | ||
1866 | Module snd-vx222 | 1868 | Module snd-vx222 |
1867 | ---------------- | 1869 | ---------------- |
1868 | 1870 | ||
1869 | Module for Digigram VX-Pocket VX222, V222 v2 and Mic cards. | 1871 | Module for Digigram VX-Pocket VX222, V222 v2 and Mic cards. |
1870 | 1872 | ||
1871 | mic - Enable Microphone on V222 Mic (NYI) | 1873 | mic - Enable Microphone on V222 Mic (NYI) |
1872 | ibl - Capture IBL size. (default = 0, minimum size) | 1874 | ibl - Capture IBL size. (default = 0, minimum size) |
1873 | 1875 | ||
1874 | This module supports multiple cards. | 1876 | This module supports multiple cards. |
1875 | 1877 | ||
1876 | When the driver is compiled as a module and the hotplug firmware | 1878 | When the driver is compiled as a module and the hotplug firmware |
1877 | is supported, the firmware data is loaded via hotplug automatically. | 1879 | is supported, the firmware data is loaded via hotplug automatically. |
1878 | Install the necessary firmware files in alsa-firmware package. | 1880 | Install the necessary firmware files in alsa-firmware package. |
1879 | When no hotplug fw loader is available, you need to load the | 1881 | When no hotplug fw loader is available, you need to load the |
1880 | firmware via vxloader utility in alsa-tools package. To invoke | 1882 | firmware via vxloader utility in alsa-tools package. To invoke |
1881 | vxloader automatically, add the following to /etc/modprobe.conf | 1883 | vxloader automatically, add the following to /etc/modprobe.conf |
1882 | 1884 | ||
1883 | install snd-vx222 /sbin/modprobe --first-time -i snd-vx222 && /usr/bin/vxloader | 1885 | install snd-vx222 /sbin/modprobe --first-time -i snd-vx222 && /usr/bin/vxloader |
1884 | 1886 | ||
1885 | (for 2.2/2.4 kernels, add "post-install /usr/bin/vxloader" to | 1887 | (for 2.2/2.4 kernels, add "post-install /usr/bin/vxloader" to |
1886 | /etc/modules.conf, instead.) | 1888 | /etc/modules.conf, instead.) |
1887 | IBL size defines the interrupts period for PCM. The smaller size | 1889 | IBL size defines the interrupts period for PCM. The smaller size |
1888 | gives smaller latency but leads to more CPU consumption, too. | 1890 | gives smaller latency but leads to more CPU consumption, too. |
1889 | The size is usually aligned to 126. As default (=0), the smallest | 1891 | The size is usually aligned to 126. As default (=0), the smallest |
1890 | size is chosen. The possible IBL values can be found in | 1892 | size is chosen. The possible IBL values can be found in |
1891 | /proc/asound/cardX/vx-status proc file. | 1893 | /proc/asound/cardX/vx-status proc file. |
1892 | 1894 | ||
1893 | The power-management is supported. | 1895 | The power-management is supported. |
1894 | 1896 | ||
1895 | Module snd-vxpocket | 1897 | Module snd-vxpocket |
1896 | ------------------- | 1898 | ------------------- |
1897 | 1899 | ||
1898 | Module for Digigram VX-Pocket VX2 and 440 PCMCIA cards. | 1900 | Module for Digigram VX-Pocket VX2 and 440 PCMCIA cards. |
1899 | 1901 | ||
1900 | ibl - Capture IBL size. (default = 0, minimum size) | 1902 | ibl - Capture IBL size. (default = 0, minimum size) |
1901 | 1903 | ||
1902 | This module supports multiple cards. The module is compiled only when | 1904 | This module supports multiple cards. The module is compiled only when |
1903 | PCMCIA is supported on kernel. | 1905 | PCMCIA is supported on kernel. |
1904 | 1906 | ||
1905 | With the older 2.6.x kernel, to activate the driver via the card | 1907 | With the older 2.6.x kernel, to activate the driver via the card |
1906 | manager, you'll need to set up /etc/pcmcia/vxpocket.conf. See the | 1908 | manager, you'll need to set up /etc/pcmcia/vxpocket.conf. See the |
1907 | sound/pcmcia/vx/vxpocket.c. 2.6.13 or later kernel requires no | 1909 | sound/pcmcia/vx/vxpocket.c. 2.6.13 or later kernel requires no |
1908 | longer require a config file. | 1910 | longer require a config file. |
1909 | 1911 | ||
1910 | When the driver is compiled as a module and the hotplug firmware | 1912 | When the driver is compiled as a module and the hotplug firmware |
1911 | is supported, the firmware data is loaded via hotplug automatically. | 1913 | is supported, the firmware data is loaded via hotplug automatically. |
1912 | Install the necessary firmware files in alsa-firmware package. | 1914 | Install the necessary firmware files in alsa-firmware package. |
1913 | When no hotplug fw loader is available, you need to load the | 1915 | When no hotplug fw loader is available, you need to load the |
1914 | firmware via vxloader utility in alsa-tools package. | 1916 | firmware via vxloader utility in alsa-tools package. |
1915 | 1917 | ||
1916 | About capture IBL, see the description of snd-vx222 module. | 1918 | About capture IBL, see the description of snd-vx222 module. |
1917 | 1919 | ||
1918 | Note: snd-vxp440 driver is merged to snd-vxpocket driver since | 1920 | Note: snd-vxp440 driver is merged to snd-vxpocket driver since |
1919 | ALSA 1.0.10. | 1921 | ALSA 1.0.10. |
1920 | 1922 | ||
1921 | The power-management is supported. | 1923 | The power-management is supported. |
1922 | 1924 | ||
1923 | Module snd-ymfpci | 1925 | Module snd-ymfpci |
1924 | ----------------- | 1926 | ----------------- |
1925 | 1927 | ||
1926 | Module for Yamaha PCI chips (YMF72x, YMF74x & YMF75x). | 1928 | Module for Yamaha PCI chips (YMF72x, YMF74x & YMF75x). |
1927 | 1929 | ||
1928 | mpu_port - 0x300,0x330,0x332,0x334, 0 (disable) by default, | 1930 | mpu_port - 0x300,0x330,0x332,0x334, 0 (disable) by default, |
1929 | 1 (auto-detect for YMF744/754 only) | 1931 | 1 (auto-detect for YMF744/754 only) |
1930 | fm_port - 0x388,0x398,0x3a0,0x3a8, 0 (disable) by default | 1932 | fm_port - 0x388,0x398,0x3a0,0x3a8, 0 (disable) by default |
1931 | 1 (auto-detect for YMF744/754 only) | 1933 | 1 (auto-detect for YMF744/754 only) |
1932 | joystick_port - 0x201,0x202,0x204,0x205, 0 (disable) by default, | 1934 | joystick_port - 0x201,0x202,0x204,0x205, 0 (disable) by default, |
1933 | 1 (auto-detect) | 1935 | 1 (auto-detect) |
1934 | rear_switch - enable shared rear/line-in switch (bool) | 1936 | rear_switch - enable shared rear/line-in switch (bool) |
1935 | 1937 | ||
1936 | This module supports autoprobe and multiple chips. | 1938 | This module supports autoprobe and multiple chips. |
1937 | 1939 | ||
1938 | The power-management is supported. | 1940 | The power-management is supported. |
1939 | 1941 | ||
1940 | Module snd-pdaudiocf | 1942 | Module snd-pdaudiocf |
1941 | -------------------- | 1943 | -------------------- |
1942 | 1944 | ||
1943 | Module for Sound Core PDAudioCF sound card. | 1945 | Module for Sound Core PDAudioCF sound card. |
1944 | 1946 | ||
1945 | The power-management is supported. | 1947 | The power-management is supported. |
1946 | 1948 | ||
1947 | 1949 | ||
1948 | AC97 Quirk Option | 1950 | AC97 Quirk Option |
1949 | ================= | 1951 | ================= |
1950 | 1952 | ||
1951 | The ac97_quirk option is used to enable/override the workaround for | 1953 | The ac97_quirk option is used to enable/override the workaround for |
1952 | specific devices on drivers for on-board AC'97 controllers like | 1954 | specific devices on drivers for on-board AC'97 controllers like |
1953 | snd-intel8x0. Some hardware have swapped output pins between Master | 1955 | snd-intel8x0. Some hardware have swapped output pins between Master |
1954 | and Headphone, or Surround (thanks to confusion of AC'97 | 1956 | and Headphone, or Surround (thanks to confusion of AC'97 |
1955 | specifications from version to version :-) | 1957 | specifications from version to version :-) |
1956 | 1958 | ||
1957 | The driver provides the auto-detection of known problematic devices, | 1959 | The driver provides the auto-detection of known problematic devices, |
1958 | but some might be unknown or wrongly detected. In such a case, pass | 1960 | but some might be unknown or wrongly detected. In such a case, pass |
1959 | the proper value with this option. | 1961 | the proper value with this option. |
1960 | 1962 | ||
1961 | The following strings are accepted: | 1963 | The following strings are accepted: |
1962 | - default Don't override the default setting | 1964 | - default Don't override the default setting |
1963 | - none Disable the quirk | 1965 | - none Disable the quirk |
1964 | - hp_only Bind Master and Headphone controls as a single control | 1966 | - hp_only Bind Master and Headphone controls as a single control |
1965 | - swap_hp Swap headphone and master controls | 1967 | - swap_hp Swap headphone and master controls |
1966 | - swap_surround Swap master and surround controls | 1968 | - swap_surround Swap master and surround controls |
1967 | - ad_sharing For AD1985, turn on OMS bit and use headphone | 1969 | - ad_sharing For AD1985, turn on OMS bit and use headphone |
1968 | - alc_jack For ALC65x, turn on the jack sense mode | 1970 | - alc_jack For ALC65x, turn on the jack sense mode |
1969 | - inv_eapd Inverted EAPD implementation | 1971 | - inv_eapd Inverted EAPD implementation |
1970 | - mute_led Bind EAPD bit for turning on/off mute LED | 1972 | - mute_led Bind EAPD bit for turning on/off mute LED |
1971 | 1973 | ||
1972 | For backward compatibility, the corresponding integer value -1, 0, | 1974 | For backward compatibility, the corresponding integer value -1, 0, |
1973 | ... are accepted, too. | 1975 | ... are accepted, too. |
1974 | 1976 | ||
1975 | For example, if "Master" volume control has no effect on your device | 1977 | For example, if "Master" volume control has no effect on your device |
1976 | but only "Headphone" does, pass ac97_quirk=hp_only module option. | 1978 | but only "Headphone" does, pass ac97_quirk=hp_only module option. |
1977 | 1979 | ||
1978 | 1980 | ||
1979 | Configuring Non-ISAPNP Cards | 1981 | Configuring Non-ISAPNP Cards |
1980 | ============================ | 1982 | ============================ |
1981 | 1983 | ||
1982 | When the kernel is configured with ISA-PnP support, the modules | 1984 | When the kernel is configured with ISA-PnP support, the modules |
1983 | supporting the isapnp cards will have module options "isapnp". | 1985 | supporting the isapnp cards will have module options "isapnp". |
1984 | If this option is set, *only* the ISA-PnP devices will be probed. | 1986 | If this option is set, *only* the ISA-PnP devices will be probed. |
1985 | For probing the non ISA-PnP cards, you have to pass "isapnp=0" option | 1987 | For probing the non ISA-PnP cards, you have to pass "isapnp=0" option |
1986 | together with the proper i/o and irq configuration. | 1988 | together with the proper i/o and irq configuration. |
1987 | 1989 | ||
1988 | When the kernel is configured without ISA-PnP support, isapnp option | 1990 | When the kernel is configured without ISA-PnP support, isapnp option |
1989 | will be not built in. | 1991 | will be not built in. |
1990 | 1992 | ||
1991 | 1993 | ||
1992 | Module Autoloading Support | 1994 | Module Autoloading Support |
1993 | ========================== | 1995 | ========================== |
1994 | 1996 | ||
1995 | The ALSA drivers can be loaded automatically on demand by defining | 1997 | The ALSA drivers can be loaded automatically on demand by defining |
1996 | module aliases. The string 'snd-card-%1' is requested for ALSA native | 1998 | module aliases. The string 'snd-card-%1' is requested for ALSA native |
1997 | devices where %i is sound card number from zero to seven. | 1999 | devices where %i is sound card number from zero to seven. |
1998 | 2000 | ||
1999 | To auto-load an ALSA driver for OSS services, define the string | 2001 | To auto-load an ALSA driver for OSS services, define the string |
2000 | 'sound-slot-%i' where %i means the slot number for OSS, which | 2002 | 'sound-slot-%i' where %i means the slot number for OSS, which |
2001 | corresponds to the card index of ALSA. Usually, define this | 2003 | corresponds to the card index of ALSA. Usually, define this |
2002 | as the same card module. | 2004 | as the same card module. |
2003 | 2005 | ||
2004 | An example configuration for a single emu10k1 card is like below: | 2006 | An example configuration for a single emu10k1 card is like below: |
2005 | ----- /etc/modprobe.conf | 2007 | ----- /etc/modprobe.conf |
2006 | alias snd-card-0 snd-emu10k1 | 2008 | alias snd-card-0 snd-emu10k1 |
2007 | alias sound-slot-0 snd-emu10k1 | 2009 | alias sound-slot-0 snd-emu10k1 |
2008 | ----- /etc/modprobe.conf | 2010 | ----- /etc/modprobe.conf |
2009 | 2011 | ||
2010 | The available number of auto-loaded sound cards depends on the module | 2012 | The available number of auto-loaded sound cards depends on the module |
2011 | option "cards_limit" of snd module. As default it's set to 1. | 2013 | option "cards_limit" of snd module. As default it's set to 1. |
2012 | To enable the auto-loading of multiple cards, specify the number of | 2014 | To enable the auto-loading of multiple cards, specify the number of |
2013 | sound cards in that option. | 2015 | sound cards in that option. |
2014 | 2016 | ||
2015 | When multiple cards are available, it'd better to specify the index | 2017 | When multiple cards are available, it'd better to specify the index |
2016 | number for each card via module option, too, so that the order of | 2018 | number for each card via module option, too, so that the order of |
2017 | cards is kept consistent. | 2019 | cards is kept consistent. |
2018 | 2020 | ||
2019 | An example configuration for two sound cards is like below: | 2021 | An example configuration for two sound cards is like below: |
2020 | 2022 | ||
2021 | ----- /etc/modprobe.conf | 2023 | ----- /etc/modprobe.conf |
2022 | # ALSA portion | 2024 | # ALSA portion |
2023 | options snd cards_limit=2 | 2025 | options snd cards_limit=2 |
2024 | alias snd-card-0 snd-interwave | 2026 | alias snd-card-0 snd-interwave |
2025 | alias snd-card-1 snd-ens1371 | 2027 | alias snd-card-1 snd-ens1371 |
2026 | options snd-interwave index=0 | 2028 | options snd-interwave index=0 |
2027 | options snd-ens1371 index=1 | 2029 | options snd-ens1371 index=1 |
2028 | # OSS/Free portion | 2030 | # OSS/Free portion |
2029 | alias sound-slot-0 snd-interwave | 2031 | alias sound-slot-0 snd-interwave |
2030 | alias sound-slot-1 snd-ens1371 | 2032 | alias sound-slot-1 snd-ens1371 |
2031 | ----- /etc/modprobe.conf | 2033 | ----- /etc/modprobe.conf |
2032 | 2034 | ||
2033 | In this example, the interwave card is always loaded as the first card | 2035 | In this example, the interwave card is always loaded as the first card |
2034 | (index 0) and ens1371 as the second (index 1). | 2036 | (index 0) and ens1371 as the second (index 1). |
2035 | 2037 | ||
2036 | Alternative (and new) way to fixate the slot assignment is to use | 2038 | Alternative (and new) way to fixate the slot assignment is to use |
2037 | "slots" option of snd module. In the case above, specify like the | 2039 | "slots" option of snd module. In the case above, specify like the |
2038 | following: | 2040 | following: |
2039 | 2041 | ||
2040 | options snd slots=snd-interwave,snd-ens1371 | 2042 | options snd slots=snd-interwave,snd-ens1371 |
2041 | 2043 | ||
2042 | Then, the first slot (#0) is reserved for snd-interwave driver, and | 2044 | Then, the first slot (#0) is reserved for snd-interwave driver, and |
2043 | the second (#1) for snd-ens1371. You can omit index option in each | 2045 | the second (#1) for snd-ens1371. You can omit index option in each |
2044 | driver if slots option is used (although you can still have them at | 2046 | driver if slots option is used (although you can still have them at |
2045 | the same time as long as they don't conflict). | 2047 | the same time as long as they don't conflict). |
2046 | 2048 | ||
2047 | The slots option is especially useful for avoiding the possible | 2049 | The slots option is especially useful for avoiding the possible |
2048 | hot-plugging and the resultant slot conflict. For example, in the | 2050 | hot-plugging and the resultant slot conflict. For example, in the |
2049 | case above again, the first two slots are already reserved. If any | 2051 | case above again, the first two slots are already reserved. If any |
2050 | other driver (e.g. snd-usb-audio) is loaded before snd-interwave or | 2052 | other driver (e.g. snd-usb-audio) is loaded before snd-interwave or |
2051 | snd-ens1371, it will be assigned to the third or later slot. | 2053 | snd-ens1371, it will be assigned to the third or later slot. |
2052 | 2054 | ||
2053 | When a module name is given with '!', the slot will be given for any | 2055 | When a module name is given with '!', the slot will be given for any |
2054 | modules but that name. For example, "slots=!snd-pcsp" will reserve | 2056 | modules but that name. For example, "slots=!snd-pcsp" will reserve |
2055 | the first slot for any modules but snd-pcsp. | 2057 | the first slot for any modules but snd-pcsp. |
2056 | 2058 | ||
2057 | 2059 | ||
2058 | ALSA PCM devices to OSS devices mapping | 2060 | ALSA PCM devices to OSS devices mapping |
2059 | ======================================= | 2061 | ======================================= |
2060 | 2062 | ||
2061 | /dev/snd/pcmC0D0[c|p] -> /dev/audio0 (/dev/audio) -> minor 4 | 2063 | /dev/snd/pcmC0D0[c|p] -> /dev/audio0 (/dev/audio) -> minor 4 |
2062 | /dev/snd/pcmC0D0[c|p] -> /dev/dsp0 (/dev/dsp) -> minor 3 | 2064 | /dev/snd/pcmC0D0[c|p] -> /dev/dsp0 (/dev/dsp) -> minor 3 |
2063 | /dev/snd/pcmC0D1[c|p] -> /dev/adsp0 (/dev/adsp) -> minor 12 | 2065 | /dev/snd/pcmC0D1[c|p] -> /dev/adsp0 (/dev/adsp) -> minor 12 |
2064 | /dev/snd/pcmC1D0[c|p] -> /dev/audio1 -> minor 4+16 = 20 | 2066 | /dev/snd/pcmC1D0[c|p] -> /dev/audio1 -> minor 4+16 = 20 |
2065 | /dev/snd/pcmC1D0[c|p] -> /dev/dsp1 -> minor 3+16 = 19 | 2067 | /dev/snd/pcmC1D0[c|p] -> /dev/dsp1 -> minor 3+16 = 19 |
2066 | /dev/snd/pcmC1D1[c|p] -> /dev/adsp1 -> minor 12+16 = 28 | 2068 | /dev/snd/pcmC1D1[c|p] -> /dev/adsp1 -> minor 12+16 = 28 |
2067 | /dev/snd/pcmC2D0[c|p] -> /dev/audio2 -> minor 4+32 = 36 | 2069 | /dev/snd/pcmC2D0[c|p] -> /dev/audio2 -> minor 4+32 = 36 |
2068 | /dev/snd/pcmC2D0[c|p] -> /dev/dsp2 -> minor 3+32 = 39 | 2070 | /dev/snd/pcmC2D0[c|p] -> /dev/dsp2 -> minor 3+32 = 39 |
2069 | /dev/snd/pcmC2D1[c|p] -> /dev/adsp2 -> minor 12+32 = 44 | 2071 | /dev/snd/pcmC2D1[c|p] -> /dev/adsp2 -> minor 12+32 = 44 |
2070 | 2072 | ||
2071 | The first number from /dev/snd/pcmC{X}D{Y}[c|p] expression means | 2073 | The first number from /dev/snd/pcmC{X}D{Y}[c|p] expression means |
2072 | sound card number and second means device number. The ALSA devices | 2074 | sound card number and second means device number. The ALSA devices |
2073 | have either 'c' or 'p' suffix indicating the direction, capture and | 2075 | have either 'c' or 'p' suffix indicating the direction, capture and |
2074 | playback, respectively. | 2076 | playback, respectively. |
2075 | 2077 | ||
2076 | Please note that the device mapping above may be varied via the module | 2078 | Please note that the device mapping above may be varied via the module |
2077 | options of snd-pcm-oss module. | 2079 | options of snd-pcm-oss module. |
2078 | 2080 | ||
2079 | 2081 | ||
2080 | Proc interfaces (/proc/asound) | 2082 | Proc interfaces (/proc/asound) |
2081 | ============================== | 2083 | ============================== |
2082 | 2084 | ||
2083 | /proc/asound/card#/pcm#[cp]/oss | 2085 | /proc/asound/card#/pcm#[cp]/oss |
2084 | ------------------------------- | 2086 | ------------------------------- |
2085 | String "erase" - erase all additional informations about OSS applications | 2087 | String "erase" - erase all additional informations about OSS applications |
2086 | String "<app_name> <fragments> <fragment_size> [<options>]" | 2088 | String "<app_name> <fragments> <fragment_size> [<options>]" |
2087 | 2089 | ||
2088 | <app_name> - name of application with (higher priority) or without path | 2090 | <app_name> - name of application with (higher priority) or without path |
2089 | <fragments> - number of fragments or zero if auto | 2091 | <fragments> - number of fragments or zero if auto |
2090 | <fragment_size> - size of fragment in bytes or zero if auto | 2092 | <fragment_size> - size of fragment in bytes or zero if auto |
2091 | <options> - optional parameters | 2093 | <options> - optional parameters |
2092 | - disable the application tries to open a pcm device for | 2094 | - disable the application tries to open a pcm device for |
2093 | this channel but does not want to use it. | 2095 | this channel but does not want to use it. |
2094 | (Cause a bug or mmap needs) | 2096 | (Cause a bug or mmap needs) |
2095 | It's good for Quake etc... | 2097 | It's good for Quake etc... |
2096 | - direct don't use plugins | 2098 | - direct don't use plugins |
2097 | - block force block mode (rvplayer) | 2099 | - block force block mode (rvplayer) |
2098 | - non-block force non-block mode | 2100 | - non-block force non-block mode |
2099 | - whole-frag write only whole fragments (optimization affecting | 2101 | - whole-frag write only whole fragments (optimization affecting |
2100 | playback only) | 2102 | playback only) |
2101 | - no-silence do not fill silence ahead to avoid clicks | 2103 | - no-silence do not fill silence ahead to avoid clicks |
2102 | - buggy-ptr Returns the whitespace blocks in GETOPTR ioctl | 2104 | - buggy-ptr Returns the whitespace blocks in GETOPTR ioctl |
2103 | instead of filled blocks | 2105 | instead of filled blocks |
2104 | 2106 | ||
2105 | Example: echo "x11amp 128 16384" > /proc/asound/card0/pcm0p/oss | 2107 | Example: echo "x11amp 128 16384" > /proc/asound/card0/pcm0p/oss |
2106 | echo "squake 0 0 disable" > /proc/asound/card0/pcm0c/oss | 2108 | echo "squake 0 0 disable" > /proc/asound/card0/pcm0c/oss |
2107 | echo "rvplayer 0 0 block" > /proc/asound/card0/pcm0p/oss | 2109 | echo "rvplayer 0 0 block" > /proc/asound/card0/pcm0p/oss |
2108 | 2110 | ||
2109 | 2111 | ||
2110 | Early Buffer Allocation | 2112 | Early Buffer Allocation |
2111 | ======================= | 2113 | ======================= |
2112 | 2114 | ||
2113 | Some drivers (e.g. hdsp) require the large contiguous buffers, and | 2115 | Some drivers (e.g. hdsp) require the large contiguous buffers, and |
2114 | sometimes it's too late to find such spaces when the driver module is | 2116 | sometimes it's too late to find such spaces when the driver module is |
2115 | actually loaded due to memory fragmentation. You can pre-allocate the | 2117 | actually loaded due to memory fragmentation. You can pre-allocate the |
2116 | PCM buffers by loading snd-page-alloc module and write commands to its | 2118 | PCM buffers by loading snd-page-alloc module and write commands to its |
2117 | proc file in prior, for example, in the early boot stage like | 2119 | proc file in prior, for example, in the early boot stage like |
2118 | /etc/init.d/*.local scripts. | 2120 | /etc/init.d/*.local scripts. |
2119 | 2121 | ||
2120 | Reading the proc file /proc/drivers/snd-page-alloc shows the current | 2122 | Reading the proc file /proc/drivers/snd-page-alloc shows the current |
2121 | usage of page allocation. In writing, you can send the following | 2123 | usage of page allocation. In writing, you can send the following |
2122 | commands to the snd-page-alloc driver: | 2124 | commands to the snd-page-alloc driver: |
2123 | 2125 | ||
2124 | - add VENDOR DEVICE MASK SIZE BUFFERS | 2126 | - add VENDOR DEVICE MASK SIZE BUFFERS |
2125 | 2127 | ||
2126 | VENDOR and DEVICE are PCI vendor and device IDs. They take | 2128 | VENDOR and DEVICE are PCI vendor and device IDs. They take |
2127 | integer numbers (0x prefix is needed for the hex). | 2129 | integer numbers (0x prefix is needed for the hex). |
2128 | MASK is the PCI DMA mask. Pass 0 if not restricted. | 2130 | MASK is the PCI DMA mask. Pass 0 if not restricted. |
2129 | SIZE is the size of each buffer to allocate. You can pass | 2131 | SIZE is the size of each buffer to allocate. You can pass |
2130 | k and m suffix for KB and MB. The max number is 16MB. | 2132 | k and m suffix for KB and MB. The max number is 16MB. |
2131 | BUFFERS is the number of buffers to allocate. It must be greater | 2133 | BUFFERS is the number of buffers to allocate. It must be greater |
2132 | than 0. The max number is 4. | 2134 | than 0. The max number is 4. |
2133 | 2135 | ||
2134 | - erase | 2136 | - erase |
2135 | 2137 | ||
2136 | This will erase the all pre-allocated buffers which are not in | 2138 | This will erase the all pre-allocated buffers which are not in |
2137 | use. | 2139 | use. |
2138 | 2140 | ||
2139 | 2141 | ||
2140 | Links and Addresses | 2142 | Links and Addresses |
2141 | =================== | 2143 | =================== |
2142 | 2144 | ||
2143 | ALSA project homepage | 2145 | ALSA project homepage |
2144 | http://www.alsa-project.org | 2146 | http://www.alsa-project.org |
2145 | 2147 | ||
2146 | Kernel Bugzilla | 2148 | Kernel Bugzilla |
2147 | http://bugzilla.kernel.org/ | 2149 | http://bugzilla.kernel.org/ |
2148 | 2150 | ||
2149 | ALSA Developers ML | 2151 | ALSA Developers ML |
2150 | mailto:alsa-devel@alsa-project.org | 2152 | mailto:alsa-devel@alsa-project.org |
2151 | 2153 | ||
2152 | alsa-info.sh script | 2154 | alsa-info.sh script |
2153 | http://www.alsa-project.org/alsa-info.sh | 2155 | http://www.alsa-project.org/alsa-info.sh |
2154 | 2156 |
sound/isa/sc6000.c
1 | /* | 1 | /* |
2 | * Driver for Gallant SC-6000 soundcard. This card is also known as | 2 | * Driver for Gallant SC-6000 soundcard. This card is also known as |
3 | * Audio Excel DSP 16 or Zoltrix AV302. | 3 | * Audio Excel DSP 16 or Zoltrix AV302. |
4 | * These cards use CompuMedia ASC-9308 chip + AD1848 codec. | 4 | * These cards use CompuMedia ASC-9308 chip + AD1848 codec. |
5 | * SC-6600 and SC-7000 cards are also supported. They are based on | 5 | * SC-6600 and SC-7000 cards are also supported. They are based on |
6 | * CompuMedia ASC-9408 chip and CS4231 codec. | 6 | * CompuMedia ASC-9408 chip and CS4231 codec. |
7 | * | 7 | * |
8 | * Copyright (C) 2007 Krzysztof Helt <krzysztof.h1@wp.pl> | 8 | * Copyright (C) 2007 Krzysztof Helt <krzysztof.h1@wp.pl> |
9 | * | 9 | * |
10 | * I don't have documentation for this card. I used the driver | 10 | * I don't have documentation for this card. I used the driver |
11 | * for OSS/Free included in the kernel source as reference. | 11 | * for OSS/Free included in the kernel source as reference. |
12 | * | 12 | * |
13 | * This program is free software; you can redistribute it and/or modify | 13 | * This program is free software; you can redistribute it and/or modify |
14 | * it under the terms of the GNU General Public License as published by | 14 | * it under the terms of the GNU General Public License as published by |
15 | * the Free Software Foundation; either version 2 of the License, or | 15 | * the Free Software Foundation; either version 2 of the License, or |
16 | * (at your option) any later version. | 16 | * (at your option) any later version. |
17 | * | 17 | * |
18 | * This program is distributed in the hope that it will be useful, | 18 | * This program is distributed in the hope that it will be useful, |
19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 19 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 20 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 | * GNU General Public License for more details. | 21 | * GNU General Public License for more details. |
22 | * | 22 | * |
23 | * You should have received a copy of the GNU General Public License | 23 | * You should have received a copy of the GNU General Public License |
24 | * along with this program; if not, write to the Free Software | 24 | * along with this program; if not, write to the Free Software |
25 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 25 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
26 | */ | 26 | */ |
27 | 27 | ||
28 | #include <linux/module.h> | 28 | #include <linux/module.h> |
29 | #include <linux/delay.h> | 29 | #include <linux/delay.h> |
30 | #include <linux/isa.h> | 30 | #include <linux/isa.h> |
31 | #include <linux/io.h> | 31 | #include <linux/io.h> |
32 | #include <asm/dma.h> | 32 | #include <asm/dma.h> |
33 | #include <sound/core.h> | 33 | #include <sound/core.h> |
34 | #include <sound/wss.h> | 34 | #include <sound/wss.h> |
35 | #include <sound/opl3.h> | 35 | #include <sound/opl3.h> |
36 | #include <sound/mpu401.h> | 36 | #include <sound/mpu401.h> |
37 | #include <sound/control.h> | 37 | #include <sound/control.h> |
38 | #define SNDRV_LEGACY_FIND_FREE_IRQ | 38 | #define SNDRV_LEGACY_FIND_FREE_IRQ |
39 | #define SNDRV_LEGACY_FIND_FREE_DMA | 39 | #define SNDRV_LEGACY_FIND_FREE_DMA |
40 | #include <sound/initval.h> | 40 | #include <sound/initval.h> |
41 | 41 | ||
42 | MODULE_AUTHOR("Krzysztof Helt"); | 42 | MODULE_AUTHOR("Krzysztof Helt"); |
43 | MODULE_DESCRIPTION("Gallant SC-6000"); | 43 | MODULE_DESCRIPTION("Gallant SC-6000"); |
44 | MODULE_LICENSE("GPL"); | 44 | MODULE_LICENSE("GPL"); |
45 | MODULE_SUPPORTED_DEVICE("{{Gallant, SC-6000}," | 45 | MODULE_SUPPORTED_DEVICE("{{Gallant, SC-6000}," |
46 | "{AudioExcel, Audio Excel DSP 16}," | 46 | "{AudioExcel, Audio Excel DSP 16}," |
47 | "{Zoltrix, AV302}}"); | 47 | "{Zoltrix, AV302}}"); |
48 | 48 | ||
49 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ | 49 | static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */ |
50 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ | 50 | static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */ |
51 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE; /* Enable this card */ | 51 | static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE; /* Enable this card */ |
52 | static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* 0x220, 0x240 */ | 52 | static long port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* 0x220, 0x240 */ |
53 | static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 11 */ | 53 | static int irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 11 */ |
54 | static long mss_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* 0x530, 0xe80 */ | 54 | static long mss_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; /* 0x530, 0xe80 */ |
55 | static long mpu_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; | 55 | static long mpu_port[SNDRV_CARDS] = SNDRV_DEFAULT_PORT; |
56 | /* 0x300, 0x310, 0x320, 0x330 */ | 56 | /* 0x300, 0x310, 0x320, 0x330 */ |
57 | static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 0 */ | 57 | static int mpu_irq[SNDRV_CARDS] = SNDRV_DEFAULT_IRQ; /* 5, 7, 9, 10, 0 */ |
58 | static int dma[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; /* 0, 1, 3 */ | 58 | static int dma[SNDRV_CARDS] = SNDRV_DEFAULT_DMA; /* 0, 1, 3 */ |
59 | static bool joystick[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = false }; | ||
59 | 60 | ||
60 | module_param_array(index, int, NULL, 0444); | 61 | module_param_array(index, int, NULL, 0444); |
61 | MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard."); | 62 | MODULE_PARM_DESC(index, "Index value for sc-6000 based soundcard."); |
62 | module_param_array(id, charp, NULL, 0444); | 63 | module_param_array(id, charp, NULL, 0444); |
63 | MODULE_PARM_DESC(id, "ID string for sc-6000 based soundcard."); | 64 | MODULE_PARM_DESC(id, "ID string for sc-6000 based soundcard."); |
64 | module_param_array(enable, bool, NULL, 0444); | 65 | module_param_array(enable, bool, NULL, 0444); |
65 | MODULE_PARM_DESC(enable, "Enable sc-6000 based soundcard."); | 66 | MODULE_PARM_DESC(enable, "Enable sc-6000 based soundcard."); |
66 | module_param_array(port, long, NULL, 0444); | 67 | module_param_array(port, long, NULL, 0444); |
67 | MODULE_PARM_DESC(port, "Port # for sc-6000 driver."); | 68 | MODULE_PARM_DESC(port, "Port # for sc-6000 driver."); |
68 | module_param_array(mss_port, long, NULL, 0444); | 69 | module_param_array(mss_port, long, NULL, 0444); |
69 | MODULE_PARM_DESC(mss_port, "MSS Port # for sc-6000 driver."); | 70 | MODULE_PARM_DESC(mss_port, "MSS Port # for sc-6000 driver."); |
70 | module_param_array(mpu_port, long, NULL, 0444); | 71 | module_param_array(mpu_port, long, NULL, 0444); |
71 | MODULE_PARM_DESC(mpu_port, "MPU-401 port # for sc-6000 driver."); | 72 | MODULE_PARM_DESC(mpu_port, "MPU-401 port # for sc-6000 driver."); |
72 | module_param_array(irq, int, NULL, 0444); | 73 | module_param_array(irq, int, NULL, 0444); |
73 | MODULE_PARM_DESC(irq, "IRQ # for sc-6000 driver."); | 74 | MODULE_PARM_DESC(irq, "IRQ # for sc-6000 driver."); |
74 | module_param_array(mpu_irq, int, NULL, 0444); | 75 | module_param_array(mpu_irq, int, NULL, 0444); |
75 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver."); | 76 | MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for sc-6000 driver."); |
76 | module_param_array(dma, int, NULL, 0444); | 77 | module_param_array(dma, int, NULL, 0444); |
77 | MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver."); | 78 | MODULE_PARM_DESC(dma, "DMA # for sc-6000 driver."); |
79 | module_param_array(joystick, bool, NULL, 0444); | ||
80 | MODULE_PARM_DESC(joystick, "Enable gameport."); | ||
78 | 81 | ||
79 | /* | 82 | /* |
80 | * Commands of SC6000's DSP (SBPRO+special). | 83 | * Commands of SC6000's DSP (SBPRO+special). |
81 | * Some of them are COMMAND_xx, in the future they may change. | 84 | * Some of them are COMMAND_xx, in the future they may change. |
82 | */ | 85 | */ |
83 | #define WRITE_MDIRQ_CFG 0x50 /* Set M&I&DRQ mask (the real config) */ | 86 | #define WRITE_MDIRQ_CFG 0x50 /* Set M&I&DRQ mask (the real config) */ |
84 | #define COMMAND_52 0x52 /* */ | 87 | #define COMMAND_52 0x52 /* */ |
85 | #define READ_HARD_CFG 0x58 /* Read Hardware Config (I/O base etc) */ | 88 | #define READ_HARD_CFG 0x58 /* Read Hardware Config (I/O base etc) */ |
86 | #define COMMAND_5C 0x5c /* */ | 89 | #define COMMAND_5C 0x5c /* */ |
87 | #define COMMAND_60 0x60 /* */ | 90 | #define COMMAND_60 0x60 /* */ |
88 | #define COMMAND_66 0x66 /* */ | 91 | #define COMMAND_66 0x66 /* */ |
89 | #define COMMAND_6C 0x6c /* */ | 92 | #define COMMAND_6C 0x6c /* */ |
90 | #define COMMAND_6E 0x6e /* */ | 93 | #define COMMAND_6E 0x6e /* */ |
91 | #define COMMAND_88 0x88 /* Unknown command */ | 94 | #define COMMAND_88 0x88 /* Unknown command */ |
92 | #define DSP_INIT_MSS 0x8c /* Enable Microsoft Sound System mode */ | 95 | #define DSP_INIT_MSS 0x8c /* Enable Microsoft Sound System mode */ |
93 | #define COMMAND_C5 0xc5 /* */ | 96 | #define COMMAND_C5 0xc5 /* */ |
94 | #define GET_DSP_VERSION 0xe1 /* Get DSP Version */ | 97 | #define GET_DSP_VERSION 0xe1 /* Get DSP Version */ |
95 | #define GET_DSP_COPYRIGHT 0xe3 /* Get DSP Copyright */ | 98 | #define GET_DSP_COPYRIGHT 0xe3 /* Get DSP Copyright */ |
96 | 99 | ||
97 | /* | 100 | /* |
98 | * Offsets of SC6000 DSP I/O ports. The offset is added to base I/O port | 101 | * Offsets of SC6000 DSP I/O ports. The offset is added to base I/O port |
99 | * to have the actual I/O port. | 102 | * to have the actual I/O port. |
100 | * Register permissions are: | 103 | * Register permissions are: |
101 | * (wo) == Write Only | 104 | * (wo) == Write Only |
102 | * (ro) == Read Only | 105 | * (ro) == Read Only |
103 | * (w-) == Write | 106 | * (w-) == Write |
104 | * (r-) == Read | 107 | * (r-) == Read |
105 | */ | 108 | */ |
106 | #define DSP_RESET 0x06 /* offset of DSP RESET (wo) */ | 109 | #define DSP_RESET 0x06 /* offset of DSP RESET (wo) */ |
107 | #define DSP_READ 0x0a /* offset of DSP READ (ro) */ | 110 | #define DSP_READ 0x0a /* offset of DSP READ (ro) */ |
108 | #define DSP_WRITE 0x0c /* offset of DSP WRITE (w-) */ | 111 | #define DSP_WRITE 0x0c /* offset of DSP WRITE (w-) */ |
109 | #define DSP_COMMAND 0x0c /* offset of DSP COMMAND (w-) */ | 112 | #define DSP_COMMAND 0x0c /* offset of DSP COMMAND (w-) */ |
110 | #define DSP_STATUS 0x0c /* offset of DSP STATUS (r-) */ | 113 | #define DSP_STATUS 0x0c /* offset of DSP STATUS (r-) */ |
111 | #define DSP_DATAVAIL 0x0e /* offset of DSP DATA AVAILABLE (ro) */ | 114 | #define DSP_DATAVAIL 0x0e /* offset of DSP DATA AVAILABLE (ro) */ |
112 | 115 | ||
113 | #define PFX "sc6000: " | 116 | #define PFX "sc6000: " |
114 | #define DRV_NAME "SC-6000" | 117 | #define DRV_NAME "SC-6000" |
115 | 118 | ||
116 | /* hardware dependent functions */ | 119 | /* hardware dependent functions */ |
117 | 120 | ||
118 | /* | 121 | /* |
119 | * sc6000_irq_to_softcfg - Decode irq number into cfg code. | 122 | * sc6000_irq_to_softcfg - Decode irq number into cfg code. |
120 | */ | 123 | */ |
121 | static __devinit unsigned char sc6000_irq_to_softcfg(int irq) | 124 | static __devinit unsigned char sc6000_irq_to_softcfg(int irq) |
122 | { | 125 | { |
123 | unsigned char val = 0; | 126 | unsigned char val = 0; |
124 | 127 | ||
125 | switch (irq) { | 128 | switch (irq) { |
126 | case 5: | 129 | case 5: |
127 | val = 0x28; | 130 | val = 0x28; |
128 | break; | 131 | break; |
129 | case 7: | 132 | case 7: |
130 | val = 0x8; | 133 | val = 0x8; |
131 | break; | 134 | break; |
132 | case 9: | 135 | case 9: |
133 | val = 0x10; | 136 | val = 0x10; |
134 | break; | 137 | break; |
135 | case 10: | 138 | case 10: |
136 | val = 0x18; | 139 | val = 0x18; |
137 | break; | 140 | break; |
138 | case 11: | 141 | case 11: |
139 | val = 0x20; | 142 | val = 0x20; |
140 | break; | 143 | break; |
141 | default: | 144 | default: |
142 | break; | 145 | break; |
143 | } | 146 | } |
144 | return val; | 147 | return val; |
145 | } | 148 | } |
146 | 149 | ||
147 | /* | 150 | /* |
148 | * sc6000_dma_to_softcfg - Decode dma number into cfg code. | 151 | * sc6000_dma_to_softcfg - Decode dma number into cfg code. |
149 | */ | 152 | */ |
150 | static __devinit unsigned char sc6000_dma_to_softcfg(int dma) | 153 | static __devinit unsigned char sc6000_dma_to_softcfg(int dma) |
151 | { | 154 | { |
152 | unsigned char val = 0; | 155 | unsigned char val = 0; |
153 | 156 | ||
154 | switch (dma) { | 157 | switch (dma) { |
155 | case 0: | 158 | case 0: |
156 | val = 1; | 159 | val = 1; |
157 | break; | 160 | break; |
158 | case 1: | 161 | case 1: |
159 | val = 2; | 162 | val = 2; |
160 | break; | 163 | break; |
161 | case 3: | 164 | case 3: |
162 | val = 3; | 165 | val = 3; |
163 | break; | 166 | break; |
164 | default: | 167 | default: |
165 | break; | 168 | break; |
166 | } | 169 | } |
167 | return val; | 170 | return val; |
168 | } | 171 | } |
169 | 172 | ||
170 | /* | 173 | /* |
171 | * sc6000_mpu_irq_to_softcfg - Decode MPU-401 irq number into cfg code. | 174 | * sc6000_mpu_irq_to_softcfg - Decode MPU-401 irq number into cfg code. |
172 | */ | 175 | */ |
173 | static __devinit unsigned char sc6000_mpu_irq_to_softcfg(int mpu_irq) | 176 | static __devinit unsigned char sc6000_mpu_irq_to_softcfg(int mpu_irq) |
174 | { | 177 | { |
175 | unsigned char val = 0; | 178 | unsigned char val = 0; |
176 | 179 | ||
177 | switch (mpu_irq) { | 180 | switch (mpu_irq) { |
178 | case 5: | 181 | case 5: |
179 | val = 4; | 182 | val = 4; |
180 | break; | 183 | break; |
181 | case 7: | 184 | case 7: |
182 | val = 0x44; | 185 | val = 0x44; |
183 | break; | 186 | break; |
184 | case 9: | 187 | case 9: |
185 | val = 0x84; | 188 | val = 0x84; |
186 | break; | 189 | break; |
187 | case 10: | 190 | case 10: |
188 | val = 0xc4; | 191 | val = 0xc4; |
189 | break; | 192 | break; |
190 | default: | 193 | default: |
191 | break; | 194 | break; |
192 | } | 195 | } |
193 | return val; | 196 | return val; |
194 | } | 197 | } |
195 | 198 | ||
196 | static int sc6000_wait_data(char __iomem *vport) | 199 | static int sc6000_wait_data(char __iomem *vport) |
197 | { | 200 | { |
198 | int loop = 1000; | 201 | int loop = 1000; |
199 | unsigned char val = 0; | 202 | unsigned char val = 0; |
200 | 203 | ||
201 | do { | 204 | do { |
202 | val = ioread8(vport + DSP_DATAVAIL); | 205 | val = ioread8(vport + DSP_DATAVAIL); |
203 | if (val & 0x80) | 206 | if (val & 0x80) |
204 | return 0; | 207 | return 0; |
205 | cpu_relax(); | 208 | cpu_relax(); |
206 | } while (loop--); | 209 | } while (loop--); |
207 | 210 | ||
208 | return -EAGAIN; | 211 | return -EAGAIN; |
209 | } | 212 | } |
210 | 213 | ||
211 | static int sc6000_read(char __iomem *vport) | 214 | static int sc6000_read(char __iomem *vport) |
212 | { | 215 | { |
213 | if (sc6000_wait_data(vport)) | 216 | if (sc6000_wait_data(vport)) |
214 | return -EBUSY; | 217 | return -EBUSY; |
215 | 218 | ||
216 | return ioread8(vport + DSP_READ); | 219 | return ioread8(vport + DSP_READ); |
217 | 220 | ||
218 | } | 221 | } |
219 | 222 | ||
220 | static int sc6000_write(char __iomem *vport, int cmd) | 223 | static int sc6000_write(char __iomem *vport, int cmd) |
221 | { | 224 | { |
222 | unsigned char val; | 225 | unsigned char val; |
223 | int loop = 500000; | 226 | int loop = 500000; |
224 | 227 | ||
225 | do { | 228 | do { |
226 | val = ioread8(vport + DSP_STATUS); | 229 | val = ioread8(vport + DSP_STATUS); |
227 | /* | 230 | /* |
228 | * DSP ready to receive data if bit 7 of val == 0 | 231 | * DSP ready to receive data if bit 7 of val == 0 |
229 | */ | 232 | */ |
230 | if (!(val & 0x80)) { | 233 | if (!(val & 0x80)) { |
231 | iowrite8(cmd, vport + DSP_COMMAND); | 234 | iowrite8(cmd, vport + DSP_COMMAND); |
232 | return 0; | 235 | return 0; |
233 | } | 236 | } |
234 | cpu_relax(); | 237 | cpu_relax(); |
235 | } while (loop--); | 238 | } while (loop--); |
236 | 239 | ||
237 | snd_printk(KERN_ERR "DSP Command (0x%x) timeout.\n", cmd); | 240 | snd_printk(KERN_ERR "DSP Command (0x%x) timeout.\n", cmd); |
238 | 241 | ||
239 | return -EIO; | 242 | return -EIO; |
240 | } | 243 | } |
241 | 244 | ||
242 | static int __devinit sc6000_dsp_get_answer(char __iomem *vport, int command, | 245 | static int __devinit sc6000_dsp_get_answer(char __iomem *vport, int command, |
243 | char *data, int data_len) | 246 | char *data, int data_len) |
244 | { | 247 | { |
245 | int len = 0; | 248 | int len = 0; |
246 | 249 | ||
247 | if (sc6000_write(vport, command)) { | 250 | if (sc6000_write(vport, command)) { |
248 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", command); | 251 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", command); |
249 | return -EIO; | 252 | return -EIO; |
250 | } | 253 | } |
251 | 254 | ||
252 | do { | 255 | do { |
253 | int val = sc6000_read(vport); | 256 | int val = sc6000_read(vport); |
254 | 257 | ||
255 | if (val < 0) | 258 | if (val < 0) |
256 | break; | 259 | break; |
257 | 260 | ||
258 | data[len++] = val; | 261 | data[len++] = val; |
259 | 262 | ||
260 | } while (len < data_len); | 263 | } while (len < data_len); |
261 | 264 | ||
262 | /* | 265 | /* |
263 | * If no more data available, return to the caller, no error if len>0. | 266 | * If no more data available, return to the caller, no error if len>0. |
264 | * We have no other way to know when the string is finished. | 267 | * We have no other way to know when the string is finished. |
265 | */ | 268 | */ |
266 | return len ? len : -EIO; | 269 | return len ? len : -EIO; |
267 | } | 270 | } |
268 | 271 | ||
269 | static int __devinit sc6000_dsp_reset(char __iomem *vport) | 272 | static int __devinit sc6000_dsp_reset(char __iomem *vport) |
270 | { | 273 | { |
271 | iowrite8(1, vport + DSP_RESET); | 274 | iowrite8(1, vport + DSP_RESET); |
272 | udelay(10); | 275 | udelay(10); |
273 | iowrite8(0, vport + DSP_RESET); | 276 | iowrite8(0, vport + DSP_RESET); |
274 | udelay(20); | 277 | udelay(20); |
275 | if (sc6000_read(vport) == 0xaa) | 278 | if (sc6000_read(vport) == 0xaa) |
276 | return 0; | 279 | return 0; |
277 | return -ENODEV; | 280 | return -ENODEV; |
278 | } | 281 | } |
279 | 282 | ||
280 | /* detection and initialization */ | 283 | /* detection and initialization */ |
281 | static int __devinit sc6000_hw_cfg_write(char __iomem *vport, const int *cfg) | 284 | static int __devinit sc6000_hw_cfg_write(char __iomem *vport, const int *cfg) |
282 | { | 285 | { |
283 | if (sc6000_write(vport, COMMAND_6C) < 0) { | 286 | if (sc6000_write(vport, COMMAND_6C) < 0) { |
284 | snd_printk(KERN_WARNING "CMD 0x%x: failed!\n", COMMAND_6C); | 287 | snd_printk(KERN_WARNING "CMD 0x%x: failed!\n", COMMAND_6C); |
285 | return -EIO; | 288 | return -EIO; |
286 | } | 289 | } |
287 | if (sc6000_write(vport, COMMAND_5C) < 0) { | 290 | if (sc6000_write(vport, COMMAND_5C) < 0) { |
288 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_5C); | 291 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_5C); |
289 | return -EIO; | 292 | return -EIO; |
290 | } | 293 | } |
291 | if (sc6000_write(vport, cfg[0]) < 0) { | 294 | if (sc6000_write(vport, cfg[0]) < 0) { |
292 | snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[0]); | 295 | snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[0]); |
293 | return -EIO; | 296 | return -EIO; |
294 | } | 297 | } |
295 | if (sc6000_write(vport, cfg[1]) < 0) { | 298 | if (sc6000_write(vport, cfg[1]) < 0) { |
296 | snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[1]); | 299 | snd_printk(KERN_ERR "DATA 0x%x: failed!\n", cfg[1]); |
297 | return -EIO; | 300 | return -EIO; |
298 | } | 301 | } |
299 | if (sc6000_write(vport, COMMAND_C5) < 0) { | 302 | if (sc6000_write(vport, COMMAND_C5) < 0) { |
300 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_C5); | 303 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", COMMAND_C5); |
301 | return -EIO; | 304 | return -EIO; |
302 | } | 305 | } |
303 | 306 | ||
304 | return 0; | 307 | return 0; |
305 | } | 308 | } |
306 | 309 | ||
307 | static int sc6000_cfg_write(char __iomem *vport, unsigned char softcfg) | 310 | static int sc6000_cfg_write(char __iomem *vport, unsigned char softcfg) |
308 | { | 311 | { |
309 | 312 | ||
310 | if (sc6000_write(vport, WRITE_MDIRQ_CFG)) { | 313 | if (sc6000_write(vport, WRITE_MDIRQ_CFG)) { |
311 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", WRITE_MDIRQ_CFG); | 314 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", WRITE_MDIRQ_CFG); |
312 | return -EIO; | 315 | return -EIO; |
313 | } | 316 | } |
314 | if (sc6000_write(vport, softcfg)) { | 317 | if (sc6000_write(vport, softcfg)) { |
315 | snd_printk(KERN_ERR "sc6000_cfg_write: failed!\n"); | 318 | snd_printk(KERN_ERR "sc6000_cfg_write: failed!\n"); |
316 | return -EIO; | 319 | return -EIO; |
317 | } | 320 | } |
318 | return 0; | 321 | return 0; |
319 | } | 322 | } |
320 | 323 | ||
321 | static int sc6000_setup_board(char __iomem *vport, int config) | 324 | static int sc6000_setup_board(char __iomem *vport, int config) |
322 | { | 325 | { |
323 | int loop = 10; | 326 | int loop = 10; |
324 | 327 | ||
325 | do { | 328 | do { |
326 | if (sc6000_write(vport, COMMAND_88)) { | 329 | if (sc6000_write(vport, COMMAND_88)) { |
327 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", | 330 | snd_printk(KERN_ERR "CMD 0x%x: failed!\n", |
328 | COMMAND_88); | 331 | COMMAND_88); |
329 | return -EIO; | 332 | return -EIO; |
330 | } | 333 | } |
331 | } while ((sc6000_wait_data(vport) < 0) && loop--); | 334 | } while ((sc6000_wait_data(vport) < 0) && loop--); |
332 | 335 | ||
333 | if (sc6000_read(vport) < 0) { | 336 | if (sc6000_read(vport) < 0) { |
334 | snd_printk(KERN_ERR "sc6000_read after CMD 0x%x: failed\n", | 337 | snd_printk(KERN_ERR "sc6000_read after CMD 0x%x: failed\n", |
335 | COMMAND_88); | 338 | COMMAND_88); |
336 | return -EIO; | 339 | return -EIO; |
337 | } | 340 | } |
338 | 341 | ||
339 | if (sc6000_cfg_write(vport, config)) | 342 | if (sc6000_cfg_write(vport, config)) |
340 | return -ENODEV; | 343 | return -ENODEV; |
341 | 344 | ||
342 | return 0; | 345 | return 0; |
343 | } | 346 | } |
344 | 347 | ||
345 | static int __devinit sc6000_init_mss(char __iomem *vport, int config, | 348 | static int __devinit sc6000_init_mss(char __iomem *vport, int config, |
346 | char __iomem *vmss_port, int mss_config) | 349 | char __iomem *vmss_port, int mss_config) |
347 | { | 350 | { |
348 | if (sc6000_write(vport, DSP_INIT_MSS)) { | 351 | if (sc6000_write(vport, DSP_INIT_MSS)) { |
349 | snd_printk(KERN_ERR "sc6000_init_mss [0x%x]: failed!\n", | 352 | snd_printk(KERN_ERR "sc6000_init_mss [0x%x]: failed!\n", |
350 | DSP_INIT_MSS); | 353 | DSP_INIT_MSS); |
351 | return -EIO; | 354 | return -EIO; |
352 | } | 355 | } |
353 | 356 | ||
354 | msleep(10); | 357 | msleep(10); |
355 | 358 | ||
356 | if (sc6000_cfg_write(vport, config)) | 359 | if (sc6000_cfg_write(vport, config)) |
357 | return -EIO; | 360 | return -EIO; |
358 | 361 | ||
359 | iowrite8(mss_config, vmss_port); | 362 | iowrite8(mss_config, vmss_port); |
360 | 363 | ||
361 | return 0; | 364 | return 0; |
362 | } | 365 | } |
363 | 366 | ||
364 | static void __devinit sc6000_hw_cfg_encode(char __iomem *vport, int *cfg, | 367 | static void __devinit sc6000_hw_cfg_encode(char __iomem *vport, int *cfg, |
365 | long xport, long xmpu, | 368 | long xport, long xmpu, |
366 | long xmss_port) | 369 | long xmss_port, int joystick) |
367 | { | 370 | { |
368 | cfg[0] = 0; | 371 | cfg[0] = 0; |
369 | cfg[1] = 0; | 372 | cfg[1] = 0; |
370 | if (xport == 0x240) | 373 | if (xport == 0x240) |
371 | cfg[0] |= 1; | 374 | cfg[0] |= 1; |
372 | if (xmpu != SNDRV_AUTO_PORT) { | 375 | if (xmpu != SNDRV_AUTO_PORT) { |
373 | cfg[0] |= (xmpu & 0x30) >> 2; | 376 | cfg[0] |= (xmpu & 0x30) >> 2; |
374 | cfg[1] |= 0x20; | 377 | cfg[1] |= 0x20; |
375 | } | 378 | } |
376 | if (xmss_port == 0xe80) | 379 | if (xmss_port == 0xe80) |
377 | cfg[0] |= 0x10; | 380 | cfg[0] |= 0x10; |
378 | cfg[0] |= 0x40; /* always set */ | 381 | cfg[0] |= 0x40; /* always set */ |
382 | if (!joystick) | ||
383 | cfg[0] |= 0x02; | ||
379 | cfg[1] |= 0x80; /* enable WSS system */ | 384 | cfg[1] |= 0x80; /* enable WSS system */ |
380 | cfg[1] &= ~0x40; /* disable IDE */ | 385 | cfg[1] &= ~0x40; /* disable IDE */ |
381 | snd_printd("hw cfg %x, %x\n", cfg[0], cfg[1]); | 386 | snd_printd("hw cfg %x, %x\n", cfg[0], cfg[1]); |
382 | } | 387 | } |
383 | 388 | ||
384 | static int __devinit sc6000_init_board(char __iomem *vport, | 389 | static int __devinit sc6000_init_board(char __iomem *vport, |
385 | char __iomem *vmss_port, int dev) | 390 | char __iomem *vmss_port, int dev) |
386 | { | 391 | { |
387 | char answer[15]; | 392 | char answer[15]; |
388 | char version[2]; | 393 | char version[2]; |
389 | int mss_config = sc6000_irq_to_softcfg(irq[dev]) | | 394 | int mss_config = sc6000_irq_to_softcfg(irq[dev]) | |
390 | sc6000_dma_to_softcfg(dma[dev]); | 395 | sc6000_dma_to_softcfg(dma[dev]); |
391 | int config = mss_config | | 396 | int config = mss_config | |
392 | sc6000_mpu_irq_to_softcfg(mpu_irq[dev]); | 397 | sc6000_mpu_irq_to_softcfg(mpu_irq[dev]); |
393 | int err; | 398 | int err; |
394 | int old = 0; | 399 | int old = 0; |
395 | 400 | ||
396 | err = sc6000_dsp_reset(vport); | 401 | err = sc6000_dsp_reset(vport); |
397 | if (err < 0) { | 402 | if (err < 0) { |
398 | snd_printk(KERN_ERR "sc6000_dsp_reset: failed!\n"); | 403 | snd_printk(KERN_ERR "sc6000_dsp_reset: failed!\n"); |
399 | return err; | 404 | return err; |
400 | } | 405 | } |
401 | 406 | ||
402 | memset(answer, 0, sizeof(answer)); | 407 | memset(answer, 0, sizeof(answer)); |
403 | err = sc6000_dsp_get_answer(vport, GET_DSP_COPYRIGHT, answer, 15); | 408 | err = sc6000_dsp_get_answer(vport, GET_DSP_COPYRIGHT, answer, 15); |
404 | if (err <= 0) { | 409 | if (err <= 0) { |
405 | snd_printk(KERN_ERR "sc6000_dsp_copyright: failed!\n"); | 410 | snd_printk(KERN_ERR "sc6000_dsp_copyright: failed!\n"); |
406 | return -ENODEV; | 411 | return -ENODEV; |
407 | } | 412 | } |
408 | /* | 413 | /* |
409 | * My SC-6000 card return "SC-6000" in DSPCopyright, so | 414 | * My SC-6000 card return "SC-6000" in DSPCopyright, so |
410 | * if we have something different, we have to be warned. | 415 | * if we have something different, we have to be warned. |
411 | */ | 416 | */ |
412 | if (strncmp("SC-6000", answer, 7)) | 417 | if (strncmp("SC-6000", answer, 7)) |
413 | snd_printk(KERN_WARNING "Warning: non SC-6000 audio card!\n"); | 418 | snd_printk(KERN_WARNING "Warning: non SC-6000 audio card!\n"); |
414 | 419 | ||
415 | if (sc6000_dsp_get_answer(vport, GET_DSP_VERSION, version, 2) < 2) { | 420 | if (sc6000_dsp_get_answer(vport, GET_DSP_VERSION, version, 2) < 2) { |
416 | snd_printk(KERN_ERR "sc6000_dsp_version: failed!\n"); | 421 | snd_printk(KERN_ERR "sc6000_dsp_version: failed!\n"); |
417 | return -ENODEV; | 422 | return -ENODEV; |
418 | } | 423 | } |
419 | printk(KERN_INFO PFX "Detected model: %s, DSP version %d.%d\n", | 424 | printk(KERN_INFO PFX "Detected model: %s, DSP version %d.%d\n", |
420 | answer, version[0], version[1]); | 425 | answer, version[0], version[1]); |
421 | 426 | ||
422 | /* set configuration */ | 427 | /* set configuration */ |
423 | sc6000_write(vport, COMMAND_5C); | 428 | sc6000_write(vport, COMMAND_5C); |
424 | if (sc6000_read(vport) < 0) | 429 | if (sc6000_read(vport) < 0) |
425 | old = 1; | 430 | old = 1; |
426 | 431 | ||
427 | if (!old) { | 432 | if (!old) { |
428 | int cfg[2]; | 433 | int cfg[2]; |
429 | sc6000_hw_cfg_encode(vport, &cfg[0], port[dev], mpu_port[dev], | 434 | sc6000_hw_cfg_encode(vport, &cfg[0], port[dev], mpu_port[dev], |
430 | mss_port[dev]); | 435 | mss_port[dev], joystick[dev]); |
431 | if (sc6000_hw_cfg_write(vport, cfg) < 0) { | 436 | if (sc6000_hw_cfg_write(vport, cfg) < 0) { |
432 | snd_printk(KERN_ERR "sc6000_hw_cfg_write: failed!\n"); | 437 | snd_printk(KERN_ERR "sc6000_hw_cfg_write: failed!\n"); |
433 | return -EIO; | 438 | return -EIO; |
434 | } | 439 | } |
435 | } | 440 | } |
436 | err = sc6000_setup_board(vport, config); | 441 | err = sc6000_setup_board(vport, config); |
437 | if (err < 0) { | 442 | if (err < 0) { |
438 | snd_printk(KERN_ERR "sc6000_setup_board: failed!\n"); | 443 | snd_printk(KERN_ERR "sc6000_setup_board: failed!\n"); |
439 | return -ENODEV; | 444 | return -ENODEV; |
440 | } | 445 | } |
441 | 446 | ||
442 | sc6000_dsp_reset(vport); | 447 | sc6000_dsp_reset(vport); |
443 | 448 | ||
444 | if (!old) { | 449 | if (!old) { |
445 | sc6000_write(vport, COMMAND_60); | 450 | sc6000_write(vport, COMMAND_60); |
446 | sc6000_write(vport, 0x02); | 451 | sc6000_write(vport, 0x02); |
447 | sc6000_dsp_reset(vport); | 452 | sc6000_dsp_reset(vport); |
448 | } | 453 | } |
449 | 454 | ||
450 | err = sc6000_setup_board(vport, config); | 455 | err = sc6000_setup_board(vport, config); |
451 | if (err < 0) { | 456 | if (err < 0) { |
452 | snd_printk(KERN_ERR "sc6000_setup_board: failed!\n"); | 457 | snd_printk(KERN_ERR "sc6000_setup_board: failed!\n"); |
453 | return -ENODEV; | 458 | return -ENODEV; |
454 | } | 459 | } |
455 | err = sc6000_init_mss(vport, config, vmss_port, mss_config); | 460 | err = sc6000_init_mss(vport, config, vmss_port, mss_config); |
456 | if (err < 0) { | 461 | if (err < 0) { |
457 | snd_printk(KERN_ERR "Cannot initialize " | 462 | snd_printk(KERN_ERR "Cannot initialize " |
458 | "Microsoft Sound System mode.\n"); | 463 | "Microsoft Sound System mode.\n"); |
459 | return -ENODEV; | 464 | return -ENODEV; |
460 | } | 465 | } |
461 | 466 | ||
462 | return 0; | 467 | return 0; |
463 | } | 468 | } |
464 | 469 | ||
465 | static int __devinit snd_sc6000_mixer(struct snd_wss *chip) | 470 | static int __devinit snd_sc6000_mixer(struct snd_wss *chip) |
466 | { | 471 | { |
467 | struct snd_card *card = chip->card; | 472 | struct snd_card *card = chip->card; |
468 | struct snd_ctl_elem_id id1, id2; | 473 | struct snd_ctl_elem_id id1, id2; |
469 | int err; | 474 | int err; |
470 | 475 | ||
471 | memset(&id1, 0, sizeof(id1)); | 476 | memset(&id1, 0, sizeof(id1)); |
472 | memset(&id2, 0, sizeof(id2)); | 477 | memset(&id2, 0, sizeof(id2)); |
473 | id1.iface = SNDRV_CTL_ELEM_IFACE_MIXER; | 478 | id1.iface = SNDRV_CTL_ELEM_IFACE_MIXER; |
474 | id2.iface = SNDRV_CTL_ELEM_IFACE_MIXER; | 479 | id2.iface = SNDRV_CTL_ELEM_IFACE_MIXER; |
475 | /* reassign AUX0 to FM */ | 480 | /* reassign AUX0 to FM */ |
476 | strcpy(id1.name, "Aux Playback Switch"); | 481 | strcpy(id1.name, "Aux Playback Switch"); |
477 | strcpy(id2.name, "FM Playback Switch"); | 482 | strcpy(id2.name, "FM Playback Switch"); |
478 | err = snd_ctl_rename_id(card, &id1, &id2); | 483 | err = snd_ctl_rename_id(card, &id1, &id2); |
479 | if (err < 0) | 484 | if (err < 0) |
480 | return err; | 485 | return err; |
481 | strcpy(id1.name, "Aux Playback Volume"); | 486 | strcpy(id1.name, "Aux Playback Volume"); |
482 | strcpy(id2.name, "FM Playback Volume"); | 487 | strcpy(id2.name, "FM Playback Volume"); |
483 | err = snd_ctl_rename_id(card, &id1, &id2); | 488 | err = snd_ctl_rename_id(card, &id1, &id2); |
484 | if (err < 0) | 489 | if (err < 0) |
485 | return err; | 490 | return err; |
486 | /* reassign AUX1 to CD */ | 491 | /* reassign AUX1 to CD */ |
487 | strcpy(id1.name, "Aux Playback Switch"); id1.index = 1; | 492 | strcpy(id1.name, "Aux Playback Switch"); id1.index = 1; |
488 | strcpy(id2.name, "CD Playback Switch"); | 493 | strcpy(id2.name, "CD Playback Switch"); |
489 | err = snd_ctl_rename_id(card, &id1, &id2); | 494 | err = snd_ctl_rename_id(card, &id1, &id2); |
490 | if (err < 0) | 495 | if (err < 0) |
491 | return err; | 496 | return err; |
492 | strcpy(id1.name, "Aux Playback Volume"); | 497 | strcpy(id1.name, "Aux Playback Volume"); |
493 | strcpy(id2.name, "CD Playback Volume"); | 498 | strcpy(id2.name, "CD Playback Volume"); |
494 | err = snd_ctl_rename_id(card, &id1, &id2); | 499 | err = snd_ctl_rename_id(card, &id1, &id2); |
495 | if (err < 0) | 500 | if (err < 0) |
496 | return err; | 501 | return err; |
497 | return 0; | 502 | return 0; |
498 | } | 503 | } |
499 | 504 | ||
500 | static int __devinit snd_sc6000_match(struct device *devptr, unsigned int dev) | 505 | static int __devinit snd_sc6000_match(struct device *devptr, unsigned int dev) |
501 | { | 506 | { |
502 | if (!enable[dev]) | 507 | if (!enable[dev]) |
503 | return 0; | 508 | return 0; |
504 | if (port[dev] == SNDRV_AUTO_PORT) { | 509 | if (port[dev] == SNDRV_AUTO_PORT) { |
505 | printk(KERN_ERR PFX "specify IO port\n"); | 510 | printk(KERN_ERR PFX "specify IO port\n"); |
506 | return 0; | 511 | return 0; |
507 | } | 512 | } |
508 | if (mss_port[dev] == SNDRV_AUTO_PORT) { | 513 | if (mss_port[dev] == SNDRV_AUTO_PORT) { |
509 | printk(KERN_ERR PFX "specify MSS port\n"); | 514 | printk(KERN_ERR PFX "specify MSS port\n"); |
510 | return 0; | 515 | return 0; |
511 | } | 516 | } |
512 | if (port[dev] != 0x220 && port[dev] != 0x240) { | 517 | if (port[dev] != 0x220 && port[dev] != 0x240) { |
513 | printk(KERN_ERR PFX "Port must be 0x220 or 0x240\n"); | 518 | printk(KERN_ERR PFX "Port must be 0x220 or 0x240\n"); |
514 | return 0; | 519 | return 0; |
515 | } | 520 | } |
516 | if (mss_port[dev] != 0x530 && mss_port[dev] != 0xe80) { | 521 | if (mss_port[dev] != 0x530 && mss_port[dev] != 0xe80) { |
517 | printk(KERN_ERR PFX "MSS port must be 0x530 or 0xe80\n"); | 522 | printk(KERN_ERR PFX "MSS port must be 0x530 or 0xe80\n"); |
518 | return 0; | 523 | return 0; |
519 | } | 524 | } |
520 | if (irq[dev] != SNDRV_AUTO_IRQ && !sc6000_irq_to_softcfg(irq[dev])) { | 525 | if (irq[dev] != SNDRV_AUTO_IRQ && !sc6000_irq_to_softcfg(irq[dev])) { |
521 | printk(KERN_ERR PFX "invalid IRQ %d\n", irq[dev]); | 526 | printk(KERN_ERR PFX "invalid IRQ %d\n", irq[dev]); |
522 | return 0; | 527 | return 0; |
523 | } | 528 | } |
524 | if (dma[dev] != SNDRV_AUTO_DMA && !sc6000_dma_to_softcfg(dma[dev])) { | 529 | if (dma[dev] != SNDRV_AUTO_DMA && !sc6000_dma_to_softcfg(dma[dev])) { |
525 | printk(KERN_ERR PFX "invalid DMA %d\n", dma[dev]); | 530 | printk(KERN_ERR PFX "invalid DMA %d\n", dma[dev]); |
526 | return 0; | 531 | return 0; |
527 | } | 532 | } |
528 | if (mpu_port[dev] != SNDRV_AUTO_PORT && | 533 | if (mpu_port[dev] != SNDRV_AUTO_PORT && |
529 | (mpu_port[dev] & ~0x30L) != 0x300) { | 534 | (mpu_port[dev] & ~0x30L) != 0x300) { |
530 | printk(KERN_ERR PFX "invalid MPU-401 port %lx\n", | 535 | printk(KERN_ERR PFX "invalid MPU-401 port %lx\n", |
531 | mpu_port[dev]); | 536 | mpu_port[dev]); |
532 | return 0; | 537 | return 0; |
533 | } | 538 | } |
534 | if (mpu_port[dev] != SNDRV_AUTO_PORT && | 539 | if (mpu_port[dev] != SNDRV_AUTO_PORT && |
535 | mpu_irq[dev] != SNDRV_AUTO_IRQ && mpu_irq[dev] != 0 && | 540 | mpu_irq[dev] != SNDRV_AUTO_IRQ && mpu_irq[dev] != 0 && |
536 | !sc6000_mpu_irq_to_softcfg(mpu_irq[dev])) { | 541 | !sc6000_mpu_irq_to_softcfg(mpu_irq[dev])) { |
537 | printk(KERN_ERR PFX "invalid MPU-401 IRQ %d\n", mpu_irq[dev]); | 542 | printk(KERN_ERR PFX "invalid MPU-401 IRQ %d\n", mpu_irq[dev]); |
538 | return 0; | 543 | return 0; |
539 | } | 544 | } |
540 | return 1; | 545 | return 1; |
541 | } | 546 | } |
542 | 547 | ||
543 | static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev) | 548 | static int __devinit snd_sc6000_probe(struct device *devptr, unsigned int dev) |
544 | { | 549 | { |
545 | static int possible_irqs[] = { 5, 7, 9, 10, 11, -1 }; | 550 | static int possible_irqs[] = { 5, 7, 9, 10, 11, -1 }; |
546 | static int possible_dmas[] = { 1, 3, 0, -1 }; | 551 | static int possible_dmas[] = { 1, 3, 0, -1 }; |
547 | int err; | 552 | int err; |
548 | int xirq = irq[dev]; | 553 | int xirq = irq[dev]; |
549 | int xdma = dma[dev]; | 554 | int xdma = dma[dev]; |
550 | struct snd_card *card; | 555 | struct snd_card *card; |
551 | struct snd_wss *chip; | 556 | struct snd_wss *chip; |
552 | struct snd_opl3 *opl3; | 557 | struct snd_opl3 *opl3; |
553 | char __iomem **vport; | 558 | char __iomem **vport; |
554 | char __iomem *vmss_port; | 559 | char __iomem *vmss_port; |
555 | 560 | ||
556 | 561 | ||
557 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, sizeof(vport), | 562 | err = snd_card_create(index[dev], id[dev], THIS_MODULE, sizeof(vport), |
558 | &card); | 563 | &card); |
559 | if (err < 0) | 564 | if (err < 0) |
560 | return err; | 565 | return err; |
561 | 566 | ||
562 | vport = card->private_data; | 567 | vport = card->private_data; |
563 | if (xirq == SNDRV_AUTO_IRQ) { | 568 | if (xirq == SNDRV_AUTO_IRQ) { |
564 | xirq = snd_legacy_find_free_irq(possible_irqs); | 569 | xirq = snd_legacy_find_free_irq(possible_irqs); |
565 | if (xirq < 0) { | 570 | if (xirq < 0) { |
566 | snd_printk(KERN_ERR PFX "unable to find a free IRQ\n"); | 571 | snd_printk(KERN_ERR PFX "unable to find a free IRQ\n"); |
567 | err = -EBUSY; | 572 | err = -EBUSY; |
568 | goto err_exit; | 573 | goto err_exit; |
569 | } | 574 | } |
570 | } | 575 | } |
571 | 576 | ||
572 | if (xdma == SNDRV_AUTO_DMA) { | 577 | if (xdma == SNDRV_AUTO_DMA) { |
573 | xdma = snd_legacy_find_free_dma(possible_dmas); | 578 | xdma = snd_legacy_find_free_dma(possible_dmas); |
574 | if (xdma < 0) { | 579 | if (xdma < 0) { |
575 | snd_printk(KERN_ERR PFX "unable to find a free DMA\n"); | 580 | snd_printk(KERN_ERR PFX "unable to find a free DMA\n"); |
576 | err = -EBUSY; | 581 | err = -EBUSY; |
577 | goto err_exit; | 582 | goto err_exit; |
578 | } | 583 | } |
579 | } | 584 | } |
580 | 585 | ||
581 | if (!request_region(port[dev], 0x10, DRV_NAME)) { | 586 | if (!request_region(port[dev], 0x10, DRV_NAME)) { |
582 | snd_printk(KERN_ERR PFX | 587 | snd_printk(KERN_ERR PFX |
583 | "I/O port region is already in use.\n"); | 588 | "I/O port region is already in use.\n"); |
584 | err = -EBUSY; | 589 | err = -EBUSY; |
585 | goto err_exit; | 590 | goto err_exit; |
586 | } | 591 | } |
587 | *vport = devm_ioport_map(devptr, port[dev], 0x10); | 592 | *vport = devm_ioport_map(devptr, port[dev], 0x10); |
588 | if (*vport == NULL) { | 593 | if (*vport == NULL) { |
589 | snd_printk(KERN_ERR PFX | 594 | snd_printk(KERN_ERR PFX |
590 | "I/O port cannot be iomaped.\n"); | 595 | "I/O port cannot be iomaped.\n"); |
591 | err = -EBUSY; | 596 | err = -EBUSY; |
592 | goto err_unmap1; | 597 | goto err_unmap1; |
593 | } | 598 | } |
594 | 599 | ||
595 | /* to make it marked as used */ | 600 | /* to make it marked as used */ |
596 | if (!request_region(mss_port[dev], 4, DRV_NAME)) { | 601 | if (!request_region(mss_port[dev], 4, DRV_NAME)) { |
597 | snd_printk(KERN_ERR PFX | 602 | snd_printk(KERN_ERR PFX |
598 | "SC-6000 port I/O port region is already in use.\n"); | 603 | "SC-6000 port I/O port region is already in use.\n"); |
599 | err = -EBUSY; | 604 | err = -EBUSY; |
600 | goto err_unmap1; | 605 | goto err_unmap1; |
601 | } | 606 | } |
602 | vmss_port = devm_ioport_map(devptr, mss_port[dev], 4); | 607 | vmss_port = devm_ioport_map(devptr, mss_port[dev], 4); |
603 | if (!vmss_port) { | 608 | if (!vmss_port) { |
604 | snd_printk(KERN_ERR PFX | 609 | snd_printk(KERN_ERR PFX |
605 | "MSS port I/O cannot be iomaped.\n"); | 610 | "MSS port I/O cannot be iomaped.\n"); |
606 | err = -EBUSY; | 611 | err = -EBUSY; |
607 | goto err_unmap2; | 612 | goto err_unmap2; |
608 | } | 613 | } |
609 | 614 | ||
610 | snd_printd("Initializing BASE[0x%lx] IRQ[%d] DMA[%d] MIRQ[%d]\n", | 615 | snd_printd("Initializing BASE[0x%lx] IRQ[%d] DMA[%d] MIRQ[%d]\n", |
611 | port[dev], xirq, xdma, | 616 | port[dev], xirq, xdma, |
612 | mpu_irq[dev] == SNDRV_AUTO_IRQ ? 0 : mpu_irq[dev]); | 617 | mpu_irq[dev] == SNDRV_AUTO_IRQ ? 0 : mpu_irq[dev]); |
613 | 618 | ||
614 | err = sc6000_init_board(*vport, vmss_port, dev); | 619 | err = sc6000_init_board(*vport, vmss_port, dev); |
615 | if (err < 0) | 620 | if (err < 0) |
616 | goto err_unmap2; | 621 | goto err_unmap2; |
617 | 622 | ||
618 | err = snd_wss_create(card, mss_port[dev] + 4, -1, xirq, xdma, -1, | 623 | err = snd_wss_create(card, mss_port[dev] + 4, -1, xirq, xdma, -1, |
619 | WSS_HW_DETECT, 0, &chip); | 624 | WSS_HW_DETECT, 0, &chip); |
620 | if (err < 0) | 625 | if (err < 0) |
621 | goto err_unmap2; | 626 | goto err_unmap2; |
622 | 627 | ||
623 | err = snd_wss_pcm(chip, 0, NULL); | 628 | err = snd_wss_pcm(chip, 0, NULL); |
624 | if (err < 0) { | 629 | if (err < 0) { |
625 | snd_printk(KERN_ERR PFX | 630 | snd_printk(KERN_ERR PFX |
626 | "error creating new WSS PCM device\n"); | 631 | "error creating new WSS PCM device\n"); |
627 | goto err_unmap2; | 632 | goto err_unmap2; |
628 | } | 633 | } |
629 | err = snd_wss_mixer(chip); | 634 | err = snd_wss_mixer(chip); |
630 | if (err < 0) { | 635 | if (err < 0) { |
631 | snd_printk(KERN_ERR PFX "error creating new WSS mixer\n"); | 636 | snd_printk(KERN_ERR PFX "error creating new WSS mixer\n"); |
632 | goto err_unmap2; | 637 | goto err_unmap2; |
633 | } | 638 | } |
634 | err = snd_sc6000_mixer(chip); | 639 | err = snd_sc6000_mixer(chip); |
635 | if (err < 0) { | 640 | if (err < 0) { |
636 | snd_printk(KERN_ERR PFX "the mixer rewrite failed\n"); | 641 | snd_printk(KERN_ERR PFX "the mixer rewrite failed\n"); |
637 | goto err_unmap2; | 642 | goto err_unmap2; |
638 | } | 643 | } |
639 | if (snd_opl3_create(card, | 644 | if (snd_opl3_create(card, |
640 | 0x388, 0x388 + 2, | 645 | 0x388, 0x388 + 2, |
641 | OPL3_HW_AUTO, 0, &opl3) < 0) { | 646 | OPL3_HW_AUTO, 0, &opl3) < 0) { |
642 | snd_printk(KERN_ERR PFX "no OPL device at 0x%x-0x%x ?\n", | 647 | snd_printk(KERN_ERR PFX "no OPL device at 0x%x-0x%x ?\n", |
643 | 0x388, 0x388 + 2); | 648 | 0x388, 0x388 + 2); |
644 | } else { | 649 | } else { |
645 | err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); | 650 | err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); |
646 | if (err < 0) | 651 | if (err < 0) |
647 | goto err_unmap2; | 652 | goto err_unmap2; |
648 | } | 653 | } |
649 | 654 | ||
650 | if (mpu_port[dev] != SNDRV_AUTO_PORT) { | 655 | if (mpu_port[dev] != SNDRV_AUTO_PORT) { |
651 | if (mpu_irq[dev] == SNDRV_AUTO_IRQ) | 656 | if (mpu_irq[dev] == SNDRV_AUTO_IRQ) |
652 | mpu_irq[dev] = -1; | 657 | mpu_irq[dev] = -1; |
653 | if (snd_mpu401_uart_new(card, 0, | 658 | if (snd_mpu401_uart_new(card, 0, |
654 | MPU401_HW_MPU401, | 659 | MPU401_HW_MPU401, |
655 | mpu_port[dev], 0, | 660 | mpu_port[dev], 0, |
656 | mpu_irq[dev], IRQF_DISABLED, | 661 | mpu_irq[dev], IRQF_DISABLED, |
657 | NULL) < 0) | 662 | NULL) < 0) |
658 | snd_printk(KERN_ERR "no MPU-401 device at 0x%lx ?\n", | 663 | snd_printk(KERN_ERR "no MPU-401 device at 0x%lx ?\n", |
659 | mpu_port[dev]); | 664 | mpu_port[dev]); |
660 | } | 665 | } |
661 | 666 | ||
662 | strcpy(card->driver, DRV_NAME); | 667 | strcpy(card->driver, DRV_NAME); |
663 | strcpy(card->shortname, "SC-6000"); | 668 | strcpy(card->shortname, "SC-6000"); |
664 | sprintf(card->longname, "Gallant SC-6000 at 0x%lx, irq %d, dma %d", | 669 | sprintf(card->longname, "Gallant SC-6000 at 0x%lx, irq %d, dma %d", |
665 | mss_port[dev], xirq, xdma); | 670 | mss_port[dev], xirq, xdma); |
666 | 671 | ||
667 | snd_card_set_dev(card, devptr); | 672 | snd_card_set_dev(card, devptr); |
668 | 673 | ||
669 | err = snd_card_register(card); | 674 | err = snd_card_register(card); |
670 | if (err < 0) | 675 | if (err < 0) |
671 | goto err_unmap2; | 676 | goto err_unmap2; |
672 | 677 | ||
673 | dev_set_drvdata(devptr, card); | 678 | dev_set_drvdata(devptr, card); |
674 | return 0; | 679 | return 0; |
675 | 680 | ||
676 | err_unmap2: | 681 | err_unmap2: |
677 | sc6000_setup_board(*vport, 0); | 682 | sc6000_setup_board(*vport, 0); |
678 | release_region(mss_port[dev], 4); | 683 | release_region(mss_port[dev], 4); |
679 | err_unmap1: | 684 | err_unmap1: |
680 | release_region(port[dev], 0x10); | 685 | release_region(port[dev], 0x10); |
681 | err_exit: | 686 | err_exit: |
682 | snd_card_free(card); | 687 | snd_card_free(card); |
683 | return err; | 688 | return err; |
684 | } | 689 | } |
685 | 690 | ||
686 | static int __devexit snd_sc6000_remove(struct device *devptr, unsigned int dev) | 691 | static int __devexit snd_sc6000_remove(struct device *devptr, unsigned int dev) |
687 | { | 692 | { |
688 | struct snd_card *card = dev_get_drvdata(devptr); | 693 | struct snd_card *card = dev_get_drvdata(devptr); |
689 | char __iomem **vport = card->private_data; | 694 | char __iomem **vport = card->private_data; |
690 | 695 | ||
691 | if (sc6000_setup_board(*vport, 0) < 0) | 696 | if (sc6000_setup_board(*vport, 0) < 0) |
692 | snd_printk(KERN_WARNING "sc6000_setup_board failed on exit!\n"); | 697 | snd_printk(KERN_WARNING "sc6000_setup_board failed on exit!\n"); |
693 | 698 | ||
694 | release_region(port[dev], 0x10); | 699 | release_region(port[dev], 0x10); |
695 | release_region(mss_port[dev], 4); | 700 | release_region(mss_port[dev], 4); |
696 | 701 | ||
697 | dev_set_drvdata(devptr, NULL); | 702 | dev_set_drvdata(devptr, NULL); |
698 | snd_card_free(card); | 703 | snd_card_free(card); |
699 | return 0; | 704 | return 0; |
700 | } | 705 | } |
701 | 706 | ||
702 | static struct isa_driver snd_sc6000_driver = { | 707 | static struct isa_driver snd_sc6000_driver = { |
703 | .match = snd_sc6000_match, | 708 | .match = snd_sc6000_match, |
704 | .probe = snd_sc6000_probe, | 709 | .probe = snd_sc6000_probe, |
705 | .remove = __devexit_p(snd_sc6000_remove), | 710 | .remove = __devexit_p(snd_sc6000_remove), |
706 | /* FIXME: suspend/resume */ | 711 | /* FIXME: suspend/resume */ |
707 | .driver = { | 712 | .driver = { |
708 | .name = DRV_NAME, | 713 | .name = DRV_NAME, |
709 | }, | 714 | }, |
710 | }; | 715 | }; |
711 | 716 | ||
712 | 717 | ||
713 | static int __init alsa_card_sc6000_init(void) | 718 | static int __init alsa_card_sc6000_init(void) |
714 | { | 719 | { |
715 | return isa_register_driver(&snd_sc6000_driver, SNDRV_CARDS); | 720 | return isa_register_driver(&snd_sc6000_driver, SNDRV_CARDS); |
716 | } | 721 | } |
717 | 722 | ||
718 | static void __exit alsa_card_sc6000_exit(void) | 723 | static void __exit alsa_card_sc6000_exit(void) |
719 | { | 724 | { |
720 | isa_unregister_driver(&snd_sc6000_driver); | 725 | isa_unregister_driver(&snd_sc6000_driver); |
721 | } | 726 | } |
722 | 727 | ||
723 | module_init(alsa_card_sc6000_init) | 728 | module_init(alsa_card_sc6000_init) |
724 | module_exit(alsa_card_sc6000_exit) | 729 | module_exit(alsa_card_sc6000_exit) |
725 | 730 |