	An OSS/Lite Driver for the ESS Maestro3 family of sound chips

			Zach Brown, January 2001

Driver Status and Availability
------------------------------

The most recent version of this driver will hopefully always be available at
	http://www.zabbo.net/maestro3/

I will try and maintain the most recent stable version of the driver
in both the stable and development kernel lines.

Historically I've sucked pretty hard at actually doing that, however.

ESS Maestro3 Chip Family
-----------------------

The 'Maestro3' is much like the Maestro2 chip.  The noted improvement
is the removal of the silicon in the '2' that did PCM mixing.  All that
work is now done through a custom DSP called the ASSP, the Asynchronus
Specific Signal Processor.

The 'Allegro' is a baby version of the Maestro3.  I'm not entirely clear
on the extent of the differences, but the driver supports them both :)

The 'Allegro' shows up as PCI ID 0x1988 and the Maestro3 as 0x1998,
both under ESS's vendor ID of 0x125D.  The Maestro3 can also show up as
0x199a when hardware strapping is used.

The chip can also act as a multi function device.  The modem IDs follow
the audio multimedia device IDs.  (so the modem part of an Allegro shows
up as 0x1989)

Driver OSS Behavior
--------------------

This OSS driver exports /dev/mixer and /dev/dsp to applications, which
mostly adhere to the OSS spec.   This driver doesn't register itself
with /dev/sndstat, so don't expect information to appear there.

The /dev/dsp device exported behaves as expected.  Playback is
supported in all the various lovely formats.  8/16bit stereo/mono from
8khz to 48khz, with both read()/write(), and mmap().

/dev/mixer is an interface to the AC'97 codec on the Maestro3.  It is
worth noting that there are a variety of AC'97s that can be wired to
the Maestro3.  Which is used is entirely up to the hardware implementor.
This should only be visible to the user by the presence, or lack, of
'Bass' and 'Treble' sliders in the mixer.  Not all AC'97s have them.
The Allegro has an onchip AC'97.

The driver doesn't support MIDI or FM playback at the moment.

Compiling and Installing
------------------------

With the drivers inclusion into the kernel, compiling and installing
is the same as most OSS/Lite modular sound drivers.  Compilation
of the driver is enabled through the CONFIG_SOUND_MAESTRO3 variable
in the config system.  

It may be modular or statically linked.  If it is modular it should be
installed with the rest of the modules for the kernel on the system.
Typically this will be in /lib/modules/ somewhere.  'alias sound-slot-0
maestro3' should also be added to your module configs (typically
/etc/modprobe.conf) if you're using modular OSS/Lite sound and want to
default to using a maestro3 chip.

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.

One is 'external_amp', which tells the driver to attempt to enable
an external amplifier.  This defaults to '1', you can tell the driver
not to bother enabling such an amplifier by setting it to '0'.

And the last is 'gpio_pin', which tells the driver which GPIO pin number
the external amp uses (0-15), The Allegro uses 8 by default, all others 1.
If everything loads correctly and seems to be working but you get no sound, 
try tweaking this value. 

Systems known to need a different value
        Panasonic ToughBook CF-72: gpio_pin=13 

Power Management
----------------

This driver has a minimal understanding of PCI Power Management.  It will
try and power down the chip when the system is suspended, and power
it up with it is resumed.  It will also try and power down the chip
when the machine is shut down.
