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. 
