Maestro 2 sound driver update.
Subsystems (2)
PATCH 1/1 Maestro 2 sound driver update.
The attached patch, against 2.4.0-test12, makes some changes to the Maestro 2 sound driver for Linux.
The main changes are:
* allow multiple opens of /dev/dsp
* support persistent DMA buffer allocation
* default number of channels at compile time
* support kernel command line arguments
The multiple open of /dev/dsp is the most interesting change. Now, multiple processes can open the device at the same time. Previously the driver would export one dsp device per channel.
This is an incompatible change so, if you use the patch, be aware of that.
This needs more testing before being ready to submit for inclusion in the kernel proper. If you do try it, could you please send me reports (by private mail) about your success or failure?
Thanks,
Daniel
Documentation/Configure.help +16 -0
@@ -14464,6 +14464,22 @@ of PCI sound chips. These include the Maestro 1, Maestro 2, and Maestro 2E. See Documentation/sound/Maestro for more details. +The number of DSP device to create. +CONFIG_MAESTRO_CHANNELS + The number of DSP devices to allocate. Each device functions as + a fully independent sound system. The more devices allocated, + however, the larger the memory requirement for the driver. + You can allocate up to four DSP devices, but only in multiples + of two. This allows one, two or four devices. + +Allocate memory for DSP devices persistently +CONFIG_MAESTRO_PERSIST + If you say Y to this, the memory for the DSP devices provided + by the Maestro device will be retained even when the sound + system is not in use. + This is beneficial if you find that sound cannot be used after + doing other things on the machine for a while. + Are you using a crosscompiler CONFIG_CROSSCOMPILE Say Y here if you are compiling the kernel on a different
Only in linux.dp/Documentation: Configure.help~
Documentation/sound/Maestro +26 -10
@@ -80,16 +80,32 @@ an IRQ. This operation is incredibly system specific, so you're on your own. Sometimes the magic lies in 'PNP Capable Operating System' settings. -There are very few options to the driver. One is 'debug' which will -tell the driver to print minimal debugging information as it runs. This -can be collected with 'dmesg' or through the klogd daemon. - -The other, more interesting option, is 'dsps_order'. Typically at -install time the driver will only register one available /dev/dsp device -for its use. The 'dsps_order' module parameter allows for more devices -to be allocated, as a power of two. Up to 4 devices can be registered -( dsps_order=2 ). These devices act as fully distinct units and use -separate channels in the maestro. +There are very few options to the driver. Options can be specified as either +module options or on the kernel command line. Command line arguments are in +the form 'maestro=<option>:<value>,<option>:<value>'. + +One is 'debug' which will tell the driver to print minimal debugging +information as it runs. This can be collected with 'dmesg' or through the +klogd daemon. Setting this to one will cause debug information to be dumped. + +The other, more interesting option, is 'channels'. At install time the driver +will register /dev/dsp and makes a number of channels available through this +device. Multiple programs can open /dev/dsp, until all channels are used. + +The 'channels' parameter specifies the number of channels to be specified. Up +to 4 channels can be allocated, but only in powers of two. Thus, you can have +one, two or four devices. The default value is to allocate one channel. + +When multiple channels are open, they act as distinct sound devices. This +allows multiple applications to generate sound simultaneously without blocking +each other. + +At compile time you may also select to use persistent dsp buffers. Because of +some oddities of the hardware, a large number of channels requires a large +slab of contiguous memory. The persistent buffers option allocates this memory +when the cards are detected and holds it all the time, preventing memory +fragmentation from preventing the sound device from working. + Power Management ----------------
drivers/sound/Config.in +4 -0
@@ -21,6 +21,10 @@ dep_tristate ' Creative Ensoniq AudioPCI 97 (ES1371)' CONFIG_SOUND_ES1371 $CONFIG_SOUND dep_tristate ' ESS Technology Solo1' CONFIG_SOUND_ESSSOLO1 $CONFIG_SOUND dep_tristate ' ESS Maestro, Maestro2, Maestro2E driver' CONFIG_SOUND_MAESTRO $CONFIG_SOUND +if [ "$CONFIG_SOUND_MAESTRO" = "y" -o "$CONFIG_SOUND_MAESTRO" = "m" ]; then + int ' Number of channels (1,2,4)' CONFIG_MAESTRO_CHANNELS 1 + bool ' Persistent Maestro dsp buffers' CONFIG_MAESTRO_PERSIST +fi dep_tristate ' S3 SonicVibes' CONFIG_SOUND_SONICVIBES $CONFIG_SOUND if [ "$CONFIG_VISWS" = "y" ]; then dep_tristate ' SGI Visual Workstation Sound' CONFIG_SOUND_VWSND $CONFIG_SOUND
Only in linux.dp/drivers/sound: Config.in~
drivers/sound/maestro.c +257 -172
742 lines not on this page · raw message
Only in linux.dp/drivers/sound: maestro.c.rej
Only in linux.dp/drivers/sound: maestro.c~
Signature · 5 lines
--
I read about an Eskimo hunter who asked the local missionary priest, "If I did
not know about God and sin, would I go to hell? 'No,' said the priest, 'not if
you did not know.' 'Then why,' asked the Eskimo earnestly, 'did you tell me?
-- Annie Dillard