OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [Documentation/] [sound/] [oss/] [README.modules] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
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
 Sound card support
12
 
13
 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
14
 
15
  I have SoundBlaster. Select your card from the list.
16
 
17
 Generic OPL2/OPL3 FM synthesizer support
18
 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//misc. Mine looks like:
54
 
55
adlib_card.o # This is the generic OPLx driver
56
opl3.o # The OPL3 driver
57
sb.o # <>
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.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.