diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /Documentation/sound/oss/README.modules |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'Documentation/sound/oss/README.modules')
-rw-r--r-- | Documentation/sound/oss/README.modules | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/Documentation/sound/oss/README.modules b/Documentation/sound/oss/README.modules new file mode 100644 index 000000000000..e691d74e1e5e --- /dev/null +++ b/Documentation/sound/oss/README.modules | |||
@@ -0,0 +1,106 @@ | |||
1 | Building a modular sound driver | ||
2 | ================================ | ||
3 | |||
4 | The following information is current as of linux-2.1.85. Check the other | ||
5 | readme files, especially README.OSS, for information not specific to | ||
6 | making sound modular. | ||
7 | |||
8 | First, configure your kernel. This is an idea of what you should be | ||
9 | setting in the sound section: | ||
10 | |||
11 | <M> Sound card support | ||
12 | |||
13 | <M> 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support | ||
14 | |||
15 | I have SoundBlaster. Select your card from the list. | ||
16 | |||
17 | <M> Generic OPL2/OPL3 FM synthesizer support | ||
18 | <M> FM synthesizer (YM3812/OPL-3) support | ||
19 | |||
20 | If you don't set these, you will probably find you can play .wav files | ||
21 | but not .midi. As the help for them says, set them unless you know your | ||
22 | card does not use one of these chips for FM support. | ||
23 | |||
24 | Once you are configured, make zlilo, modules, modules_install; reboot. | ||
25 | Note that it is no longer necessary or possible to configure sound in the | ||
26 | drivers/sound dir. Now one simply configures and makes one's kernel and | ||
27 | modules in the usual way. | ||
28 | |||
29 | Then, add to your /etc/modprobe.conf something like: | ||
30 | |||
31 | alias char-major-14-* sb | ||
32 | install sb /sbin/modprobe -i sb && /sbin/modprobe adlib_card | ||
33 | options sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330 | ||
34 | options adlib_card io=0x388 # FM synthesizer | ||
35 | |||
36 | Alternatively, if you have compiled in kernel level ISAPnP support: | ||
37 | |||
38 | alias char-major-14 sb | ||
39 | post-install sb /sbin/modprobe "-k" "adlib_card" | ||
40 | options adlib_card io=0x388 | ||
41 | |||
42 | The effect of this is that the sound driver and all necessary bits and | ||
43 | pieces autoload on demand, assuming you use kerneld (a sound choice) and | ||
44 | autoclean when not in use. Also, options for the device drivers are | ||
45 | set. They will not work without them. Change as appropriate for your card. | ||
46 | If you are not yet using the very cool kerneld, you will have to "modprobe | ||
47 | -k sb" yourself to get things going. Eventually things may be fixed so | ||
48 | that this kludgery is not necessary; for the time being, it seems to work | ||
49 | well. | ||
50 | |||
51 | Replace 'sb' with the driver for your card, and give it the right | ||
52 | options. To find the filename of the driver, look in | ||
53 | /lib/modules/<kernel-version>/misc. Mine looks like: | ||
54 | |||
55 | adlib_card.o # This is the generic OPLx driver | ||
56 | opl3.o # The OPL3 driver | ||
57 | sb.o # <<The SoundBlaster driver. Yours may differ.>> | ||
58 | sound.o # The sound driver | ||
59 | uart401.o # Used by sb, maybe other cards | ||
60 | |||
61 | Whichever card you have, try feeding it the options that would be the | ||
62 | default if you were making the driver wired, not as modules. You can | ||
63 | look at function referred to by module_init() for the card to see what | ||
64 | args are expected. | ||
65 | |||
66 | Note that at present there is no way to configure the io, irq and other | ||
67 | parameters for the modular drivers as one does for the wired drivers.. One | ||
68 | needs to pass the modules the necessary parameters as arguments, either | ||
69 | with /etc/modprobe.conf or with command-line args to modprobe, e.g. | ||
70 | |||
71 | modprobe sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330 | ||
72 | modprobe adlib_card io=0x388 | ||
73 | |||
74 | recommend using /etc/modprobe.conf. | ||
75 | |||
76 | Persistent DMA Buffers: | ||
77 | |||
78 | The sound modules normally allocate DMA buffers during open() and | ||
79 | deallocate them during close(). Linux can often have problems allocating | ||
80 | DMA buffers for ISA cards on machines with more than 16MB RAM. This is | ||
81 | because ISA DMA buffers must exist below the 16MB boundary and it is quite | ||
82 | possible that we can't find a large enough free block in this region after | ||
83 | the machine has been running for any amount of time. The way to avoid this | ||
84 | problem is to allocate the DMA buffers during module load and deallocate | ||
85 | them when the module is unloaded. For this to be effective we need to load | ||
86 | the sound modules right after the kernel boots, either manually or by an | ||
87 | init script, and keep them around until we shut down. This is a little | ||
88 | wasteful of RAM, but it guarantees that sound always works. | ||
89 | |||
90 | To make the sound driver use persistent DMA buffers we need to pass the | ||
91 | sound.o module a "dmabuf=1" command-line argument. This is normally done | ||
92 | in /etc/modprobe.conf like so: | ||
93 | |||
94 | options sound dmabuf=1 | ||
95 | |||
96 | If you have 16MB or less RAM or a PCI sound card, this is wasteful and | ||
97 | unnecessary. It is possible that machine with 16MB or less RAM will find | ||
98 | this option useful, but if your machine is so memory-starved that it | ||
99 | cannot find a 64K block free, you will be wasting even more RAM by keeping | ||
100 | the sound modules loaded and the DMA buffers allocated when they are not | ||
101 | needed. The proper solution is to upgrade your RAM. But you do also have | ||
102 | this improper solution as well. Use it wisely. | ||
103 | |||
104 | I'm afraid I know nothing about anything but my setup, being more of a | ||
105 | text-mode guy anyway. If you have options for other cards or other helpful | ||
106 | hints, send them to me, Jim Bray, jb@as220.org, http://as220.org/jb. | ||