root/drivers/sound/Readme.modules

/* [previous][next][first][last][top][bottom][index][help] */
                        Linux sound-driver module
                        (c) Peter Trattler
                        License: GPL (Gnu Public License)


Idea:

I've modified the sources for the sound driver to allow simply insert and
remove the sound driver from the kernel by calling (only available for Linux)

        insmod /usr/src/linux/modules/sound.o

and

        rmmod sound

This may be useful if you are doing one of the following things:

1) Debugging the sound driver
2) Creating a new device within the sound-driver
3) You do not the sound driver all the time (as it wastes quite a lot of
memory for its buffers)


Compilation:

Go to /usr/src/linux and make the following steps:

a) configure the sound driver: To do that call "make config" and enable the
sound-driver -- you will be asked different questions about your
sound-hardware (remember not to use a too big DMA-Buffer size; you
should use 16kB, if you have 16Bit devices, otherwise you can use 32kB)

b) disable the sound driver in the kernel: call make config again but answer
'N' to "Sound card support"

c) run "make modules"; the sound-driver sound.o should end up in
/usr/src/linux/modules


If memory is tight:

I've allocated at about 70kB for the sound-drivers internal tables. If this
is too much, 'insmod sound.o' will generate the following warning
...
use 'insmod memsize=xxxx'
...
You can only use this command, if you have (I think) at least
modules-1.1.87 or up. You can also switch debugging on by running the command

insmod sound.o debugmem=1


Files I changed:

I've only changed the files soundcard.c(most changes) and some changes within
the Makefile, sound_config.h and the Makefile in /usr/src/linux/drivers


Bugs:

a) As the kmalloc (..., GFP_DMA) caused some unexpected errors (I don't know if
it is my fault), I created some code, which is (by default) enabled by

#define KMALLOC_DMA_BROKEN 1 (within soundcard.c).

It trys to allocate a large enough region, so that the complete dma-buffer
can be occupied in this space. If it does not fit within this region it
doubles the size of it. But this can cause problems, if the sound-buffer is
too big (as kmalloc can only handle regions at up to circa 100kB).

So take care to use for 8Bit devices a sound-DMA-buffer of 32kB (maximum)
and for 16Bit devices a maximum of 16kB. Otherwise the allocation scheme
might fail.

b) Buffers allocated by the different sound devices via calls to kmalloc are
not freed, if the sound driver is removed again (these buffers tend to be
quite small -- so it does not harm a lot)

c) If there is not enough (kernel-) memory available, the installation of
the sound-driver fails. (This happens quite often, if you did not install the
driver right after booting -- [PS: I've only got 5MB of Ram, so this might
be the source for this problem])


Author:
        Peter Trattler (peter@sbox.tu-graz.ac.at)

/* [previous][next][first][last][top][bottom][index][help] */