93 lines
3.7 KiB
Plaintext
93 lines
3.7 KiB
Plaintext
|
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.
|