| Note these changes relate to Hannu's code and don't include the changes | 
 | made outside of this for modularising the sound | 
 |  | 
 | Changelog for version 3.8o | 
 | -------------------------- | 
 |  | 
 | Since 3.8h | 
 | - Included support for OPL3-SA1 and SoftOSS | 
 |  | 
 | Since 3.8 | 
 | - Fixed SNDCTL_DSP_GETOSPACE | 
 | - Compatibility fixes for Linux 2.1.47 | 
 |  | 
 | Since 3.8-beta21 | 
 | - Fixed all known bugs (I think). | 
 |  | 
 | Since 3.8-beta8 | 
 | - Lot of fixes to audio playback code in dmabuf.c | 
 |  | 
 | Since 3.8-beta6 | 
 | - Fixed the famous Quake delay bug. | 
 |  | 
 | Since 3.8-beta5 | 
 | - Fixed many bugs in audio playback. | 
 |  | 
 | Since 3.8-beta4 | 
 | - Just minor changes. | 
 |  | 
 | Since 3.8-beta1 | 
 | - Major rewrite of audio playback handling. | 
 | - Added AWE32 support by Takashi Iwai (in ./lowlevel/). | 
 |  | 
 | Since 3.7-beta# | 
 | - Passing of ioctl() parameters between soundcard.c and other modules has been | 
 | changed so that arg always points to kernel space. | 
 | - Some bugfixes. | 
 |  | 
 | Since 3.7-beta5 | 
 | - Disabled MIDI input with GUS PnP (Interwave). There seems to be constant | 
 | stream of received 0x00 bytes when the MIDI receiver is enabled. | 
 |  | 
 | Since 3.5 | 
 | - Changes almost everywhere. | 
 | - Support for OPTi 82C924-based sound cards. | 
 |  | 
 | Since 3.5.4-beta8 | 
 | - Fixed a bug in handling of non-fragment sized writes in 16 bit/stereo mode | 
 |   with GUS. | 
 | - Limited minimum fragment size with some audio devices (GUS=512 and | 
 |   SB=32). These devices require more time to "recover" from processing | 
 |   of each fragment.  | 
 |  | 
 | Since 3.5.4-beta6/7 | 
 | - There seems to be problems in the OPTi 82C930 so cards based on this | 
 |   chip don't necessarily work yet. There are problems in detecting the  | 
 |   MIDI interface. Also mixer volumes may be seriously wrong on some systems. | 
 |   You can safely use this driver version with C930 if it looks to work. | 
 |   However please don't complain if you have problems with it. C930 support | 
 |   should be fixed in future releases. | 
 | - Got initialization of GUS PnP to work. With this version GUS PnP should | 
 |   work in GUS compatible mode after initialization using isapnptools. | 
 | - Fixed a bug in handling of full duplex cards in write only mode. This has | 
 |   been causing "audio device opening" errors with RealAudio player. | 
 |  | 
 | Since 3.5.4.beta5 | 
 | - Changes to OPTi 82C930 driver. | 
 | - Major changes to the Soundscape driver. The driver requires now just one | 
 |   DMA channel. The extra audio/dsp device (the "Not functional" one) used | 
 |   for code download in the earlier versions has been eliminated. There is now | 
 |   just one /dev/dsp# device which is used both for code download and audio. | 
 |  | 
 | Since 3.5.4.beta4 | 
 | - Minor changes. | 
 |  | 
 | Since 3.5.4-beta2 | 
 | - Fixed silent playback with ESS 688/1688. | 
 | - Got SB16 to work without the 16 bit DMA channel (only the 8 bit one | 
 |   is required for 8 and 16 bit modes). | 
 | - Added the "lowlevel" subdirectory for additional low level drivers that | 
 |   are not part of USS core. See lowlevel/README for more info. | 
 | - Included support for ACI mixer (by Markus Kuhn). ACI is a mixer used in | 
 |   miroPCM sound cards. See lowlevel/aci.readme for more info. | 
 | - Support for Aztech Washington chipset (AZT2316 ASIC). | 
 |  | 
 | Since 3.5.4-beta1 | 
 | - Reduced clicking with AD1848. | 
 | - Support for OPTi 82C930. Only half duplex at this time. 16 bit playback | 
 |   is sometimes just white noise (occurs randomly). | 
 |  | 
 | Since 3.5.2 | 
 | - Major changes to the SB/Jazz16/ESS driver (most parts rewritten). | 
 |   The most noticeable new feature is support for multiple SB cards at the same | 
 |   time. | 
 | - Renamed sb16_midi.c to uart401.c. Also modified it to work also with | 
 |   other MPU401 UART compatible cards than SB16/ESS/Jazz. | 
 | - Some changes which reduce clicking in audio playback. | 
 | - Copying policy is now GPL. | 
 |  | 
 | Since 3.5.1 | 
 | - TB Maui initialization support | 
 | Since 3.5 | 
 | - Improved handling of playback underrun situations. | 
 |  | 
 | Since 3.5-beta10 | 
 | - Bug fixing | 
 |  | 
 | Since 3.5-beta9 | 
 | - Fixed for compatibility with Linux 1.3.70 and later. | 
 | - Changed boot time passing of 16 bit DMA channel number to SB driver. | 
 |  | 
 | Since 3.5-beta8 | 
 | - Minor changes | 
 |  | 
 | Since 3.5-beta7 | 
 | - enhancements to configure program (by Jeff Tranter): | 
 |   - prompts are in same format as 1.3.x Linux kernel config program | 
 |   - on-line help for each question | 
 |   - fixed some compile warnings detected by gcc/g++ -Wall | 
 |   - minor grammatical changes to prompts | 
 |  | 
 | Since 3.5-beta6 | 
 | - Fixed bugs in mmap() support. | 
 | - Minor changes to Maui driver. | 
 |  | 
 | Since 3.5-beta5 | 
 | - Fixed crash after recording with ESS688. It's generally a good | 
 |   idea to stop inbound DMA transfers before freeing the memory | 
 |   buffer.  | 
 | - Fixed handling of AD1845 codec (for example Shuttle Sound System). | 
 | - Few other fixes. | 
 |  | 
 | Since 3.5-beta4 | 
 | - Fixed bug in handling of uninitialized instruments with GUS. | 
 |  | 
 | Since 3.5-beta3 | 
 | - Few changes which decrease popping at end/beginning of audio playback. | 
 |  | 
 | Since 3.5-beta2 | 
 | - Removed MAD16+CS4231 hack made in previous version since it didn't | 
 |   help. | 
 | - Fixed the above bug in proper way and in proper place. Many thanks | 
 |   to James Hightower. | 
 |  | 
 | Since 3.5-beta1 | 
 | - Bug fixes. | 
 | - Full duplex audio with MAD16+CS4231 may work now. The driver configures | 
 |   SB DMA of MAD16 so that it doesn't conflict with codec's DMA channels. | 
 |   The side effect is that all 8 bit DMA channels (0,1,3) are populated in  | 
 |   duplex mode. | 
 |  | 
 | Since 3.5-alpha9 | 
 | - Bug fixes (mostly in Jazz16 and ESS1688/688 supports). | 
 | - Temporarily disabled recording with ESS1688/688 since it causes crash. | 
 | - Changed audio buffer partitioning algorithm so that it selects | 
 |   smaller fragment size than earlier. This improves real time capabilities | 
 |   of the driver and makes recording to disk to work better. Unfortunately | 
 |   this change breaks some programs which assume that fragments cannot be | 
 |   shorter than 4096 bytes. | 
 |  | 
 | Since 3.5-alpha8 | 
 | - Bug fixes | 
 |  | 
 | Since 3.5-alpha7 | 
 | - Linux kernel compatible configuration (_EXPERIMENTAL_). Enable | 
 |   using command "cd /linux/drivers/sound;make script" and then | 
 |   just run kernel's make config normally. | 
 | - Minor fixes to the SB support. Hopefully the driver works with | 
 |   all SB models now. | 
 | - Added support for ESS ES1688 "AudioDrive" based cards. | 
 |  | 
 | Since 3.5-alpha6 | 
 | - SB Pro and SB16 supports are no longer separately selectable options. | 
 |   Enabling SB enables them too. | 
 | - Changed all #ifndef EXCLUDE_xx stuff to #ifdef CONFIG_xx. Modified | 
 | configure to handle this.  | 
 | - Removed initialization messages from the | 
 | modularized version. They can be enabled by using init_trace=1 in | 
 | the insmod command line (insmod sound init_trace=1). | 
 | - More AIX stuff. | 
 | - Added support for synchronizing dsp/audio devices with /dev/sequencer. | 
 | - mmap() support for dsp/audio devices. | 
 |  | 
 | Since 3.5-alpha5 | 
 | - AIX port. | 
 | - Changed some xxx_PATCH macros in soundcard.h to work with | 
 |   big endian machines. | 
 |  | 
 | Since 3.5-alpha4 | 
 | - Removed the 'setfx' stuff from the version distributed with kernel | 
 |   sources. Running 'setfx' is required again. | 
 |  | 
 | Since 3.5-alpha3 | 
 | - Moved stuff from the 'setfx' program to the AudioTrix Pro driver. | 
 |  | 
 | Since 3.5-alpha2 | 
 | - Modifications to makefile and configure.c. Unnecessary sources | 
 |   are no longer compiled. Newly created local.h is also copied to | 
 |   /etc/soundconf. "make oldconfig" reads /etc/soundconf and produces | 
 |   new local.h which is compatible with current version of the driver. | 
 | - Some fixes to the SB16 support. | 
 | - Fixed random protection fault in gus_wave.c | 
 |  | 
 | Since 3.5-alpha1 | 
 | - Modified to work with Linux-1.3.33 and later | 
 | - Some minor changes | 
 |  | 
 | Since 3.0.2 | 
 | - Support for CS4232 based PnP cards (AcerMagic S23 etc). | 
 | - Full duplex support for some CS4231, CS4232 and AD1845 based cards | 
 | (GUS MAX, AudioTrix Pro, AcerMagic S23 and many MAD16/Mozart cards | 
 | having a codec mentioned above). | 
 | - Almost fully rewritten loadable modules support. | 
 | - Fixed some bugs. | 
 | - Huge amount of testing (more testing is still required). | 
 | - mmap() support (works with some cards). Requires much more testing. | 
 | - Sample/patch/program loading for TB Maui/Tropez. No initialization | 
 | since TB doesn't allow me to release that code. | 
 | - Using CS4231 compatible codecs as timer for /dev/music. | 
 |  | 
 | Since 3.0.1 | 
 | - Added allocation of I/O ports, DMA channels and interrupts | 
 | to the initialization code. This may break modules support since | 
 | the driver may not free some resources on unload. Should be fixed soon. | 
 |  | 
 | Since 3.0 | 
 | - Some important bug fixes.  | 
 | - select() for /dev/dsp and /dev/audio (Linux only). | 
 | (To use select() with read, you have to call read() to start | 
 | the recording. Calling write() kills recording immediately so | 
 | use select() carefully when you are writing a half duplex app. | 
 | Full duplex mode is not implemented yet.) Select works also with | 
 | /dev/sequencer and /dev/music. Maybe with /dev/midi## too. | 
 |  | 
 | Since 3.0-beta2 | 
 | - Minor fixes. | 
 | - Added Readme.cards | 
 |  | 
 | Since 3.0-beta1 | 
 | - Minor fixes to the modules support. | 
 | - Eliminated call to sb_free_irq() in ad1848.c | 
 | - Rewritten MAD16&Mozart support (not tested with MAD16 Pro). | 
 | - Fix to DMA initialization of PSS cards. | 
 | - Some fixes to ad1848/cs42xx mixer support (GUS MAX, MSS, etc.) | 
 | - Fixed some bugs in the PSS driver which caused I/O errors with | 
 |   the MSS mode (/dev/dsp). | 
 |  | 
 | Since 3.0-950506 | 
 | - Recording with GUS MAX fixed. It works when the driver is configured | 
 |   to use two DMA channels with GUS MAX (16 bit ones recommended). | 
 |  | 
 | Since 3.0-94xxxx | 
 | - Too many changes | 
 |  | 
 | Since 3.0-940818 | 
 | - Fixes for Linux 1.1.4x. | 
 | - Disables Disney Sound System with SG NX Pro 16 (less noise). | 
 |  | 
 | Since 2.90-2 | 
 | - Fixes to soundcard.h | 
 | - Non blocking mode to /dev/sequencer | 
 | - Experimental detection code for Ensoniq Soundscape. | 
 |  | 
 | Since 2.90 | 
 | - Minor and major bug fixes | 
 |  | 
 | Since pre-3.0-940712 | 
 | - GUS MAX support | 
 | - Partially working MSS/WSS support (could work with some cards). | 
 | - Hardware u-Law and A-Law support with AD1848/CS4248 and CS4231 codecs | 
 |   (GUS MAX, GUS16, WSS etc). Hardware ADPCM is possible with GUS16 and | 
 |   GUS MAX, but it doesn't work yet. | 
 | Since pre-3.0-940426 | 
 | - AD1848/CS4248/CS4231 codec support (MSS, GUS MAX, Aztec, Orchid etc). | 
 | This codec chip is used in various sound cards. This version is developed | 
 | for the 16 bit daughtercard of GUS. It should work with other cards also | 
 | if the following requirements are met: | 
 | 	- The I/O, IRQ and DMA settings are jumper selectable or | 
 | 	the card is initialized by booting DOS before booting Linux (etc.). | 
 | 	- You add the IO, IRQ and DMA settings manually to the local.h. | 
 | 	  (Just define GUS16_BASE, GUS16_IRQ and GUS16_DMA). Note that | 
 | 	the base address bust be the base address of the codec chip not the | 
 | 	card itself. For the GUS16 these are the same but most MSS compatible | 
 | 	cards have the codec located at card_base+4. | 
 | - Some minor changes | 
 |  | 
 | Since 2.5 (******* MAJOR REWRITE ***********) | 
 |  | 
 | This version is based on v2.3. I have tried to maintain two versions | 
 | together so that this one should have the same features than v2.5. | 
 | Something may still be missing. If you notice such things, please let me | 
 | know. | 
 |  | 
 | The Readme.v30 contains more details. | 
 |  | 
 | - /dev/midi## devices. | 
 | - /dev/sequencer2 | 
 |  | 
 | Since 2.5-beta2 | 
 | - Some fine tuning to the GUS v3.7 mixer code. | 
 | - Fixed speed limits for the plain SB (1.0 to 2.0). | 
 |  | 
 | Since 2.5-beta | 
 | - Fixed OPL-3 detection with SB. Caused problems with PAS16. | 
 | - GUS v3.7 mixer support. | 
 |  | 
 | Since 2.4 | 
 | - Mixer support for Sound Galaxy NX Pro (define __SGNXPRO__ on your local.h). | 
 | - Fixed truncated sound on /dev/dsp when the device is closed. | 
 | - Linear volume mode for GUS | 
 | - Pitch bends larger than +/- 2 octaves. | 
 | - MIDI recording for SB and SB Pro. (Untested). | 
 | - Some other fixes. | 
 | - SB16 MIDI and DSP drivers only initialized if SB16 actually installed. | 
 | - Implemented better detection for OPL-3. This should be useful if you | 
 |   have an old SB Pro (the non-OPL-3 one) or a SB 2.0 clone which has a OPL-3. | 
 | - SVR4.2 support by Ian Hartas. Initial ALPHA TEST version (untested). | 
 |  | 
 | Since 2.3b | 
 | - Fixed bug which made it impossible to make long recordings to disk. | 
 |   Recording was not restarted after a buffer overflow situation. | 
 | - Limited mixer support for GUS. | 
 | - Numerous improvements to the GUS driver by Andrew Robinson. Including | 
 |   some click removal etc. | 
 |  | 
 | Since 2.3 | 
 | - Fixed some minor bugs in the SB16 driver. | 
 |  | 
 | Since 2.2b | 
 | - Full SB16 DSP support. 8/16 bit, mono/stereo | 
 | - The SCO and FreeBSD versions should be in sync now. There are some | 
 |   problems with SB16 and GUS in the FreeBSD versions. | 
 |   The DMA buffer allocation of the SCO version has been polished but | 
 |   there could still be some problems. At least it hogs memory. | 
 |   The DMA channel | 
 |   configuration method used in the SCO/System is a hack. | 
 | - Support for the MPU emulation of the SB16. | 
 | - Some big arrays are now allocated boot time. This makes the BSS segment | 
 |   smaller which makes it possible to use the full driver with | 
 |   NetBSD. These arrays are not allocated if no suitable sound card is available. | 
 | - Fixed a bug in the compute_and_set_volume in gus_wave.c | 
 | - Fixed the too fast mono playback problem of SB Pro and PAS16. | 
 |  | 
 | Since 2.2 | 
 | - Stereo recording for SB Pro. Somehow it was missing and nobody | 
 |   had noticed it earlier. | 
 | - Minor polishing. | 
 | - Interpreting of boot time arguments (sound=) for Linux. | 
 | - Breakup of sb_dsp.c. Parts of the code has been moved to | 
 |   sb_mixer.c and sb_midi.c | 
 |  | 
 | Since 2.1 | 
 | - Preliminary support for SB16.  | 
 |   - The SB16 mixer is supported in its native mode. | 
 |   - Digitized voice capability up to 44.1 kHz/8 bit/mono | 
 |     (16 bit and stereo support coming in the next release). | 
 | - Fixed some bugs in the digitized voice driver for PAS16. | 
 | - Proper initialization of the SB emulation of latest PAS16 models. | 
 |  | 
 | - Significantly improved /dev/dsp and /dev/audio support. | 
 |   - Now supports half duplex mode. It's now possible to record and | 
 |     playback without closing and reopening the device. | 
 |   - It's possible to use smaller buffers than earlier. There is a new | 
 |     ioctl(fd, SNDCTL_DSP_SUBDIVIDE, &n) where n should be 1, 2 or 4. | 
 |     This call instructs the driver to use smaller buffers. The default | 
 |     buffer size (0.5 to 1.0 seconds) is divided by n. Should be called | 
 |     immediately after opening the device. | 
 |  | 
 | Since 2.0 | 
 | Just cosmetic changes.  |