Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Fri, 6 Jul 2001 05:17:09 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Fri, 6 Jul 2001 05:17:02 -0400 Received: from melancholia.rimspace.net ([203.36.211.210]:26383 "HELO melancholia.danann.net") by vger.kernel.org with SMTP id ; Fri, 6 Jul 2001 05:16:52 -0400 To: linux-kernel@vger.kernel.org Subject: [PATCH] Updates to Maestro{1,2,2E} driver -- multiple open of dsp, persistent buffers. From: Daniel Pittman Organization: Not today, thank you, Mother. X-Homepage: http://danann.net/ X-spies: counter-intelligence Ft. Bragg ammunition cryptographic quiche security Uzi spy Cocaine explosion militia KGB NWO NORAD munitions Date: 06 Jul 2001 19:16:40 +1000 Message-ID: <87u20qa03r.fsf@inanna.rimspace.net> Lines: 27 User-Agent: Gnus/5.090004 (Oort Gnus v0.04) XEmacs/21.5 (anise) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org --=-=-= The attached patch modifies the kernel Maestro sound driver to add a couple of features: * open /dev/dsp many times, not /dev/dsp[0-3] * persistent DMA buffers This code has been well tested and has run for quite a long time with stability and success on a number of Maestro-using computers. The patch has the blessing of Zach Brown, the current maintainer, as far as that goes -- but it's my own work. :) It would be good if people could test this and let me know if they encounter any problems. If not, I will submit it for inclusion in the kernel proper soon. The patch is against 2.4.7-pre3 but should apply successfully to version 2.4.6 or later. Daniel --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=maestro-2001-07-06-multi-open-2.4.7-pre1.diff diff -ru linux/Documentation/Configure.help linux.maestro/Documentation/Configure.help --- linux/Documentation/Configure.help Fri Jul 6 17:15:55 2001 +++ linux.maestro/Documentation/Configure.help Thu Jul 5 11:58:39 2001 @@ -15607,6 +15607,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 diff -ru linux/Documentation/sound/Maestro linux.maestro/Documentation/sound/Maestro --- linux/Documentation/sound/Maestro Sat Jul 29 05:50:52 2000 +++ linux.maestro/Documentation/sound/Maestro Thu Jul 5 11:58:22 2001 @@ -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=