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/] [Introduction] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
Introduction    Notes on Modular Sound Drivers and Soundcore
2
Wade Hampton
3
2/14/2001
4
 
5
Purpose:
6
========
7
This document provides some general notes on the modular
8
sound drivers and their configuration, along with the
9
support modules sound.o and soundcore.o.
10
 
11
Note, some of this probably should be added to the Sound-HOWTO!
12
 
13
Note, soundlow.o was present with 2.2 kernels but is not
14
required for 2.4.x kernels.  References have been removed
15
to this.
16
 
17
 
18
Copying:
19
========
20
none
21
 
22
 
23
History:
24
========
25
0.1.0  11/20/1998  First version, draft
26
1.0.0  11/1998     Alan Cox changes, incorporation in 2.2.0
27
                   as Documentation/sound/oss/Introduction
28
1.1.0  6/30/1999   Second version, added notes on making the drivers,
29
                   added info on multiple sound cards of similar types,]
30
                   added more diagnostics info, added info about esd.
31
                   added info on OSS and ALSA.
32
1.1.1  19991031    Added notes on sound-slot- and sound-service.
33
                        (Alan Cox)
34
1.1.2  20000920    Modified for Kernel 2.4 (Christoph Hellwig)
35
1.1.3  20010214    Minor notes and corrections (Wade Hampton)
36
                   Added examples of sound-slot-0, etc.
37
 
38
 
39
Modular Sound Drivers:
40
======================
41
 
42
Thanks to the GREAT work by Alan Cox (alan@lxorguk.ukuu.org.uk),
43
 
44
[And Oleg Drokin, Thomas Sailer, Andrew Veliath and more than a few
45
 others - not to mention Hannu's original code being designed well
46
 enough to cope with that kind of chopping up](Alan)
47
 
48
the standard Linux kernels support a modular sound driver.  From
49
Alan's comments in linux/drivers/sound/README.FIRST:
50
 
51
  The modular sound driver patches were funded by Red Hat Software
52
  (www.redhat.com). The sound driver here is thus a modified version of
53
  Hannu's code. Please bear that in mind when considering the appropriate
54
  forums for bug reporting.
55
 
56
The modular sound drivers may be loaded via insmod or modprobe.
57
To support all the various sound modules, there are two general
58
support modules that must be loaded first:
59
 
60
   soundcore.o:   Top level handler for the sound system, provides
61
                  a set of functions for registration of devices
62
                  by type.
63
 
64
   sound.o:       Common sound functions required by all modules.
65
 
66
For the specific sound modules (e.g., sb.o for the Soundblaster),
67
read the documentation on that module to determine what options
68
are available, for example IRQ, address, DMA.
69
 
70
Warning, the options for different cards sometime use different names
71
for the same or a similar feature (dma1= versus dma16=).  As a last
72
resort, inspect the code (search for module_param).
73
 
74
Notes:
75
 
76
1.  There is a new OpenSource sound driver called ALSA which is
77
    currently under development:  http://www.alsa-project.org/
78
    The ALSA drivers support some newer hardware that may not
79
    be supported by this sound driver and also provide some
80
    additional features.
81
 
82
2.  The commercial OSS driver may be obtained from the site:
83
    http://www/opensound.com.  This may be used for cards that
84
    are unsupported by the kernel driver, or may be used
85
    by other operating systems.
86
 
87
3.  The enlightenment sound daemon may be used for playing
88
    multiple sounds at the same time via a single card, eliminating
89
    some of the requirements for multiple sound card systems.  For
90
    more information, see:  http://www.tux.org/~ricdude/EsounD.html
91
    The "esd" program may be used with the real-player and mpeg
92
    players like mpg123 and x11amp.  The newer real-player
93
    and some games even include built-in support for ESD!
94
 
95
 
96
Building the Modules:
97
=====================
98
 
99
This document does not provide full details on building the
100
kernel, etc.  The notes below apply only to making the kernel
101
sound modules.   If this conflicts with the kernel's README,
102
the README takes precedence.
103
 
104
1.  To make the kernel sound modules, cd to your /usr/src/linux
105
    directory (typically) and type make config, make menuconfig,
106
    or make xconfig (to start the command line, dialog, or x-based
107
    configuration tool).
108
 
109
2.  Select the Sound option and a dialog will be displayed.
110
 
111
3.  Select M (module) for "Sound card support".
112
 
113
4.  Select your sound driver(s) as a module.  For ProAudio, Sound
114
    Blaster, etc., select M (module) for OSS sound modules.
115
    [thanks to Marvin Stodolsky ]A
116
 
117
5.  Make the kernel (e.g., make bzImage), and install the kernel.
118
 
119
6.  Make the modules and install them (make modules; make modules_install).
120
 
121
Note, for 2.5.x kernels, make sure you have the newer module-init-tools
122
installed or modules will not be loaded properly.  2.5.x requires an
123
updated module-init-tools.
124
 
125
 
126
Plug and Play (PnP:
127
===================
128
 
129
If the sound card is an ISA PnP card, isapnp may be used
130
to configure the card.  See the file isapnp.txt in the
131
directory one level up (e.g., /usr/src/linux/Documentation).
132
 
133
Also the 2.4.x kernels provide PnP capabilities, see the
134
file NEWS in this directory.
135
 
136
PCI sound cards are highly recommended, as they are far
137
easier to configure and from what I have read, they use
138
less resources and are more CPU efficient.
139
 
140
 
141
INSMOD:
142
=======
143
 
144
If loading via insmod, the common modules must be loaded in the
145
order below BEFORE loading the other sound modules.  The card-specific
146
modules may then be loaded (most require parameters).  For example,
147
I use the following via a shell script to load my SoundBlaster:
148
 
149
SB_BASE=0x240
150
SB_IRQ=9
151
SB_DMA=3
152
SB_DMA2=5
153
SB_MPU=0x300
154
#
155
echo Starting sound
156
/sbin/insmod soundcore
157
/sbin/insmod sound
158
#
159
echo Starting sound blaster....
160
/sbin/insmod uart401
161
/sbin/insmod sb io=$SB_BASE irq=$SB_IRQ dma=$SB_DMA dma16=$SB_DMA2 mpu_io=$SB_MP
162
 
163
When using sound as a module, I typically put these commands
164
in a file such as /root/soundon.sh.
165
 
166
 
167
MODPROBE:
168
=========
169
 
170
If loading via modprobe, these common files are automatically loaded
171
when requested by modprobe.  For example, my /etc/modprobe.conf contains:
172
 
173
alias sound sb
174
options sb io=0x240 irq=9 dma=3 dma16=5 mpu_io=0x300
175
 
176
All you need to do to load the module is:
177
 
178
        /sbin/modprobe sb
179
 
180
 
181
Sound Status:
182
=============
183
 
184
The status of sound may be read/checked by:
185
        cat (anyfile).au >/dev/audio
186
 
187
[WWH:  This may not work properly for SoundBlaster PCI 128 cards
188
such as the es1370/1 (see the es1370/1 files in this directory)
189
as they do not automatically support uLaw on /dev/audio.]
190
 
191
The status of the modules and which modules depend on
192
which other modules may be checked by:
193
        /sbin/lsmod
194
 
195
/sbin/lsmod should show something like the following:
196
        sb                     26280   0
197
        uart401                 5640   0  [sb]
198
        sound                  57112   0  [sb uart401]
199
        soundcore               1968   8  [sb sound]
200
 
201
 
202
Removing Sound:
203
===============
204
 
205
Sound may be removed by using /sbin/rmmod in the reverse order
206
in which you load the modules.  Note, if a program has a sound device
207
open (e.g., xmixer), that module (and the modules on which it
208
depends) may not be unloaded.
209
 
210
For example, I use the following to remove my Soundblaster (rmmod
211
in the reverse order in which I loaded the modules):
212
 
213
/sbin/rmmod sb
214
/sbin/rmmod uart401
215
/sbin/rmmod sound
216
/sbin/rmmod soundcore
217
 
218
When using sound as a module, I typically put these commands
219
in a script such as /root/soundoff.sh.
220
 
221
 
222
Removing Sound for use with OSS:
223
================================
224
 
225
If you get really stuck or have a card that the kernel modules
226
will not support, you can get a commercial sound driver from
227
http://www.opensound.com.  Before loading the commercial sound
228
driver, you should do the following:
229
 
230
1.  remove sound modules (detailed above)
231
2.  remove the sound modules from /etc/modprobe.conf
232
3.  move the sound modules from /lib/modules//misc
233
    (for example, I make a /lib/modules//misc/tmp
234
    directory and copy the sound module files to that
235
    directory).
236
 
237
 
238
Multiple Sound Cards:
239
=====================
240
 
241
The sound drivers will support multiple sound cards and there
242
are some great applications like multitrack that support them.
243
Typically, you need two sound cards of different types.  Note, this
244
uses more precious interrupts and DMA channels and sometimes
245
can be a configuration nightmare.  I have heard reports of 3-4
246
sound cards (typically I only use 2).  You can sometimes use
247
multiple PCI sound cards of the same type.
248
 
249
On my machine I have two sound cards (cs4232 and Soundblaster Vibra
250
16).  By loading sound as modules, I can control which is the first
251
sound device (/dev/dsp, /dev/audio, /dev/mixer) and which is
252
the second.  Normally, the cs4232 (Dell sound on the motherboard)
253
would be the first sound device, but I prefer the Soundblaster.
254
All you have to do is to load the one you want as /dev/dsp
255
first (in my case "sb") and then load the other one
256
(in my case "cs4232").
257
 
258
If you have two cards of the same type that are jumpered
259
cards or different PnP revisions, you may load the same
260
module twice.  For example, I have a SoundBlaster vibra 16
261
and an older SoundBlaster 16 (jumpers).  To load the module
262
twice, you need to do the following:
263
 
264
1.  Copy the sound modules to a new name.  For example
265
    sb.o could be copied (or symlinked) to sb1.o for the
266
    second SoundBlaster.
267
 
268
2.  Make a second entry in /etc/modprobe.conf, for example,
269
    sound1 or sb1.  This second entry should refer to the
270
    new module names for example sb1, and should include
271
    the I/O, etc. for the second sound card.
272
 
273
3.  Update your soundon.sh script, etc.
274
 
275
Warning:  I have never been able to get two PnP sound cards of the
276
same type to load at the same time.  I have tried this several times
277
with the Soundblaster Vibra 16 cards.  OSS has indicated that this
278
is a PnP problem....  If anyone has any luck doing this, please
279
send me an E-MAIL.  PCI sound cards should not have this problem.a
280
Since this was originally release, I have received a couple of
281
mails from people who have accomplished this!
282
 
283
NOTE: In Linux 2.4 the Sound Blaster driver (and only this one yet)
284
supports multiple cards with one module by default.
285
Read the file 'Soundblaster' in this directory for details.
286
 
287
 
288
Sound Problems:
289
===============
290
 
291
First RTFM (including the troubleshooting section
292
in the Sound-HOWTO).
293
 
294
1)  If you are having problems loading the modules (for
295
    example, if you get device conflict errors) try the
296
    following:
297
 
298
  A)  If you have Win95 or NT on the same computer,
299
      write down what addresses, IRQ, and DMA channels
300
      those were using for the same hardware.  You probably
301
      can use these addresses, IRQs, and DMA channels.
302
      You should really do this BEFORE attempting to get
303
      sound working!
304
 
305
  B)  Check (cat) /proc/interrupts, /proc/ioports,
306
      and /proc/dma.  Are you trying to use an address,
307
      IRQ or DMA port that another device is using?
308
 
309
  C)  Check (cat) /proc/isapnp
310
 
311
  D)  Inspect your /var/log/messages file.  Often that will
312
      indicate what IRQ or IO port could not be obtained.
313
 
314
  E)  Try another port or IRQ.  Note this may involve
315
      using the PnP tools to move the sound card to
316
      another location.  Sometimes this is the only way
317
      and it is more or less trial and error.
318
 
319
2)  If you get motor-boating (the same sound or part of a
320
    sound clip repeated), you probably have either an IRQ
321
    or DMA conflict.  Move the card to another IRQ or DMA
322
    port.  This has happened to me when playing long files
323
    when I had an IRQ conflict.
324
 
325
3.  If you get dropouts or pauses when playing high sample
326
    rate files such as using mpg123 or x11amp/xmms, you may
327
    have too slow of a CPU and may have to use the options to
328
    play the files at 1/2 speed.  For example, you may use
329
    the -2 or -4 option on mpg123.  You may also get this
330
    when trying to play mpeg files stored on a CD-ROM
331
    (my Toshiba T8000 PII/366 sometimes has this problem).
332
 
333
4.  If you get "cannot access device" errors, your /dev/dsp
334
    files, etc. may be set to owner root, mode 600.  You
335
    may have to use the command:
336
      chmod 666 /dev/dsp /dev/mixer /dev/audio
337
 
338
5.  If you get "device busy" errors, another program has the
339
    sound device open.  For example, if using the Enlightenment
340
    sound daemon "esd", the "esd" program has the sound device.
341
    If using "esd", please RTFM the docs on ESD.  For example,
342
    esddsp  may be used to play files via a non-esd
343
    aware program.
344
 
345
6)  Ask for help on the sound list or send E-MAIL to the
346
    sound driver author/maintainer.
347
 
348
7)  Turn on debug in drivers/sound/sound_config.h (DEB, DDB, MDB).
349
 
350
8)  If the system reports insufficient DMA memory then you may want to
351
    load sound with the "dmabufs=1" option. Or in /etc/conf.modules add
352
 
353
        preinstall sound dmabufs=1
354
 
355
    This makes the sound system allocate its buffers and hang onto them.
356
 
357
    You may also set persistent DMA when building a 2.4.x kernel.
358
 
359
 
360
Configuring Sound:
361
==================
362
 
363
There are several ways of configuring your sound:
364
 
365
1)  On the kernel command line (when using the sound driver(s)
366
    compiled in the kernel). Check the driver source and
367
    documentation for details.
368
 
369
2)  On the command line when using insmod or in a bash script
370
    using command line calls to load sound.
371
 
372
3)  In /etc/modprobe.conf when using modprobe.
373
 
374
4)  Via Red Hat's GPL'd /usr/sbin/sndconfig program (text based).
375
 
376
5)  Via the OSS soundconf program (with the commercial version
377
    of the OSS driver.
378
 
379
6)  By just loading the module and let isapnp do everything relevant
380
    for you. This works only with a few drivers yet and - of course -
381
    only with isapnp hardware.
382
 
383
And I am sure, several other ways.
384
 
385
Anyone want to write a linuxconf module for configuring sound?
386
 
387
 
388
Module Loading:
389
===============
390
 
391
When a sound card is first referenced and sound is modular, the sound system
392
will ask for the sound devices to be loaded. Initially it requests that
393
the driver for the sound system is loaded. It then will ask for
394
sound-slot-0, where 0 is the first sound card. (sound-slot-1 the second and
395
so on). Thus you can do
396
 
397
alias sound-slot-0 sb
398
 
399
To load a soundblaster at this point. If the slot loading does not provide
400
the desired device - for example a soundblaster does not directly provide
401
a midi synth in all cases then it will request "sound-service-0-n" where n
402
is
403
 
404
 
405
 
406
  2     MIDI
407
 
408
  3, 4  DSP audio
409
 
410
 
411
For example, I use the following to load my Soundblaster PCI 128
412
(ES 1371) card first, followed by my SoundBlaster Vibra 16 card,
413
then by my TV card:
414
 
415
# Load the Soundblaster PCI 128 as /dev/dsp, /dev/dsp1, /dev/mixer
416
alias sound-slot-0 es1371
417
 
418
# Load the Soundblaster Vibra 16 as /dev/dsp2, /dev/mixer1
419
alias sound-slot-1 sb
420
options sb io=0x240 irq=5 dma=1 dma16=5 mpu_io=0x330
421
 
422
# Load the BTTV (TV card) as /dev/mixer2
423
alias sound-slot-2 bttv
424
alias sound-service-2-0 tvmixer
425
 
426
pre-install bttv  modprobe tuner ; modprobe tvmixer
427
pre-install tvmixer modprobe msp3400; modprobe tvaudio
428
options tuner debug=0 type=8
429
options bttv  card=0 radio=0 pll=0
430
 
431
 
432
For More Information (RTFM):
433
============================
434
1)  Information on kernel modules: manual pages for insmod and modprobe.
435
 
436
2)  Information on PnP, RTFM manual pages for isapnp.
437
 
438
3)  Sound-HOWTO and Sound-Playing-HOWTO.
439
 
440
4)  OSS's WWW site at http://www.opensound.com.
441
 
442
5)  All the files in Documentation/sound.
443
 
444
6)  The comments and code in linux/drivers/sound.
445
 
446
7)  The sndconfig and rhsound documentation from Red Hat.
447
 
448
8)  The Linux-sound mailing list:  sound-list@redhat.com.
449
 
450
9)  Enlightenment documentation (for info on esd)
451
    http://www.tux.org/~ricdude/EsounD.html.
452
 
453
10) ALSA home page:  http://www.alsa-project.org/
454
 
455
 
456
Contact Information:
457
====================
458
Wade Hampton:  (whampton@staffnet.com)
459
 

powered by: WebSVN 2.1.0

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