Import 1.3.39
[davej-history.git] / drivers / sound / Readme.linux
blob5c5da08784cd5ad303ee25c99fcdfced7a9a1e1d
1 Installation
2 ------------
4 IMPORTANT!      Read this if you are installing a separately
5                 distributed version of this driver.
6                 Check that your kernel version works with this
7                 release of the driver (see Readme). Also verify
8                 that your current kernel version doesn't have more
9                 recent sound driver version than this one.
11 - Since you are reading this, you have already installed the files so
12   let's skip this step. To be serious, the sound driver belongs
13   to linux/drivers/sound. 
15 - To build the device files you need to run the enclosed shell scrip 
16   (see below).
18 - If you are installing a separately distributed version, copy the
19   soundcard.h to /usr/include/linux. It may contain some new stuff.
21 - Copy the sound/ultrasound.h  to /usr/include/sys
22   (Remove the old one from /usr/include/sys /usr/include/linux first).
24 - Ensure you have the following symlink:
25   ln -s /usr/include/linux/soundcard.h /usr/include/sys/soundcard.h
27 - Configure and compile Linux as normally (remember to include the
28   sound support during "make config").
30 Boot time configuration (using lilo and insmod) 
31 -----------------------------------------------
33 NOTE!   This information is little bit obsolete since it doesn't cover
34         some cards recently added to the driver. The following text
35         describes parameters just for some older cards. In addition
36         this method will not work with cards which have more than one
37         DMA channel or if the driver number is bigger than 15. (Driver
38         numbers are defined in soundcard.h).
40 -------------------------------------------------------------------
41 NOTE2!  This method to configure the sound driver is not normally
42         required. All configuration information is entered when the
43         kernel/driver is compiled. This method just gives a way
44         to override some configuration parameters during boot.
46         So THE METHOD PRESENTED IN THIS CHAPTER IS NORMALLY COMPLETELY
47         USELESS. DON'T USE IT UNLESS YOU HAVE A VERY SPECIAL REASON TO
48         DO THAT.
50         !!!!!!!!!!!!!!!!!!!! PLEASE NOTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
51         !!! Finding a working sound= command line is a difficult   !!!
52         !!! and timeconsuming task. For this reason I will not     !!!
53         !!! answer to messages asking about how to do it. So       !!!
54         !!! please don't use this method if you have any problems  !!!
55         !!! with it.                                               !!!
56         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
58 -------------------------------------------------------------------
60 This version of the sound driver has capability to accept the configuration
61 parameters from the boot loader (for example lilo). By default the 
62 driver is booted using the parameters given before compiling the driver
63 ('make config' or 'make soundconf'). If the kernel is booted using lilo and
64 the boot command is given manually, it's possible to give the configuration
65 parameters on the command line. Just hold down the <Alt> key when lilo
66 starts. Then give the boot command manually and append a sound= argument
67 to the boot command line. For example:
69 lilo boot: linux sound=0x222071,0x138800
71 The sound= argument could contain several configuration entries separated by a
72 comma. Each option gives the configuration for one sound device.
73 Give the options in the order given below. Other order of use is undefined.
74 Each option is encoded as the following:
76         0xTaaaId, where
77           ||  ||
78           ||  |+----   d = DMA channel (0, 1, 3, 5, 6 or 7)
79           ||  +-----   I = IRQ (HEXADECIMAL!!! 1=1, ..., 9=9, 10=a, ..., 15=f)
80           |+-------- aaa = I/O address (hexadecimal)
81           +----------  T = device type  1=FM Synth (YM3812 or OPL3)
82                                         2=SoundBlaster (1.0 to 2.0, Pro, 16)
83                                         3=ProAudioSpectrum16
84                                         4=Gravis UltraSound
85                                         5=MPU-401 UART midi
86                                         6=SB16 (16 bit DMA number)
87                                         7=SB16 Midi (MPU-401 emulation)
88                         (There are some new ones also but they are currently
89                         not documented. The card numbers are in soundcard.h).
91 These are the configuration templates for various soundcards:
93         0)      Disable the sound driver
94                 
95                 sound=0
97         1)      AdLib
99                 sound=0x138800
101         2)      SoundBlaster family and compatibles
103                 sound=0x2220Id,0x138800   (remember to set the IRQ and DMA)
104         or if you have SB16 or SB16ASP, you have to use the following:
105                 (use the same IRQ (the I colums) in all three places. The
106                  the D is the 16 bit DMA channel (5 to 7) and the d is 
107                  the 8 bit one (1 or 3). The X is the 2nd digit of the
108                  midi IO address (3 or 0)).
109                 sound=0x2220Id,0x6220ID,0x73X0I0,0x138800
111         3)      ProAudioSpectrum16, ProAudioStudio16, Logitech Soundman16 etc.
113                 sound=0x3388Id,0x2220Id,0x138800 (set the DMAs and IRQs)
114          
115         4)      Gravis UltraSound
117                 sound=0x42X0Id  (X is 1, 2, 3 or 4. Set the DMA and IRQ)
118         
119         5)      MPU-401
121                 sound=0x5aaaI0
123 If you have more than one soundcards, you have to concatenate the options
124 for each of the cards. There cannot be more than one sound= argument in the
125 command line. For example use "sound=0x5aaaI0,0x138800" if you have AdLib
126 and MPU-401 on your system. 
127 If there are two or more sound= arguments
128 in the boot command line, just the last one takes effect. The earlier ones
129 will be ignored silently.
131 The boot time configuration feature is intended mainly for distributors of
132 precompiled kernels. When this feature is used, drivers for all of the
133 cards have to be enabled before compiling the driver. The configurator program
134 doesn't enable MPU-401 when the full driver option is selected. It must be
135 enabled by uncommenting "#define EXCLUDE_MPU401" in the sound/local.h.
137 Important note!
139 The sound driver is enabled by default. If the kernel is booted without
140 using the sound=0 option, the sound driver is initialized using the compile
141 time parameters. This could be dangerous (specially if the MPU-401 driver
142 is enabled with I/O address 0x330 (used by AHA-1542 also)). If you want to
143 compile the driver to be inactive by default, you have to append a
144 #define SND_DEFAULT_ENABLE      0
145 to the sound/local.h before compiling the driver.
147 Remember to check that the sound setup routine is included in the 
148 bootparams structure in linux/init/main.c. It should contain the following
149 lines:
151 #ifdef CONFIG_SOUND
152         { "sound=", sound_setup },
153 #endif
155 In case these lines were not there, you have to insert them (the driver works
156 without them but it's not possible to give the boot time parameters for the
157 sound driver). Add also the following line somewhere near the beginning of
158 linux/init/main.c:
160 extern void sound_setup(char *str, int *ints);
162 Problems
163 --------
165 If you have any kind of problems, there is a debugging feature which
166 could help you to solve the problem. To use it, just execute the
167 command:
169         cat /dev/sndstat 
171 and look at the output. It should display some usefull info about the
172 driver configuration. If there is no /dev/sndstat 
173 (/dev/sndstat: No such file or directory), ensure that you have executed the
174 soundinstall script (at the end of this file). The message: 
175 /dev/dsp: No such device means that you don't have the sound driver installed
176 on your kernel or the driver version is earlier than 1.99.6.
179 - /dev/???????: No such file or directory.
180 Run the script at the end of this file.
182 - /dev/???????: No such device.
183 You have not booted with a kernel containing the driver or the I/O address
184 configuration doesn't match your hardaware. 
186 - The module player (str) plays just a second and then stops completely.
187 You have incorrect IRQ settings (usual with SB cards).
189 - There is pauses in the playback of the module player (str).
190 The str program requires more than 40% of the speed of a 486/50 to play
191 without pauses at 44 kHz speed. A 386/25 can hardly play faster than 22 kHz.
192 You should use lower speed (-s speed), buy a faster computer or a Gravis 
193 UltraSound card. (If you already have GUS, you should use gmod and not the
194 str). If the DSP_BUFFSIZE in the sound/local.h is less than (nr_channels*
195 speed_in_Hz * (bits/8))/2, it could explain the pausing problem. Also check
196 that the turbo swich is on and don't run applications like weather forecasting
197 on background. Sometimes (very rarely) an IRQ conflict can cause similar
198 problems with SB cards.
199 If you want to play modules on a 386sx while recompiling the world, buy a GUS.
200 It runs without burning your CPU.
202 Hannu Savolainen
203 hannu@voxware.pp.fi
205 ----------------- cut here ------------------------------
206 #!/bin/sh
208 #       soudinstall             
211 # Create the devices
213 #       Mixer devices
215 if [ -e /dev/mixer ]; then 
216         rm -f /dev/mixer 
219 mknod -m 666 /dev/mixer c 14 0
220 if [ -e /dev/mixer1 ]; then 
221         rm -f /dev/mixer1 
223 mknod -m 666 /dev/mixer1 c 14 16
226 #       Sequencer       (14, 1)
228 if [ -e /dev/sequencer ]; then
229         rm -f /dev/sequencer
231 mknod -m 666 /dev/sequencer c 14 1
233 if [ -e /dev/patmgr0 ]; then
234         rm -f /dev/patmgr0
236 mknod -m 666 /dev/patmgr0 c 14 17
237 if [ -e /dev/patmgr1 ]; then
238         rm -f /dev/patmgr1
240 mknod -m 666 /dev/patmgr1 c 14 33
242         #       music   (14, 8)
243         #
244         if [ -e /dev/music ]; then
245                 rm -f /dev/music
246         fi
248         mknod -m 666 /dev/music c 14 8
249         if [ -e /dev/sequencer2 ]; then
250                 rm -f /dev/sequencer2
251         fi
252         ln -s /dev/music /dev/sequencer2
254 #       Midi devices
256 if [ -e /dev/midi ]; then
257         rm -f /dev/midi         # Old name. Don't use it
259         if [ -e /dev/midi00 ]; then
260                 rm -f /dev/midi00
261         fi
262         mknod -m 666 /dev/midi00 c 14 2
263         
264         if [ -e /dev/midi01 ]; then
265                 rm -f /dev/midi01
266         fi
267         mknod -m 666 /dev/midi01 c 14 18
268         
269         if [ -e /dev/midi02 ]; then
270                 rm -f /dev/midi02
271         fi
272         mknod -m 666 /dev/midi02 c 14 34
273         
274         if [ -e /dev/midi03 ]; then
275                 rm -f /dev/midi03
276         fi
277         mknod -m 666 /dev/midi03 c 14 50
279 #       DSP             (14, 3)
281 if [ -e /dev/dsp ]; then
282         rm -f /dev/dsp
284 if [ -e /dev/dsp0 ]; then
285         rm -f /dev/dsp0
287 mknod -m 666 /dev/dsp0 c 14 3
288 ln -s /dev/dsp0 /dev/dsp
291 #       SPARC compatible /dev/audio     (14, 4) 
293 if [ -e /dev/audio ]; then
294         rm -f /dev/audio
296 if [ -e /dev/audio0 ]; then
297         rm -f /dev/audio0
299 mknod -m 666 /dev/audio0 c 14 4
300 ln -s /dev/audio0 /dev/audio
303 #       DSP1            (14, 19) /dev/dsp for the second soundcard.
304 #                               Also the SB emulation part of the
305 #                               PAS16 card.
307 if [ -e /dev/dsp1 ]; then
308         rm -f /dev/dsp1
310 mknod -m 666 /dev/dsp1 c 14 19
312 #       SPARC audio1    (14, 20) 
313 #                               /dev/audio for the second soundcard.
314 #                               Also the SB emulation part of the
315 #                               PAS16 card.
317 if [ -e /dev/audio1 ]; then
318         rm -f /dev/audio1
320 mknod -m 666 /dev/audio1 c 14 20
322 #       /dev/sndstat    (14,6)  For debugging purposes
324 if [ -e /dev/sndstat ]; then
325         rm -f /dev/sndstat
327 mknod -m 666 /dev/sndstat c 14 6
328 exit 0